@ngx-formly/core 6.0.0 → 6.0.1
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/README.md +20 -13
- package/esm2020/json-schema/formly-json-schema.service.mjs +3 -3
- package/esm2020/select/select-options.pipe.mjs +36 -4
- package/fesm2015/ngx-formly-core-json-schema.mjs +2 -2
- package/fesm2015/ngx-formly-core-json-schema.mjs.map +1 -1
- package/fesm2015/ngx-formly-core-select.mjs +35 -3
- package/fesm2015/ngx-formly-core-select.mjs.map +1 -1
- package/fesm2020/ngx-formly-core-json-schema.mjs +2 -2
- package/fesm2020/ngx-formly-core-json-schema.mjs.map +1 -1
- package/fesm2020/ngx-formly-core-select.mjs +35 -3
- package/fesm2020/ngx-formly-core-select.mjs.map +1 -1
- package/package.json +1 -1
- package/select/select-options.pipe.d.ts +7 -2
package/README.md
CHANGED
|
@@ -77,32 +77,39 @@ Formly is a dynamic (JSON powered) form library for Angular that brings unmatche
|
|
|
77
77
|
</td>
|
|
78
78
|
<td align="center">
|
|
79
79
|
<a href="https://juri.dev">
|
|
80
|
-
<img src="https://avatars.githubusercontent.com/u/542458
|
|
80
|
+
<img src="https://avatars.githubusercontent.com/u/542458" width="100px;" />
|
|
81
81
|
<br />
|
|
82
82
|
<sub><b>Juri Strumpflohner</b></sub>
|
|
83
83
|
</a>
|
|
84
84
|
</td>
|
|
85
85
|
<td align="center">
|
|
86
86
|
<a href="https://github.com/mohammedzamakhan">
|
|
87
|
-
<img src="https://avatars.githubusercontent.com/u/2327532
|
|
87
|
+
<img src="https://avatars.githubusercontent.com/u/2327532" width="100px;" />
|
|
88
88
|
<br />
|
|
89
89
|
<sub><b>Mohammed Zama Khan</b></sub>
|
|
90
90
|
</a>
|
|
91
91
|
</td>
|
|
92
92
|
<td align="center">
|
|
93
93
|
<a href="https://github.com/beeman">
|
|
94
|
-
<img src="https://avatars.githubusercontent.com/u/36491
|
|
94
|
+
<img src="https://avatars.githubusercontent.com/u/36491" width="100px;" />
|
|
95
95
|
<br />
|
|
96
96
|
<sub><b>Bram Borggreve</b></sub>
|
|
97
97
|
</a>
|
|
98
98
|
</td>
|
|
99
99
|
<td align="center">
|
|
100
100
|
<a href="https://github.com/kenisteward">
|
|
101
|
-
<img src="https://avatars.githubusercontent.com/u/12831669
|
|
101
|
+
<img src="https://avatars.githubusercontent.com/u/12831669" width="100px;" />
|
|
102
102
|
<br />
|
|
103
103
|
<sub><b>Keni Steward</b></sub>
|
|
104
104
|
</a>
|
|
105
105
|
</td>
|
|
106
|
+
<td align="center">
|
|
107
|
+
<a href="https://github.com/MaxKless">
|
|
108
|
+
<img src="https://avatars.githubusercontent.com/u/34165455" width="100px;" />
|
|
109
|
+
<br />
|
|
110
|
+
<sub><b>Max Kless</b></sub>
|
|
111
|
+
</a>
|
|
112
|
+
</td>
|
|
106
113
|
</tr>
|
|
107
114
|
</table>
|
|
108
115
|
|
|
@@ -111,21 +118,21 @@ Formly is a dynamic (JSON powered) form library for Angular that brings unmatche
|
|
|
111
118
|
Thanks goes to these wonderful people:
|
|
112
119
|
|
|
113
120
|
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
|
|
114
|
-
[<img alt="aitboudad" src="https://avatars.githubusercontent.com/u/1753742?v=4&s=80" width="80" />](https://github.com/aitboudad)[<img alt="mohammedzamakhan" src="https://avatars.githubusercontent.com/u/2327532?v=4&s=80" width="80" />](https://github.com/mohammedzamakhan)[<img alt="divyakumarjain" src="https://avatars.githubusercontent.com/u/2039134?v=4&s=80" width="80" />](https://github.com/divyakumarjain)[<img alt="
|
|
121
|
+
[<img alt="aitboudad" src="https://avatars.githubusercontent.com/u/1753742?v=4&s=80" width="80" />](https://github.com/aitboudad)[<img alt="mohammedzamakhan" src="https://avatars.githubusercontent.com/u/2327532?v=4&s=80" width="80" />](https://github.com/mohammedzamakhan)[<img alt="divyakumarjain" src="https://avatars.githubusercontent.com/u/2039134?v=4&s=80" width="80" />](https://github.com/divyakumarjain)[<img alt="MaxKless" src="https://avatars.githubusercontent.com/u/34165455?v=4&s=80" width="80" />](https://github.com/MaxKless)[<img alt="couzic" src="https://avatars.githubusercontent.com/u/1380322?v=4&s=80" width="80" />](https://github.com/couzic)[<img alt="juristr" src="https://avatars.githubusercontent.com/u/542458?v=4&s=80" width="80" />](https://github.com/juristr)[<img alt="franzeal" src="https://avatars.githubusercontent.com/u/7455769?v=4&s=80" width="80" />](https://github.com/franzeal)[<img alt="beeman" src="https://avatars.githubusercontent.com/u/36491?v=4&s=80" width="80" />](https://github.com/beeman)
|
|
115
122
|
|
|
116
|
-
[<img alt="
|
|
123
|
+
[<img alt="FritzHerbers" src="https://avatars.githubusercontent.com/u/10029682?v=4&s=80" width="80" />](https://github.com/FritzHerbers)[<img alt="klemenoslaj" src="https://avatars.githubusercontent.com/u/7548247?v=4&s=80" width="80" />](https://github.com/klemenoslaj)[<img alt="samtsai" src="https://avatars.githubusercontent.com/u/225526?v=4&s=80" width="80" />](https://github.com/samtsai)[<img alt="thorgod" src="https://avatars.githubusercontent.com/u/13910170?v=4&s=80" width="80" />](https://github.com/thorgod)[<img alt="kenisteward" src="https://avatars.githubusercontent.com/u/12831669?v=4&s=80" width="80" />](https://github.com/kenisteward)[<img alt="dwaldrum" src="https://avatars.githubusercontent.com/u/386721?v=4&s=80" width="80" />](https://github.com/dwaldrum)[<img alt="skrtheboss" src="https://avatars.githubusercontent.com/u/10209728?v=4&s=80" width="80" />](https://github.com/skrtheboss)[<img alt="intellix" src="https://avatars.githubusercontent.com/u/1162531?v=4&s=80" width="80" />](https://github.com/intellix)
|
|
117
124
|
|
|
118
|
-
[<img alt="
|
|
125
|
+
[<img alt="Krustie101" src="https://avatars.githubusercontent.com/u/1636728?v=4&s=80" width="80" />](https://github.com/Krustie101)[<img alt="manuelmeister" src="https://avatars.githubusercontent.com/u/3001985?v=4&s=80" width="80" />](https://github.com/manuelmeister)[<img alt="MarcosEllys" src="https://avatars.githubusercontent.com/u/6751242?v=4&s=80" width="80" />](https://github.com/MarcosEllys)[<img alt="rehleinBo" src="https://avatars.githubusercontent.com/u/7338819?v=4&s=80" width="80" />](https://github.com/rehleinBo)[<img alt="ryanjerskine" src="https://avatars.githubusercontent.com/u/5464778?v=4&s=80" width="80" />](https://github.com/ryanjerskine)[<img alt="Devqon" src="https://avatars.githubusercontent.com/u/9316480?v=4&s=80" width="80" />](https://github.com/Devqon)[<img alt="vstiebe" src="https://avatars.githubusercontent.com/u/13326475?v=4&s=80" width="80" />](https://github.com/vstiebe)[<img alt="AlexTalcura" src="https://avatars.githubusercontent.com/u/20095773?v=4&s=80" width="80" />](https://github.com/AlexTalcura)
|
|
119
126
|
|
|
120
|
-
[<img alt="
|
|
127
|
+
[<img alt="alex-novikov-1990" src="https://avatars.githubusercontent.com/u/6377930?v=4&s=80" width="80" />](https://github.com/alex-novikov-1990)[<img alt="andmoredev" src="https://avatars.githubusercontent.com/u/33256364?v=4&s=80" width="80" />](https://github.com/andmoredev)[<img alt="vitale232" src="https://avatars.githubusercontent.com/u/8504254?v=4&s=80" width="80" />](https://github.com/vitale232)[<img alt="AmGarera" src="https://avatars.githubusercontent.com/u/6021169?v=4&s=80" width="80" />](https://github.com/AmGarera)[<img alt="bhaidar" src="https://avatars.githubusercontent.com/u/1163421?v=4&s=80" width="80" />](https://github.com/bhaidar)[<img alt="cyrilletuzi" src="https://avatars.githubusercontent.com/u/555867?v=4&s=80" width="80" />](https://github.com/cyrilletuzi)[<img alt="Dayvisson" src="https://avatars.githubusercontent.com/u/12189515?v=4&s=80" width="80" />](https://github.com/Dayvisson)[<img alt="dereekb" src="https://avatars.githubusercontent.com/u/3586580?v=4&s=80" width="80" />](https://github.com/dereekb)
|
|
121
128
|
|
|
122
|
-
[<img alt="
|
|
129
|
+
[<img alt="eduardoRoth" src="https://avatars.githubusercontent.com/u/5419161?v=4&s=80" width="80" />](https://github.com/eduardoRoth)[<img alt="enricouniurb" src="https://avatars.githubusercontent.com/u/38656571?v=4&s=80" width="80" />](https://github.com/enricouniurb)[<img alt="erikvdv1" src="https://avatars.githubusercontent.com/u/2014802?v=4&s=80" width="80" />](https://github.com/erikvdv1)[<img alt="fynnfeldpausch" src="https://avatars.githubusercontent.com/u/1246913?v=4&s=80" width="80" />](https://github.com/fynnfeldpausch)[<img alt="internalsystemerror" src="https://avatars.githubusercontent.com/u/1626298?v=4&s=80" width="80" />](https://github.com/internalsystemerror)[<img alt="jrgleason" src="https://avatars.githubusercontent.com/u/1319151?v=4&s=80" width="80" />](https://github.com/jrgleason)[<img alt="johannesjo" src="https://avatars.githubusercontent.com/u/1456265?v=4&s=80" width="80" />](https://github.com/johannesjo)[<img alt="jdpnielsen" src="https://avatars.githubusercontent.com/u/8746698?v=4&s=80" width="80" />](https://github.com/jdpnielsen)
|
|
123
130
|
|
|
124
|
-
[<img alt="
|
|
131
|
+
[<img alt="TheMcMurder" src="https://avatars.githubusercontent.com/u/3059715?v=4&s=80" width="80" />](https://github.com/TheMcMurder)[<img alt="kentcdodds" src="https://avatars.githubusercontent.com/u/1500684?v=4&s=80" width="80" />](https://github.com/kentcdodds)[<img alt="Lehoczky" src="https://avatars.githubusercontent.com/u/31937175?v=4&s=80" width="80" />](https://github.com/Lehoczky)[<img alt="LennardWesterveld" src="https://avatars.githubusercontent.com/u/1076589?v=4&s=80" width="80" />](https://github.com/LennardWesterveld)[<img alt="logvinoleg89" src="https://avatars.githubusercontent.com/u/12018303?v=4&s=80" width="80" />](https://github.com/logvinoleg89)[<img alt="LucasJAlba" src="https://avatars.githubusercontent.com/u/2780076?v=4&s=80" width="80" />](https://github.com/LucasJAlba)[<img alt="lucienbertin" src="https://avatars.githubusercontent.com/u/10089239?v=4&s=80" width="80" />](https://github.com/lucienbertin)[<img alt="waffle-iron" src="https://avatars.githubusercontent.com/u/6912981?v=4&s=80" width="80" />](https://github.com/waffle-iron)
|
|
125
132
|
|
|
126
|
-
[<img alt="
|
|
133
|
+
[<img alt="mathijshoogland" src="https://avatars.githubusercontent.com/u/7372934?v=4&s=80" width="80" />](https://github.com/mathijshoogland)[<img alt="mrbusche" src="https://avatars.githubusercontent.com/u/792378?v=4&s=80" width="80" />](https://github.com/mrbusche)[<img alt="NanFengCheong" src="https://avatars.githubusercontent.com/u/7321833?v=4&s=80" width="80" />](https://github.com/NanFengCheong)[<img alt="Pouja" src="https://avatars.githubusercontent.com/u/2385144?v=4&s=80" width="80" />](https://github.com/Pouja)[<img alt="rafaelss95" src="https://avatars.githubusercontent.com/u/11965907?v=4&s=80" width="80" />](https://github.com/rafaelss95)[<img alt="Riron" src="https://avatars.githubusercontent.com/u/5145523?v=4&s=80" width="80" />](https://github.com/Riron)[<img alt="milasevicius" src="https://avatars.githubusercontent.com/u/1790265?v=4&s=80" width="80" />](https://github.com/milasevicius)[<img alt="rternavskyi" src="https://avatars.githubusercontent.com/u/26190424?v=4&s=80" width="80" />](https://github.com/rternavskyi)
|
|
127
134
|
|
|
128
|
-
[<img alt="
|
|
135
|
+
[<img alt="blowsie" src="https://avatars.githubusercontent.com/u/308572?v=4&s=80" width="80" />](https://github.com/blowsie)[<img alt="ThomasBower" src="https://avatars.githubusercontent.com/u/295527?v=4&s=80" width="80" />](https://github.com/ThomasBower)[<img alt="thm1118" src="https://avatars.githubusercontent.com/u/3632180?v=4&s=80" width="80" />](https://github.com/thm1118)[<img alt="Tom-V" src="https://avatars.githubusercontent.com/u/322654?v=4&s=80" width="80" />](https://github.com/Tom-V)[<img alt="VyacheslavPritykin" src="https://avatars.githubusercontent.com/u/819457?v=4&s=80" width="80" />](https://github.com/VyacheslavPritykin)[<img alt="akamyshanov" src="https://avatars.githubusercontent.com/u/1358330?v=4&s=80" width="80" />](https://github.com/akamyshanov)[<img alt="danielcrisp" src="https://avatars.githubusercontent.com/u/1104814?v=4&s=80" width="80" />](https://github.com/danielcrisp)[<img alt="francisco-sanchez-molina" src="https://avatars.githubusercontent.com/u/9049706?v=4&s=80" width="80" />](https://github.com/francisco-sanchez-molina)
|
|
129
136
|
|
|
130
|
-
[<img alt="wenqi73" src="https://avatars.githubusercontent.com/u/23337087?v=4&s=80" width="80" />](https://github.com/wenqi73)
|
|
137
|
+
[<img alt="kapsiR" src="https://avatars.githubusercontent.com/u/7165033?v=4&s=80" width="80" />](https://github.com/kapsiR)[<img alt="marfer" src="https://avatars.githubusercontent.com/u/1127166?v=4&s=80" width="80" />](https://github.com/marfer)[<img alt="mburger81" src="https://avatars.githubusercontent.com/u/3778892?v=4&s=80" width="80" />](https://github.com/mburger81)[<img alt="n3xus" src="https://avatars.githubusercontent.com/u/510213?v=4&s=80" width="80" />](https://github.com/n3xus)[<img alt="neminovno" src="https://avatars.githubusercontent.com/u/1468887?v=4&s=80" width="80" />](https://github.com/neminovno)[<img alt="wenqi73" src="https://avatars.githubusercontent.com/u/23337087?v=4&s=80" width="80" />](https://github.com/wenqi73)[<img alt="yoni333" src="https://avatars.githubusercontent.com/u/19931760?v=4&s=80" width="80" />](https://github.com/yoni333)
|
|
131
138
|
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
|
@@ -220,7 +220,7 @@ export class FormlyJsonschema {
|
|
|
220
220
|
field.fieldGroup.push({
|
|
221
221
|
...this._toFieldConfig({ ...oneOfSchemaItem, properties }, { ...options, resetOnHide: true }),
|
|
222
222
|
expressions: {
|
|
223
|
-
hide: (
|
|
223
|
+
hide: (f) => !f.model || getConstValue(constSchema) !== f.model[property],
|
|
224
224
|
},
|
|
225
225
|
});
|
|
226
226
|
});
|
|
@@ -229,7 +229,7 @@ export class FormlyJsonschema {
|
|
|
229
229
|
field.fieldGroup.push({
|
|
230
230
|
...this._toFieldConfig(schemaDeps[property], options),
|
|
231
231
|
expressions: {
|
|
232
|
-
hide: (
|
|
232
|
+
hide: (f) => !f.model || isEmpty(f.model[property]),
|
|
233
233
|
},
|
|
234
234
|
});
|
|
235
235
|
}
|
|
@@ -561,4 +561,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
561
561
|
type: Injectable,
|
|
562
562
|
args: [{ providedIn: 'root' }]
|
|
563
563
|
}] });
|
|
564
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWpzb24tc2NoZW1hLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29yZS9qc29uLXNjaGVtYS9zcmMvZm9ybWx5LWpzb24tc2NoZW1hLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQW1CLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQ0wsaUJBQWlCLElBQUksZ0JBQWdCLEVBQ3JDLGNBQWMsSUFBSSxhQUFhLEVBQy9CLE1BQU0sSUFBSSxLQUFLLEVBQ2YsT0FBTyxJQUFJLE1BQU0sR0FDbEIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBZXJDLHVDQUF1QztBQUN2QyxTQUFTLGFBQWEsQ0FBQyxDQUFTO0lBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDaEIsT0FBTyxDQUFDLENBQUM7S0FDVjtJQUVELElBQUksQ0FBQyxHQUFHLENBQUMsRUFDUCxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ1IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ2xDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDUixDQUFDLEVBQUUsQ0FBQztLQUNMO0lBRUQsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBRUQsU0FBUyxPQUFPLENBQUMsQ0FBTTtJQUNyQixPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQztBQUMvQixDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsQ0FBTTtJQUN0QixPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksT0FBTyxDQUFDLEtB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R0FBRyxJQUFJLEtBQUssaUJBQWlCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQzNELElBQUksUUFBUSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtnQkFDOUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQ3JEO2lCQUFNLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRTtnQkFDM0IsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN2QjtTQUNGO1FBRUQsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDOzs4R0FubkJVLGdCQUFnQjtrSEFBaEIsZ0JBQWdCLGNBREgsTUFBTTs0RkFDbkIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBKU09OU2NoZW1hNywgSlNPTlNjaGVtYTdEZWZpbml0aW9uIH0gZnJvbSAnanNvbi1zY2hlbWEnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIMm1cmV2ZXJzZURlZXBNZXJnZSBhcyByZXZlcnNlRGVlcE1lcmdlLFxuICDJtWdldEZpZWxkVmFsdWUgYXMgZ2V0RmllbGRWYWx1ZSxcbiAgybVjbG9uZSBhcyBjbG9uZSxcbiAgybVoYXNLZXkgYXMgaGFzS2V5LFxufSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IGludGVyZmFjZSBGb3JtbHlKc29uc2NoZW1hT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBhbGxvd3MgdG8gaW50ZXJjZXB0IHRoZSBtYXBwaW5nLCB0YWtpbmcgdGhlIGFscmVhZHkgbWFwcGVkXG4gICAqIGZvcm1seSBmaWVsZCBhbmQgdGhlIG9yaWdpbmFsIEpTT05TY2hlbWEgc291cmNlIGZyb20gd2hpY2ggaXRcbiAgICogd2FzIG1hcHBlZC5cbiAgICovXG4gIG1hcD86IChtYXBwZWRGaWVsZDogRm9ybWx5RmllbGRDb25maWcsIG1hcFNvdXJjZTogSlNPTlNjaGVtYTcpID0+IEZvcm1seUZpZWxkQ29uZmlnO1xufVxuXG5pbnRlcmZhY2UgRm9ybWx5SlNPTlNjaGVtYTcgZXh0ZW5kcyBKU09OU2NoZW1hNyB7XG4gIHdpZGdldD86IHsgZm9ybWx5Q29uZmlnOiBGb3JtbHlGaWVsZENvbmZpZyB9O1xufVxuXG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMjc4NjUyODVcbmZ1bmN0aW9uIGRlY2ltYWxQbGFjZXMoYTogbnVtYmVyKSB7XG4gIGlmICghaXNGaW5pdGUoYSkpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGxldCBlID0gMSxcbiAgICBwID0gMDtcbiAgd2hpbGUgKE1hdGgucm91bmQoYSAqIGUpIC8gZSAhPT0gYSkge1xuICAgIGUgKj0gMTA7XG4gICAgcCsrO1xuICB9XG5cbiAgcmV0dXJuIHA7XG59XG5cbmZ1bmN0aW9uIGlzRW1wdHkodjogYW55KSB7XG4gIHJldHVybiB2ID09PSAnJyB8fCB2ID09IG51bGw7XG59XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KHY6IGFueSkge1xuICByZXR1cm4gdiAhPSBudWxsICYmIHR5cGVvZiB2ID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2KTtcbn1cblxuZnVuY3Rpb24gaXNJbnRlZ2VyKHZhbHVlOiBhbnkpIHtcbiAgcmV0dXJuIE51bWJlci5pc0ludGVnZXIgPyBOdW1iZXIuaXNJbnRlZ2VyKHZhbHVlKSA6IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgTWF0aC5mbG9vcih2YWx1ZSkgPT09IHZhbHVlO1xufVxuXG5mdW5jdGlvbiBpc0NvbnN0KHNjaGVtYTogSlNPTlNjaGVtYTdEZWZpbml0aW9uKSB7XG4gIHJldHVybiB0eXBlb2Ygc2NoZW1hID09PSAnb2JqZWN0JyAmJiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdjb25zdCcpIHx8IChzY2hlbWEuZW51bSAmJiBzY2hlbWEuZW51bS5sZW5ndGggPT09IDEpKTtcbn1cblxuZnVuY3Rpb24gdG90YWxNYXRjaGVkRmllbGRzKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZyk6IG51bWJlciB7XG4gIGlmICghZmllbGQuZmllbGRHcm91cCkge1xuICAgIHJldHVybiBoYXNLZXkoZmllbGQpICYmIGdldEZpZWxkVmFsdWUoZmllbGQpICE9PSB1bmRlZmluZWQgPyAxIDogMDtcbiAgfVxuXG4gIGNvbnN0IHRvdGFsID0gZmllbGQuZmllbGRHcm91cC5yZWR1Y2UoKHMsIGYpID0+IHRvdGFsTWF0Y2hlZEZpZWxkcyhmKSArIHMsIDApO1xuICBpZiAodG90YWwgPT09IDAgJiYgaGFzS2V5KGZpZWxkKSkge1xuICAgIGNvbnN0IHZhbHVlID0gZ2V0RmllbGRWYWx1ZShmaWVsZCk7XG4gICAgaWYgKFxuICAgICAgdmFsdWUgPT09IG51bGwgfHxcbiAgICAgICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmICgoZmllbGQuZmllbGRBcnJheSAmJiBBcnJheS5pc0FycmF5KHZhbHVlKSkgfHwgKCFmaWVsZC5maWVsZEFycmF5ICYmIGlzT2JqZWN0KHZhbHVlKSkpKVxuICAgICkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRvdGFsO1xufVxuXG5pbnRlcmZhY2UgSU9wdGlvbnMgZXh0ZW5kcyBGb3JtbHlKc29uc2NoZW1hT3B0aW9ucyB7XG4gIHNjaGVtYTogRm9ybWx5SlNPTlNjaGVtYTc7XG4gIHJlc2V0T25IaWRlPzogYm9vbGVhbjtcbiAgc2hhcmVGb3JtQ29udHJvbD86IGJvb2xlYW47XG4gIGlnbm9yZURlZmF1bHQ/OiBib29sZWFuO1xuICBzdHJpY3Q/OiBib29sZWFuO1xuICByZWFkT25seT86IGJvb2xlYW47XG4gIGtleT86IEZvcm1seUZpZWxkQ29uZmlnWydrZXknXTtcbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBGb3JtbHlKc29uc2NoZW1hIHtcbiAgdG9GaWVsZENvbmZpZyhzY2hlbWE6IEpTT05TY2hlbWE3LCBvcHRpb25zPzogRm9ybWx5SnNvbnNjaGVtYU9wdGlvbnMpOiBGb3JtbHlGaWVsZENvbmZpZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RvRmllbGRDb25maWcoc2NoZW1hLCB7IHNjaGVtYSwgLi4uKG9wdGlvbnMgfHwge30pIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfdG9GaWVsZENvbmZpZyhzY2hlbWE6IEZvcm1seUpTT05TY2hlbWE3LCB7IGtleSwgLi4ub3B0aW9ucyB9OiBJT3B0aW9ucyk6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgICBzY2hlbWEgPSB0aGlzLnJlc29sdmVTY2hlbWEoc2NoZW1hLCBvcHRpb25zKTtcbiAgICBjb25zdCB0eXBlcyA9IHRoaXMuZ3Vlc3NTY2hlbWFUeXBlKHNjaGVtYSk7XG5cbiAgICBsZXQgZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnICYgeyBzaGFyZUZvcm1Db250cm9sPzogYm9vbGVhbiB9ID0ge1xuICAgICAgdHlwZTogdHlwZXNbMF0sXG4gICAgICBkZWZhdWx0VmFsdWU6IHNjaGVtYS5kZWZhdWx0LFxuICAgICAgcHJvcHM6IHtcbiAgICAgICAgbGFiZWw6IHNjaGVtYS50aXRsZSxcbiAgICAgICAgcmVhZG9ubHk6IHNjaGVtYS5yZWFkT25seSxcbiAgICAgICAgZGVzY3JpcHRpb246IHNjaGVtYS5kZXNjcmlwdGlvbixcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGlmIChrZXkgIT0gbnVsbCkge1xuICAgICAgZmllbGQua2V5ID0ga2V5O1xuICAgIH1cblxuICAgIGlmICghb3B0aW9ucy5pZ25vcmVEZWZhdWx0ICYmIChzY2hlbWEucmVhZE9ubHkgfHwgb3B0aW9ucy5yZWFkT25seSkpIHtcbiAgICAgIGZpZWxkLnByb3BzLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgIG9wdGlvbnMgPSB7IC4uLm9wdGlvbnMsIHJlYWRPbmx5OiB0cnVlIH07XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMucmVzZXRPbkhpZGUpIHtcbiAgICAgIGZpZWxkLnJlc2V0T25IaWRlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoa2V5ICYmIG9wdGlvbnMuc3RyaWN0KSB7XG4gICAgICB0aGlzLmFkZFZhbGlkYXRvcihmaWVsZCwgJ3R5cGUnLCAoYzogQWJzdHJhY3RDb250cm9sLCBmOiBGb3JtbHlGaWVsZENvbmZpZykgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGdldEZpZWxkVmFsdWUoZik7XG4gICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdzdHJpbmcnOiB7XG4gICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnaW50ZWdlcic6IHtcbiAgICAgICAgICAgICAgcmV0dXJuIGlzSW50ZWdlcih2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdudW1iZXInOiB7XG4gICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnb2JqZWN0Jzoge1xuICAgICAgICAgICAgICByZXR1cm4gaXNPYmplY3QodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnYXJyYXknOiB7XG4gICAgICAgICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnNoYXJlRm9ybUNvbnRyb2wgPT09IGZhbHNlKSB7XG4gICAgICBmaWVsZC5zaGFyZUZvcm1Db250cm9sID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuaWdub3JlRGVmYXVsdCkge1xuICAgICAgZGVsZXRlIGZpZWxkLmRlZmF1bHRWYWx1ZTtcbiAgICB9XG5cbiAgICB0aGlzLmFkZFZhbGlkYXRvcihmaWVsZCwgJ3R5cGUnLCB7XG4gICAgICBzY2hlbWFUeXBlOiB0eXBlcyxcbiAgICAgIGV4cHJlc3Npb246ICh7IHZhbHVlIH06IEFic3RyYWN0Q29udHJvbCkgPT4ge1xuICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbHVlID09PSBudWxsICYmIHR5cGVzLmluZGV4T2YoJ251bGwnKSAhPT0gLTEpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAodHlwZXNbMF0pIHtcbiAgICAgICAgICBjYXNlICdudWxsJzoge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSAnc3RyaW5nJzoge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZyc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgJ2ludGVnZXInOiB7XG4gICAgICAgICAgICByZXR1cm4gaXNJbnRlZ2VyKHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSAnbnVtYmVyJzoge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcic7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgJ29iamVjdCc6IHtcbiAgICAgICAgICAgIHJldHVybiBpc09iamVjdCh2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgJ2FycmF5Jzoge1xuICAgICAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ2ludGVnZXInOiB7XG4gICAgICAgIGZpZWxkLnBhcnNlcnMgPSBbKHY6IHN0cmluZyB8IG51bWJlcikgPT4gKGlzRW1wdHkodikgPyB1bmRlZmluZWQgOiBOdW1iZXIodikpXTtcbiAgICAgICAgaWYgKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgnbWluaW11bScpKSB7XG4gICAgICAgICAgZmllbGQucHJvcHMubWluID0gc2NoZW1hLm1pbmltdW07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdtYXhpbXVtJykpIHtcbiAgICAgICAgICBmaWVsZC5wcm9wcy5tYXggPSBzY2hlbWEubWF4aW11bTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzY2hlbWEuaGFzT3duUHJvcGVydHkoJ2V4Y2x1c2l2ZU1pbmltdW0nKSkge1xuICAgICAgICAgIGZpZWxkLnByb3BzLmV4Y2x1c2l2ZU1pbmltdW0gPSBzY2hlbWEuZXhjbHVzaXZlTWluaW11bTtcbiAgICAgICAgICB0aGlzLmFkZFZhbGlkYXRvcihcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgJ2V4Y2x1c2l2ZU1pbmltdW0nLFxuICAgICAgICAgICAgKHsgdmFsdWUgfTogQWJzdHJhY3RDb250cm9sKSA9PiBpc0VtcHR5KHZhbHVlKSB8fCB2YWx1ZSA+IHNjaGVtYS5leGNsdXNpdmVNaW5pbXVtLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdleGNsdXNpdmVNYXhpbXVtJykpIHtcbiAgICAgICAgICBmaWVsZC5wcm9wcy5leGNsdXNpdmVNYXhpbXVtID0gc2NoZW1hLmV4Y2x1c2l2ZU1heGltdW07XG4gICAgICAgICAgdGhpcy5hZGRWYWxpZGF0b3IoXG4gICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICdleGNsdXNpdmVNYXhpbXVtJyxcbiAgICAgICAgICAgICh7IHZhbHVlIH06IEFic3RyYWN0Q29udHJvbCkgPT4gaXNFbXB0eSh2YWx1ZSkgfHwgdmFsdWUgPCBzY2hlbWEuZXhjbHVzaXZlTWF4aW11bSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgnbXVsdGlwbGVPZicpKSB7XG4gICAgICAgICAgZmllbGQucHJvcHMuc3RlcCA9IHNjaGVtYS5tdWx0aXBsZU9mO1xuICAgICAgICAgIHRoaXMuYWRkVmFsaWRhdG9yKGZpZWxkLCAnbXVsdGlwbGVPZicsICh7IHZhbHVlIH06IEFic3RyYWN0Q29udHJvbCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzRW1wdHkodmFsdWUpIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicgfHwgdmFsdWUgPT09IDAgfHwgc2NoZW1hLm11bHRpcGxlT2YgPD0gMCkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Fqdi12YWxpZGF0b3IvYWp2L2lzc3Vlcy82NTIjaXNzdWUtMjgzNjEwODU5XG4gICAgICAgICAgICBjb25zdCBtdWx0aXBsaWVyID0gTWF0aC5wb3coMTAsIGRlY2ltYWxQbGFjZXMoc2NoZW1hLm11bHRpcGxlT2YpKTtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLnJvdW5kKHZhbHVlICogbXVsdGlwbGllcikgJSBNYXRoLnJvdW5kKHNjaGVtYS5tdWx0aXBsZU9mICogbXVsdGlwbGllcikgPT09IDA7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdzdHJpbmcnOiB7XG4gICAgICAgIGZpZWxkLnBhcnNlcnMgPSBbXG4gICAgICAgICAgKHYpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlcy5pbmRleE9mKCdudWxsJykgIT09IC0xKSB7XG4gICAgICAgICAgICAgIHYgPSBpc0VtcHR5KHYpID8gbnVsbCA6IHY7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFmaWVsZC5wcm9wcy5yZXF1aXJlZCkge1xuICAgICAgICAgICAgICB2ID0gdiA9PT0gJycgPyB1bmRlZmluZWQgOiB2O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgICB9LFxuICAgICAgICBdO1xuXG4gICAgICAgIFsnbWluTGVuZ3RoJywgJ21heExlbmd0aCcsICdwYXR0ZXJuJ10uZm9yRWFjaCgocHJvcCkgPT4ge1xuICAgICAgICAgIGlmIChzY2hlbWEuaGFzT3duUHJvcGVydHkocHJvcCkpIHtcbiAgICAgICAgICAgIGZpZWxkLnByb3BzW3Byb3BdID0gKHNjaGVtYSBhcyBhbnkpW3Byb3BdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnb2JqZWN0Jzoge1xuICAgICAgICBpZiAoIWZpZWxkLmZpZWxkR3JvdXApIHtcbiAgICAgICAgICBmaWVsZC5maWVsZEdyb3VwID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IHByb3BEZXBzLCBzY2hlbWFEZXBzIH0gPSB0aGlzLnJlc29sdmVEZXBlbmRlbmNpZXMoc2NoZW1hKTtcbiAgICAgICAgT2JqZWN0LmtleXMoc2NoZW1hLnByb3BlcnRpZXMgfHwge30pLmZvckVhY2goKHByb3BlcnR5KSA9PiB7XG4gICAgICAgICAgY29uc3QgZiA9IHRoaXMuX3RvRmllbGRDb25maWcoPEpTT05TY2hlbWE3PnNjaGVtYS5wcm9wZXJ0aWVzW3Byb3BlcnR5XSwgeyAuLi5vcHRpb25zLCBrZXk6IHByb3BlcnR5IH0pO1xuICAgICAgICAgIGZpZWxkLmZpZWxkR3JvdXAucHVzaChmKTtcbiAgICAgICAgICBpZiAoKEFycmF5LmlzQXJyYXkoc2NoZW1hLnJlcXVpcmVkKSAmJiBzY2hlbWEucmVxdWlyZWQuaW5kZXhPZihwcm9wZXJ0eSkgIT09IC0xKSB8fCBwcm9wRGVwc1twcm9wZXJ0eV0pIHtcbiAgICAgICAgICAgIGYuZXhwcmVzc2lvbnMgPSB7XG4gICAgICAgICAgICAgIC4uLihmLmV4cHJlc3Npb25zIHx8IHt9KSxcbiAgICAgICAgICAgICAgJ3Byb3BzLnJlcXVpcmVkJzogKGYpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgcGFyZW50ID0gZi5wYXJlbnQ7XG4gICAgICAgICAgICAgICAgY29uc3QgbW9kZWwgPSBmLmZpZWxkR3JvdXAgJiYgZi5rZXkgIT0gbnVsbCA/IHBhcmVudC5tb2RlbCA6IGYubW9kZWw7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHBhcmVudC5rZXkgPT0gbnVsbCAmJiBwYXJlbnQucGFyZW50KSB7XG4gICAgICAgICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVpcmVkID0gcGFyZW50ICYmIHBhcmVudC5wcm9wcyA/IHBhcmVudC5wcm9wcy5yZXF1aXJlZCA6IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmICghbW9kZWwgJiYgIXJlcXVpcmVkKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hLnJlcXVpcmVkKSAmJiBzY2hlbWEucmVxdWlyZWQuaW5kZXhPZihwcm9wZXJ0eSkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcERlcHNbcHJvcGVydHldICYmIGYubW9kZWwgJiYgcHJvcERlcHNbcHJvcGVydHldLnNvbWUoKGspID0+ICFpc0VtcHR5KGYubW9kZWxba10pKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNjaGVtYURlcHNbcHJvcGVydHldKSB7XG4gICAgICAgICAgICBjb25zdCBnZXRDb25zdFZhbHVlID0gKHM6IEpTT05TY2hlbWE3KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBzLmhhc093blByb3BlcnR5KCdjb25zdCcpID8gcy5jb25zdCA6IHMuZW51bVswXTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IG9uZU9mU2NoZW1hID0gc2NoZW1hRGVwc1twcm9wZXJ0eV0ub25lT2YgYXMgSlNPTlNjaGVtYTdbXTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgb25lT2ZTY2hlbWEgJiZcbiAgICAgICAgICAgICAgb25lT2ZTY2hlbWEuZXZlcnkoKG8pID0+IG8ucHJvcGVydGllcyAmJiBvLnByb3BlcnRpZXNbcHJvcGVydHldICYmIGlzQ29uc3Qoby5wcm9wZXJ0aWVzW3Byb3BlcnR5XSkpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgb25lT2ZTY2hlbWEuZm9yRWFjaCgob25lT2ZTY2hlbWFJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBbcHJvcGVydHldOiBjb25zdFNjaGVtYSwgLi4ucHJvcGVydGllcyB9ID0gb25lT2ZTY2hlbWFJdGVtLnByb3BlcnRpZXM7XG4gICAgICAgICAgICAgICAgZmllbGQuZmllbGRHcm91cC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgIC4uLnRoaXMuX3RvRmllbGRDb25maWcoeyAuLi5vbmVPZlNjaGVtYUl0ZW0sIHByb3BlcnRpZXMgfSwgeyAuLi5vcHRpb25zLCByZXNldE9uSGlkZTogdHJ1ZSB9KSxcbiAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb25zOiB7XG4gICAgICAgICAgICAgICAgICAgIGhpZGU6IChtOiBhbnkpID0+ICFtIHx8IGdldENvbnN0VmFsdWUoY29uc3RTY2hlbWEgYXMgSlNPTlNjaGVtYTcpICE9PSBtW3Byb3BlcnR5XSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZmllbGQuZmllbGRHcm91cC5wdXNoKHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLl90b0ZpZWxkQ29uZmlnKHNjaGVtYURlcHNbcHJvcGVydHldLCBvcHRpb25zKSxcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uczoge1xuICAgICAgICAgICAgICAgICAgaGlkZTogKG06IGFueSkgPT4gIW0gfHwgaXNFbXB0eShtW3Byb3BlcnR5XSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoc2NoZW1hLm9uZU9mKSB7XG4gICAgICAgICAgZmllbGQuZmllbGRHcm91cC5wdXNoKFxuICAgICAgICAgICAgdGhpcy5yZXNvbHZlTXVsdGlTY2hlbWEoJ29uZU9mJywgPEpTT05TY2hlbWE3W10+c2NoZW1hLm9uZU9mLCB7IC4uLm9wdGlvbnMsIHNoYXJlRm9ybUNvbnRyb2w6IGZhbHNlIH0pLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2NoZW1hLmFueU9mKSB7XG4gICAgICAgICAgZmllbGQuZmllbGRHcm91cC5wdXNoKHRoaXMucmVzb2x2ZU11bHRpU2NoZW1hKCdhbnlPZicsIDxKU09OU2NoZW1hN1tdPnNjaGVtYS5hbnlPZiwgb3B0aW9ucykpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnYXJyYXknOiB7XG4gICAgICAgIGlmIChzY2hlbWEuaGFzT3duUHJvcGVydHkoJ21pbkl0ZW1zJykpIHtcbiAgICAgICAgICBmaWVsZC5wcm9wcy5taW5JdGVtcyA9IHNjaGVtYS5taW5JdGVtcztcbiAgICAgICAgICB0aGlzLmFkZFZhbGlkYXRvcihcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgJ21pbkl0ZW1zJyxcbiAgICAgICAgICAgICh7IHZhbHVlIH06IEFic3RyYWN0Q29udHJvbCkgPT4gaXNFbXB0eSh2YWx1ZSkgfHwgdmFsdWUubGVuZ3RoID49IHNjaGVtYS5taW5JdGVtcyxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKHNjaGVtYS5taW5JdGVtcyA+IDAgJiYgZmllbGQuZGVmYXVsdFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGZpZWxkLmRlZmF1bHRWYWx1ZSA9IEFycmF5LmZyb20obmV3IEFycmF5KHNjaGVtYS5taW5JdGVtcykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdtYXhJdGVtcycpKSB7XG4gICAgICAgICAgZmllbGQucHJvcHMubWF4SXRlbXMgPSBzY2hlbWEubWF4SXRlbXM7XG4gICAgICAgICAgdGhpcy5hZGRWYWxpZGF0b3IoXG4gICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICdtYXhJdGVtcycsXG4gICAgICAgICAgICAoeyB2YWx1ZSB9OiBBYnN0cmFjdENvbnRyb2wpID0+IGlzRW1wdHkodmFsdWUpIHx8IHZhbHVlLmxlbmd0aCA8PSBzY2hlbWEubWF4SXRlbXMsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCd1bmlxdWVJdGVtcycpKSB7XG4gICAgICAgICAgZmllbGQucHJvcHMudW5pcXVlSXRlbXMgPSBzY2hlbWEudW5pcXVlSXRlbXM7XG4gICAgICAgICAgdGhpcy5hZGRWYWxpZGF0b3IoZmllbGQsICd1bmlxdWVJdGVtcycsICh7IHZhbHVlIH06IEFic3RyYWN0Q29udHJvbCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzRW1wdHkodmFsdWUpIHx8ICFzY2hlbWEudW5pcXVlSXRlbXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHVuaXF1ZUl0ZW1zID0gQXJyYXkuZnJvbShuZXcgU2V0KHZhbHVlLm1hcCgodjogYW55KSA9PiBKU09OLnN0cmluZ2lmeSh2KSkpKTtcblxuICAgICAgICAgICAgcmV0dXJuIHVuaXF1ZUl0ZW1zLmxlbmd0aCA9PT0gdmFsdWUubGVuZ3RoO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcmVzb2x2ZSBpdGVtcyBzY2hlbWEgbmVlZGVkIGZvciBpc0VudW0gY2hlY2tcbiAgICAgICAgaWYgKHNjaGVtYS5pdGVtcyAmJiAhQXJyYXkuaXNBcnJheShzY2hlbWEuaXRlbXMpKSB7XG4gICAgICAgICAgc2NoZW1hLml0ZW1zID0gdGhpcy5yZXNvbHZlU2NoZW1hKDxKU09OU2NoZW1hNz5zY2hlbWEuaXRlbXMsIG9wdGlvbnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVE9ETzogcmVtb3ZlIGlzRW51bSBjaGVjayBvbmNlIGFkZGluZyBhbiBvcHRpb24gdG8gc2tpcCBleHRlbnNpb25cbiAgICAgICAgaWYgKCF0aGlzLmlzRW51bShzY2hlbWEpKSB7XG4gICAgICAgICAgZmllbGQuZmllbGRBcnJheSA9IChyb290OiBGb3JtbHlGaWVsZENvbmZpZykgPT4ge1xuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHNjaGVtYS5pdGVtcykpIHtcbiAgICAgICAgICAgICAgLy8gV2hlbiBpdGVtcyBpcyBhIHNpbmdsZSBzY2hlbWEsIHRoZSBhZGRpdGlvbmFsSXRlbXMga2V5d29yZCBpcyBtZWFuaW5nbGVzcywgYW5kIGl0IHNob3VsZCBub3QgYmUgdXNlZC5cbiAgICAgICAgICAgICAgY29uc3QgZiA9IHNjaGVtYS5pdGVtcyA/IHRoaXMuX3RvRmllbGRDb25maWcoPEpTT05TY2hlbWE3PnNjaGVtYS5pdGVtcywgb3B0aW9ucykgOiB7fTtcbiAgICAgICAgICAgICAgaWYgKGYucHJvcHMpIHtcbiAgICAgICAgICAgICAgICBmLnByb3BzLnJlcXVpcmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBmO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBsZW5ndGggPSByb290LmZpZWxkR3JvdXAgPyByb290LmZpZWxkR3JvdXAubGVuZ3RoIDogMDtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1TY2hlbWEgPSBzY2hlbWEuaXRlbXNbbGVuZ3RoXSA/IHNjaGVtYS5pdGVtc1tsZW5ndGhdIDogc2NoZW1hLmFkZGl0aW9uYWxJdGVtcztcbiAgICAgICAgICAgIGNvbnN0IGYgPSBpdGVtU2NoZW1hID8gdGhpcy5fdG9GaWVsZENvbmZpZyg8SlNPTlNjaGVtYTc+aXRlbVNjaGVtYSwgb3B0aW9ucykgOiB7fTtcbiAgICAgICAgICAgIGlmIChmLnByb3BzKSB7XG4gICAgICAgICAgICAgIGYucHJvcHMucmVxdWlyZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNjaGVtYS5pdGVtc1tsZW5ndGhdKSB7XG4gICAgICAgICAgICAgIGYucHJvcHMucmVtb3ZhYmxlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBmO1xuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdjb25zdCcpKSB7XG4gICAgICBmaWVsZC5wcm9wcy5jb25zdCA9IHNjaGVtYS5jb25zdDtcbiAgICAgIHRoaXMuYWRkVmFsaWRhdG9yKGZpZWxkLCAnY29uc3QnLCAoeyB2YWx1ZSB9OiBBYnN0cmFjdENvbnRyb2wpID0+IHZhbHVlID09PSBzY2hlbWEuY29uc3QpO1xuICAgICAgaWYgKCFmaWVsZC50eXBlKSB7XG4gICAgICAgIGZpZWxkLmRlZmF1bHRWYWx1ZSA9IHNjaGVtYS5jb25zdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0VudW0oc2NoZW1hKSkge1xuICAgICAgZmllbGQucHJvcHMubXVsdGlwbGUgPSBmaWVsZC50eXBlID09PSAnYXJyYXknO1xuICAgICAgZmllbGQudHlwZSA9ICdlbnVtJztcbiAgICAgIGZpZWxkLnByb3BzLm9wdGlvbnMgPSB0aGlzLnRvRW51bU9wdGlvbnMoc2NoZW1hKTtcbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hLm9uZU9mICYmICFmaWVsZC50eXBlKSB7XG4gICAgICBkZWxldGUgZmllbGQua2V5O1xuICAgICAgZmllbGQuZmllbGRHcm91cCA9IFtcbiAgICAgICAgdGhpcy5yZXNvbHZlTXVsdGlTY2hlbWEoJ29uZU9mJywgPEpTT05TY2hlbWE3W10+c2NoZW1hLm9uZU9mLCB7IC4uLm9wdGlvbnMsIGtleSwgc2hhcmVGb3JtQ29udHJvbDogZmFsc2UgfSksXG4gICAgICBdO1xuICAgIH1cblxuICAgIGlmIChzY2hlbWEub25lT2YgJiYgIWZpZWxkLnR5cGUpIHtcbiAgICAgIGRlbGV0ZSBmaWVsZC5rZXk7XG4gICAgICBmaWVsZC5maWVsZEdyb3VwID0gW1xuICAgICAgICB0aGlzLnJlc29sdmVNdWx0aVNjaGVtYSgnb25lT2YnLCA8SlNPTlNjaGVtYTdbXT5zY2hlbWEub25lT2YsIHsgLi4ub3B0aW9ucywga2V5LCBzaGFyZUZvcm1Db250cm9sOiBmYWxzZSB9KSxcbiAgICAgIF07XG4gICAgfVxuXG4gICAgLy8gbWFwIGluIHBvc3NpYmxlIGZvcm1seUNvbmZpZyBvcHRpb25zIGZyb20gdGhlIHdpZGdldCBwcm9wZXJ0eVxuICAgIGlmIChzY2hlbWEud2lkZ2V0Py5mb3JtbHlDb25maWcpIHtcbiAgICAgIGZpZWxkID0gdGhpcy5tZXJnZUZpZWxkcyhmaWVsZCwgc2NoZW1hLndpZGdldC5mb3JtbHlDb25maWcpO1xuICAgIH1cblxuICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9ucyA9IGZpZWxkLnByb3BzO1xuICAgIC8vIGlmIHRoZXJlIGlzIGEgbWFwIGZ1bmN0aW9uIHBhc3NlZCBpbiwgdXNlIGl0IHRvIGFsbG93IHRoZSB1c2VyIHRvXG4gICAgLy8gZnVydGhlciBjdXN0b21pemUgaG93IGZpZWxkcyBhcmUgYmVpbmcgbWFwcGVkXG4gICAgcmV0dXJuIG9wdGlvbnMubWFwID8gb3B0aW9ucy5tYXAoZmllbGQsIHNjaGVtYSkgOiBmaWVsZDtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVNjaGVtYShzY2hlbWE6IEpTT05TY2hlbWE3LCBvcHRpb25zOiBJT3B0aW9ucyk6IEpTT05TY2hlbWE3IHtcbiAgICBpZiAoc2NoZW1hICYmIHNjaGVtYS4kcmVmKSB7XG4gICAgICBzY2hlbWEgPSB0aGlzLnJlc29sdmVEZWZpbml0aW9uKHNjaGVtYSwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgaWYgKHNjaGVtYSAmJiBzY2hlbWEuYWxsT2YpIHtcbiAgICAgIHNjaGVtYSA9IHRoaXMucmVzb2x2ZUFsbE9mKHNjaGVtYSwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNjaGVtYTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZUFsbE9mKHsgYWxsT2YsIC4uLmJhc2VTY2hlbWEgfTogRm9ybWx5SlNPTlNjaGVtYTcsIG9wdGlvbnM6IElPcHRpb25zKSB7XG4gICAgaWYgKCFhbGxPZi5sZW5ndGgpIHtcbiAgICAgIHRocm93IEVycm9yKGBhbGxPZiBhcnJheSBjYW4gbm90IGJlIGVtcHR5ICR7YWxsT2Z9LmApO1xuICAgIH1cblxuICAgIHJldHVybiAoYWxsT2YgYXMgRm9ybWx5SlNPTlNjaGVtYTdbXSkucmVkdWNlKChiYXNlOiBGb3JtbHlKU09OU2NoZW1hNywgc2NoZW1hOiBGb3JtbHlKU09OU2NoZW1hNykgPT4ge1xuICAgICAgc2NoZW1hID0gdGhpcy5yZXNvbHZlU2NoZW1hKHNjaGVtYSwgb3B0aW9ucyk7XG4gICAgICBpZiAoYmFzZS5yZXF1aXJlZCAmJiBzY2hlbWEucmVxdWlyZWQpIHtcbiAgICAgICAgYmFzZS5yZXF1aXJlZCA9IFsuLi5iYXNlLnJlcXVpcmVkLCAuLi5zY2hlbWEucmVxdWlyZWRdO1xuICAgICAgfVxuXG4gICAgICBpZiAoc2NoZW1hLnVuaXF1ZUl0ZW1zKSB7XG4gICAgICAgIGJhc2UudW5pcXVlSXRlbXMgPSBzY2hlbWEudW5pcXVlSXRlbXM7XG4gICAgICB9XG5cbiAgICAgIC8vIHJlc29sdmUgdG8gbWluIHZhbHVlXG4gICAgICAoXG4gICAgICAgIFsnbWF4TGVuZ3RoJywgJ21heGltdW0nLCAnZXhjbHVzaXZlTWF4aW11bScsICdtYXhJdGVtcycsICdtYXhQcm9wZXJ0aWVzJ10gYXMgKGtleW9mIEZvcm1seUpTT05TY2hlbWE3KVtdXG4gICAgICApLmZvckVhY2goKHByb3ApID0+IHtcbiAgICAgICAgaWYgKCFpc0VtcHR5KGJhc2VbcHJvcF0pICYmICFpc0VtcHR5KHNjaGVtYVtwcm9wXSkpIHtcbiAgICAgICAgICAoYmFzZSBhcyBhbnkpW3Byb3BdID0gYmFzZVtwcm9wXSA8IHNjaGVtYVtwcm9wXSA/IGJhc2VbcHJvcF0gOiBzY2hlbWFbcHJvcF07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyByZXNvbHZlIHRvIG1heCB2YWx1ZVxuICAgICAgKFxuICAgICAgICBbJ21pbkxlbmd0aCcsICdtaW5pbXVtJywgJ2V4Y2x1c2l2ZU1pbmltdW0nLCAnbWluSXRlbXMnLCAnbWluUHJvcGVydGllcyddIGFzIChrZXlvZiBGb3JtbHlKU09OU2NoZW1hNylbXVxuICAgICAgKS5mb3JFYWNoKChwcm9wKSA9PiB7XG4gICAgICAgIGlmICghaXNFbXB0eShiYXNlW3Byb3BdKSAmJiAhaXNFbXB0eShzY2hlbWFbcHJvcF0pKSB7XG4gICAgICAgICAgKGJhc2UgYXMgYW55KVtwcm9wXSA9IGJhc2VbcHJvcF0gPiBzY2hlbWFbcHJvcF0gPyBiYXNlW3Byb3BdIDogc2NoZW1hW3Byb3BdO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHJldmVyc2VEZWVwTWVyZ2UoYmFzZSwgc2NoZW1hKTtcbiAgICB9LCBiYXNlU2NoZW1hKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZU11bHRpU2NoZW1hKG1vZGU6ICdvbmVPZicgfCAnYW55T2YnLCBzY2hlbWFzOiBKU09OU2NoZW1hN1tdLCBvcHRpb25zOiBJT3B0aW9ucyk6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ211bHRpc2NoZW1hJyxcbiAgICAgIGZpZWxkR3JvdXA6IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdlbnVtJyxcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IC0xLFxuICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBtdWx0aXBsZTogbW9kZSA9PT0gJ2FueU9mJyxcbiAgICAgICAgICAgIG9wdGlvbnM6IHNjaGVtYXMubWFwKChzLCBpKSA9PiAoeyBsYWJlbDogcy50aXRsZSwgdmFsdWU6IGksIGRpc2FibGVkOiBzLnJlYWRPbmx5IH0pKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGhvb2tzOiB7XG4gICAgICAgICAgICBvbkluaXQ6IChmKSA9PiBmLmZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHRhcCgoKSA9PiBmLm9wdGlvbnMuZGV0ZWN0Q2hhbmdlcyhmLnBhcmVudCkpKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgZmllbGRHcm91cDogc2NoZW1hcy5tYXAoKHMsIGkpID0+ICh7XG4gICAgICAgICAgICAuLi50aGlzLl90b0ZpZWxkQ29uZmlnKHMsIHsgLi4ub3B0aW9ucywgcmVzZXRPbkhpZGU6IHRydWUgfSksXG4gICAgICAgICAgICBleHByZXNzaW9uczoge1xuICAgICAgICAgICAgICBoaWRlOiAoZiwgZm9yY2VVcGRhdGU/OiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IGYucGFyZW50LnBhcmVudC5maWVsZEdyb3VwWzBdLmZvcm1Db250cm9sO1xuICAgICAgICAgICAgICAgIGlmIChjb250cm9sLnZhbHVlID09PSAtMSB8fCBmb3JjZVVwZGF0ZSkge1xuICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gZi5wYXJlbnQuZmllbGRHcm91cFxuICAgICAgICAgICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAgICAgICAgIChmLCBpKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgW2YsIGksIHRoaXMuaXNGaWVsZFZhbGlkKGYsIGksIHNjaGVtYXMsIG9wdGlvbnMpXSBhcyBbRm9ybWx5RmllbGRDb25maWcsIG51bWJlciwgYm9vbGVhbl0sXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgLnNvcnQoKFtmMSwgLCBmMVZhbGlkXSwgW2YyLCAsIGYyVmFsaWRdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGYxVmFsaWQgIT09IGYyVmFsaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmMlZhbGlkID8gMSA6IC0xO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoZWRGaWVsZHMxID0gdG90YWxNYXRjaGVkRmllbGRzKGYxKTtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGVkRmllbGRzMiA9IHRvdGFsTWF0Y2hlZEZpZWxkcyhmMik7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoZWRGaWVsZHMxID09PSBtYXRjaGVkRmllbGRzMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYxLnByb3BzLmRpc2FibGVkID09PSBmMi5wcm9wcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoZWRGaWVsZHMyID4gbWF0Y2hlZEZpZWxkczEgPyAxIDogLTE7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoZWRGaWVsZHMyID4gbWF0Y2hlZEZpZWxkczEgPyAxIDogLTE7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKFssIGldKSA9PiBpKTtcblxuICAgICAgICAgICAgICAgICAgaWYgKG1vZGUgPT09ICdhbnlPZicpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVmaW5lZFZhbHVlID0gdmFsdWUuZmlsdGVyKChpKSA9PiB0b3RhbE1hdGNoZWRGaWVsZHMoZi5wYXJlbnQuZmllbGRHcm91cFtpXSkpO1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGRlZmluZWRWYWx1ZS5sZW5ndGggPiAwID8gZGVmaW5lZFZhbHVlIDogW3ZhbHVlWzBdIHx8IDBdO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmxlbmd0aCA+IDAgPyB2YWx1ZSA6IFswXTtcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUobW9kZSA9PT0gJ2FueU9mJyA/IHZhbHVlIDogdmFsdWVbMF0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGNvbnRyb2wudmFsdWUpID8gY29udHJvbC52YWx1ZS5pbmRleE9mKGkpID09PSAtMSA6IGNvbnRyb2wudmFsdWUgIT09IGk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZURlZmluaXRpb24oc2NoZW1hOiBGb3JtbHlKU09OU2NoZW1hNywgb3B0aW9uczogSU9wdGlvbnMpOiBGb3JtbHlKU09OU2NoZW1hNyB7XG4gICAgY29uc3QgW3VyaSwgcG9pbnRlcl0gPSBzY2hlbWEuJHJlZi5zcGxpdCgnIy8nKTtcbiAgICBpZiAodXJpKSB7XG4gICAgICB0aHJvdyBFcnJvcihgUmVtb3RlIHNjaGVtYXMgZm9yICR7c2NoZW1hLiRyZWZ9IG5vdCBzdXBwb3J0ZWQgeWV0LmApO1xuICAgIH1cblxuICAgIGNvbnN0IGRlZmluaXRpb24gPSAhcG9pbnRlclxuICAgICAgPyBudWxsXG4gICAgICA6IHBvaW50ZXJcbiAgICAgICAgICAuc3BsaXQoJy8nKVxuICAgICAgICAgIC5yZWR1Y2UoKGRlZiwgcGF0aCkgPT4gKGRlZj8uaGFzT3duUHJvcGVydHkocGF0aCkgPyAoZGVmIGFzIGFueSlbcGF0aF0gOiBudWxsKSwgb3B0aW9ucy5zY2hlbWEpO1xuXG4gICAgaWYgKCFkZWZpbml0aW9uKSB7XG4gICAgICB0aHJvdyBFcnJvcihgQ2Fubm90IGZpbmQgYSBkZWZpbml0aW9uIGZvciAke3NjaGVtYS4kcmVmfS5gKTtcbiAgICB9XG5cbiAgICBpZiAoZGVmaW5pdGlvbi4kcmVmKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXNvbHZlRGVmaW5pdGlvbihkZWZpbml0aW9uLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uZGVmaW5pdGlvbixcbiAgICAgIC4uLlsndGl0bGUnLCAnZGVzY3JpcHRpb24nLCAnZGVmYXVsdCcsICd3aWRnZXQnXS5yZWR1Y2UoKGFubm90YXRpb24sIHApID0+IHtcbiAgICAgICAgaWYgKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eShwKSkge1xuICAgICAgICAgIGFubm90YXRpb25bcF0gPSAoc2NoZW1hIGFzIGFueSlbcF07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYW5ub3RhdGlvbjtcbiAgICAgIH0sIHt9IGFzIGFueSksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZURlcGVuZGVuY2llcyhzY2hlbWE6IEpTT05TY2hlbWE3KSB7XG4gICAgY29uc3QgcHJvcERlcHM6IHsgW2lkOiBzdHJpbmddOiBzdHJpbmdbXSB9ID0ge307XG4gICAgY29uc3Qgc2NoZW1hRGVwczogeyBbaWQ6IHN0cmluZ106IEpTT05TY2hlbWE3IH0gPSB7fTtcblxuICAgIE9iamVjdC5rZXlzKHNjaGVtYS5kZXBlbmRlbmNpZXMgfHwge30pLmZvckVhY2goKHByb3ApID0+IHtcbiAgICAgIGNvbnN0IGRlcGVuZGVuY3kgPSBzY2hlbWEuZGVwZW5kZW5jaWVzW3Byb3BdIGFzIEpTT05TY2hlbWE3O1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGVwZW5kZW5jeSkpIHtcbiAgICAgICAgLy8gUHJvcGVydHkgZGVwZW5kZW5jaWVzXG4gICAgICAgIGRlcGVuZGVuY3kuZm9yRWFjaCgoZGVwKSA9PiB7XG4gICAgICAgICAgaWYgKCFwcm9wRGVwc1tkZXBdKSB7XG4gICAgICAgICAgICBwcm9wRGVwc1tkZXBdID0gW3Byb3BdO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcm9wRGVwc1tkZXBdLnB1c2gocHJvcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHNjaGVtYSBkZXBlbmRlbmNpZXNcbiAgICAgICAgc2NoZW1hRGVwc1twcm9wXSA9IGRlcGVuZGVuY3k7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4geyBwcm9wRGVwcywgc2NoZW1hRGVwcyB9O1xuICB9XG5cbiAgcHJpdmF0ZSBndWVzc1NjaGVtYVR5cGUoc2NoZW1hOiBKU09OU2NoZW1hNykge1xuICAgIGNvbnN0IHR5cGUgPSBzY2hlbWE/LnR5cGU7XG4gICAgaWYgKCF0eXBlICYmIHNjaGVtYT8ucHJvcGVydGllcykge1xuICAgICAgcmV0dXJuIFsnb2JqZWN0J107XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodHlwZSkpIHtcbiAgICAgIGlmICh0eXBlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gdHlwZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGUubGVuZ3RoID09PSAyICYmIHR5cGUuaW5kZXhPZignbnVsbCcpICE9PSAtMSkge1xuICAgICAgICByZXR1cm4gdHlwZS5zb3J0KCh0MSkgPT4gKHQxID09ICdudWxsJyA/IDEgOiAtMSkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHlwZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZSA/IFt0eXBlXSA6IFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRWYWxpZGF0b3IoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnLCBuYW1lOiBzdHJpbmcsIHZhbGlkYXRvcjogRm9ybWx5RmllbGRDb25maWdbJ3ZhbGlkYXRvcnMnXSkge1xuICAgIGZpZWxkLnZhbGlkYXRvcnMgPSBmaWVsZC52YWxpZGF0b3JzIHx8IHt9O1xuICAgIGZpZWxkLnZhbGlkYXRvcnNbbmFtZV0gPSB2YWxpZGF0b3I7XG4gIH1cblxuICBwcml2YXRlIGlzRW51bShzY2hlbWE6IEpTT05TY2hlbWE3KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgICEhc2NoZW1hLmVudW0gfHxcbiAgICAgIChzY2hlbWEuYW55T2YgJiYgKHNjaGVtYS5hbnlPZiBhcyBKU09OU2NoZW1hN1tdKS5ldmVyeShpc0NvbnN0KSkgfHxcbiAgICAgIChzY2hlbWEub25lT2YgJiYgKHNjaGVtYS5vbmVPZiBhcyBKU09OU2NoZW1hN1tdKS5ldmVyeShpc0NvbnN0KSkgfHxcbiAgICAgIChzY2hlbWEudW5pcXVlSXRlbXMgJiYgc2NoZW1hLml0ZW1zICYmICFBcnJheS5pc0FycmF5KHNjaGVtYS5pdGVtcykgJiYgdGhpcy5pc0VudW0oPEpTT05TY2hlbWE3PnNjaGVtYS5pdGVtcykpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9FbnVtT3B0aW9ucyhzY2hlbWE6IEpTT05TY2hlbWE3KTogeyB2YWx1ZTogYW55OyBsYWJlbDogYW55IH1bXSB7XG4gICAgaWYgKHNjaGVtYS5lbnVtKSB7XG4gICAgICByZXR1cm4gc2NoZW1hLmVudW0ubWFwKCh2YWx1ZSkgPT4gKHsgdmFsdWUsIGxhYmVsOiB2YWx1ZSB9KSk7XG4gICAgfVxuXG4gICAgY29uc3QgdG9FbnVtID0gKHM6IEpTT05TY2hlbWE3KSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHMuaGFzT3duUHJvcGVydHkoJ2NvbnN0JykgPyBzLmNvbnN0IDogcy5lbnVtWzBdO1xuICAgICAgY29uc3Qgb3B0aW9uOiBhbnkgPSB7IHZhbHVlLCBsYWJlbDogcy50aXRsZSB8fCB2YWx1ZSB9O1xuICAgICAgaWYgKHMucmVhZE9ubHkpIHtcbiAgICAgICAgb3B0aW9uLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICB9O1xuXG4gICAgaWYgKHNjaGVtYS5hbnlPZikge1xuICAgICAgcmV0dXJuIChzY2hlbWEuYW55T2YgYXMgSlNPTlNjaGVtYTdbXSkubWFwKHRvRW51bSk7XG4gICAgfVxuXG4gICAgaWYgKHNjaGVtYS5vbmVPZikge1xuICAgICAgcmV0dXJuIChzY2hlbWEub25lT2YgYXMgSlNPTlNjaGVtYTdbXSkubWFwKHRvRW51bSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudG9FbnVtT3B0aW9ucyg8SlNPTlNjaGVtYTc+c2NoZW1hLml0ZW1zKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNGaWVsZFZhbGlkKFxuICAgIHJvb3Q6IEZvcm1seUZpZWxkQ29uZmlnICYgeyBfc2NoZW1hc0ZpZWxkcz86IHsgW2tleTogbnVtYmVyXTogRm9ybWx5RmllbGRDb25maWcgfSB9LFxuICAgIGk6IG51bWJlcixcbiAgICBzY2hlbWFzOiBKU09OU2NoZW1hN1tdLFxuICAgIG9wdGlvbnM6IElPcHRpb25zLFxuICApOiBib29sZWFuIHtcbiAgICBpZiAoIXJvb3QuX3NjaGVtYXNGaWVsZHMpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyb290LCAnX3NjaGVtYXNGaWVsZHMnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0pO1xuICAgICAgcm9vdC5fc2NoZW1hc0ZpZWxkcyA9IHt9O1xuICAgIH1cblxuICAgIGxldCBmaWVsZCA9IHJvb3QuX3NjaGVtYXNGaWVsZHNbaV07XG4gICAgY29uc3QgbW9kZWwgPSByb290Lm1vZGVsID8gY2xvbmUocm9vdC5tb2RlbCkgOiByb290LmZpZWxkQXJyYXkgPyBbXSA6IHt9O1xuICAgIGlmICghZmllbGQpIHtcbiAgICAgIGZpZWxkID0gcm9vdC5fc2NoZW1hc0ZpZWxkc1tpXSA9IHJvb3Qub3B0aW9ucy5idWlsZCh7XG4gICAgICAgIGZvcm06IEFycmF5LmlzQXJyYXkobW9kZWwpID8gbmV3IEZvcm1BcnJheShbXSkgOiBuZXcgRm9ybUdyb3VwKHt9KSxcbiAgICAgICAgZmllbGRHcm91cDogW1xuICAgICAgICAgIHRoaXMuX3RvRmllbGRDb25maWcoc2NoZW1hc1tpXSwge1xuICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgIHJlc2V0T25IaWRlOiB0cnVlLFxuICAgICAgICAgICAgaWdub3JlRGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgICAgIG1hcDogbnVsbCxcbiAgICAgICAgICAgIHN0cmljdDogdHJ1ZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgbW9kZWwsXG4gICAgICAgIG9wdGlvbnM6IHt9LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIChmaWVsZCBhcyBhbnkpLm1vZGVsID0gbW9kZWw7XG4gICAgICByb290Lm9wdGlvbnMuYnVpbGQoZmllbGQpO1xuICAgIH1cblxuICAgIHJldHVybiBmaWVsZC5mb3JtLnZhbGlkO1xuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZUZpZWxkcyhmMTogYW55LCBmMjogYW55KSB7XG4gICAgZm9yIChsZXQgcHJvcCBpbiBmMikge1xuICAgICAgY29uc3QgZjFQcm9wID0gcHJvcCA9PT0gJ3RlbXBsYXRlT3B0aW9ucycgPyAncHJvcHMnIDogcHJvcDtcbiAgICAgIGlmIChpc09iamVjdChmMVtmMVByb3BdKSAmJiBpc09iamVjdChmMltwcm9wXSkpIHtcbiAgICAgICAgZjFbZjFQcm9wXSA9IHRoaXMubWVyZ2VGaWVsZHMoZjFbZjFQcm9wXSwgZjJbcHJvcF0pO1xuICAgICAgfSBlbHNlIGlmIChmMltwcm9wXSAhPSBudWxsKSB7XG4gICAgICAgIGYxW2YxUHJvcF0gPSBmMltwcm9wXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZjE7XG4gIH1cbn1cbiJdfQ==
|
|
564
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWpzb24tc2NoZW1hLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29yZS9qc29uLXNjaGVtYS9zcmMvZm9ybWx5LWpzb24tc2NoZW1hLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQW1CLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQ0wsaUJBQWlCLElBQUksZ0JBQWdCLEVBQ3JDLGNBQWMsSUFBSSxhQUFhLEVBQy9CLE1BQU0sSUFBSSxLQUFLLEVBQ2YsT0FBTyxJQUFJLE1BQU0sR0FDbEIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBZXJDLHVDQUF1QztBQUN2QyxTQUFTLGFBQWEsQ0FBQyxDQUFTO0lBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDaEIsT0FBTyxDQUFDLENBQUM7S0FDVjtJQUVELElBQUksQ0FBQyxHQUFHLENBQUMsRUFDUCxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ1IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ2xDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDUixDQUFDLEVBQUUsQ0FBQztLQUNMO0lBRUQsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBRUQsU0FBUyxPQUFPLENBQUMsQ0FBTTtJQUNyQixPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQztBQUMvQixDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsQ0FBTTtJQUN0QixPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksT0FBTyxDQUFDLEtB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QUFJLElBQUksSUFBSSxFQUFFLEVBQUU7WUFDbkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxLQUFLLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUMzRCxJQUFJLFFBQVEsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7Z0JBQzlDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUNyRDtpQkFBTSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUU7Z0JBQzNCLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDdkI7U0FDRjtRQUVELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzs7OEdBbm5CVSxnQkFBZ0I7a0hBQWhCLGdCQUFnQixjQURILE1BQU07NEZBQ25CLGdCQUFnQjtrQkFENUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgSlNPTlNjaGVtYTcsIEpTT05TY2hlbWE3RGVmaW5pdGlvbiB9IGZyb20gJ2pzb24tc2NoZW1hJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICDJtXJldmVyc2VEZWVwTWVyZ2UgYXMgcmV2ZXJzZURlZXBNZXJnZSxcbiAgybVnZXRGaWVsZFZhbHVlIGFzIGdldEZpZWxkVmFsdWUsXG4gIMm1Y2xvbmUgYXMgY2xvbmUsXG4gIMm1aGFzS2V5IGFzIGhhc0tleSxcbn0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybWx5SnNvbnNjaGVtYU9wdGlvbnMge1xuICAvKipcbiAgICogYWxsb3dzIHRvIGludGVyY2VwdCB0aGUgbWFwcGluZywgdGFraW5nIHRoZSBhbHJlYWR5IG1hcHBlZFxuICAgKiBmb3JtbHkgZmllbGQgYW5kIHRoZSBvcmlnaW5hbCBKU09OU2NoZW1hIHNvdXJjZSBmcm9tIHdoaWNoIGl0XG4gICAqIHdhcyBtYXBwZWQuXG4gICAqL1xuICBtYXA/OiAobWFwcGVkRmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnLCBtYXBTb3VyY2U6IEpTT05TY2hlbWE3KSA9PiBGb3JtbHlGaWVsZENvbmZpZztcbn1cblxuaW50ZXJmYWNlIEZvcm1seUpTT05TY2hlbWE3IGV4dGVuZHMgSlNPTlNjaGVtYTcge1xuICB3aWRnZXQ/OiB7IGZvcm1seUNvbmZpZzogRm9ybWx5RmllbGRDb25maWcgfTtcbn1cblxuLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzI3ODY1Mjg1XG5mdW5jdGlvbiBkZWNpbWFsUGxhY2VzKGE6IG51bWJlcikge1xuICBpZiAoIWlzRmluaXRlKGEpKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBsZXQgZSA9IDEsXG4gICAgcCA9IDA7XG4gIHdoaWxlIChNYXRoLnJvdW5kKGEgKiBlKSAvIGUgIT09IGEpIHtcbiAgICBlICo9IDEwO1xuICAgIHArKztcbiAgfVxuXG4gIHJldHVybiBwO1xufVxuXG5mdW5jdGlvbiBpc0VtcHR5KHY6IGFueSkge1xuICByZXR1cm4gdiA9PT0gJycgfHwgdiA9PSBudWxsO1xufVxuXG5mdW5jdGlvbiBpc09iamVjdCh2OiBhbnkpIHtcbiAgcmV0dXJuIHYgIT0gbnVsbCAmJiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodik7XG59XG5cbmZ1bmN0aW9uIGlzSW50ZWdlcih2YWx1ZTogYW55KSB7XG4gIHJldHVybiBOdW1iZXIuaXNJbnRlZ2VyID8gTnVtYmVyLmlzSW50ZWdlcih2YWx1ZSkgOiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIE1hdGguZmxvb3IodmFsdWUpID09PSB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gaXNDb25zdChzY2hlbWE6IEpTT05TY2hlbWE3RGVmaW5pdGlvbikge1xuICByZXR1cm4gdHlwZW9mIHNjaGVtYSA9PT0gJ29iamVjdCcgJiYgKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgnY29uc3QnKSB8fCAoc2NoZW1hLmVudW0gJiYgc2NoZW1hLmVudW0ubGVuZ3RoID09PSAxKSk7XG59XG5cbmZ1bmN0aW9uIHRvdGFsTWF0Y2hlZEZpZWxkcyhmaWVsZDogRm9ybWx5RmllbGRDb25maWcpOiBudW1iZXIge1xuICBpZiAoIWZpZWxkLmZpZWxkR3JvdXApIHtcbiAgICByZXR1cm4gaGFzS2V5KGZpZWxkKSAmJiBnZXRGaWVsZFZhbHVlKGZpZWxkKSAhPT0gdW5kZWZpbmVkID8gMSA6IDA7XG4gIH1cblxuICBjb25zdCB0b3RhbCA9IGZpZWxkLmZpZWxkR3JvdXAucmVkdWNlKChzLCBmKSA9PiB0b3RhbE1hdGNoZWRGaWVsZHMoZikgKyBzLCAwKTtcbiAgaWYgKHRvdGFsID09PSAwICYmIGhhc0tleShmaWVsZCkpIHtcbiAgICBjb25zdCB2YWx1ZSA9IGdldEZpZWxkVmFsdWUoZmllbGQpO1xuICAgIGlmIChcbiAgICAgIHZhbHVlID09PSBudWxsIHx8XG4gICAgICAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiAoKGZpZWxkLmZpZWxkQXJyYXkgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHx8ICghZmllbGQuZmllbGRBcnJheSAmJiBpc09iamVjdCh2YWx1ZSkpKSlcbiAgICApIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0b3RhbDtcbn1cblxuaW50ZXJmYWNlIElPcHRpb25zIGV4dGVuZHMgRm9ybWx5SnNvbnNjaGVtYU9wdGlvbnMge1xuICBzY2hlbWE6IEZvcm1seUpTT05TY2hlbWE3O1xuICByZXNldE9uSGlkZT86IGJvb2xlYW47XG4gIHNoYXJlRm9ybUNvbnRyb2w/OiBib29sZWFuO1xuICBpZ25vcmVEZWZhdWx0PzogYm9vbGVhbjtcbiAgc3RyaWN0PzogYm9vbGVhbjtcbiAgcmVhZE9ubHk/OiBib29sZWFuO1xuICBrZXk/OiBGb3JtbHlGaWVsZENvbmZpZ1sna2V5J107XG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgRm9ybWx5SnNvbnNjaGVtYSB7XG4gIHRvRmllbGRDb25maWcoc2NoZW1hOiBKU09OU2NoZW1hNywgb3B0aW9ucz86IEZvcm1seUpzb25zY2hlbWFPcHRpb25zKTogRm9ybWx5RmllbGRDb25maWcge1xuICAgIHJldHVybiB0aGlzLl90b0ZpZWxkQ29uZmlnKHNjaGVtYSwgeyBzY2hlbWEsIC4uLihvcHRpb25zIHx8IHt9KSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3RvRmllbGRDb25maWcoc2NoZW1hOiBGb3JtbHlKU09OU2NoZW1hNywgeyBrZXksIC4uLm9wdGlvbnMgfTogSU9wdGlvbnMpOiBGb3JtbHlGaWVsZENvbmZpZyB7XG4gICAgc2NoZW1hID0gdGhpcy5yZXNvbHZlU2NoZW1hKHNjaGVtYSwgb3B0aW9ucyk7XG4gICAgY29uc3QgdHlwZXMgPSB0aGlzLmd1ZXNzU2NoZW1hVHlwZShzY2hlbWEpO1xuXG4gICAgbGV0IGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZyAmIHsgc2hhcmVGb3JtQ29udHJvbD86IGJvb2xlYW4gfSA9IHtcbiAgICAgIHR5cGU6IHR5cGVzWzBdLFxuICAgICAgZGVmYXVsdFZhbHVlOiBzY2hlbWEuZGVmYXVsdCxcbiAgICAgIHByb3BzOiB7XG4gICAgICAgIGxhYmVsOiBzY2hlbWEudGl0bGUsXG4gICAgICAgIHJlYWRvbmx5OiBzY2hlbWEucmVhZE9ubHksXG4gICAgICAgIGRlc2NyaXB0aW9uOiBzY2hlbWEuZGVzY3JpcHRpb24sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBpZiAoa2V5ICE9IG51bGwpIHtcbiAgICAgIGZpZWxkLmtleSA9IGtleTtcbiAgICB9XG5cbiAgICBpZiAoIW9wdGlvbnMuaWdub3JlRGVmYXVsdCAmJiAoc2NoZW1hLnJlYWRPbmx5IHx8IG9wdGlvbnMucmVhZE9ubHkpKSB7XG4gICAgICBmaWVsZC5wcm9wcy5kaXNhYmxlZCA9IHRydWU7XG4gICAgICBvcHRpb25zID0geyAuLi5vcHRpb25zLCByZWFkT25seTogdHJ1ZSB9O1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnJlc2V0T25IaWRlKSB7XG4gICAgICBmaWVsZC5yZXNldE9uSGlkZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGtleSAmJiBvcHRpb25zLnN0cmljdCkge1xuICAgICAgdGhpcy5hZGRWYWxpZGF0b3IoZmllbGQsICd0eXBlJywgKGM6IEFic3RyYWN0Q29udHJvbCwgZjogRm9ybWx5RmllbGRDb25maWcpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBnZXRGaWVsZFZhbHVlKGYpO1xuICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzoge1xuICAgICAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2ludGVnZXInOiB7XG4gICAgICAgICAgICAgIHJldHVybiBpc0ludGVnZXIodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzoge1xuICAgICAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ29iamVjdCc6IHtcbiAgICAgICAgICAgICAgcmV0dXJuIGlzT2JqZWN0KHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2FycmF5Jzoge1xuICAgICAgICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5zaGFyZUZvcm1Db250cm9sID09PSBmYWxzZSkge1xuICAgICAgZmllbGQuc2hhcmVGb3JtQ29udHJvbCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmlnbm9yZURlZmF1bHQpIHtcbiAgICAgIGRlbGV0ZSBmaWVsZC5kZWZhdWx0VmFsdWU7XG4gICAgfVxuXG4gICAgdGhpcy5hZGRWYWxpZGF0b3IoZmllbGQsICd0eXBlJywge1xuICAgICAgc2NoZW1hVHlwZTogdHlwZXMsXG4gICAgICBleHByZXNzaW9uOiAoeyB2YWx1ZSB9OiBBYnN0cmFjdENvbnRyb2wpID0+IHtcbiAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCAmJiB0eXBlcy5pbmRleE9mKCdudWxsJykgIT09IC0xKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKHR5cGVzWzBdKSB7XG4gICAgICAgICAgY2FzZSAnbnVsbCc6IHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgJ3N0cmluZyc6IHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlICdpbnRlZ2VyJzoge1xuICAgICAgICAgICAgcmV0dXJuIGlzSW50ZWdlcih2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgJ251bWJlcic6IHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlICdvYmplY3QnOiB7XG4gICAgICAgICAgICByZXR1cm4gaXNPYmplY3QodmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlICdhcnJheSc6IHtcbiAgICAgICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICBjYXNlICdpbnRlZ2VyJzoge1xuICAgICAgICBmaWVsZC5wYXJzZXJzID0gWyh2OiBzdHJpbmcgfCBudW1iZXIpID0+IChpc0VtcHR5KHYpID8gdW5kZWZpbmVkIDogTnVtYmVyKHYpKV07XG4gICAgICAgIGlmIChzY2hlbWEuaGFzT3duUHJvcGVydHkoJ21pbmltdW0nKSkge1xuICAgICAgICAgIGZpZWxkLnByb3BzLm1pbiA9IHNjaGVtYS5taW5pbXVtO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgnbWF4aW11bScpKSB7XG4gICAgICAgICAgZmllbGQucHJvcHMubWF4ID0gc2NoZW1hLm1heGltdW07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdleGNsdXNpdmVNaW5pbXVtJykpIHtcbiAgICAgICAgICBmaWVsZC5wcm9wcy5leGNsdXNpdmVNaW5pbXVtID0gc2NoZW1hLmV4Y2x1c2l2ZU1pbmltdW07XG4gICAgICAgICAgdGhpcy5hZGRWYWxpZGF0b3IoXG4gICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICdleGNsdXNpdmVNaW5pbXVtJyxcbiAgICAgICAgICAgICh7IHZhbHVlIH06IEFic3RyYWN0Q29udHJvbCkgPT4gaXNFbXB0eSh2YWx1ZSkgfHwgdmFsdWUgPiBzY2hlbWEuZXhjbHVzaXZlTWluaW11bSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgnZXhjbHVzaXZlTWF4aW11bScpKSB7XG4gICAgICAgICAgZmllbGQucHJvcHMuZXhjbHVzaXZlTWF4aW11bSA9IHNjaGVtYS5leGNsdXNpdmVNYXhpbXVtO1xuICAgICAgICAgIHRoaXMuYWRkVmFsaWRhdG9yKFxuICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAnZXhjbHVzaXZlTWF4aW11bScsXG4gICAgICAgICAgICAoeyB2YWx1ZSB9OiBBYnN0cmFjdENvbnRyb2wpID0+IGlzRW1wdHkodmFsdWUpIHx8IHZhbHVlIDwgc2NoZW1hLmV4Y2x1c2l2ZU1heGltdW0sXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzY2hlbWEuaGFzT3duUHJvcGVydHkoJ211bHRpcGxlT2YnKSkge1xuICAgICAgICAgIGZpZWxkLnByb3BzLnN0ZXAgPSBzY2hlbWEubXVsdGlwbGVPZjtcbiAgICAgICAgICB0aGlzLmFkZFZhbGlkYXRvcihmaWVsZCwgJ211bHRpcGxlT2YnLCAoeyB2YWx1ZSB9OiBBYnN0cmFjdENvbnRyb2wpID0+IHtcbiAgICAgICAgICAgIGlmIChpc0VtcHR5KHZhbHVlKSB8fCB0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInIHx8IHZhbHVlID09PSAwIHx8IHNjaGVtYS5tdWx0aXBsZU9mIDw9IDApIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hanYtdmFsaWRhdG9yL2Fqdi9pc3N1ZXMvNjUyI2lzc3VlLTI4MzYxMDg1OVxuICAgICAgICAgICAgY29uc3QgbXVsdGlwbGllciA9IE1hdGgucG93KDEwLCBkZWNpbWFsUGxhY2VzKHNjaGVtYS5tdWx0aXBsZU9mKSk7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCh2YWx1ZSAqIG11bHRpcGxpZXIpICUgTWF0aC5yb3VuZChzY2hlbWEubXVsdGlwbGVPZiAqIG11bHRpcGxpZXIpID09PSAwO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnc3RyaW5nJzoge1xuICAgICAgICBmaWVsZC5wYXJzZXJzID0gW1xuICAgICAgICAgICh2KSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZXMuaW5kZXhPZignbnVsbCcpICE9PSAtMSkge1xuICAgICAgICAgICAgICB2ID0gaXNFbXB0eSh2KSA/IG51bGwgOiB2O1xuICAgICAgICAgICAgfSBlbHNlIGlmICghZmllbGQucHJvcHMucmVxdWlyZWQpIHtcbiAgICAgICAgICAgICAgdiA9IHYgPT09ICcnID8gdW5kZWZpbmVkIDogdjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcblxuICAgICAgICBbJ21pbkxlbmd0aCcsICdtYXhMZW5ndGgnLCAncGF0dGVybiddLmZvckVhY2goKHByb3ApID0+IHtcbiAgICAgICAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KHByb3ApKSB7XG4gICAgICAgICAgICBmaWVsZC5wcm9wc1twcm9wXSA9IChzY2hlbWEgYXMgYW55KVtwcm9wXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ29iamVjdCc6IHtcbiAgICAgICAgaWYgKCFmaWVsZC5maWVsZEdyb3VwKSB7XG4gICAgICAgICAgZmllbGQuZmllbGRHcm91cCA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBwcm9wRGVwcywgc2NoZW1hRGVwcyB9ID0gdGhpcy5yZXNvbHZlRGVwZW5kZW5jaWVzKHNjaGVtYSk7XG4gICAgICAgIE9iamVjdC5rZXlzKHNjaGVtYS5wcm9wZXJ0aWVzIHx8IHt9KS5mb3JFYWNoKChwcm9wZXJ0eSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGYgPSB0aGlzLl90b0ZpZWxkQ29uZmlnKDxKU09OU2NoZW1hNz5zY2hlbWEucHJvcGVydGllc1twcm9wZXJ0eV0sIHsgLi4ub3B0aW9ucywga2V5OiBwcm9wZXJ0eSB9KTtcbiAgICAgICAgICBmaWVsZC5maWVsZEdyb3VwLnB1c2goZik7XG4gICAgICAgICAgaWYgKChBcnJheS5pc0FycmF5KHNjaGVtYS5yZXF1aXJlZCkgJiYgc2NoZW1hLnJlcXVpcmVkLmluZGV4T2YocHJvcGVydHkpICE9PSAtMSkgfHwgcHJvcERlcHNbcHJvcGVydHldKSB7XG4gICAgICAgICAgICBmLmV4cHJlc3Npb25zID0ge1xuICAgICAgICAgICAgICAuLi4oZi5leHByZXNzaW9ucyB8fCB7fSksXG4gICAgICAgICAgICAgICdwcm9wcy5yZXF1aXJlZCc6IChmKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHBhcmVudCA9IGYucGFyZW50O1xuICAgICAgICAgICAgICAgIGNvbnN0IG1vZGVsID0gZi5maWVsZEdyb3VwICYmIGYua2V5ICE9IG51bGwgPyBwYXJlbnQubW9kZWwgOiBmLm1vZGVsO1xuICAgICAgICAgICAgICAgIHdoaWxlIChwYXJlbnQua2V5ID09IG51bGwgJiYgcGFyZW50LnBhcmVudCkge1xuICAgICAgICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCByZXF1aXJlZCA9IHBhcmVudCAmJiBwYXJlbnQucHJvcHMgPyBwYXJlbnQucHJvcHMucmVxdWlyZWQgOiBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAoIW1vZGVsICYmICFyZXF1aXJlZCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYS5yZXF1aXJlZCkgJiYgc2NoZW1hLnJlcXVpcmVkLmluZGV4T2YocHJvcGVydHkpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3BEZXBzW3Byb3BlcnR5XSAmJiBmLm1vZGVsICYmIHByb3BEZXBzW3Byb3BlcnR5XS5zb21lKChrKSA9PiAhaXNFbXB0eShmLm1vZGVsW2tdKSk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChzY2hlbWFEZXBzW3Byb3BlcnR5XSkge1xuICAgICAgICAgICAgY29uc3QgZ2V0Q29uc3RWYWx1ZSA9IChzOiBKU09OU2NoZW1hNykgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gcy5oYXNPd25Qcm9wZXJ0eSgnY29uc3QnKSA/IHMuY29uc3QgOiBzLmVudW1bMF07XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCBvbmVPZlNjaGVtYSA9IHNjaGVtYURlcHNbcHJvcGVydHldLm9uZU9mIGFzIEpTT05TY2hlbWE3W107XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIG9uZU9mU2NoZW1hICYmXG4gICAgICAgICAgICAgIG9uZU9mU2NoZW1hLmV2ZXJ5KChvKSA9PiBvLnByb3BlcnRpZXMgJiYgby5wcm9wZXJ0aWVzW3Byb3BlcnR5XSAmJiBpc0NvbnN0KG8ucHJvcGVydGllc1twcm9wZXJ0eV0pKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIG9uZU9mU2NoZW1hLmZvckVhY2goKG9uZU9mU2NoZW1hSXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgW3Byb3BlcnR5XTogY29uc3RTY2hlbWEsIC4uLnByb3BlcnRpZXMgfSA9IG9uZU9mU2NoZW1hSXRlbS5wcm9wZXJ0aWVzO1xuICAgICAgICAgICAgICAgIGZpZWxkLmZpZWxkR3JvdXAucHVzaCh7XG4gICAgICAgICAgICAgICAgICAuLi50aGlzLl90b0ZpZWxkQ29uZmlnKHsgLi4ub25lT2ZTY2hlbWFJdGVtLCBwcm9wZXJ0aWVzIH0sIHsgLi4ub3B0aW9ucywgcmVzZXRPbkhpZGU6IHRydWUgfSksXG4gICAgICAgICAgICAgICAgICBleHByZXNzaW9uczoge1xuICAgICAgICAgICAgICAgICAgICBoaWRlOiAoZikgPT4gIWYubW9kZWwgfHwgZ2V0Q29uc3RWYWx1ZShjb25zdFNjaGVtYSBhcyBKU09OU2NoZW1hNykgIT09IGYubW9kZWxbcHJvcGVydHldLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmaWVsZC5maWVsZEdyb3VwLnB1c2goe1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuX3RvRmllbGRDb25maWcoc2NoZW1hRGVwc1twcm9wZXJ0eV0sIG9wdGlvbnMpLFxuICAgICAgICAgICAgICAgIGV4cHJlc3Npb25zOiB7XG4gICAgICAgICAgICAgICAgICBoaWRlOiAoZikgPT4gIWYubW9kZWwgfHwgaXNFbXB0eShmLm1vZGVsW3Byb3BlcnR5XSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoc2NoZW1hLm9uZU9mKSB7XG4gICAgICAgICAgZmllbGQuZmllbGRHcm91cC5wdXNoKFxuICAgICAgICAgICAgdGhpcy5yZXNvbHZlTXVsdGlTY2hlbWEoJ29uZU9mJywgPEpTT05TY2hlbWE3W10+c2NoZW1hLm9uZU9mLCB7IC4uLm9wdGlvbnMsIHNoYXJlRm9ybUNvbnRyb2w6IGZhbHNlIH0pLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2NoZW1hLmFueU9mKSB7XG4gICAgICAgICAgZmllbGQuZmllbGRHcm91cC5wdXNoKHRoaXMucmVzb2x2ZU11bHRpU2NoZW1hKCdhbnlPZicsIDxKU09OU2NoZW1hN1tdPnNjaGVtYS5hbnlPZiwgb3B0aW9ucykpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnYXJyYXknOiB7XG4gICAgICAgIGlmIChzY2hlbWEuaGFzT3duUHJvcGVydHkoJ21pbkl0ZW1zJykpIHtcbiAgICAgICAgICBmaWVsZC5wcm9wcy5taW5JdGVtcyA9IHNjaGVtYS5taW5JdGVtcztcbiAgICAgICAgICB0aGlzLmFkZFZhbGlkYXRvcihcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgJ21pbkl0ZW1zJyxcbiAgICAgICAgICAgICh7IHZhbHVlIH06IEFic3RyYWN0Q29udHJvbCkgPT4gaXNFbXB0eSh2YWx1ZSkgfHwgdmFsdWUubGVuZ3RoID49IHNjaGVtYS5taW5JdGVtcyxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKHNjaGVtYS5taW5JdGVtcyA+IDAgJiYgZmllbGQuZGVmYXVsdFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGZpZWxkLmRlZmF1bHRWYWx1ZSA9IEFycmF5LmZyb20obmV3IEFycmF5KHNjaGVtYS5taW5JdGVtcykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdtYXhJdGVtcycpKSB7XG4gICAgICAgICAgZmllbGQucHJvcHMubWF4SXRlbXMgPSBzY2hlbWEubWF4SXRlbXM7XG4gICAgICAgICAgdGhpcy5hZGRWYWxpZGF0b3IoXG4gICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICdtYXhJdGVtcycsXG4gICAgICAgICAgICAoeyB2YWx1ZSB9OiBBYnN0cmFjdENvbnRyb2wpID0+IGlzRW1wdHkodmFsdWUpIHx8IHZhbHVlLmxlbmd0aCA8PSBzY2hlbWEubWF4SXRlbXMsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCd1bmlxdWVJdGVtcycpKSB7XG4gICAgICAgICAgZmllbGQucHJvcHMudW5pcXVlSXRlbXMgPSBzY2hlbWEudW5pcXVlSXRlbXM7XG4gICAgICAgICAgdGhpcy5hZGRWYWxpZGF0b3IoZmllbGQsICd1bmlxdWVJdGVtcycsICh7IHZhbHVlIH06IEFic3RyYWN0Q29udHJvbCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzRW1wdHkodmFsdWUpIHx8ICFzY2hlbWEudW5pcXVlSXRlbXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHVuaXF1ZUl0ZW1zID0gQXJyYXkuZnJvbShuZXcgU2V0KHZhbHVlLm1hcCgodjogYW55KSA9PiBKU09OLnN0cmluZ2lmeSh2KSkpKTtcblxuICAgICAgICAgICAgcmV0dXJuIHVuaXF1ZUl0ZW1zLmxlbmd0aCA9PT0gdmFsdWUubGVuZ3RoO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcmVzb2x2ZSBpdGVtcyBzY2hlbWEgbmVlZGVkIGZvciBpc0VudW0gY2hlY2tcbiAgICAgICAgaWYgKHNjaGVtYS5pdGVtcyAmJiAhQXJyYXkuaXNBcnJheShzY2hlbWEuaXRlbXMpKSB7XG4gICAgICAgICAgc2NoZW1hLml0ZW1zID0gdGhpcy5yZXNvbHZlU2NoZW1hKDxKU09OU2NoZW1hNz5zY2hlbWEuaXRlbXMsIG9wdGlvbnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVE9ETzogcmVtb3ZlIGlzRW51bSBjaGVjayBvbmNlIGFkZGluZyBhbiBvcHRpb24gdG8gc2tpcCBleHRlbnNpb25cbiAgICAgICAgaWYgKCF0aGlzLmlzRW51bShzY2hlbWEpKSB7XG4gICAgICAgICAgZmllbGQuZmllbGRBcnJheSA9IChyb290OiBGb3JtbHlGaWVsZENvbmZpZykgPT4ge1xuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHNjaGVtYS5pdGVtcykpIHtcbiAgICAgICAgICAgICAgLy8gV2hlbiBpdGVtcyBpcyBhIHNpbmdsZSBzY2hlbWEsIHRoZSBhZGRpdGlvbmFsSXRlbXMga2V5d29yZCBpcyBtZWFuaW5nbGVzcywgYW5kIGl0IHNob3VsZCBub3QgYmUgdXNlZC5cbiAgICAgICAgICAgICAgY29uc3QgZiA9IHNjaGVtYS5pdGVtcyA/IHRoaXMuX3RvRmllbGRDb25maWcoPEpTT05TY2hlbWE3PnNjaGVtYS5pdGVtcywgb3B0aW9ucykgOiB7fTtcbiAgICAgICAgICAgICAgaWYgKGYucHJvcHMpIHtcbiAgICAgICAgICAgICAgICBmLnByb3BzLnJlcXVpcmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBmO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBsZW5ndGggPSByb290LmZpZWxkR3JvdXAgPyByb290LmZpZWxkR3JvdXAubGVuZ3RoIDogMDtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1TY2hlbWEgPSBzY2hlbWEuaXRlbXNbbGVuZ3RoXSA/IHNjaGVtYS5pdGVtc1tsZW5ndGhdIDogc2NoZW1hLmFkZGl0aW9uYWxJdGVtcztcbiAgICAgICAgICAgIGNvbnN0IGYgPSBpdGVtU2NoZW1hID8gdGhpcy5fdG9GaWVsZENvbmZpZyg8SlNPTlNjaGVtYTc+aXRlbVNjaGVtYSwgb3B0aW9ucykgOiB7fTtcbiAgICAgICAgICAgIGlmIChmLnByb3BzKSB7XG4gICAgICAgICAgICAgIGYucHJvcHMucmVxdWlyZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNjaGVtYS5pdGVtc1tsZW5ndGhdKSB7XG4gICAgICAgICAgICAgIGYucHJvcHMucmVtb3ZhYmxlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBmO1xuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdjb25zdCcpKSB7XG4gICAgICBmaWVsZC5wcm9wcy5jb25zdCA9IHNjaGVtYS5jb25zdDtcbiAgICAgIHRoaXMuYWRkVmFsaWRhdG9yKGZpZWxkLCAnY29uc3QnLCAoeyB2YWx1ZSB9OiBBYnN0cmFjdENvbnRyb2wpID0+IHZhbHVlID09PSBzY2hlbWEuY29uc3QpO1xuICAgICAgaWYgKCFmaWVsZC50eXBlKSB7XG4gICAgICAgIGZpZWxkLmRlZmF1bHRWYWx1ZSA9IHNjaGVtYS5jb25zdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0VudW0oc2NoZW1hKSkge1xuICAgICAgZmllbGQucHJvcHMubXVsdGlwbGUgPSBmaWVsZC50eXBlID09PSAnYXJyYXknO1xuICAgICAgZmllbGQudHlwZSA9ICdlbnVtJztcbiAgICAgIGZpZWxkLnByb3BzLm9wdGlvbnMgPSB0aGlzLnRvRW51bU9wdGlvbnMoc2NoZW1hKTtcbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hLm9uZU9mICYmICFmaWVsZC50eXBlKSB7XG4gICAgICBkZWxldGUgZmllbGQua2V5O1xuICAgICAgZmllbGQuZmllbGRHcm91cCA9IFtcbiAgICAgICAgdGhpcy5yZXNvbHZlTXVsdGlTY2hlbWEoJ29uZU9mJywgPEpTT05TY2hlbWE3W10+c2NoZW1hLm9uZU9mLCB7IC4uLm9wdGlvbnMsIGtleSwgc2hhcmVGb3JtQ29udHJvbDogZmFsc2UgfSksXG4gICAgICBdO1xuICAgIH1cblxuICAgIGlmIChzY2hlbWEub25lT2YgJiYgIWZpZWxkLnR5cGUpIHtcbiAgICAgIGRlbGV0ZSBmaWVsZC5rZXk7XG4gICAgICBmaWVsZC5maWVsZEdyb3VwID0gW1xuICAgICAgICB0aGlzLnJlc29sdmVNdWx0aVNjaGVtYSgnb25lT2YnLCA8SlNPTlNjaGVtYTdbXT5zY2hlbWEub25lT2YsIHsgLi4ub3B0aW9ucywga2V5LCBzaGFyZUZvcm1Db250cm9sOiBmYWxzZSB9KSxcbiAgICAgIF07XG4gICAgfVxuXG4gICAgLy8gbWFwIGluIHBvc3NpYmxlIGZvcm1seUNvbmZpZyBvcHRpb25zIGZyb20gdGhlIHdpZGdldCBwcm9wZXJ0eVxuICAgIGlmIChzY2hlbWEud2lkZ2V0Py5mb3JtbHlDb25maWcpIHtcbiAgICAgIGZpZWxkID0gdGhpcy5tZXJnZUZpZWxkcyhmaWVsZCwgc2NoZW1hLndpZGdldC5mb3JtbHlDb25maWcpO1xuICAgIH1cblxuICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9ucyA9IGZpZWxkLnByb3BzO1xuICAgIC8vIGlmIHRoZXJlIGlzIGEgbWFwIGZ1bmN0aW9uIHBhc3NlZCBpbiwgdXNlIGl0IHRvIGFsbG93IHRoZSB1c2VyIHRvXG4gICAgLy8gZnVydGhlciBjdXN0b21pemUgaG93IGZpZWxkcyBhcmUgYmVpbmcgbWFwcGVkXG4gICAgcmV0dXJuIG9wdGlvbnMubWFwID8gb3B0aW9ucy5tYXAoZmllbGQsIHNjaGVtYSkgOiBmaWVsZDtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVNjaGVtYShzY2hlbWE6IEpTT05TY2hlbWE3LCBvcHRpb25zOiBJT3B0aW9ucyk6IEpTT05TY2hlbWE3IHtcbiAgICBpZiAoc2NoZW1hICYmIHNjaGVtYS4kcmVmKSB7XG4gICAgICBzY2hlbWEgPSB0aGlzLnJlc29sdmVEZWZpbml0aW9uKHNjaGVtYSwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgaWYgKHNjaGVtYSAmJiBzY2hlbWEuYWxsT2YpIHtcbiAgICAgIHNjaGVtYSA9IHRoaXMucmVzb2x2ZUFsbE9mKHNjaGVtYSwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNjaGVtYTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZUFsbE9mKHsgYWxsT2YsIC4uLmJhc2VTY2hlbWEgfTogRm9ybWx5SlNPTlNjaGVtYTcsIG9wdGlvbnM6IElPcHRpb25zKSB7XG4gICAgaWYgKCFhbGxPZi5sZW5ndGgpIHtcbiAgICAgIHRocm93IEVycm9yKGBhbGxPZiBhcnJheSBjYW4gbm90IGJlIGVtcHR5ICR7YWxsT2Z9LmApO1xuICAgIH1cblxuICAgIHJldHVybiAoYWxsT2YgYXMgRm9ybWx5SlNPTlNjaGVtYTdbXSkucmVkdWNlKChiYXNlOiBGb3JtbHlKU09OU2NoZW1hNywgc2NoZW1hOiBGb3JtbHlKU09OU2NoZW1hNykgPT4ge1xuICAgICAgc2NoZW1hID0gdGhpcy5yZXNvbHZlU2NoZW1hKHNjaGVtYSwgb3B0aW9ucyk7XG4gICAgICBpZiAoYmFzZS5yZXF1aXJlZCAmJiBzY2hlbWEucmVxdWlyZWQpIHtcbiAgICAgICAgYmFzZS5yZXF1aXJlZCA9IFsuLi5iYXNlLnJlcXVpcmVkLCAuLi5zY2hlbWEucmVxdWlyZWRdO1xuICAgICAgfVxuXG4gICAgICBpZiAoc2NoZW1hLnVuaXF1ZUl0ZW1zKSB7XG4gICAgICAgIGJhc2UudW5pcXVlSXRlbXMgPSBzY2hlbWEudW5pcXVlSXRlbXM7XG4gICAgICB9XG5cbiAgICAgIC8vIHJlc29sdmUgdG8gbWluIHZhbHVlXG4gICAgICAoXG4gICAgICAgIFsnbWF4TGVuZ3RoJywgJ21heGltdW0nLCAnZXhjbHVzaXZlTWF4aW11bScsICdtYXhJdGVtcycsICdtYXhQcm9wZXJ0aWVzJ10gYXMgKGtleW9mIEZvcm1seUpTT05TY2hlbWE3KVtdXG4gICAgICApLmZvckVhY2goKHByb3ApID0+IHtcbiAgICAgICAgaWYgKCFpc0VtcHR5KGJhc2VbcHJvcF0pICYmICFpc0VtcHR5KHNjaGVtYVtwcm9wXSkpIHtcbiAgICAgICAgICAoYmFzZSBhcyBhbnkpW3Byb3BdID0gYmFzZVtwcm9wXSA8IHNjaGVtYVtwcm9wXSA/IGJhc2VbcHJvcF0gOiBzY2hlbWFbcHJvcF07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyByZXNvbHZlIHRvIG1heCB2YWx1ZVxuICAgICAgKFxuICAgICAgICBbJ21pbkxlbmd0aCcsICdtaW5pbXVtJywgJ2V4Y2x1c2l2ZU1pbmltdW0nLCAnbWluSXRlbXMnLCAnbWluUHJvcGVydGllcyddIGFzIChrZXlvZiBGb3JtbHlKU09OU2NoZW1hNylbXVxuICAgICAgKS5mb3JFYWNoKChwcm9wKSA9PiB7XG4gICAgICAgIGlmICghaXNFbXB0eShiYXNlW3Byb3BdKSAmJiAhaXNFbXB0eShzY2hlbWFbcHJvcF0pKSB7XG4gICAgICAgICAgKGJhc2UgYXMgYW55KVtwcm9wXSA9IGJhc2VbcHJvcF0gPiBzY2hlbWFbcHJvcF0gPyBiYXNlW3Byb3BdIDogc2NoZW1hW3Byb3BdO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHJldmVyc2VEZWVwTWVyZ2UoYmFzZSwgc2NoZW1hKTtcbiAgICB9LCBiYXNlU2NoZW1hKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZU11bHRpU2NoZW1hKG1vZGU6ICdvbmVPZicgfCAnYW55T2YnLCBzY2hlbWFzOiBKU09OU2NoZW1hN1tdLCBvcHRpb25zOiBJT3B0aW9ucyk6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ211bHRpc2NoZW1hJyxcbiAgICAgIGZpZWxkR3JvdXA6IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdlbnVtJyxcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IC0xLFxuICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBtdWx0aXBsZTogbW9kZSA9PT0gJ2FueU9mJyxcbiAgICAgICAgICAgIG9wdGlvbnM6IHNjaGVtYXMubWFwKChzLCBpKSA9PiAoeyBsYWJlbDogcy50aXRsZSwgdmFsdWU6IGksIGRpc2FibGVkOiBzLnJlYWRPbmx5IH0pKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGhvb2tzOiB7XG4gICAgICAgICAgICBvbkluaXQ6IChmKSA9PiBmLmZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHRhcCgoKSA9PiBmLm9wdGlvbnMuZGV0ZWN0Q2hhbmdlcyhmLnBhcmVudCkpKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgZmllbGRHcm91cDogc2NoZW1hcy5tYXAoKHMsIGkpID0+ICh7XG4gICAgICAgICAgICAuLi50aGlzLl90b0ZpZWxkQ29uZmlnKHMsIHsgLi4ub3B0aW9ucywgcmVzZXRPbkhpZGU6IHRydWUgfSksXG4gICAgICAgICAgICBleHByZXNzaW9uczoge1xuICAgICAgICAgICAgICBoaWRlOiAoZiwgZm9yY2VVcGRhdGU/OiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IGYucGFyZW50LnBhcmVudC5maWVsZEdyb3VwWzBdLmZvcm1Db250cm9sO1xuICAgICAgICAgICAgICAgIGlmIChjb250cm9sLnZhbHVlID09PSAtMSB8fCBmb3JjZVVwZGF0ZSkge1xuICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gZi5wYXJlbnQuZmllbGRHcm91cFxuICAgICAgICAgICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAgICAgICAgIChmLCBpKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgW2YsIGksIHRoaXMuaXNGaWVsZFZhbGlkKGYsIGksIHNjaGVtYXMsIG9wdGlvbnMpXSBhcyBbRm9ybWx5RmllbGRDb25maWcsIG51bWJlciwgYm9vbGVhbl0sXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgLnNvcnQoKFtmMSwgLCBmMVZhbGlkXSwgW2YyLCAsIGYyVmFsaWRdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGYxVmFsaWQgIT09IGYyVmFsaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmMlZhbGlkID8gMSA6IC0xO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoZWRGaWVsZHMxID0gdG90YWxNYXRjaGVkRmllbGRzKGYxKTtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGVkRmllbGRzMiA9IHRvdGFsTWF0Y2hlZEZpZWxkcyhmMik7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoZWRGaWVsZHMxID09PSBtYXRjaGVkRmllbGRzMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYxLnByb3BzLmRpc2FibGVkID09PSBmMi5wcm9wcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoZWRGaWVsZHMyID4gbWF0Y2hlZEZpZWxkczEgPyAxIDogLTE7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoZWRGaWVsZHMyID4gbWF0Y2hlZEZpZWxkczEgPyAxIDogLTE7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKFssIGldKSA9PiBpKTtcblxuICAgICAgICAgICAgICAgICAgaWYgKG1vZGUgPT09ICdhbnlPZicpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVmaW5lZFZhbHVlID0gdmFsdWUuZmlsdGVyKChpKSA9PiB0b3RhbE1hdGNoZWRGaWVsZHMoZi5wYXJlbnQuZmllbGRHcm91cFtpXSkpO1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGRlZmluZWRWYWx1ZS5sZW5ndGggPiAwID8gZGVmaW5lZFZhbHVlIDogW3ZhbHVlWzBdIHx8IDBdO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmxlbmd0aCA+IDAgPyB2YWx1ZSA6IFswXTtcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUobW9kZSA9PT0gJ2FueU9mJyA/IHZhbHVlIDogdmFsdWVbMF0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGNvbnRyb2wudmFsdWUpID8gY29udHJvbC52YWx1ZS5pbmRleE9mKGkpID09PSAtMSA6IGNvbnRyb2wudmFsdWUgIT09IGk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZURlZmluaXRpb24oc2NoZW1hOiBGb3JtbHlKU09OU2NoZW1hNywgb3B0aW9uczogSU9wdGlvbnMpOiBGb3JtbHlKU09OU2NoZW1hNyB7XG4gICAgY29uc3QgW3VyaSwgcG9pbnRlcl0gPSBzY2hlbWEuJHJlZi5zcGxpdCgnIy8nKTtcbiAgICBpZiAodXJpKSB7XG4gICAgICB0aHJvdyBFcnJvcihgUmVtb3RlIHNjaGVtYXMgZm9yICR7c2NoZW1hLiRyZWZ9IG5vdCBzdXBwb3J0ZWQgeWV0LmApO1xuICAgIH1cblxuICAgIGNvbnN0IGRlZmluaXRpb24gPSAhcG9pbnRlclxuICAgICAgPyBudWxsXG4gICAgICA6IHBvaW50ZXJcbiAgICAgICAgICAuc3BsaXQoJy8nKVxuICAgICAgICAgIC5yZWR1Y2UoKGRlZiwgcGF0aCkgPT4gKGRlZj8uaGFzT3duUHJvcGVydHkocGF0aCkgPyAoZGVmIGFzIGFueSlbcGF0aF0gOiBudWxsKSwgb3B0aW9ucy5zY2hlbWEpO1xuXG4gICAgaWYgKCFkZWZpbml0aW9uKSB7XG4gICAgICB0aHJvdyBFcnJvcihgQ2Fubm90IGZpbmQgYSBkZWZpbml0aW9uIGZvciAke3NjaGVtYS4kcmVmfS5gKTtcbiAgICB9XG5cbiAgICBpZiAoZGVmaW5pdGlvbi4kcmVmKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXNvbHZlRGVmaW5pdGlvbihkZWZpbml0aW9uLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uZGVmaW5pdGlvbixcbiAgICAgIC4uLlsndGl0bGUnLCAnZGVzY3JpcHRpb24nLCAnZGVmYXVsdCcsICd3aWRnZXQnXS5yZWR1Y2UoKGFubm90YXRpb24sIHApID0+IHtcbiAgICAgICAgaWYgKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eShwKSkge1xuICAgICAgICAgIGFubm90YXRpb25bcF0gPSAoc2NoZW1hIGFzIGFueSlbcF07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYW5ub3RhdGlvbjtcbiAgICAgIH0sIHt9IGFzIGFueSksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZURlcGVuZGVuY2llcyhzY2hlbWE6IEpTT05TY2hlbWE3KSB7XG4gICAgY29uc3QgcHJvcERlcHM6IHsgW2lkOiBzdHJpbmddOiBzdHJpbmdbXSB9ID0ge307XG4gICAgY29uc3Qgc2NoZW1hRGVwczogeyBbaWQ6IHN0cmluZ106IEpTT05TY2hlbWE3IH0gPSB7fTtcblxuICAgIE9iamVjdC5rZXlzKHNjaGVtYS5kZXBlbmRlbmNpZXMgfHwge30pLmZvckVhY2goKHByb3ApID0+IHtcbiAgICAgIGNvbnN0IGRlcGVuZGVuY3kgPSBzY2hlbWEuZGVwZW5kZW5jaWVzW3Byb3BdIGFzIEpTT05TY2hlbWE3O1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGVwZW5kZW5jeSkpIHtcbiAgICAgICAgLy8gUHJvcGVydHkgZGVwZW5kZW5jaWVzXG4gICAgICAgIGRlcGVuZGVuY3kuZm9yRWFjaCgoZGVwKSA9PiB7XG4gICAgICAgICAgaWYgKCFwcm9wRGVwc1tkZXBdKSB7XG4gICAgICAgICAgICBwcm9wRGVwc1tkZXBdID0gW3Byb3BdO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcm9wRGVwc1tkZXBdLnB1c2gocHJvcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHNjaGVtYSBkZXBlbmRlbmNpZXNcbiAgICAgICAgc2NoZW1hRGVwc1twcm9wXSA9IGRlcGVuZGVuY3k7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4geyBwcm9wRGVwcywgc2NoZW1hRGVwcyB9O1xuICB9XG5cbiAgcHJpdmF0ZSBndWVzc1NjaGVtYVR5cGUoc2NoZW1hOiBKU09OU2NoZW1hNykge1xuICAgIGNvbnN0IHR5cGUgPSBzY2hlbWE/LnR5cGU7XG4gICAgaWYgKCF0eXBlICYmIHNjaGVtYT8ucHJvcGVydGllcykge1xuICAgICAgcmV0dXJuIFsnb2JqZWN0J107XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodHlwZSkpIHtcbiAgICAgIGlmICh0eXBlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gdHlwZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGUubGVuZ3RoID09PSAyICYmIHR5cGUuaW5kZXhPZignbnVsbCcpICE9PSAtMSkge1xuICAgICAgICByZXR1cm4gdHlwZS5zb3J0KCh0MSkgPT4gKHQxID09ICdudWxsJyA/IDEgOiAtMSkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHlwZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZSA/IFt0eXBlXSA6IFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRWYWxpZGF0b3IoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnLCBuYW1lOiBzdHJpbmcsIHZhbGlkYXRvcjogRm9ybWx5RmllbGRDb25maWdbJ3ZhbGlkYXRvcnMnXSkge1xuICAgIGZpZWxkLnZhbGlkYXRvcnMgPSBmaWVsZC52YWxpZGF0b3JzIHx8IHt9O1xuICAgIGZpZWxkLnZhbGlkYXRvcnNbbmFtZV0gPSB2YWxpZGF0b3I7XG4gIH1cblxuICBwcml2YXRlIGlzRW51bShzY2hlbWE6IEpTT05TY2hlbWE3KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgICEhc2NoZW1hLmVudW0gfHxcbiAgICAgIChzY2hlbWEuYW55T2YgJiYgKHNjaGVtYS5hbnlPZiBhcyBKU09OU2NoZW1hN1tdKS5ldmVyeShpc0NvbnN0KSkgfHxcbiAgICAgIChzY2hlbWEub25lT2YgJiYgKHNjaGVtYS5vbmVPZiBhcyBKU09OU2NoZW1hN1tdKS5ldmVyeShpc0NvbnN0KSkgfHxcbiAgICAgIChzY2hlbWEudW5pcXVlSXRlbXMgJiYgc2NoZW1hLml0ZW1zICYmICFBcnJheS5pc0FycmF5KHNjaGVtYS5pdGVtcykgJiYgdGhpcy5pc0VudW0oPEpTT05TY2hlbWE3PnNjaGVtYS5pdGVtcykpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9FbnVtT3B0aW9ucyhzY2hlbWE6IEpTT05TY2hlbWE3KTogeyB2YWx1ZTogYW55OyBsYWJlbDogYW55IH1bXSB7XG4gICAgaWYgKHNjaGVtYS5lbnVtKSB7XG4gICAgICByZXR1cm4gc2NoZW1hLmVudW0ubWFwKCh2YWx1ZSkgPT4gKHsgdmFsdWUsIGxhYmVsOiB2YWx1ZSB9KSk7XG4gICAgfVxuXG4gICAgY29uc3QgdG9FbnVtID0gKHM6IEpTT05TY2hlbWE3KSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHMuaGFzT3duUHJvcGVydHkoJ2NvbnN0JykgPyBzLmNvbnN0IDogcy5lbnVtWzBdO1xuICAgICAgY29uc3Qgb3B0aW9uOiBhbnkgPSB7IHZhbHVlLCBsYWJlbDogcy50aXRsZSB8fCB2YWx1ZSB9O1xuICAgICAgaWYgKHMucmVhZE9ubHkpIHtcbiAgICAgICAgb3B0aW9uLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICB9O1xuXG4gICAgaWYgKHNjaGVtYS5hbnlPZikge1xuICAgICAgcmV0dXJuIChzY2hlbWEuYW55T2YgYXMgSlNPTlNjaGVtYTdbXSkubWFwKHRvRW51bSk7XG4gICAgfVxuXG4gICAgaWYgKHNjaGVtYS5vbmVPZikge1xuICAgICAgcmV0dXJuIChzY2hlbWEub25lT2YgYXMgSlNPTlNjaGVtYTdbXSkubWFwKHRvRW51bSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudG9FbnVtT3B0aW9ucyg8SlNPTlNjaGVtYTc+c2NoZW1hLml0ZW1zKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNGaWVsZFZhbGlkKFxuICAgIHJvb3Q6IEZvcm1seUZpZWxkQ29uZmlnICYgeyBfc2NoZW1hc0ZpZWxkcz86IHsgW2tleTogbnVtYmVyXTogRm9ybWx5RmllbGRDb25maWcgfSB9LFxuICAgIGk6IG51bWJlcixcbiAgICBzY2hlbWFzOiBKU09OU2NoZW1hN1tdLFxuICAgIG9wdGlvbnM6IElPcHRpb25zLFxuICApOiBib29sZWFuIHtcbiAgICBpZiAoIXJvb3QuX3NjaGVtYXNGaWVsZHMpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyb290LCAnX3NjaGVtYXNGaWVsZHMnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0pO1xuICAgICAgcm9vdC5fc2NoZW1hc0ZpZWxkcyA9IHt9O1xuICAgIH1cblxuICAgIGxldCBmaWVsZCA9IHJvb3QuX3NjaGVtYXNGaWVsZHNbaV07XG4gICAgY29uc3QgbW9kZWwgPSByb290Lm1vZGVsID8gY2xvbmUocm9vdC5tb2RlbCkgOiByb290LmZpZWxkQXJyYXkgPyBbXSA6IHt9O1xuICAgIGlmICghZmllbGQpIHtcbiAgICAgIGZpZWxkID0gcm9vdC5fc2NoZW1hc0ZpZWxkc1tpXSA9IHJvb3Qub3B0aW9ucy5idWlsZCh7XG4gICAgICAgIGZvcm06IEFycmF5LmlzQXJyYXkobW9kZWwpID8gbmV3IEZvcm1BcnJheShbXSkgOiBuZXcgRm9ybUdyb3VwKHt9KSxcbiAgICAgICAgZmllbGRHcm91cDogW1xuICAgICAgICAgIHRoaXMuX3RvRmllbGRDb25maWcoc2NoZW1hc1tpXSwge1xuICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgIHJlc2V0T25IaWRlOiB0cnVlLFxuICAgICAgICAgICAgaWdub3JlRGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgICAgIG1hcDogbnVsbCxcbiAgICAgICAgICAgIHN0cmljdDogdHJ1ZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgbW9kZWwsXG4gICAgICAgIG9wdGlvbnM6IHt9LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIChmaWVsZCBhcyBhbnkpLm1vZGVsID0gbW9kZWw7XG4gICAgICByb290Lm9wdGlvbnMuYnVpbGQoZmllbGQpO1xuICAgIH1cblxuICAgIHJldHVybiBmaWVsZC5mb3JtLnZhbGlkO1xuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZUZpZWxkcyhmMTogYW55LCBmMjogYW55KSB7XG4gICAgZm9yIChsZXQgcHJvcCBpbiBmMikge1xuICAgICAgY29uc3QgZjFQcm9wID0gcHJvcCA9PT0gJ3RlbXBsYXRlT3B0aW9ucycgPyAncHJvcHMnIDogcHJvcDtcbiAgICAgIGlmIChpc09iamVjdChmMVtmMVByb3BdKSAmJiBpc09iamVjdChmMltwcm9wXSkpIHtcbiAgICAgICAgZjFbZjFQcm9wXSA9IHRoaXMubWVyZ2VGaWVsZHMoZjFbZjFQcm9wXSwgZjJbcHJvcF0pO1xuICAgICAgfSBlbHNlIGlmIChmMltwcm9wXSAhPSBudWxsKSB7XG4gICAgICAgIGYxW2YxUHJvcF0gPSBmMltwcm9wXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZjE7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
import { Pipe } from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import { map } from 'rxjs/operators';
|
|
2
|
+
import { BehaviorSubject, Observable } from 'rxjs';
|
|
3
|
+
import { filter, map, tap } from 'rxjs/operators';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export class FormlySelectOptionsPipe {
|
|
6
6
|
transform(options, field) {
|
|
7
7
|
if (!(options instanceof Observable)) {
|
|
8
|
-
options = observableOf(options);
|
|
8
|
+
options = this.observableOf(options, field);
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
this.dispose();
|
|
9
12
|
}
|
|
10
13
|
return options.pipe(map((value) => this.transformOptions(value, field)));
|
|
11
14
|
}
|
|
15
|
+
ngOnDestroy() {
|
|
16
|
+
this.dispose();
|
|
17
|
+
}
|
|
12
18
|
transformOptions(options, field) {
|
|
13
19
|
const to = this.transformSelectProps(field);
|
|
14
20
|
const opts = [];
|
|
@@ -58,6 +64,32 @@ export class FormlySelectOptionsPipe {
|
|
|
58
64
|
disabledProp: selectPropFn(props.disabledProp || 'disabled'),
|
|
59
65
|
};
|
|
60
66
|
}
|
|
67
|
+
dispose() {
|
|
68
|
+
if (this._options) {
|
|
69
|
+
this._options.complete();
|
|
70
|
+
this._options = null;
|
|
71
|
+
}
|
|
72
|
+
if (this._subscription) {
|
|
73
|
+
this._subscription.unsubscribe();
|
|
74
|
+
this._subscription = null;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
observableOf(options, f) {
|
|
78
|
+
this.dispose();
|
|
79
|
+
if (f && f.options && f.options.fieldChanges) {
|
|
80
|
+
this._subscription = f.options.fieldChanges
|
|
81
|
+
.pipe(filter(({ property, type, field }) => {
|
|
82
|
+
return (type === 'expressionChanges' &&
|
|
83
|
+
(property.indexOf('templateOptions.options') === 0 || property.indexOf('props.options') === 0) &&
|
|
84
|
+
field === f &&
|
|
85
|
+
Array.isArray(field.props.options) &&
|
|
86
|
+
!!this._options);
|
|
87
|
+
}), tap(() => this._options.next(f.props.options)))
|
|
88
|
+
.subscribe();
|
|
89
|
+
}
|
|
90
|
+
this._options = new BehaviorSubject(options);
|
|
91
|
+
return this._options.asObservable();
|
|
92
|
+
}
|
|
61
93
|
}
|
|
62
94
|
FormlySelectOptionsPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: FormlySelectOptionsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
63
95
|
FormlySelectOptionsPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: FormlySelectOptionsPipe, name: "formlySelectOptions" });
|
|
@@ -65,4 +97,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
65
97
|
type: Pipe,
|
|
66
98
|
args: [{ name: 'formlySelectOptions' }]
|
|
67
99
|
}] });
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW9wdGlvbnMucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb3JlL3NlbGVjdC9zcmMvc2VsZWN0LW9wdGlvbnMucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsSUFBSSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQXlCckMsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQyxTQUFTLENBQUMsT0FBWSxFQUFFLEtBQXlCO1FBQy9DLElBQUksQ0FBQyxDQUFDLE9BQU8sWUFBWSxVQUFVLENBQUMsRUFBRTtZQUNwQyxPQUFPLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ2pDO1FBRUQsT0FBUSxPQUEyQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxPQUFjLEVBQUUsS0FBeUI7UUFDaEUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTVDLE1BQU0sSUFBSSxHQUF5QixFQUFFLENBQUM7UUFDdEMsTUFBTSxNQUFNLEdBQTZCLEVBQUUsQ0FBQztRQUU1QyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDMUIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFO2dCQUNYLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNCLElBQUksRUFBRSxLQUFLLFNBQVMsRUFBRTtvQkFDcEIsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDcEM7cUJBQU07b0JBQ0wsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2hEO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNkO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyxlQUFlLENBQUMsTUFBVyxFQUFFLEtBQXVCO1FBQzFELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO2dCQUM5QixLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDNUQsQ0FBQztTQUNIO1FBRUQsTUFBTSxHQUFHO1lBQ1AsS0FBSyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO1lBQzlCLEtBQUssRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztZQUM5QixRQUFRLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO1NBQ3ZDLENBQUM7UUFFRixJQUFJLEtBQUssRUFBRTtZQUNULE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7U0FDMUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU8sb0JBQW9CLENBQUMsS0FBeUI7UUFDcEQsTUFBTSxLQUFLLEdBQUcsS0FBSyxFQUFFLEtBQUssSUFBSSxLQUFLLEVBQUUsZUFBZSxJQUFJLEVBQUUsQ0FBQztRQUMzRCxNQUFNLFlBQVksR0FBRyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLElBQUksS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRTlGLE9BQU87WUFDTCxTQUFTLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksT0FBTyxDQUFDO1lBQ25ELFNBQVMsRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUM7WUFDbkQsU0FBUyxFQUFFLFlBQVksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQztZQUNuRCxZQUFZLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxZQUFZLElBQUksVUFBVSxDQUFDO1NBQzdELENBQUM7SUFDSixDQUFDOztxSEFoRVUsdUJBQXVCO21IQUF2Qix1QkFBdUI7NEZBQXZCLHVCQUF1QjtrQkFEbkMsSUFBSTttQkFBQyxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIGFzIG9ic2VydmFibGVPZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcsIEZvcm1seUZpZWxkUHJvcHMgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBGb3JtbHlTZWxlY3RPcHRpb24ge1xuICBsYWJlbDogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIHZhbHVlPzogYW55O1xuICBncm91cD86IEZvcm1seVNlbGVjdE9wdGlvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1seUZpZWxkU2VsZWN0UHJvcHMgZXh0ZW5kcyBGb3JtbHlGaWVsZFByb3BzIHtcbiAgZ3JvdXBQcm9wPzogc3RyaW5nIHwgKChvcHRpb246IGFueSkgPT4gc3RyaW5nKTtcbiAgbGFiZWxQcm9wPzogc3RyaW5nIHwgKChvcHRpb246IGFueSkgPT4gYW55KTtcbiAgdmFsdWVQcm9wPzogc3RyaW5nIHwgKChvcHRpb246IGFueSkgPT4gYm9vbGVhbik7XG4gIGRpc2FibGVkUHJvcD86IHN0cmluZyB8ICgob3B0aW9uOiBhbnkpID0+IHN0cmluZyk7XG59XG5cbnR5cGUgSVRyYW5zZm9ybU9wdGlvbiA9IHtcbiAgbGFiZWxQcm9wOiAob3B0aW9uOiBhbnkpID0+IHN0cmluZztcbiAgdmFsdWVQcm9wOiAob3B0aW9uOiBhbnkpID0+IGFueTtcbiAgZGlzYWJsZWRQcm9wOiAob3B0aW9uOiBhbnkpID0+IGJvb2xlYW47XG4gIGdyb3VwUHJvcDogKG9wdGlvbjogYW55KSA9PiBzdHJpbmc7XG59O1xuXG5AUGlwZSh7IG5hbWU6ICdmb3JtbHlTZWxlY3RPcHRpb25zJyB9KVxuZXhwb3J0IGNsYXNzIEZvcm1seVNlbGVjdE9wdGlvbnNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybShvcHRpb25zOiBhbnksIGZpZWxkPzogRm9ybWx5RmllbGRDb25maWcpOiBPYnNlcnZhYmxlPEZvcm1seVNlbGVjdE9wdGlvbltdPiB7XG4gICAgaWYgKCEob3B0aW9ucyBpbnN0YW5jZW9mIE9ic2VydmFibGUpKSB7XG4gICAgICBvcHRpb25zID0gb2JzZXJ2YWJsZU9mKG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHJldHVybiAob3B0aW9ucyBhcyBPYnNlcnZhYmxlPGFueT4pLnBpcGUobWFwKCh2YWx1ZSkgPT4gdGhpcy50cmFuc2Zvcm1PcHRpb25zKHZhbHVlLCBmaWVsZCkpKTtcbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNmb3JtT3B0aW9ucyhvcHRpb25zOiBhbnlbXSwgZmllbGQ/OiBGb3JtbHlGaWVsZENvbmZpZyk6IEZvcm1seVNlbGVjdE9wdGlvbltdIHtcbiAgICBjb25zdCB0byA9IHRoaXMudHJhbnNmb3JtU2VsZWN0UHJvcHMoZmllbGQpO1xuXG4gICAgY29uc3Qgb3B0czogRm9ybWx5U2VsZWN0T3B0aW9uW10gPSBbXTtcbiAgICBjb25zdCBncm91cHM6IHsgW2lkOiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuXG4gICAgb3B0aW9ucz8uZm9yRWFjaCgob3B0aW9uKSA9PiB7XG4gICAgICBjb25zdCBvID0gdGhpcy50cmFuc2Zvcm1PcHRpb24ob3B0aW9uLCB0byk7XG4gICAgICBpZiAoby5ncm91cCkge1xuICAgICAgICBjb25zdCBpZCA9IGdyb3Vwc1tvLmxhYmVsXTtcbiAgICAgICAgaWYgKGlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBncm91cHNbby5sYWJlbF0gPSBvcHRzLnB1c2gobykgLSAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG8uZ3JvdXAuZm9yRWFjaCgobykgPT4gb3B0c1tpZF0uZ3JvdXAucHVzaChvKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9wdHMucHVzaChvKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBvcHRzO1xuICB9XG5cbiAgcHJpdmF0ZSB0cmFuc2Zvcm1PcHRpb24ob3B0aW9uOiBhbnksIHByb3BzOiBJVHJhbnNmb3JtT3B0aW9uKTogRm9ybWx5U2VsZWN0T3B0aW9uIHtcbiAgICBjb25zdCBncm91cCA9IHByb3BzLmdyb3VwUHJvcChvcHRpb24pO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGdyb3VwKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGFiZWw6IHByb3BzLmxhYmVsUHJvcChvcHRpb24pLFxuICAgICAgICBncm91cDogZ3JvdXAubWFwKChvcHQpID0+IHRoaXMudHJhbnNmb3JtT3B0aW9uKG9wdCwgcHJvcHMpKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgb3B0aW9uID0ge1xuICAgICAgbGFiZWw6IHByb3BzLmxhYmVsUHJvcChvcHRpb24pLFxuICAgICAgdmFsdWU6IHByb3BzLnZhbHVlUHJvcChvcHRpb24pLFxuICAgICAgZGlzYWJsZWQ6ICEhcHJvcHMuZGlzYWJsZWRQcm9wKG9wdGlvbiksXG4gICAgfTtcblxuICAgIGlmIChncm91cCkge1xuICAgICAgcmV0dXJuIHsgbGFiZWw6IGdyb3VwLCBncm91cDogW29wdGlvbl0gfTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3B0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSB0cmFuc2Zvcm1TZWxlY3RQcm9wcyhmaWVsZD86IEZvcm1seUZpZWxkQ29uZmlnKTogSVRyYW5zZm9ybU9wdGlvbiB7XG4gICAgY29uc3QgcHJvcHMgPSBmaWVsZD8ucHJvcHMgfHwgZmllbGQ/LnRlbXBsYXRlT3B0aW9ucyB8fCB7fTtcbiAgICBjb25zdCBzZWxlY3RQcm9wRm4gPSAocHJvcDogYW55KSA9PiAodHlwZW9mIHByb3AgPT09ICdmdW5jdGlvbicgPyBwcm9wIDogKG86IGFueSkgPT4gb1twcm9wXSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ3JvdXBQcm9wOiBzZWxlY3RQcm9wRm4ocHJvcHMuZ3JvdXBQcm9wIHx8ICdncm91cCcpLFxuICAgICAgbGFiZWxQcm9wOiBzZWxlY3RQcm9wRm4ocHJvcHMubGFiZWxQcm9wIHx8ICdsYWJlbCcpLFxuICAgICAgdmFsdWVQcm9wOiBzZWxlY3RQcm9wRm4ocHJvcHMudmFsdWVQcm9wIHx8ICd2YWx1ZScpLFxuICAgICAgZGlzYWJsZWRQcm9wOiBzZWxlY3RQcm9wRm4ocHJvcHMuZGlzYWJsZWRQcm9wIHx8ICdkaXNhYmxlZCcpLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW9wdGlvbnMucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb3JlL3NlbGVjdC9zcmMvc2VsZWN0LW9wdGlvbnMucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWEsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDakUsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBeUJsRCxNQUFNLE9BQU8sdUJBQXVCO0lBSWxDLFNBQVMsQ0FBQyxPQUFZLEVBQUUsS0FBeUI7UUFDL0MsSUFBSSxDQUFDLENBQUMsT0FBTyxZQUFZLFVBQVUsQ0FBQyxFQUFFO1lBQ3BDLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztTQUM3QzthQUFNO1lBQ0wsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ2hCO1FBRUQsT0FBUSxPQUEyQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxPQUFjLEVBQUUsS0FBeUI7UUFDaEUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTVDLE1BQU0sSUFBSSxHQUF5QixFQUFFLENBQUM7UUFDdEMsTUFBTSxNQUFNLEdBQTZCLEVBQUUsQ0FBQztRQUU1QyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxF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QkFBdUI7NEZBQXZCLHVCQUF1QjtrQkFEbkMsSUFBSTttQkFBQyxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9uRGVzdHJveSwgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZywgRm9ybWx5RmllbGRQcm9wcyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1seVNlbGVjdE9wdGlvbiB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgdmFsdWU/OiBhbnk7XG4gIGdyb3VwPzogRm9ybWx5U2VsZWN0T3B0aW9uW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybWx5RmllbGRTZWxlY3RQcm9wcyBleHRlbmRzIEZvcm1seUZpZWxkUHJvcHMge1xuICBncm91cFByb3A/OiBzdHJpbmcgfCAoKG9wdGlvbjogYW55KSA9PiBzdHJpbmcpO1xuICBsYWJlbFByb3A/OiBzdHJpbmcgfCAoKG9wdGlvbjogYW55KSA9PiBhbnkpO1xuICB2YWx1ZVByb3A/OiBzdHJpbmcgfCAoKG9wdGlvbjogYW55KSA9PiBib29sZWFuKTtcbiAgZGlzYWJsZWRQcm9wPzogc3RyaW5nIHwgKChvcHRpb246IGFueSkgPT4gc3RyaW5nKTtcbn1cblxudHlwZSBJVHJhbnNmb3JtT3B0aW9uID0ge1xuICBsYWJlbFByb3A6IChvcHRpb246IGFueSkgPT4gc3RyaW5nO1xuICB2YWx1ZVByb3A6IChvcHRpb246IGFueSkgPT4gYW55O1xuICBkaXNhYmxlZFByb3A6IChvcHRpb246IGFueSkgPT4gYm9vbGVhbjtcbiAgZ3JvdXBQcm9wOiAob3B0aW9uOiBhbnkpID0+IHN0cmluZztcbn07XG5cbkBQaXBlKHsgbmFtZTogJ2Zvcm1seVNlbGVjdE9wdGlvbnMnIH0pXG5leHBvcnQgY2xhc3MgRm9ybWx5U2VsZWN0T3B0aW9uc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtLCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9zdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBfb3B0aW9uczogQmVoYXZpb3JTdWJqZWN0PGFueVtdPjtcblxuICB0cmFuc2Zvcm0ob3B0aW9uczogYW55LCBmaWVsZD86IEZvcm1seUZpZWxkQ29uZmlnKTogT2JzZXJ2YWJsZTxGb3JtbHlTZWxlY3RPcHRpb25bXT4ge1xuICAgIGlmICghKG9wdGlvbnMgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSkge1xuICAgICAgb3B0aW9ucyA9IHRoaXMub2JzZXJ2YWJsZU9mKG9wdGlvbnMsIGZpZWxkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kaXNwb3NlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChvcHRpb25zIGFzIE9ic2VydmFibGU8YW55PikucGlwZShtYXAoKHZhbHVlKSA9PiB0aGlzLnRyYW5zZm9ybU9wdGlvbnModmFsdWUsIGZpZWxkKSkpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIHRyYW5zZm9ybU9wdGlvbnMob3B0aW9uczogYW55W10sIGZpZWxkPzogRm9ybWx5RmllbGRDb25maWcpOiBGb3JtbHlTZWxlY3RPcHRpb25bXSB7XG4gICAgY29uc3QgdG8gPSB0aGlzLnRyYW5zZm9ybVNlbGVjdFByb3BzKGZpZWxkKTtcblxuICAgIGNvbnN0IG9wdHM6IEZvcm1seVNlbGVjdE9wdGlvbltdID0gW107XG4gICAgY29uc3QgZ3JvdXBzOiB7IFtpZDogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcblxuICAgIG9wdGlvbnM/LmZvckVhY2goKG9wdGlvbikgPT4ge1xuICAgICAgY29uc3QgbyA9IHRoaXMudHJhbnNmb3JtT3B0aW9uKG9wdGlvbiwgdG8pO1xuICAgICAgaWYgKG8uZ3JvdXApIHtcbiAgICAgICAgY29uc3QgaWQgPSBncm91cHNbby5sYWJlbF07XG4gICAgICAgIGlmIChpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZ3JvdXBzW28ubGFiZWxdID0gb3B0cy5wdXNoKG8pIC0gMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvLmdyb3VwLmZvckVhY2goKG8pID0+IG9wdHNbaWRdLmdyb3VwLnB1c2gobykpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvcHRzLnB1c2gobyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gb3B0cztcbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNmb3JtT3B0aW9uKG9wdGlvbjogYW55LCBwcm9wczogSVRyYW5zZm9ybU9wdGlvbik6IEZvcm1seVNlbGVjdE9wdGlvbiB7XG4gICAgY29uc3QgZ3JvdXAgPSBwcm9wcy5ncm91cFByb3Aob3B0aW9uKTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShncm91cCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxhYmVsOiBwcm9wcy5sYWJlbFByb3Aob3B0aW9uKSxcbiAgICAgICAgZ3JvdXA6IGdyb3VwLm1hcCgob3B0KSA9PiB0aGlzLnRyYW5zZm9ybU9wdGlvbihvcHQsIHByb3BzKSksXG4gICAgICB9O1xuICAgIH1cblxuICAgIG9wdGlvbiA9IHtcbiAgICAgIGxhYmVsOiBwcm9wcy5sYWJlbFByb3Aob3B0aW9uKSxcbiAgICAgIHZhbHVlOiBwcm9wcy52YWx1ZVByb3Aob3B0aW9uKSxcbiAgICAgIGRpc2FibGVkOiAhIXByb3BzLmRpc2FibGVkUHJvcChvcHRpb24pLFxuICAgIH07XG5cbiAgICBpZiAoZ3JvdXApIHtcbiAgICAgIHJldHVybiB7IGxhYmVsOiBncm91cCwgZ3JvdXA6IFtvcHRpb25dIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNmb3JtU2VsZWN0UHJvcHMoZmllbGQ/OiBGb3JtbHlGaWVsZENvbmZpZyk6IElUcmFuc2Zvcm1PcHRpb24ge1xuICAgIGNvbnN0IHByb3BzID0gZmllbGQ/LnByb3BzIHx8IGZpZWxkPy50ZW1wbGF0ZU9wdGlvbnMgfHwge307XG4gICAgY29uc3Qgc2VsZWN0UHJvcEZuID0gKHByb3A6IGFueSkgPT4gKHR5cGVvZiBwcm9wID09PSAnZnVuY3Rpb24nID8gcHJvcCA6IChvOiBhbnkpID0+IG9bcHJvcF0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGdyb3VwUHJvcDogc2VsZWN0UHJvcEZuKHByb3BzLmdyb3VwUHJvcCB8fCAnZ3JvdXAnKSxcbiAgICAgIGxhYmVsUHJvcDogc2VsZWN0UHJvcEZuKHByb3BzLmxhYmVsUHJvcCB8fCAnbGFiZWwnKSxcbiAgICAgIHZhbHVlUHJvcDogc2VsZWN0UHJvcEZuKHByb3BzLnZhbHVlUHJvcCB8fCAndmFsdWUnKSxcbiAgICAgIGRpc2FibGVkUHJvcDogc2VsZWN0UHJvcEZuKHByb3BzLmRpc2FibGVkUHJvcCB8fCAnZGlzYWJsZWQnKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwb3NlKCkge1xuICAgIGlmICh0aGlzLl9vcHRpb25zKSB7XG4gICAgICB0aGlzLl9vcHRpb25zLmNvbXBsZXRlKCk7XG4gICAgICB0aGlzLl9vcHRpb25zID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZhYmxlT2Yob3B0aW9uczogYW55LCBmPzogRm9ybWx5RmllbGRDb25maWcpIHtcbiAgICB0aGlzLmRpc3Bvc2UoKTtcbiAgICBpZiAoZiAmJiBmLm9wdGlvbnMgJiYgZi5vcHRpb25zLmZpZWxkQ2hhbmdlcykge1xuICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uID0gZi5vcHRpb25zLmZpZWxkQ2hhbmdlc1xuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKHsgcHJvcGVydHksIHR5cGUsIGZpZWxkIH0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIHR5cGUgPT09ICdleHByZXNzaW9uQ2hhbmdlcycgJiZcbiAgICAgICAgICAgICAgKHByb3BlcnR5LmluZGV4T2YoJ3RlbXBsYXRlT3B0aW9ucy5vcHRpb25zJykgPT09IDAgfHwgcHJvcGVydHkuaW5kZXhPZigncHJvcHMub3B0aW9ucycpID09PSAwKSAmJlxuICAgICAgICAgICAgICBmaWVsZCA9PT0gZiAmJlxuICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KGZpZWxkLnByb3BzLm9wdGlvbnMpICYmXG4gICAgICAgICAgICAgICEhdGhpcy5fb3B0aW9uc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5fb3B0aW9ucy5uZXh0KGYucHJvcHMub3B0aW9ucyBhcyBhbnkpKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fb3B0aW9ucyA9IG5ldyBCZWhhdmlvclN1YmplY3Qob3B0aW9ucyk7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnMuYXNPYnNlcnZhYmxlKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -219,13 +219,13 @@ class FormlyJsonschema {
|
|
|
219
219
|
oneOfSchema.forEach((oneOfSchemaItem) => {
|
|
220
220
|
const _a = oneOfSchemaItem.properties, _b = property, constSchema = _a[_b], properties = __rest(_a, [typeof _b === "symbol" ? _b : _b + ""]);
|
|
221
221
|
field.fieldGroup.push(Object.assign(Object.assign({}, this._toFieldConfig(Object.assign(Object.assign({}, oneOfSchemaItem), { properties }), Object.assign(Object.assign({}, options), { resetOnHide: true }))), { expressions: {
|
|
222
|
-
hide: (
|
|
222
|
+
hide: (f) => !f.model || getConstValue(constSchema) !== f.model[property],
|
|
223
223
|
} }));
|
|
224
224
|
});
|
|
225
225
|
}
|
|
226
226
|
else {
|
|
227
227
|
field.fieldGroup.push(Object.assign(Object.assign({}, this._toFieldConfig(schemaDeps[property], options)), { expressions: {
|
|
228
|
-
hide: (
|
|
228
|
+
hide: (f) => !f.model || isEmpty(f.model[property]),
|
|
229
229
|
} }));
|
|
230
230
|
}
|
|
231
231
|
}
|