@authme/identity-verification 2.2.1-rc.3 → 2.2.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.
@@ -77,7 +77,7 @@
77
77
  "confirm.nationality": "Nationality",
78
78
  "confirm.givenName": "Given name",
79
79
  "confirm.documentNumber": "Number",
80
- "confirm.expiryDate": "Date of expiry",
80
+ "confirm.expiryDate": "Expiry Date",
81
81
  "confirm.passport": "Passport",
82
82
  "confirm.personalNumber": "ID number",
83
83
  "confirm.documentType": "Document type",
@@ -94,7 +94,7 @@
94
94
  "liveness.title": "Frame your face",
95
95
  "liveness.needMoreFrame": "Identifying...",
96
96
  "liveness.error.faceNotAtCenter": "Align your face",
97
- "liveness.error.faceTooLarge": "Move farther",
97
+ "liveness.error.faceTooLarge": "Move further",
98
98
  "liveness.error.needOpenEyes": "Make sure the eyes are not covered",
99
99
  "liveness.error.noFace": "Your face is not detected",
100
100
  "liveness.error.needFaceToCamera": "Look straight ahead",
@@ -196,5 +196,12 @@
196
196
  "verify.residentCardFrontSide": "Align the front of your Resident Card",
197
197
  "verify.residentCardBackSide": "Align the back of your Resident Card",
198
198
  "verify.confirmResidentCardFrontSide": "Confirm the front of your Resident Card",
199
- "verify.confirmResidentCardBackSide": "Confirm the back of your Resident Card"
199
+ "verify.confirmResidentCardBackSide": "Confirm the back of your Resident Card",
200
+ "confirm.authority": "Authority",
201
+ "nfc.passport.error.doesntSupport.title": "This device does not support NFC",
202
+ "nfc.passport.error.doesntSupport.text": "The phone model is not equipped with NFC capabilities.",
203
+ "nfc.passport.error.confirmButton": "Confirm",
204
+ "nfc.passport.error.notTurnOn.title": "This device does not turn on NFC",
205
+ "nfc.passport.error.notTurnOn.text": "Please make sure the NFC function is activated in Settings.",
206
+ "nfc.passport.error.notMatch.text": "The information does not match, please try again."
200
207
  }
@@ -77,7 +77,7 @@
77
77
  "confirm.nationality": "國籍",
78
78
  "confirm.givenName": "名字",
79
79
  "confirm.documentNumber": "證件號碼",
80
- "confirm.expiryDate": "護照有效日期",
80
+ "confirm.expiryDate": "證件到期日",
81
81
  "confirm.passport": "護照",
82
82
  "confirm.personalNumber": "身分證統一編號",
83
83
  "confirm.documentType": "證件類型",
@@ -110,7 +110,7 @@
110
110
  "network.error.offline": "無法連線上網",
111
111
  "general.loading": "載入中",
112
112
  "verify.fraud.hintTitle": "請確認您操作時",
113
- "verify.fraud.hintText": "1.光源充足且避免背光\n2.對其白色邊框",
113
+ "verify.fraud.hintText": "1.光源充足且避免背光\n2.對齊白色邊框",
114
114
  "livenessVerify.error.customerNotFound": "客戶未註冊",
115
115
  "livenessVerify.error.deactivateCustomer": "客戶已停用",
116
116
  "livenessVerify.error.customerInProgress": "註冊審核中",
@@ -196,5 +196,12 @@
196
196
  "verify.residentCardFrontSide": "將居留證正面置於方框中拍攝",
197
197
  "verify.residentCardBackSide": "將居留證背面置於方框中拍攝",
198
198
  "verify.confirmResidentCardFrontSide": "確認居留證正面",
199
- "verify.confirmResidentCardBackSide": "確認居留證背面"
199
+ "verify.confirmResidentCardBackSide": "確認居留證背面",
200
+ "confirm.authority": "發照機關",
201
+ "nfc.passport.error.doesntSupport.title": "裝置不支援NFC",
202
+ "nfc.passport.error.doesntSupport.text": "手機型號無法支援NFC功能",
203
+ "nfc.passport.error.confirmButton": "確認",
204
+ "nfc.passport.error.notTurnOn.title": "裝置未開啟NFC",
205
+ "nfc.passport.error.notTurnOn.text": "請檢查裝置設定是否開啟NFC功能",
206
+ "nfc.passport.error.notMatch.text": "資料不符,請再試一次"
200
207
  }
@@ -106,15 +106,9 @@
106
106
  max-height: 24px;
107
107
  }
108
108
  }
109
- .authme-container .authme-header.headerMode1 .authme-header__title {
110
- display: none;
111
- }
112
109
  .authme-container .authme-header.headerMode2 .authme-header__title {
113
110
  visibility: hidden;
114
111
  }
115
- .authme-container .authme-header.headerMode2 .authme-header__subtitle {
116
- display: none;
117
- }
118
112
  .authme-container .authme-header.headerMode3 .authme-header__subtitle {
119
113
  visibility: hidden;
120
114
  }
@@ -168,7 +162,7 @@
168
162
  }
169
163
  .authme-container .loading-outer {
170
164
  width: 100vw;
171
- height: 100vh;
165
+ height: calc(var(--authMe-vh, 1vh) * 100);
172
166
  position: absolute;
173
167
  top: 0;
174
168
  left: 0;
@@ -183,12 +177,12 @@
183
177
  height: 50px;
184
178
  animation: spin 2s linear infinite;
185
179
  position: absolute;
186
- top: calc(50vh - 25px);
180
+ top: calc(var(--authMe-vh, 1vh) * 50 - 25px);
187
181
  left: calc(50vw - 25px);
188
182
  }
