@fovestta2/web-angular 1.0.5 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/add-update-form/add-update-form.component.mjs +4 -2
- package/esm2022/lib/fv-radio-group/fv-radio-group.component.mjs +6 -3
- package/fesm2022/fovestta2-web-angular.mjs +8 -3
- package/fesm2022/fovestta2-web-angular.mjs.map +1 -1
- package/lib/add-update-form/add-update-form.component.d.ts +1 -0
- package/lib/fv-radio-group/fv-radio-group.component.d.ts +2 -1
- package/package.json +1 -1
|
@@ -680,6 +680,7 @@ export class AddUpdateFormComponent {
|
|
|
680
680
|
[options]="column.options || []"
|
|
681
681
|
[control]="getControl(column.name)"
|
|
682
682
|
[disabled]="column.disabled || false"
|
|
683
|
+
[layout]="column.layout || 'vertical'"
|
|
683
684
|
(valueChange)="handleFieldChange(column.name, $event)"
|
|
684
685
|
>
|
|
685
686
|
</fv-radio-group>
|
|
@@ -815,7 +816,7 @@ export class AddUpdateFormComponent {
|
|
|
815
816
|
</div>
|
|
816
817
|
</form>
|
|
817
818
|
</div>
|
|
818
|
-
`, isInline: true, styles: ["@import\"https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap\";@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";*{font-family:Poppins!important}.form-container{background:#f5f5f5;padding:5px 10px 10px;border-radius:8px;margin:0 auto;max-width:100%;box-sizing:border-box}.error-border{border-color:red!important}.hidden{display:none!important}.form-header{margin-bottom:5px}.form-header h2{margin:0;font-size:20px;font-weight:700;color:#303030}.dynamic-form{background:#fff;padding:10px;border-radius:6px;box-shadow:0 1px 3px #0000001a;max-width:100%;box-sizing:border-box}.form-section{margin-bottom:10px}.section-title{font-size:16px;font-weight:700;color:#303030;margin:0 0 16px;text-transform:uppercase;letter-spacing:.5px}.fields-row{display:grid;grid-template-columns:repeat(5,1fr);gap:16px;width:100%;box-sizing:border-box;overflow:visible}.form-field-wrapper{display:flex;position:relative;flex-direction:column;min-width:0;width:100%;box-sizing:border-box;overflow:visible}.password-toggle-btn{position:absolute;right:10px;top:32px;background:none;border:none;cursor:pointer;padding:4px;color:#666}.password-toggle-btn:hover{color:#333}.password-toggle-btn .material-icons{font-size:20px;width:auto;height:auto;padding:0}@media (min-width: 1200px) and (max-width: 1400px){.fields-row{grid-template-columns:repeat(5,1fr)}.form-control{width:180px;max-width:180px}}@media (max-width: 1200px){.fields-row{grid-template-columns:repeat(3,1fr)}.form-control{width:100%;max-width:100%}}@media (max-width: 992px){.fields-row{grid-template-columns:repeat(2,1fr);gap:12px}}@media (max-width: 768px){.fields-row{grid-template-columns:repeat(2,1fr);gap:10px}}@media (max-width: 640px){.fields-row{grid-template-columns:1fr;gap:12px}.form-field-wrapper{width:100%}}label{font-weight:600;margin-bottom:6px;color:#151d48;font-size:14px}.required{color:#e74c3c;margin-left:2px}.form-control{padding:5px 10px;width:100%;max-width:100%;height:34px;border:1px solid #8CBBA8;border-radius:8px;background-color:#fff;font-size:14px;font-weight:400;font-family:inherit;color:#1f2b41;transition:border-color .2s,box-shadow .2s;box-sizing:border-box}.form-control:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.form-control:disabled{background-color:#ecf0f1;cursor:not-allowed}textarea.form-control{resize:vertical;min-height:100px}select.form-control{cursor:pointer;appearance:none;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23333' d='M6 9L1 4h10z'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:right 8px center;padding-right:40px}.checkbox-wrapper{display:flex;align-items:center;gap:8px}input[type=checkbox]{width:18px;height:18px;cursor:pointer}.checkbox-label{cursor:pointer;margin:0}.file-upload-container{display:flex;align-items:center;gap:20px;padding:20px;background:#fff;max-width:100%;box-sizing:border-box;flex-wrap:wrap}.material-icons{font-family:Material Icons!important;border-radius:4px;display:inline-block;width:40px;padding:8px;height:40px}.file-field-wrapper{width:100%;margin-top:16px;max-width:100%;box-sizing:border-box}.photo-preview-circle{width:100px;height:100px;border-radius:50%;overflow:hidden;border:2px solid #ddd;cursor:pointer;transition:border-color .2s}.photo-preview-circle:hover{border-color:#3498db}.preview-image,.default-photo{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.preview-image img{width:100%;height:100%;object-fit:cover}.default-photo{background:#f0f0f0;color:#999;font-size:40px}.file-info{display:flex;flex-direction:column;gap:8px}.btn-delete{border:none;border-radius:4px;cursor:pointer;font-size:14px;padding:0}.upload-btn-group{display:flex;align-items:center;border:1px solid #d3d3d3;border-radius:8px;background:#fff;overflow:hidden;width:fit-content}.btn-upload{background:#fff;color:#222;border:none;padding:0 18px;font-size:16px;border-right:1px solid #e0e0e0;border-radius:8px 0 0 8px;outline:none;box-shadow:none;cursor:pointer;height:40px;transition:background .2s}.btn-upload-icon{background:#f5f5f5;border:none;border-radius:0 8px 8px 0;display:flex;align-items:center;justify-content:center;width:48px;height:40px;cursor:pointer;transition:background .2s}.btn-upload-icon i.material-icons{font-size:22px;color:#222}.btn-upload:hover,.btn-upload-icon:hover{background:#f0f0f0}.btn-delete{background:#fff;color:red}.btn-delete:hover{background:#f0f0f0}.file-name{font-size:12px;color:#666;margin:10px 8px 8px}.file-label{font-weight:600;margin-bottom:6px;color:#151d48;font-size:14px;display:block}.radio-label{font-weight:600;margin-bottom:15px;color:#151d48;font-size:14px;display:block}.radio-group{display:flex;gap:20px;align-items:center}.radio-item{display:flex;align-items:center;gap:6px}input[type=radio]{width:18px;height:18px;cursor:pointer;accent-color:#3498db}.radio-option-label{cursor:pointer;margin:0;font-weight:400}.hint{font-size:12px;color:#7f8c8d;margin-top:4px}.error-message{color:#e74c3c;font-size:12px;margin-top:4px}.form-actions{display:flex;gap:8px;align-items:center;justify-content:space-between;gap:12px;padding-top:5px}.btn{padding:8px 20px;border:none;border-radius:7px;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s}.btn-primary{background-color:#006aff;color:#fff}.btn-primary:hover:not(:disabled){background-color:#2980b9}.btn-primary:disabled{background-color:#bdc3c7;cursor:not-allowed}.btn-secondary{background-color:#95a5a6;color:#fff}.btn-secondary:hover{background-color:#7f8c8d}.btn-outline{background-color:#303030;color:#fff}.btn-outline:hover{background-color:#2b2b2b;color:#fff}.month-year-wrapper{position:relative;display:flex;align-items:center;width:100%}.month-year-wrapper .form-control{padding-right:45px}.month-picker-hidden{position:absolute;opacity:0;pointer-events:none;width:0;height:0;border:none;padding:0;margin:0}.month-picker-btn{position:absolute;right:5px;background:transparent;border:none;cursor:pointer;padding:5px;display:flex;align-items:center;justify-content:center;color:#666;transition:color .2s;z-index:1}.month-picker-btn:hover:not(:disabled){color:#3498db}.month-picker-btn:disabled{cursor:not-allowed;opacity:.5}.month-picker-btn .material-icons{font-size:20px;width:auto;height:auto;padding:0}.search-select-wrapper{position:relative;width:100%}.search-select-input{padding-right:10px}.search-select-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:auto;min-width:100%;max-width:calc(100vw - 16px);background:#fff;border:1px solid #d3d3d3;border-radius:8px;max-height:220px;overflow-y:auto;box-shadow:0 4px 10px #00000014;z-index:5;padding:6px 0;transform:translate(0);transition:transform .1s ease-out}.search-select-option{padding:8px 12px;cursor:pointer;display:flex;gap:8px;align-items:center;border-bottom:1px solid #f2f2f2}.search-select-option:last-child{border-bottom:none}.search-select-option:hover{background:#f5f9ff}.option-code{color:#0052cc;font-weight:700;min-width:90px}.option-name{color:#151d48;font-weight:500}.time-picker-wrapper{position:relative;display:flex;align-items:center;width:100%}.time-input{padding-right:45px;flex:1}.time-picker-btn{position:absolute;right:5px;background:transparent;border:none;cursor:pointer;padding:5px;display:flex;align-items:center;justify-content:center;color:#666;transition:color .2s;z-index:1}.time-picker-btn:hover:not(:disabled){color:#3498db}.time-picker-btn:disabled{cursor:not-allowed;opacity:.5}.time-picker-btn .material-icons{font-size:20px;width:auto;height:auto;padding:0}input[type=time]{cursor:pointer}input[type=time]::-webkit-calendar-picker-indicator{cursor:pointer;opacity:0;position:absolute;right:0;width:100%;height:100%}.date-picker-field{width:100%}.date-picker-field ::ng-deep .mat-mdc-form-field{width:100%}.date-picker-field ::ng-deep .mat-mdc-text-field-wrapper{background-color:#fff}.date-picker-field ::ng-deep .mdc-text-field--outlined .mdc-notched-outline__leading,.date-picker-field ::ng-deep .mdc-text-field--outlined .mdc-notched-outline__notch,.date-picker-field ::ng-deep .mdc-text-field--outlined .mdc-notched-outline__trailing{border-color:#8cbba8}.date-picker-field ::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.date-picker-field ::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.date-picker-field ::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:#8cbba8}.date-picker-field ::ng-deep .mdc-text-field--outlined.mdc-text-field--focused .mdc-notched-outline__leading,.date-picker-field ::ng-deep .mdc-text-field--outlined.mdc-text-field--focused .mdc-notched-outline__notch,.date-picker-field ::ng-deep .mdc-text-field--outlined.mdc-text-field--focused .mdc-notched-outline__trailing{border-color:#3498db}.date-picker-field.error-border ::ng-deep .mdc-text-field--outlined .mdc-notched-outline__leading,.date-picker-field.error-border ::ng-deep .mdc-text-field--outlined .mdc-notched-outline__notch,.date-picker-field.error-border ::ng-deep .mdc-text-field--outlined .mdc-notched-outline__trailing{border-color:red!important}.date-picker-field ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}.date-picker-field ::ng-deep .mat-mdc-form-field-input-control input{font-family:Poppins!important;font-size:14px;font-weight:400;color:#1f2b41}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FvEntryFieldComponent, selector: "fv-entry-field", inputs: ["label", "placeholder", "schema", "control", "disabled", "readonly", "type", "allowAlphabetsOnly", "maxLength"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvNumberFieldComponent, selector: "fv-number-field", inputs: ["label", "placeholder", "schema", "control", "disabled", "readonly", "min", "max", "step"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvDropdownComponent, selector: "fv-dropdown", inputs: ["label", "placeholder", "options", "schema", "control", "disabled"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvRadioGroupComponent, selector: "fv-radio-group", inputs: ["label", "control", "options", "disabled", "required", "name"], outputs: ["valueChange"] }, { kind: "component", type: FvCheckboxComponent, selector: "fv-checkbox", inputs: ["label", "control", "disabled", "required"], outputs: ["valueChange"] }, { kind: "component", type: FvDateFieldComponent, selector: "fv-date-field", inputs: ["label", "schema", "control", "disabled", "readonly", "min", "max"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvMonthYearFieldComponent, selector: "fv-month-year-field", inputs: ["label", "schema", "control", "disabled", "readonly", "min", "max"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvFileSelectorComponent, selector: "fv-file-selector", inputs: ["label", "placeholder", "schema", "control", "disabled", "accept", "maxSize"], outputs: ["valueChange", "blur"] }, { kind: "component", type: FvImageSelectorComponent, selector: "fv-image-selector", inputs: ["label", "placeholder", "schema", "control", "disabled", "maxSize"], outputs: ["valueChange", "blur"] }, { kind: "component", type: FvRichTextEditorComponent, selector: "fv-rich-text-editor", inputs: ["label", "placeholder", "schema", "control", "disabled", "readonly", "minHeight", "showToolbar"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvNameCodeComponent, selector: "fv-name-code", inputs: ["label", "placeholder", "options", "schema", "control", "disabled"], outputs: ["selectionChange"] }, { kind: "component", type: FvPhoneFieldComponent, selector: "fv-phone-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvUanFieldComponent, selector: "fv-uan-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvPfFieldComponent, selector: "fv-pf-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvEsiFieldComponent, selector: "fv-esi-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvIfscFieldComponent, selector: "fv-ifsc-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvMicrFieldComponent, selector: "fv-micr-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvIbanFieldComponent, selector: "fv-iban-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvEmailFieldComponent, selector: "fv-email-field", inputs: ["label", "placeholder", "schema", "control", "disabled", "readonly"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvPasswordFieldComponent, selector: "fv-password-field", inputs: ["label", "placeholder", "schema", "control", "disabled", "readonly"], outputs: ["valueChange", "blur", "focus"] }] });
|
|
819
|
+
`, isInline: true, styles: ["@import\"https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap\";@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";*{font-family:Poppins!important}.form-container{background:#f5f5f5;padding:5px 10px 10px;border-radius:8px;margin:0 auto;max-width:100%;box-sizing:border-box}.error-border{border-color:red!important}.hidden{display:none!important}.form-header{margin-bottom:5px}.form-header h2{margin:0;font-size:20px;font-weight:700;color:#303030}.dynamic-form{background:#fff;padding:10px;border-radius:6px;box-shadow:0 1px 3px #0000001a;max-width:100%;box-sizing:border-box}.form-section{margin-bottom:10px}.section-title{font-size:16px;font-weight:700;color:#303030;margin:0 0 16px;text-transform:uppercase;letter-spacing:.5px}.fields-row{display:grid;grid-template-columns:repeat(5,1fr);gap:16px;width:100%;box-sizing:border-box;overflow:visible}.form-field-wrapper{display:flex;position:relative;flex-direction:column;min-width:0;width:100%;box-sizing:border-box;overflow:visible}.password-toggle-btn{position:absolute;right:10px;top:32px;background:none;border:none;cursor:pointer;padding:4px;color:#666}.password-toggle-btn:hover{color:#333}.password-toggle-btn .material-icons{font-size:20px;width:auto;height:auto;padding:0}@media (min-width: 1200px) and (max-width: 1400px){.fields-row{grid-template-columns:repeat(5,1fr)}.form-control{width:180px;max-width:180px}}@media (max-width: 1200px){.fields-row{grid-template-columns:repeat(3,1fr)}.form-control{width:100%;max-width:100%}}@media (max-width: 992px){.fields-row{grid-template-columns:repeat(2,1fr);gap:12px}}@media (max-width: 768px){.fields-row{grid-template-columns:repeat(2,1fr);gap:10px}}@media (max-width: 640px){.fields-row{grid-template-columns:1fr;gap:12px}.form-field-wrapper{width:100%}}label{font-weight:600;margin-bottom:6px;color:#151d48;font-size:14px}.required{color:#e74c3c;margin-left:2px}.form-control{padding:5px 10px;width:100%;max-width:100%;height:34px;border:1px solid #8CBBA8;border-radius:8px;background-color:#fff;font-size:14px;font-weight:400;font-family:inherit;color:#1f2b41;transition:border-color .2s,box-shadow .2s;box-sizing:border-box}.form-control:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.form-control:disabled{background-color:#ecf0f1;cursor:not-allowed}textarea.form-control{resize:vertical;min-height:100px}select.form-control{cursor:pointer;appearance:none;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23333' d='M6 9L1 4h10z'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:right 8px center;padding-right:40px}.checkbox-wrapper{display:flex;align-items:center;gap:8px}input[type=checkbox]{width:18px;height:18px;cursor:pointer}.checkbox-label{cursor:pointer;margin:0}.file-upload-container{display:flex;align-items:center;gap:20px;padding:20px;background:#fff;max-width:100%;box-sizing:border-box;flex-wrap:wrap}.material-icons{font-family:Material Icons!important;border-radius:4px;display:inline-block;width:40px;padding:8px;height:40px}.file-field-wrapper{width:100%;margin-top:16px;max-width:100%;box-sizing:border-box}.photo-preview-circle{width:100px;height:100px;border-radius:50%;overflow:hidden;border:2px solid #ddd;cursor:pointer;transition:border-color .2s}.photo-preview-circle:hover{border-color:#3498db}.preview-image,.default-photo{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.preview-image img{width:100%;height:100%;object-fit:cover}.default-photo{background:#f0f0f0;color:#999;font-size:40px}.file-info{display:flex;flex-direction:column;gap:8px}.btn-delete{border:none;border-radius:4px;cursor:pointer;font-size:14px;padding:0}.upload-btn-group{display:flex;align-items:center;border:1px solid #d3d3d3;border-radius:8px;background:#fff;overflow:hidden;width:fit-content}.btn-upload{background:#fff;color:#222;border:none;padding:0 18px;font-size:16px;border-right:1px solid #e0e0e0;border-radius:8px 0 0 8px;outline:none;box-shadow:none;cursor:pointer;height:40px;transition:background .2s}.btn-upload-icon{background:#f5f5f5;border:none;border-radius:0 8px 8px 0;display:flex;align-items:center;justify-content:center;width:48px;height:40px;cursor:pointer;transition:background .2s}.btn-upload-icon i.material-icons{font-size:22px;color:#222}.btn-upload:hover,.btn-upload-icon:hover{background:#f0f0f0}.btn-delete{background:#fff;color:red}.btn-delete:hover{background:#f0f0f0}.file-name{font-size:12px;color:#666;margin:10px 8px 8px}.file-label{font-weight:600;margin-bottom:6px;color:#151d48;font-size:14px;display:block}.radio-label{font-weight:600;margin-bottom:15px;color:#151d48;font-size:14px;display:block}.radio-group{display:flex;gap:20px;align-items:center}.radio-item{display:flex;align-items:center;gap:6px}input[type=radio]{width:18px;height:18px;cursor:pointer;accent-color:#3498db}.radio-option-label{cursor:pointer;margin:0;font-weight:400}.hint{font-size:12px;color:#7f8c8d;margin-top:4px}.error-message{color:#e74c3c;font-size:12px;margin-top:4px}.form-actions{display:flex;gap:8px;align-items:center;justify-content:space-between;gap:12px;padding-top:5px}.btn{padding:8px 20px;border:none;border-radius:7px;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s}.btn-primary{background-color:#006aff;color:#fff}.btn-primary:hover:not(:disabled){background-color:#2980b9}.btn-primary:disabled{background-color:#bdc3c7;cursor:not-allowed}.btn-secondary{background-color:#95a5a6;color:#fff}.btn-secondary:hover{background-color:#7f8c8d}.btn-outline{background-color:#303030;color:#fff}.btn-outline:hover{background-color:#2b2b2b;color:#fff}.month-year-wrapper{position:relative;display:flex;align-items:center;width:100%}.month-year-wrapper .form-control{padding-right:45px}.month-picker-hidden{position:absolute;opacity:0;pointer-events:none;width:0;height:0;border:none;padding:0;margin:0}.month-picker-btn{position:absolute;right:5px;background:transparent;border:none;cursor:pointer;padding:5px;display:flex;align-items:center;justify-content:center;color:#666;transition:color .2s;z-index:1}.month-picker-btn:hover:not(:disabled){color:#3498db}.month-picker-btn:disabled{cursor:not-allowed;opacity:.5}.month-picker-btn .material-icons{font-size:20px;width:auto;height:auto;padding:0}.search-select-wrapper{position:relative;width:100%}.search-select-input{padding-right:10px}.search-select-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:auto;min-width:100%;max-width:calc(100vw - 16px);background:#fff;border:1px solid #d3d3d3;border-radius:8px;max-height:220px;overflow-y:auto;box-shadow:0 4px 10px #00000014;z-index:5;padding:6px 0;transform:translate(0);transition:transform .1s ease-out}.search-select-option{padding:8px 12px;cursor:pointer;display:flex;gap:8px;align-items:center;border-bottom:1px solid #f2f2f2}.search-select-option:last-child{border-bottom:none}.search-select-option:hover{background:#f5f9ff}.option-code{color:#0052cc;font-weight:700;min-width:90px}.option-name{color:#151d48;font-weight:500}.time-picker-wrapper{position:relative;display:flex;align-items:center;width:100%}.time-input{padding-right:45px;flex:1}.time-picker-btn{position:absolute;right:5px;background:transparent;border:none;cursor:pointer;padding:5px;display:flex;align-items:center;justify-content:center;color:#666;transition:color .2s;z-index:1}.time-picker-btn:hover:not(:disabled){color:#3498db}.time-picker-btn:disabled{cursor:not-allowed;opacity:.5}.time-picker-btn .material-icons{font-size:20px;width:auto;height:auto;padding:0}input[type=time]{cursor:pointer}input[type=time]::-webkit-calendar-picker-indicator{cursor:pointer;opacity:0;position:absolute;right:0;width:100%;height:100%}.date-picker-field{width:100%}.date-picker-field ::ng-deep .mat-mdc-form-field{width:100%}.date-picker-field ::ng-deep .mat-mdc-text-field-wrapper{background-color:#fff}.date-picker-field ::ng-deep .mdc-text-field--outlined .mdc-notched-outline__leading,.date-picker-field ::ng-deep .mdc-text-field--outlined .mdc-notched-outline__notch,.date-picker-field ::ng-deep .mdc-text-field--outlined .mdc-notched-outline__trailing{border-color:#8cbba8}.date-picker-field ::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.date-picker-field ::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.date-picker-field ::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:#8cbba8}.date-picker-field ::ng-deep .mdc-text-field--outlined.mdc-text-field--focused .mdc-notched-outline__leading,.date-picker-field ::ng-deep .mdc-text-field--outlined.mdc-text-field--focused .mdc-notched-outline__notch,.date-picker-field ::ng-deep .mdc-text-field--outlined.mdc-text-field--focused .mdc-notched-outline__trailing{border-color:#3498db}.date-picker-field.error-border ::ng-deep .mdc-text-field--outlined .mdc-notched-outline__leading,.date-picker-field.error-border ::ng-deep .mdc-text-field--outlined .mdc-notched-outline__notch,.date-picker-field.error-border ::ng-deep .mdc-text-field--outlined .mdc-notched-outline__trailing{border-color:red!important}.date-picker-field ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}.date-picker-field ::ng-deep .mat-mdc-form-field-input-control input{font-family:Poppins!important;font-size:14px;font-weight:400;color:#1f2b41}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FvEntryFieldComponent, selector: "fv-entry-field", inputs: ["label", "placeholder", "schema", "control", "disabled", "readonly", "type", "allowAlphabetsOnly", "maxLength"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvNumberFieldComponent, selector: "fv-number-field", inputs: ["label", "placeholder", "schema", "control", "disabled", "readonly", "min", "max", "step"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvDropdownComponent, selector: "fv-dropdown", inputs: ["label", "placeholder", "options", "schema", "control", "disabled"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvRadioGroupComponent, selector: "fv-radio-group", inputs: ["label", "control", "options", "disabled", "required", "name", "layout"], outputs: ["valueChange"] }, { kind: "component", type: FvCheckboxComponent, selector: "fv-checkbox", inputs: ["label", "control", "disabled", "required"], outputs: ["valueChange"] }, { kind: "component", type: FvDateFieldComponent, selector: "fv-date-field", inputs: ["label", "schema", "control", "disabled", "readonly", "min", "max"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvMonthYearFieldComponent, selector: "fv-month-year-field", inputs: ["label", "schema", "control", "disabled", "readonly", "min", "max"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvFileSelectorComponent, selector: "fv-file-selector", inputs: ["label", "placeholder", "schema", "control", "disabled", "accept", "maxSize"], outputs: ["valueChange", "blur"] }, { kind: "component", type: FvImageSelectorComponent, selector: "fv-image-selector", inputs: ["label", "placeholder", "schema", "control", "disabled", "maxSize"], outputs: ["valueChange", "blur"] }, { kind: "component", type: FvRichTextEditorComponent, selector: "fv-rich-text-editor", inputs: ["label", "placeholder", "schema", "control", "disabled", "readonly", "minHeight", "showToolbar"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvNameCodeComponent, selector: "fv-name-code", inputs: ["label", "placeholder", "options", "schema", "control", "disabled"], outputs: ["selectionChange"] }, { kind: "component", type: FvPhoneFieldComponent, selector: "fv-phone-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvUanFieldComponent, selector: "fv-uan-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvPfFieldComponent, selector: "fv-pf-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvEsiFieldComponent, selector: "fv-esi-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvIfscFieldComponent, selector: "fv-ifsc-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvMicrFieldComponent, selector: "fv-micr-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvIbanFieldComponent, selector: "fv-iban-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvEmailFieldComponent, selector: "fv-email-field", inputs: ["label", "placeholder", "schema", "control", "disabled", "readonly"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvPasswordFieldComponent, selector: "fv-password-field", inputs: ["label", "placeholder", "schema", "control", "disabled", "readonly"], outputs: ["valueChange", "blur", "focus"] }] });
|
|
819
820
|
}
|
|
820
821
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AddUpdateFormComponent, decorators: [{
|
|
821
822
|
type: Component,
|
|
@@ -955,6 +956,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
955
956
|
[options]="column.options || []"
|
|
956
957
|
[control]="getControl(column.name)"
|
|
957
958
|
[disabled]="column.disabled || false"
|
|
959
|
+
[layout]="column.layout || 'vertical'"
|
|
958
960
|
(valueChange)="handleFieldChange(column.name, $event)"
|
|
959
961
|
>
|
|
960
962
|
</fv-radio-group>
|
|
@@ -1096,4 +1098,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
1096
1098
|
}], validationError: [{
|
|
1097
1099
|
type: Output
|
|
1098
1100
|
}] } });
|
|
1099
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXVwZGF0ZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Z2LWNvbnRyb2xzL3NyYy9saWIvYWRkLXVwZGF0ZS1mb3JtL2FkZC11cGRhdGUtZm9ybS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBK0VBLCtCQUErQjtBQUMvQixPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxHQUlQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBS0wsbUJBQW1CLEVBQ25CLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELDhCQUE4QjtBQUM5QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNoRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM1RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNoRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNoRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNoRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQzs7OztBQW03QjVGLE1BQU0sT0FBTyxzQkFBc0I7SUFhdkI7SUFDQTtJQVpELE1BQU0sQ0FBYztJQUNuQixlQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUN2RCxJQUFJLENBQWE7SUFDakIsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUNWLFlBQVksR0FBd0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUM5QyxTQUFTLEdBQXdCLElBQUksR0FBRyxFQUFFLENBQUM7SUFDM0Msd0JBQXdCLEdBQW1CLEVBQUUsQ0FBQztJQUM5QyxrQkFBa0IsR0FBeUIsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNyRCxhQUFhLEdBQXdCLElBQUksR0FBRyxFQUFFLENBQUM7SUFFdkQsWUFDVSxFQUFlLEVBQ2YsT0FBZ0M7UUFEaEMsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLFlBQU8sR0FBUCxPQUFPLENBQXlCO0lBQ3RDLENBQUM7SUFFTCxRQUFRO1FBQ04sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxlQUFlO1FBQ2IsdUVBQXVFO0lBQ3pFLENBQUM7SUFFRCxjQUFjLENBQUMsTUFBa0I7UUFDL0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDO1FBQy9DLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdkQsT0FBTyxRQUFRLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDO0lBQ3RELENBQUM7SUFFRCxVQUFVLENBQUMsSUFBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBZ0IsQ0FBQztJQUM1QyxDQUFDO0lBRUQsOEVBQThFO0lBQzlFLFNBQVMsQ0FBQyxNQUFrQjtRQUMxQixNQUFNLEtBQUssR0FBcUIsRUFBRSxDQUFDO1FBQ25DLE1BQU0sYUFBYSxHQUFhLEVBQUUsQ0FBQztRQUVuQyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QixNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUMvQixRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDZixLQUFLLFVBQVU7d0JBQ2IsS0FBSyxDQUFDLElBQUksQ0FBQzs0QkFDVCxJQUFJLEVBQUUsVUFBVTs0QkFDaEIsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRTs0QkFDekIsUUFBUSxFQUFFLGNBQWM7eUJBQ3pCLENBQUMsQ0FBQzt3QkFDSCxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO3dCQUMvQixNQUFNO29CQUNSLEtBQUssT0FBTzt3QkFDVixLQUFLLENBQUMsSUFBSSxDQUFDOzRCQUNULElBQUksRUFBRSxPQUFPOzRCQUNiLE1BQU0sRUFBRTtnQ0FDTixPQUFPLEVBQUUsbURBQW1EOzZCQUM3RDs0QkFDRCxRQUFRLEVBQUUsb0JBQW9CO3lCQUMvQixDQUFDLENBQUM7d0JBQ0gsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzt3QkFDNUIsTUFBTTtvQkFDUixLQUFLLFdBQVc7d0JBQ2QsS0FBSyxDQUFDLElBQUksQ0FBQzs0QkFDVCxJQUFJLEVBQUUsV0FBVzs0QkFDakIsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUU7NEJBQzFCLFFBQVEsRUFBRSxnQkFBZ0I7eUJBQzNCLENBQUMsQ0FBQzt3QkFDSCxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO3dCQUNoQyxNQUFNO29CQUNSLEtBQUssV0FBVzt3QkFDZCxLQUFLLENBQUMsSUFBSSxDQUFDOzRCQUNULElBQUksRUFBRSxXQUFXOzRCQUNqQixNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRTs0QkFDMUIsUUFBUSxFQUFFLGdCQUFnQjt5QkFDM0IsQ0FBQyxDQUFDO3dCQUNILGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7d0JBQ2hDLE1BQU07b0JBQ1IsS0FBSyxTQUFTO3dCQUNaLEtBQUssQ0FBQyxJQUFJLENBQUM7NEJBQ1QsSUFBSSxFQUFFLE9BQU87NEJBQ2IsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUU7NEJBQzVCLFFBQVEsRUFBRSxvQkFBb0I7eUJBQy9CLENBQUMsQ0FBQzt3QkFDSCxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3dCQUM1QixNQUFNO29CQUNSLEtBQUssb0JBQW9CO3dCQUN2QixLQUFLLENBQUMsSUFBSSxDQUFDOzRCQUNULElBQUksRUFBRSxvQkFBb0I7NEJBQzFCLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxJQUFJO2dDQUNsQixnQkFBZ0IsRUFBRSxJQUFJO2dDQUN0QixnQkFBZ0IsRUFBRSxJQUFJO2dDQUN0QixhQUFhLEVBQUUsSUFBSTtnQ0FDbkIsa0JBQWtCLEVBQUUsSUFBSTtnQ0FDeEIsU0FBUyxFQUFFLENBQUM7NkJBQ2I7NEJBQ0QsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRLElBQUksaUNBQWlDO3lCQUMxRCxDQUFDLENBQUM7d0JBQ0gsYUFBYSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO3dCQUN6QyxNQUFNO29CQUNSLEtBQUssS0FBSzt3QkFDUixLQUFLLENBQUMsSUFBSSxDQUFDOzRCQUNULElBQUksRUFBRSxLQUFLOzRCQUNYLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFOzRCQUMxQixRQUFRLEVBQUUsZUFBZTt5QkFDMUIsQ0FBQyxDQUFDO3dCQUNILGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQzFCLE1BQU07b0JBQ1IsS0FBSyxLQUFLO3dCQUNSLEtBQUssQ0FBQyxJQUFJLENBQUM7NEJBQ1QsSUFBSSxFQUFFLEtBQUs7NEJBQ1gsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUU7NEJBQzFCLFFBQVEsRUFBRSxlQUFlO3lCQUMxQixDQUFDLENBQUM7d0JBQ0gsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDMUIsTUFBTTtnQkFDVixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsb0ZBQW9GO1FBQ3BGLElBQUksV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDOUIsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ2hDLFdBQVcsR0FBRyxRQUFRLENBQUMsQ0FBQyw4RUFBOEU7UUFDeEcsQ0FBQztRQUVELE9BQU87WUFDTCxXQUFXLEVBQUUsV0FBVztZQUN4QixhQUFhLEVBQUUsYUFBYTtZQUM1QixLQUFLLEVBQUUsS0FBSztTQUNiLENBQUM7SUFDSixDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQWtCO1FBQzdCLE9BQU8sQ0FDTCxNQUFNLENBQUMsSUFBSSxLQUFLLE1BQU07WUFDdEIsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsV0FBVyxLQUFLLElBQUksQ0FBQyxDQUNwRSxDQUFDO0lBQ0osQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixNQUFNLGVBQWUsR0FBUSxFQUFFLENBQUM7UUFFaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDdkMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDaEMsSUFBSSxZQUFZLEdBQUcsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBRXRDLDZDQUE2QztnQkFDN0MsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFlBQVksSUFBSSxZQUFZLEVBQUUsQ0FBQztvQkFDakQsWUFBWSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDekQsQ0FBQztnQkFFRCxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHO29CQUM3QixFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLElBQUksS0FBSyxFQUFFO29CQUMzRCxJQUFJLEVBQUUsMkNBQTJDO2lCQUNsRCxDQUFDO2dCQUVGLCtEQUErRDtnQkFDL0QsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQzNDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNqRCxzQ0FBc0M7b0JBQ3RDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNwRCxJQUFJLFFBQVEsRUFBRSxDQUFDO3dCQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7b0JBQzVDLENBQUM7Z0JBQ0gsQ0FBQztnQkFFRCw2R0FBNkc7Z0JBQzdHOztvQkFFSTtZQUNOLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRTNDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3ZDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ2hDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3ZFLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDdEQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLHNCQUFzQixFQUFFLENBQUM7Z0JBQ3ZELENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgseUVBQXlFO1FBQ3pFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUM5QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuQyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNaLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxZQUFZO3FCQUN0QyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztxQkFDNUIsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7b0JBQ25CLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3pDLElBQUksTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDO3dCQUNyQixNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3BDLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNuRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULHFEQUFxRDtRQUNyRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsd0JBQXdCLEdBQUcsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxTQUFpQixFQUFFLFVBQWdCO1FBQ25ELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0MsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFN0MsOERBQThEO1FBQzlELElBQUksTUFBTSxFQUFFLElBQUksS0FBSyxZQUFZLElBQUksVUFBVSxFQUFFLENBQUM7WUFDaEQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzdELElBQUksV0FBVyxJQUFJLGNBQWMsS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDakQsV0FBVyxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFDM0QsVUFBVSxHQUFHLGNBQWMsQ0FBQztZQUM5QixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDO1lBQ3JCLG1FQUFtRTtZQUNuRSxpRkFBaUY7WUFDakYsTUFBTSxXQUFXLEdBQ2YsVUFBVSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLENBQUM7WUFDMUUsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLCtCQUErQjtZQUVuRSx5REFBeUQ7WUFDekQsTUFBTSxhQUFhLEdBQUcsV0FBVyxDQUFDO1lBRWxDLHlFQUF5RTtZQUN6RSxJQUFJLFdBQVcsSUFBSSxhQUFhLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQy9DLElBQUksV0FBVyxDQUFDLEtBQUssS0FBSyxhQUFhLEVBQUUsQ0FBQztvQkFDeEMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFDNUQsQ0FBQztZQUNILENBQUM7WUFFRCx3Q0FBd0M7WUFDeEMsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDZixVQUFVLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2QyxDQUFDO1lBRUQsMEZBQTBGO1lBQzFGLHNGQUFzRjtZQUN0Riw0RkFBNEY7WUFDNUYsSUFDRSxXQUFXO2dCQUNYLGFBQWEsS0FBSyxTQUFTO2dCQUMzQixhQUFhLEtBQUssSUFBSTtnQkFDdEIsYUFBYSxLQUFLLEVBQUUsRUFDcEIsQ0FBQztnQkFDRCxrRkFBa0Y7Z0JBQ2xGLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ2QsNENBQTRDO29CQUM1QyxNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDO29CQUN2QywyREFBMkQ7b0JBQzNELHlFQUF5RTtvQkFDekUsSUFBSSxZQUFZLEtBQUssYUFBYSxFQUFFLENBQUM7d0JBQ25DLFdBQVcsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7b0JBQzVELENBQUM7Z0JBQ0gsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ1IsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsS0FBYTtRQUNoQyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3pCLHVCQUF1QjtRQUN2QixJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUNqQyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkMsT0FBTyxHQUFHLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUM1QixDQUFDO1FBQ0QsNkNBQTZDO1FBQzdDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQWE7UUFDL0IsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUN6QixvRUFBb0U7UUFDcEUsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7WUFDakMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZDLE9BQU8sR0FBRyxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDNUIsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELHFCQUFxQixDQUFDLFNBQWlCLEVBQUUsS0FBYTtRQUNwRCwyQ0FBMkM7UUFDM0MsSUFBSSxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBRTNCLGdEQUFnRDtRQUNoRCxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUMxQyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEQsY0FBYyxHQUFHLEdBQUcsSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3RDLENBQUM7UUFDRCx5REFBeUQ7YUFDcEQsSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDekMsTUFBTSxJQUFJLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDNUMsTUFBTSxLQUFLLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDN0MsY0FBYyxHQUFHLEdBQUcsSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3RDLENBQUM7UUFDRCxpREFBaUQ7YUFDNUMsSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7WUFDL0MsNEJBQTRCO1FBQzlCLENBQUM7UUFDRCx5Q0FBeUM7YUFDcEMsSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDM0MsbUNBQW1DO1FBQ3JDLENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QyxJQUFJLFdBQVcsSUFBSSxjQUFjLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDNUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsU0FBaUI7UUFDbkMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFdBQVc7WUFBRSxPQUFPO1FBRXpCLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3RDLGdEQUFnRDtRQUNoRCxJQUFJLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUMzQywwQkFBMEI7WUFDMUIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25ELElBQUksU0FBUyxLQUFLLEtBQUssRUFBRSxDQUFDO2dCQUN4QixXQUFXLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ3hELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELDJCQUEyQixDQUFDLFNBQWlCLEVBQUUsS0FBYTtRQUMxRCwrQ0FBK0M7UUFDL0MsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdDLElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsV0FBVyxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ3BELENBQUM7SUFDSCxDQUFDO0lBRUQsdUJBQXVCLENBQUMsU0FBaUI7UUFDdkMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFdBQVc7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUM1QixNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUN0Qyx5Q0FBeUM7UUFDekMsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELGVBQWUsQ0FBQyxTQUFpQjtRQUMvQixNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUN4QyxTQUFTLEdBQUcsU0FBUyxDQUNGLENBQUM7UUFDdEIsSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUM5Qyx5Q0FBeUM7WUFDekMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzdELElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ2pCLFVBQVUsQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDO1lBQ2xDLENBQUM7WUFDRCxxREFBcUQ7WUFDckQsSUFBSSxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQzFCLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUMxQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNuQixVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDckIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLElBQVk7UUFDMUIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVE7YUFDeEIsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO2FBQ3hCLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQW9CO1FBQ2hDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsTUFBb0I7UUFDbkMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxTQUFpQjtRQUN4QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEtBQUssQ0FBQztRQUNoRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFDRCxxQkFBcUIsQ0FBQyxNQUFrQjtRQUN0QyxPQUFPLE1BQU0sQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUN6RSxDQUFDO0lBRUQsaUJBQWlCLENBQUMsU0FBaUI7UUFDakMsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUN6RCxDQUFDO0lBRUQsZUFBZSxDQUNiLFdBQStCLEVBQy9CLFNBQXFCO1FBRXJCLElBQUksQ0FBQyxXQUFXO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFNUIsTUFBTSxVQUFVLEdBQVUsRUFBRSxDQUFDO1FBQzdCLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUNqQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDeEIsS0FBSyxVQUFVO29CQUNiLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUNyQyxNQUFNO2dCQUNSLEtBQUssT0FBTztvQkFDVixVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDbEMsTUFBTTtnQkFDUixLQUFLLFdBQVc7b0JBQ2QsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO29CQUN4RCxNQUFNO2dCQUNSLEtBQUssV0FBVztvQkFDZCxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQ3hELE1BQU07Z0JBQ1IsS0FBSyxLQUFLO29CQUNSLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDbEQsTUFBTTtnQkFDUixLQUFLLEtBQUs7b0JBQ1IsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO29CQUNsRCxNQUFNO2dCQUNSLEtBQUssU0FBUztvQkFDWixVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQ3RELE1BQU07Z0JBQ1IsS0FBSyxRQUFRO29CQUNYLElBQUksVUFBVSxDQUFDLFNBQVMsRUFBRSxDQUFDO3dCQUN6QixVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBd0IsRUFBRSxFQUFFOzRCQUMzQyxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsU0FBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7NEJBQ2hFLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDO3dCQUMzQyxDQUFDLENBQUMsQ0FBQztvQkFDTCxDQUFDO29CQUNELE1BQU07WUFDVixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsU0FBaUI7UUFDakMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDN0QsQ0FBQztJQUVELGNBQWMsQ0FBQyxTQUFpQjtRQUM5QixNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBcUIsQ0FBQztRQUN6RSxJQUFJLFNBQVMsSUFBSSxTQUFTLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQzNDLHFEQUFxRDtZQUNyRCxJQUFJLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDekIsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3pCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2xCLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNwQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsS0FBVSxFQUFFLFNBQWlCO1FBQ3hDLE1BQU0sSUFBSSxHQUFTLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7WUFDaEMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQixNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtnQkFDbkIsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQWdCLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUVqRCwyQ0FBMkM7Z0JBQzNDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQy9DLElBQUksTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDO29CQUNyQixNQUFNLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNDLENBQUM7WUFDSCxDQUFDLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFhO1FBQzNCLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFdEIsMkNBQTJDO1FBQzNDLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzdCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDL0IsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBRUQsd0NBQXdDO1FBQ3hDLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ25DLE9BQU8sb0JBQW9CLENBQUM7UUFDOUIsQ0FBQztRQUVELE9BQU8sb0JBQW9CLENBQUM7SUFDOUIsQ0FBQztJQUVELGNBQWMsQ0FBQyxTQUFpQjtRQUM5QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUNsRCxDQUFDO0lBRUQsV0FBVyxDQUFDLFNBQWlCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDO0lBQy9DLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxPQUFjO1FBQzdCLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDekIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLEtBQUs7WUFDM0IsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUMsS0FBSztZQUN4QyxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7U0FDakIsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBR0QsVUFBVSxDQUFDLFNBQWlCO1FBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV2QyxnREFBZ0Q7UUFDaEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvQyxJQUFJLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQztZQUNyQixNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsQ0FBQztJQUNILENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3RCLGlEQUFpRDtZQUNqRCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxDQUFDO1lBRUgsOENBQThDO1lBQzlDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pFLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FDakUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDTixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPO29CQUFFLE9BQU8sS0FBSyxDQUFDO2dCQUVwQyw4Q0FBOEM7Z0JBQzlDLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBQ3RELE9BQU8sQ0FDTCxNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsSUFBSSxLQUFLLENBQ2pFLENBQUM7WUFDSixDQUFDLENBQ0YsQ0FBQyxNQUFNLENBQUM7WUFFVCxpREFBaUQ7WUFDakQsSUFBSSxvQkFBb0IsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQ3ZCLGtEQUFrRCxvQkFBb0IsMkJBQTJCLENBQ2xHLENBQUM7WUFDSixDQUFDO1lBQ0QsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN4QixDQUFDO0lBQ0gsQ0FBQztJQUVELGNBQWMsQ0FBQyxTQUFpQjtRQUM5QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2QyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsZUFBZSxDQUFDLFNBQWlCO1FBQy9CLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRTlCLHFEQUFxRDtRQUNyRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRSxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDO1FBQzVELG9DQUFvQztRQUNwQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUMzQixNQUFNLGdCQUFnQixHQUFHLE1BQU0sRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUNoRCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLENBQzNCLENBQUM7WUFDRixPQUFPLGdCQUFnQixFQUFFLE9BQU8sSUFBSSxlQUFlLENBQUM7UUFDdEQsQ0FBQztRQUVELHFEQUFxRDtRQUNyRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QyxLQUFLLE1BQU0sR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQzVCLE1BQU0sVUFBVSxHQUFHLE1BQU0sRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ3BFLElBQUksVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFDO2dCQUN4QixPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQUM7WUFDNUIsQ0FBQztRQUNILENBQUM7UUFDRCx5QkFBeUI7UUFDekIsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDN0IsT0FBTyxHQUFHLE1BQU0sRUFBRSxLQUFLLGNBQWMsQ0FBQztRQUN4QyxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUFFLE9BQU8sc0JBQXNCLENBQUM7UUFDekQsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztZQUMzQixPQUFPLHFCQUFxQixLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3pFLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7WUFDM0IsT0FBTyxxQkFBcUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN6RSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1lBQ3JCLE9BQU8sb0JBQW9CLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDdkQsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUNyQixPQUFPLG9CQUFvQixLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3ZELElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7WUFBRSxPQUFPLGdCQUFnQixDQUFDO1FBQ3JELE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7d0dBcG1CVSxzQkFBc0I7NEZBQXRCLHNCQUFzQiw4SkFwNUJ2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3UFQsazJTQS9RQyxZQUFZLGtiQUNaLG1CQUFtQixxYkFDbkIscUJBQXFCLGdPQUNyQixzQkFBc0IsNE1BQ3RCLG1CQUFtQixpTEFDbkIscUJBQXFCLDhKQUNyQixtQkFBbUIsd0lBQ25CLG9CQUFvQixtTEFDcEIseUJBQXlCLHlMQUN6Qix1QkFBdUIsdUxBQ3ZCLHdCQUF3Qiw4S0FDeEIseUJBQXlCLHNOQUN6QixtQkFBbUIscUtBQ25CLHFCQUFxQiwySUFDckIsbUJBQW1CLHlJQUNuQixrQkFBa0Isd0lBQ2xCLG1CQUFtQix5SUFDbkIsb0JBQW9CLDBJQUNwQixvQkFBb0IsMElBQ3BCLG9CQUFvQiwwSUFDcEIscUJBQXFCLHFMQUNyQix3QkFBd0I7OzRGQXM1QmYsc0JBQXNCO2tCQS82QmxDLFNBQVM7K0JBQ0UscUJBQXFCLGNBQ25CLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIscUJBQXFCO3dCQUNyQixzQkFBc0I7d0JBQ3RCLG1CQUFtQjt3QkFDbkIscUJBQXFCO3dCQUNyQixtQkFBbUI7d0JBQ25CLG9CQUFvQjt3QkFDcEIseUJBQXlCO3dCQUN6Qix1QkFBdUI7d0JBQ3ZCLHdCQUF3Qjt3QkFDeEIseUJBQXlCO3dCQUN6QixtQkFBbUI7d0JBQ25CLHFCQUFxQjt3QkFDckIsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsb0JBQW9CO3dCQUNwQixvQkFBb0I7d0JBQ3BCLG9CQUFvQjt3QkFDcEIscUJBQXFCO3dCQUNyQix3QkFBd0I7cUJBQ3pCLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd1BUO3lHQThwQlEsTUFBTTtzQkFBZCxLQUFLO2dCQUNJLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBGaWVsZFR5cGUgPVxyXG4gIHwgJ3RleHQnXHJcbiAgfCAnZW1haWwnXHJcbiAgfCAnbnVtYmVyJ1xyXG4gIHwgJ3NlbGVjdCdcclxuICB8ICduYW1lLWNvZGUnXHJcbiAgfCAnY2hlY2tib3gnXHJcbiAgfCAndGV4dGFyZWEnXHJcbiAgfCAnZGF0ZSdcclxuICB8ICdwYXNzd29yZCdcclxuICB8ICdyYWRpbydcclxuICB8ICdmaWxlJ1xyXG4gIHwgJ21vbnRoLXllYXInXHJcbiAgfCAncGhvbmUnXHJcbiAgfCAndWFuJ1xyXG4gIHwgJ3BmJ1xyXG4gIHwgJ2VzaSdcclxuICB8ICdpZnNjJ1xyXG4gIHwgJ21pY3InXHJcbiAgfCAnaWJhbic7XHJcbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25UeXBlID1cclxuICB8ICdyZXF1aXJlZCdcclxuICB8ICdlbWFpbCdcclxuICB8ICdtaW5MZW5ndGgnXHJcbiAgfCAnbWF4TGVuZ3RoJ1xyXG4gIHwgJ3BhdHRlcm4nXHJcbiAgfCAnbWluJ1xyXG4gIHwgJ21heCdcclxuICB8ICdjdXN0b20nXHJcbiAgfCAncGFzc3dvcmRDb21wbGV4aXR5JztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRmllbGRWYWxpZGF0aW9uIHtcclxuICB0eXBlOiBWYWxpZGF0aW9uVHlwZTtcclxuICB2YWx1ZT86IGFueTsgLy8gRm9yIG1pbkxlbmd0aCwgbWF4TGVuZ3RoLCBtaW4sIG1heCwgcGF0dGVyblxyXG4gIG1lc3NhZ2U/OiBzdHJpbmc7IC8vIEN1c3RvbSBlcnJvciBtZXNzYWdlXHJcbiAgdmFsaWRhdG9yPzogKHZhbHVlOiBhbnksIGZvcm1Hcm91cD86IEZvcm1Hcm91cCkgPT4gYm9vbGVhbjsgLy8gRm9yIGN1c3RvbSB2YWxpZGF0aW9uXHJcbiAgcGFyYW1zPzogYW55OyAvLyBGb3IgY29tcGxleCB2YWxpZGF0aW9uIHJ1bGVzIGxpa2UgcGFzc3dvcmRDb21wbGV4aXR5XHJcbiAgZXJyb3JLZXk/OiBzdHJpbmc7IC8vIFNwZWNpZmljIGVycm9yIGtleSB0byByZXR1cm5cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGb3JtQ29sdW1uIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICB0eXBlOiBGaWVsZFR5cGU7XHJcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xyXG4gIG9wdGlvbnM/OiB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBhbnkgfVtdOyAvLyBGb3Igc2VsZWN0IGZpZWxkc1xyXG4gIHZhbGlkYXRpb25zPzogRmllbGRWYWxpZGF0aW9uW107XHJcbiAgdmFsdWU/OiBhbnk7IC8vIERlZmF1bHQgdmFsdWVcclxuICBkaXNhYmxlZD86IGJvb2xlYW47XHJcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xyXG4gIGhpZGRlbj86IGJvb2xlYW47XHJcbiAgaGludD86IHN0cmluZztcclxuICBjb2xTcGFuPzogbnVtYmVyO1xyXG4gIG9uQ2hhbmdlPzogKHZhbHVlOiBhbnksIGZvcm1Hcm91cDogRm9ybUdyb3VwKSA9PiB2b2lkO1xyXG4gIGFjY2VwdD86IHN0cmluZzsgLy8gRm9yIGZpbGUgaW5wdXQgKGUuZy4sICdpbWFnZS8qJylcclxuICBmaWxlUHJldmlldz86IGJvb2xlYW47IC8vIFNob3cgaW1hZ2UgcHJldmlld1xyXG4gIHNob3dUaW1lUGlja2VyPzogYm9vbGVhbjsgLy8gU2hvdyB0aW1lIHBpY2tlciBmb3IgdGV4dCBmaWVsZHNcclxuICBhbGxvd0FscGhhYmV0c09ubHk/OiBib29sZWFuO1xyXG4gIG1heExlbmd0aD86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGb3JtU2VjdGlvbiB7XHJcbiAgdGl0bGU/OiBzdHJpbmc7IC8vIFNlY3Rpb24gaGVhZGluZyAoZS5nLiwgXCJQRVJTT05BTCBJTkZPUk1BVElPTlwiKVxyXG4gIGZpZWxkczogRm9ybUNvbHVtbltdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1Db25maWcge1xyXG4gIHNlY3Rpb25zOiBGb3JtU2VjdGlvbltdO1xyXG4gIHN1Ym1pdExhYmVsPzogc3RyaW5nO1xyXG4gIHJlc2V0TGFiZWw/OiBzdHJpbmc7XHJcbiAgb25TdWJtaXQ6IChkYXRhOiBhbnkpID0+IHZvaWQ7XHJcbiAgb25SZXNldD86ICgpID0+IHZvaWQ7XHJcbiAgb25DYW5jZWw6ICgpID0+IHZvaWQ7XHJcbiAgY2FuY2VsTGFiZWw/OiBzdHJpbmc7XHJcbiAgZm9ybVRpdGxlPzogc3RyaW5nO1xyXG4gIG1heENvbHNQZXJSb3c/OiBudW1iZXI7XHJcbn1cclxuXHJcbi8vIGFkZC11cGRhdGUtZm9ybS5jb21wb25lbnQudHNcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgRWxlbWVudFJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBBYnN0cmFjdENvbnRyb2wsXHJcbiAgRm9ybUJ1aWxkZXIsXHJcbiAgRm9ybUNvbnRyb2wsXHJcbiAgRm9ybUdyb3VwLFxyXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgVmFsaWRhdG9ycyxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuLy8gSW1wb3J0IHlvdXIgbGlicmFyeSBtb2R1bGVzXHJcbmltcG9ydCB7IEZ2RW50cnlGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWVudHJ5LWZpZWxkL2Z2LWVudHJ5LWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2TnVtYmVyRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi1udW1iZXItZmllbGQvZnYtbnVtYmVyLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2RHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi9mdi1kcm9wZG93bi9mdi1kcm9wZG93bi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGdlJhZGlvR3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi9mdi1yYWRpby1ncm91cC9mdi1yYWRpby1ncm91cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGdkNoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi4vZnYtY2hlY2tib3gvZnYtY2hlY2tib3guY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZEYXRlRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi1kYXRlLWZpZWxkL2Z2LWRhdGUtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZNb250aFllYXJGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LW1vbnRoLXllYXItZmllbGQvZnYtbW9udGgteWVhci1maWVsZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGdkZpbGVTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWZpbGUtc2VsZWN0b3IvZnYtZmlsZS1zZWxlY3Rvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGdkltYWdlU2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuLi9mdi1pbWFnZS1zZWxlY3Rvci9mdi1pbWFnZS1zZWxlY3Rvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGdlJpY2hUZXh0RWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtcmljaC10ZXh0LWVkaXRvci9mdi1yaWNoLXRleHQtZWRpdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2TmFtZUNvZGVDb21wb25lbnQgfSBmcm9tICcuLi9mdi1uYW1lLWNvZGUvZnYtbmFtZS1jb2RlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2UGhvbmVGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LXBob25lLWZpZWxkL2Z2LXBob25lLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2VWFuRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi11YW4tZmllbGQvZnYtdWFuLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2UGZGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LXBmLWZpZWxkL2Z2LXBmLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2RXNpRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi1lc2ktZmllbGQvZnYtZXNpLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2SWZzY0ZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtaWZzYy1maWVsZC9mdi1pZnNjLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2TWljckZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtbWljci1maWVsZC9mdi1taWNyLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2SWJhbkZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtaWJhbi1maWVsZC9mdi1pYmFuLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2RW1haWxGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWVtYWlsLWZpZWxkL2Z2LWVtYWlsLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2UGFzc3dvcmRGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LXBhc3N3b3JkLWZpZWxkL2Z2LXBhc3N3b3JkLWZpZWxkLmNvbXBvbmVudCc7XHJcblxyXG4vLyBJbXBvcnQgVmFsaWRhdGlvbiBUeXBlc1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uU2NoZW1hLCBWYWxpZGF0aW9uUnVsZSB9IGZyb20gJ0Bmb3Zlc3R0YTIvdmFsaWRhdGlvbi1lbmdpbmUnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1hZGQtdXBkYXRlLWZvcm0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIEZ2RW50cnlGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2TnVtYmVyRmllbGRDb21wb25lbnQsXHJcbiAgICBGdkRyb3Bkb3duQ29tcG9uZW50LFxyXG4gICAgRnZSYWRpb0dyb3VwQ29tcG9uZW50LFxyXG4gICAgRnZDaGVja2JveENvbXBvbmVudCxcclxuICAgIEZ2RGF0ZUZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZNb250aFllYXJGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2RmlsZVNlbGVjdG9yQ29tcG9uZW50LFxyXG4gICAgRnZJbWFnZVNlbGVjdG9yQ29tcG9uZW50LFxyXG4gICAgRnZSaWNoVGV4dEVkaXRvckNvbXBvbmVudCxcclxuICAgIEZ2TmFtZUNvZGVDb21wb25lbnQsXHJcbiAgICBGdlBob25lRmllbGRDb21wb25lbnQsXHJcbiAgICBGdlVhbkZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZQZkZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZFc2lGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2SWZzY0ZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZNaWNyRmllbGRDb21wb25lbnQsXHJcbiAgICBGdkliYW5GaWVsZENvbXBvbmVudCxcclxuICAgIEZ2RW1haWxGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2UGFzc3dvcmRGaWVsZENvbXBvbmVudCxcclxuICBdLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jb250YWluZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0taGVhZGVyXCIgKm5nSWY9XCJjb25maWcuZm9ybVRpdGxlXCI+XHJcbiAgICAgICAgPGgyPnt7IGNvbmZpZy5mb3JtVGl0bGUgfX08L2gyPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChuZ1N1Ym1pdCk9XCJoYW5kbGVTdWJtaXQoKVwiIGNsYXNzPVwiZHluYW1pYy1mb3JtXCI+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2VjdGlvbiBvZiBjb25maWcuc2VjdGlvbnNcIiBjbGFzcz1cImZvcm0tc2VjdGlvblwiPlxyXG4gICAgICAgICAgPGgzIGNsYXNzPVwic2VjdGlvbi10aXRsZVwiICpuZ0lmPVwic2VjdGlvbi50aXRsZVwiPlxyXG4gICAgICAgICAgICB7eyBzZWN0aW9uLnRpdGxlIH19XHJcbiAgICAgICAgICA8L2gzPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZHMtcm93XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBzZWN0aW9uLmZpZWxkc1wiPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC13cmFwcGVyXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIidmaWVsZC0nICsgY29sdW1uLnR5cGVcIlxyXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiY29sdW1uLmhpZGRlbiA/IHsgZGlzcGxheTogJ25vbmUnIH0gOiB7fVwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuZ3JpZC1jb2x1bW5dPVwiJ3NwYW4gJyArIChjb2x1bW4uY29sU3BhbiB8fCAxKVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi50eXBlID09PSAndGV4dCcgJiYgIWNvbHVtbi5oaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtZW50cnktZmllbGRcclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29sdW1uLnBsYWNlaG9sZGVyIHx8ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiZ2V0Q29udHJvbChjb2x1bW4ubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FsbG93QWxwaGFiZXRzT25seV09XCJjb2x1bW4uYWxsb3dBbHBoYWJldHNPbmx5IHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICBbbWF4TGVuZ3RoXT1cImNvbHVtbi5tYXhMZW5ndGggfHwgbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LWVudHJ5LWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnZW1haWwnICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWVtYWlsLWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbHVtbi5wbGFjZWhvbGRlciB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiZ2V0Q29udHJvbChjb2x1bW4ubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJoYW5kbGVGaWVsZENoYW5nZShjb2x1bW4ubmFtZSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9mdi1lbWFpbC1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3Bhc3N3b3JkJyAmJiAhY29sdW1uLmhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1wYXNzd29yZC1maWVsZFxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJydcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImdldENvbnRyb2woY29sdW1uLm5hbWUpXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlRmllbGRDaGFuZ2UoY29sdW1uLm5hbWUsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvZnYtcGFzc3dvcmQtZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdudW1iZXInICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LW51bWJlci1maWVsZFxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJydcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImdldENvbnRyb2woY29sdW1uLm5hbWUpXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlRmllbGRDaGFuZ2UoY29sdW1uLm5hbWUsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvZnYtbnVtYmVyLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnc2VsZWN0JyAmJiAhY29sdW1uLmhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1kcm9wZG93blxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCBvcHRpb24nXCJcclxuICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJjb2x1bW4ub3B0aW9ucyB8fCBbXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiZ2V0Q29udHJvbChjb2x1bW4ubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJoYW5kbGVGaWVsZENoYW5nZShjb2x1bW4ubmFtZSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9mdi1kcm9wZG93bj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ2NoZWNrYm94JyAmJiAhY29sdW1uLmhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1jaGVja2JveFxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImdldENvbnRyb2woY29sdW1uLm5hbWUpXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlRmllbGRDaGFuZ2UoY29sdW1uLm5hbWUsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvZnYtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdyYWRpbycgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LXJhZGlvLWdyb3VwXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiY29sdW1uLm9wdGlvbnMgfHwgW11cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImdldENvbnRyb2woY29sdW1uLm5hbWUpXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlRmllbGRDaGFuZ2UoY29sdW1uLm5hbWUsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvZnYtcmFkaW8tZ3JvdXA+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdkYXRlJyAmJiAhY29sdW1uLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtZGF0ZS1maWVsZFxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImdldENvbnRyb2woY29sdW1uLm5hbWUpXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlRmllbGRDaGFuZ2UoY29sdW1uLm5hbWUsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvZnYtZGF0ZS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ21vbnRoLXllYXInICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LW1vbnRoLXllYXItZmllbGRcclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJnZXRDb250cm9sKGNvbHVtbi5uYW1lKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZU1vbnRoWWVhckNoYW5nZShjb2x1bW4ubmFtZSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9mdi1tb250aC15ZWFyLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi50eXBlID09PSAndGV4dGFyZWEnICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LXJpY2gtdGV4dC1lZGl0b3JcclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29sdW1uLnBsYWNlaG9sZGVyIHx8ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJnZXRDb250cm9sKGNvbHVtbi5uYW1lKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LXJpY2gtdGV4dC1lZGl0b3I+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdmaWxlJyAmJiAhY29sdW1uLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNJbWFnZUZpZWxkKGNvbHVtbik7IGVsc2Ugc3RhbmRhcmRGaWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZ2LWltYWdlLXNlbGVjdG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCBpbWFnZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiZ2V0Q29udHJvbChjb2x1bW4ubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbkZpbGVDaGFuZ2UoJGV2ZW50LCBjb2x1bW4ubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8L2Z2LWltYWdlLXNlbGVjdG9yPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc3RhbmRhcmRGaWxlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmdi1maWxlLXNlbGVjdG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCBmaWxlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbYWNjZXB0XT1cImNvbHVtbi5hY2NlcHQgfHwgJyovKidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiZ2V0Q29udHJvbChjb2x1bW4ubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbkZpbGVDaGFuZ2UoJGV2ZW50LCBjb2x1bW4ubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8L2Z2LWZpbGUtc2VsZWN0b3I+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICduYW1lLWNvZGUnICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LW5hbWUtY29kZVxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJ1NlYXJjaCBieSBDb2RlIG9yIE5hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJjb2x1bW4ub3B0aW9ucyA/IG1hcFNlYXJjaE9wdGlvbnMoY29sdW1uLm9wdGlvbnMpIDogW11cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImdldENvbnRyb2woY29sdW1uLm5hbWUpXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LW5hbWUtY29kZT5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3Bob25lJyAmJiAhY29sdW1uLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtcGhvbmUtZmllbGQgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiIFtjb250cm9sXT1cImdldENvbnRyb2woY29sdW1uLm5hbWUpXCIgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiIFtkaXNhYmxlZF09XCJjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2VcIj48L2Z2LXBob25lLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAndWFuJyAmJiAhY29sdW1uLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtdWFuLWZpZWxkIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIiBbY29udHJvbF09XCJnZXRDb250cm9sKGNvbHVtbi5uYW1lKVwiIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIiBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCI+PC9mdi11YW4tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdwZicgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LXBmLWZpZWxkIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIiBbY29udHJvbF09XCJnZXRDb250cm9sKGNvbHVtbi5uYW1lKVwiIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIiBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCI+PC9mdi1wZi1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ2VzaScgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWVzaS1maWVsZCBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCIgW2NvbnRyb2xdPVwiZ2V0Q29udHJvbChjb2x1bW4ubmFtZSlcIiBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCIgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiPjwvZnYtZXNpLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnaWZzYycgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWlmc2MtZmllbGQgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiIFtjb250cm9sXT1cImdldENvbnRyb2woY29sdW1uLm5hbWUpXCIgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiIFtkaXNhYmxlZF09XCJjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2VcIj48L2Z2LWlmc2MtZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdtaWNyJyAmJiAhY29sdW1uLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtbWljci1maWVsZCBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCIgW2NvbnRyb2xdPVwiZ2V0Q29udHJvbChjb2x1bW4ubmFtZSlcIiBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCIgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiPjwvZnYtbWljci1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ2liYW4nICYmICFjb2x1bW4uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1pYmFuLWZpZWxkIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIiBbY29udHJvbF09XCJnZXRDb250cm9sKGNvbHVtbi5uYW1lKVwiIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIiBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCI+PC9mdi1pYmFuLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1hY3Rpb25zXCI+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWQgJiYgc3VibWl0dGVkXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgY29uZmlnLnN1Ym1pdExhYmVsIHx8ICdTYXZlJyB9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJjb25maWcub25DYW5jZWwoKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IGNvbmZpZy5jYW5jZWxMYWJlbCB8fCAnQ2FuY2VsJyB9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZm9ybT5cclxuICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBgXHJcblxyXG4gIEBpbXBvcnQgdXJsKCdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PVBvcHBpbnM6d2dodEAzMDA7NDAwOzUwMDs2MDA7NzAwJmRpc3BsYXk9c3dhcCcpO1xyXG4gIEBpbXBvcnQgdXJsKCdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2ljb24/ZmFtaWx5PU1hdGVyaWFsK0ljb25zJyk7XHJcbiAgICAqe1xyXG4gICAgICBmb250LWZhbWlseTogXCJQb3BwaW5zXCIgIWltcG9ydGFudDtcclxuICAgIH1cclxuICAgIC5mb3JtLWNvbnRhaW5lciB7XHJcbiAgICAgIGJhY2tncm91bmQ6ICNmNWY1ZjU7XHJcbiAgICAgIHBhZGRpbmc6IDVweCAxMHB4IDEwcHg7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcclxuICAgICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIH1cclxuXHJcbiAgICAuZXJyb3ItYm9yZGVyIHtcclxuICAgICBib3JkZXItY29sb3I6IHJlZCAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG5cclxuICAgIC5oaWRkZW57XHJcbiAgICAgIGRpc3BsYXk6bm9uZSAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG5cclxuICAgIC5mb3JtLWhlYWRlciB7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDVweDtcclxuICAgIH1cclxuXHJcbiAgICAuZm9ybS1oZWFkZXIgaDIge1xyXG4gICAgICBtYXJnaW46IDA7XHJcbiAgICAgIGZvbnQtc2l6ZTogMjBweDtcclxuICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICAgICAgY29sb3I6ICMzMDMwMzA7XHJcbiAgICB9XHJcblxyXG4gICAgLmR5bmFtaWMtZm9ybSB7XHJcbiAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xyXG4gICAgICBwYWRkaW5nOiAxMHB4O1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA2cHg7XHJcbiAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMSk7XHJcbiAgICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIH1cclxuXHJcbiAgICAuZm9ybS1zZWN0aW9uIHtcclxuICAgICAgbWFyZ2luLWJvdHRvbToxMHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5zZWN0aW9uLXRpdGxlIHtcclxuICAgICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgICBmb250LXdlaWdodDogNzAwO1xyXG4gICAgICBjb2xvcjogIzMwMzAzMDtcclxuICAgICAgbWFyZ2luOiAwIDAgMTZweCAwO1xyXG4gICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG4gICAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmZpZWxkcy1yb3cge1xyXG4gICAgICBkaXNwbGF5OiBncmlkO1xyXG4gICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg1LDFmcik7XHJcbiAgICAgIGdhcDogMTZweDtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xyXG4gICAgfVxyXG5cclxuICAgIC5mb3JtLWZpZWxkLXdyYXBwZXIge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgIG1pbi13aWR0aDogMDtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xyXG4gICAgfVxyXG5cclxuICAgIC5wYXNzd29yZC10b2dnbGUtYnRuIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgcmlnaHQ6IDEwcHg7XHJcbiAgdG9wOiAzMnB4O1xyXG4gIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBwYWRkaW5nOiA0cHg7XHJcbiAgY29sb3I6ICM2NjY7XHJcbn1cclxuXHJcbi5wYXNzd29yZC10b2dnbGUtYnRuOmhvdmVyIHtcclxuICBjb2xvcjogIzMzMztcclxufVxyXG5cclxuLnBhc3N3b3JkLXRvZ2dsZS1idG4gLm1hdGVyaWFsLWljb25zIHtcclxuICBmb250LXNpemU6IDIwcHg7XHJcbiAgd2lkdGg6IGF1dG87XHJcbiAgaGVpZ2h0OiBhdXRvO1xyXG4gIHBhZGRpbmc6IDA7XHJcbn1cclxuXHJcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSBhbmQgKG1heC13aWR0aDogMTQwMHB4KSB7XHJcbiAgICAgIC5maWVsZHMtcm93IHtcclxuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg1LDFmcik7XHJcbiAgICAgIH1cclxuICAgICAgLmZvcm0tY29udHJvbCB7XHJcbiAgICAgICAgd2lkdGg6IDE4MHB4O1xyXG4gICAgICAgIG1heC13aWR0aDogMTgwcHg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAbWVkaWEgKG1heC13aWR0aDogMTIwMHB4KSB7XHJcbiAgICAgIC5maWVsZHMtcm93IHtcclxuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLDFmcik7XHJcbiAgICAgIH1cclxuICAgICAgLmZvcm0tY29udHJvbCB7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDk5MnB4KSB7XHJcbiAgICAgIC5maWVsZHMtcm93IHtcclxuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLDFmcik7XHJcbiAgICAgICAgZ2FwOiAxMnB4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XHJcbiAgICAgIC5maWVsZHMtcm93IHtcclxuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLDFmcik7XHJcbiAgICAgICAgZ2FwOiAxMHB4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDY0MHB4KSB7XHJcbiAgICAgIC5maWVsZHMtcm93IHtcclxuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcclxuICAgICAgICBnYXA6IDEycHg7XHJcbiAgICAgIH1cclxuICAgICAgLmZvcm0tZmllbGQtd3JhcHBlciB7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsYWJlbCB7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDZweDtcclxuICAgICAgY29sb3I6ICMxNTFENDg7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgIH1cclxuXHJcbiAgICAucmVxdWlyZWQge1xyXG4gICAgICBjb2xvcjogI2U3NGMzYztcclxuICAgICAgbWFyZ2luLWxlZnQ6IDJweDtcclxuICAgIH1cclxuXHJcbiAgICAuZm9ybS1jb250cm9sIHtcclxuICAgICAgcGFkZGluZzogNXB4IDEwcHg7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICAgIGhlaWdodDogMzRweDtcclxuICAgICAgYm9yZGVyOiAxcHggc29saWQgIzhDQkJBODtcclxuICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xyXG4gICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xyXG4gICAgICBjb2xvcjogIzFmMmI0MTtcclxuICAgICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMnMsIGJveC1zaGFkb3cgMC4ycztcclxuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIH1cclxuXHJcbiAgICAuZm9ybS1jb250cm9sOmZvY3VzIHtcclxuICAgICAgb3V0bGluZTogbm9uZTtcclxuICAgICAgYm9yZGVyLWNvbG9yOiAjMzQ5OGRiO1xyXG4gICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSg1MiwgMTUyLCAyMTksIDAuMSk7XHJcbiAgICB9XHJcblxyXG4gICAgLmZvcm0tY29udHJvbDpkaXNhYmxlZCB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlY2YwZjE7XHJcbiAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgdGV4dGFyZWEuZm9ybS1jb250cm9sIHtcclxuICAgICAgcmVzaXplOiB2ZXJ0aWNhbDtcclxuICAgICAgbWluLWhlaWdodDogMTAwcHg7XHJcbiAgICB9XHJcblxyXG4gICAgc2VsZWN0LmZvcm0tY29udHJvbCB7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgYXBwZWFyYW5jZTogbm9uZTtcclxuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMicgaGVpZ2h0PScxMicgdmlld0JveD0nMCAwIDEyIDEyJyUzRSUzQ3BhdGggZmlsbD0nJTIzMzMzJyBkPSdNNiA5TDEgNGgxMHonLyUzRSUzQy9zdmclM0VcIik7XHJcbiAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IDhweCBjZW50ZXI7XHJcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDQwcHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmNoZWNrYm94LXdyYXBwZXIge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBnYXA6IDhweDtcclxuICAgIH1cclxuXHJcbiAgICBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xyXG4gICAgICB3aWR0aDogMThweDtcclxuICAgICAgaGVpZ2h0OiAxOHB4O1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgLmNoZWNrYm94LWxhYmVsIHtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICBtYXJnaW46IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLmZpbGUtdXBsb2FkLWNvbnRhaW5lciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGdhcDogMjBweDtcclxuICBwYWRkaW5nOiAyMHB4O1xyXG4gIGJhY2tncm91bmQ6IHdoaXRlO1xyXG4gIG1heC13aWR0aDogMTAwJTtcclxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gIGZsZXgtd3JhcDogd3JhcDtcclxufVxyXG5cclxuLm1hdGVyaWFsLWljb25zIHtcclxuICBmb250LWZhbWlseTogJ01hdGVyaWFsIEljb25zJyAhaW1wb3J0YW50O1xyXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgd2lkdGg6IDQwcHg7XHJcbiAgcGFkZGluZzogOHB4O1xyXG4gIGhlaWdodDogNDBweDtcclxufVxyXG5cclxuLmZpbGUtZmllbGQtd3JhcHBlciB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgbWFyZ2luLXRvcDogMTZweDtcclxuICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxufVxyXG5cclxuLnBob3RvLXByZXZpZXctY2lyY2xlIHtcclxuICB3aWR0aDogMTAwcHg7XHJcbiAgaGVpZ2h0OiAxMDBweDtcclxuICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICBib3JkZXI6IDJweCBzb2xpZCAjZGRkO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4ycztcclxufVxyXG5cclxuLnBob3RvLXByZXZpZXctY2lyY2xlOmhvdmVyIHtcclxuICBib3JkZXItY29sb3I6ICMzNDk4ZGI7XHJcbn1cclxuXHJcbi5wcmV2aWV3LWltYWdlLCAuZGVmYXVsdC1waG90byB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxufVxyXG5cclxuLnByZXZpZXctaW1hZ2UgaW1nIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgb2JqZWN0LWZpdDogY292ZXI7XHJcbn1cclxuXHJcbi5kZWZhdWx0LXBob3RvIHtcclxuICBiYWNrZ3JvdW5kOiAjZjBmMGYwO1xyXG4gIGNvbG9yOiAjOTk5O1xyXG4gIGZvbnQtc2l6ZTogNDBweDtcclxufVxyXG5cclxuLmZpbGUtaW5mbyB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogOHB4O1xyXG59XHJcbi5idG4tZGVsZXRlIHtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBmb250LXNpemU6IDE0cHg7XHJcbiAgcGFkZGluZzogMHB4O1xyXG59XHJcblxyXG4udXBsb2FkLWJ0bi1ncm91cCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNkM2QzZDM7XHJcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gIGJhY2tncm91bmQ6ICNmZmY7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB3aWR0aDogZml0LWNvbnRlbnQ7XHJcbn1cclxuXHJcbi5idG4tdXBsb2FkIHtcclxuICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gIGNvbG9yOiAjMjIyO1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBwYWRkaW5nOiAwIDE4cHg7XHJcbiAgZm9udC1zaXplOiAxNnB4O1xyXG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNlMGUwZTA7XHJcbiAgYm9yZGVyLXJhZGl1czogOHB4IDAgMCA4cHg7XHJcbiAgb3V0bGluZTogbm9uZTtcclxuICBib3gtc2hhZG93OiBub25lO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBoZWlnaHQ6IDQwcHg7XHJcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzO1xyXG59XHJcblxyXG4uYnRuLXVwbG9hZC1pY29uIHtcclxuICBiYWNrZ3JvdW5kOiAjZjVmNWY1O1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBib3JkZXItcmFkaXVzOiAwIDhweCA4cHggMDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgd2lkdGg6IDQ4cHg7XHJcbiAgaGVpZ2h0OiA0MHB4O1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMnM7XHJcbn1cclxuXHJcbi5idG4tdXBsb2FkLWljb24gaS5tYXRlcmlhbC1pY29ucyB7XHJcbiAgZm9udC1zaXplOiAyMnB4O1xyXG4gIGNvbG9yOiAjMjIyO1xyXG59XHJcblxyXG4uYnRuLXVwbG9hZDpob3ZlciwgLmJ0bi11cGxvYWQtaWNvbjpob3ZlciB7XHJcbiAgYmFja2dyb3VuZDogI2YwZjBmMDtcclxufVxyXG5cclxuLmJ0bi1kZWxldGUge1xyXG4gIGJhY2tncm91bmQ6IHdoaXRlO1xyXG4gIGNvbG9yOiByZWQ7XHJcbn1cclxuXHJcbi5idG4tZGVsZXRlOmhvdmVyIHtcclxuICBiYWNrZ3JvdW5kOiAjZjBmMGYwO1xyXG59XHJcblxyXG4uZmlsZS1uYW1lIHtcclxuICBmb250LXNpemU6IDEycHg7XHJcbiAgY29sb3I6ICM2NjY7XHJcbiAgbWFyZ2luOiA4cHg7XHJcbiAgbWFyZ2luLXRvcDogMTBweDtcclxufVxyXG5cclxuLmZpbGUtbGFiZWwge1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIG1hcmdpbi1ib3R0b206IDZweDtcclxuICAgIGNvbG9yOiAjMTUxZDQ4O1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG59XHJcblxyXG4gICAgLnJhZGlvLWxhYmVsIHtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIG1hcmdpbi1ib3R0b206IDE1cHg7XHJcbiAgY29sb3I6ICMxNTFENDg7XHJcbiAgZm9udC1zaXplOiAxNHB4O1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG59XHJcblxyXG4ucmFkaW8tZ3JvdXAge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZ2FwOiAyMHB4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbn1cclxuXHJcbi5yYWRpby1pdGVtIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgZ2FwOiA2cHg7XHJcbn1cclxuXHJcbmlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XHJcbiAgd2lkdGg6IDE4cHg7XHJcbiAgaGVpZ2h0OiAxOHB4O1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBhY2NlbnQtY29sb3I6ICMzNDk4ZGI7XHJcbn1cclxuXHJcbi5yYWRpby1vcHRpb24tbGFiZWwge1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBtYXJnaW46IDA7XHJcbiAgZm9udC13ZWlnaHQ6IDQwMDtcclxufVxyXG5cclxuICAgIC5oaW50IHtcclxuICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICBjb2xvcjogIzdmOGM4ZDtcclxuICAgICAgbWFyZ2luLXRvcDogNHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5lcnJvci1tZXNzYWdlIHtcclxuICAgICAgY29sb3I6ICNlNzRjM2M7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgICAgbWFyZ2luLXRvcDogNHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5mb3JtLWFjdGlvbnMge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBnYXA6IDhweDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgICBnYXA6IDEycHg7XHJcbiAgICAgIHBhZGRpbmctdG9wOiA1cHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmJ0biB7XHJcbiAgICAgIHBhZGRpbmc6IDhweCAyMHB4O1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDdweDtcclxuICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xyXG4gICAgfVxyXG5cclxuICAgIC5idG4tcHJpbWFyeSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDZBRkY7XHJcbiAgICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgIH1cclxuXHJcbiAgICAuYnRuLXByaW1hcnk6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjk4MGI5O1xyXG4gICAgfVxyXG5cclxuICAgIC5idG4tcHJpbWFyeTpkaXNhYmxlZCB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNiZGMzYzc7XHJcbiAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLmJ0bi1zZWNvbmRhcnkge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTVhNWE2O1xyXG4gICAgICBjb2xvcjogd2hpdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLmJ0bi1zZWNvbmRhcnk6aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjN2Y4YzhkO1xyXG4gICAgfVxyXG5cclxuICAgIC5idG4tb3V0bGluZSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMzMDMwMzA7XHJcbiAgICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgIH1cclxuXHJcbiAgICAuYnRuLW91dGxpbmU6aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmIyYjJiZmY7XHJcbiAgICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgIH1cclxuXHJcbiAgICAubW9udGgteWVhci13cmFwcGVyIHtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAubW9udGgteWVhci13cmFwcGVyIC5mb3JtLWNvbnRyb2wge1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiA0NXB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5tb250aC1waWNrZXItaGlkZGVuIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBvcGFjaXR5OiAwO1xyXG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxuICAgICAgd2lkdGg6IDA7XHJcbiAgICAgIGhlaWdodDogMDtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICBwYWRkaW5nOiAwO1xyXG4gICAgICBtYXJnaW46IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLm1vbnRoLXBpY2tlci1idG4ge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHJpZ2h0OiA1cHg7XHJcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgcGFkZGluZzogNXB4O1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgY29sb3I6ICM2NjY7XHJcbiAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMnM7XHJcbiAgICAgIHotaW5kZXg6IDE7XHJcbiAgICB9XHJcblxyXG4gICAgLm1vbnRoLXBpY2tlci1idG46aG92ZXI6bm90KDpkaXNhYmxlZCkge1xyXG4gICAgICBjb2xvcjogIzM0OThkYjtcclxuICAgIH1cclxuXHJcbiAgICAubW9udGgtcGlja2VyLWJ0bjpkaXNhYmxlZCB7XHJcbiAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbiAgICAgIG9wYWNpdHk6IDAuNTtcclxuICAgIH1cclxuXHJcbiAgICAubW9udGgtcGlja2VyLWJ0biAubWF0ZXJpYWwtaWNvbnMge1xyXG4gICAgICBmb250LXNpemU6IDIwcHg7XHJcbiAgICAgIHdpZHRoOiBhdXRvO1xyXG4gICAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLnNlYXJjaC1zZWxlY3Qtd3JhcHBlciB7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgLnNlYXJjaC1zZWxlY3QtaW5wdXQge1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5zZWFyY2gtc2VsZWN0LWRyb3Bkb3duIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IGNhbGMoMTAwJSArIDRweCk7XHJcbiAgICAgIGxlZnQ6IDA7XHJcbiAgICAgIHJpZ2h0OiBhdXRvO1xyXG4gICAgICBtaW4td2lkdGg6IDEwMCU7XHJcbiAgICAgIG1heC13aWR0aDogY2FsYygxMDB2dyAtIDE2cHgpO1xyXG4gICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICAgICAgYm9yZGVyOiAxcHggc29saWQgI2QzZDNkMztcclxuICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gICAgICBtYXgtaGVpZ2h0OiAyMjBweDtcclxuICAgICAgb3ZlcmZsb3cteTogYXV0bztcclxuICAgICAgYm94LXNoYWRvdzogMCA0cHggMTBweCByZ2JhKDAsMCwwLDAuMDgpO1xyXG4gICAgICB6LWluZGV4OiA1O1xyXG4gICAgICBwYWRkaW5nOiA2cHggMDtcclxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xyXG4gICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xcyBlYXNlLW91dDtcclxuICAgIH1cclxuXHJcbiAgICAuc2VhcmNoLXNlbGVjdC1vcHRpb24ge1xyXG4gICAgICBwYWRkaW5nOiA4cHggMTJweDtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBnYXA6IDhweDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMmYyZjI7XHJcbiAgICB9XHJcblxyXG4gICAgLnNlYXJjaC1zZWxlY3Qtb3B0aW9uOmxhc3QtY2hpbGQge1xyXG4gICAgICBib3JkZXItYm90dG9tOiBub25lO1xyXG4gICAgfVxyXG5cclxuICAgIC5zZWFyY2gtc2VsZWN0LW9wdGlvbjpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQ6ICNmNWY5ZmY7XHJcbiAgICB9XHJcblxyXG4gICAgLm9wdGlvbi1jb2RlIHtcclxuICAgICAgY29sb3I6ICMwMDUyY2M7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgICAgIG1pbi13aWR0aDogOTBweDtcclxuICAgIH1cclxuXHJcbiAgICAub3B0aW9uLW5hbWUge1xyXG4gICAgICBjb2xvcjogIzE1MWQ0ODtcclxuICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICAgIH1cclxuXHJcbiAgICAudGltZS1waWNrZXItd3JhcHBlciB7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgLnRpbWUtaW5wdXQge1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiA0NXB4O1xyXG4gICAgICBmbGV4OiAxO1xyXG4gICAgfVxyXG5cclxuICAgIC50aW1lLXBpY2tlci1idG4ge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHJpZ2h0OiA1cHg7XHJcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgcGFkZGluZzogNXB4O1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgY29sb3I6ICM2NjY7XHJcbiAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMnM7XHJcbiAgICAgIHotaW5kZXg6IDE7XHJcbiAgICB9XHJcblxyXG4gICAgLnRpbWUtcGlja2VyLWJ0bjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XHJcbiAgICAgIGNvbG9yOiAjMzQ5OGRiO1xyXG4gICAgfVxyXG5cclxuICAgIC50aW1lLXBpY2tlci1idG46ZGlzYWJsZWQge1xyXG4gICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gICAgICBvcGFjaXR5OiAwLjU7XHJcbiAgICB9XHJcblxyXG4gICAgLnRpbWUtcGlja2VyLWJ0biAubWF0ZXJpYWwtaWNvbnMge1xyXG4gICAgICBmb250LXNpemU6IDIwcHg7XHJcbiAgICAgIHdpZHRoOiBhdXRvO1xyXG4gICAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICB9XHJcblxyXG4gICAgaW5wdXRbdHlwZT1cInRpbWVcIl0ge1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgaW5wdXRbdHlwZT1cInRpbWVcIl06Oi13ZWJraXQtY2FsZW5kYXItcGlja2VyLWluZGljYXRvciB7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgb3BhY2l0eTogMDtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICByaWdodDogMDtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIGhlaWdodDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQge1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQgOjpuZy1kZWVwIC5tYXQtbWRjLWZvcm0tZmllbGQge1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQgOjpuZy1kZWVwIC5tYXQtbWRjLXRleHQtZmllbGQtd3JhcHBlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XHJcbiAgICB9XHJcblxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkIC5tZGMtbm90Y2hlZC1vdXRsaW5lX19sZWFkaW5nLFxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkIC5tZGMtbm90Y2hlZC1vdXRsaW5lX19ub3RjaCxcclxuICAgIC5kYXRlLXBpY2tlci1maWVsZCA6Om5nLWRlZXAgLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZCAubWRjLW5vdGNoZWQtb3V0bGluZV9fdHJhaWxpbmcge1xyXG4gICAgICBib3JkZXItY29sb3I6ICM4Q0JCQTg7XHJcbiAgICB9XHJcblxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkOm5vdCgubWRjLXRleHQtZmllbGQtLWRpc2FibGVkKSAubWRjLW5vdGNoZWQtb3V0bGluZV9fbGVhZGluZyxcclxuICAgIC5kYXRlLXBpY2tlci1maWVsZCA6Om5nLWRlZXAgLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZDpub3QoLm1kYy10ZXh0LWZpZWxkLS1kaXNhYmxlZCkgLm1kYy1ub3RjaGVkLW91dGxpbmVfX25vdGNoLFxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkOm5vdCgubWRjLXRleHQtZmllbGQtLWRpc2FibGVkKSAubWRjLW5vdGNoZWQtb3V0bGluZV9fdHJhaWxpbmcge1xyXG4gICAgICBib3JkZXItY29sb3I6ICM4Q0JCQTg7XHJcbiAgICB9XHJcblxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkLm1kYy10ZXh0LWZpZWxkLS1mb2N1c2VkIC5tZGMtbm90Y2hlZC1vdXRsaW5lX19sZWFkaW5nLFxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkLm1kYy10ZXh0LWZpZWxkLS1mb2N1c2VkIC5tZGMtbm90Y2hlZC1vdXRsaW5lX19ub3RjaCxcclxuICAgIC5kYXRlLXBpY2tlci1maWVsZCA6Om5nLWRlZXAgLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZC5tZGMtdGV4dC1maWVsZC0tZm9jdXNlZCAubWRjLW5vdGNoZWQtb3V0bGluZV9fdHJhaWxpbmcge1xyXG4gICAgICBib3JkZXItY29sb3I6ICMzNDk4ZGI7XHJcbiAgICB9XHJcblxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkLmVycm9yLWJvcmRlciA6Om5nLWRlZXAgLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZCAubWRjLW5vdGNoZWQtb3V0bGluZV9fbGVhZGluZyxcclxuICAgIC5kYXRlLXBpY2tlci1maWVsZC5lcnJvci1ib3JkZXIgOjpuZy1kZWVwIC5tZGMtdGV4dC1maWVsZC0tb3V0bGluZWQgLm1kYy1ub3RjaGVkLW91dGxpbmVfX25vdGNoLFxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkLmVycm9yLWJvcmRlciA6Om5nLWRlZXAgLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZCAubWRjLW5vdGNoZWQtb3V0bGluZV9fdHJhaWxpbmcge1xyXG4gICAgICBib3JkZXItY29sb3I6IHJlZCAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG5cclxuICAgIC5kYXRlLXBpY2tlci1maWVsZCA6Om5nLWRlZXAgLm1hdC1tZGMtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlciB7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICB9XHJcblxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWF0LW1kYy1mb3JtLWZpZWxkLWlucHV0LWNvbnRyb2wgaW5wdXQge1xyXG4gICAgICBmb250LWZhbWlseTogXCJQb3BwaW5zXCIgIWltcG9ydGFudDtcclxuICAgICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgICBjb2xvcjogIzFmMmI0MTtcclxuICAgIH1cclxuICBgLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRkVXBkYXRlRm9ybUNvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dCgpIGNvbmZpZyE6IEZvcm1Db25maWc7XHJcbiAgQE91dHB1dCgpIHZhbGlkYXRpb25FcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIGZvcm0hOiBGb3JtR3JvdXA7XHJcbiAgc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBmaWxlUHJldmlld3M6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKCk7XHJcbiAgcHJpdmF0ZSBmaWxlTmFtZXM6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKCk7XHJcbiAgcHJpdmF0ZSB2YWx1ZUNoYW5nZVN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgcHJpdmF0ZSBwYXNzd29yZFZpc2liaWxpdHk6IE1hcDxzdHJpbmcsIGJvb2xlYW4+ID0gbmV3IE1hcCgpO1xyXG4gIHByaXZhdGUgc2VhcmNoUXVlcmllczogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgaG9zdFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm0oKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIC8vIExpZmVjeWNsZSBob29rIC0gY2FuIGJlIHVzZWQgZm9yIGRhdGVwaWNrZXIgaW5pdGlhbGl6YXRpb24gaWYgbmVlZGVkXHJcbiAgfVxyXG5cclxuICBnZXRDb2x1bW5XaWR0aChjb2x1bW46IEZvcm1Db2x1bW4pOiBzdHJpbmcge1xyXG4gICAgY29uc3QgbWF4Q29scyA9IHRoaXMuY29uZmlnLm1heENvbHNQZXJSb3cgfHwgNTtcclxuICAgIGNvbnN0IGNvbFNwYW4gPSBNYXRoLm1pbihjb2x1bW4uY29sU3BhbiB8fCAxLCBtYXhDb2xzKTtcclxuICAgIHJldHVybiBgY2FsYygkeyhjb2xTcGFuIC8gbWF4Q29scykgKiAxMDB9JSAtIDE2cHgpYDtcclxuICB9XHJcblxyXG4gIGdldENvbnRyb2wobmFtZTogc3RyaW5nKTogRm9ybUNvbnRyb2wge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQobmFtZSkgYXMgRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICAvLyAyLiBIRUxQRVI6IENvbnZlcnQgeW91ciBGaWVsZFZhbGlkYXRpb25bXSB0byB0aGUgbGlicmFyeSdzIFZhbGlkYXRpb25TY2hlbWFcclxuICBnZXRTY2hlbWEoY29sdW1uOiBGb3JtQ29sdW1uKTogVmFsaWRhdGlvblNjaGVtYSB7XHJcbiAgICBjb25zdCBydWxlczogVmFsaWRhdGlvblJ1bGVbXSA9IFtdO1xyXG4gICAgY29uc3QgZXJyb3JQcmlvcml0eTogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICBpZiAoY29sdW1uLnZhbGlkYXRpb25zKSB7XHJcbiAgICAgIGNvbHVtbi52YWxpZGF0aW9ucy5mb3JFYWNoKCh2KSA9PiB7XHJcbiAgICAgICAgc3dpdGNoICh2LnR5cGUpIHtcclxuICAgICAgICAgIGNhc2UgJ3JlcXVpcmVkJzpcclxuICAgICAgICAgICAgcnVsZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogJ3JlcXVpcmVkJyxcclxuICAgICAgICAgICAgICBwYXJhbXM6IHsgZW5hYmxlZDogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgIGVycm9yS2V5OiAnRVJSX1JFUVVJUkVEJyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGVycm9yUHJpb3JpdHkucHVzaCgncmVxdWlyZWQnKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdlbWFpbCc6XHJcbiAgICAgICAgICAgIHJ1bGVzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6ICdyZWdleCcsXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICBwYXR0ZXJuOiAnXlthLXpBLVowLTkuXyUrLV0rQFthLXpBLVowLTkuLV0rXFxcXC5bYS16QS1aXXsyLH0kJyxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGVycm9yS2V5OiAnRVJSX1JFR0VYX01JU01BVENIJyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGVycm9yUHJpb3JpdHkucHVzaCgncmVnZXgnKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdtaW5MZW5ndGgnOlxyXG4gICAgICAgICAgICBydWxlcy5wdXNoKHtcclxuICAgICAgICAgICAgICBuYW1lOiAnbWluTGVuZ3RoJyxcclxuICAgICAgICAgICAgICBwYXJhbXM6IHsgdmFsdWU6IHYudmFsdWUgfSxcclxuICAgICAgICAgICAgICBlcnJvcktleTogJ0VSUl9NSU5fTEVOR1RIJyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGVycm9yUHJpb3JpdHkucHVzaCgnbWluTGVuZ3RoJyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnbWF4TGVuZ3RoJzpcclxuICAgICAgICAgICAgcnVsZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogJ21heExlbmd0aCcsXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB7IHZhbHVlOiB2LnZhbHVlIH0sXHJcbiAgICAgICAgICAgICAgZXJyb3JLZXk6ICdFUlJfTUFYX0xFTkdUSCcsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBlcnJvclByaW9yaXR5LnB1c2goJ21heExlbmd0aCcpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ3BhdHRlcm4nOlxyXG4gICAgICAgICAgICBydWxlcy5wdXNoKHtcclxuICAgICAgICAgICAgICBuYW1lOiAncmVnZXgnLFxyXG4gICAgICAgICAgICAgIHBhcmFtczogeyBwYXR0ZXJuOiB2LnZhbHVlIH0sXHJcbiAgICAgICAgICAgICAgZXJyb3JLZXk6ICdFUlJfUkVHRVhfTUlTTUFUQ0gnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZXJyb3JQcmlvcml0eS5wdXNoKCdyZWdleCcpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ3Bhc3N3b3JkQ29tcGxleGl0eSc6XHJcbiAgICAgICAgICAgIHJ1bGVzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6ICdwYXNzd29yZENvbXBsZXhpdHknLFxyXG4gICAgICAgICAgICAgIHBhcmFtczogdi5wYXJhbXMgfHwge1xyXG4gICAgICAgICAgICAgICAgcmVxdWlyZVVwcGVyY2FzZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVMb3dlcmNhc2U6IHRydWUsXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlTnVtYmVyOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZVNwZWNpYWxDaGFyOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgbWluTGVuZ3RoOiA4XHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBlcnJvcktleTogdi5lcnJvcktleSB8fCAnRVJSX1BBU1NXT1JEX0NPTVBMRVhJVFlfSU5WQUxJRCcsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBlcnJvclByaW9yaXR5LnB1c2goJ3Bhc3N3b3JkQ29tcGxleGl0eScpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ21pbic6XHJcbiAgICAgICAgICAgIHJ1bGVzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6ICdtaW4nLFxyXG4gICAgICAgICAgICAgIHBhcmFtczogeyB2YWx1ZTogdi52YWx1ZSB9LFxyXG4gICAgICAgICAgICAgIGVycm9yS2V5OiAnRVJSX01JTl9WQUxVRScsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBlcnJvclByaW9yaXR5LnB1c2goJ21pbicpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ21heCc6XHJcbiAgICAgICAgICAgIHJ1bGVzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6ICdtYXgnLFxyXG4gICAgICAgICAgICAgIHBhcmFtczogeyB2YWx1ZTogdi52YWx1ZSB9LFxyXG4gICAgICAgICAgICAgIGVycm9yS2V5OiAnRVJSX01BWF9WQUxVRScsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBlcnJvclByaW9yaXR5LnB1c2goJ21heCcpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIE1hcCAnbmFtZS1jb2RlJyB0byAnRHJvcGRvd24nIG9yIHNpbWlsYXIgZm9yIHZhbGlkYXRpb24gc2NoZW1hIHB1cnBvc2VzIGlmIG5lZWRlZFxyXG4gICAgbGV0IGNvbnRyb2xUeXBlID0gY29sdW1uLnR5cGU7XHJcbiAgICBpZiAoY29sdW1uLnR5cGUgPT09ICduYW1lLWNvZGUnKSB7XHJcbiAgICAgIGNvbnRyb2xUeXBlID0gJ3NlbGVjdCc7IC8vIFRyZWF0IGFzIHNlbGVjdCBmb3Igc2NoZW1hIGxvb2t1cCBpZiBsaWJyYXJ5IGV4cGVjdHMgJ3NlbGVjdCcgb3IgJ0Ryb3Bkb3duJ1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIGNvbnRyb2xUeXBlOiBjb250cm9sVHlwZSxcclxuICAgICAgZXJyb3JQcmlvcml0eTogZXJyb3JQcmlvcml0eSxcclxuICAgICAgcnVsZXM6IHJ1bGVzLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGlzSW1hZ2VGaWVsZChjb2x1bW46IEZvcm1Db2x1bW4pOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIGNvbHVtbi50eXBlID09PSAnZmlsZScgJiZcclxuICAgICAgKGNvbHVtbi5hY2NlcHQ/LnN0YXJ0c1dpdGgoJ2ltYWdlJykgfHwgY29sdW1uLmZpbGVQcmV2aWV3ID09PSB0cnVlKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGluaXRpYWxpemVGb3JtKCkge1xyXG4gICAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcclxuICAgIGNvbnN0IGZvcm1Hcm91cENvbmZpZzogYW55ID0ge307XHJcblxyXG4gICAgdGhpcy5jb25maWcuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgICAgICBsZXQgaW5pdGlhbFZhbHVlID0gY29sdW1uLnZhbHVlIHx8ICcnO1xyXG5cclxuICAgICAgICAvLyBGb3JtYXQgbW9udGgteWVhciBmaWVsZHMgdG8gWVlZWS1NTSBmb3JtYXRcclxuICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdtb250aC15ZWFyJyAmJiBpbml0aWFsVmFsdWUpIHtcclxuICAgICAgICAgIGluaXRpYWxWYWx1ZSA9IHRoaXMuZm9ybWF0TW9udGhZZWFyVmFsdWUoaW5pdGlhbFZhbHVlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZvcm1Hcm91cENvbmZpZ1tjb2x1bW4ubmFtZV0gPSBbXHJcbiAgICAgICAgICB7IHZhbHVlOiBpbml0aWFsVmFsdWUsIGRpc2FibGVkOiBjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2UgfSxcclxuICAgICAgICAgIG51bGwsIC8vIFdlJ2xsIHNldCB2YWxpZGF0b3JzIGFmdGVyIGZvcm0gY3JlYXRpb25cclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICAvLyBJZiBpdCdzIGEgZmlsZSBmaWVsZCB3aXRoIGFuIGV4aXN0aW5nIHZhbHVlLCBzZXQgdGhlIHByZXZpZXdcclxuICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdmaWxlJyAmJiBjb2x1bW4udmFsdWUpIHtcclxuICAgICAgICAgIHRoaXMuZmlsZVByZXZpZXdzLnNldChjb2x1bW4ubmFtZSwgY29sdW1uLnZhbHVlKTtcclxuICAgICAgICAgIC8vIEV4dHJhY3QgZmlsZW5hbWUgZnJvbSBVUkwgb3IgYmFzZTY0XHJcbiAgICAgICAgICBjb25zdCBmaWxlTmFtZSA9IHRoaXMuZXh0cmFjdEZpbGVOYW1lKGNvbHVtbi52YWx1ZSk7XHJcbiAgICAgICAgICBpZiAoZmlsZU5hbWUpIHtcclxuICAgICAgICAgICAgdGhpcy5maWxlTmFtZXMuc2V0KGNvbHVtbi5uYW1lLCBmaWxlTmFtZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBJbml0aWFsaXplIHNlYXJjaCBkaXNwbGF5IGZvciBuYW1lLWNvZGUgZmllbGRzIC0gTm8gbG9uZ2VyIG5lZWRlZCBhcyBGdk5hbWVDb2RlIGhhbmRsZXMgZGlzcGxheSBpbnRlcm5hbGx5XHJcbiAgICAgICAgLyogaWYgKGNvbHVtbi50eXBlID09PSAnbmFtZS1jb2RlJyAmJiBpbml0aWFsVmFsdWUgJiYgY29sdW1uLm9wdGlvbnMpIHtcclxuICAgICAgICAgICAgIC8vIExvZ2ljIG1vdmVkIHRvIGNvbXBvbmVudFxyXG4gICAgICAgIH0gKi9cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKGZvcm1Hcm91cENvbmZpZyk7XHJcblxyXG4gICAgdGhpcy5jb25maWcuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gdGhpcy5idWlsZFZhbGlkYXRvcnMoY29sdW1uLnZhbGlkYXRpb25zLCB0aGlzLmZvcm0pO1xyXG4gICAgICAgIGlmICh2YWxpZGF0b3JzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHRoaXMuZm9ybS5nZXQoY29sdW1uLm5hbWUpPy5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xyXG4gICAgICAgICAgdGhpcy5mb3JtLmdldChjb2x1bW4ubmFtZSk/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZhbHVlIGNoYW5nZXMgZm9yIGFsbCBmaWVsZHMgdG8gdHJpZ2dlciBvbkNoYW5nZSBoYW5kbGVyc1xyXG4gICAgT2JqZWN0LmtleXModGhpcy5mb3JtLmNvbnRyb2xzKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5nZXQoa2V5KTtcclxuICAgICAgaWYgKGNvbnRyb2wpIHtcclxuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBjb250cm9sLnZhbHVlQ2hhbmdlc1xyXG4gICAgICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuZ2V0Q29sdW1uQnlOYW1lKGtleSk7XHJcbiAgICAgICAgICAgIGlmIChjb2x1bW4/Lm9uQ2hhbmdlKSB7XHJcbiAgICAgICAgICAgICAgY29sdW1uLm9uQ2hhbmdlKHZhbHVlLCB0aGlzLmZvcm0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAvLyBDbGVhbiB1cCBhbGwgc3Vic2NyaXB0aW9ucyB0byBwcmV2ZW50IG1lbW9yeSBsZWFrc1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZVN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc3ViKSA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9ucyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRmllbGRDaGFuZ2UoZmllbGROYW1lOiBzdHJpbmcsIGV2ZW50VmFsdWU/OiBhbnkpIHtcclxuICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuZ2V0Q29sdW1uQnlOYW1lKGZpZWxkTmFtZSk7XHJcbiAgICBjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMuZm9ybS5nZXQoZmllbGROYW1lKTtcclxuXHJcbiAgICAvLyBGb3JtYXQgbW9udGgteWVhciBmaWVsZHMgKGVzcGVjaWFsbHkgZXhwaXJ5RGF0ZSkgdG8gWVlZWS1NTVxyXG4gICAgaWYgKGNvbHVtbj8udHlwZSA9PT0gJ21vbnRoLXllYXInICYmIGV2ZW50VmFsdWUpIHtcclxuICAgICAgY29uc3QgZm9ybWF0dGVkVmFsdWUgPSB0aGlzLmZvcm1hdE1vbnRoWWVhclZhbHVlKGV2ZW50VmFsdWUpO1xyXG4gICAgICBpZiAoZm9ybUNvbnRyb2wgJiYgZm9ybWF0dGVkVmFsdWUgIT09IGV2ZW50VmFsdWUpIHtcclxuICAgICAgICBmb3JtQ29udHJvbC5zZXRWYWx1ZShmb3JtYXR0ZWRWYWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgIGV2ZW50VmFsdWUgPSBmb3JtYXR0ZWRWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChjb2x1bW4/Lm9uQ2hhbmdlKSB7XHJcbiAgICAgIC8vIFVzZSB0aGUgZXZlbnQgdmFsdWUgZGlyZWN0bHkgKHdoYXQgdGhlIHVzZXIganVzdCBzZWxlY3RlZC90eXBlZClcclxuICAgICAgLy8gVGhpcyBlbnN1cmVzIHdlIGhhdmUgdGhlIGNvcnJlY3QgdmFsdWUgZXZlbiBpZiBmb3JtIGNvbnRyb2wgaGFzbid0IHVwZGF0ZWQgeWV0XHJcbiAgICAgIGNvbnN0IHZhbHVlVG9QYXNzID1cclxuICAgICAgICBldmVudFZhbHVlICE9PSB1bmRlZmluZWQgPyBldmVudFZhbHVlIDogdGhpcy5mb3JtLmdldChmaWVsZE5hbWUpPy52YWx1ZTtcclxuICAgICAgY29uc3Qgb25DaGFuZ2VGbiA9IGNvbHVtbi5vbkNoYW5nZTsgLy8gU3RvcmUgdGhlIGZ1bmN0aW9uIHJlZmVyZW5jZVxyXG5cclxuICAgICAgLy8gU3RvcmUgdGhlIHNlbGVjdGVkIHZhbHVlIC0gdGhpcyBpcyB3aGF0IHRoZSB1c2VyIGNob3NlXHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkVmFsdWUgPSB2YWx1ZVRvUGFzcztcclxuXHJcbiAgICAgIC8vIEVuc3VyZSB0aGUgZm9ybSBjb250cm9sIGhhcyB0aGUgc2VsZWN0ZWQgdmFsdWUgYmVmb3JlIGNhbGxpbmcgb25DaGFuZ2VcclxuICAgICAgaWYgKGZvcm1Db250cm9sICYmIHNlbGVjdGVkVmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGlmIChmb3JtQ29udHJvbC52YWx1ZSAhPT0gc2VsZWN0ZWRWYWx1ZSkge1xyXG4gICAgICAgICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUoc2VsZWN0ZWRWYWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gQ2FsbCBvbkNoYW5nZSB3aXRoIHRoZSBzZWxlY3RlZCB2YWx1ZVxyXG4gICAgICBpZiAob25DaGFuZ2VGbikge1xyXG4gICAgICAgIG9uQ2hhbmdlRm4oc2VsZWN0ZWRWYWx1ZSwgdGhpcy5mb3JtKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gUmVzdG9yZSB0aGUgdmFsdWUgZm9yIHRoZSBmaWVsZCB0aGF0IHRyaWdnZXJlZCB0aGUgY2hhbmdlIGlmIGl0IHdhcyBjbGVhcmVkIGJ5IG9uQ2hhbmdlXHJcbiAgICAgIC8vIFRoaXMgaXMgY3JpdGljYWw6IGlmIG9uQ2hhbmdlIGNsZWFycyB0aGUgZmllbGQgdGhhdCB3YXMganVzdCBjaGFuZ2VkLCB3ZSByZXN0b3JlIGl0XHJcbiAgICAgIC8vIE9ubHkgcmVzdG9yZSBpZiB3ZSBoYWQgYSBub24tZW1wdHkgdmFsdWUgKGVtcHR5IHN0cmluZywgbnVsbCwgdW5kZWZpbmVkIGFyZSBub3QgcmVzdG9yZWQpXHJcbiAgICAgIGlmIChcclxuICAgICAgICBmb3JtQ29udHJvbCAmJlxyXG4gICAgICAgIHNlbGVjdGVkVmFsdWUgIT09IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgIHNlbGVjdGVkVmFsdWUgIT09IG51bGwgJiZcclxuICAgICAgICBzZWxlY3RlZFZhbHVlICE9PSAnJ1xyXG4gICAgICApIHtcclxuICAgICAgICAvLyBVc2Ugc2V0VGltZW91dCB3aXRoIDAgZGVsYXkgdG8gcnVuIGFmdGVyIGFueSBzeW5jaHJvbm91cyBvcGVyYXRpb25zIGluIG9uQ2hhbmdlXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgdmFsdWUgd2FzIGNsZWFyZWQgb3IgY2hhbmdlZFxyXG4gICAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gZm9ybUNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgICAvLyBJZiB0aGUgdmFsdWUgZG9lc24ndCBtYXRjaCB3aGF0IHdhcyBzZWxlY3RlZCwgcmVzdG9yZSBpdFxyXG4gICAgICAgICAgLy8gVGhpcyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlIG9uQ2hhbmdlIGNsZWFyZWQgdGhlIGZpZWxkIHVuaW50ZW50aW9uYWxseVxyXG4gICAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZSAhPT0gc2VsZWN0ZWRWYWx1ZSkge1xyXG4gICAgICAgICAgICBmb3JtQ29udHJvbC5zZXRWYWx1ZShzZWxlY3RlZFZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgMCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZvcm1hdE1vbnRoWWVhclZhbHVlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIHZhbHVlO1xyXG4gICAgLy8gTm9ybWFsaXplIHRvIFlZWVktTU1cclxuICAgIGlmICh2YWx1ZS5tYXRjaCgvXlxcZHsyfS1cXGR7NH0kLykpIHtcclxuICAgICAgY29uc3QgW21vbnRoLCB5ZWFyXSA9IHZhbHVlLnNwbGl0KCctJyk7XHJcbiAgICAgIHJldHVybiBgJHt5ZWFyfS0ke21vbnRofWA7XHJcbiAgICB9XHJcbiAgICAvLyBJZiBhbHJlYWR5IGluIFlZWVktTU0gZm9ybWF0LCByZXR1cm4gYXMgaXNcclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHBhcnNlTW9udGhZZWFyVmFsdWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gdmFsdWU7XHJcbiAgICAvLyBEaXNwbGF5IGFuZCBwaWNrZXIgYm90aCB1c2UgWVlZWS1NTTsgbm9ybWFsaXplIE1NLVlZWVkgaWYgcHJlc2VudFxyXG4gICAgaWYgKHZhbHVlLm1hdGNoKC9eXFxkezJ9LVxcZHs0fSQvKSkge1xyXG4gICAgICBjb25zdCBbbW9udGgsIHllYXJdID0gdmFsdWUuc3BsaXQoJy0nKTtcclxuICAgICAgcmV0dXJuIGAke3llYXJ9LSR7bW9udGh9YDtcclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcblxyXG4gIGhhbmRsZU1vbnRoWWVhckNoYW5nZShmaWVsZE5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xyXG4gICAgLy8gRm9ybWF0IHRoZSBpbnB1dCB2YWx1ZSB0byBZWVlZLU1NIGZvcm1hdFxyXG4gICAgbGV0IGZvcm1hdHRlZFZhbHVlID0gdmFsdWU7XHJcblxyXG4gICAgLy8gSWYgaXQncyBpbiBNTS1ZWVlZIGZvcm1hdCwgY29udmVydCB0byBZWVlZLU1NXHJcbiAgICBpZiAoZm9ybWF0dGVkVmFsdWUubWF0Y2goL15cXGR7Mn0tXFxkezR9JC8pKSB7XHJcbiAgICAgIGNvbnN0IFttb250aCwgeWVhcl0gPSBmb3JtYXR0ZWRWYWx1ZS5zcGxpdCgnLScpO1xyXG4gICAgICBmb3JtYXR0ZWRWYWx1ZSA9IGAke3llYXJ9LSR7bW9udGh9YDtcclxuICAgIH1cclxuICAgIC8vIElmIGl0J3MgaW4gWVlZWU1NIGZvcm1hdCAobm8gZGFzaCksIGNvbnZlcnQgdG8gWVlZWS1NTVxyXG4gICAgZWxzZSBpZiAoZm9ybWF0dGVkVmFsdWUubWF0Y2goL15cXGR7Nn0kLykpIHtcclxuICAgICAgY29uc3QgeWVhciA9IGZvcm1hdHRlZFZhbHVlLnN1YnN0cmluZygwLCA0KTtcclxuICAgICAgY29uc3QgbW9udGggPSBmb3JtYXR0ZWRWYWx1ZS5zdWJzdHJpbmcoNCwgNik7XHJcbiAgICAgIGZvcm1hdHRlZFZhbHVlID0gYCR7eWVhcn0tJHttb250aH1gO1xyXG4gICAgfVxyXG4gICAgLy8gSWYgaXQncyBhbHJlYWR5IGluIFlZWVktTU0gZm9ybWF0LCBsZWF2ZSBhcyBpc1xyXG4gICAgZWxzZSBpZiAoZm9ybWF0dGVkVmFsdWUubWF0Y2goL15cXGR7NH0tXFxkezJ9JC8pKSB7XHJcbiAgICAgIC8vIEFscmVhZHkgaW4gY29ycmVjdCBmb3JtYXRcclxuICAgIH1cclxuICAgIC8vIElmIHVzZXIgaXMgdHlwaW5nLCBhbGxvdyBwYXJ0aWFsIGlucHV0XHJcbiAgICBlbHNlIGlmIChmb3JtYXR0ZWRWYWx1ZS5tYXRjaCgvXlxcZHsxLDZ9JC8pKSB7XHJcbiAgICAgIC8vIEFsbG93IHBhcnRpYWwgaW5wdXQgd2hpbGUgdHlwaW5nXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk7XHJcbiAgICBpZiAoZm9ybUNvbnRyb2wgJiYgZm9ybWF0dGVkVmFsdWUgIT09IHZhbHVlKSB7XHJcbiAgICAgIGZvcm1Db250cm9sLnNldFZhbHVlKGZvcm1hdHRlZFZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5oYW5kbGVGaWVsZENoYW5nZShmaWVsZE5hbWUsIGZvcm1hdHRlZFZhbHVlKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZU1vbnRoWWVhckJsdXIoZmllbGROYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5mb3JtLmdldChmaWVsZE5hbWUpO1xyXG4gICAgaWYgKCFmb3JtQ29udHJvbCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHZhbHVlID0gZm9ybUNvbnRyb2wudmFsdWUgfHwgJyc7XHJcbiAgICAvLyBFbnN1cmUgdGhlIHZhbHVlIGlzIGluIFlZWVktTU0gZm9ybWF0IG9uIGJsdXJcclxuICAgIGlmICh2YWx1ZSAmJiAhdmFsdWUubWF0Y2goL15cXGR7NH0tXFxkezJ9JC8pKSB7XHJcbiAgICAgIC8vIFRyeSB0byBwYXJzZSBhbmQgZm9ybWF0XHJcbiAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IHRoaXMuZm9ybWF0TW9udGhZZWFyVmFsdWUodmFsdWUpO1xyXG4gICAgICBpZiAoZm9ybWF0dGVkICE9PSB2YWx1ZSkge1xyXG4gICAgICAgIGZvcm1Db250cm9sLnNldFZhbHVlKGZvcm1hdHRlZCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVNb250aFllYXJQaWNrZXJDaGFuZ2UoZmllbGROYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIC8vIE1vbnRoIHBpY2tlciBvdXRwdXRzIFlZWVktTU07IGp1c3Qgbm9ybWFsaXplXHJcbiAgICBjb25zdCBmb3JtYXR0ZWRWYWx1ZSA9IHRoaXMuZm9ybWF0TW9udGhZZWFyVmFsdWUodmFsdWUpO1xyXG4gICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk7XHJcbiAgICBpZiAoZm9ybUNvbnRyb2wpIHtcclxuICAgICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUoZm9ybWF0dGVkVmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgdGhpcy5oYW5kbGVGaWVsZENoYW5nZShmaWVsZE5hbWUsIGZvcm1hdHRlZFZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldE1vbnRoWWVhclBpY2tlclZhbHVlKGZpZWxkTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5mb3JtLmdldChmaWVsZE5hbWUpO1xyXG4gICAgaWYgKCFmb3JtQ29udHJvbCkgcmV0dXJuICcnO1xyXG4gICAgY29uc3QgdmFsdWUgPSBmb3JtQ29udHJvbC52YWx1ZSB8fCAnJztcclxuICAgIC8vIERpc3BsYXkgYW5kIHBpY2tlciBib3RoIGV4cGVjdCBZWVlZLU1NXHJcbiAgICByZXR1cm4gdGhpcy5wYXJzZU1vbnRoWWVhclZhbHVlKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIG9wZW5Nb250aFBpY2tlcihmaWVsZE5hbWU6IHN0cmluZykge1xyXG4gICAgY29uc3QgbW9udGhJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxyXG4gICAgICBmaWVsZE5hbWUgKyAnX3BpY2tlcidcclxuICAgICkgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGlmIChtb250aElucHV0ICYmIG1vbnRoSW5wdXQudHlwZSA9PT0gJ21vbnRoJykge1xyXG4gICAgICAvLyBVcGRhdGUgdGhlIHBpY2tlciB2YWx1ZSBiZWZvcmUgb3BlbmluZ1xyXG4gICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLmdldE1vbnRoWWVhclBpY2tlclZhbHVlKGZpZWxkTmFtZSk7XHJcbiAgICAgIGlmIChjdXJyZW50VmFsdWUpIHtcclxuICAgICAgICBtb250aElucHV0LnZhbHVlID0gY3VycmVudFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIFRyeSBtb2Rlcm4gc2hvd1BpY2tlciBBUEkgZmlyc3QsIGZhbGxiYWNrIHRvIGNsaWNrXHJcbiAgICAgIGlmIChtb250aElucHV0LnNob3dQaWNrZXIpIHtcclxuICAgICAgICBtb250aElucHV0LnNob3dQaWNrZXIoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBtb250aElucHV0LmZvY3VzKCk7XHJcbiAgICAgICAgbW9udGhJbnB1dC5jbGljaygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDb2x1bW5CeU5hbWUobmFtZTogc3RyaW5nKTogRm9ybUNvbHVtbiB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWcuc2VjdGlvbnNcclxuICAgICAgLmZsYXRNYXAoKHMpID0+IHMuZmllbGRzKVxyXG4gICAgICAuZmluZCgoYykgPT4gYy5uYW1lID09PSBuYW1lKTtcclxuICB9XHJcblxyXG4gIGdldEZpbGVGaWVsZHMoZmllbGRzOiBGb3JtQ29sdW1uW10pOiBGb3JtQ29sdW1uW10ge1xyXG4gICAgcmV0dXJuIGZpZWxkcy5maWx0ZXIoKGYpID0+IGYudHlwZSA9PT0gJ2ZpbGUnKTtcclxuICB9XHJcblxyXG4gIGdldE5vbkZpbGVGaWVsZHMoZmllbGRzOiBGb3JtQ29sdW1uW10pOiBGb3JtQ29sdW1uW10ge1xyXG4gICAgcmV0dXJuIGZpZWxkcy5maWx0ZXIoKGYpID0+IGYudHlwZSAhPT0gJ2ZpbGUnKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZVBhc3N3b3JkVmlzaWJpbGl0eShmaWVsZE5hbWU6IHN0cmluZykge1xyXG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMucGFzc3dvcmRWaXNpYmlsaXR5LmdldChmaWVsZE5hbWUpIHx8IGZhbHNlO1xyXG4gICAgdGhpcy5wYXNzd29yZFZpc2liaWxpdHkuc2V0KGZpZWxkTmFtZSwgIWN1cnJlbnQpO1xyXG4gIH1cclxuICBoYXNSZXF1aXJlZFZhbGlkYXRpb24oY29sdW1uOiBGb3JtQ29sdW1uKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gY29sdW1uLnZhbGlkYXRpb25zPy5zb21lKCh2KSA9PiB2LnR5cGUgPT09ICdyZXF1aXJlZCcpIHx8IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgaXNQYXNzd29yZFZpc2libGUoZmllbGROYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnBhc3N3b3JkVmlzaWJpbGl0eS5nZXQoZmllbGROYW1lKSB8fCBmYWxzZTtcclxuICB9XHJcblxyXG4gIGJ1aWxkVmFsaWRhdG9ycyhcclxuICAgIHZhbGlkYXRpb25zPzogRmllbGRWYWxpZGF0aW9uW10sXHJcbiAgICBmb3JtR3JvdXA/OiBGb3JtR3JvdXBcclxuICApOiBhbnlbXSB7XHJcbiAgICBpZiAoIXZhbGlkYXRpb25zKSByZXR1cm4gW107XHJcblxyXG4gICAgY29uc3QgdmFsaWRhdG9yczogYW55W10gPSBbXTtcclxuICAgIHZhbGlkYXRpb25zLmZvckVhY2goKHZhbGlkYXRpb24pID0+IHtcclxuICAgICAgc3dpdGNoICh2YWxpZGF0aW9uLnR5cGUpIHtcclxuICAgICAgICBjYXNlICdyZXF1aXJlZCc6XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdlbWFpbCc6XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5lbWFpbCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdtaW5MZW5ndGgnOlxyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHZhbGlkYXRpb24udmFsdWUpKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ21heExlbmd0aCc6XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgodmFsaWRhdGlvbi52YWx1ZSkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnbWluJzpcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbih2YWxpZGF0aW9uLnZhbHVlKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdtYXgnOlxyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4KHZhbGlkYXRpb24udmFsdWUpKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3BhdHRlcm4nOlxyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucGF0dGVybih2YWxpZGF0aW9uLnZhbHVlKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdjdXN0b20nOlxyXG4gICAgICAgICAgaWYgKHZhbGlkYXRpb24udmFsaWRhdG9yKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaCgoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgaXNWYWxpZCA9IHZhbGlkYXRpb24udmFsaWRhdG9yIShjb250cm9sLnZhbHVlLCBmb3JtR3JvdXApO1xyXG4gICAgICAgICAgICAgIHJldHVybiBpc1ZhbGlkID8gbnVsbCA6IHsgY3VzdG9tOiB0cnVlIH07XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHZhbGlkYXRvcnM7XHJcbiAgfVxyXG5cclxuICB0cmlnZ2VyRmlsZVVwbG9hZChmaWVsZE5hbWU6IHN0cmluZykge1xyXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpbGVJbnB1dF8nICsgZmllbGROYW1lKT8uY2xpY2soKTtcclxuICB9XHJcblxyXG4gIG9wZW5UaW1lUGlja2VyKGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB0aW1lSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChmaWVsZE5hbWUpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBpZiAodGltZUlucHV0ICYmIHRpbWVJbnB1dC50eXBlID09PSAndGltZScpIHtcclxuICAgICAgLy8gVHJ5IG1vZGVybiBzaG93UGlja2VyIEFQSSBmaXJzdCwgZmFsbGJhY2sgdG8gY2xpY2tcclxuICAgICAgaWYgKHRpbWVJbnB1dC5zaG93UGlja2VyKSB7XHJcbiAgICAgICAgdGltZUlucHV0LnNob3dQaWNrZXIoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aW1lSW5wdXQuZm9jdXMoKTtcclxuICAgICAgICB0aW1lSW5wdXQuY2xpY2soKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25GaWxlQ2hhbmdlKGV2ZW50OiBhbnksIGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBmaWxlOiBGaWxlID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdO1xyXG4gICAgaWYgKGZpbGUpIHtcclxuICAgICAgdGhpcy5maWxlTmFtZXMuc2V0KGZpZWxkTmFtZSwgZmlsZS5uYW1lKTtcclxuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgYmFzZTY0U3RyaW5nID0gcmVhZGVyLnJlc3VsdCBhcyBzdHJpbmc7XHJcbiAgICAgICAgdGhpcy5maWxlUHJldmlld3Muc2V0KGZpZWxkTmFtZSwgYmFzZTY0U3RyaW5nKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk/LnNldFZhbHVlKGJhc2U2NFN0cmluZyk7XHJcblxyXG4gICAgICAgIC8vIFRyaWdnZXIgb25DaGFuZ2UgaGFuZGxlciBmb3IgZmlsZSBmaWVsZHNcclxuICAgICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmdldENvbHVtbkJ5TmFtZShmaWVsZE5hbWUpO1xyXG4gICAgICAgIGlmIChjb2x1bW4/Lm9uQ2hhbmdlKSB7XHJcbiAgICAgICAgICBjb2x1bW4ub25DaGFuZ2UoYmFzZTY0U3RyaW5nLCB0aGlzLmZvcm0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4dHJhY3RGaWxlTmFtZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghdmFsdWUpIHJldHVybiAnJztcclxuXHJcbiAgICAvLyBJZiBpdCdzIGEgVVJMLCBleHRyYWN0IGZpbGVuYW1lIGZyb20gVVJMXHJcbiAgICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnaHR0cCcpKSB7XHJcbiAgICAgIGNvbnN0IHBhcnRzID0gdmFsdWUuc3BsaXQoJy8nKTtcclxuICAgICAgcmV0dXJuIHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIElmIGl0J3MgYmFzZTY0LCByZXR1cm4gYSBnZW5lcmljIG5hbWVcclxuICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKGBkYXRhOmltYWdlYCkpIHtcclxuICAgICAgcmV0dXJuICd1cGxvYWRlZC1pbWFnZS5qcGcnO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAnZXhpc3RpbmctcGhvdG8uanBnJztcclxuICB9XHJcblxyXG4gIGdldEZpbGVQcmV2aWV3KGZpZWxkTmFtZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5maWxlUHJldmlld3MuZ2V0KGZpZWxkTmFtZSkgfHwgbnVsbDtcclxuICB9XHJcblxyXG4gIGdldEZpbGVOYW1lKGZpZWxkTmFtZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5maWxlTmFtZXMuZ2V0KGZpZWxkTmFtZSkgfHwgbnVsbDtcclxuICB9XHJcblxyXG4gIG1hcFNlYXJjaE9wdGlvbnMob3B0aW9uczogYW55W10pOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gb3B0aW9ucy5tYXAob3B0ID0+ICh7XHJcbiAgICAgIGNvZGU6IG9wdC5jb2RlIHx8IG9wdC52YWx1ZSxcclxuICAgICAgbmFtZTogb3B0Lm5hbWUgfHwgb3B0LmxhYmVsIHx8IG9wdC52YWx1ZSxcclxuICAgICAgdmFsdWU6IG9wdC52YWx1ZVxyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcblxyXG4gIGRlbGV0ZUZpbGUoZmllbGROYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZmlsZVByZXZpZXdzLmRlbGV0ZShmaWVsZE5hbWUpO1xyXG4gICAgdGhpcy5maWxlTmFtZXMuZGVsZXRlKGZpZWxkTmFtZSk7XHJcbiAgICB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk/LnNldFZhbHVlKCcnKTtcclxuXHJcbiAgICAvLyBUcmlnZ2VyIG9uQ2hhbmdlIGhhbmRsZXIgd2hlbiBmaWxlIGlzIGRlbGV0ZWRcclxuICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuZ2V0Q29sdW1uQnlOYW1lKGZpZWxkTmFtZSk7XHJcbiAgICBpZiAoY29sdW1uPy5vbkNoYW5nZSkge1xyXG4gICAgICBjb2x1bW4ub25DaGFuZ2UoJycsIHRoaXMuZm9ybSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVTdWJtaXQoKSB7XHJcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XHJcbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHtcclxuICAgICAgLy8gTWFyayBhbGwgZmllbGRzIGFzIHRvdWNoZWQgdG8gc2hvdyByZWQgYm9yZGVyc1xyXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmZvcm0uY29udHJvbHMpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoa2V5KT8ubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIC8vIENvdW50IG9ubHkgcmVxdWlyZWQgZmllbGRzIHRoYXQgYXJlIGludmFsaWRcclxuICAgICAgY29uc3QgYWxsQ29sdW1ucyA9IHRoaXMuY29uZmlnLnNlY3Rpb25zLmZsYXRNYXAoKHMpID0+IHMuZmllbGRzKTtcclxuICAgICAgY29uc3QgaW52YWxpZFJlcXVpcmVkQ291bnQgPSBPYmplY3Qua2V5cyh0aGlzLmZvcm0uY29udHJvbHMpLmZpbHRlcihcclxuICAgICAgICAoa2V5KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldChrZXkpO1xyXG4gICAgICAgICAgaWYgKCFjb250cm9sPy5pbnZhbGlkKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBmaWVsZCBoYXMgcmVxdWlyZWQgdmFsaWRhdGlvblxyXG4gICAgICAgICAgY29uc3QgY29sdW1uID0gYWxsQ29sdW1ucy5maW5kKChjKSA9PiBjLm5hbWUgPT09IGtleSk7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICBjb2x1bW4/LnZhbGlkYXRpb25zPy5zb21lKCh2KSA9PiB2LnR5cGUgPT09ICdyZXF1aXJlZCcpIHx8IGZhbHNlXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgKS5sZW5ndGg7XHJcblxyXG4gICAgICAvLyBPbmx5IGVtaXQgaWYgdGhlcmUgYXJlIHJlcXVpcmVkIGZpZWxkcyBtaXNzaW5nXHJcbiAgICAgIGlmIChpbnZhbGlkUmVxdWlyZWRDb3VudCA+IDApIHtcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvci5lbWl0KFxyXG4gICAgICAgICAgYFBsZWFzZSBmaWxsIGFsbCByZXF1aXJlZCBmaWVsZHMgbWFya2VkIHdpdGggKi4gJHtpbnZhbGlkUmVxdWlyZWRDb3VudH0gZmllbGQocykgbmVlZCBhdHRlbnRpb24uYFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZvcm1EYXRhID0gdGhpcy5mb3JtLmdldFJhd1ZhbHVlKCk7XHJcbiAgICB0aGlzLmNvbmZpZy5vblN1Ym1pdChmb3JtRGF0YSk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVSZXNldCgpIHtcclxuICAgIHRoaXMuc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmZvcm0ucmVzZXQoKTtcclxuICAgIGlmICh0aGlzLmNvbmZpZy5vblJlc2V0KSB7XHJcbiAgICAgIHRoaXMuY29uZmlnLm9uUmVzZXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzRmllbGRJbnZhbGlkKGZpZWxkTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuZm9ybS5nZXQoZmllbGROYW1lKTtcclxuICAgIHJldHVybiAhIShmaWVsZCAmJiBmaWVsZC5pbnZhbGlkICYmIHRoaXMuc3VibWl0dGVkKTtcclxuICB9XHJcblxyXG4gIGdldEVycm9yTWVzc2FnZShmaWVsZE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuZm9ybS5nZXQoZmllbGROYW1lKTtcclxuICAgIGlmICghZmllbGQ/LmVycm9ycykgcmV0dXJuICcnO1xyXG5cclxuICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgYSBjdXN0b20gbWVzc2FnZSBmcm9tIHZhbGlkYXRpb25zXHJcbiAgICBjb25zdCBhbGxDb2x1bW5zID0gdGhpcy5jb25maWcuc2VjdGlvbnMuZmxhdE1hcCgocykgPT4gcy5maWVsZHMpO1xyXG4gICAgY29uc3QgY29sdW1uID0gYWxsQ29sdW1ucy5maW5kKChjKSA9PiBjLm5hbWUgPT09IGZpZWxkTmFtZSk7XHJcbiAgICAvLyBDaGVjayBmb3IgY3VzdG9tIHZhbGlkYXRpb24gZXJyb3JcclxuICAgIGlmIChmaWVsZC5lcnJvcnNbJ2N1c3RvbSddKSB7XHJcbiAgICAgIGNvbnN0IGN1c3RvbVZhbGlkYXRpb24gPSBjb2x1bW4/LnZhbGlkYXRpb25zPy5maW5kKFxyXG4gICAgICAgICh2KSA9PiB2LnR5cGUgPT09ICdjdXN0b20nXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybiBjdXN0b21WYWxpZGF0aW9uPy5tZXNzYWdlIHx8ICdJbnZhbGlkIGZpZWxkJztcclxuICAgIH1cclxuXHJcbiAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGEgY3VzdG9tIG1lc3NhZ2UgZnJvbSB2YWxpZGF0aW9uc1xyXG4gICAgY29uc3QgZXJyb3JLZXlzID0gT2JqZWN0LmtleXMoZmllbGQuZXJyb3JzKTtcclxuICAgIGZvciAoY29uc3Qga2V5IG9mIGVycm9yS2V5cykge1xyXG4gICAgICBjb25zdCB2YWxpZGF0aW9uID0gY29sdW1uPy52YWxpZGF0aW9ucz8uZmluZCgodikgPT4gdi50eXBlID09PSBrZXkpO1xyXG4gICAgICBpZiAodmFsaWRhdGlvbj8ubWVzc2FnZSkge1xyXG4gICAgICAgIHJldHVybiB2YWxpZGF0aW9uLm1lc3NhZ2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIERlZmF1bHQgZXJyb3IgbWVzc2FnZXNcclxuICAgIGlmIChmaWVsZC5lcnJvcnNbJ3JlcXVpcmVkJ10pIHtcclxuICAgICAgcmV0dXJuIGAke2NvbHVtbj8ubGFiZWx9IGlzIHJlcXVpcmVkYDtcclxuICAgIH1cclxuICAgIGlmIChmaWVsZC5lcnJvcnNbJ2VtYWlsJ10pIHJldHVybiAnSW52YWxpZCBlbWFpbCBmb3JtYXQnO1xyXG4gICAgaWYgKGZpZWxkLmVycm9yc1snbWlubGVuZ3RoJ10pXHJcbiAgICAgIHJldHVybiBgTWluaW11bSBsZW5ndGggaXMgJHtmaWVsZC5lcnJvcnNbJ21pbmxlbmd0aCddLnJlcXVpcmVkTGVuZ3RofWA7XHJcbiAgICBpZiAoZmllbGQuZXJyb3JzWydtYXhsZW5ndGgnXSlcclxuICAgICAgcmV0dXJuIGBNYXhpbXVtIGxlbmd0aCBpcyAke2ZpZWxkLmVycm9yc1snbWF4bGVuZ3RoJ10ucmVxdWlyZWRMZW5ndGh9YDtcclxuICAgIGlmIChmaWVsZC5lcnJvcnNbJ21pbiddKVxyXG4gICAgICByZXR1cm4gYE1pbmltdW0gdmFsdWUgaXMgJHtmaWVsZC5lcnJvcnNbJ21pbiddLm1pbn1gO1xyXG4gICAgaWYgKGZpZWxkLmVycm9yc1snbWF4J10pXHJcbiAgICAgIHJldHVybiBgTWF4aW11bSB2YWx1ZSBpcyAke2ZpZWxkLmVycm9yc1snbWF4J10ubWF4fWA7XHJcbiAgICBpZiAoZmllbGQuZXJyb3JzWydwYXR0ZXJuJ10pIHJldHVybiAnSW52YWxpZCBmb3JtYXQnO1xyXG4gICAgcmV0dXJuICdJbnZhbGlkIGZpZWxkJztcclxuICB9XHJcbn1cclxuIl19
|
|
1101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXVwZGF0ZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Z2LWNvbnRyb2xzL3NyYy9saWIvYWRkLXVwZGF0ZS1mb3JtL2FkZC11cGRhdGUtZm9ybS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ0ZBLCtCQUErQjtBQUMvQixPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxHQUlQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBS0wsbUJBQW1CLEVBQ25CLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELDhCQUE4QjtBQUM5QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNoRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM1RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUs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QixvQkFBb0I7d0JBQ3BCLHlCQUF5Qjt3QkFDekIsdUJBQXVCO3dCQUN2Qix3QkFBd0I7d0JBQ3hCLHlCQUF5Qjt3QkFDekIsbUJBQW1CO3dCQUNuQixxQkFBcUI7d0JBQ3JCLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLG9CQUFvQjt3QkFDcEIsb0JBQW9CO3dCQUNwQixvQkFBb0I7d0JBQ3BCLHFCQUFxQjt3QkFDckIsd0JBQXdCO3FCQUN6QixZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5UFQ7eUdBOHBCUSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0ksZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEZpZWxkVHlwZSA9XHJcbiAgfCAndGV4dCdcclxuICB8ICdlbWFpbCdcclxuICB8ICdudW1iZXInXHJcbiAgfCAnc2VsZWN0J1xyXG4gIHwgJ25hbWUtY29kZSdcclxuICB8ICdjaGVja2JveCdcclxuICB8ICd0ZXh0YXJlYSdcclxuICB8ICdkYXRlJ1xyXG4gIHwgJ3Bhc3N3b3JkJ1xyXG4gIHwgJ3JhZGlvJ1xyXG4gIHwgJ2ZpbGUnXHJcbiAgfCAnbW9udGgteWVhcidcclxuICB8ICdwaG9uZSdcclxuICB8ICd1YW4nXHJcbiAgfCAncGYnXHJcbiAgfCAnZXNpJ1xyXG4gIHwgJ2lmc2MnXHJcbiAgfCAnbWljcidcclxuICB8ICdpYmFuJztcclxuZXhwb3J0IHR5cGUgVmFsaWRhdGlvblR5cGUgPVxyXG4gIHwgJ3JlcXVpcmVkJ1xyXG4gIHwgJ2VtYWlsJ1xyXG4gIHwgJ21pbkxlbmd0aCdcclxuICB8ICdtYXhMZW5ndGgnXHJcbiAgfCAncGF0dGVybidcclxuICB8ICdtaW4nXHJcbiAgfCAnbWF4J1xyXG4gIHwgJ2N1c3RvbSdcclxuICB8ICdwYXNzd29yZENvbXBsZXhpdHknO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGaWVsZFZhbGlkYXRpb24ge1xyXG4gIHR5cGU6IFZhbGlkYXRpb25UeXBlO1xyXG4gIHZhbHVlPzogYW55OyAvLyBGb3IgbWluTGVuZ3RoLCBtYXhMZW5ndGgsIG1pbiwgbWF4LCBwYXR0ZXJuXHJcbiAgbWVzc2FnZT86IHN0cmluZzsgLy8gQ3VzdG9tIGVycm9yIG1lc3NhZ2VcclxuICB2YWxpZGF0b3I/OiAodmFsdWU6IGFueSwgZm9ybUdyb3VwPzogRm9ybUdyb3VwKSA9PiBib29sZWFuOyAvLyBGb3IgY3VzdG9tIHZhbGlkYXRpb25cclxuICBwYXJhbXM/OiBhbnk7IC8vIEZvciBjb21wbGV4IHZhbGlkYXRpb24gcnVsZXMgbGlrZSBwYXNzd29yZENvbXBsZXhpdHlcclxuICBlcnJvcktleT86IHN0cmluZzsgLy8gU3BlY2lmaWMgZXJyb3Iga2V5IHRvIHJldHVyblxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1Db2x1bW4ge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIHR5cGU6IEZpZWxkVHlwZTtcclxuICBwbGFjZWhvbGRlcj86IHN0cmluZztcclxuICByZXF1aXJlZD86IGJvb2xlYW47XHJcbiAgb3B0aW9ucz86IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IGFueSB9W107IC8vIEZvciBzZWxlY3QgZmllbGRzXHJcbiAgdmFsaWRhdGlvbnM/OiBGaWVsZFZhbGlkYXRpb25bXTtcclxuICB2YWx1ZT86IGFueTsgLy8gRGVmYXVsdCB2YWx1ZVxyXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcclxuICBjbGFzc05hbWU/OiBzdHJpbmc7XHJcbiAgaGlkZGVuPzogYm9vbGVhbjtcclxuICBoaW50Pzogc3RyaW5nO1xyXG4gIGNvbFNwYW4/OiBudW1iZXI7XHJcbiAgb25DaGFuZ2U/OiAodmFsdWU6IGFueSwgZm9ybUdyb3VwOiBGb3JtR3JvdXApID0+IHZvaWQ7XHJcbiAgYWNjZXB0Pzogc3RyaW5nOyAvLyBGb3IgZmlsZSBpbnB1dCAoZS5nLiwgJ2ltYWdlLyonKVxyXG4gIGZpbGVQcmV2aWV3PzogYm9vbGVhbjsgLy8gU2hvdyBpbWFnZSBwcmV2aWV3XHJcbiAgc2hvd1RpbWVQaWNrZXI/OiBib29sZWFuOyAvLyBTaG93IHRpbWUgcGlja2VyIGZvciB0ZXh0IGZpZWxkc1xyXG4gIGFsbG93QWxwaGFiZXRzT25seT86IGJvb2xlYW47XHJcbiAgbWF4TGVuZ3RoPzogbnVtYmVyO1xyXG4gIGxheW91dD86ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCc7IC8vIEZvciByYWRpbyBncm91cFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1TZWN0aW9uIHtcclxuICB0aXRsZT86IHN0cmluZzsgLy8gU2VjdGlvbiBoZWFkaW5nIChlLmcuLCBcIlBFUlNPTkFMIElORk9STUFUSU9OXCIpXHJcbiAgZmllbGRzOiBGb3JtQ29sdW1uW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUNvbmZpZyB7XHJcbiAgc2VjdGlvbnM6IEZvcm1TZWN0aW9uW107XHJcbiAgc3VibWl0TGFiZWw/OiBzdHJpbmc7XHJcbiAgcmVzZXRMYWJlbD86IHN0cmluZztcclxuICBvblN1Ym1pdDogKGRhdGE6IGFueSkgPT4gdm9pZDtcclxuICBvblJlc2V0PzogKCkgPT4gdm9pZDtcclxuICBvbkNhbmNlbDogKCkgPT4gdm9pZDtcclxuICBjYW5jZWxMYWJlbD86IHN0cmluZztcclxuICBmb3JtVGl0bGU/OiBzdHJpbmc7XHJcbiAgbWF4Q29sc1BlclJvdz86IG51bWJlcjtcclxufVxyXG5cclxuLy8gYWRkLXVwZGF0ZS1mb3JtLmNvbXBvbmVudC50c1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBFbGVtZW50UmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIEFic3RyYWN0Q29udHJvbCxcclxuICBGb3JtQnVpbGRlcixcclxuICBGb3JtQ29udHJvbCxcclxuICBGb3JtR3JvdXAsXHJcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICBWYWxpZGF0b3JzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG4vLyBJbXBvcnQgeW91ciBsaWJyYXJ5IG1vZHVsZXNcclxuaW1wb3J0IHsgRnZFbnRyeUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtZW50cnktZmllbGQvZnYtZW50cnktZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZOdW1iZXJGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LW51bWJlci1maWVsZC9mdi1udW1iZXItZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWRyb3Bkb3duL2Z2LWRyb3Bkb3duLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2UmFkaW9Hcm91cENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LXJhZGlvLWdyb3VwL2Z2LXJhZGlvLWdyb3VwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2Q2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi9mdi1jaGVja2JveC9mdi1jaGVja2JveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGdkRhdGVGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWRhdGUtZmllbGQvZnYtZGF0ZS1maWVsZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGdk1vbnRoWWVhckZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtbW9udGgteWVhci1maWVsZC9mdi1tb250aC15ZWFyLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2RmlsZVNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtZmlsZS1zZWxlY3Rvci9mdi1maWxlLXNlbGVjdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2SW1hZ2VTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWltYWdlLXNlbGVjdG9yL2Z2LWltYWdlLXNlbGVjdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2UmljaFRleHRFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi9mdi1yaWNoLXRleHQtZWRpdG9yL2Z2LXJpY2gtdGV4dC1lZGl0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZOYW1lQ29kZUNvbXBvbmVudCB9IGZyb20gJy4uL2Z2LW5hbWUtY29kZS9mdi1uYW1lLWNvZGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZQaG9uZUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtcGhvbmUtZmllbGQvZnYtcGhvbmUtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZVYW5GaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LXVhbi1maWVsZC9mdi11YW4tZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZQZkZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtcGYtZmllbGQvZnYtcGYtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZFc2lGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWVzaS1maWVsZC9mdi1lc2ktZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZJZnNjRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi1pZnNjLWZpZWxkL2Z2LWlmc2MtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZNaWNyRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi1taWNyLWZpZWxkL2Z2LW1pY3ItZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZJYmFuRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi1pYmFuLWZpZWxkL2Z2LWliYW4tZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZFbWFpbEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtZW1haWwtZmllbGQvZnYtZW1haWwtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZQYXNzd29yZEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtcGFzc3dvcmQtZmllbGQvZnYtcGFzc3dvcmQtZmllbGQuY29tcG9uZW50JztcclxuXHJcbi8vIEltcG9ydCBWYWxpZGF0aW9uIFR5cGVzXHJcbmltcG9ydCB7IFZhbGlkYXRpb25TY2hlbWEsIFZhbGlkYXRpb25SdWxlIH0gZnJvbSAnQGZvdmVzdHRhMi92YWxpZGF0aW9uLWVuZ2luZSc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWFkZC11cGRhdGUtZm9ybScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgRnZFbnRyeUZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZOdW1iZXJGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2RHJvcGRvd25Db21wb25lbnQsXHJcbiAgICBGdlJhZGlvR3JvdXBDb21wb25lbnQsXHJcbiAgICBGdkNoZWNrYm94Q29tcG9uZW50LFxyXG4gICAgRnZEYXRlRmllbGRDb21wb25lbnQsXHJcbiAgICBGdk1vbnRoWWVhckZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZGaWxlU2VsZWN0b3JDb21wb25lbnQsXHJcbiAgICBGdkltYWdlU2VsZWN0b3JDb21wb25lbnQsXHJcbiAgICBGdlJpY2hUZXh0RWRpdG9yQ29tcG9uZW50LFxyXG4gICAgRnZOYW1lQ29kZUNvbXBvbmVudCxcclxuICAgIEZ2UGhvbmVGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2VWFuRmllbGRDb21wb25lbnQsXHJcbiAgICBGdlBmRmllbGRDb21wb25lbnQsXHJcbiAgICBGdkVzaUZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZJZnNjRmllbGRDb21wb25lbnQsXHJcbiAgICBGdk1pY3JGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2SWJhbkZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZFbWFpbEZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZQYXNzd29yZEZpZWxkQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1oZWFkZXJcIiAqbmdJZj1cImNvbmZpZy5mb3JtVGl0bGVcIj5cclxuICAgICAgICA8aDI+e3sgY29uZmlnLmZvcm1UaXRsZSB9fTwvaDI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKG5nU3VibWl0KT1cImhhbmRsZVN1Ym1pdCgpXCIgY2xhc3M9XCJkeW5hbWljLWZvcm1cIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIGNvbmZpZy5zZWN0aW9uc1wiIGNsYXNzPVwiZm9ybS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICA8aDMgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCIgKm5nSWY9XCJzZWN0aW9uLnRpdGxlXCI+XHJcbiAgICAgICAgICAgIHt7IHNlY3Rpb24udGl0bGUgfX1cclxuICAgICAgICAgIDwvaDM+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkcy1yb3dcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHNlY3Rpb24uZmllbGRzXCI+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkLXdyYXBwZXJcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiJ2ZpZWxkLScgKyBjb2x1bW4udHlwZVwiXHJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJjb2x1bW4uaGlkZGVuID8geyBkaXNwbGF5OiAnbm9uZScgfSA6IHt9XCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5ncmlkLWNvbHVtbl09XCInc3BhbiAnICsgKGNvbHVtbi5jb2xTcGFuIHx8IDEpXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICd0ZXh0JyAmJiAhY29sdW1uLmhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1lbnRyeS1maWVsZFxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJydcIlxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJnZXRDb250cm9sKGNvbHVtbi5uYW1lKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICBbYWxsb3dBbHBoYWJldHNPbmx5XT1cImNvbHVtbi5hbGxvd0FscGhhYmV0c09ubHkgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIFttYXhMZW5ndGhdPVwiY29sdW1uLm1heExlbmd0aCB8fCBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlRmllbGRDaGFuZ2UoY29sdW1uLm5hbWUsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvZnYtZW50cnktZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdlbWFpbCcgJiYgIWNvbHVtbi5oaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtZW1haWwtZmllbGRcclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29sdW1uLnBsYWNlaG9sZGVyIHx8ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJnZXRDb250cm9sKGNvbHVtbi5uYW1lKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LWVtYWlsLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi50eXBlID09PSAncGFzc3dvcmQnICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LXBhc3N3b3JkLWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbHVtbi5wbGFjZWhvbGRlciB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiZ2V0Q29udHJvbChjb2x1bW4ubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJoYW5kbGVGaWVsZENoYW5nZShjb2x1bW4ubmFtZSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9mdi1wYXNzd29yZC1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ251bWJlcicgJiYgIWNvbHVtbi5oaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtbnVtYmVyLWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbHVtbi5wbGFjZWhvbGRlciB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiZ2V0Q29udHJvbChjb2x1bW4ubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJoYW5kbGVGaWVsZENoYW5nZShjb2x1bW4ubmFtZSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9mdi1udW1iZXItZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdzZWxlY3QnICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWRyb3Bkb3duXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbHVtbi5wbGFjZWhvbGRlciB8fCAnU2VsZWN0IG9wdGlvbidcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cImNvbHVtbi5vcHRpb25zIHx8IFtdXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJnZXRDb250cm9sKGNvbHVtbi5uYW1lKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnY2hlY2tib3gnICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiZ2V0Q29udHJvbChjb2x1bW4ubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJoYW5kbGVGaWVsZENoYW5nZShjb2x1bW4ubmFtZSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9mdi1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3JhZGlvJyAmJiAhY29sdW1uLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtcmFkaW8tZ3JvdXBcclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJjb2x1bW4ub3B0aW9ucyB8fCBbXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiZ2V0Q29udHJvbChjb2x1bW4ubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtsYXlvdXRdPVwiY29sdW1uLmxheW91dCB8fCAndmVydGljYWwnXCJcclxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlRmllbGRDaGFuZ2UoY29sdW1uLm5hbWUsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvZnYtcmFkaW8tZ3JvdXA+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdkYXRlJyAmJiAhY29sdW1uLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtZGF0ZS1maWVsZFxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImdldENvbnRyb2woY29sdW1uLm5hbWUpXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlRmllbGRDaGFuZ2UoY29sdW1uLm5hbWUsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvZnYtZGF0ZS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ21vbnRoLXllYXInICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LW1vbnRoLXllYXItZmllbGRcclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJnZXRDb250cm9sKGNvbHVtbi5uYW1lKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZU1vbnRoWWVhckNoYW5nZShjb2x1bW4ubmFtZSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9mdi1tb250aC15ZWFyLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi50eXBlID09PSAndGV4dGFyZWEnICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LXJpY2gtdGV4dC1lZGl0b3JcclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29sdW1uLnBsYWNlaG9sZGVyIHx8ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJnZXRDb250cm9sKGNvbHVtbi5uYW1lKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LXJpY2gtdGV4dC1lZGl0b3I+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdmaWxlJyAmJiAhY29sdW1uLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNJbWFnZUZpZWxkKGNvbHVtbik7IGVsc2Ugc3RhbmRhcmRGaWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZ2LWltYWdlLXNlbGVjdG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCBpbWFnZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiZ2V0Q29udHJvbChjb2x1bW4ubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbkZpbGVDaGFuZ2UoJGV2ZW50LCBjb2x1bW4ubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8L2Z2LWltYWdlLXNlbGVjdG9yPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc3RhbmRhcmRGaWxlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmdi1maWxlLXNlbGVjdG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCBmaWxlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbYWNjZXB0XT1cImNvbHVtbi5hY2NlcHQgfHwgJyovKidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiZ2V0Q29udHJvbChjb2x1bW4ubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbkZpbGVDaGFuZ2UoJGV2ZW50LCBjb2x1bW4ubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8L2Z2LWZpbGUtc2VsZWN0b3I+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICduYW1lLWNvZGUnICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LW5hbWUtY29kZVxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJ1NlYXJjaCBieSBDb2RlIG9yIE5hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJjb2x1bW4ub3B0aW9ucyA/IG1hcFNlYXJjaE9wdGlvbnMoY29sdW1uLm9wdGlvbnMpIDogW11cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImdldENvbnRyb2woY29sdW1uLm5hbWUpXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LW5hbWUtY29kZT5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3Bob25lJyAmJiAhY29sdW1uLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtcGhvbmUtZmllbGQgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiIFtjb250cm9sXT1cImdldENvbnRyb2woY29sdW1uLm5hbWUpXCIgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiIFtkaXNhYmxlZF09XCJjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2VcIj48L2Z2LXBob25lLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAndWFuJyAmJiAhY29sdW1uLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtdWFuLWZpZWxkIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIiBbY29udHJvbF09XCJnZXRDb250cm9sKGNvbHVtbi5uYW1lKVwiIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIiBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCI+PC9mdi11YW4tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdwZicgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LXBmLWZpZWxkIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIiBbY29udHJvbF09XCJnZXRDb250cm9sKGNvbHVtbi5uYW1lKVwiIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIiBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCI+PC9mdi1wZi1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ2VzaScgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWVzaS1maWVsZCBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCIgW2NvbnRyb2xdPVwiZ2V0Q29udHJvbChjb2x1bW4ubmFtZSlcIiBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCIgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiPjwvZnYtZXNpLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnaWZzYycgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWlmc2MtZmllbGQgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiIFtjb250cm9sXT1cImdldENvbnRyb2woY29sdW1uLm5hbWUpXCIgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiIFtkaXNhYmxlZF09XCJjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2VcIj48L2Z2LWlmc2MtZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdtaWNyJyAmJiAhY29sdW1uLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtbWljci1maWVsZCBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCIgW2NvbnRyb2xdPVwiZ2V0Q29udHJvbChjb2x1bW4ubmFtZSlcIiBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCIgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiPjwvZnYtbWljci1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ2liYW4nICYmICFjb2x1bW4uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1pYmFuLWZpZWxkIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIiBbY29udHJvbF09XCJnZXRDb250cm9sKGNvbHVtbi5uYW1lKVwiIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIiBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCI+PC9mdi1pYmFuLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1hY3Rpb25zXCI+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWQgJiYgc3VibWl0dGVkXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgY29uZmlnLnN1Ym1pdExhYmVsIHx8ICdTYXZlJyB9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJjb25maWcub25DYW5jZWwoKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IGNvbmZpZy5jYW5jZWxMYWJlbCB8fCAnQ2FuY2VsJyB9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZm9ybT5cclxuICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBgXHJcblxyXG4gIEBpbXBvcnQgdXJsKCdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PVBvcHBpbnM6d2dodEAzMDA7NDAwOzUwMDs2MDA7NzAwJmRpc3BsYXk9c3dhcCcpO1xyXG4gIEBpbXBvcnQgdXJsKCdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2ljb24/ZmFtaWx5PU1hdGVyaWFsK0ljb25zJyk7XHJcbiAgICAqe1xyXG4gICAgICBmb250LWZhbWlseTogXCJQb3BwaW5zXCIgIWltcG9ydGFudDtcclxuICAgIH1cclxuICAgIC5mb3JtLWNvbnRhaW5lciB7XHJcbiAgICAgIGJhY2tncm91bmQ6ICNmNWY1ZjU7XHJcbiAgICAgIHBhZGRpbmc6IDVweCAxMHB4IDEwcHg7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcclxuICAgICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIH1cclxuXHJcbiAgICAuZXJyb3ItYm9yZGVyIHtcclxuICAgICBib3JkZXItY29sb3I6IHJlZCAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG5cclxuICAgIC5oaWRkZW57XHJcbiAgICAgIGRpc3BsYXk6bm9uZSAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG5cclxuICAgIC5mb3JtLWhlYWRlciB7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDVweDtcclxuICAgIH1cclxuXHJcbiAgICAuZm9ybS1oZWFkZXIgaDIge1xyXG4gICAgICBtYXJnaW46IDA7XHJcbiAgICAgIGZvbnQtc2l6ZTogMjBweDtcclxuICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICAgICAgY29sb3I6ICMzMDMwMzA7XHJcbiAgICB9XHJcblxyXG4gICAgLmR5bmFtaWMtZm9ybSB7XHJcbiAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xyXG4gICAgICBwYWRkaW5nOiAxMHB4O1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA2cHg7XHJcbiAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMSk7XHJcbiAgICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIH1cclxuXHJcbiAgICAuZm9ybS1zZWN0aW9uIHtcclxuICAgICAgbWFyZ2luLWJvdHRvbToxMHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5zZWN0aW9uLXRpdGxlIHtcclxuICAgICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgICBmb250LXdlaWdodDogNzAwO1xyXG4gICAgICBjb2xvcjogIzMwMzAzMDtcclxuICAgICAgbWFyZ2luOiAwIDAgMTZweCAwO1xyXG4gICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG4gICAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmZpZWxkcy1yb3cge1xyXG4gICAgICBkaXNwbGF5OiBncmlkO1xyXG4gICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg1LDFmcik7XHJcbiAgICAgIGdhcDogMTZweDtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xyXG4gICAgfVxyXG5cclxuICAgIC5mb3JtLWZpZWxkLXdyYXBwZXIge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgIG1pbi13aWR0aDogMDtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xyXG4gICAgfVxyXG5cclxuICAgIC5wYXNzd29yZC10b2dnbGUtYnRuIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgcmlnaHQ6IDEwcHg7XHJcbiAgdG9wOiAzMnB4O1xyXG4gIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBwYWRkaW5nOiA0cHg7XHJcbiAgY29sb3I6ICM2NjY7XHJcbn1cclxuXHJcbi5wYXNzd29yZC10b2dnbGUtYnRuOmhvdmVyIHtcclxuICBjb2xvcjogIzMzMztcclxufVxyXG5cclxuLnBhc3N3b3JkLXRvZ2dsZS1idG4gLm1hdGVyaWFsLWljb25zIHtcclxuICBmb250LXNpemU6IDIwcHg7XHJcbiAgd2lkdGg6IGF1dG87XHJcbiAgaGVpZ2h0OiBhdXRvO1xyXG4gIHBhZGRpbmc6IDA7XHJcbn1cclxuXHJcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSBhbmQgKG1heC13aWR0aDogMTQwMHB4KSB7XHJcbiAgICAgIC5maWVsZHMtcm93IHtcclxuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg1LDFmcik7XHJcbiAgICAgIH1cclxuICAgICAgLmZvcm0tY29udHJvbCB7XHJcbiAgICAgICAgd2lkdGg6IDE4MHB4O1xyXG4gICAgICAgIG1heC13aWR0aDogMTgwcHg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAbWVkaWEgKG1heC13aWR0aDogMTIwMHB4KSB7XHJcbiAgICAgIC5maWVsZHMtcm93IHtcclxuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLDFmcik7XHJcbiAgICAgIH1cclxuICAgICAgLmZvcm0tY29udHJvbCB7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDk5MnB4KSB7XHJcbiAgICAgIC5maWVsZHMtcm93IHtcclxuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLDFmcik7XHJcbiAgICAgICAgZ2FwOiAxMnB4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XHJcbiAgICAgIC5maWVsZHMtcm93IHtcclxuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLDFmcik7XHJcbiAgICAgICAgZ2FwOiAxMHB4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDY0MHB4KSB7XHJcbiAgICAgIC5maWVsZHMtcm93IHtcclxuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcclxuICAgICAgICBnYXA6IDEycHg7XHJcbiAgICAgIH1cclxuICAgICAgLmZvcm0tZmllbGQtd3JhcHBlciB7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsYWJlbCB7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDZweDtcclxuICAgICAgY29sb3I6ICMxNTFENDg7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgIH1cclxuXHJcbiAgICAucmVxdWlyZWQge1xyXG4gICAgICBjb2xvcjogI2U3NGMzYztcclxuICAgICAgbWFyZ2luLWxlZnQ6IDJweDtcclxuICAgIH1cclxuXHJcbiAgICAuZm9ybS1jb250cm9sIHtcclxuICAgICAgcGFkZGluZzogNXB4IDEwcHg7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICAgIGhlaWdodDogMzRweDtcclxuICAgICAgYm9yZGVyOiAxcHggc29saWQgIzhDQkJBODtcclxuICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xyXG4gICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xyXG4gICAgICBjb2xvcjogIzFmMmI0MTtcclxuICAgICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMnMsIGJveC1zaGFkb3cgMC4ycztcclxuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIH1cclxuXHJcbiAgICAuZm9ybS1jb250cm9sOmZvY3VzIHtcclxuICAgICAgb3V0bGluZTogbm9uZTtcclxuICAgICAgYm9yZGVyLWNvbG9yOiAjMzQ5OGRiO1xyXG4gICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSg1MiwgMTUyLCAyMTksIDAuMSk7XHJcbiAgICB9XHJcblxyXG4gICAgLmZvcm0tY29udHJvbDpkaXNhYmxlZCB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlY2YwZjE7XHJcbiAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgdGV4dGFyZWEuZm9ybS1jb250cm9sIHtcclxuICAgICAgcmVzaXplOiB2ZXJ0aWNhbDtcclxuICAgICAgbWluLWhlaWdodDogMTAwcHg7XHJcbiAgICB9XHJcblxyXG4gICAgc2VsZWN0LmZvcm0tY29udHJvbCB7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgYXBwZWFyYW5jZTogbm9uZTtcclxuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMicgaGVpZ2h0PScxMicgdmlld0JveD0nMCAwIDEyIDEyJyUzRSUzQ3BhdGggZmlsbD0nJTIzMzMzJyBkPSdNNiA5TDEgNGgxMHonLyUzRSUzQy9zdmclM0VcIik7XHJcbiAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IDhweCBjZW50ZXI7XHJcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDQwcHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmNoZWNrYm94LXdyYXBwZXIge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBnYXA6IDhweDtcclxuICAgIH1cclxuXHJcbiAgICBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xyXG4gICAgICB3aWR0aDogMThweDtcclxuICAgICAgaGVpZ2h0OiAxOHB4O1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgLmNoZWNrYm94LWxhYmVsIHtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICBtYXJnaW46IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLmZpbGUtdXBsb2FkLWNvbnRhaW5lciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGdhcDogMjBweDtcclxuICBwYWRkaW5nOiAyMHB4O1xyXG4gIGJhY2tncm91bmQ6IHdoaXRlO1xyXG4gIG1heC13aWR0aDogMTAwJTtcclxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gIGZsZXgtd3JhcDogd3JhcDtcclxufVxyXG5cclxuLm1hdGVyaWFsLWljb25zIHtcclxuICBmb250LWZhbWlseTogJ01hdGVyaWFsIEljb25zJyAhaW1wb3J0YW50O1xyXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgd2lkdGg6IDQwcHg7XHJcbiAgcGFkZGluZzogOHB4O1xyXG4gIGhlaWdodDogNDBweDtcclxufVxyXG5cclxuLmZpbGUtZmllbGQtd3JhcHBlciB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgbWFyZ2luLXRvcDogMTZweDtcclxuICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxufVxyXG5cclxuLnBob3RvLXByZXZpZXctY2lyY2xlIHtcclxuICB3aWR0aDogMTAwcHg7XHJcbiAgaGVpZ2h0OiAxMDBweDtcclxuICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICBib3JkZXI6IDJweCBzb2xpZCAjZGRkO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4ycztcclxufVxyXG5cclxuLnBob3RvLXByZXZpZXctY2lyY2xlOmhvdmVyIHtcclxuICBib3JkZXItY29sb3I6ICMzNDk4ZGI7XHJcbn1cclxuXHJcbi5wcmV2aWV3LWltYWdlLCAuZGVmYXVsdC1waG90byB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxufVxyXG5cclxuLnByZXZpZXctaW1hZ2UgaW1nIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgb2JqZWN0LWZpdDogY292ZXI7XHJcbn1cclxuXHJcbi5kZWZhdWx0LXBob3RvIHtcclxuICBiYWNrZ3JvdW5kOiAjZjBmMGYwO1xyXG4gIGNvbG9yOiAjOTk5O1xyXG4gIGZvbnQtc2l6ZTogNDBweDtcclxufVxyXG5cclxuLmZpbGUtaW5mbyB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogOHB4O1xyXG59XHJcbi5idG4tZGVsZXRlIHtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBmb250LXNpemU6IDE0cHg7XHJcbiAgcGFkZGluZzogMHB4O1xyXG59XHJcblxyXG4udXBsb2FkLWJ0bi1ncm91cCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNkM2QzZDM7XHJcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gIGJhY2tncm91bmQ6ICNmZmY7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB3aWR0aDogZml0LWNvbnRlbnQ7XHJcbn1cclxuXHJcbi5idG4tdXBsb2FkIHtcclxuICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gIGNvbG9yOiAjMjIyO1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBwYWRkaW5nOiAwIDE4cHg7XHJcbiAgZm9udC1zaXplOiAxNnB4O1xyXG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNlMGUwZTA7XHJcbiAgYm9yZGVyLXJhZGl1czogOHB4IDAgMCA4cHg7XHJcbiAgb3V0bGluZTogbm9uZTtcclxuICBib3gtc2hhZG93OiBub25lO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBoZWlnaHQ6IDQwcHg7XHJcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzO1xyXG59XHJcblxyXG4uYnRuLXVwbG9hZC1pY29uIHtcclxuICBiYWNrZ3JvdW5kOiAjZjVmNWY1O1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBib3JkZXItcmFkaXVzOiAwIDhweCA4cHggMDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgd2lkdGg6IDQ4cHg7XHJcbiAgaGVpZ2h0OiA0MHB4O1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMnM7XHJcbn1cclxuXHJcbi5idG4tdXBsb2FkLWljb24gaS5tYXRlcmlhbC1pY29ucyB7XHJcbiAgZm9udC1zaXplOiAyMnB4O1xyXG4gIGNvbG9yOiAjMjIyO1xyXG59XHJcblxyXG4uYnRuLXVwbG9hZDpob3ZlciwgLmJ0bi11cGxvYWQtaWNvbjpob3ZlciB7XHJcbiAgYmFja2dyb3VuZDogI2YwZjBmMDtcclxufVxyXG5cclxuLmJ0bi1kZWxldGUge1xyXG4gIGJhY2tncm91bmQ6IHdoaXRlO1xyXG4gIGNvbG9yOiByZWQ7XHJcbn1cclxuXHJcbi5idG4tZGVsZXRlOmhvdmVyIHtcclxuICBiYWNrZ3JvdW5kOiAjZjBmMGYwO1xyXG59XHJcblxyXG4uZmlsZS1uYW1lIHtcclxuICBmb250LXNpemU6IDEycHg7XHJcbiAgY29sb3I6ICM2NjY7XHJcbiAgbWFyZ2luOiA4cHg7XHJcbiAgbWFyZ2luLXRvcDogMTBweDtcclxufVxyXG5cclxuLmZpbGUtbGFiZWwge1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIG1hcmdpbi1ib3R0b206IDZweDtcclxuICAgIGNvbG9yOiAjMTUxZDQ4O1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG59XHJcblxyXG4gICAgLnJhZGlvLWxhYmVsIHtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIG1hcmdpbi1ib3R0b206IDE1cHg7XHJcbiAgY29sb3I6ICMxNTFENDg7XHJcbiAgZm9udC1zaXplOiAxNHB4O1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG59XHJcblxyXG4ucmFkaW8tZ3JvdXAge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZ2FwOiAyMHB4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbn1cclxuXHJcbi5yYWRpby1pdGVtIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgZ2FwOiA2cHg7XHJcbn1cclxuXHJcbmlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XHJcbiAgd2lkdGg6IDE4cHg7XHJcbiAgaGVpZ2h0OiAxOHB4O1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBhY2NlbnQtY29sb3I6ICMzNDk4ZGI7XHJcbn1cclxuXHJcbi5yYWRpby1vcHRpb24tbGFiZWwge1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBtYXJnaW46IDA7XHJcbiAgZm9udC13ZWlnaHQ6IDQwMDtcclxufVxyXG5cclxuICAgIC5oaW50IHtcclxuICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICBjb2xvcjogIzdmOGM4ZDtcclxuICAgICAgbWFyZ2luLXRvcDogNHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5lcnJvci1tZXNzYWdlIHtcclxuICAgICAgY29sb3I6ICNlNzRjM2M7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgICAgbWFyZ2luLXRvcDogNHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5mb3JtLWFjdGlvbnMge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBnYXA6IDhweDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgICBnYXA6IDEycHg7XHJcbiAgICAgIHBhZGRpbmctdG9wOiA1cHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmJ0biB7XHJcbiAgICAgIHBhZGRpbmc6IDhweCAyMHB4O1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDdweDtcclxuICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xyXG4gICAgfVxyXG5cclxuICAgIC5idG4tcHJpbWFyeSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDZBRkY7XHJcbiAgICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgIH1cclxuXHJcbiAgICAuYnRuLXByaW1hcnk6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjk4MGI5O1xyXG4gICAgfVxyXG5cclxuICAgIC5idG4tcHJpbWFyeTpkaXNhYmxlZCB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNiZGMzYzc7XHJcbiAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLmJ0bi1zZWNvbmRhcnkge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTVhNWE2O1xyXG4gICAgICBjb2xvcjogd2hpdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLmJ0bi1zZWNvbmRhcnk6aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjN2Y4YzhkO1xyXG4gICAgfVxyXG5cclxuICAgIC5idG4tb3V0bGluZSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMzMDMwMzA7XHJcbiAgICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgIH1cclxuXHJcbiAgICAuYnRuLW91dGxpbmU6aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmIyYjJiZmY7XHJcbiAgICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgIH1cclxuXHJcbiAgICAubW9udGgteWVhci13cmFwcGVyIHtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAubW9udGgteWVhci13cmFwcGVyIC5mb3JtLWNvbnRyb2wge1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiA0NXB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5tb250aC1waWNrZXItaGlkZGVuIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBvcGFjaXR5OiAwO1xyXG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxuICAgICAgd2lkdGg6IDA7XHJcbiAgICAgIGhlaWdodDogMDtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICBwYWRkaW5nOiAwO1xyXG4gICAgICBtYXJnaW46IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLm1vbnRoLXBpY2tlci1idG4ge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHJpZ2h0OiA1cHg7XHJcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgcGFkZGluZzogNXB4O1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgY29sb3I6ICM2NjY7XHJcbiAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMnM7XHJcbiAgICAgIHotaW5kZXg6IDE7XHJcbiAgICB9XHJcblxyXG4gICAgLm1vbnRoLXBpY2tlci1idG46aG92ZXI6bm90KDpkaXNhYmxlZCkge1xyXG4gICAgICBjb2xvcjogIzM0OThkYjtcclxuICAgIH1cclxuXHJcbiAgICAubW9udGgtcGlja2VyLWJ0bjpkaXNhYmxlZCB7XHJcbiAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbiAgICAgIG9wYWNpdHk6IDAuNTtcclxuICAgIH1cclxuXHJcbiAgICAubW9udGgtcGlja2VyLWJ0biAubWF0ZXJpYWwtaWNvbnMge1xyXG4gICAgICBmb250LXNpemU6IDIwcHg7XHJcbiAgICAgIHdpZHRoOiBhdXRvO1xyXG4gICAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLnNlYXJjaC1zZWxlY3Qtd3JhcHBlciB7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgLnNlYXJjaC1zZWxlY3QtaW5wdXQge1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5zZWFyY2gtc2VsZWN0LWRyb3Bkb3duIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IGNhbGMoMTAwJSArIDRweCk7XHJcbiAgICAgIGxlZnQ6IDA7XHJcbiAgICAgIHJpZ2h0OiBhdXRvO1xyXG4gICAgICBtaW4td2lkdGg6IDEwMCU7XHJcbiAgICAgIG1heC13aWR0aDogY2FsYygxMDB2dyAtIDE2cHgpO1xyXG4gICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICAgICAgYm9yZGVyOiAxcHggc29saWQgI2QzZDNkMztcclxuICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gICAgICBtYXgtaGVpZ2h0OiAyMjBweDtcclxuICAgICAgb3ZlcmZsb3cteTogYXV0bztcclxuICAgICAgYm94LXNoYWRvdzogMCA0cHggMTBweCByZ2JhKDAsMCwwLDAuMDgpO1xyXG4gICAgICB6LWluZGV4OiA1O1xyXG4gICAgICBwYWRkaW5nOiA2cHggMDtcclxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xyXG4gICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xcyBlYXNlLW91dDtcclxuICAgIH1cclxuXHJcbiAgICAuc2VhcmNoLXNlbGVjdC1vcHRpb24ge1xyXG4gICAgICBwYWRkaW5nOiA4cHggMTJweDtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBnYXA6IDhweDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMmYyZjI7XHJcbiAgICB9XHJcblxyXG4gICAgLnNlYXJjaC1zZWxlY3Qtb3B0aW9uOmxhc3QtY2hpbGQge1xyXG4gICAgICBib3JkZXItYm90dG9tOiBub25lO1xyXG4gICAgfVxyXG5cclxuICAgIC5zZWFyY2gtc2VsZWN0LW9wdGlvbjpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQ6ICNmNWY5ZmY7XHJcbiAgICB9XHJcblxyXG4gICAgLm9wdGlvbi1jb2RlIHtcclxuICAgICAgY29sb3I6ICMwMDUyY2M7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgICAgIG1pbi13aWR0aDogOTBweDtcclxuICAgIH1cclxuXHJcbiAgICAub3B0aW9uLW5hbWUge1xyXG4gICAgICBjb2xvcjogIzE1MWQ0ODtcclxuICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICAgIH1cclxuXHJcbiAgICAudGltZS1waWNrZXItd3JhcHBlciB7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgLnRpbWUtaW5wdXQge1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiA0NXB4O1xyXG4gICAgICBmbGV4OiAxO1xyXG4gICAgfVxyXG5cclxuICAgIC50aW1lLXBpY2tlci1idG4ge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHJpZ2h0OiA1cHg7XHJcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgcGFkZGluZzogNXB4O1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgY29sb3I6ICM2NjY7XHJcbiAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMnM7XHJcbiAgICAgIHotaW5kZXg6IDE7XHJcbiAgICB9XHJcblxyXG4gICAgLnRpbWUtcGlja2VyLWJ0bjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XHJcbiAgICAgIGNvbG9yOiAjMzQ5OGRiO1xyXG4gICAgfVxyXG5cclxuICAgIC50aW1lLXBpY2tlci1idG46ZGlzYWJsZWQge1xyXG4gICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gICAgICBvcGFjaXR5OiAwLjU7XHJcbiAgICB9XHJcblxyXG4gICAgLnRpbWUtcGlja2VyLWJ0biAubWF0ZXJpYWwtaWNvbnMge1xyXG4gICAgICBmb250LXNpemU6IDIwcHg7XHJcbiAgICAgIHdpZHRoOiBhdXRvO1xyXG4gICAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICB9XHJcblxyXG4gICAgaW5wdXRbdHlwZT1cInRpbWVcIl0ge1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgaW5wdXRbdHlwZT1cInRpbWVcIl06Oi13ZWJraXQtY2FsZW5kYXItcGlja2VyLWluZGljYXRvciB7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgb3BhY2l0eTogMDtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICByaWdodDogMDtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIGhlaWdodDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQge1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQgOjpuZy1kZWVwIC5tYXQtbWRjLWZvcm0tZmllbGQge1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQgOjpuZy1kZWVwIC5tYXQtbWRjLXRleHQtZmllbGQtd3JhcHBlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XHJcbiAgICB9XHJcblxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkIC5tZGMtbm90Y2hlZC1vdXRsaW5lX19sZWFkaW5nLFxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkIC5tZGMtbm90Y2hlZC1vdXRsaW5lX19ub3RjaCxcclxuICAgIC5kYXRlLXBpY2tlci1maWVsZCA6Om5nLWRlZXAgLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZCAubWRjLW5vdGNoZWQtb3V0bGluZV9fdHJhaWxpbmcge1xyXG4gICAgICBib3JkZXItY29sb3I6ICM4Q0JCQTg7XHJcbiAgICB9XHJcblxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkOm5vdCgubWRjLXRleHQtZmllbGQtLWRpc2FibGVkKSAubWRjLW5vdGNoZWQtb3V0bGluZV9fbGVhZGluZyxcclxuICAgIC5kYXRlLXBpY2tlci1maWVsZCA6Om5nLWRlZXAgLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZDpub3QoLm1kYy10ZXh0LWZpZWxkLS1kaXNhYmxlZCkgLm1kYy1ub3RjaGVkLW91dGxpbmVfX25vdGNoLFxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkOm5vdCgubWRjLXRleHQtZmllbGQtLWRpc2FibGVkKSAubWRjLW5vdGNoZWQtb3V0bGluZV9fdHJhaWxpbmcge1xyXG4gICAgICBib3JkZXItY29sb3I6ICM4Q0JCQTg7XHJcbiAgICB9XHJcblxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkLm1kYy10ZXh0LWZpZWxkLS1mb2N1c2VkIC5tZGMtbm90Y2hlZC1vdXRsaW5lX19sZWFkaW5nLFxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkLm1kYy10ZXh0LWZpZWxkLS1mb2N1c2VkIC5tZGMtbm90Y2hlZC1vdXRsaW5lX19ub3RjaCxcclxuICAgIC5kYXRlLXBpY2tlci1maWVsZCA6Om5nLWRlZXAgLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZC5tZGMtdGV4dC1maWVsZC0tZm9jdXNlZCAubWRjLW5vdGNoZWQtb3V0bGluZV9fdHJhaWxpbmcge1xyXG4gICAgICBib3JkZXItY29sb3I6ICMzNDk4ZGI7XHJcbiAgICB9XHJcblxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkLmVycm9yLWJvcmRlciA6Om5nLWRlZXAgLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZCAubWRjLW5vdGNoZWQtb3V0bGluZV9fbGVhZGluZyxcclxuICAgIC5kYXRlLXBpY2tlci1maWVsZC5lcnJvci1ib3JkZXIgOjpuZy1kZWVwIC5tZGMtdGV4dC1maWVsZC0tb3V0bGluZWQgLm1kYy1ub3RjaGVkLW91dGxpbmVfX25vdGNoLFxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkLmVycm9yLWJvcmRlciA6Om5nLWRlZXAgLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZCAubWRjLW5vdGNoZWQtb3V0bGluZV9fdHJhaWxpbmcge1xyXG4gICAgICBib3JkZXItY29sb3I6IHJlZCAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG5cclxuICAgIC5kYXRlLXBpY2tlci1maWVsZCA6Om5nLWRlZXAgLm1hdC1tZGMtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlciB7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICB9XHJcblxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWF0LW1kYy1mb3JtLWZpZWxkLWlucHV0LWNvbnRyb2wgaW5wdXQge1xyXG4gICAgICBmb250LWZhbWlseTogXCJQb3BwaW5zXCIgIWltcG9ydGFudDtcclxuICAgICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgICBjb2xvcjogIzFmMmI0MTtcclxuICAgIH1cclxuICBgLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRkVXBkYXRlRm9ybUNvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dCgpIGNvbmZpZyE6IEZvcm1Db25maWc7XHJcbiAgQE91dHB1dCgpIHZhbGlkYXRpb25FcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIGZvcm0hOiBGb3JtR3JvdXA7XHJcbiAgc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBmaWxlUHJldmlld3M6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKCk7XHJcbiAgcHJpdmF0ZSBmaWxlTmFtZXM6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKCk7XHJcbiAgcHJpdmF0ZSB2YWx1ZUNoYW5nZVN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgcHJpdmF0ZSBwYXNzd29yZFZpc2liaWxpdHk6IE1hcDxzdHJpbmcsIGJvb2xlYW4+ID0gbmV3IE1hcCgpO1xyXG4gIHByaXZhdGUgc2VhcmNoUXVlcmllczogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgaG9zdFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm0oKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIC8vIExpZmVjeWNsZSBob29rIC0gY2FuIGJlIHVzZWQgZm9yIGRhdGVwaWNrZXIgaW5pdGlhbGl6YXRpb24gaWYgbmVlZGVkXHJcbiAgfVxyXG5cclxuICBnZXRDb2x1bW5XaWR0aChjb2x1bW46IEZvcm1Db2x1bW4pOiBzdHJpbmcge1xyXG4gICAgY29uc3QgbWF4Q29scyA9IHRoaXMuY29uZmlnLm1heENvbHNQZXJSb3cgfHwgNTtcclxuICAgIGNvbnN0IGNvbFNwYW4gPSBNYXRoLm1pbihjb2x1bW4uY29sU3BhbiB8fCAxLCBtYXhDb2xzKTtcclxuICAgIHJldHVybiBgY2FsYygkeyhjb2xTcGFuIC8gbWF4Q29scykgKiAxMDB9JSAtIDE2cHgpYDtcclxuICB9XHJcblxyXG4gIGdldENvbnRyb2wobmFtZTogc3RyaW5nKTogRm9ybUNvbnRyb2wge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQobmFtZSkgYXMgRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICAvLyAyLiBIRUxQRVI6IENvbnZlcnQgeW91ciBGaWVsZFZhbGlkYXRpb25bXSB0byB0aGUgbGlicmFyeSdzIFZhbGlkYXRpb25TY2hlbWFcclxuICBnZXRTY2hlbWEoY29sdW1uOiBGb3JtQ29sdW1uKTogVmFsaWRhdGlvblNjaGVtYSB7XHJcbiAgICBjb25zdCBydWxlczogVmFsaWRhdGlvblJ1bGVbXSA9IFtdO1xyXG4gICAgY29uc3QgZXJyb3JQcmlvcml0eTogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICBpZiAoY29sdW1uLnZhbGlkYXRpb25zKSB7XHJcbiAgICAgIGNvbHVtbi52YWxpZGF0aW9ucy5mb3JFYWNoKCh2KSA9PiB7XHJcbiAgICAgICAgc3dpdGNoICh2LnR5cGUpIHtcclxuICAgICAgICAgIGNhc2UgJ3JlcXVpcmVkJzpcclxuICAgICAgICAgICAgcnVsZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogJ3JlcXVpcmVkJyxcclxuICAgICAgICAgICAgICBwYXJhbXM6IHsgZW5hYmxlZDogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgIGVycm9yS2V5OiAnRVJSX1JFUVVJUkVEJyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGVycm9yUHJpb3JpdHkucHVzaCgncmVxdWlyZWQnKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdlbWFpbCc6XHJcbiAgICAgICAgICAgIHJ1bGVzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6ICdyZWdleCcsXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICBwYXR0ZXJuOiAnXlthLXpBLVowLTkuXyUrLV0rQFthLXpBLVowLTkuLV0rXFxcXC5bYS16QS1aXXsyLH0kJyxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGVycm9yS2V5OiAnRVJSX1JFR0VYX01JU01BVENIJyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGVycm9yUHJpb3JpdHkucHVzaCgncmVnZXgnKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdtaW5MZW5ndGgnOlxyXG4gICAgICAgICAgICBydWxlcy5wdXNoKHtcclxuICAgICAgICAgICAgICBuYW1lOiAnbWluTGVuZ3RoJyxcclxuICAgICAgICAgICAgICBwYXJhbXM6IHsgdmFsdWU6IHYudmFsdWUgfSxcclxuICAgICAgICAgICAgICBlcnJvcktleTogJ0VSUl9NSU5fTEVOR1RIJyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGVycm9yUHJpb3JpdHkucHVzaCgnbWluTGVuZ3RoJyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnbWF4TGVuZ3RoJzpcclxuICAgICAgICAgICAgcnVsZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogJ21heExlbmd0aCcsXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB7IHZhbHVlOiB2LnZhbHVlIH0sXHJcbiAgICAgICAgICAgICAgZXJyb3JLZXk6ICdFUlJfTUFYX0xFTkdUSCcsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBlcnJvclByaW9yaXR5LnB1c2goJ21heExlbmd0aCcpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ3BhdHRlcm4nOlxyXG4gICAgICAgICAgICBydWxlcy5wdXNoKHtcclxuICAgICAgICAgICAgICBuYW1lOiAncmVnZXgnLFxyXG4gICAgICAgICAgICAgIHBhcmFtczogeyBwYXR0ZXJuOiB2LnZhbHVlIH0sXHJcbiAgICAgICAgICAgICAgZXJyb3JLZXk6ICdFUlJfUkVHRVhfTUlTTUFUQ0gnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZXJyb3JQcmlvcml0eS5wdXNoKCdyZWdleCcpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ3Bhc3N3b3JkQ29tcGxleGl0eSc6XHJcbiAgICAgICAgICAgIHJ1bGVzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6ICdwYXNzd29yZENvbXBsZXhpdHknLFxyXG4gICAgICAgICAgICAgIHBhcmFtczogdi5wYXJhbXMgfHwge1xyXG4gICAgICAgICAgICAgICAgcmVxdWlyZVVwcGVyY2FzZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVMb3dlcmNhc2U6IHRydWUsXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlTnVtYmVyOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZVNwZWNpYWxDaGFyOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgbWluTGVuZ3RoOiA4XHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBlcnJvcktleTogdi5lcnJvcktleSB8fCAnRVJSX1BBU1NXT1JEX0NPTVBMRVhJVFlfSU5WQUxJRCcsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBlcnJvclByaW9yaXR5LnB1c2goJ3Bhc3N3b3JkQ29tcGxleGl0eScpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ21pbic6XHJcbiAgICAgICAgICAgIHJ1bGVzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6ICdtaW4nLFxyXG4gICAgICAgICAgICAgIHBhcmFtczogeyB2YWx1ZTogdi52YWx1ZSB9LFxyXG4gICAgICAgICAgICAgIGVycm9yS2V5OiAnRVJSX01JTl9WQUxVRScsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBlcnJvclByaW9yaXR5LnB1c2goJ21pbicpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ21heCc6XHJcbiAgICAgICAgICAgIHJ1bGVzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6ICdtYXgnLFxyXG4gICAgICAgICAgICAgIHBhcmFtczogeyB2YWx1ZTogdi52YWx1ZSB9LFxyXG4gICAgICAgICAgICAgIGVycm9yS2V5OiAnRVJSX01BWF9WQUxVRScsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBlcnJvclByaW9yaXR5LnB1c2goJ21heCcpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIE1hcCAnbmFtZS1jb2RlJyB0byAnRHJvcGRvd24nIG9yIHNpbWlsYXIgZm9yIHZhbGlkYXRpb24gc2NoZW1hIHB1cnBvc2VzIGlmIG5lZWRlZFxyXG4gICAgbGV0IGNvbnRyb2xUeXBlID0gY29sdW1uLnR5cGU7XHJcbiAgICBpZiAoY29sdW1uLnR5cGUgPT09ICduYW1lLWNvZGUnKSB7XHJcbiAgICAgIGNvbnRyb2xUeXBlID0gJ3NlbGVjdCc7IC8vIFRyZWF0IGFzIHNlbGVjdCBmb3Igc2NoZW1hIGxvb2t1cCBpZiBsaWJyYXJ5IGV4cGVjdHMgJ3NlbGVjdCcgb3IgJ0Ryb3Bkb3duJ1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIGNvbnRyb2xUeXBlOiBjb250cm9sVHlwZSxcclxuICAgICAgZXJyb3JQcmlvcml0eTogZXJyb3JQcmlvcml0eSxcclxuICAgICAgcnVsZXM6IHJ1bGVzLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGlzSW1hZ2VGaWVsZChjb2x1bW46IEZvcm1Db2x1bW4pOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIGNvbHVtbi50eXBlID09PSAnZmlsZScgJiZcclxuICAgICAgKGNvbHVtbi5hY2NlcHQ/LnN0YXJ0c1dpdGgoJ2ltYWdlJykgfHwgY29sdW1uLmZpbGVQcmV2aWV3ID09PSB0cnVlKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGluaXRpYWxpemVGb3JtKCkge1xyXG4gICAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcclxuICAgIGNvbnN0IGZvcm1Hcm91cENvbmZpZzogYW55ID0ge307XHJcblxyXG4gICAgdGhpcy5jb25maWcuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgICAgICBsZXQgaW5pdGlhbFZhbHVlID0gY29sdW1uLnZhbHVlIHx8ICcnO1xyXG5cclxuICAgICAgICAvLyBGb3JtYXQgbW9udGgteWVhciBmaWVsZHMgdG8gWVlZWS1NTSBmb3JtYXRcclxuICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdtb250aC15ZWFyJyAmJiBpbml0aWFsVmFsdWUpIHtcclxuICAgICAgICAgIGluaXRpYWxWYWx1ZSA9IHRoaXMuZm9ybWF0TW9udGhZZWFyVmFsdWUoaW5pdGlhbFZhbHVlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZvcm1Hcm91cENvbmZpZ1tjb2x1bW4ubmFtZV0gPSBbXHJcbiAgICAgICAgICB7IHZhbHVlOiBpbml0aWFsVmFsdWUsIGRpc2FibGVkOiBjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2UgfSxcclxuICAgICAgICAgIG51bGwsIC8vIFdlJ2xsIHNldCB2YWxpZGF0b3JzIGFmdGVyIGZvcm0gY3JlYXRpb25cclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICAvLyBJZiBpdCdzIGEgZmlsZSBmaWVsZCB3aXRoIGFuIGV4aXN0aW5nIHZhbHVlLCBzZXQgdGhlIHByZXZpZXdcclxuICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdmaWxlJyAmJiBjb2x1bW4udmFsdWUpIHtcclxuICAgICAgICAgIHRoaXMuZmlsZVByZXZpZXdzLnNldChjb2x1bW4ubmFtZSwgY29sdW1uLnZhbHVlKTtcclxuICAgICAgICAgIC8vIEV4dHJhY3QgZmlsZW5hbWUgZnJvbSBVUkwgb3IgYmFzZTY0XHJcbiAgICAgICAgICBjb25zdCBmaWxlTmFtZSA9IHRoaXMuZXh0cmFjdEZpbGVOYW1lKGNvbHVtbi52YWx1ZSk7XHJcbiAgICAgICAgICBpZiAoZmlsZU5hbWUpIHtcclxuICAgICAgICAgICAgdGhpcy5maWxlTmFtZXMuc2V0KGNvbHVtbi5uYW1lLCBmaWxlTmFtZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBJbml0aWFsaXplIHNlYXJjaCBkaXNwbGF5IGZvciBuYW1lLWNvZGUgZmllbGRzIC0gTm8gbG9uZ2VyIG5lZWRlZCBhcyBGdk5hbWVDb2RlIGhhbmRsZXMgZGlzcGxheSBpbnRlcm5hbGx5XHJcbiAgICAgICAgLyogaWYgKGNvbHVtbi50eXBlID09PSAnbmFtZS1jb2RlJyAmJiBpbml0aWFsVmFsdWUgJiYgY29sdW1uLm9wdGlvbnMpIHtcclxuICAgICAgICAgICAgIC8vIExvZ2ljIG1vdmVkIHRvIGNvbXBvbmVudFxyXG4gICAgICAgIH0gKi9cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKGZvcm1Hcm91cENvbmZpZyk7XHJcblxyXG4gICAgdGhpcy5jb25maWcuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gdGhpcy5idWlsZFZhbGlkYXRvcnMoY29sdW1uLnZhbGlkYXRpb25zLCB0aGlzLmZvcm0pO1xyXG4gICAgICAgIGlmICh2YWxpZGF0b3JzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHRoaXMuZm9ybS5nZXQoY29sdW1uLm5hbWUpPy5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xyXG4gICAgICAgICAgdGhpcy5mb3JtLmdldChjb2x1bW4ubmFtZSk/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZhbHVlIGNoYW5nZXMgZm9yIGFsbCBmaWVsZHMgdG8gdHJpZ2dlciBvbkNoYW5nZSBoYW5kbGVyc1xyXG4gICAgT2JqZWN0LmtleXModGhpcy5mb3JtLmNvbnRyb2xzKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5nZXQoa2V5KTtcclxuICAgICAgaWYgKGNvbnRyb2wpIHtcclxuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBjb250cm9sLnZhbHVlQ2hhbmdlc1xyXG4gICAgICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuZ2V0Q29sdW1uQnlOYW1lKGtleSk7XHJcbiAgICAgICAgICAgIGlmIChjb2x1bW4/Lm9uQ2hhbmdlKSB7XHJcbiAgICAgICAgICAgICAgY29sdW1uLm9uQ2hhbmdlKHZhbHVlLCB0aGlzLmZvcm0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAvLyBDbGVhbiB1cCBhbGwgc3Vic2NyaXB0aW9ucyB0byBwcmV2ZW50IG1lbW9yeSBsZWFrc1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZVN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc3ViKSA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9ucyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRmllbGRDaGFuZ2UoZmllbGROYW1lOiBzdHJpbmcsIGV2ZW50VmFsdWU/OiBhbnkpIHtcclxuICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuZ2V0Q29sdW1uQnlOYW1lKGZpZWxkTmFtZSk7XHJcbiAgICBjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMuZm9ybS5nZXQoZmllbGROYW1lKTtcclxuXHJcbiAgICAvLyBGb3JtYXQgbW9udGgteWVhciBmaWVsZHMgKGVzcGVjaWFsbHkgZXhwaXJ5RGF0ZSkgdG8gWVlZWS1NTVxyXG4gICAgaWYgKGNvbHVtbj8udHlwZSA9PT0gJ21vbnRoLXllYXInICYmIGV2ZW50VmFsdWUpIHtcclxuICAgICAgY29uc3QgZm9ybWF0dGVkVmFsdWUgPSB0aGlzLmZvcm1hdE1vbnRoWWVhclZhbHVlKGV2ZW50VmFsdWUpO1xyXG4gICAgICBpZiAoZm9ybUNvbnRyb2wgJiYgZm9ybWF0dGVkVmFsdWUgIT09IGV2ZW50VmFsdWUpIHtcclxuICAgICAgICBmb3JtQ29udHJvbC5zZXRWYWx1ZShmb3JtYXR0ZWRWYWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgIGV2ZW50VmFsdWUgPSBmb3JtYXR0ZWRWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChjb2x1bW4/Lm9uQ2hhbmdlKSB7XHJcbiAgICAgIC8vIFVzZSB0aGUgZXZlbnQgdmFsdWUgZGlyZWN0bHkgKHdoYXQgdGhlIHVzZXIganVzdCBzZWxlY3RlZC90eXBlZClcclxuICAgICAgLy8gVGhpcyBlbnN1cmVzIHdlIGhhdmUgdGhlIGNvcnJlY3QgdmFsdWUgZXZlbiBpZiBmb3JtIGNvbnRyb2wgaGFzbid0IHVwZGF0ZWQgeWV0XHJcbiAgICAgIGNvbnN0IHZhbHVlVG9QYXNzID1cclxuICAgICAgICBldmVudFZhbHVlICE9PSB1bmRlZmluZWQgPyBldmVudFZhbHVlIDogdGhpcy5mb3JtLmdldChmaWVsZE5hbWUpPy52YWx1ZTtcclxuICAgICAgY29uc3Qgb25DaGFuZ2VGbiA9IGNvbHVtbi5vbkNoYW5nZTsgLy8gU3RvcmUgdGhlIGZ1bmN0aW9uIHJlZmVyZW5jZVxyXG5cclxuICAgICAgLy8gU3RvcmUgdGhlIHNlbGVjdGVkIHZhbHVlIC0gdGhpcyBpcyB3aGF0IHRoZSB1c2VyIGNob3NlXHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkVmFsdWUgPSB2YWx1ZVRvUGFzcztcclxuXHJcbiAgICAgIC8vIEVuc3VyZSB0aGUgZm9ybSBjb250cm9sIGhhcyB0aGUgc2VsZWN0ZWQgdmFsdWUgYmVmb3JlIGNhbGxpbmcgb25DaGFuZ2VcclxuICAgICAgaWYgKGZvcm1Db250cm9sICYmIHNlbGVjdGVkVmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGlmIChmb3JtQ29udHJvbC52YWx1ZSAhPT0gc2VsZWN0ZWRWYWx1ZSkge1xyXG4gICAgICAgICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUoc2VsZWN0ZWRWYWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gQ2FsbCBvbkNoYW5nZSB3aXRoIHRoZSBzZWxlY3RlZCB2YWx1ZVxyXG4gICAgICBpZiAob25DaGFuZ2VGbikge1xyXG4gICAgICAgIG9uQ2hhbmdlRm4oc2VsZWN0ZWRWYWx1ZSwgdGhpcy5mb3JtKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gUmVzdG9yZSB0aGUgdmFsdWUgZm9yIHRoZSBmaWVsZCB0aGF0IHRyaWdnZXJlZCB0aGUgY2hhbmdlIGlmIGl0IHdhcyBjbGVhcmVkIGJ5IG9uQ2hhbmdlXHJcbiAgICAgIC8vIFRoaXMgaXMgY3JpdGljYWw6IGlmIG9uQ2hhbmdlIGNsZWFycyB0aGUgZmllbGQgdGhhdCB3YXMganVzdCBjaGFuZ2VkLCB3ZSByZXN0b3JlIGl0XHJcbiAgICAgIC8vIE9ubHkgcmVzdG9yZSBpZiB3ZSBoYWQgYSBub24tZW1wdHkgdmFsdWUgKGVtcHR5IHN0cmluZywgbnVsbCwgdW5kZWZpbmVkIGFyZSBub3QgcmVzdG9yZWQpXHJcbiAgICAgIGlmIChcclxuICAgICAgICBmb3JtQ29udHJvbCAmJlxyXG4gICAgICAgIHNlbGVjdGVkVmFsdWUgIT09IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgIHNlbGVjdGVkVmFsdWUgIT09IG51bGwgJiZcclxuICAgICAgICBzZWxlY3RlZFZhbHVlICE9PSAnJ1xyXG4gICAgICApIHtcclxuICAgICAgICAvLyBVc2Ugc2V0VGltZW91dCB3aXRoIDAgZGVsYXkgdG8gcnVuIGFmdGVyIGFueSBzeW5jaHJvbm91cyBvcGVyYXRpb25zIGluIG9uQ2hhbmdlXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgdmFsdWUgd2FzIGNsZWFyZWQgb3IgY2hhbmdlZFxyXG4gICAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gZm9ybUNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgICAvLyBJZiB0aGUgdmFsdWUgZG9lc24ndCBtYXRjaCB3aGF0IHdhcyBzZWxlY3RlZCwgcmVzdG9yZSBpdFxyXG4gICAgICAgICAgLy8gVGhpcyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlIG9uQ2hhbmdlIGNsZWFyZWQgdGhlIGZpZWxkIHVuaW50ZW50aW9uYWxseVxyXG4gICAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZSAhPT0gc2VsZWN0ZWRWYWx1ZSkge1xyXG4gICAgICAgICAgICBmb3JtQ29udHJvbC5zZXRWYWx1ZShzZWxlY3RlZFZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgMCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZvcm1hdE1vbnRoWWVhclZhbHVlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIHZhbHVlO1xyXG4gICAgLy8gTm9ybWFsaXplIHRvIFlZWVktTU1cclxuICAgIGlmICh2YWx1ZS5tYXRjaCgvXlxcZHsyfS1cXGR7NH0kLykpIHtcclxuICAgICAgY29uc3QgW21vbnRoLCB5ZWFyXSA9IHZhbHVlLnNwbGl0KCctJyk7XHJcbiAgICAgIHJldHVybiBgJHt5ZWFyfS0ke21vbnRofWA7XHJcbiAgICB9XHJcbiAgICAvLyBJZiBhbHJlYWR5IGluIFlZWVktTU0gZm9ybWF0LCByZXR1cm4gYXMgaXNcclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHBhcnNlTW9udGhZZWFyVmFsdWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gdmFsdWU7XHJcbiAgICAvLyBEaXNwbGF5IGFuZCBwaWNrZXIgYm90aCB1c2UgWVlZWS1NTTsgbm9ybWFsaXplIE1NLVlZWVkgaWYgcHJlc2VudFxyXG4gICAgaWYgKHZhbHVlLm1hdGNoKC9eXFxkezJ9LVxcZHs0fSQvKSkge1xyXG4gICAgICBjb25zdCBbbW9udGgsIHllYXJdID0gdmFsdWUuc3BsaXQoJy0nKTtcclxuICAgICAgcmV0dXJuIGAke3llYXJ9LSR7bW9udGh9YDtcclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcblxyXG4gIGhhbmRsZU1vbnRoWWVhckNoYW5nZShmaWVsZE5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xyXG4gICAgLy8gRm9ybWF0IHRoZSBpbnB1dCB2YWx1ZSB0byBZWVlZLU1NIGZvcm1hdFxyXG4gICAgbGV0IGZvcm1hdHRlZFZhbHVlID0gdmFsdWU7XHJcblxyXG4gICAgLy8gSWYgaXQncyBpbiBNTS1ZWVlZIGZvcm1hdCwgY29udmVydCB0byBZWVlZLU1NXHJcbiAgICBpZiAoZm9ybWF0dGVkVmFsdWUubWF0Y2goL15cXGR7Mn0tXFxkezR9JC8pKSB7XHJcbiAgICAgIGNvbnN0IFttb250aCwgeWVhcl0gPSBmb3JtYXR0ZWRWYWx1ZS5zcGxpdCgnLScpO1xyXG4gICAgICBmb3JtYXR0ZWRWYWx1ZSA9IGAke3llYXJ9LSR7bW9udGh9YDtcclxuICAgIH1cclxuICAgIC8vIElmIGl0J3MgaW4gWVlZWU1NIGZvcm1hdCAobm8gZGFzaCksIGNvbnZlcnQgdG8gWVlZWS1NTVxyXG4gICAgZWxzZSBpZiAoZm9ybWF0dGVkVmFsdWUubWF0Y2goL15cXGR7Nn0kLykpIHtcclxuICAgICAgY29uc3QgeWVhciA9IGZvcm1hdHRlZFZhbHVlLnN1YnN0cmluZygwLCA0KTtcclxuICAgICAgY29uc3QgbW9udGggPSBmb3JtYXR0ZWRWYWx1ZS5zdWJzdHJpbmcoNCwgNik7XHJcbiAgICAgIGZvcm1hdHRlZFZhbHVlID0gYCR7eWVhcn0tJHttb250aH1gO1xyXG4gICAgfVxyXG4gICAgLy8gSWYgaXQncyBhbHJlYWR5IGluIFlZWVktTU0gZm9ybWF0LCBsZWF2ZSBhcyBpc1xyXG4gICAgZWxzZSBpZiAoZm9ybWF0dGVkVmFsdWUubWF0Y2goL15cXGR7NH0tXFxkezJ9JC8pKSB7XHJcbiAgICAgIC8vIEFscmVhZHkgaW4gY29ycmVjdCBmb3JtYXRcclxuICAgIH1cclxuICAgIC8vIElmIHVzZXIgaXMgdHlwaW5nLCBhbGxvdyBwYXJ0aWFsIGlucHV0XHJcbiAgICBlbHNlIGlmIChmb3JtYXR0ZWRWYWx1ZS5tYXRjaCgvXlxcZHsxLDZ9JC8pKSB7XHJcbiAgICAgIC8vIEFsbG93IHBhcnRpYWwgaW5wdXQgd2hpbGUgdHlwaW5nXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk7XHJcbiAgICBpZiAoZm9ybUNvbnRyb2wgJiYgZm9ybWF0dGVkVmFsdWUgIT09IHZhbHVlKSB7XHJcbiAgICAgIGZvcm1Db250cm9sLnNldFZhbHVlKGZvcm1hdHRlZFZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5oYW5kbGVGaWVsZENoYW5nZShmaWVsZE5hbWUsIGZvcm1hdHRlZFZhbHVlKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZU1vbnRoWWVhckJsdXIoZmllbGROYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5mb3JtLmdldChmaWVsZE5hbWUpO1xyXG4gICAgaWYgKCFmb3JtQ29udHJvbCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHZhbHVlID0gZm9ybUNvbnRyb2wudmFsdWUgfHwgJyc7XHJcbiAgICAvLyBFbnN1cmUgdGhlIHZhbHVlIGlzIGluIFlZWVktTU0gZm9ybWF0IG9uIGJsdXJcclxuICAgIGlmICh2YWx1ZSAmJiAhdmFsdWUubWF0Y2goL15cXGR7NH0tXFxkezJ9JC8pKSB7XHJcbiAgICAgIC8vIFRyeSB0byBwYXJzZSBhbmQgZm9ybWF0XHJcbiAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IHRoaXMuZm9ybWF0TW9udGhZZWFyVmFsdWUodmFsdWUpO1xyXG4gICAgICBpZiAoZm9ybWF0dGVkICE9PSB2YWx1ZSkge1xyXG4gICAgICAgIGZvcm1Db250cm9sLnNldFZhbHVlKGZvcm1hdHRlZCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVNb250aFllYXJQaWNrZXJDaGFuZ2UoZmllbGROYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIC8vIE1vbnRoIHBpY2tlciBvdXRwdXRzIFlZWVktTU07IGp1c3Qgbm9ybWFsaXplXHJcbiAgICBjb25zdCBmb3JtYXR0ZWRWYWx1ZSA9IHRoaXMuZm9ybWF0TW9udGhZZWFyVmFsdWUodmFsdWUpO1xyXG4gICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk7XHJcbiAgICBpZiAoZm9ybUNvbnRyb2wpIHtcclxuICAgICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUoZm9ybWF0dGVkVmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgdGhpcy5oYW5kbGVGaWVsZENoYW5nZShmaWVsZE5hbWUsIGZvcm1hdHRlZFZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldE1vbnRoWWVhclBpY2tlclZhbHVlKGZpZWxkTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5mb3JtLmdldChmaWVsZE5hbWUpO1xyXG4gICAgaWYgKCFmb3JtQ29udHJvbCkgcmV0dXJuICcnO1xyXG4gICAgY29uc3QgdmFsdWUgPSBmb3JtQ29udHJvbC52YWx1ZSB8fCAnJztcclxuICAgIC8vIERpc3BsYXkgYW5kIHBpY2tlciBib3RoIGV4cGVjdCBZWVlZLU1NXHJcbiAgICByZXR1cm4gdGhpcy5wYXJzZU1vbnRoWWVhclZhbHVlKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIG9wZW5Nb250aFBpY2tlcihmaWVsZE5hbWU6IHN0cmluZykge1xyXG4gICAgY29uc3QgbW9udGhJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxyXG4gICAgICBmaWVsZE5hbWUgKyAnX3BpY2tlcidcclxuICAgICkgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGlmIChtb250aElucHV0ICYmIG1vbnRoSW5wdXQudHlwZSA9PT0gJ21vbnRoJykge1xyXG4gICAgICAvLyBVcGRhdGUgdGhlIHBpY2tlciB2YWx1ZSBiZWZvcmUgb3BlbmluZ1xyXG4gICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLmdldE1vbnRoWWVhclBpY2tlclZhbHVlKGZpZWxkTmFtZSk7XHJcbiAgICAgIGlmIChjdXJyZW50VmFsdWUpIHtcclxuICAgICAgICBtb250aElucHV0LnZhbHVlID0gY3VycmVudFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIFRyeSBtb2Rlcm4gc2hvd1BpY2tlciBBUEkgZmlyc3QsIGZhbGxiYWNrIHRvIGNsaWNrXHJcbiAgICAgIGlmIChtb250aElucHV0LnNob3dQaWNrZXIpIHtcclxuICAgICAgICBtb250aElucHV0LnNob3dQaWNrZXIoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBtb250aElucHV0LmZvY3VzKCk7XHJcbiAgICAgICAgbW9udGhJbnB1dC5jbGljaygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDb2x1bW5CeU5hbWUobmFtZTogc3RyaW5nKTogRm9ybUNvbHVtbiB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWcuc2VjdGlvbnNcclxuICAgICAgLmZsYXRNYXAoKHMpID0+IHMuZmllbGRzKVxyXG4gICAgICAuZmluZCgoYykgPT4gYy5uYW1lID09PSBuYW1lKTtcclxuICB9XHJcblxyXG4gIGdldEZpbGVGaWVsZHMoZmllbGRzOiBGb3JtQ29sdW1uW10pOiBGb3JtQ29sdW1uW10ge1xyXG4gICAgcmV0dXJuIGZpZWxkcy5maWx0ZXIoKGYpID0+IGYudHlwZSA9PT0gJ2ZpbGUnKTtcclxuICB9XHJcblxyXG4gIGdldE5vbkZpbGVGaWVsZHMoZmllbGRzOiBGb3JtQ29sdW1uW10pOiBGb3JtQ29sdW1uW10ge1xyXG4gICAgcmV0dXJuIGZpZWxkcy5maWx0ZXIoKGYpID0+IGYudHlwZSAhPT0gJ2ZpbGUnKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZVBhc3N3b3JkVmlzaWJpbGl0eShmaWVsZE5hbWU6IHN0cmluZykge1xyXG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMucGFzc3dvcmRWaXNpYmlsaXR5LmdldChmaWVsZE5hbWUpIHx8IGZhbHNlO1xyXG4gICAgdGhpcy5wYXNzd29yZFZpc2liaWxpdHkuc2V0KGZpZWxkTmFtZSwgIWN1cnJlbnQpO1xyXG4gIH1cclxuICBoYXNSZXF1aXJlZFZhbGlkYXRpb24oY29sdW1uOiBGb3JtQ29sdW1uKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gY29sdW1uLnZhbGlkYXRpb25zPy5zb21lKCh2KSA9PiB2LnR5cGUgPT09ICdyZXF1aXJlZCcpIHx8IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgaXNQYXNzd29yZFZpc2libGUoZmllbGROYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnBhc3N3b3JkVmlzaWJpbGl0eS5nZXQoZmllbGROYW1lKSB8fCBmYWxzZTtcclxuICB9XHJcblxyXG4gIGJ1aWxkVmFsaWRhdG9ycyhcclxuICAgIHZhbGlkYXRpb25zPzogRmllbGRWYWxpZGF0aW9uW10sXHJcbiAgICBmb3JtR3JvdXA/OiBGb3JtR3JvdXBcclxuICApOiBhbnlbXSB7XHJcbiAgICBpZiAoIXZhbGlkYXRpb25zKSByZXR1cm4gW107XHJcblxyXG4gICAgY29uc3QgdmFsaWRhdG9yczogYW55W10gPSBbXTtcclxuICAgIHZhbGlkYXRpb25zLmZvckVhY2goKHZhbGlkYXRpb24pID0+IHtcclxuICAgICAgc3dpdGNoICh2YWxpZGF0aW9uLnR5cGUpIHtcclxuICAgICAgICBjYXNlICdyZXF1aXJlZCc6XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdlbWFpbCc6XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5lbWFpbCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdtaW5MZW5ndGgnOlxyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHZhbGlkYXRpb24udmFsdWUpKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ21heExlbmd0aCc6XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgodmFsaWRhdGlvbi52YWx1ZSkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnbWluJzpcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbih2YWxpZGF0aW9uLnZhbHVlKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdtYXgnOlxyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4KHZhbGlkYXRpb24udmFsdWUpKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3BhdHRlcm4nOlxyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucGF0dGVybih2YWxpZGF0aW9uLnZhbHVlKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdjdXN0b20nOlxyXG4gICAgICAgICAgaWYgKHZhbGlkYXRpb24udmFsaWRhdG9yKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaCgoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgaXNWYWxpZCA9IHZhbGlkYXRpb24udmFsaWRhdG9yIShjb250cm9sLnZhbHVlLCBmb3JtR3JvdXApO1xyXG4gICAgICAgICAgICAgIHJldHVybiBpc1ZhbGlkID8gbnVsbCA6IHsgY3VzdG9tOiB0cnVlIH07XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHZhbGlkYXRvcnM7XHJcbiAgfVxyXG5cclxuICB0cmlnZ2VyRmlsZVVwbG9hZChmaWVsZE5hbWU6IHN0cmluZykge1xyXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpbGVJbnB1dF8nICsgZmllbGROYW1lKT8uY2xpY2soKTtcclxuICB9XHJcblxyXG4gIG9wZW5UaW1lUGlja2VyKGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB0aW1lSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChmaWVsZE5hbWUpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBpZiAodGltZUlucHV0ICYmIHRpbWVJbnB1dC50eXBlID09PSAndGltZScpIHtcclxuICAgICAgLy8gVHJ5IG1vZGVybiBzaG93UGlja2VyIEFQSSBmaXJzdCwgZmFsbGJhY2sgdG8gY2xpY2tcclxuICAgICAgaWYgKHRpbWVJbnB1dC5zaG93UGlja2VyKSB7XHJcbiAgICAgICAgdGltZUlucHV0LnNob3dQaWNrZXIoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aW1lSW5wdXQuZm9jdXMoKTtcclxuICAgICAgICB0aW1lSW5wdXQuY2xpY2soKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25GaWxlQ2hhbmdlKGV2ZW50OiBhbnksIGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBmaWxlOiBGaWxlID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdO1xyXG4gICAgaWYgKGZpbGUpIHtcclxuICAgICAgdGhpcy5maWxlTmFtZXMuc2V0KGZpZWxkTmFtZSwgZmlsZS5uYW1lKTtcclxuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgYmFzZTY0U3RyaW5nID0gcmVhZGVyLnJlc3VsdCBhcyBzdHJpbmc7XHJcbiAgICAgICAgdGhpcy5maWxlUHJldmlld3Muc2V0KGZpZWxkTmFtZSwgYmFzZTY0U3RyaW5nKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk/LnNldFZhbHVlKGJhc2U2NFN0cmluZyk7XHJcblxyXG4gICAgICAgIC8vIFRyaWdnZXIgb25DaGFuZ2UgaGFuZGxlciBmb3IgZmlsZSBmaWVsZHNcclxuICAgICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmdldENvbHVtbkJ5TmFtZShmaWVsZE5hbWUpO1xyXG4gICAgICAgIGlmIChjb2x1bW4/Lm9uQ2hhbmdlKSB7XHJcbiAgICAgICAgICBjb2x1bW4ub25DaGFuZ2UoYmFzZTY0U3RyaW5nLCB0aGlzLmZvcm0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4dHJhY3RGaWxlTmFtZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghdmFsdWUpIHJldHVybiAnJztcclxuXHJcbiAgICAvLyBJZiBpdCdzIGEgVVJMLCBleHRyYWN0IGZpbGVuYW1lIGZyb20gVVJMXHJcbiAgICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnaHR0cCcpKSB7XHJcbiAgICAgIGNvbnN0IHBhcnRzID0gdmFsdWUuc3BsaXQoJy8nKTtcclxuICAgICAgcmV0dXJuIHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIElmIGl0J3MgYmFzZTY0LCByZXR1cm4gYSBnZW5lcmljIG5hbWVcclxuICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKGBkYXRhOmltYWdlYCkpIHtcclxuICAgICAgcmV0dXJuICd1cGxvYWRlZC1pbWFnZS5qcGcnO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAnZXhpc3RpbmctcGhvdG8uanBnJztcclxuICB9XHJcblxyXG4gIGdldEZpbGVQcmV2aWV3KGZpZWxkTmFtZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5maWxlUHJldmlld3MuZ2V0KGZpZWxkTmFtZSkgfHwgbnVsbDtcclxuICB9XHJcblxyXG4gIGdldEZpbGVOYW1lKGZpZWxkTmFtZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5maWxlTmFtZXMuZ2V0KGZpZWxkTmFtZSkgfHwgbnVsbDtcclxuICB9XHJcblxyXG4gIG1hcFNlYXJjaE9wdGlvbnMob3B0aW9uczogYW55W10pOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gb3B0aW9ucy5tYXAob3B0ID0+ICh7XHJcbiAgICAgIGNvZGU6IG9wdC5jb2RlIHx8IG9wdC52YWx1ZSxcclxuICAgICAgbmFtZTogb3B0Lm5hbWUgfHwgb3B0LmxhYmVsIHx8IG9wdC52YWx1ZSxcclxuICAgICAgdmFsdWU6IG9wdC52YWx1ZVxyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcblxyXG4gIGRlbGV0ZUZpbGUoZmllbGROYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZmlsZVByZXZpZXdzLmRlbGV0ZShmaWVsZE5hbWUpO1xyXG4gICAgdGhpcy5maWxlTmFtZXMuZGVsZXRlKGZpZWxkTmFtZSk7XHJcbiAgICB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk/LnNldFZhbHVlKCcnKTtcclxuXHJcbiAgICAvLyBUcmlnZ2VyIG9uQ2hhbmdlIGhhbmRsZXIgd2hlbiBmaWxlIGlzIGRlbGV0ZWRcclxuICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuZ2V0Q29sdW1uQnlOYW1lKGZpZWxkTmFtZSk7XHJcbiAgICBpZiAoY29sdW1uPy5vbkNoYW5nZSkge1xyXG4gICAgICBjb2x1bW4ub25DaGFuZ2UoJycsIHRoaXMuZm9ybSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVTdWJtaXQoKSB7XHJcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XHJcbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHtcclxuICAgICAgLy8gTWFyayBhbGwgZmllbGRzIGFzIHRvdWNoZWQgdG8gc2hvdyByZWQgYm9yZGVyc1xyXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmZvcm0uY29udHJvbHMpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoa2V5KT8ubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIC8vIENvdW50IG9ubHkgcmVxdWlyZWQgZmllbGRzIHRoYXQgYXJlIGludmFsaWRcclxuICAgICAgY29uc3QgYWxsQ29sdW1ucyA9IHRoaXMuY29uZmlnLnNlY3Rpb25zLmZsYXRNYXAoKHMpID0+IHMuZmllbGRzKTtcclxuICAgICAgY29uc3QgaW52YWxpZFJlcXVpcmVkQ291bnQgPSBPYmplY3Qua2V5cyh0aGlzLmZvcm0uY29udHJvbHMpLmZpbHRlcihcclxuICAgICAgICAoa2V5KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldChrZXkpO1xyXG4gICAgICAgICAgaWYgKCFjb250cm9sPy5pbnZhbGlkKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBmaWVsZCBoYXMgcmVxdWlyZWQgdmFsaWRhdGlvblxyXG4gICAgICAgICAgY29uc3QgY29sdW1uID0gYWxsQ29sdW1ucy5maW5kKChjKSA9PiBjLm5hbWUgPT09IGtleSk7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICBjb2x1bW4/LnZhbGlkYXRpb25zPy5zb21lKCh2KSA9PiB2LnR5cGUgPT09ICdyZXF1aXJlZCcpIHx8IGZhbHNlXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgKS5sZW5ndGg7XHJcblxyXG4gICAgICAvLyBPbmx5IGVtaXQgaWYgdGhlcmUgYXJlIHJlcXVpcmVkIGZpZWxkcyBtaXNzaW5nXHJcbiAgICAgIGlmIChpbnZhbGlkUmVxdWlyZWRDb3VudCA+IDApIHtcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvci5lbWl0KFxyXG4gICAgICAgICAgYFBsZWFzZSBmaWxsIGFsbCByZXF1aXJlZCBmaWVsZHMgbWFya2VkIHdpdGggKi4gJHtpbnZhbGlkUmVxdWlyZWRDb3VudH0gZmllbGQocykgbmVlZCBhdHRlbnRpb24uYFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZvcm1EYXRhID0gdGhpcy5mb3JtLmdldFJhd1ZhbHVlKCk7XHJcbiAgICB0aGlzLmNvbmZpZy5vblN1Ym1pdChmb3JtRGF0YSk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVSZXNldCgpIHtcclxuICAgIHRoaXMuc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmZvcm0ucmVzZXQoKTtcclxuICAgIGlmICh0aGlzLmNvbmZpZy5vblJlc2V0KSB7XHJcbiAgICAgIHRoaXMuY29uZmlnLm9uUmVzZXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzRmllbGRJbnZhbGlkKGZpZWxkTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuZm9ybS5nZXQoZmllbGROYW1lKTtcclxuICAgIHJldHVybiAhIShmaWVsZCAmJiBmaWVsZC5pbnZhbGlkICYmIHRoaXMuc3VibWl0dGVkKTtcclxuICB9XHJcblxyXG4gIGdldEVycm9yTWVzc2FnZShmaWVsZE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuZm9ybS5nZXQoZmllbGROYW1lKTtcclxuICAgIGlmICghZmllbGQ/LmVycm9ycykgcmV0dXJuICcnO1xyXG5cclxuICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgYSBjdXN0b20gbWVzc2FnZSBmcm9tIHZhbGlkYXRpb25zXHJcbiAgICBjb25zdCBhbGxDb2x1bW5zID0gdGhpcy5jb25maWcuc2VjdGlvbnMuZmxhdE1hcCgocykgPT4gcy5maWVsZHMpO1xyXG4gICAgY29uc3QgY29sdW1uID0gYWxsQ29sdW1ucy5maW5kKChjKSA9PiBjLm5hbWUgPT09IGZpZWxkTmFtZSk7XHJcbiAgICAvLyBDaGVjayBmb3IgY3VzdG9tIHZhbGlkYXRpb24gZXJyb3JcclxuICAgIGlmIChmaWVsZC5lcnJvcnNbJ2N1c3RvbSddKSB7XHJcbiAgICAgIGNvbnN0IGN1c3RvbVZhbGlkYXRpb24gPSBjb2x1bW4/LnZhbGlkYXRpb25zPy5maW5kKFxyXG4gICAgICAgICh2KSA9PiB2LnR5cGUgPT09ICdjdXN0b20nXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybiBjdXN0b21WYWxpZGF0aW9uPy5tZXNzYWdlIHx8ICdJbnZhbGlkIGZpZWxkJztcclxuICAgIH1cclxuXHJcbiAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGEgY3VzdG9tIG1lc3NhZ2UgZnJvbSB2YWxpZGF0aW9uc1xyXG4gICAgY29uc3QgZXJyb3JLZXlzID0gT2JqZWN0LmtleXMoZmllbGQuZXJyb3JzKTtcclxuICAgIGZvciAoY29uc3Qga2V5IG9mIGVycm9yS2V5cykge1xyXG4gICAgICBjb25zdCB2YWxpZGF0aW9uID0gY29sdW1uPy52YWxpZGF0aW9ucz8uZmluZCgodikgPT4gdi50eXBlID09PSBrZXkpO1xyXG4gICAgICBpZiAodmFsaWRhdGlvbj8ubWVzc2FnZSkge1xyXG4gICAgICAgIHJldHVybiB2YWxpZGF0aW9uLm1lc3NhZ2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIERlZmF1bHQgZXJyb3IgbWVzc2FnZXNcclxuICAgIGlmIChmaWVsZC5lcnJvcnNbJ3JlcXVpcmVkJ10pIHtcclxuICAgICAgcmV0dXJuIGAke2NvbHVtbj8ubGFiZWx9IGlzIHJlcXVpcmVkYDtcclxuICAgIH1cclxuICAgIGlmIChmaWVsZC5lcnJvcnNbJ2VtYWlsJ10pIHJldHVybiAnSW52YWxpZCBlbWFpbCBmb3JtYXQnO1xyXG4gICAgaWYgKGZpZWxkLmVycm9yc1snbWlubGVuZ3RoJ10pXHJcbiAgICAgIHJldHVybiBgTWluaW11bSBsZW5ndGggaXMgJHtmaWVsZC5lcnJvcnNbJ21pbmxlbmd0aCddLnJlcXVpcmVkTGVuZ3RofWA7XHJcbiAgICBpZiAoZmllbGQuZXJyb3JzWydtYXhsZW5ndGgnXSlcclxuICAgICAgcmV0dXJuIGBNYXhpbXVtIGxlbmd0aCBpcyAke2ZpZWxkLmVycm9yc1snbWF4bGVuZ3RoJ10ucmVxdWlyZWRMZW5ndGh9YDtcclxuICAgIGlmIChmaWVsZC5lcnJvcnNbJ21pbiddKVxyXG4gICAgICByZXR1cm4gYE1pbmltdW0gdmFsdWUgaXMgJHtmaWVsZC5lcnJvcnNbJ21pbiddLm1pbn1gO1xyXG4gICAgaWYgKGZpZWxkLmVycm9yc1snbWF4J10pXHJcbiAgICAgIHJldHVybiBgTWF4aW11bSB2YWx1ZSBpcyAke2ZpZWxkLmVycm9yc1snbWF4J10ubWF4fWA7XHJcbiAgICBpZiAoZmllbGQuZXJyb3JzWydwYXR0ZXJuJ10pIHJldHVybiAnSW52YWxpZCBmb3JtYXQnO1xyXG4gICAgcmV0dXJuICdJbnZhbGlkIGZpZWxkJztcclxuICB9XHJcbn1cclxuIl19
|