@mediusinc/mng-commons 5.2.0-rc.1 → 5.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/model/descriptors/enum.descriptor.mjs +1 -1
- package/esm2022/table/api/descriptors/column.descriptor.mjs +8 -19
- package/esm2022/table/api/descriptors/table.descriptor.mjs +13 -9
- package/esm2022/table/api/helpers/table-descriptor-helpers.mjs +3 -2
- package/esm2022/tableview/api/editor/descriptors/editor.descriptor.mjs +5 -4
- package/esm2022/tableview/api/editor/descriptors/field-lookup.descriptor.mjs +2 -3
- package/esm2022/tableview/api/editor/descriptors/field.descriptor.mjs +14 -7
- package/esm2022/tableview/api/tableview/helpers/tableview-default-actions.mjs +1 -1
- package/fesm2022/mediusinc-mng-commons-model.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-table-api.mjs +21 -27
- package/fesm2022/mediusinc-mng-commons-table-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +18 -10
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
- package/model/descriptors/enum.descriptor.d.ts +1 -1
- package/package.json +7 -7
- package/table/api/descriptors/column.descriptor.d.ts +4 -10
- package/table/api/descriptors/table.descriptor.d.ts +2 -1
- package/tableview/api/editor/descriptors/field.descriptor.d.ts +12 -7
- package/tableview/api/tableview/helpers/tableview-default-actions.d.ts +5 -5
- package/version-info.json +6 -6
|
@@ -225,12 +225,8 @@ export class FieldInputDescriptor extends AFieldDescriptor {
|
|
|
225
225
|
}
|
|
226
226
|
asDatePicker(opts) {
|
|
227
227
|
this._fieldType = FieldInputTypeEnum.Datepicker;
|
|
228
|
-
this.
|
|
229
|
-
this.
|
|
230
|
-
this._datePickerMax = opts?.max;
|
|
231
|
-
this._datePickerShowTime = opts?.showTime;
|
|
232
|
-
this._datePickerShowSeconds = opts?.showSeconds;
|
|
233
|
-
this._datePickerValueAsDateObj = opts?.asDateObj;
|
|
228
|
+
this.withDateValidation(opts);
|
|
229
|
+
this.withDatePickerDisplay(opts);
|
|
234
230
|
this.withDateValue({
|
|
235
231
|
asDateObj: opts?.asDateObj,
|
|
236
232
|
utc: opts?.utc,
|
|
@@ -297,6 +293,17 @@ export class FieldInputDescriptor extends AFieldDescriptor {
|
|
|
297
293
|
this._pattern = opts?.pattern;
|
|
298
294
|
return this;
|
|
299
295
|
}
|
|
296
|
+
withDatePickerDisplay(opts) {
|
|
297
|
+
this._datePickerFormat = opts?.format;
|
|
298
|
+
this._datePickerShowTime = opts?.showTime;
|
|
299
|
+
this._datePickerShowSeconds = opts?.showSeconds;
|
|
300
|
+
return this;
|
|
301
|
+
}
|
|
302
|
+
withDateValidation(opts) {
|
|
303
|
+
this._datePickerMin = opts?.min;
|
|
304
|
+
this._datePickerMax = opts?.max;
|
|
305
|
+
return this;
|
|
306
|
+
}
|
|
300
307
|
withInputTrim(trimOption = 'both') {
|
|
301
308
|
this._inputTrim = trimOption;
|
|
302
309
|
return this;
|
|
@@ -361,4 +368,4 @@ export class FieldInputDescriptor extends AFieldDescriptor {
|
|
|
361
368
|
return field;
|
|
362
369
|
}
|
|
363
370
|
}
|
|
364
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuZGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2VkaXRvci9kZXNjcmlwdG9ycy9maWVsZC5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBc0MsNkJBQTZCLEVBQUUsMEJBQTBCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUkzSSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUl6RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQXdGekQsTUFBTSxPQUFPLG9CQUFpSSxTQUFRLGdCQUtySjtJQTZERyxZQUFZLE1BQXNDLEVBQUUsUUFBZ0I7UUFDaEUsS0FBSyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztRQTdEcEIsZUFBVSxHQUF1QixrQkFBa0IsQ0FBQyxJQUFJLENBQUM7UUFZekQsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO1FBSzFCLHFCQUFnQixHQUErQixRQUFRLENBQUM7UUFHaEUsNEJBQTRCO1FBQ3BCLGtCQUFhLEdBQXNCLEVBQUUsQ0FBQztJQXlDOUMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsU0FBNkIsRUFBRSxHQUFHLElBQVc7UUFDdkQsUUFBUSxTQUFTLEVBQUUsQ0FBQztZQUNoQixLQUFLLGtCQUFrQixDQUFDLE1BQU07Z0JBQzFCLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzNCLEtBQUssa0JBQWtCLENBQUMsS0FBSztnQkFDekIsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDMUIsS0FBSyxrQkFBa0IsQ0FBQyxRQUFRO2dCQUM1QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNwQyxLQUFLLGtCQUFrQixDQUFDLE1BQU07Z0JBQzFCLE9BQU8sSUFB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O1FBQ3JDLEtBQUssQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUM7UUFDdkQsS0FBSyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3pDLEtBQUssQ0FBQyw4QkFBOEIsR0FBRyxJQUFJLENBQUMsOEJBQThCLENBQUM7UUFDM0UsS0FBSyxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztRQUN2RCxLQUFLLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1FBQzNELEtBQUssQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUM7UUFDL0QsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzdCLEtBQUssQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNqQyxLQUFLLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQy9DLEtBQUssQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUM7UUFDekQsS0FBSyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ25DLEtBQUssQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDL0MsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUeXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7SUVkaXRvckRlc2NyaXB0b3IsIEl0ZW1Pck9ic2VydmFibGUsIGZyb21FbnVtQ29uc3RhbnRzQXNWYWx1ZUFycmF5LCBmcm9tRW51bVZhbHVlc0FzVmFsdWVBcnJheX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7SW5wdXRUcmltVHlwZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9mb3JtL2FwaSc7XG5pbXBvcnQge0VudW1EZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcblxuaW1wb3J0IHtGaWVsZElucHV0VHlwZUVudW19IGZyb20gJy4uL21vZGVscy9maWVsZC5tb2RlbCc7XG5pbXBvcnQge0FGb3JtbHlDdXN0b21GaWVsZENvbXBvbmVudH0gZnJvbSAnLi4vbW9kZWxzL2Zvcm1seS1jdXN0b20tZmllbGQubW9kZWwnO1xuaW1wb3J0IHtDb21tb25zRm9ybWx5RmllbGRDb25maWd9IGZyb20gJy4uL21vZGVscy9mb3JtbHktZmllbGQubW9kZWwnO1xuaW1wb3J0IHtSYWRpb1ZhbHVlfSBmcm9tICcuLi9tb2RlbHMvcmFkaW8ubW9kZWwnO1xuaW1wb3J0IHtBRmllbGREZXNjcmlwdG9yfSBmcm9tICcuL2ZpZWxkLWJhc2UuZGVzY3JpcHRvcic7XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXREZXNjcmlwdG9yVHlwZSA9IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVtYmVyIHwgYm9vbGVhbiB8IERhdGUgfCBGaWxlIHwgRmlsZVtdO1xuXG5leHBvcnQgdHlwZSBGaWVsZElucHV0VGV4dE9wdHNUeXBlID0ge1xuICAgIGVtYWlsPzogYm9vbGVhbjtcbn0gJiBGaWVsZElucHV0VGV4dFZhbGlkYXRpb25PcHRzVHlwZTtcblxuZXhwb3J0IHR5cGUgRmllbGRJbnB1dFRleHRhcmVhT3B0c1R5cGUgPSB7XG4gICAgcm93cz86IG51bWJlcjtcbn0gJiBGaWVsZElucHV0VGV4dFZhbGlkYXRpb25PcHRzVHlwZTtcblxuZXhwb3J0IHR5cGUgRmllbGRJbnB1dFRleHRWYWxpZGF0aW9uT3B0c1R5cGUgPSB7XG4gICAgbWluTGVuZ3RoPzogbnVtYmVyO1xuICAgIG1heExlbmd0aD86IG51bWJlcjtcbiAgICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwO1xufTtcblxuZXhwb3J0IHR5cGUgRmllbGRJbnB1dEN1cnJlbmN5T3B0c1R5cGU8UHJvcGVydHkgPSBzdHJpbmc+ID0ge1xuICAgIGN1cnJlbmN5UHJvcGVydHk/OiBQcm9wZXJ0eTtcbiAgICBjdXJyZW5jeT86IHN0cmluZztcbiAgICBjdXJyZW5jeURpc3BsYXk/OiAnc3ltYm9sJyB8ICdjb2RlJyB8ICduYW1lJztcbn0gJiBGaWVsZElucHV0TnVtYmVyR3JvdXBpbmdPcHRzVHlwZSAmXG4gICAgRmllbGRJbnB1dE51bWJlckZyYWN0aW9uT3B0c1R5cGUgJlxuICAgIEZpZWxkSW5wdXROdW1iZXJWYWxpZGF0aW9uT3B0c1R5cGUgJlxuICAgIEZpZWxkSW5wdXRMb2NhbGVPcHRzVHlwZTtcblxuZXhwb3J0IHR5cGUgRmllbGRJbnB1dE51bWJlck9wdHNUeXBlID0gRmllbGRJbnB1dE51bWJlckdyb3VwaW5nT3B0c1R5cGUgJiBGaWVsZElucHV0TnVtYmVyRnJhY3Rpb25PcHRzVHlwZSAmIEZpZWxkSW5wdXROdW1iZXJWYWxpZGF0aW9uT3B0c1R5cGUgJiBGaWVsZElucHV0TG9jYWxlT3B0c1R5cGU7XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXROdW1iZXJHcm91cGluZ09wdHNUeXBlID0ge1xuICAgIGdyb3VwU2VwYXJhdG9yPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXROdW1iZXJWYWxpZGF0aW9uT3B0c1R5cGUgPSB7XG4gICAgbWluPzogbnVtYmVyO1xuICAgIG1heD86IG51bWJlcjtcbiAgICBzdGVwPzogbnVtYmVyO1xuICAgIGF1dG9Db3JyZWN0PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXROdW1iZXJGcmFjdGlvbk9wdHNUeXBlID0ge1xuICAgIG1pbkZyYWN0aW9uRGlnaXRzPzogbnVtYmVyO1xuICAgIG1heEZyYWN0aW9uRGlnaXRzPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgRmllbGRJbnB1dExvY2FsZU9wdHNUeXBlID0ge1xuICAgIGxvY2FsZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXREYXRlUGlja2VyT3B0c1R5cGU8RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPiA9IHtcbiAgICBmb3JtYXQ/OiBzdHJpbmc7XG4gICAgbWluPzogRGF0ZSB8IEZpZWxkSW5wdXREYXRlUGlja2VyRHluYW1pY01pbk1heEZuVHlwZTxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+O1xuICAgIG1heD86IERhdGUgfCBGaWVsZElucHV0RGF0ZVBpY2tlckR5bmFtaWNNaW5NYXhGblR5cGU8RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPjtcbiAgICBzaG93VGltZT86IGJvb2xlYW47XG4gICAgc2hvd1NlY29uZHM/OiBib29sZWFuO1xufSAmIERhdGVPcHRzVHlwZTtcblxuZXhwb3J0IHR5cGUgRGF0ZU9wdHNUeXBlID0ge1xuICAgIGFzRGF0ZU9iaj86IGJvb2xlYW47XG4gICAgdXRjPzogYm9vbGVhbjtcbiAgICBub1RpbWU/OiBib29sZWFuO1xuICAgIG5vVGltZVpvbmU/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgRmllbGRJbnB1dEZpbGVPcHRzID0ge1xuICAgIG11bHRpcGxlPzogYm9vbGVhbjtcbiAgICBtYXhGaWxlU2l6ZT86IG51bWJlcjtcbiAgICBhY2NlcHQ/OiBzdHJpbmc7XG4gICAgb25GaWxlU2VsZWN0SGFuZGxlckZuPzogRmllbGRJbnB1dEZpbGVPblNlbGVjdEhhbmRsZXJGblR5cGU7XG59O1xuXG5leHBvcnQgdHlwZSBGaWVsZElucHV0SW1hZ2VVcmxPcHRzID0ge1xuICAgIG11bHRpcGxlPzogYm9vbGVhbjtcbiAgICBwcmV2aWV3PzogYm9vbGVhbjtcbiAgICBpbnB1dFZpc2libGVPbkRpc2FibGVkPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXRDb21wb25lbnRPcHRzID0ge1xuICAgIGZpZWxkV3JhcHBlcnM/OiBzdHJpbmdbXTtcbiAgICBpbnB1dHM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufTtcblxuZXhwb3J0IHR5cGUgRmllbGRJbnB1dEZpbGVPblNlbGVjdEhhbmRsZXJGblR5cGUgPSAoZmlsZTogRmlsZVtdIHwgbnVsbCwgY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB2b2lkO1xuZXhwb3J0IHR5cGUgRmllbGRJbnB1dERhdGVQaWNrZXJEeW5hbWljTWluTWF4Rm5UeXBlPFZhbHVlLCBGb3JtVmFsdWUsIFBhcmVudEZvcm1WYWx1ZT4gPSAoXG4gICAgY29udHJvbDogQWJzdHJhY3RDb250cm9sPFZhbHVlPixcbiAgICBmaWVsZDogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnPFZhbHVlLCBGb3JtVmFsdWUsIFBhcmVudEZvcm1WYWx1ZT5cbikgPT4gSXRlbU9yT2JzZXJ2YWJsZTxEYXRlIHwgdW5kZWZpbmVkPjtcblxuZXhwb3J0IGNsYXNzIEZpZWxkSW5wdXREZXNjcmlwdG9yPEVkaXRvck1vZGVsLCBGaWVsZE1vZGVsID0gRmllbGRJbnB1dERlc2NyaXB0b3JUeXBlLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQ+IGV4dGVuZHMgQUZpZWxkRGVzY3JpcHRvcjxcbiAgICBGaWVsZE1vZGVsLFxuICAgIEVkaXRvck1vZGVsLFxuICAgIEZpZWxkVmFsdWUsXG4gICAgUGFyZW50RWRpdG9yTW9kZWxcbj4ge1xuICAgIHByaXZhdGUgX2ZpZWxkVHlwZTogRmllbGRJbnB1dFR5cGVFbnVtID0gRmllbGRJbnB1dFR5cGVFbnVtLlRleHQ7XG5cbiAgICAvLyB0ZXh0YXJlYSBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gICAgcHJpdmF0ZSBfcm93cz86IG51bWJlcjtcblxuICAgIC8vIG51bWJlciBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gICAgcHJpdmF0ZSBfbnVtYmVyTWluPzogbnVtYmVyO1xuICAgIHByaXZhdGUgX251bWJlck1heD86IG51bWJlcjtcbiAgICBwcml2YXRlIF9udW1iZXJTdGVwPzogbnVtYmVyO1xuICAgIHByaXZhdGUgX251bWJlckF1dG9Db3JyZWN0PzogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9udW1iZXJNaW5GcmFjdGlvbkRpZ2l0cz86IG51bWJlcjtcbiAgICBwcml2YXRlIF9udW1iZXJNYXhGcmFjdGlvbkRpZ2l0cz86IG51bWJlcjtcbiAgICBwcml2YXRlIF9udW1iZXJVc2VHcm91cGluZyA9IHRydWU7XG4gICAgcHJpdmF0ZSBfbG9jYWxlPzogc3RyaW5nO1xuXG4gICAgLy8gY3VycmVuY3kgc3BlY2lmaWMgcHJvcGVydGllc1xuICAgIHByaXZhdGUgX2N1cnJlbmN5Pzogc3RyaW5nO1xuICAgIHByaXZhdGUgX2N1cnJlbmN5RGlzcGxheTogJ3N5bWJvbCcgfCAnY29kZScgfCAnbmFtZScgPSAnc3ltYm9sJztcbiAgICBwcml2YXRlIF9jdXJyZW5jeUZyb21Qcm9wZXJ0eT86IHN0cmluZztcblxuICAgIC8vIHJhZGlvIHNwZWNpZmljIHByb3BlcnRpZXNcbiAgICBwcml2YXRlIF9yYWRpb09wdGlvbnM6IEFycmF5PFJhZGlvVmFsdWU+ID0gW107XG5cbiAgICAvLyBkYXRlcGlja2VyIHNwZWNpZmljIHByb3BlcnRpZXNcbiAgICBwcml2YXRlIF9kYXRlUGlja2VyRm9ybWF0Pzogc3RyaW5nO1xuICAgIHByaXZhdGUgX2RhdGVQaWNrZXJNaW4/OiBEYXRlIHwgRmllbGRJbnB1dERhdGVQaWNrZXJEeW5hbWljTWluTWF4Rm5UeXBlPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD47XG4gICAgcHJpdmF0ZSBfZGF0ZVBpY2tlck1heD86IERhdGUgfCBGaWVsZElucHV0RGF0ZVBpY2tlckR5bmFtaWNNaW5NYXhGblR5cGU8RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPjtcbiAgICBwcml2YXRlIF9kYXRlUGlja2VyU2hvd1RpbWU/OiBib29sZWFuO1xuICAgIHByaXZhdGUgX2RhdGVQaWNrZXJTaG93U2Vjb25kcz86IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBfZGF0ZVBpY2tlclZhbHVlVXRjPzogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9kYXRlUGlja2VyVmFsdWVOb1RpbWV6b25lPzogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9kYXRlUGlja2VyVmFsdWVOb1RpbWU/OiBib29sZWFuO1xuICAgIHByaXZhdGUgX2RhdGVQaWNrZXJWYWx1ZUFzRGF0ZU9iaj86IGJvb2xlYW47XG5cbiAgICAvLyBpbnB1dCBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gICAgcHJpdmF0ZSBfbWF4TGVuZ3RoPzogbnVtYmVyO1xuICAgIHByaXZhdGUgX21pbkxlbmd0aD86IG51bWJlcjtcbiAgICBwcml2YXRlIF9wYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwO1xuICAgIHByaXZhdGUgX2lucHV0VHJpbT86IElucHV0VHJpbVR5cGU7XG4gICAgcHJpdmF0ZSBfdmFsaWRhdGlvbkVtYWlsPzogYm9vbGVhbjtcblxuICAgIC8vIG1hc2sgc3BlY2lmaWMgcHJvcGVydGllc1xuICAgIHByaXZhdGUgX21hc2s/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfc2xvdENoYXI/OiBzdHJpbmc7XG5cbiAgICAvLyBmaWxlIHNwZWNpZmljIHByb3BlcnRpZXNcbiAgICBwcml2YXRlIF9maWxlTXVsdGlwbGU/OiBib29sZWFuO1xuICAgIHByaXZhdGUgX2ZpbGVNYXhGaWxlU2l6ZT86IG51bWJlcjtcbiAgICBwcml2YXRlIF9maWxlQWNjZXB0Pzogc3RyaW5nO1xuICAgIHByaXZhdGUgX2ZpbGVPblNlbGVjdEhhbmRsZXI/OiBGaWVsZElucHV0RmlsZU9uU2VsZWN0SGFuZGxlckZuVHlwZTtcblxuICAgIC8vIGltYWdlIHNwZWNpZmljIHByb3BlcnRpZXNcbiAgICBwcml2YXRlIF9pbWFnZVByZXZpZXc/OiBib29sZWFuO1xuICAgIHByaXZhdGUgX2ltYWdlVXJsSW5wdXRIaWRkZW5PbkRpc2FibGVkPzogYm9vbGVhbjtcblxuICAgIC8vIGN1c3RvbSBjb21wb25lbnQgcHJvcGVydGllc1xuICAgIHByaXZhdGUgX2N1c3RvbUNvbXBvbmVudFR5cGU/OiBUeXBlPEFGb3JtbHlDdXN0b21GaWVsZENvbXBvbmVudDxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+PjtcbiAgICBwcml2YXRlIF9jdXN0b21Db21wb25lbnRJbnB1dHM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIHByaXZhdGUgX2N1c3RvbUNvbXBvbmVudFdyYXBwZXJzPzogc3RyaW5nW107XG5cbiAgICBjb25zdHJ1Y3RvcihlZGl0b3I6IElFZGl0b3JEZXNjcmlwdG9yPEVkaXRvck1vZGVsPiwgcHJvcGVydHk6IHN0cmluZykge1xuICAgICAgICBzdXBlcihlZGl0b3IsIHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjb252ZXJ0cyBmaWVsZCB0byBnaXZlbiB0eXBlIHdpdGggYWRkaXRpb25hbCBhcmd1bWVudHNcbiAgICAgKiBAcGFyYW0gZmllbGRUeXBlIGZpZWxkIHR5cGUgZW51bVxuICAgICAqIEBwYXJhbSBhcmdzIGFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBmb3IgZmllbGQgKG9wdGlvbmFsKVxuICAgICAqL1xuICAgIHB1YmxpYyBhc1R5cGUoZmllbGRUeXBlOiBGaWVsZElucHV0VHlwZUVudW0sIC4uLmFyZ3M6IGFueVtdKTogdGhpcyB7XG4gICAgICAgIHN3aXRjaCAoZmllbGRUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5IaWRkZW46XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNIaWRkZW4oKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkxhYmVsOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzTGFiZWwoKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLlRleHRhcmVhOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzVGV4dGFyZWEoLi4uYXJncyk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5OdW1iZXI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNOdW1iZXIoLi4uYXJncyk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5DdXJyZW5jeTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc0N1cnJlbmN5KC4uLmFyZ3MpO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uU3dpdGNoOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzU3dpdGNoKCk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5SYWRpbzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc1JhZGlvKGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uRGF0ZXBpY2tlcjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc0RhdGVQaWNrZXIoLi4uYXJncyk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5NYXNrOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzTWFzayhhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkZpbGU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNGaWxlKC4uLmFyZ3MpO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uSW1hZ2VGaWxlOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzSW1hZ2VGaWxlKC4uLmFyZ3MpO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uSW1hZ2VVcmw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNJbWFnZVVybCguLi5hcmdzKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkN1c3RvbTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc0N1c3RvbUNvbXBvbmVudChhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLlRleHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNUZXh0KGFyZ3NbMF0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmaWVsZFR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWVsZFR5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByb3dzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm93cztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG51bWJlck1pbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX251bWJlck1pbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG51bWJlck1heCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX251bWJlck1heDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG51bWJlclN0ZXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9udW1iZXJTdGVwO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbnVtYmVyQXV0b0NvcnJlY3QoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9udW1iZXJBdXRvQ29ycmVjdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG51bWJlck1pbkZyYWN0aW9uRGlnaXRzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbnVtYmVyTWluRnJhY3Rpb25EaWdpdHM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBudW1iZXJNYXhGcmFjdGlvbkRpZ2l0cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX251bWJlck1heEZyYWN0aW9uRGlnaXRzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbnVtYmVyVXNlR3JvdXBpbmcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9udW1iZXJVc2VHcm91cGluZztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJhZGlvT3B0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JhZGlvT3B0aW9ucztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGVQaWNrZXJGb3JtYXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlUGlja2VyRm9ybWF0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGF0ZVBpY2tlck1pbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVQaWNrZXJNaW47XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkYXRlUGlja2VyTWF4KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZVBpY2tlck1heDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGVQaWNrZXJTaG93VGltZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVQaWNrZXJTaG93VGltZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGVQaWNrZXJTaG93U2Vjb25kcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVQaWNrZXJTaG93U2Vjb25kcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGVQaWNrZXJWYWx1ZVV0YygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVQaWNrZXJWYWx1ZVV0YztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGVQaWNrZXJWYWx1ZU5vVGltZXpvbmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlUGlja2VyVmFsdWVOb1RpbWV6b25lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGF0ZVBpY2tlclZhbHVlTm9UaW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZVBpY2tlclZhbHVlTm9UaW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGF0ZVBpY2tlclZhbHVlQXNEYXRlT2JqKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZVBpY2tlclZhbHVlQXNEYXRlT2JqO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbWF4TGVuZ3RoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWF4TGVuZ3RoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbWluTGVuZ3RoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWluTGVuZ3RoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcGF0dGVybigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhdHRlcm47XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0cmltT3B0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5wdXRUcmltO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdmFsaWRhdGlvbkVtYWlsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsaWRhdGlvbkVtYWlsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbWFzaygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21hc2s7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzbG90Q2hhcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Nsb3RDaGFyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmlsZU11bHRpcGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsZU11bHRpcGxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmlsZU1heEZpbGVTaXplKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsZU1heEZpbGVTaXplO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmlsZUFjY2VwdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGVBY2NlcHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmaWxlT25TZWxlY3RIYW5kbGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsZU9uU2VsZWN0SGFuZGxlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGltYWdlUHJldmlldygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ltYWdlUHJldmlldztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGltYWdlVXJsSW5wdXRWaXNpYmxlT25EaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ltYWdlVXJsSW5wdXRIaWRkZW5PbkRpc2FibGVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VzdG9tQ29tcG9uZW50VHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1c3RvbUNvbXBvbmVudFR5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXN0b21Db21wb25lbnRJbnB1dHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXN0b21Db21wb25lbnRJbnB1dHM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXN0b21Db21wb25lbnRXcmFwcGVycygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1c3RvbUNvbXBvbmVudFdyYXBwZXJzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbG9jYWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VycmVuY3koKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW5jeTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGN1cnJlbmN5RnJvbVByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVuY3lGcm9tUHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXJyZW5jeURpc3BsYXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW5jeURpc3BsYXk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzSGlkZGVuKCk6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWVsZFR5cGUgPSBGaWVsZElucHV0VHlwZUVudW0uSGlkZGVuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNMYWJlbCgpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmllbGRUeXBlID0gRmllbGRJbnB1dFR5cGVFbnVtLkxhYmVsO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNUZXh0KG9wdHM/OiBGaWVsZElucHV0VGV4dE9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2ZpZWxkVHlwZSA9IEZpZWxkSW5wdXRUeXBlRW51bS5UZXh0O1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoVGV4dFZhbGlkYXRpb24ob3B0cykud2l0aFRleHRWYWxpZGF0aW9uRW1haWwob3B0cz8uZW1haWwgPz8gZmFsc2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc1RleHRhcmVhKG9wdHM/OiBGaWVsZElucHV0VGV4dGFyZWFPcHRzVHlwZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWVsZFR5cGUgPSBGaWVsZElucHV0VHlwZUVudW0uVGV4dGFyZWE7XG4gICAgICAgIHRoaXMuX3Jvd3MgPSBvcHRzPy5yb3dzO1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoVGV4dFZhbGlkYXRpb24ob3B0cyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzTnVtYmVyKG9wdHM/OiBGaWVsZElucHV0TnVtYmVyT3B0c1R5cGUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmllbGRUeXBlID0gRmllbGRJbnB1dFR5cGVFbnVtLk51bWJlcjtcbiAgICAgICAgcmV0dXJuIHRoaXMud2l0aE51bWJlckdyb3VwaW5nKG9wdHM/Lmdyb3VwU2VwYXJhdG9yID8/IGZhbHNlKVxuICAgICAgICAgICAgLndpdGhOdW1iZXJGcmFjdGlvbnMob3B0cylcbiAgICAgICAgICAgIC53aXRoTnVtYmVyVmFsaWRhdGlvbihvcHRzKVxuICAgICAgICAgICAgLndpdGhMb2NhbGUob3B0cz8ubG9jYWxlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNDdXJyZW5jeShvcHRzPzogRmllbGRJbnB1dEN1cnJlbmN5T3B0c1R5cGU8a2V5b2YgRWRpdG9yTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFzQ3VycmVuY3lVbnNhZmUoPEZpZWxkSW5wdXRDdXJyZW5jeU9wdHNUeXBlPntcbiAgICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgICAgICBjdXJyZW5jeVByb3BlcnR5OiBvcHRzPy5jdXJyZW5jeVByb3BlcnR5ID8gKG9wdHMuY3VycmVuY3lQcm9wZXJ0eSBhcyBzdHJpbmcpIDogdW5kZWZpbmVkXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0N1cnJlbmN5VW5zYWZlKG9wdHM/OiBGaWVsZElucHV0Q3VycmVuY3lPcHRzVHlwZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWVsZFR5cGUgPSBGaWVsZElucHV0VHlwZUVudW0uQ3VycmVuY3k7XG4gICAgICAgIHRoaXMuX2N1cnJlbmN5RnJvbVByb3BlcnR5ID0gb3B0cz8uY3VycmVuY3lQcm9wZXJ0eTtcbiAgICAgICAgdGhpcy5fY3VycmVuY3kgPSBvcHRzPy5jdXJyZW5jeSA/PyB0aGlzLl9jdXJyZW5jeTtcbiAgICAgICAgdGhpcy5fY3VycmVuY3lEaXNwbGF5ID0gb3B0cz8uY3VycmVuY3lEaXNwbGF5ID8/IHRoaXMuX2N1cnJlbmN5RGlzcGxheTtcbiAgICAgICAgcmV0dXJuIHRoaXMud2l0aE51bWJlckdyb3VwaW5nKG9wdHM/Lmdyb3VwU2VwYXJhdG9yID8/IGZhbHNlKVxuICAgICAgICAgICAgLndpdGhOdW1iZXJGcmFjdGlvbnMoe1xuICAgICAgICAgICAgICAgIG1heEZyYWN0aW9uRGlnaXRzOiBvcHRzPy5tYXhGcmFjdGlvbkRpZ2l0cyA/PyAyLFxuICAgICAgICAgICAgICAgIG1pbkZyYWN0aW9uRGlnaXRzOiBvcHRzPy5taW5GcmFjdGlvbkRpZ2l0cyA/PyAyXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLndpdGhOdW1iZXJWYWxpZGF0aW9uKG9wdHMpXG4gICAgICAgICAgICAud2l0aExvY2FsZShvcHRzPy5sb2NhbGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc1N3aXRjaCgpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmllbGRUeXBlID0gRmllbGRJbnB1dFR5cGVFbnVtLlN3aXRjaDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzUmFkaW8ob3B0aW9uczogQXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj4sIG9wdGlvbnNUaXRsZVBhdGg/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmllbGRUeXBlID0gRmllbGRJbnB1dFR5cGVFbnVtLlJhZGlvO1xuICAgICAgICB0aGlzLl9yYWRpb09wdGlvbnMgPSBvcHRpb25zLm1hcChvID0+IDxSYWRpb1ZhbHVlPnt2YWx1ZTogbywgdGl0bGU6IGAke29wdGlvbnNUaXRsZVBhdGggPyBgJHtvcHRpb25zVGl0bGVQYXRofS5gIDogJyd9JHtvfWB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzUmFkaW9Gcm9tRW51bTxFbnVtPihlbnVtTW9kZWw6IEVudW1EZXNjcmlwdG9yPEVudW0+LCB2YWx1ZXM/OiBBcnJheTxFbnVtPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWVsZFR5cGUgPSBGaWVsZElucHV0VHlwZUVudW0uUmFkaW87XG4gICAgICAgIHRoaXMuX3JhZGlvT3B0aW9ucyA9IEFycmF5LmlzQXJyYXkodmFsdWVzKVxuICAgICAgICAgICAgPyBmcm9tRW51bVZhbHVlc0FzVmFsdWVBcnJheTxFbnVtPihlbnVtTW9kZWwudHlwZSwgdmFsdWVzLCBlbnVtTW9kZWwubmFtZUFzVmFsdWUsIGVudW1Nb2RlbC5pMThuQmFzZUtleSA/PyB1bmRlZmluZWQpXG4gICAgICAgICAgICA6IGZyb21FbnVtQ29uc3RhbnRzQXNWYWx1ZUFycmF5KGVudW1Nb2RlbC50eXBlLCBlbnVtTW9kZWwubmFtZUFzVmFsdWUsIGVudW1Nb2RlbC5pMThuQmFzZUtleSA/PyB1bmRlZmluZWQpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNEYXRlUGlja2VyKG9wdHM/OiBGaWVsZElucHV0RGF0ZVBpY2tlck9wdHNUeXBlPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmllbGRUeXBlID0gRmllbGRJbnB1dFR5cGVFbnVtLkRhdGVwaWNrZXI7XG4gICAgICAgIHRoaXMuX2RhdGVQaWNrZXJGb3JtYXQgPSBvcHRzPy5mb3JtYXQ7XG4gICAgICAgIHRoaXMuX2RhdGVQaWNrZXJNaW4gPSBvcHRzPy5taW47XG4gICAgICAgIHRoaXMuX2RhdGVQaWNrZXJNYXggPSBvcHRzPy5tYXg7XG4gICAgICAgIHRoaXMuX2RhdGVQaWNrZXJTaG93VGltZSA9IG9wdHM/LnNob3dUaW1lO1xuICAgICAgICB0aGlzLl9kYXRlUGlja2VyU2hvd1NlY29uZHMgPSBvcHRzPy5zaG93U2Vjb25kcztcbiAgICAgICAgdGhpcy5fZGF0ZVBpY2tlclZhbHVlQXNEYXRlT2JqID0gb3B0cz8uYXNEYXRlT2JqO1xuXG4gICAgICAgIHRoaXMud2l0aERhdGVWYWx1ZSh7XG4gICAgICAgICAgICBhc0RhdGVPYmo6IG9wdHM/LmFzRGF0ZU9iaixcbiAgICAgICAgICAgIHV0Yzogb3B0cz8udXRjLFxuICAgICAgICAgICAgbm9UaW1lWm9uZTogb3B0cz8ubm9UaW1lWm9uZSxcbiAgICAgICAgICAgIG5vVGltZTogb3B0cz8ubm9UaW1lXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc01hc2sobWFzazogc3RyaW5nLCBzbG90Q2hhcjogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2ZpZWxkVHlwZSA9IEZpZWxkSW5wdXRUeXBlRW51bS5NYXNrO1xuICAgICAgICB0aGlzLl9tYXNrID0gbWFzaztcbiAgICAgICAgdGhpcy5fc2xvdENoYXIgPSBzbG90Q2hhcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzRmlsZShvcHRzPzogRmllbGRJbnB1dEZpbGVPcHRzKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2ZpZWxkVHlwZSA9IEZpZWxkSW5wdXRUeXBlRW51bS5GaWxlO1xuICAgICAgICB0aGlzLl9maWxlTXVsdGlwbGUgPSBvcHRzPy5tdWx0aXBsZTtcbiAgICAgICAgdGhpcy5fZmlsZU1heEZpbGVTaXplID0gb3B0cz8ubWF4RmlsZVNpemU7XG4gICAgICAgIHRoaXMuX2ZpbGVBY2NlcHQgPSBvcHRzPy5hY2NlcHQ7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhGaWxlT25TZWxlY3RIYW5kbGVyKG9wdHM/Lm9uRmlsZVNlbGVjdEhhbmRsZXJGbik7XG4gICAgfVxuXG4gICAgcHVibGljIGFzSW1hZ2VGaWxlKG9wdHM/OiBGaWVsZElucHV0RmlsZU9wdHMpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5hc0ZpbGUob3B0cyk7XG4gICAgICAgIHRoaXMuX2ZpZWxkVHlwZSA9IEZpZWxkSW5wdXRUeXBlRW51bS5JbWFnZUZpbGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0ltYWdlVXJsKG9wdHM/OiBGaWVsZElucHV0SW1hZ2VVcmxPcHRzKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2ZpZWxkVHlwZSA9IEZpZWxkSW5wdXRUeXBlRW51bS5JbWFnZVVybDtcbiAgICAgICAgdGhpcy5fZmlsZU11bHRpcGxlID0gb3B0cz8ubXVsdGlwbGU7XG4gICAgICAgIHRoaXMuX2ltYWdlUHJldmlldyA9IG9wdHM/LnByZXZpZXc7XG4gICAgICAgIHRoaXMuX2ltYWdlVXJsSW5wdXRIaWRkZW5PbkRpc2FibGVkID0gb3B0cz8uaW5wdXRWaXNpYmxlT25EaXNhYmxlZDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzQ3VzdG9tQ29tcG9uZW50KGNvbXBvbmVudDogVHlwZTxBRm9ybWx5Q3VzdG9tRmllbGRDb21wb25lbnQ8RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPj4sIG9wdHM/OiBGaWVsZElucHV0Q29tcG9uZW50T3B0cyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWVsZFR5cGUgPSBGaWVsZElucHV0VHlwZUVudW0uQ3VzdG9tO1xuICAgICAgICB0aGlzLl9jdXN0b21Db21wb25lbnRUeXBlID0gY29tcG9uZW50O1xuICAgICAgICB0aGlzLl9jdXN0b21Db21wb25lbnRJbnB1dHMgPSBvcHRzPy5pbnB1dHM7XG4gICAgICAgIHRoaXMuX2N1c3RvbUNvbXBvbmVudFdyYXBwZXJzID0gb3B0cz8uZmllbGRXcmFwcGVycztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhOdW1iZXJWYWxpZGF0aW9uKG9wdHM/OiBGaWVsZElucHV0TnVtYmVyVmFsaWRhdGlvbk9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX251bWJlclN0ZXAgPSBvcHRzPy5zdGVwO1xuICAgICAgICB0aGlzLl9udW1iZXJBdXRvQ29ycmVjdCA9IG9wdHM/LmF1dG9Db3JyZWN0O1xuICAgICAgICB0aGlzLl9udW1iZXJNaW4gPSBvcHRzPy5taW47XG4gICAgICAgIHRoaXMuX251bWJlck1heCA9IG9wdHM/Lm1heDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhMb2NhbGUobG9jYWxlPzogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2xvY2FsZSA9IGxvY2FsZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhOdW1iZXJGcmFjdGlvbnMob3B0cz86IEZpZWxkSW5wdXROdW1iZXJGcmFjdGlvbk9wdHNUeXBlKSB7XG4gICAgICAgIHRoaXMuX251bWJlck1pbkZyYWN0aW9uRGlnaXRzID0gb3B0cz8ubWluRnJhY3Rpb25EaWdpdHM7XG4gICAgICAgIHRoaXMuX251bWJlck1heEZyYWN0aW9uRGlnaXRzID0gb3B0cz8ubWF4RnJhY3Rpb25EaWdpdHM7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTnVtYmVyR3JvdXBpbmcodXNlR3JvdXBpbmcgPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX251bWJlclVzZUdyb3VwaW5nID0gdXNlR3JvdXBpbmc7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVGV4dFZhbGlkYXRpb24ob3B0cz86IEZpZWxkSW5wdXRUZXh0VmFsaWRhdGlvbk9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX21pbkxlbmd0aCA9IG9wdHM/Lm1pbkxlbmd0aDtcbiAgICAgICAgdGhpcy5fbWF4TGVuZ3RoID0gb3B0cz8ubWF4TGVuZ3RoO1xuICAgICAgICB0aGlzLl9wYXR0ZXJuID0gb3B0cz8ucGF0dGVybjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhJbnB1dFRyaW0odHJpbU9wdGlvbjogSW5wdXRUcmltVHlwZSA9ICdib3RoJyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9pbnB1dFRyaW0gPSB0cmltT3B0aW9uO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aERhdGVWYWx1ZShvcHRzPzogRGF0ZU9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2RhdGVQaWNrZXJWYWx1ZUFzRGF0ZU9iaiA9IG9wdHM/LmFzRGF0ZU9iajtcbiAgICAgICAgdGhpcy5fZGF0ZVBpY2tlclZhbHVlVXRjID0gb3B0cz8udXRjO1xuICAgICAgICB0aGlzLl9kYXRlUGlja2VyVmFsdWVOb1RpbWV6b25lID0gb3B0cz8ubm9UaW1lWm9uZTtcbiAgICAgICAgdGhpcy5fZGF0ZVBpY2tlclZhbHVlTm9UaW1lID0gb3B0cz8ubm9UaW1lO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFRleHRWYWxpZGF0aW9uRW1haWwoZW1haWwgPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3ZhbGlkYXRpb25FbWFpbCA9IGVtYWlsO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZpbGVPblNlbGVjdEhhbmRsZXIoZm4/OiBGaWVsZElucHV0RmlsZU9uU2VsZWN0SGFuZGxlckZuVHlwZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWxlT25TZWxlY3RIYW5kbGVyID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5KCk6IEZpZWxkSW5wdXREZXNjcmlwdG9yPEVkaXRvck1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZFZhbHVlPiB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gbmV3IEZpZWxkSW5wdXREZXNjcmlwdG9yPEVkaXRvck1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZFZhbHVlPih0aGlzLl9lZGl0b3IsIHRoaXMuX3Byb3BlcnR5KTtcbiAgICAgICAgdGhpcy5jb3B5RmllbGRzVG8oZmllbGQpO1xuICAgICAgICBmaWVsZC5fZmllbGRUeXBlID0gdGhpcy5fZmllbGRUeXBlO1xuICAgICAgICBmaWVsZC5fcm93cyA9IHRoaXMuX3Jvd3M7XG4gICAgICAgIGZpZWxkLl9udW1iZXJNaW4gPSB0aGlzLl9udW1iZXJNaW47XG4gICAgICAgIGZpZWxkLl9udW1iZXJNYXggPSB0aGlzLl9udW1iZXJNYXg7XG4gICAgICAgIGZpZWxkLl9udW1iZXJTdGVwID0gdGhpcy5fbnVtYmVyU3RlcDtcbiAgICAgICAgZmllbGQuX251bWJlckF1dG9Db3JyZWN0ID0gdGhpcy5fbnVtYmVyQXV0b0NvcnJlY3Q7XG4gICAgICAgIGZpZWxkLl9udW1iZXJNaW5GcmFjdGlvbkRpZ2l0cyA9IHRoaXMuX251bWJlck1pbkZyYWN0aW9uRGlnaXRzO1xuICAgICAgICBmaWVsZC5fbnVtYmVyTWF4RnJhY3Rpb25EaWdpdHMgPSB0aGlzLl9udW1iZXJNYXhGcmFjdGlvbkRpZ2l0cztcbiAgICAgICAgZmllbGQuX251bWJlclVzZUdyb3VwaW5nID0gdGhpcy5fbnVtYmVyVXNlR3JvdXBpbmc7XG4gICAgICAgIGZpZWxkLl9yYWRpb09wdGlvbnMgPSBbLi4udGhpcy5fcmFkaW9PcHRpb25zXTtcbiAgICAgICAgZmllbGQuX2RhdGVQaWNrZXJGb3JtYXQgPSB0aGlzLl9kYXRlUGlja2VyRm9ybWF0O1xuICAgICAgICBmaWVsZC5fZGF0ZVBpY2tlck1pbiA9IHRoaXMuX2RhdGVQaWNrZXJNaW47XG4gICAgICAgIGZpZWxkLl9kYXRlUGlja2VyTWF4ID0gdGhpcy5fZGF0ZVBpY2tlck1heDtcbiAgICAgICAgZmllbGQuX2RhdGVQaWNrZXJTaG93VGltZSA9IHRoaXMuX2RhdGVQaWNrZXJTaG93VGltZTtcbiAgICAgICAgZmllbGQuX2RhdGVQaWNrZXJTaG93U2Vjb25kcyA9IHRoaXMuX2RhdGVQaWNrZXJTaG93U2Vjb25kcztcbiAgICAgICAgZmllbGQuX2RhdGVQaWNrZXJWYWx1ZVV0YyA9IHRoaXMuX2RhdGVQaWNrZXJWYWx1ZVV0YztcbiAgICAgICAgZmllbGQuX2RhdGVQaWNrZXJWYWx1ZU5vVGltZXpvbmUgPSB0aGlzLl9kYXRlUGlja2VyVmFsdWVOb1RpbWV6b25lO1xuICAgICAgICBmaWVsZC5fZGF0ZVBpY2tlclZhbHVlTm9UaW1lID0gdGhpcy5fZGF0ZVBpY2tlclZhbHVlTm9UaW1lO1xuICAgICAgICBmaWVsZC5fZGF0ZVBpY2tlclZhbHVlQXNEYXRlT2JqID0gdGhpcy5fZGF0ZVBpY2tlclZhbHVlQXNEYXRlT2JqO1xuICAgICAgICBmaWVsZC5fbWF4TGVuZ3RoID0gdGhpcy5fbWF4TGVuZ3RoO1xuICAgICAgICBmaWVsZC5fbWluTGVuZ3RoID0gdGhpcy5fbWluTGVuZ3RoO1xuICAgICAgICBmaWVsZC5fcGF0dGVybiA9IHRoaXMuX3BhdHRlcm47XG4gICAgICAgIGZpZWxkLl9tYXNrID0gdGhpcy5fbWFzaztcbiAgICAgICAgZmllbGQuX3Nsb3RDaGFyID0gdGhpcy5fc2xvdENoYXI7XG4gICAgICAgIGZpZWxkLl9maWxlTXVsdGlwbGUgPSB0aGlzLl9maWxlTXVsdGlwbGU7XG4gICAgICAgIGZpZWxkLl9maWxlTWF4RmlsZVNpemUgPSB0aGlzLl9maWxlTWF4RmlsZVNpemU7XG4gICAgICAgIGZpZWxkLl9maWxlQWNjZXB0ID0gdGhpcy5fZmlsZUFjY2VwdDtcbiAgICAgICAgZmllbGQuX2ZpbGVPblNlbGVjdEhhbmRsZXIgPSB0aGlzLl9maWxlT25TZWxlY3RIYW5kbGVyO1xuICAgICAgICBmaWVsZC5faW1hZ2VQcmV2aWV3ID0gdGhpcy5faW1hZ2VQcmV2aWV3O1xuICAgICAgICBmaWVsZC5faW1hZ2VVcmxJbnB1dEhpZGRlbk9uRGlzYWJsZWQgPSB0aGlzLl9pbWFnZVVybElucHV0SGlkZGVuT25EaXNhYmxlZDtcbiAgICAgICAgZmllbGQuX2N1c3RvbUNvbXBvbmVudFR5cGUgPSB0aGlzLl9jdXN0b21Db21wb25lbnRUeXBlO1xuICAgICAgICBmaWVsZC5fY3VzdG9tQ29tcG9uZW50SW5wdXRzID0gdGhpcy5fY3VzdG9tQ29tcG9uZW50SW5wdXRzO1xuICAgICAgICBmaWVsZC5fY3VzdG9tQ29tcG9uZW50V3JhcHBlcnMgPSB0aGlzLl9jdXN0b21Db21wb25lbnRXcmFwcGVycztcbiAgICAgICAgZmllbGQuX2xvY2FsZSA9IHRoaXMuX2xvY2FsZTtcbiAgICAgICAgZmllbGQuX2N1cnJlbmN5ID0gdGhpcy5fY3VycmVuY3k7XG4gICAgICAgIGZpZWxkLl9jdXJyZW5jeURpc3BsYXkgPSB0aGlzLl9jdXJyZW5jeURpc3BsYXk7XG4gICAgICAgIGZpZWxkLl9jdXJyZW5jeUZyb21Qcm9wZXJ0eSA9IHRoaXMuX2N1cnJlbmN5RnJvbVByb3BlcnR5O1xuICAgICAgICBmaWVsZC5faW5wdXRUcmltID0gdGhpcy5faW5wdXRUcmltO1xuICAgICAgICBmaWVsZC5fdmFsaWRhdGlvbkVtYWlsID0gdGhpcy5fdmFsaWRhdGlvbkVtYWlsO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxufVxuIl19
|
|
371
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuZGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2VkaXRvci9kZXNjcmlwdG9ycy9maWVsZC5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBc0MsNkJBQTZCLEVBQUUsMEJBQTBCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUkzSSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUl6RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQStGekQsTUFBTSxPQUFPLG9CQUFpSSxTQUFRLGdCQUtySjtJQTZERyxZQUFZLE1BQXNDLEVBQUUsUUFBZ0I7UUFDaEUsS0FBSyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztRQTdEcEIsZUFBVSxHQUF1QixrQkFBa0IsQ0FBQyxJQUFJLENBQUM7UUFZekQsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO1FBSzFCLHFCQUFnQixHQUErQixRQUFRLENBQUM7UUFHaEUsNEJBQTRCO1FBQ3BCLGtCQUFhLEdBQXNCLEVBQUUsQ0FBQztJQXlDOUMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsU0FBNkIsRUFBRSxHQUFHLElBQVc7UUFDdkQsUUFBUSxTQUFTLEVBQUUsQ0FBQztZQUNoQixLQUFLLGtCQUFrQixDQUFDLE1BQU07Z0JBQzFCLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzNCLEtBQUssa0JBQWtCLENBQUMsS0FBSztnQkFDekIsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDMUIsS0FBSyxrQkFBa0IsQ0FBQyxRQUFRO2dCQUM1QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNwQyxLQUFLLGtCQUFrQixDQUFDLE1BQU07Z0JBQzFCLE9BQU8sSUFB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UyxDQUFDO1FBQ2pDLEtBQUssQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN6QyxLQUFLLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQy9DLEtBQUssQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNyQyxLQUFLLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1FBQ3ZELEtBQUssQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN6QyxLQUFLLENBQUMsOEJBQThCLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDO1FBQzNFLEtBQUssQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUM7UUFDdkQsS0FBSyxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztRQUMzRCxLQUFLLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDO1FBQy9ELEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM3QixLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDakMsS0FBSyxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvQyxLQUFLLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1FBQ3pELEtBQUssQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNuQyxLQUFLLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQy9DLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge0lFZGl0b3JEZXNjcmlwdG9yLCBJdGVtT3JPYnNlcnZhYmxlLCBmcm9tRW51bUNvbnN0YW50c0FzVmFsdWVBcnJheSwgZnJvbUVudW1WYWx1ZXNBc1ZhbHVlQXJyYXl9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge0lucHV0VHJpbVR5cGV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvZm9ybS9hcGknO1xuaW1wb3J0IHtFbnVtRGVzY3JpcHRvcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9tb2RlbCc7XG5cbmltcG9ydCB7RmllbGRJbnB1dFR5cGVFbnVtfSBmcm9tICcuLi9tb2RlbHMvZmllbGQubW9kZWwnO1xuaW1wb3J0IHtBRm9ybWx5Q3VzdG9tRmllbGRDb21wb25lbnR9IGZyb20gJy4uL21vZGVscy9mb3JtbHktY3VzdG9tLWZpZWxkLm1vZGVsJztcbmltcG9ydCB7Q29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnfSBmcm9tICcuLi9tb2RlbHMvZm9ybWx5LWZpZWxkLm1vZGVsJztcbmltcG9ydCB7UmFkaW9WYWx1ZX0gZnJvbSAnLi4vbW9kZWxzL3JhZGlvLm1vZGVsJztcbmltcG9ydCB7QUZpZWxkRGVzY3JpcHRvcn0gZnJvbSAnLi9maWVsZC1iYXNlLmRlc2NyaXB0b3InO1xuXG5leHBvcnQgdHlwZSBGaWVsZElucHV0RGVzY3JpcHRvclR5cGUgPSBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bWJlciB8IGJvb2xlYW4gfCBEYXRlIHwgRmlsZSB8IEZpbGVbXTtcblxuZXhwb3J0IHR5cGUgRmllbGRJbnB1dFRleHRPcHRzVHlwZSA9IHtcbiAgICBlbWFpbD86IGJvb2xlYW47XG59ICYgRmllbGRJbnB1dFRleHRWYWxpZGF0aW9uT3B0c1R5cGU7XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXRUZXh0YXJlYU9wdHNUeXBlID0ge1xuICAgIHJvd3M/OiBudW1iZXI7XG59ICYgRmllbGRJbnB1dFRleHRWYWxpZGF0aW9uT3B0c1R5cGU7XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXRUZXh0VmFsaWRhdGlvbk9wdHNUeXBlID0ge1xuICAgIG1pbkxlbmd0aD86IG51bWJlcjtcbiAgICBtYXhMZW5ndGg/OiBudW1iZXI7XG4gICAgcGF0dGVybj86IHN0cmluZyB8IFJlZ0V4cDtcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXREYXRlUGlja2VyRGlzcGxheU9wdHNUeXBlID0ge1xuICAgIGZvcm1hdD86IHN0cmluZztcbiAgICBzaG93VGltZT86IGJvb2xlYW47XG4gICAgc2hvd1NlY29uZHM/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgRmllbGRJbnB1dERhdGVWYWxpZGF0aW9uT3B0c1R5cGU8RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPiA9IHtcbiAgICBtaW4/OiBEYXRlIHwgRmllbGRJbnB1dERhdGVQaWNrZXJEeW5hbWljTWluTWF4Rm5UeXBlPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD47XG4gICAgbWF4PzogRGF0ZSB8IEZpZWxkSW5wdXREYXRlUGlja2VyRHluYW1pY01pbk1heEZuVHlwZTxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+O1xufTtcblxuZXhwb3J0IHR5cGUgRmllbGRJbnB1dEN1cnJlbmN5T3B0c1R5cGU8UHJvcGVydHkgPSBzdHJpbmc+ID0ge1xuICAgIGN1cnJlbmN5UHJvcGVydHk/OiBQcm9wZXJ0eTtcbiAgICBjdXJyZW5jeT86IHN0cmluZztcbiAgICBjdXJyZW5jeURpc3BsYXk/OiAnc3ltYm9sJyB8ICdjb2RlJyB8ICduYW1lJztcbn0gJiBGaWVsZElucHV0TnVtYmVyR3JvdXBpbmdPcHRzVHlwZSAmXG4gICAgRmllbGRJbnB1dE51bWJlckZyYWN0aW9uT3B0c1R5cGUgJlxuICAgIEZpZWxkSW5wdXROdW1iZXJWYWxpZGF0aW9uT3B0c1R5cGUgJlxuICAgIEZpZWxkSW5wdXRMb2NhbGVPcHRzVHlwZTtcblxuZXhwb3J0IHR5cGUgRmllbGRJbnB1dE51bWJlck9wdHNUeXBlID0gRmllbGRJbnB1dE51bWJlckdyb3VwaW5nT3B0c1R5cGUgJiBGaWVsZElucHV0TnVtYmVyRnJhY3Rpb25PcHRzVHlwZSAmIEZpZWxkSW5wdXROdW1iZXJWYWxpZGF0aW9uT3B0c1R5cGUgJiBGaWVsZElucHV0TG9jYWxlT3B0c1R5cGU7XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXROdW1iZXJHcm91cGluZ09wdHNUeXBlID0ge1xuICAgIGdyb3VwU2VwYXJhdG9yPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXROdW1iZXJWYWxpZGF0aW9uT3B0c1R5cGUgPSB7XG4gICAgbWluPzogbnVtYmVyO1xuICAgIG1heD86IG51bWJlcjtcbiAgICBzdGVwPzogbnVtYmVyO1xuICAgIGF1dG9Db3JyZWN0PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXROdW1iZXJGcmFjdGlvbk9wdHNUeXBlID0ge1xuICAgIG1pbkZyYWN0aW9uRGlnaXRzPzogbnVtYmVyO1xuICAgIG1heEZyYWN0aW9uRGlnaXRzPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgRmllbGRJbnB1dExvY2FsZU9wdHNUeXBlID0ge1xuICAgIGxvY2FsZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXREYXRlUGlja2VyT3B0c1R5cGU8RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPiA9IEZpZWxkSW5wdXREYXRlUGlja2VyRGlzcGxheU9wdHNUeXBlICZcbiAgICBGaWVsZElucHV0RGF0ZVZhbGlkYXRpb25PcHRzVHlwZTxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+ICZcbiAgICBEYXRlT3B0c1R5cGU7XG5cbmV4cG9ydCB0eXBlIERhdGVPcHRzVHlwZSA9IHtcbiAgICBhc0RhdGVPYmo/OiBib29sZWFuO1xuICAgIHV0Yz86IGJvb2xlYW47XG4gICAgbm9UaW1lPzogYm9vbGVhbjtcbiAgICBub1RpbWVab25lPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXRGaWxlT3B0cyA9IHtcbiAgICBtdWx0aXBsZT86IGJvb2xlYW47XG4gICAgbWF4RmlsZVNpemU/OiBudW1iZXI7XG4gICAgYWNjZXB0Pzogc3RyaW5nO1xuICAgIG9uRmlsZVNlbGVjdEhhbmRsZXJGbj86IEZpZWxkSW5wdXRGaWxlT25TZWxlY3RIYW5kbGVyRm5UeXBlO1xufTtcblxuZXhwb3J0IHR5cGUgRmllbGRJbnB1dEltYWdlVXJsT3B0cyA9IHtcbiAgICBtdWx0aXBsZT86IGJvb2xlYW47XG4gICAgcHJldmlldz86IGJvb2xlYW47XG4gICAgaW5wdXRWaXNpYmxlT25EaXNhYmxlZD86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBGaWVsZElucHV0Q29tcG9uZW50T3B0cyA9IHtcbiAgICBmaWVsZFdyYXBwZXJzPzogc3RyaW5nW107XG4gICAgaW5wdXRzPzogUmVjb3JkPHN0cmluZywgYW55Pjtcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXRGaWxlT25TZWxlY3RIYW5kbGVyRm5UeXBlID0gKGZpbGU6IEZpbGVbXSB8IG51bGwsIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4gdm9pZDtcbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXREYXRlUGlja2VyRHluYW1pY01pbk1heEZuVHlwZTxWYWx1ZSwgRm9ybVZhbHVlLCBQYXJlbnRGb3JtVmFsdWU+ID0gKFxuICAgIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDxWYWx1ZT4sXG4gICAgZmllbGQ6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZzxWYWx1ZSwgRm9ybVZhbHVlLCBQYXJlbnRGb3JtVmFsdWU+XG4pID0+IEl0ZW1Pck9ic2VydmFibGU8RGF0ZSB8IHVuZGVmaW5lZD47XG5cbmV4cG9ydCBjbGFzcyBGaWVsZElucHV0RGVzY3JpcHRvcjxFZGl0b3JNb2RlbCwgRmllbGRNb2RlbCA9IEZpZWxkSW5wdXREZXNjcmlwdG9yVHlwZSwgRmllbGRWYWx1ZSA9IEZpZWxkTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkPiBleHRlbmRzIEFGaWVsZERlc2NyaXB0b3I8XG4gICAgRmllbGRNb2RlbCxcbiAgICBFZGl0b3JNb2RlbCxcbiAgICBGaWVsZFZhbHVlLFxuICAgIFBhcmVudEVkaXRvck1vZGVsXG4+IHtcbiAgICBwcml2YXRlIF9maWVsZFR5cGU6IEZpZWxkSW5wdXRUeXBlRW51bSA9IEZpZWxkSW5wdXRUeXBlRW51bS5UZXh0O1xuXG4gICAgLy8gdGV4dGFyZWEgc3BlY2lmaWMgcHJvcGVydGllc1xuICAgIHByaXZhdGUgX3Jvd3M/OiBudW1iZXI7XG5cbiAgICAvLyBudW1iZXIgc3BlY2lmaWMgcHJvcGVydGllc1xuICAgIHByaXZhdGUgX251bWJlck1pbj86IG51bWJlcjtcbiAgICBwcml2YXRlIF9udW1iZXJNYXg/OiBudW1iZXI7XG4gICAgcHJpdmF0ZSBfbnVtYmVyU3RlcD86IG51bWJlcjtcbiAgICBwcml2YXRlIF9udW1iZXJBdXRvQ29ycmVjdD86IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBfbnVtYmVyTWluRnJhY3Rpb25EaWdpdHM/OiBudW1iZXI7XG4gICAgcHJpdmF0ZSBfbnVtYmVyTWF4RnJhY3Rpb25EaWdpdHM/OiBudW1iZXI7XG4gICAgcHJpdmF0ZSBfbnVtYmVyVXNlR3JvdXBpbmcgPSB0cnVlO1xuICAgIHByaXZhdGUgX2xvY2FsZT86IHN0cmluZztcblxuICAgIC8vIGN1cnJlbmN5IHNwZWNpZmljIHByb3BlcnRpZXNcbiAgICBwcml2YXRlIF9jdXJyZW5jeT86IHN0cmluZztcbiAgICBwcml2YXRlIF9jdXJyZW5jeURpc3BsYXk6ICdzeW1ib2wnIHwgJ2NvZGUnIHwgJ25hbWUnID0gJ3N5bWJvbCc7XG4gICAgcHJpdmF0ZSBfY3VycmVuY3lGcm9tUHJvcGVydHk/OiBzdHJpbmc7XG5cbiAgICAvLyByYWRpbyBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gICAgcHJpdmF0ZSBfcmFkaW9PcHRpb25zOiBBcnJheTxSYWRpb1ZhbHVlPiA9IFtdO1xuXG4gICAgLy8gZGF0ZXBpY2tlciBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gICAgcHJpdmF0ZSBfZGF0ZVBpY2tlckZvcm1hdD86IHN0cmluZztcbiAgICBwcml2YXRlIF9kYXRlUGlja2VyTWluPzogRGF0ZSB8IEZpZWxkSW5wdXREYXRlUGlja2VyRHluYW1pY01pbk1heEZuVHlwZTxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+O1xuICAgIHByaXZhdGUgX2RhdGVQaWNrZXJNYXg/OiBEYXRlIHwgRmllbGRJbnB1dERhdGVQaWNrZXJEeW5hbWljTWluTWF4Rm5UeXBlPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD47XG4gICAgcHJpdmF0ZSBfZGF0ZVBpY2tlclNob3dUaW1lPzogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9kYXRlUGlja2VyU2hvd1NlY29uZHM/OiBib29sZWFuO1xuICAgIHByaXZhdGUgX2RhdGVQaWNrZXJWYWx1ZVV0Yz86IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBfZGF0ZVBpY2tlclZhbHVlTm9UaW1lem9uZT86IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBfZGF0ZVBpY2tlclZhbHVlTm9UaW1lPzogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9kYXRlUGlja2VyVmFsdWVBc0RhdGVPYmo/OiBib29sZWFuO1xuXG4gICAgLy8gaW5wdXQgc3BlY2lmaWMgcHJvcGVydGllc1xuICAgIHByaXZhdGUgX21heExlbmd0aD86IG51bWJlcjtcbiAgICBwcml2YXRlIF9taW5MZW5ndGg/OiBudW1iZXI7XG4gICAgcHJpdmF0ZSBfcGF0dGVybj86IHN0cmluZyB8IFJlZ0V4cDtcbiAgICBwcml2YXRlIF9pbnB1dFRyaW0/OiBJbnB1dFRyaW1UeXBlO1xuICAgIHByaXZhdGUgX3ZhbGlkYXRpb25FbWFpbD86IGJvb2xlYW47XG5cbiAgICAvLyBtYXNrIHNwZWNpZmljIHByb3BlcnRpZXNcbiAgICBwcml2YXRlIF9tYXNrPzogc3RyaW5nO1xuICAgIHByaXZhdGUgX3Nsb3RDaGFyPzogc3RyaW5nO1xuXG4gICAgLy8gZmlsZSBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gICAgcHJpdmF0ZSBfZmlsZU11bHRpcGxlPzogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9maWxlTWF4RmlsZVNpemU/OiBudW1iZXI7XG4gICAgcHJpdmF0ZSBfZmlsZUFjY2VwdD86IHN0cmluZztcbiAgICBwcml2YXRlIF9maWxlT25TZWxlY3RIYW5kbGVyPzogRmllbGRJbnB1dEZpbGVPblNlbGVjdEhhbmRsZXJGblR5cGU7XG5cbiAgICAvLyBpbWFnZSBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gICAgcHJpdmF0ZSBfaW1hZ2VQcmV2aWV3PzogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9pbWFnZVVybElucHV0SGlkZGVuT25EaXNhYmxlZD86IGJvb2xlYW47XG5cbiAgICAvLyBjdXN0b20gY29tcG9uZW50IHByb3BlcnRpZXNcbiAgICBwcml2YXRlIF9jdXN0b21Db21wb25lbnRUeXBlPzogVHlwZTxBRm9ybWx5Q3VzdG9tRmllbGRDb21wb25lbnQ8RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPj47XG4gICAgcHJpdmF0ZSBfY3VzdG9tQ29tcG9uZW50SW5wdXRzPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBwcml2YXRlIF9jdXN0b21Db21wb25lbnRXcmFwcGVycz86IHN0cmluZ1tdO1xuXG4gICAgY29uc3RydWN0b3IoZWRpdG9yOiBJRWRpdG9yRGVzY3JpcHRvcjxFZGl0b3JNb2RlbD4sIHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoZWRpdG9yLCBwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY29udmVydHMgZmllbGQgdG8gZ2l2ZW4gdHlwZSB3aXRoIGFkZGl0aW9uYWwgYXJndW1lbnRzXG4gICAgICogQHBhcmFtIGZpZWxkVHlwZSBmaWVsZCB0eXBlIGVudW1cbiAgICAgKiBAcGFyYW0gYXJncyBhbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgZm9yIGZpZWxkIChvcHRpb25hbClcbiAgICAgKi9cbiAgICBwdWJsaWMgYXNUeXBlKGZpZWxkVHlwZTogRmllbGRJbnB1dFR5cGVFbnVtLCAuLi5hcmdzOiBhbnlbXSk6IHRoaXMge1xuICAgICAgICBzd2l0Y2ggKGZpZWxkVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uSGlkZGVuOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzSGlkZGVuKCk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5MYWJlbDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc0xhYmVsKCk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5UZXh0YXJlYTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc1RleHRhcmVhKC4uLmFyZ3MpO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uTnVtYmVyOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzTnVtYmVyKC4uLmFyZ3MpO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uQ3VycmVuY3k6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNDdXJyZW5jeSguLi5hcmdzKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLlN3aXRjaDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc1N3aXRjaCgpO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uUmFkaW86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNSYWRpbyhhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkRhdGVwaWNrZXI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNEYXRlUGlja2VyKC4uLmFyZ3MpO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uTWFzazpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc01hc2soYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5GaWxlOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzRmlsZSguLi5hcmdzKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkltYWdlRmlsZTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc0ltYWdlRmlsZSguLi5hcmdzKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkltYWdlVXJsOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzSW1hZ2VVcmwoLi4uYXJncyk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5DdXN0b206XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNDdXN0b21Db21wb25lbnQoYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5UZXh0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzVGV4dChhcmdzWzBdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmllbGRUeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRUeXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcm93cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvd3M7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBudW1iZXJNaW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9udW1iZXJNaW47XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBudW1iZXJNYXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9udW1iZXJNYXg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBudW1iZXJTdGVwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbnVtYmVyU3RlcDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG51bWJlckF1dG9Db3JyZWN0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbnVtYmVyQXV0b0NvcnJlY3Q7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBudW1iZXJNaW5GcmFjdGlvbkRpZ2l0cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX251bWJlck1pbkZyYWN0aW9uRGlnaXRzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbnVtYmVyTWF4RnJhY3Rpb25EaWdpdHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9udW1iZXJNYXhGcmFjdGlvbkRpZ2l0cztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG51bWJlclVzZUdyb3VwaW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbnVtYmVyVXNlR3JvdXBpbmc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByYWRpb09wdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yYWRpb09wdGlvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkYXRlUGlja2VyRm9ybWF0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZVBpY2tlckZvcm1hdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGVQaWNrZXJNaW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlUGlja2VyTWluO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGF0ZVBpY2tlck1heCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVQaWNrZXJNYXg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkYXRlUGlja2VyU2hvd1RpbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlUGlja2VyU2hvd1RpbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkYXRlUGlja2VyU2hvd1NlY29uZHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlUGlja2VyU2hvd1NlY29uZHM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkYXRlUGlja2VyVmFsdWVVdGMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlUGlja2VyVmFsdWVVdGM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkYXRlUGlja2VyVmFsdWVOb1RpbWV6b25lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZVBpY2tlclZhbHVlTm9UaW1lem9uZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGVQaWNrZXJWYWx1ZU5vVGltZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVQaWNrZXJWYWx1ZU5vVGltZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGVQaWNrZXJWYWx1ZUFzRGF0ZU9iaigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVQaWNrZXJWYWx1ZUFzRGF0ZU9iajtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1heExlbmd0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21heExlbmd0aDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1pbkxlbmd0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21pbkxlbmd0aDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHBhdHRlcm4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYXR0ZXJuO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdHJpbU9wdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lucHV0VHJpbTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHZhbGlkYXRpb25FbWFpbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRpb25FbWFpbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1hc2soKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXNrO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc2xvdENoYXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zbG90Q2hhcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZpbGVNdWx0aXBsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGVNdWx0aXBsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZpbGVNYXhGaWxlU2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGVNYXhGaWxlU2l6ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZpbGVBY2NlcHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWxlQWNjZXB0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmlsZU9uU2VsZWN0SGFuZGxlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGVPblNlbGVjdEhhbmRsZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpbWFnZVByZXZpZXcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbWFnZVByZXZpZXc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpbWFnZVVybElucHV0VmlzaWJsZU9uRGlzYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbWFnZVVybElucHV0SGlkZGVuT25EaXNhYmxlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGN1c3RvbUNvbXBvbmVudFR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXN0b21Db21wb25lbnRUeXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VzdG9tQ29tcG9uZW50SW5wdXRzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VzdG9tQ29tcG9uZW50SW5wdXRzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VzdG9tQ29tcG9uZW50V3JhcHBlcnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXN0b21Db21wb25lbnRXcmFwcGVycztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxvY2FsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGN1cnJlbmN5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVuY3k7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXJyZW5jeUZyb21Qcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbmN5RnJvbVByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VycmVuY3lEaXNwbGF5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVuY3lEaXNwbGF5O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0hpZGRlbigpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmllbGRUeXBlID0gRmllbGRJbnB1dFR5cGVFbnVtLkhpZGRlbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzTGFiZWwoKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2ZpZWxkVHlwZSA9IEZpZWxkSW5wdXRUeXBlRW51bS5MYWJlbDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzVGV4dChvcHRzPzogRmllbGRJbnB1dFRleHRPcHRzVHlwZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWVsZFR5cGUgPSBGaWVsZElucHV0VHlwZUVudW0uVGV4dDtcbiAgICAgICAgcmV0dXJuIHRoaXMud2l0aFRleHRWYWxpZGF0aW9uKG9wdHMpLndpdGhUZXh0VmFsaWRhdGlvbkVtYWlsKG9wdHM/LmVtYWlsID8/IGZhbHNlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNUZXh0YXJlYShvcHRzPzogRmllbGRJbnB1dFRleHRhcmVhT3B0c1R5cGUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmllbGRUeXBlID0gRmllbGRJbnB1dFR5cGVFbnVtLlRleHRhcmVhO1xuICAgICAgICB0aGlzLl9yb3dzID0gb3B0cz8ucm93cztcbiAgICAgICAgcmV0dXJuIHRoaXMud2l0aFRleHRWYWxpZGF0aW9uKG9wdHMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc051bWJlcihvcHRzPzogRmllbGRJbnB1dE51bWJlck9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2ZpZWxkVHlwZSA9IEZpZWxkSW5wdXRUeXBlRW51bS5OdW1iZXI7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhOdW1iZXJHcm91cGluZyhvcHRzPy5ncm91cFNlcGFyYXRvciA/PyBmYWxzZSlcbiAgICAgICAgICAgIC53aXRoTnVtYmVyRnJhY3Rpb25zKG9wdHMpXG4gICAgICAgICAgICAud2l0aE51bWJlclZhbGlkYXRpb24ob3B0cylcbiAgICAgICAgICAgIC53aXRoTG9jYWxlKG9wdHM/LmxvY2FsZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzQ3VycmVuY3kob3B0cz86IEZpZWxkSW5wdXRDdXJyZW5jeU9wdHNUeXBlPGtleW9mIEVkaXRvck1vZGVsPik6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy5hc0N1cnJlbmN5VW5zYWZlKDxGaWVsZElucHV0Q3VycmVuY3lPcHRzVHlwZT57XG4gICAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICAgICAgY3VycmVuY3lQcm9wZXJ0eTogb3B0cz8uY3VycmVuY3lQcm9wZXJ0eSA/IChvcHRzLmN1cnJlbmN5UHJvcGVydHkgYXMgc3RyaW5nKSA6IHVuZGVmaW5lZFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNDdXJyZW5jeVVuc2FmZShvcHRzPzogRmllbGRJbnB1dEN1cnJlbmN5T3B0c1R5cGUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmllbGRUeXBlID0gRmllbGRJbnB1dFR5cGVFbnVtLkN1cnJlbmN5O1xuICAgICAgICB0aGlzLl9jdXJyZW5jeUZyb21Qcm9wZXJ0eSA9IG9wdHM/LmN1cnJlbmN5UHJvcGVydHk7XG4gICAgICAgIHRoaXMuX2N1cnJlbmN5ID0gb3B0cz8uY3VycmVuY3kgPz8gdGhpcy5fY3VycmVuY3k7XG4gICAgICAgIHRoaXMuX2N1cnJlbmN5RGlzcGxheSA9IG9wdHM/LmN1cnJlbmN5RGlzcGxheSA/PyB0aGlzLl9jdXJyZW5jeURpc3BsYXk7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhOdW1iZXJHcm91cGluZyhvcHRzPy5ncm91cFNlcGFyYXRvciA/PyBmYWxzZSlcbiAgICAgICAgICAgIC53aXRoTnVtYmVyRnJhY3Rpb25zKHtcbiAgICAgICAgICAgICAgICBtYXhGcmFjdGlvbkRpZ2l0czogb3B0cz8ubWF4RnJhY3Rpb25EaWdpdHMgPz8gMixcbiAgICAgICAgICAgICAgICBtaW5GcmFjdGlvbkRpZ2l0czogb3B0cz8ubWluRnJhY3Rpb25EaWdpdHMgPz8gMlxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC53aXRoTnVtYmVyVmFsaWRhdGlvbihvcHRzKVxuICAgICAgICAgICAgLndpdGhMb2NhbGUob3B0cz8ubG9jYWxlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNTd2l0Y2goKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2ZpZWxkVHlwZSA9IEZpZWxkSW5wdXRUeXBlRW51bS5Td2l0Y2g7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc1JhZGlvKG9wdGlvbnM6IEFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+LCBvcHRpb25zVGl0bGVQYXRoPzogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2ZpZWxkVHlwZSA9IEZpZWxkSW5wdXRUeXBlRW51bS5SYWRpbztcbiAgICAgICAgdGhpcy5fcmFkaW9PcHRpb25zID0gb3B0aW9ucy5tYXAobyA9PiA8UmFkaW9WYWx1ZT57dmFsdWU6IG8sIHRpdGxlOiBgJHtvcHRpb25zVGl0bGVQYXRoID8gYCR7b3B0aW9uc1RpdGxlUGF0aH0uYCA6ICcnfSR7b31gfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc1JhZGlvRnJvbUVudW08RW51bT4oZW51bU1vZGVsOiBFbnVtRGVzY3JpcHRvcjxFbnVtPiwgdmFsdWVzPzogQXJyYXk8RW51bT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmllbGRUeXBlID0gRmllbGRJbnB1dFR5cGVFbnVtLlJhZGlvO1xuICAgICAgICB0aGlzLl9yYWRpb09wdGlvbnMgPSBBcnJheS5pc0FycmF5KHZhbHVlcylcbiAgICAgICAgICAgID8gZnJvbUVudW1WYWx1ZXNBc1ZhbHVlQXJyYXk8RW51bT4oZW51bU1vZGVsLnR5cGUsIHZhbHVlcywgZW51bU1vZGVsLm5hbWVBc1ZhbHVlLCBlbnVtTW9kZWwuaTE4bkJhc2VLZXkgPz8gdW5kZWZpbmVkKVxuICAgICAgICAgICAgOiBmcm9tRW51bUNvbnN0YW50c0FzVmFsdWVBcnJheShlbnVtTW9kZWwudHlwZSwgZW51bU1vZGVsLm5hbWVBc1ZhbHVlLCBlbnVtTW9kZWwuaTE4bkJhc2VLZXkgPz8gdW5kZWZpbmVkKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzRGF0ZVBpY2tlcihvcHRzPzogRmllbGRJbnB1dERhdGVQaWNrZXJPcHRzVHlwZTxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2ZpZWxkVHlwZSA9IEZpZWxkSW5wdXRUeXBlRW51bS5EYXRlcGlja2VyO1xuICAgICAgICB0aGlzLndpdGhEYXRlVmFsaWRhdGlvbihvcHRzKTtcbiAgICAgICAgdGhpcy53aXRoRGF0ZVBpY2tlckRpc3BsYXkob3B0cyk7XG4gICAgICAgIHRoaXMud2l0aERhdGVWYWx1ZSh7XG4gICAgICAgICAgICBhc0RhdGVPYmo6IG9wdHM/LmFzRGF0ZU9iaixcbiAgICAgICAgICAgIHV0Yzogb3B0cz8udXRjLFxuICAgICAgICAgICAgbm9UaW1lWm9uZTogb3B0cz8ubm9UaW1lWm9uZSxcbiAgICAgICAgICAgIG5vVGltZTogb3B0cz8ubm9UaW1lXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc01hc2sobWFzazogc3RyaW5nLCBzbG90Q2hhcjogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2ZpZWxkVHlwZSA9IEZpZWxkSW5wdXRUeXBlRW51bS5NYXNrO1xuICAgICAgICB0aGlzLl9tYXNrID0gbWFzaztcbiAgICAgICAgdGhpcy5fc2xvdENoYXIgPSBzbG90Q2hhcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzRmlsZShvcHRzPzogRmllbGRJbnB1dEZpbGVPcHRzKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2ZpZWxkVHlwZSA9IEZpZWxkSW5wdXRUeXBlRW51bS5GaWxlO1xuICAgICAgICB0aGlzLl9maWxlTXVsdGlwbGUgPSBvcHRzPy5tdWx0aXBsZTtcbiAgICAgICAgdGhpcy5fZmlsZU1heEZpbGVTaXplID0gb3B0cz8ubWF4RmlsZVNpemU7XG4gICAgICAgIHRoaXMuX2ZpbGVBY2NlcHQgPSBvcHRzPy5hY2NlcHQ7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhGaWxlT25TZWxlY3RIYW5kbGVyKG9wdHM/Lm9uRmlsZVNlbGVjdEhhbmRsZXJGbik7XG4gICAgfVxuXG4gICAgcHVibGljIGFzSW1hZ2VGaWxlKG9wdHM/OiBGaWVsZElucHV0RmlsZU9wdHMpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5hc0ZpbGUob3B0cyk7XG4gICAgICAgIHRoaXMuX2ZpZWxkVHlwZSA9IEZpZWxkSW5wdXRUeXBlRW51bS5JbWFnZUZpbGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0ltYWdlVXJsKG9wdHM/OiBGaWVsZElucHV0SW1hZ2VVcmxPcHRzKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2ZpZWxkVHlwZSA9IEZpZWxkSW5wdXRUeXBlRW51bS5JbWFnZVVybDtcbiAgICAgICAgdGhpcy5fZmlsZU11bHRpcGxlID0gb3B0cz8ubXVsdGlwbGU7XG4gICAgICAgIHRoaXMuX2ltYWdlUHJldmlldyA9IG9wdHM/LnByZXZpZXc7XG4gICAgICAgIHRoaXMuX2ltYWdlVXJsSW5wdXRIaWRkZW5PbkRpc2FibGVkID0gb3B0cz8uaW5wdXRWaXNpYmxlT25EaXNhYmxlZDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzQ3VzdG9tQ29tcG9uZW50KGNvbXBvbmVudDogVHlwZTxBRm9ybWx5Q3VzdG9tRmllbGRDb21wb25lbnQ8RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPj4sIG9wdHM/OiBGaWVsZElucHV0Q29tcG9uZW50T3B0cyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWVsZFR5cGUgPSBGaWVsZElucHV0VHlwZUVudW0uQ3VzdG9tO1xuICAgICAgICB0aGlzLl9jdXN0b21Db21wb25lbnRUeXBlID0gY29tcG9uZW50O1xuICAgICAgICB0aGlzLl9jdXN0b21Db21wb25lbnRJbnB1dHMgPSBvcHRzPy5pbnB1dHM7XG4gICAgICAgIHRoaXMuX2N1c3RvbUNvbXBvbmVudFdyYXBwZXJzID0gb3B0cz8uZmllbGRXcmFwcGVycztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhOdW1iZXJWYWxpZGF0aW9uKG9wdHM/OiBGaWVsZElucHV0TnVtYmVyVmFsaWRhdGlvbk9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX251bWJlclN0ZXAgPSBvcHRzPy5zdGVwO1xuICAgICAgICB0aGlzLl9udW1iZXJBdXRvQ29ycmVjdCA9IG9wdHM/LmF1dG9Db3JyZWN0O1xuICAgICAgICB0aGlzLl9udW1iZXJNaW4gPSBvcHRzPy5taW47XG4gICAgICAgIHRoaXMuX251bWJlck1heCA9IG9wdHM/Lm1heDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhMb2NhbGUobG9jYWxlPzogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2xvY2FsZSA9IGxvY2FsZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhOdW1iZXJGcmFjdGlvbnMob3B0cz86IEZpZWxkSW5wdXROdW1iZXJGcmFjdGlvbk9wdHNUeXBlKSB7XG4gICAgICAgIHRoaXMuX251bWJlck1pbkZyYWN0aW9uRGlnaXRzID0gb3B0cz8ubWluRnJhY3Rpb25EaWdpdHM7XG4gICAgICAgIHRoaXMuX251bWJlck1heEZyYWN0aW9uRGlnaXRzID0gb3B0cz8ubWF4RnJhY3Rpb25EaWdpdHM7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTnVtYmVyR3JvdXBpbmcodXNlR3JvdXBpbmcgPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX251bWJlclVzZUdyb3VwaW5nID0gdXNlR3JvdXBpbmc7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVGV4dFZhbGlkYXRpb24ob3B0cz86IEZpZWxkSW5wdXRUZXh0VmFsaWRhdGlvbk9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX21pbkxlbmd0aCA9IG9wdHM/Lm1pbkxlbmd0aDtcbiAgICAgICAgdGhpcy5fbWF4TGVuZ3RoID0gb3B0cz8ubWF4TGVuZ3RoO1xuICAgICAgICB0aGlzLl9wYXR0ZXJuID0gb3B0cz8ucGF0dGVybjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEYXRlUGlja2VyRGlzcGxheShvcHRzPzogRmllbGRJbnB1dERhdGVQaWNrZXJEaXNwbGF5T3B0c1R5cGUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGF0ZVBpY2tlckZvcm1hdCA9IG9wdHM/LmZvcm1hdDtcbiAgICAgICAgdGhpcy5fZGF0ZVBpY2tlclNob3dUaW1lID0gb3B0cz8uc2hvd1RpbWU7XG4gICAgICAgIHRoaXMuX2RhdGVQaWNrZXJTaG93U2Vjb25kcyA9IG9wdHM/LnNob3dTZWNvbmRzO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aERhdGVWYWxpZGF0aW9uKG9wdHM/OiBGaWVsZElucHV0RGF0ZVZhbGlkYXRpb25PcHRzVHlwZTxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2RhdGVQaWNrZXJNaW4gPSBvcHRzPy5taW47XG4gICAgICAgIHRoaXMuX2RhdGVQaWNrZXJNYXggPSBvcHRzPy5tYXg7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoSW5wdXRUcmltKHRyaW1PcHRpb246IElucHV0VHJpbVR5cGUgPSAnYm90aCcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faW5wdXRUcmltID0gdHJpbU9wdGlvbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEYXRlVmFsdWUob3B0cz86IERhdGVPcHRzVHlwZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9kYXRlUGlja2VyVmFsdWVBc0RhdGVPYmogPSBvcHRzPy5hc0RhdGVPYmo7XG4gICAgICAgIHRoaXMuX2RhdGVQaWNrZXJWYWx1ZVV0YyA9IG9wdHM/LnV0YztcbiAgICAgICAgdGhpcy5fZGF0ZVBpY2tlclZhbHVlTm9UaW1lem9uZSA9IG9wdHM/Lm5vVGltZVpvbmU7XG4gICAgICAgIHRoaXMuX2RhdGVQaWNrZXJWYWx1ZU5vVGltZSA9IG9wdHM/Lm5vVGltZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhUZXh0VmFsaWRhdGlvbkVtYWlsKGVtYWlsID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl92YWxpZGF0aW9uRW1haWwgPSBlbWFpbDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhGaWxlT25TZWxlY3RIYW5kbGVyKGZuPzogRmllbGRJbnB1dEZpbGVPblNlbGVjdEhhbmRsZXJGblR5cGUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmlsZU9uU2VsZWN0SGFuZGxlciA9IGZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weSgpOiBGaWVsZElucHV0RGVzY3JpcHRvcjxFZGl0b3JNb2RlbCwgRmllbGRNb2RlbCwgRmllbGRWYWx1ZT4ge1xuICAgICAgICBjb25zdCBmaWVsZCA9IG5ldyBGaWVsZElucHV0RGVzY3JpcHRvcjxFZGl0b3JNb2RlbCwgRmllbGRNb2RlbCwgRmllbGRWYWx1ZT4odGhpcy5fZWRpdG9yLCB0aGlzLl9wcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuY29weUZpZWxkc1RvKGZpZWxkKTtcbiAgICAgICAgZmllbGQuX2ZpZWxkVHlwZSA9IHRoaXMuX2ZpZWxkVHlwZTtcbiAgICAgICAgZmllbGQuX3Jvd3MgPSB0aGlzLl9yb3dzO1xuICAgICAgICBmaWVsZC5fbnVtYmVyTWluID0gdGhpcy5fbnVtYmVyTWluO1xuICAgICAgICBmaWVsZC5fbnVtYmVyTWF4ID0gdGhpcy5fbnVtYmVyTWF4O1xuICAgICAgICBmaWVsZC5fbnVtYmVyU3RlcCA9IHRoaXMuX251bWJlclN0ZXA7XG4gICAgICAgIGZpZWxkLl9udW1iZXJBdXRvQ29ycmVjdCA9IHRoaXMuX251bWJlckF1dG9Db3JyZWN0O1xuICAgICAgICBmaWVsZC5fbnVtYmVyTWluRnJhY3Rpb25EaWdpdHMgPSB0aGlzLl9udW1iZXJNaW5GcmFjdGlvbkRpZ2l0cztcbiAgICAgICAgZmllbGQuX251bWJlck1heEZyYWN0aW9uRGlnaXRzID0gdGhpcy5fbnVtYmVyTWF4RnJhY3Rpb25EaWdpdHM7XG4gICAgICAgIGZpZWxkLl9udW1iZXJVc2VHcm91cGluZyA9IHRoaXMuX251bWJlclVzZUdyb3VwaW5nO1xuICAgICAgICBmaWVsZC5fcmFkaW9PcHRpb25zID0gWy4uLnRoaXMuX3JhZGlvT3B0aW9uc107XG4gICAgICAgIGZpZWxkLl9kYXRlUGlja2VyRm9ybWF0ID0gdGhpcy5fZGF0ZVBpY2tlckZvcm1hdDtcbiAgICAgICAgZmllbGQuX2RhdGVQaWNrZXJNaW4gPSB0aGlzLl9kYXRlUGlja2VyTWluO1xuICAgICAgICBmaWVsZC5fZGF0ZVBpY2tlck1heCA9IHRoaXMuX2RhdGVQaWNrZXJNYXg7XG4gICAgICAgIGZpZWxkLl9kYXRlUGlja2VyU2hvd1RpbWUgPSB0aGlzLl9kYXRlUGlja2VyU2hvd1RpbWU7XG4gICAgICAgIGZpZWxkLl9kYXRlUGlja2VyU2hvd1NlY29uZHMgPSB0aGlzLl9kYXRlUGlja2VyU2hvd1NlY29uZHM7XG4gICAgICAgIGZpZWxkLl9kYXRlUGlja2VyVmFsdWVVdGMgPSB0aGlzLl9kYXRlUGlja2VyVmFsdWVVdGM7XG4gICAgICAgIGZpZWxkLl9kYXRlUGlja2VyVmFsdWVOb1RpbWV6b25lID0gdGhpcy5fZGF0ZVBpY2tlclZhbHVlTm9UaW1lem9uZTtcbiAgICAgICAgZmllbGQuX2RhdGVQaWNrZXJWYWx1ZU5vVGltZSA9IHRoaXMuX2RhdGVQaWNrZXJWYWx1ZU5vVGltZTtcbiAgICAgICAgZmllbGQuX2RhdGVQaWNrZXJWYWx1ZUFzRGF0ZU9iaiA9IHRoaXMuX2RhdGVQaWNrZXJWYWx1ZUFzRGF0ZU9iajtcbiAgICAgICAgZmllbGQuX21heExlbmd0aCA9IHRoaXMuX21heExlbmd0aDtcbiAgICAgICAgZmllbGQuX21pbkxlbmd0aCA9IHRoaXMuX21pbkxlbmd0aDtcbiAgICAgICAgZmllbGQuX3BhdHRlcm4gPSB0aGlzLl9wYXR0ZXJuO1xuICAgICAgICBmaWVsZC5fbWFzayA9IHRoaXMuX21hc2s7XG4gICAgICAgIGZpZWxkLl9zbG90Q2hhciA9IHRoaXMuX3Nsb3RDaGFyO1xuICAgICAgICBmaWVsZC5fZmlsZU11bHRpcGxlID0gdGhpcy5fZmlsZU11bHRpcGxlO1xuICAgICAgICBmaWVsZC5fZmlsZU1heEZpbGVTaXplID0gdGhpcy5fZmlsZU1heEZpbGVTaXplO1xuICAgICAgICBmaWVsZC5fZmlsZUFjY2VwdCA9IHRoaXMuX2ZpbGVBY2NlcHQ7XG4gICAgICAgIGZpZWxkLl9maWxlT25TZWxlY3RIYW5kbGVyID0gdGhpcy5fZmlsZU9uU2VsZWN0SGFuZGxlcjtcbiAgICAgICAgZmllbGQuX2ltYWdlUHJldmlldyA9IHRoaXMuX2ltYWdlUHJldmlldztcbiAgICAgICAgZmllbGQuX2ltYWdlVXJsSW5wdXRIaWRkZW5PbkRpc2FibGVkID0gdGhpcy5faW1hZ2VVcmxJbnB1dEhpZGRlbk9uRGlzYWJsZWQ7XG4gICAgICAgIGZpZWxkLl9jdXN0b21Db21wb25lbnRUeXBlID0gdGhpcy5fY3VzdG9tQ29tcG9uZW50VHlwZTtcbiAgICAgICAgZmllbGQuX2N1c3RvbUNvbXBvbmVudElucHV0cyA9IHRoaXMuX2N1c3RvbUNvbXBvbmVudElucHV0cztcbiAgICAgICAgZmllbGQuX2N1c3RvbUNvbXBvbmVudFdyYXBwZXJzID0gdGhpcy5fY3VzdG9tQ29tcG9uZW50V3JhcHBlcnM7XG4gICAgICAgIGZpZWxkLl9sb2NhbGUgPSB0aGlzLl9sb2NhbGU7XG4gICAgICAgIGZpZWxkLl9jdXJyZW5jeSA9IHRoaXMuX2N1cnJlbmN5O1xuICAgICAgICBmaWVsZC5fY3VycmVuY3lEaXNwbGF5ID0gdGhpcy5fY3VycmVuY3lEaXNwbGF5O1xuICAgICAgICBmaWVsZC5fY3VycmVuY3lGcm9tUHJvcGVydHkgPSB0aGlzLl9jdXJyZW5jeUZyb21Qcm9wZXJ0eTtcbiAgICAgICAgZmllbGQuX2lucHV0VHJpbSA9IHRoaXMuX2lucHV0VHJpbTtcbiAgICAgICAgZmllbGQuX3ZhbGlkYXRpb25FbWFpbCA9IHRoaXMuX3ZhbGlkYXRpb25FbWFpbDtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -272,4 +272,4 @@ export function tableviewLocalizationLanguageSelectAction(descriptor) {
|
|
|
272
272
|
.withComponentFromDi(DATA_LANGUAGE_DROPDOWN_COMPONENT_IT)
|
|
273
273
|
: null;
|
|
274
274
|
}
|
|
275
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWRlZmF1bHQtYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL3RhYmxldmlldy9oZWxwZXJzL3RhYmxldmlldy1kZWZhdWx0LWFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxFQUFFLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3BILE9BQU8sRUFBQyxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBRy9GLE9BQU8sRUFBcUIsdUJBQXVCLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUMvRyxPQUFPLEVBQTJCLDZCQUE2QixFQUFDLE1BQU0sMkRBQTJELENBQUM7QUFDbEksT0FBTyxFQUFDLDZCQUE2QixFQUFFLGlDQUFpQyxFQUFFLDhCQUE4QixFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFDbkssT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0seURBQXlELENBQUM7QUFDN0YsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0saURBQWlELENBQUM7QUFDekYsT0FBTyxFQUFDLDBCQUEwQixFQUFFLG9CQUFvQixFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFDNUcsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFDLGdDQUFnQyxFQUFDLE1BQU0sK0RBQStELENBQUM7QUFDL0csT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sc0RBQXNELENBQUM7QUFDMUYsT0FBTyxFQUFDLG1DQUFtQyxFQUFDLE1BQU0sMkRBQTJELENBQUM7QUFJOUcsT0FBTyxFQUFDLGdDQUFnQyxFQUFFLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTVFLE1BQU0sQ0FBTixJQUFZLDJCQVlYO0FBWkQsV0FBWSwyQkFBMkI7SUFDbkMsbUZBQU8sQ0FBQTtJQUNQLDJFQUFHLENBQUE7SUFDSCw2RUFBSSxDQUFBO0lBQ0osK0ZBQWEsQ0FBQTtJQUNiLGlGQUFNLENBQUE7SUFDTixtR0FBZSxDQUFBO0lBQ2YsbUZBQU8sQ0FBQTtJQUNQLGlGQUFNLENBQUE7SUFDTix5RkFBVSxDQUFBO0lBQ1YsdUZBQVMsQ0FBQTtJQUNULDBIQUEwQixDQUFBO0FBQzlCLENBQUMsRUFaVywyQkFBMkIsS0FBM0IsMkJBQTJCLFFBWXRDO0FBRUQsTUFBTSx1QkFBdUIsR0FBRztJQUM1QiwyQkFBMkIsQ0FBQyxPQUFPO0lBQ25DLDJCQUEyQixDQUFDLEdBQUc7SUFDL0IsMkJBQTJCLENBQUMsSUFBSTtJQUNoQywyQkFBMkIsQ0FBQyxhQUFhO0lBQ3pDLDJCQUEyQixDQUFDLE1BQU07SUFDbEMsMkJBQTJCLENBQUMsZUFBZTtJQUMzQywyQkFBMkIsQ0FBQyxPQUFPO0lBQ25DLDJCQUEyQixDQUFDLE1BQU07SUFDbEMsMkJBQTJCLENBQUMsVUFBVTtJQUN0QywyQkFBMkIsQ0FBQyxTQUFTO0lBQ3JDLDJCQUEyQixDQUFDLDBCQUEwQjtDQUN6RCxDQUFDO0FBRUYsTUFBTSxVQUFVLDBCQUEwQjtJQUN0QyxPQUFPLENBQUMsR0FBRyx1QkFBdUIsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQ2xDLFNBQWlELEVBQ2pELGNBQThDLEVBQzlDLHVCQUFtRSxFQUNuRSxRQUEwQjtJQUUxQixPQUFPLENBQUMsY0FBYyxJQUFJLDBCQUEwQixFQUFFLENBQUM7U0FDbEQsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDaEcsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBcUMsQ0FBQztBQUNwRSxDQUFDO0FBRUQsTUFBTSxVQUFVLHFCQUFxQixDQUNqQyxJQUFpQyxFQUNqQyxTQUFpRCxFQUNqRCxjQUE4QyxFQUM5Qyx1QkFBbUUsRUFDbkUsUUFBMEI7SUFFMUIsSUFBSSx1QkFBdUIsSUFBSSxJQUFJLElBQUksdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDakYsT0FBTyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUNYLG9CQUFvQjtRQUNwQixLQUFLLDJCQUEyQixDQUFDLE9BQU87WUFDcEMsT0FBTyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3JFLEtBQUssMkJBQTJCLENBQUMsSUFBSTtZQUNqQyxPQUFPLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDL0QsS0FBSywyQkFBMkIsQ0FBQyxNQUFNO1lBQ25DLE9BQU8scUJBQXFCLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM1RCx3QkFBd0I7UUFDeEIsS0FBSywyQkFBMkIsQ0FBQyxHQUFHO1lBQ2hDLE9BQU8sa0JBQWtCLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM3RCxLQUFLLDJCQUEyQixDQUFDLDBCQUEwQjtZQUN2RCxPQUFPLHlDQUF5QyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hFLEtBQUssMkJBQTJCLENBQUMsT0FBTztZQUNwQyxPQUFPLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuRCxLQUFLLDJCQUEyQixDQUFDLE1BQU07WUFDbkMsT0FBTyxjQUFjLElBQUksSUFBSSxJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMsMkJBQTJCLENBQUMsVUFBVSxDQUFDLElBQUksY0FBYyxDQUFDLFFBQVEsQ0FBQywyQkFBMkIsQ0FBQyxTQUFTLENBQUM7Z0JBQzlKLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLGNBQWMsQ0FBQztnQkFDNUQsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNmLGlCQUFpQjtRQUNqQixLQUFLLDJCQUEyQixDQUFDLGFBQWE7WUFDMUMsT0FBTyxjQUFjLElBQUksSUFBSSxJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDO2dCQUN0RixDQUFDLENBQUMsNEJBQTRCLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxFQUFFLFFBQVEsQ0FBQztnQkFDOUcsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNmLEtBQUssMkJBQTJCLENBQUMsZUFBZTtZQUM1QyxPQUFPLGNBQWMsSUFBSSxJQUFJLElBQUksY0FBYyxDQUFDLFFBQVEsQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsOEJBQThCLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3BLLGFBQWE7UUFDYixLQUFLLDJCQUEyQixDQUFDLFVBQVUsQ0FBQztRQUM1QyxLQUFLLDJCQUEyQixDQUFDLFNBQVM7WUFDdEMsT0FBTyxJQUFJLENBQUM7UUFDaEI7WUFDSSxNQUFNLElBQUksb0JBQW9CLENBQUMsb0NBQW9DLElBQUksZ0JBQWdCLENBQUMsQ0FBQztJQUNqRyxDQUFDO0FBQ0wsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLFFBQTBCO0lBQzNDLE9BQU8sUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDaEUsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLFFBQTBCO0lBQzVDLE9BQU8sV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxRQUFRLENBQUMsSUFBc0MsQ0FBQztBQUN2RyxDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUFRLFVBQXVDLEVBQUUsUUFBMEI7SUFDN0csTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLElBQUksU0FBUyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxpQ0FBaUMsQ0FBbUIsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUM5SixDQUFDO0FBRUQsTUFBTSxVQUFVLGtDQUFrQyxDQUM5QyxVQUF1QyxFQUN2QyxlQUF5RCxFQUN6RCxRQUEwQjtJQUUxQixNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekMsT0FBTyxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsSUFBSSxTQUFTLENBQUMsZ0JBQWdCLENBQUMsVUFBVTtRQUN4RSxDQUFDLENBQUMsSUFBSSxpQ0FBaUMsQ0FBaUIsVUFBVSxFQUFFO1lBQzlELEdBQUcsNkJBQTZCLENBQUMsZUFBZSxDQUFDO1NBQ3BELENBQUM7UUFDSixDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ2YsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBUSxVQUF1QyxFQUFFLFFBQTBCO0lBQ3pHLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6QyxPQUFPLENBQUMsU0FBUyxFQUFFLGdCQUFnQixJQUFJLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksNkJBQTZCLENBQW1CLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDdEosQ0FBQztBQUVELE1BQU0sVUFBVSw4QkFBOEIsQ0FDMUMsVUFBdUMsRUFDdkMsZUFBeUQsRUFDekQsUUFBMEI7SUFFMUIsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLElBQUksU0FBUyxDQUFDLGdCQUFnQixDQUFDLE1BQU07UUFDcEUsQ0FBQyxDQUFDLElBQUksNkJBQTZCLENBQWlCLFVBQVUsRUFBRTtZQUMxRCxHQUFHLDZCQUE2QixDQUFDLGVBQWUsQ0FBQztTQUNwRCxDQUFDO1FBQ0osQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNmLENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQVEsVUFBdUMsRUFBRSxRQUEwQjtJQUMxRyxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekMsT0FBTyxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsSUFBSSxTQUFTLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLDhCQUE4QixDQUFtQixVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3hKLENBQUM7QUFFRCxNQUFNLFVBQVUsK0JBQStCLENBQzNDLFVBQXVDLEVBQ3ZDLGVBQXlELEVBQ3pELFFBQTBCO0lBRTFCLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6QyxPQUFPLENBQUMsU0FBUyxFQUFFLGdCQUFnQixJQUFJLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPO1FBQ3JFLENBQUMsQ0FBQyxJQUFJLDhCQUE4QixDQUFpQixVQUFVLEVBQUU7WUFDM0QsR0FBRyw2QkFBNkIsQ0FBQyxlQUFlLENBQUM7U0FDcEQsQ0FBQztRQUNKLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDZixDQUFDO0FBRUQsTUFBTSxVQUFVLDRCQUE0QixDQUN4QyxVQUFrQyxFQUNsQyxjQUE0RCxFQUM1RCxRQUEwQjtJQUUxQixNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekMsSUFBSSxTQUFTLEVBQUUsZ0JBQWdCLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDckUsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFHLGNBQWM7UUFDekIsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLGNBQWMsQ0FBQztRQUN0QyxDQUFDLENBQUMsSUFBSSx3QkFBd0IsQ0FBUSw4QkFBOEIsQ0FBQyxXQUFXLEVBQUU7WUFDNUUsS0FBSyxFQUFFLFVBQVU7U0FDcEIsQ0FBQyxDQUFDO0lBQ1QsTUFBTTtTQUNELHFCQUFxQixDQUFDLGdDQUFnQyxDQUFDLElBQUksQ0FBQztTQUM1RCwrQkFBK0IsQ0FBQyxDQUFDLGdDQUFnQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzNFLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUM7U0FDM0MsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlCLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4RCxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzRSxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzFCLElBQUksQ0FBQyxjQUFjO1FBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFNUQsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUIsQ0FBUSxVQUFrQyxFQUFFLFFBQTBCO0lBQ3ZHLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6QyxPQUFPLENBQUMsU0FBUyxFQUFFLGdCQUFnQixJQUFJLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksMEJBQTBCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNwSSxDQUFDO0FBRUQsTUFBTSxVQUFVLGlDQUFpQyxDQUM3QyxVQUFrQyxFQUNsQyxlQUFtRCxFQUNuRCxRQUEwQjtJQUUxQixNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekMsT0FBTyxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsSUFBSSxTQUFTLENBQUMsZ0JBQWdCLENBQUMsU0FBUztRQUN2RSxDQUFDLENBQUMsSUFBSSwwQkFBMEIsQ0FBaUIsVUFBVSxFQUFFO1lBQ3ZELEdBQUcsdUJBQXVCLENBQUMsZUFBZSxDQUFDO1NBQzlDLENBQUM7UUFDSixDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ2YsQ0FBQztBQUVELE1BQU0sVUFBVSw4QkFBOEIsQ0FBUSxLQUE2QixFQUFFLFFBQTBCO0lBQzNHLE1BQU0sTUFBTSxHQUFHLHFCQUFxQixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN0RCxNQUFNLG9CQUFvQixHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUM5RSxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ1QsTUFBTTthQUNELHFCQUFxQixDQUFDLGdDQUFnQyxDQUFDLE1BQU0sQ0FBQzthQUM5RCwrQkFBK0IsQ0FBQyxDQUFDLGdDQUFnQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzNFLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUM7YUFDM0MsZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQ25CLG9CQUFvQjtZQUNoQixDQUFDLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FDMUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtnQkFDTCxHQUFHLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDbkMsR0FBRyxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsQ0FBQztZQUNyQyxDQUFDLENBQUMsQ0FDTDtZQUNILENBQUMsQ0FBQyxJQUFJLENBQ2IsQ0FBQztRQUNOLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFeEQsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCLENBQ2pDLFVBQTBDLEVBQzFDLFFBQTBCLEVBQzFCLGNBQThDO0lBRTlDLE1BQU0sWUFBWSxHQUFHLElBQUksb0JBQW9CLENBQW1CLFFBQVEsRUFBRTtRQUN0RSxLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUs7S0FDMUIsQ0FBQztTQUNHLG9CQUFvQixDQUFDLElBQUksc0JBQXNCLEVBQUUsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUM3RSxvQkFBb0IsRUFBRSxDQUFDO0lBRTVCLE1BQU0sVUFBVSxHQUFrQyxFQUFFLENBQUM7SUFFckQsSUFBSSxjQUFjLElBQUksSUFBSSxJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMsMkJBQTJCLENBQUMsVUFBVSxDQUFDO1FBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNoSyxJQUFJLGNBQWMsSUFBSSxJQUFJLElBQUksY0FBYyxDQUFDLFFBQVEsQ0FBQywyQkFBMkIsQ0FBQyxTQUFTLENBQUM7UUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBRTlKLFlBQVksQ0FBQyxjQUFjLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQztJQUMzQyxPQUFPLFlBQVksQ0FBQztBQUN4QixDQUFDO0FBRUQsTUFBTSxVQUFVLHlCQUF5QixDQUFRLFVBQTBDLEVBQUUsUUFBMEI7SUFDbkgsTUFBTSxvQkFBb0IsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDOUUsT0FBTyxJQUFJLG9CQUFvQixDQUFtQixZQUFZLEVBQUU7UUFDNUQsS0FBSyxFQUFFLFVBQVUsQ0FBQyxLQUFLO0tBQzFCLENBQUM7U0FDRyxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDbkIsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN0RyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNsQixNQUFNLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztRQUNuQixHQUFHLENBQUMsVUFBVSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUM7UUFDdkMsT0FBTyxvQkFBb0I7WUFDdkIsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQzFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDTixNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDLElBQUksRUFBRSxnQ0FBZ0MsRUFBQyxDQUFDLENBQUM7Z0JBQzFHLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLElBQUksRUFBRSxDQUFDO2dCQUMzRCxVQUFVLENBQUMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxPQUFPLENBQUMsQ0FBQztnQkFDNUYsT0FBTyxTQUFTLENBQUM7WUFDckIsQ0FBQyxDQUFDLENBQ0w7WUFDSCxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7SUFDOUIsQ0FBQyxDQUFDO1NBQ0Qsb0JBQW9CLENBQUMsSUFBSSxzQkFBc0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUN6RSxZQUFZLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUVELE1BQU0sVUFBVSx3QkFBd0IsQ0FBUSxVQUEwQyxFQUFFLFFBQTBCO0lBQ2xILE1BQU0sb0JBQW9CLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQzlFLE9BQU8sSUFBSSxvQkFBb0IsQ0FBbUIsV0FBVyxFQUFFO1FBQzNELEtBQUssRUFBRSxVQUFVLENBQUMsS0FBSztLQUMxQixDQUFDO1NBQ0csZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ25CLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDdEcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDbEIsTUFBTSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7UUFDbkIsR0FBRyxDQUFDLFVBQVUsQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDO1FBQ3ZDLE9BQU8sb0JBQW9CO1lBQ3ZCLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUMxQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ04sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDWixPQUFPLFNBQVMsQ0FBQztnQkFDckIsQ0FBQztnQkFDRCxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLGdDQUFnQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDckgsSUFBSSxFQUFFLHdCQUF3QjtpQkFDakMsQ0FBQyxDQUFDO2dCQUNILE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLElBQUksRUFBRSxDQUFDO2dCQUMzRCxVQUFVLENBQUMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxNQUFNLENBQUMsQ0FBQztnQkFDM0YsT0FBTyxTQUFTLENBQUM7WUFDckIsQ0FBQyxDQUFDLENBQ0w7WUFDSCxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7SUFDOUIsQ0FBQyxDQUFDO1NBQ0Qsb0JBQW9CLENBQUMsSUFBSSxzQkFBc0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUN6RSxZQUFZLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBUSxVQUFrQztJQUM1RSxNQUFNLE1BQU0sR0FBRyxJQUFJLG9CQUFvQixDQUFtQixTQUFTLEVBQUU7UUFDakUsS0FBSyxFQUFFLFVBQVU7S0FDcEIsQ0FBQztTQUNHLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUM7U0FDN0MscUJBQXFCLENBQUMsZ0NBQWdDLENBQUMsSUFBSSxDQUFDO1NBQzVELDBCQUEwQixDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDO1NBQ3ZELGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNuQixHQUFHLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQixDQUFDLENBQUMsQ0FBQztJQUNQLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdGLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUM7QUFFRCxNQUFNLFVBQVUseUNBQXlDLENBQVEsVUFBMEM7SUFDdkcsT0FBTyxVQUFVLENBQUMsV0FBVyxFQUFFO1FBQzNCLENBQUMsQ0FBQyxJQUFJLG9CQUFvQixDQUFtQixZQUFZLEVBQUU7WUFDckQsS0FBSyxFQUFFLFVBQVUsQ0FBQyxLQUFLO1NBQzFCLENBQUM7YUFDRyxZQUFZLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDO2FBQzVDLG1CQUFtQixDQUFDLG1DQUFtQyxDQUFDO1FBQy9ELENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RvciwgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge29mLCB0YXB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtDb21tb25zSW50ZXJuYWxFcnJvciwgU3R5bGVMZXZlbEVudW0sIFN0eWxlU2l6ZUVudW0sIGNvcHlEYXRhTGlzdFBhcmFtc30gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7QWN0aW9uQnV0dG9uRGVzY3JpcHRvciwgQnV0dG9uU3R5bGVSb3VuZGVkRW51bX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9mb3JtL2FwaSc7XG5pbXBvcnQge01vZGVsRGVzY3JpcHRvcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9tb2RlbCc7XG5cbmltcG9ydCB7QWN0aW9uUHJvdmlkZXJUeXBlLCBhY3Rpb25HZXRQcm92aWRlckNmZ09ian0gZnJvbSAnLi4vLi4vYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1kZXNjcmlwdG9yLmZhY3RvcnknO1xuaW1wb3J0IHtBY3Rpb25FZGl0b3JQcm92aWRlclR5cGUsIGFjdGlvbkVkaXRvckdldFByb3ZpZGVyQ2ZnT2JqfSBmcm9tICcuLi8uLi9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLWVkaXRvci1kZXNjcmlwdG9yLmZhY3RvcnknO1xuaW1wb3J0IHtBY3Rpb25FZGl0b3JBZGREZXNjcmlwdG9ySW5zdCwgQWN0aW9uRWRpdG9yRGV0YWlsc0Rlc2NyaXB0b3JJbnN0LCBBY3Rpb25FZGl0b3JFZGl0RGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tZWRpdG9yLmRlc2NyaXB0b3InO1xuaW1wb3J0IHthY3Rpb25MaW5rRnJvbUFjdGlvbn0gZnJvbSAnLi4vLi4vYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1saW5rLWRlc2NyaXB0b3IuZmFjdG9yeSc7XG5pbXBvcnQge0FjdGlvbkxpbmtEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1saW5rLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtBY3Rpb25EZWxldGVEZXNjcmlwdG9ySW5zdCwgQWN0aW9uRGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24uZGVzY3JpcHRvcic7XG5pbXBvcnQge0FjdGlvblBvc2l0aW9uRW51bX0gZnJvbSAnLi4vLi4vYWN0aW9uL21vZGVscy9hY3Rpb24udHlwZSc7XG5pbXBvcnQge1RhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzfSBmcm9tICcuLi8uLi9hY3Rpb24vbW9kZWxzL3RhYmxldmlldy1hY3Rpb24tZGVmYXVsdC1jYXRlZ29yaWVzLm1vZGVsJztcbmltcG9ydCB7RGF0YVByb3ZpZGVyRXhlY3V0b3J9IGZyb20gJy4uLy4uL2FjdGlvbi9zZXJ2aWNlcy9kYXRhLXByb3ZpZGVyLWV4ZWN1dG9yLnNlcnZpY2UnO1xuaW1wb3J0IHtEQVRBX0xBTkdVQUdFX0RST1BET1dOX0NPTVBPTkVOVF9JVH0gZnJvbSAnLi4vLi4vYWN0aW9uL3NlcnZpY2VzL3Rva2Vucy9kYXRhLWxhbmd1YWdlLWRyb3Bkb3duLnRva2VuJztcbmltcG9ydCB7RWRpdG9yRGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uL2VkaXRvci9kZXNjcmlwdG9ycy9lZGl0b3IuZGVzY3JpcHRvcic7XG5pbXBvcnQge1RhYmxldmlld0Rlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi9kZXNjcmlwdG9ycy90YWJsZXZpZXcuZGVzY3JpcHRvcic7XG5pbXBvcnQge1RhYmxldmlld1JvdXRlRGF0YX0gZnJvbSAnLi4vbW9kZWxzL3RhYmxldmlldy1yb3V0ZS5tb2RlbCc7XG5pbXBvcnQge2NvbnZlcnREYXRhVG9TdHJpbmdXaXRoRGVsaW1pdGVyLCBzYXZlRmlsZUFzfSBmcm9tICcuL2ZpbGVzLWV4cG9ydCc7XG5cbmV4cG9ydCBlbnVtIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bSB7XG4gICAgRGV0YWlscyxcbiAgICBBZGQsXG4gICAgRWRpdCxcbiAgICBFZGl0T25EZXRhaWxzLFxuICAgIERlbGV0ZSxcbiAgICBEZWxldGVPbkRldGFpbHMsXG4gICAgUmVmcmVzaCxcbiAgICBFeHBvcnQsXG4gICAgRXhwb3J0SnNvbixcbiAgICBFeHBvcnRDc3YsXG4gICAgTG9jYWxpemF0aW9uTGFuZ3VhZ2VTZWxlY3Rcbn1cblxuY29uc3QgdGFibGV2aWV3RGVmYXVsdEFjdGlvbnMgPSBbXG4gICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkRldGFpbHMsXG4gICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkFkZCxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRWRpdCxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRWRpdE9uRGV0YWlscyxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGVsZXRlLFxuICAgIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5EZWxldGVPbkRldGFpbHMsXG4gICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLlJlZnJlc2gsXG4gICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkV4cG9ydCxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0SnNvbixcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0Q3N2LFxuICAgIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5Mb2NhbGl6YXRpb25MYW5ndWFnZVNlbGVjdFxuXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRhYmxldmlld0RlZmF1bHRBY3Rpb25zKCkge1xuICAgIHJldHVybiBbLi4udGFibGV2aWV3RGVmYXVsdEFjdGlvbnNdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVGFibGV2aWV3QWN0aW9ucyhcbiAgICB0YWJsZXZpZXc6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PGFueSwgYW55LCBhbnk+LFxuICAgIGRlZmF1bHRBY3Rpb25zPzogVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtW10sXG4gICAgZGVmYXVsdEFjdGlvbnNPdmVycmlkZXM/OiBSZWNvcmQ8bnVtYmVyLCBBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnk+PixcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbFxuKTogQXJyYXk8QWN0aW9uRGVzY3JpcHRvckluc3Q8YW55Pj4ge1xuICAgIHJldHVybiAoZGVmYXVsdEFjdGlvbnMgPz8gZ2V0VGFibGV2aWV3RGVmYXVsdEFjdGlvbnMoKSlcbiAgICAgICAgLm1hcCh0ID0+IGNyZWF0ZVRhYmxldmlld0FjdGlvbih0LCB0YWJsZXZpZXcsIGRlZmF1bHRBY3Rpb25zLCBkZWZhdWx0QWN0aW9uc092ZXJyaWRlcywgaW5qZWN0b3IpKVxuICAgICAgICAuZmlsdGVyKGUgPT4gZSAhPSBudWxsKSBhcyBBcnJheTxBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnk+Pjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRhYmxldmlld0FjdGlvbihcbiAgICB0eXBlOiBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0sXG4gICAgdGFibGV2aWV3OiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxhbnksIGFueSwgYW55PixcbiAgICBkZWZhdWx0QWN0aW9ucz86IFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bVtdLFxuICAgIGRlZmF1bHRBY3Rpb25zT3ZlcnJpZGVzPzogUmVjb3JkPG51bWJlciwgQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55Pj4sXG4gICAgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGxcbik6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4gfCBudWxsIHtcbiAgICBpZiAoZGVmYXVsdEFjdGlvbnNPdmVycmlkZXMgIT0gbnVsbCAmJiBkZWZhdWx0QWN0aW9uc092ZXJyaWRlc1t0eXBlXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0QWN0aW9uc092ZXJyaWRlc1t0eXBlXTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgLy8gdGFibGUgcm93IGFjdGlvbnNcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGV0YWlsczpcbiAgICAgICAgICAgIHJldHVybiB0YWJsZXZpZXdEZXRhaWxzQWN0aW9uKHRhYmxldmlldy5kZXRhaWxzRWRpdG9yLCBpbmplY3Rvcik7XG4gICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkVkaXQ6XG4gICAgICAgICAgICByZXR1cm4gdGFibGV2aWV3RWRpdEFjdGlvbih0YWJsZXZpZXcuZWRpdEVkaXRvciwgaW5qZWN0b3IpO1xuICAgICAgICBjYXNlIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5EZWxldGU6XG4gICAgICAgICAgICByZXR1cm4gdGFibGV2aWV3RGVsZXRlQWN0aW9uKHRhYmxldmlldy5tb2RlbCwgaW5qZWN0b3IpO1xuICAgICAgICAvLyB0YWJsZSB0b29sYmFyIGFjdGlvbnNcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uQWRkOlxuICAgICAgICAgICAgcmV0dXJuIHRhYmxldmlld0FkZEFjdGlvbih0YWJsZXZpZXcuYWRkRWRpdG9yLCBpbmplY3Rvcik7XG4gICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkxvY2FsaXphdGlvbkxhbmd1YWdlU2VsZWN0OlxuICAgICAgICAgICAgcmV0dXJuIHRhYmxldmlld0xvY2FsaXphdGlvbkxhbmd1YWdlU2VsZWN0QWN0aW9uKHRhYmxldmlldyk7XG4gICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLlJlZnJlc2g6XG4gICAgICAgICAgICByZXR1cm4gdGFibGV2aWV3UmVmcmVzaEFjdGlvbih0YWJsZXZpZXcubW9kZWwpO1xuICAgICAgICBjYXNlIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnQ6XG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdEFjdGlvbnMgPT0gbnVsbCB8fCBkZWZhdWx0QWN0aW9ucy5pbmNsdWRlcyhUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0SnNvbikgfHwgZGVmYXVsdEFjdGlvbnMuaW5jbHVkZXMoVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkV4cG9ydENzdilcbiAgICAgICAgICAgICAgICA/IHRhYmxldmlld0V4cG9ydEFjdGlvbih0YWJsZXZpZXcsIGluamVjdG9yLCBkZWZhdWx0QWN0aW9ucylcbiAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgIC8vZGV0YWlscyBhY3Rpb25zXG4gICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkVkaXRPbkRldGFpbHM6XG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdEFjdGlvbnMgPT0gbnVsbCB8fCBkZWZhdWx0QWN0aW9ucy5pbmNsdWRlcyhUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRWRpdClcbiAgICAgICAgICAgICAgICA/IHRhYmxldmlld0VkaXRPbkRldGFpbHNBY3Rpb24odGFibGV2aWV3Lm1vZGVsLCB0YWJsZXZpZXdFZGl0QWN0aW9uKHRhYmxldmlldy5lZGl0RWRpdG9yLCBpbmplY3RvciksIGluamVjdG9yKVxuICAgICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGVsZXRlT25EZXRhaWxzOlxuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRBY3Rpb25zID09IG51bGwgfHwgZGVmYXVsdEFjdGlvbnMuaW5jbHVkZXMoVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkRlbGV0ZSkgPyB0YWJsZXZpZXdEZWxldGVPbkRldGFpbHNBY3Rpb24odGFibGV2aWV3Lm1vZGVsLCBpbmplY3RvcikgOiBudWxsO1xuICAgICAgICAvLyBzdWJhY3Rpb25zXG4gICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkV4cG9ydEpzb246XG4gICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkV4cG9ydENzdjpcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKGBUYWJsZXZpZXcgZGVmYXVsdCBhY3Rpb24gb2YgdHlwZSAke3R5cGV9IG5vdCBzdXBwb3J0ZWRgKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGdldEluamVjdG9yKGluamVjdG9yPzogSW5qZWN0b3IgfCBudWxsKTogSW5qZWN0b3IgfCBudWxsIHtcbiAgICByZXR1cm4gaW5qZWN0b3IgPT09IHVuZGVmaW5lZCA/IGluamVjdChJbmplY3RvcikgOiBpbmplY3Rvcjtcbn1cblxuZnVuY3Rpb24gZ2V0Um91dGVEYXRhKGluamVjdG9yPzogSW5qZWN0b3IgfCBudWxsKSB7XG4gICAgcmV0dXJuIGdldEluamVjdG9yKGluamVjdG9yKT8uZ2V0KEFjdGl2YXRlZFJvdXRlKT8uc25hcHNob3QuZGF0YSBhcyBUYWJsZXZpZXdSb3V0ZURhdGEgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdEZXRhaWxzQWN0aW9uPE1vZGVsPihkZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbD4sIGluamVjdG9yPzogSW5qZWN0b3IgfCBudWxsKTogQWN0aW9uRWRpdG9yRGV0YWlsc0Rlc2NyaXB0b3JJbnN0PE1vZGVsPiB8IG51bGwge1xuICAgIGNvbnN0IHJvdXRlRGF0YSA9IGdldFJvdXRlRGF0YShpbmplY3Rvcik7XG4gICAgcmV0dXJuICFyb3V0ZURhdGE/LnRhYmxldmlld0FjdGlvbnMgfHwgcm91dGVEYXRhLnRhYmxldmlld0FjdGlvbnMuaGFzRGV0YWlscyA/IG5ldyBBY3Rpb25FZGl0b3JEZXRhaWxzRGVzY3JpcHRvckluc3Q8TW9kZWwsIHVuZGVmaW5lZD4oZGVzY3JpcHRvcikgOiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3RGV0YWlsc0FjdGlvbldpdGhQcm92aWRlcjxNb2RlbCwgU2VydmljZT4oXG4gICAgZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWw+LFxuICAgIHNlcnZpY2VQcm92aWRlcjogQWN0aW9uRWRpdG9yUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPixcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbFxuKTogQWN0aW9uRWRpdG9yRGV0YWlsc0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlPiB8IG51bGwge1xuICAgIGNvbnN0IHJvdXRlRGF0YSA9IGdldFJvdXRlRGF0YShpbmplY3Rvcik7XG4gICAgcmV0dXJuICFyb3V0ZURhdGE/LnRhYmxldmlld0FjdGlvbnMgfHwgcm91dGVEYXRhLnRhYmxldmlld0FjdGlvbnMuaGFzRGV0YWlsc1xuICAgICAgICA/IG5ldyBBY3Rpb25FZGl0b3JEZXRhaWxzRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2U+KGRlc2NyaXB0b3IsIHtcbiAgICAgICAgICAgICAgLi4uYWN0aW9uRWRpdG9yR2V0UHJvdmlkZXJDZmdPYmooc2VydmljZVByb3ZpZGVyKVxuICAgICAgICAgIH0pXG4gICAgICAgIDogbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0FkZEFjdGlvbjxNb2RlbD4oZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWw+LCBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbCk6IEFjdGlvbkVkaXRvckFkZERlc2NyaXB0b3JJbnN0PE1vZGVsPiB8IG51bGwge1xuICAgIGNvbnN0IHJvdXRlRGF0YSA9IGdldFJvdXRlRGF0YShpbmplY3Rvcik7XG4gICAgcmV0dXJuICFyb3V0ZURhdGE/LnRhYmxldmlld0FjdGlvbnMgfHwgcm91dGVEYXRhLnRhYmxldmlld0FjdGlvbnMuaGFzQWRkID8gbmV3IEFjdGlvbkVkaXRvckFkZERlc2NyaXB0b3JJbnN0PE1vZGVsLCB1bmRlZmluZWQ+KGRlc2NyaXB0b3IpIDogbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0FkZEFjdGlvbldpdGhQcm92aWRlcjxNb2RlbCwgU2VydmljZT4oXG4gICAgZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWw+LFxuICAgIHNlcnZpY2VQcm92aWRlcjogQWN0aW9uRWRpdG9yUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPixcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbFxuKTogQWN0aW9uRWRpdG9yQWRkRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2U+IHwgbnVsbCB7XG4gICAgY29uc3Qgcm91dGVEYXRhID0gZ2V0Um91dGVEYXRhKGluamVjdG9yKTtcbiAgICByZXR1cm4gIXJvdXRlRGF0YT8udGFibGV2aWV3QWN0aW9ucyB8fCByb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNBZGRcbiAgICAgICAgPyBuZXcgQWN0aW9uRWRpdG9yQWRkRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2U+KGRlc2NyaXB0b3IsIHtcbiAgICAgICAgICAgICAgLi4uYWN0aW9uRWRpdG9yR2V0UHJvdmlkZXJDZmdPYmooc2VydmljZVByb3ZpZGVyKVxuICAgICAgICAgIH0pXG4gICAgICAgIDogbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0VkaXRBY3Rpb248TW9kZWw+KGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PE1vZGVsPiwgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGwpOiBBY3Rpb25FZGl0b3JFZGl0RGVzY3JpcHRvckluc3Q8TW9kZWw+IHwgbnVsbCB7XG4gICAgY29uc3Qgcm91dGVEYXRhID0gZ2V0Um91dGVEYXRhKGluamVjdG9yKTtcbiAgICByZXR1cm4gIXJvdXRlRGF0YT8udGFibGV2aWV3QWN0aW9ucyB8fCByb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNFZGl0ID8gbmV3IEFjdGlvbkVkaXRvckVkaXREZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkPihkZXNjcmlwdG9yKSA6IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdFZGl0QWN0aW9uV2l0aFByb3ZpZGVyPE1vZGVsLCBTZXJ2aWNlPihcbiAgICBkZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbD4sXG4gICAgc2VydmljZVByb3ZpZGVyOiBBY3Rpb25FZGl0b3JQcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+LFxuICAgIGluamVjdG9yPzogSW5qZWN0b3IgfCBudWxsXG4pOiBBY3Rpb25FZGl0b3JFZGl0RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2U+IHwgbnVsbCB7XG4gICAgY29uc3Qgcm91dGVEYXRhID0gZ2V0Um91dGVEYXRhKGluamVjdG9yKTtcbiAgICByZXR1cm4gIXJvdXRlRGF0YT8udGFibGV2aWV3QWN0aW9ucyB8fCByb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNFZGl0XG4gICAgICAgID8gbmV3IEFjdGlvbkVkaXRvckVkaXREZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZT4oZGVzY3JpcHRvciwge1xuICAgICAgICAgICAgICAuLi5hY3Rpb25FZGl0b3JHZXRQcm92aWRlckNmZ09iaihzZXJ2aWNlUHJvdmlkZXIpXG4gICAgICAgICAgfSlcbiAgICAgICAgOiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3RWRpdE9uRGV0YWlsc0FjdGlvbjxNb2RlbD4oXG4gICAgZGVzY3JpcHRvcjogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPixcbiAgICBlZGl0RGVzY3JpcHRvcjogQWN0aW9uRWRpdG9yRWRpdERlc2NyaXB0b3JJbnN0PE1vZGVsPiB8IG51bGwsXG4gICAgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGxcbik6IEFjdGlvbkxpbmtEZXNjcmlwdG9ySW5zdDxNb2RlbD4gfCBudWxsIHtcbiAgICBjb25zdCByb3V0ZURhdGEgPSBnZXRSb3V0ZURhdGEoaW5qZWN0b3IpO1xuICAgIGlmIChyb3V0ZURhdGE/LnRhYmxldmlld0FjdGlvbnMgJiYgIXJvdXRlRGF0YS50YWJsZXZpZXdBY3Rpb25zLmhhc0VkaXQpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgYWN0aW9uID0gZWRpdERlc2NyaXB0b3JcbiAgICAgICAgPyBhY3Rpb25MaW5rRnJvbUFjdGlvbihlZGl0RGVzY3JpcHRvcilcbiAgICAgICAgOiBuZXcgQWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0PE1vZGVsPihBY3Rpb25FZGl0b3JFZGl0RGVzY3JpcHRvckluc3QuQUNUSU9OX05BTUUsIHtcbiAgICAgICAgICAgICAgbW9kZWw6IGRlc2NyaXB0b3JcbiAgICAgICAgICB9KTtcbiAgICBhY3Rpb25cbiAgICAgICAgLndpdGhUYWJsZXZpZXdDYXRlZ29yeShUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5FRElUKVxuICAgICAgICAud2l0aFBvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcyhbVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuREVUQUlMU10pXG4gICAgICAgIC53aXRoUG9zaXRpb24oQWN0aW9uUG9zaXRpb25FbnVtLkZvb3RlckxlZnQpXG4gICAgICAgIC53aXRoUm91dGVyTGluaygnLi9lZGl0Jyk7XG4gICAgYWN0aW9uLmJ1dHRvbi5zdHlsZUNsYXNzLndpdGhBY3Rpb25MZXZlbChTdHlsZUxldmVsRW51bS5TZWNvbmRhcnkpO1xuICAgIGFjdGlvbi5idXR0b24uc3R5bGVDbGFzcy53aXRoU2l6ZShTdHlsZVNpemVFbnVtLk5vcm1hbCk7XG4gICAgYWN0aW9uLmJ1dHRvbi5zdHlsZUNsYXNzLndpdGhSb3VuZGVkQnV0dG9uKEJ1dHRvblN0eWxlUm91bmRlZEVudW0uREVGQVVMVCk7XG4gICAgYWN0aW9uLmJ1dHRvbi53aXRoTGFiZWwoKTtcbiAgICBpZiAoIWVkaXREZXNjcmlwdG9yKSBhY3Rpb24uYnV0dG9uLndpdGhJY29uKCdwaSBwaS1wZW5jaWwnKTtcblxuICAgIHJldHVybiBhY3Rpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdEZWxldGVBY3Rpb248TW9kZWw+KGRlc2NyaXB0b3I6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD4sIGluamVjdG9yPzogSW5qZWN0b3IgfCBudWxsKTogQWN0aW9uRGVsZXRlRGVzY3JpcHRvckluc3Q8TW9kZWw+IHwgbnVsbCB7XG4gICAgY29uc3Qgcm91dGVEYXRhID0gZ2V0Um91dGVEYXRhKGluamVjdG9yKTtcbiAgICByZXR1cm4gIXJvdXRlRGF0YT8udGFibGV2aWV3QWN0aW9ucyB8fCByb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNEZWxldGUgPyBuZXcgQWN0aW9uRGVsZXRlRGVzY3JpcHRvckluc3QoZGVzY3JpcHRvcikgOiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3RGVsZXRlQWN0aW9uV2l0aFByb3ZpZGVyPE1vZGVsLCBTZXJ2aWNlPihcbiAgICBkZXNjcmlwdG9yOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LFxuICAgIHNlcnZpY2VQcm92aWRlcjogQWN0aW9uUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPixcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbFxuKTogQWN0aW9uRGVsZXRlRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2U+IHwgbnVsbCB7XG4gICAgY29uc3Qgcm91dGVEYXRhID0gZ2V0Um91dGVEYXRhKGluamVjdG9yKTtcbiAgICByZXR1cm4gIXJvdXRlRGF0YT8udGFibGV2aWV3QWN0aW9ucyB8fCByb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNEZWxldGVcbiAgICAgICAgPyBuZXcgQWN0aW9uRGVsZXRlRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2U+KGRlc2NyaXB0b3IsIHtcbiAgICAgICAgICAgICAgLi4uYWN0aW9uR2V0UHJvdmlkZXJDZmdPYmooc2VydmljZVByb3ZpZGVyKVxuICAgICAgICAgIH0pXG4gICAgICAgIDogbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0RlbGV0ZU9uRGV0YWlsc0FjdGlvbjxNb2RlbD4obW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD4sIGluamVjdG9yPzogSW5qZWN0b3IgfCBudWxsKTogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWw+IHwgbnVsbCB7XG4gICAgY29uc3QgYWN0aW9uID0gdGFibGV2aWV3RGVsZXRlQWN0aW9uKG1vZGVsLCBpbmplY3Rvcik7XG4gICAgY29uc3QgZGF0YVByb3ZpZGVyRXhlY3V0b3IgPSBnZXRJbmplY3RvcihpbmplY3Rvcik/LmdldChEYXRhUHJvdmlkZXJFeGVjdXRvcik7XG4gICAgaWYgKGFjdGlvbikge1xuICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgIC53aXRoVGFibGV2aWV3Q2F0ZWdvcnkoVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuREVMRVRFKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXMoW1RhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkRFVEFJTFNdKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbihBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyTGVmdClcbiAgICAgICAgICAgIC53aXRoUnVuRnVuY3Rpb24oY3R4ID0+XG4gICAgICAgICAgICAgICAgZGF0YVByb3ZpZGVyRXhlY3V0b3JcbiAgICAgICAgICAgICAgICAgICAgPyBkYXRhUHJvdmlkZXJFeGVjdXRvci5ydW5EZWxldGVPckZhaWwoY3R4KS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LnZpZXdDb250YWluZXI/LnJlbG9hZFRhYmxlKHt9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC52aWV3Q29udGFpbmVyPy5jbG9zZUVkaXRvcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICApO1xuICAgICAgICBhY3Rpb24uYnV0dG9uLndpdGhMYWJlbCh1bmRlZmluZWQpO1xuICAgICAgICBhY3Rpb24uYnV0dG9uLnN0eWxlQ2xhc3Mud2l0aFNpemUoU3R5bGVTaXplRW51bS5Ob3JtYWwpO1xuXG4gICAgICAgIHJldHVybiBhY3Rpb247XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdFeHBvcnRBY3Rpb248TW9kZWw+KFxuICAgIGRlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsPixcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbCxcbiAgICBkZWZhdWx0QWN0aW9ucz86IFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bVtdXG4pOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbD4gfCBudWxsIHtcbiAgICBjb25zdCBleHBvcnRBY3Rpb24gPSBuZXcgQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIHVuZGVmaW5lZD4oJ2V4cG9ydCcsIHtcbiAgICAgICAgbW9kZWw6IGRlc2NyaXB0b3IubW9kZWxcbiAgICB9KVxuICAgICAgICAud2l0aEJ1dHRvbkRlc2NyaXB0b3IobmV3IEFjdGlvbkJ1dHRvbkRlc2NyaXB0b3IoKS53aXRoSWNvbigncGkgcGktZG93bmxvYWQnKSlcbiAgICAgICAgLndpdGhTdWJhY3Rpb25zQXNNZW51KCk7XG5cbiAgICBjb25zdCBzdWJhY3Rpb25zOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbD5bXSA9IFtdO1xuXG4gICAgaWYgKGRlZmF1bHRBY3Rpb25zID09IG51bGwgfHwgZGVmYXVsdEFjdGlvbnMuaW5jbHVkZXMoVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkV4cG9ydEpzb24pKSBzdWJhY3Rpb25zLnB1c2godGFibGV2aWV3RXhwb3J0SnNvbkFjdGlvbihkZXNjcmlwdG9yLCBpbmplY3RvcikpO1xuICAgIGlmIChkZWZhdWx0QWN0aW9ucyA9PSBudWxsIHx8IGRlZmF1bHRBY3Rpb25zLmluY2x1ZGVzKFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRDc3YpKSBzdWJhY3Rpb25zLnB1c2godGFibGV2aWV3RXhwb3J0Q3N2QWN0aW9uKGRlc2NyaXB0b3IsIGluamVjdG9yKSk7XG5cbiAgICBleHBvcnRBY3Rpb24ud2l0aFN1YmFjdGlvbnMoLi4uc3ViYWN0aW9ucyk7XG4gICAgcmV0dXJuIGV4cG9ydEFjdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0V4cG9ydEpzb25BY3Rpb248TW9kZWw+KGRlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsPiwgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGwpOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbD4ge1xuICAgIGNvbnN0IGRhdGFQcm92aWRlckV4ZWN1dG9yID0gZ2V0SW5qZWN0b3IoaW5qZWN0b3IpPy5nZXQoRGF0YVByb3ZpZGVyRXhlY3V0b3IpO1xuICAgIHJldHVybiBuZXcgQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIHVuZGVmaW5lZD4oJ2V4cG9ydEpzb24nLCB7XG4gICAgICAgIG1vZGVsOiBkZXNjcmlwdG9yLm1vZGVsXG4gICAgfSlcbiAgICAgICAgLndpdGhSdW5GdW5jdGlvbihjdHggPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gY3R4LnBhcmFtZXRlcnMuZGF0YUxpc3RQYXJhbXMgPyBjb3B5RGF0YUxpc3RQYXJhbXMoY3R4LnBhcmFtZXRlcnMuZGF0YUxpc3RQYXJhbXMpIDoge307XG4gICAgICAgICAgICBwYXJhbXMub2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIHBhcmFtcy5saW1pdCA9IDUwMDtcbiAgICAgICAgICAgIGN0eC5wYXJhbWV0ZXJzLmRhdGFMaXN0UGFyYW1zID0gcGFyYW1zO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGFQcm92aWRlckV4ZWN1dG9yXG4gICAgICAgICAgICAgICAgPyBkYXRhUHJvdmlkZXJFeGVjdXRvci5ydW5HZXRBbGxPckZhaWwoY3R4KS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgIG1hcChyZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW0pTT04uc3RyaW5naWZ5KHJlcy5kYXRhLCB1bmRlZmluZWQsIDQpXSwge3R5cGU6ICdhcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTgnfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHR5cGVOYW1lID0gY3R4Lmluc3RhbmNlLmFjdGlvbi5tb2RlbD8udHlwZU5hbWUgPz8gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlQXMoYmxvYiwgYCR7dHlwZU5hbWUgPyB0eXBlTmFtZSArICdfJyA6ICcnfSR7Y3R4Lmluc3RhbmNlLmFjdGlvbi5hY3Rpb25OYW1lfS5qc29uYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IGN0eC5wYXJhbWV0ZXJzLml0ZW07XG4gICAgICAgIH0pXG4gICAgICAgIC53aXRoQnV0dG9uRGVzY3JpcHRvcihuZXcgQWN0aW9uQnV0dG9uRGVzY3JpcHRvcigpLndpdGhJY29uKCdwaSBwaS1jb2RlJykpXG4gICAgICAgIC53aXRoUG9zaXRpb24oQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdFeHBvcnRDc3ZBY3Rpb248TW9kZWw+KGRlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsPiwgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGwpOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbD4ge1xuICAgIGNvbnN0IGRhdGFQcm92aWRlckV4ZWN1dG9yID0gZ2V0SW5qZWN0b3IoaW5qZWN0b3IpPy5nZXQoRGF0YVByb3ZpZGVyRXhlY3V0b3IpO1xuICAgIHJldHVybiBuZXcgQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIHVuZGVmaW5lZD4oJ2V4cG9ydENzdicsIHtcbiAgICAgICAgbW9kZWw6IGRlc2NyaXB0b3IubW9kZWxcbiAgICB9KVxuICAgICAgICAud2l0aFJ1bkZ1bmN0aW9uKGN0eCA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXJhbXMgPSBjdHgucGFyYW1ldGVycy5kYXRhTGlzdFBhcmFtcyA/IGNvcHlEYXRhTGlzdFBhcmFtcyhjdHgucGFyYW1ldGVycy5kYXRhTGlzdFBhcmFtcykgOiB7fTtcbiAgICAgICAgICAgIHBhcmFtcy5vZmZzZXQgPSAwO1xuICAgICAgICAgICAgcGFyYW1zLmxpbWl0ID0gNTAwO1xuICAgICAgICAgICAgY3R4LnBhcmFtZXRlcnMuZGF0YUxpc3RQYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgICAgICByZXR1cm4gZGF0YVByb3ZpZGVyRXhlY3V0b3JcbiAgICAgICAgICAgICAgICA/IGRhdGFQcm92aWRlckV4ZWN1dG9yLnJ1bkdldEFsbE9yRmFpbChjdHgpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgbWFwKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzLmRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtjb252ZXJ0RGF0YVRvU3RyaW5nV2l0aERlbGltaXRlcihyZXMuZGF0YSwgJywnLCBkZXNjcmlwdG9yLCBjdHguaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpKV0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0L2NzdjtjaGFyc2V0PXV0Zi04J1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHlwZU5hbWUgPSBjdHguaW5zdGFuY2UuYWN0aW9uLm1vZGVsPy50eXBlTmFtZSA/PyAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGVBcyhibG9iLCBgJHt0eXBlTmFtZSA/IHR5cGVOYW1lICsgJ18nIDogJyd9JHtjdHguaW5zdGFuY2UuYWN0aW9uLmFjdGlvbk5hbWV9LmNzdmApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBjdHgucGFyYW1ldGVycy5pdGVtO1xuICAgICAgICB9KVxuICAgICAgICAud2l0aEJ1dHRvbkRlc2NyaXB0b3IobmV3IEFjdGlvbkJ1dHRvbkRlc2NyaXB0b3IoKS53aXRoSWNvbigncGkgcGktZmlsZScpKVxuICAgICAgICAud2l0aFBvc2l0aW9uKEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3UmVmcmVzaEFjdGlvbjxNb2RlbD4oZGVzY3JpcHRvcjogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPik6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsPiB8IG51bGwge1xuICAgIGNvbnN0IGFjdGlvbiA9IG5ldyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkPigncmVmcmVzaCcsIHtcbiAgICAgICAgbW9kZWw6IGRlc2NyaXB0b3JcbiAgICB9KVxuICAgICAgICAud2l0aFBvc2l0aW9uKEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQpXG4gICAgICAgIC53aXRoVGFibGV2aWV3Q2F0ZWdvcnkoVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuUkVBRClcbiAgICAgICAgLndpdGhSdW5Ob3RpZmljYXRpb25TdWNjZXNzKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBmYWxzZSlcbiAgICAgICAgLndpdGhSdW5GdW5jdGlvbihjdHggPT4ge1xuICAgICAgICAgICAgY3R4LnZpZXdDb250YWluZXI/LnJlbG9hZFRhYmxlKHt9KTtcbiAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfSk7XG4gICAgYWN0aW9uLmJ1dHRvbi53aXRoSWNvbigncGkgcGktcmVmcmVzaCcpLnN0eWxlQ2xhc3Mud2l0aEFjdGlvbkxldmVsKFN0eWxlTGV2ZWxFbnVtLlNlY29uZGFyeSk7XG4gICAgcmV0dXJuIGFjdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0xvY2FsaXphdGlvbkxhbmd1YWdlU2VsZWN0QWN0aW9uPE1vZGVsPihkZXNjcmlwdG9yOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbD4pOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbD4gfCBudWxsIHtcbiAgICByZXR1cm4gZGVzY3JpcHRvci5pc0xvY2FsaXplZCgpXG4gICAgICAgID8gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCB1bmRlZmluZWQ+KCd0cmFuc2xhdG9yJywge1xuICAgICAgICAgICAgICBtb2RlbDogZGVzY3JpcHRvci5tb2RlbFxuICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC53aXRoUG9zaXRpb24oQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJMZWZ0KVxuICAgICAgICAgICAgICAud2l0aENvbXBvbmVudEZyb21EaShEQVRBX0xBTkdVQUdFX0RST1BET1dOX0NPTVBPTkVOVF9JVClcbiAgICAgICAgOiBudWxsO1xufVxuIl19
|
|
275
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWRlZmF1bHQtYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL3RhYmxldmlldy9oZWxwZXJzL3RhYmxldmlldy1kZWZhdWx0LWFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxFQUFFLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3BILE9BQU8sRUFBQyxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBRy9GLE9BQU8sRUFBcUIsdUJBQXVCLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUMvRyxPQUFPLEVBQTJCLDZCQUE2QixFQUFDLE1BQU0sMkRBQTJELENBQUM7QUFDbEksT0FBTyxFQUFDLDZCQUE2QixFQUFFLGlDQUFpQyxFQUFFLDhCQUE4QixFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFDbkssT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0seURBQXlELENBQUM7QUFDN0YsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0saURBQWlELENBQUM7QUFDekYsT0FBTyxFQUFDLDBCQUEwQixFQUFFLG9CQUFvQixFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFDNUcsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0saUNBQWlD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QW9CLENBQW1CLFNBQVMsRUFBRTtRQUNqRSxLQUFLLEVBQUUsVUFBVTtLQUNwQixDQUFDO1NBQ0csWUFBWSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQztTQUM3QyxxQkFBcUIsQ0FBQyxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUM7U0FDNUQsMEJBQTBCLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUM7U0FDdkQsZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ25CLEdBQUcsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0YsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztBQUVELE1BQU0sVUFBVSx5Q0FBeUMsQ0FBUSxVQUEwQztJQUN2RyxPQUFPLFVBQVUsQ0FBQyxXQUFXLEVBQUU7UUFDM0IsQ0FBQyxDQUFDLElBQUksb0JBQW9CLENBQW1CLFlBQVksRUFBRTtZQUNyRCxLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUs7U0FDMUIsQ0FBQzthQUNHLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUM7YUFDNUMsbUJBQW1CLENBQUMsbUNBQW1DLENBQUM7UUFDL0QsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdG9yLCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7b2YsIHRhcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge0NvbW1vbnNJbnRlcm5hbEVycm9yLCBTdHlsZUxldmVsRW51bSwgU3R5bGVTaXplRW51bSwgY29weURhdGFMaXN0UGFyYW1zfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtBY3Rpb25CdXR0b25EZXNjcmlwdG9yLCBCdXR0b25TdHlsZVJvdW5kZWRFbnVtfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2Zvcm0vYXBpJztcbmltcG9ydCB7TW9kZWxEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcblxuaW1wb3J0IHtBY3Rpb25Qcm92aWRlclR5cGUsIGFjdGlvbkdldFByb3ZpZGVyQ2ZnT2JqfSBmcm9tICcuLi8uLi9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLWRlc2NyaXB0b3IuZmFjdG9yeSc7XG5pbXBvcnQge0FjdGlvbkVkaXRvclByb3ZpZGVyVHlwZSwgYWN0aW9uRWRpdG9yR2V0UHJvdmlkZXJDZmdPYmp9IGZyb20gJy4uLy4uL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tZWRpdG9yLWRlc2NyaXB0b3IuZmFjdG9yeSc7XG5pbXBvcnQge0FjdGlvbkVkaXRvckFkZERlc2NyaXB0b3JJbnN0LCBBY3Rpb25FZGl0b3JEZXRhaWxzRGVzY3JpcHRvckluc3QsIEFjdGlvbkVkaXRvckVkaXREZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1lZGl0b3IuZGVzY3JpcHRvcic7XG5pbXBvcnQge2FjdGlvbkxpbmtGcm9tQWN0aW9ufSBmcm9tICcuLi8uLi9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLWxpbmstZGVzY3JpcHRvci5mYWN0b3J5JztcbmltcG9ydCB7QWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi8uLi9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLWxpbmsuZGVzY3JpcHRvcic7XG5pbXBvcnQge0FjdGlvbkRlbGV0ZURlc2NyaXB0b3JJbnN0LCBBY3Rpb25EZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi5kZXNjcmlwdG9yJztcbmltcG9ydCB7QWN0aW9uUG9zaXRpb25FbnVtfSBmcm9tICcuLi8uLi9hY3Rpb24vbW9kZWxzL2FjdGlvbi50eXBlJztcbmltcG9ydCB7VGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXN9IGZyb20gJy4uLy4uL2FjdGlvbi9tb2RlbHMvdGFibGV2aWV3LWFjdGlvbi1kZWZhdWx0LWNhdGVnb3JpZXMubW9kZWwnO1xuaW1wb3J0IHtEYXRhUHJvdmlkZXJFeGVjdXRvcn0gZnJvbSAnLi4vLi4vYWN0aW9uL3NlcnZpY2VzL2RhdGEtcHJvdmlkZXItZXhlY3V0b3Iuc2VydmljZSc7XG5pbXBvcnQge0RBVEFfTEFOR1VBR0VfRFJPUERPV05fQ09NUE9ORU5UX0lUfSBmcm9tICcuLi8uLi9hY3Rpb24vc2VydmljZXMvdG9rZW5zL2RhdGEtbGFuZ3VhZ2UtZHJvcGRvd24udG9rZW4nO1xuaW1wb3J0IHtFZGl0b3JEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vZWRpdG9yL2Rlc2NyaXB0b3JzL2VkaXRvci5kZXNjcmlwdG9yJztcbmltcG9ydCB7VGFibGV2aWV3RGVzY3JpcHRvckluc3R9IGZyb20gJy4uL2Rlc2NyaXB0b3JzL3RhYmxldmlldy5kZXNjcmlwdG9yJztcbmltcG9ydCB7VGFibGV2aWV3Um91dGVEYXRhfSBmcm9tICcuLi9tb2RlbHMvdGFibGV2aWV3LXJvdXRlLm1vZGVsJztcbmltcG9ydCB7Y29udmVydERhdGFUb1N0cmluZ1dpdGhEZWxpbWl0ZXIsIHNhdmVGaWxlQXN9IGZyb20gJy4vZmlsZXMtZXhwb3J0JztcblxuZXhwb3J0IGVudW0gVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtIHtcbiAgICBEZXRhaWxzLFxuICAgIEFkZCxcbiAgICBFZGl0LFxuICAgIEVkaXRPbkRldGFpbHMsXG4gICAgRGVsZXRlLFxuICAgIERlbGV0ZU9uRGV0YWlscyxcbiAgICBSZWZyZXNoLFxuICAgIEV4cG9ydCxcbiAgICBFeHBvcnRKc29uLFxuICAgIEV4cG9ydENzdixcbiAgICBMb2NhbGl6YXRpb25MYW5ndWFnZVNlbGVjdFxufVxuXG5jb25zdCB0YWJsZXZpZXdEZWZhdWx0QWN0aW9ucyA9IFtcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGV0YWlscyxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uQWRkLFxuICAgIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FZGl0LFxuICAgIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FZGl0T25EZXRhaWxzLFxuICAgIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5EZWxldGUsXG4gICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkRlbGV0ZU9uRGV0YWlscyxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uUmVmcmVzaCxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0LFxuICAgIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRKc29uLFxuICAgIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRDc3YsXG4gICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkxvY2FsaXphdGlvbkxhbmd1YWdlU2VsZWN0XG5dO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFibGV2aWV3RGVmYXVsdEFjdGlvbnMoKSB7XG4gICAgcmV0dXJuIFsuLi50YWJsZXZpZXdEZWZhdWx0QWN0aW9uc107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUYWJsZXZpZXdBY3Rpb25zKFxuICAgIHRhYmxldmlldzogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8YW55LCBhbnksIGFueT4sXG4gICAgZGVmYXVsdEFjdGlvbnM/OiBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW1bXSxcbiAgICBkZWZhdWx0QWN0aW9uc092ZXJyaWRlcz86IFJlY29yZDxudW1iZXIsIEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4+LFxuICAgIGluamVjdG9yPzogSW5qZWN0b3IgfCBudWxsXG4pOiBBcnJheTxBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnk+PiB7XG4gICAgcmV0dXJuIChkZWZhdWx0QWN0aW9ucyA/PyBnZXRUYWJsZXZpZXdEZWZhdWx0QWN0aW9ucygpKVxuICAgICAgICAubWFwKHQgPT4gY3JlYXRlVGFibGV2aWV3QWN0aW9uKHQsIHRhYmxldmlldywgZGVmYXVsdEFjdGlvbnMsIGRlZmF1bHRBY3Rpb25zT3ZlcnJpZGVzLCBpbmplY3RvcikpXG4gICAgICAgIC5maWx0ZXIoZSA9PiBlICE9IG51bGwpIGFzIEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVGFibGV2aWV3QWN0aW9uKFxuICAgIHR5cGU6IFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bSxcbiAgICB0YWJsZXZpZXc6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PGFueSwgYW55LCBhbnk+LFxuICAgIGRlZmF1bHRBY3Rpb25zPzogVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtW10sXG4gICAgZGVmYXVsdEFjdGlvbnNPdmVycmlkZXM/OiBSZWNvcmQ8bnVtYmVyLCBBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnk+PixcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbFxuKTogQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55PiB8IG51bGwge1xuICAgIGlmIChkZWZhdWx0QWN0aW9uc092ZXJyaWRlcyAhPSBudWxsICYmIGRlZmF1bHRBY3Rpb25zT3ZlcnJpZGVzW3R5cGVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRBY3Rpb25zT3ZlcnJpZGVzW3R5cGVdO1xuICAgIH1cblxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAvLyB0YWJsZSByb3cgYWN0aW9uc1xuICAgICAgICBjYXNlIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5EZXRhaWxzOlxuICAgICAgICAgICAgcmV0dXJuIHRhYmxldmlld0RldGFpbHNBY3Rpb24odGFibGV2aWV3LmRldGFpbHNFZGl0b3IsIGluamVjdG9yKTtcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRWRpdDpcbiAgICAgICAgICAgIHJldHVybiB0YWJsZXZpZXdFZGl0QWN0aW9uKHRhYmxldmlldy5lZGl0RWRpdG9yLCBpbmplY3Rvcik7XG4gICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkRlbGV0ZTpcbiAgICAgICAgICAgIHJldHVybiB0YWJsZXZpZXdEZWxldGVBY3Rpb24odGFibGV2aWV3Lm1vZGVsLCBpbmplY3Rvcik7XG4gICAgICAgIC8vIHRhYmxlIHRvb2xiYXIgYWN0aW9uc1xuICAgICAgICBjYXNlIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5BZGQ6XG4gICAgICAgICAgICByZXR1cm4gdGFibGV2aWV3QWRkQWN0aW9uKHRhYmxldmlldy5hZGRFZGl0b3IsIGluamVjdG9yKTtcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uTG9jYWxpemF0aW9uTGFuZ3VhZ2VTZWxlY3Q6XG4gICAgICAgICAgICByZXR1cm4gdGFibGV2aWV3TG9jYWxpemF0aW9uTGFuZ3VhZ2VTZWxlY3RBY3Rpb24odGFibGV2aWV3KTtcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uUmVmcmVzaDpcbiAgICAgICAgICAgIHJldHVybiB0YWJsZXZpZXdSZWZyZXNoQWN0aW9uKHRhYmxldmlldy5tb2RlbCk7XG4gICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkV4cG9ydDpcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0QWN0aW9ucyA9PSBudWxsIHx8IGRlZmF1bHRBY3Rpb25zLmluY2x1ZGVzKFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRKc29uKSB8fCBkZWZhdWx0QWN0aW9ucy5pbmNsdWRlcyhUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0Q3N2KVxuICAgICAgICAgICAgICAgID8gdGFibGV2aWV3RXhwb3J0QWN0aW9uKHRhYmxldmlldywgaW5qZWN0b3IsIGRlZmF1bHRBY3Rpb25zKVxuICAgICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgLy9kZXRhaWxzIGFjdGlvbnNcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRWRpdE9uRGV0YWlsczpcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0QWN0aW9ucyA9PSBudWxsIHx8IGRlZmF1bHRBY3Rpb25zLmluY2x1ZGVzKFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FZGl0KVxuICAgICAgICAgICAgICAgID8gdGFibGV2aWV3RWRpdE9uRGV0YWlsc0FjdGlvbih0YWJsZXZpZXcubW9kZWwsIHRhYmxldmlld0VkaXRBY3Rpb24odGFibGV2aWV3LmVkaXRFZGl0b3IsIGluamVjdG9yKSwgaW5qZWN0b3IpXG4gICAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICBjYXNlIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5EZWxldGVPbkRldGFpbHM6XG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdEFjdGlvbnMgPT0gbnVsbCB8fCBkZWZhdWx0QWN0aW9ucy5pbmNsdWRlcyhUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGVsZXRlKSA/IHRhYmxldmlld0RlbGV0ZU9uRGV0YWlsc0FjdGlvbih0YWJsZXZpZXcubW9kZWwsIGluamVjdG9yKSA6IG51bGw7XG4gICAgICAgIC8vIHN1YmFjdGlvbnNcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0SnNvbjpcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0Q3N2OlxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYFRhYmxldmlldyBkZWZhdWx0IGFjdGlvbiBvZiB0eXBlICR7dHlwZX0gbm90IHN1cHBvcnRlZGApO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZ2V0SW5qZWN0b3IoaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGwpOiBJbmplY3RvciB8IG51bGwge1xuICAgIHJldHVybiBpbmplY3RvciA9PT0gdW5kZWZpbmVkID8gaW5qZWN0KEluamVjdG9yKSA6IGluamVjdG9yO1xufVxuXG5mdW5jdGlvbiBnZXRSb3V0ZURhdGEoaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGwpIHtcbiAgICByZXR1cm4gZ2V0SW5qZWN0b3IoaW5qZWN0b3IpPy5nZXQoQWN0aXZhdGVkUm91dGUpPy5zbmFwc2hvdC5kYXRhIGFzIFRhYmxldmlld1JvdXRlRGF0YSB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0RldGFpbHNBY3Rpb248TW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KFxuICAgIGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PE1vZGVsPixcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbFxuKTogQWN0aW9uRWRpdG9yRGV0YWlsc0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlPiB8IG51bGwge1xuICAgIGNvbnN0IHJvdXRlRGF0YSA9IGdldFJvdXRlRGF0YShpbmplY3Rvcik7XG4gICAgcmV0dXJuICFyb3V0ZURhdGE/LnRhYmxldmlld0FjdGlvbnMgfHwgcm91dGVEYXRhLnRhYmxldmlld0FjdGlvbnMuaGFzRGV0YWlscyA/IG5ldyBBY3Rpb25FZGl0b3JEZXRhaWxzRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2U+KGRlc2NyaXB0b3IpIDogbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0RldGFpbHNBY3Rpb25XaXRoUHJvdmlkZXI8TW9kZWwsIFNlcnZpY2U+KFxuICAgIGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PE1vZGVsPixcbiAgICBzZXJ2aWNlUHJvdmlkZXI6IEFjdGlvbkVkaXRvclByb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT4sXG4gICAgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGxcbik6IEFjdGlvbkVkaXRvckRldGFpbHNEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZT4gfCBudWxsIHtcbiAgICBjb25zdCByb3V0ZURhdGEgPSBnZXRSb3V0ZURhdGEoaW5qZWN0b3IpO1xuICAgIHJldHVybiAhcm91dGVEYXRhPy50YWJsZXZpZXdBY3Rpb25zIHx8IHJvdXRlRGF0YS50YWJsZXZpZXdBY3Rpb25zLmhhc0RldGFpbHNcbiAgICAgICAgPyBuZXcgQWN0aW9uRWRpdG9yRGV0YWlsc0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlPihkZXNjcmlwdG9yLCB7XG4gICAgICAgICAgICAgIC4uLmFjdGlvbkVkaXRvckdldFByb3ZpZGVyQ2ZnT2JqKHNlcnZpY2VQcm92aWRlcilcbiAgICAgICAgICB9KVxuICAgICAgICA6IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdBZGRBY3Rpb248TW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KFxuICAgIGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PE1vZGVsPixcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbFxuKTogQWN0aW9uRWRpdG9yQWRkRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2U+IHwgbnVsbCB7XG4gICAgY29uc3Qgcm91dGVEYXRhID0gZ2V0Um91dGVEYXRhKGluamVjdG9yKTtcbiAgICByZXR1cm4gIXJvdXRlRGF0YT8udGFibGV2aWV3QWN0aW9ucyB8fCByb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNBZGQgPyBuZXcgQWN0aW9uRWRpdG9yQWRkRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2U+KGRlc2NyaXB0b3IpIDogbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0FkZEFjdGlvbldpdGhQcm92aWRlcjxNb2RlbCwgU2VydmljZT4oXG4gICAgZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWw+LFxuICAgIHNlcnZpY2VQcm92aWRlcjogQWN0aW9uRWRpdG9yUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPixcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbFxuKTogQWN0aW9uRWRpdG9yQWRkRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2U+IHwgbnVsbCB7XG4gICAgY29uc3Qgcm91dGVEYXRhID0gZ2V0Um91dGVEYXRhKGluamVjdG9yKTtcbiAgICByZXR1cm4gIXJvdXRlRGF0YT8udGFibGV2aWV3QWN0aW9ucyB8fCByb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNBZGRcbiAgICAgICAgPyBuZXcgQWN0aW9uRWRpdG9yQWRkRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2U+KGRlc2NyaXB0b3IsIHtcbiAgICAgICAgICAgICAgLi4uYWN0aW9uRWRpdG9yR2V0UHJvdmlkZXJDZmdPYmooc2VydmljZVByb3ZpZGVyKVxuICAgICAgICAgIH0pXG4gICAgICAgIDogbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0VkaXRBY3Rpb248TW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KFxuICAgIGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PE1vZGVsPixcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbFxuKTogQWN0aW9uRWRpdG9yRWRpdERlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlPiB8IG51bGwge1xuICAgIGNvbnN0IHJvdXRlRGF0YSA9IGdldFJvdXRlRGF0YShpbmplY3Rvcik7XG4gICAgcmV0dXJuICFyb3V0ZURhdGE/LnRhYmxldmlld0FjdGlvbnMgfHwgcm91dGVEYXRhLnRhYmxldmlld0FjdGlvbnMuaGFzRWRpdCA/IG5ldyBBY3Rpb25FZGl0b3JFZGl0RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2U+KGRlc2NyaXB0b3IpIDogbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0VkaXRBY3Rpb25XaXRoUHJvdmlkZXI8TW9kZWwsIFNlcnZpY2U+KFxuICAgIGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PE1vZGVsPixcbiAgICBzZXJ2aWNlUHJvdmlkZXI6IEFjdGlvbkVkaXRvclByb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT4sXG4gICAgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGxcbik6IEFjdGlvbkVkaXRvckVkaXREZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZT4gfCBudWxsIHtcbiAgICBjb25zdCByb3V0ZURhdGEgPSBnZXRSb3V0ZURhdGEoaW5qZWN0b3IpO1xuICAgIHJldHVybiAhcm91dGVEYXRhPy50YWJsZXZpZXdBY3Rpb25zIHx8IHJvdXRlRGF0YS50YWJsZXZpZXdBY3Rpb25zLmhhc0VkaXRcbiAgICAgICAgPyBuZXcgQWN0aW9uRWRpdG9yRWRpdERlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlPihkZXNjcmlwdG9yLCB7XG4gICAgICAgICAgICAgIC4uLmFjdGlvbkVkaXRvckdldFByb3ZpZGVyQ2ZnT2JqKHNlcnZpY2VQcm92aWRlcilcbiAgICAgICAgICB9KVxuICAgICAgICA6IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdFZGl0T25EZXRhaWxzQWN0aW9uPE1vZGVsPihcbiAgICBkZXNjcmlwdG9yOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LFxuICAgIGVkaXREZXNjcmlwdG9yOiBBY3Rpb25FZGl0b3JFZGl0RGVzY3JpcHRvckluc3Q8TW9kZWw+IHwgbnVsbCxcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbFxuKTogQWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0PE1vZGVsPiB8IG51bGwge1xuICAgIGNvbnN0IHJvdXRlRGF0YSA9IGdldFJvdXRlRGF0YShpbmplY3Rvcik7XG4gICAgaWYgKHJvdXRlRGF0YT8udGFibGV2aWV3QWN0aW9ucyAmJiAhcm91dGVEYXRhLnRhYmxldmlld0FjdGlvbnMuaGFzRWRpdCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBhY3Rpb24gPSBlZGl0RGVzY3JpcHRvclxuICAgICAgICA/IGFjdGlvbkxpbmtGcm9tQWN0aW9uKGVkaXREZXNjcmlwdG9yKVxuICAgICAgICA6IG5ldyBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Q8TW9kZWw+KEFjdGlvbkVkaXRvckVkaXREZXNjcmlwdG9ySW5zdC5BQ1RJT05fTkFNRSwge1xuICAgICAgICAgICAgICBtb2RlbDogZGVzY3JpcHRvclxuICAgICAgICAgIH0pO1xuICAgIGFjdGlvblxuICAgICAgICAud2l0aFRhYmxldmlld0NhdGVnb3J5KFRhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkVESVQpXG4gICAgICAgIC53aXRoUG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzKFtUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERVRBSUxTXSlcbiAgICAgICAgLndpdGhQb3NpdGlvbihBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyTGVmdClcbiAgICAgICAgLndpdGhSb3V0ZXJMaW5rKCcuL2VkaXQnKTtcbiAgICBhY3Rpb24uYnV0dG9uLnN0eWxlQ2xhc3Mud2l0aEFjdGlvbkxldmVsKFN0eWxlTGV2ZWxFbnVtLlNlY29uZGFyeSk7XG4gICAgYWN0aW9uLmJ1dHRvbi5zdHlsZUNsYXNzLndpdGhTaXplKFN0eWxlU2l6ZUVudW0uTm9ybWFsKTtcbiAgICBhY3Rpb24uYnV0dG9uLnN0eWxlQ2xhc3Mud2l0aFJvdW5kZWRCdXR0b24oQnV0dG9uU3R5bGVSb3VuZGVkRW51bS5ERUZBVUxUKTtcbiAgICBhY3Rpb24uYnV0dG9uLndpdGhMYWJlbCgpO1xuICAgIGlmICghZWRpdERlc2NyaXB0b3IpIGFjdGlvbi5idXR0b24ud2l0aEljb24oJ3BpIHBpLXBlbmNpbCcpO1xuXG4gICAgcmV0dXJuIGFjdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0RlbGV0ZUFjdGlvbjxNb2RlbCwgU2VydmljZSA9IHVuZGVmaW5lZD4oXG4gICAgZGVzY3JpcHRvcjogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPixcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbFxuKTogQWN0aW9uRGVsZXRlRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2U+IHwgbnVsbCB7XG4gICAgY29uc3Qgcm91dGVEYXRhID0gZ2V0Um91dGVEYXRhKGluamVjdG9yKTtcbiAgICByZXR1cm4gIXJvdXRlRGF0YT8udGFibGV2aWV3QWN0aW9ucyB8fCByb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNEZWxldGUgPyBuZXcgQWN0aW9uRGVsZXRlRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2U+KGRlc2NyaXB0b3IpIDogbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0RlbGV0ZUFjdGlvbldpdGhQcm92aWRlcjxNb2RlbCwgU2VydmljZT4oXG4gICAgZGVzY3JpcHRvcjogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPixcbiAgICBzZXJ2aWNlUHJvdmlkZXI6IEFjdGlvblByb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT4sXG4gICAgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGxcbik6IEFjdGlvbkRlbGV0ZURlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlPiB8IG51bGwge1xuICAgIGNvbnN0IHJvdXRlRGF0YSA9IGdldFJvdXRlRGF0YShpbmplY3Rvcik7XG4gICAgcmV0dXJuICFyb3V0ZURhdGE/LnRhYmxldmlld0FjdGlvbnMgfHwgcm91dGVEYXRhLnRhYmxldmlld0FjdGlvbnMuaGFzRGVsZXRlXG4gICAgICAgID8gbmV3IEFjdGlvbkRlbGV0ZURlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlPihkZXNjcmlwdG9yLCB7XG4gICAgICAgICAgICAgIC4uLmFjdGlvbkdldFByb3ZpZGVyQ2ZnT2JqKHNlcnZpY2VQcm92aWRlcilcbiAgICAgICAgICB9KVxuICAgICAgICA6IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdEZWxldGVPbkRldGFpbHNBY3Rpb248TW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LCBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbCk6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlPiB8IG51bGwge1xuICAgIGNvbnN0IGFjdGlvbiA9IHRhYmxldmlld0RlbGV0ZUFjdGlvbjxNb2RlbCwgU2VydmljZT4obW9kZWwsIGluamVjdG9yKTtcbiAgICBjb25zdCBkYXRhUHJvdmlkZXJFeGVjdXRvciA9IGdldEluamVjdG9yKGluamVjdG9yKT8uZ2V0KERhdGFQcm92aWRlckV4ZWN1dG9yKTtcbiAgICBpZiAoYWN0aW9uKSB7XG4gICAgICAgIGFjdGlvblxuICAgICAgICAgICAgLndpdGhUYWJsZXZpZXdDYXRlZ29yeShUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERUxFVEUpXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcyhbVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuREVUQUlMU10pXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9uKEFjdGlvblBvc2l0aW9uRW51bS5Gb290ZXJMZWZ0KVxuICAgICAgICAgICAgLndpdGhSdW5GdW5jdGlvbihjdHggPT5cbiAgICAgICAgICAgICAgICBkYXRhUHJvdmlkZXJFeGVjdXRvclxuICAgICAgICAgICAgICAgICAgICA/IGRhdGFQcm92aWRlckV4ZWN1dG9yLnJ1bkRlbGV0ZU9yRmFpbChjdHgpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgudmlld0NvbnRhaW5lcj8ucmVsb2FkVGFibGUoe30pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LnZpZXdDb250YWluZXI/LmNsb3NlRWRpdG9yKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICk7XG4gICAgICAgIGFjdGlvbi5idXR0b24ud2l0aExhYmVsKHVuZGVmaW5lZCk7XG4gICAgICAgIGFjdGlvbi5idXR0b24uc3R5bGVDbGFzcy53aXRoU2l6ZShTdHlsZVNpemVFbnVtLk5vcm1hbCk7XG5cbiAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0V4cG9ydEFjdGlvbjxNb2RlbD4oXG4gICAgZGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWw+LFxuICAgIGluamVjdG9yPzogSW5qZWN0b3IgfCBudWxsLFxuICAgIGRlZmF1bHRBY3Rpb25zPzogVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtW11cbik6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsPiB8IG51bGwge1xuICAgIGNvbnN0IGV4cG9ydEFjdGlvbiA9IG5ldyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkPignZXhwb3J0Jywge1xuICAgICAgICBtb2RlbDogZGVzY3JpcHRvci5tb2RlbFxuICAgIH0pXG4gICAgICAgIC53aXRoQnV0dG9uRGVzY3JpcHRvcihuZXcgQWN0aW9uQnV0dG9uRGVzY3JpcHRvcigpLndpdGhJY29uKCdwaSBwaS1kb3dubG9hZCcpKVxuICAgICAgICAud2l0aFN1YmFjdGlvbnNBc01lbnUoKTtcblxuICAgIGNvbnN0IHN1YmFjdGlvbnM6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsPltdID0gW107XG5cbiAgICBpZiAoZGVmYXVsdEFjdGlvbnMgPT0gbnVsbCB8fCBkZWZhdWx0QWN0aW9ucy5pbmNsdWRlcyhUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0SnNvbikpIHN1YmFjdGlvbnMucHVzaCh0YWJsZXZpZXdFeHBvcnRKc29uQWN0aW9uKGRlc2NyaXB0b3IsIGluamVjdG9yKSk7XG4gICAgaWYgKGRlZmF1bHRBY3Rpb25zID09IG51bGwgfHwgZGVmYXVsdEFjdGlvbnMuaW5jbHVkZXMoVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkV4cG9ydENzdikpIHN1YmFjdGlvbnMucHVzaCh0YWJsZXZpZXdFeHBvcnRDc3ZBY3Rpb24oZGVzY3JpcHRvciwgaW5qZWN0b3IpKTtcblxuICAgIGV4cG9ydEFjdGlvbi53aXRoU3ViYWN0aW9ucyguLi5zdWJhY3Rpb25zKTtcbiAgICByZXR1cm4gZXhwb3J0QWN0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3RXhwb3J0SnNvbkFjdGlvbjxNb2RlbD4oZGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWw+LCBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbCk6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsPiB7XG4gICAgY29uc3QgZGF0YVByb3ZpZGVyRXhlY3V0b3IgPSBnZXRJbmplY3RvcihpbmplY3Rvcik/LmdldChEYXRhUHJvdmlkZXJFeGVjdXRvcik7XG4gICAgcmV0dXJuIG5ldyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkPignZXhwb3J0SnNvbicsIHtcbiAgICAgICAgbW9kZWw6IGRlc2NyaXB0b3IubW9kZWxcbiAgICB9KVxuICAgICAgICAud2l0aFJ1bkZ1bmN0aW9uKGN0eCA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXJhbXMgPSBjdHgucGFyYW1ldGVycy5kYXRhTGlzdFBhcmFtcyA/IGNvcHlEYXRhTGlzdFBhcmFtcyhjdHgucGFyYW1ldGVycy5kYXRhTGlzdFBhcmFtcykgOiB7fTtcbiAgICAgICAgICAgIHBhcmFtcy5vZmZzZXQgPSAwO1xuICAgICAgICAgICAgcGFyYW1zLmxpbWl0ID0gNTAwO1xuICAgICAgICAgICAgY3R4LnBhcmFtZXRlcnMuZGF0YUxpc3RQYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgICAgICByZXR1cm4gZGF0YVByb3ZpZGVyRXhlY3V0b3JcbiAgICAgICAgICAgICAgICA/IGRhdGFQcm92aWRlckV4ZWN1dG9yLnJ1bkdldEFsbE9yRmFpbChjdHgpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgbWFwKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkocmVzLmRhdGEsIHVuZGVmaW5lZCwgNCldLCB7dHlwZTogJ2FwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtOCd9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHlwZU5hbWUgPSBjdHguaW5zdGFuY2UuYWN0aW9uLm1vZGVsPy50eXBlTmFtZSA/PyAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGVBcyhibG9iLCBgJHt0eXBlTmFtZSA/IHR5cGVOYW1lICsgJ18nIDogJyd9JHtjdHguaW5zdGFuY2UuYWN0aW9uLmFjdGlvbk5hbWV9Lmpzb25gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogY3R4LnBhcmFtZXRlcnMuaXRlbTtcbiAgICAgICAgfSlcbiAgICAgICAgLndpdGhCdXR0b25EZXNjcmlwdG9yKG5ldyBBY3Rpb25CdXR0b25EZXNjcmlwdG9yKCkud2l0aEljb24oJ3BpIHBpLWNvZGUnKSlcbiAgICAgICAgLndpdGhQb3NpdGlvbihBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0V4cG9ydENzdkFjdGlvbjxNb2RlbD4oZGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWw+LCBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbCk6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsPiB7XG4gICAgY29uc3QgZGF0YVByb3ZpZGVyRXhlY3V0b3IgPSBnZXRJbmplY3RvcihpbmplY3Rvcik/LmdldChEYXRhUHJvdmlkZXJFeGVjdXRvcik7XG4gICAgcmV0dXJuIG5ldyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkPignZXhwb3J0Q3N2Jywge1xuICAgICAgICBtb2RlbDogZGVzY3JpcHRvci5tb2RlbFxuICAgIH0pXG4gICAgICAgIC53aXRoUnVuRnVuY3Rpb24oY3R4ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IGN0eC5wYXJhbWV0ZXJzLmRhdGFMaXN0UGFyYW1zID8gY29weURhdGFMaXN0UGFyYW1zKGN0eC5wYXJhbWV0ZXJzLmRhdGFMaXN0UGFyYW1zKSA6IHt9O1xuICAgICAgICAgICAgcGFyYW1zLm9mZnNldCA9IDA7XG4gICAgICAgICAgICBwYXJhbXMubGltaXQgPSA1MDA7XG4gICAgICAgICAgICBjdHgucGFyYW1ldGVycy5kYXRhTGlzdFBhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgICAgIHJldHVybiBkYXRhUHJvdmlkZXJFeGVjdXRvclxuICAgICAgICAgICAgICAgID8gZGF0YVByb3ZpZGVyRXhlY3V0b3IucnVuR2V0QWxsT3JGYWlsKGN0eCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICBtYXAocmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXMuZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2NvbnZlcnREYXRhVG9TdHJpbmdXaXRoRGVsaW1pdGVyKHJlcy5kYXRhLCAnLCcsIGRlc2NyaXB0b3IsIGN0eC5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSkpXSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQvY3N2O2NoYXJzZXQ9dXRmLTgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlTmFtZSA9IGN0eC5pbnN0YW5jZS5hY3Rpb24ubW9kZWw/LnR5cGVOYW1lID8/ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZUFzKGJsb2IsIGAke3R5cGVOYW1lID8gdHlwZU5hbWUgKyAnXycgOiAnJ30ke2N0eC5pbnN0YW5jZS5hY3Rpb24uYWN0aW9uTmFtZX0uY3N2YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IGN0eC5wYXJhbWV0ZXJzLml0ZW07XG4gICAgICAgIH0pXG4gICAgICAgIC53aXRoQnV0dG9uRGVzY3JpcHRvcihuZXcgQWN0aW9uQnV0dG9uRGVzY3JpcHRvcigpLndpdGhJY29uKCdwaSBwaS1maWxlJykpXG4gICAgICAgIC53aXRoUG9zaXRpb24oQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdSZWZyZXNoQWN0aW9uPE1vZGVsPihkZXNjcmlwdG9yOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+KTogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWw+IHwgbnVsbCB7XG4gICAgY29uc3QgYWN0aW9uID0gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCB1bmRlZmluZWQ+KCdyZWZyZXNoJywge1xuICAgICAgICBtb2RlbDogZGVzY3JpcHRvclxuICAgIH0pXG4gICAgICAgIC53aXRoUG9zaXRpb24oQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodClcbiAgICAgICAgLndpdGhUYWJsZXZpZXdDYXRlZ29yeShUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5SRUFEKVxuICAgICAgICAud2l0aFJ1bk5vdGlmaWNhdGlvblN1Y2Nlc3ModW5kZWZpbmVkLCB1bmRlZmluZWQsIGZhbHNlKVxuICAgICAgICAud2l0aFJ1bkZ1bmN0aW9uKGN0eCA9PiB7XG4gICAgICAgICAgICBjdHgudmlld0NvbnRhaW5lcj8ucmVsb2FkVGFibGUoe30pO1xuICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9KTtcbiAgICBhY3Rpb24uYnV0dG9uLndpdGhJY29uKCdwaSBwaS1yZWZyZXNoJykuc3R5bGVDbGFzcy53aXRoQWN0aW9uTGV2ZWwoU3R5bGVMZXZlbEVudW0uU2Vjb25kYXJ5KTtcbiAgICByZXR1cm4gYWN0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3TG9jYWxpemF0aW9uTGFuZ3VhZ2VTZWxlY3RBY3Rpb248TW9kZWw+KGRlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsPik6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsPiB8IG51bGwge1xuICAgIHJldHVybiBkZXNjcmlwdG9yLmlzTG9jYWxpemVkKClcbiAgICAgICAgPyBuZXcgQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIHVuZGVmaW5lZD4oJ3RyYW5zbGF0b3InLCB7XG4gICAgICAgICAgICAgIG1vZGVsOiBkZXNjcmlwdG9yLm1vZGVsXG4gICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLndpdGhQb3NpdGlvbihBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQpXG4gICAgICAgICAgICAgIC53aXRoQ29tcG9uZW50RnJvbURpKERBVEFfTEFOR1VBR0VfRFJPUERPV05fQ09NUE9ORU5UX0lUKVxuICAgICAgICA6IG51bGw7XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mediusinc-mng-commons-model.mjs","sources":["../../model/src/data-providers/base-from-type-data-provider.factory.ts","../../model/src/descriptors/enum.descriptor.ts","../../model/src/helpers/model.ts","../../model/src/descriptors/type.descriptor.ts","../../model/src/descriptors/model.descriptor.ts","../../model/src/helpers/i18n.ts","../../model/src/index.ts","../../model/src/mediusinc-mng-commons-model.ts"],"sourcesContent":["import {ClassType, DataProviderInst, ServiceClassType} from '@mediusinc/mng-commons/core';\n\nimport {ModelDescriptor} from '../descriptors/model.descriptor';\nimport {TypeDescriptor} from '../descriptors/type.descriptor';\n\nexport function dataProvider<Model>(): DataProviderInst<Model, undefined, undefined, undefined>;\nexport function dataProvider<Model>(type: TypeDescriptor<Model>): DataProviderInst<Model, undefined, undefined, undefined>;\nexport function dataProvider<Model, Service = any>(\n type: TypeDescriptor<Model>,\n serviceType: ServiceClassType<Service>\n): DataProviderInst<Model, Service, undefined, ServiceClassType<Service>>;\nexport function dataProvider<Model, Service = any, ServiceClass = ServiceClassType<Service>>(type?: TypeDescriptor<Model>, serviceType?: ServiceClass) {\n return new DataProviderInst<Model, Service, undefined, ServiceClass>(undefined, serviceType as ServiceClass);\n}\n\nexport function dataProviderFromModel<Model, ModelClass = ClassType<Model>>(model: ModelDescriptor<Model, ModelClass>): DataProviderInst<Model, undefined, ModelClass, undefined>;\nexport function dataProviderFromModel<Model, Service = any, ModelClass = ClassType<Model>>(\n model: ModelDescriptor<Model, ModelClass>,\n ServiceClass: ServiceClassType<Service>\n): DataProviderInst<Model, Service, ModelClass, ServiceClassType<Service>>;\nexport function dataProviderFromModel<Model, Service = any, ModelClass = ClassType<Model>, ServiceClass = ServiceClassType<Service>>(\n model: ModelDescriptor<Model, ModelClass>,\n serviceType?: ServiceClass\n) {\n return new DataProviderInst<Model, Service, ClassType<Model>, ServiceClass>(model.type as ClassType<Model>, serviceType as ServiceClass);\n}\n","import {EnumType, findReflectEnumName} from '@mediusinc/mng-commons/core';\n\nexport class EnumDescriptor<Enum> {\n private readonly _value: Enum;\n private readonly _type: EnumType;\n private readonly _nameAsValue;\n private readonly _i18nBaseKey: string | null;\n\n public constructor(value: Enum, type: EnumType, i18nBaseKey?: string | null, nameAsValue = false) {\n this._value = value;\n this._type = type;\n this._nameAsValue = nameAsValue;\n\n if (typeof i18nBaseKey === 'undefined') {\n i18nBaseKey = findReflectEnumName(type);\n }\n this._i18nBaseKey = i18nBaseKey;\n }\n\n public get type() {\n return this._type;\n }\n\n public get i18nBaseKey() {\n return this._i18nBaseKey;\n }\n\n public get nameAsValue() {\n return this._nameAsValue;\n }\n}\n\nexport function enumModel<Enum>(value: Enum, type: EnumType, i18nBaseKey: string | undefined | null = null, nameAsValue = false) {\n return new EnumDescriptor<Enum>(value, type, i18nBaseKey, nameAsValue);\n}\n\nexport function enumModelGeneric(type: EnumType, i18nBaseKey: string | undefined | null = null, nameAsValue = false) {\n return new EnumDescriptor<any>(undefined, type, i18nBaseKey, nameAsValue);\n}\n","import {ClassAttributeDef, ClassType, ILookupDescriptor, TypeRegistry} from '@mediusinc/mng-commons/core';\n\nexport function findClassIdAttribute<T>(classType?: ClassType<T>): string | null {\n if (!classType) return null;\n\n const attrDef = getClassAttributeDef(classType);\n if (!attrDef) {\n return null;\n }\n\n let idAttribute = findAttributeByTypeAndName(attrDef, ['string', 'number'], 'id', 'uuid', 'code', 'sifra');\n if (!idAttribute) {\n // if no id or code, take the first attribute\n idAttribute = attrDef[0];\n }\n\n return idAttribute?.name ?? null;\n}\n\nexport function findClassTitleAttribute<T>(classType?: ClassType<T>): string | null {\n if (!classType) return null;\n\n const attrDef = getClassAttributeDef(classType);\n if (!attrDef) {\n return null;\n }\n\n let titleAttribute = findAttributeByTypeAndName(attrDef, ['string'], 'name', 'ime', 'title', 'naziv');\n if (!titleAttribute) {\n // if no name or title, take the first attribute\n titleAttribute = attrDef[0];\n }\n\n return titleAttribute?.name ?? null;\n}\n\nexport function getClassAttributeDef<T>(classType?: ClassType<T>) {\n if (!classType) return null;\n const attrDefByFn = (classType as any).getAttributeTypeMap?.() as Array<ClassAttributeDef> | undefined;\n if (attrDefByFn) return attrDefByFn;\n const attrDefByProp = (classType as any).attributeTypeMap as Array<ClassAttributeDef> | undefined;\n if (attrDefByProp) return attrDefByProp;\n const attrByObjSer = TypeRegistry.get().findAttributesDefinitionByClassType(classType);\n if (attrByObjSer) return attrByObjSer;\n return null;\n}\n\nfunction findAttributeByTypeAndName(attributes: ClassAttributeDef[], types: string[], ...names: string[]): ClassAttributeDef | null {\n for (const name of names) {\n const attribute = attributes.find(a => types.some(t => t === a.type) && a.name === name);\n if (attribute) {\n return attribute;\n }\n }\n return null;\n}\n\nexport function trySetLookupItemsProperties<T>(lookup: ILookupDescriptor<T>, idAsTrack = true) {\n if (lookup.dataProvider.classType) {\n if (!lookup.optionsValueProperty && !lookup.optionsTrackProperty) {\n const idProperty = findClassIdAttribute(lookup.dataProvider.classType) ?? undefined;\n if (idProperty && !lookup.optionsValueProperty && !lookup.optionsTrackProperty) {\n if (idAsTrack) {\n lookup.withOptionsTrackPropertyUnsafe(idProperty);\n }\n }\n }\n if (!lookup.optionsLabelProperty) {\n const labelProperty = findClassTitleAttribute(lookup.dataProvider.classType);\n if (labelProperty) {\n lookup.withOptionsLabelPropertyUnsafe(labelProperty);\n }\n }\n }\n}\n","import {ClassType} from '@mediusinc/mng-commons/core';\n\nexport class TypeDescriptor<Type> {\n private readonly _classType?: ClassType<Type>;\n\n public constructor(classType?: ClassType<Type>) {\n this._classType = classType;\n }\n\n public get classType() {\n return this._classType;\n }\n}\n\nexport function type<Type>(): TypeDescriptor<Type> {\n return new TypeDescriptor<Type>();\n}\n\nexport function typeClass<Type>(type: ClassType<Type>): TypeDescriptor<Type> {\n return new TypeDescriptor<Type>(type);\n}\n","import {ClassOptType, ClassType, CommonsInternalError, IModelDescriptor, findReflectTypeName} from '@mediusinc/mng-commons/core';\n\nimport {findClassIdAttribute, findClassTitleAttribute} from '../helpers/model';\nimport {TypeDescriptor} from './type.descriptor';\n\nexport class ModelDescriptor<Model, ModelClass = ClassOptType<Model>> implements IModelDescriptor<Model, ModelClass> {\n private readonly _type: ModelClass;\n private readonly _typeName?: string;\n private _i18nBaseKey: string;\n private _idProperty?: string;\n private _titleProperty?: string | ((item: Model) => string);\n\n public constructor(type: ModelClass, idProperty?: string, titleProperty?: string | ((item: Model) => string), i18nBaseKey?: string | ClassType<any>) {\n this._type = type;\n this._typeName = findReflectTypeName(type as ClassType<Model>) ?? undefined;\n this._idProperty = idProperty;\n this._titleProperty = titleProperty;\n if (!this._idProperty && type) {\n this._idProperty = findClassIdAttribute(type as unknown as ClassType<Model>) ?? undefined;\n }\n if (!this._titleProperty && type) {\n this._titleProperty = findClassTitleAttribute(type as unknown as ClassType<Model>) ?? undefined;\n }\n this._i18nBaseKey = (typeof i18nBaseKey === 'string' || typeof i18nBaseKey === 'undefined' ? i18nBaseKey : findReflectTypeName(i18nBaseKey)) ?? this._typeName ?? '';\n }\n\n /**\n * @deprecated Use standalone {model()} instead.\n */\n public static create<Model>(idProperty?: keyof Model, titleProperty?: keyof Model, i18nBaseKey?: string | ClassType<unknown>): ModelDescriptor<Model, undefined> {\n return new ModelDescriptor(undefined, idProperty as string, titleProperty as string, i18nBaseKey);\n }\n\n /**\n * @deprecated Use standalone {model()} instead.\n */\n public static fromClass<Model>(\n type: ClassType<Model>,\n idProperty?: keyof Model,\n titleProperty?: keyof Model,\n i18nBaseKey?: string | ClassType<unknown>\n ): ModelDescriptor<Model, ClassType<Model>> {\n return new ModelDescriptor(type, idProperty as string, titleProperty as string, i18nBaseKey);\n }\n\n public get type() {\n return this._type;\n }\n\n public get typeName() {\n return this._typeName;\n }\n\n public get i18nBaseKey() {\n return this._i18nBaseKey;\n }\n\n public get idProperty() {\n return this._idProperty;\n }\n\n public get titleProperty() {\n return this._titleProperty;\n }\n\n public withIdProperty(property: keyof Model): this {\n this._idProperty = property as string;\n return this;\n }\n\n public withIdPropertyUnsafe(property: string): this {\n this._idProperty = property;\n return this;\n }\n\n public withTitleProperty(property: keyof Model): this {\n this._titleProperty = property as string;\n return this;\n }\n\n public withTitlePropertyUnsafe(property: string): this {\n this._titleProperty = property;\n return this;\n }\n\n public withI18nBase(base: ClassType<any> | string): this {\n if (typeof base !== 'string') {\n const typeName = findReflectTypeName(base);\n if (!typeName) {\n throw new CommonsInternalError(`Could not find define i18nBaseKey for ${base} on model ${this.typeName}`);\n }\n base = typeName;\n }\n this._i18nBaseKey = base;\n return this;\n }\n\n public copy(): ModelDescriptor<Model, ModelClass> {\n return new ModelDescriptor<Model, ModelClass>(this._type, this._idProperty, this._titleProperty, this._i18nBaseKey);\n }\n}\n\nexport type ModelDescriptorCreateOpts<Model> = {\n id?: keyof Model;\n title?: keyof Model | ((item: Model) => string);\n i18nBase?: string | ClassType<any>;\n};\n\nexport function model<Model>(): ModelDescriptor<Model, undefined>;\nexport function model<Model>(opts: ModelDescriptorCreateOpts<Model>): ModelDescriptor<Model, undefined>;\nexport function model<Model>(type: TypeDescriptor<Model>, opts?: ModelDescriptorCreateOpts<Model>): ModelDescriptor<Model, undefined>;\nexport function model<Model>(clazz: ClassType<Model>, opts?: ModelDescriptorCreateOpts<Model>): ModelDescriptor<Model, ClassType<Model>>;\nexport function model<Model>(typeOrClassOrOpts?: ClassType<Model> | TypeDescriptor<Model> | ModelDescriptorCreateOpts<Model>, opts?: ModelDescriptorCreateOpts<Model>) {\n if (typeOrClassOrOpts == null) {\n return new ModelDescriptor<Model, undefined>(undefined);\n } else if (typeOrClassOrOpts instanceof TypeDescriptor) {\n return new ModelDescriptor<Model, undefined>(undefined, opts?.id as string, opts?.title as string, opts?.i18nBase);\n } else if (typeof typeOrClassOrOpts === 'function') {\n return new ModelDescriptor<Model, ClassType<Model>>(typeOrClassOrOpts as ClassType<Model>, opts?.id as string, opts?.title as string, opts?.i18nBase);\n } else {\n const typeOrClassAsOpts = typeOrClassOrOpts as ModelDescriptorCreateOpts<Model>;\n return new ModelDescriptor<Model, undefined>(undefined, typeOrClassAsOpts?.id as string, typeOrClassAsOpts?.title as string, typeOrClassAsOpts?.i18nBase);\n }\n}\n","import {TranslateService} from '@ngx-translate/core';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {KeyOfType, getI18n, getI18nTypeKeyBasePath, getI18nTypeParams, getI18nTypeParamsAsync} from '@mediusinc/mng-commons/core';\n\nimport {ModelDescriptor} from '../descriptors/model.descriptor';\n\nexport function getI18nForModel(\n translate: TranslateService,\n model: ModelDescriptor<any>,\n keyPath: string,\n customKey?: string,\n item?: any,\n fallbackKey?: string,\n params?: any\n): string | null {\n const keys = getKeysByPriority(model, keyPath, customKey, fallbackKey);\n const i18nParams = getI18nModelParams(translate, model, item, params);\n return getI18n(translate, i18nParams, ...keys);\n}\n\nexport function getI18nModelParams(translate: TranslateService, model?: ModelDescriptor<any>, item?: any, params: any = {}): any {\n const i18nParams = getI18nTypeParams(translate, model?.i18nBaseKey, item, params);\n return populateI18nModelParams(model?.idProperty, model?.titleProperty, item, i18nParams);\n}\n\nexport function getI18nModelParamsAsync(translate: TranslateService, model?: ModelDescriptor<any>, item?: any, params: any = {}): Observable<any> {\n return getI18nTypeParamsAsync(translate, model?.i18nBaseKey, item, params).pipe(\n map(i18nParams => populateI18nModelParams(model?.idProperty, model?.titleProperty, item, i18nParams))\n );\n}\n\nexport function populateI18nModelParams(idProperty?: KeyOfType, titleProperty?: KeyOfType | ((item: any) => string), item?: any, params: any = {}): any {\n const paramsRes = {...params, itemId: '', itemTitle: ''};\n if (item) {\n if (idProperty && item[idProperty]) {\n paramsRes.itemId = item[idProperty];\n }\n if (typeof titleProperty === 'function') {\n paramsRes.itemTitle = titleProperty(item);\n } else if (titleProperty && item[titleProperty]) {\n paramsRes.itemTitle = item[titleProperty];\n }\n }\n return paramsRes;\n}\n\nfunction getKeysByPriority(model: ModelDescriptor<any>, keyPath: string, customKey?: string, fallbackKey?: string) {\n const keys = [];\n if (customKey) {\n keys.push(customKey);\n }\n const modelActionKey = getI18nTypeKeyBasePath(model.i18nBaseKey, ...keyPath);\n keys.push(modelActionKey);\n if (fallbackKey) {\n keys.push(fallbackKey);\n }\n return keys;\n}\n","// data providers\nexport * from './data-providers/base-from-type-data-provider.factory';\n\n// descriptors\nexport * from './descriptors/enum.descriptor';\nexport * from './descriptors/model.descriptor';\nexport * from './descriptors/type.descriptor';\n\n// helpers\nexport * from './helpers/i18n';\nexport * from './helpers/model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mediusinc-mng-commons-model.mjs","sources":["../../model/src/data-providers/base-from-type-data-provider.factory.ts","../../model/src/descriptors/enum.descriptor.ts","../../model/src/helpers/model.ts","../../model/src/descriptors/type.descriptor.ts","../../model/src/descriptors/model.descriptor.ts","../../model/src/helpers/i18n.ts","../../model/src/index.ts","../../model/src/mediusinc-mng-commons-model.ts"],"sourcesContent":["import {ClassType, DataProviderInst, ServiceClassType} from '@mediusinc/mng-commons/core';\n\nimport {ModelDescriptor} from '../descriptors/model.descriptor';\nimport {TypeDescriptor} from '../descriptors/type.descriptor';\n\nexport function dataProvider<Model>(): DataProviderInst<Model, undefined, undefined, undefined>;\nexport function dataProvider<Model>(type: TypeDescriptor<Model>): DataProviderInst<Model, undefined, undefined, undefined>;\nexport function dataProvider<Model, Service = any>(\n type: TypeDescriptor<Model>,\n serviceType: ServiceClassType<Service>\n): DataProviderInst<Model, Service, undefined, ServiceClassType<Service>>;\nexport function dataProvider<Model, Service = any, ServiceClass = ServiceClassType<Service>>(type?: TypeDescriptor<Model>, serviceType?: ServiceClass) {\n return new DataProviderInst<Model, Service, undefined, ServiceClass>(undefined, serviceType as ServiceClass);\n}\n\nexport function dataProviderFromModel<Model, ModelClass = ClassType<Model>>(model: ModelDescriptor<Model, ModelClass>): DataProviderInst<Model, undefined, ModelClass, undefined>;\nexport function dataProviderFromModel<Model, Service = any, ModelClass = ClassType<Model>>(\n model: ModelDescriptor<Model, ModelClass>,\n ServiceClass: ServiceClassType<Service>\n): DataProviderInst<Model, Service, ModelClass, ServiceClassType<Service>>;\nexport function dataProviderFromModel<Model, Service = any, ModelClass = ClassType<Model>, ServiceClass = ServiceClassType<Service>>(\n model: ModelDescriptor<Model, ModelClass>,\n serviceType?: ServiceClass\n) {\n return new DataProviderInst<Model, Service, ClassType<Model>, ServiceClass>(model.type as ClassType<Model>, serviceType as ServiceClass);\n}\n","import {EnumType, findReflectEnumName} from '@mediusinc/mng-commons/core';\n\nexport class EnumDescriptor<Enum> {\n private readonly _value: Enum;\n private readonly _type: EnumType;\n private readonly _nameAsValue;\n private readonly _i18nBaseKey: string | null;\n\n public constructor(value: Enum, type: EnumType, i18nBaseKey?: string | null, nameAsValue = false) {\n this._value = value;\n this._type = type;\n this._nameAsValue = nameAsValue;\n\n if (typeof i18nBaseKey === 'undefined') {\n i18nBaseKey = findReflectEnumName(type);\n }\n this._i18nBaseKey = i18nBaseKey;\n }\n\n public get type() {\n return this._type;\n }\n\n public get i18nBaseKey() {\n return this._i18nBaseKey;\n }\n\n public get nameAsValue() {\n return this._nameAsValue;\n }\n}\n\nexport function enumModel<Enum>(value: Enum, type: EnumType, i18nBaseKey: string | undefined | null = null, nameAsValue = false) {\n return new EnumDescriptor<Enum>(value, type, i18nBaseKey, nameAsValue);\n}\n\nexport function enumModelGeneric<Enum = any>(type: EnumType, i18nBaseKey: string | undefined | null = null, nameAsValue = false) {\n return new EnumDescriptor<Enum>(undefined as Enum, type, i18nBaseKey, nameAsValue);\n}\n","import {ClassAttributeDef, ClassType, ILookupDescriptor, TypeRegistry} from '@mediusinc/mng-commons/core';\n\nexport function findClassIdAttribute<T>(classType?: ClassType<T>): string | null {\n if (!classType) return null;\n\n const attrDef = getClassAttributeDef(classType);\n if (!attrDef) {\n return null;\n }\n\n let idAttribute = findAttributeByTypeAndName(attrDef, ['string', 'number'], 'id', 'uuid', 'code', 'sifra');\n if (!idAttribute) {\n // if no id or code, take the first attribute\n idAttribute = attrDef[0];\n }\n\n return idAttribute?.name ?? null;\n}\n\nexport function findClassTitleAttribute<T>(classType?: ClassType<T>): string | null {\n if (!classType) return null;\n\n const attrDef = getClassAttributeDef(classType);\n if (!attrDef) {\n return null;\n }\n\n let titleAttribute = findAttributeByTypeAndName(attrDef, ['string'], 'name', 'ime', 'title', 'naziv');\n if (!titleAttribute) {\n // if no name or title, take the first attribute\n titleAttribute = attrDef[0];\n }\n\n return titleAttribute?.name ?? null;\n}\n\nexport function getClassAttributeDef<T>(classType?: ClassType<T>) {\n if (!classType) return null;\n const attrDefByFn = (classType as any).getAttributeTypeMap?.() as Array<ClassAttributeDef> | undefined;\n if (attrDefByFn) return attrDefByFn;\n const attrDefByProp = (classType as any).attributeTypeMap as Array<ClassAttributeDef> | undefined;\n if (attrDefByProp) return attrDefByProp;\n const attrByObjSer = TypeRegistry.get().findAttributesDefinitionByClassType(classType);\n if (attrByObjSer) return attrByObjSer;\n return null;\n}\n\nfunction findAttributeByTypeAndName(attributes: ClassAttributeDef[], types: string[], ...names: string[]): ClassAttributeDef | null {\n for (const name of names) {\n const attribute = attributes.find(a => types.some(t => t === a.type) && a.name === name);\n if (attribute) {\n return attribute;\n }\n }\n return null;\n}\n\nexport function trySetLookupItemsProperties<T>(lookup: ILookupDescriptor<T>, idAsTrack = true) {\n if (lookup.dataProvider.classType) {\n if (!lookup.optionsValueProperty && !lookup.optionsTrackProperty) {\n const idProperty = findClassIdAttribute(lookup.dataProvider.classType) ?? undefined;\n if (idProperty && !lookup.optionsValueProperty && !lookup.optionsTrackProperty) {\n if (idAsTrack) {\n lookup.withOptionsTrackPropertyUnsafe(idProperty);\n }\n }\n }\n if (!lookup.optionsLabelProperty) {\n const labelProperty = findClassTitleAttribute(lookup.dataProvider.classType);\n if (labelProperty) {\n lookup.withOptionsLabelPropertyUnsafe(labelProperty);\n }\n }\n }\n}\n","import {ClassType} from '@mediusinc/mng-commons/core';\n\nexport class TypeDescriptor<Type> {\n private readonly _classType?: ClassType<Type>;\n\n public constructor(classType?: ClassType<Type>) {\n this._classType = classType;\n }\n\n public get classType() {\n return this._classType;\n }\n}\n\nexport function type<Type>(): TypeDescriptor<Type> {\n return new TypeDescriptor<Type>();\n}\n\nexport function typeClass<Type>(type: ClassType<Type>): TypeDescriptor<Type> {\n return new TypeDescriptor<Type>(type);\n}\n","import {ClassOptType, ClassType, CommonsInternalError, IModelDescriptor, findReflectTypeName} from '@mediusinc/mng-commons/core';\n\nimport {findClassIdAttribute, findClassTitleAttribute} from '../helpers/model';\nimport {TypeDescriptor} from './type.descriptor';\n\nexport class ModelDescriptor<Model, ModelClass = ClassOptType<Model>> implements IModelDescriptor<Model, ModelClass> {\n private readonly _type: ModelClass;\n private readonly _typeName?: string;\n private _i18nBaseKey: string;\n private _idProperty?: string;\n private _titleProperty?: string | ((item: Model) => string);\n\n public constructor(type: ModelClass, idProperty?: string, titleProperty?: string | ((item: Model) => string), i18nBaseKey?: string | ClassType<any>) {\n this._type = type;\n this._typeName = findReflectTypeName(type as ClassType<Model>) ?? undefined;\n this._idProperty = idProperty;\n this._titleProperty = titleProperty;\n if (!this._idProperty && type) {\n this._idProperty = findClassIdAttribute(type as unknown as ClassType<Model>) ?? undefined;\n }\n if (!this._titleProperty && type) {\n this._titleProperty = findClassTitleAttribute(type as unknown as ClassType<Model>) ?? undefined;\n }\n this._i18nBaseKey = (typeof i18nBaseKey === 'string' || typeof i18nBaseKey === 'undefined' ? i18nBaseKey : findReflectTypeName(i18nBaseKey)) ?? this._typeName ?? '';\n }\n\n /**\n * @deprecated Use standalone {model()} instead.\n */\n public static create<Model>(idProperty?: keyof Model, titleProperty?: keyof Model, i18nBaseKey?: string | ClassType<unknown>): ModelDescriptor<Model, undefined> {\n return new ModelDescriptor(undefined, idProperty as string, titleProperty as string, i18nBaseKey);\n }\n\n /**\n * @deprecated Use standalone {model()} instead.\n */\n public static fromClass<Model>(\n type: ClassType<Model>,\n idProperty?: keyof Model,\n titleProperty?: keyof Model,\n i18nBaseKey?: string | ClassType<unknown>\n ): ModelDescriptor<Model, ClassType<Model>> {\n return new ModelDescriptor(type, idProperty as string, titleProperty as string, i18nBaseKey);\n }\n\n public get type() {\n return this._type;\n }\n\n public get typeName() {\n return this._typeName;\n }\n\n public get i18nBaseKey() {\n return this._i18nBaseKey;\n }\n\n public get idProperty() {\n return this._idProperty;\n }\n\n public get titleProperty() {\n return this._titleProperty;\n }\n\n public withIdProperty(property: keyof Model): this {\n this._idProperty = property as string;\n return this;\n }\n\n public withIdPropertyUnsafe(property: string): this {\n this._idProperty = property;\n return this;\n }\n\n public withTitleProperty(property: keyof Model): this {\n this._titleProperty = property as string;\n return this;\n }\n\n public withTitlePropertyUnsafe(property: string): this {\n this._titleProperty = property;\n return this;\n }\n\n public withI18nBase(base: ClassType<any> | string): this {\n if (typeof base !== 'string') {\n const typeName = findReflectTypeName(base);\n if (!typeName) {\n throw new CommonsInternalError(`Could not find define i18nBaseKey for ${base} on model ${this.typeName}`);\n }\n base = typeName;\n }\n this._i18nBaseKey = base;\n return this;\n }\n\n public copy(): ModelDescriptor<Model, ModelClass> {\n return new ModelDescriptor<Model, ModelClass>(this._type, this._idProperty, this._titleProperty, this._i18nBaseKey);\n }\n}\n\nexport type ModelDescriptorCreateOpts<Model> = {\n id?: keyof Model;\n title?: keyof Model | ((item: Model) => string);\n i18nBase?: string | ClassType<any>;\n};\n\nexport function model<Model>(): ModelDescriptor<Model, undefined>;\nexport function model<Model>(opts: ModelDescriptorCreateOpts<Model>): ModelDescriptor<Model, undefined>;\nexport function model<Model>(type: TypeDescriptor<Model>, opts?: ModelDescriptorCreateOpts<Model>): ModelDescriptor<Model, undefined>;\nexport function model<Model>(clazz: ClassType<Model>, opts?: ModelDescriptorCreateOpts<Model>): ModelDescriptor<Model, ClassType<Model>>;\nexport function model<Model>(typeOrClassOrOpts?: ClassType<Model> | TypeDescriptor<Model> | ModelDescriptorCreateOpts<Model>, opts?: ModelDescriptorCreateOpts<Model>) {\n if (typeOrClassOrOpts == null) {\n return new ModelDescriptor<Model, undefined>(undefined);\n } else if (typeOrClassOrOpts instanceof TypeDescriptor) {\n return new ModelDescriptor<Model, undefined>(undefined, opts?.id as string, opts?.title as string, opts?.i18nBase);\n } else if (typeof typeOrClassOrOpts === 'function') {\n return new ModelDescriptor<Model, ClassType<Model>>(typeOrClassOrOpts as ClassType<Model>, opts?.id as string, opts?.title as string, opts?.i18nBase);\n } else {\n const typeOrClassAsOpts = typeOrClassOrOpts as ModelDescriptorCreateOpts<Model>;\n return new ModelDescriptor<Model, undefined>(undefined, typeOrClassAsOpts?.id as string, typeOrClassAsOpts?.title as string, typeOrClassAsOpts?.i18nBase);\n }\n}\n","import {TranslateService} from '@ngx-translate/core';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {KeyOfType, getI18n, getI18nTypeKeyBasePath, getI18nTypeParams, getI18nTypeParamsAsync} from '@mediusinc/mng-commons/core';\n\nimport {ModelDescriptor} from '../descriptors/model.descriptor';\n\nexport function getI18nForModel(\n translate: TranslateService,\n model: ModelDescriptor<any>,\n keyPath: string,\n customKey?: string,\n item?: any,\n fallbackKey?: string,\n params?: any\n): string | null {\n const keys = getKeysByPriority(model, keyPath, customKey, fallbackKey);\n const i18nParams = getI18nModelParams(translate, model, item, params);\n return getI18n(translate, i18nParams, ...keys);\n}\n\nexport function getI18nModelParams(translate: TranslateService, model?: ModelDescriptor<any>, item?: any, params: any = {}): any {\n const i18nParams = getI18nTypeParams(translate, model?.i18nBaseKey, item, params);\n return populateI18nModelParams(model?.idProperty, model?.titleProperty, item, i18nParams);\n}\n\nexport function getI18nModelParamsAsync(translate: TranslateService, model?: ModelDescriptor<any>, item?: any, params: any = {}): Observable<any> {\n return getI18nTypeParamsAsync(translate, model?.i18nBaseKey, item, params).pipe(\n map(i18nParams => populateI18nModelParams(model?.idProperty, model?.titleProperty, item, i18nParams))\n );\n}\n\nexport function populateI18nModelParams(idProperty?: KeyOfType, titleProperty?: KeyOfType | ((item: any) => string), item?: any, params: any = {}): any {\n const paramsRes = {...params, itemId: '', itemTitle: ''};\n if (item) {\n if (idProperty && item[idProperty]) {\n paramsRes.itemId = item[idProperty];\n }\n if (typeof titleProperty === 'function') {\n paramsRes.itemTitle = titleProperty(item);\n } else if (titleProperty && item[titleProperty]) {\n paramsRes.itemTitle = item[titleProperty];\n }\n }\n return paramsRes;\n}\n\nfunction getKeysByPriority(model: ModelDescriptor<any>, keyPath: string, customKey?: string, fallbackKey?: string) {\n const keys = [];\n if (customKey) {\n keys.push(customKey);\n }\n const modelActionKey = getI18nTypeKeyBasePath(model.i18nBaseKey, ...keyPath);\n keys.push(modelActionKey);\n if (fallbackKey) {\n keys.push(fallbackKey);\n }\n return keys;\n}\n","// data providers\nexport * from './data-providers/base-from-type-data-provider.factory';\n\n// descriptors\nexport * from './descriptors/enum.descriptor';\nexport * from './descriptors/model.descriptor';\nexport * from './descriptors/type.descriptor';\n\n// helpers\nexport * from './helpers/i18n';\nexport * from './helpers/model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAWgB,SAAA,YAAY,CAAiE,IAA4B,EAAE,WAA0B,EAAA;AACjJ,IAAA,OAAO,IAAI,gBAAgB,CAA0C,SAAS,EAAE,WAA2B,CAAC,CAAC;AACjH,CAAC;AAOe,SAAA,qBAAqB,CACjC,KAAyC,EACzC,WAA0B,EAAA;IAE1B,OAAO,IAAI,gBAAgB,CAAiD,KAAK,CAAC,IAAwB,EAAE,WAA2B,CAAC,CAAC;AAC7I;;MCvBa,cAAc,CAAA;IAMvB,WAAmB,CAAA,KAAW,EAAE,IAAc,EAAE,WAA2B,EAAE,WAAW,GAAG,KAAK,EAAA;AAC5F,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AAEhC,QAAA,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE;AACpC,YAAA,WAAW,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;SAC3C;AACD,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;KACnC;AAED,IAAA,IAAW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AACJ,CAAA;AAEe,SAAA,SAAS,CAAO,KAAW,EAAE,IAAc,EAAE,WAAA,GAAyC,IAAI,EAAE,WAAW,GAAG,KAAK,EAAA;IAC3H,OAAO,IAAI,cAAc,CAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;AAC3E,CAAC;AAEK,SAAU,gBAAgB,CAAa,IAAc,EAAE,cAAyC,IAAI,EAAE,WAAW,GAAG,KAAK,EAAA;IAC3H,OAAO,IAAI,cAAc,CAAO,SAAiB,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;AACvF;;ACpCM,SAAU,oBAAoB,CAAI,SAAwB,EAAA;AAC5D,IAAA,IAAI,CAAC,SAAS;AAAE,QAAA,OAAO,IAAI,CAAC;AAE5B,IAAA,MAAM,OAAO,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAChD,IAAI,CAAC,OAAO,EAAE;AACV,QAAA,OAAO,IAAI,CAAC;KACf;IAED,IAAI,WAAW,GAAG,0BAA0B,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3G,IAAI,CAAC,WAAW,EAAE;;AAEd,QAAA,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;KAC5B;AAED,IAAA,OAAO,WAAW,EAAE,IAAI,IAAI,IAAI,CAAC;AACrC,CAAC;AAEK,SAAU,uBAAuB,CAAI,SAAwB,EAAA;AAC/D,IAAA,IAAI,CAAC,SAAS;AAAE,QAAA,OAAO,IAAI,CAAC;AAE5B,IAAA,MAAM,OAAO,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAChD,IAAI,CAAC,OAAO,EAAE;AACV,QAAA,OAAO,IAAI,CAAC;KACf;AAED,IAAA,IAAI,cAAc,GAAG,0BAA0B,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACtG,IAAI,CAAC,cAAc,EAAE;;AAEjB,QAAA,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;KAC/B;AAED,IAAA,OAAO,cAAc,EAAE,IAAI,IAAI,IAAI,CAAC;AACxC,CAAC;AAEK,SAAU,oBAAoB,CAAI,SAAwB,EAAA;AAC5D,IAAA,IAAI,CAAC,SAAS;AAAE,QAAA,OAAO,IAAI,CAAC;AAC5B,IAAA,MAAM,WAAW,GAAI,SAAiB,CAAC,mBAAmB,IAA4C,CAAC;AACvG,IAAA,IAAI,WAAW;AAAE,QAAA,OAAO,WAAW,CAAC;AACpC,IAAA,MAAM,aAAa,GAAI,SAAiB,CAAC,gBAAwD,CAAC;AAClG,IAAA,IAAI,aAAa;AAAE,QAAA,OAAO,aAAa,CAAC;IACxC,MAAM,YAAY,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC,mCAAmC,CAAC,SAAS,CAAC,CAAC;AACvF,IAAA,IAAI,YAAY;AAAE,QAAA,OAAO,YAAY,CAAC;AACtC,IAAA,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,0BAA0B,CAAC,UAA+B,EAAE,KAAe,EAAE,GAAG,KAAe,EAAA;AACpG,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACtB,QAAA,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACzF,IAAI,SAAS,EAAE;AACX,YAAA,OAAO,SAAS,CAAC;SACpB;KACJ;AACD,IAAA,OAAO,IAAI,CAAC;AAChB,CAAC;SAEe,2BAA2B,CAAI,MAA4B,EAAE,SAAS,GAAG,IAAI,EAAA;AACzF,IAAA,IAAI,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE;QAC/B,IAAI,CAAC,MAAM,CAAC,oBAAoB,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE;AAC9D,YAAA,MAAM,UAAU,GAAG,oBAAoB,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;AACpF,YAAA,IAAI,UAAU,IAAI,CAAC,MAAM,CAAC,oBAAoB,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE;gBAC5E,IAAI,SAAS,EAAE;AACX,oBAAA,MAAM,CAAC,8BAA8B,CAAC,UAAU,CAAC,CAAC;iBACrD;aACJ;SACJ;AACD,QAAA,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE;YAC9B,MAAM,aAAa,GAAG,uBAAuB,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC7E,IAAI,aAAa,EAAE;AACf,gBAAA,MAAM,CAAC,8BAA8B,CAAC,aAAa,CAAC,CAAC;aACxD;SACJ;KACJ;AACL;;MCxEa,cAAc,CAAA;AAGvB,IAAA,WAAA,CAAmB,SAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;KAC/B;AAED,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AACJ,CAAA;SAEe,IAAI,GAAA;IAChB,OAAO,IAAI,cAAc,EAAQ,CAAC;AACtC,CAAC;AAEK,SAAU,SAAS,CAAO,IAAqB,EAAA;AACjD,IAAA,OAAO,IAAI,cAAc,CAAO,IAAI,CAAC,CAAC;AAC1C;;MCfa,eAAe,CAAA;AAOxB,IAAA,WAAA,CAAmB,IAAgB,EAAE,UAAmB,EAAE,aAAkD,EAAE,WAAqC,EAAA;AAC/I,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,mBAAmB,CAAC,IAAwB,CAAC,IAAI,SAAS,CAAC;AAC5E,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AAC9B,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE;YAC3B,IAAI,CAAC,WAAW,GAAG,oBAAoB,CAAC,IAAmC,CAAC,IAAI,SAAS,CAAC;SAC7F;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE;YAC9B,IAAI,CAAC,cAAc,GAAG,uBAAuB,CAAC,IAAmC,CAAC,IAAI,SAAS,CAAC;SACnG;AACD,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,OAAO,WAAW,KAAK,QAAQ,IAAI,OAAO,WAAW,KAAK,WAAW,GAAG,WAAW,GAAG,mBAAmB,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;KACxK;AAED;;AAEG;AACI,IAAA,OAAO,MAAM,CAAQ,UAAwB,EAAE,aAA2B,EAAE,WAAyC,EAAA;QACxH,OAAO,IAAI,eAAe,CAAC,SAAS,EAAE,UAAoB,EAAE,aAAuB,EAAE,WAAW,CAAC,CAAC;KACrG;AAED;;AAEG;IACI,OAAO,SAAS,CACnB,IAAsB,EACtB,UAAwB,EACxB,aAA2B,EAC3B,WAAyC,EAAA;QAEzC,OAAO,IAAI,eAAe,CAAC,IAAI,EAAE,UAAoB,EAAE,aAAuB,EAAE,WAAW,CAAC,CAAC;KAChG;AAED,IAAA,IAAW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAED,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;AAED,IAAA,IAAW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;AAEM,IAAA,cAAc,CAAC,QAAqB,EAAA;AACvC,QAAA,IAAI,CAAC,WAAW,GAAG,QAAkB,CAAC;AACtC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,oBAAoB,CAAC,QAAgB,EAAA;AACxC,QAAA,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;AAC5B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,iBAAiB,CAAC,QAAqB,EAAA;AAC1C,QAAA,IAAI,CAAC,cAAc,GAAG,QAAkB,CAAC;AACzC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,uBAAuB,CAAC,QAAgB,EAAA;AAC3C,QAAA,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;AAC/B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,YAAY,CAAC,IAA6B,EAAA;AAC7C,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC1B,YAAA,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC,QAAQ,EAAE;gBACX,MAAM,IAAI,oBAAoB,CAAC,CAAyC,sCAAA,EAAA,IAAI,CAAa,UAAA,EAAA,IAAI,CAAC,QAAQ,CAAE,CAAA,CAAC,CAAC;aAC7G;YACD,IAAI,GAAG,QAAQ,CAAC;SACnB;AACD,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,IAAI,GAAA;AACP,QAAA,OAAO,IAAI,eAAe,CAAoB,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;KACvH;AACJ,CAAA;AAYe,SAAA,KAAK,CAAQ,iBAA+F,EAAE,IAAuC,EAAA;AACjK,IAAA,IAAI,iBAAiB,IAAI,IAAI,EAAE;AAC3B,QAAA,OAAO,IAAI,eAAe,CAAmB,SAAS,CAAC,CAAC;KAC3D;AAAM,SAAA,IAAI,iBAAiB,YAAY,cAAc,EAAE;AACpD,QAAA,OAAO,IAAI,eAAe,CAAmB,SAAS,EAAE,IAAI,EAAE,EAAY,EAAE,IAAI,EAAE,KAAe,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;KACtH;AAAM,SAAA,IAAI,OAAO,iBAAiB,KAAK,UAAU,EAAE;AAChD,QAAA,OAAO,IAAI,eAAe,CAA0B,iBAAqC,EAAE,IAAI,EAAE,EAAY,EAAE,IAAI,EAAE,KAAe,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;KACzJ;SAAM;QACH,MAAM,iBAAiB,GAAG,iBAAqD,CAAC;AAChF,QAAA,OAAO,IAAI,eAAe,CAAmB,SAAS,EAAE,iBAAiB,EAAE,EAAY,EAAE,iBAAiB,EAAE,KAAe,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC;KAC7J;AACL;;ACnHgB,SAAA,eAAe,CAC3B,SAA2B,EAC3B,KAA2B,EAC3B,OAAe,EACf,SAAkB,EAClB,IAAU,EACV,WAAoB,EACpB,MAAY,EAAA;AAEZ,IAAA,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AACvE,IAAA,MAAM,UAAU,GAAG,kBAAkB,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACtE,OAAO,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC;AACnD,CAAC;AAEK,SAAU,kBAAkB,CAAC,SAA2B,EAAE,KAA4B,EAAE,IAAU,EAAE,MAAA,GAAc,EAAE,EAAA;AACtH,IAAA,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAClF,IAAA,OAAO,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AAC9F,CAAC;AAEK,SAAU,uBAAuB,CAAC,SAA2B,EAAE,KAA4B,EAAE,IAAU,EAAE,MAAA,GAAc,EAAE,EAAA;AAC3H,IAAA,OAAO,sBAAsB,CAAC,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CAC3E,GAAG,CAAC,UAAU,IAAI,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CACxG,CAAC;AACN,CAAC;AAEK,SAAU,uBAAuB,CAAC,UAAsB,EAAE,aAAmD,EAAE,IAAU,EAAE,MAAA,GAAc,EAAE,EAAA;AAC7I,IAAA,MAAM,SAAS,GAAG,EAAC,GAAG,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAC,CAAC;IACzD,IAAI,IAAI,EAAE;AACN,QAAA,IAAI,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE;AAChC,YAAA,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;SACvC;AACD,QAAA,IAAI,OAAO,aAAa,KAAK,UAAU,EAAE;AACrC,YAAA,SAAS,CAAC,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;SAC7C;AAAM,aAAA,IAAI,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE;AAC7C,YAAA,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;SAC7C;KACJ;AACD,IAAA,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAA2B,EAAE,OAAe,EAAE,SAAkB,EAAE,WAAoB,EAAA;IAC7G,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,IAAI,SAAS,EAAE;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACxB;IACD,MAAM,cAAc,GAAG,sBAAsB,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,CAAC;AAC7E,IAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC1B,IAAI,WAAW,EAAE;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KAC1B;AACD,IAAA,OAAO,IAAI,CAAC;AAChB;;AC3DA;;ACAA;;AAEG;;;;"}
|