@stiunb/unb-lib-components 18.0.29 → 18.0.30
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/unb-pessoa/unb-pessoa-form/unb-pessoa-form.component.mjs +3 -3
- package/esm2022/lib/unb-pessoa/unb-pessoa-pesquisar/unb-pessoa-pesquisar.component.mjs +3 -3
- package/fesm2022/stiunb-unb-lib-components.mjs +4 -4
- package/fesm2022/stiunb-unb-lib-components.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -228,11 +228,11 @@ export class UnbPessoaFormComponent {
|
|
|
228
228
|
}
|
|
229
229
|
}
|
|
230
230
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: UnbPessoaFormComponent, deps: [{ token: i1.UnBPessoaService }, { token: i2.MatSnackBar }, { token: i3.UnbMensagemService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
231
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: UnbPessoaFormComponent, selector: "lib-unb-pessoa-form", inputs: { config: "config", hideSalvarButton: "hideSalvarButton" }, outputs: { pessoaEmitted: "pessoaEmitted", isLoadingChange: "isLoadingChange" }, viewQueries: [{ propertyName: "pessoaForm", first: true, predicate: ["pessoaForm"], descendants: true }], ngImport: i0, template: "<mat-progress-bar *ngIf=\"isLoading\" mode=\"indeterminate\"></mat-progress-bar>\r\n\r\n<unb-mensagem [identificador]=\"idMensagemService\"></unb-mensagem>\r\n\r\n<!-- Label indicando que est\u00E1 incluindo nova pessoa -->\r\n<div *ngIf=\"documentoPesquisado\"\r\n class=\"status-banner\" \r\n [ngClass]=\"{\r\n 'status-inclusao': !pessoa.codigoPessoa,\r\n 'status-edicao': pessoa.codigoPessoa && !isReadyOnly,\r\n 'status-bloqueado': config.isReadyOnly\r\n }\">\r\n\r\n <mat-icon>\r\n {{ !pessoa.codigoPessoa ? 'person_add' : (isReadyOnly ? 'lock' : 'edit') }}\r\n </mat-icon>\r\n\r\n <span>\r\n <ng-container *ngIf=\"!pessoa.codigoPessoa\">Incluindo nova pessoa</ng-container>\r\n <ng-container *ngIf=\"pessoa.codigoPessoa && !isReadyOnly\">Editando pessoa</ng-container>\r\n <ng-container *ngIf=\"isReadyOnly\">Registro SIAPE (Visualiza\u00E7\u00E3o)</ng-container> com <strong>{{ getLabelDocumento() }} {{ documentoPesquisado }}</strong>\r\n </span>\r\n</div>\r\n\r\n<form #pessoaForm=\"ngForm\" [class.readonly]=\"isReadyOnly || isLoading\" class=\"form-container\" (ngSubmit)=\"salvar(pessoaForm)\">\r\n <!-- Campos Pessoa F\u00EDsica e Estrangeira -->\r\n <ng-container\r\n *ngIf=\"pessoa.tipoPessoa == tipoPessoaEnum().FISICA || pessoa.tipoPessoa == tipoPessoaEnum().ESTRANGEIRA\">\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Nome</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.nome\" name=\"nome\" #nome=\"ngModel\" required />\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-20\" appearance=\"outline\">\r\n <mat-label>Sexo</mat-label>\r\n <mat-select [(ngModel)]=\"pessoa.codigoSexo\" name=\"codigoSexo\" #codigoSexo=\"ngModel\" required>\r\n <mat-option [value]=\"1\">Masculino</mat-option>\r\n <mat-option [value]=\"2\">Feminino</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Data Nascimento</mat-label>\r\n <input matInput [matDatepicker]=\"dataNascimentoPicker\" [(ngModel)]=\"pessoa.dataNascimento\" name=\"dataNascimento\"\r\n #dataNascimento=\"ngModel\" required>\r\n <mat-datepicker-toggle matSuffix [for]=\"dataNascimentoPicker\"></mat-datepicker-toggle>\r\n <mat-datepicker #dataNascimentoPicker></mat-datepicker>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-20\" appearance=\"outline\">\r\n <mat-label>Estado Civil</mat-label>\r\n <mat-select [(ngModel)]=\"pessoa.codigoEstadoCivil\" name=\"codigoEstadoCivil\" #codigoEstadoCivil=\"ngModel\">\r\n <mat-option *ngFor=\"let estado of estadosCivil | async\" [value]=\"estado.codigo\">\r\n {{ estado.denominacao }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <!--\r\n <mat-form-field class=\"form-15\" appearance=\"outline\">\r\n <mat-label>Naturalidade</mat-label>\r\n <mat-select [(ngModel)]=\"pessoa.naturalidade\" name=\"naturalidade\" #naturalidade=\"ngModel\" required>\r\n <mat-option *ngFor=\"let cidade of getListaEstados()\" [value]=\"cidade.codigo\">\r\n {{ cidade.descricao }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n -->\r\n <mat-form-field class=\"form-20\" appearance=\"outline\">\r\n <mat-label>Pa\u00EDs Nascimento</mat-label>\r\n <mat-select [(ngModel)]=\"pessoa.codigoPaisNascimento\" name=\"codigoPaisNascimento\" #codigoPaisNascimento=\"ngModel\"\r\n required>\r\n <mat-option *ngFor=\"let paisNascimento of paises | async\" [value]=\"paisNascimento.codigo\">\r\n <span *ngIf=\"paisNascimento.denominacao === 'BRASIL'\">\uD83C\uDDE7\uD83C\uDDF7 <b>{{ paisNascimento.denominacao }}</b></span>\r\n <span *ngIf=\"paisNascimento.denominacao !== 'BRASIL'\">{{ paisNascimento.denominacao }}</span>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-20\" appearance=\"outline\" *ngIf=\"pessoa.codigoPaisNascimento == 22\"> <!-- 22 eh Brasil-->\r\n <mat-label>UF Nascimento</mat-label>\r\n <mat-select [(ngModel)]=\"pessoa.ufNascimento\" name=\"ufNascimento\" #ufNascimento=\"ngModel\" required>\r\n <mat-option *ngFor=\"let estado of getListaEstados()\" [value]=\"estado.identificador\">\r\n {{ estado.identificador }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-20\" appearance=\"outline\" *ngIf=\"pessoa.codigoPaisNascimento == 22\">\r\n <mat-label>Naturalidade</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.naturalidade\" name=\"naturalidade\" #naturalidade=\"ngModel\"\r\n required />\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-20\" appearance=\"outline\">\r\n <mat-label>Escolaridade</mat-label>\r\n <mat-select [(ngModel)]=\"pessoa.escolaridade\" name=\"codigoEscolaridade\" #codigoEscolaridade=\"ngModel\" required>\r\n <mat-option *ngFor=\"let escolaridade of escolaridade | async\" [value]=\"escolaridade.codigo\">\r\n {{ escolaridade.denominacao }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Nome Social</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.nomeSocial\" name=\"nomeSocial\" #nomeSocial=\"ngModel\" />\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Nome da M\u00E3e</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.nomeMae\" name=\"nomeMae\" #nomeMae=\"ngModel\" required />\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Nome do Pai</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.nomePai\" name=\"nomePai\" #nomePai=\"ngModel\" required />\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <!-- Campos Pessoa Jur\u00EDdica -->\r\n <ng-container *ngIf=\"pessoa.tipoPessoa === tipoPessoaEnum().JURIDICA\">\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Raz\u00E3o Social</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.razaoSocial\" name=\"razaoSocial\" />\r\n </mat-form-field>\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Nome Fantasia</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.nomeFantasia\" name=\"nomeFantasia\" />\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"pessoa.tipoPessoa == tipoPessoaEnum().FISICA\">\r\n <b style=\"flex: 1 1 100%; margin-bottom: 10px;\">Documenta\u00E7\u00E3o</b>\r\n\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Identidade</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.rg\" name=\"rg\" #rg=\"ngModel\" required />\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>\u00D3rg\u00E3o Emissor</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.rgOrgao\" name=\"rgOrgao\" #rgOrgao=\"ngModel\" required />\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Unidade Federativa</mat-label>\r\n <mat-select [(ngModel)]=\"pessoa.rgUf\" name=\"rgUf\" #rgUf=\"ngModel\" required>\r\n <mat-option *ngFor=\"let estado of getListaEstados()\" [value]=\"estado.identificador\">\r\n {{ estado.identificador }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-20\" appearance=\"outline\">\r\n <mat-label>Data de Emiss\u00E3o</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.rgDataEmissao\" name=\"rgDataEmissao\" #rgDataEmissao=\"ngModel\" />\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"pessoa.tipoPessoa == tipoPessoaEnum().ESTRANGEIRA || pessoa.codigoPaisNascimento != 22\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Data Chegada Brasil</mat-label>\r\n <input matInput [matDatepicker]=\"dataChegadaBrasilPicker\" [(ngModel)]=\"pessoa.dataChegadaBrasil\"\r\n name=\"dataChegadaBrasil\" #dataChegadaBrasil=\"ngModel\" required>\r\n <mat-datepicker-toggle matSuffix [for]=\"dataChegadaBrasilPicker\"></mat-datepicker-toggle>\r\n <mat-datepicker #dataChegadaBrasilPicker></mat-datepicker>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-10\" appearance=\"outline\">\r\n <mat-label>Pa\u00EDs Passaporte</mat-label>\r\n <mat-select [(ngModel)]=\"pessoa.codigoPaisPassaporte\" name=\"codigoPaisPassaporte\" #codigoPaisPassaporte=\"ngModel\"\r\n required>\r\n <mat-option *ngFor=\"let paisNascimento of paises | async\" [value]=\"paisNascimento.codigo\">\r\n {{ paisNascimento.denominacao }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>N\u00FAmero Passaporte</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.passaporte\" name=\"passaporte\" #passaporte=\"ngModel\" required />\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <lib-unb-pessoa-telefone-list style=\"flex: 1 1 100%;\" [backendURL]=\"config.backendURL\" [telefones]=\"pessoa.telefones\"\r\n (telefonesEmitted)=\"telefonesEmitted($event)\"></lib-unb-pessoa-telefone-list>\r\n\r\n <lib-unb-pessoa-endereco-list style=\"flex: 1 1 100%;\" [backendURL]=\"config.backendURL\" [enderecos]=\"pessoa.enderecos\"\r\n (enderecosEmitted)=\"enderecosEmitted($event)\"></lib-unb-pessoa-endereco-list>\r\n\r\n <lib-unb-pessoa-email-list style=\"flex: 1 1 100%;\" [backendURL]=\"config.backendURL\" [emails]=\"pessoa.emails\"\r\n (emailsEmitted)=\"emailsEmitted($event)\"></lib-unb-pessoa-email-list>\r\n\r\n <div *ngIf=\"isReadyOnly\" style=\"flex:1 1 100%; margin-bottom:10px;\">\r\n <mat-card>\r\n <mat-card-content>\r\n <strong>Servidor com matr\u00EDcula SIAPE deve ter seus dados autalizados pelo aplicativo do sougov</strong>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n\r\n <mat-card-actions class=\"card-actions-buttons\" *ngIf=\"!hideSalvarButton\">\r\n <button mat-flat-button [disabled]=\"isLoading || isReadyOnly\" type=\"submit\" color=\"primary\">\r\n Salvar\r\n </button>\r\n </mat-card-actions>\r\n\r\n</form>", styles: [".card-actions-buttons{display:flex;gap:5px;flex-wrap:wrap}.form-container{display:flex;flex-wrap:wrap;column-gap:10px;margin-top:5px}:host{display:block}@media (max-width: 1000px){.form-container{flex-direction:column;gap:5px}}.break{flex-basis:100%;height:0}.form-5{flex:1 1 5%}.inline-table-container{display:flex;align-items:center;justify-content:space-between;padding:5px}@media (max-width: 600px){.form-5,.form-10,.form-15{flex:1 1 100%}}.form-10{flex:1 1 10%}.form-15{flex:1 1 15%}.form-20{flex:1 1 20%}.form-25{flex:1 1 25%}.form-30{flex:1 1 30%}.form-35{flex:1 1 35%}.form-40{flex:1 1 40%}.form-45{flex:1 1 45%}.form-50{flex:1 1 50%}.form-100{flex:1 1 100%;min-width:250px}.readonly{pointer-events:none;opacity:.6}.disabled-wrapper{pointer-events:none;opacity:.6;filter:grayscale(1)}.status-banner{display:flex;align-items:center;gap:8px;padding:10px 16px;margin:2px 0 20px;border-radius:6px;font-size:14px;font-weight:500}.status-banner.status-inclusao{background-color:#e3f2fd;color:#1565c0;border:1px solid #bbdefb}.status-banner.status-edicao{background-color:#fff3e0;color:#ef6c00;border:1px solid #ffe0b2}.status-banner.status-bloqueado{background-color:#fce4ec;color:#c2185b;border:1px solid #f8bbd0}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i8.UnbMensagemComponent, selector: "unb-mensagem", inputs: ["mensagem", "tipo", "identificador"] }, { kind: "component", type: i9.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i9.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i9.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i10.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i10.MatLabel, selector: "mat-label" }, { kind: "directive", type: i10.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i12.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i13.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i14.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i15.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i15.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i15.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i16.UnbPessoaTelefoneListComponent, selector: "lib-unb-pessoa-telefone-list", inputs: ["podeEditar", "telefones", "backendURL"], outputs: ["telefonesEmitted"] }, { kind: "component", type: i17.UnbPessoaenderecoListComponent, selector: "lib-unb-pessoa-endereco-list", inputs: ["podeEditar", "enderecos", "backendURL"], outputs: ["enderecosEmitted"] }, { kind: "component", type: i18.UnbPessoaEmailListComponent, selector: "lib-unb-pessoa-email-list", inputs: ["podeEditar", "emails", "backendURL"], outputs: ["emailsEmitted"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] }); }
|
|
231
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: UnbPessoaFormComponent, selector: "lib-unb-pessoa-form", inputs: { config: "config", hideSalvarButton: "hideSalvarButton" }, outputs: { pessoaEmitted: "pessoaEmitted", isLoadingChange: "isLoadingChange" }, viewQueries: [{ propertyName: "pessoaForm", first: true, predicate: ["pessoaForm"], descendants: true }], ngImport: i0, template: "<mat-progress-bar *ngIf=\"isLoading\" mode=\"indeterminate\"></mat-progress-bar>\r\n\r\n<unb-mensagem [identificador]=\"idMensagemService\"></unb-mensagem>\r\n\r\n<!-- Label indicando que est\u00E1 incluindo nova pessoa -->\r\n<div *ngIf=\"documentoPesquisado\"\r\n class=\"status-banner\" \r\n [ngClass]=\"{\r\n 'status-inclusao': !pessoa.codigoPessoa,\r\n 'status-edicao': pessoa.codigoPessoa && !isReadyOnly,\r\n 'status-bloqueado': config.isReadyOnly\r\n }\">\r\n\r\n <mat-icon>\r\n {{ !pessoa.codigoPessoa ? 'person_add' : (isReadyOnly ? 'lock' : 'edit') }}\r\n </mat-icon>\r\n\r\n <span>\r\n <ng-container *ngIf=\"!pessoa.codigoPessoa\">Incluindo nova pessoa</ng-container>\r\n <ng-container *ngIf=\"pessoa.codigoPessoa && !isReadyOnly\">Editando pessoa</ng-container>\r\n <ng-container *ngIf=\"isReadyOnly\">Registro SIAPE (Visualiza\u00E7\u00E3o)</ng-container> com <strong>{{ getLabelDocumento() }} {{ documentoPesquisado }}</strong>\r\n </span>\r\n</div>\r\n\r\n<form #pessoaForm=\"ngForm\" [class.readonly]=\"isReadyOnly || isLoading\" class=\"form-container\" (ngSubmit)=\"salvar(pessoaForm)\">\r\n <!-- Campos Pessoa F\u00EDsica e Estrangeira -->\r\n <ng-container\r\n *ngIf=\"pessoa.tipoPessoa == tipoPessoaEnum().FISICA || pessoa.tipoPessoa == tipoPessoaEnum().ESTRANGEIRA\">\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Nome</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.nome\" name=\"nome\" #nome=\"ngModel\" required />\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-20\" appearance=\"outline\">\r\n <mat-label>Sexo</mat-label>\r\n <mat-select [(ngModel)]=\"pessoa.codigoSexo\" name=\"codigoSexo\" #codigoSexo=\"ngModel\" required>\r\n <mat-option [value]=\"1\">Masculino</mat-option>\r\n <mat-option [value]=\"2\">Feminino</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Data Nascimento</mat-label>\r\n <input matInput [matDatepicker]=\"dataNascimentoPicker\" [(ngModel)]=\"pessoa.dataNascimento\" name=\"dataNascimento\"\r\n #dataNascimento=\"ngModel\" required>\r\n <mat-datepicker-toggle matSuffix [for]=\"dataNascimentoPicker\"></mat-datepicker-toggle>\r\n <mat-datepicker #dataNascimentoPicker></mat-datepicker>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-20\" appearance=\"outline\">\r\n <mat-label>Estado Civil</mat-label>\r\n <mat-select [(ngModel)]=\"pessoa.codigoEstadoCivil\" name=\"codigoEstadoCivil\" #codigoEstadoCivil=\"ngModel\">\r\n <mat-option *ngFor=\"let estado of estadosCivil | async\" [value]=\"estado.codigo\">\r\n {{ estado.denominacao }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <!--\r\n <mat-form-field class=\"form-15\" appearance=\"outline\">\r\n <mat-label>Naturalidade</mat-label>\r\n <mat-select [(ngModel)]=\"pessoa.naturalidade\" name=\"naturalidade\" #naturalidade=\"ngModel\" required>\r\n <mat-option *ngFor=\"let cidade of getListaEstados()\" [value]=\"cidade.codigo\">\r\n {{ cidade.descricao }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n -->\r\n <mat-form-field class=\"form-20\" appearance=\"outline\">\r\n <mat-label>Pa\u00EDs Nascimento</mat-label>\r\n <mat-select [(ngModel)]=\"pessoa.codigoPaisNascimento\" name=\"codigoPaisNascimento\" #codigoPaisNascimento=\"ngModel\"\r\n required>\r\n <mat-option *ngFor=\"let paisNascimento of paises | async\" [value]=\"paisNascimento.codigo\">\r\n <span *ngIf=\"paisNascimento.denominacao === 'BRASIL'\">\uD83C\uDDE7\uD83C\uDDF7 <b>{{ paisNascimento.denominacao }}</b></span>\r\n <span *ngIf=\"paisNascimento.denominacao !== 'BRASIL'\">{{ paisNascimento.denominacao }}</span>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-20\" appearance=\"outline\" *ngIf=\"pessoa.codigoPaisNascimento == 22\"> <!-- 22 eh Brasil-->\r\n <mat-label>UF Nascimento</mat-label>\r\n <mat-select [(ngModel)]=\"pessoa.ufNascimento\" name=\"ufNascimento\" #ufNascimento=\"ngModel\" required>\r\n <mat-option *ngFor=\"let estado of getListaEstados()\" [value]=\"estado.identificador\">\r\n {{ estado.identificador }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-20\" appearance=\"outline\" *ngIf=\"pessoa.codigoPaisNascimento == 22\">\r\n <mat-label>Naturalidade</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.naturalidade\" name=\"naturalidade\" #naturalidade=\"ngModel\"\r\n required />\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-20\" appearance=\"outline\">\r\n <mat-label>Escolaridade</mat-label>\r\n <mat-select [(ngModel)]=\"pessoa.escolaridade\" name=\"codigoEscolaridade\" #codigoEscolaridade=\"ngModel\" required>\r\n <mat-option *ngFor=\"let escolaridade of escolaridade | async\" [value]=\"escolaridade.codigo\">\r\n {{ escolaridade.denominacao }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Nome Social</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.nomeSocial\" name=\"nomeSocial\" #nomeSocial=\"ngModel\" />\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Nome da M\u00E3e</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.nomeMae\" name=\"nomeMae\" #nomeMae=\"ngModel\" required />\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Nome do Pai</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.nomePai\" name=\"nomePai\" #nomePai=\"ngModel\" required />\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <!-- Campos Pessoa Jur\u00EDdica -->\r\n <ng-container *ngIf=\"pessoa.tipoPessoa === tipoPessoaEnum().JURIDICA\">\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Raz\u00E3o Social</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.razaoSocial\" name=\"razaoSocial\" />\r\n </mat-form-field>\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Nome Fantasia</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.nomeFantasia\" name=\"nomeFantasia\" />\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"pessoa.tipoPessoa == tipoPessoaEnum().FISICA\">\r\n <b style=\"flex: 1 1 100%; margin-bottom: 10px;\">Documenta\u00E7\u00E3o</b>\r\n\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Identidade</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.rg\" name=\"rg\" #rg=\"ngModel\" required />\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>\u00D3rg\u00E3o Emissor</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.rgOrgao\" name=\"rgOrgao\" #rgOrgao=\"ngModel\" required />\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Unidade Federativa</mat-label>\r\n <mat-select [(ngModel)]=\"pessoa.rgUf\" name=\"rgUf\" #rgUf=\"ngModel\" required>\r\n <mat-option *ngFor=\"let estado of getListaEstados()\" [value]=\"estado.identificador\">\r\n {{ estado.identificador }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-20\" appearance=\"outline\">\r\n <mat-label>Data de Emiss\u00E3o</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.rgDataEmissao\" name=\"rgDataEmissao\" #rgDataEmissao=\"ngModel\" />\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"pessoa.tipoPessoa != tipoPessoaEnum().JURIDICA && (pessoa.tipoPessoa == tipoPessoaEnum().ESTRANGEIRA || pessoa.codigoPaisNascimento != 22)\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Data Chegada Brasil</mat-label>\r\n <input matInput [matDatepicker]=\"dataChegadaBrasilPicker\" [(ngModel)]=\"pessoa.dataChegadaBrasil\"\r\n name=\"dataChegadaBrasil\" #dataChegadaBrasil=\"ngModel\" required>\r\n <mat-datepicker-toggle matSuffix [for]=\"dataChegadaBrasilPicker\"></mat-datepicker-toggle>\r\n <mat-datepicker #dataChegadaBrasilPicker></mat-datepicker>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-10\" appearance=\"outline\">\r\n <mat-label>Pa\u00EDs Passaporte</mat-label>\r\n <mat-select [(ngModel)]=\"pessoa.codigoPaisPassaporte\" name=\"codigoPaisPassaporte\" #codigoPaisPassaporte=\"ngModel\"\r\n required>\r\n <mat-option *ngFor=\"let paisNascimento of paises | async\" [value]=\"paisNascimento.codigo\">\r\n {{ paisNascimento.denominacao }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>N\u00FAmero Passaporte</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.passaporte\" name=\"passaporte\" #passaporte=\"ngModel\" required />\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <lib-unb-pessoa-telefone-list style=\"flex: 1 1 100%;\" [backendURL]=\"config.backendURL\" [telefones]=\"pessoa.telefones\"\r\n (telefonesEmitted)=\"telefonesEmitted($event)\"></lib-unb-pessoa-telefone-list>\r\n\r\n <lib-unb-pessoa-endereco-list style=\"flex: 1 1 100%;\" [backendURL]=\"config.backendURL\" [enderecos]=\"pessoa.enderecos\"\r\n (enderecosEmitted)=\"enderecosEmitted($event)\"></lib-unb-pessoa-endereco-list>\r\n\r\n <lib-unb-pessoa-email-list style=\"flex: 1 1 100%;\" [backendURL]=\"config.backendURL\" [emails]=\"pessoa.emails\"\r\n (emailsEmitted)=\"emailsEmitted($event)\"></lib-unb-pessoa-email-list>\r\n\r\n <div *ngIf=\"isReadyOnly\" style=\"flex:1 1 100%; margin-bottom:10px;\">\r\n <mat-card>\r\n <mat-card-content>\r\n <strong>Servidor com matr\u00EDcula SIAPE deve ter seus dados autalizados pelo aplicativo do sougov</strong>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n\r\n <mat-card-actions class=\"card-actions-buttons\" *ngIf=\"!hideSalvarButton\">\r\n <button mat-flat-button [disabled]=\"isLoading || isReadyOnly\" type=\"submit\" color=\"primary\">\r\n Salvar\r\n </button>\r\n </mat-card-actions>\r\n\r\n</form>", styles: [".card-actions-buttons{display:flex;gap:5px;flex-wrap:wrap}.form-container{display:flex;flex-wrap:wrap;column-gap:10px;margin-top:5px}:host{display:block}@media (max-width: 1000px){.form-container{flex-direction:column;gap:5px}}.break{flex-basis:100%;height:0}.form-5{flex:1 1 5%}.inline-table-container{display:flex;align-items:center;justify-content:space-between;padding:5px}@media (max-width: 600px){.form-5,.form-10,.form-15{flex:1 1 100%}}.form-10{flex:1 1 10%}.form-15{flex:1 1 15%}.form-20{flex:1 1 20%}.form-25{flex:1 1 25%}.form-30{flex:1 1 30%}.form-35{flex:1 1 35%}.form-40{flex:1 1 40%}.form-45{flex:1 1 45%}.form-50{flex:1 1 50%}.form-100{flex:1 1 100%;min-width:250px}.readonly{pointer-events:none;opacity:.6}.disabled-wrapper{pointer-events:none;opacity:.6;filter:grayscale(1)}.status-banner{display:flex;align-items:center;gap:8px;padding:10px 16px;margin:2px 0 20px;border-radius:6px;font-size:14px;font-weight:500}.status-banner.status-inclusao{background-color:#e3f2fd;color:#1565c0;border:1px solid #bbdefb}.status-banner.status-edicao{background-color:#fff3e0;color:#ef6c00;border:1px solid #ffe0b2}.status-banner.status-bloqueado{background-color:#fce4ec;color:#c2185b;border:1px solid #f8bbd0}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i8.UnbMensagemComponent, selector: "unb-mensagem", inputs: ["mensagem", "tipo", "identificador"] }, { kind: "component", type: i9.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i9.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i9.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i10.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i10.MatLabel, selector: "mat-label" }, { kind: "directive", type: i10.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i12.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i13.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i14.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i15.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i15.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i15.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i16.UnbPessoaTelefoneListComponent, selector: "lib-unb-pessoa-telefone-list", inputs: ["podeEditar", "telefones", "backendURL"], outputs: ["telefonesEmitted"] }, { kind: "component", type: i17.UnbPessoaenderecoListComponent, selector: "lib-unb-pessoa-endereco-list", inputs: ["podeEditar", "enderecos", "backendURL"], outputs: ["enderecosEmitted"] }, { kind: "component", type: i18.UnbPessoaEmailListComponent, selector: "lib-unb-pessoa-email-list", inputs: ["podeEditar", "emails", "backendURL"], outputs: ["emailsEmitted"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] }); }
|
|
232
232
|
}
|
|
233
233
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: UnbPessoaFormComponent, decorators: [{
|
|
234
234
|
type: Component,
|
|
235
|
-
args: [{ selector: 'lib-unb-pessoa-form', standalone: false, template: "<mat-progress-bar *ngIf=\"isLoading\" mode=\"indeterminate\"></mat-progress-bar>\r\n\r\n<unb-mensagem [identificador]=\"idMensagemService\"></unb-mensagem>\r\n\r\n<!-- Label indicando que est\u00E1 incluindo nova pessoa -->\r\n<div *ngIf=\"documentoPesquisado\"\r\n class=\"status-banner\" \r\n [ngClass]=\"{\r\n 'status-inclusao': !pessoa.codigoPessoa,\r\n 'status-edicao': pessoa.codigoPessoa && !isReadyOnly,\r\n 'status-bloqueado': config.isReadyOnly\r\n }\">\r\n\r\n <mat-icon>\r\n {{ !pessoa.codigoPessoa ? 'person_add' : (isReadyOnly ? 'lock' : 'edit') }}\r\n </mat-icon>\r\n\r\n <span>\r\n <ng-container *ngIf=\"!pessoa.codigoPessoa\">Incluindo nova pessoa</ng-container>\r\n <ng-container *ngIf=\"pessoa.codigoPessoa && !isReadyOnly\">Editando pessoa</ng-container>\r\n <ng-container *ngIf=\"isReadyOnly\">Registro SIAPE (Visualiza\u00E7\u00E3o)</ng-container> com <strong>{{ getLabelDocumento() }} {{ documentoPesquisado }}</strong>\r\n </span>\r\n</div>\r\n\r\n<form #pessoaForm=\"ngForm\" [class.readonly]=\"isReadyOnly || isLoading\" class=\"form-container\" (ngSubmit)=\"salvar(pessoaForm)\">\r\n <!-- Campos Pessoa F\u00EDsica e Estrangeira -->\r\n <ng-container\r\n *ngIf=\"pessoa.tipoPessoa == tipoPessoaEnum().FISICA || pessoa.tipoPessoa == tipoPessoaEnum().ESTRANGEIRA\">\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Nome</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.nome\" name=\"nome\" #nome=\"ngModel\" required />\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-20\" appearance=\"outline\">\r\n <mat-label>Sexo</mat-label>\r\n <mat-select [(ngModel)]=\"pessoa.codigoSexo\" name=\"codigoSexo\" #codigoSexo=\"ngModel\" required>\r\n <mat-option [value]=\"1\">Masculino</mat-option>\r\n <mat-option [value]=\"2\">Feminino</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Data Nascimento</mat-label>\r\n <input matInput [matDatepicker]=\"dataNascimentoPicker\" [(ngModel)]=\"pessoa.dataNascimento\" name=\"dataNascimento\"\r\n #dataNascimento=\"ngModel\" required>\r\n <mat-datepicker-toggle matSuffix [for]=\"dataNascimentoPicker\"></mat-datepicker-toggle>\r\n <mat-datepicker #dataNascimentoPicker></mat-datepicker>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-20\" appearance=\"outline\">\r\n <mat-label>Estado Civil</mat-label>\r\n <mat-select [(ngModel)]=\"pessoa.codigoEstadoCivil\" name=\"codigoEstadoCivil\" #codigoEstadoCivil=\"ngModel\">\r\n <mat-option *ngFor=\"let estado of estadosCivil | async\" [value]=\"estado.codigo\">\r\n {{ estado.denominacao }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <!--\r\n <mat-form-field class=\"form-15\" appearance=\"outline\">\r\n <mat-label>Naturalidade</mat-label>\r\n <mat-select [(ngModel)]=\"pessoa.naturalidade\" name=\"naturalidade\" #naturalidade=\"ngModel\" required>\r\n <mat-option *ngFor=\"let cidade of getListaEstados()\" [value]=\"cidade.codigo\">\r\n {{ cidade.descricao }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n -->\r\n <mat-form-field class=\"form-20\" appearance=\"outline\">\r\n <mat-label>Pa\u00EDs Nascimento</mat-label>\r\n <mat-select [(ngModel)]=\"pessoa.codigoPaisNascimento\" name=\"codigoPaisNascimento\" #codigoPaisNascimento=\"ngModel\"\r\n required>\r\n <mat-option *ngFor=\"let paisNascimento of paises | async\" [value]=\"paisNascimento.codigo\">\r\n <span *ngIf=\"paisNascimento.denominacao === 'BRASIL'\">\uD83C\uDDE7\uD83C\uDDF7 <b>{{ paisNascimento.denominacao }}</b></span>\r\n <span *ngIf=\"paisNascimento.denominacao !== 'BRASIL'\">{{ paisNascimento.denominacao }}</span>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-20\" appearance=\"outline\" *ngIf=\"pessoa.codigoPaisNascimento == 22\"> <!-- 22 eh Brasil-->\r\n <mat-label>UF Nascimento</mat-label>\r\n <mat-select [(ngModel)]=\"pessoa.ufNascimento\" name=\"ufNascimento\" #ufNascimento=\"ngModel\" required>\r\n <mat-option *ngFor=\"let estado of getListaEstados()\" [value]=\"estado.identificador\">\r\n {{ estado.identificador }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-20\" appearance=\"outline\" *ngIf=\"pessoa.codigoPaisNascimento == 22\">\r\n <mat-label>Naturalidade</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.naturalidade\" name=\"naturalidade\" #naturalidade=\"ngModel\"\r\n required />\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-20\" appearance=\"outline\">\r\n <mat-label>Escolaridade</mat-label>\r\n <mat-select [(ngModel)]=\"pessoa.escolaridade\" name=\"codigoEscolaridade\" #codigoEscolaridade=\"ngModel\" required>\r\n <mat-option *ngFor=\"let escolaridade of escolaridade | async\" [value]=\"escolaridade.codigo\">\r\n {{ escolaridade.denominacao }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Nome Social</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.nomeSocial\" name=\"nomeSocial\" #nomeSocial=\"ngModel\" />\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Nome da M\u00E3e</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.nomeMae\" name=\"nomeMae\" #nomeMae=\"ngModel\" required />\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Nome do Pai</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.nomePai\" name=\"nomePai\" #nomePai=\"ngModel\" required />\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <!-- Campos Pessoa Jur\u00EDdica -->\r\n <ng-container *ngIf=\"pessoa.tipoPessoa === tipoPessoaEnum().JURIDICA\">\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Raz\u00E3o Social</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.razaoSocial\" name=\"razaoSocial\" />\r\n </mat-form-field>\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Nome Fantasia</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.nomeFantasia\" name=\"nomeFantasia\" />\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"pessoa.tipoPessoa == tipoPessoaEnum().FISICA\">\r\n <b style=\"flex: 1 1 100%; margin-bottom: 10px;\">Documenta\u00E7\u00E3o</b>\r\n\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Identidade</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.rg\" name=\"rg\" #rg=\"ngModel\" required />\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>\u00D3rg\u00E3o Emissor</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.rgOrgao\" name=\"rgOrgao\" #rgOrgao=\"ngModel\" required />\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Unidade Federativa</mat-label>\r\n <mat-select [(ngModel)]=\"pessoa.rgUf\" name=\"rgUf\" #rgUf=\"ngModel\" required>\r\n <mat-option *ngFor=\"let estado of getListaEstados()\" [value]=\"estado.identificador\">\r\n {{ estado.identificador }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-20\" appearance=\"outline\">\r\n <mat-label>Data de Emiss\u00E3o</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.rgDataEmissao\" name=\"rgDataEmissao\" #rgDataEmissao=\"ngModel\" />\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"pessoa.tipoPessoa == tipoPessoaEnum().ESTRANGEIRA || pessoa.codigoPaisNascimento != 22\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Data Chegada Brasil</mat-label>\r\n <input matInput [matDatepicker]=\"dataChegadaBrasilPicker\" [(ngModel)]=\"pessoa.dataChegadaBrasil\"\r\n name=\"dataChegadaBrasil\" #dataChegadaBrasil=\"ngModel\" required>\r\n <mat-datepicker-toggle matSuffix [for]=\"dataChegadaBrasilPicker\"></mat-datepicker-toggle>\r\n <mat-datepicker #dataChegadaBrasilPicker></mat-datepicker>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-10\" appearance=\"outline\">\r\n <mat-label>Pa\u00EDs Passaporte</mat-label>\r\n <mat-select [(ngModel)]=\"pessoa.codigoPaisPassaporte\" name=\"codigoPaisPassaporte\" #codigoPaisPassaporte=\"ngModel\"\r\n required>\r\n <mat-option *ngFor=\"let paisNascimento of paises | async\" [value]=\"paisNascimento.codigo\">\r\n {{ paisNascimento.denominacao }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>N\u00FAmero Passaporte</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.passaporte\" name=\"passaporte\" #passaporte=\"ngModel\" required />\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <lib-unb-pessoa-telefone-list style=\"flex: 1 1 100%;\" [backendURL]=\"config.backendURL\" [telefones]=\"pessoa.telefones\"\r\n (telefonesEmitted)=\"telefonesEmitted($event)\"></lib-unb-pessoa-telefone-list>\r\n\r\n <lib-unb-pessoa-endereco-list style=\"flex: 1 1 100%;\" [backendURL]=\"config.backendURL\" [enderecos]=\"pessoa.enderecos\"\r\n (enderecosEmitted)=\"enderecosEmitted($event)\"></lib-unb-pessoa-endereco-list>\r\n\r\n <lib-unb-pessoa-email-list style=\"flex: 1 1 100%;\" [backendURL]=\"config.backendURL\" [emails]=\"pessoa.emails\"\r\n (emailsEmitted)=\"emailsEmitted($event)\"></lib-unb-pessoa-email-list>\r\n\r\n <div *ngIf=\"isReadyOnly\" style=\"flex:1 1 100%; margin-bottom:10px;\">\r\n <mat-card>\r\n <mat-card-content>\r\n <strong>Servidor com matr\u00EDcula SIAPE deve ter seus dados autalizados pelo aplicativo do sougov</strong>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n\r\n <mat-card-actions class=\"card-actions-buttons\" *ngIf=\"!hideSalvarButton\">\r\n <button mat-flat-button [disabled]=\"isLoading || isReadyOnly\" type=\"submit\" color=\"primary\">\r\n Salvar\r\n </button>\r\n </mat-card-actions>\r\n\r\n</form>", styles: [".card-actions-buttons{display:flex;gap:5px;flex-wrap:wrap}.form-container{display:flex;flex-wrap:wrap;column-gap:10px;margin-top:5px}:host{display:block}@media (max-width: 1000px){.form-container{flex-direction:column;gap:5px}}.break{flex-basis:100%;height:0}.form-5{flex:1 1 5%}.inline-table-container{display:flex;align-items:center;justify-content:space-between;padding:5px}@media (max-width: 600px){.form-5,.form-10,.form-15{flex:1 1 100%}}.form-10{flex:1 1 10%}.form-15{flex:1 1 15%}.form-20{flex:1 1 20%}.form-25{flex:1 1 25%}.form-30{flex:1 1 30%}.form-35{flex:1 1 35%}.form-40{flex:1 1 40%}.form-45{flex:1 1 45%}.form-50{flex:1 1 50%}.form-100{flex:1 1 100%;min-width:250px}.readonly{pointer-events:none;opacity:.6}.disabled-wrapper{pointer-events:none;opacity:.6;filter:grayscale(1)}.status-banner{display:flex;align-items:center;gap:8px;padding:10px 16px;margin:2px 0 20px;border-radius:6px;font-size:14px;font-weight:500}.status-banner.status-inclusao{background-color:#e3f2fd;color:#1565c0;border:1px solid #bbdefb}.status-banner.status-edicao{background-color:#fff3e0;color:#ef6c00;border:1px solid #ffe0b2}.status-banner.status-bloqueado{background-color:#fce4ec;color:#c2185b;border:1px solid #f8bbd0}\n"] }]
|
|
235
|
+
args: [{ selector: 'lib-unb-pessoa-form', standalone: false, template: "<mat-progress-bar *ngIf=\"isLoading\" mode=\"indeterminate\"></mat-progress-bar>\r\n\r\n<unb-mensagem [identificador]=\"idMensagemService\"></unb-mensagem>\r\n\r\n<!-- Label indicando que est\u00E1 incluindo nova pessoa -->\r\n<div *ngIf=\"documentoPesquisado\"\r\n class=\"status-banner\" \r\n [ngClass]=\"{\r\n 'status-inclusao': !pessoa.codigoPessoa,\r\n 'status-edicao': pessoa.codigoPessoa && !isReadyOnly,\r\n 'status-bloqueado': config.isReadyOnly\r\n }\">\r\n\r\n <mat-icon>\r\n {{ !pessoa.codigoPessoa ? 'person_add' : (isReadyOnly ? 'lock' : 'edit') }}\r\n </mat-icon>\r\n\r\n <span>\r\n <ng-container *ngIf=\"!pessoa.codigoPessoa\">Incluindo nova pessoa</ng-container>\r\n <ng-container *ngIf=\"pessoa.codigoPessoa && !isReadyOnly\">Editando pessoa</ng-container>\r\n <ng-container *ngIf=\"isReadyOnly\">Registro SIAPE (Visualiza\u00E7\u00E3o)</ng-container> com <strong>{{ getLabelDocumento() }} {{ documentoPesquisado }}</strong>\r\n </span>\r\n</div>\r\n\r\n<form #pessoaForm=\"ngForm\" [class.readonly]=\"isReadyOnly || isLoading\" class=\"form-container\" (ngSubmit)=\"salvar(pessoaForm)\">\r\n <!-- Campos Pessoa F\u00EDsica e Estrangeira -->\r\n <ng-container\r\n *ngIf=\"pessoa.tipoPessoa == tipoPessoaEnum().FISICA || pessoa.tipoPessoa == tipoPessoaEnum().ESTRANGEIRA\">\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Nome</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.nome\" name=\"nome\" #nome=\"ngModel\" required />\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-20\" appearance=\"outline\">\r\n <mat-label>Sexo</mat-label>\r\n <mat-select [(ngModel)]=\"pessoa.codigoSexo\" name=\"codigoSexo\" #codigoSexo=\"ngModel\" required>\r\n <mat-option [value]=\"1\">Masculino</mat-option>\r\n <mat-option [value]=\"2\">Feminino</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Data Nascimento</mat-label>\r\n <input matInput [matDatepicker]=\"dataNascimentoPicker\" [(ngModel)]=\"pessoa.dataNascimento\" name=\"dataNascimento\"\r\n #dataNascimento=\"ngModel\" required>\r\n <mat-datepicker-toggle matSuffix [for]=\"dataNascimentoPicker\"></mat-datepicker-toggle>\r\n <mat-datepicker #dataNascimentoPicker></mat-datepicker>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-20\" appearance=\"outline\">\r\n <mat-label>Estado Civil</mat-label>\r\n <mat-select [(ngModel)]=\"pessoa.codigoEstadoCivil\" name=\"codigoEstadoCivil\" #codigoEstadoCivil=\"ngModel\">\r\n <mat-option *ngFor=\"let estado of estadosCivil | async\" [value]=\"estado.codigo\">\r\n {{ estado.denominacao }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <!--\r\n <mat-form-field class=\"form-15\" appearance=\"outline\">\r\n <mat-label>Naturalidade</mat-label>\r\n <mat-select [(ngModel)]=\"pessoa.naturalidade\" name=\"naturalidade\" #naturalidade=\"ngModel\" required>\r\n <mat-option *ngFor=\"let cidade of getListaEstados()\" [value]=\"cidade.codigo\">\r\n {{ cidade.descricao }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n -->\r\n <mat-form-field class=\"form-20\" appearance=\"outline\">\r\n <mat-label>Pa\u00EDs Nascimento</mat-label>\r\n <mat-select [(ngModel)]=\"pessoa.codigoPaisNascimento\" name=\"codigoPaisNascimento\" #codigoPaisNascimento=\"ngModel\"\r\n required>\r\n <mat-option *ngFor=\"let paisNascimento of paises | async\" [value]=\"paisNascimento.codigo\">\r\n <span *ngIf=\"paisNascimento.denominacao === 'BRASIL'\">\uD83C\uDDE7\uD83C\uDDF7 <b>{{ paisNascimento.denominacao }}</b></span>\r\n <span *ngIf=\"paisNascimento.denominacao !== 'BRASIL'\">{{ paisNascimento.denominacao }}</span>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-20\" appearance=\"outline\" *ngIf=\"pessoa.codigoPaisNascimento == 22\"> <!-- 22 eh Brasil-->\r\n <mat-label>UF Nascimento</mat-label>\r\n <mat-select [(ngModel)]=\"pessoa.ufNascimento\" name=\"ufNascimento\" #ufNascimento=\"ngModel\" required>\r\n <mat-option *ngFor=\"let estado of getListaEstados()\" [value]=\"estado.identificador\">\r\n {{ estado.identificador }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-20\" appearance=\"outline\" *ngIf=\"pessoa.codigoPaisNascimento == 22\">\r\n <mat-label>Naturalidade</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.naturalidade\" name=\"naturalidade\" #naturalidade=\"ngModel\"\r\n required />\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-20\" appearance=\"outline\">\r\n <mat-label>Escolaridade</mat-label>\r\n <mat-select [(ngModel)]=\"pessoa.escolaridade\" name=\"codigoEscolaridade\" #codigoEscolaridade=\"ngModel\" required>\r\n <mat-option *ngFor=\"let escolaridade of escolaridade | async\" [value]=\"escolaridade.codigo\">\r\n {{ escolaridade.denominacao }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Nome Social</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.nomeSocial\" name=\"nomeSocial\" #nomeSocial=\"ngModel\" />\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Nome da M\u00E3e</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.nomeMae\" name=\"nomeMae\" #nomeMae=\"ngModel\" required />\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Nome do Pai</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.nomePai\" name=\"nomePai\" #nomePai=\"ngModel\" required />\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <!-- Campos Pessoa Jur\u00EDdica -->\r\n <ng-container *ngIf=\"pessoa.tipoPessoa === tipoPessoaEnum().JURIDICA\">\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Raz\u00E3o Social</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.razaoSocial\" name=\"razaoSocial\" />\r\n </mat-form-field>\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Nome Fantasia</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.nomeFantasia\" name=\"nomeFantasia\" />\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"pessoa.tipoPessoa == tipoPessoaEnum().FISICA\">\r\n <b style=\"flex: 1 1 100%; margin-bottom: 10px;\">Documenta\u00E7\u00E3o</b>\r\n\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Identidade</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.rg\" name=\"rg\" #rg=\"ngModel\" required />\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>\u00D3rg\u00E3o Emissor</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.rgOrgao\" name=\"rgOrgao\" #rgOrgao=\"ngModel\" required />\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-25\" appearance=\"outline\">\r\n <mat-label>Unidade Federativa</mat-label>\r\n <mat-select [(ngModel)]=\"pessoa.rgUf\" name=\"rgUf\" #rgUf=\"ngModel\" required>\r\n <mat-option *ngFor=\"let estado of getListaEstados()\" [value]=\"estado.identificador\">\r\n {{ estado.identificador }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-20\" appearance=\"outline\">\r\n <mat-label>Data de Emiss\u00E3o</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.rgDataEmissao\" name=\"rgDataEmissao\" #rgDataEmissao=\"ngModel\" />\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"pessoa.tipoPessoa != tipoPessoaEnum().JURIDICA && (pessoa.tipoPessoa == tipoPessoaEnum().ESTRANGEIRA || pessoa.codigoPaisNascimento != 22)\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Data Chegada Brasil</mat-label>\r\n <input matInput [matDatepicker]=\"dataChegadaBrasilPicker\" [(ngModel)]=\"pessoa.dataChegadaBrasil\"\r\n name=\"dataChegadaBrasil\" #dataChegadaBrasil=\"ngModel\" required>\r\n <mat-datepicker-toggle matSuffix [for]=\"dataChegadaBrasilPicker\"></mat-datepicker-toggle>\r\n <mat-datepicker #dataChegadaBrasilPicker></mat-datepicker>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-10\" appearance=\"outline\">\r\n <mat-label>Pa\u00EDs Passaporte</mat-label>\r\n <mat-select [(ngModel)]=\"pessoa.codigoPaisPassaporte\" name=\"codigoPaisPassaporte\" #codigoPaisPassaporte=\"ngModel\"\r\n required>\r\n <mat-option *ngFor=\"let paisNascimento of paises | async\" [value]=\"paisNascimento.codigo\">\r\n {{ paisNascimento.denominacao }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>N\u00FAmero Passaporte</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.passaporte\" name=\"passaporte\" #passaporte=\"ngModel\" required />\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <lib-unb-pessoa-telefone-list style=\"flex: 1 1 100%;\" [backendURL]=\"config.backendURL\" [telefones]=\"pessoa.telefones\"\r\n (telefonesEmitted)=\"telefonesEmitted($event)\"></lib-unb-pessoa-telefone-list>\r\n\r\n <lib-unb-pessoa-endereco-list style=\"flex: 1 1 100%;\" [backendURL]=\"config.backendURL\" [enderecos]=\"pessoa.enderecos\"\r\n (enderecosEmitted)=\"enderecosEmitted($event)\"></lib-unb-pessoa-endereco-list>\r\n\r\n <lib-unb-pessoa-email-list style=\"flex: 1 1 100%;\" [backendURL]=\"config.backendURL\" [emails]=\"pessoa.emails\"\r\n (emailsEmitted)=\"emailsEmitted($event)\"></lib-unb-pessoa-email-list>\r\n\r\n <div *ngIf=\"isReadyOnly\" style=\"flex:1 1 100%; margin-bottom:10px;\">\r\n <mat-card>\r\n <mat-card-content>\r\n <strong>Servidor com matr\u00EDcula SIAPE deve ter seus dados autalizados pelo aplicativo do sougov</strong>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n\r\n <mat-card-actions class=\"card-actions-buttons\" *ngIf=\"!hideSalvarButton\">\r\n <button mat-flat-button [disabled]=\"isLoading || isReadyOnly\" type=\"submit\" color=\"primary\">\r\n Salvar\r\n </button>\r\n </mat-card-actions>\r\n\r\n</form>", styles: [".card-actions-buttons{display:flex;gap:5px;flex-wrap:wrap}.form-container{display:flex;flex-wrap:wrap;column-gap:10px;margin-top:5px}:host{display:block}@media (max-width: 1000px){.form-container{flex-direction:column;gap:5px}}.break{flex-basis:100%;height:0}.form-5{flex:1 1 5%}.inline-table-container{display:flex;align-items:center;justify-content:space-between;padding:5px}@media (max-width: 600px){.form-5,.form-10,.form-15{flex:1 1 100%}}.form-10{flex:1 1 10%}.form-15{flex:1 1 15%}.form-20{flex:1 1 20%}.form-25{flex:1 1 25%}.form-30{flex:1 1 30%}.form-35{flex:1 1 35%}.form-40{flex:1 1 40%}.form-45{flex:1 1 45%}.form-50{flex:1 1 50%}.form-100{flex:1 1 100%;min-width:250px}.readonly{pointer-events:none;opacity:.6}.disabled-wrapper{pointer-events:none;opacity:.6;filter:grayscale(1)}.status-banner{display:flex;align-items:center;gap:8px;padding:10px 16px;margin:2px 0 20px;border-radius:6px;font-size:14px;font-weight:500}.status-banner.status-inclusao{background-color:#e3f2fd;color:#1565c0;border:1px solid #bbdefb}.status-banner.status-edicao{background-color:#fff3e0;color:#ef6c00;border:1px solid #ffe0b2}.status-banner.status-bloqueado{background-color:#fce4ec;color:#c2185b;border:1px solid #f8bbd0}\n"] }]
|
|
236
236
|
}], ctorParameters: () => [{ type: i1.UnBPessoaService }, { type: i2.MatSnackBar }, { type: i3.UnbMensagemService }], propDecorators: { pessoaForm: [{
|
|
237
237
|
type: ViewChild,
|
|
238
238
|
args: ['pessoaForm']
|
|
@@ -245,4 +245,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
245
245
|
}], isLoadingChange: [{
|
|
246
246
|
type: Output
|
|
247
247
|
}] } });
|
|
248
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5iLXBlc3NvYS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuYi1saWItY29tcG9uZW50cy9zcmMvbGliL3VuYi1wZXNzb2EvdW5iLXBlc3NvYS1mb3JtL3VuYi1wZXNzb2EtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91bmItbGliLWNvbXBvbmVudHMvc3JjL2xpYi91bmItcGVzc29hL3VuYi1wZXNzb2EtZm9ybS91bmItcGVzc29hLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQixTQUFTLEVBQUUsWUFBWSxFQUFVLEtBQUssRUFBb0IsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUk5SCxPQUFPLEVBQXNCLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUtuRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOENBQThDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBU25GLE1BQU0sT0FBTyxzQkFBc0I7SUEwQmpDLFlBQW9CLE9BQXlCLEVBQVUsUUFBcUIsRUFBVSxZQUFnQztRQUFsRyxZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQUFVLGFBQVEsR0FBUixRQUFRLENBQWE7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBb0I7UUF2QjdHLFdBQU0sR0FBd0Is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QUFDLENBQUMsT0FBTyxZQUFZLENBQUM7WUFDNUQsT0FBTyxDQUFDLENBQUMsT0FBTyxXQUFXLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7OEdBalBVLHNCQUFzQjtrR0FBdEIsc0JBQXNCLDBUQ3hCbkMsd2lWQStNTzs7MkZEdkxNLHNCQUFzQjtrQkFObEMsU0FBUzsrQkFDRSxxQkFBcUIsY0FDbkIsS0FBSztnSkFNUSxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBQ2QsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBib29sZWFuQXR0cmlidXRlLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVW5iTWVuc2FnZW1TZXJ2aWNlLCBVbmJUaXBvTWVuc2FnZW1FbnVtIH0gZnJvbSAnLi4vLi4vdW5iLW1lbnNhZ2VtL3VuYi1tZW5zYWdlbS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgbGlzdGFFc3RhZG9zIH0gZnJvbSAnLi4vcGVzc29hLXRhYmVsYXMtYXBvaW8nO1xyXG5pbXBvcnQgeyBVbmJQZXNzb2FFbWFpbCB9IGZyb20gJy4uL3VuYi1wZXNzb2EtbW9kZWxzL3VuYi1wZXNzb2EtZW1haWwubW9kZWwnO1xyXG5pbXBvcnQgeyBVbmJQZXNzb2FFbmRlcmVjbyB9IGZyb20gJy4uL3VuYi1wZXNzb2EtbW9kZWxzL3VuYi1wZXNzb2EtZW5kZXJlY28ubW9kZWwnO1xyXG5pbXBvcnQgeyBVbmJQZXNzb2FFc2NvbGFyaWRhZGUgfSBmcm9tICcuLi91bmItcGVzc29hLW1vZGVscy91bmItcGVzc29hLWVzY29sYXJpZGFkZS5tb2RlbCc7XHJcbmltcG9ydCB7IFVuYlBlc3NvYUVzdGFkb0NpdmlsIH0gZnJvbSAnLi4vdW5iLXBlc3NvYS1tb2RlbHMvdW5iLXBlc3NvYS1lc3RhZG8tY2l2aWwubW9kZWwnO1xyXG5pbXBvcnQgeyBVbmJQZXNzb2FQYWlzIH0gZnJvbSAnLi4vdW5iLXBlc3NvYS1tb2RlbHMvdW5iLXBlc3NvYS1wYWlzJztcclxuaW1wb3J0IHsgVW5iUGVzc29hVGVsZWZvbmUgfSBmcm9tICcuLi91bmItcGVzc29hLW1vZGVscy91bmItcGVzc29hLXRlbGVmb25lLm1vZGVsJztcclxuaW1wb3J0IHsgVW5iUGVzc29hTW9kZWwgfSBmcm9tICcuLi91bmItcGVzc29hLW1vZGVscy91bmItcGVzc29hLm1vZGVsJztcclxuaW1wb3J0IHsgVW5CUGVzc29hU2VydmljZSwgVW5iUGVzc29hRXJyb1BhZHJhbyB9IGZyb20gJy4uL3VuYi1wZXNzb2Euc2VydmljZSc7XHJcbmltcG9ydCB7IFVuYlRpcG9QZXNzb2FFbnVtIH0gZnJvbSAnLi4vdW5iLXRpcG8tcGVzc29hLmVudW0nO1xyXG5pbXBvcnQgeyBVbmJQZXNzb2FGb3JtQ29uZmlnIH0gZnJvbSAnLi4vdW5iLXBlc3NvYS1tb2RlbHMvdW5iLXBlc3NvYS1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi11bmItcGVzc29hLWZvcm0nLFxyXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91bmItcGVzc29hLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi91bmItcGVzc29hLWZvcm0uY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFVuYlBlc3NvYUZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBAVmlld0NoaWxkKCdwZXNzb2FGb3JtJykgcGVzc29hRm9ybSE6IE5nRm9ybTtcclxuICBASW5wdXQoKSBjb25maWc6IFVuYlBlc3NvYUZvcm1Db25maWcgPSBuZXcgVW5iUGVzc29hRm9ybUNvbmZpZygpO1xyXG4gIEBJbnB1dCgpIGhpZGVTYWx2YXJCdXR0b246IGJvb2xlYW4gPSBmYWxzZTsgLy8gdXNhZG8gcXVhbmRvIGVoIG1vZGFsLiBOYW8gbW9zdHJhIGJvdGFvIHNhbHZhci4gUHEgbyBEaWFsb2cgasOhIHRlbSB1bSBib3RhbyBzYWx2YXJcclxuICBAT3V0cHV0KCkgcGVzc29hRW1pdHRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8VW5iUGVzc29hTW9kZWw+KCk7XHJcbiAgQE91dHB1dCgpIGlzTG9hZGluZ0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgLy8gdGFiZWxhcyB0cmFkaWNpb25haXMgcXVlIHZlbSBkbyBiYWNrZW5kXHJcbiAgZXNjb2xhcmlkYWRlITogT2JzZXJ2YWJsZTxVbmJQZXNzb2FFc2NvbGFyaWRhZGVbXT47XHJcbiAgcGFpc2VzITogT2JzZXJ2YWJsZTxVbmJQZXNzb2FQYWlzW10+O1xyXG4gIGVzdGFkb3NDaXZpbCE6IE9ic2VydmFibGU8VW5iUGVzc29hRXN0YWRvQ2l2aWxbXT47XHJcbiAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZW5kZXJlY28gPSBuZXcgVW5iUGVzc29hRW5kZXJlY28oKTtcclxuICBlbWFpbCA9IG5ldyBVbmJQZXNzb2FFbWFpbCgpO1xyXG4gIGlzUmVhZHlPbmx5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgZGFkb3NTYWx2b3M6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTsgLy8gQXJtYXplbmEgb3MgZGFkb3MgYW8gdHJvY2FyIGRlIHRpcG9cclxuICBpZE1lbnNhZ2VtU2VydmljZSA9IFwidW5iUGVzc29hRm9ybVwiO1xyXG5cclxuICAvLyBDb250cm9sYSBzZSBlc3TDoSBpbmNsdWluZG8gbm92YSBwZXNzb2Egb3UgZWRpdGFuZG8gZXhpc3RlbnRlXHJcbiAgZG9jdW1lbnRvUGVzcXVpc2Fkbzogc3RyaW5nID0gJyc7XHJcbiAgaW5jbHVpbmRvTm92YVBlc3NvYTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGVkaXRhbmRvUGVzc29hOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHBlc3NvYTogVW5iUGVzc29hTW9kZWwgPSBuZXcgVW5iUGVzc29hTW9kZWwoKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXJ2aWNlOiBVbkJQZXNzb2FTZXJ2aWNlLCBwcml2YXRlIHNuYWNrQmFyOiBNYXRTbmFja0JhciwgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IFVuYk1lbnNhZ2VtU2VydmljZSkge1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5hbGVydFNlcnZpY2UuaGlkZU1lc3NhZ2UodGhpcy5pZE1lbnNhZ2VtU2VydmljZSk7XHJcbiAgICBpZiAodGhpcy5jb25maWcuYmFja2VuZFVSTCA9PSBcIlwiKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlRXJyb3JQcmludENvbnNvbGUoXCJbVW5iUGVzc29hUGVzcXVpc2FyQ29tcG9uZW50XSBFUlJPUjogYXBpUGVzc29hQ29uZmlnLnVybCBlc3TDoSBudWxsLiBJbnNpcmEgbyBwYXLDom1ldHJvIChhcGlQZXNzb2FDb25maWcpIGNvbSBvIHZhbG9yIHbDoWxpZG8hXCIpXHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VydmljZS5zZXRCYWNrZW5kVXJsKHRoaXMuY29uZmlnLmJhY2tlbmRVUkwpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZy50b2tlbiAmJiB0aGlzLmNvbmZpZy50b2tlbiAhPSBcIlwiKSB7IFxyXG4gICAgICB0aGlzLnNlcnZpY2Uuc2V0VG9rZW4odGhpcy5jb25maWcudG9rZW4pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGF0ZW5jYW8sIG8gcGVzc29hUmVjZWJpZGEgcXVlIGluaWNpYWxpemEgZXNzZSBjb21wb25lbnRlXHJcbiAgICB0aGlzLmVzY29sYXJpZGFkZSA9IHRoaXMuc2VydmljZS5nZXRFc2NvbGFyaWRhZGUoKTtcclxuICAgIHRoaXMucGFpc2VzID0gdGhpcy5zZXJ2aWNlLmdldFBhaXNlcygpO1xyXG4gICAgdGhpcy5lc3RhZG9zQ2l2aWwgPSB0aGlzLnNlcnZpY2UuZ2V0RXN0YWRvQ2l2aWwoKTtcclxuICAgIHRoaXMucGVzc29hUmVjZWJpZGEodGhpcy5jb25maWcucGVzc29hKTtcclxuICB9XHJcblxyXG4gIHBlc3NvYVJlY2ViaWRhKHBlc3NvYVJlY2ViaWRhOiBVbmJQZXNzb2FNb2RlbCkge1xyXG4gICAgaWYgKCFwZXNzb2FSZWNlYmlkYSkge1xyXG4gICAgICB0aGlzLnBlc3NvYSA9IHt9IGFzIFVuYlBlc3NvYU1vZGVsOyBcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucGVzc29hID0gcGVzc29hUmVjZWJpZGE7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmhpZGVNZXNzYWdlKHRoaXMuaWRNZW5zYWdlbVNlcnZpY2UpO1xyXG5cclxuICAgIC8vIFJlc2V0YSBvIGZvcm11bMOhcmlvIHF1YW5kbyB1bWEgbm92YSBwZXNzb2Egw6kgcmVjZWJpZGFcclxuICAgIGlmICh0aGlzLnBlc3NvYUZvcm0pIHtcclxuICAgICAgdGhpcy5wZXNzb2FGb3JtLnJlc2V0Rm9ybSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGluaWNpYWxpemEgcHJhIG5hbyBxdWVicmFyXHJcbiAgICBpZiAoIXRoaXMucGVzc29hLmVuZGVyZWNvcykgdGhpcy5wZXNzb2EuZW5kZXJlY29zID0gW107XHJcbiAgICBpZiAoIXRoaXMucGVzc29hLmVtYWlscykgdGhpcy5wZXNzb2EuZW1haWxzID0gW107XHJcbiAgICBpZiAoIXRoaXMucGVzc29hLnRlbGVmb25lcykgdGhpcy5wZXNzb2EudGVsZWZvbmVzID0gW107XHJcblxyXG4gICAgLy8gMS4gVmVyaWZpY2Egc2Ugw6kgdW0gcmVnaXN0cm8gcXVlIGrDoSBleGlzdGUgbm8gYmFuY29cclxuICAgIGNvbnN0IGV4aXN0ZVJlZ2lzdHJvID0gISF0aGlzLnBlc3NvYT8uY29kaWdvUGVzc29hO1xyXG5cclxuICAgIC8vIDIuIFZlcmlmaWNhIHNlIMOpIGJsb3F1ZWFkbyBwZWxvIFNJQVBFIChTw7MgZmF6IHNlbnRpZG8gc2UgbyByZWdpc3RybyBleGlzdGlyKVxyXG4gICAgdGhpcy5pc1JlYWR5T25seSA9IGV4aXN0ZVJlZ2lzdHJvICYmICEhdGhpcy5wZXNzb2E/Lm1hdHJpY3VsYVNpYXBlO1xyXG5cclxuICAgIC8vIDMuIERlZmluZSBvIGRvY3VtZW50byAodXNhbmRvIGFxdWVsZSBtYXBhIGxpbXBvKVxyXG4gICAgY29uc3QgZG9jTWFwID0ge1xyXG4gICAgICBbVW5iVGlwb1Blc3NvYUVudW0uRklTSUNBXTogdGhpcy5wZXNzb2EuY3BmLFxyXG4gICAgICBbVW5iVGlwb1Blc3NvYUVudW0uSlVSSURJQ0FdOiB0aGlzLnBlc3NvYS5jbnBqLFxyXG4gICAgICBbVW5iVGlwb1Blc3NvYUVudW0uRVNUUkFOR0VJUkFdOiB0aGlzLnBlc3NvYS5wYXNzYXBvcnRlXHJcbiAgICB9O1xyXG4gICAgdGhpcy5kb2N1bWVudG9QZXNxdWlzYWRvID0gZG9jTWFwW3RoaXMucGVzc29hLnRpcG9QZXNzb2FdIHx8ICcnO1xyXG5cclxuICAgIC8vIDQuIChPcGNpb25hbCkgU25hY2tiYXIgc2UgZm9yIFNJQVBFXHJcbiAgICBpZiAodGhpcy5pc1JlYWR5T25seSkge1xyXG4gICAgICB0aGlzLm9wZW5TbmFja0JhcignRGFkb3MgaW1wb3J0YWRvcyBkbyBTSUFQRSBuw6NvIHBvZGVtIHNlciBhbHRlcmFkb3MuJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzYWx2YXIoZm9ybTogTmdGb3JtKSB7XHJcbiAgICB0aGlzLmFsZXJ0U2VydmljZS5oaWRlTWVzc2FnZSh0aGlzLmlkTWVuc2FnZW1TZXJ2aWNlKTtcclxuXHJcbiAgICAvLyBTdWFzIHZhbGlkYcOnw7Vlc1xyXG4gICAgaWYgKCF0aGlzLnZhbGlkYXIoZm9ybSkpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmlzTG9hZGluZ0NoYW5nZS5lbWl0KHRydWUpO1xyXG4gICAgLy8gQWdvcmEgbyBzZXJ2aWNlIGNvbnZlcnRlIGludGVybmFtZW50ZSBvIE1vZGVsIHBhcmEgbyBwYXlsb2FkIGNvcnJldG9cclxuICAgIC8vIGUgZGVjaWRlIG8gZW5kcG9pbnQgY29tIGJhc2Ugbm8gdGlwb1Blc3NvYVxyXG4gICAgdGhpcy5zZXJ2aWNlLnNhbHZhclBlc3NvYSh0aGlzLmNvbmZpZy5wZXNzb2EpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb3N0YSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG4gICAgICAgICAgLy8gTWVuc2FnZW0gZGUgU3VjZXNzb1xyXG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd01lc3NhZ2UoXCI8c3Ryb25nPlJlZ2lzdHJvIHNhbHZvIGNvbSBzdWNlc3NvITwvc3Ryb25nPlwiLCBVbmJUaXBvTWVuc2FnZW1FbnVtLlNVQ0NFU1MsIHRoaXMuaWRNZW5zYWdlbVNlcnZpY2UpO1xyXG5cclxuICAgICAgICAgIC8vIEF0dWFsaXphIGRhZG9zIHJldG9ybmFkb3MgKElEcyBnZXJhZG9zKVxyXG4gICAgICAgICAgaWYgKHJlc3Bvc3RhKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLnBlc3NvYS5jb2RpZ29QZXNzb2EgPSByZXNwb3N0YS5jb2RpZ29QZXNzb2EgfHwgdGhpcy5jb25maWcucGVzc29hLmNvZGlnb1Blc3NvYTtcclxuICAgICAgICAgICAgdGhpcy5jb25maWcucGVzc29hLmlkUGVzc29hID0gcmVzcG9zdGEuaWRQZXNzb2EgfHwgdGhpcy5jb25maWcucGVzc29hLmlkUGVzc29hO1xyXG4gICAgICAgICAgICB0aGlzLnBlc3NvYUVtaXR0ZWQuZW1pdCh0aGlzLmNvbmZpZy5wZXNzb2EpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnI6IFVuYlBlc3NvYUVycm9QYWRyYW8pID0+IHtcclxuICAgICAgICAgIC8vIEFRVUk6IE8gJ2VycicgasOhIGNoZWdhIGxpbXBvIGNvbSB7IG1lbnNhZ2VtU2ltcGxlcywgbWVuc2FnZW1IdG1sIH1cclxuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhcihmb3JtOiBOZ0Zvcm0pOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5jb25maWcucGVzc29hKSB7XHJcbiAgICAgIHRoaXMub3BlblNuYWNrQmFyKFwiRXJybyBhbyBjYXJyZWdhciBvYmpldG8gcGVzc29hXCIpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGZvcm0uaW52YWxpZCkge1xyXG4gICAgICAvLyBwYXJhIHF1ZSBvcyBlcnJvcyBhcGFyZcOnYW0gbmEgdGVsYSBwYXJhIG8gdXN1w6FyaW8uXHJcbiAgICAgIGZvcm0uY29udHJvbC5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICAgIHRoaXMub3BlblNuYWNrQmFyKFwiUG9yIGZhdm9yLCBwcmVlbmNoYSBvcyBjYW1wb3Mgb2JyaWdhdMOzcmlvcy5cIik7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jb25maWcucGVzc29hLnRlbGVmb25lcyA9PSBudWxsIHx8ICh0aGlzLmNvbmZpZy5wZXNzb2EudGVsZWZvbmVzICE9IG51bGwgJiYgdGhpcy5jb25maWcucGVzc29hLnRlbGVmb25lcy5sZW5ndGggPT0gMCkpIHtcclxuICAgICAgdGhpcy5vcGVuU25hY2tCYXIoXCJDYWRhc3RyZSBwZWxvIG1lbm9zIHVtIHRlbGVmb25lIG5vIGJvdMOjbyBDYWRhc3RyYXIgTm92byBUZWxlZm9uZVwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZy5wZXNzb2EuZW5kZXJlY29zID09IG51bGwgfHwgKHRoaXMuY29uZmlnLnBlc3NvYS5lbmRlcmVjb3MgIT0gbnVsbCAmJiB0aGlzLmNvbmZpZy5wZXNzb2EuZW5kZXJlY29zLmxlbmd0aCA9PSAwKSkge1xyXG4gICAgICB0aGlzLm9wZW5TbmFja0JhcihcIkNhZGFzdHJlIHBlbG8gbWVub3MgdW0gZW5kZXJlw6dvIG5vIGJvdMOjbyBDYWRhc3RyYXIgTm92byBFbmRlcmXDp29cIik7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jb25maWcucGVzc29hLmVtYWlscyA9PSBudWxsIHx8ICh0aGlzLmNvbmZpZy5wZXNzb2EuZW1haWxzICE9IG51bGwgJiYgdGhpcy5jb25maWcucGVzc29hLmVtYWlscy5sZW5ndGggPT0gMCkpIHtcclxuICAgICAgdGhpcy5vcGVuU25hY2tCYXIoXCJDYWRhc3RyZSBwZWxvIG1lbm9zIHVtIGUtbWFpbCBubyBib3TDo28gQ2FkYXN0cmFyIE5vdm8gRW1haWxcIik7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jb25maWcucGVzc29hLnRpcG9QZXNzb2EgPT0gVW5iVGlwb1Blc3NvYUVudW0uRklTSUNBKSB7XHJcbiAgICAgIGlmICghdGhpcy5jb25maWcucGVzc29hLm5vbWUgfHwgKHRoaXMuY29uZmlnLnBlc3NvYSAmJiB0aGlzLmNvbmZpZy5wZXNzb2Eubm9tZSA9PSBcIlwiKSkge1xyXG4gICAgICAgIHRoaXMub3BlblNuYWNrQmFyKFwiTm9tZSDDqSB1bSBjYW1wbyBvYnJpZ2F0w7NyaW9cIik7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIXRoaXMuY29uZmlnLnBlc3NvYS5kYXRhTmFzY2ltZW50bykge1xyXG4gICAgICAgIHRoaXMub3BlblNuYWNrQmFyKFwiRGF0YSBkZSBOYXNjaW1lbnRvIMOpIHVtIGNhbXBvIG9icmlnYXTDs3Jpb1wiKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jb25maWcucGVzc29hLnRpcG9QZXNzb2EgPT0gVW5iVGlwb1Blc3NvYUVudW0uRVNUUkFOR0VJUkEpIHtcclxuICAgICAgaWYgKCF0aGlzLmNvbmZpZy5wZXNzb2Eubm9tZSB8fCAodGhpcy5jb25maWcucGVzc29hICYmIHRoaXMuY29uZmlnLnBlc3NvYS5ub21lID09IFwiXCIpKSB7XHJcbiAgICAgICAgdGhpcy5vcGVuU25hY2tCYXIoXCJOb21lIMOpIHVtIGNhbXBvIG9icmlnYXTDs3Jpb1wiKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5wZXNzb2EucGFzc2Fwb3J0ZSA9PSBudWxsIHx8ICh0aGlzLmNvbmZpZy5wZXNzb2EucGFzc2Fwb3J0ZSAhPSBudWxsICYmIHRoaXMuY29uZmlnLnBlc3NvYS5wYXNzYXBvcnRlID09IFwiXCIpKSB7XHJcbiAgICAgICAgdGhpcy5vcGVuU25hY2tCYXIoXCJQYXNzYXBvcnRlIMOpIHVtIGNhbXBvIG9icmlnYXTDs3Jpb1wiKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jb25maWcucGVzc29hLnRpcG9QZXNzb2EgPT0gVW5iVGlwb1Blc3NvYUVudW0uSlVSSURJQ0EpIHtcclxuICAgICAgaWYgKHRoaXMuY29uZmlnLnBlc3NvYS5jbnBqID09IG51bGwgfHwgKHRoaXMuY29uZmlnLnBlc3NvYS5jbnBqICE9IG51bGwgJiYgdGhpcy5jb25maWcucGVzc29hLmNucGogPT0gXCJcIikpIHtcclxuICAgICAgICB0aGlzLm9wZW5TbmFja0JhcihcIkNOUEogw6kgdW0gY2FtcG8gb2JyaWdhdMOzcmlvXCIpO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgdGVsZWZvbmVzRW1pdHRlZCh0ZWxlZm9uZXM6IFVuYlBlc3NvYVRlbGVmb25lW10pIHtcclxuICAgIHRoaXMuY29uZmlnLnBlc3NvYS50ZWxlZm9uZXMgPSB0ZWxlZm9uZXM7XHJcbiAgfVxyXG5cclxuICBlbmRlcmVjb3NFbWl0dGVkKGVuZGVyZWNvczogVW5iUGVzc29hRW5kZXJlY29bXSkge1xyXG4gICAgdGhpcy5jb25maWcucGVzc29hLmVuZGVyZWNvcyA9IGVuZGVyZWNvcztcclxuICB9XHJcblxyXG4gIGVtYWlsc0VtaXR0ZWQoZW1haWxzOiBVbmJQZXNzb2FFbWFpbFtdKSB7XHJcbiAgICB0aGlzLmNvbmZpZy5wZXNzb2EuZW1haWxzID0gZW1haWxzO1xyXG4gIH1cclxuXHJcbiAgb3BlblNuYWNrQmFyKG1lc3NhZ2U6IHN0cmluZykge1xyXG4gICAgdGhpcy5zbmFja0Jhci5vcGVuKG1lc3NhZ2UsICd4Jywge1xyXG4gICAgICBkdXJhdGlvbjogNTAwMCxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdGlwb1Blc3NvYUVudW0oKSB7XHJcbiAgICByZXR1cm4gVW5iVGlwb1Blc3NvYUVudW07XHJcbiAgfVxyXG5cclxuICBnZXRMaXN0YUVzdGFkb3MoKSB7XHJcbiAgICByZXR1cm4gbGlzdGFFc3RhZG9zO1xyXG4gIH1cclxuXHJcblxyXG4gIGhhbmRsZUVycm9yUHJpbnRDb25zb2xlKGVycm86IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coZXJybyk7XHJcbiAgICB0aGlzLmhhbmRsZUVycm9yKGVycm8pO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRXJyb3IoZXJybzogVW5iUGVzc29hRXJyb1BhZHJhbykge1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNMb2FkaW5nQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG5cclxuICAgIC8vIDEuIE1vc3RyYSBhIG1lbnNhZ2VtIGN1cnRhL3NpbXBsZXMgbm8gU25hY2tCYXIgKEZ1bmRvIGRhIHRlbGEpXHJcbiAgICAvLyBFeDogXCJPIGZvcm11bMOhcmlvIHBvc3N1aSBlcnJvcyBkZSB2YWxpZGHDp8Ojby5cIiBvdSBcIlNlc3PDo28gZXhwaXJhZGEuXCJcclxuICAgIGlmIChlcnJvLm1lbnNhZ2VtU2ltcGxlcykge1xyXG4gICAgICB0aGlzLm9wZW5TbmFja0JhcihlcnJvLm1lbnNhZ2VtU2ltcGxlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gMi4gTW9zdHJhIGEgbWVuc2FnZW0gZGV0YWxoYWRhIEhUTUwgbm8gY29tcG9uZW50ZSA8dW5iLW1lbnNhZ2VtPlxyXG4gICAgLy8gRXg6IExpc3RhIGNvbSA8dWw+PGxpPkNhbXBvIERhdGEgaW52w6FsaWRvLi4uPC9saT48L3VsPlxyXG4gICAgaWYgKHRoaXMuYWxlcnRTZXJ2aWNlICYmIGVycm8ubWVuc2FnZW1IdG1sKSB7XHJcbiAgICAgIC8vIFNlIG8gc2V1IGFsZXJ0U2VydmljZSBzdXBvcnRhciBJRCBkbyBjb21wb25lbnRlIGFsdm8sIHBhc3NlIGFxdWkuXHJcbiAgICAgIC8vIENhc28gY29udHLDoXJpbywgZWxlIG1vc3RyYSBubyBjb21wb25lbnRlIHBhZHLDo28uXHJcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNob3dNZXNzYWdlKGVycm8ubWVuc2FnZW1IdG1sLCBVbmJUaXBvTWVuc2FnZW1FbnVtLkRBTkdFUiwgdGhpcy5pZE1lbnNhZ2VtU2VydmljZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRMYWJlbERvY3VtZW50bygpOiBzdHJpbmcge1xyXG4gICAgc3dpdGNoICh0aGlzLmNvbmZpZy5wZXNzb2EudGlwb1Blc3NvYSkge1xyXG4gICAgICBjYXNlIHRoaXMudGlwb1Blc3NvYUVudW0oKS5GSVNJQ0E6IHJldHVybiAnQ1BGJztcclxuICAgICAgY2FzZSB0aGlzLnRpcG9QZXNzb2FFbnVtKCkuSlVSSURJQ0E6IHJldHVybiAnQ05QSic7XHJcbiAgICAgIGNhc2UgdGhpcy50aXBvUGVzc29hRW51bSgpLkVTVFJBTkdFSVJBOiByZXR1cm4gJ1Bhc3NhcG9ydGUnO1xyXG4gICAgICBkZWZhdWx0OiByZXR1cm4gJ0RvY3VtZW50byc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcblxyXG59XHJcbiIsIjxtYXQtcHJvZ3Jlc3MtYmFyICpuZ0lmPVwiaXNMb2FkaW5nXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XHJcblxyXG48dW5iLW1lbnNhZ2VtIFtpZGVudGlmaWNhZG9yXT1cImlkTWVuc2FnZW1TZXJ2aWNlXCI+PC91bmItbWVuc2FnZW0+XHJcblxyXG48IS0tIExhYmVsIGluZGljYW5kbyBxdWUgZXN0w6EgaW5jbHVpbmRvIG5vdmEgcGVzc29hIC0tPlxyXG48ZGl2ICpuZ0lmPVwiZG9jdW1lbnRvUGVzcXVpc2Fkb1wiXHJcbiAgICAgIGNsYXNzPVwic3RhdHVzLWJhbm5lclwiIFxyXG4gICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAnc3RhdHVzLWluY2x1c2FvJzogIXBlc3NvYS5jb2RpZ29QZXNzb2EsXHJcbiAgICAgICAnc3RhdHVzLWVkaWNhbyc6IHBlc3NvYS5jb2RpZ29QZXNzb2EgJiYgIWlzUmVhZHlPbmx5LFxyXG4gICAgICAgJ3N0YXR1cy1ibG9xdWVhZG8nOiBjb25maWcuaXNSZWFkeU9ubHlcclxuICAgICB9XCI+XHJcblxyXG4gIDxtYXQtaWNvbj5cclxuICAgIHt7ICFwZXNzb2EuY29kaWdvUGVzc29hID8gJ3BlcnNvbl9hZGQnIDogKGlzUmVhZHlPbmx5ID8gJ2xvY2snIDogJ2VkaXQnKSB9fVxyXG4gIDwvbWF0LWljb24+XHJcblxyXG4gIDxzcGFuPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFwZXNzb2EuY29kaWdvUGVzc29hXCI+SW5jbHVpbmRvIG5vdmEgcGVzc29hPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGVzc29hLmNvZGlnb1Blc3NvYSAmJiAhaXNSZWFkeU9ubHlcIj5FZGl0YW5kbyBwZXNzb2E8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1JlYWR5T25seVwiPlJlZ2lzdHJvIFNJQVBFIChWaXN1YWxpemHDp8Ojbyk8L25nLWNvbnRhaW5lcj4gY29tIDxzdHJvbmc+e3sgZ2V0TGFiZWxEb2N1bWVudG8oKSB9fSB7eyBkb2N1bWVudG9QZXNxdWlzYWRvIH19PC9zdHJvbmc+XHJcbiAgPC9zcGFuPlxyXG48L2Rpdj5cclxuXHJcbjxmb3JtICNwZXNzb2FGb3JtPVwibmdGb3JtXCIgW2NsYXNzLnJlYWRvbmx5XT1cImlzUmVhZHlPbmx5IHx8IGlzTG9hZGluZ1wiIGNsYXNzPVwiZm9ybS1jb250YWluZXJcIiAobmdTdWJtaXQpPVwic2FsdmFyKHBlc3NvYUZvcm0pXCI+XHJcbiAgPCEtLSBDYW1wb3MgUGVzc29hIEbDrXNpY2EgZSBFc3RyYW5nZWlyYSAgLS0+XHJcbiAgPG5nLWNvbnRhaW5lclxyXG4gICAgKm5nSWY9XCJwZXNzb2EudGlwb1Blc3NvYSA9PSB0aXBvUGVzc29hRW51bSgpLkZJU0lDQSB8fCBwZXNzb2EudGlwb1Blc3NvYSA9PSB0aXBvUGVzc29hRW51bSgpLkVTVFJBTkdFSVJBXCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmb3JtLTI1XCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgPG1hdC1sYWJlbD5Ob21lPC9tYXQtbGFiZWw+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwicGVzc29hLm5vbWVcIiBuYW1lPVwibm9tZVwiICNub21lPVwibmdNb2RlbFwiIHJlcXVpcmVkIC8+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZvcm0tMjBcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICA8bWF0LWxhYmVsPlNleG88L21hdC1sYWJlbD5cclxuICAgICAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJwZXNzb2EuY29kaWdvU2V4b1wiIG5hbWU9XCJjb2RpZ29TZXhvXCIgI2NvZGlnb1NleG89XCJuZ01vZGVsXCIgcmVxdWlyZWQ+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIjFcIj5NYXNjdWxpbm88L21hdC1vcHRpb24+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIjJcIj5GZW1pbmlubzwvbWF0LW9wdGlvbj5cclxuICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmb3JtLTI1XCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgPG1hdC1sYWJlbD5EYXRhIE5hc2NpbWVudG88L21hdC1sYWJlbD5cclxuICAgICAgPGlucHV0IG1hdElucHV0IFttYXREYXRlcGlja2VyXT1cImRhdGFOYXNjaW1lbnRvUGlja2VyXCIgWyhuZ01vZGVsKV09XCJwZXNzb2EuZGF0YU5hc2NpbWVudG9cIiBuYW1lPVwiZGF0YU5hc2NpbWVudG9cIlxyXG4gICAgICAgICNkYXRhTmFzY2ltZW50bz1cIm5nTW9kZWxcIiByZXF1aXJlZD5cclxuICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJkYXRhTmFzY2ltZW50b1BpY2tlclwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG4gICAgICA8bWF0LWRhdGVwaWNrZXIgI2RhdGFOYXNjaW1lbnRvUGlja2VyPjwvbWF0LWRhdGVwaWNrZXI+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZvcm0tMjBcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICA8bWF0LWxhYmVsPkVzdGFkbyBDaXZpbDwvbWF0LWxhYmVsPlxyXG4gICAgICA8bWF0LXNlbGVjdCBbKG5nTW9kZWwpXT1cInBlc3NvYS5jb2RpZ29Fc3RhZG9DaXZpbFwiIG5hbWU9XCJjb2RpZ29Fc3RhZG9DaXZpbFwiICNjb2RpZ29Fc3RhZG9DaXZpbD1cIm5nTW9kZWxcIj5cclxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgZXN0YWRvIG9mIGVzdGFkb3NDaXZpbCB8IGFzeW5jXCIgW3ZhbHVlXT1cImVzdGFkby5jb2RpZ29cIj5cclxuICAgICAgICAgIHt7IGVzdGFkby5kZW5vbWluYWNhbyB9fVxyXG4gICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICA8IS0tXHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZm9ybS0xNVwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICA8bWF0LWxhYmVsPk5hdHVyYWxpZGFkZTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJwZXNzb2EubmF0dXJhbGlkYWRlXCIgbmFtZT1cIm5hdHVyYWxpZGFkZVwiICNuYXR1cmFsaWRhZGU9XCJuZ01vZGVsXCIgcmVxdWlyZWQ+XHJcbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBjaWRhZGUgb2YgZ2V0TGlzdGFFc3RhZG9zKClcIiBbdmFsdWVdPVwiY2lkYWRlLmNvZGlnb1wiPlxyXG4gICAgICAgICAgICAgIHt7IGNpZGFkZS5kZXNjcmljYW8gfX1cclxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgLS0+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmb3JtLTIwXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgPG1hdC1sYWJlbD5QYcOtcyBOYXNjaW1lbnRvPC9tYXQtbGFiZWw+XHJcbiAgICAgIDxtYXQtc2VsZWN0IFsobmdNb2RlbCldPVwicGVzc29hLmNvZGlnb1BhaXNOYXNjaW1lbnRvXCIgbmFtZT1cImNvZGlnb1BhaXNOYXNjaW1lbnRvXCIgI2NvZGlnb1BhaXNOYXNjaW1lbnRvPVwibmdNb2RlbFwiXHJcbiAgICAgICAgcmVxdWlyZWQ+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHBhaXNOYXNjaW1lbnRvIG9mIHBhaXNlcyB8IGFzeW5jXCIgW3ZhbHVlXT1cInBhaXNOYXNjaW1lbnRvLmNvZGlnb1wiPlxyXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJwYWlzTmFzY2ltZW50by5kZW5vbWluYWNhbyA9PT0gJ0JSQVNJTCdcIj7wn4en8J+HtyA8Yj57eyBwYWlzTmFzY2ltZW50by5kZW5vbWluYWNhbyB9fTwvYj48L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cInBhaXNOYXNjaW1lbnRvLmRlbm9taW5hY2FvICE9PSAnQlJBU0lMJ1wiPnt7IHBhaXNOYXNjaW1lbnRvLmRlbm9taW5hY2FvIH19PC9zcGFuPlxyXG4gICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmb3JtLTIwXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiAqbmdJZj1cInBlc3NvYS5jb2RpZ29QYWlzTmFzY2ltZW50byA9PSAyMlwiPiA8IS0tIDIyIGVoIEJyYXNpbC0tPlxyXG4gICAgICA8bWF0LWxhYmVsPlVGIE5hc2NpbWVudG88L21hdC1sYWJlbD5cclxuICAgICAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJwZXNzb2EudWZOYXNjaW1lbnRvXCIgbmFtZT1cInVmTmFzY2ltZW50b1wiICN1Zk5hc2NpbWVudG89XCJuZ01vZGVsXCIgcmVxdWlyZWQ+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGVzdGFkbyBvZiBnZXRMaXN0YUVzdGFkb3MoKVwiIFt2YWx1ZV09XCJlc3RhZG8uaWRlbnRpZmljYWRvclwiPlxyXG4gICAgICAgICAge3sgZXN0YWRvLmlkZW50aWZpY2Fkb3IgfX1cclxuICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZm9ybS0yMFwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgKm5nSWY9XCJwZXNzb2EuY29kaWdvUGFpc05hc2NpbWVudG8gPT0gMjJcIj5cclxuICAgICAgPG1hdC1sYWJlbD5OYXR1cmFsaWRhZGU8L21hdC1sYWJlbD5cclxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJwZXNzb2EubmF0dXJhbGlkYWRlXCIgbmFtZT1cIm5hdHVyYWxpZGFkZVwiICNuYXR1cmFsaWRhZGU9XCJuZ01vZGVsXCJcclxuICAgICAgICByZXF1aXJlZCAvPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmb3JtLTIwXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgPG1hdC1sYWJlbD5Fc2NvbGFyaWRhZGU8L21hdC1sYWJlbD5cclxuICAgICAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJwZXNzb2EuZXNjb2xhcmlkYWRlXCIgbmFtZT1cImNvZGlnb0VzY29sYXJpZGFkZVwiICNjb2RpZ29Fc2NvbGFyaWRhZGU9XCJuZ01vZGVsXCIgcmVxdWlyZWQ+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGVzY29sYXJpZGFkZSBvZiBlc2NvbGFyaWRhZGUgfCBhc3luY1wiIFt2YWx1ZV09XCJlc2NvbGFyaWRhZGUuY29kaWdvXCI+XHJcbiAgICAgICAgICB7eyBlc2NvbGFyaWRhZGUuZGVub21pbmFjYW8gfX1cclxuICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZm9ybS0yNVwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgIDxtYXQtbGFiZWw+Tm9tZSBTb2NpYWw8L21hdC1sYWJlbD5cclxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJwZXNzb2Eubm9tZVNvY2lhbFwiIG5hbWU9XCJub21lU29jaWFsXCIgI25vbWVTb2NpYWw9XCJuZ01vZGVsXCIgLz5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZm9ybS0yNVwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgIDxtYXQtbGFiZWw+Tm9tZSBkYSBNw6NlPC9tYXQtbGFiZWw+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwicGVzc29hLm5vbWVNYWVcIiBuYW1lPVwibm9tZU1hZVwiICNub21lTWFlPVwibmdNb2RlbFwiIHJlcXVpcmVkIC8+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZvcm0tMjVcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICA8bWF0LWxhYmVsPk5vbWUgZG8gUGFpPC9tYXQtbGFiZWw+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwicGVzc29hLm5vbWVQYWlcIiBuYW1lPVwibm9tZVBhaVwiICNub21lUGFpPVwibmdNb2RlbFwiIHJlcXVpcmVkIC8+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8IS0tIENhbXBvcyBQZXNzb2EgSnVyw61kaWNhIC0tPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJwZXNzb2EudGlwb1Blc3NvYSA9PT0gdGlwb1Blc3NvYUVudW0oKS5KVVJJRElDQVwiPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZm9ybS0yNVwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgIDxtYXQtbGFiZWw+UmF6w6NvIFNvY2lhbDwvbWF0LWxhYmVsPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cInBlc3NvYS5yYXphb1NvY2lhbFwiIG5hbWU9XCJyYXphb1NvY2lhbFwiIC8+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZm9ybS0yNVwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgIDxtYXQtbGFiZWw+Tm9tZSBGYW50YXNpYTwvbWF0LWxhYmVsPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cInBlc3NvYS5ub21lRmFudGFzaWFcIiBuYW1lPVwibm9tZUZhbnRhc2lhXCIgLz5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJwZXNzb2EudGlwb1Blc3NvYSA9PSB0aXBvUGVzc29hRW51bSgpLkZJU0lDQVwiPlxyXG4gICAgPGIgc3R5bGU9XCJmbGV4OiAxIDEgMTAwJTsgbWFyZ2luLWJvdHRvbTogMTBweDtcIj5Eb2N1bWVudGHDp8OjbzwvYj5cclxuXHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmb3JtLTI1XCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgPG1hdC1sYWJlbD5JZGVudGlkYWRlPC9tYXQtbGFiZWw+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwicGVzc29hLnJnXCIgbmFtZT1cInJnXCIgI3JnPVwibmdNb2RlbFwiIHJlcXVpcmVkIC8+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZvcm0tMjVcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICA8bWF0LWxhYmVsPsOTcmfDo28gRW1pc3NvcjwvbWF0LWxhYmVsPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cInBlc3NvYS5yZ09yZ2FvXCIgbmFtZT1cInJnT3JnYW9cIiAjcmdPcmdhbz1cIm5nTW9kZWxcIiByZXF1aXJlZCAvPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmb3JtLTI1XCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgPG1hdC1sYWJlbD5VbmlkYWRlIEZlZGVyYXRpdmE8L21hdC1sYWJlbD5cclxuICAgICAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJwZXNzb2EucmdVZlwiIG5hbWU9XCJyZ1VmXCIgI3JnVWY9XCJuZ01vZGVsXCIgcmVxdWlyZWQ+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGVzdGFkbyBvZiBnZXRMaXN0YUVzdGFkb3MoKVwiIFt2YWx1ZV09XCJlc3RhZG8uaWRlbnRpZmljYWRvclwiPlxyXG4gICAgICAgICAge3sgZXN0YWRvLmlkZW50aWZpY2Fkb3IgfX1cclxuICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZm9ybS0yMFwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgIDxtYXQtbGFiZWw+RGF0YSBkZSBFbWlzc8OjbzwvbWF0LWxhYmVsPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cInBlc3NvYS5yZ0RhdGFFbWlzc2FvXCIgbmFtZT1cInJnRGF0YUVtaXNzYW9cIiAjcmdEYXRhRW1pc3Nhbz1cIm5nTW9kZWxcIiAvPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBlc3NvYS50aXBvUGVzc29hID09IHRpcG9QZXNzb2FFbnVtKCkuRVNUUkFOR0VJUkEgfHwgcGVzc29hLmNvZGlnb1BhaXNOYXNjaW1lbnRvICE9IDIyXCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgPG1hdC1sYWJlbD5EYXRhIENoZWdhZGEgQnJhc2lsPC9tYXQtbGFiZWw+XHJcbiAgICAgIDxpbnB1dCBtYXRJbnB1dCBbbWF0RGF0ZXBpY2tlcl09XCJkYXRhQ2hlZ2FkYUJyYXNpbFBpY2tlclwiIFsobmdNb2RlbCldPVwicGVzc29hLmRhdGFDaGVnYWRhQnJhc2lsXCJcclxuICAgICAgICBuYW1lPVwiZGF0YUNoZWdhZGFCcmFzaWxcIiAjZGF0YUNoZWdhZGFCcmFzaWw9XCJuZ01vZGVsXCIgcmVxdWlyZWQ+XHJcbiAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwiZGF0YUNoZWdhZGFCcmFzaWxQaWNrZXJcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cclxuICAgICAgPG1hdC1kYXRlcGlja2VyICNkYXRhQ2hlZ2FkYUJyYXNpbFBpY2tlcj48L21hdC1kYXRlcGlja2VyPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmb3JtLTEwXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgPG1hdC1sYWJlbD5QYcOtcyBQYXNzYXBvcnRlPC9tYXQtbGFiZWw+XHJcbiAgICAgIDxtYXQtc2VsZWN0IFsobmdNb2RlbCldPVwicGVzc29hLmNvZGlnb1BhaXNQYXNzYXBvcnRlXCIgbmFtZT1cImNvZGlnb1BhaXNQYXNzYXBvcnRlXCIgI2NvZGlnb1BhaXNQYXNzYXBvcnRlPVwibmdNb2RlbFwiXHJcbiAgICAgICAgcmVxdWlyZWQ+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHBhaXNOYXNjaW1lbnRvIG9mIHBhaXNlcyB8IGFzeW5jXCIgW3ZhbHVlXT1cInBhaXNOYXNjaW1lbnRvLmNvZGlnb1wiPlxyXG4gICAgICAgICAge3sgcGFpc05hc2NpbWVudG8uZGVub21pbmFjYW8gfX1cclxuICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgIDxtYXQtbGFiZWw+TsO6bWVybyBQYXNzYXBvcnRlPC9tYXQtbGFiZWw+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwicGVzc29hLnBhc3NhcG9ydGVcIiBuYW1lPVwicGFzc2Fwb3J0ZVwiICNwYXNzYXBvcnRlPVwibmdNb2RlbFwiIHJlcXVpcmVkIC8+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8bGliLXVuYi1wZXNzb2EtdGVsZWZvbmUtbGlzdCBzdHlsZT1cImZsZXg6IDEgMSAxMDAlO1wiIFtiYWNrZW5kVVJMXT1cImNvbmZpZy5iYWNrZW5kVVJMXCIgW3RlbGVmb25lc109XCJwZXNzb2EudGVsZWZvbmVzXCJcclxuICAgICh0ZWxlZm9uZXNFbWl0dGVkKT1cInRlbGVmb25lc0VtaXR0ZWQoJGV2ZW50KVwiPjwvbGliLXVuYi1wZXNzb2EtdGVsZWZvbmUtbGlzdD5cclxuXHJcbiAgPGxpYi11bmItcGVzc29hLWVuZGVyZWNvLWxpc3Qgc3R5bGU9XCJmbGV4OiAxIDEgMTAwJTtcIiBbYmFja2VuZFVSTF09XCJjb25maWcuYmFja2VuZFVSTFwiIFtlbmRlcmVjb3NdPVwicGVzc29hLmVuZGVyZWNvc1wiXHJcbiAgICAoZW5kZXJlY29zRW1pdHRlZCk9XCJlbmRlcmVjb3NFbWl0dGVkKCRldmVudClcIj48L2xpYi11bmItcGVzc29hLWVuZGVyZWNvLWxpc3Q+XHJcblxyXG4gIDxsaWItdW5iLXBlc3NvYS1lbWFpbC1saXN0IHN0eWxlPVwiZmxleDogMSAxIDEwMCU7XCIgW2JhY2tlbmRVUkxdPVwiY29uZmlnLmJhY2tlbmRVUkxcIiBbZW1haWxzXT1cInBlc3NvYS5lbWFpbHNcIlxyXG4gICAgKGVtYWlsc0VtaXR0ZWQpPVwiZW1haWxzRW1pdHRlZCgkZXZlbnQpXCI+PC9saWItdW5iLXBlc3NvYS1lbWFpbC1saXN0PlxyXG5cclxuICA8ZGl2ICpuZ0lmPVwiaXNSZWFkeU9ubHlcIiBzdHlsZT1cImZsZXg6MSAxIDEwMCU7IG1hcmdpbi1ib3R0b206MTBweDtcIj5cclxuICAgIDxtYXQtY2FyZD5cclxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgPHN0cm9uZz5TZXJ2aWRvciBjb20gbWF0csOtY3VsYSBTSUFQRSBkZXZlIHRlciBzZXVzIGRhZG9zIGF1dGFsaXphZG9zIHBlbG8gYXBsaWNhdGl2byBkbyBzb3Vnb3Y8L3N0cm9uZz5cclxuICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgPC9tYXQtY2FyZD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPG1hdC1jYXJkLWFjdGlvbnMgY2xhc3M9XCJjYXJkLWFjdGlvbnMtYnV0dG9uc1wiICpuZ0lmPVwiIWhpZGVTYWx2YXJCdXR0b25cIj5cclxuICAgIDxidXR0b24gbWF0LWZsYXQtYnV0dG9uIFtkaXNhYmxlZF09XCJpc0xvYWRpbmcgfHwgaXNSZWFkeU9ubHlcIiB0eXBlPVwic3VibWl0XCIgY29sb3I9XCJwcmltYXJ5XCI+XHJcbiAgICAgIFNhbHZhclxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9tYXQtY2FyZC1hY3Rpb25zPlxyXG5cclxuPC9mb3JtPiJdfQ==
|
|
248
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5iLXBlc3NvYS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuYi1saWItY29tcG9uZW50cy9zcmMvbGliL3VuYi1wZXNzb2EvdW5iLXBlc3NvYS1mb3JtL3VuYi1wZXNzb2EtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91bmItbGliLWNvbXBvbmVudHMvc3JjL2xpYi91bmItcGVzc29hL3VuYi1wZXNzb2EtZm9ybS91bmItcGVzc29hLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQixTQUFTLEVBQUUsWUFBWSxFQUFVLEtBQUssRUFBb0IsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUk5SCxPQUFPLEVBQXNCLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUtuRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOENBQThDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBU25GLE1BQU0sT0FBTyxzQkFBc0I7SUEwQmpDLFlBQW9CLE9BQXlCLEVBQVUsUUFBcUIsRUFBVSxZQUFnQztRQUFsRyxZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQUFVLGFBQVEsR0FBUixRQUFRLENBQWE7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBb0I7UUF2QjdHLFdBQU0sR0FBd0Is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QUFDLENBQUMsT0FBTyxZQUFZLENBQUM7WUFDNUQsT0FBTyxDQUFDLENBQUMsT0FBTyxXQUFXLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7OEdBalBVLHNCQUFzQjtrR0FBdEIsc0JBQXNCLDBUQ3hCbkMsNGxWQStNTzs7MkZEdkxNLHNCQUFzQjtrQkFObEMsU0FBUzsrQkFDRSxxQkFBcUIsY0FDbkIsS0FBSztnSkFNUSxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBQ2QsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBib29sZWFuQXR0cmlidXRlLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVW5iTWVuc2FnZW1TZXJ2aWNlLCBVbmJUaXBvTWVuc2FnZW1FbnVtIH0gZnJvbSAnLi4vLi4vdW5iLW1lbnNhZ2VtL3VuYi1tZW5zYWdlbS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgbGlzdGFFc3RhZG9zIH0gZnJvbSAnLi4vcGVzc29hLXRhYmVsYXMtYXBvaW8nO1xyXG5pbXBvcnQgeyBVbmJQZXNzb2FFbWFpbCB9IGZyb20gJy4uL3VuYi1wZXNzb2EtbW9kZWxzL3VuYi1wZXNzb2EtZW1haWwubW9kZWwnO1xyXG5pbXBvcnQgeyBVbmJQZXNzb2FFbmRlcmVjbyB9IGZyb20gJy4uL3VuYi1wZXNzb2EtbW9kZWxzL3VuYi1wZXNzb2EtZW5kZXJlY28ubW9kZWwnO1xyXG5pbXBvcnQgeyBVbmJQZXNzb2FFc2NvbGFyaWRhZGUgfSBmcm9tICcuLi91bmItcGVzc29hLW1vZGVscy91bmItcGVzc29hLWVzY29sYXJpZGFkZS5tb2RlbCc7XHJcbmltcG9ydCB7IFVuYlBlc3NvYUVzdGFkb0NpdmlsIH0gZnJvbSAnLi4vdW5iLXBlc3NvYS1tb2RlbHMvdW5iLXBlc3NvYS1lc3RhZG8tY2l2aWwubW9kZWwnO1xyXG5pbXBvcnQgeyBVbmJQZXNzb2FQYWlzIH0gZnJvbSAnLi4vdW5iLXBlc3NvYS1tb2RlbHMvdW5iLXBlc3NvYS1wYWlzJztcclxuaW1wb3J0IHsgVW5iUGVzc29hVGVsZWZvbmUgfSBmcm9tICcuLi91bmItcGVzc29hLW1vZGVscy91bmItcGVzc29hLXRlbGVmb25lLm1vZGVsJztcclxuaW1wb3J0IHsgVW5iUGVzc29hTW9kZWwgfSBmcm9tICcuLi91bmItcGVzc29hLW1vZGVscy91bmItcGVzc29hLm1vZGVsJztcclxuaW1wb3J0IHsgVW5CUGVzc29hU2VydmljZSwgVW5iUGVzc29hRXJyb1BhZHJhbyB9IGZyb20gJy4uL3VuYi1wZXNzb2Euc2VydmljZSc7XHJcbmltcG9ydCB7IFVuYlRpcG9QZXNzb2FFbnVtIH0gZnJvbSAnLi4vdW5iLXRpcG8tcGVzc29hLmVudW0nO1xyXG5pbXBvcnQgeyBVbmJQZXNzb2FGb3JtQ29uZmlnIH0gZnJvbSAnLi4vdW5iLXBlc3NvYS1tb2RlbHMvdW5iLXBlc3NvYS1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi11bmItcGVzc29hLWZvcm0nLFxyXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91bmItcGVzc29hLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi91bmItcGVzc29hLWZvcm0uY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFVuYlBlc3NvYUZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBAVmlld0NoaWxkKCdwZXNzb2FGb3JtJykgcGVzc29hRm9ybSE6IE5nRm9ybTtcclxuICBASW5wdXQoKSBjb25maWc6IFVuYlBlc3NvYUZvcm1Db25maWcgPSBuZXcgVW5iUGVzc29hRm9ybUNvbmZpZygpO1xyXG4gIEBJbnB1dCgpIGhpZGVTYWx2YXJCdXR0b246IGJvb2xlYW4gPSBmYWxzZTsgLy8gdXNhZG8gcXVhbmRvIGVoIG1vZGFsLiBOYW8gbW9zdHJhIGJvdGFvIHNhbHZhci4gUHEgbyBEaWFsb2cgasOhIHRlbSB1bSBib3RhbyBzYWx2YXJcclxuICBAT3V0cHV0KCkgcGVzc29hRW1pdHRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8VW5iUGVzc29hTW9kZWw+KCk7XHJcbiAgQE91dHB1dCgpIGlzTG9hZGluZ0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgLy8gdGFiZWxhcyB0cmFkaWNpb25haXMgcXVlIHZlbSBkbyBiYWNrZW5kXHJcbiAgZXNjb2xhcmlkYWRlITogT2JzZXJ2YWJsZTxVbmJQZXNzb2FFc2NvbGFyaWRhZGVbXT47XHJcbiAgcGFpc2VzITogT2JzZXJ2YWJsZTxVbmJQZXNzb2FQYWlzW10+O1xyXG4gIGVzdGFkb3NDaXZpbCE6IE9ic2VydmFibGU8VW5iUGVzc29hRXN0YWRvQ2l2aWxbXT47XHJcbiAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZW5kZXJlY28gPSBuZXcgVW5iUGVzc29hRW5kZXJlY28oKTtcclxuICBlbWFpbCA9IG5ldyBVbmJQZXNzb2FFbWFpbCgpO1xyXG4gIGlzUmVhZHlPbmx5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgZGFkb3NTYWx2b3M6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTsgLy8gQXJtYXplbmEgb3MgZGFkb3MgYW8gdHJvY2FyIGRlIHRpcG9cclxuICBpZE1lbnNhZ2VtU2VydmljZSA9IFwidW5iUGVzc29hRm9ybVwiO1xyXG5cclxuICAvLyBDb250cm9sYSBzZSBlc3TDoSBpbmNsdWluZG8gbm92YSBwZXNzb2Egb3UgZWRpdGFuZG8gZXhpc3RlbnRlXHJcbiAgZG9jdW1lbnRvUGVzcXVpc2Fkbzogc3RyaW5nID0gJyc7XHJcbiAgaW5jbHVpbmRvTm92YVBlc3NvYTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGVkaXRhbmRvUGVzc29hOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHBlc3NvYTogVW5iUGVzc29hTW9kZWwgPSBuZXcgVW5iUGVzc29hTW9kZWwoKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXJ2aWNlOiBVbkJQZXNzb2FTZXJ2aWNlLCBwcml2YXRlIHNuYWNrQmFyOiBNYXRTbmFja0JhciwgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IFVuYk1lbnNhZ2VtU2VydmljZSkge1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5hbGVydFNlcnZpY2UuaGlkZU1lc3NhZ2UodGhpcy5pZE1lbnNhZ2VtU2VydmljZSk7XHJcbiAgICBpZiAodGhpcy5jb25maWcuYmFja2VuZFVSTCA9PSBcIlwiKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlRXJyb3JQcmludENvbnNvbGUoXCJbVW5iUGVzc29hUGVzcXVpc2FyQ29tcG9uZW50XSBFUlJPUjogYXBpUGVzc29hQ29uZmlnLnVybCBlc3TDoSBudWxsLiBJbnNpcmEgbyBwYXLDom1ldHJvIChhcGlQZXNzb2FDb25maWcpIGNvbSBvIHZhbG9yIHbDoWxpZG8hXCIpXHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VydmljZS5zZXRCYWNrZW5kVXJsKHRoaXMuY29uZmlnLmJhY2tlbmRVUkwpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZy50b2tlbiAmJiB0aGlzLmNvbmZpZy50b2tlbiAhPSBcIlwiKSB7IFxyXG4gICAgICB0aGlzLnNlcnZpY2Uuc2V0VG9rZW4odGhpcy5jb25maWcudG9rZW4pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGF0ZW5jYW8sIG8gcGVzc29hUmVjZWJpZGEgcXVlIGluaWNpYWxpemEgZXNzZSBjb21wb25lbnRlXHJcbiAgICB0aGlzLmVzY29sYXJpZGFkZSA9IHRoaXMuc2VydmljZS5nZXRFc2NvbGFyaWRhZGUoKTtcclxuICAgIHRoaXMucGFpc2VzID0gdGhpcy5zZXJ2aWNlLmdldFBhaXNlcygpO1xyXG4gICAgdGhpcy5lc3RhZG9zQ2l2aWwgPSB0aGlzLnNlcnZpY2UuZ2V0RXN0YWRvQ2l2aWwoKTtcclxuICAgIHRoaXMucGVzc29hUmVjZWJpZGEodGhpcy5jb25maWcucGVzc29hKTtcclxuICB9XHJcblxyXG4gIHBlc3NvYVJlY2ViaWRhKHBlc3NvYVJlY2ViaWRhOiBVbmJQZXNzb2FNb2RlbCkge1xyXG4gICAgaWYgKCFwZXNzb2FSZWNlYmlkYSkge1xyXG4gICAgICB0aGlzLnBlc3NvYSA9IHt9IGFzIFVuYlBlc3NvYU1vZGVsOyBcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucGVzc29hID0gcGVzc29hUmVjZWJpZGE7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmhpZGVNZXNzYWdlKHRoaXMuaWRNZW5zYWdlbVNlcnZpY2UpO1xyXG5cclxuICAgIC8vIFJlc2V0YSBvIGZvcm11bMOhcmlvIHF1YW5kbyB1bWEgbm92YSBwZXNzb2Egw6kgcmVjZWJpZGFcclxuICAgIGlmICh0aGlzLnBlc3NvYUZvcm0pIHtcclxuICAgICAgdGhpcy5wZXNzb2FGb3JtLnJlc2V0Rm9ybSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGluaWNpYWxpemEgcHJhIG5hbyBxdWVicmFyXHJcbiAgICBpZiAoIXRoaXMucGVzc29hLmVuZGVyZWNvcykgdGhpcy5wZXNzb2EuZW5kZXJlY29zID0gW107XHJcbiAgICBpZiAoIXRoaXMucGVzc29hLmVtYWlscykgdGhpcy5wZXNzb2EuZW1haWxzID0gW107XHJcbiAgICBpZiAoIXRoaXMucGVzc29hLnRlbGVmb25lcykgdGhpcy5wZXNzb2EudGVsZWZvbmVzID0gW107XHJcblxyXG4gICAgLy8gMS4gVmVyaWZpY2Egc2Ugw6kgdW0gcmVnaXN0cm8gcXVlIGrDoSBleGlzdGUgbm8gYmFuY29cclxuICAgIGNvbnN0IGV4aXN0ZVJlZ2lzdHJvID0gISF0aGlzLnBlc3NvYT8uY29kaWdvUGVzc29hO1xyXG5cclxuICAgIC8vIDIuIFZlcmlmaWNhIHNlIMOpIGJsb3F1ZWFkbyBwZWxvIFNJQVBFIChTw7MgZmF6IHNlbnRpZG8gc2UgbyByZWdpc3RybyBleGlzdGlyKVxyXG4gICAgdGhpcy5pc1JlYWR5T25seSA9IGV4aXN0ZVJlZ2lzdHJvICYmICEhdGhpcy5wZXNzb2E/Lm1hdHJpY3VsYVNpYXBlO1xyXG5cclxuICAgIC8vIDMuIERlZmluZSBvIGRvY3VtZW50byAodXNhbmRvIGFxdWVsZSBtYXBhIGxpbXBvKVxyXG4gICAgY29uc3QgZG9jTWFwID0ge1xyXG4gICAgICBbVW5iVGlwb1Blc3NvYUVudW0uRklTSUNBXTogdGhpcy5wZXNzb2EuY3BmLFxyXG4gICAgICBbVW5iVGlwb1Blc3NvYUVudW0uSlVSSURJQ0FdOiB0aGlzLnBlc3NvYS5jbnBqLFxyXG4gICAgICBbVW5iVGlwb1Blc3NvYUVudW0uRVNUUkFOR0VJUkFdOiB0aGlzLnBlc3NvYS5wYXNzYXBvcnRlXHJcbiAgICB9O1xyXG4gICAgdGhpcy5kb2N1bWVudG9QZXNxdWlzYWRvID0gZG9jTWFwW3RoaXMucGVzc29hLnRpcG9QZXNzb2FdIHx8ICcnO1xyXG5cclxuICAgIC8vIDQuIChPcGNpb25hbCkgU25hY2tiYXIgc2UgZm9yIFNJQVBFXHJcbiAgICBpZiAodGhpcy5pc1JlYWR5T25seSkge1xyXG4gICAgICB0aGlzLm9wZW5TbmFja0JhcignRGFkb3MgaW1wb3J0YWRvcyBkbyBTSUFQRSBuw6NvIHBvZGVtIHNlciBhbHRlcmFkb3MuJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzYWx2YXIoZm9ybTogTmdGb3JtKSB7XHJcbiAgICB0aGlzLmFsZXJ0U2VydmljZS5oaWRlTWVzc2FnZSh0aGlzLmlkTWVuc2FnZW1TZXJ2aWNlKTtcclxuXHJcbiAgICAvLyBTdWFzIHZhbGlkYcOnw7Vlc1xyXG4gICAgaWYgKCF0aGlzLnZhbGlkYXIoZm9ybSkpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmlzTG9hZGluZ0NoYW5nZS5lbWl0KHRydWUpO1xyXG4gICAgLy8gQWdvcmEgbyBzZXJ2aWNlIGNvbnZlcnRlIGludGVybmFtZW50ZSBvIE1vZGVsIHBhcmEgbyBwYXlsb2FkIGNvcnJldG9cclxuICAgIC8vIGUgZGVjaWRlIG8gZW5kcG9pbnQgY29tIGJhc2Ugbm8gdGlwb1Blc3NvYVxyXG4gICAgdGhpcy5zZXJ2aWNlLnNhbHZhclBlc3NvYSh0aGlzLmNvbmZpZy5wZXNzb2EpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb3N0YSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG4gICAgICAgICAgLy8gTWVuc2FnZW0gZGUgU3VjZXNzb1xyXG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd01lc3NhZ2UoXCI8c3Ryb25nPlJlZ2lzdHJvIHNhbHZvIGNvbSBzdWNlc3NvITwvc3Ryb25nPlwiLCBVbmJUaXBvTWVuc2FnZW1FbnVtLlNVQ0NFU1MsIHRoaXMuaWRNZW5zYWdlbVNlcnZpY2UpO1xyXG5cclxuICAgICAgICAgIC8vIEF0dWFsaXphIGRhZG9zIHJldG9ybmFkb3MgKElEcyBnZXJhZG9zKVxyXG4gICAgICAgICAgaWYgKHJlc3Bvc3RhKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLnBlc3NvYS5jb2RpZ29QZXNzb2EgPSByZXNwb3N0YS5jb2RpZ29QZXNzb2EgfHwgdGhpcy5jb25maWcucGVzc29hLmNvZGlnb1Blc3NvYTtcclxuICAgICAgICAgICAgdGhpcy5jb25maWcucGVzc29hLmlkUGVzc29hID0gcmVzcG9zdGEuaWRQZXNzb2EgfHwgdGhpcy5jb25maWcucGVzc29hLmlkUGVzc29hO1xyXG4gICAgICAgICAgICB0aGlzLnBlc3NvYUVtaXR0ZWQuZW1pdCh0aGlzLmNvbmZpZy5wZXNzb2EpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnI6IFVuYlBlc3NvYUVycm9QYWRyYW8pID0+IHtcclxuICAgICAgICAgIC8vIEFRVUk6IE8gJ2VycicgasOhIGNoZWdhIGxpbXBvIGNvbSB7IG1lbnNhZ2VtU2ltcGxlcywgbWVuc2FnZW1IdG1sIH1cclxuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhcihmb3JtOiBOZ0Zvcm0pOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5jb25maWcucGVzc29hKSB7XHJcbiAgICAgIHRoaXMub3BlblNuYWNrQmFyKFwiRXJybyBhbyBjYXJyZWdhciBvYmpldG8gcGVzc29hXCIpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGZvcm0uaW52YWxpZCkge1xyXG4gICAgICAvLyBwYXJhIHF1ZSBvcyBlcnJvcyBhcGFyZcOnYW0gbmEgdGVsYSBwYXJhIG8gdXN1w6FyaW8uXHJcbiAgICAgIGZvcm0uY29udHJvbC5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICAgIHRoaXMub3BlblNuYWNrQmFyKFwiUG9yIGZhdm9yLCBwcmVlbmNoYSBvcyBjYW1wb3Mgb2JyaWdhdMOzcmlvcy5cIik7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jb25maWcucGVzc29hLnRlbGVmb25lcyA9PSBudWxsIHx8ICh0aGlzLmNvbmZpZy5wZXNzb2EudGVsZWZvbmVzICE9IG51bGwgJiYgdGhpcy5jb25maWcucGVzc29hLnRlbGVmb25lcy5sZW5ndGggPT0gMCkpIHtcclxuICAgICAgdGhpcy5vcGVuU25hY2tCYXIoXCJDYWRhc3RyZSBwZWxvIG1lbm9zIHVtIHRlbGVmb25lIG5vIGJvdMOjbyBDYWRhc3RyYXIgTm92byBUZWxlZm9uZVwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZy5wZXNzb2EuZW5kZXJlY29zID09IG51bGwgfHwgKHRoaXMuY29uZmlnLnBlc3NvYS5lbmRlcmVjb3MgIT0gbnVsbCAmJiB0aGlzLmNvbmZpZy5wZXNzb2EuZW5kZXJlY29zLmxlbmd0aCA9PSAwKSkge1xyXG4gICAgICB0aGlzLm9wZW5TbmFja0JhcihcIkNhZGFzdHJlIHBlbG8gbWVub3MgdW0gZW5kZXJlw6dvIG5vIGJvdMOjbyBDYWRhc3RyYXIgTm92byBFbmRlcmXDp29cIik7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jb25maWcucGVzc29hLmVtYWlscyA9PSBudWxsIHx8ICh0aGlzLmNvbmZpZy5wZXNzb2EuZW1haWxzICE9IG51bGwgJiYgdGhpcy5jb25maWcucGVzc29hLmVtYWlscy5sZW5ndGggPT0gMCkpIHtcclxuICAgICAgdGhpcy5vcGVuU25hY2tCYXIoXCJDYWRhc3RyZSBwZWxvIG1lbm9zIHVtIGUtbWFpbCBubyBib3TDo28gQ2FkYXN0cmFyIE5vdm8gRW1haWxcIik7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jb25maWcucGVzc29hLnRpcG9QZXNzb2EgPT0gVW5iVGlwb1Blc3NvYUVudW0uRklTSUNBKSB7XHJcbiAgICAgIGlmICghdGhpcy5jb25maWcucGVzc29hLm5vbWUgfHwgKHRoaXMuY29uZmlnLnBlc3NvYSAmJiB0aGlzLmNvbmZpZy5wZXNzb2Eubm9tZSA9PSBcIlwiKSkge1xyXG4gICAgICAgIHRoaXMub3BlblNuYWNrQmFyKFwiTm9tZSDDqSB1bSBjYW1wbyBvYnJpZ2F0w7NyaW9cIik7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIXRoaXMuY29uZmlnLnBlc3NvYS5kYXRhTmFzY2ltZW50bykge1xyXG4gICAgICAgIHRoaXMub3BlblNuYWNrQmFyKFwiRGF0YSBkZSBOYXNjaW1lbnRvIMOpIHVtIGNhbXBvIG9icmlnYXTDs3Jpb1wiKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jb25maWcucGVzc29hLnRpcG9QZXNzb2EgPT0gVW5iVGlwb1Blc3NvYUVudW0uRVNUUkFOR0VJUkEpIHtcclxuICAgICAgaWYgKCF0aGlzLmNvbmZpZy5wZXNzb2Eubm9tZSB8fCAodGhpcy5jb25maWcucGVzc29hICYmIHRoaXMuY29uZmlnLnBlc3NvYS5ub21lID09IFwiXCIpKSB7XHJcbiAgICAgICAgdGhpcy5vcGVuU25hY2tCYXIoXCJOb21lIMOpIHVtIGNhbXBvIG9icmlnYXTDs3Jpb1wiKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5wZXNzb2EucGFzc2Fwb3J0ZSA9PSBudWxsIHx8ICh0aGlzLmNvbmZpZy5wZXNzb2EucGFzc2Fwb3J0ZSAhPSBudWxsICYmIHRoaXMuY29uZmlnLnBlc3NvYS5wYXNzYXBvcnRlID09IFwiXCIpKSB7XHJcbiAgICAgICAgdGhpcy5vcGVuU25hY2tCYXIoXCJQYXNzYXBvcnRlIMOpIHVtIGNhbXBvIG9icmlnYXTDs3Jpb1wiKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jb25maWcucGVzc29hLnRpcG9QZXNzb2EgPT0gVW5iVGlwb1Blc3NvYUVudW0uSlVSSURJQ0EpIHtcclxuICAgICAgaWYgKHRoaXMuY29uZmlnLnBlc3NvYS5jbnBqID09IG51bGwgfHwgKHRoaXMuY29uZmlnLnBlc3NvYS5jbnBqICE9IG51bGwgJiYgdGhpcy5jb25maWcucGVzc29hLmNucGogPT0gXCJcIikpIHtcclxuICAgICAgICB0aGlzLm9wZW5TbmFja0JhcihcIkNOUEogw6kgdW0gY2FtcG8gb2JyaWdhdMOzcmlvXCIpO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgdGVsZWZvbmVzRW1pdHRlZCh0ZWxlZm9uZXM6IFVuYlBlc3NvYVRlbGVmb25lW10pIHtcclxuICAgIHRoaXMuY29uZmlnLnBlc3NvYS50ZWxlZm9uZXMgPSB0ZWxlZm9uZXM7XHJcbiAgfVxyXG5cclxuICBlbmRlcmVjb3NFbWl0dGVkKGVuZGVyZWNvczogVW5iUGVzc29hRW5kZXJlY29bXSkge1xyXG4gICAgdGhpcy5jb25maWcucGVzc29hLmVuZGVyZWNvcyA9IGVuZGVyZWNvcztcclxuICB9XHJcblxyXG4gIGVtYWlsc0VtaXR0ZWQoZW1haWxzOiBVbmJQZXNzb2FFbWFpbFtdKSB7XHJcbiAgICB0aGlzLmNvbmZpZy5wZXNzb2EuZW1haWxzID0gZW1haWxzO1xyXG4gIH1cclxuXHJcbiAgb3BlblNuYWNrQmFyKG1lc3NhZ2U6IHN0cmluZykge1xyXG4gICAgdGhpcy5zbmFja0Jhci5vcGVuKG1lc3NhZ2UsICd4Jywge1xyXG4gICAgICBkdXJhdGlvbjogNTAwMCxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdGlwb1Blc3NvYUVudW0oKSB7XHJcbiAgICByZXR1cm4gVW5iVGlwb1Blc3NvYUVudW07XHJcbiAgfVxyXG5cclxuICBnZXRMaXN0YUVzdGFkb3MoKSB7XHJcbiAgICByZXR1cm4gbGlzdGFFc3RhZG9zO1xyXG4gIH1cclxuXHJcblxyXG4gIGhhbmRsZUVycm9yUHJpbnRDb25zb2xlKGVycm86IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coZXJybyk7XHJcbiAgICB0aGlzLmhhbmRsZUVycm9yKGVycm8pO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRXJyb3IoZXJybzogVW5iUGVzc29hRXJyb1BhZHJhbykge1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNMb2FkaW5nQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG5cclxuICAgIC8vIDEuIE1vc3RyYSBhIG1lbnNhZ2VtIGN1cnRhL3NpbXBsZXMgbm8gU25hY2tCYXIgKEZ1bmRvIGRhIHRlbGEpXHJcbiAgICAvLyBFeDogXCJPIGZvcm11bMOhcmlvIHBvc3N1aSBlcnJvcyBkZSB2YWxpZGHDp8Ojby5cIiBvdSBcIlNlc3PDo28gZXhwaXJhZGEuXCJcclxuICAgIGlmIChlcnJvLm1lbnNhZ2VtU2ltcGxlcykge1xyXG4gICAgICB0aGlzLm9wZW5TbmFja0JhcihlcnJvLm1lbnNhZ2VtU2ltcGxlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gMi4gTW9zdHJhIGEgbWVuc2FnZW0gZGV0YWxoYWRhIEhUTUwgbm8gY29tcG9uZW50ZSA8dW5iLW1lbnNhZ2VtPlxyXG4gICAgLy8gRXg6IExpc3RhIGNvbSA8dWw+PGxpPkNhbXBvIERhdGEgaW52w6FsaWRvLi4uPC9saT48L3VsPlxyXG4gICAgaWYgKHRoaXMuYWxlcnRTZXJ2aWNlICYmIGVycm8ubWVuc2FnZW1IdG1sKSB7XHJcbiAgICAgIC8vIFNlIG8gc2V1IGFsZXJ0U2VydmljZSBzdXBvcnRhciBJRCBkbyBjb21wb25lbnRlIGFsdm8sIHBhc3NlIGFxdWkuXHJcbiAgICAgIC8vIENhc28gY29udHLDoXJpbywgZWxlIG1vc3RyYSBubyBjb21wb25lbnRlIHBhZHLDo28uXHJcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNob3dNZXNzYWdlKGVycm8ubWVuc2FnZW1IdG1sLCBVbmJUaXBvTWVuc2FnZW1FbnVtLkRBTkdFUiwgdGhpcy5pZE1lbnNhZ2VtU2VydmljZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRMYWJlbERvY3VtZW50bygpOiBzdHJpbmcge1xyXG4gICAgc3dpdGNoICh0aGlzLmNvbmZpZy5wZXNzb2EudGlwb1Blc3NvYSkge1xyXG4gICAgICBjYXNlIHRoaXMudGlwb1Blc3NvYUVudW0oKS5GSVNJQ0E6IHJldHVybiAnQ1BGJztcclxuICAgICAgY2FzZSB0aGlzLnRpcG9QZXNzb2FFbnVtKCkuSlVSSURJQ0E6IHJldHVybiAnQ05QSic7XHJcbiAgICAgIGNhc2UgdGhpcy50aXBvUGVzc29hRW51bSgpLkVTVFJBTkdFSVJBOiByZXR1cm4gJ1Bhc3NhcG9ydGUnO1xyXG4gICAgICBkZWZhdWx0OiByZXR1cm4gJ0RvY3VtZW50byc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcblxyXG59XHJcbiIsIjxtYXQtcHJvZ3Jlc3MtYmFyICpuZ0lmPVwiaXNMb2FkaW5nXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XHJcblxyXG48dW5iLW1lbnNhZ2VtIFtpZGVudGlmaWNhZG9yXT1cImlkTWVuc2FnZW1TZXJ2aWNlXCI+PC91bmItbWVuc2FnZW0+XHJcblxyXG48IS0tIExhYmVsIGluZGljYW5kbyBxdWUgZXN0w6EgaW5jbHVpbmRvIG5vdmEgcGVzc29hIC0tPlxyXG48ZGl2ICpuZ0lmPVwiZG9jdW1lbnRvUGVzcXVpc2Fkb1wiXHJcbiAgICAgIGNsYXNzPVwic3RhdHVzLWJhbm5lclwiIFxyXG4gICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAnc3RhdHVzLWluY2x1c2FvJzogIXBlc3NvYS5jb2RpZ29QZXNzb2EsXHJcbiAgICAgICAnc3RhdHVzLWVkaWNhbyc6IHBlc3NvYS5jb2RpZ29QZXNzb2EgJiYgIWlzUmVhZHlPbmx5LFxyXG4gICAgICAgJ3N0YXR1cy1ibG9xdWVhZG8nOiBjb25maWcuaXNSZWFkeU9ubHlcclxuICAgICB9XCI+XHJcblxyXG4gIDxtYXQtaWNvbj5cclxuICAgIHt7ICFwZXNzb2EuY29kaWdvUGVzc29hID8gJ3BlcnNvbl9hZGQnIDogKGlzUmVhZHlPbmx5ID8gJ2xvY2snIDogJ2VkaXQnKSB9fVxyXG4gIDwvbWF0LWljb24+XHJcblxyXG4gIDxzcGFuPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFwZXNzb2EuY29kaWdvUGVzc29hXCI+SW5jbHVpbmRvIG5vdmEgcGVzc29hPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGVzc29hLmNvZGlnb1Blc3NvYSAmJiAhaXNSZWFkeU9ubHlcIj5FZGl0YW5kbyBwZXNzb2E8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1JlYWR5T25seVwiPlJlZ2lzdHJvIFNJQVBFIChWaXN1YWxpemHDp8Ojbyk8L25nLWNvbnRhaW5lcj4gY29tIDxzdHJvbmc+e3sgZ2V0TGFiZWxEb2N1bWVudG8oKSB9fSB7eyBkb2N1bWVudG9QZXNxdWlzYWRvIH19PC9zdHJvbmc+XHJcbiAgPC9zcGFuPlxyXG48L2Rpdj5cclxuXHJcbjxmb3JtICNwZXNzb2FGb3JtPVwibmdGb3JtXCIgW2NsYXNzLnJlYWRvbmx5XT1cImlzUmVhZHlPbmx5IHx8IGlzTG9hZGluZ1wiIGNsYXNzPVwiZm9ybS1jb250YWluZXJcIiAobmdTdWJtaXQpPVwic2FsdmFyKHBlc3NvYUZvcm0pXCI+XHJcbiAgPCEtLSBDYW1wb3MgUGVzc29hIEbDrXNpY2EgZSBFc3RyYW5nZWlyYSAgLS0+XHJcbiAgPG5nLWNvbnRhaW5lclxyXG4gICAgKm5nSWY9XCJwZXNzb2EudGlwb1Blc3NvYSA9PSB0aXBvUGVzc29hRW51bSgpLkZJU0lDQSB8fCBwZXNzb2EudGlwb1Blc3NvYSA9PSB0aXBvUGVzc29hRW51bSgpLkVTVFJBTkdFSVJBXCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmb3JtLTI1XCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgPG1hdC1sYWJlbD5Ob21lPC9tYXQtbGFiZWw+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwicGVzc29hLm5vbWVcIiBuYW1lPVwibm9tZVwiICNub21lPVwibmdNb2RlbFwiIHJlcXVpcmVkIC8+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZvcm0tMjBcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICA8bWF0LWxhYmVsPlNleG88L21hdC1sYWJlbD5cclxuICAgICAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJwZXNzb2EuY29kaWdvU2V4b1wiIG5hbWU9XCJjb2RpZ29TZXhvXCIgI2NvZGlnb1NleG89XCJuZ01vZGVsXCIgcmVxdWlyZWQ+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIjFcIj5NYXNjdWxpbm88L21hdC1vcHRpb24+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIjJcIj5GZW1pbmlubzwvbWF0LW9wdGlvbj5cclxuICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmb3JtLTI1XCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgPG1hdC1sYWJlbD5EYXRhIE5hc2NpbWVudG88L21hdC1sYWJlbD5cclxuICAgICAgPGlucHV0IG1hdElucHV0IFttYXREYXRlcGlja2VyXT1cImRhdGFOYXNjaW1lbnRvUGlja2VyXCIgWyhuZ01vZGVsKV09XCJwZXNzb2EuZGF0YU5hc2NpbWVudG9cIiBuYW1lPVwiZGF0YU5hc2NpbWVudG9cIlxyXG4gICAgICAgICNkYXRhTmFzY2ltZW50bz1cIm5nTW9kZWxcIiByZXF1aXJlZD5cclxuICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJkYXRhTmFzY2ltZW50b1BpY2tlclwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG4gICAgICA8bWF0LWRhdGVwaWNrZXIgI2RhdGFOYXNjaW1lbnRvUGlja2VyPjwvbWF0LWRhdGVwaWNrZXI+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZvcm0tMjBcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICA8bWF0LWxhYmVsPkVzdGFkbyBDaXZpbDwvbWF0LWxhYmVsPlxyXG4gICAgICA8bWF0LXNlbGVjdCBbKG5nTW9kZWwpXT1cInBlc3NvYS5jb2RpZ29Fc3RhZG9DaXZpbFwiIG5hbWU9XCJjb2RpZ29Fc3RhZG9DaXZpbFwiICNjb2RpZ29Fc3RhZG9DaXZpbD1cIm5nTW9kZWxcIj5cclxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgZXN0YWRvIG9mIGVzdGFkb3NDaXZpbCB8IGFzeW5jXCIgW3ZhbHVlXT1cImVzdGFkby5jb2RpZ29cIj5cclxuICAgICAgICAgIHt7IGVzdGFkby5kZW5vbWluYWNhbyB9fVxyXG4gICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICA8IS0tXHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZm9ybS0xNVwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICA8bWF0LWxhYmVsPk5hdHVyYWxpZGFkZTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJwZXNzb2EubmF0dXJhbGlkYWRlXCIgbmFtZT1cIm5hdHVyYWxpZGFkZVwiICNuYXR1cmFsaWRhZGU9XCJuZ01vZGVsXCIgcmVxdWlyZWQ+XHJcbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBjaWRhZGUgb2YgZ2V0TGlzdGFFc3RhZG9zKClcIiBbdmFsdWVdPVwiY2lkYWRlLmNvZGlnb1wiPlxyXG4gICAgICAgICAgICAgIHt7IGNpZGFkZS5kZXNjcmljYW8gfX1cclxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgLS0+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmb3JtLTIwXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgPG1hdC1sYWJlbD5QYcOtcyBOYXNjaW1lbnRvPC9tYXQtbGFiZWw+XHJcbiAgICAgIDxtYXQtc2VsZWN0IFsobmdNb2RlbCldPVwicGVzc29hLmNvZGlnb1BhaXNOYXNjaW1lbnRvXCIgbmFtZT1cImNvZGlnb1BhaXNOYXNjaW1lbnRvXCIgI2NvZGlnb1BhaXNOYXNjaW1lbnRvPVwibmdNb2RlbFwiXHJcbiAgICAgICAgcmVxdWlyZWQ+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHBhaXNOYXNjaW1lbnRvIG9mIHBhaXNlcyB8IGFzeW5jXCIgW3ZhbHVlXT1cInBhaXNOYXNjaW1lbnRvLmNvZGlnb1wiPlxyXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJwYWlzTmFzY2ltZW50by5kZW5vbWluYWNhbyA9PT0gJ0JSQVNJTCdcIj7wn4en8J+HtyA8Yj57eyBwYWlzTmFzY2ltZW50by5kZW5vbWluYWNhbyB9fTwvYj48L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cInBhaXNOYXNjaW1lbnRvLmRlbm9taW5hY2FvICE9PSAnQlJBU0lMJ1wiPnt7IHBhaXNOYXNjaW1lbnRvLmRlbm9taW5hY2FvIH19PC9zcGFuPlxyXG4gICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmb3JtLTIwXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiAqbmdJZj1cInBlc3NvYS5jb2RpZ29QYWlzTmFzY2ltZW50byA9PSAyMlwiPiA8IS0tIDIyIGVoIEJyYXNpbC0tPlxyXG4gICAgICA8bWF0LWxhYmVsPlVGIE5hc2NpbWVudG88L21hdC1sYWJlbD5cclxuICAgICAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJwZXNzb2EudWZOYXNjaW1lbnRvXCIgbmFtZT1cInVmTmFzY2ltZW50b1wiICN1Zk5hc2NpbWVudG89XCJuZ01vZGVsXCIgcmVxdWlyZWQ+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGVzdGFkbyBvZiBnZXRMaXN0YUVzdGFkb3MoKVwiIFt2YWx1ZV09XCJlc3RhZG8uaWRlbnRpZmljYWRvclwiPlxyXG4gICAgICAgICAge3sgZXN0YWRvLmlkZW50aWZpY2Fkb3IgfX1cclxuICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZm9ybS0yMFwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgKm5nSWY9XCJwZXNzb2EuY29kaWdvUGFpc05hc2NpbWVudG8gPT0gMjJcIj5cclxuICAgICAgPG1hdC1sYWJlbD5OYXR1cmFsaWRhZGU8L21hdC1sYWJlbD5cclxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJwZXNzb2EubmF0dXJhbGlkYWRlXCIgbmFtZT1cIm5hdHVyYWxpZGFkZVwiICNuYXR1cmFsaWRhZGU9XCJuZ01vZGVsXCJcclxuICAgICAgICByZXF1aXJlZCAvPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmb3JtLTIwXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgPG1hdC1sYWJlbD5Fc2NvbGFyaWRhZGU8L21hdC1sYWJlbD5cclxuICAgICAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJwZXNzb2EuZXNjb2xhcmlkYWRlXCIgbmFtZT1cImNvZGlnb0VzY29sYXJpZGFkZVwiICNjb2RpZ29Fc2NvbGFyaWRhZGU9XCJuZ01vZGVsXCIgcmVxdWlyZWQ+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGVzY29sYXJpZGFkZSBvZiBlc2NvbGFyaWRhZGUgfCBhc3luY1wiIFt2YWx1ZV09XCJlc2NvbGFyaWRhZGUuY29kaWdvXCI+XHJcbiAgICAgICAgICB7eyBlc2NvbGFyaWRhZGUuZGVub21pbmFjYW8gfX1cclxuICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZm9ybS0yNVwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgIDxtYXQtbGFiZWw+Tm9tZSBTb2NpYWw8L21hdC1sYWJlbD5cclxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJwZXNzb2Eubm9tZVNvY2lhbFwiIG5hbWU9XCJub21lU29jaWFsXCIgI25vbWVTb2NpYWw9XCJuZ01vZGVsXCIgLz5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZm9ybS0yNVwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgIDxtYXQtbGFiZWw+Tm9tZSBkYSBNw6NlPC9tYXQtbGFiZWw+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwicGVzc29hLm5vbWVNYWVcIiBuYW1lPVwibm9tZU1hZVwiICNub21lTWFlPVwibmdNb2RlbFwiIHJlcXVpcmVkIC8+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZvcm0tMjVcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICA8bWF0LWxhYmVsPk5vbWUgZG8gUGFpPC9tYXQtbGFiZWw+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwicGVzc29hLm5vbWVQYWlcIiBuYW1lPVwibm9tZVBhaVwiICNub21lUGFpPVwibmdNb2RlbFwiIHJlcXVpcmVkIC8+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8IS0tIENhbXBvcyBQZXNzb2EgSnVyw61kaWNhIC0tPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJwZXNzb2EudGlwb1Blc3NvYSA9PT0gdGlwb1Blc3NvYUVudW0oKS5KVVJJRElDQVwiPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZm9ybS0yNVwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgIDxtYXQtbGFiZWw+UmF6w6NvIFNvY2lhbDwvbWF0LWxhYmVsPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cInBlc3NvYS5yYXphb1NvY2lhbFwiIG5hbWU9XCJyYXphb1NvY2lhbFwiIC8+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZm9ybS0yNVwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgIDxtYXQtbGFiZWw+Tm9tZSBGYW50YXNpYTwvbWF0LWxhYmVsPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cInBlc3NvYS5ub21lRmFudGFzaWFcIiBuYW1lPVwibm9tZUZhbnRhc2lhXCIgLz5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJwZXNzb2EudGlwb1Blc3NvYSA9PSB0aXBvUGVzc29hRW51bSgpLkZJU0lDQVwiPlxyXG4gICAgPGIgc3R5bGU9XCJmbGV4OiAxIDEgMTAwJTsgbWFyZ2luLWJvdHRvbTogMTBweDtcIj5Eb2N1bWVudGHDp8OjbzwvYj5cclxuXHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmb3JtLTI1XCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgPG1hdC1sYWJlbD5JZGVudGlkYWRlPC9tYXQtbGFiZWw+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwicGVzc29hLnJnXCIgbmFtZT1cInJnXCIgI3JnPVwibmdNb2RlbFwiIHJlcXVpcmVkIC8+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZvcm0tMjVcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICA8bWF0LWxhYmVsPsOTcmfDo28gRW1pc3NvcjwvbWF0LWxhYmVsPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cInBlc3NvYS5yZ09yZ2FvXCIgbmFtZT1cInJnT3JnYW9cIiAjcmdPcmdhbz1cIm5nTW9kZWxcIiByZXF1aXJlZCAvPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmb3JtLTI1XCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgPG1hdC1sYWJlbD5VbmlkYWRlIEZlZGVyYXRpdmE8L21hdC1sYWJlbD5cclxuICAgICAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJwZXNzb2EucmdVZlwiIG5hbWU9XCJyZ1VmXCIgI3JnVWY9XCJuZ01vZGVsXCIgcmVxdWlyZWQ+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGVzdGFkbyBvZiBnZXRMaXN0YUVzdGFkb3MoKVwiIFt2YWx1ZV09XCJlc3RhZG8uaWRlbnRpZmljYWRvclwiPlxyXG4gICAgICAgICAge3sgZXN0YWRvLmlkZW50aWZpY2Fkb3IgfX1cclxuICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZm9ybS0yMFwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgIDxtYXQtbGFiZWw+RGF0YSBkZSBFbWlzc8OjbzwvbWF0LWxhYmVsPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cInBlc3NvYS5yZ0RhdGFFbWlzc2FvXCIgbmFtZT1cInJnRGF0YUVtaXNzYW9cIiAjcmdEYXRhRW1pc3Nhbz1cIm5nTW9kZWxcIiAvPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBlc3NvYS50aXBvUGVzc29hICE9IHRpcG9QZXNzb2FFbnVtKCkuSlVSSURJQ0EgJiYgKHBlc3NvYS50aXBvUGVzc29hID09IHRpcG9QZXNzb2FFbnVtKCkuRVNUUkFOR0VJUkEgfHwgcGVzc29hLmNvZGlnb1BhaXNOYXNjaW1lbnRvICE9IDIyKVwiPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgIDxtYXQtbGFiZWw+RGF0YSBDaGVnYWRhIEJyYXNpbDwvbWF0LWxhYmVsPlxyXG4gICAgICA8aW5wdXQgbWF0SW5wdXQgW21hdERhdGVwaWNrZXJdPVwiZGF0YUNoZWdhZGFCcmFzaWxQaWNrZXJcIiBbKG5nTW9kZWwpXT1cInBlc3NvYS5kYXRhQ2hlZ2FkYUJyYXNpbFwiXHJcbiAgICAgICAgbmFtZT1cImRhdGFDaGVnYWRhQnJhc2lsXCIgI2RhdGFDaGVnYWRhQnJhc2lsPVwibmdNb2RlbFwiIHJlcXVpcmVkPlxyXG4gICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeCBbZm9yXT1cImRhdGFDaGVnYWRhQnJhc2lsUGlja2VyXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XHJcbiAgICAgIDxtYXQtZGF0ZXBpY2tlciAjZGF0YUNoZWdhZGFCcmFzaWxQaWNrZXI+PC9tYXQtZGF0ZXBpY2tlcj5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZm9ybS0xMFwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgIDxtYXQtbGFiZWw+UGHDrXMgUGFzc2Fwb3J0ZTwvbWF0LWxhYmVsPlxyXG4gICAgICA8bWF0LXNlbGVjdCBbKG5nTW9kZWwpXT1cInBlc3NvYS5jb2RpZ29QYWlzUGFzc2Fwb3J0ZVwiIG5hbWU9XCJjb2RpZ29QYWlzUGFzc2Fwb3J0ZVwiICNjb2RpZ29QYWlzUGFzc2Fwb3J0ZT1cIm5nTW9kZWxcIlxyXG4gICAgICAgIHJlcXVpcmVkPlxyXG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBwYWlzTmFzY2ltZW50byBvZiBwYWlzZXMgfCBhc3luY1wiIFt2YWx1ZV09XCJwYWlzTmFzY2ltZW50by5jb2RpZ29cIj5cclxuICAgICAgICAgIHt7IHBhaXNOYXNjaW1lbnRvLmRlbm9taW5hY2FvIH19XHJcbiAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICA8bWF0LWxhYmVsPk7Dum1lcm8gUGFzc2Fwb3J0ZTwvbWF0LWxhYmVsPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cInBlc3NvYS5wYXNzYXBvcnRlXCIgbmFtZT1cInBhc3NhcG9ydGVcIiAjcGFzc2Fwb3J0ZT1cIm5nTW9kZWxcIiByZXF1aXJlZCAvPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPGxpYi11bmItcGVzc29hLXRlbGVmb25lLWxpc3Qgc3R5bGU9XCJmbGV4OiAxIDEgMTAwJTtcIiBbYmFja2VuZFVSTF09XCJjb25maWcuYmFja2VuZFVSTFwiIFt0ZWxlZm9uZXNdPVwicGVzc29hLnRlbGVmb25lc1wiXHJcbiAgICAodGVsZWZvbmVzRW1pdHRlZCk9XCJ0ZWxlZm9uZXNFbWl0dGVkKCRldmVudClcIj48L2xpYi11bmItcGVzc29hLXRlbGVmb25lLWxpc3Q+XHJcblxyXG4gIDxsaWItdW5iLXBlc3NvYS1lbmRlcmVjby1saXN0IHN0eWxlPVwiZmxleDogMSAxIDEwMCU7XCIgW2JhY2tlbmRVUkxdPVwiY29uZmlnLmJhY2tlbmRVUkxcIiBbZW5kZXJlY29zXT1cInBlc3NvYS5lbmRlcmVjb3NcIlxyXG4gICAgKGVuZGVyZWNvc0VtaXR0ZWQpPVwiZW5kZXJlY29zRW1pdHRlZCgkZXZlbnQpXCI+PC9saWItdW5iLXBlc3NvYS1lbmRlcmVjby1saXN0PlxyXG5cclxuICA8bGliLXVuYi1wZXNzb2EtZW1haWwtbGlzdCBzdHlsZT1cImZsZXg6IDEgMSAxMDAlO1wiIFtiYWNrZW5kVVJMXT1cImNvbmZpZy5iYWNrZW5kVVJMXCIgW2VtYWlsc109XCJwZXNzb2EuZW1haWxzXCJcclxuICAgIChlbWFpbHNFbWl0dGVkKT1cImVtYWlsc0VtaXR0ZWQoJGV2ZW50KVwiPjwvbGliLXVuYi1wZXNzb2EtZW1haWwtbGlzdD5cclxuXHJcbiAgPGRpdiAqbmdJZj1cImlzUmVhZHlPbmx5XCIgc3R5bGU9XCJmbGV4OjEgMSAxMDAlOyBtYXJnaW4tYm90dG9tOjEwcHg7XCI+XHJcbiAgICA8bWF0LWNhcmQ+XHJcbiAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgIDxzdHJvbmc+U2Vydmlkb3IgY29tIG1hdHLDrWN1bGEgU0lBUEUgZGV2ZSB0ZXIgc2V1cyBkYWRvcyBhdXRhbGl6YWRvcyBwZWxvIGFwbGljYXRpdm8gZG8gc291Z292PC9zdHJvbmc+XHJcbiAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgIDwvbWF0LWNhcmQ+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxtYXQtY2FyZC1hY3Rpb25zIGNsYXNzPVwiY2FyZC1hY3Rpb25zLWJ1dHRvbnNcIiAqbmdJZj1cIiFoaWRlU2FsdmFyQnV0dG9uXCI+XHJcbiAgICA8YnV0dG9uIG1hdC1mbGF0LWJ1dHRvbiBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nIHx8IGlzUmVhZHlPbmx5XCIgdHlwZT1cInN1Ym1pdFwiIGNvbG9yPVwicHJpbWFyeVwiPlxyXG4gICAgICBTYWx2YXJcclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbWF0LWNhcmQtYWN0aW9ucz5cclxuXHJcbjwvZm9ybT4iXX0=
|