cloud-ide-element 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/esm2022/cloud-ide-element.mjs +5 -0
- package/esm2022/lib/elements/button/button.component.mjs +60 -0
- package/esm2022/lib/elements/icon/icon.component.mjs +24 -0
- package/esm2022/lib/elements/input/input.component.mjs +453 -0
- package/esm2022/lib/elements/spinner/spinner.component.mjs +32 -0
- package/esm2022/lib/utils/pipes/capitalize/capitalize.pipe.mjs +38 -0
- package/esm2022/lib/utils/services/elements/elements.service.mjs +37 -0
- package/esm2022/public-api.mjs +10 -0
- package/fesm2022/cloud-ide-element.mjs +635 -0
- package/fesm2022/cloud-ide-element.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/elements/button/button.component.d.ts +27 -0
- package/lib/elements/icon/icon.component.d.ts +9 -0
- package/lib/elements/input/input.component.d.ts +179 -0
- package/lib/elements/spinner/spinner.component.d.ts +19 -0
- package/lib/utils/pipes/capitalize/capitalize.pipe.d.ts +7 -0
- package/lib/utils/services/elements/elements.service.d.ts +12 -0
- package/package.json +25 -0
- package/public-api.d.ts +5 -0
|
@@ -0,0 +1,453 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, EventEmitter, Input, Output, forwardRef } from '@angular/core';
|
|
3
|
+
import { FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
|
+
import { CapitalizePipe } from '../../utils/pipes/capitalize/capitalize.pipe';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../../utils/pipes/capitalize/capitalize.pipe";
|
|
7
|
+
import * as i2 from "../../utils/services/elements/elements.service";
|
|
8
|
+
import * as i3 from "@angular/common";
|
|
9
|
+
import * as i4 from "@angular/forms";
|
|
10
|
+
export class CideInputComponent {
|
|
11
|
+
constructor(capitalizePipe, elementService) {
|
|
12
|
+
this.capitalizePipe = capitalizePipe;
|
|
13
|
+
this.elementService = elementService;
|
|
14
|
+
/*=======Set custom controls inputs to set components=========*/
|
|
15
|
+
/**
|
|
16
|
+
* @description to se the visual of control like solid control offerd by material design or outline with a border
|
|
17
|
+
* @options solid | outline | standard
|
|
18
|
+
*/
|
|
19
|
+
this.fill = 'outline';
|
|
20
|
+
/** @description Lable of control (Title), Like Name, Email */
|
|
21
|
+
this.label = "";
|
|
22
|
+
/** @description to hide and show label */
|
|
23
|
+
this.labelHide = false;
|
|
24
|
+
/** @description is control Editable or Disabled */
|
|
25
|
+
this.disabled = false;
|
|
26
|
+
/** @description Is Clear Input Cross button is visible or not */
|
|
27
|
+
this.clearInput = false;
|
|
28
|
+
/** @description Position of Label 'floating' | 'fixed' */
|
|
29
|
+
this.labelPlacement = "fixed";
|
|
30
|
+
/** @description Lable direction from start of contrl or end of control */
|
|
31
|
+
this.labelDir = "start";
|
|
32
|
+
/** @description Place holder for control to display if there is no value */
|
|
33
|
+
this.placeholder = "";
|
|
34
|
+
/** @description it is to set leading icon, at the start of control */
|
|
35
|
+
this.leadingIcon = "";
|
|
36
|
+
/** @description it is to set trailing icon, at the end of control, for password type control eye is the trailing icon */
|
|
37
|
+
this.trailingIcon = "";
|
|
38
|
+
/** @description to display below the control for suggestion, if there is any error then error will bw the first to shoe in place of help text */
|
|
39
|
+
this.helperText = "";
|
|
40
|
+
/** @description default true to collapse when there is no help text or error text, if false then element area in DOM will be reserved never detroy */
|
|
41
|
+
this.helperTextCollapse = true;
|
|
42
|
+
/** @description show and hide helper text its forecfull */
|
|
43
|
+
this.hideHelperAndErrorText = false;
|
|
44
|
+
/** @description if found any error in control the error thext will be used to display error message, if there is help text still error text is having higher priority then helptext */
|
|
45
|
+
this.errorText = "";
|
|
46
|
+
/** @description maxlength for control */
|
|
47
|
+
this.maxlength = 0;
|
|
48
|
+
/** @description minlength for control */
|
|
49
|
+
this.minlength = 0;
|
|
50
|
+
/** @description is control is required or not input type is true | false */
|
|
51
|
+
this.required = false;
|
|
52
|
+
/** @description Auto capatalization for the value and applicable to word or to complete sentance */
|
|
53
|
+
this.autocapitalize = "off";
|
|
54
|
+
/** @description auto complete type to help reader what is the type of value */
|
|
55
|
+
this.autocomplete = "off";
|
|
56
|
+
/** @description type of control */
|
|
57
|
+
this.type = '';
|
|
58
|
+
/** @description width of control, default width is 100% */
|
|
59
|
+
this.width = '100%';
|
|
60
|
+
/** @description uniq id of control, used to differenciat the value also prevent value should not effect another values */
|
|
61
|
+
this.id = '';
|
|
62
|
+
/** @description to get input value using one way binding like: [ngModel] or by two way binding [(ngModel)] */
|
|
63
|
+
this.ngModel = '';
|
|
64
|
+
this.option = ["anksuh", "bhure"];
|
|
65
|
+
/**
|
|
66
|
+
* @description
|
|
67
|
+
* Holds the size of the component like Small, Extra small, Large
|
|
68
|
+
* by Default it takes small size
|
|
69
|
+
* or the size set by the project setup service
|
|
70
|
+
* or it will beset for individual component
|
|
71
|
+
*
|
|
72
|
+
* Size Appled
|
|
73
|
+
* Component level then setup service then finally default md
|
|
74
|
+
* Options: "2xs" | ""xs" | "sm" | "md" | "lg" | "xl" | "xxl"
|
|
75
|
+
*/
|
|
76
|
+
this.size = "sm";
|
|
77
|
+
/** @description to set return value using one way binding like: (ngModelChanges) or by two way binding [(ngModel)] */
|
|
78
|
+
this.ngModelChange = new EventEmitter();
|
|
79
|
+
/*
|
|
80
|
+
internal Properties for input
|
|
81
|
+
*/
|
|
82
|
+
/** @description is vale need to read from ngModel or from value(need to implement), it is detected and maild fals on value chnages */
|
|
83
|
+
this.isNgModel = this.ngModel ? true : false;
|
|
84
|
+
/** @description this is to set control value is valid or not, set by us inside validate callbck method called by angular */
|
|
85
|
+
this.isValid = true;
|
|
86
|
+
/** @description when control is touched then the will maid true by the us to check it is touched or not, when we will set this true we will call the onTouched callback method of angualr to inform angular that somthis is changed and control is touched */
|
|
87
|
+
this.isTouched = false;
|
|
88
|
+
/** @description we will take type of control in type but is may be not exactly which input's type so we need to get type and set actule type to our input, also when type is set password but in calse view in textt then inuut type need to change to text */
|
|
89
|
+
this.typeInternal = "text";
|
|
90
|
+
/** @description if traling is set the it is assigned by it, but some case tarling icon not as it is set need tro be changed at runtime, like password visibility hide and show */
|
|
91
|
+
this.trailingIconInternal = "";
|
|
92
|
+
/*
|
|
93
|
+
Properties connected with trailingIconInternal
|
|
94
|
+
*/
|
|
95
|
+
this.isTrailingIconAllwedClick = false;
|
|
96
|
+
// Properties connected with id
|
|
97
|
+
this.idRandom = this.randomString();
|
|
98
|
+
// ==================================METHODS FOR CUSTOM FORM COMPONENT=============================
|
|
99
|
+
// FOR ANGULAR CALLED BY UI
|
|
100
|
+
/**
|
|
101
|
+
* @description Function to call when the HTML Chnage to tell Angular somthing is changed.
|
|
102
|
+
* @field value : inputType
|
|
103
|
+
*/
|
|
104
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
105
|
+
this.onChange = (value) => { };
|
|
106
|
+
/** @description Function to call when the input is touched (clciked) to tell Angular somthing is changed. */
|
|
107
|
+
this.onTouched = () => { };
|
|
108
|
+
/** @description Function to call when the input is need to Validate to tell Angular somthing is changed (in case of some input dipendent validation). */
|
|
109
|
+
this.onValidate = () => { };
|
|
110
|
+
// Validate control
|
|
111
|
+
this.onValidate();
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* @description
|
|
115
|
+
* Method that performs synchronous validation against the provided control.
|
|
116
|
+
* Exicuted by Angular
|
|
117
|
+
*
|
|
118
|
+
* @param control The control to validate against.
|
|
119
|
+
*
|
|
120
|
+
* @returns A map of validation errors if validation fails,
|
|
121
|
+
* otherwise null.
|
|
122
|
+
*/
|
|
123
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
124
|
+
validate(control) {
|
|
125
|
+
const validation_error = this.isControlValid(this.ngModel);
|
|
126
|
+
if (validation_error?.status) {
|
|
127
|
+
return validation_error;
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* @description
|
|
135
|
+
* Registers a callback function to call when the validator inputs change.
|
|
136
|
+
* Exicuted by Angular
|
|
137
|
+
*
|
|
138
|
+
* @param fn The callback function
|
|
139
|
+
*/
|
|
140
|
+
registerOnValidatorChange(fn) {
|
|
141
|
+
this.onValidate = fn;
|
|
142
|
+
}
|
|
143
|
+
/** @description when form control change from model side this method is implemented */
|
|
144
|
+
writeValue(value) {
|
|
145
|
+
if (!this.isNgModel) {
|
|
146
|
+
this.ngModel = this.autoCapitalizeByOption(value, this.type);
|
|
147
|
+
this.ngModelChange?.emit(value);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/** @description Allows Angular to register a function to call when the model changes. */
|
|
151
|
+
// Save the function as a property to call later here.
|
|
152
|
+
registerOnChange(fn) {
|
|
153
|
+
this.onChange = fn;
|
|
154
|
+
}
|
|
155
|
+
/** @description Allows Angular to register a function to call when the input has been touched. */
|
|
156
|
+
// Save the function as a property to call later here.
|
|
157
|
+
registerOnTouched(fn) {
|
|
158
|
+
this.onTouched = fn;
|
|
159
|
+
}
|
|
160
|
+
//==========================================================================
|
|
161
|
+
/*
|
|
162
|
+
Methods for input
|
|
163
|
+
*/
|
|
164
|
+
/** @description Detect wether input propertires canged or not */
|
|
165
|
+
ngOnChanges(changes) {
|
|
166
|
+
if (changes?.['value']) {
|
|
167
|
+
this.isNgModel = true;
|
|
168
|
+
this.ngModel = this.processValue(this.ngModel, this.type);
|
|
169
|
+
}
|
|
170
|
+
if (this.isValidValueAndType(this.ngModel, this.type) || this.isTouched) {
|
|
171
|
+
this.isControlValid(this.ngModel);
|
|
172
|
+
}
|
|
173
|
+
// Ditect type change
|
|
174
|
+
if (changes?.['type']) {
|
|
175
|
+
this.detectTypeChange();
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
ngOnInit() {
|
|
179
|
+
if (this.id) {
|
|
180
|
+
this.getControlData();
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/** @description custom method run when HTML changes, we call method registerd by angular to detect change */
|
|
184
|
+
upDateValue(value) {
|
|
185
|
+
const target = value.target;
|
|
186
|
+
this.isControlValid(target?.value);
|
|
187
|
+
const updatedValue = this.processValue(target?.value, this.type);
|
|
188
|
+
this.ngModel = updatedValue;
|
|
189
|
+
// console.log(target)
|
|
190
|
+
this.onChange(updatedValue);
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* @description method applicable in case of control type checkbox
|
|
194
|
+
*
|
|
195
|
+
* @param value boolean | string
|
|
196
|
+
*/
|
|
197
|
+
updateValueCheckBox(value) {
|
|
198
|
+
// Convert string to boolean
|
|
199
|
+
this.ngModel = !this.ngModel;
|
|
200
|
+
value = (typeof value === 'boolean') ? value : (value === 'true' ? true : false);
|
|
201
|
+
this.ngModelChange?.emit(value);
|
|
202
|
+
this.onChange(value);
|
|
203
|
+
}
|
|
204
|
+
/** @description clear the value */
|
|
205
|
+
ClearInputValue() {
|
|
206
|
+
if (this.type == "text") {
|
|
207
|
+
this.upDateValue({ target: { value: "" } });
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
/** @description when HTML is focuesd */
|
|
211
|
+
focusControl() {
|
|
212
|
+
this.isTouched = true;
|
|
213
|
+
this.onTouched();
|
|
214
|
+
this.onValidate();
|
|
215
|
+
}
|
|
216
|
+
/** @description If control value need to be processed, like UPPERCASE */
|
|
217
|
+
processValue(value, type) {
|
|
218
|
+
value = this.autoCapitalizeByOption(value, type);
|
|
219
|
+
return value;
|
|
220
|
+
}
|
|
221
|
+
/** @description for capitalization */
|
|
222
|
+
autoCapitalizeByOption(value, type) {
|
|
223
|
+
if (type == 'text') {
|
|
224
|
+
if (this.autocapitalize == "on") {
|
|
225
|
+
return this.capitalizePipe?.transform(value, 'allUpperCase');
|
|
226
|
+
}
|
|
227
|
+
if (this.autocapitalize == "words") {
|
|
228
|
+
return this.capitalizePipe?.transform(value, 'titleCase');
|
|
229
|
+
}
|
|
230
|
+
if (this.autocapitalize == "sentences") {
|
|
231
|
+
return this.capitalizePipe?.transform(value, "sentenceCase");
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return value;
|
|
235
|
+
}
|
|
236
|
+
/** @description It is used to return the value is valid or not */
|
|
237
|
+
isValidValueAndType(value, type) {
|
|
238
|
+
if (type == 'text') {
|
|
239
|
+
if (typeof (value) == 'string') {
|
|
240
|
+
if (value?.length > 0) {
|
|
241
|
+
return true;
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
return false;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
return false;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
return false;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
/** @description to check control is valid or not */
|
|
256
|
+
isControlValid(value) {
|
|
257
|
+
const validation_status = {
|
|
258
|
+
validation: {},
|
|
259
|
+
status: false
|
|
260
|
+
};
|
|
261
|
+
if (this.required) {
|
|
262
|
+
if (!value) {
|
|
263
|
+
validation_status.status = true;
|
|
264
|
+
validation_status.validation.required = `required!`;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
if (this.type == 'text') {
|
|
268
|
+
if (typeof (value) == 'string') {
|
|
269
|
+
if (this.maxlength > 0) {
|
|
270
|
+
if (value?.length > this.maxlength) {
|
|
271
|
+
validation_status.status = true;
|
|
272
|
+
validation_status.validation.maxlength = `maximum length is ${this.maxlength}!`;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
if (this.minlength > 0) {
|
|
276
|
+
if (value?.length < this.minlength) {
|
|
277
|
+
validation_status.status = true;
|
|
278
|
+
validation_status.validation.minlength = `minimum length is ${this.minlength}!`;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
validation_status.status = true;
|
|
284
|
+
validation_status.validation.required = `required!`;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
this.isValid = !validation_status.status;
|
|
288
|
+
this.errorText = Object.values(validation_status.validation).at(0) || '';
|
|
289
|
+
return validation_status;
|
|
290
|
+
}
|
|
291
|
+
/** @description Allows Angular to disable the input. */
|
|
292
|
+
setDisabledState(isDisabled) {
|
|
293
|
+
this.disabled = isDisabled;
|
|
294
|
+
}
|
|
295
|
+
/** @description Method for trailing Icon Click */
|
|
296
|
+
trailingIconClick() {
|
|
297
|
+
if (this.type === 'password') {
|
|
298
|
+
if (this.typeInternal === 'password') {
|
|
299
|
+
this.typeInternal = 'text';
|
|
300
|
+
this.trailingIconInternal = 'visibility';
|
|
301
|
+
}
|
|
302
|
+
else {
|
|
303
|
+
this.typeInternal = 'password';
|
|
304
|
+
this.trailingIconInternal = 'visibility_off';
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Method to generate Random String
|
|
310
|
+
* @param setupPrarameter { lenght: number, prefix: string }
|
|
311
|
+
* default lenght is 10, prefox is ""
|
|
312
|
+
* @returns string
|
|
313
|
+
*/
|
|
314
|
+
randomString(setupPrarameter = { lenght: 10, prefix: "" }) {
|
|
315
|
+
//variable consisting alphabets in small and capital letter
|
|
316
|
+
const characters = "ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
|
|
317
|
+
//loop to select a new character in each iteration
|
|
318
|
+
let random_string = setupPrarameter?.prefix || "";
|
|
319
|
+
for (let i = 0; i < setupPrarameter?.lenght; i++) {
|
|
320
|
+
const rnum = Math.floor(Math.random() * characters.length);
|
|
321
|
+
random_string += characters.substring(rnum, rnum + 1);
|
|
322
|
+
}
|
|
323
|
+
//return the generated string
|
|
324
|
+
return random_string;
|
|
325
|
+
}
|
|
326
|
+
async getControlData() {
|
|
327
|
+
const cide_element_data = await this.elementService?.getElementData({ sype_key: this.id });
|
|
328
|
+
if (cide_element_data) {
|
|
329
|
+
this.label = cide_element_data?.sype_label;
|
|
330
|
+
this.labelPlacement = (cide_element_data?.sype_label_placement || 'floating');
|
|
331
|
+
this.type = (cide_element_data?.sype_type || 'text');
|
|
332
|
+
this.required = (cide_element_data?.sype_required || false);
|
|
333
|
+
this.size = (cide_element_data?.sype_size || 'md');
|
|
334
|
+
this.helperTextCollapse = (cide_element_data?.sype_helper_text_collapse || false);
|
|
335
|
+
this.maxlength = (cide_element_data?.sype_max_length);
|
|
336
|
+
this.minlength = (cide_element_data?.sype_min_length);
|
|
337
|
+
this.leadingIcon = (cide_element_data?.sype_leading_icon);
|
|
338
|
+
this.labelHide = (cide_element_data?.sype_label_hide);
|
|
339
|
+
this.hideHelperAndErrorText = (cide_element_data?.sype_hide_helper_and_error_text);
|
|
340
|
+
this.detectTypeChange();
|
|
341
|
+
// Validate control
|
|
342
|
+
this.onValidate();
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* @description use to detact the change in type if changes done this method is ued to run
|
|
347
|
+
*/
|
|
348
|
+
detectTypeChange() {
|
|
349
|
+
if (this.type === 'password') {
|
|
350
|
+
this.typeInternal = "password";
|
|
351
|
+
this.trailingIconInternal = "visibility_off";
|
|
352
|
+
this.isTrailingIconAllwedClick = true;
|
|
353
|
+
}
|
|
354
|
+
else {
|
|
355
|
+
this.typeInternal = "text";
|
|
356
|
+
this.trailingIconInternal = this.trailingIcon;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CideInputComponent, deps: [{ token: i1.CapitalizePipe }, { token: i2.CideElementsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
360
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: CideInputComponent, isStandalone: true, selector: "cide-ele-input", inputs: { fill: "fill", label: "label", labelHide: "labelHide", disabled: "disabled", clearInput: "clearInput", labelPlacement: "labelPlacement", labelDir: "labelDir", placeholder: "placeholder", leadingIcon: "leadingIcon", trailingIcon: "trailingIcon", helperText: "helperText", helperTextCollapse: "helperTextCollapse", hideHelperAndErrorText: "hideHelperAndErrorText", errorText: "errorText", maxlength: "maxlength", minlength: "minlength", required: "required", autocapitalize: "autocapitalize", autocomplete: "autocomplete", type: "type", width: "width", id: "id", ngModel: "ngModel", option: "option", size: "size" }, outputs: { ngModelChange: "ngModelChange" }, providers: [
|
|
361
|
+
{
|
|
362
|
+
provide: NG_VALUE_ACCESSOR,
|
|
363
|
+
useExisting: forwardRef(() => CideInputComponent),
|
|
364
|
+
multi: true
|
|
365
|
+
},
|
|
366
|
+
/** @description to apply validations */
|
|
367
|
+
{
|
|
368
|
+
provide: NG_VALIDATORS,
|
|
369
|
+
multi: true,
|
|
370
|
+
useExisting: forwardRef(() => CideInputComponent),
|
|
371
|
+
},
|
|
372
|
+
CapitalizePipe
|
|
373
|
+
], usesOnChanges: true, ngImport: i0, template: "<div class=\"cide-input\">\r\n <!------------------------------------------TEXT | PASSWORD------------------------------------------>\r\n <div *ngIf=\"type === 'text' || type === 'password'\">\r\n <div class=\"tw-w-full tw-relative\" [ngStyle]=\"{ width: width }\" [ngClass]=\"{\r\n 'cide-element-size-xxs': (size === '2xs'),\r\n 'cide-element-size-xs': (size === 'xs'),\r\n 'cide-element-size-sm': (size === 'sm'),\r\n 'cide-element-size-md': (size === 'md'),\r\n 'cide-element-size-lg': (size === 'lg'),\r\n 'cide-element-leading-icon': leadingIcon,\r\n 'cide-element-trailing-icon': trailingIconInternal,\r\n 'cide-element-clear-input': clearInput,\r\n 'cide-element-input-label-floating': (labelPlacement === 'floating'),\r\n 'cide-element-input-label-start': (labelDir === 'start'),\r\n 'cide-element-input-label-end': (labelDir === 'end'),\r\n 'cide-element-input-label-fixed': (labelPlacement === 'fixed'),\r\n 'cide-element-input-label-less': (!label || labelHide),\r\n 'cide-element-style-outline': (fill === 'outline'),\r\n 'cide-element-style-solid': (fill === 'solid'),\r\n 'cide-element-style-standard': (fill === 'standard'),\r\n }\">\r\n <!-- label -->\r\n <label [for]=\"id\" class=\"cide-input-label\" *ngIf=\"label && !labelHide\">{{label}}</label>\r\n\r\n <!-- all one line elemets which dose not affect with label and error text -->\r\n <div class=\"cide-element-input-wrapper\">\r\n <!-- Leading Icon -->\r\n <span class=\"cide-input-leading-icon-wrapper\" *ngIf=\"leadingIcon\">\r\n <span\r\n class=\"cide-input-leading-icon material-symbols-outlined tw-text-center\">{{leadingIcon}}</span>\r\n </span>\r\n\r\n <!-- Traling icon -->\r\n <span class=\"tw-absolute cide-input-trailing-icon -tw-bottom-1 tw-select-none tw-right-0\"\r\n *ngIf=\"trailingIconInternal\">\r\n <span class=\"material-symbols-outlined tw-w-8 tw-text-center !tw-text-2xl\"\r\n [ngClass]=\"{'tw-cursor-pointer': isTrailingIconAllwedClick}\" [attr.tabindex]=\"false\"\r\n (click)=\"trailingIconClick()\" (keyup)=\"trailingIconClick()\">{{trailingIconInternal}}</span>\r\n </span>\r\n\r\n <!-- Clear -->\r\n <button class=\"cide-input-clear\"\r\n *ngIf=\"clearInput && ngModel\" (click)=\"ClearInputValue()\">\r\n <span class=\"cide-input-clear-icon material-symbols-outlined\">close</span>\r\n </button>\r\n\r\n <!-- Input -->\r\n <input [placeholder]=\"placeholder\" [id]=\"id\"\r\n [ngClass]=\"[((label && labelPlacement === 'fixed') ? 'tw-rounded-e-md tw-rounded-es-md' : 'tw-rounded-md '), (!leadingIcon ? 'tw-pl-1' : ''), (trailingIconInternal ? 'tw-pr-8': ''), (!trailingIconInternal ? 'tw-pr-1' : ''), ((size === 'md') ? 'tw-h-8 tw-pt-0.5 tw-pb-0' : (size === 'sm' ? 'tw-h-7' : '')), (labelHide ? '!tw-mt-0' : '')]\"\r\n [(ngModel)]=\"ngModel\" [type]=\"typeInternal\" (input)=\"upDateValue($event)\" (focus)=\"focusControl()\"\r\n [autocomplete]=\"autocomplete\"\r\n class=\"tw-m-0 tw-w-full tw-bg-transparent tw-overflow-hidden tw-border-solid tw-p-0 cide-input-input tw-outline-none\" />\r\n </div>\r\n <!-- error text / helper text -->\r\n <span *ngIf=\"(errorText || helperText || !helperTextCollapse) && !hideHelperAndErrorText\"\r\n class=\"cide-input-help-error-text\">{{\r\n isValid\r\n ? helperText : (errorText ?\r\n (isTouched ? errorText : helperText)\r\n : helperText)}}</span>\r\n </div>\r\n </div>\r\n\r\n <!-- Input with tralling icon -->\r\n <!-- <div class=\"tw-inline-block tw-h-12 tw-w-64\">\r\n <div class=\"tw-w-fullh-full tw-relative\">\r\n <label\r\n class=\"tw-absolute -tw-top-1/3 tw-mx-2 tw-bg-white tw-px-0.5 tw-py-0 tw-text-sm tw-leading-4 tw-text-gray-700\">Name</label>\r\n <span class=\"tw-absolute -tw-bottom-px tw-right-0 -tw-z-10 tw-text-gray-400\">\r\n <span class=\"material-symbols-outlined tw-w-8 tw-text-center !tw-text-2xl\"> person </span>\r\n </span>\r\n <input\r\n class=\"tw-m-0 tw-h-8 tw-w-full tw-overflow-hidden tw-rounded-md tw-border-2 tw-border-solid tw-border-gray-300 tw-bg-transparent tw-p-0 tw-pb-0.5 tw-pl-1 tw-pr-8 tw-text-sm tw-text-gray-600 tw-outline-none hover:tw-border-blue-400 focus:tw-border-blue-400 focus:tw-text-gray-950\"\r\n value=\"Ankush Bhure\" />\r\n </div>\r\n </div> -->\r\n\r\n <!-- Input with leading icon -->\r\n <!-- <div class=\"tw-inline-block tw-h-12 tw-w-64\">\r\n <div class=\"tw-w-fullh-full tw-relative\">\r\n <label\r\n class=\"tw-absolute -tw-top-1/3 tw-mx-2 tw-bg-white tw-px-0.5 tw-py-0 tw-text-sm tw-leading-4 tw-text-gray-700\">Name</label>\r\n <span class=\"tw-absolute -tw-bottom-px tw-left-0 -tw-z-10 tw-text-gray-400\">\r\n <span class=\"material-symbols-outlined tw-w-8 tw-text-center !tw-text-2xl\"> person </span>\r\n </span>\r\n <input\r\n class=\"tw-m-0 tw-h-8 tw-w-full tw-overflow-hidden tw-rounded-md tw-border-2 tw-border-solid tw-border-gray-300 tw-bg-transparent tw-p-0 tw-pb-0.5 tw-pl-8 tw-pr-1 tw-text-sm tw-text-gray-600 tw-outline-none hover:tw-border-blue-400 focus:tw-border-blue-400 focus:tw-text-gray-950\"\r\n value=\"Ankush Bhure\" />\r\n </div>\r\n </div> -->\r\n\r\n <!------------------------------------------CHECKBOX------------------------------------------>\r\n <div *ngIf=\"type === 'checkbox'\" class=\"tw-flex\">\r\n <div class=\"cide-checkbox tw-relative\">\r\n <input [checked]=\"ngModel\" [value]=\"ngModel\" [id]=\"idRandom\" [type]=\"type\"\r\n class=\"tw-absolute tw-left-0 tw-invisible\" (click)=\"updateValueCheckBox(!ngModel); focusControl()\"\r\n [autocomplete]=\"autocomplete\" />\r\n <label class=\"cide-checkbox-label tw-cursor-pointer\" [for]=\"idRandom\">\r\n <span class=\"tw-border-2 tw-border-solid tw-relative tw-rounded-md\">\r\n <svg width=\"12px\" height=\"10px\" class=\"tw-absolute\">\r\n <use xlink:href=\"#sdfwiorfklasfjjalfjwerwr\"></use>\r\n </svg>\r\n </span>\r\n <span class=\"tw-text-sm tw-pl-2 tw-leading-[18px] tw-select-none tw-cursor-pointer\"\r\n *ngIf=\"!labelHide\">{{label}}</span>\r\n </label>\r\n <svg class=\"tw-absolute tw-h-0 tw-w-0 tw-select-none tw-pointer-events-none\">\r\n <!-- Element hidden and its xpath is used to display inside SVG -->\r\n <symbol id=\"sdfwiorfklasfjjalfjwerwr\" viewbox=\"0 0 12 10\">\r\n <polyline points=\"1.5 6 4.5 9 10.5 1\"></polyline>\r\n </symbol>\r\n </svg>\r\n </div>\r\n </div>\r\n\r\n <!-------------------------------------------SELECT------------------------------------------->\r\n <div *ngIf=\"type === 'select'\">sas\r\n <div class=\"tw-relative\">\r\n <div class=\"tw-absolute\">\r\n @for (item of option; track $index) {\r\n <div class=\"tw-w-full\">\r\n {{item}}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".cide-element-style-standard .cide-input-input{border-color:transparent}.cide-element-input-wrapper{position:relative}.cide-input-label{color:var(--cide-input-label-color);-webkit-user-select:none;user-select:none;display:block}.cide-input-help-error-text{color:var(--cide-input-color-help-error-text);width:100%;display:block;margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-left:.125rem;padding-right:.125rem}.cide-input-leading-icon{color:var(--cide-input-leading-icon-color)}.cide-input-clear{color:var(--cide-input-clear-color);z-index:10;cursor:pointer;position:absolute;outline-width:0px;right:0;top:0}.cide-input-clear:hover{color:var(--cide-input-clear-color-hover)}.cide-input-trailing-icon{color:var(--cide-input-trailing-icon-color)}.cide-input-input{color:var(--cide-input-text-color);border-color:var(--cide-input-border)}.cide-input-input:hover{color:var(--cide-input-text-color-hover);border-color:var(--cide-input-border-hover)}.cide-input-input:focus{color:var(--cide-input-text-color-active);border-color:var(--cide-input-border-active)}.cide-element-input-label-floating .cide-input-label{position:absolute;z-index:1;margin-left:8px;margin-right:8px;background-color:#fff;padding:0 2px}.cide-element-input-label-floating .cide-element-input-label-start{left:0}.cide-element-input-label-floating .cide-element-input-label-start{right:0}.cide-element-input-label-fixed{margin-bottom:0}.cide-element-input-label-fixed .cide-element-input-label-start{text-align:start}.cide-element-input-label-fixed .cide-element-input-label-end{text-align:end}.ng-touched.ng-invalid>.cide-input .cide-input-clear{color:var(--cide-input-clear-color-invalid)}.ng-touched.ng-invalid>.cide-input .cide-input-clear:hover{color:var(--cide-input-clear-color-hover-invalid)}.ng-touched.ng-invalid>.cide-input .cide-input-leading-icon{color:var(--cide-input-leading-icon-color-invalid)}.ng-touched.ng-invalid>.cide-input .cide-input-help-error-text{color:var(--cide-input-color-help-error-text-invalid)}.ng-touched.ng-invalid>.cide-input .cide-input-trailing-icon{color:var(--cide-input-trailing-icon-color-invalid)}.ng-touched.ng-invalid>.cide-input .cide-input-label{color:var(--cide-input-label-color-invalid)}.ng-touched.ng-invalid>.cide-input .cide-input-input{color:var(--cide-input-text-color-invalid);border-color:var(--cide-input-border-invalid)}.ng-touched.ng-invalid>.cide-input .cide-input-input:hover{color:var(--cide-input-text-color-hover-invalid);border-color:var(--cide-input-border-hover-invalid)}.ng-touched.ng-invalid>.cide-input .cide-input-input:focus{color:var(--cide-input-text-color-active-invalid);border-color:var(--cide-input-border-active-invalid)}.cide-element-size-xxs .cide-input-input{height:var(--cide-element-size-xxs);font-size:var(--cide-input-size-xxs);border-width:var(--cide-input-border-size-xxs)}.cide-element-size-xxs .cide-input-label{font-size:var(--cide-input-label-size-xxs);line-height:var(--cide-input-label-size-xxs)}.cide-element-size-xxs .cide-input-help-error-text{font-size:var(--cide-input-error-helper-size-xxs);height:calc(var(--cide-input-error-helper-size-xxs) + 2px);line-height:var(--cide-input-error-helper-size-xxs)}.cide-element-size-xxs .cide-input-clear{top:var(--cide-input-border-size-xxs);width:var(--cide-element-size-xxs);height:calc(var(--cide-element-size-xxs) - var(--cide-input-border-size-xxs) * 2)}.cide-element-size-xxs .cide-input-clear .cide-input-clear-icon{font-size:calc(var(--cide-input-size-xxs) + var(--cide-input-size-xxs) / 2);line-height:calc(var(--cide-element-size-xxs) - var(--cide-input-border-size-xxs) * 2)}.cide-element-size-xxs .cide-input-leading-icon-wrapper{top:var(--cide-input-border-size-xxs);width:var(--cide-element-size-xxs);height:calc(var(--cide-element-size-xxs) - var(--cide-input-border-size-xxs) * 2)}.cide-element-size-xxs .cide-input-leading-icon-wrapper .cide-input-leading-icon{font-size:calc(var(--cide-input-size-xxs) + var(--cide-input-size-xxs) / 2);line-height:calc(var(--cide-element-size-xxs) - var(--cide-input-border-size-xxs) * 2)}.cide-element-size-xxs.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-element-input-wrapper{margin-top:calc(var(--cide-input-label-size-xxs) / 2)}.cide-element-size-xxs.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-input-label{top:calc(var(--cide-input-label-size-xxs) / 2 - var(--cide-input-label-size-xxs))}.cide-element-size-xxs.cide-element-leading-icon .cide-input-input{padding-left:calc(var(--cide-element-size-xxs) - var(--cide-input-border-size-xxs))}.cide-element-size-xxs.cide-element-clear-input .cide-input-input{padding-right:calc(var(--cide-element-size-xxs) - var(--cide-input-border-size-xxs))}.cide-element-size-xxs.cide-element-trailing-icon .cide-input-clear{right:var(--cide-element-size-xxs)}.cide-element-size-xs .cide-input-input{height:var(--cide-element-size-xs);font-size:var(--cide-input-size-xs);border-width:var(--cide-input-border-size-xs)}.cide-element-size-xs .cide-input-label{font-size:var(--cide-input-label-size-xs);line-height:var(--cide-input-label-size-xs)}.cide-element-size-xs .cide-input-help-error-text{font-size:var(--cide-input-error-helper-size-xs);height:calc(var(--cide-input-error-helper-size-xs) + 2px);line-height:var(--cide-input-error-helper-size-xs)}.cide-element-size-xs .cide-input-clear{top:var(--cide-input-border-size-xs);width:var(--cide-element-size-xs);height:calc(var(--cide-element-size-xs) - var(--cide-input-border-size-xs) * 2)}.cide-element-size-xs .cide-input-clear .cide-input-clear-icon{font-size:calc(var(--cide-input-size-xs) + var(--cide-input-size-xs) / 2);line-height:calc(var(--cide-element-size-xs) - var(--cide-input-border-size-xs) * 2)}.cide-element-size-xs .cide-input-leading-icon-wrapper{top:var(--cide-input-border-size-xs);width:var(--cide-element-size-xs);height:calc(var(--cide-element-size-xs) - var(--cide-input-border-size-xs) * 2)}.cide-element-size-xs .cide-input-leading-icon-wrapper .cide-input-leading-icon{font-size:calc(var(--cide-input-size-xs) + var(--cide-input-size-xs) / 2);line-height:calc(var(--cide-element-size-xs) - var(--cide-input-border-size-xs) * 2)}.cide-element-size-xs.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-element-input-wrapper{margin-top:calc(var(--cide-input-label-size-xs) / 2)}.cide-element-size-xs.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-input-label{top:calc(var(--cide-input-label-size-xs) / 2 - var(--cide-input-label-size-xs))}.cide-element-size-xs.cide-element-leading-icon .cide-input-input{padding-left:calc(var(--cide-element-size-xs) - var(--cide-input-border-size-xs))}.cide-element-size-xs.cide-element-clear-input .cide-input-input{padding-right:calc(var(--cide-element-size-xs) - var(--cide-input-border-size-xs))}.cide-element-size-xs.cide-element-trailing-icon .cide-input-clear{right:var(--cide-element-size-xs)}.cide-element-size-sm .cide-input-input{height:var(--cide-element-size-sm);font-size:var(--cide-input-size-sm);border-width:var(--cide-input-border-size-sm)}.cide-element-size-sm .cide-input-label{font-size:var(--cide-input-label-size-sm);line-height:var(--cide-input-label-size-sm)}.cide-element-size-sm .cide-input-help-error-text{font-size:var(--cide-input-error-helper-size-sm);height:calc(var(--cide-input-error-helper-size-sm) + 2px);line-height:var(--cide-input-error-helper-size-sm)}.cide-element-size-sm .cide-input-clear{top:var(--cide-input-border-size-sm);width:var(--cide-element-size-sm);height:calc(var(--cide-element-size-sm) - var(--cide-input-border-size-sm) * 2)}.cide-element-size-sm .cide-input-clear .cide-input-clear-icon{font-size:calc(var(--cide-input-size-sm) + var(--cide-input-size-sm) / 2);line-height:calc(var(--cide-element-size-sm) - var(--cide-input-border-size-sm) * 2)}.cide-element-size-sm .cide-input-leading-icon-wrapper{top:var(--cide-input-border-size-sm);width:var(--cide-element-size-sm);height:calc(var(--cide-element-size-sm) - var(--cide-input-border-size-sm) * 2)}.cide-element-size-sm .cide-input-leading-icon-wrapper .cide-input-leading-icon{font-size:calc(var(--cide-input-size-sm) + var(--cide-input-size-sm) / 2);line-height:calc(var(--cide-element-size-sm) - var(--cide-input-border-size-sm) * 2)}.cide-element-size-sm.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-element-input-wrapper{margin-top:calc(var(--cide-input-label-size-sm) / 2)}.cide-element-size-sm.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-input-label{top:calc(var(--cide-input-label-size-sm) / 2 - var(--cide-input-label-size-sm))}.cide-element-size-sm.cide-element-leading-icon .cide-input-input{padding-left:calc(var(--cide-element-size-sm) - var(--cide-input-border-size-sm))}.cide-element-size-sm.cide-element-clear-input .cide-input-input{padding-right:calc(var(--cide-element-size-sm) - var(--cide-input-border-size-sm))}.cide-element-size-sm.cide-element-trailing-icon .cide-input-clear{right:var(--cide-element-size-sm)}.cide-element-size-md .cide-input-input{height:var(--cide-element-size-md);font-size:var(--cide-input-size-md);border-width:var(--cide-input-border-size-md)}.cide-element-size-md .cide-input-label{font-size:var(--cide-input-label-size-md);line-height:var(--cide-input-label-size-md)}.cide-element-size-md .cide-input-help-error-text{font-size:var(--cide-input-error-helper-size-md);height:calc(var(--cide-input-error-helper-size-md) + 2px);line-height:var(--cide-input-error-helper-size-md)}.cide-element-size-md .cide-input-clear{top:var(--cide-input-border-size-md);width:var(--cide-element-size-md);height:calc(var(--cide-element-size-md) - var(--cide-input-border-size-md) * 2)}.cide-element-size-md .cide-input-clear .cide-input-clear-icon{font-size:calc(var(--cide-input-size-md) + var(--cide-input-size-md) / 2);line-height:calc(var(--cide-element-size-md) - var(--cide-input-border-size-md) * 2)}.cide-element-size-md .cide-input-leading-icon-wrapper{top:var(--cide-input-border-size-md);width:var(--cide-element-size-md);height:calc(var(--cide-element-size-md) - var(--cide-input-border-size-md) * 2)}.cide-element-size-md .cide-input-leading-icon-wrapper .cide-input-leading-icon{font-size:calc(var(--cide-input-size-md) + var(--cide-input-size-md) / 2);line-height:calc(var(--cide-element-size-md) - var(--cide-input-border-size-md) * 2)}.cide-element-size-md.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-element-input-wrapper{margin-top:calc(var(--cide-input-label-size-md) / 2)}.cide-element-size-md.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-input-label{top:calc(var(--cide-input-label-size-md) / 2 - var(--cide-input-label-size-md))}.cide-element-size-md.cide-element-leading-icon .cide-input-input{padding-left:calc(var(--cide-element-size-md) - var(--cide-input-border-size-md))}.cide-element-size-md.cide-element-clear-input .cide-input-input{padding-right:calc(var(--cide-element-size-md) - var(--cide-input-border-size-md))}.cide-element-size-md.cide-element-trailing-icon .cide-input-clear{right:var(--cide-element-size-md)}.cide-element-size-lg .cide-input-input{height:var(--cide-element-size-lg);font-size:var(--cide-input-size-lg);border-width:var(--cide-input-border-size-lg)}.cide-element-size-lg .cide-input-label{font-size:var(--cide-input-label-size-lg);line-height:var(--cide-input-label-size-lg)}.cide-element-size-lg .cide-input-help-error-text{font-size:var(--cide-input-error-helper-size-lg);height:calc(var(--cide-input-error-helper-size-lg) + 2px);line-height:var(--cide-input-error-helper-size-lg)}.cide-element-size-lg .cide-input-clear{top:var(--cide-input-border-size-lg);width:var(--cide-element-size-lg);height:calc(var(--cide-element-size-lg) - var(--cide-input-border-size-lg) * 2)}.cide-element-size-lg .cide-input-clear .cide-input-clear-icon{font-size:calc(var(--cide-input-size-lg) + var(--cide-input-size-lg) / 2);line-height:calc(var(--cide-element-size-lg) - var(--cide-input-border-size-lg) * 2)}.cide-element-size-lg .cide-input-leading-icon-wrapper{top:var(--cide-input-border-size-lg);width:var(--cide-element-size-lg);height:calc(var(--cide-element-size-lg) - var(--cide-input-border-size-lg) * 2)}.cide-element-size-lg .cide-input-leading-icon-wrapper .cide-input-leading-icon{font-size:calc(var(--cide-input-size-lg) + var(--cide-input-size-lg) / 2);line-height:calc(var(--cide-element-size-lg) - var(--cide-input-border-size-lg) * 2)}.cide-element-size-lg.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-element-input-wrapper{margin-top:calc(var(--cide-input-label-size-lg) / 2)}.cide-element-size-lg.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-input-label{top:calc(var(--cide-input-label-size-lg) / 2 - var(--cide-input-label-size-lg))}.cide-element-size-lg.cide-element-leading-icon .cide-input-input{padding-left:calc(var(--cide-element-size-lg) - var(--cide-input-border-size-lg))}.cide-element-size-lg.cide-element-clear-input .cide-input-input{padding-right:calc(var(--cide-element-size-lg) - var(--cide-input-border-size-lg))}.cide-element-size-lg.cide-element-trailing-icon .cide-input-clear{right:var(--cide-element-size-lg)}.cide-element-size-xl .cide-input-input{height:var(--cide-element-size-xl);font-size:var(--cide-input-size-xl);border-width:var(--cide-input-border-size-xl)}.cide-element-size-xl .cide-input-label{font-size:var(--cide-input-label-size-xl);line-height:var(--cide-input-label-size-xl)}.cide-element-size-xl .cide-input-help-error-text{font-size:var(--cide-input-error-helper-size-xl);height:calc(var(--cide-input-error-helper-size-xl) + 2px);line-height:var(--cide-input-error-helper-size-xl)}.cide-element-size-xl .cide-input-clear{top:var(--cide-input-border-size-xl);width:var(--cide-element-size-xl);height:calc(var(--cide-element-size-xl) - var(--cide-input-border-size-xl) * 2)}.cide-element-size-xl .cide-input-clear .cide-input-clear-icon{font-size:calc(var(--cide-input-size-xl) + var(--cide-input-size-xl) / 2);line-height:calc(var(--cide-element-size-xl) - var(--cide-input-border-size-xl) * 2)}.cide-element-size-xl .cide-input-leading-icon-wrapper{top:var(--cide-input-border-size-xl);width:var(--cide-element-size-xl);height:calc(var(--cide-element-size-xl) - var(--cide-input-border-size-xl) * 2)}.cide-element-size-xl .cide-input-leading-icon-wrapper .cide-input-leading-icon{font-size:calc(var(--cide-input-size-xl) + var(--cide-input-size-xl) / 2);line-height:calc(var(--cide-element-size-xl) - var(--cide-input-border-size-xl) * 2)}.cide-element-size-xl.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-element-input-wrapper{margin-top:calc(var(--cide-input-label-size-xl) / 2)}.cide-element-size-xl.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-input-label{top:calc(var(--cide-input-label-size-xl) / 2 - var(--cide-input-label-size-xl))}.cide-element-size-xl.cide-element-leading-icon .cide-input-input{padding-left:calc(var(--cide-element-size-xl) - var(--cide-input-border-size-xl))}.cide-element-size-xl.cide-element-clear-input .cide-input-input{padding-right:calc(var(--cide-element-size-xl) - var(--cide-input-border-size-xl))}.cide-element-size-xl.cide-element-trailing-icon .cide-input-clear{right:var(--cide-element-size-xl)}.cide-input-leading-icon-wrapper{position:absolute;bottom:0;left:0;z-index:-10;text-align:center}\n"], dependencies: [{ kind: "ngmodule", type:
|
|
374
|
+
// directives
|
|
375
|
+
CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type:
|
|
376
|
+
// for ngModel
|
|
377
|
+
FormsModule }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
378
|
+
}
|
|
379
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CideInputComponent, decorators: [{
|
|
380
|
+
type: Component,
|
|
381
|
+
args: [{ selector: 'cide-ele-input', standalone: true, imports: [
|
|
382
|
+
// directives
|
|
383
|
+
CommonModule,
|
|
384
|
+
// for ngModel
|
|
385
|
+
FormsModule
|
|
386
|
+
], providers: [
|
|
387
|
+
{
|
|
388
|
+
provide: NG_VALUE_ACCESSOR,
|
|
389
|
+
useExisting: forwardRef(() => CideInputComponent),
|
|
390
|
+
multi: true
|
|
391
|
+
},
|
|
392
|
+
/** @description to apply validations */
|
|
393
|
+
{
|
|
394
|
+
provide: NG_VALIDATORS,
|
|
395
|
+
multi: true,
|
|
396
|
+
useExisting: forwardRef(() => CideInputComponent),
|
|
397
|
+
},
|
|
398
|
+
CapitalizePipe
|
|
399
|
+
], template: "<div class=\"cide-input\">\r\n <!------------------------------------------TEXT | PASSWORD------------------------------------------>\r\n <div *ngIf=\"type === 'text' || type === 'password'\">\r\n <div class=\"tw-w-full tw-relative\" [ngStyle]=\"{ width: width }\" [ngClass]=\"{\r\n 'cide-element-size-xxs': (size === '2xs'),\r\n 'cide-element-size-xs': (size === 'xs'),\r\n 'cide-element-size-sm': (size === 'sm'),\r\n 'cide-element-size-md': (size === 'md'),\r\n 'cide-element-size-lg': (size === 'lg'),\r\n 'cide-element-leading-icon': leadingIcon,\r\n 'cide-element-trailing-icon': trailingIconInternal,\r\n 'cide-element-clear-input': clearInput,\r\n 'cide-element-input-label-floating': (labelPlacement === 'floating'),\r\n 'cide-element-input-label-start': (labelDir === 'start'),\r\n 'cide-element-input-label-end': (labelDir === 'end'),\r\n 'cide-element-input-label-fixed': (labelPlacement === 'fixed'),\r\n 'cide-element-input-label-less': (!label || labelHide),\r\n 'cide-element-style-outline': (fill === 'outline'),\r\n 'cide-element-style-solid': (fill === 'solid'),\r\n 'cide-element-style-standard': (fill === 'standard'),\r\n }\">\r\n <!-- label -->\r\n <label [for]=\"id\" class=\"cide-input-label\" *ngIf=\"label && !labelHide\">{{label}}</label>\r\n\r\n <!-- all one line elemets which dose not affect with label and error text -->\r\n <div class=\"cide-element-input-wrapper\">\r\n <!-- Leading Icon -->\r\n <span class=\"cide-input-leading-icon-wrapper\" *ngIf=\"leadingIcon\">\r\n <span\r\n class=\"cide-input-leading-icon material-symbols-outlined tw-text-center\">{{leadingIcon}}</span>\r\n </span>\r\n\r\n <!-- Traling icon -->\r\n <span class=\"tw-absolute cide-input-trailing-icon -tw-bottom-1 tw-select-none tw-right-0\"\r\n *ngIf=\"trailingIconInternal\">\r\n <span class=\"material-symbols-outlined tw-w-8 tw-text-center !tw-text-2xl\"\r\n [ngClass]=\"{'tw-cursor-pointer': isTrailingIconAllwedClick}\" [attr.tabindex]=\"false\"\r\n (click)=\"trailingIconClick()\" (keyup)=\"trailingIconClick()\">{{trailingIconInternal}}</span>\r\n </span>\r\n\r\n <!-- Clear -->\r\n <button class=\"cide-input-clear\"\r\n *ngIf=\"clearInput && ngModel\" (click)=\"ClearInputValue()\">\r\n <span class=\"cide-input-clear-icon material-symbols-outlined\">close</span>\r\n </button>\r\n\r\n <!-- Input -->\r\n <input [placeholder]=\"placeholder\" [id]=\"id\"\r\n [ngClass]=\"[((label && labelPlacement === 'fixed') ? 'tw-rounded-e-md tw-rounded-es-md' : 'tw-rounded-md '), (!leadingIcon ? 'tw-pl-1' : ''), (trailingIconInternal ? 'tw-pr-8': ''), (!trailingIconInternal ? 'tw-pr-1' : ''), ((size === 'md') ? 'tw-h-8 tw-pt-0.5 tw-pb-0' : (size === 'sm' ? 'tw-h-7' : '')), (labelHide ? '!tw-mt-0' : '')]\"\r\n [(ngModel)]=\"ngModel\" [type]=\"typeInternal\" (input)=\"upDateValue($event)\" (focus)=\"focusControl()\"\r\n [autocomplete]=\"autocomplete\"\r\n class=\"tw-m-0 tw-w-full tw-bg-transparent tw-overflow-hidden tw-border-solid tw-p-0 cide-input-input tw-outline-none\" />\r\n </div>\r\n <!-- error text / helper text -->\r\n <span *ngIf=\"(errorText || helperText || !helperTextCollapse) && !hideHelperAndErrorText\"\r\n class=\"cide-input-help-error-text\">{{\r\n isValid\r\n ? helperText : (errorText ?\r\n (isTouched ? errorText : helperText)\r\n : helperText)}}</span>\r\n </div>\r\n </div>\r\n\r\n <!-- Input with tralling icon -->\r\n <!-- <div class=\"tw-inline-block tw-h-12 tw-w-64\">\r\n <div class=\"tw-w-fullh-full tw-relative\">\r\n <label\r\n class=\"tw-absolute -tw-top-1/3 tw-mx-2 tw-bg-white tw-px-0.5 tw-py-0 tw-text-sm tw-leading-4 tw-text-gray-700\">Name</label>\r\n <span class=\"tw-absolute -tw-bottom-px tw-right-0 -tw-z-10 tw-text-gray-400\">\r\n <span class=\"material-symbols-outlined tw-w-8 tw-text-center !tw-text-2xl\"> person </span>\r\n </span>\r\n <input\r\n class=\"tw-m-0 tw-h-8 tw-w-full tw-overflow-hidden tw-rounded-md tw-border-2 tw-border-solid tw-border-gray-300 tw-bg-transparent tw-p-0 tw-pb-0.5 tw-pl-1 tw-pr-8 tw-text-sm tw-text-gray-600 tw-outline-none hover:tw-border-blue-400 focus:tw-border-blue-400 focus:tw-text-gray-950\"\r\n value=\"Ankush Bhure\" />\r\n </div>\r\n </div> -->\r\n\r\n <!-- Input with leading icon -->\r\n <!-- <div class=\"tw-inline-block tw-h-12 tw-w-64\">\r\n <div class=\"tw-w-fullh-full tw-relative\">\r\n <label\r\n class=\"tw-absolute -tw-top-1/3 tw-mx-2 tw-bg-white tw-px-0.5 tw-py-0 tw-text-sm tw-leading-4 tw-text-gray-700\">Name</label>\r\n <span class=\"tw-absolute -tw-bottom-px tw-left-0 -tw-z-10 tw-text-gray-400\">\r\n <span class=\"material-symbols-outlined tw-w-8 tw-text-center !tw-text-2xl\"> person </span>\r\n </span>\r\n <input\r\n class=\"tw-m-0 tw-h-8 tw-w-full tw-overflow-hidden tw-rounded-md tw-border-2 tw-border-solid tw-border-gray-300 tw-bg-transparent tw-p-0 tw-pb-0.5 tw-pl-8 tw-pr-1 tw-text-sm tw-text-gray-600 tw-outline-none hover:tw-border-blue-400 focus:tw-border-blue-400 focus:tw-text-gray-950\"\r\n value=\"Ankush Bhure\" />\r\n </div>\r\n </div> -->\r\n\r\n <!------------------------------------------CHECKBOX------------------------------------------>\r\n <div *ngIf=\"type === 'checkbox'\" class=\"tw-flex\">\r\n <div class=\"cide-checkbox tw-relative\">\r\n <input [checked]=\"ngModel\" [value]=\"ngModel\" [id]=\"idRandom\" [type]=\"type\"\r\n class=\"tw-absolute tw-left-0 tw-invisible\" (click)=\"updateValueCheckBox(!ngModel); focusControl()\"\r\n [autocomplete]=\"autocomplete\" />\r\n <label class=\"cide-checkbox-label tw-cursor-pointer\" [for]=\"idRandom\">\r\n <span class=\"tw-border-2 tw-border-solid tw-relative tw-rounded-md\">\r\n <svg width=\"12px\" height=\"10px\" class=\"tw-absolute\">\r\n <use xlink:href=\"#sdfwiorfklasfjjalfjwerwr\"></use>\r\n </svg>\r\n </span>\r\n <span class=\"tw-text-sm tw-pl-2 tw-leading-[18px] tw-select-none tw-cursor-pointer\"\r\n *ngIf=\"!labelHide\">{{label}}</span>\r\n </label>\r\n <svg class=\"tw-absolute tw-h-0 tw-w-0 tw-select-none tw-pointer-events-none\">\r\n <!-- Element hidden and its xpath is used to display inside SVG -->\r\n <symbol id=\"sdfwiorfklasfjjalfjwerwr\" viewbox=\"0 0 12 10\">\r\n <polyline points=\"1.5 6 4.5 9 10.5 1\"></polyline>\r\n </symbol>\r\n </svg>\r\n </div>\r\n </div>\r\n\r\n <!-------------------------------------------SELECT------------------------------------------->\r\n <div *ngIf=\"type === 'select'\">sas\r\n <div class=\"tw-relative\">\r\n <div class=\"tw-absolute\">\r\n @for (item of option; track $index) {\r\n <div class=\"tw-w-full\">\r\n {{item}}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".cide-element-style-standard .cide-input-input{border-color:transparent}.cide-element-input-wrapper{position:relative}.cide-input-label{color:var(--cide-input-label-color);-webkit-user-select:none;user-select:none;display:block}.cide-input-help-error-text{color:var(--cide-input-color-help-error-text);width:100%;display:block;margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-left:.125rem;padding-right:.125rem}.cide-input-leading-icon{color:var(--cide-input-leading-icon-color)}.cide-input-clear{color:var(--cide-input-clear-color);z-index:10;cursor:pointer;position:absolute;outline-width:0px;right:0;top:0}.cide-input-clear:hover{color:var(--cide-input-clear-color-hover)}.cide-input-trailing-icon{color:var(--cide-input-trailing-icon-color)}.cide-input-input{color:var(--cide-input-text-color);border-color:var(--cide-input-border)}.cide-input-input:hover{color:var(--cide-input-text-color-hover);border-color:var(--cide-input-border-hover)}.cide-input-input:focus{color:var(--cide-input-text-color-active);border-color:var(--cide-input-border-active)}.cide-element-input-label-floating .cide-input-label{position:absolute;z-index:1;margin-left:8px;margin-right:8px;background-color:#fff;padding:0 2px}.cide-element-input-label-floating .cide-element-input-label-start{left:0}.cide-element-input-label-floating .cide-element-input-label-start{right:0}.cide-element-input-label-fixed{margin-bottom:0}.cide-element-input-label-fixed .cide-element-input-label-start{text-align:start}.cide-element-input-label-fixed .cide-element-input-label-end{text-align:end}.ng-touched.ng-invalid>.cide-input .cide-input-clear{color:var(--cide-input-clear-color-invalid)}.ng-touched.ng-invalid>.cide-input .cide-input-clear:hover{color:var(--cide-input-clear-color-hover-invalid)}.ng-touched.ng-invalid>.cide-input .cide-input-leading-icon{color:var(--cide-input-leading-icon-color-invalid)}.ng-touched.ng-invalid>.cide-input .cide-input-help-error-text{color:var(--cide-input-color-help-error-text-invalid)}.ng-touched.ng-invalid>.cide-input .cide-input-trailing-icon{color:var(--cide-input-trailing-icon-color-invalid)}.ng-touched.ng-invalid>.cide-input .cide-input-label{color:var(--cide-input-label-color-invalid)}.ng-touched.ng-invalid>.cide-input .cide-input-input{color:var(--cide-input-text-color-invalid);border-color:var(--cide-input-border-invalid)}.ng-touched.ng-invalid>.cide-input .cide-input-input:hover{color:var(--cide-input-text-color-hover-invalid);border-color:var(--cide-input-border-hover-invalid)}.ng-touched.ng-invalid>.cide-input .cide-input-input:focus{color:var(--cide-input-text-color-active-invalid);border-color:var(--cide-input-border-active-invalid)}.cide-element-size-xxs .cide-input-input{height:var(--cide-element-size-xxs);font-size:var(--cide-input-size-xxs);border-width:var(--cide-input-border-size-xxs)}.cide-element-size-xxs .cide-input-label{font-size:var(--cide-input-label-size-xxs);line-height:var(--cide-input-label-size-xxs)}.cide-element-size-xxs .cide-input-help-error-text{font-size:var(--cide-input-error-helper-size-xxs);height:calc(var(--cide-input-error-helper-size-xxs) + 2px);line-height:var(--cide-input-error-helper-size-xxs)}.cide-element-size-xxs .cide-input-clear{top:var(--cide-input-border-size-xxs);width:var(--cide-element-size-xxs);height:calc(var(--cide-element-size-xxs) - var(--cide-input-border-size-xxs) * 2)}.cide-element-size-xxs .cide-input-clear .cide-input-clear-icon{font-size:calc(var(--cide-input-size-xxs) + var(--cide-input-size-xxs) / 2);line-height:calc(var(--cide-element-size-xxs) - var(--cide-input-border-size-xxs) * 2)}.cide-element-size-xxs .cide-input-leading-icon-wrapper{top:var(--cide-input-border-size-xxs);width:var(--cide-element-size-xxs);height:calc(var(--cide-element-size-xxs) - var(--cide-input-border-size-xxs) * 2)}.cide-element-size-xxs .cide-input-leading-icon-wrapper .cide-input-leading-icon{font-size:calc(var(--cide-input-size-xxs) + var(--cide-input-size-xxs) / 2);line-height:calc(var(--cide-element-size-xxs) - var(--cide-input-border-size-xxs) * 2)}.cide-element-size-xxs.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-element-input-wrapper{margin-top:calc(var(--cide-input-label-size-xxs) / 2)}.cide-element-size-xxs.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-input-label{top:calc(var(--cide-input-label-size-xxs) / 2 - var(--cide-input-label-size-xxs))}.cide-element-size-xxs.cide-element-leading-icon .cide-input-input{padding-left:calc(var(--cide-element-size-xxs) - var(--cide-input-border-size-xxs))}.cide-element-size-xxs.cide-element-clear-input .cide-input-input{padding-right:calc(var(--cide-element-size-xxs) - var(--cide-input-border-size-xxs))}.cide-element-size-xxs.cide-element-trailing-icon .cide-input-clear{right:var(--cide-element-size-xxs)}.cide-element-size-xs .cide-input-input{height:var(--cide-element-size-xs);font-size:var(--cide-input-size-xs);border-width:var(--cide-input-border-size-xs)}.cide-element-size-xs .cide-input-label{font-size:var(--cide-input-label-size-xs);line-height:var(--cide-input-label-size-xs)}.cide-element-size-xs .cide-input-help-error-text{font-size:var(--cide-input-error-helper-size-xs);height:calc(var(--cide-input-error-helper-size-xs) + 2px);line-height:var(--cide-input-error-helper-size-xs)}.cide-element-size-xs .cide-input-clear{top:var(--cide-input-border-size-xs);width:var(--cide-element-size-xs);height:calc(var(--cide-element-size-xs) - var(--cide-input-border-size-xs) * 2)}.cide-element-size-xs .cide-input-clear .cide-input-clear-icon{font-size:calc(var(--cide-input-size-xs) + var(--cide-input-size-xs) / 2);line-height:calc(var(--cide-element-size-xs) - var(--cide-input-border-size-xs) * 2)}.cide-element-size-xs .cide-input-leading-icon-wrapper{top:var(--cide-input-border-size-xs);width:var(--cide-element-size-xs);height:calc(var(--cide-element-size-xs) - var(--cide-input-border-size-xs) * 2)}.cide-element-size-xs .cide-input-leading-icon-wrapper .cide-input-leading-icon{font-size:calc(var(--cide-input-size-xs) + var(--cide-input-size-xs) / 2);line-height:calc(var(--cide-element-size-xs) - var(--cide-input-border-size-xs) * 2)}.cide-element-size-xs.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-element-input-wrapper{margin-top:calc(var(--cide-input-label-size-xs) / 2)}.cide-element-size-xs.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-input-label{top:calc(var(--cide-input-label-size-xs) / 2 - var(--cide-input-label-size-xs))}.cide-element-size-xs.cide-element-leading-icon .cide-input-input{padding-left:calc(var(--cide-element-size-xs) - var(--cide-input-border-size-xs))}.cide-element-size-xs.cide-element-clear-input .cide-input-input{padding-right:calc(var(--cide-element-size-xs) - var(--cide-input-border-size-xs))}.cide-element-size-xs.cide-element-trailing-icon .cide-input-clear{right:var(--cide-element-size-xs)}.cide-element-size-sm .cide-input-input{height:var(--cide-element-size-sm);font-size:var(--cide-input-size-sm);border-width:var(--cide-input-border-size-sm)}.cide-element-size-sm .cide-input-label{font-size:var(--cide-input-label-size-sm);line-height:var(--cide-input-label-size-sm)}.cide-element-size-sm .cide-input-help-error-text{font-size:var(--cide-input-error-helper-size-sm);height:calc(var(--cide-input-error-helper-size-sm) + 2px);line-height:var(--cide-input-error-helper-size-sm)}.cide-element-size-sm .cide-input-clear{top:var(--cide-input-border-size-sm);width:var(--cide-element-size-sm);height:calc(var(--cide-element-size-sm) - var(--cide-input-border-size-sm) * 2)}.cide-element-size-sm .cide-input-clear .cide-input-clear-icon{font-size:calc(var(--cide-input-size-sm) + var(--cide-input-size-sm) / 2);line-height:calc(var(--cide-element-size-sm) - var(--cide-input-border-size-sm) * 2)}.cide-element-size-sm .cide-input-leading-icon-wrapper{top:var(--cide-input-border-size-sm);width:var(--cide-element-size-sm);height:calc(var(--cide-element-size-sm) - var(--cide-input-border-size-sm) * 2)}.cide-element-size-sm .cide-input-leading-icon-wrapper .cide-input-leading-icon{font-size:calc(var(--cide-input-size-sm) + var(--cide-input-size-sm) / 2);line-height:calc(var(--cide-element-size-sm) - var(--cide-input-border-size-sm) * 2)}.cide-element-size-sm.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-element-input-wrapper{margin-top:calc(var(--cide-input-label-size-sm) / 2)}.cide-element-size-sm.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-input-label{top:calc(var(--cide-input-label-size-sm) / 2 - var(--cide-input-label-size-sm))}.cide-element-size-sm.cide-element-leading-icon .cide-input-input{padding-left:calc(var(--cide-element-size-sm) - var(--cide-input-border-size-sm))}.cide-element-size-sm.cide-element-clear-input .cide-input-input{padding-right:calc(var(--cide-element-size-sm) - var(--cide-input-border-size-sm))}.cide-element-size-sm.cide-element-trailing-icon .cide-input-clear{right:var(--cide-element-size-sm)}.cide-element-size-md .cide-input-input{height:var(--cide-element-size-md);font-size:var(--cide-input-size-md);border-width:var(--cide-input-border-size-md)}.cide-element-size-md .cide-input-label{font-size:var(--cide-input-label-size-md);line-height:var(--cide-input-label-size-md)}.cide-element-size-md .cide-input-help-error-text{font-size:var(--cide-input-error-helper-size-md);height:calc(var(--cide-input-error-helper-size-md) + 2px);line-height:var(--cide-input-error-helper-size-md)}.cide-element-size-md .cide-input-clear{top:var(--cide-input-border-size-md);width:var(--cide-element-size-md);height:calc(var(--cide-element-size-md) - var(--cide-input-border-size-md) * 2)}.cide-element-size-md .cide-input-clear .cide-input-clear-icon{font-size:calc(var(--cide-input-size-md) + var(--cide-input-size-md) / 2);line-height:calc(var(--cide-element-size-md) - var(--cide-input-border-size-md) * 2)}.cide-element-size-md .cide-input-leading-icon-wrapper{top:var(--cide-input-border-size-md);width:var(--cide-element-size-md);height:calc(var(--cide-element-size-md) - var(--cide-input-border-size-md) * 2)}.cide-element-size-md .cide-input-leading-icon-wrapper .cide-input-leading-icon{font-size:calc(var(--cide-input-size-md) + var(--cide-input-size-md) / 2);line-height:calc(var(--cide-element-size-md) - var(--cide-input-border-size-md) * 2)}.cide-element-size-md.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-element-input-wrapper{margin-top:calc(var(--cide-input-label-size-md) / 2)}.cide-element-size-md.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-input-label{top:calc(var(--cide-input-label-size-md) / 2 - var(--cide-input-label-size-md))}.cide-element-size-md.cide-element-leading-icon .cide-input-input{padding-left:calc(var(--cide-element-size-md) - var(--cide-input-border-size-md))}.cide-element-size-md.cide-element-clear-input .cide-input-input{padding-right:calc(var(--cide-element-size-md) - var(--cide-input-border-size-md))}.cide-element-size-md.cide-element-trailing-icon .cide-input-clear{right:var(--cide-element-size-md)}.cide-element-size-lg .cide-input-input{height:var(--cide-element-size-lg);font-size:var(--cide-input-size-lg);border-width:var(--cide-input-border-size-lg)}.cide-element-size-lg .cide-input-label{font-size:var(--cide-input-label-size-lg);line-height:var(--cide-input-label-size-lg)}.cide-element-size-lg .cide-input-help-error-text{font-size:var(--cide-input-error-helper-size-lg);height:calc(var(--cide-input-error-helper-size-lg) + 2px);line-height:var(--cide-input-error-helper-size-lg)}.cide-element-size-lg .cide-input-clear{top:var(--cide-input-border-size-lg);width:var(--cide-element-size-lg);height:calc(var(--cide-element-size-lg) - var(--cide-input-border-size-lg) * 2)}.cide-element-size-lg .cide-input-clear .cide-input-clear-icon{font-size:calc(var(--cide-input-size-lg) + var(--cide-input-size-lg) / 2);line-height:calc(var(--cide-element-size-lg) - var(--cide-input-border-size-lg) * 2)}.cide-element-size-lg .cide-input-leading-icon-wrapper{top:var(--cide-input-border-size-lg);width:var(--cide-element-size-lg);height:calc(var(--cide-element-size-lg) - var(--cide-input-border-size-lg) * 2)}.cide-element-size-lg .cide-input-leading-icon-wrapper .cide-input-leading-icon{font-size:calc(var(--cide-input-size-lg) + var(--cide-input-size-lg) / 2);line-height:calc(var(--cide-element-size-lg) - var(--cide-input-border-size-lg) * 2)}.cide-element-size-lg.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-element-input-wrapper{margin-top:calc(var(--cide-input-label-size-lg) / 2)}.cide-element-size-lg.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-input-label{top:calc(var(--cide-input-label-size-lg) / 2 - var(--cide-input-label-size-lg))}.cide-element-size-lg.cide-element-leading-icon .cide-input-input{padding-left:calc(var(--cide-element-size-lg) - var(--cide-input-border-size-lg))}.cide-element-size-lg.cide-element-clear-input .cide-input-input{padding-right:calc(var(--cide-element-size-lg) - var(--cide-input-border-size-lg))}.cide-element-size-lg.cide-element-trailing-icon .cide-input-clear{right:var(--cide-element-size-lg)}.cide-element-size-xl .cide-input-input{height:var(--cide-element-size-xl);font-size:var(--cide-input-size-xl);border-width:var(--cide-input-border-size-xl)}.cide-element-size-xl .cide-input-label{font-size:var(--cide-input-label-size-xl);line-height:var(--cide-input-label-size-xl)}.cide-element-size-xl .cide-input-help-error-text{font-size:var(--cide-input-error-helper-size-xl);height:calc(var(--cide-input-error-helper-size-xl) + 2px);line-height:var(--cide-input-error-helper-size-xl)}.cide-element-size-xl .cide-input-clear{top:var(--cide-input-border-size-xl);width:var(--cide-element-size-xl);height:calc(var(--cide-element-size-xl) - var(--cide-input-border-size-xl) * 2)}.cide-element-size-xl .cide-input-clear .cide-input-clear-icon{font-size:calc(var(--cide-input-size-xl) + var(--cide-input-size-xl) / 2);line-height:calc(var(--cide-element-size-xl) - var(--cide-input-border-size-xl) * 2)}.cide-element-size-xl .cide-input-leading-icon-wrapper{top:var(--cide-input-border-size-xl);width:var(--cide-element-size-xl);height:calc(var(--cide-element-size-xl) - var(--cide-input-border-size-xl) * 2)}.cide-element-size-xl .cide-input-leading-icon-wrapper .cide-input-leading-icon{font-size:calc(var(--cide-input-size-xl) + var(--cide-input-size-xl) / 2);line-height:calc(var(--cide-element-size-xl) - var(--cide-input-border-size-xl) * 2)}.cide-element-size-xl.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-element-input-wrapper{margin-top:calc(var(--cide-input-label-size-xl) / 2)}.cide-element-size-xl.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-input-label{top:calc(var(--cide-input-label-size-xl) / 2 - var(--cide-input-label-size-xl))}.cide-element-size-xl.cide-element-leading-icon .cide-input-input{padding-left:calc(var(--cide-element-size-xl) - var(--cide-input-border-size-xl))}.cide-element-size-xl.cide-element-clear-input .cide-input-input{padding-right:calc(var(--cide-element-size-xl) - var(--cide-input-border-size-xl))}.cide-element-size-xl.cide-element-trailing-icon .cide-input-clear{right:var(--cide-element-size-xl)}.cide-input-leading-icon-wrapper{position:absolute;bottom:0;left:0;z-index:-10;text-align:center}\n"] }]
|
|
400
|
+
}], ctorParameters: () => [{ type: i1.CapitalizePipe }, { type: i2.CideElementsService }], propDecorators: { fill: [{
|
|
401
|
+
type: Input
|
|
402
|
+
}], label: [{
|
|
403
|
+
type: Input
|
|
404
|
+
}], labelHide: [{
|
|
405
|
+
type: Input
|
|
406
|
+
}], disabled: [{
|
|
407
|
+
type: Input
|
|
408
|
+
}], clearInput: [{
|
|
409
|
+
type: Input
|
|
410
|
+
}], labelPlacement: [{
|
|
411
|
+
type: Input
|
|
412
|
+
}], labelDir: [{
|
|
413
|
+
type: Input
|
|
414
|
+
}], placeholder: [{
|
|
415
|
+
type: Input
|
|
416
|
+
}], leadingIcon: [{
|
|
417
|
+
type: Input
|
|
418
|
+
}], trailingIcon: [{
|
|
419
|
+
type: Input
|
|
420
|
+
}], helperText: [{
|
|
421
|
+
type: Input
|
|
422
|
+
}], helperTextCollapse: [{
|
|
423
|
+
type: Input
|
|
424
|
+
}], hideHelperAndErrorText: [{
|
|
425
|
+
type: Input
|
|
426
|
+
}], errorText: [{
|
|
427
|
+
type: Input
|
|
428
|
+
}], maxlength: [{
|
|
429
|
+
type: Input
|
|
430
|
+
}], minlength: [{
|
|
431
|
+
type: Input
|
|
432
|
+
}], required: [{
|
|
433
|
+
type: Input
|
|
434
|
+
}], autocapitalize: [{
|
|
435
|
+
type: Input
|
|
436
|
+
}], autocomplete: [{
|
|
437
|
+
type: Input
|
|
438
|
+
}], type: [{
|
|
439
|
+
type: Input
|
|
440
|
+
}], width: [{
|
|
441
|
+
type: Input
|
|
442
|
+
}], id: [{
|
|
443
|
+
type: Input
|
|
444
|
+
}], ngModel: [{
|
|
445
|
+
type: Input
|
|
446
|
+
}], option: [{
|
|
447
|
+
type: Input
|
|
448
|
+
}], size: [{
|
|
449
|
+
type: Input
|
|
450
|
+
}], ngModelChange: [{
|
|
451
|
+
type: Output
|
|
452
|
+
}] } });
|
|
453
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xvdWQtaWRlLWVsZW1lbnQvc3JjL2xpYi9lbGVtZW50cy9pbnB1dC9pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbG91ZC1pZGUtZWxlbWVudC9zcmMvbGliL2VsZW1lbnRzL2lucHV0L2lucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JILE9BQU8sRUFBeUMsV0FBVyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBK0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuSixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOENBQThDLENBQUM7Ozs7OztBQTBDOUUsTUFBTSxPQUFPLGtCQUFrQjtJQUU3QixZQUFtQixjQUE4QixFQUFVLGNBQW1DO1FBQTNFLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFxQjtRQUk5RixnRUFBZ0U7UUFFaEU7OztXQUdHO1FBQ00sU0FBSSxHQUFxQixTQUFTLENBQUM7UUFDNUMsOERBQThEO1FBQ3JELFVBQUssR0FBVyxFQUFFLENBQUM7UUFDNUIsMENBQTBDO1FBQ2pDLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDcEMsbURBQW1EO1FBQzFDLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDbkMsaUVBQWlFO1FBQ3hELGVBQVUsR0FBWSxLQUFLLENBQUM7UUFDckMsMERBQTBEO1FBQ2pELG1CQUFjLEdBQXVCLE9BQU8sQ0FBQztRQUN0RCwwRUFBMEU7UUFDakUsYUFBUSxHQUFpQixP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LEtBQUs7Z0JBRUcsa0JBQWtCO3NCQUExQixLQUFLO2dCQUVHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLEVBQUU7c0JBQVYsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQVlHLElBQUk7c0JBQVosS0FBSztnQkFFSSxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDYXBpdGFsaXplUGlwZSB9IGZyb20gJy4uLy4uL3V0aWxzL3BpcGVzL2NhcGl0YWxpemUvY2FwaXRhbGl6ZS5waXBlJztcclxuaW1wb3J0IHsgQ2lkZUVsZW1lbnRzU2VydmljZSB9IGZyb20gJy4uLy4uL3V0aWxzL3NlcnZpY2VzL2VsZW1lbnRzL2VsZW1lbnRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBhdXRvY2FwaXRhbGl6ZVR5cGUsIGF1dG9jb21wbGV0ZVR5cGUsIGNvbnRyb2xUeXBlLCBlbGVtZW50U3R5bGVUeXBlLCBpbnB1dFR5cGUsIGxhYmVsRGlyVHlwZSwgbGFiZWxQbGFjZW1lbnRUeXBlLCB0aGVtZVNpemUgfSBmcm9tICdjbG91ZC1pZGUtbG1zLW1vZGVsJztcclxuXHJcbi8qKiBAZGVzY3JpcHRpb24gdHlwZSB0byByZWdpc3RlciBlcnJvciByZWxhdGVkIHRvIGNvbnRyb2wgKi9cclxuZXhwb3J0IHR5cGUgRXJyb3JWYWxpZGF0aW9uU3RhdHVzID0ge1xyXG4gIG1heGxlbmd0aD86IHN0cmluZyxcclxuICBtaW5sZW5ndGg/OiBzdHJpbmcsXHJcbiAgcmVxdWlyZWQ/OiBzdHJpbmcsXHJcbn1cclxuZXhwb3J0IHR5cGUgVmFsaWRhdGlvblN0YXR1cyA9IHtcclxuICB2YWxpZGF0aW9uOiBFcnJvclZhbGlkYXRpb25TdGF0dXMsXHJcbiAgc3RhdHVzOiBib29sZWFuXHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY2lkZS1lbGUtaW5wdXQnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vaW5wdXQuY29tcG9uZW50LnNjc3MnLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIC8vIGRpcmVjdGl2ZXNcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIC8vIGZvciBuZ01vZGVsXHJcbiAgICBGb3Jtc01vZHVsZVxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDaWRlSW5wdXRDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIC8qKiBAZGVzY3JpcHRpb24gdG8gYXBwbHkgdmFsaWRhdGlvbnMgICovXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDaWRlSW5wdXRDb21wb25lbnQpLFxyXG4gICAgfSxcclxuICAgIENhcGl0YWxpemVQaXBlXHJcbiAgXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIENpZGVJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IsIE9uQ2hhbmdlcywgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGNhcGl0YWxpemVQaXBlOiBDYXBpdGFsaXplUGlwZSwgcHJpdmF0ZSBlbGVtZW50U2VydmljZTogQ2lkZUVsZW1lbnRzU2VydmljZSkge1xyXG4gICAgLy8gVmFsaWRhdGUgY29udHJvbFxyXG4gICAgdGhpcy5vblZhbGlkYXRlKCk7XHJcbiAgfVxyXG4gIC8qPT09PT09PVNldCBjdXN0b20gY29udHJvbHMgaW5wdXRzIHRvIHNldCBjb21wb25lbnRzPT09PT09PT09Ki9cclxuXHJcbiAgLyoqIFxyXG4gICAqIEBkZXNjcmlwdGlvbiB0byBzZSB0aGUgdmlzdWFsIG9mIGNvbnRyb2wgbGlrZSBzb2xpZCBjb250cm9sIG9mZmVyZCBieSBtYXRlcmlhbCBkZXNpZ24gb3Igb3V0bGluZSB3aXRoIGEgYm9yZGVyXHJcbiAgICogQG9wdGlvbnMgc29saWQgfCBvdXRsaW5lIHwgc3RhbmRhcmRcclxuICAgKi9cclxuICBASW5wdXQoKSBmaWxsOiBlbGVtZW50U3R5bGVUeXBlID0gJ291dGxpbmUnO1xyXG4gIC8qKiBAZGVzY3JpcHRpb24gTGFibGUgb2YgY29udHJvbCAoVGl0bGUpLCBMaWtlIE5hbWUsIEVtYWlsICovXHJcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9IFwiXCI7XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiB0byBoaWRlIGFuZCBzaG93IGxhYmVsICovXHJcbiAgQElucHV0KCkgbGFiZWxIaWRlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiBpcyBjb250cm9sIEVkaXRhYmxlIG9yIERpc2FibGVkICovXHJcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvKiogQGRlc2NyaXB0aW9uIElzIENsZWFyIElucHV0IENyb3NzIGJ1dHRvbiBpcyB2aXNpYmxlIG9yIG5vdCAqL1xyXG4gIEBJbnB1dCgpIGNsZWFySW5wdXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvKiogQGRlc2NyaXB0aW9uIFBvc2l0aW9uIG9mIExhYmVsICdmbG9hdGluZycgfCAnZml4ZWQnICovXHJcbiAgQElucHV0KCkgbGFiZWxQbGFjZW1lbnQ6IGxhYmVsUGxhY2VtZW50VHlwZSA9IFwiZml4ZWRcIjtcclxuICAvKiogQGRlc2NyaXB0aW9uIExhYmxlIGRpcmVjdGlvbiBmcm9tIHN0YXJ0IG9mIGNvbnRybCBvciBlbmQgb2YgY29udHJvbCAqL1xyXG4gIEBJbnB1dCgpIGxhYmVsRGlyOiBsYWJlbERpclR5cGUgPSBcInN0YXJ0XCI7XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiBQbGFjZSBob2xkZXIgZm9yIGNvbnRyb2wgdG8gZGlzcGxheSBpZiB0aGVyZSBpcyBubyB2YWx1ZSAqL1xyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSBcIlwiO1xyXG4gIC8qKiBAZGVzY3JpcHRpb24gaXQgaXMgdG8gc2V0IGxlYWRpbmcgaWNvbiwgYXQgdGhlIHN0YXJ0IG9mIGNvbnRyb2wgICovXHJcbiAgQElucHV0KCkgbGVhZGluZ0ljb246IHN0cmluZyA9IFwiXCI7XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiBpdCBpcyB0byBzZXQgdHJhaWxpbmcgaWNvbiwgYXQgdGhlIGVuZCBvZiBjb250cm9sLCBmb3IgcGFzc3dvcmQgdHlwZSBjb250cm9sIGV5ZSBpcyB0aGUgdHJhaWxpbmcgaWNvbiAgKi9cclxuICBASW5wdXQoKSB0cmFpbGluZ0ljb246IHN0cmluZyA9IFwiXCI7XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiB0byBkaXNwbGF5IGJlbG93IHRoZSBjb250cm9sIGZvciBzdWdnZXN0aW9uLCBpZiB0aGVyZSBpcyBhbnkgZXJyb3IgdGhlbiBlcnJvciB3aWxsIGJ3IHRoZSBmaXJzdCB0byBzaG9lIGluIHBsYWNlIG9mIGhlbHAgdGV4dCAqL1xyXG4gIEBJbnB1dCgpIGhlbHBlclRleHQ6IHN0cmluZyA9IFwiXCI7XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiBkZWZhdWx0IHRydWUgdG8gY29sbGFwc2Ugd2hlbiB0aGVyZSBpcyBubyBoZWxwIHRleHQgb3IgZXJyb3IgdGV4dCwgaWYgZmFsc2UgdGhlbiBlbGVtZW50IGFyZWEgaW4gRE9NIHdpbGwgYmUgcmVzZXJ2ZWQgbmV2ZXIgZGV0cm95ICAqL1xyXG4gIEBJbnB1dCgpIGhlbHBlclRleHRDb2xsYXBzZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiBzaG93IGFuZCBoaWRlIGhlbHBlciB0ZXh0IGl0cyBmb3JlY2Z1bGwgKi9cclxuICBASW5wdXQoKSBoaWRlSGVscGVyQW5kRXJyb3JUZXh0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiBpZiBmb3VuZCBhbnkgZXJyb3IgaW4gY29udHJvbCB0aGUgZXJyb3IgdGhleHQgd2lsbCBiZSB1c2VkIHRvIGRpc3BsYXkgZXJyb3IgbWVzc2FnZSwgaWYgdGhlcmUgaXMgaGVscCB0ZXh0IHN0aWxsIGVycm9yIHRleHQgaXMgaGF2aW5nIGhpZ2hlciBwcmlvcml0eSB0aGVuIGhlbHB0ZXh0ICovXHJcbiAgQElucHV0KCkgZXJyb3JUZXh0OiBzdHJpbmcgPSBcIlwiO1xyXG4gIC8qKiBAZGVzY3JpcHRpb24gbWF4bGVuZ3RoIGZvciBjb250cm9sICovXHJcbiAgQElucHV0KCkgbWF4bGVuZ3RoOiBudW1iZXIgPSAwO1xyXG4gIC8qKiBAZGVzY3JpcHRpb24gbWlubGVuZ3RoIGZvciBjb250cm9sICovXHJcbiAgQElucHV0KCkgbWlubGVuZ3RoOiBudW1iZXIgPSAwO1xyXG4gIC8qKiBAZGVzY3JpcHRpb24gaXMgY29udHJvbCBpcyByZXF1aXJlZCBvciBub3QgaW5wdXQgdHlwZSBpcyB0cnVlIHwgZmFsc2UgKi9cclxuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8qKiBAZGVzY3JpcHRpb24gQXV0byBjYXBhdGFsaXphdGlvbiBmb3IgdGhlIHZhbHVlIGFuZCBhcHBsaWNhYmxlIHRvIHdvcmQgb3IgdG8gY29tcGxldGUgc2VudGFuY2UgKi9cclxuICBASW5wdXQoKSBhdXRvY2FwaXRhbGl6ZTogYXV0b2NhcGl0YWxpemVUeXBlID0gXCJvZmZcIjtcclxuICAvKiogQGRlc2NyaXB0aW9uIGF1dG8gY29tcGxldGUgdHlwZSB0byBoZWxwIHJlYWRlciB3aGF0IGlzIHRoZSB0eXBlIG9mIHZhbHVlICovXHJcbiAgQElucHV0KCkgYXV0b2NvbXBsZXRlOiBhdXRvY29tcGxldGVUeXBlID0gXCJvZmZcIjtcclxuICAvKiogQGRlc2NyaXB0aW9uIHR5cGUgb2YgY29udHJvbCAqL1xyXG4gIEBJbnB1dCgpIHR5cGU6IGNvbnRyb2xUeXBlID0gJyc7XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiB3aWR0aCBvZiBjb250cm9sLCBkZWZhdWx0IHdpZHRoIGlzIDEwMCUgKi9cclxuICBASW5wdXQoKSB3aWR0aDogc3RyaW5nID0gJzEwMCUnO1xyXG4gIC8qKiBAZGVzY3JpcHRpb24gdW5pcSBpZCBvZiBjb250cm9sLCB1c2VkIHRvIGRpZmZlcmVuY2lhdCB0aGUgdmFsdWUgYWxzbyBwcmV2ZW50IHZhbHVlIHNob3VsZCBub3QgZWZmZWN0IGFub3RoZXIgdmFsdWVzICovXHJcbiAgQElucHV0KCkgaWQ6IHN0cmluZyA9ICcnO1xyXG4gIC8qKiBAZGVzY3JpcHRpb24gdG8gZ2V0IGlucHV0IHZhbHVlIHVzaW5nIG9uZSB3YXkgYmluZGluZyBsaWtlOiBbbmdNb2RlbF0gb3IgYnkgdHdvIHdheSBiaW5kaW5nIFsobmdNb2RlbCldICovXHJcbiAgQElucHV0KCkgbmdNb2RlbDogaW5wdXRUeXBlID0gJyc7XHJcbiAgQElucHV0KCkgb3B0aW9uOiBzdHJpbmdbXSA9IFtcImFua3N1aFwiLCBcImJodXJlXCJdXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICogSG9sZHMgdGhlIHNpemUgb2YgdGhlIGNvbXBvbmVudCBsaWtlIFNtYWxsLCBFeHRyYSBzbWFsbCwgTGFyZ2VcclxuICAgKiBieSBEZWZhdWx0IGl0IHRha2VzIHNtYWxsIHNpemVcclxuICAgKiBvciB0aGUgc2l6ZSBzZXQgYnkgdGhlIHByb2plY3Qgc2V0dXAgc2VydmljZVxyXG4gICAqIG9yIGl0IHdpbGwgYmVzZXQgZm9yIGluZGl2aWR1YWwgY29tcG9uZW50XHJcbiAgICogXHJcbiAgICogU2l6ZSBBcHBsZWQgXHJcbiAgICogQ29tcG9uZW50IGxldmVsIHRoZW4gc2V0dXAgc2VydmljZSB0aGVuIGZpbmFsbHkgZGVmYXVsdCBtZFxyXG4gICAqICBPcHRpb25zOiBcIjJ4c1wiIHwgXCJcInhzXCIgfCBcInNtXCIgfCBcIm1kXCIgfCBcImxnXCIgfCBcInhsXCIgfCBcInh4bFwiIFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNpemU6IHRoZW1lU2l6ZSA9IFwic21cIjtcclxuICAvKiogQGRlc2NyaXB0aW9uIHRvIHNldCByZXR1cm4gdmFsdWUgdXNpbmcgb25lIHdheSBiaW5kaW5nIGxpa2U6IChuZ01vZGVsQ2hhbmdlcykgb3IgYnkgdHdvIHdheSBiaW5kaW5nIFsobmdNb2RlbCldICovXHJcbiAgQE91dHB1dCgpIG5nTW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxpbnB1dFR5cGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxpbnB1dFR5cGU+KCk7XHJcblxyXG4gIC8qXHJcbiAgICAgIGludGVybmFsIFByb3BlcnRpZXMgZm9yIGlucHV0XHJcbiAgKi9cclxuICAvKiogQGRlc2NyaXB0aW9uIGlzIHZhbGUgbmVlZCB0byByZWFkIGZyb20gbmdNb2RlbCBvciBmcm9tIHZhbHVlKG5lZWQgdG8gaW1wbGVtZW50KSwgaXQgaXMgZGV0ZWN0ZWQgYW5kIG1haWxkIGZhbHMgb24gdmFsdWUgY2huYWdlcyAqL1xyXG4gIHB1YmxpYyBpc05nTW9kZWw6IGJvb2xlYW4gPSB0aGlzLm5nTW9kZWwgPyB0cnVlIDogZmFsc2U7XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiB0aGlzIGlzIHRvIHNldCBjb250cm9sIHZhbHVlIGlzIHZhbGlkIG9yIG5vdCwgc2V0IGJ5IHVzIGluc2lkZSB2YWxpZGF0ZSBjYWxsYmNrIG1ldGhvZCBjYWxsZWQgYnkgYW5ndWxhciAgKi9cclxuICBwdWJsaWMgaXNWYWxpZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiB3aGVuIGNvbnRyb2wgaXMgdG91Y2hlZCB0aGVuIHRoZSB3aWxsIG1haWQgdHJ1ZSBieSB0aGUgdXMgdG8gY2hlY2sgaXQgaXMgdG91Y2hlZCBvciBub3QsIHdoZW4gd2Ugd2lsbCBzZXQgdGhpcyB0cnVlIHdlIHdpbGwgY2FsbCB0aGUgb25Ub3VjaGVkIGNhbGxiYWNrIG1ldGhvZCBvZiBhbmd1YWxyIHRvIGluZm9ybSBhbmd1bGFyIHRoYXQgc29tdGhpcyBpcyBjaGFuZ2VkIGFuZCBjb250cm9sIGlzIHRvdWNoZWQgKi9cclxuICBwdWJsaWMgaXNUb3VjaGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiB3ZSB3aWxsIHRha2UgdHlwZSBvZiBjb250cm9sIGluIHR5cGUgYnV0IGlzIG1heSBiZSBub3QgZXhhY3RseSB3aGljaCBpbnB1dCdzIHR5cGUgc28gd2UgbmVlZCB0byBnZXQgdHlwZSBhbmQgc2V0IGFjdHVsZSB0eXBlIHRvIG91ciBpbnB1dCwgYWxzbyB3aGVuIHR5cGUgaXMgc2V0IHBhc3N3b3JkIGJ1dCBpbiBjYWxzZSB2aWV3IGluIHRleHR0IHRoZW4gaW51dXQgdHlwZSBuZWVkIHRvIGNoYW5nZSB0byB0ZXh0ICovXHJcbiAgcHVibGljIHR5cGVJbnRlcm5hbDogXCJ0ZXh0XCIgfCBcInBhc3N3b3JkXCIgPSBcInRleHRcIjtcclxuICAvKiogQGRlc2NyaXB0aW9uIGlmIHRyYWxpbmcgaXMgc2V0IHRoZSBpdCBpcyBhc3NpZ25lZCBieSBpdCwgYnV0IHNvbWUgY2FzZSB0YXJsaW5nIGljb24gbm90IGFzIGl0IGlzIHNldCBuZWVkIHRybyBiZSBjaGFuZ2VkIGF0IHJ1bnRpbWUsIGxpa2UgcGFzc3dvcmQgdmlzaWJpbGl0eSBoaWRlIGFuZCBzaG93ICovXHJcbiAgcHVibGljIHRyYWlsaW5nSWNvbkludGVybmFsOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAvKiBcclxuICAgICAgUHJvcGVydGllcyBjb25uZWN0ZWQgd2l0aCB0cmFpbGluZ0ljb25JbnRlcm5hbCBcclxuICAqL1xyXG4gIHB1YmxpYyBpc1RyYWlsaW5nSWNvbkFsbHdlZENsaWNrOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vIFByb3BlcnRpZXMgY29ubmVjdGVkIHdpdGggaWRcclxuICBwdWJsaWMgaWRSYW5kb206IHN0cmluZyA9IHRoaXMucmFuZG9tU3RyaW5nKCk7XHJcblxyXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1NRVRIT0RTIEZPUiBDVVNUT00gRk9STSBDT01QT05FTlQ9PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gIC8vIEZPUiBBTkdVTEFSIENBTExFRCBCWSBVSVxyXG5cclxuICAvKiogXHJcbiAgICogQGRlc2NyaXB0aW9uIEZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgSFRNTCBDaG5hZ2UgdG8gdGVsbCBBbmd1bGFyIHNvbXRoaW5nIGlzIGNoYW5nZWQuXHJcbiAgICogQGZpZWxkIHZhbHVlIDogaW5wdXRUeXBlXHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xyXG4gIHByaXZhdGUgb25DaGFuZ2UgPSAodmFsdWU6IGlucHV0VHlwZSkgPT4geyB9O1xyXG5cclxuICAvKiogQGRlc2NyaXB0aW9uIEZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgaW5wdXQgaXMgdG91Y2hlZCAoY2xjaWtlZCkgdG8gdGVsbCBBbmd1bGFyIHNvbXRoaW5nIGlzIGNoYW5nZWQuICovXHJcbiAgb25Ub3VjaGVkID0gKCkgPT4geyB9O1xyXG5cclxuICAvKiogQGRlc2NyaXB0aW9uIEZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgaW5wdXQgaXMgbmVlZCB0byBWYWxpZGF0ZSB0byB0ZWxsIEFuZ3VsYXIgc29tdGhpbmcgaXMgY2hhbmdlZCAoaW4gY2FzZSBvZiBzb21lIGlucHV0IGRpcGVuZGVudCB2YWxpZGF0aW9uKS4gKi9cclxuICBvblZhbGlkYXRlID0gKCkgPT4geyB9O1xyXG5cclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKiBNZXRob2QgdGhhdCBwZXJmb3JtcyBzeW5jaHJvbm91cyB2YWxpZGF0aW9uIGFnYWluc3QgdGhlIHByb3ZpZGVkIGNvbnRyb2wuXHJcbiAgICogRXhpY3V0ZWQgYnkgQW5ndWxhclxyXG4gICAqXHJcbiAgICogQHBhcmFtIGNvbnRyb2wgVGhlIGNvbnRyb2wgdG8gdmFsaWRhdGUgYWdhaW5zdC5cclxuICAgKlxyXG4gICAqIEByZXR1cm5zIEEgbWFwIG9mIHZhbGlkYXRpb24gZXJyb3JzIGlmIHZhbGlkYXRpb24gZmFpbHMsXHJcbiAgICogb3RoZXJ3aXNlIG51bGwuXHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xyXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGNvbnN0IHZhbGlkYXRpb25fZXJyb3IgPSB0aGlzLmlzQ29udHJvbFZhbGlkKHRoaXMubmdNb2RlbCk7XHJcbiAgICBpZiAodmFsaWRhdGlvbl9lcnJvcj8uc3RhdHVzKSB7XHJcbiAgICAgIHJldHVybiB2YWxpZGF0aW9uX2Vycm9yO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqIFJlZ2lzdGVycyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgdmFsaWRhdG9yIGlucHV0cyBjaGFuZ2UuXHJcbiAgICogRXhpY3V0ZWQgYnkgQW5ndWxhclxyXG4gICAqXHJcbiAgICogQHBhcmFtIGZuIFRoZSBjYWxsYmFjayBmdW5jdGlvblxyXG4gICAqL1xyXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2U/KGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVmFsaWRhdGUgPSBmbjtcclxuICB9XHJcblxyXG4gIC8qKiBAZGVzY3JpcHRpb24gd2hlbiBmb3JtIGNvbnRyb2wgY2hhbmdlIGZyb20gbW9kZWwgc2lkZSB0aGlzIG1ldGhvZCBpcyBpbXBsZW1lbnRlZCAgKi9cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBpbnB1dFR5cGUpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc05nTW9kZWwpIHtcclxuICAgICAgdGhpcy5uZ01vZGVsID0gdGhpcy5hdXRvQ2FwaXRhbGl6ZUJ5T3B0aW9uKHZhbHVlLCB0aGlzLnR5cGUpO1xyXG4gICAgICB0aGlzLm5nTW9kZWxDaGFuZ2U/LmVtaXQodmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKiogQGRlc2NyaXB0aW9uIEFsbG93cyBBbmd1bGFyIHRvIHJlZ2lzdGVyIGEgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBtb2RlbCBjaGFuZ2VzLiAqL1xyXG4gIC8vIFNhdmUgdGhlIGZ1bmN0aW9uIGFzIGEgcHJvcGVydHkgdG8gY2FsbCBsYXRlciBoZXJlLlxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogaW5wdXRUeXBlKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG4gIC8qKiBAZGVzY3JpcHRpb24gQWxsb3dzIEFuZ3VsYXIgdG8gcmVnaXN0ZXIgYSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGlucHV0IGhhcyBiZWVuIHRvdWNoZWQuICovXHJcbiAgLy8gU2F2ZSB0aGUgZnVuY3Rpb24gYXMgYSBwcm9wZXJ0eSB0byBjYWxsIGxhdGVyIGhlcmUuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcblxyXG4gIC8qXHJcbiAgICBNZXRob2RzIGZvciBpbnB1dFxyXG4qL1xyXG5cclxuICAvKiogQGRlc2NyaXB0aW9uIERldGVjdCB3ZXRoZXIgaW5wdXQgcHJvcGVydGlyZXMgY2FuZ2VkIG9yIG5vdCAqL1xyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzPy5bJ3ZhbHVlJ10pIHtcclxuICAgICAgdGhpcy5pc05nTW9kZWwgPSB0cnVlO1xyXG4gICAgICB0aGlzLm5nTW9kZWwgPSB0aGlzLnByb2Nlc3NWYWx1ZSh0aGlzLm5nTW9kZWwsIHRoaXMudHlwZSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5pc1ZhbGlkVmFsdWVBbmRUeXBlKHRoaXMubmdNb2RlbCwgdGhpcy50eXBlKSB8fCB0aGlzLmlzVG91Y2hlZCkge1xyXG4gICAgICB0aGlzLmlzQ29udHJvbFZhbGlkKHRoaXMubmdNb2RlbCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRGl0ZWN0IHR5cGUgY2hhbmdlXHJcbiAgICBpZiAoY2hhbmdlcz8uWyd0eXBlJ10pIHtcclxuICAgICAgdGhpcy5kZXRlY3RUeXBlQ2hhbmdlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlkKSB7XHJcbiAgICAgIHRoaXMuZ2V0Q29udHJvbERhdGEoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBAZGVzY3JpcHRpb24gY3VzdG9tIG1ldGhvZCBydW4gd2hlbiBIVE1MIGNoYW5nZXMsIHdlIGNhbGwgbWV0aG9kIHJlZ2lzdGVyZCBieSBhbmd1bGFyIHRvIGRldGVjdCBjaGFuZ2UgKi9cclxuICB1cERhdGVWYWx1ZSh2YWx1ZTogeyB0YXJnZXQ6IHsgdmFsdWU6IGlucHV0VHlwZSB9IH0gfCBFdmVudCkge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gdmFsdWUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQgfCB7IHZhbHVlOiBpbnB1dFR5cGUgfTtcclxuICAgIHRoaXMuaXNDb250cm9sVmFsaWQodGFyZ2V0Py52YWx1ZSk7XHJcbiAgICBjb25zdCB1cGRhdGVkVmFsdWUgPSB0aGlzLnByb2Nlc3NWYWx1ZSh0YXJnZXQ/LnZhbHVlLCB0aGlzLnR5cGUpO1xyXG4gICAgdGhpcy5uZ01vZGVsID0gdXBkYXRlZFZhbHVlO1xyXG4gICAgLy8gY29uc29sZS5sb2codGFyZ2V0KVxyXG4gICAgdGhpcy5vbkNoYW5nZSh1cGRhdGVkVmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIG1ldGhvZCBhcHBsaWNhYmxlIGluIGNhc2Ugb2YgY29udHJvbCB0eXBlIGNoZWNrYm94XHJcbiAgICogXHJcbiAgICogQHBhcmFtIHZhbHVlIGJvb2xlYW4gfCBzdHJpbmdcclxuICAgKi9cclxuICB1cGRhdGVWYWx1ZUNoZWNrQm94KHZhbHVlOiBzdHJpbmcgfCBib29sZWFuKSB7XHJcbiAgICAvLyBDb252ZXJ0IHN0cmluZyB0byBib29sZWFuXHJcbiAgICB0aGlzLm5nTW9kZWwgPSAhdGhpcy5uZ01vZGVsO1xyXG4gICAgdmFsdWUgPSAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpID8gdmFsdWUgOiAodmFsdWUgPT09ICd0cnVlJyA/IHRydWUgOiBmYWxzZSk7XHJcbiAgICB0aGlzLm5nTW9kZWxDaGFuZ2U/LmVtaXQodmFsdWUpO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvKiogQGRlc2NyaXB0aW9uIGNsZWFyIHRoZSB2YWx1ZSAqL1xyXG4gIENsZWFySW5wdXRWYWx1ZSgpIHtcclxuICAgIGlmICh0aGlzLnR5cGUgPT0gXCJ0ZXh0XCIpIHtcclxuICAgICAgdGhpcy51cERhdGVWYWx1ZSh7IHRhcmdldDogeyB2YWx1ZTogXCJcIiB9IH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEBkZXNjcmlwdGlvbiB3aGVuIEhUTUwgaXMgZm9jdWVzZCAqL1xyXG4gIGZvY3VzQ29udHJvbCgpIHtcclxuICAgIHRoaXMuaXNUb3VjaGVkID0gdHJ1ZTtcclxuICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgICB0aGlzLm9uVmFsaWRhdGUoKTtcclxuICB9XHJcblxyXG4gIC8qKiBAZGVzY3JpcHRpb24gSWYgY29udHJvbCB2YWx1ZSBuZWVkIHRvIGJlIHByb2Nlc3NlZCwgbGlrZSBVUFBFUkNBU0UgKi9cclxuICBwcm9jZXNzVmFsdWUodmFsdWU6IGlucHV0VHlwZSwgdHlwZTogY29udHJvbFR5cGUpIHtcclxuICAgIHZhbHVlID0gdGhpcy5hdXRvQ2FwaXRhbGl6ZUJ5T3B0aW9uKHZhbHVlLCB0eXBlKTtcclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcblxyXG4gIC8qKiBAZGVzY3JpcHRpb24gZm9yIGNhcGl0YWxpemF0aW9uICovXHJcbiAgYXV0b0NhcGl0YWxpemVCeU9wdGlvbih2YWx1ZTogaW5wdXRUeXBlLCB0eXBlOiBjb250cm9sVHlwZSkge1xyXG4gICAgaWYgKHR5cGUgPT0gJ3RleHQnKSB7XHJcbiAgICAgIGlmICh0aGlzLmF1dG9jYXBpdGFsaXplID09IFwib25cIikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNhcGl0YWxpemVQaXBlPy50cmFuc2Zvcm0odmFsdWUgYXMgc3RyaW5nLCAnYWxsVXBwZXJDYXNlJyk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuYXV0b2NhcGl0YWxpemUgPT0gXCJ3b3Jkc1wiKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FwaXRhbGl6ZVBpcGU/LnRyYW5zZm9ybSh2YWx1ZSBhcyBzdHJpbmcsICd0aXRsZUNhc2UnKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5hdXRvY2FwaXRhbGl6ZSA9PSBcInNlbnRlbmNlc1wiKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FwaXRhbGl6ZVBpcGU/LnRyYW5zZm9ybSh2YWx1ZSBhcyBzdHJpbmcsIFwic2VudGVuY2VDYXNlXCIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKiogQGRlc2NyaXB0aW9uIEl0IGlzIHVzZWQgdG8gcmV0dXJuIHRoZSB2YWx1ZSBpcyB2YWxpZCBvciBub3QgKi9cclxuICBpc1ZhbGlkVmFsdWVBbmRUeXBlKHZhbHVlOiBpbnB1dFR5cGUsIHR5cGU6IGNvbnRyb2xUeXBlKSB7XHJcbiAgICBpZiAodHlwZSA9PSAndGV4dCcpIHtcclxuICAgICAgaWYgKHR5cGVvZiAodmFsdWUpID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgaWYgKHZhbHVlPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBAZGVzY3JpcHRpb24gdG8gY2hlY2sgY29udHJvbCBpcyB2YWxpZCBvciBub3QgKi9cclxuICBpc0NvbnRyb2xWYWxpZCh2YWx1ZTogaW5wdXRUeXBlKTogVmFsaWRhdGlvblN0YXR1cyB7XHJcbiAgICBjb25zdCB2YWxpZGF0aW9uX3N0YXR1czogVmFsaWRhdGlvblN0YXR1cyA9IHtcclxuICAgICAgdmFsaWRhdGlvbjoge30sXHJcbiAgICAgIHN0YXR1czogZmFsc2VcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMucmVxdWlyZWQpIHtcclxuICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgIHZhbGlkYXRpb25fc3RhdHVzLnN0YXR1cyA9IHRydWU7XHJcbiAgICAgICAgdmFsaWRhdGlvbl9zdGF0dXMudmFsaWRhdGlvbi5yZXF1aXJlZCA9IGByZXF1aXJlZCFgO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMudHlwZSA9PSAndGV4dCcpIHtcclxuICAgICAgaWYgKHR5cGVvZiAodmFsdWUpID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubWF4bGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgaWYgKHZhbHVlPy5sZW5ndGggPiB0aGlzLm1heGxlbmd0aCkge1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uX3N0YXR1cy5zdGF0dXMgPSB0cnVlO1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uX3N0YXR1cy52YWxpZGF0aW9uLm1heGxlbmd0aCA9IGBtYXhpbXVtIGxlbmd0aCBpcyAke3RoaXMubWF4bGVuZ3RofSFgO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5taW5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBpZiAodmFsdWU/Lmxlbmd0aCA8IHRoaXMubWlubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRpb25fc3RhdHVzLnN0YXR1cyA9IHRydWU7XHJcbiAgICAgICAgICAgIHZhbGlkYXRpb25fc3RhdHVzLnZhbGlkYXRpb24ubWlubGVuZ3RoID0gYG1pbmltdW0gbGVuZ3RoIGlzICR7dGhpcy5taW5sZW5ndGh9IWA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZhbGlkYXRpb25fc3RhdHVzLnN0YXR1cyA9IHRydWU7XHJcbiAgICAgICAgdmFsaWRhdGlvbl9zdGF0dXMudmFsaWRhdGlvbi5yZXF1aXJlZCA9IGByZXF1aXJlZCFgO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzVmFsaWQgPSAhdmFsaWRhdGlvbl9zdGF0dXMuc3RhdHVzO1xyXG4gICAgdGhpcy5lcnJvclRleHQgPSBPYmplY3QudmFsdWVzKHZhbGlkYXRpb25fc3RhdHVzLnZhbGlkYXRpb24pLmF0KDApIHx8ICcnXHJcbiAgICByZXR1cm4gdmFsaWRhdGlvbl9zdGF0dXM7XHJcbiAgfVxyXG5cclxuICAvKiogQGRlc2NyaXB0aW9uIEFsbG93cyBBbmd1bGFyIHRvIGRpc2FibGUgdGhlIGlucHV0LiAqL1xyXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICAvKiogQGRlc2NyaXB0aW9uIE1ldGhvZCBmb3IgdHJhaWxpbmcgSWNvbiBDbGljayAqL1xyXG4gIHRyYWlsaW5nSWNvbkNsaWNrKCkge1xyXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ3Bhc3N3b3JkJykge1xyXG4gICAgICBpZiAodGhpcy50eXBlSW50ZXJuYWwgPT09ICdwYXNzd29yZCcpIHtcclxuICAgICAgICB0aGlzLnR5cGVJbnRlcm5hbCA9ICd0ZXh0JztcclxuICAgICAgICB0aGlzLnRyYWlsaW5nSWNvbkludGVybmFsID0gJ3Zpc2liaWxpdHknO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudHlwZUludGVybmFsID0gJ3Bhc3N3b3JkJztcclxuICAgICAgICB0aGlzLnRyYWlsaW5nSWNvbkludGVybmFsID0gJ3Zpc2liaWxpdHlfb2ZmJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0aG9kIHRvIGdlbmVyYXRlIFJhbmRvbSBTdHJpbmdcclxuICAgKiBAcGFyYW0gc2V0dXBQcmFyYW1ldGVyIHsgbGVuZ2h0OiBudW1iZXIsIHByZWZpeDogc3RyaW5nIH1cclxuICAgKiBkZWZhdWx0IGxlbmdodCBpcyAxMCwgcHJlZm94IGlzIFwiXCJcclxuICAgKiBAcmV0dXJucyBzdHJpbmdcclxuICAgKi9cclxuICByYW5kb21TdHJpbmcoc2V0dXBQcmFyYW1ldGVyOiB7IGxlbmdodDogbnVtYmVyLCBwcmVmaXg6IHN0cmluZyB9ID0geyBsZW5naHQ6IDEwLCBwcmVmaXg6IFwiXCIgfSk6IHN0cmluZyB7XHJcbiAgICAvL3ZhcmlhYmxlIGNvbnNpc3RpbmcgYWxwaGFiZXRzIGluIHNtYWxsIGFuZCBjYXBpdGFsIGxldHRlciAgXHJcbiAgICBjb25zdCBjaGFyYWN0ZXJzID0gXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hUWmFiY2RlZmdoaWtsbW5vcHFyc3R1dnd4eXpcIjtcclxuICAgIC8vbG9vcCB0byBzZWxlY3QgYSBuZXcgY2hhcmFjdGVyIGluIGVhY2ggaXRlcmF0aW9uICBcclxuICAgIGxldCByYW5kb21fc3RyaW5nID0gc2V0dXBQcmFyYW1ldGVyPy5wcmVmaXggfHwgXCJcIjtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2V0dXBQcmFyYW1ldGVyPy5sZW5naHQ7IGkrKykge1xyXG4gICAgICBjb25zdCBybnVtID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhcmFjdGVycy5sZW5ndGgpO1xyXG4gICAgICByYW5kb21fc3RyaW5nICs9IGNoYXJhY3RlcnMuc3Vic3RyaW5nKHJudW0sIHJudW0gKyAxKTtcclxuICAgIH1cclxuICAgIC8vcmV0dXJuIHRoZSBnZW5lcmF0ZWQgc3RyaW5nICBcclxuICAgIHJldHVybiByYW5kb21fc3RyaW5nO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0Q29udHJvbERhdGEoKSB7XHJcbiAgICBjb25zdCBjaWRlX2VsZW1lbnRfZGF0YSA9IGF3YWl0IHRoaXMuZWxlbWVudFNlcnZpY2U/LmdldEVsZW1lbnREYXRhKHsgc3lwZV9rZXk6IHRoaXMuaWQgfSk7XHJcbiAgICBpZiAoY2lkZV9lbGVtZW50X2RhdGEpIHtcclxuICAgICAgdGhpcy5sYWJlbCA9IGNpZGVfZWxlbWVudF9kYXRhPy5zeXBlX2xhYmVsIGFzIHN0cmluZztcclxuICAgICAgdGhpcy5sYWJlbFBsYWNlbWVudCA9IChjaWRlX2VsZW1lbnRfZGF0YT8uc3lwZV9sYWJlbF9wbGFjZW1lbnQgfHwgJ2Zsb2F0aW5nJykgYXMgbGFiZWxQbGFjZW1lbnRUeXBlO1xyXG4gICAgICB0aGlzLnR5cGUgPSAoY2lkZV9lbGVtZW50X2RhdGE/LnN5cGVfdHlwZSB8fCAndGV4dCcpIGFzIGNvbnRyb2xUeXBlO1xyXG4gICAgICB0aGlzLnJlcXVpcmVkID0gKGNpZGVfZWxlbWVudF9kYXRhPy5zeXBlX3JlcXVpcmVkIHx8IGZhbHNlKSBhcyBib29sZWFuO1xyXG4gICAgICB0aGlzLnNpemUgPSAoY2lkZV9lbGVtZW50X2RhdGE/LnN5cGVfc2l6ZSB8fCAnbWQnKSBhcyB0aGVtZVNpemU7XHJcbiAgICAgIHRoaXMuaGVscGVyVGV4dENvbGxhcHNlID0gKGNpZGVfZWxlbWVudF9kYXRhPy5zeXBlX2hlbHBlcl90ZXh0X2NvbGxhcHNlIHx8IGZhbHNlKSBhcyBib29sZWFuO1xyXG4gICAgICB0aGlzLm1heGxlbmd0aCA9IChjaWRlX2VsZW1lbnRfZGF0YT8uc3lwZV9tYXhfbGVuZ3RoKSBhcyBudW1iZXI7XHJcbiAgICAgIHRoaXMubWlubGVuZ3RoID0gKGNpZGVfZWxlbWVudF9kYXRhPy5zeXBlX21pbl9sZW5ndGgpIGFzIG51bWJlcjtcclxuICAgICAgdGhpcy5sZWFkaW5nSWNvbiA9IChjaWRlX2VsZW1lbnRfZGF0YT8uc3lwZV9sZWFkaW5nX2ljb24pIGFzIHN0cmluZztcclxuICAgICAgdGhpcy5sYWJlbEhpZGUgPSAoY2lkZV9lbGVtZW50X2RhdGE/LnN5cGVfbGFiZWxfaGlkZSkgYXMgYm9vbGVhbjtcclxuICAgICAgdGhpcy5oaWRlSGVscGVyQW5kRXJyb3JUZXh0ID0gKGNpZGVfZWxlbWVudF9kYXRhPy5zeXBlX2hpZGVfaGVscGVyX2FuZF9lcnJvcl90ZXh0KSBhcyBib29sZWFuO1xyXG4gICAgICB0aGlzLmRldGVjdFR5cGVDaGFuZ2UoKTtcclxuICAgICAgLy8gVmFsaWRhdGUgY29udHJvbFxyXG4gICAgICB0aGlzLm9uVmFsaWRhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiB1c2UgdG8gZGV0YWN0IHRoZSBjaGFuZ2UgaW4gdHlwZSBpZiBjaGFuZ2VzIGRvbmUgdGhpcyBtZXRob2QgaXMgdWVkIHRvIHJ1blxyXG4gICAqL1xyXG4gIGRldGVjdFR5cGVDaGFuZ2UoKSB7XHJcbiAgICBpZiAodGhpcy50eXBlID09PSAncGFzc3dvcmQnKSB7XHJcbiAgICAgIHRoaXMudHlwZUludGVybmFsID0gXCJwYXNzd29yZFwiO1xyXG4gICAgICB0aGlzLnRyYWlsaW5nSWNvbkludGVybmFsID0gXCJ2aXNpYmlsaXR5X29mZlwiO1xyXG4gICAgICB0aGlzLmlzVHJhaWxpbmdJY29uQWxsd2VkQ2xpY2sgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50eXBlSW50ZXJuYWwgPSBcInRleHRcIjtcclxuICAgICAgdGhpcy50cmFpbGluZ0ljb25JbnRlcm5hbCA9IHRoaXMudHJhaWxpbmdJY29uO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2lkZS1pbnB1dFwiPlxyXG4gICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1URVhUIHwgUEFTU1dPUkQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwidHlwZSA9PT0gJ3RleHQnIHx8IHR5cGUgPT09ICdwYXNzd29yZCdcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidHctdy1mdWxsIHR3LXJlbGF0aXZlXCIgW25nU3R5bGVdPVwieyB3aWR0aDogd2lkdGggfVwiIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICdjaWRlLWVsZW1lbnQtc2l6ZS14eHMnOiAoc2l6ZSA9PT0gJzJ4cycpLFxyXG4gICAgICAgICAgICAgICAgJ2NpZGUtZWxlbWVudC1zaXplLXhzJzogKHNpemUgPT09ICd4cycpLFxyXG4gICAgICAgICAgICAgICAgJ2NpZGUtZWxlbWVudC1zaXplLXNtJzogKHNpemUgPT09ICdzbScpLFxyXG4gICAgICAgICAgICAgICAgJ2NpZGUtZWxlbWVudC1zaXplLW1kJzogKHNpemUgPT09ICdtZCcpLFxyXG4gICAgICAgICAgICAgICAgJ2NpZGUtZWxlbWVudC1zaXplLWxnJzogKHNpemUgPT09ICdsZycpLFxyXG4gICAgICAgICAgICAgICAgJ2NpZGUtZWxlbWVudC1sZWFkaW5nLWljb24nOiBsZWFkaW5nSWNvbixcclxuICAgICAgICAgICAgICAgICdjaWRlLWVsZW1lbnQtdHJhaWxpbmctaWNvbic6IHRyYWlsaW5nSWNvbkludGVybmFsLFxyXG4gICAgICAgICAgICAgICAgJ2NpZGUtZWxlbWVudC1jbGVhci1pbnB1dCc6IGNsZWFySW5wdXQsXHJcbiAgICAgICAgICAgICAgICAnY2lkZS1lbGVtZW50LWlucHV0LWxhYmVsLWZsb2F0aW5nJzogKGxhYmVsUGxhY2VtZW50ID09PSAnZmxvYXRpbmcnKSxcclxuICAgICAgICAgICAgICAgICdjaWRlLWVsZW1lbnQtaW5wdXQtbGFiZWwtc3RhcnQnOiAobGFiZWxEaXIgPT09ICdzdGFydCcpLFxyXG4gICAgICAgICAgICAgICAgJ2NpZGUtZWxlbWVudC1pbnB1dC1sYWJlbC1lbmQnOiAobGFiZWxEaXIgPT09ICdlbmQnKSxcclxuICAgICAgICAgICAgICAgICdjaWRlLWVsZW1lbnQtaW5wdXQtbGFiZWwtZml4ZWQnOiAobGFiZWxQbGFjZW1lbnQgPT09ICdmaXhlZCcpLFxyXG4gICAgICAgICAgICAgICAgJ2NpZGUtZWxlbWVudC1pbnB1dC1sYWJlbC1sZXNzJzogKCFsYWJlbCB8fCBsYWJlbEhpZGUpLFxyXG4gICAgICAgICAgICAgICAgJ2NpZGUtZWxlbWVudC1zdHlsZS1vdXRsaW5lJzogKGZpbGwgPT09ICdvdXRsaW5lJyksXHJcbiAgICAgICAgICAgICAgICAnY2lkZS1lbGVtZW50LXN0eWxlLXNvbGlkJzogKGZpbGwgPT09ICdzb2xpZCcpLFxyXG4gICAgICAgICAgICAgICAgJ2NpZGUtZWxlbWVudC1zdHlsZS1zdGFuZGFyZCc6IChmaWxsID09PSAnc3RhbmRhcmQnKSxcclxuICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICA8IS0tIGxhYmVsIC0tPlxyXG4gICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJpZFwiIGNsYXNzPVwiY2lkZS1pbnB1dC1sYWJlbFwiICpuZ0lmPVwibGFiZWwgJiYgIWxhYmVsSGlkZVwiPnt7bGFiZWx9fTwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICA8IS0tIGFsbCBvbmUgbGluZSBlbGVtZXRzIHdoaWNoIGRvc2Ugbm90IGFmZmVjdCB3aXRoIGxhYmVsIGFuZCBlcnJvciB0ZXh0IC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2lkZS1lbGVtZW50LWlucHV0LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gTGVhZGluZyBJY29uIC0tPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaWRlLWlucHV0LWxlYWRpbmctaWNvbi13cmFwcGVyXCIgKm5nSWY9XCJsZWFkaW5nSWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2lkZS1pbnB1dC1sZWFkaW5nLWljb24gbWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCB0dy10ZXh0LWNlbnRlclwiPnt7bGVhZGluZ0ljb259fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRyYWxpbmcgaWNvbiAtLT5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidHctYWJzb2x1dGUgY2lkZS1pbnB1dC10cmFpbGluZy1pY29uIC10dy1ib3R0b20tMSB0dy1zZWxlY3Qtbm9uZSB0dy1yaWdodC0wXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInRyYWlsaW5nSWNvbkludGVybmFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIHR3LXctOCB0dy10ZXh0LWNlbnRlciAhdHctdGV4dC0yeGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3R3LWN1cnNvci1wb2ludGVyJzogaXNUcmFpbGluZ0ljb25BbGx3ZWRDbGlja31cIiBbYXR0ci50YWJpbmRleF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0cmFpbGluZ0ljb25DbGljaygpXCIgKGtleXVwKT1cInRyYWlsaW5nSWNvbkNsaWNrKClcIj57e3RyYWlsaW5nSWNvbkludGVybmFsfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBDbGVhciAtLT5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaWRlLWlucHV0LWNsZWFyXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNsZWFySW5wdXQgJiYgbmdNb2RlbFwiIChjbGljayk9XCJDbGVhcklucHV0VmFsdWUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2lkZS1pbnB1dC1jbGVhci1pY29uIG1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj5jbG9zZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gSW5wdXQgLS0+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgW2lkXT1cImlkXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJbKChsYWJlbCAmJiBsYWJlbFBsYWNlbWVudCA9PT0gJ2ZpeGVkJykgPyAndHctcm91bmRlZC1lLW1kIHR3LXJvdW5kZWQtZXMtbWQnIDogJ3R3LXJvdW5kZWQtbWQgJyksICghbGVhZGluZ0ljb24gPyAndHctcGwtMScgOiAnJyksICh0cmFpbGluZ0ljb25JbnRlcm5hbCA/ICd0dy1wci04JzogJycpLCAoIXRyYWlsaW5nSWNvbkludGVybmFsID8gJ3R3LXByLTEnIDogJycpLCAoKHNpemUgPT09ICdtZCcpID8gJ3R3LWgtOCB0dy1wdC0wLjUgdHctcGItMCcgOiAoc2l6ZSA9PT0gJ3NtJyA/ICd0dy1oLTcnIDogJycpKSwgKGxhYmVsSGlkZSA/ICchdHctbXQtMCcgOiAnJyldXCJcclxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm5nTW9kZWxcIiBbdHlwZV09XCJ0eXBlSW50ZXJuYWxcIiAoaW5wdXQpPVwidXBEYXRlVmFsdWUoJGV2ZW50KVwiIChmb2N1cyk9XCJmb2N1c0NvbnRyb2woKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHctbS0wIHR3LXctZnVsbCB0dy1iZy10cmFuc3BhcmVudCB0dy1vdmVyZmxvdy1oaWRkZW4gdHctYm9yZGVyLXNvbGlkIHR3LXAtMCBjaWRlLWlucHV0LWlucHV0IHR3LW91dGxpbmUtbm9uZVwiIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIGVycm9yIHRleHQgLyBoZWxwZXIgdGV4dCAtLT5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIoZXJyb3JUZXh0IHx8IGhlbHBlclRleHQgfHwgIWhlbHBlclRleHRDb2xsYXBzZSkgJiYgIWhpZGVIZWxwZXJBbmRFcnJvclRleHRcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaWRlLWlucHV0LWhlbHAtZXJyb3ItdGV4dFwiPnt7XHJcbiAgICAgICAgICAgICAgICBpc1ZhbGlkXHJcbiAgICAgICAgICAgICAgICA/IGhlbHBlclRleHQgOiAoZXJyb3JUZXh0ID9cclxuICAgICAgICAgICAgICAgIChpc1RvdWNoZWQgPyBlcnJvclRleHQgOiBoZWxwZXJUZXh0KVxyXG4gICAgICAgICAgICAgICAgOiBoZWxwZXJUZXh0KX19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBJbnB1dCB3aXRoIHRyYWxsaW5nIGljb24gLS0+XHJcbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0dy1pbmxpbmUtYmxvY2sgdHctaC0xMiB0dy13LTY0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInR3LXctZnVsbGgtZnVsbCB0dy1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidHctYWJzb2x1dGUgLXR3LXRvcC0xLzMgdHctbXgtMiB0dy1iZy13aGl0ZSB0dy1weC0wLjUgdHctcHktMCB0dy10ZXh0LXNtIHR3LWxlYWRpbmctNCB0dy10ZXh0LWdyYXktNzAwXCI+TmFtZTwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidHctYWJzb2x1dGUgLXR3LWJvdHRvbS1weCB0dy1yaWdodC0wIC10dy16LTEwIHR3LXRleHQtZ3JheS00MDBcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCB0dy13LTggdHctdGV4dC1jZW50ZXIgIXR3LXRleHQtMnhsXCI+IHBlcnNvbiA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInR3LW0tMCB0dy1oLTggdHctdy1mdWxsIHR3LW92ZXJmbG93LWhpZGRlbiB0dy1yb3VuZGVkLW1kIHR3LWJvcmRlci0yIHR3LWJvcmRlci1zb2xpZCB0dy1ib3JkZXItZ3JheS0zMDAgdHctYmctdHJhbnNwYXJlbnQgdHctcC0wIHR3LXBiLTAuNSB0dy1wbC0xIHR3LXByLTggdHctdGV4dC1zbSB0dy10ZXh0LWdyYXktNjAwIHR3LW91dGxpbmUtbm9uZSBob3Zlcjp0dy1ib3JkZXItYmx1ZS00MDAgZm9jdXM6dHctYm9yZGVyLWJsdWUtNDAwIGZvY3VzOnR3LXRleHQtZ3JheS05NTBcIlxyXG4gICAgICAgICAgICAgICAgdmFsdWU9XCJBbmt1c2ggQmh1cmVcIiAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+IC0tPlxyXG5cclxuICAgIDwhLS0gSW5wdXQgd2l0aCBsZWFkaW5nIGljb24gLS0+XHJcbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0dy1pbmxpbmUtYmxvY2sgdHctaC0xMiB0dy13LTY0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInR3LXctZnVsbGgtZnVsbCB0dy1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidHctYWJzb2x1dGUgLXR3LXRvcC0xLzMgdHctbXgtMiB0dy1iZy13aGl0ZSB0dy1weC0wLjUgdHctcHktMCB0dy10ZXh0LXNtIHR3LWxlYWRpbmctNCB0dy10ZXh0LWdyYXktNzAwXCI+TmFtZTwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidHctYWJzb2x1dGUgLXR3LWJvdHRvbS1weCB0dy1sZWZ0LTAgLXR3LXotMTAgdHctdGV4dC1ncmF5LTQwMFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIHR3LXctOCB0dy10ZXh0LWNlbnRlciAhdHctdGV4dC0yeGxcIj4gcGVyc29uIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidHctbS0wIHR3LWgtOCB0dy13LWZ1bGwgdHctb3ZlcmZsb3ctaGlkZGVuIHR3LXJvdW5kZWQtbWQgdHctYm9yZGVyLTIgdHctYm9yZGVyLXNvbGlkIHR3LWJvcmRlci1ncmF5LTMwMCB0dy1iZy10cmFuc3BhcmVudCB0dy1wLTAgdHctcGItMC41IHR3LXBsLTggdHctcHItMSB0dy10ZXh0LXNtIHR3LXRleHQtZ3JheS02MDAgdHctb3V0bGluZS1ub25lIGhvdmVyOnR3LWJvcmRlci1ibHVlLTQwMCBmb2N1czp0dy1ib3JkZXItYmx1ZS00MDAgZm9jdXM6dHctdGV4dC1ncmF5LTk1MFwiXHJcbiAgICAgICAgICAgICAgICB2YWx1ZT1cIkFua3VzaCBCaHVyZVwiIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1DSEVDS0JPWC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cclxuICAgIDxkaXYgKm5nSWY9XCJ0eXBlID09PSAnY2hlY2tib3gnXCIgY2xhc3M9XCJ0dy1mbGV4XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNpZGUtY2hlY2tib3ggdHctcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgPGlucHV0IFtjaGVja2VkXT1cIm5nTW9kZWxcIiBbdmFsdWVdPVwibmdNb2RlbFwiIFtpZF09XCJpZFJhbmRvbVwiIFt0eXBlXT1cInR5cGVcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0dy1hYnNvbHV0ZSB0dy1sZWZ0LTAgdHctaW52aXNpYmxlXCIgKGNsaWNrKT1cInVwZGF0ZVZhbHVlQ2hlY2tCb3goIW5nTW9kZWwpOyBmb2N1c0NvbnRyb2woKVwiXHJcbiAgICAgICAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZVwiIC8+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNpZGUtY2hlY2tib3gtbGFiZWwgdHctY3Vyc29yLXBvaW50ZXJcIiBbZm9yXT1cImlkUmFuZG9tXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInR3LWJvcmRlci0yIHR3LWJvcmRlci1zb2xpZCB0dy1yZWxhdGl2ZSB0dy1yb3VuZGVkLW1kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEycHhcIiBoZWlnaHQ9XCIxMHB4XCIgY2xhc3M9XCJ0dy1hYnNvbHV0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9XCIjc2Rmd2lvcmZrbGFzZmpqYWxmandlcndyXCI+PC91c2U+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInR3LXRleHQtc20gdHctcGwtMiB0dy1sZWFkaW5nLVsxOHB4XSB0dy1zZWxlY3Qtbm9uZSB0dy1jdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhbGFiZWxIaWRlXCI+e3tsYWJlbH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICA8c3ZnIGNsYXNzPVwidHctYWJzb2x1dGUgdHctaC0wIHR3LXctMCB0dy1zZWxlY3Qtbm9uZSB0dy1wb2ludGVyLWV2ZW50cy1ub25lXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIEVsZW1lbnQgaGlkZGVuIGFuZCBpdHMgeHBhdGggaXMgdXNlZCB0byBkaXNwbGF5IGluc2lkZSBTVkcgLS0+XHJcbiAgICAgICAgICAgICAgICA8c3ltYm9sIGlkPVwic2Rmd2lvcmZrbGFzZmpqYWxmandlcndyXCIgdmlld2JveD1cIjAgMCAxMiAxMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9XCIxLjUgNiA0LjUgOSAxMC41IDFcIj48L3BvbHlsaW5lPlxyXG4gICAgICAgICAgICAgICAgPC9zeW1ib2w+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tU0VMRUNULS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cclxuICAgIDxkaXYgKm5nSWY9XCJ0eXBlID09PSAnc2VsZWN0J1wiPnNhc1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0dy1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHctYWJzb2x1dGVcIj5cclxuICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2Ygb3B0aW9uOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0dy13LWZ1bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e2l0ZW19fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|