189
183
  .authme-container .loading-text {
190
184
  position: absolute;
191
- top: calc(50vh + 40px);
185
+ top: calc(var(--authMe-vh, 1vh) * 50 + 40px);
192
186
  width: 100vw;
193
187
  text-align: center;
194
188
  font-weight: 500;
@@ -480,6 +474,9 @@
480
474
  .ocr-container .video-container video.front {
481
475
  transform: rotateY(180deg);
482
476
  }
477
+ .ocr-container .video-container .video-container__close.authme-hide {
478
+ display: none;
479
+ }
483
480
  .ocr-container .video-container .title {
484
481
  top: calc(30vh - 52px);
485
482
  justify-content: start;
@@ -1188,7 +1185,6 @@
1188
1185
  }
1189
1186
  .liveness-container .video-container .status {
1190
1187
  top: 74vh;
1191
- padding-top: 35px;
1192
1188
  }
1193
1189
  .liveness-container .face-mask {
1194
1190
  position: absolute;
@@ -1240,7 +1236,7 @@
1240
1236
  }
1241
1237
  .liveness-container .text-title {
1242
1238
  font-weight: 500;
1243
- font-size: 24px;
1239
+ font-size: 18px;
1244
1240
  line-height: 20px;
1245
1241
  letter-spacing: 0.05em;
1246
1242
  color: #474a53;
@@ -1255,7 +1251,7 @@
1255
1251
  color: #ffffff;
1256
1252
  padding: 8px 14px;
1257
1253
  }
1258
- .liveness-container .video-container__close {
1254
+ .liveness-container .video-container__close.authme-hide {
1259
1255
  display: none;
1260
1256
  }
1261
1257
  .liveness-container .liveness-guide-panel {
@@ -1385,13 +1381,15 @@
1385
1381
  cursor: pointer;
1386
1382
  }
1387
1383
  .liveness-container .liveness-guide-close {
1388
- display: none;
1389
1384
  width: 24px;
1390
1385
  height: 24px;
1391
1386
  flex: none;
1392
1387
  order: 0;
1393
1388
  flex-grow: 0;
1394
- background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAYCAYAAAAPtVbGAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADoSURBVHgB7ZTNDYJAEIUf0ogNgB4ogDoIMfFGF2AXHDmgdcCdi9CAneBONIZs1t23xoMmfAnhJzv7ZdiZAVb+guxQlHJ9KybUP+R5kc5Aox7TaJ9gug49CAFmVBKzi5N+HIebVSILojgJECBlRAsB1P10busGrkyEaRw6RqQLLm1dmfYzShgRK7BKbCIfgRCAIMuLSq0snwGdKoyUFQghCLSMtj4CYQOWjdrW9m6BymR5BvK78MiG7iOnxHDIR58+ckreVRHbR06Jq0x9ROEnAl+RbUBSZaqL/AYk0LN98BKpGNOAXPk97mOkwoggZdKjAAAAAElFTkSuQmCC");
1389
+ background-image: var(--authme-close-icon-image);
1390
+ }
1391
+ .liveness-container .liveness-guide-close.authme-hide {
1392
+ display: none;
1395
1393
  }
1396
1394
 
1397
1395
  @media screen and (min-width: 840px) {
@@ -1450,6 +1448,7 @@
1450
1448
  :root {
1451
1449
  --authme-font-small: 12px;
1452
1450
  --authme-font-mid: 16px;
1451
+ --authme-font-large: 18px;
1453
1452
  --authme-outer: rgba(0, 0, 0, 0.65);
1454
1453
  --authme-menu-footer: #b4b7bd;
1455
1454
  --atuhme-btn-active: #00b1a7;
@@ -1469,4 +1468,4 @@
1469
1468
  --authme-back-icon-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAD7SURBVHgB3ZU9EoIwEIVXuQA3MCWl3EA7y3ACh5voSeQIWFI53sCSztYypR2+jHGGwYT8NvpmdhIW+B4hP0v061pQgDjnazQXhECUbdsK07NL8tQIniOYCkpiMIFLHfH1t7l3nH+RAX6wvec0gqqq9iFwKesIJHwYhmaUcoZbDWLhswYp4EYDDbwGvKEAfRlgtTA09xRwKd0qEio+WlGEsmmi7/tnURQdujt6L8sNrmX+SgHKdEnAHoCe0eWxJpnpBmBCY5Ij35GHrBtNTbrcxUylGkx6TY5yOotiTHwOOxZi4lVwQky8K5rGpJyrCaElk6E5yT7gW/prvQCHpnbdSHXj/AAAAABJRU5ErkJggg==");
1470
1469
  }
1471
1470
 
1472
- /*# sourceMappingURL=data:application/json;base64,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SUFDUCxZQUFZO0lBQ1oscUNBQXFDO0VBQ3ZDO0VBQ0E7SUFDRSxrQkFBa0I7SUFDbEIsWUFBWTtJQUNaLGFBQWE7SUFDYixRQUFRO0lBQ1IsU0FBUztJQUNULDRDQUE0QztJQUM1QyxrQkFBa0I7SUFDbEIsYUFBYTtJQUNiLHNCQUFzQjtFQUN4QjtFQUNBO0lBQ0UsZ0JBQWdCO0lBQ2hCLG1CQUFtQjtFQUNyQjtFQUNBO0lBQ0UsVUFBVTtJQUNWLFdBQVc7SUFDWCxjQUFjO0lBQ2Qsc0NBQXNDO0VBQ3hDO0VBQ0E7SUFDRSxhQUFhO0lBQ2IsdUJBQXVCO0lBQ3ZCLG1CQUFtQjtJQUNuQixZQUFZO0VBQ2Q7RUFDQTtJQUNFLGNBQWM7RUFDaEI7RUFDQTtJQUNFLGNBQWM7RUFDaEI7RUFDQTtJQUNFLGNBQWM7SUFDZCxhQUFhO0VBQ2Y7QUFDRjtBQUNBO0VBQ0U7SUFDRSxZQUFZO0VBQ2Q7QUFDRjtBQUNBO0VBQ0UseUJBQXlCO0VBQ3pCLHVCQUF1QjtFQUN2QixtQ0FBbUM7RUFDbkMsNkJBQTZCO0VBQzdCLDRCQUE0QjtFQUM1QixrQ0FBa0M7RUFDbEMsd0JBQXdCO0VBQ3hCLHlCQUF5QjtFQUN6QixtQ0FBbUM7RUFDbkMsbUNBQW1DO0VBQ25DLGdDQUFnQztFQUNoQyxnQ0FBZ0M7RUFDaEMsaUNBQWlDO0VBQ2pDLDhCQUE4QjtBQUNoQzs7QUFFQTtFQUNFLDRmQUE0ZjtFQUM1Zix1aEJBQXVoQjtBQUN6aEIiLCJmaWxlIjoic3R5bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOnJvb3Qge1xuICAtLW1haW4tYmctY29sb3I6ICMwMGMxYjY7XG4gIC0tbWFpbi10ZXh0LWNvbG9yOiAjZmZmZmZmO1xuICAtLWhpbnQtY29udGVudC1jb2xvcjogIzAwYzFiNjtcbiAgLS1zY2FubmVyLWRlZmF1bHQtY29sb3I6ICNmZmZmZmY7XG4gIC0tc2Nhbm5lci1wYXNzLWNvbG9yOiAjN2NmZmY5O1xuICAtLXNjYW5uZXItZXJyb3ItY29sb3I6ICNmZjcwNzA7XG4gIC0tbG9hZGluZy1jb2xvcjogIzVhZWVjYjtcbiAgLS1sb2FkaW5nLXRleHQtY29sb3I6ICNmZmZmZmY7XG4gIC0tbG90dGllLWFycm93LWNvbG9yOiB1bnNldDtcbiAgLS1sb3R0aWUtc2Nhbi1jb2xvcjogdW5zZXQ7XG4gIC0tbG90dGllLXN1Y2Nlc3MtY29sb3I6IHVuc2V0O1xufVxuXG4uYXV0aG1lLWxvYWRpbmctc2RrLW91dGVyIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB6LWluZGV4OiA5OTk7XG4gIHdpZHRoOiAxMDB2dztcbiAgaGVpZ2h0OiAxMDB2aDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYXV0aG1lLW91dGVyKTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBkaXNwbGF5OiBmbGV4O1xufVxuLmF1dGhtZS1sb2FkaW5nLXNkay1vdXRlciAuYXV0aG1lLWxvYWRpbmctc2RrLWNvbnRlbnQge1xuICBtYXJnaW46IGF1dG87XG4gIHdpZHRoOiA1MCU7XG4gIGhlaWdodDogMzAlO1xuICBtYXgtd2lkdGg6IDIwMHB4O1xuICBtYXgtaGVpZ2h0OiA3NXB4O1xufVxuXG4uYXV0aG1lLWNvbnRhaW5lciB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICB3aWR0aDogMTAwdnc7XG4gIGhlaWdodDogY2FsYyh2YXIoLS1hdXRoTWUtdmgpICogMTAwKTtcbiAgbWF4LWhlaWdodDogMTAwdmg7XG4gIHBhZGRpbmc6IDNyZW07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgei1pbmRleDogMTtcbn1cbi5hdXRobWUtY29udGFpbmVyICosXG4uYXV0aG1lLWNvbnRhaW5lciAqOjpiZWZvcmUsXG4uYXV0aG1lLWNvbnRhaW5lciAqOjphZnRlciB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4uYXV0aG1lLWNvbnRhaW5lciAuc2hvdyB7XG4gIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG59XG4uYXV0aG1lLWNvbnRhaW5lciAuaGlkZSB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cbi5hdXRobWUtY29udGFpbmVyIC5hdXRobWUtaGVhZGVyIHtcbiAgaGVpZ2h0OiA2MHB4O1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMHB4O1xuICBsZWZ0OiAwcHg7XG4gIHdpZHRoOiAxMDAlO1xuICBpbnNldDogMHB4O1xuICBwYWRkaW5nOiAxMHB4IDE2cHg7XG4gIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcik7XG4gIGdyaWQtdGVtcGxhdGUtcm93czogNDBweDtcbiAgY29sdW1uLWdhcDogMTZweDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1pdGVtczogY2VudGVyO1xuICB6LWluZGV4OiAyMDA7XG4gIGJveC1zaGFkb3c6IDBweCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG59XG4uYXV0aG1lLWNvbnRhaW5lciAuYXV0aG1lLWhlYWRlcl9fdGl0bGUge1xuICBmb250LXdlaWdodDogNTAwO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OXB4KSB7XG4gIC5hdXRobWUtY29udGFpbmVyIC5hdXRobWUtaGVhZGVyX190aXRsZSB7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICB9XG59XG4uYXV0aG1lLWNvbnRhaW5lciAuYXV0aG1lLWhlYWRlcl9fc3VidGl0bGUge1xuICBmb250LXdlaWdodDogNTAwO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBjb2xvcjogIzk5OWVhNjtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjlweCkge1xuICAuYXV0aG1lLWNvbnRhaW5lciAuYXV0aG1lLWhlYWRlcl9fc3VidGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMThweDtcbiAgfVxufVxuLmF1dGhtZS1jb250YWluZXIgLmF1dGhtZS1oZWFkZXJfX2ljb24ge1xuICBoZWlnaHQ6IDEwMCU7XG4gIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gIG1heC13aWR0aDogMTAwJTtcbiAgbWF4LWhlaWdodDogMjBweDtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjlweCkge1xuICAuYXV0aG1lLWNvbnRhaW5lciAuYXV0aG1lLWhlYWRlcl9faWNvbiB7XG4gICAgbWF4LWhlaWdodDogMjRweDtcbiAgfVxufVxuLmF1dGhtZS1jb250YWluZXIgLmF1dGhtZS1oZWFkZXIuaGVhZGVyTW9kZTEgLmF1dGhtZS1oZWFkZXJfX3RpdGxlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5hdXRobWUtY29udGFpbmVyIC5hdXRobWUtaGVhZGVyLmhlYWRlck1vZGUyIC5hdXRobWUtaGVhZGVyX190aXRsZSB7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cbi5hdXRobWUtY29udGFpbmVyIC5hdXRobWUtaGVhZGVyLmhlYWRlck1vZGUyIC5hdXRobWUtaGVhZGVyX19zdWJ0aXRsZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4uYXV0aG1lLWNvbnRhaW5lciAuYXV0aG1lLWhlYWRlci5oZWFkZXJNb2RlMyAuYXV0aG1lLWhlYWRlcl9fc3VidGl0bGUge1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG4uYXV0aG1lLWNvbnRhaW5lciAuYXV0aG1lLWhlYWRlci5oZWFkZXJNb2RlNCB7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDEsIDFmcik7XG59XG4uYXV0aG1lLWNvbnRhaW5lciAuYXV0aG1lLWhlYWRlci5oZWFkZXJNb2RlNCAuYXV0aG1lLWhlYWRlcl9fdGl0bGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuLmF1dGhtZS1jb250YWluZXIgLmF1dGhtZS1oZWFkZXIuaGVhZGVyTW9kZTQgLmF1dGhtZS1oZWFkZXJfX3N1YnRpdGxlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5hdXRobWUtY29udGFpbmVyIC5hdXRobWUtaGVhZGVyLmhlYWRlck1vZGU1IC5hdXRobWUtaGVhZGVyX190aXRsZSB7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cbi5hdXRobWUtY29udGFpbmVyIC5hdXRobWUtaGVhZGVyLmhlYWRlck1vZGU1IC5hdXRobWUtaGVhZGVyX19zdWJ0aXRsZSB7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cbi5hdXRobWUtY29udGFpbmVyIC52aWRlby1jb250YWluZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMHZ3O1xuICBoZWlnaHQ6IGNhbGModmFyKC0tYXV0aE1lLXZoKSAqIDEwMCk7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwO1xufVxuLmF1dGhtZS1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lcl9fY2xvc2Uge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNzVweDtcbiAgcmlnaHQ6IDIxcHg7XG4gIHotaW5kZXg6IDEwMTtcbn1cbi5hdXRobWUtY29udGFpbmVyIC52aWRlby1jb250YWluZXIgdmlkZW8ge1xuICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgb2JqZWN0LXBvc2l0aW9uOiBjZW50ZXI7XG4gIGhlaWdodDogMTAwdmg7XG4gIHdpZHRoOiAxMDB2dztcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBtYXgtaGVpZ2h0OiAxMDAlO1xufVxuQGtleWZyYW1lcyBzcGluIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gIH1cbn1cbi5hdXRobWUtY29udGFpbmVyIC5sb2FkaW5nLW91dGVyIHtcbiAgd2lkdGg6IDEwMHZ3O1xuICBoZWlnaHQ6IDEwMHZoO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjY1KTtcbiAgei1pbmRleDogMjAwO1xufVxuLmF1dGhtZS1jb250YWluZXIgLmxvYWRpbmcge1xuICBib3JkZXI6IDVweCBzb2xpZCB2YXIoLS1sb2FkaW5nLWNvbG9yKTtcbiAgYm9yZGVyLXRvcDogNXB4IHNvbGlkICNmZmY7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgd2lkdGg6IDUwcHg7XG4gIGhlaWdodDogNTBweDtcbiAgYW5pbWF0aW9uOiBzcGluIDJzIGxpbmVhciBpbmZpbml0ZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IGNhbGMoNTB2aCAtIDI1cHgpO1xuICBsZWZ0OiBjYWxjKDUwdncgLSAyNXB4KTtcbn1cbi5hdXRobWUtY29udGFpbmVyIC5sb2FkaW5nLXRleHQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogY2FsYyg1MHZoICsgNDBweCk7XG4gIHdpZHRoOiAxMDB2dztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXdlaWdodDogNTAwO1xuICBmb250LXNpemU6IDE4cHg7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gIGNvbG9yOiB2YXIoLS1sb2FkaW5nLXRleHQtY29sb3IpO1xufVxuLmF1dGhtZS1jb250YWluZXIgLmVycm9yLW1lc3NhZ2UtcGFuZWwge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogNDBweDtcbiAgd2lkdGg6IDk2dnc7XG4gIGhlaWdodDogNTJweDtcbiAgYmFja2dyb3VuZDogcmdiKDI5LCAzMCwgMzMpO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIHotaW5kZXg6IDIwMDtcbiAgZGlzcGxheTogZmxleDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXJnaW46IDAgMnZ3O1xuICBsZWZ0OiAwO1xufVxuLmF1dGhtZS1jb250YWluZXIgLmVycm9yLW1lc3NhZ2UtcGFuZWwgLmVycm9yLWljb24ge1xuICB3aWR0aDogMjRweDtcbiAgaGVpZ2h0OiAyNHB4O1xuICBtYXJnaW4tbGVmdDogMTZweDtcbiAgbWFyZ2luLXJpZ2h0OiAxNnB4O1xufVxuLmF1dGhtZS1jb250YWluZXIgLmVycm9yLW1lc3NhZ2UtcGFuZWwgLmVycm9yLXRleHQge1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyOHB4O1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICBjb2xvcjogI2ZmZmZmZjtcbn1cbi5hdXRobWUtY29udGFpbmVyIC5lcnJvci1tZXNzYWdlLXBhbmVsIC5yZXRyeS10ZXh0IHtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMjhweDtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gIGNvbG9yOiAjZmY3MDcwO1xuICBmbGV4OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IDEycHg7XG4gIG1hcmdpbi1sZWZ0OiAxMHB4O1xufVxuLmF1dGhtZS1jb250YWluZXIgLnBvcHVwLXBhbmVsIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDQwdmg7XG4gIGxlZnQ6IGNhbGMoNTB2dyAtIDEzOHB4KTtcbiAgd2lkdGg6IDI3N3B4O1xuICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICB6LWluZGV4OiA5OTk7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogMTZweCAyMHB4O1xufVxuLmF1dGhtZS1jb250YWluZXIgLnBvcHVwLXBhbmVsIC5wb3B1cC10aXRsZSB7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGluZS1oZWlnaHQ6IDI4cHg7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG59XG4uYXV0aG1lLWNvbnRhaW5lciAucG9wdXAtcGFuZWwgLnBvcHVwLWNvbnRlbnQge1xuICBtYXJnaW4tdG9wOiA0cHg7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbn1cbi5hdXRobWUtY29udGFpbmVyIC5wb3B1cC1idG4ge1xuICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICBtYXJnaW4tdG9wOiAyNnB4O1xuICBwYWRkaW5nOiAwcHggMjBweDtcbiAgYmFja2dyb3VuZDogdmFyKC0tbWFpbi1iZy1jb2xvcik7XG4gIGJvcmRlcjogdW5zZXQ7XG4gIGhlaWdodDogMjhweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgY29sb3I6IHZhcigtLW1haW4tdGV4dC1jb2xvcik7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG59XG4uYXV0aG1lLWNvbnRhaW5lciAucG9wdXAtYmFja2dyb3VuZCB7XG4gIHdpZHRoOiAxMDB2dztcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMHZoO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogOTk4O1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG59XG5cbi5vY3ItY29udGFpbmVyIC50ZXh0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxMDM7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIHdpZHRoOiAxMDAlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4ub2NyLWNvbnRhaW5lciAubG90dGllLW1hc2sge1xuICB6LWluZGV4OiAxMDM7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBkaXNwbGF5OiBub25lO1xuICBvcGFjaXR5OiAwLjY1O1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kOiBibGFjaztcbn1cbi5vY3ItY29udGFpbmVyIC5hbnRpLWZyYXVkLWluc3RydWN0aW9uLWNvbnRhaW5lciB7XG4gIHotaW5kZXg6IDEwNDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIG9wYWNpdHk6IDE7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG59XG4ub2NyLWNvbnRhaW5lciAuYW50aS1mcmF1ZC1pbnN0cnVjdGlvbi1jb250YWluZXJfX3RleHQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICB0b3A6IGNhbGMoMzB2aCAtIDgwcHgpO1xuICBsZWZ0OiAwO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGNvbG9yOiAjZmZmZmZmO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIHBhZGRpbmc6IDAgM2VtO1xuICBsaW5lLWhlaWdodDogMjhweDtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xufVxuLm9jci1jb250YWluZXIgLmFudGktZnJhdWQtaW5zdHJ1Y3Rpb24tY29udGFpbmVyIC5hbnRpLWZyYXVkLWluc3RydWN0aW9uLWFuaW1hdGlvbi1jb250YWluZXIge1xuICBtYXgtd2lkdGg6IDYzMHB4O1xuICBtYXJnaW46IGF1dG87XG4gIG1heC1oZWlnaHQ6IDMyNnB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMHB4O1xuICBsZWZ0OiAwcHg7XG4gIHJpZ2h0OiAwcHg7XG4gIGJvdHRvbTogMHB4O1xufVxuLm9jci1jb250YWluZXIgLmFudGktZnJhdWQtaW5zdHJ1Y3Rpb24tY29udGFpbmVyIC5idG4tY29udGFpbmVyIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgbWFyZ2luOiBhdXRvO1xuICB3aWR0aDogMTAwdnc7XG4gIHotaW5kZXg6IDE7XG4gIGJvdHRvbTogNDBweDtcbiAgbWF4LXdpZHRoOiAzNDNweDtcbn1cbi5vY3ItY29udGFpbmVyIC5hbnRpLWZyYXVkLWluc3RydWN0aW9uLWNvbnRhaW5lciAuYnRuLWNvbnRhaW5lciAuY29uZmlybS1idG4ge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiA0OHB4O1xuICBib3JkZXItcmFkaXVzOiAyNHB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1tYWluLWJnLWNvbG9yKTtcbiAgYm9yZGVyOiB1bnNldDtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgZm9udC1zaXplOiAxN3B4O1xuICBsaW5lLWhlaWdodDogMjJweDtcbiAgY29sb3I6IHZhcigtLW1haW4tdGV4dC1jb2xvcik7XG59XG4ub2NyLWNvbnRhaW5lciAuYW50aS1mcmF1ZC1pbnN0cnVjdGlvbi1jb250YWluZXIgLmJ0bi1jb250YWluZXIgLmNvbmZpcm0tYnRuOmRpc2FibGVkIHtcbiAgY29sb3I6ICNmZmZmZmY7XG4gIGJhY2tncm91bmQ6ICNlMWUzZTU7XG59XG4ub2NyLWNvbnRhaW5lciAuY29uZmlybS1pbWFnZS1jb250YWluZXIge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gIHBhZGRpbmc6IDMycHggMjRweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2Y1ZjVmNTtcbiAgYm9yZGVyLXJhZGl1czogMjBweCAyMHB4IDBweCAwcHg7XG4gIHotaW5kZXg6IDIwMDtcbn1cbi5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtdHlwZS10ZXh0IHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXNpemU6IDIwcHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGxpbmUtaGVpZ2h0OiAzMHB4O1xuICBsZXR0ZXItc3BhY2luZzogMC44cHg7XG4gIGNvbG9yOiAjMjEyMTIxO1xufVxuLm9jci1jb250YWluZXIgLmNvbmZpcm0taW1hZ2UtY29udGFpbmVyIC5pbWFnZS1saW5lIHtcbiAgYm9yZGVyOiAxcHggc29saWQgI2VlZWVlZTtcbiAgbWFyZ2luLXRvcDogMjRweDtcbn1cbi5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtbGluZS5kZXNrdG9wIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtY29udGFpbmVyIHtcbiAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgYm94LXNoYWRvdzogMHB4IDRweCA2MHB4IHJnYmEoNCwgNiwgMTUsIDAuMDUpO1xuICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICBwYWRkaW5nOiA4cHg7XG4gIG1heC13aWR0aDogNDAwcHg7XG4gIG1hcmdpbjogYXV0bztcbiAgbWFyZ2luLXRvcDogMjRweDtcbn1cbi5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtY29udGFpbmVyIGNhbnZhcyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHotaW5kZXg6IDEwMjtcbiAgbWF4LWhlaWdodDogNDB2aDtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICB3aWR0aDogLXdlYmtpdC1maWxsLWF2YWlsYWJsZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm9yZGVyLXJhZGl1czogMTJweDtcbn1cbi5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtZm9vdGVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIHotaW5kZXg6IDEwMztcbiAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbn1cbi5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtZm9vdGVyIGJ1dHRvbiB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDQ4cHg7XG4gIGJvcmRlci1yYWRpdXM6IDI0cHg7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGZvbnQtc2l6ZTogMTZweDtcbn1cbi5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtZm9vdGVyIC5idG4tcmV0cnkge1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1oaW50LWNvbnRlbnQtY29sb3IpO1xuICBjb2xvcjogdmFyKC0taGludC1jb250ZW50LWNvbG9yKTtcbiAgYmFja2dyb3VuZDogdW5zZXQ7XG4gIG1hcmdpbi10b3A6IDE2cHg7XG59XG4ub2NyLWNvbnRhaW5lciAuY29uZmlybS1pbWFnZS1jb250YWluZXIgLmltYWdlLWZvb3RlciAuYnRuLXJldHJ5OmhvdmVyIHtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYXR1aG1lLWJ0bi1hY3RpdmUpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1hdXRobWUtcmV0cnktYnRuLWFjdGl2ZSk7XG59XG4ub2NyLWNvbnRhaW5lciAuY29uZmlybS1pbWFnZS1jb250YWluZXIgLmltYWdlLWZvb3RlciAuYnRuLWNvbXBsZXRlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWFpbi1iZy1jb2xvcik7XG4gIG1hcmdpbi10b3A6IDE2cHg7XG4gIGNvbG9yOiB2YXIoLS1tYWluLXRleHQtY29sb3IpO1xuICBib3JkZXI6IHVuc2V0O1xufVxuLm9jci1jb250YWluZXIgLmNvbmZpcm0taW1hZ2UtY29udGFpbmVyIC5pbWFnZS1mb290ZXIgLmJ0bi1jb21wbGV0ZTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWF0dWhtZS1idG4tYWN0aXZlKTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjlweCkge1xuICAub2NyLWNvbnRhaW5lciAuY29uZmlybS1pbWFnZS1jb250YWluZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IGNhbGMoNTB2aCAtIDI1MHB4KTtcbiAgICBsZWZ0OiBjYWxjKDUwdncgLSAzMDBweCk7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICB3aWR0aDogNjAwcHg7XG4gICAgaGVpZ2h0OiBmaXQtY29udGVudDtcbiAgICBtYXgtaGVpZ2h0OiA1MzBweDtcbiAgICBwYWRkaW5nOiAzOHB4IDI0cHggNDBweCAyNHB4O1xuICB9XG4gIC5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtbGluZSB7XG4gICAgbWF4LXdpZHRoOiA1MzdweDtcbiAgICBtYXJnaW46IGF1dG87XG4gICAgbWFyZ2luLXRvcDogMTRweDtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICB9XG4gIC5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtbGluZS5kZXNrdG9wIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuICAub2NyLWNvbnRhaW5lciAuY29uZmlybS1pbWFnZS1jb250YWluZXIgLmltYWdlLWNvbnRhaW5lciB7XG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgfVxuICAub2NyLWNvbnRhaW5lciAuY29uZmlybS1pbWFnZS1jb250YWluZXIgLmltYWdlLWZvb3RlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxuICAub2NyLWNvbnRhaW5lciAuY29uZmlybS1pbWFnZS1jb250YWluZXIgLmltYWdlLWZvb3RlciBidXR0b24ge1xuICAgIHdpZHRoOiAxNjVweDtcbiAgICBtYXJnaW4tdG9wOiB1bnNldDtcbiAgfVxuICAub2NyLWNvbnRhaW5lciAuY29uZmlybS1pbWFnZS1jb250YWluZXIgLmltYWdlLWZvb3RlciAuYnRuLWNvbXBsZXRlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7XG4gIH1cbn1cbi5vY3ItY29udGFpbmVyIC52aWRlby1jb250YWluZXIgdmlkZW8uZnJvbnQge1xuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpO1xuICAtbXMtdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7XG4gIC1tb3otdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7XG4gIC1vLXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpO1xuICB0cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTtcbn1cbi5vY3ItY29udGFpbmVyIC52aWRlby1jb250YWluZXIgLnRpdGxlIHtcbiAgdG9wOiBjYWxjKDMwdmggLSA1MnB4KTtcbiAganVzdGlmeS1jb250ZW50OiBzdGFydDtcbn1cbi5vY3ItY29udGFpbmVyIC52aWRlby1jb250YWluZXIgLnRpdGxlIC50aXRsZS10ZXh0IHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBtYXgtd2lkdGg6IDgwJTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjb2xvcjogI2ZmZmZmZjtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBwYWRkaW5nOiA4cHggMTRweDtcbiAgbGluZS1oZWlnaHQ6IDI4cHg7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbn1cbi5vY3ItY29udGFpbmVyIC52aWRlby1jb250YWluZXIgLmhpbnQtdGV4dCB7XG4gIHdpZHRoOiAxMDB2dztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IGNhbGMoNTB2aCAtIDQ0cHgpO1xuICBmb250LXNpemU6IDYwcHg7XG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XG4gIGhlaWdodDogMTAwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbGluZS1oZWlnaHQ6IDg4cHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG59XG4ub2NyLWNvbnRhaW5lciAudmlkZW8tY29udGFpbmVyIC5zdGF0dXMge1xuICB0b3A6IDcwdmg7XG4gIHBhZGRpbmctdG9wOiAyMHB4O1xufVxuLm9jci1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lciAuc3RhdHVzIC5zdGF0dXMtdGV4dCB7XG4gIGZvbnQtd2VpZ2h0OiA0MDAgIWltcG9ydGFudDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgbWF4LXdpZHRoOiA5NSU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgd2hpdGUtc3BhY2U6IHByZTtcbiAgYmFja2dyb3VuZDogcmdiYSg2MCwgNjAsIDYwLCAwLjcpO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIGNvbG9yOiAjZmZmZmZmO1xufVxuLm9jci1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lciAuc3RhdHVzIC5zdGF0dXMtdGV4dC5ub24tZW1wdHkge1xuICBwYWRkaW5nOiA4cHggMTRweDtcbn1cbi5vY3ItY29udGFpbmVyIC52aWRlby1jb250YWluZXIgLmNhcmQtYm9yZGVyLWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCk7XG4gIGluc2V0OiAwO1xufVxuLm9jci1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lciAuY2FyZC1ib3JkZXItY29udGFpbmVyX19ib3JkZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDEwMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICBib3gtc2hhZG93OiByZ2JhKDAsIDAsIDAsIDAuNjUpIDAgMCAwIDIwMDBweDtcbiAgb3BhY2l0eTogMC45O1xuICBtYXJnaW46IGF1dG87XG4gIG1heC1oZWlnaHQ6IDYwdmg7XG4gIG1heC13aWR0aDogOTV2dztcbiAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAycztcbiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xuICAtLWI6IDNweDtcbiAgLS1jOiB2YXIoLS1zY2FubmVyLWRlZmF1bHQtY29sb3IpO1xuICAtLXc6IDI3cHg7XG4gIC0tcjogMTJweDtcbn1cbi5vY3ItY29udGFpbmVyIC52aWRlby1jb250YWluZXIgLmNhcmQtYm9yZGVyLWNvbnRhaW5lcl9fYm9yZGVyLnBhc3Mge1xuICAtLWM6IHZhcigtLXNjYW5uZXItcGFzcy1jb2xvcik7XG59XG4ub2NyLWNvbnRhaW5lciAudmlkZW8tY29udGFpbmVyIC5jYXJkLWJvcmRlci1jb250YWluZXJfX2JvcmRlci5lcnJvciB7XG4gIC0tYzogdmFyKC0tc2Nhbm5lci1lcnJvci1jb2xvcik7XG59XG4ub2NyLWNvbnRhaW5lciAudmlkZW8tY29udGFpbmVyIC5jYXJkLWJvcmRlci1jb250YWluZXJfX2JvcmRlcjo6YmVmb3JlIHtcbiAgY29udGVudDogXCJcIjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGJhY2tncm91bmQ6IHZhcigtLWMsIHJlZCk7XG4gIHBhZGRpbmc6IDNweDtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcik7XG4gIG1hc2s6IGxpbmVhci1ncmFkaWVudCgjZmZmIDAgMCkgdG9wL2NhbGMoMTAwJSAtIDIgKiB2YXIoLS13KSkgdmFyKC0tYiksIGxpbmVhci1ncmFkaWVudCgjZmZmIDAgMCkgYm90dG9tL2NhbGMoMTAwJSAtIDIgKiB2YXIoLS13KSkgdmFyKC0tYiksIGxpbmVhci1ncmFkaWVudCgjZmZmIDAgMCkgbGVmdC92YXIoLS1iKSBjYWxjKDEwMCUgLSAyICogdmFyKC0tdykpLCBsaW5lYXItZ3JhZGllbnQoI2ZmZiAwIDApIHJpZ2h0L3ZhcigtLWIpIGNhbGMoMTAwJSAtIDIgKiB2YXIoLS13KSksIGxpbmVhci1ncmFkaWVudCgjZmZmIDAgMCkgY29udGVudC1ib3gsIGxpbmVhci1ncmFkaWVudCgjZmZmIDAgMCk7XG4gIG1hc2stY29tcG9zaXRlOiBleGNsdWRlO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xufVxuQGtleWZyYW1lcyBzbGlkZWluTGVmdCB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogdW5zZXQ7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoMTAwdncpIHJvdGF0ZVkoMzBkZWcpIHNjYWxlKDAuOSk7XG4gIH1cbn1cbkBrZXlmcmFtZXMgc2xpZGVpbkxlZnRUb0RlZmF1bHQge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDEwMHZ3KSByb3RhdGVZKDMwZGVnKSBzY2FsZSgwLjkpO1xuICB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHVuc2V0O1xuICB9XG59XG5Aa2V5ZnJhbWVzIHNsaWRlaW5SaWdodCB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogdW5zZXQ7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoMTAwdncpIHJvdGF0ZVkoLTMwZGVnKSBzY2FsZSgwLjkpO1xuICB9XG59XG5Aa2V5ZnJhbWVzIHNsaWRlaW5SaWdodFRvRGVmYXVsdCB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoMTAwdncpIHJvdGF0ZVkoLTMwZGVnKSBzY2FsZSgwLjkpO1xuICB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHVuc2V0O1xuICB9XG59XG5Aa2V5ZnJhbWVzIHNsaWRlaW5Ub3Age1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHVuc2V0O1xuICB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDEwMHZ3KSByb3RhdGVYKDMwZGVnKSBzY2FsZSgwLjkpO1xuICB9XG59XG5Aa2V5ZnJhbWVzIHNsaWRlaW5Ub3BUb0RlZmF1bHQge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDEwMHZ3KSByb3RhdGVYKDMwZGVnKSBzY2FsZSgwLjkpO1xuICB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHVuc2V0O1xuICB9XG59XG5Aa2V5ZnJhbWVzIHNsaWRlaW5Cb3R0b20ge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHVuc2V0O1xuICB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDEwMHZ3KSByb3RhdGVYKC0zMGRlZykgc2NhbGUoMC45KTtcbiAgfVxufVxuQGtleWZyYW1lcyBzbGlkZWluQm90dG9tVG9EZWZhdWx0IHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSgxMDB2dykgcm90YXRlWCgtMzBkZWcpIHNjYWxlKDAuOSk7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogdW5zZXQ7XG4gIH1cbn1cbi5vY3ItY29udGFpbmVyIC52aWRlby1jb250YWluZXIgLnNjYW4ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgbWFyZ2luOiBhdXRvO1xuICBkaXNwbGF5OiBub25lO1xufVxuLm9jci1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lciAuc3VjY2Vzcyxcbi5vY3ItY29udGFpbmVyIC52aWRlby1jb250YWluZXIgLmFycm93IHtcbiAgaGVpZ2h0OiA4MHB4O1xuICB3aWR0aDogODBweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IGNhbGMoNTB2aCAtIDQwcHgpO1xuICBsZWZ0OiBjYWxjKDUwdncgLSA0MHB4KTtcbiAgei1pbmRleDogMjAwO1xufVxuLm9jci1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lciAuc2NhbiBzdmcge1xuICBmaWx0ZXI6IHZhcigtLWxvdHRpZS1zY2FuLWNvbG9yKTtcbn1cbi5vY3ItY29udGFpbmVyIC52aWRlby1jb250YWluZXIgLnN1Y2Nlc3Mgc3ZnIHtcbiAgZmlsdGVyOiB2YXIoLS1sb3R0aWUtc3VjY2Vzcy1jb2xvcik7XG59XG4ub2NyLWNvbnRhaW5lciAudmlkZW8tY29udGFpbmVyIC5hcnJvdyBzdmcge1xuICBmaWx0ZXI6IHZhcigtLWxvdHRpZS1hcnJvdy1jb2xvcik7XG59XG4ub2NyLWNvbnRhaW5lciAudmlkZW8tY29udGFpbmVyIC5zdGF0ZW1lbnQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDEwMztcbiAgYm90dG9tOiA0OHB4O1xuICB3aWR0aDogMTAwJTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjb2xvcjogI2YxZjJmMztcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsZXR0ZXItc3BhY2luZzogMC44cHg7XG59XG4ub2NyLWNvbnRhaW5lciBidXR0b246bm90KDpkaXNhYmxlZCksXG4ub2NyLWNvbnRhaW5lciBbdHlwZT1idXR0b25dOm5vdCg6ZGlzYWJsZWQpLFxuLm9jci1jb250YWluZXIgW3R5cGU9cmVzZXRdOm5vdCg6ZGlzYWJsZWQpLFxuLm9jci1jb250YWluZXIgW3R5cGU9c3VibWl0XTpub3QoOmRpc2FibGVkKSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLm9jci1jb25maXJtLWNvbnRhaW5lciAuZGF0YS1jb25maXJtIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDBweDtcbiAgd2lkdGg6IDEwMHZ3O1xuICBoZWlnaHQ6IGNhbGMoMTAwdmggLSA2MHB4KTtcbiAgcGFkZGluZzogMCAxNnB4O1xuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgbWFyZ2luLXRvcDogNjBweDtcbn1cbi5vY3ItY29uZmlybS1jb250YWluZXIgLmRhdGEtY29uZmlybSAuZGF0YS10eXBlIHtcbiAgbWF4LXdpZHRoOiA1MDBweDtcbiAgbWFyZ2luOiBhdXRvO1xuICBtYXJnaW4tdG9wOiAyNHB4O1xuICBtYXJnaW4tYm90dG9tOiA2cHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGZvbnQtc2l6ZTogMThweDtcbn1cbi5vY3ItY29uZmlybS1jb250YWluZXIgLmRhdGEge1xuICBwYWRkaW5nLWJvdHRvbTogMTI0cHg7XG59XG4ub2NyLWNvbmZpcm0tY29udGFpbmVyIC5jYXJkLXR5cGUge1xuICBtYXJnaW46IDIwcHggMHB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgY29sb3I6ICMwNDFiMmY7XG59XG4ub2NyLWNvbmZpcm0tY29udGFpbmVyIC5kYXRhLWNvbHVtbiB7XG4gIG1heC13aWR0aDogNTAwcHg7XG4gIG1hcmdpbjogYXV0bztcbiAgbWFyZ2luLXRvcDogMjRweDtcbiAgbWFyZ2luLWJvdHRvbTogNnB4O1xufVxuLm9jci1jb25maXJtLWNvbnRhaW5lciAuZGF0YS1jb2x1bW4gLnRpdGxlIHtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICBjb2xvcjogIzQ3NGE1Mztcbn1cbi5vY3ItY29uZmlybS1jb250YWluZXIgLmRhdGEtY29sdW1uIC5jb250ZW50IHtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgY29sb3I6ICM0NzRhNTM7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDUwMHB4O1xuICBoZWlnaHQ6IDM2cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNlMWUzZTU7XG4gIHBhZGRpbmctbGVmdDogMTRweDtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xufVxuLm9jci1jb25maXJtLWNvbnRhaW5lciAuZGF0YS1jb2x1bW4gLmNvbnRlbnQudGV4dGFyZWEge1xuICByZXNpemU6IG5vbmU7XG4gIHBhZGRpbmctdG9wOiA4cHg7XG4gIHBhZGRpbmctYm90dG9tOiA4cHg7XG4gIGhlaWdodDogYXV0bztcbn1cbi5vY3ItY29uZmlybS1jb250YWluZXIgLmRhdGEtY29sdW1uIC5jb250ZW50OjpwbGFjZWhvbGRlciB7XG4gIGNvbG9yOiAjY2NjZmQzO1xufVxuLm9jci1jb25maXJtLWNvbnRhaW5lciAuYnV0dG9uLXBhbmVsIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIGhlaWdodDogMTAwcHg7XG4gIHdpZHRoOiAxMDB2dztcbiAgYm94LXNoYWRvdzogdW5zZXQ7XG4gIHBhZGRpbmc6IDAgMTZweDtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG59XG4ub2NyLWNvbmZpcm0tY29udGFpbmVyIC5jb25maXJtLWJ0biB7XG4gIG1hcmdpbi10b3A6IDEycHg7XG4gIHdpZHRoOiBjYWxjKDEwMHZ3IC0gMzJweCk7XG4gIG1heC13aWR0aDogMzQzcHg7XG4gIGhlaWdodDogNDhweDtcbiAgYm9yZGVyLXJhZGl1czogMjRweDtcbiAgYmFja2dyb3VuZDogdmFyKC0tYXV0aG1lLWN1c3RvbV9fcHJpbWFyeS0yKTtcbiAgYm9yZGVyOiB1bnNldDtcbn1cbi5vY3ItY29uZmlybS1jb250YWluZXIgLmNvbmZpcm0tYnRuOmRpc2FibGVkIHtcbiAgYmFja2dyb3VuZDogI2UxZTNlNTtcbn1cbi5vY3ItY29uZmlybS1jb250YWluZXIgLmhlYWRlciB7XG4gIGhlaWdodDogNjBweDtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBpbnNldDogMHB4O1xuICBwYWRkaW5nOiAxMHB4IDE2cHg7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpO1xuICBjb2x1bW4tZ2FwOiAxNnB4O1xuICBncmlkLXRlbXBsYXRlLXJvd3M6IDQwcHg7XG4gIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gIHotaW5kZXg6IDIwMDtcbiAgYm94LXNoYWRvdzogMHB4IDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcbn1cbi5vY3ItY29uZmlybS1jb250YWluZXIgLmhlYWRlciAuaGVhZGVyLXRpdGxlIHtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbn1cbi5vY3ItY29uZmlybS1jb250YWluZXIgLmhlYWRlciAuaGVhZGVyLWltZyB7XG4gIG1heC1oZWlnaHQ6IDI0cHg7XG59XG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gIC5vY3ItY29uZmlybS1jb250YWluZXIgLmhlYWRlciAuaGVhZGVyLXRpdGxlIHtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gIH1cbiAgLm9jci1jb25maXJtLWNvbnRhaW5lciAuaGVhZGVyIC5oZWFkZXItaW1nIHtcbiAgICBtYXgtaGVpZ2h0OiAyMHB4O1xuICB9XG4gIC5vY3ItY29uZmlybS1jb250YWluZXIgLmJ1dHRvbi1wYW5lbCB7XG4gICAgYm94LXNoYWRvdzogMHB4IDBweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICB9XG59XG4ub2NyLWNvbmZpcm0tY29udGFpbmVyIGJ1dHRvbjpub3QoOmRpc2FibGVkKSxcbi5vY3ItY29uZmlybS1jb250YWluZXIgW3R5cGU9YnV0dG9uXTpub3QoOmRpc2FibGVkKSxcbi5vY3ItY29uZmlybS1jb250YWluZXIgW3R5cGU9cmVzZXRdOm5vdCg6ZGlzYWJsZWQpLFxuLm9jci1jb25maXJtLWNvbnRhaW5lciBbdHlwZT1zdWJtaXRdOm5vdCg6ZGlzYWJsZWQpIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLm9jci1jb25maXJtLWNvbnRhaW5lciAuZC1mbGV4IHtcbiAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xufVxuLm9jci1jb25maXJtLWNvbnRhaW5lciAuanVzdGlmeS1jb250ZW50LWNlbnRlciB7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7XG59XG5cbi5zcGFjZSB7XG4gIGZsZXg6IDE7XG59XG5cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciB7XG4gIGhlaWdodDogMTAwJTtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDYwcHg7XG4gIGxlZnQ6IDBweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGluc2V0OiAwcHg7XG4gIHBhZGRpbmc6IDEwcHggMTZweDtcbiAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgei1pbmRleDogMjAwO1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWhlYWRlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDBweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNDJweDtcbiAgbGVmdDogMHB4O1xuICB0b3A6IDIwcHg7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtaGVhZGVyIC5tZW51LWhlYWRlci1sZWZ0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogOHB4IDI0cHg7XG4gIGdhcDogNXB4O1xuICB3aWR0aDogMzAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGZsZXg6IG5vbmU7XG4gIG9yZGVyOiAwO1xuICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICBmbGV4LWdyb3c6IDE7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtaGVhZGVyIC5tZW51LWhlYWRlci1sZWZ0IC5tZW51LWhlYWRlci1iYWNrIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgd2lkdGg6IDI0cHg7XG4gIGhlaWdodDogMjRweDtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUQ3U1VSQlZIZ0IzWlU5RW9Jd0VJVlh1UUEzTUNXbDNFQTd5M0FDaDV2b1NlUUlXRkk1M3NDU3p0WXlwUjIrakhHR3dZVDhOdnBtZGhJVytCNGhQMHYwNjFwUWdEam5helFYaEVDVWJkc0swN05MOHRRSW5pT1lDa3BpTUlGTEhmSDF0N2wzbkgrUkFYNnd2ZWMwZ3FxcTlpRndLZXNJSkh3WWhtYVVjb1piRFdMaHN3WXA0RVlERGJ3R3ZLRUFmUmxndFRBMDl4UndLZDBxRWlvK1dsR0VzbW1pNy90blVSUWR1anQ2TDhzTnJtWCtTZ0hLZEVuQUhvQ2UwZVd4SnBucEJtQkNZNUlqMzVHSHJCdE5UYnJjeFV5bEdreDZUWTV5T290aVRId09PeFppNGxWd1FreThLNXJHcEp5ckNhRWxrNkU1eVQ3Z1cvcHJ2UUNIcG5iZFNIWGovQUFBQUFCSlJVNUVya0pnZ2c9PVwiKTtcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1oZWFkZXIgLm1lbnUtaGVhZGVyLXJpZ2h0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogOHB4IDI0cHggOHB4IDhweDtcbiAgZ2FwOiAxMHB4O1xuICB3aWR0aDogMzAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGZsZXg6IG5vbmU7XG4gIG9yZGVyOiAyO1xuICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICBmbGV4LWdyb3c6IDE7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtaGVhZGVyIC5tZW51LWhlYWRlci1yaWdodCAubWVudS1oZWFkZXItY2xvc2Uge1xuICB3aWR0aDogMjRweDtcbiAgaGVpZ2h0OiAyNHB4O1xuICBiYWNrZ3JvdW5kLWltYWdlOiB2YXIoLS1hdXRobWUtY2xvc2UtaWNvbi1pbWFnZSk7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtaGVhZGVyIC5tZW51LWhlYWRlci10aXRsZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDBweDtcbiAgZ2FwOiAxMHB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGZsZXg6IG5vbmU7XG4gIG9yZGVyOiAxO1xuICBmbGV4LWdyb3c6IDA7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtaGVhZGVyIC5tZW51LWhlYWRlci10aXRsZSAubWVudS1oZWFkZXItdGl0bGUtdGV4dCB7XG4gIGhlaWdodDogMTAwJTtcbiAgZm9udC1mYW1pbHk6IFwiTm90byBTYW5zIFRDXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBsaW5lLWhlaWdodDogMjhweDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICBjb2xvcjogIzQ3NGE1MztcbiAgZmxleDogbm9uZTtcbiAgb3JkZXI6IDA7XG4gIGZsZXgtZ3JvdzogMTtcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1jb250ZW50IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNDJweCAtIDEwcHgpO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1jb250ZW50IC5jb3VudHJ5LXNlbGVjdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBwYWRkaW5nOiAwcHg7XG4gIGdhcDogOHB4O1xuICB3aWR0aDogOTAlO1xuICBsZWZ0OiAyNHB4O1xuICB0b3A6IDExMHB4O1xuICBtYXJnaW4tYm90dG9tOiAyNHB4O1xuICBtYXgtd2lkdGg6IDM3NXB4O1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLmNvdW50cnktc2VsZWN0IC5jb3VudHJ5LXNlbGVjdC1sYWJlbCB7XG4gIG1heC13aWR0aDogMzc1cHg7XG4gIGhlaWdodDogMjBweDtcbiAgZm9udC1mYW1pbHk6IFwiTm90byBTYW5zIFRDXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgY29sb3I6ICMyZjJmMmY7XG4gIGZsZXg6IG5vbmU7XG4gIG9yZGVyOiAwO1xuICBmbGV4LWdyb3c6IDA7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAuY291bnRyeS1zZWxlY3QgLmNvdW50cnktc2VsZWN0LWRyb3Bkb3duIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogMTJweCAxNnB4O1xuICBnYXA6IDhweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNTZweDtcbiAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgYm9yZGVyOiAxcHggc29saWQgI2ViZWJlYjtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBmbGV4OiBub25lO1xuICBvcmRlcjogMDtcbiAgZmxleC1ncm93OiAwO1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLmNvdW50cnktc2VsZWN0IC5jb3VudHJ5LXNlbGVjdC1kcm9wZG93biAuY291bnRyeS1zZWxlY3QtZHJvcGRvd24tZnJhbWUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogMHB4O1xuICBnYXA6IDhweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMjBweDtcbiAgZmxleDogbm9uZTtcbiAgb3JkZXI6IDA7XG4gIGZsZXgtZ3JvdzogMDtcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1jb250ZW50IC5jb3VudHJ5LXNlbGVjdCAuY291bnRyeS1zZWxlY3QtZHJvcGRvd24gLmNvdW50cnktc2VsZWN0LWRyb3Bkb3duLWZyYW1lIC5jb3VudHJ5LXNlbGVjdC1kcm9wZG93bi10ZXh0IHtcbiAgd2lkdGg6IDI2N3B4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIGZvbnQtZmFtaWx5OiBcIk5vdG8gU2FucyBUQ1wiO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGNvbG9yOiAjNDc0YTUzO1xuICBvcmRlcjogMTtcbiAgZmxleC1ncm93OiAxO1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLmNvdW50cnktc2VsZWN0IC5jb3VudHJ5LXNlbGVjdC1kcm9wZG93biAuY291bnRyeS1zZWxlY3QtZHJvcGRvd24tZnJhbWUgLmNvdW50cnktc2VsZWN0LWRyb3Bkb3duLWljb24ge1xuICBkaXNwbGF5OiBub25lO1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICBmbGV4OiBub25lO1xuICBvcmRlcjogMjtcbiAgZmxleC1ncm93OiAwO1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBRHBTVVJCVkhnQjdZODlic0pBRklUbkxZbEU2U05RcG9pVU5PbkpEVUlYUlZhMDVaWndBdUFFMEdFcWpEQS9IZHdBRGtDQjRBSWNBUXFFQlhnZnV3VS9Rb0NGUk9tdm5EZnpOQU1rSkR3TVhRcXVxN0phVUlVMXl0MmdOcmdWZEtYS2NvVGlheXFkOC8zcTRxQ0xTNlBXa1RteVE4VDl2MzlWdlBiTTZqckNFTVNmSVVMbmJrUExyMVFab1UyQWtTRnd0ZDJxRjZ3dVpkN1pjbWpiUzVPY2E0SHZudS9OWXg4ZXdwdG8zVENXSHhCTmhPQ0MzbEhGdGlKR2MvV1N6Zy9PcHNZK1BNNXpWY200VHRNWjVVN2dsVzc1VTRoaE5oMlAzaisrbGtSNEU0eGNPL0I4SkNROGx6MGlwRktKaUV4WG53QUFBQUJKUlU1RXJrSmdnZz09XCIpO1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLmNhcmQtdHlwZS1zZWxlY3Qge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgcGFkZGluZzogMHB4O1xuICBnYXA6IDhweDtcbiAgd2lkdGg6IDkwJTtcbiAgbWF4LXdpZHRoOiAzNzVweDtcbiAgbGVmdDogMjRweDtcbiAgdG9wOiAyMThweDtcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1jb250ZW50IC5jYXJkLXR5cGUtc2VsZWN0IC5jYXJkLXR5cGUtc2VsZWN0LWxhYmVsIHtcbiAgd2lkdGg6IDMyN3B4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIGZvbnQtZmFtaWx5OiBcIk5vdG8gU2FucyBUQ1wiO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGNvbG9yOiAjMmYyZjJmO1xuICBmbGV4OiBub25lO1xuICBvcmRlcjogMDtcbiAgZmxleC1ncm93OiAwO1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLmNhcmQtdHlwZS1zZWxlY3QgLmNhcmQtb3V0LWZyYW1lIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogMTJweCAxNnB4O1xuICBnYXA6IDhweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNTZweDtcbiAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgYm9yZGVyOiAxcHggc29saWQgI2ViZWJlYjtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICB0cmFuc2l0aW9uOiBib3JkZXIgNTAwbXM7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1jb250ZW50IC5jYXJkLXR5cGUtc2VsZWN0IC5jYXJkLW91dC1mcmFtZSAuY2FyZC1pbi1mcmFtZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiAwcHg7XG4gIGdhcDogOHB4O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAyMHB4O1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLmNhcmQtdHlwZS1zZWxlY3QgLmNhcmQtb3V0LWZyYW1lIC5jYXJkLWluLWZyYW1lIC5jYXJkLWxhYmVsIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB3aWR0aDogMjY3cHg7XG4gIGhlaWdodDogMjBweDtcbiAgZm9udC1mYW1pbHk6IFwiTm90byBTYW5zIFRDXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgY29sb3I6ICM0NzRhNTM7XG4gIG9yZGVyOiAwO1xuICBmbGV4LWdyb3c6IDE7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAuY2FyZC10eXBlLXNlbGVjdCAuY2FyZC1vdXQtZnJhbWUgLmNhcmQtaW4tZnJhbWUgLmNhcmQtbGFiZWw6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiIFwiO1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMTRweDtcbiAgbWFyZ2luLXJpZ2h0OiA2cHg7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBT0NBWUFBQUF2eER6d0FBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFFUlNVUkJWSGdCclpROVRzTkFFSVhmYkxZd29nZ1Y5WElFamtJSFJNR21NNlZ2RUNrWG9FS21RQ1pZaWJnQU5keUFJK0FqTEYyVXhEdVpSTXFQVjFFaXgzbk5hbWRIYjc2ZC9hRzdoNmRRc1h0bTBBV2FxU0NpbmlibVh0bWk2OC8zdEVBRDNVYXhVU1YrY2QrTkdTZlN3a3Q3Z1Q4WkRPcUlVSXcrMHF2VnRHSTR5amNMeDByN0FhR01wS3FSM3JhSCtXdUNtdEk3WW05dzZMT2kvMDQzem9aNSt1Z1ZyTFpsMzVZN1laeHhpYjRraFpDallzTEFOejNVbG9vaGxSaUlTYlltWUlUY1VqZEhFODQwQ3JsTGhoa3ZNajBuSVhWd2RqdW5GbUdBd0U0eC9nSHhsNVMrRk1SMmdETzdrOUFqMjA0NDZjVldCTGFSUEJzMDFOSkRxTFY4Q3NuRTRWdmNEUnBvNnRpNkdTVnpNMFp6b1VEYUdOMEFBQUFBU1VWT1JLNUNZSUk9XCIpO1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLmNhcmQtdHlwZS1zZWxlY3QgLmNhcmQtb3V0LWZyYW1lIC5jYXJkLWluLWZyYW1lIC5jYXJkLWljb24ge1xuICB3aWR0aDogMTZweDtcbiAgaGVpZ2h0OiAxNnB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LXNlbGY6IGNlbnRlcjtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBib3JkZXI6IHZhcigtLWF1dGhtZS1jdXN0b21fX3ByaW1hcnktMikgc29saWQgMXB4O1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLmNhcmQtdHlwZS1zZWxlY3QgLmNhcmQtb3V0LWZyYW1lIC5jYXJkLWluLWZyYW1lIC5jYXJkLWluLWZyYW1lIC5jYXJkLWljb246OmFmdGVyIHtcbiAgY29udGVudDogXCIgXCI7XG4gIHdpZHRoOiA4cHg7XG4gIGhlaWdodDogOHB4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWF1dGhtZS1jdXN0b21fX3ByaW1hcnktMik7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW46IGF1dG87XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgNTAwbXM7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAuY2FyZC10eXBlLXNlbGVjdCAuY2FyZC1vdXQtZnJhbWU6YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBiYWNrZ3JvdW5kLWltYWdlOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCB2YXIoLS1hdXRobWUtY3VzdG9tX19wcmltYXJ5LTIpIDEwJSwgdHJhbnNwYXJlbnQgMTAuMDElKTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlO1xuICB0cmFuc2Zvcm06IHNjYWxlKDEwLCAxMCk7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzLCBvcGFjaXR5IDAuNXM7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAuY2FyZC10eXBlLXNlbGVjdCAuY2FyZC1vdXQtZnJhbWU6YWN0aXZlOmFmdGVyIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLCAwKTtcbiAgb3BhY2l0eTogMC4zO1xuICB0cmFuc2l0aW9uOiAwcztcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1jb250ZW50IC5jYXJkLXR5cGUtc2VsZWN0IC5jYXJkLW91dC1mcmFtZS5hY3RpdmUge1xuICBib3JkZXItY29sb3I6IHZhcigtLWF1dGhtZS1jdXN0b21fX3ByaW1hcnktMik7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAuY2FyZC10eXBlLXNlbGVjdCAuY2FyZC1vdXQtZnJhbWUuYWN0aXZlIC5jYXJkLWluLWZyYW1lIC5jYXJkLWljb246OmFmdGVyIHtcbiAgY29udGVudDogXCIgXCI7XG4gIHdpZHRoOiA4cHg7XG4gIGhlaWdodDogOHB4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWF1dGhtZS1jdXN0b21fX3ByaW1hcnktMik7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW46IGF1dG87XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgNTAwbXM7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAubWVudS1jb250ZW50LWZvb3RlciB7XG4gIG1hcmdpbi10b3A6IDUwcHg7XG4gIHBhZGRpbmc6IDEwcHggMTBweCA0MHB4O1xuICB3aWR0aDogMTAwJTtcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1jb250ZW50IC5tZW51LWNvbnRlbnQtZm9vdGVyIC5tZW51LWNvbnRlbnQtZm9vdGVyLWNvbnRlbnQge1xuICBtYXJnaW46IDAgYXV0bztcbiAgZm9udC1zaXplOiB2YXIoLS1hdXRobWUtZm9udC1zbWFsbCk7XG4gIGNvbG9yOiB2YXIoLS1hdXRobWUtbWVudS1mb290ZXIpO1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLm1lbnUtY29udGVudC1mb290ZXIgLm1lbnUtY29udGVudC1mb290ZXItY29udGVudCAuZm9vdGVyLWNvbmZpcm0tYnV0dG9uIHtcbiAgd2lkdGg6IDkwJTtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIGhlaWdodDogNDhweDtcbiAgYmFja2dyb3VuZDogdmFyKC0tYXV0aG1lLWN1c3RvbV9fcHJpbWFyeS0yKTtcbiAgYm94LXNoYWRvdzogNHB4IDRweCAxNnB4IHJnYmEoMCwgMTkzLCAxODIsIDAuMjUpO1xuICBib3JkZXItcmFkaXVzOiAyNHB4O1xuICBjb2xvcjogd2hpdGU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBmb250LXNpemU6IHZhcigtLWF1dGhtZS1mb250LW1pZCk7XG4gIG1heC13aWR0aDogMzc1cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYm9yZGVyIDUwMG1zLCBiYWNrZ3JvdW5kLWNvbG9yIDMwMG1zO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHVzZXItc2VsZWN0OiBub25lO1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLm1lbnUtY29udGVudC1mb290ZXIgLm1lbnUtY29udGVudC1mb290ZXItY29udGVudCAuZm9vdGVyLWNvbmZpcm0tYnV0dG9uOmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgYmFja2dyb3VuZC1pbWFnZTogcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgdmFyKC0tYXV0aG1lLWN1c3RvbV9fcHJpbWFyeS0xKSAxMCUsIHRyYW5zcGFyZW50IDEwLjAxJSk7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDUwJTtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxMCwgMTApO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcywgb3BhY2l0eSAwLjVzO1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLm1lbnUtY29udGVudC1mb290ZXIgLm1lbnUtY29udGVudC1mb290ZXItY29udGVudCAuZm9vdGVyLWNvbmZpcm0tYnV0dG9uOmFjdGl2ZTphZnRlciB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMCwgMCk7XG4gIG9wYWNpdHk6IDAuMztcbiAgdHJhbnNpdGlvbjogMHM7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAubWVudS1jb250ZW50LWZvb3RlciAubWVudS1jb250ZW50LWZvb3Rlci1jb250ZW50IC5mb290ZXItY29uZmlybS1idXR0b24uZGlzYWJsZSB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1hdXRobWUtZGlzYWJsZSk7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAubWVudS1jb250ZW50LWZvb3RlciAubWVudS1jb250ZW50LWZvb3Rlci1jb250ZW50IC5mb290ZXItc3RhdGVtZW50IHtcbiAgbWFyZ2luLXRvcDogMTBweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4ubGl2ZW5lc3MtY29udGFpbmVyIC52aWRlby1jb250YWluZXIgdmlkZW8ge1xuICB0cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTtcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lciAudGl0bGUge1xuICB0b3A6IGNhbGMoMjZ2aCAtIDU1cHgpO1xufVxuLmxpdmVuZXNzLWNvbnRhaW5lciAudmlkZW8tY29udGFpbmVyIC5zdGF0dXMge1xuICB0b3A6IDc0dmg7XG4gIHBhZGRpbmctdG9wOiAzNXB4O1xufVxuLmxpdmVuZXNzLWNvbnRhaW5lciAuZmFjZS1tYXNrIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxMDA7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICB0b3A6IDA7XG4gIGJvdHRvbTogMDtcbiAgYm94LXNoYWRvdzogI2ZmZmZmZiAwcHggMHB4IDBweCAyMDAwcHg7XG4gIGhlaWdodDogNDh2aDtcbiAgbWFyZ2luOiBhdXRvO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIC0tYjogMHB4O1xuICAtLWM6IHRyYW5zcGFyZW50O1xuICAtLXc6IDI3cHg7XG4gIC0tcjogNTAlO1xufVxuLmxpdmVuZXNzLWNvbnRhaW5lciAuZmFjZS1tYXNrLnBhc3Mge1xuICAtLWM6IHZhcigtLXNjYW5uZXItcGFzcy1jb2xvcik7XG59XG4ubGl2ZW5lc3MtY29udGFpbmVyIC5mYWNlLW1hc2suZXJyb3Ige1xuICAtLWM6IHZhcigtLXNjYW5uZXItZXJyb3ItY29sb3IpO1xufVxuLmxpdmVuZXNzLWNvbnRhaW5lciAuZmFjZS1tYXNrOjpiZWZvcmUge1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgYmFja2dyb3VuZDogdmFyKC0tYywgcmVkKTtcbiAgcGFkZGluZzogNnB4O1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yKTtcbiAgbWFzazogbGluZWFyLWdyYWRpZW50KCNmZmYgMCAwKSB0b3AvY2FsYygxMDAlIC0gMiAqIHZhcigtLXcpKSB2YXIoLS1iKSwgbGluZWFyLWdyYWRpZW50KCNmZmYgMCAwKSBib3R0b20vY2FsYygxMDAlIC0gMiAqIHZhcigtLXcpKSB2YXIoLS1iKSwgbGluZWFyLWdyYWRpZW50KCNmZmYgMCAwKSBsZWZ0L3ZhcigtLWIpIGNhbGMoMTAwJSAtIDIgKiB2YXIoLS13KSksIGxpbmVhci1ncmFkaWVudCgjZmZmIDAgMCkgcmlnaHQvdmFyKC0tYikgY2FsYygxMDAlIC0gMiAqIHZhcigtLXcpKSwgbGluZWFyLWdyYWRpZW50KCNmZmYgMCAwKSBjb250ZW50LWJveCwgbGluZWFyLWdyYWRpZW50KCNmZmYgMCAwKTtcbiAgbWFzay1jb21wb3NpdGU6IGV4Y2x1ZGU7XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG59XG4ubGl2ZW5lc3MtY29udGFpbmVyIC50ZXh0LXBhbmVsIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxMDM7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHdpZHRoOiAxMDB2dztcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLnRleHQtdGl0bGUge1xuICBmb250LXdlaWdodDogNTAwO1xuICBmb250LXNpemU6IDI0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICBjb2xvcjogIzQ3NGE1Mztcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLnRleHQtaGludCB7XG4gIGJhY2tncm91bmQ6IHJnYmEoNjAsIDYwLCA2MCwgMC43KTtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICBjb2xvcjogI2ZmZmZmZjtcbiAgcGFkZGluZzogOHB4IDE0cHg7XG59XG4ubGl2ZW5lc3MtY29udGFpbmVyIC52aWRlby1jb250YWluZXJfX2Nsb3NlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWd1aWRlLXBhbmVsIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogNjBweDtcbiAgbGVmdDogMHB4O1xuICB3aWR0aDogMTAwJTtcbiAgaW5zZXQ6IDBweDtcbiAgcGFkZGluZzogMTBweCAxNnB4O1xuICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICBkaXNwbGF5OiBncmlkO1xuICB6LWluZGV4OiAyMDA7XG59XG4ubGl2ZW5lc3MtY29udGFpbmVyIC5saXZlbmVzcy1ndWlkLWhlYWRlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDBweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNDJweDtcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWd1aWRlLWhlYWRlci1sZWZ0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogOHB4IDI0cHg7XG4gIGdhcDogNXB4O1xuICB3aWR0aDogMzAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGZsZXg6IG5vbmU7XG4gIG9yZGVyOiAwO1xuICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICBmbGV4LWdyb3c6IDE7XG59XG4ubGl2ZW5lc3MtY29udGFpbmVyIC5saXZlbmVzcy1ndWlkZS1oZWFkZXItcmlnaHQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiA4cHggMjRweCA4cHggOHB4O1xuICBnYXA6IDEwcHg7XG4gIHdpZHRoOiAzMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgZmxleDogbm9uZTtcbiAgb3JkZXI6IDI7XG4gIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gIGZsZXgtZ3JvdzogMTtcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWd1aWRlLWhlYWRlci10aXRsZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDBweDtcbiAgZ2FwOiAxMHB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGZsZXg6IG5vbmU7XG4gIG9yZGVyOiAxO1xuICBmbGV4LWdyb3c6IDA7XG59XG4ubGl2ZW5lc3MtY29udGFpbmVyIC5saXZlbmVzcy1ndWlkZS1oZWFkZXItdGl0bGUtdGV4dCB7XG4gIGhlaWdodDogMTAwJTtcbiAgZm9udC1mYW1pbHk6IFwiTm90byBTYW5zIFRDXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBsaW5lLWhlaWdodDogMjhweDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICBjb2xvcjogIzQ3NGE1MztcbiAgZmxleDogbm9uZTtcbiAgb3JkZXI6IDA7XG4gIGZsZXgtZ3JvdzogMTtcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWd1aWRlLWltZy1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICB0b3A6IDkwcHg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB3aWR0aDogMTAwJTtcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWd1aWQtaW1nIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDMyNHB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjZTFlM2U1O1xuICBib3JkZXItcmFkaXVzOiAxMnB4O1xufVxuLmxpdmVuZXNzLWNvbnRhaW5lciAubGl2ZW5lc3MtaGludC1ncm91cCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLXRvcDogMjBweDtcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWhpbnQtZ3JvdXAgPiB1bCB7XG4gIHBhZGRpbmctbGVmdDogMHB4O1xuICBtYXgtd2lkdGg6IDI3OXB4O1xufVxuLmxpdmVuZXNzLWNvbnRhaW5lciAubGl2ZW5lc3MtaGludC1ncm91cCA+IHVsID4gbGkge1xuICBmb250LWZhbWlseTogXCJOb3RvIFNhbnMgVENcIjtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBtYXJnaW46IDRweCAwcHg7XG4gIGNvbG9yOiAjNDc0YTUzO1xufVxuLmxpdmVuZXNzLWNvbnRhaW5lciAubGl2ZW5lc3MtaGludC1ncm91cCA+IHVsID4gbGk6Om1hcmtlciB7XG4gIGNvbG9yOiAjMjU2MDhhO1xuICBmb250LXNpemU6IDZweDtcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWd1aWQtY29udGludWUtYnRuIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHdpZHRoOiAzNDNweDtcbiAgaGVpZ2h0OiA0OHB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hdXRobWUtY3VzdG9tX19wcmltYXJ5LTIpO1xuICBib3gtc2hhZG93OiA0cHggNHB4IDE2cHggcmdiYSgwLCAxOTMsIDE4MiwgMC4yNSk7XG4gIGJvcmRlci1yYWRpdXM6IDI0cHg7XG4gIGNvbG9yOiAjZmZmZmZmO1xuICBtYXJnaW46IDMwcHggYXV0bztcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLmxpdmVuZXNzLWNvbnRhaW5lciAubGl2ZW5lc3MtZ3VpZGUtY2xvc2Uge1xuICBkaXNwbGF5OiBub25lO1xuICB3aWR0aDogMjRweDtcbiAgaGVpZ2h0OiAyNHB4O1xuICBmbGV4OiBub25lO1xuICBvcmRlcjogMDtcbiAgZmxleC1ncm93OiAwO1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJrQUFBQVlDQVlBQUFBUHRWYkdBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBRG9TVVJCVkhnQjdaVE5EWUpBRUlVZjBvZ05nQjRvZ0RvSU1mRkdGMkFYSERtZ2RjQ2RpOUNBbmVCT05JWnMxdDIzeG9NbWZBbmhKenY3WmRpWkFWYitndXhRbEhKOUt5YlVQK1I1a2M1QW94N1RhSjlndWc0OUNBRm1WQkt6aTVOK0hJZWJWU0lMb2pnSkVDQmxSQXNCMVAxMGJ1c0dya3lFYVJ3NlJxUUxMbTFkbWZZelNoZ1JLN0JLYkNJZmdSQ0FJTXVMU3Ewc253R2RLb3lVRlFnaENMU010ajRDWVFPV2pkclc5bTZCeW1SNUJ2Szc4TWlHN2lPbnhIRElSNTgrY2tyZVZSSGJSMDZKcTB4OVJPRW5BbCtSYlVCU1phcUwvQVlrMExOOThCS3BHTk9BWFBrOTdtT2t3b2dnWmRLakFBQUFBRWxGVGtTdVFtQ0NcIik7XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDg0MHB4KSB7XG4gIC5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWd1aWRlLWJhY2tncm91bmQge1xuICAgIHdpZHRoOiAxMDB2dztcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB6LWluZGV4OiA5OTk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjY1KTtcbiAgfVxuICAubGl2ZW5lc3MtY29udGFpbmVyIC5saXZlbmVzcy1ndWlkZS1iYWNrZ3JvdW5kIC5saXZlbmVzcy1ndWlkZS1wYW5lbCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiA4MDBweDtcbiAgICBoZWlnaHQ6IDY4NHB4O1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtNTAlKTtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB9XG4gIC5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWd1aWRlLWJhY2tncm91bmQgLmxpdmVuZXNzLWd1aWRlLXBhbmVsIC5saXZlbmVzcy1ndWlkLWhlYWRlciB7XG4gICAgbWFyZ2luLXRvcDogMzBweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICB9XG4gIC5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWd1aWRlLWJhY2tncm91bmQgLmxpdmVuZXNzLWd1aWRlLXBhbmVsIC5saXZlbmVzcy1ndWlkZS1kaXZpZGUge1xuICAgIHdpZHRoOiA3MCU7XG4gICAgaGVpZ2h0OiAxcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYXV0aG1lLWRpdmlkZSk7XG4gIH1cbiAgLmxpdmVuZXNzLWNvbnRhaW5lciAubGl2ZW5lc3MtZ3VpZGUtYmFja2dyb3VuZCAubGl2ZW5lc3MtZ3VpZGUtcGFuZWwgLmxpdmVuZXNzLWd1aWRlLWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBtYXJnaW46IGF1dG87XG4gIH1cbiAgLmxpdmVuZXNzLWNvbnRhaW5lciAubGl2ZW5lc3MtZ3VpZGUtYmFja2dyb3VuZCAubGl2ZW5lc3MtZ3VpZGUtcGFuZWwgLmxpdmVuZXNzLWd1aWRlLWNvbnRlbnQgLmxpdmVuZXNzLWd1aWRlLWltZy1jb250YWluZXIge1xuICAgIHdpZHRoOiBpbml0aWFsO1xuICB9XG4gIC5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWd1aWRlLWJhY2tncm91bmQgLmxpdmVuZXNzLWd1aWRlLXBhbmVsIC5saXZlbmVzcy1ndWlkZS1jb250ZW50IC5saXZlbmVzcy1ndWlkZS1pbWctY29udGFpbmVyIC5saXZlbmVzcy1ndWlkLWltZyB7XG4gICAgd2lkdGg6IGluaXRpYWw7XG4gIH1cbiAgLmxpdmVuZXNzLWNvbnRhaW5lciAubGl2ZW5lc3MtZ3VpZGUtYmFja2dyb3VuZCAubGl2ZW5lc3MtZ3VpZGUtcGFuZWwgLmxpdmVuZXNzLWd1aWRlLWNvbnRlbnQgLmxpdmVuZXNzLWhpbnQtZ3JvdXAge1xuICAgIHdpZHRoOiBpbml0aWFsO1xuICAgIHBhZGRpbmc6IDJyZW07XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAubGl2ZW5lc3MtY29udGFpbmVyIC5mYWNlLW1hc2sge1xuICAgIGhlaWdodDogNTJ2aDtcbiAgfVxufVxuOnJvb3Qge1xuICAtLWF1dGhtZS1mb250LXNtYWxsOiAxMnB4O1xuICAtLWF1dGhtZS1mb250LW1pZDogMTZweDtcbiAgLS1hdXRobWUtb3V0ZXI6IHJnYmEoMCwgMCwgMCwgMC42NSk7XG4gIC0tYXV0aG1lLW1lbnUtZm9vdGVyOiAjYjRiN2JkO1xuICAtLWF0dWhtZS1idG4tYWN0aXZlOiAjMDBiMWE3O1xuICAtLWF1dGhtZS1yZXRyeS1idG4tYWN0aXZlOiAjZWZmZmZlO1xuICAtLWF1dGhtZS1kaXZpZGU6ICNlMWUzZTU7XG4gIC0tYXV0aG1lLWRpc2FibGU6ICNkYWRhZGE7XG4gIC0tYXV0aG1lLWN1c3RvbV9fcHJpbWFyeS0xOiAjMjU2MDhhO1xuICAtLWF1dGhtZS1jdXN0b21fX3ByaW1hcnktMjogIzAwYzFiNjtcbiAgLS1hdXRobWUtbmV1dHJhbF9fd2hpdGU6ICNmZmZmZmY7XG4gIC0tYXV0aG1lLW5ldXRyYWxfX3doaXRlOiAjMDAwMDAwO1xuICAtLWF1dGhtZS1icmFuZF9fYXV0aG1lLTE6ICM3Y2ZmZjk7XG4gIC0tYXV0aG1lLWJyYW5kX19lcnJvcjogI2ZmNzA3MDtcbn1cblxuOnJvb3Qge1xuICAtLWF1dGhtZS1jbG9zZS1pY29uLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJrQUFBQVlDQVlBQUFBUHRWYkdBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBRG9TVVJCVkhnQjdaVE5EWUpBRUlVZjBvZ05nQjRvZ0RvSU1mRkdGMkFYSERtZ2RjQ2RpOUNBbmVCT05JWnMxdDIzeG9NbWZBbmhKenY3WmRpWkFWYitndXhRbEhKOUt5YlVQK1I1a2M1QW94N1RhSjlndWc0OUNBRm1WQkt6aTVOK0hJZWJWU0lMb2pnSkVDQmxSQXNCMVAxMGJ1c0dya3lFYVJ3NlJxUUxMbTFkbWZZelNoZ1JLN0JLYkNJZmdSQ0FJTXVMU3Ewc253R2RLb3lVRlFnaENMU010ajRDWVFPV2pkclc5bTZCeW1SNUJ2Szc4TWlHN2lPbnhIRElSNTgrY2tyZVZSSGJSMDZKcTB4OVJPRW5BbCtSYlVCU1phcUwvQVlrMExOOThCS3BHTk9BWFBrOTdtT2t3b2dnWmRLakFBQUFBRWxGVGtTdVFtQ0NcIik7XG4gIC0tYXV0aG1lLWJhY2staWNvbi1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUQ3U1VSQlZIZ0IzWlU5RW9Jd0VJVlh1UUEzTUNXbDNFQTd5M0FDaDV2b1NlUUlXRkk1M3NDU3p0WXlwUjIrakhHR3dZVDhOdnBtZGhJVytCNGhQMHYwNjFwUWdEam5helFYaEVDVWJkc0swN05MOHRRSW5pT1lDa3BpTUlGTEhmSDF0N2wzbkgrUkFYNnd2ZWMwZ3FxcTlpRndLZXNJSkh3WWhtYVVjb1piRFdMaHN3WXA0RVlERGJ3R3ZLRUFmUmxndFRBMDl4UndLZDBxRWlvK1dsR0VzbW1pNy90blVSUWR1anQ2TDhzTnJtWCtTZ0hLZEVuQUhvQ2UwZVd4SnBucEJtQkNZNUlqMzVHSHJCdE5UYnJjeFV5bEdreDZUWTV5T290aVRId09PeFppNGxWd1FreThLNXJHcEp5ckNhRWxrNkU1eVQ3Z1cvcHJ2UUNIcG5iZFNIWGovQUFBQUFCSlJVNUVya0pnZ2c9PVwiKTtcbn1cbiJdfQ== */
1471
+ /*# sourceMappingURL=data:application/json;base64,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QztFQUN2QztFQUNBO0lBQ0Usa0JBQWtCO0lBQ2xCLFlBQVk7SUFDWixhQUFhO0lBQ2IsUUFBUTtJQUNSLFNBQVM7SUFDVCw0Q0FBNEM7SUFDNUMsa0JBQWtCO0lBQ2xCLGFBQWE7SUFDYixzQkFBc0I7RUFDeEI7RUFDQTtJQUNFLGdCQUFnQjtJQUNoQixtQkFBbUI7RUFDckI7RUFDQTtJQUNFLFVBQVU7SUFDVixXQUFXO0lBQ1gsY0FBYztJQUNkLHNDQUFzQztFQUN4QztFQUNBO0lBQ0UsYUFBYTtJQUNiLHVCQUF1QjtJQUN2QixtQkFBbUI7SUFDbkIsWUFBWTtFQUNkO0VBQ0E7SUFDRSxjQUFjO0VBQ2hCO0VBQ0E7SUFDRSxjQUFjO0VBQ2hCO0VBQ0E7SUFDRSxjQUFjO0lBQ2QsYUFBYTtFQUNmO0FBQ0Y7QUFDQTtFQUNFO0lBQ0UsWUFBWTtFQUNkO0FBQ0Y7QUFDQTtFQUNFLHlCQUF5QjtFQUN6Qix1QkFBdUI7RUFDdkIseUJBQXlCO0VBQ3pCLG1DQUFtQztFQUNuQyw2QkFBNkI7RUFDN0IsNEJBQTRCO0VBQzVCLGtDQUFrQztFQUNsQyx3QkFBd0I7RUFDeEIseUJBQXlCO0VBQ3pCLG1DQUFtQztFQUNuQyxtQ0FBbUM7RUFDbkMsZ0NBQWdDO0VBQ2hDLGdDQUFnQztFQUNoQyxpQ0FBaUM7RUFDakMsOEJBQThCO0FBQ2hDOztBQUVBO0VBQ0UsNGZBQTRmO0VBQzVmLHVoQkFBdWhCO0FBQ3poQiIsImZpbGUiOiJzdHlsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6cm9vdCB7XG4gIC0tbWFpbi1iZy1jb2xvcjogIzAwYzFiNjtcbiAgLS1tYWluLXRleHQtY29sb3I6ICNmZmZmZmY7XG4gIC0taGludC1jb250ZW50LWNvbG9yOiAjMDBjMWI2O1xuICAtLXNjYW5uZXItZGVmYXVsdC1jb2xvcjogI2ZmZmZmZjtcbiAgLS1zY2FubmVyLXBhc3MtY29sb3I6ICM3Y2ZmZjk7XG4gIC0tc2Nhbm5lci1lcnJvci1jb2xvcjogI2ZmNzA3MDtcbiAgLS1sb2FkaW5nLWNvbG9yOiAjNWFlZWNiO1xuICAtLWxvYWRpbmctdGV4dC1jb2xvcjogI2ZmZmZmZjtcbiAgLS1sb3R0aWUtYXJyb3ctY29sb3I6IHVuc2V0O1xuICAtLWxvdHRpZS1zY2FuLWNvbG9yOiB1bnNldDtcbiAgLS1sb3R0aWUtc3VjY2Vzcy1jb2xvcjogdW5zZXQ7XG59XG5cbi5hdXRobWUtbG9hZGluZy1zZGstb3V0ZXIge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDk5OTtcbiAgd2lkdGg6IDEwMHZ3O1xuICBoZWlnaHQ6IDEwMHZoO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1hdXRobWUtb3V0ZXIpO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG4uYXV0aG1lLWxvYWRpbmctc2RrLW91dGVyIC5hdXRobWUtbG9hZGluZy1zZGstY29udGVudCB7XG4gIG1hcmdpbjogYXV0bztcbiAgd2lkdGg6IDUwJTtcbiAgaGVpZ2h0OiAzMCU7XG4gIG1heC13aWR0aDogMjAwcHg7XG4gIG1heC1oZWlnaHQ6IDc1cHg7XG59XG5cbi5hdXRobWUtY29udGFpbmVyIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIHdpZHRoOiAxMDB2dztcbiAgaGVpZ2h0OiBjYWxjKHZhcigtLWF1dGhNZS12aCkgKiAxMDApO1xuICBtYXgtaGVpZ2h0OiAxMDB2aDtcbiAgcGFkZGluZzogM3JlbTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICB6LWluZGV4OiAxO1xufVxuLmF1dGhtZS1jb250YWluZXIgKixcbi5hdXRobWUtY29udGFpbmVyICo6OmJlZm9yZSxcbi5hdXRobWUtY29udGFpbmVyICo6OmFmdGVyIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbi5hdXRobWUtY29udGFpbmVyIC5zaG93IHtcbiAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbn1cbi5hdXRobWUtY29udGFpbmVyIC5oaWRlIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuLmF1dGhtZS1jb250YWluZXIgLmF1dGhtZS1oZWFkZXIge1xuICBoZWlnaHQ6IDYwcHg7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwcHg7XG4gIGxlZnQ6IDBweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGluc2V0OiAwcHg7XG4gIHBhZGRpbmc6IDEwcHggMTZweDtcbiAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTtcbiAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiA0MHB4O1xuICBjb2x1bW4tZ2FwOiAxNnB4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWl0ZW1zOiBjZW50ZXI7XG4gIHotaW5kZXg6IDIwMDtcbiAgYm94LXNoYWRvdzogMHB4IDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcbn1cbi5hdXRobWUtY29udGFpbmVyIC5hdXRobWUtaGVhZGVyX190aXRsZSB7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY5cHgpIHtcbiAgLmF1dGhtZS1jb250YWluZXIgLmF1dGhtZS1oZWFkZXJfX3RpdGxlIHtcbiAgICBmb250LXNpemU6IDE4cHg7XG4gIH1cbn1cbi5hdXRobWUtY29udGFpbmVyIC5hdXRobWUtaGVhZGVyX19zdWJ0aXRsZSB7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGNvbG9yOiAjOTk5ZWE2O1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OXB4KSB7XG4gIC5hdXRobWUtY29udGFpbmVyIC5hdXRobWUtaGVhZGVyX19zdWJ0aXRsZSB7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICB9XG59XG4uYXV0aG1lLWNvbnRhaW5lciAuYXV0aG1lLWhlYWRlcl9faWNvbiB7XG4gIGhlaWdodDogMTAwJTtcbiAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBtYXgtaGVpZ2h0OiAyMHB4O1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OXB4KSB7XG4gIC5hdXRobWUtY29udGFpbmVyIC5hdXRobWUtaGVhZGVyX19pY29uIHtcbiAgICBtYXgtaGVpZ2h0OiAyNHB4O1xuICB9XG59XG4uYXV0aG1lLWNvbnRhaW5lciAuYXV0aG1lLWhlYWRlci5oZWFkZXJNb2RlMiAuYXV0aG1lLWhlYWRlcl9fdGl0bGUge1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG4uYXV0aG1lLWNvbnRhaW5lciAuYXV0aG1lLWhlYWRlci5oZWFkZXJNb2RlMyAuYXV0aG1lLWhlYWRlcl9fc3VidGl0bGUge1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG4uYXV0aG1lLWNvbnRhaW5lciAuYXV0aG1lLWhlYWRlci5oZWFkZXJNb2RlNCB7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDEsIDFmcik7XG59XG4uYXV0aG1lLWNvbnRhaW5lciAuYXV0aG1lLWhlYWRlci5oZWFkZXJNb2RlNCAuYXV0aG1lLWhlYWRlcl9fdGl0bGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuLmF1dGhtZS1jb250YWluZXIgLmF1dGhtZS1oZWFkZXIuaGVhZGVyTW9kZTQgLmF1dGhtZS1oZWFkZXJfX3N1YnRpdGxlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5hdXRobWUtY29udGFpbmVyIC5hdXRobWUtaGVhZGVyLmhlYWRlck1vZGU1IC5hdXRobWUtaGVhZGVyX190aXRsZSB7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cbi5hdXRobWUtY29udGFpbmVyIC5hdXRobWUtaGVhZGVyLmhlYWRlck1vZGU1IC5hdXRobWUtaGVhZGVyX19zdWJ0aXRsZSB7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cbi5hdXRobWUtY29udGFpbmVyIC52aWRlby1jb250YWluZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMHZ3O1xuICBoZWlnaHQ6IGNhbGModmFyKC0tYXV0aE1lLXZoKSAqIDEwMCk7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwO1xufVxuLmF1dGhtZS1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lcl9fY2xvc2Uge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNzVweDtcbiAgcmlnaHQ6IDIxcHg7XG4gIHotaW5kZXg6IDEwMTtcbn1cbi5hdXRobWUtY29udGFpbmVyIC52aWRlby1jb250YWluZXIgdmlkZW8ge1xuICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgb2JqZWN0LXBvc2l0aW9uOiBjZW50ZXI7XG4gIGhlaWdodDogMTAwdmg7XG4gIHdpZHRoOiAxMDB2dztcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBtYXgtaGVpZ2h0OiAxMDAlO1xufVxuQGtleWZyYW1lcyBzcGluIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gIH1cbn1cbi5hdXRobWUtY29udGFpbmVyIC5sb2FkaW5nLW91dGVyIHtcbiAgd2lkdGg6IDEwMHZ3O1xuICBoZWlnaHQ6IGNhbGModmFyKC0tYXV0aE1lLXZoLCAxdmgpICogMTAwKTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC42NSk7XG4gIHotaW5kZXg6IDIwMDtcbn1cbi5hdXRobWUtY29udGFpbmVyIC5sb2FkaW5nIHtcbiAgYm9yZGVyOiA1cHggc29saWQgdmFyKC0tbG9hZGluZy1jb2xvcik7XG4gIGJvcmRlci10b3A6IDVweCBzb2xpZCAjZmZmO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIHdpZHRoOiA1MHB4O1xuICBoZWlnaHQ6IDUwcHg7XG4gIGFuaW1hdGlvbjogc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiBjYWxjKHZhcigtLWF1dGhNZS12aCwgMXZoKSAqIDUwIC0gMjVweCk7XG4gIGxlZnQ6IGNhbGMoNTB2dyAtIDI1cHgpO1xufVxuLmF1dGhtZS1jb250YWluZXIgLmxvYWRpbmctdGV4dCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiBjYWxjKHZhcigtLWF1dGhNZS12aCwgMXZoKSAqIDUwICsgNDBweCk7XG4gIHdpZHRoOiAxMDB2dztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXdlaWdodDogNTAwO1xuICBmb250LXNpemU6IDE4cHg7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gIGNvbG9yOiB2YXIoLS1sb2FkaW5nLXRleHQtY29sb3IpO1xufVxuLmF1dGhtZS1jb250YWluZXIgLmVycm9yLW1lc3NhZ2UtcGFuZWwge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogNDBweDtcbiAgd2lkdGg6IDk2dnc7XG4gIGhlaWdodDogNTJweDtcbiAgYmFja2dyb3VuZDogcmdiKDI5LCAzMCwgMzMpO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIHotaW5kZXg6IDIwMDtcbiAgZGlzcGxheTogZmxleDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXJnaW46IDAgMnZ3O1xuICBsZWZ0OiAwO1xufVxuLmF1dGhtZS1jb250YWluZXIgLmVycm9yLW1lc3NhZ2UtcGFuZWwgLmVycm9yLWljb24ge1xuICB3aWR0aDogMjRweDtcbiAgaGVpZ2h0OiAyNHB4O1xuICBtYXJnaW4tbGVmdDogMTZweDtcbiAgbWFyZ2luLXJpZ2h0OiAxNnB4O1xufVxuLmF1dGhtZS1jb250YWluZXIgLmVycm9yLW1lc3NhZ2UtcGFuZWwgLmVycm9yLXRleHQge1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyOHB4O1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICBjb2xvcjogI2ZmZmZmZjtcbn1cbi5hdXRobWUtY29udGFpbmVyIC5lcnJvci1tZXNzYWdlLXBhbmVsIC5yZXRyeS10ZXh0IHtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMjhweDtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gIGNvbG9yOiAjZmY3MDcwO1xuICBmbGV4OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IDEycHg7XG4gIG1hcmdpbi1sZWZ0OiAxMHB4O1xufVxuLmF1dGhtZS1jb250YWluZXIgLnBvcHVwLXBhbmVsIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDQwdmg7XG4gIGxlZnQ6IGNhbGMoNTB2dyAtIDEzOHB4KTtcbiAgd2lkdGg6IDI3N3B4O1xuICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICB6LWluZGV4OiA5OTk7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogMTZweCAyMHB4O1xufVxuLmF1dGhtZS1jb250YWluZXIgLnBvcHVwLXBhbmVsIC5wb3B1cC10aXRsZSB7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGluZS1oZWlnaHQ6IDI4cHg7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG59XG4uYXV0aG1lLWNvbnRhaW5lciAucG9wdXAtcGFuZWwgLnBvcHVwLWNvbnRlbnQge1xuICBtYXJnaW4tdG9wOiA0cHg7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbn1cbi5hdXRobWUtY29udGFpbmVyIC5wb3B1cC1idG4ge1xuICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICBtYXJnaW4tdG9wOiAyNnB4O1xuICBwYWRkaW5nOiAwcHggMjBweDtcbiAgYmFja2dyb3VuZDogdmFyKC0tbWFpbi1iZy1jb2xvcik7XG4gIGJvcmRlcjogdW5zZXQ7XG4gIGhlaWdodDogMjhweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgY29sb3I6IHZhcigtLW1haW4tdGV4dC1jb2xvcik7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG59XG4uYXV0aG1lLWNvbnRhaW5lciAucG9wdXAtYmFja2dyb3VuZCB7XG4gIHdpZHRoOiAxMDB2dztcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMHZoO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogOTk4O1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG59XG5cbi5vY3ItY29udGFpbmVyIC50ZXh0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxMDM7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIHdpZHRoOiAxMDAlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4ub2NyLWNvbnRhaW5lciAubG90dGllLW1hc2sge1xuICB6LWluZGV4OiAxMDM7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBkaXNwbGF5OiBub25lO1xuICBvcGFjaXR5OiAwLjY1O1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kOiBibGFjaztcbn1cbi5vY3ItY29udGFpbmVyIC5hbnRpLWZyYXVkLWluc3RydWN0aW9uLWNvbnRhaW5lciB7XG4gIHotaW5kZXg6IDEwNDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIG9wYWNpdHk6IDE7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG59XG4ub2NyLWNvbnRhaW5lciAuYW50aS1mcmF1ZC1pbnN0cnVjdGlvbi1jb250YWluZXJfX3RleHQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICB0b3A6IGNhbGMoMzB2aCAtIDgwcHgpO1xuICBsZWZ0OiAwO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGNvbG9yOiAjZmZmZmZmO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIHBhZGRpbmc6IDAgM2VtO1xuICBsaW5lLWhlaWdodDogMjhweDtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xufVxuLm9jci1jb250YWluZXIgLmFudGktZnJhdWQtaW5zdHJ1Y3Rpb24tY29udGFpbmVyIC5hbnRpLWZyYXVkLWluc3RydWN0aW9uLWFuaW1hdGlvbi1jb250YWluZXIge1xuICBtYXgtd2lkdGg6IDYzMHB4O1xuICBtYXJnaW46IGF1dG87XG4gIG1heC1oZWlnaHQ6IDMyNnB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMHB4O1xuICBsZWZ0OiAwcHg7XG4gIHJpZ2h0OiAwcHg7XG4gIGJvdHRvbTogMHB4O1xufVxuLm9jci1jb250YWluZXIgLmFudGktZnJhdWQtaW5zdHJ1Y3Rpb24tY29udGFpbmVyIC5idG4tY29udGFpbmVyIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgbWFyZ2luOiBhdXRvO1xuICB3aWR0aDogMTAwdnc7XG4gIHotaW5kZXg6IDE7XG4gIGJvdHRvbTogNDBweDtcbiAgbWF4LXdpZHRoOiAzNDNweDtcbn1cbi5vY3ItY29udGFpbmVyIC5hbnRpLWZyYXVkLWluc3RydWN0aW9uLWNvbnRhaW5lciAuYnRuLWNvbnRhaW5lciAuY29uZmlybS1idG4ge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiA0OHB4O1xuICBib3JkZXItcmFkaXVzOiAyNHB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1tYWluLWJnLWNvbG9yKTtcbiAgYm9yZGVyOiB1bnNldDtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgZm9udC1zaXplOiAxN3B4O1xuICBsaW5lLWhlaWdodDogMjJweDtcbiAgY29sb3I6IHZhcigtLW1haW4tdGV4dC1jb2xvcik7XG59XG4ub2NyLWNvbnRhaW5lciAuYW50aS1mcmF1ZC1pbnN0cnVjdGlvbi1jb250YWluZXIgLmJ0bi1jb250YWluZXIgLmNvbmZpcm0tYnRuOmRpc2FibGVkIHtcbiAgY29sb3I6ICNmZmZmZmY7XG4gIGJhY2tncm91bmQ6ICNlMWUzZTU7XG59XG4ub2NyLWNvbnRhaW5lciAuY29uZmlybS1pbWFnZS1jb250YWluZXIge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gIHBhZGRpbmc6IDMycHggMjRweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2Y1ZjVmNTtcbiAgYm9yZGVyLXJhZGl1czogMjBweCAyMHB4IDBweCAwcHg7XG4gIHotaW5kZXg6IDIwMDtcbn1cbi5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtdHlwZS10ZXh0IHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXNpemU6IDIwcHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGxpbmUtaGVpZ2h0OiAzMHB4O1xuICBsZXR0ZXItc3BhY2luZzogMC44cHg7XG4gIGNvbG9yOiAjMjEyMTIxO1xufVxuLm9jci1jb250YWluZXIgLmNvbmZpcm0taW1hZ2UtY29udGFpbmVyIC5pbWFnZS1saW5lIHtcbiAgYm9yZGVyOiAxcHggc29saWQgI2VlZWVlZTtcbiAgbWFyZ2luLXRvcDogMjRweDtcbn1cbi5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtbGluZS5kZXNrdG9wIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtY29udGFpbmVyIHtcbiAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgYm94LXNoYWRvdzogMHB4IDRweCA2MHB4IHJnYmEoNCwgNiwgMTUsIDAuMDUpO1xuICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICBwYWRkaW5nOiA4cHg7XG4gIG1heC13aWR0aDogNDAwcHg7XG4gIG1hcmdpbjogYXV0bztcbiAgbWFyZ2luLXRvcDogMjRweDtcbn1cbi5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtY29udGFpbmVyIGNhbnZhcyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHotaW5kZXg6IDEwMjtcbiAgbWF4LWhlaWdodDogNDB2aDtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICB3aWR0aDogLXdlYmtpdC1maWxsLWF2YWlsYWJsZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm9yZGVyLXJhZGl1czogMTJweDtcbn1cbi5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtZm9vdGVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIHotaW5kZXg6IDEwMztcbiAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbn1cbi5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtZm9vdGVyIGJ1dHRvbiB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDQ4cHg7XG4gIGJvcmRlci1yYWRpdXM6IDI0cHg7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGZvbnQtc2l6ZTogMTZweDtcbn1cbi5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtZm9vdGVyIC5idG4tcmV0cnkge1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1oaW50LWNvbnRlbnQtY29sb3IpO1xuICBjb2xvcjogdmFyKC0taGludC1jb250ZW50LWNvbG9yKTtcbiAgYmFja2dyb3VuZDogdW5zZXQ7XG4gIG1hcmdpbi10b3A6IDE2cHg7XG59XG4ub2NyLWNvbnRhaW5lciAuY29uZmlybS1pbWFnZS1jb250YWluZXIgLmltYWdlLWZvb3RlciAuYnRuLXJldHJ5OmhvdmVyIHtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYXR1aG1lLWJ0bi1hY3RpdmUpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1hdXRobWUtcmV0cnktYnRuLWFjdGl2ZSk7XG59XG4ub2NyLWNvbnRhaW5lciAuY29uZmlybS1pbWFnZS1jb250YWluZXIgLmltYWdlLWZvb3RlciAuYnRuLWNvbXBsZXRlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWFpbi1iZy1jb2xvcik7XG4gIG1hcmdpbi10b3A6IDE2cHg7XG4gIGNvbG9yOiB2YXIoLS1tYWluLXRleHQtY29sb3IpO1xuICBib3JkZXI6IHVuc2V0O1xufVxuLm9jci1jb250YWluZXIgLmNvbmZpcm0taW1hZ2UtY29udGFpbmVyIC5pbWFnZS1mb290ZXIgLmJ0bi1jb21wbGV0ZTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWF0dWhtZS1idG4tYWN0aXZlKTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjlweCkge1xuICAub2NyLWNvbnRhaW5lciAuY29uZmlybS1pbWFnZS1jb250YWluZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IGNhbGMoNTB2aCAtIDI1MHB4KTtcbiAgICBsZWZ0OiBjYWxjKDUwdncgLSAzMDBweCk7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICB3aWR0aDogNjAwcHg7XG4gICAgaGVpZ2h0OiBmaXQtY29udGVudDtcbiAgICBtYXgtaGVpZ2h0OiA1MzBweDtcbiAgICBwYWRkaW5nOiAzOHB4IDI0cHggNDBweCAyNHB4O1xuICB9XG4gIC5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtbGluZSB7XG4gICAgbWF4LXdpZHRoOiA1MzdweDtcbiAgICBtYXJnaW46IGF1dG87XG4gICAgbWFyZ2luLXRvcDogMTRweDtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICB9XG4gIC5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtbGluZS5kZXNrdG9wIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuICAub2NyLWNvbnRhaW5lciAuY29uZmlybS1pbWFnZS1jb250YWluZXIgLmltYWdlLWNvbnRhaW5lciB7XG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgfVxuICAub2NyLWNvbnRhaW5lciAuY29uZmlybS1pbWFnZS1jb250YWluZXIgLmltYWdlLWZvb3RlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxuICAub2NyLWNvbnRhaW5lciAuY29uZmlybS1pbWFnZS1jb250YWluZXIgLmltYWdlLWZvb3RlciBidXR0b24ge1xuICAgIHdpZHRoOiAxNjVweDtcbiAgICBtYXJnaW4tdG9wOiB1bnNldDtcbiAgfVxuICAub2NyLWNvbnRhaW5lciAuY29uZmlybS1pbWFnZS1jb250YWluZXIgLmltYWdlLWZvb3RlciAuYnRuLWNvbXBsZXRlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7XG4gIH1cbn1cbi5vY3ItY29udGFpbmVyIC52aWRlby1jb250YWluZXIgdmlkZW8uZnJvbnQge1xuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpO1xuICAtbXMtdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7XG4gIC1tb3otdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7XG4gIC1vLXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpO1xuICB0cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTtcbn1cbi5vY3ItY29udGFpbmVyIC52aWRlby1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lcl9fY2xvc2UuYXV0aG1lLWhpZGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm9jci1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lciAudGl0bGUge1xuICB0b3A6IGNhbGMoMzB2aCAtIDUycHgpO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHN0YXJ0O1xufVxuLm9jci1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lciAudGl0bGUgLnRpdGxlLXRleHQge1xuICBoZWlnaHQ6IDEwMCU7XG4gIG1heC13aWR0aDogODAlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGNvbG9yOiAjZmZmZmZmO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIHBhZGRpbmc6IDhweCAxNHB4O1xuICBsaW5lLWhlaWdodDogMjhweDtcbiAgZm9udC1zaXplOiAyMHB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xufVxuLm9jci1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lciAuaGludC10ZXh0IHtcbiAgd2lkdGg6IDEwMHZ3O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogY2FsYyg1MHZoIC0gNDRweCk7XG4gIGZvbnQtc2l6ZTogNjBweDtcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTtcbiAgaGVpZ2h0OiAxMDBweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBsaW5lLWhlaWdodDogODhweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbn1cbi5vY3ItY29udGFpbmVyIC52aWRlby1jb250YWluZXIgLnN0YXR1cyB7XG4gIHRvcDogNzB2aDtcbiAgcGFkZGluZy10b3A6IDIwcHg7XG59XG4ub2NyLWNvbnRhaW5lciAudmlkZW8tY29udGFpbmVyIC5zdGF0dXMgLnN0YXR1cy10ZXh0IHtcbiAgZm9udC13ZWlnaHQ6IDQwMCAhaW1wb3J0YW50O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBtYXgtd2lkdGg6IDk1JTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB3aGl0ZS1zcGFjZTogcHJlO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDYwLCA2MCwgNjAsIDAuNyk7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgY29sb3I6ICNmZmZmZmY7XG59XG4ub2NyLWNvbnRhaW5lciAudmlkZW8tY29udGFpbmVyIC5zdGF0dXMgLnN0YXR1cy10ZXh0Lm5vbi1lbXB0eSB7XG4gIHBhZGRpbmc6IDhweCAxNHB4O1xufVxuLm9jci1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lciAuY2FyZC1ib3JkZXItY29udGFpbmVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KTtcbiAgaW5zZXQ6IDA7XG59XG4ub2NyLWNvbnRhaW5lciAudmlkZW8tY29udGFpbmVyIC5jYXJkLWJvcmRlci1jb250YWluZXJfX2JvcmRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMTAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgdG9wOiAwO1xuICBib3R0b206IDA7XG4gIGJveC1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC42NSkgMCAwIDAgMjAwMHB4O1xuICBvcGFjaXR5OiAwLjk7XG4gIG1hcmdpbjogYXV0bztcbiAgbWF4LWhlaWdodDogNjB2aDtcbiAgbWF4LXdpZHRoOiA5NXZ3O1xuICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICBhbmltYXRpb24tZHVyYXRpb246IDJzO1xuICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XG4gIC0tYjogM3B4O1xuICAtLWM6IHZhcigtLXNjYW5uZXItZGVmYXVsdC1jb2xvcik7XG4gIC0tdzogMjdweDtcbiAgLS1yOiAxMnB4O1xufVxuLm9jci1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lciAuY2FyZC1ib3JkZXItY29udGFpbmVyX19ib3JkZXIucGFzcyB7XG4gIC0tYzogdmFyKC0tc2Nhbm5lci1wYXNzLWNvbG9yKTtcbn1cbi5vY3ItY29udGFpbmVyIC52aWRlby1jb250YWluZXIgLmNhcmQtYm9yZGVyLWNvbnRhaW5lcl9fYm9yZGVyLmVycm9yIHtcbiAgLS1jOiB2YXIoLS1zY2FubmVyLWVycm9yLWNvbG9yKTtcbn1cbi5vY3ItY29udGFpbmVyIC52aWRlby1jb250YWluZXIgLmNhcmQtYm9yZGVyLWNvbnRhaW5lcl9fYm9yZGVyOjpiZWZvcmUge1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgYmFja2dyb3VuZDogdmFyKC0tYywgcmVkKTtcbiAgcGFkZGluZzogM3B4O1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yKTtcbiAgbWFzazogbGluZWFyLWdyYWRpZW50KCNmZmYgMCAwKSB0b3AvY2FsYygxMDAlIC0gMiAqIHZhcigtLXcpKSB2YXIoLS1iKSwgbGluZWFyLWdyYWRpZW50KCNmZmYgMCAwKSBib3R0b20vY2FsYygxMDAlIC0gMiAqIHZhcigtLXcpKSB2YXIoLS1iKSwgbGluZWFyLWdyYWRpZW50KCNmZmYgMCAwKSBsZWZ0L3ZhcigtLWIpIGNhbGMoMTAwJSAtIDIgKiB2YXIoLS13KSksIGxpbmVhci1ncmFkaWVudCgjZmZmIDAgMCkgcmlnaHQvdmFyKC0tYikgY2FsYygxMDAlIC0gMiAqIHZhcigtLXcpKSwgbGluZWFyLWdyYWRpZW50KCNmZmYgMCAwKSBjb250ZW50LWJveCwgbGluZWFyLWdyYWRpZW50KCNmZmYgMCAwKTtcbiAgbWFzay1jb21wb3NpdGU6IGV4Y2x1ZGU7XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG59XG5Aa2V5ZnJhbWVzIHNsaWRlaW5MZWZ0IHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiB1bnNldDtcbiAgfVxuICB0byB7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSgxMDB2dykgcm90YXRlWSgzMGRlZykgc2NhbGUoMC45KTtcbiAgfVxufVxuQGtleWZyYW1lcyBzbGlkZWluTGVmdFRvRGVmYXVsdCB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoMTAwdncpIHJvdGF0ZVkoMzBkZWcpIHNjYWxlKDAuOSk7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogdW5zZXQ7XG4gIH1cbn1cbkBrZXlmcmFtZXMgc2xpZGVpblJpZ2h0IHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiB1bnNldDtcbiAgfVxuICB0byB7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSgxMDB2dykgcm90YXRlWSgtMzBkZWcpIHNjYWxlKDAuOSk7XG4gIH1cbn1cbkBrZXlmcmFtZXMgc2xpZGVpblJpZ2h0VG9EZWZhdWx0IHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSgxMDB2dykgcm90YXRlWSgtMzBkZWcpIHNjYWxlKDAuOSk7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogdW5zZXQ7XG4gIH1cbn1cbkBrZXlmcmFtZXMgc2xpZGVpblRvcCB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogdW5zZXQ7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoMTAwdncpIHJvdGF0ZVgoMzBkZWcpIHNjYWxlKDAuOSk7XG4gIH1cbn1cbkBrZXlmcmFtZXMgc2xpZGVpblRvcFRvRGVmYXVsdCB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoMTAwdncpIHJvdGF0ZVgoMzBkZWcpIHNjYWxlKDAuOSk7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogdW5zZXQ7XG4gIH1cbn1cbkBrZXlmcmFtZXMgc2xpZGVpbkJvdHRvbSB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogdW5zZXQ7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoMTAwdncpIHJvdGF0ZVgoLTMwZGVnKSBzY2FsZSgwLjkpO1xuICB9XG59XG5Aa2V5ZnJhbWVzIHNsaWRlaW5Cb3R0b21Ub0RlZmF1bHQge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDEwMHZ3KSByb3RhdGVYKC0zMGRlZykgc2NhbGUoMC45KTtcbiAgfVxuICB0byB7XG4gICAgdHJhbnNmb3JtOiB1bnNldDtcbiAgfVxufVxuLm9jci1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lciAuc2NhbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBtYXJnaW46IGF1dG87XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub2NyLWNvbnRhaW5lciAudmlkZW8tY29udGFpbmVyIC5zdWNjZXNzLFxuLm9jci1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lciAuYXJyb3cge1xuICBoZWlnaHQ6IDgwcHg7XG4gIHdpZHRoOiA4MHB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogY2FsYyg1MHZoIC0gNDBweCk7XG4gIGxlZnQ6IGNhbGMoNTB2dyAtIDQwcHgpO1xuICB6LWluZGV4OiAyMDA7XG59XG4ub2NyLWNvbnRhaW5lciAudmlkZW8tY29udGFpbmVyIC5zY2FuIHN2ZyB7XG4gIGZpbHRlcjogdmFyKC0tbG90dGllLXNjYW4tY29sb3IpO1xufVxuLm9jci1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lciAuc3VjY2VzcyBzdmcge1xuICBmaWx0ZXI6IHZhcigtLWxvdHRpZS1zdWNjZXNzLWNvbG9yKTtcbn1cbi5vY3ItY29udGFpbmVyIC52aWRlby1jb250YWluZXIgLmFycm93IHN2ZyB7XG4gIGZpbHRlcjogdmFyKC0tbG90dGllLWFycm93LWNvbG9yKTtcbn1cbi5vY3ItY29udGFpbmVyIC52aWRlby1jb250YWluZXIgLnN0YXRlbWVudCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMTAzO1xuICBib3R0b206IDQ4cHg7XG4gIHdpZHRoOiAxMDAlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGNvbG9yOiAjZjFmMmYzO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxldHRlci1zcGFjaW5nOiAwLjhweDtcbn1cbi5vY3ItY29udGFpbmVyIGJ1dHRvbjpub3QoOmRpc2FibGVkKSxcbi5vY3ItY29udGFpbmVyIFt0eXBlPWJ1dHRvbl06bm90KDpkaXNhYmxlZCksXG4ub2NyLWNvbnRhaW5lciBbdHlwZT1yZXNldF06bm90KDpkaXNhYmxlZCksXG4ub2NyLWNvbnRhaW5lciBbdHlwZT1zdWJtaXRdOm5vdCg6ZGlzYWJsZWQpIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ub2NyLWNvbmZpcm0tY29udGFpbmVyIC5kYXRhLWNvbmZpcm0ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMHB4O1xuICB3aWR0aDogMTAwdnc7XG4gIGhlaWdodDogY2FsYygxMDB2aCAtIDYwcHgpO1xuICBwYWRkaW5nOiAwIDE2cHg7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICBtYXJnaW4tdG9wOiA2MHB4O1xufVxuLm9jci1jb25maXJtLWNvbnRhaW5lciAuZGF0YS1jb25maXJtIC5kYXRhLXR5cGUge1xuICBtYXgtd2lkdGg6IDUwMHB4O1xuICBtYXJnaW46IGF1dG87XG4gIG1hcmdpbi10b3A6IDI0cHg7XG4gIG1hcmdpbi1ib3R0b206IDZweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgZm9udC1zaXplOiAxOHB4O1xufVxuLm9jci1jb25maXJtLWNvbnRhaW5lciAuZGF0YSB7XG4gIHBhZGRpbmctYm90dG9tOiAxMjRweDtcbn1cbi5vY3ItY29uZmlybS1jb250YWluZXIgLmNhcmQtdHlwZSB7XG4gIG1hcmdpbjogMjBweCAwcHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICBjb2xvcjogIzA0MWIyZjtcbn1cbi5vY3ItY29uZmlybS1jb250YWluZXIgLmRhdGEtY29sdW1uIHtcbiAgbWF4LXdpZHRoOiA1MDBweDtcbiAgbWFyZ2luOiBhdXRvO1xuICBtYXJnaW4tdG9wOiAyNHB4O1xuICBtYXJnaW4tYm90dG9tOiA2cHg7XG59XG4ub2NyLWNvbmZpcm0tY29udGFpbmVyIC5kYXRhLWNvbHVtbiAudGl0bGUge1xuICBmb250LXdlaWdodDogNTAwO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gIGNvbG9yOiAjNDc0YTUzO1xufVxuLm9jci1jb25maXJtLWNvbnRhaW5lciAuZGF0YS1jb2x1bW4gLmNvbnRlbnQge1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICBjb2xvcjogIzQ3NGE1MztcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogNTAwcHg7XG4gIGhlaWdodDogMzZweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2UxZTNlNTtcbiAgcGFkZGluZy1sZWZ0OiAxNHB4O1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG59XG4ub2NyLWNvbmZpcm0tY29udGFpbmVyIC5kYXRhLWNvbHVtbiAuY29udGVudC50ZXh0YXJlYSB7XG4gIHJlc2l6ZTogbm9uZTtcbiAgcGFkZGluZy10b3A6IDhweDtcbiAgcGFkZGluZy1ib3R0b206IDhweDtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuLm9jci1jb25maXJtLWNvbnRhaW5lciAuZGF0YS1jb2x1bW4gLmNvbnRlbnQ6OnBsYWNlaG9sZGVyIHtcbiAgY29sb3I6ICNjY2NmZDM7XG59XG4ub2NyLWNvbmZpcm0tY29udGFpbmVyIC5idXR0b24tcGFuZWwge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgaGVpZ2h0OiAxMDBweDtcbiAgd2lkdGg6IDEwMHZ3O1xuICBib3gtc2hhZG93OiB1bnNldDtcbiAgcGFkZGluZzogMCAxNnB4O1xuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbn1cbi5vY3ItY29uZmlybS1jb250YWluZXIgLmNvbmZpcm0tYnRuIHtcbiAgbWFyZ2luLXRvcDogMTJweDtcbiAgd2lkdGg6IGNhbGMoMTAwdncgLSAzMnB4KTtcbiAgbWF4LXdpZHRoOiAzNDNweDtcbiAgaGVpZ2h0OiA0OHB4O1xuICBib3JkZXItcmFkaXVzOiAyNHB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hdXRobWUtY3VzdG9tX19wcmltYXJ5LTIpO1xuICBib3JkZXI6IHVuc2V0O1xufVxuLm9jci1jb25maXJtLWNvbnRhaW5lciAuY29uZmlybS1idG46ZGlzYWJsZWQge1xuICBiYWNrZ3JvdW5kOiAjZTFlM2U1O1xufVxuLm9jci1jb25maXJtLWNvbnRhaW5lciAuaGVhZGVyIHtcbiAgaGVpZ2h0OiA2MHB4O1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGluc2V0OiAwcHg7XG4gIHBhZGRpbmc6IDEwcHggMTZweDtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcik7XG4gIGNvbHVtbi1nYXA6IDE2cHg7XG4gIGdyaWQtdGVtcGxhdGUtcm93czogNDBweDtcbiAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgei1pbmRleDogMjAwO1xuICBib3gtc2hhZG93OiAwcHggMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xufVxuLm9jci1jb25maXJtLWNvbnRhaW5lciAuaGVhZGVyIC5oZWFkZXItdGl0bGUge1xuICBmb250LXNpemU6IDE4cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xufVxuLm9jci1jb25maXJtLWNvbnRhaW5lciAuaGVhZGVyIC5oZWFkZXItaW1nIHtcbiAgbWF4LWhlaWdodDogMjRweDtcbn1cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgLm9jci1jb25maXJtLWNvbnRhaW5lciAuaGVhZGVyIC5oZWFkZXItdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgfVxuICAub2NyLWNvbmZpcm0tY29udGFpbmVyIC5oZWFkZXIgLmhlYWRlci1pbWcge1xuICAgIG1heC1oZWlnaHQ6IDIwcHg7XG4gIH1cbiAgLm9jci1jb25maXJtLWNvbnRhaW5lciAuYnV0dG9uLXBhbmVsIHtcbiAgICBib3gtc2hhZG93OiAwcHggMHB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIH1cbn1cbi5vY3ItY29uZmlybS1jb250YWluZXIgYnV0dG9uOm5vdCg6ZGlzYWJsZWQpLFxuLm9jci1jb25maXJtLWNvbnRhaW5lciBbdHlwZT1idXR0b25dOm5vdCg6ZGlzYWJsZWQpLFxuLm9jci1jb25maXJtLWNvbnRhaW5lciBbdHlwZT1yZXNldF06bm90KDpkaXNhYmxlZCksXG4ub2NyLWNvbmZpcm0tY29udGFpbmVyIFt0eXBlPXN1Ym1pdF06bm90KDpkaXNhYmxlZCkge1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ub2NyLWNvbmZpcm0tY29udGFpbmVyIC5kLWZsZXgge1xuICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG59XG4ub2NyLWNvbmZpcm0tY29udGFpbmVyIC5qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDtcbn1cblxuLnNwYWNlIHtcbiAgZmxleDogMTtcbn1cblxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogNjBweDtcbiAgbGVmdDogMHB4O1xuICB3aWR0aDogMTAwJTtcbiAgaW5zZXQ6IDBweDtcbiAgcGFkZGluZzogMTBweCAxNnB4O1xuICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB6LWluZGV4OiAyMDA7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtaGVhZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogMHB4O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiA0MnB4O1xuICBsZWZ0OiAwcHg7XG4gIHRvcDogMjBweDtcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1oZWFkZXIgLm1lbnUtaGVhZGVyLWxlZnQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiA4cHggMjRweDtcbiAgZ2FwOiA1cHg7XG4gIHdpZHRoOiAzMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgZmxleDogbm9uZTtcbiAgb3JkZXI6IDA7XG4gIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gIGZsZXgtZ3JvdzogMTtcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1oZWFkZXIgLm1lbnUtaGVhZGVyLWxlZnQgLm1lbnUtaGVhZGVyLWJhY2sge1xuICBkaXNwbGF5OiBub25lO1xuICB3aWR0aDogMjRweDtcbiAgaGVpZ2h0OiAyNHB4O1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBRDdTVVJCVkhnQjNaVTlFb0l3RUlWWHVRQTNNQ1dsM0VBN3kzQUNoNXZvU2VRSVdGSTUzc0NTenRZeXBSMitqSEdHd1lUOE52cG1kaElXK0I0aFAwdjA2MXBRZ0RqbmF6UVhoRUNVYmRzSzA3Tkw4dFFJbmlPWUNrcGlNSUZMSGZIMXQ3bDNuSCtSQVg2d3ZlYzBncXFxOWlGd0tlc0lKSHdZaG1hVWNvWmJEV0xoc3dZcDRFWUREYndHdktFQWZSbGd0VEEwOXhSd0tkMHFFaW8rV2xHRXNtbWk3L3RuVVJRZHVqdDZMOHNOcm1YK1NnSEtkRW5BSG9DZTBlV3hKcG5wQm1CQ1k1SWozNUdIckJ0TlRicmN4VXlsR2t4NlRZNXlPb3RpVEh3T094Wmk0bFZ3UWt5OEs1ckdwSnlyQ2FFbGs2RTV5VDdnVy9wcnZRQ0hwbmJkU0hYai9BQUFBQUJKUlU1RXJrSmdnZz09XCIpO1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWhlYWRlciAubWVudS1oZWFkZXItcmlnaHQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiA4cHggMjRweCA4cHggOHB4O1xuICBnYXA6IDEwcHg7XG4gIHdpZHRoOiAzMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgZmxleDogbm9uZTtcbiAgb3JkZXI6IDI7XG4gIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gIGZsZXgtZ3JvdzogMTtcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1oZWFkZXIgLm1lbnUtaGVhZGVyLXJpZ2h0IC5tZW51LWhlYWRlci1jbG9zZSB7XG4gIHdpZHRoOiAyNHB4O1xuICBoZWlnaHQ6IDI0cHg7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHZhcigtLWF1dGhtZS1jbG9zZS1pY29uLWltYWdlKTtcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1oZWFkZXIgLm1lbnUtaGVhZGVyLXRpdGxlIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogMHB4O1xuICBnYXA6IDEwcHg7XG4gIGhlaWdodDogMTAwJTtcbiAgZmxleDogbm9uZTtcbiAgb3JkZXI6IDE7XG4gIGZsZXgtZ3JvdzogMDtcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1oZWFkZXIgLm1lbnUtaGVhZGVyLXRpdGxlIC5tZW51LWhlYWRlci10aXRsZS10ZXh0IHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBmb250LWZhbWlseTogXCJOb3RvIFNhbnMgVENcIjtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXNpemU6IDE4cHg7XG4gIGxpbmUtaGVpZ2h0OiAyOHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gIGNvbG9yOiAjNDc0YTUzO1xuICBmbGV4OiBub25lO1xuICBvcmRlcjogMDtcbiAgZmxleC1ncm93OiAxO1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBoZWlnaHQ6IGNhbGMoMTAwdmggLSA0MnB4IC0gMTBweCk7XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLmNvdW50cnktc2VsZWN0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIHBhZGRpbmc6IDBweDtcbiAgZ2FwOiA4cHg7XG4gIHdpZHRoOiA5MCU7XG4gIGxlZnQ6IDI0cHg7XG4gIHRvcDogMTEwcHg7XG4gIG1hcmdpbi1ib3R0b206IDI0cHg7XG4gIG1heC13aWR0aDogMzc1cHg7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAuY291bnRyeS1zZWxlY3QgLmNvdW50cnktc2VsZWN0LWxhYmVsIHtcbiAgbWF4LXdpZHRoOiAzNzVweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICBmb250LWZhbWlseTogXCJOb3RvIFNhbnMgVENcIjtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBjb2xvcjogIzJmMmYyZjtcbiAgZmxleDogbm9uZTtcbiAgb3JkZXI6IDA7XG4gIGZsZXgtZ3JvdzogMDtcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1jb250ZW50IC5jb3VudHJ5LXNlbGVjdCAuY291bnRyeS1zZWxlY3QtZHJvcGRvd24ge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiAxMnB4IDE2cHg7XG4gIGdhcDogOHB4O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiA1NnB4O1xuICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZWJlYmViO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIGZsZXg6IG5vbmU7XG4gIG9yZGVyOiAwO1xuICBmbGV4LWdyb3c6IDA7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAuY291bnRyeS1zZWxlY3QgLmNvdW50cnktc2VsZWN0LWRyb3Bkb3duIC5jb3VudHJ5LXNlbGVjdC1kcm9wZG93bi1mcmFtZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiAwcHg7XG4gIGdhcDogOHB4O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAyMHB4O1xuICBmbGV4OiBub25lO1xuICBvcmRlcjogMDtcbiAgZmxleC1ncm93OiAwO1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLmNvdW50cnktc2VsZWN0IC5jb3VudHJ5LXNlbGVjdC1kcm9wZG93biAuY291bnRyeS1zZWxlY3QtZHJvcGRvd24tZnJhbWUgLmNvdW50cnktc2VsZWN0LWRyb3Bkb3duLXRleHQge1xuICB3aWR0aDogMjY3cHg7XG4gIGhlaWdodDogMjBweDtcbiAgZm9udC1mYW1pbHk6IFwiTm90byBTYW5zIFRDXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgY29sb3I6ICM0NzRhNTM7XG4gIG9yZGVyOiAxO1xuICBmbGV4LWdyb3c6IDE7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAuY291bnRyeS1zZWxlY3QgLmNvdW50cnktc2VsZWN0LWRyb3Bkb3duIC5jb3VudHJ5LXNlbGVjdC1kcm9wZG93bi1mcmFtZSAuY291bnRyeS1zZWxlY3QtZHJvcGRvd24taWNvbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIGZsZXg6IG5vbmU7XG4gIG9yZGVyOiAyO1xuICBmbGV4LWdyb3c6IDA7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFEcFNVUkJWSGdCN1k4OWJzSkFGSVRuTFlsRTZTTlFwb2lVTk9uSkRVSVhSVmEwNVpad0F1QUUwR0VxakRBL0hkd0FEa0NCNEFJY0FRcUVCWGdmdXdVL1FvQ0ZST212bkRmek5BTWtKRHdNWFFxdXE3SmFVSVUxeXQyZ05yZ1ZkS1hLY29UaWF5cWQ4LzNxNHFDTFM2UFdrVG15UThUOXYzOVZ2UGJNNmpyQ0VNU2ZJVUxuYmtQTHIxUVpvVTJBa1NGd3RkMnFGNnd1WmQ3WmNtamJTNU9jYTRIdm51L05ZeDhld3B0bzNUQ1dIeEJOaE9DQzNsSEZ0aUpHYy9XU3pnL09wc1krUE01elZjbTRUdE1aNVU3Z2xXNzVVNGhoTmgyUDNqKytsa1I0RTR4Y08vQjhKQ1E4bHowaXBGS0ppRXhYbndBQUFBQkpSVTVFcmtKZ2dnPT1cIik7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAuY2FyZC10eXBlLXNlbGVjdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBwYWRkaW5nOiAwcHg7XG4gIGdhcDogOHB4O1xuICB3aWR0aDogOTAlO1xuICBtYXgtd2lkdGg6IDM3NXB4O1xuICBsZWZ0OiAyNHB4O1xuICB0b3A6IDIxOHB4O1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLmNhcmQtdHlwZS1zZWxlY3QgLmNhcmQtdHlwZS1zZWxlY3QtbGFiZWwge1xuICB3aWR0aDogMzI3cHg7XG4gIGhlaWdodDogMjBweDtcbiAgZm9udC1mYW1pbHk6IFwiTm90byBTYW5zIFRDXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgY29sb3I6ICMyZjJmMmY7XG4gIGZsZXg6IG5vbmU7XG4gIG9yZGVyOiAwO1xuICBmbGV4LWdyb3c6IDA7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAuY2FyZC10eXBlLXNlbGVjdCAuY2FyZC1vdXQtZnJhbWUge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiAxMnB4IDE2cHg7XG4gIGdhcDogOHB4O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiA1NnB4O1xuICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZWJlYmViO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIHRyYW5zaXRpb246IGJvcmRlciA1MDBtcztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLmNhcmQtdHlwZS1zZWxlY3QgLmNhcmQtb3V0LWZyYW1lIC5jYXJkLWluLWZyYW1lIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDBweDtcbiAgZ2FwOiA4cHg7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDIwcHg7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAuY2FyZC10eXBlLXNlbGVjdCAuY2FyZC1vdXQtZnJhbWUgLmNhcmQtaW4tZnJhbWUgLmNhcmQtbGFiZWwge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHdpZHRoOiAyNjdweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICBmb250LWZhbWlseTogXCJOb3RvIFNhbnMgVENcIjtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBjb2xvcjogIzQ3NGE1MztcbiAgb3JkZXI6IDA7XG4gIGZsZXgtZ3JvdzogMTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1jb250ZW50IC5jYXJkLXR5cGUtc2VsZWN0IC5jYXJkLW91dC1mcmFtZSAuY2FyZC1pbi1mcmFtZSAuY2FyZC1sYWJlbDo6YmVmb3JlIHtcbiAgY29udGVudDogXCIgXCI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAxNHB4O1xuICBtYXJnaW4tcmlnaHQ6IDZweDtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFPQ0FZQUFBQXZ4RHp3QUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUVSU1VSQlZIZ0JyWlE5VHNOQUVJWGZiTFl3b2dnVjlYSUVqa0lIUk1HbU02VnZFQ2tYb0VLbVFDWllpYmdBTmR5QUkrQWpMRjJVeER1WlJNcVBWMUVpeDNuTmFtZEhiNzZkL2FHN2g2ZFFzWHRtMEFXYXFTQ2luaWJtWHRtaTY4LzN0RUFEM1VheFVTVitjZCtOR1NmU3drdDdnVDhaRE9xSVVJdyswcXZWdEdJNHlqY0x4MHI3QWFHTXBLcVIzcmFIK1d1Q210STdZbTl3NkxPaS8wNDN6b1o1K3VnVnJMWmwzNVk3WVp4eGliNGtoWkNqWXNMQU56M1Vsb29obFJpSVNiWW1ZSVRjVWpkSEU4NDBDcmxMaGhrdk1qMG5JWFZ3ZGp1bkZtR0F3RTR4L2dIeGw1UytGTVIyZ0RPN2s5QWoyMDQ0NmNWV0JMYVJQQnMwMU5KRHFMVjhDc25FNFZ2Y0RScG82dGk2R1NWek0wWnpvVURhR04wQUFBQUFTVVZPUks1Q1lJST1cIik7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAuY2FyZC10eXBlLXNlbGVjdCAuY2FyZC1vdXQtZnJhbWUgLmNhcmQtaW4tZnJhbWUgLmNhcmQtaWNvbiB7XG4gIHdpZHRoOiAxNnB4O1xuICBoZWlnaHQ6IDE2cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktc2VsZjogY2VudGVyO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJvcmRlcjogdmFyKC0tYXV0aG1lLWN1c3RvbV9fcHJpbWFyeS0yKSBzb2xpZCAxcHg7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAuY2FyZC10eXBlLXNlbGVjdCAuY2FyZC1vdXQtZnJhbWUgLmNhcmQtaW4tZnJhbWUgLmNhcmQtaW4tZnJhbWUgLmNhcmQtaWNvbjo6YWZ0ZXIge1xuICBjb250ZW50OiBcIiBcIjtcbiAgd2lkdGg6IDhweDtcbiAgaGVpZ2h0OiA4cHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYXV0aG1lLWN1c3RvbV9fcHJpbWFyeS0yKTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjogYXV0bztcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSA1MDBtcztcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1jb250ZW50IC5jYXJkLXR5cGUtc2VsZWN0IC5jYXJkLW91dC1mcmFtZTphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHZhcigtLWF1dGhtZS1jdXN0b21fX3ByaW1hcnktMikgMTAlLCB0cmFuc3BhcmVudCAxMC4wMSUpO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCU7XG4gIHRyYW5zZm9ybTogc2NhbGUoMTAsIDEwKTtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MsIG9wYWNpdHkgMC41cztcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1jb250ZW50IC5jYXJkLXR5cGUtc2VsZWN0IC5jYXJkLW91dC1mcmFtZTphY3RpdmU6YWZ0ZXIge1xuICB0cmFuc2Zvcm06IHNjYWxlKDAsIDApO1xuICBvcGFjaXR5OiAwLjM7XG4gIHRyYW5zaXRpb246IDBzO1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLmNhcmQtdHlwZS1zZWxlY3QgLmNhcmQtb3V0LWZyYW1lLmFjdGl2ZSB7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tYXV0aG1lLWN1c3RvbV9fcHJpbWFyeS0yKTtcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1jb250ZW50IC5jYXJkLXR5cGUtc2VsZWN0IC5jYXJkLW91dC1mcmFtZS5hY3RpdmUgLmNhcmQtaW4tZnJhbWUgLmNhcmQtaWNvbjo6YWZ0ZXIge1xuICBjb250ZW50OiBcIiBcIjtcbiAgd2lkdGg6IDhweDtcbiAgaGVpZ2h0OiA4cHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYXV0aG1lLWN1c3RvbV9fcHJpbWFyeS0yKTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjogYXV0bztcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSA1MDBtcztcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1jb250ZW50IC5tZW51LWNvbnRlbnQtZm9vdGVyIHtcbiAgbWFyZ2luLXRvcDogNTBweDtcbiAgcGFkZGluZzogMTBweCAxMHB4IDQwcHg7XG4gIHdpZHRoOiAxMDAlO1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLm1lbnUtY29udGVudC1mb290ZXIgLm1lbnUtY29udGVudC1mb290ZXItY29udGVudCB7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBmb250LXNpemU6IHZhcigtLWF1dGhtZS1mb250LXNtYWxsKTtcbiAgY29sb3I6IHZhcigtLWF1dGhtZS1tZW51LWZvb3Rlcik7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAubWVudS1jb250ZW50LWZvb3RlciAubWVudS1jb250ZW50LWZvb3Rlci1jb250ZW50IC5mb290ZXItY29uZmlybS1idXR0b24ge1xuICB3aWR0aDogOTAlO1xuICBtYXJnaW46IDAgYXV0bztcbiAgaGVpZ2h0OiA0OHB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hdXRobWUtY3VzdG9tX19wcmltYXJ5LTIpO1xuICBib3gtc2hhZG93OiA0cHggNHB4IDE2cHggcmdiYSgwLCAxOTMsIDE4MiwgMC4yNSk7XG4gIGJvcmRlci1yYWRpdXM6IDI0cHg7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogdmFyKC0tYXV0aG1lLWZvbnQtbWlkKTtcbiAgbWF4LXdpZHRoOiAzNzVweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBib3JkZXIgNTAwbXMsIGJhY2tncm91bmQtY29sb3IgMzAwbXM7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAubWVudS1jb250ZW50LWZvb3RlciAubWVudS1jb250ZW50LWZvb3Rlci1jb250ZW50IC5mb290ZXItY29uZmlybS1idXR0b246YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBiYWNrZ3JvdW5kLWltYWdlOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCB2YXIoLS1hdXRobWUtY3VzdG9tX19wcmltYXJ5LTEpIDEwJSwgdHJhbnNwYXJlbnQgMTAuMDElKTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlO1xuICB0cmFuc2Zvcm06IHNjYWxlKDEwLCAxMCk7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzLCBvcGFjaXR5IDAuNXM7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAubWVudS1jb250ZW50LWZvb3RlciAubWVudS1jb250ZW50LWZvb3Rlci1jb250ZW50IC5mb290ZXItY29uZmlybS1idXR0b246YWN0aXZlOmFmdGVyIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLCAwKTtcbiAgb3BhY2l0eTogMC4zO1xuICB0cmFuc2l0aW9uOiAwcztcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1jb250ZW50IC5tZW51LWNvbnRlbnQtZm9vdGVyIC5tZW51LWNvbnRlbnQtZm9vdGVyLWNvbnRlbnQgLmZvb3Rlci1jb25maXJtLWJ1dHRvbi5kaXNhYmxlIHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWF1dGhtZS1kaXNhYmxlKTtcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1jb250ZW50IC5tZW51LWNvbnRlbnQtZm9vdGVyIC5tZW51LWNvbnRlbnQtZm9vdGVyLWNvbnRlbnQgLmZvb3Rlci1zdGF0ZW1lbnQge1xuICBtYXJnaW4tdG9wOiAxMHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5saXZlbmVzcy1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lciB2aWRlbyB7XG4gIHRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpO1xufVxuLmxpdmVuZXNzLWNvbnRhaW5lciAudmlkZW8tY29udGFpbmVyIC50aXRsZSB7XG4gIHRvcDogY2FsYygyNnZoIC0gNTVweCk7XG59XG4ubGl2ZW5lc3MtY29udGFpbmVyIC52aWRlby1jb250YWluZXIgLnN0YXR1cyB7XG4gIHRvcDogNzR2aDtcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLmZhY2UtbWFzayB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMTAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgdG9wOiAwO1xuICBib3R0b206IDA7XG4gIGJveC1zaGFkb3c6ICNmZmZmZmYgMHB4IDBweCAwcHggMjAwMHB4O1xuICBoZWlnaHQ6IDQ4dmg7XG4gIG1hcmdpbjogYXV0bztcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAtLWI6IDBweDtcbiAgLS1jOiB0cmFuc3BhcmVudDtcbiAgLS13OiAyN3B4O1xuICAtLXI6IDUwJTtcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLmZhY2UtbWFzay5wYXNzIHtcbiAgLS1jOiB2YXIoLS1zY2FubmVyLXBhc3MtY29sb3IpO1xufVxuLmxpdmVuZXNzLWNvbnRhaW5lciAuZmFjZS1tYXNrLmVycm9yIHtcbiAgLS1jOiB2YXIoLS1zY2FubmVyLWVycm9yLWNvbG9yKTtcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLmZhY2UtbWFzazo6YmVmb3JlIHtcbiAgY29udGVudDogXCJcIjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGJhY2tncm91bmQ6IHZhcigtLWMsIHJlZCk7XG4gIHBhZGRpbmc6IDZweDtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcik7XG4gIG1hc2s6IGxpbmVhci1ncmFkaWVudCgjZmZmIDAgMCkgdG9wL2NhbGMoMTAwJSAtIDIgKiB2YXIoLS13KSkgdmFyKC0tYiksIGxpbmVhci1ncmFkaWVudCgjZmZmIDAgMCkgYm90dG9tL2NhbGMoMTAwJSAtIDIgKiB2YXIoLS13KSkgdmFyKC0tYiksIGxpbmVhci1ncmFkaWVudCgjZmZmIDAgMCkgbGVmdC92YXIoLS1iKSBjYWxjKDEwMCUgLSAyICogdmFyKC0tdykpLCBsaW5lYXItZ3JhZGllbnQoI2ZmZiAwIDApIHJpZ2h0L3ZhcigtLWIpIGNhbGMoMTAwJSAtIDIgKiB2YXIoLS13KSksIGxpbmVhci1ncmFkaWVudCgjZmZmIDAgMCkgY29udGVudC1ib3gsIGxpbmVhci1ncmFkaWVudCgjZmZmIDAgMCk7XG4gIG1hc2stY29tcG9zaXRlOiBleGNsdWRlO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xufVxuLmxpdmVuZXNzLWNvbnRhaW5lciAudGV4dC1wYW5lbCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMTAzO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB3aWR0aDogMTAwdnc7XG59XG4ubGl2ZW5lc3MtY29udGFpbmVyIC50ZXh0LXRpdGxlIHtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgY29sb3I6ICM0NzRhNTM7XG59XG4ubGl2ZW5lc3MtY29udGFpbmVyIC50ZXh0LWhpbnQge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDYwLCA2MCwgNjAsIDAuNyk7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgY29sb3I6ICNmZmZmZmY7XG4gIHBhZGRpbmc6IDhweCAxNHB4O1xufVxuLmxpdmVuZXNzLWNvbnRhaW5lciAudmlkZW8tY29udGFpbmVyX19jbG9zZS5hdXRobWUtaGlkZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ubGl2ZW5lc3MtY29udGFpbmVyIC5saXZlbmVzcy1ndWlkZS1wYW5lbCB7XG4gIGhlaWdodDogMTAwJTtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDYwcHg7XG4gIGxlZnQ6IDBweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGluc2V0OiAwcHg7XG4gIHBhZGRpbmc6IDEwcHggMTZweDtcbiAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgZGlzcGxheTogZ3JpZDtcbiAgei1pbmRleDogMjAwO1xufVxuLmxpdmVuZXNzLWNvbnRhaW5lciAubGl2ZW5lc3MtZ3VpZC1oZWFkZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiAwcHg7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDQycHg7XG59XG4ubGl2ZW5lc3MtY29udGFpbmVyIC5saXZlbmVzcy1ndWlkZS1oZWFkZXItbGVmdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDhweCAyNHB4O1xuICBnYXA6IDVweDtcbiAgd2lkdGg6IDMwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBmbGV4OiBub25lO1xuICBvcmRlcjogMDtcbiAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgZmxleC1ncm93OiAxO1xufVxuLmxpdmVuZXNzLWNvbnRhaW5lciAubGl2ZW5lc3MtZ3VpZGUtaGVhZGVyLXJpZ2h0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogOHB4IDI0cHggOHB4IDhweDtcbiAgZ2FwOiAxMHB4O1xuICB3aWR0aDogMzAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGZsZXg6IG5vbmU7XG4gIG9yZGVyOiAyO1xuICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICBmbGV4LWdyb3c6IDE7XG59XG4ubGl2ZW5lc3MtY29udGFpbmVyIC5saXZlbmVzcy1ndWlkZS1oZWFkZXItdGl0bGUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiAwcHg7XG4gIGdhcDogMTBweDtcbiAgaGVpZ2h0OiAxMDAlO1xuICBmbGV4OiBub25lO1xuICBvcmRlcjogMTtcbiAgZmxleC1ncm93OiAwO1xufVxuLmxpdmVuZXNzLWNvbnRhaW5lciAubGl2ZW5lc3MtZ3VpZGUtaGVhZGVyLXRpdGxlLXRleHQge1xuICBoZWlnaHQ6IDEwMCU7XG4gIGZvbnQtZmFtaWx5OiBcIk5vdG8gU2FucyBUQ1wiO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgbGluZS1oZWlnaHQ6IDI4cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgY29sb3I6ICM0NzRhNTM7XG4gIGZsZXg6IG5vbmU7XG4gIG9yZGVyOiAwO1xuICBmbGV4LWdyb3c6IDE7XG59XG4ubGl2ZW5lc3MtY29udGFpbmVyIC5saXZlbmVzcy1ndWlkZS1pbWctY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgdG9wOiA5MHB4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgd2lkdGg6IDEwMCU7XG59XG4ubGl2ZW5lc3MtY29udGFpbmVyIC5saXZlbmVzcy1ndWlkLWltZyB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAzMjRweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2UxZTNlNTtcbiAgYm9yZGVyLXJhZGl1czogMTJweDtcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWhpbnQtZ3JvdXAge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi10b3A6IDIwcHg7XG59XG4ubGl2ZW5lc3MtY29udGFpbmVyIC5saXZlbmVzcy1oaW50LWdyb3VwID4gdWwge1xuICBwYWRkaW5nLWxlZnQ6IDBweDtcbiAgbWF4LXdpZHRoOiAyNzlweDtcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWhpbnQtZ3JvdXAgPiB1bCA+IGxpIHtcbiAgZm9udC1mYW1pbHk6IFwiTm90byBTYW5zIFRDXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgbWFyZ2luOiA0cHggMHB4O1xuICBjb2xvcjogIzQ3NGE1Mztcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWhpbnQtZ3JvdXAgPiB1bCA+IGxpOjptYXJrZXIge1xuICBjb2xvcjogIzI1NjA4YTtcbiAgZm9udC1zaXplOiA2cHg7XG59XG4ubGl2ZW5lc3MtY29udGFpbmVyIC5saXZlbmVzcy1ndWlkLWNvbnRpbnVlLWJ0biB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB3aWR0aDogMzQzcHg7XG4gIGhlaWdodDogNDhweDtcbiAgYmFja2dyb3VuZDogdmFyKC0tYXV0aG1lLWN1c3RvbV9fcHJpbWFyeS0yKTtcbiAgYm94LXNoYWRvdzogNHB4IDRweCAxNnB4IHJnYmEoMCwgMTkzLCAxODIsIDAuMjUpO1xuICBib3JkZXItcmFkaXVzOiAyNHB4O1xuICBjb2xvcjogI2ZmZmZmZjtcbiAgbWFyZ2luOiAzMHB4IGF1dG87XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWd1aWRlLWNsb3NlIHtcbiAgd2lkdGg6IDI0cHg7XG4gIGhlaWdodDogMjRweDtcbiAgZmxleDogbm9uZTtcbiAgb3JkZXI6IDA7XG4gIGZsZXgtZ3JvdzogMDtcbiAgYmFja2dyb3VuZC1pbWFnZTogdmFyKC0tYXV0aG1lLWNsb3NlLWljb24taW1hZ2UpO1xufVxuLmxpdmVuZXNzLWNvbnRhaW5lciAubGl2ZW5lc3MtZ3VpZGUtY2xvc2UuYXV0aG1lLWhpZGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA4NDBweCkge1xuICAubGl2ZW5lc3MtY29udGFpbmVyIC5saXZlbmVzcy1ndWlkZS1iYWNrZ3JvdW5kIHtcbiAgICB3aWR0aDogMTAwdnc7XG4gICAgaGVpZ2h0OiAxMDB2aDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgei1pbmRleDogOTk5O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC42NSk7XG4gIH1cbiAgLmxpdmVuZXNzLWNvbnRhaW5lciAubGl2ZW5lc3MtZ3VpZGUtYmFja2dyb3VuZCAubGl2ZW5lc3MtZ3VpZGUtcGFuZWwge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogODAwcHg7XG4gICAgaGVpZ2h0OiA2ODRweDtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgfVxuICAubGl2ZW5lc3MtY29udGFpbmVyIC5saXZlbmVzcy1ndWlkZS1iYWNrZ3JvdW5kIC5saXZlbmVzcy1ndWlkZS1wYW5lbCAubGl2ZW5lc3MtZ3VpZC1oZWFkZXIge1xuICAgIG1hcmdpbi10b3A6IDMwcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgfVxuICAubGl2ZW5lc3MtY29udGFpbmVyIC5saXZlbmVzcy1ndWlkZS1iYWNrZ3JvdW5kIC5saXZlbmVzcy1ndWlkZS1wYW5lbCAubGl2ZW5lc3MtZ3VpZGUtZGl2aWRlIHtcbiAgICB3aWR0aDogNzAlO1xuICAgIGhlaWdodDogMXB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWF1dGhtZS1kaXZpZGUpO1xuICB9XG4gIC5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWd1aWRlLWJhY2tncm91bmQgLmxpdmVuZXNzLWd1aWRlLXBhbmVsIC5saXZlbmVzcy1ndWlkZS1jb250ZW50IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbWFyZ2luOiBhdXRvO1xuICB9XG4gIC5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWd1aWRlLWJhY2tncm91bmQgLmxpdmVuZXNzLWd1aWRlLXBhbmVsIC5saXZlbmVzcy1ndWlkZS1jb250ZW50IC5saXZlbmVzcy1ndWlkZS1pbWctY29udGFpbmVyIHtcbiAgICB3aWR0aDogaW5pdGlhbDtcbiAgfVxuICAubGl2ZW5lc3MtY29udGFpbmVyIC5saXZlbmVzcy1ndWlkZS1iYWNrZ3JvdW5kIC5saXZlbmVzcy1ndWlkZS1wYW5lbCAubGl2ZW5lc3MtZ3VpZGUtY29udGVudCAubGl2ZW5lc3MtZ3VpZGUtaW1nLWNvbnRhaW5lciAubGl2ZW5lc3MtZ3VpZC1pbWcge1xuICAgIHdpZHRoOiBpbml0aWFsO1xuICB9XG4gIC5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWd1aWRlLWJhY2tncm91bmQgLmxpdmVuZXNzLWd1aWRlLXBhbmVsIC5saXZlbmVzcy1ndWlkZS1jb250ZW50IC5saXZlbmVzcy1oaW50LWdyb3VwIHtcbiAgICB3aWR0aDogaW5pdGlhbDtcbiAgICBwYWRkaW5nOiAycmVtO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLmxpdmVuZXNzLWNvbnRhaW5lciAuZmFjZS1tYXNrIHtcbiAgICBoZWlnaHQ6IDUydmg7XG4gIH1cbn1cbjpyb290IHtcbiAgLS1hdXRobWUtZm9udC1zbWFsbDogMTJweDtcbiAgLS1hdXRobWUtZm9udC1taWQ6IDE2cHg7XG4gIC0tYXV0aG1lLWZvbnQtbGFyZ2U6IDE4cHg7XG4gIC0tYXV0aG1lLW91dGVyOiByZ2JhKDAsIDAsIDAsIDAuNjUpO1xuICAtLWF1dGhtZS1tZW51LWZvb3RlcjogI2I0YjdiZDtcbiAgLS1hdHVobWUtYnRuLWFjdGl2ZTogIzAwYjFhNztcbiAgLS1hdXRobWUtcmV0cnktYnRuLWFjdGl2ZTogI2VmZmZmZTtcbiAgLS1hdXRobWUtZGl2aWRlOiAjZTFlM2U1O1xuICAtLWF1dGhtZS1kaXNhYmxlOiAjZGFkYWRhO1xuICAtLWF1dGhtZS1jdXN0b21fX3ByaW1hcnktMTogIzI1NjA4YTtcbiAgLS1hdXRobWUtY3VzdG9tX19wcmltYXJ5LTI6ICMwMGMxYjY7XG4gIC0tYXV0aG1lLW5ldXRyYWxfX3doaXRlOiAjZmZmZmZmO1xuICAtLWF1dGhtZS1uZXV0cmFsX193aGl0ZTogIzAwMDAwMDtcbiAgLS1hdXRobWUtYnJhbmRfX2F1dGhtZS0xOiAjN2NmZmY5O1xuICAtLWF1dGhtZS1icmFuZF9fZXJyb3I6ICNmZjcwNzA7XG59XG5cbjpyb290IHtcbiAgLS1hdXRobWUtY2xvc2UtaWNvbi1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCa0FBQUFZQ0FZQUFBQVB0VmJHQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQURvU1VSQlZIZ0I3WlRORFlKQUVJVWYwb2dOZ0I0b2dEb0lNZkZHRjJBWEhEbWdkY0NkaTlDQW5lQk9OSVpzMXQyM3hvTW1mQW5oSnp2N1pkaVpBVmIrZ3V4UWxISjlLeWJVUCtSNWtjNUFveDdUYUo5Z3VnNDlDQUZtVkJLemk1TitISWViVlNJTG9qZ0pFQ0JsUkFzQjFQMTBidXNHcmt5RWFSdzZScVFMTG0xZG1mWXpTaGdSSzdCS2JDSWZnUkNBSU11TFNxMHNud0dkS295VUZRZ2hDTFNNdGo0Q1lRT1dqZHJXOW02QnltUjVCdks3OE1pRzdpT254SERJUjU4K2NrcmVWUkhiUjA2SnEweDlST0VuQWwrUmJVQlNaYXFML0FZazBMTjk4QktwR05PQVhQazk3bU9rd29nZ1pkS2pBQUFBQUVsRlRrU3VRbUNDXCIpO1xuICAtLWF1dGhtZS1iYWNrLWljb24taW1hZ2U6IHVybChcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFEN1NVUkJWSGdCM1pVOUVvSXdFSVZYdVFBM01DV2wzRUE3eTNBQ2g1dm9TZVFJV0ZJNTNzQ1N6dFl5cFIyK2pIR0d3WVQ4TnZwbWRoSVcrQjRoUDB2MDYxcFFnRGpuYXpRWGhFQ1ViZHNLMDdOTDh0UUluaU9ZQ2twaU1JRkxIZkgxdDdsM25IK1JBWDZ3dmVjMGdxcXE5aUZ3S2VzSUpId1lobWFVY29aYkRXTGhzd1lwNEVZRERid0d2S0VBZlJsZ3RUQTA5eFJ3S2QwcUVpbytXbEdFc21taTcvdG5VUlFkdWp0Nkw4c05ybVgrU2dIS2RFbkFIb0NlMGVXeEpwbnBCbUJDWTVJajM1R0hyQnROVGJyY3hVeWxHa3g2VFk1eU9vdGlUSHdPT3haaTRsVndRa3k4SzVyR3BKeXJDYUVsazZFNXlUN2dXL3BydlFDSHBuYmRTSFhqL0FBQUFBQkpSVTVFcmtKZ2dnPT1cIik7XG59XG4iXX0= */
package/index.cjs CHANGED
@@ -76,7 +76,8 @@ const defaultLivenessConfig = {
76
76
  active: true,
77
77
  icon: DEFAULT_ICON_URI,
78
78
  showIntroPage: false,
79
- headerMode: 1
79
+ headerMode: 1,
80
+ showCloseButton: true
80
81
  };
81
82
  const defaultIdRecognitionConfig = {
82
83
  icon: DEFAULT_ICON_URI,
@@ -88,7 +89,8 @@ const defaultIdRecognitionConfig = {
88
89
  displayResultPage: false,
89
90
  showStatement: true,
90
91
  headerMode: 1,
91
- blockFraud: false
92
+ blockFraud: false,
93
+ showCloseButton: true
92
94
  };
93
95
 
94
96
  function setCorrectViewHeight() {
@@ -132,6 +134,9 @@ const renderBasicUI = userConfig => {
132
134
  const closeIcon = document.createElement('img');
133
135
  closeIcon.classList.add('video-container__close');
134
136
  closeIcon.src = util.Icon.CloseIcon;
137
+ if (!userConfig.showCloseButton) {
138
+ closeIcon.classList.add('authme-hide');
139
+ }
135
140
  const video = document.createElement('video');
136
141
  video.autoplay = true;
137
142
  video.muted = true;
@@ -158,6 +163,9 @@ var MASK_STYLE;
158
163
  MASK_STYLE[MASK_STYLE["DESKTOP_RATIO"] = 1.2] = "DESKTOP_RATIO";
159
164
  MASK_STYLE[MASK_STYLE["DEFAULT_RATIO"] = 0.72] = "DEFAULT_RATIO";
160
165
  MASK_STYLE[MASK_STYLE["HEIGHT_RATIO"] = 0.48] = "HEIGHT_RATIO";
166
+ MASK_STYLE[MASK_STYLE["MASK_TOP_PERCENT"] = 25.5] = "MASK_TOP_PERCENT";
167
+ MASK_STYLE[MASK_STYLE["MASK_TITLE_MARGIN"] = 24] = "MASK_TITLE_MARGIN";
168
+ MASK_STYLE[MASK_STYLE["TITLE_TEXT_FONT_SIZE"] = 18] = "TITLE_TEXT_FONT_SIZE";
161
169
  })(MASK_STYLE || (MASK_STYLE = {}));
162
170
  const renderLivenessUI = config => {
163
171
  const translateService = core.getTranslateInstance();
@@ -183,12 +191,15 @@ const renderLivenessUI = config => {
183
191
  //TODO: setup mask width/height
184
192
  const maskHeight = window.outerHeight * MASK_STYLE.HEIGHT_RATIO;
185
193
  const maskRatio = window.innerWidth > MASK_STYLE.DESKTOP_LIMIT ? MASK_STYLE.DESKTOP_RATIO : MASK_STYLE.DEFAULT_RATIO;
186
- const maskWidth = Math.round(maskHeight * maskRatio).toString();
194
+ const maskWidth = Math.round(maskHeight * maskRatio);
187
195
  faceMask.style.width = `${maskWidth}px`;
196
+ faceMask.style.height = `${maskHeight}px`;
188
197
  // text panel
189
198
  const titleTextPanel = createTextPanel();
190
199
  titleTextPanel.classList.add('title');
191
200
  const titleText = createTextTitle();
201
+ //由於setStatusTop會與titile font size 相關,所以直接在這邊用innerStyle修改,避免未來CSS污染導致setStatusTop失效
202
+ titleText.style.fontSize = `${MASK_STYLE.TITLE_TEXT_FONT_SIZE}px`;
192
203
  const statusTextPanel = createTextPanel();
193
204
  statusTextPanel.classList.add('status');
194
205
  const statusText = createTextHint();
@@ -199,13 +210,34 @@ const renderLivenessUI = config => {
199
210
  // Set init text
200
211
  titleText.textContent = translateService.translate('liveness.title');
201
212
  statusText.textContent = translateService.translate('liveness.error.noFace');
213
+ setStatusTextTop({
214
+ maskHeight,
215
+ statusTextPanel,
216
+ titleTextPanel
217
+ });
202
218
  return {
203
- titleText,
204
219
  statusText,
205
- faceMask
220
+ faceMask,
221
+ titleTextPanel,
222
+ statusTextPanel
206
223
  };
207
224
  };
208
- const renderLivenessGuideUI = container => {
225
+ const setStatusTextTop = params => {
226
+ const {
227
+ maskHeight,
228
+ maskTop,
229
+ titleTextPanel,
230
+ statusTextPanel
231
+ } = params;
232
+ const _maskTop = maskTop !== null && maskTop !== void 0 ? maskTop : window.innerHeight / 2 - maskHeight / 2;
233
+ const _maskBotton = _maskTop + maskHeight;
234
+ titleTextPanel.style.top = `${_maskTop - MASK_STYLE.MASK_TITLE_MARGIN - MASK_STYLE.TITLE_TEXT_FONT_SIZE}px`;
235
+ statusTextPanel.style.top = `${_maskBotton + MASK_STYLE.MASK_TITLE_MARGIN}px`;
236
+ };
237
+ const renderLivenessGuideUI = ({
238
+ container,
239
+ showCloseButton
240
+ }) => {
209
241
  const translateService = core.getTranslateInstance();
210
242
  const createLivenessBackground = () => {
211
243
  const ele = document.createElement('div');
@@ -245,6 +277,9 @@ const renderLivenessGuideUI = container => {
245
277
  const createCloseBtn = () => {
246
278
  const ele = document.createElement('i');
247
279
  ele.classList.add('liveness-guide-close');
280
+ if (!showCloseButton) {
281
+ ele.classList.add('authme-hide');
282
+ }
248
283
  return ele;
249
284
  };
250
285
  const createHeaderTitle = () => {
@@ -419,11 +454,14 @@ function startLiveness(config) {
419
454
  headerTitle
420
455
  } = renderBasicUI({
421
456
  headerIcon: config.livenessConfig.icon,
422
- headerMode: config.livenessConfig.headerMode
457
+ headerMode: config.livenessConfig.headerMode,
458
+ showCloseButton: config.livenessConfig.showCloseButton
423
459
  });
424
460
  const {
425
461
  statusText,
426
- faceMask
462
+ faceMask,
463
+ titleTextPanel,
464
+ statusTextPanel
427
465
  } = renderLivenessUI({
428
466
  container,
429
467
  videoContainer,
@@ -504,14 +542,55 @@ function startLiveness(config) {
504
542
  const maskWidth = Math.round(maskHeight * 0.72).toString();
505
543
  faceMask.style.width = `${maskWidth}px`;
506
544
  }), rxjs.takeUntil(unsubscribe$)).subscribe();
507
- rxjs.fromEvent(closeIcon, 'click').pipe(rxjs.switchMap(() => reset()), rxjs.takeUntil(unsubscribe$)).subscribe();
545
+ const closeIconHandler$ = rxjs.fromEvent(closeIcon, 'click').pipe(rxjs.switchMap(() => {
546
+ // reset();
547
+ throw new core.AuthmeError(core.ErrorCode.USER_CANCEL);
548
+ }), rxjs.takeUntil(unsubscribe$));
508
549
  const resizedError$ = makeResizedError$(unsubscribe$);
509
550
  // Start
510
- const step1 = rxjs.defer(() => renderLivenessGuideUI(container));
551
+ const step1 = rxjs.defer(() => renderLivenessGuideUI({
552
+ container: container,
553
+ showCloseButton: config.livenessConfig.showCloseButton
554
+ }));
511
555
  const step2 = rxjs.of({}).pipe(rxjs.tap(() => {
512
556
  util.startSpinner(translateService.translate('general.loading'));
513
557
  headerTitle.textContent = translateService.translate('liveness.header.liveness');
514
- }), rxjs.concatMap(() => rxjs.combineLatest([requestCamera$, init$])), rxjs.tap(() => util.stopSpinner()), rxjs.switchMap(() => rxjs.from(util.waitTime(1)).pipe(rxjs.tap(() => videoContainer.style.zIndex = '101'))), rxjs.switchMap(() => rxjs.from(util.getCanvasSize(video))), rxjs.switchMap(canvasSizeInfo => rxjs.from(config.onStart(canvasSizeInfo.canvasWidth, canvasSizeInfo.canvasHeight)).pipe(sendFrame(canvasSizeInfo, canvas, video, config.onFrame, livenessConfig.fasMaxFps, true, 'all'), rxjs.tap(({
558
+ setCorrectViewHeight();
559
+ }), rxjs.concatMap(() => rxjs.combineLatest([requestCamera$, init$])), rxjs.tap(() => util.stopSpinner()), rxjs.switchMap(() => rxjs.from(util.waitTime(1)).pipe(rxjs.tap(() => videoContainer.style.zIndex = '101'))), rxjs.switchMap(() => rxjs.from(util.getCanvasSize(video))), rxjs.switchMap(canvasSizeInfo => rxjs.from(config.onStart(canvasSizeInfo)).pipe(
560
+ /*
561
+ 因為pipe在type的上限只有9個,超過就會被指派成unknow,所以多一層pipe
562
+ mask should reflect real ROI boundary
563
+ */
564
+ rxjs.tap(params => {
565
+ // possible ROI,it means the boundary of validation viewport. TonyQ@20230106
566
+ // "faceROI": {
567
+ // "fLeft": 0.15000000596046448,
568
+ // "fTop": 0.2549999952316284,
569
+ // "fRight": 0.8500000238418579,
570
+ // "fBottom": 0.7450000047683716
571
+ // },
572
+ // ROI would work with following parameters.
573
+ // "fNotAtCenterTh": 0.25,
574
+ // "fFaceTooSmallTh": 0.6000000238418579,
575
+ // "fFaceTooLargeTh": 1.2000000476837158
576
+ const {
577
+ fLeft,
578
+ fTop,
579
+ fRight,
580
+ fBottom
581
+ } = params.faceROI;
582
+ faceMask.style.margin = '0';
583
+ faceMask.style.left = fLeft * 100 + '%';
584
+ faceMask.style.top = fTop * 100 + '%';
585
+ faceMask.style.width = (fRight - fLeft) * 100 + '%';
586
+ faceMask.style.height = (fBottom - fTop) * 100 + '%';
587
+ setStatusTextTop({
588
+ maskTop: window.innerHeight * fTop,
589
+ maskHeight: window.innerHeight * (fBottom - fTop),
590
+ titleTextPanel,
591
+ statusTextPanel
592
+ });
593
+ })).pipe(sendFrame(canvasSizeInfo, canvas, video, config.onFrame, livenessConfig.fasMaxFps, true, 'all'), rxjs.tap(({
515
594
  result
516
595
  }) => applyTextByResult(result)), rxjs.filter(({
517
596
  result
@@ -526,7 +605,7 @@ function startLiveness(config) {
526
605
  return ((_a = config.livenessConfig.showIntroPage) !== null && _a !== void 0 ? _a : false) ? step1 : rxjs.of('continue');
527
606
  }, rxjs.concatMap(step1Result => {
528
607
  if (step1Result === 'continue') {
529
- return rxjs.merge(step2, resizedError$);
608
+ return rxjs.merge(step2, resizedError$, closeIconHandler$);
530
609
  } else if (step1Result === 'cancel') {
531
610
  return rxjs.throwError(() => new core.AuthmeError(core.ErrorCode.USER_CANCEL));
532
611
  } else {
@@ -550,11 +629,11 @@ function startLiveness(config) {
550
629
  } catch (error) {
551
630
  // no video, ignore
552
631
  }
553
- yield config.onDestroy();
632
+ container.remove();
554
633
  video.srcObject = null;
555
- document.body.removeChild(container);
556
634
  unsubscribe$.next();
557
635
  unsubscribe$.complete();
636
+ yield config.onDestroy();
558
637
  });
559
638
  }
560
639
  }
@@ -10041,7 +10120,8 @@ function startOCR(config) {
10041
10120
  headerSubtitle
10042
10121
  } = renderBasicUI({
10043
10122
  headerIcon: config.ocrConfig.icon,
10044
- headerMode: config.ocrConfig.headerMode
10123
+ headerMode: config.ocrConfig.headerMode,
10124
+ showCloseButton: config.ocrConfig.showCloseButton
10045
10125
  });
10046
10126
  const {
10047
10127
  antiFraudInstructionContainer,
@@ -10187,6 +10267,14 @@ function startOCR(config) {
10187
10267
  statusText.textContent = translateService.translate('verify.error.wrongCardType');
10188
10268
  setBorderColor('error');
10189
10269
  break;
10270
+ case idRecognition.EAuthMePassportServiceStatus.NotAligned:
10271
+ statusText.textContent = translateService.translate('verify.error.mismatch');
10272
+ setBorderColor('error');
10273
+ break;
10274
+ case idRecognition.EAuthMePassportServiceStatus.Reflective:
10275
+ statusText.textContent = translateService.translate('verify.error.reflective');
10276
+ setBorderColor('error');
10277
+ break;
10190
10278
  }
10191
10279
  };
10192
10280
  const init = retry => canvasSizeInfo$.pipe(rxjs.take(1), rxjs.switchMap(canvasSizeInfo => rxjs.from(config.setFrameSize(canvasSizeInfo.canvasWidth, canvasSizeInfo.canvasHeight)).pipe(rxjs.switchMap(() => util.checkOnlineStatus(translateService.translate('network.error.offline'))), rxjs.switchMap(() => config.ocrStart(getCardBorderPoint(), type, retry)), rxjs.tap(() => util.stopSpinner()), rxjs.map(() => canvasSizeInfo))));
@@ -10232,6 +10320,7 @@ function startOCR(config) {
10232
10320
  const flow$ = config.acceptTypes.map(x => createFlowByType(x)).reduce((prev, cur) => prev.pipe(rxjs.switchMap(() => cur)), canvasSizeInfo$.pipe(rxjs.take(1), rxjs.tap(() => setUIByType(config.acceptTypes[0])), rxjs.switchMap(canvasSizeInfo => rxjs.from(config.init(canvasSizeInfo.canvasWidth, canvasSizeInfo.canvasHeight)).pipe(rxjs.tap(x => ocrConfig = x), rxjs.tap(() => util.stopSpinner()))))).pipe(rxjs.tap(() => {
10233
10321
  util.hideElement(videoContainer);
10234
10322
  util.startSpinner(translateService.translate('verify.uploading'));
10323
+ setCorrectViewHeight();
10235
10324
  }), rxjs.switchMap(() => config.onSuccess()), rxjs.tap(() => {
10236
10325
  util.stopSpinner();
10237
10326
  container.style.display = 'none';
@@ -10726,6 +10815,13 @@ class LivenessVerifyModule {
10726
10815
  const params = yield this.fasService.getParams();
10727
10816
  params.timeoutSec = resp.parameters.fasTimeout || params.timeoutSec;
10728
10817
  params.fFASTh = resp.parameters.fasThreshold || params.fFASTh;
10818
+ // sample code for manually change faceROI when need. TonyQ@20230106
10819
+ // this.params.faceROI = {
10820
+ // fLeft: 0.3,
10821
+ // fTop: 0.3,
10822
+ // fRight: 0.7,
10823
+ // fBottom: 0.7,
10824
+ // };
10729
10825
  yield this.fasService.setParams(params);
10730
10826
  return resp.parameters;
10731
10827
  } catch (e) {
@@ -10756,16 +10852,29 @@ class LivenessVerifyModule {
10756
10852
  throw e;
10757
10853
  }
10758
10854
  }),
10759
- onStart: (width, height) => __awaiter(this, void 0, void 0, function* () {
10760
- frameWidth = width;
10761
- frameHeight = height;
10762
- yield this.fasService.setFrameSize(width, height);
10855
+ onStart: canvasSizeInfoCan => __awaiter(this, void 0, void 0, function* () {
10856
+ frameWidth = canvasSizeInfoCan.canvasWidth;
10857
+ frameHeight = canvasSizeInfoCan.canvasHeight;
10858
+ const params = yield this.fasService.getParams();
10859
+ const oldROI = params.faceROI;
10860
+ const actualHight = frameHeight * (oldROI.fBottom - oldROI.fTop);
10861
+ const actualWidth = frameWidth * (oldROI.fRight - oldROI.fLeft);
10862
+ let targetWidth = actualWidth;
10863
+ //we change the ROI when horizontal view for desktop camera.
10864
+ if (actualWidth > actualHight) {
10865
+ targetWidth = actualHight;
10866
+ const widthPercent = targetWidth / frameWidth;
10867
+ params.faceROI.fLeft = (1 - widthPercent) / 2;
10868
+ params.faceROI.fRight = 1 - (1 - widthPercent) / 2;
10869
+ }
10870
+ yield this.fasService.setParams(params);
10763
10871
  if (config.active) {
10764
10872
  yield this.fasService.setStage([liveness.EAuthMeFASServiceStage.Passive, liveness.EAuthMeFASServiceStage.OpenMouth, liveness.EAuthMeFASServiceStage.CloseMouth]);
10765
10873
  } else {
10766
10874
  yield this.fasService.setStage([liveness.EAuthMeFASServiceStage.Passive]);
10767
10875
  }
10768
- return yield this.fasService.startSession();
10876
+ yield this.fasService.startSession();
10877
+ return params;
10769
10878
  }),
10770
10879
  onFrame: (data, base64) => __awaiter(this, void 0, void 0, function* () {
10771
10880
  var _c;
@@ -10926,17 +11035,38 @@ class LivenessModule {
10926
11035
  id = resp.id;
10927
11036
  yield this.fasService.init();
10928
11037
  const params = yield this.fasService.getParams();
11038
+ // sample code for manually change faceROI when need. TonyQ@20230106
11039
+ // this.params.faceROI = {
11040
+ // fLeft: 0.3,
11041
+ // fTop: 0.3,
11042
+ // fRight: 0.7,
11043
+ // fBottom: 0.7,
11044
+ // };
10929
11045
  params.timeoutSec = resp.parameters.fasTimeout || params.timeoutSec;
10930
11046
  params.fFASTh = resp.parameters.fasThreshold || params.fFASTh;
10931
11047
  yield this.fasService.setParams(params);
10932
11048
  yield this.fasService.setStage(resp.parameters.fasStages.map(x => `EAuthMeFASServiceStage_${x}`));
10933
11049
  return resp.parameters;
10934
11050
  }),
10935
- onStart: (width, height) => __awaiter(this, void 0, void 0, function* () {
10936
- frameWidth = width;
10937
- frameHeight = height;
10938
- yield this.fasService.setFrameSize(width, height);
10939
- return yield this.fasService.startSession();
11051
+ onStart: canvasSizeInfoCan => __awaiter(this, void 0, void 0, function* () {
11052
+ frameWidth = canvasSizeInfoCan.canvasWidth;
11053
+ frameHeight = canvasSizeInfoCan.canvasHeight;
11054
+ const params = yield this.fasService.getParams();
11055
+ const oldROI = params.faceROI;
11056
+ const actualHight = frameHeight * (oldROI.fBottom - oldROI.fTop);
11057
+ const actualWidth = frameWidth * (oldROI.fRight - oldROI.fLeft);
11058
+ let targetWidth = actualWidth;
11059
+ //we change the ROI when horizontal view for desktop camera.
11060
+ if (actualWidth > actualHight) {
11061
+ targetWidth = actualHight;
11062
+ const widthPercent = targetWidth / frameWidth;
11063
+ params.faceROI.fLeft = (1 - widthPercent) / 2;
11064
+ params.faceROI.fRight = 1 - (1 - widthPercent) / 2;
11065
+ }
11066
+ yield this.fasService.setParams(params);
11067
+ yield this.fasService.setFrameSize(frameWidth, frameHeight);
11068
+ yield this.fasService.startSession();
11069
+ return params;
10940
11070
  }),
10941
11071
  onFrame: (data, base64) => __awaiter(this, void 0, void 0, function* () {
10942
11072
  var _a;
@@ -11597,7 +11727,7 @@ class AuthmeIdentityVerification extends engine.AuthmeFunctionModule {
11597
11727
  }
11598
11728
 
11599
11729
  var name = "@authme/identity-verification";
11600
- var version$1 = "2.2.1-rc.3";
11730
+ var version$1 = "2.2.1";
11601
11731
  var peerDependencies = {
11602
11732
  "core-js": "^3.6.0",
11603
11733
  "lottie-web": "^5.9.2",
package/index.js CHANGED
@@ -68,7 +68,8 @@ const defaultLivenessConfig = {
68
68
  active: true,
69
69
  icon: DEFAULT_ICON_URI,
70
70
  showIntroPage: false,
71
- headerMode: 1
71
+ headerMode: 1,
72
+ showCloseButton: true
72
73
  };
73
74
  const defaultIdRecognitionConfig = {
74
75
  icon: DEFAULT_ICON_URI,
@@ -80,7 +81,8 @@ const defaultIdRecognitionConfig = {
80
81
  displayResultPage: false,
81
82
  showStatement: true,
82
83
  headerMode: 1,
83
- blockFraud: false
84
+ blockFraud: false,
85
+ showCloseButton: true
84
86
  };
85
87
 
86
88
  function setCorrectViewHeight() {
@@ -124,6 +126,9 @@ const renderBasicUI = userConfig => {
124
126
  const closeIcon = document.createElement('img');
125
127
  closeIcon.classList.add('video-container__close');
126
128
  closeIcon.src = Icon.CloseIcon;
129
+ if (!userConfig.showCloseButton) {
130
+ closeIcon.classList.add('authme-hide');
131
+ }
127
132
  const video = document.createElement('video');
128
133
  video.autoplay = true;
129
134
  video.muted = true;
@@ -150,6 +155,9 @@ var MASK_STYLE;
150
155
  MASK_STYLE[MASK_STYLE["DESKTOP_RATIO"] = 1.2] = "DESKTOP_RATIO";
151
156
  MASK_STYLE[MASK_STYLE["DEFAULT_RATIO"] = 0.72] = "DEFAULT_RATIO";
152
157
  MASK_STYLE[MASK_STYLE["HEIGHT_RATIO"] = 0.48] = "HEIGHT_RATIO";
158
+ MASK_STYLE[MASK_STYLE["MASK_TOP_PERCENT"] = 25.5] = "MASK_TOP_PERCENT";
159
+ MASK_STYLE[MASK_STYLE["MASK_TITLE_MARGIN"] = 24] = "MASK_TITLE_MARGIN";
160
+ MASK_STYLE[MASK_STYLE["TITLE_TEXT_FONT_SIZE"] = 18] = "TITLE_TEXT_FONT_SIZE";
153
161
  })(MASK_STYLE || (MASK_STYLE = {}));
154
162
  const renderLivenessUI = config => {
155
163
  const translateService = getTranslateInstance();
@@ -175,12 +183,15 @@ const renderLivenessUI = config => {
175
183
  //TODO: setup mask width/height
176
184
  const maskHeight = window.outerHeight * MASK_STYLE.HEIGHT_RATIO;
177
185
  const maskRatio = window.innerWidth > MASK_STYLE.DESKTOP_LIMIT ? MASK_STYLE.DESKTOP_RATIO : MASK_STYLE.DEFAULT_RATIO;
178
- const maskWidth = Math.round(maskHeight * maskRatio).toString();
186
+ const maskWidth = Math.round(maskHeight * maskRatio);
179
187
  faceMask.style.width = `${maskWidth}px`;
188
+ faceMask.style.height = `${maskHeight}px`;
180
189
  // text panel
181
190
  const titleTextPanel = createTextPanel();
182
191
  titleTextPanel.classList.add('title');
183
192
  const titleText = createTextTitle();
193
+ //由於setStatusTop會與titile font size 相關,所以直接在這邊用innerStyle修改,避免未來CSS污染導致setStatusTop失效
194
+ titleText.style.fontSize = `${MASK_STYLE.TITLE_TEXT_FONT_SIZE}px`;
184
195
  const statusTextPanel = createTextPanel();
185
196
  statusTextPanel.classList.add('status');
186
197
  const statusText = createTextHint();
@@ -191,13 +202,34 @@ const renderLivenessUI = config => {
191
202
  // Set init text
192
203
  titleText.textContent = translateService.translate('liveness.title');
193
204
  statusText.textContent = translateService.translate('liveness.error.noFace');
205
+ setStatusTextTop({
206
+ maskHeight,
207
+ statusTextPanel,
208
+ titleTextPanel
209
+ });
194
210
  return {
195
- titleText,
196
211
  statusText,
197
- faceMask
212
+ faceMask,
213
+ titleTextPanel,
214
+ statusTextPanel
198
215
  };
199
216
  };
200
- const renderLivenessGuideUI = container => {
217
+ const setStatusTextTop = params => {
218
+ const {
219
+ maskHeight,
220
+ maskTop,
221
+ titleTextPanel,
222
+ statusTextPanel
223
+ } = params;
224
+ const _maskTop = maskTop !== null && maskTop !== void 0 ? maskTop : window.innerHeight / 2 - maskHeight / 2;
225
+ const _maskBotton = _maskTop + maskHeight;
226
+ titleTextPanel.style.top = `${_maskTop - MASK_STYLE.MASK_TITLE_MARGIN - MASK_STYLE.TITLE_TEXT_FONT_SIZE}px`;
227
+ statusTextPanel.style.top = `${_maskBotton + MASK_STYLE.MASK_TITLE_MARGIN}px`;
228
+ };
229
+ const renderLivenessGuideUI = ({
230
+ container,
231
+ showCloseButton
232
+ }) => {
201
233
  const translateService = getTranslateInstance();
202
234
  const createLivenessBackground = () => {
203
235
  const ele = document.createElement('div');
@@ -237,6 +269,9 @@ const renderLivenessGuideUI = container => {
237
269
  const createCloseBtn = () => {
238
270
  const ele = document.createElement('i');
239
271
  ele.classList.add('liveness-guide-close');
272
+ if (!showCloseButton) {
273
+ ele.classList.add('authme-hide');
274
+ }
240
275
  return ele;
241
276
  };
242
277
  const createHeaderTitle = () => {
@@ -411,11 +446,14 @@ function startLiveness(config) {
411
446
  headerTitle
412
447
  } = renderBasicUI({
413
448
  headerIcon: config.livenessConfig.icon,
414
- headerMode: config.livenessConfig.headerMode
449
+ headerMode: config.livenessConfig.headerMode,
450
+ showCloseButton: config.livenessConfig.showCloseButton
415
451
  });
416
452
  const {
417
453
  statusText,
418
- faceMask
454
+ faceMask,
455
+ titleTextPanel,
456
+ statusTextPanel
419
457
  } = renderLivenessUI({
420
458
  container,
421
459
  videoContainer,
@@ -496,14 +534,55 @@ function startLiveness(config) {
496
534
  const maskWidth = Math.round(maskHeight * 0.72).toString();
497
535
  faceMask.style.width = `${maskWidth}px`;
498
536
  }), takeUntil(unsubscribe$)).subscribe();
499
- fromEvent(closeIcon, 'click').pipe(switchMap(() => reset()), takeUntil(unsubscribe$)).subscribe();
537
+ const closeIconHandler$ = fromEvent(closeIcon, 'click').pipe(switchMap(() => {
538
+ // reset();
539
+ throw new AuthmeError(ErrorCode.USER_CANCEL);
540
+ }), takeUntil(unsubscribe$));
500
541
  const resizedError$ = makeResizedError$(unsubscribe$);
501
542
  // Start
502
- const step1 = defer(() => renderLivenessGuideUI(container));
543
+ const step1 = defer(() => renderLivenessGuideUI({
544
+ container: container,
545
+ showCloseButton: config.livenessConfig.showCloseButton
546
+ }));
503
547
  const step2 = of({}).pipe(tap(() => {
504
548
  startSpinner(translateService.translate('general.loading'));
505
549
  headerTitle.textContent = translateService.translate('liveness.header.liveness');
506
- }), concatMap(() => combineLatest([requestCamera$, init$])), tap(() => stopSpinner()), switchMap(() => from(waitTime(1)).pipe(tap(() => videoContainer.style.zIndex = '101'))), switchMap(() => from(getCanvasSize(video))), switchMap(canvasSizeInfo => from(config.onStart(canvasSizeInfo.canvasWidth, canvasSizeInfo.canvasHeight)).pipe(sendFrame(canvasSizeInfo, canvas, video, config.onFrame, livenessConfig.fasMaxFps, true, 'all'), tap(({
550
+ setCorrectViewHeight();
551
+ }), concatMap(() => combineLatest([requestCamera$, init$])), tap(() => stopSpinner()), switchMap(() => from(waitTime(1)).pipe(tap(() => videoContainer.style.zIndex = '101'))), switchMap(() => from(getCanvasSize(video))), switchMap(canvasSizeInfo => from(config.onStart(canvasSizeInfo)).pipe(
552
+ /*
553
+ 因為pipe在type的上限只有9個,超過就會被指派成unknow,所以多一層pipe
554
+ mask should reflect real ROI boundary
555
+ */
556
+ tap(params => {
557
+ // possible ROI,it means the boundary of validation viewport. TonyQ@20230106
558
+ // "faceROI": {
559
+ // "fLeft": 0.15000000596046448,
560
+ // "fTop": 0.2549999952316284,
561
+ // "fRight": 0.8500000238418579,
562
+ // "fBottom": 0.7450000047683716
563
+ // },
564
+ // ROI would work with following parameters.
565
+ // "fNotAtCenterTh": 0.25,
566
+ // "fFaceTooSmallTh": 0.6000000238418579,
567
+ // "fFaceTooLargeTh": 1.2000000476837158
568
+ const {
569
+ fLeft,
570
+ fTop,
571
+ fRight,
572
+ fBottom
573
+ } = params.faceROI;
574
+ faceMask.style.margin = '0';
575
+ faceMask.style.left = fLeft * 100 + '%';
576
+ faceMask.style.top = fTop * 100 + '%';
577
+ faceMask.style.width = (fRight - fLeft) * 100 + '%';
578
+ faceMask.style.height = (fBottom - fTop) * 100 + '%';
579
+ setStatusTextTop({
580
+ maskTop: window.innerHeight * fTop,
581
+ maskHeight: window.innerHeight * (fBottom - fTop),
582
+ titleTextPanel,
583
+ statusTextPanel
584
+ });
585
+ })).pipe(sendFrame(canvasSizeInfo, canvas, video, config.onFrame, livenessConfig.fasMaxFps, true, 'all'), tap(({
507
586
  result
508
587
  }) => applyTextByResult(result)), filter(({
509
588
  result
@@ -518,7 +597,7 @@ function startLiveness(config) {
518
597
  return ((_a = config.livenessConfig.showIntroPage) !== null && _a !== void 0 ? _a : false) ? step1 : of('continue');
519
598
  }, concatMap(step1Result => {
520
599
  if (step1Result === 'continue') {
521
- return merge(step2, resizedError$);
600
+ return merge(step2, resizedError$, closeIconHandler$);
522
601
  } else if (step1Result === 'cancel') {
523
602
  return throwError(() => new AuthmeError(ErrorCode.USER_CANCEL));
524
603
  } else {
@@ -542,11 +621,11 @@ function startLiveness(config) {
542
621
  } catch (error) {
543
622
  // no video, ignore
544
623
  }
545
- yield config.onDestroy();
624
+ container.remove();
546
625
  video.srcObject = null;
547
- document.body.removeChild(container);
548
626
  unsubscribe$.next();
549
627
  unsubscribe$.complete();
628
+ yield config.onDestroy();
550
629
  });
551
630
  }
552
631
  }
@@ -10033,7 +10112,8 @@ function startOCR(config) {
10033
10112
  headerSubtitle
10034
10113
  } = renderBasicUI({
10035
10114
  headerIcon: config.ocrConfig.icon,
10036
- headerMode: config.ocrConfig.headerMode
10115
+ headerMode: config.ocrConfig.headerMode,
10116
+ showCloseButton: config.ocrConfig.showCloseButton
10037
10117
  });
10038
10118
  const {
10039
10119
  antiFraudInstructionContainer,
@@ -10179,6 +10259,14 @@ function startOCR(config) {
10179
10259
  statusText.textContent = translateService.translate('verify.error.wrongCardType');
10180
10260
  setBorderColor('error');
10181
10261
  break;
10262
+ case EAuthMePassportServiceStatus.NotAligned:
10263
+ statusText.textContent = translateService.translate('verify.error.mismatch');
10264
+ setBorderColor('error');
10265
+ break;
10266
+ case EAuthMePassportServiceStatus.Reflective:
10267
+ statusText.textContent = translateService.translate('verify.error.reflective');
10268
+ setBorderColor('error');
10269
+ break;
10182
10270
  }
10183
10271
  };
10184
10272
  const init = retry => canvasSizeInfo$.pipe(take(1), switchMap(canvasSizeInfo => from(config.setFrameSize(canvasSizeInfo.canvasWidth, canvasSizeInfo.canvasHeight)).pipe(switchMap(() => checkOnlineStatus(translateService.translate('network.error.offline'))), switchMap(() => config.ocrStart(getCardBorderPoint(), type, retry)), tap(() => stopSpinner()), map(() => canvasSizeInfo))));
@@ -10224,6 +10312,7 @@ function startOCR(config) {
10224
10312
  const flow$ = config.acceptTypes.map(x => createFlowByType(x)).reduce((prev, cur) => prev.pipe(switchMap(() => cur)), canvasSizeInfo$.pipe(take(1), tap(() => setUIByType(config.acceptTypes[0])), switchMap(canvasSizeInfo => from(config.init(canvasSizeInfo.canvasWidth, canvasSizeInfo.canvasHeight)).pipe(tap(x => ocrConfig = x), tap(() => stopSpinner()))))).pipe(tap(() => {
10225
10313
  hideElement(videoContainer);
10226
10314
  startSpinner(translateService.translate('verify.uploading'));
10315
+ setCorrectViewHeight();
10227
10316
  }), switchMap(() => config.onSuccess()), tap(() => {
10228
10317
  stopSpinner();
10229
10318
  container.style.display = 'none';
@@ -10718,6 +10807,13 @@ class LivenessVerifyModule {
10718
10807
  const params = yield this.fasService.getParams();
10719
10808
  params.timeoutSec = resp.parameters.fasTimeout || params.timeoutSec;
10720
10809
  params.fFASTh = resp.parameters.fasThreshold || params.fFASTh;
10810
+ // sample code for manually change faceROI when need. TonyQ@20230106
10811
+ // this.params.faceROI = {
10812
+ // fLeft: 0.3,
10813
+ // fTop: 0.3,
10814
+ // fRight: 0.7,
10815
+ // fBottom: 0.7,
10816
+ // };
10721
10817
  yield this.fasService.setParams(params);
10722
10818
  return resp.parameters;
10723
10819
  } catch (e) {
@@ -10748,16 +10844,29 @@ class LivenessVerifyModule {
10748
10844
  throw e;
10749
10845
  }
10750
10846
  }),
10751
- onStart: (width, height) => __awaiter(this, void 0, void 0, function* () {
10752
- frameWidth = width;
10753
- frameHeight = height;
10754
- yield this.fasService.setFrameSize(width, height);
10847
+ onStart: canvasSizeInfoCan => __awaiter(this, void 0, void 0, function* () {
10848
+ frameWidth = canvasSizeInfoCan.canvasWidth;
10849
+ frameHeight = canvasSizeInfoCan.canvasHeight;
10850
+ const params = yield this.fasService.getParams();
10851
+ const oldROI = params.faceROI;
10852
+ const actualHight = frameHeight * (oldROI.fBottom - oldROI.fTop);
10853
+ const actualWidth = frameWidth * (oldROI.fRight - oldROI.fLeft);
10854
+ let targetWidth = actualWidth;
10855
+ //we change the ROI when horizontal view for desktop camera.
10856
+ if (actualWidth > actualHight) {
10857
+ targetWidth = actualHight;
10858
+ const widthPercent = targetWidth / frameWidth;
10859
+ params.faceROI.fLeft = (1 - widthPercent) / 2;
10860
+ params.faceROI.fRight = 1 - (1 - widthPercent) / 2;
10861
+ }
10862
+ yield this.fasService.setParams(params);
10755
10863
  if (config.active) {
10756
10864
  yield this.fasService.setStage([EAuthMeFASServiceStage.Passive, EAuthMeFASServiceStage.OpenMouth, EAuthMeFASServiceStage.CloseMouth]);
10757
10865
  } else {
10758
10866
  yield this.fasService.setStage([EAuthMeFASServiceStage.Passive]);
10759
10867
  }
10760
- return yield this.fasService.startSession();
10868
+ yield this.fasService.startSession();
10869
+ return params;
10761
10870
  }),
10762
10871
  onFrame: (data, base64) => __awaiter(this, void 0, void 0, function* () {
10763
10872
  var _c;
@@ -10918,17 +11027,38 @@ class LivenessModule {
10918
11027
  id = resp.id;
10919
11028
  yield this.fasService.init();
10920
11029
  const params = yield this.fasService.getParams();
11030
+ // sample code for manually change faceROI when need. TonyQ@20230106
11031
+ // this.params.faceROI = {
11032
+ // fLeft: 0.3,
11033
+ // fTop: 0.3,
11034
+ // fRight: 0.7,
11035
+ // fBottom: 0.7,
11036
+ // };
10921
11037
  params.timeoutSec = resp.parameters.fasTimeout || params.timeoutSec;
10922
11038
  params.fFASTh = resp.parameters.fasThreshold || params.fFASTh;
10923
11039
  yield this.fasService.setParams(params);
10924
11040
  yield this.fasService.setStage(resp.parameters.fasStages.map(x => `EAuthMeFASServiceStage_${x}`));
10925
11041
  return resp.parameters;
10926
11042
  }),
10927
- onStart: (width, height) => __awaiter(this, void 0, void 0, function* () {
10928
- frameWidth = width;
10929
- frameHeight = height;
10930
- yield this.fasService.setFrameSize(width, height);
10931
- return yield this.fasService.startSession();
11043
+ onStart: canvasSizeInfoCan => __awaiter(this, void 0, void 0, function* () {
11044
+ frameWidth = canvasSizeInfoCan.canvasWidth;
11045
+ frameHeight = canvasSizeInfoCan.canvasHeight;
11046
+ const params = yield this.fasService.getParams();
11047
+ const oldROI = params.faceROI;
11048
+ const actualHight = frameHeight * (oldROI.fBottom - oldROI.fTop);
11049
+ const actualWidth = frameWidth * (oldROI.fRight - oldROI.fLeft);
11050
+ let targetWidth = actualWidth;
11051
+ //we change the ROI when horizontal view for desktop camera.
11052
+ if (actualWidth > actualHight) {
11053
+ targetWidth = actualHight;
11054
+ const widthPercent = targetWidth / frameWidth;
11055
+ params.faceROI.fLeft = (1 - widthPercent) / 2;
11056
+ params.faceROI.fRight = 1 - (1 - widthPercent) / 2;
11057
+ }
11058
+ yield this.fasService.setParams(params);
11059
+ yield this.fasService.setFrameSize(frameWidth, frameHeight);
11060
+ yield this.fasService.startSession();
11061
+ return params;
10932
11062
  }),
10933
11063
  onFrame: (data, base64) => __awaiter(this, void 0, void 0, function* () {
10934
11064
  var _a;
@@ -11589,7 +11719,7 @@ class AuthmeIdentityVerification extends AuthmeFunctionModule {
11589
11719
  }
11590
11720
 
11591
11721
  var name = "@authme/identity-verification";
11592
- var version$1 = "2.2.1-rc.3";
11722
+ var version$1 = "2.2.1";
11593
11723
  var peerDependencies = {
11594
11724
  "core-js": "^3.6.0",
11595
11725
  "lottie-web": "^5.9.2",
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@authme/identity-verification",
3
- "version": "2.2.1-rc.3",
3
+ "version": "2.2.1",
4
4
  "peerDependencies": {
5
5
  "core-js": "^3.6.0",
6
6
  "lottie-web": "^5.9.2",
7
7
  "rxjs": "^7.4.0",
8
- "@authme/core": "2.2.1-rc.3",
9
- "@authme/engine": "2.2.1-rc.3",
10
- "@authme/id-recognition": "2.2.1-rc.3",
11
- "@authme/util": "2.2.1-rc.3",
12
- "@authme/liveness": "2.2.1-rc.3"
8
+ "@authme/core": "2.2.1",
9
+ "@authme/engine": "2.2.1",
10
+ "@authme/id-recognition": "2.2.1",
11
+ "@authme/util": "2.2.1",
12
+ "@authme/liveness": "2.2.1"
13
13
  },
14
14
  "module": "./index.js",
15
15
  "main": "./index.cjs",
@@ -9,6 +9,7 @@ export interface LivenessConfig {
9
9
  icon?: string;
10
10
  showIntroPage?: boolean;
11
11
  headerMode?: number;
12
+ showCloseButton?: boolean;
12
13
  }
13
14
  export declare const defaultLivenessConfig: Required<LivenessConfig>;
14
15
  export interface IdRecognitionConfig {
@@ -22,6 +23,7 @@ export interface IdRecognitionConfig {
22
23
  showStatement?: boolean;
23
24
  headerMode?: number;
24
25
  blockFraud?: boolean;
26
+ showCloseButton?: boolean;
25
27
  }
26
28
  export interface GetCardTypeAndCountryConfig {
27
29
  supportCountries: CountryCode[];
@@ -1,6 +1,7 @@
1
1
  export interface BasicUIConfig {
2
2
  headerIcon: string;
3
3
  headerMode: number;
4
+ showCloseButton?: boolean;
4
5
  }
5
6
  export declare const renderBasicUI: (userConfig: BasicUIConfig) => {
6
7
  container: HTMLDivElement;
@@ -1,10 +1,11 @@
1
1
  import { FasResult } from '@authme/liveness';
2
2
  import { Observable } from 'rxjs';
3
+ import { CanvasSizeInfo } from '@authme/util';
3
4
  import { LivenessConfig, LivenessEngineConfig } from '@authme/identity-verification';
4
5
  export declare function startLiveness(config: {
5
6
  livenessConfig: Required<LivenessConfig>;
6
7
  init: () => Promise<LivenessEngineConfig>;
7
- onStart: (width: number, height: number) => Promise<any>;
8
+ onStart: (canvasSizeInfo: CanvasSizeInfo) => Promise<any>;
8
9
  onFrame: (data: Uint8ClampedArray, base64: {
9
10
  jpg: string;
10
11
  png: string;
@@ -3,8 +3,18 @@ export declare const renderLivenessUI: (config: {
3
3
  videoContainer: HTMLElement;
4
4
  video: HTMLVideoElement;
5
5
  }) => {
6
- titleText: HTMLDivElement;
7
6
  statusText: HTMLDivElement;
8
7
  faceMask: HTMLDivElement;
8
+ titleTextPanel: HTMLDivElement;
9
+ statusTextPanel: HTMLDivElement;
9
10
  };
10
- export declare const renderLivenessGuideUI: (container: HTMLElement) => Promise<"continue" | "cancel">;
11
+ export declare const setStatusTextTop: (params: {
12
+ maskHeight: number;
13
+ maskTop?: number;
14
+ statusTextPanel: HTMLElement;
15
+ titleTextPanel: HTMLElement;
16
+ }) => void;
17
+ export declare const renderLivenessGuideUI: ({ container, showCloseButton, }: {
18
+ container: HTMLElement;
19
+ showCloseButton: boolean;
20
+ }) => Promise<"continue" | "cancel">;
@@ -1 +1 @@
1
- declare function setCorrectViewHeight(): void;
1
+ export declare function setCorrectViewHeight(): void;