@ng-formworks/daisyui 18.5.8 → 18.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,232 @@
1
+ export const cssFrameworkCfgDaisyUI = {
2
+ "name": "daisyui",
3
+ "text": "DaisyUI",
4
+ "scripts": [],
5
+ "stylesheets": [
6
+ //"/assets/cssframework/daisyui-framework.css"
7
+ ],
8
+ "widgetstyles": {
9
+ "__themes__": [
10
+ { "name": "daisyui_default", "text": "default" },
11
+ { "name": "light", "text": "light" },
12
+ { "name": "dark", "text": "dark" },
13
+ { "name": "cupcake", "text": "cupcake" },
14
+ { "name": "cmyk", "text": "cmyk" },
15
+ { "name": "pastel", "text": "pastel" },
16
+ { "name": "daisyui_leaf", "text": "leaf" }
17
+ ],
18
+ "$ref": {
19
+ "fieldHtmlClass": "btn btn-sm btn-accent"
20
+ },
21
+ "__array_item_nonref__": {
22
+ "htmlClass": "border shadow-md p-1"
23
+ },
24
+ "__form_group__": {
25
+ "htmlClass": "mb-1"
26
+ },
27
+ "__control_label__": {
28
+ "labelHtmlClass": "control-label"
29
+ },
30
+ "__active__": {
31
+ "activeClass": "active"
32
+ },
33
+ "__required_asterisk__": "text-danger",
34
+ "__screen_reader__": "sr-only",
35
+ "__remove_item__": "float-right text-2xl opacity-50",
36
+ "__help_block__": "help-block",
37
+ "__field_addon_left__": "input-group-addon",
38
+ "__field_addon_right__": "input-group-addon",
39
+ "alt-date": {
40
+ "fieldHtmlClass": "input input-md input-bordered w-full"
41
+ },
42
+ "alt-datetime": {
43
+ "fieldHtmlClass": "input input-md input-bordered w-full"
44
+ },
45
+ "__array__": {
46
+ "htmlClass": "border shadow-md p-1"
47
+ },
48
+ "array": {},
49
+ "authfieldset": {},
50
+ "advancedfieldset": {},
51
+ "button": {
52
+ "fieldHtmlClass": "btn btn-sm btn-info"
53
+ },
54
+ "checkbox": {
55
+ "fieldHtmlClass": "checkbox"
56
+ },
57
+ "checkboxes": {
58
+ "fieldHtmlClass": "checkbox"
59
+ },
60
+ "checkboxbuttons": {
61
+ "fieldHtmlClass": "w-px",
62
+ "labelHtmlClass": "tabs tabs-box",
63
+ "htmlClass": "btn-group",
64
+ "itemLabelHtmlClass": "btn",
65
+ "activeClass": "btn-info"
66
+ },
67
+ "checkboxes-inline": {
68
+ "fieldHtmlClass": "checkbox",
69
+ "htmlClass": "inline-flex",
70
+ "itemLabelHtmlClass": "checkbox-inline"
71
+ },
72
+ "date": {
73
+ "fieldHtmlClass": "input input-md input-bordered w-full"
74
+ },
75
+ "datetime-local": {
76
+ "fieldHtmlClass": "input input-md input-bordered w-full"
77
+ },
78
+ "fieldset": {},
79
+ "integer": {
80
+ "fieldHtmlClass": "input input-md input-bordered w-full max-w-xs"
81
+ },
82
+ "number": {
83
+ "fieldHtmlClass": "input input-md input-bordered w-full max-w-xs"
84
+ },
85
+ "optionfieldset": {},
86
+ "password": {
87
+ "fieldHtmlClass": "input input-md input-bordered w-full"
88
+ },
89
+ "radiobuttons": {
90
+ "fieldHtmlClass": "w-px",
91
+ "labelHtmlClass": "tabs tabs-box",
92
+ "htmlClass": "btn-group",
93
+ "itemLabelHtmlClass": "btn",
94
+ "activeClass": "btn-info"
95
+ },
96
+ "radio": {
97
+ "fieldHtmlClass": "radio"
98
+ },
99
+ "radios": {
100
+ "fieldHtmlClass": "radio"
101
+ },
102
+ "radios-inline": {
103
+ "htmlClass": "inline-flex",
104
+ "fieldHtmlClass": "radio",
105
+ "itemLabelHtmlClass": "radio-inline"
106
+ },
107
+ "range": {
108
+ "fieldHtmlClass": "range range-info"
109
+ },
110
+ "section": {},
111
+ "selectfieldset": {},
112
+ "select": {
113
+ "fieldHtmlClass": "select select-md select-bordered w-full"
114
+ },
115
+ "submit": {
116
+ "fieldHtmlClass": "btn btn-sm btn-info rounded-full"
117
+ },
118
+ "text": {
119
+ "fieldHtmlClass": "input input-md input-bordered w-full"
120
+ },
121
+ "tabs": {
122
+ "labelHtmlClass": "tabs-md tabs-box",
123
+ "htmlClass": "",
124
+ "itemLabelHtmlClass": "tab",
125
+ "activeClass": "tab-active",
126
+ "widget_radioClass": "radio"
127
+ },
128
+ "tabarray": {
129
+ "labelHtmlClass": "tabs tabs-box",
130
+ "htmlClass": "",
131
+ "itemLabelHtmlClass": "tab",
132
+ "activeClass": "tab-active",
133
+ "widget_radioClass": "radio"
134
+ },
135
+ "one-of": {
136
+ "labelHtmlClass": "tabs tabs-box",
137
+ "htmlClass": "",
138
+ "itemLabelHtmlClass": "tab",
139
+ "activeClass": "tab-active",
140
+ "widget_radioClass": "radio"
141
+ },
142
+ "textarea": {
143
+ "fieldHtmlClass": "textarea textarea-bordered w-full"
144
+ },
145
+ "default": {
146
+ "fieldHtmlClass": "form-control"
147
+ }
148
+ }
149
+ };
150
+ //need to classify which classnames are controlled by DaisyU and which
151
+ //are controlled by tailwind
152
+ //-ones controlled by tailwind will have prefix tw:{{class name}}
153
+ //-ones controlled by daisyui will have prefix tw:dui-{{class name}}
154
+ export function getCssFrameworkCfgPrefixed(cssFrameworkCfg, prefixDUI = "tw:dui-", prefixTW = "tw:") {
155
+ let classNamesIgnored = [
156
+ 'control-label',
157
+ 'help-block', 'input-group-addon', 'checkbox-inline'
158
+ ];
159
+ //TODO use regexs
160
+ //-regex won't work the actual prefix classname needs to be
161
+ //available as string literals as tailwind seems to scans for the
162
+ //actual names so for ex: 'tw:' + 'bg-primary' wont be picked up,
163
+ //has to be 'tw:bg-primary'
164
+ //NB this is not used in code, but need during the taiwind scanning
165
+ //to output the class names
166
+ let classNamesTW = [
167
+ 'w-full', 'mb-1', 'shadow-md', 'p-1',
168
+ 'sr-only', 'text-2xl', 'opacity-50',
169
+ 'float-right',
170
+ 'w-px',
171
+ 'border',
172
+ 'max-w-xs', 'rounded-full', 'form-control', 'inline-flex',
173
+ 'tw:w-full', 'tw:mb-1', 'tw:shadow-md', 'tw:p-1',
174
+ 'tw:sr-only', 'tw:text-2xl', 'tw:opacity-50',
175
+ 'tw:float-right',
176
+ 'tw:w-px',
177
+ 'tw:max-w-xs', 'tw:rounded-full', 'tw:form-control', 'tw:inline-flex',
178
+ 'tw:border'
179
+ ];
180
+ let classNamesDUI = [
181
+ 'btn', 'btn-sm', 'btn-accent', 'btn-info', 'btn-group',
182
+ 'input', 'input-md', 'input-bordered',
183
+ 'checkbox', 'tab', 'tabs', 'tabs-box', 'tabs-md', "tab-active",
184
+ 'radio', 'radio-inline',
185
+ 'range', 'range-info',
186
+ 'select', 'select-md', 'select-bordered',
187
+ 'textarea', 'textarea-bordered'
188
+ ];
189
+ let replaceClasses = (classList, prefDUI, prefTW, ignoredClasses, prefSepDUI = "", prefSepTw = "") => {
190
+ if (!Array.isArray(classList)) {
191
+ classList = classList.split(" ");
192
+ }
193
+ return classList.map(cname => {
194
+ if (ignoredClasses.indexOf(cname) >= 0) {
195
+ return cname;
196
+ }
197
+ if (classNamesDUI.indexOf(cname) >= 0) {
198
+ return prefDUI + prefSepDUI + cname;
199
+ }
200
+ return prefTW + prefSepTw + cname;
201
+ });
202
+ };
203
+ let cssFrameworkCfgPrefixed = JSON.parse(JSON.stringify(cssFrameworkCfg));
204
+ let widgetNamesIgnore = ["__themes__"];
205
+ let widgetNamesNoSubLevel = [
206
+ "__required_asterisk__",
207
+ "__screen_reader__",
208
+ "__remove_item__",
209
+ "__help_block__",
210
+ "__field_addon_left__",
211
+ "__field_addon_right__",
212
+ ];
213
+ Object.keys(cssFrameworkCfgPrefixed.widgetstyles).forEach(widgetName => {
214
+ if (widgetNamesIgnore.indexOf(widgetName) >= 0) {
215
+ return;
216
+ }
217
+ if (widgetNamesNoSubLevel.indexOf(widgetName) >= 0) {
218
+ let cnames = cssFrameworkCfgPrefixed.widgetstyles[widgetName];
219
+ cnames = replaceClasses(cnames, prefixDUI, prefixTW, classNamesIgnored);
220
+ cssFrameworkCfgPrefixed.widgetstyles[widgetName] = cnames;
221
+ return;
222
+ }
223
+ let widgetClassMap = cssFrameworkCfgPrefixed.widgetstyles[widgetName];
224
+ Object.keys(widgetClassMap).forEach(classListName => {
225
+ let classListAsArr = widgetClassMap[classListName];
226
+ classListAsArr = replaceClasses(classListAsArr, prefixDUI, prefixTW, classNamesIgnored);
227
+ widgetClassMap[classListName] = classListAsArr;
228
+ });
229
+ });
230
+ return cssFrameworkCfgPrefixed;
231
+ }
232
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFpc3l1aS1jc3NmcmFtZXdvcmsuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1mb3Jtd29ya3MtZGFpc3l1aS9zcmMvbGliL2RhaXN5dWktY3NzZnJhbWV3b3JrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFxQjtJQUNwRCxNQUFNLEVBQUUsU0FBUztJQUNqQixNQUFNLEVBQUMsU0FBUztJQUNoQixTQUFTLEVBQUUsRUFBRTtJQUNiLGFBQWEsRUFBRTtJQUNYLDhDQUE4QztLQUNqRDtJQUNELGNBQWMsRUFBRTtRQUNaLFlBQVksRUFBRTtZQUNWLEVBQUMsTUFBTSxFQUFDLGlCQUFpQixFQUFDLE1BQU0sRUFBQyxTQUFTLEVBQUM7WUFDM0MsRUFBQyxNQUFNLEVBQUMsT0FBTyxFQUFDLE1BQU0sRUFBQyxPQUFPLEVBQUM7WUFDL0IsRUFBQyxNQUFNLEVBQUMsTUFBTSxFQUFDLE1BQU0sRUFBQyxNQUFNLEVBQUM7WUFDN0IsRUFBQyxNQUFNLEVBQUMsU0FBUyxFQUFDLE1BQU0sRUFBQyxTQUFTLEVBQUM7WUFDbkMsRUFBQyxNQUFNLEVBQUMsTUFBTSxFQUFDLE1BQU0sRUFBQyxNQUFNLEVBQUM7WUFDN0IsRUFBQyxNQUFNLEVBQUMsUUFBUSxFQUFDLE1BQU0sRUFBQyxRQUFRLEVBQUM7WUFDakMsRUFBQyxNQUFNLEVBQUMsY0FBYyxFQUFDLE1BQU0sRUFBQyxNQUFNLEVBQUM7U0FFeEM7UUFDRCxNQUFNLEVBQUU7WUFDSixnQkFBZ0IsRUFBRSx1QkFBdUI7U0FDNUM7UUFDRCx1QkFBdUIsRUFBRTtZQUNyQixXQUFXLEVBQUUsc0JBQXNCO1NBQ3RDO1FBQ0QsZ0JBQWdCLEVBQUU7WUFDZCxXQUFXLEVBQUUsTUFBTTtTQUN0QjtRQUNELG1CQUFtQixFQUFFO1lBQ2pCLGdCQUFnQixFQUFFLGVBQWU7U0FDcEM7UUFDRCxZQUFZLEVBQUU7WUFDVixh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OlsiaW1wb3J0IHsgY3NzX2Z3IH0gZnJvbSBcIkBuZy1mb3Jtd29ya3MvY3NzZnJhbWV3b3JrXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3NzRnJhbWV3b3JrQ2ZnRGFpc3lVSTpjc3NfZncuZnJhbWV3b3JrY2ZnPXtcclxuICAgIFwibmFtZVwiOiBcImRhaXN5dWlcIixcclxuICAgIFwidGV4dFwiOlwiRGFpc3lVSVwiLFxyXG4gICAgXCJzY3JpcHRzXCI6IFtdLFxyXG4gICAgXCJzdHlsZXNoZWV0c1wiOiBbXHJcbiAgICAgICAgLy9cIi9hc3NldHMvY3NzZnJhbWV3b3JrL2RhaXN5dWktZnJhbWV3b3JrLmNzc1wiXHJcbiAgICBdLFxyXG4gICAgXCJ3aWRnZXRzdHlsZXNcIjoge1xyXG4gICAgICAgIFwiX190aGVtZXNfX1wiOiBbXHJcbiAgICAgICAgICAgIHtcIm5hbWVcIjpcImRhaXN5dWlfZGVmYXVsdFwiLFwidGV4dFwiOlwiZGVmYXVsdFwifSxcclxuICAgICAgICAgICAge1wibmFtZVwiOlwibGlnaHRcIixcInRleHRcIjpcImxpZ2h0XCJ9LCBcclxuICAgICAgICAgICAge1wibmFtZVwiOlwiZGFya1wiLFwidGV4dFwiOlwiZGFya1wifSwgXHJcbiAgICAgICAgICAgIHtcIm5hbWVcIjpcImN1cGNha2VcIixcInRleHRcIjpcImN1cGNha2VcIn0sIFxyXG4gICAgICAgICAgICB7XCJuYW1lXCI6XCJjbXlrXCIsXCJ0ZXh0XCI6XCJjbXlrXCJ9LCBcclxuICAgICAgICAgICAge1wibmFtZVwiOlwicGFzdGVsXCIsXCJ0ZXh0XCI6XCJwYXN0ZWxcIn0sXHJcbiAgICAgICAgICAgIHtcIm5hbWVcIjpcImRhaXN5dWlfbGVhZlwiLFwidGV4dFwiOlwibGVhZlwifVxyXG4gICAgICAgICAgICBcclxuICAgICAgICBdLFxyXG4gICAgICAgIFwiJHJlZlwiOiB7XHJcbiAgICAgICAgICAgIFwiZmllbGRIdG1sQ2xhc3NcIjogXCJidG4gYnRuLXNtIGJ0bi1hY2NlbnRcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJfX2FycmF5X2l0ZW1fbm9ucmVmX19cIjoge1xyXG4gICAgICAgICAgICBcImh0bWxDbGFzc1wiOiBcImJvcmRlciBzaGFkb3ctbWQgcC0xXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIFwiX19mb3JtX2dyb3VwX19cIjoge1xyXG4gICAgICAgICAgICBcImh0bWxDbGFzc1wiOiBcIm1iLTFcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJfX2NvbnRyb2xfbGFiZWxfX1wiOiB7XHJcbiAgICAgICAgICAgIFwibGFiZWxIdG1sQ2xhc3NcIjogXCJjb250cm9sLWxhYmVsXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIFwiX19hY3RpdmVfX1wiOiB7XHJcbiAgICAgICAgICAgIFwiYWN0aXZlQ2xhc3NcIjogXCJhY3RpdmVcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJfX3JlcXVpcmVkX2FzdGVyaXNrX19cIjogXCJ0ZXh0LWRhbmdlclwiLFxyXG4gICAgICAgIFwiX19zY3JlZW5fcmVhZGVyX19cIjogXCJzci1vbmx5XCIsXHJcbiAgICAgICAgXCJfX3JlbW92ZV9pdGVtX19cIjogXCJmbG9hdC1yaWdodCB0ZXh0LTJ4bCBvcGFjaXR5LTUwXCIsXHJcbiAgICAgICAgXCJfX2hlbHBfYmxvY2tfX1wiOiBcImhlbHAtYmxvY2tcIixcclxuICAgICAgICBcIl9fZmllbGRfYWRkb25fbGVmdF9fXCI6IFwiaW5wdXQtZ3JvdXAtYWRkb25cIixcclxuICAgICAgICBcIl9fZmllbGRfYWRkb25fcmlnaHRfX1wiOiBcImlucHV0LWdyb3VwLWFkZG9uXCIsXHJcbiAgICAgICAgXCJhbHQtZGF0ZVwiOiB7XHJcbiAgICAgICAgICAgIFwiZmllbGRIdG1sQ2xhc3NcIjogXCJpbnB1dCBpbnB1dC1tZCBpbnB1dC1ib3JkZXJlZCB3LWZ1bGxcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJhbHQtZGF0ZXRpbWVcIjoge1xyXG4gICAgICAgICAgICBcImZpZWxkSHRtbENsYXNzXCI6IFwiaW5wdXQgaW5wdXQtbWQgaW5wdXQtYm9yZGVyZWQgdy1mdWxsXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIFwiX19hcnJheV9fXCI6IHtcclxuICAgICAgICAgICAgXCJodG1sQ2xhc3NcIjogXCJib3JkZXIgc2hhZG93LW1kIHAtMVwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcImFycmF5XCI6IHt9LFxyXG4gICAgICAgIFwiYXV0aGZpZWxkc2V0XCI6IHt9LFxyXG4gICAgICAgIFwiYWR2YW5jZWRmaWVsZHNldFwiOiB7fSxcclxuICAgICAgICBcImJ1dHRvblwiOiB7XHJcbiAgICAgICAgICAgIFwiZmllbGRIdG1sQ2xhc3NcIjogXCJidG4gYnRuLXNtIGJ0bi1pbmZvXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIFwiY2hlY2tib3hcIjoge1xyXG4gICAgICAgICAgICBcImZpZWxkSHRtbENsYXNzXCI6IFwiY2hlY2tib3hcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJjaGVja2JveGVzXCI6IHtcclxuICAgICAgICAgICAgXCJmaWVsZEh0bWxDbGFzc1wiOiBcImNoZWNrYm94XCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIFwiY2hlY2tib3hidXR0b25zXCI6IHtcclxuICAgICAgICAgICAgXCJmaWVsZEh0bWxDbGFzc1wiOiBcInctcHhcIixcclxuICAgICAgICAgICAgXCJsYWJlbEh0bWxDbGFzc1wiOiBcInRhYnMgdGFicy1ib3hcIixcclxuICAgICAgICAgICAgXCJodG1sQ2xhc3NcIjogXCJidG4tZ3JvdXBcIixcclxuICAgICAgICAgICAgXCJpdGVtTGFiZWxIdG1sQ2xhc3NcIjogXCJidG5cIixcclxuICAgICAgICAgICAgXCJhY3RpdmVDbGFzc1wiOiBcImJ0bi1pbmZvXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIFwiY2hlY2tib3hlcy1pbmxpbmVcIjoge1xyXG4gICAgICAgICAgICBcImZpZWxkSHRtbENsYXNzXCI6IFwiY2hlY2tib3hcIixcclxuICAgICAgICAgICAgXCJodG1sQ2xhc3NcIjogXCJpbmxpbmUtZmxleFwiLFxyXG4gICAgICAgICAgICBcIml0ZW1MYWJlbEh0bWxDbGFzc1wiOiBcImNoZWNrYm94LWlubGluZVwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcImRhdGVcIjoge1xyXG4gICAgICAgICAgICBcImZpZWxkSHRtbENsYXNzXCI6IFwiaW5wdXQgaW5wdXQtbWQgaW5wdXQtYm9yZGVyZWQgdy1mdWxsXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIFwiZGF0ZXRpbWUtbG9jYWxcIjoge1xyXG4gICAgICAgICAgICBcImZpZWxkSHRtbENsYXNzXCI6IFwiaW5wdXQgaW5wdXQtbWQgaW5wdXQtYm9yZGVyZWQgdy1mdWxsXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIFwiZmllbGRzZXRcIjoge30sXHJcbiAgICAgICAgXCJpbnRlZ2VyXCI6IHtcclxuICAgICAgICAgICAgXCJmaWVsZEh0bWxDbGFzc1wiOiBcImlucHV0IGlucHV0LW1kIGlucHV0LWJvcmRlcmVkIHctZnVsbCBtYXgtdy14c1wiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcIm51bWJlclwiOiB7XHJcbiAgICAgICAgICAgIFwiZmllbGRIdG1sQ2xhc3NcIjogXCJpbnB1dCBpbnB1dC1tZCBpbnB1dC1ib3JkZXJlZCB3LWZ1bGwgbWF4LXcteHNcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJvcHRpb25maWVsZHNldFwiOiB7fSxcclxuICAgICAgICBcInBhc3N3b3JkXCI6IHtcclxuICAgICAgICAgICAgXCJmaWVsZEh0bWxDbGFzc1wiOiBcImlucHV0IGlucHV0LW1kIGlucHV0LWJvcmRlcmVkIHctZnVsbFwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcInJhZGlvYnV0dG9uc1wiOiB7XHJcbiAgICAgICAgICAgIFwiZmllbGRIdG1sQ2xhc3NcIjogXCJ3LXB4XCIsXHJcbiAgICAgICAgICAgIFwibGFiZWxIdG1sQ2xhc3NcIjogXCJ0YWJzIHRhYnMtYm94XCIsXHJcbiAgICAgICAgICAgIFwiaHRtbENsYXNzXCI6IFwiYnRuLWdyb3VwXCIsXHJcbiAgICAgICAgICAgIFwiaXRlbUxhYmVsSHRtbENsYXNzXCI6IFwiYnRuXCIsXHJcbiAgICAgICAgICAgIFwiYWN0aXZlQ2xhc3NcIjogXCJidG4taW5mb1wiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcInJhZGlvXCI6IHtcclxuICAgICAgICAgICAgXCJmaWVsZEh0bWxDbGFzc1wiOiBcInJhZGlvXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIFwicmFkaW9zXCI6IHtcclxuICAgICAgICAgICAgXCJmaWVsZEh0bWxDbGFzc1wiOiBcInJhZGlvXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIFwicmFkaW9zLWlubGluZVwiOiB7XHJcbiAgICAgICAgICAgIFwiaHRtbENsYXNzXCI6IFwiaW5saW5lLWZsZXhcIixcclxuICAgICAgICAgICAgXCJmaWVsZEh0bWxDbGFzc1wiOiBcInJhZGlvXCIsXHJcbiAgICAgICAgICAgIFwiaXRlbUxhYmVsSHRtbENsYXNzXCI6IFwicmFkaW8taW5saW5lXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIFwicmFuZ2VcIjoge1xyXG4gICAgICAgICAgICBcImZpZWxkSHRtbENsYXNzXCI6IFwicmFuZ2UgcmFuZ2UtaW5mb1wiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcInNlY3Rpb25cIjoge30sXHJcbiAgICAgICAgXCJzZWxlY3RmaWVsZHNldFwiOiB7fSxcclxuICAgICAgICBcInNlbGVjdFwiOiB7XHJcbiAgICAgICAgICAgIFwiZmllbGRIdG1sQ2xhc3NcIjogXCJzZWxlY3Qgc2VsZWN0LW1kIHNlbGVjdC1ib3JkZXJlZCB3LWZ1bGxcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJzdWJtaXRcIjoge1xyXG4gICAgICAgICAgICBcImZpZWxkSHRtbENsYXNzXCI6IFwiYnRuIGJ0bi1zbSBidG4taW5mbyByb3VuZGVkLWZ1bGxcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJ0ZXh0XCI6IHtcclxuICAgICAgICAgICAgXCJmaWVsZEh0bWxDbGFzc1wiOiBcImlucHV0IGlucHV0LW1kIGlucHV0LWJvcmRlcmVkIHctZnVsbFwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcInRhYnNcIjoge1xyXG4gICAgICAgICAgICBcImxhYmVsSHRtbENsYXNzXCI6IFwidGFicy1tZCB0YWJzLWJveFwiLFxyXG4gICAgICAgICAgICBcImh0bWxDbGFzc1wiOiBcIlwiLFxyXG4gICAgICAgICAgICBcIml0ZW1MYWJlbEh0bWxDbGFzc1wiOiBcInRhYlwiLFxyXG4gICAgICAgICAgICBcImFjdGl2ZUNsYXNzXCI6IFwidGFiLWFjdGl2ZVwiLFxyXG4gICAgICAgICAgICBcIndpZGdldF9yYWRpb0NsYXNzXCI6XCJyYWRpb1wiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcInRhYmFycmF5XCI6IHtcclxuICAgICAgICAgICAgXCJsYWJlbEh0bWxDbGFzc1wiOiBcInRhYnMgdGFicy1ib3hcIixcclxuICAgICAgICAgICAgXCJodG1sQ2xhc3NcIjogXCJcIixcclxuICAgICAgICAgICAgXCJpdGVtTGFiZWxIdG1sQ2xhc3NcIjogXCJ0YWJcIixcclxuICAgICAgICAgICAgXCJhY3RpdmVDbGFzc1wiOiBcInRhYi1hY3RpdmVcIixcclxuICAgICAgICAgICAgXCJ3aWRnZXRfcmFkaW9DbGFzc1wiOlwicmFkaW9cIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJvbmUtb2ZcIjoge1xyXG4gICAgICAgICAgICBcImxhYmVsSHRtbENsYXNzXCI6IFwidGFicyB0YWJzLWJveFwiLFxyXG4gICAgICAgICAgICBcImh0bWxDbGFzc1wiOiBcIlwiLFxyXG4gICAgICAgICAgICBcIml0ZW1MYWJlbEh0bWxDbGFzc1wiOiBcInRhYlwiLFxyXG4gICAgICAgICAgICBcImFjdGl2ZUNsYXNzXCI6IFwidGFiLWFjdGl2ZVwiLFxyXG4gICAgICAgICAgICBcIndpZGdldF9yYWRpb0NsYXNzXCI6XCJyYWRpb1wiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcInRleHRhcmVhXCI6IHtcclxuICAgICAgICAgICAgXCJmaWVsZEh0bWxDbGFzc1wiOiBcInRleHRhcmVhIHRleHRhcmVhLWJvcmRlcmVkIHctZnVsbFwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcImRlZmF1bHRcIjoge1xyXG4gICAgICAgICAgICBcImZpZWxkSHRtbENsYXNzXCI6IFwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuLy9uZWVkIHRvIGNsYXNzaWZ5IHdoaWNoIGNsYXNzbmFtZXMgYXJlIGNvbnRyb2xsZWQgYnkgRGFpc3lVIGFuZCB3aGljaFxyXG4vL2FyZSBjb250cm9sbGVkIGJ5IHRhaWx3aW5kXHJcbi8vLW9uZXMgY29udHJvbGxlZCBieSB0YWlsd2luZCB3aWxsIGhhdmUgcHJlZml4IHR3Ont7Y2xhc3MgbmFtZX19XHJcbi8vLW9uZXMgY29udHJvbGxlZCBieSBkYWlzeXVpIHdpbGwgaGF2ZSBwcmVmaXggdHc6ZHVpLXt7Y2xhc3MgbmFtZX19XHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRDc3NGcmFtZXdvcmtDZmdQcmVmaXhlZChjc3NGcmFtZXdvcmtDZmc6Y3NzX2Z3LmZyYW1ld29ya2NmZyxwcmVmaXhEVUk9XCJ0dzpkdWktXCIscHJlZml4VFc9XCJ0dzpcIik6Y3NzX2Z3LmZyYW1ld29ya2NmZ3tcclxuICAgIFxyXG4gICAgbGV0IGNsYXNzTmFtZXNJZ25vcmVkPVtcclxuICAgICAgICBcclxuICAgICAgICAnY29udHJvbC1sYWJlbCcsXHJcbiAgICAgICAgJ2hlbHAtYmxvY2snLCdpbnB1dC1ncm91cC1hZGRvbicsJ2NoZWNrYm94LWlubGluZSdcclxuICAgICAgICBcclxuICAgIF07XHJcblxyXG4gICAgLy9UT0RPIHVzZSByZWdleHNcclxuICAgIC8vLXJlZ2V4IHdvbid0IHdvcmsgdGhlIGFjdHVhbCBwcmVmaXggY2xhc3NuYW1lIG5lZWRzIHRvIGJlIFxyXG4gICAgLy9hdmFpbGFibGUgYXMgc3RyaW5nIGxpdGVyYWxzIGFzIHRhaWx3aW5kIHNlZW1zIHRvIHNjYW5zIGZvciB0aGVcclxuICAgIC8vYWN0dWFsIG5hbWVzIHNvIGZvciBleDogJ3R3OicgKyAnYmctcHJpbWFyeScgd29udCBiZSBwaWNrZWQgdXAsXHJcbiAgICAvL2hhcyB0byBiZSAndHc6YmctcHJpbWFyeSdcclxuXHJcbiAgICAvL05CIHRoaXMgaXMgbm90IHVzZWQgaW4gY29kZSwgYnV0IG5lZWQgZHVyaW5nIHRoZSB0YWl3aW5kIHNjYW5uaW5nIFxyXG4gICAgLy90byBvdXRwdXQgdGhlIGNsYXNzIG5hbWVzXHJcbiAgICBsZXQgY2xhc3NOYW1lc1RXPVtcclxuICAgICAgICAndy1mdWxsJywnbWItMScsJ3NoYWRvdy1tZCcsJ3AtMScsXHJcbiAgICAgICAgJ3NyLW9ubHknLCd0ZXh0LTJ4bCcsICdvcGFjaXR5LTUwJyxcclxuICAgICAgICAnZmxvYXQtcmlnaHQnLFxyXG4gICAgICAgICd3LXB4JyxcclxuICAgICAgICAnYm9yZGVyJyxcclxuICAgICAgICAnbWF4LXcteHMnLCdyb3VuZGVkLWZ1bGwnLCdmb3JtLWNvbnRyb2wnLCdpbmxpbmUtZmxleCcsXHJcbiAgICAgICAgJ3R3OnctZnVsbCcsJ3R3Om1iLTEnLCd0dzpzaGFkb3ctbWQnLCd0dzpwLTEnLFxyXG4gICAgICAgICd0dzpzci1vbmx5JywndHc6dGV4dC0yeGwnLCAndHc6b3BhY2l0eS01MCcsXHJcbiAgICAgICAgJ3R3OmZsb2F0LXJpZ2h0JyxcclxuICAgICAgICAndHc6dy1weCcsXHJcbiAgICAgICAgJ3R3Om1heC13LXhzJywndHc6cm91bmRlZC1mdWxsJywndHc6Zm9ybS1jb250cm9sJywndHc6aW5saW5lLWZsZXgnLFxyXG4gICAgICAgICd0dzpib3JkZXInXHJcbiAgICAgICAgXHJcbiAgICBdO1xyXG5cclxuICAgIGxldCBjbGFzc05hbWVzRFVJPVtcclxuICAgICAgICAnYnRuJywgJ2J0bi1zbScsICdidG4tYWNjZW50JywnYnRuLWluZm8nLCdidG4tZ3JvdXAnLFxyXG4gICAgICAgICdpbnB1dCcsICdpbnB1dC1tZCcgLCdpbnB1dC1ib3JkZXJlZCcsXHJcbiAgICAgICAgJ2NoZWNrYm94JywndGFiJywndGFicycsICd0YWJzLWJveCcsJ3RhYnMtbWQnLFwidGFiLWFjdGl2ZVwiLFxyXG4gICAgICAgICdyYWRpbycsJ3JhZGlvLWlubGluZScsXHJcbiAgICAgICAgJ3JhbmdlJywgJ3JhbmdlLWluZm8nLFxyXG4gICAgICAgICdzZWxlY3QnLCAnc2VsZWN0LW1kJywgJ3NlbGVjdC1ib3JkZXJlZCcsXHJcbiAgICAgICAgJ3RleHRhcmVhJywndGV4dGFyZWEtYm9yZGVyZWQnXHJcbiAgICAgICAgXHJcbiAgICBdO1xyXG4gICAgbGV0IHJlcGxhY2VDbGFzc2VzPShjbGFzc0xpc3Q6c3RyaW5nW118c3RyaW5nLHByZWZEVUk6c3RyaW5nLHByZWZUVzpzdHJpbmcsaWdub3JlZENsYXNzZXM6c3RyaW5nW10scHJlZlNlcERVST1cIlwiLHByZWZTZXBUdz1cIlwiKT0+e1xyXG4gICAgICAgIGlmKCFBcnJheS5pc0FycmF5KGNsYXNzTGlzdCkpe1xyXG4gICAgICAgICAgICBjbGFzc0xpc3Q9Y2xhc3NMaXN0LnNwbGl0KFwiIFwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGNsYXNzTGlzdC5tYXAoY25hbWU9PntcclxuICAgICAgICAgICAgaWYoaWdub3JlZENsYXNzZXMuaW5kZXhPZihjbmFtZSk+PTApe1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNuYW1lO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKGNsYXNzTmFtZXNEVUkuaW5kZXhPZihjbmFtZSk+PTApe1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByZWZEVUkrcHJlZlNlcERVSStjbmFtZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gcHJlZlRXK3ByZWZTZXBUdytjbmFtZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgbGV0IGNzc0ZyYW1ld29ya0NmZ1ByZWZpeGVkPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoY3NzRnJhbWV3b3JrQ2ZnKSk7XHJcbiAgICBsZXQgd2lkZ2V0TmFtZXNJZ25vcmU9W1wiX190aGVtZXNfX1wiXTtcclxuICAgIGxldCB3aWRnZXROYW1lc05vU3ViTGV2ZWw9W1xyXG4gICAgICAgIFwiX19yZXF1aXJlZF9hc3Rlcmlza19fXCIsXHJcbiAgICAgICAgXCJfX3NjcmVlbl9yZWFkZXJfX1wiLFxyXG4gICAgICAgIFwiX19yZW1vdmVfaXRlbV9fXCIsXHJcbiAgICAgICAgXCJfX2hlbHBfYmxvY2tfX1wiLFxyXG4gICAgICAgIFwiX19maWVsZF9hZGRvbl9sZWZ0X19cIixcclxuICAgICAgICBcIl9fZmllbGRfYWRkb25fcmlnaHRfX1wiLFxyXG4gICAgXTtcclxuICAgIE9iamVjdC5rZXlzKGNzc0ZyYW1ld29ya0NmZ1ByZWZpeGVkLndpZGdldHN0eWxlcykuZm9yRWFjaCh3aWRnZXROYW1lPT57XHJcbiAgICAgICAgaWYod2lkZ2V0TmFtZXNJZ25vcmUuaW5kZXhPZih3aWRnZXROYW1lKT49MCl7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYod2lkZ2V0TmFtZXNOb1N1YkxldmVsLmluZGV4T2Yod2lkZ2V0TmFtZSk+PTApe1xyXG4gICAgICAgICAgIGxldCBjbmFtZXM9IGNzc0ZyYW1ld29ya0NmZ1ByZWZpeGVkLndpZGdldHN0eWxlc1t3aWRnZXROYW1lXTtcclxuICAgICAgICAgICBjbmFtZXM9cmVwbGFjZUNsYXNzZXMoY25hbWVzLHByZWZpeERVSSxwcmVmaXhUVyxjbGFzc05hbWVzSWdub3JlZCk7XHJcbiAgICAgICAgICAgY3NzRnJhbWV3b3JrQ2ZnUHJlZml4ZWQud2lkZ2V0c3R5bGVzW3dpZGdldE5hbWVdPWNuYW1lcztcclxuICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCB3aWRnZXRDbGFzc01hcD1jc3NGcmFtZXdvcmtDZmdQcmVmaXhlZC53aWRnZXRzdHlsZXNbd2lkZ2V0TmFtZV07XHJcbiAgICAgICAgT2JqZWN0LmtleXMod2lkZ2V0Q2xhc3NNYXApLmZvckVhY2goY2xhc3NMaXN0TmFtZT0+e1xyXG4gICAgICAgICAgICBsZXQgY2xhc3NMaXN0QXNBcnI6c3RyaW5nW118c3RyaW5nPXdpZGdldENsYXNzTWFwW2NsYXNzTGlzdE5hbWVdO1xyXG4gICAgICAgICAgICBjbGFzc0xpc3RBc0Fycj1yZXBsYWNlQ2xhc3NlcyhjbGFzc0xpc3RBc0FycixwcmVmaXhEVUkscHJlZml4VFcsY2xhc3NOYW1lc0lnbm9yZWQpO1xyXG4gICAgICAgICAgICB3aWRnZXRDbGFzc01hcFtjbGFzc0xpc3ROYW1lXT1jbGFzc0xpc3RBc0FycjtcclxuICAgICAgICB9KVxyXG4gICAgICAgIFxyXG4gICAgfSlcclxuICAgIHJldHVybiBjc3NGcmFtZXdvcmtDZmdQcmVmaXhlZDtcclxuXHJcbn1cclxuXHJcbiJdfQ==