ng-devui
Version:
DevUI components based on Angular
321 lines • 29.4 kB
JavaScript
const monthsOfYear = [
'Jan',
'Feb',
'Mar',
'Apr',
'May',
'Jun',
'Jul',
'Aug',
'Sep',
'Oct',
'Nov',
'Dec',
];
export default {
locale: 'en-us',
common: {
searchPlaceholder: 'Enter a keyword.',
noData: 'No data available.',
noRecordsFound: 'No records found.',
btnConfirm: 'Confirm',
loading: 'Loading...',
checkAll: 'All',
btnOk: 'OK',
btnCancel: 'Cancel',
btnClose: 'Close',
reset: 'Reset',
btnClickMe: 'click me!',
copied: 'Copied',
},
autoComplete: {
latestInput: 'Latest input',
},
datatable: {
tableSetting: 'Table Setting',
ensure: 'Ensure',
cancel: 'Cancel',
compact: 'Compact',
standard: 'Standard',
loose: 'Loose',
divideLine: 'Divide Line',
striped: 'Striped',
tableShadow: 'Table Shadow',
styles: 'Table Style',
colSelected: 'Selected',
colCanSelect: 'Selectable',
},
datePicker: {
today: 'Today',
clear: 'Clear',
daysOfWeek: ['Sun', 'Mon', 'Tues', 'Wed', 'Thur', 'Fri', 'Sat'],
monthsOfYear: [
'Jan',
'Feb',
'Mar',
'Apr',
'May',
'Jun',
'Jul',
'Aug',
'Sep',
'Oct',
'Nov',
'Dec',
],
startDate: 'Start Date',
endDate: 'End Date',
yearDisplay(year) {
return `${year}`;
},
},
datePickerPro: {
placeholder: 'select date',
startPlaceholder: 'select start date',
endPlaceholder: 'select end date',
daysOfWeek: ['Sun', 'Mon', 'Tues', 'Wed', 'Thur', 'Fri', 'Sat'],
monthsOfYear: [
'Jan',
'Feb',
'Mar',
'Apr',
'May',
'Jun',
'Jul',
'Aug',
'Sep',
'Oct',
'Nov',
'Dec',
],
getYearMonthStr(year, month) {
return `${monthsOfYear[month - 1]} ${year}`;
},
hour: 'Hr',
min: 'Min',
second: 'Sec',
yearDisplay(year) {
return `${year}`;
},
},
form: {
required(val) {
return 'The value cannot be empty.';
},
minlength(len) {
return `The length cannot be less than ${len}.`;
},
maxlength(len) {
return `The length cannot be greater than ${len}.`;
},
min(val) {
return `The value cannot be less than ${val}.`;
},
max(val) {
return `The value cannot be greater than ${val}.`;
},
requiredTrue(val) {
return 'The value needs to be true.';
},
email(val) {
return 'Email format verification failed.';
},
whitespace(val) {
return 'The value cannot only has whitespace.';
},
},
gantt: {
today: 'Today',
day: 'Day',
week: 'Week',
month: 'Month',
milestone: 'milestone',
monthsOfYear: [
'Jan',
'Feb',
'Mar',
'Apr',
'May',
'Jun',
'Jul',
'Aug',
'Sept',
'Oct',
'Nov',
'Dec',
],
yearDisplay(year) {
return `${year}`;
},
monthDisplay(strMonthIndex) {
return this.monthsOfYear[Number(strMonthIndex) - 1];
},
yearAndMonthDisplay(year, strMonthIndex) {
return this.monthDisplay(strMonthIndex) + ' ' + this.yearDisplay(year);
},
},
pagination: {
goTo: 'Go To',
pageSize: 'Page Size',
page: 'Page',
perPage: ' / Page',
totalItem(total) {
return `Total Records: ${total}`;
}
},
quadrant: {
xAxisLabel: 'Urgency',
yAxisLabel: 'Importance',
defaultTitleConf: [
{ title: 'Important and urgent' },
{ title: 'Important not urgent' },
{ title: 'Not important not urgent' },
{ title: 'Not important urgent' },
],
},
upload: {
warning: 'Warning',
upload: 'Upload',
chooseFile: '--select--',
chooseFiles: '--select--',
preload: 'Selected',
uploading: 'Uploading...',
uploaded: 'Upload successful',
uploadFailed: 'Upload failed',
uploadSuccess: 'Upload Successful',
delete: 'Delete',
reUpload: 'reupload',
cancelUpload: 'Upload cancel',
getNotAllowedFileTypeMsg(filename, scope) {
return `Files with unsupported types: ${filename}. Supported file types: ${scope}`;
},
getBeyondMaximalFileSizeMsg(filename, maximalSize) {
return `Maximum file size (MB): ${maximalSize}. Files whose size exceeds the maximum value: ${filename}`;
},
getBeyondMaximumFileCountMsg(maximalSize) {
return `Maximum file count: ${maximalSize}. Files exceeds the maximum value`;
},
getAllFilesBeyondMaximalFileSizeMsg(maximalSize) {
return `Maximum file size (MB): ${maximalSize}. The selected files exceed the maximum value`;
},
getExistSameNameFilesMsg(sameNames) {
return `Duplicate files exist : "${sameNames}"`;
},
getSelectedFilesCount(filesCount) {
return `${filesCount} files added`;
},
getUploadingFilesCount(uploadingCount, filesCount) {
return `${uploadingCount}/${filesCount} is uploading`;
},
getFailedFilesCount(failedCount) {
return `${failedCount} files upload failed`;
},
},
modal: {
warning: 'Warning',
error: 'Error',
fail: 'Fail',
info: 'Information',
success: 'Success',
},
imagePreview: {
rotate: 'Rotate',
zoomIn: 'Zoom In',
zoomOut: 'Zoom Out',
bestScale: 'Best Ratio',
originScale: 'Original Ratio',
pre: 'Previous',
next: 'Next',
origin: 'View the original image',
download: 'Download'
},
colorPicker: {
recentlyUsed: 'Recently Used',
basicColors: 'Basic Colors',
moreColors: 'More Colors',
},
stepsGuide: {
previous: 'Previous',
next: 'Continue',
finish: 'OK',
},
splitter: {
collapse: 'Collapse',
expand: 'Expand',
},
relativeTime: {
yearsAgo(num) {
return num === 1 ? 'last year' : `${num} years ago`;
},
monthsAgo(num) {
return num === 1 ? 'last month' : `${num} months ago`;
},
weeksAgo(num) {
return num === 1 ? 'last week' : `${num} weeks ago`;
},
daysAgo(num) {
return num === 1 ? 'yesterday' : `${num} days ago`;
},
daysLater(num) {
return num === 1 ? 'tomorrow' : `${num} days later`;
},
weeksLater(num) {
return num === 1 ? 'next week' : `${num} weeks later`;
},
monthsLater(num) {
return num === 1 ? 'next month' : `${num} months later`;
},
yearsLater(num) {
return num === 1 ? 'next year' : `${num} years later`;
},
hoursAgo(num) {
return num === 1 ? `1 hour ago` : `${num} hours ago`;
},
minutesAgo(num) {
return num === 1 ? `1 minute ago` : `${num} minutes ago`;
},
minutesLater(num) {
return num === 1 ? `1 minute later` : `${num} minutes later`;
},
hoursLater(num) {
return num === 1 ? `1 hours later` : `${num} hours later`;
},
justnow: 'just now',
later: 'later',
},
tagsInput: {
tagsReachMaxLength: 'The length of tags has reached maxTags',
tagsReachMaxNumber: 'Maximum number reached: ',
create: 'Create'
},
categorySearch: {
confirm: 'Confirm',
cancel: 'Cancel',
selectFilterCondition: 'Please select a filter condition:',
getFindingMessage(msg) {
return `find in '${msg}'`;
},
getSearchMessage(msg) {
return `only search '${msg}'`;
},
saveFilter: 'Save Filter',
filterTitle: 'Filter Title',
placeholder: 'Please enter...',
searchPlaceholder: 'Click here to choose a filter condition',
noFilterConditions: 'No filter conditions',
clearFilterCondition: 'Clear Filter Condition',
seeMore: 'See more',
selected: 'Selected',
switchToStart: 'Switch To Start',
switchToEnd: 'Switch To End',
keyword: 'Keyword',
},
userGuide: {
guide: 'Guide',
prev: 'Prev',
next: 'Next',
finish: 'Finish',
autoFill: 'Click here to auto-populate'
}
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW4tdXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9kZXZ1aS9pMThuL2VuLXVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sWUFBWSxHQUFHO0lBQ25CLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztDQUNOLENBQUM7QUFDRixlQUFlO0lBQ2IsTUFBTSxFQUFFLE9BQU87SUFDZixNQUFNLEVBQUU7UUFDTixpQkFBaUIsRUFBRSxrQkFBa0I7UUFDckMsTUFBTSxFQUFFLG9CQUFvQjtRQUM1QixjQUFjLEVBQUUsbUJBQW1CO1FBQ25DLFVBQVUsRUFBRSxTQUFTO1FBQ3JCLE9BQU8sRUFBRSxZQUFZO1FBQ3JCLFFBQVEsRUFBRSxLQUFLO1FBQ2YsS0FBSyxFQUFFLElBQUk7UUFDWCxTQUFTLEVBQUUsUUFBUTtRQUNuQixRQUFRLEVBQUUsT0FBTztRQUNqQixLQUFLLEVBQUUsT0FBTztRQUNkLFVBQVUsRUFBRSxXQUFXO1FBQ3ZCLE1BQU0sRUFBRSxRQUFRO0tBQ2pCO0lBQ0QsWUFBWSxFQUFFO1FBQ1osV0FBVyxFQUFFLGNBQWM7S0FDNUI7SUFDRCxTQUFTLEVBQUU7UUFDVCxZQUFZLEVBQUUsZUFBZTtRQUM3QixNQUFNLEVBQUUsUUFBUTtRQUNoQixNQUFNLEVBQUUsUUFBUTtRQUNoQixPQUFPLEVBQUUsU0FBUztRQUNsQixRQUFRLEVBQUUsVUFBVTtRQUNwQixLQUFLLEVBQUUsT0FBTztRQUNkLFVBQVUsRUFBRSxhQUFhO1FBQ3pCLE9BQU8sRUFBRSxTQUFTO1FBQ2xCLFdBQVcsRUFBRSxjQUFjO1FBQzNCLE1BQU0sRUFBRSxhQUFhO1FBQ3JCLFdBQVcsRUFBRSxVQUFVO1FBQ3ZCLFlBQVksRUFBRSxZQUFZO0tBQzNCO0lBQ0QsVUFBVSxFQUFFO1FBQ1YsS0FBSyxFQUFFLE9BQU87UUFDZCxLQUFLLEVBQUUsT0FBTztRQUNkLFVBQVUsRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQztRQUMvRCxZQUFZLEVBQUU7WUFDWixLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7U0FDTjtRQUNELFNBQVMsRUFBRSxZQUFZO1FBQ3ZCLE9BQU8sRUFBRSxVQUFVO1FBQ25CLFdBQVcsQ0FBQyxJQUFJO1lBQ2QsT0FBTyxHQUFHLElBQUksRUFBRSxDQUFDO1FBQ25CLENBQUM7S0FDRjtJQUNELGFBQWEsRUFBRTtRQUNiLFdBQVcsRUFBRSxhQUFhO1FBQzFCLGdCQUFnQixFQUFFLG1CQUFtQjtRQUNyQyxjQUFjLEVBQUUsaUJBQWlCO1FBQ2pDLFVBQVUsRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQztRQUMvRCxZQUFZLEVBQUU7WUFDWixLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7U0FDTjtRQUNELGVBQWUsQ0FBQyxJQUFJLEVBQUUsS0FBSztZQUN6QixPQUFPLEdBQUcsWUFBWSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsSUFBSSxFQUFFLElBQUk7UUFDVixHQUFHLEVBQUUsS0FBSztRQUNWLE1BQU0sRUFBRSxLQUFLO1FBQ2IsV0FBVyxDQUFDLElBQUk7WUFDZCxPQUFPLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFDbkIsQ0FBQztLQUNGO0lBQ0QsSUFBSSxFQUFFO1FBQ0osUUFBUSxDQUFDLEdBQUc7WUFDVixPQUFPLDRCQUE0QixDQUFDO1FBQ3RDLENBQUM7UUFDRCxTQUFTLENBQUMsR0FBRztZQUNYLE9BQU8sa0NBQWtDLEdBQUcsR0FBRyxDQUFDO1FBQ2xELENBQUM7UUFDRCxTQUFTLENBQUMsR0FBRztZQUNYLE9BQU8scUNBQXFDLEdBQUcsR0FBRyxDQUFDO1FBQ3JELENBQUM7UUFDRCxHQUFHLENBQUMsR0FBRztZQUNMLE9BQU8saUNBQWlDLEdBQUcsR0FBRyxDQUFDO1FBQ2pELENBQUM7UUFDRCxHQUFHLENBQUMsR0FBRztZQUNMLE9BQU8sb0NBQW9DLEdBQUcsR0FBRyxDQUFDO1FBQ3BELENBQUM7UUFDRCxZQUFZLENBQUMsR0FBRztZQUNkLE9BQU8sNkJBQTZCLENBQUM7UUFDdkMsQ0FBQztRQUNELEtBQUssQ0FBQyxHQUFHO1lBQ1AsT0FBTyxtQ0FBbUMsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsVUFBVSxDQUFDLEdBQUc7WUFDWixPQUFPLHVDQUF1QyxDQUFDO1FBQ2pELENBQUM7S0FDRjtJQUNELEtBQUssRUFBRTtRQUNMLEtBQUssRUFBRSxPQUFPO1FBQ2QsR0FBRyxFQUFFLEtBQUs7UUFDVixJQUFJLEVBQUUsTUFBTTtRQUNaLEtBQUssRUFBRSxPQUFPO1FBQ2QsU0FBUyxFQUFFLFdBQVc7UUFDdEIsWUFBWSxFQUFFO1lBQ1osS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxNQUFNO1lBQ04sS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1NBQ047UUFDRCxXQUFXLENBQUMsSUFBSTtZQUNkLE9BQU8sR0FBRyxJQUFJLEVBQUUsQ0FBQztRQUNuQixDQUFDO1FBQ0QsWUFBWSxDQUFDLGFBQXFCO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUNELG1CQUFtQixDQUFDLElBQVksRUFBRSxhQUFxQjtZQUNyRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekUsQ0FBQztLQUNGO0lBQ0QsVUFBVSxFQUFFO1FBQ1YsSUFBSSxFQUFFLE9BQU87UUFDYixRQUFRLEVBQUUsV0FBVztRQUNyQixJQUFJLEVBQUUsTUFBTTtRQUNaLE9BQU8sRUFBRSxTQUFTO1FBQ2xCLFNBQVMsQ0FBQyxLQUFLO1lBQ2IsT0FBTyxrQkFBa0IsS0FBSyxFQUFFLENBQUM7UUFDbkMsQ0FBQztLQUNGO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsVUFBVSxFQUFFLFNBQVM7UUFDckIsVUFBVSxFQUFFLFlBQVk7UUFDeEIsZ0JBQWdCLEVBQUU7WUFDaEIsRUFBRSxLQUFLLEVBQUUsc0JBQXNCLEVBQUU7WUFDakMsRUFBRSxLQUFLLEVBQUUsc0JBQXNCLEVBQUU7WUFDakMsRUFBRSxLQUFLLEVBQUUsMEJBQTBCLEVBQUU7WUFDckMsRUFBRSxLQUFLLEVBQUUsc0JBQXNCLEVBQUU7U0FDbEM7S0FDRjtJQUNELE1BQU0sRUFBRTtRQUNOLE9BQU8sRUFBRSxTQUFTO1FBQ2xCLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLFVBQVUsRUFBRSxZQUFZO1FBQ3hCLFdBQVcsRUFBRSxZQUFZO1FBQ3pCLE9BQU8sRUFBRSxVQUFVO1FBQ25CLFNBQVMsRUFBRSxjQUFjO1FBQ3pCLFFBQVEsRUFBRSxtQkFBbUI7UUFDN0IsWUFBWSxFQUFFLGVBQWU7UUFDN0IsYUFBYSxFQUFFLG1CQUFtQjtRQUNsQyxNQUFNLEVBQUUsUUFBUTtRQUNoQixRQUFRLEVBQUUsVUFBVTtRQUNwQixZQUFZLEVBQUUsZUFBZTtRQUM3Qix3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsS0FBSztZQUN0QyxPQUFPLGlDQUFpQyxRQUFRLDJCQUEyQixLQUFLLEVBQUUsQ0FBQztRQUNyRixDQUFDO1FBQ0QsMkJBQTJCLENBQUMsUUFBUSxFQUFFLFdBQVc7WUFDL0MsT0FBTywyQkFBMkIsV0FBVyxpREFBaUQsUUFBUSxFQUFFLENBQUM7UUFDM0csQ0FBQztRQUNELDRCQUE0QixDQUFDLFdBQVc7WUFDdEMsT0FBTyx1QkFBdUIsV0FBVyxtQ0FBbUMsQ0FBQztRQUMvRSxDQUFDO1FBQ0QsbUNBQW1DLENBQUMsV0FBVztZQUM3QyxPQUFPLDJCQUEyQixXQUFXLCtDQUErQyxDQUFDO1FBQy9GLENBQUM7UUFDRCx3QkFBd0IsQ0FBQyxTQUFTO1lBQ2hDLE9BQU8sNEJBQTRCLFNBQVMsR0FBRyxDQUFDO1FBQ2xELENBQUM7UUFDRCxxQkFBcUIsQ0FBQyxVQUFVO1lBQzlCLE9BQU8sR0FBRyxVQUFVLGNBQWMsQ0FBQztRQUNyQyxDQUFDO1FBQ0Qsc0JBQXNCLENBQUMsY0FBYyxFQUFFLFVBQVU7WUFDL0MsT0FBTyxHQUFHLGNBQWMsSUFBSSxVQUFVLGVBQWUsQ0FBQztRQUN4RCxDQUFDO1FBQ0QsbUJBQW1CLENBQUMsV0FBVztZQUM3QixPQUFPLEdBQUcsV0FBVyxzQkFBc0IsQ0FBQztRQUM5QyxDQUFDO0tBQ0Y7SUFDRCxLQUFLLEVBQUU7UUFDTCxPQUFPLEVBQUUsU0FBUztRQUNsQixLQUFLLEVBQUUsT0FBTztRQUNkLElBQUksRUFBRSxNQUFNO1FBQ1osSUFBSSxFQUFFLGFBQWE7UUFDbkIsT0FBTyxFQUFFLFNBQVM7S0FDbkI7SUFDRCxZQUFZLEVBQUU7UUFDWixNQUFNLEVBQUUsUUFBUTtRQUNoQixNQUFNLEVBQUUsU0FBUztRQUNqQixPQUFPLEVBQUUsVUFBVTtRQUNuQixTQUFTLEVBQUUsWUFBWTtRQUN2QixXQUFXLEVBQUUsZ0JBQWdCO1FBQzdCLEdBQUcsRUFBRSxVQUFVO1FBQ2YsSUFBSSxFQUFFLE1BQU07UUFDWixNQUFNLEVBQUUseUJBQXlCO1FBQ2pDLFFBQVEsRUFBRSxVQUFVO0tBQ3JCO0lBQ0QsV0FBVyxFQUFFO1FBQ1gsWUFBWSxFQUFFLGVBQWU7UUFDN0IsV0FBVyxFQUFFLGNBQWM7UUFDM0IsVUFBVSxFQUFFLGFBQWE7S0FDMUI7SUFDRCxVQUFVLEVBQUU7UUFDVixRQUFRLEVBQUUsVUFBVTtRQUNwQixJQUFJLEVBQUUsVUFBVTtRQUNoQixNQUFNLEVBQUUsSUFBSTtLQUNiO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsUUFBUSxFQUFFLFVBQVU7UUFDcEIsTUFBTSxFQUFFLFFBQVE7S0FDakI7SUFDRCxZQUFZLEVBQUU7UUFDWixRQUFRLENBQUMsR0FBVztZQUNsQixPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLFlBQVksQ0FBQztRQUN0RCxDQUFDO1FBQ0QsU0FBUyxDQUFDLEdBQVc7WUFDbkIsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxhQUFhLENBQUM7UUFDeEQsQ0FBQztRQUNELFFBQVEsQ0FBQyxHQUFXO1lBQ2xCLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsWUFBWSxDQUFDO1FBQ3RELENBQUM7UUFDRCxPQUFPLENBQUMsR0FBVztZQUNqQixPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQztRQUNyRCxDQUFDO1FBQ0QsU0FBUyxDQUFDLEdBQVc7WUFDbkIsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxhQUFhLENBQUM7UUFDdEQsQ0FBQztRQUNELFVBQVUsQ0FBQyxHQUFXO1lBQ3BCLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsY0FBYyxDQUFDO1FBQ3hELENBQUM7UUFDRCxXQUFXLENBQUMsR0FBVztZQUNyQixPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLGVBQWUsQ0FBQztRQUMxRCxDQUFDO1FBQ0QsVUFBVSxDQUFDLEdBQVc7WUFDcEIsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxjQUFjLENBQUM7UUFDeEQsQ0FBQztRQUNELFFBQVEsQ0FBQyxHQUFXO1lBQ2xCLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsWUFBWSxDQUFDO1FBQ3ZELENBQUM7UUFDRCxVQUFVLENBQUMsR0FBVztZQUNwQixPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLGNBQWMsQ0FBQztRQUMzRCxDQUFDO1FBQ0QsWUFBWSxDQUFDLEdBQVc7WUFDdEIsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLGdCQUFnQixDQUFDO1FBQy9ELENBQUM7UUFDRCxVQUFVLENBQUMsR0FBVztZQUNwQixPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLGNBQWMsQ0FBQztRQUM1RCxDQUFDO1FBQ0QsT0FBTyxFQUFFLFVBQVU7UUFDbkIsS0FBSyxFQUFFLE9BQU87S0FDZjtJQUNELFNBQVMsRUFBRTtRQUNULGtCQUFrQixFQUFFLHdDQUF3QztRQUM1RCxrQkFBa0IsRUFBRSwwQkFBMEI7UUFDOUMsTUFBTSxFQUFFLFFBQVE7S0FDakI7SUFDRCxjQUFjLEVBQUU7UUFDZCxPQUFPLEVBQUUsU0FBUztRQUNsQixNQUFNLEVBQUUsUUFBUTtRQUNoQixxQkFBcUIsRUFBRSxtQ0FBbUM7UUFDMUQsaUJBQWlCLENBQUMsR0FBRztZQUNuQixPQUFPLFlBQVksR0FBRyxHQUFHLENBQUM7UUFDNUIsQ0FBQztRQUNELGdCQUFnQixDQUFDLEdBQUc7WUFDbEIsT0FBTyxnQkFBZ0IsR0FBRyxHQUFHLENBQUM7UUFDaEMsQ0FBQztRQUNELFVBQVUsRUFBRSxhQUFhO1FBQ3pCLFdBQVcsRUFBRSxjQUFjO1FBQzNCLFdBQVcsRUFBRSxpQkFBaUI7UUFDOUIsaUJBQWlCLEVBQUUseUNBQXlDO1FBQzVELGtCQUFrQixFQUFFLHNCQUFzQjtRQUMxQyxvQkFBb0IsRUFBRSx3QkFBd0I7UUFDOUMsT0FBTyxFQUFFLFVBQVU7UUFDbkIsUUFBUSxFQUFFLFVBQVU7UUFDcEIsYUFBYSxFQUFFLGlCQUFpQjtRQUNoQyxXQUFXLEVBQUUsZUFBZTtRQUM1QixPQUFPLEVBQUUsU0FBUztLQUNuQjtJQUNELFNBQVMsRUFBRTtRQUNULEtBQUssRUFBRSxPQUFPO1FBQ2QsSUFBSSxFQUFFLE1BQU07UUFDWixJQUFJLEVBQUUsTUFBTTtRQUNaLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLFFBQVEsRUFBRSw2QkFBNkI7S0FDeEM7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgbW9udGhzT2ZZZWFyID0gW1xuICAnSmFuJyxcbiAgJ0ZlYicsXG4gICdNYXInLFxuICAnQXByJyxcbiAgJ01heScsXG4gICdKdW4nLFxuICAnSnVsJyxcbiAgJ0F1ZycsXG4gICdTZXAnLFxuICAnT2N0JyxcbiAgJ05vdicsXG4gICdEZWMnLFxuXTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgbG9jYWxlOiAnZW4tdXMnLFxuICBjb21tb246IHtcbiAgICBzZWFyY2hQbGFjZWhvbGRlcjogJ0VudGVyIGEga2V5d29yZC4nLFxuICAgIG5vRGF0YTogJ05vIGRhdGEgYXZhaWxhYmxlLicsXG4gICAgbm9SZWNvcmRzRm91bmQ6ICdObyByZWNvcmRzIGZvdW5kLicsXG4gICAgYnRuQ29uZmlybTogJ0NvbmZpcm0nLFxuICAgIGxvYWRpbmc6ICdMb2FkaW5nLi4uJyxcbiAgICBjaGVja0FsbDogJ0FsbCcsXG4gICAgYnRuT2s6ICdPSycsXG4gICAgYnRuQ2FuY2VsOiAnQ2FuY2VsJyxcbiAgICBidG5DbG9zZTogJ0Nsb3NlJyxcbiAgICByZXNldDogJ1Jlc2V0JyxcbiAgICBidG5DbGlja01lOiAnY2xpY2sgbWUhJyxcbiAgICBjb3BpZWQ6ICdDb3BpZWQnLFxuICB9LFxuICBhdXRvQ29tcGxldGU6IHtcbiAgICBsYXRlc3RJbnB1dDogJ0xhdGVzdCBpbnB1dCcsXG4gIH0sXG4gIGRhdGF0YWJsZToge1xuICAgIHRhYmxlU2V0dGluZzogJ1RhYmxlIFNldHRpbmcnLFxuICAgIGVuc3VyZTogJ0Vuc3VyZScsXG4gICAgY2FuY2VsOiAnQ2FuY2VsJyxcbiAgICBjb21wYWN0OiAnQ29tcGFjdCcsXG4gICAgc3RhbmRhcmQ6ICdTdGFuZGFyZCcsXG4gICAgbG9vc2U6ICdMb29zZScsXG4gICAgZGl2aWRlTGluZTogJ0RpdmlkZSBMaW5lJyxcbiAgICBzdHJpcGVkOiAnU3RyaXBlZCcsXG4gICAgdGFibGVTaGFkb3c6ICdUYWJsZSBTaGFkb3cnLFxuICAgIHN0eWxlczogJ1RhYmxlIFN0eWxlJyxcbiAgICBjb2xTZWxlY3RlZDogJ1NlbGVjdGVkJyxcbiAgICBjb2xDYW5TZWxlY3Q6ICdTZWxlY3RhYmxlJyxcbiAgfSxcbiAgZGF0ZVBpY2tlcjoge1xuICAgIHRvZGF5OiAnVG9kYXknLFxuICAgIGNsZWFyOiAnQ2xlYXInLFxuICAgIGRheXNPZldlZWs6IFsnU3VuJywgJ01vbicsICdUdWVzJywgJ1dlZCcsICdUaHVyJywgJ0ZyaScsICdTYXQnXSxcbiAgICBtb250aHNPZlllYXI6IFtcbiAgICAgICdKYW4nLFxuICAgICAgJ0ZlYicsXG4gICAgICAnTWFyJyxcbiAgICAgICdBcHInLFxuICAgICAgJ01heScsXG4gICAgICAnSnVuJyxcbiAgICAgICdKdWwnLFxuICAgICAgJ0F1ZycsXG4gICAgICAnU2VwJyxcbiAgICAgICdPY3QnLFxuICAgICAgJ05vdicsXG4gICAgICAnRGVjJyxcbiAgICBdLFxuICAgIHN0YXJ0RGF0ZTogJ1N0YXJ0IERhdGUnLFxuICAgIGVuZERhdGU6ICdFbmQgRGF0ZScsXG4gICAgeWVhckRpc3BsYXkoeWVhcikge1xuICAgICAgcmV0dXJuIGAke3llYXJ9YDtcbiAgICB9LFxuICB9LFxuICBkYXRlUGlja2VyUHJvOiB7XG4gICAgcGxhY2Vob2xkZXI6ICdzZWxlY3QgZGF0ZScsXG4gICAgc3RhcnRQbGFjZWhvbGRlcjogJ3NlbGVjdCBzdGFydCBkYXRlJyxcbiAgICBlbmRQbGFjZWhvbGRlcjogJ3NlbGVjdCBlbmQgZGF0ZScsXG4gICAgZGF5c09mV2VlazogWydTdW4nLCAnTW9uJywgJ1R1ZXMnLCAnV2VkJywgJ1RodXInLCAnRnJpJywgJ1NhdCddLFxuICAgIG1vbnRoc09mWWVhcjogW1xuICAgICAgJ0phbicsXG4gICAgICAnRmViJyxcbiAgICAgICdNYXInLFxuICAgICAgJ0FwcicsXG4gICAgICAnTWF5JyxcbiAgICAgICdKdW4nLFxuICAgICAgJ0p1bCcsXG4gICAgICAnQXVnJyxcbiAgICAgICdTZXAnLFxuICAgICAgJ09jdCcsXG4gICAgICAnTm92JyxcbiAgICAgICdEZWMnLFxuICAgIF0sXG4gICAgZ2V0WWVhck1vbnRoU3RyKHllYXIsIG1vbnRoKSB7XG4gICAgICByZXR1cm4gYCR7bW9udGhzT2ZZZWFyW21vbnRoIC0gMV19ICR7eWVhcn1gO1xuICAgIH0sXG4gICAgaG91cjogJ0hyJyxcbiAgICBtaW46ICdNaW4nLFxuICAgIHNlY29uZDogJ1NlYycsXG4gICAgeWVhckRpc3BsYXkoeWVhcikge1xuICAgICAgcmV0dXJuIGAke3llYXJ9YDtcbiAgICB9LFxuICB9LFxuICBmb3JtOiB7XG4gICAgcmVxdWlyZWQodmFsKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiAnVGhlIHZhbHVlIGNhbm5vdCBiZSBlbXB0eS4nO1xuICAgIH0sXG4gICAgbWlubGVuZ3RoKGxlbik6IHN0cmluZyB7XG4gICAgICByZXR1cm4gYFRoZSBsZW5ndGggY2Fubm90IGJlIGxlc3MgdGhhbiAke2xlbn0uYDtcbiAgICB9LFxuICAgIG1heGxlbmd0aChsZW4pOiBzdHJpbmcge1xuICAgICAgcmV0dXJuIGBUaGUgbGVuZ3RoIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gJHtsZW59LmA7XG4gICAgfSxcbiAgICBtaW4odmFsKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiBgVGhlIHZhbHVlIGNhbm5vdCBiZSBsZXNzIHRoYW4gJHt2YWx9LmA7XG4gICAgfSxcbiAgICBtYXgodmFsKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiBgVGhlIHZhbHVlIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gJHt2YWx9LmA7XG4gICAgfSxcbiAgICByZXF1aXJlZFRydWUodmFsKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiAnVGhlIHZhbHVlIG5lZWRzIHRvIGJlIHRydWUuJztcbiAgICB9LFxuICAgIGVtYWlsKHZhbCk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gJ0VtYWlsIGZvcm1hdCB2ZXJpZmljYXRpb24gZmFpbGVkLic7XG4gICAgfSxcbiAgICB3aGl0ZXNwYWNlKHZhbCk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gJ1RoZSB2YWx1ZSBjYW5ub3Qgb25seSBoYXMgd2hpdGVzcGFjZS4nO1xuICAgIH0sXG4gIH0sXG4gIGdhbnR0OiB7XG4gICAgdG9kYXk6ICdUb2RheScsXG4gICAgZGF5OiAnRGF5JyxcbiAgICB3ZWVrOiAnV2VlaycsXG4gICAgbW9udGg6ICdNb250aCcsXG4gICAgbWlsZXN0b25lOiAnbWlsZXN0b25lJyxcbiAgICBtb250aHNPZlllYXI6IFtcbiAgICAgICdKYW4nLFxuICAgICAgJ0ZlYicsXG4gICAgICAnTWFyJyxcbiAgICAgICdBcHInLFxuICAgICAgJ01heScsXG4gICAgICAnSnVuJyxcbiAgICAgICdKdWwnLFxuICAgICAgJ0F1ZycsXG4gICAgICAnU2VwdCcsXG4gICAgICAnT2N0JyxcbiAgICAgICdOb3YnLFxuICAgICAgJ0RlYycsXG4gICAgXSxcbiAgICB5ZWFyRGlzcGxheSh5ZWFyKSB7XG4gICAgICByZXR1cm4gYCR7eWVhcn1gO1xuICAgIH0sXG4gICAgbW9udGhEaXNwbGF5KHN0ck1vbnRoSW5kZXg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHRoaXMubW9udGhzT2ZZZWFyW051bWJlcihzdHJNb250aEluZGV4KSAtIDFdO1xuICAgIH0sXG4gICAgeWVhckFuZE1vbnRoRGlzcGxheSh5ZWFyOiBzdHJpbmcsIHN0ck1vbnRoSW5kZXg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHRoaXMubW9udGhEaXNwbGF5KHN0ck1vbnRoSW5kZXgpICsgJyAnICsgdGhpcy55ZWFyRGlzcGxheSh5ZWFyKTtcbiAgICB9LFxuICB9LFxuICBwYWdpbmF0aW9uOiB7XG4gICAgZ29UbzogJ0dvIFRvJyxcbiAgICBwYWdlU2l6ZTogJ1BhZ2UgU2l6ZScsXG4gICAgcGFnZTogJ1BhZ2UnLFxuICAgIHBlclBhZ2U6ICcgLyBQYWdlJyxcbiAgICB0b3RhbEl0ZW0odG90YWwpIHtcbiAgICAgIHJldHVybiBgVG90YWwgUmVjb3JkczogJHt0b3RhbH1gO1xuICAgIH1cbiAgfSxcbiAgcXVhZHJhbnQ6IHtcbiAgICB4QXhpc0xhYmVsOiAnVXJnZW5jeScsXG4gICAgeUF4aXNMYWJlbDogJ0ltcG9ydGFuY2UnLFxuICAgIGRlZmF1bHRUaXRsZUNvbmY6IFtcbiAgICAgIHsgdGl0bGU6ICdJbXBvcnRhbnQgYW5kIHVyZ2VudCcgfSxcbiAgICAgIHsgdGl0bGU6ICdJbXBvcnRhbnQgbm90IHVyZ2VudCcgfSxcbiAgICAgIHsgdGl0bGU6ICdOb3QgaW1wb3J0YW50IG5vdCB1cmdlbnQnIH0sXG4gICAgICB7IHRpdGxlOiAnTm90IGltcG9ydGFudCB1cmdlbnQnIH0sXG4gICAgXSxcbiAgfSxcbiAgdXBsb2FkOiB7XG4gICAgd2FybmluZzogJ1dhcm5pbmcnLFxuICAgIHVwbG9hZDogJ1VwbG9hZCcsXG4gICAgY2hvb3NlRmlsZTogJy0tc2VsZWN0LS0nLFxuICAgIGNob29zZUZpbGVzOiAnLS1zZWxlY3QtLScsXG4gICAgcHJlbG9hZDogJ1NlbGVjdGVkJyxcbiAgICB1cGxvYWRpbmc6ICdVcGxvYWRpbmcuLi4nLFxuICAgIHVwbG9hZGVkOiAnVXBsb2FkIHN1Y2Nlc3NmdWwnLFxuICAgIHVwbG9hZEZhaWxlZDogJ1VwbG9hZCBmYWlsZWQnLFxuICAgIHVwbG9hZFN1Y2Nlc3M6ICdVcGxvYWQgU3VjY2Vzc2Z1bCcsXG4gICAgZGVsZXRlOiAnRGVsZXRlJyxcbiAgICByZVVwbG9hZDogJ3JldXBsb2FkJyxcbiAgICBjYW5jZWxVcGxvYWQ6ICdVcGxvYWQgY2FuY2VsJyxcbiAgICBnZXROb3RBbGxvd2VkRmlsZVR5cGVNc2coZmlsZW5hbWUsIHNjb3BlKSB7XG4gICAgICByZXR1cm4gYEZpbGVzIHdpdGggdW5zdXBwb3J0ZWQgdHlwZXM6ICR7ZmlsZW5hbWV9LiBTdXBwb3J0ZWQgZmlsZSB0eXBlczogJHtzY29wZX1gO1xuICAgIH0sXG4gICAgZ2V0QmV5b25kTWF4aW1hbEZpbGVTaXplTXNnKGZpbGVuYW1lLCBtYXhpbWFsU2l6ZSkge1xuICAgICAgcmV0dXJuIGBNYXhpbXVtIGZpbGUgc2l6ZSAoTUIpOiAke21heGltYWxTaXplfS4gRmlsZXMgd2hvc2Ugc2l6ZSBleGNlZWRzIHRoZSBtYXhpbXVtIHZhbHVlOiAke2ZpbGVuYW1lfWA7XG4gICAgfSxcbiAgICBnZXRCZXlvbmRNYXhpbXVtRmlsZUNvdW50TXNnKG1heGltYWxTaXplKXtcbiAgICAgIHJldHVybiBgTWF4aW11bSBmaWxlIGNvdW50OiAke21heGltYWxTaXplfS4gRmlsZXMgZXhjZWVkcyB0aGUgbWF4aW11bSB2YWx1ZWA7XG4gICAgfSxcbiAgICBnZXRBbGxGaWxlc0JleW9uZE1heGltYWxGaWxlU2l6ZU1zZyhtYXhpbWFsU2l6ZSkge1xuICAgICAgcmV0dXJuIGBNYXhpbXVtIGZpbGUgc2l6ZSAoTUIpOiAke21heGltYWxTaXplfS4gVGhlIHNlbGVjdGVkIGZpbGVzIGV4Y2VlZCB0aGUgbWF4aW11bSB2YWx1ZWA7XG4gICAgfSxcbiAgICBnZXRFeGlzdFNhbWVOYW1lRmlsZXNNc2coc2FtZU5hbWVzKSB7XG4gICAgICByZXR1cm4gYER1cGxpY2F0ZSBmaWxlcyBleGlzdCA6IFwiJHtzYW1lTmFtZXN9XCJgO1xuICAgIH0sXG4gICAgZ2V0U2VsZWN0ZWRGaWxlc0NvdW50KGZpbGVzQ291bnQpIHtcbiAgICAgIHJldHVybiBgJHtmaWxlc0NvdW50fSBmaWxlcyBhZGRlZGA7XG4gICAgfSxcbiAgICBnZXRVcGxvYWRpbmdGaWxlc0NvdW50KHVwbG9hZGluZ0NvdW50LCBmaWxlc0NvdW50KSB7XG4gICAgICByZXR1cm4gYCR7dXBsb2FkaW5nQ291bnR9LyR7ZmlsZXNDb3VudH0gaXMgdXBsb2FkaW5nYDtcbiAgICB9LFxuICAgIGdldEZhaWxlZEZpbGVzQ291bnQoZmFpbGVkQ291bnQpIHtcbiAgICAgIHJldHVybiBgJHtmYWlsZWRDb3VudH0gZmlsZXMgdXBsb2FkIGZhaWxlZGA7XG4gICAgfSxcbiAgfSxcbiAgbW9kYWw6IHtcbiAgICB3YXJuaW5nOiAnV2FybmluZycsXG4gICAgZXJyb3I6ICdFcnJvcicsXG4gICAgZmFpbDogJ0ZhaWwnLFxuICAgIGluZm86ICdJbmZvcm1hdGlvbicsXG4gICAgc3VjY2VzczogJ1N1Y2Nlc3MnLFxuICB9LFxuICBpbWFnZVByZXZpZXc6IHtcbiAgICByb3RhdGU6ICdSb3RhdGUnLFxuICAgIHpvb21JbjogJ1pvb20gSW4nLFxuICAgIHpvb21PdXQ6ICdab29tIE91dCcsXG4gICAgYmVzdFNjYWxlOiAnQmVzdCBSYXRpbycsXG4gICAgb3JpZ2luU2NhbGU6ICdPcmlnaW5hbCBSYXRpbycsXG4gICAgcHJlOiAnUHJldmlvdXMnLFxuICAgIG5leHQ6ICdOZXh0JyxcbiAgICBvcmlnaW46ICdWaWV3IHRoZSBvcmlnaW5hbCBpbWFnZScsXG4gICAgZG93bmxvYWQ6ICdEb3dubG9hZCdcbiAgfSxcbiAgY29sb3JQaWNrZXI6IHtcbiAgICByZWNlbnRseVVzZWQ6ICdSZWNlbnRseSBVc2VkJyxcbiAgICBiYXNpY0NvbG9yczogJ0Jhc2ljIENvbG9ycycsXG4gICAgbW9yZUNvbG9yczogJ01vcmUgQ29sb3JzJyxcbiAgfSxcbiAgc3RlcHNHdWlkZToge1xuICAgIHByZXZpb3VzOiAnUHJldmlvdXMnLFxuICAgIG5leHQ6ICdDb250aW51ZScsXG4gICAgZmluaXNoOiAnT0snLFxuICB9LFxuICBzcGxpdHRlcjoge1xuICAgIGNvbGxhcHNlOiAnQ29sbGFwc2UnLFxuICAgIGV4cGFuZDogJ0V4cGFuZCcsXG4gIH0sXG4gIHJlbGF0aXZlVGltZToge1xuICAgIHllYXJzQWdvKG51bTogbnVtYmVyKSB7XG4gICAgICByZXR1cm4gbnVtID09PSAxID8gJ2xhc3QgeWVhcicgOiBgJHtudW19IHllYXJzIGFnb2A7XG4gICAgfSxcbiAgICBtb250aHNBZ28obnVtOiBudW1iZXIpIHtcbiAgICAgIHJldHVybiBudW0gPT09IDEgPyAnbGFzdCBtb250aCcgOiBgJHtudW19IG1vbnRocyBhZ29gO1xuICAgIH0sXG4gICAgd2Vla3NBZ28obnVtOiBudW1iZXIpIHtcbiAgICAgIHJldHVybiBudW0gPT09IDEgPyAnbGFzdCB3ZWVrJyA6IGAke251bX0gd2Vla3MgYWdvYDtcbiAgICB9LFxuICAgIGRheXNBZ28obnVtOiBudW1iZXIpIHtcbiAgICAgIHJldHVybiBudW0gPT09IDEgPyAneWVzdGVyZGF5JyA6IGAke251bX0gZGF5cyBhZ29gO1xuICAgIH0sXG4gICAgZGF5c0xhdGVyKG51bTogbnVtYmVyKSB7XG4gICAgICByZXR1cm4gbnVtID09PSAxID8gJ3RvbW9ycm93JyA6IGAke251bX0gZGF5cyBsYXRlcmA7XG4gICAgfSxcbiAgICB3ZWVrc0xhdGVyKG51bTogbnVtYmVyKSB7XG4gICAgICByZXR1cm4gbnVtID09PSAxID8gJ25leHQgd2VlaycgOiBgJHtudW19IHdlZWtzIGxhdGVyYDtcbiAgICB9LFxuICAgIG1vbnRoc0xhdGVyKG51bTogbnVtYmVyKSB7XG4gICAgICByZXR1cm4gbnVtID09PSAxID8gJ25leHQgbW9udGgnIDogYCR7bnVtfSBtb250aHMgbGF0ZXJgO1xuICAgIH0sXG4gICAgeWVhcnNMYXRlcihudW06IG51bWJlcikge1xuICAgICAgcmV0dXJuIG51bSA9PT0gMSA/ICduZXh0IHllYXInIDogYCR7bnVtfSB5ZWFycyBsYXRlcmA7XG4gICAgfSxcbiAgICBob3Vyc0FnbyhudW06IG51bWJlcikge1xuICAgICAgcmV0dXJuIG51bSA9PT0gMSA/IGAxIGhvdXIgYWdvYCA6IGAke251bX0gaG91cnMgYWdvYDtcbiAgICB9LFxuICAgIG1pbnV0ZXNBZ28obnVtOiBudW1iZXIpIHtcbiAgICAgIHJldHVybiBudW0gPT09IDEgPyBgMSBtaW51dGUgYWdvYCA6IGAke251bX0gbWludXRlcyBhZ29gO1xuICAgIH0sXG4gICAgbWludXRlc0xhdGVyKG51bTogbnVtYmVyKSB7XG4gICAgICByZXR1cm4gbnVtID09PSAxID8gYDEgbWludXRlIGxhdGVyYCA6IGAke251bX0gbWludXRlcyBsYXRlcmA7XG4gICAgfSxcbiAgICBob3Vyc0xhdGVyKG51bTogbnVtYmVyKSB7XG4gICAgICByZXR1cm4gbnVtID09PSAxID8gYDEgaG91cnMgbGF0ZXJgIDogYCR7bnVtfSBob3VycyBsYXRlcmA7XG4gICAgfSxcbiAgICBqdXN0bm93OiAnanVzdCBub3cnLFxuICAgIGxhdGVyOiAnbGF0ZXInLFxuICB9LFxuICB0YWdzSW5wdXQ6IHtcbiAgICB0YWdzUmVhY2hNYXhMZW5ndGg6ICdUaGUgbGVuZ3RoIG9mIHRhZ3MgaGFzIHJlYWNoZWQgbWF4VGFncycsXG4gICAgdGFnc1JlYWNoTWF4TnVtYmVyOiAnTWF4aW11bSBudW1iZXIgcmVhY2hlZDogJyxcbiAgICBjcmVhdGU6ICdDcmVhdGUnXG4gIH0sXG4gIGNhdGVnb3J5U2VhcmNoOiB7XG4gICAgY29uZmlybTogJ0NvbmZpcm0nLFxuICAgIGNhbmNlbDogJ0NhbmNlbCcsXG4gICAgc2VsZWN0RmlsdGVyQ29uZGl0aW9uOiAnUGxlYXNlIHNlbGVjdCBhIGZpbHRlciBjb25kaXRpb246JyxcbiAgICBnZXRGaW5kaW5nTWVzc2FnZShtc2cpIHtcbiAgICAgIHJldHVybiBgZmluZCBpbiAnJHttc2d9J2A7XG4gICAgfSxcbiAgICBnZXRTZWFyY2hNZXNzYWdlKG1zZykge1xuICAgICAgcmV0dXJuIGBvbmx5IHNlYXJjaCAnJHttc2d9J2A7XG4gICAgfSxcbiAgICBzYXZlRmlsdGVyOiAnU2F2ZSBGaWx0ZXInLFxuICAgIGZpbHRlclRpdGxlOiAnRmlsdGVyIFRpdGxlJyxcbiAgICBwbGFjZWhvbGRlcjogJ1BsZWFzZSBlbnRlci4uLicsXG4gICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdDbGljayBoZXJlIHRvIGNob29zZSBhIGZpbHRlciBjb25kaXRpb24nLFxuICAgIG5vRmlsdGVyQ29uZGl0aW9uczogJ05vIGZpbHRlciBjb25kaXRpb25zJyxcbiAgICBjbGVhckZpbHRlckNvbmRpdGlvbjogJ0NsZWFyIEZpbHRlciBDb25kaXRpb24nLFxuICAgIHNlZU1vcmU6ICdTZWUgbW9yZScsXG4gICAgc2VsZWN0ZWQ6ICdTZWxlY3RlZCcsXG4gICAgc3dpdGNoVG9TdGFydDogJ1N3aXRjaCBUbyBTdGFydCcsXG4gICAgc3dpdGNoVG9FbmQ6ICdTd2l0Y2ggVG8gRW5kJyxcbiAgICBrZXl3b3JkOiAnS2V5d29yZCcsXG4gIH0sXG4gIHVzZXJHdWlkZToge1xuICAgIGd1aWRlOiAnR3VpZGUnLFxuICAgIHByZXY6ICdQcmV2JyxcbiAgICBuZXh0OiAnTmV4dCcsXG4gICAgZmluaXNoOiAnRmluaXNoJyxcbiAgICBhdXRvRmlsbDogJ0NsaWNrIGhlcmUgdG8gYXV0by1wb3B1bGF0ZSdcbiAgfVxufTtcbiJdfQ==