@ng-formworks/daisyui 17.5.8 → 17.6.2
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.
- package/esm2022/lib/daisyui-cssframework.mjs +232 -0
- package/esm2022/lib/daisyui-framework.component.mjs +2 -2
- package/esm2022/lib/daisyui-framework.module.mjs +10 -3
- package/esm2022/lib/daisyui-framework.prefixed.component.mjs +2 -2
- package/esm2022/lib/daisyui.framework.mjs +4 -2
- package/esm2022/lib/widgets/daisyui-one-of.component.mjs +115 -0
- package/esm2022/lib/widgets/daisyui-tabs.component.mjs +68 -32
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/ng-formworks-daisyui.mjs +223 -60
- package/fesm2022/ng-formworks-daisyui.mjs.map +1 -1
- package/lib/daisyui-framework.module.d.ts +6 -4
- package/lib/widgets/daisyui-one-of.component.d.ts +21 -0
- package/lib/widgets/daisyui-tabs.component.d.ts +1 -1
- package/package.json +3 -3
- package/public-api.d.ts +1 -0
- package/esm2022/lib/daisui-cssframework.mjs +0 -223
- /package/lib/{daisui-cssframework.d.ts → daisyui-cssframework.d.ts} +0 -0
|
@@ -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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d29ya1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNzc0ZyYW1ld29ya0NmZ0RhaXN5VUk6Y3NzX2Z3LmZyYW1ld29ya2NmZz17XHJcbiAgICBcIm5hbWVcIjogXCJkYWlzeXVpXCIsXHJcbiAgICBcInRleHRcIjpcIkRhaXN5VUlcIixcclxuICAgIFwic2NyaXB0c1wiOiBbXSxcclxuICAgIFwic3R5bGVzaGVldHNcIjogW1xyXG4gICAgICAgIC8vXCIvYXNzZXRzL2Nzc2ZyYW1ld29yay9kYWlzeXVpLWZyYW1ld29yay5jc3NcIlxyXG4gICAgXSxcclxuICAgIFwid2lkZ2V0c3R5bGVzXCI6IHtcclxuICAgICAgICBcIl9fdGhlbWVzX19cIjogW1xyXG4gICAgICAgICAgICB7XCJuYW1lXCI6XCJkYWlzeXVpX2RlZmF1bHRcIixcInRleHRcIjpcImRlZmF1bHRcIn0sXHJcbiAgICAgICAgICAgIHtcIm5hbWVcIjpcImxpZ2h0XCIsXCJ0ZXh0XCI6XCJsaWdodFwifSwgXHJcbiAgICAgICAgICAgIHtcIm5hbWVcIjpcImRhcmtcIixcInRleHRcIjpcImRhcmtcIn0sIFxyXG4gICAgICAgICAgICB7XCJuYW1lXCI6XCJjdXBjYWtlXCIsXCJ0ZXh0XCI6XCJjdXBjYWtlXCJ9LCBcclxuICAgICAgICAgICAge1wibmFtZVwiOlwiY215a1wiLFwidGV4dFwiOlwiY215a1wifSwgXHJcbiAgICAgICAgICAgIHtcIm5hbWVcIjpcInBhc3RlbFwiLFwidGV4dFwiOlwicGFzdGVsXCJ9LFxyXG4gICAgICAgICAgICB7XCJuYW1lXCI6XCJkYWlzeXVpX2xlYWZcIixcInRleHRcIjpcImxlYWZcIn1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgXSxcclxuICAgICAgICBcIiRyZWZcIjoge1xyXG4gICAgICAgICAgICBcImZpZWxkSHRtbENsYXNzXCI6IFwiYnRuIGJ0bi1zbSBidG4tYWNjZW50XCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIFwiX19hcnJheV9pdGVtX25vbnJlZl9fXCI6IHtcclxuICAgICAgICAgICAgXCJodG1sQ2xhc3NcIjogXCJib3JkZXIgc2hhZG93LW1kIHAtMVwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcIl9fZm9ybV9ncm91cF9fXCI6IHtcclxuICAgICAgICAgICAgXCJodG1sQ2xhc3NcIjogXCJtYi0xXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIFwiX19jb250cm9sX2xhYmVsX19cIjoge1xyXG4gICAgICAgICAgICBcImxhYmVsSHRtbENsYXNzXCI6IFwiY29udHJvbC1sYWJlbFwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcIl9fYWN0aXZlX19cIjoge1xyXG4gICAgICAgICAgICBcImFjdGl2ZUNsYXNzXCI6IFwiYWN0aXZlXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIFwiX19yZXF1aXJlZF9hc3Rlcmlza19fXCI6IFwidGV4dC1kYW5nZXJcIixcclxuICAgICAgICBcIl9fc2NyZWVuX3JlYWRlcl9fXCI6IFwic3Itb25seVwiLFxyXG4gICAgICAgIFwiX19yZW1vdmVfaXRlbV9fXCI6IFwiZmxvYXQtcmlnaHQgdGV4dC0yeGwgb3BhY2l0eS01MFwiLFxyXG4gICAgICAgIFwiX19oZWxwX2Jsb2NrX19cIjogXCJoZWxwLWJsb2NrXCIsXHJcbiAgICAgICAgXCJfX2ZpZWxkX2FkZG9uX2xlZnRfX1wiOiBcImlucHV0LWdyb3VwLWFkZG9uXCIsXHJcbiAgICAgICAgXCJfX2ZpZWxkX2FkZG9uX3JpZ2h0X19cIjogXCJpbnB1dC1ncm91cC1hZGRvblwiLFxyXG4gICAgICAgIFwiYWx0LWRhdGVcIjoge1xyXG4gICAgICAgICAgICBcImZpZWxkSHRtbENsYXNzXCI6IFwiaW5wdXQgaW5wdXQtbWQgaW5wdXQtYm9yZGVyZWQgdy1mdWxsXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIFwiYWx0LWRhdGV0aW1lXCI6IHtcclxuICAgICAgICAgICAgXCJmaWVsZEh0bWxDbGFzc1wiOiBcImlucHV0IGlucHV0LW1kIGlucHV0LWJvcmRlcmVkIHctZnVsbFwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcIl9fYXJyYXlfX1wiOiB7XHJcbiAgICAgICAgICAgIFwiaHRtbENsYXNzXCI6IFwiYm9yZGVyIHNoYWRvdy1tZCBwLTFcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJhcnJheVwiOiB7fSxcclxuICAgICAgICBcImF1dGhmaWVsZHNldFwiOiB7fSxcclxuICAgICAgICBcImFkdmFuY2VkZmllbGRzZXRcIjoge30sXHJcbiAgICAgICAgXCJidXR0b25cIjoge1xyXG4gICAgICAgICAgICBcImZpZWxkSHRtbENsYXNzXCI6IFwiYnRuIGJ0bi1zbSBidG4taW5mb1wiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcImNoZWNrYm94XCI6IHtcclxuICAgICAgICAgICAgXCJmaWVsZEh0bWxDbGFzc1wiOiBcImNoZWNrYm94XCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIFwiY2hlY2tib3hlc1wiOiB7XHJcbiAgICAgICAgICAgIFwiZmllbGRIdG1sQ2xhc3NcIjogXCJjaGVja2JveFwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcImNoZWNrYm94YnV0dG9uc1wiOiB7XHJcbiAgICAgICAgICAgIFwiZmllbGRIdG1sQ2xhc3NcIjogXCJ3LXB4XCIsXHJcbiAgICAgICAgICAgIFwibGFiZWxIdG1sQ2xhc3NcIjogXCJ0YWJzIHRhYnMtYm94XCIsXHJcbiAgICAgICAgICAgIFwiaHRtbENsYXNzXCI6IFwiYnRuLWdyb3VwXCIsXHJcbiAgICAgICAgICAgIFwiaXRlbUxhYmVsSHRtbENsYXNzXCI6IFwiYnRuXCIsXHJcbiAgICAgICAgICAgIFwiYWN0aXZlQ2xhc3NcIjogXCJidG4taW5mb1wiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcImNoZWNrYm94ZXMtaW5saW5lXCI6IHtcclxuICAgICAgICAgICAgXCJmaWVsZEh0bWxDbGFzc1wiOiBcImNoZWNrYm94XCIsXHJcbiAgICAgICAgICAgIFwiaHRtbENsYXNzXCI6IFwiaW5saW5lLWZsZXhcIixcclxuICAgICAgICAgICAgXCJpdGVtTGFiZWxIdG1sQ2xhc3NcIjogXCJjaGVja2JveC1pbmxpbmVcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJkYXRlXCI6IHtcclxuICAgICAgICAgICAgXCJmaWVsZEh0bWxDbGFzc1wiOiBcImlucHV0IGlucHV0LW1kIGlucHV0LWJvcmRlcmVkIHctZnVsbFwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcImRhdGV0aW1lLWxvY2FsXCI6IHtcclxuICAgICAgICAgICAgXCJmaWVsZEh0bWxDbGFzc1wiOiBcImlucHV0IGlucHV0LW1kIGlucHV0LWJvcmRlcmVkIHctZnVsbFwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcImZpZWxkc2V0XCI6IHt9LFxyXG4gICAgICAgIFwiaW50ZWdlclwiOiB7XHJcbiAgICAgICAgICAgIFwiZmllbGRIdG1sQ2xhc3NcIjogXCJpbnB1dCBpbnB1dC1tZCBpbnB1dC1ib3JkZXJlZCB3LWZ1bGwgbWF4LXcteHNcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJudW1iZXJcIjoge1xyXG4gICAgICAgICAgICBcImZpZWxkSHRtbENsYXNzXCI6IFwiaW5wdXQgaW5wdXQtbWQgaW5wdXQtYm9yZGVyZWQgdy1mdWxsIG1heC13LXhzXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIFwib3B0aW9uZmllbGRzZXRcIjoge30sXHJcbiAgICAgICAgXCJwYXNzd29yZFwiOiB7XHJcbiAgICAgICAgICAgIFwiZmllbGRIdG1sQ2xhc3NcIjogXCJpbnB1dCBpbnB1dC1tZCBpbnB1dC1ib3JkZXJlZCB3LWZ1bGxcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJyYWRpb2J1dHRvbnNcIjoge1xyXG4gICAgICAgICAgICBcImZpZWxkSHRtbENsYXNzXCI6IFwidy1weFwiLFxyXG4gICAgICAgICAgICBcImxhYmVsSHRtbENsYXNzXCI6IFwidGFicyB0YWJzLWJveFwiLFxyXG4gICAgICAgICAgICBcImh0bWxDbGFzc1wiOiBcImJ0bi1ncm91cFwiLFxyXG4gICAgICAgICAgICBcIml0ZW1MYWJlbEh0bWxDbGFzc1wiOiBcImJ0blwiLFxyXG4gICAgICAgICAgICBcImFjdGl2ZUNsYXNzXCI6IFwiYnRuLWluZm9cIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJyYWRpb1wiOiB7XHJcbiAgICAgICAgICAgIFwiZmllbGRIdG1sQ2xhc3NcIjogXCJyYWRpb1wiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcInJhZGlvc1wiOiB7XHJcbiAgICAgICAgICAgIFwiZmllbGRIdG1sQ2xhc3NcIjogXCJyYWRpb1wiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcInJhZGlvcy1pbmxpbmVcIjoge1xyXG4gICAgICAgICAgICBcImh0bWxDbGFzc1wiOiBcImlubGluZS1mbGV4XCIsXHJcbiAgICAgICAgICAgIFwiZmllbGRIdG1sQ2xhc3NcIjogXCJyYWRpb1wiLFxyXG4gICAgICAgICAgICBcIml0ZW1MYWJlbEh0bWxDbGFzc1wiOiBcInJhZGlvLWlubGluZVwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcInJhbmdlXCI6IHtcclxuICAgICAgICAgICAgXCJmaWVsZEh0bWxDbGFzc1wiOiBcInJhbmdlIHJhbmdlLWluZm9cIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJzZWN0aW9uXCI6IHt9LFxyXG4gICAgICAgIFwic2VsZWN0ZmllbGRzZXRcIjoge30sXHJcbiAgICAgICAgXCJzZWxlY3RcIjoge1xyXG4gICAgICAgICAgICBcImZpZWxkSHRtbENsYXNzXCI6IFwic2VsZWN0IHNlbGVjdC1tZCBzZWxlY3QtYm9yZGVyZWQgdy1mdWxsXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIFwic3VibWl0XCI6IHtcclxuICAgICAgICAgICAgXCJmaWVsZEh0bWxDbGFzc1wiOiBcImJ0biBidG4tc20gYnRuLWluZm8gcm91bmRlZC1mdWxsXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIFwidGV4dFwiOiB7XHJcbiAgICAgICAgICAgIFwiZmllbGRIdG1sQ2xhc3NcIjogXCJpbnB1dCBpbnB1dC1tZCBpbnB1dC1ib3JkZXJlZCB3LWZ1bGxcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJ0YWJzXCI6IHtcclxuICAgICAgICAgICAgXCJsYWJlbEh0bWxDbGFzc1wiOiBcInRhYnMtbWQgdGFicy1ib3hcIixcclxuICAgICAgICAgICAgXCJodG1sQ2xhc3NcIjogXCJcIixcclxuICAgICAgICAgICAgXCJpdGVtTGFiZWxIdG1sQ2xhc3NcIjogXCJ0YWJcIixcclxuICAgICAgICAgICAgXCJhY3RpdmVDbGFzc1wiOiBcInRhYi1hY3RpdmVcIixcclxuICAgICAgICAgICAgXCJ3aWRnZXRfcmFkaW9DbGFzc1wiOlwicmFkaW9cIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJ0YWJhcnJheVwiOiB7XHJcbiAgICAgICAgICAgIFwibGFiZWxIdG1sQ2xhc3NcIjogXCJ0YWJzIHRhYnMtYm94XCIsXHJcbiAgICAgICAgICAgIFwiaHRtbENsYXNzXCI6IFwiXCIsXHJcbiAgICAgICAgICAgIFwiaXRlbUxhYmVsSHRtbENsYXNzXCI6IFwidGFiXCIsXHJcbiAgICAgICAgICAgIFwiYWN0aXZlQ2xhc3NcIjogXCJ0YWItYWN0aXZlXCIsXHJcbiAgICAgICAgICAgIFwid2lkZ2V0X3JhZGlvQ2xhc3NcIjpcInJhZGlvXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIFwib25lLW9mXCI6IHtcclxuICAgICAgICAgICAgXCJsYWJlbEh0bWxDbGFzc1wiOiBcInRhYnMgdGFicy1ib3hcIixcclxuICAgICAgICAgICAgXCJodG1sQ2xhc3NcIjogXCJcIixcclxuICAgICAgICAgICAgXCJpdGVtTGFiZWxIdG1sQ2xhc3NcIjogXCJ0YWJcIixcclxuICAgICAgICAgICAgXCJhY3RpdmVDbGFzc1wiOiBcInRhYi1hY3RpdmVcIixcclxuICAgICAgICAgICAgXCJ3aWRnZXRfcmFkaW9DbGFzc1wiOlwicmFkaW9cIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJ0ZXh0YXJlYVwiOiB7XHJcbiAgICAgICAgICAgIFwiZmllbGRIdG1sQ2xhc3NcIjogXCJ0ZXh0YXJlYSB0ZXh0YXJlYS1ib3JkZXJlZCB3LWZ1bGxcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJkZWZhdWx0XCI6IHtcclxuICAgICAgICAgICAgXCJmaWVsZEh0bWxDbGFzc1wiOiBcImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbi8vbmVlZCB0byBjbGFzc2lmeSB3aGljaCBjbGFzc25hbWVzIGFyZSBjb250cm9sbGVkIGJ5IERhaXN5VSBhbmQgd2hpY2hcclxuLy9hcmUgY29udHJvbGxlZCBieSB0YWlsd2luZFxyXG4vLy1vbmVzIGNvbnRyb2xsZWQgYnkgdGFpbHdpbmQgd2lsbCBoYXZlIHByZWZpeCB0dzp7e2NsYXNzIG5hbWV9fVxyXG4vLy1vbmVzIGNvbnRyb2xsZWQgYnkgZGFpc3l1aSB3aWxsIGhhdmUgcHJlZml4IHR3OmR1aS17e2NsYXNzIG5hbWV9fVxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3NzRnJhbWV3b3JrQ2ZnUHJlZml4ZWQoY3NzRnJhbWV3b3JrQ2ZnOmNzc19mdy5mcmFtZXdvcmtjZmcscHJlZml4RFVJPVwidHc6ZHVpLVwiLHByZWZpeFRXPVwidHc6XCIpOmNzc19mdy5mcmFtZXdvcmtjZmd7XHJcbiAgICBcclxuICAgIGxldCBjbGFzc05hbWVzSWdub3JlZD1bXHJcbiAgICAgICAgXHJcbiAgICAgICAgJ2NvbnRyb2wtbGFiZWwnLFxyXG4gICAgICAgICdoZWxwLWJsb2NrJywnaW5wdXQtZ3JvdXAtYWRkb24nLCdjaGVja2JveC1pbmxpbmUnXHJcbiAgICAgICAgXHJcbiAgICBdO1xyXG5cclxuICAgIC8vVE9ETyB1c2UgcmVnZXhzXHJcbiAgICAvLy1yZWdleCB3b24ndCB3b3JrIHRoZSBhY3R1YWwgcHJlZml4IGNsYXNzbmFtZSBuZWVkcyB0byBiZSBcclxuICAgIC8vYXZhaWxhYmxlIGFzIHN0cmluZyBsaXRlcmFscyBhcyB0YWlsd2luZCBzZWVtcyB0byBzY2FucyBmb3IgdGhlXHJcbiAgICAvL2FjdHVhbCBuYW1lcyBzbyBmb3IgZXg6ICd0dzonICsgJ2JnLXByaW1hcnknIHdvbnQgYmUgcGlja2VkIHVwLFxyXG4gICAgLy9oYXMgdG8gYmUgJ3R3OmJnLXByaW1hcnknXHJcblxyXG4gICAgLy9OQiB0aGlzIGlzIG5vdCB1c2VkIGluIGNvZGUsIGJ1dCBuZWVkIGR1cmluZyB0aGUgdGFpd2luZCBzY2FubmluZyBcclxuICAgIC8vdG8gb3V0cHV0IHRoZSBjbGFzcyBuYW1lc1xyXG4gICAgbGV0IGNsYXNzTmFtZXNUVz1bXHJcbiAgICAgICAgJ3ctZnVsbCcsJ21iLTEnLCdzaGFkb3ctbWQnLCdwLTEnLFxyXG4gICAgICAgICdzci1vbmx5JywndGV4dC0yeGwnLCAnb3BhY2l0eS01MCcsXHJcbiAgICAgICAgJ2Zsb2F0LXJpZ2h0JyxcclxuICAgICAgICAndy1weCcsXHJcbiAgICAgICAgJ2JvcmRlcicsXHJcbiAgICAgICAgJ21heC13LXhzJywncm91bmRlZC1mdWxsJywnZm9ybS1jb250cm9sJywnaW5saW5lLWZsZXgnLFxyXG4gICAgICAgICd0dzp3LWZ1bGwnLCd0dzptYi0xJywndHc6c2hhZG93LW1kJywndHc6cC0xJyxcclxuICAgICAgICAndHc6c3Itb25seScsJ3R3OnRleHQtMnhsJywgJ3R3Om9wYWNpdHktNTAnLFxyXG4gICAgICAgICd0dzpmbG9hdC1yaWdodCcsXHJcbiAgICAgICAgJ3R3OnctcHgnLFxyXG4gICAgICAgICd0dzptYXgtdy14cycsJ3R3OnJvdW5kZWQtZnVsbCcsJ3R3OmZvcm0tY29udHJvbCcsJ3R3OmlubGluZS1mbGV4JyxcclxuICAgICAgICAndHc6Ym9yZGVyJ1xyXG4gICAgICAgIFxyXG4gICAgXTtcclxuXHJcbiAgICBsZXQgY2xhc3NOYW1lc0RVST1bXHJcbiAgICAgICAgJ2J0bicsICdidG4tc20nLCAnYnRuLWFjY2VudCcsJ2J0bi1pbmZvJywnYnRuLWdyb3VwJyxcclxuICAgICAgICAnaW5wdXQnLCAnaW5wdXQtbWQnICwnaW5wdXQtYm9yZGVyZWQnLFxyXG4gICAgICAgICdjaGVja2JveCcsJ3RhYicsJ3RhYnMnLCAndGFicy1ib3gnLCd0YWJzLW1kJyxcInRhYi1hY3RpdmVcIixcclxuICAgICAgICAncmFkaW8nLCdyYWRpby1pbmxpbmUnLFxyXG4gICAgICAgICdyYW5nZScsICdyYW5nZS1pbmZvJyxcclxuICAgICAgICAnc2VsZWN0JywgJ3NlbGVjdC1tZCcsICdzZWxlY3QtYm9yZGVyZWQnLFxyXG4gICAgICAgICd0ZXh0YXJlYScsJ3RleHRhcmVhLWJvcmRlcmVkJ1xyXG4gICAgICAgIFxyXG4gICAgXTtcclxuICAgIGxldCByZXBsYWNlQ2xhc3Nlcz0oY2xhc3NMaXN0OnN0cmluZ1tdfHN0cmluZyxwcmVmRFVJOnN0cmluZyxwcmVmVFc6c3RyaW5nLGlnbm9yZWRDbGFzc2VzOnN0cmluZ1tdLHByZWZTZXBEVUk9XCJcIixwcmVmU2VwVHc9XCJcIik9PntcclxuICAgICAgICBpZighQXJyYXkuaXNBcnJheShjbGFzc0xpc3QpKXtcclxuICAgICAgICAgICAgY2xhc3NMaXN0PWNsYXNzTGlzdC5zcGxpdChcIiBcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjbGFzc0xpc3QubWFwKGNuYW1lPT57XHJcbiAgICAgICAgICAgIGlmKGlnbm9yZWRDbGFzc2VzLmluZGV4T2YoY25hbWUpPj0wKXtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjbmFtZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihjbGFzc05hbWVzRFVJLmluZGV4T2YoY25hbWUpPj0wKXtcclxuICAgICAgICAgICAgICAgIHJldHVybiBwcmVmRFVJK3ByZWZTZXBEVUkrY25hbWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHByZWZUVytwcmVmU2VwVHcrY25hbWU7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGxldCBjc3NGcmFtZXdvcmtDZmdQcmVmaXhlZD1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGNzc0ZyYW1ld29ya0NmZykpO1xyXG4gICAgbGV0IHdpZGdldE5hbWVzSWdub3JlPVtcIl9fdGhlbWVzX19cIl07XHJcbiAgICBsZXQgd2lkZ2V0TmFtZXNOb1N1YkxldmVsPVtcclxuICAgICAgICBcIl9fcmVxdWlyZWRfYXN0ZXJpc2tfX1wiLFxyXG4gICAgICAgIFwiX19zY3JlZW5fcmVhZGVyX19cIixcclxuICAgICAgICBcIl9fcmVtb3ZlX2l0ZW1fX1wiLFxyXG4gICAgICAgIFwiX19oZWxwX2Jsb2NrX19cIixcclxuICAgICAgICBcIl9fZmllbGRfYWRkb25fbGVmdF9fXCIsXHJcbiAgICAgICAgXCJfX2ZpZWxkX2FkZG9uX3JpZ2h0X19cIixcclxuICAgIF07XHJcbiAgICBPYmplY3Qua2V5cyhjc3NGcmFtZXdvcmtDZmdQcmVmaXhlZC53aWRnZXRzdHlsZXMpLmZvckVhY2god2lkZ2V0TmFtZT0+e1xyXG4gICAgICAgIGlmKHdpZGdldE5hbWVzSWdub3JlLmluZGV4T2Yod2lkZ2V0TmFtZSk+PTApe1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKHdpZGdldE5hbWVzTm9TdWJMZXZlbC5pbmRleE9mKHdpZGdldE5hbWUpPj0wKXtcclxuICAgICAgICAgICBsZXQgY25hbWVzPSBjc3NGcmFtZXdvcmtDZmdQcmVmaXhlZC53aWRnZXRzdHlsZXNbd2lkZ2V0TmFtZV07XHJcbiAgICAgICAgICAgY25hbWVzPXJlcGxhY2VDbGFzc2VzKGNuYW1lcyxwcmVmaXhEVUkscHJlZml4VFcsY2xhc3NOYW1lc0lnbm9yZWQpO1xyXG4gICAgICAgICAgIGNzc0ZyYW1ld29ya0NmZ1ByZWZpeGVkLndpZGdldHN0eWxlc1t3aWRnZXROYW1lXT1jbmFtZXM7XHJcbiAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgd2lkZ2V0Q2xhc3NNYXA9Y3NzRnJhbWV3b3JrQ2ZnUHJlZml4ZWQud2lkZ2V0c3R5bGVzW3dpZGdldE5hbWVdO1xyXG4gICAgICAgIE9iamVjdC5rZXlzKHdpZGdldENsYXNzTWFwKS5mb3JFYWNoKGNsYXNzTGlzdE5hbWU9PntcclxuICAgICAgICAgICAgbGV0IGNsYXNzTGlzdEFzQXJyOnN0cmluZ1tdfHN0cmluZz13aWRnZXRDbGFzc01hcFtjbGFzc0xpc3ROYW1lXTtcclxuICAgICAgICAgICAgY2xhc3NMaXN0QXNBcnI9cmVwbGFjZUNsYXNzZXMoY2xhc3NMaXN0QXNBcnIscHJlZml4RFVJLHByZWZpeFRXLGNsYXNzTmFtZXNJZ25vcmVkKTtcclxuICAgICAgICAgICAgd2lkZ2V0Q2xhc3NNYXBbY2xhc3NMaXN0TmFtZV09Y2xhc3NMaXN0QXNBcnI7XHJcbiAgICAgICAgfSlcclxuICAgICAgICBcclxuICAgIH0pXHJcbiAgICByZXR1cm4gY3NzRnJhbWV3b3JrQ2ZnUHJlZml4ZWQ7XHJcblxyXG59XHJcblxyXG4iXX0=
|