From 3fc241d02fb8b671289de3d9d80bf848349c04d4 Mon Sep 17 00:00:00 2001
From: Sanakey <714737083@qq.com>
Date: 星期五, 09 七月 2021 18:04:12 +0800
Subject: [PATCH] 海报、新建活动等新版完善

---
 pages/flashSaleCreate/flashSaleCreate.js        |  238 ---
 components/location-plugin/index.ts             |   12 
 pages/groupBuyingCreate/groupBuyingCreate.ts    |  466 +++---
 app.wxss                                        |   14 
 pages/flashSaleCreate/flashSaleCreate.ts        |  486 ++++---
 components/delivery-method/index.js             |    4 
 pages/signUpCreate/signUpCreate.js              |  215 ---
 pages/liveRoomCreate/dateSetting/dateSetting.ts |   15 
 components/authorize/index.wxml                 |    2 
 components/time-quantum/index.wxml              |    4 
 components/goods-action/index.wxml              |    1 
 components/time-quantum/index.ts                |   38 
 pages/index/index.ts                            |    3 
 components/authorize/index.ts                   |   15 
 components/delivery-method/index.ts             |    2 
 pages/signUpCreate/signUpCreate.ts              |  409 +++---
 pages/orderSubmit/orderSubmit.wxml              |    2 
 pages/index/index.js                            |    5 
 modules/promotionsCreate.js                     |  367 +++++
 pages/groupBuyingCreate/groupBuyingCreate.wxml  |   21 
 pages/feedback/feedback.js                      |    8 
 modules/promotionsCreate.ts                     |  326 +++++
 utils/myValidator.js                            |   12 
 components/time-quantum/index.js                |   52 
 components/bubble-tips/index.js                 |    4 
 pages/addressEdit/addressEdit.ts                |    9 
 assets/images/promotions-poster-bg.jpg          |    0 
 pages/index/index.wxml                          |    8 
 components/authorize/index.js                   |   28 
 utils/myValidator.ts                            |   10 
 components/delivery-method/index.wxml           |    3 
 utils/util.ts                                   |   58 
 pages/flashSaleCreate/flashSaleCreate.wxml      |   23 
 pages/feedbackDetail/feedbackDetail.js          |    8 
 pages/storeEdit/storeEdit.js                    |    6 
 components/poster-creator/index.ts              |  244 +++
 pages/liveRoomCreate/dateSetting/dateSetting.js |   14 
 utils/util.js                                   |   38 
 pages/addressEdit/addressEdit.js                |   11 
 pages/merchantSigning/merchantSigning.js        |    8 
 pages/storeEdit/storeEdit.ts                    |    4 
 components/bubble-tips/index.ts                 |    2 
 components/location-plugin/index.js             |   12 
 components/poster-creator/index.js              |  232 +++
 pages/groupBuyingCreate/groupBuyingCreate.js    |  235 ---
 pages/signUpCreate/signUpCreate.wxml            |   16 
 46 files changed, 2,158 insertions(+), 1,532 deletions(-)

diff --git a/app.wxss b/app.wxss
index 9ddfe19..8248003 100644
--- a/app.wxss
+++ b/app.wxss
@@ -21,6 +21,7 @@
   --white-color: #fff;
   --wxchat-color: #98e165;
   --blue-color: #19a0f1;
+  --cell-font-size: 14px;
   /* --left-sidebar-width: 0px;
   min-width: var(--left-sidebar-width);
   --color: #ddd;
@@ -322,6 +323,9 @@
   background-color: var(--theme-color);
   border-color: var(--theme-color);
 }
+.theme-icon .van-icon{
+  color: var(--theme-color);
+}
 .btn-padding button{
   padding: 20rpx 80rpx;
 }
@@ -356,6 +360,16 @@
   text-align: right;
   /*font-size: 24rpx;*/
 }
+.my-cell-group .van-cell--required:before{
+  left: 3px;
+}
+.my-cell.required .van-cell__title:before{
+  position: absolute;
+  content: "*";
+  left: 3px;
+  font-size: var(--cell-font-size);
+  color: var(--error-color);
+}
 .my-cell .van-cell {
   padding: 20rpx;
   background-color: transparent;
diff --git a/assets/images/promotions-poster-bg.jpg b/assets/images/promotions-poster-bg.jpg
new file mode 100644
index 0000000..7422494
--- /dev/null
+++ b/assets/images/promotions-poster-bg.jpg
Binary files differ
diff --git a/components/authorize/index.js b/components/authorize/index.js
index c6ea249..ecd39f2 100644
--- a/components/authorize/index.js
+++ b/components/authorize/index.js
@@ -48,6 +48,10 @@
             type: Boolean,
             value: true
         },
+        isRefreshAuthorizeInfo: {
+            type: Boolean,
+            value: false
+        },
     },
     data: {
         hasUserInfo: false,
@@ -67,14 +71,22 @@
     methods: {
         getUserInfo: function (e) {
             return __awaiter(this, void 0, void 0, function () {
-                var _a, isMustAuthorizePhone, isMustAuthorizeAvatar, loginData;
+                var _a, isMustAuthorizePhone, isMustAuthorizeAvatar, isRefreshAuthorizeInfo, loginData;
                 return __generator(this, function (_b) {
                     switch (_b.label) {
                         case 0:
                             console.log(e);
-                            _a = this.data, isMustAuthorizePhone = _a.isMustAuthorizePhone, isMustAuthorizeAvatar = _a.isMustAuthorizeAvatar;
+                            _a = this.data, isMustAuthorizePhone = _a.isMustAuthorizePhone, isMustAuthorizeAvatar = _a.isMustAuthorizeAvatar, isRefreshAuthorizeInfo = _a.isRefreshAuthorizeInfo;
                             loginData = wx.globalData.loginData;
                             console.log('鐐瑰嚮鏃秎oginData', loginData);
+                            if (!isRefreshAuthorizeInfo) return [3, 2];
+                            return [4, this.getUserProfile()];
+                        case 1:
+                            _b.sent();
+                            console.log('鍒锋柊鎺堟潈澶村儚鍚巐oginData', wx.globalData.loginData);
+                            this.completeAuthorize();
+                            _b.label = 2;
+                        case 2:
                             if (loginData.avatarUrl && loginData.telephone) {
                                 this.completeAuthorize();
                             }
@@ -84,9 +96,9 @@
                             if (loginData.avatarUrl && !isMustAuthorizeAvatar) {
                                 this.completeAuthorize();
                             }
-                            if (!(!loginData.avatarUrl && isMustAuthorizeAvatar)) return [3, 2];
+                            if (!(!loginData.avatarUrl && isMustAuthorizeAvatar)) return [3, 4];
                             return [4, this.getUserProfile()];
-                        case 1:
+                        case 3:
                             _b.sent();
                             console.log('鎺堟潈澶村儚鍚巐oginData', wx.globalData.loginData);
                             if (!wx.globalData.loginData.avatarUrl)
@@ -94,8 +106,8 @@
                             if (loginData.telephone || !isMustAuthorizePhone) {
                                 this.completeAuthorize();
                             }
-                            _b.label = 2;
-                        case 2:
+                            _b.label = 4;
+                        case 4:
                             if (!loginData.telephone && isMustAuthorizePhone) {
                                 this.showGetPhoneDialog();
                             }
@@ -130,11 +142,13 @@
                                                 if (!(_a.sent()))
                                                     return [2];
                                                 console.log('----鑾峰彇澶村儚鎴愬姛锛�----');
+                                                wx.showToast({ title: '鎺堟潈鎴愬姛' });
                                                 return [2];
                                         }
                                     });
                                 }); }).catch(function (err) {
                                     console.log(err, '----鑾峰彇澶村儚澶辫触锛�----');
+                                    wx.showToast({ title: '鎺堟潈澶辫触', icon: 'none' });
                                 })];
                         case 1:
                             _a.sent();
@@ -244,4 +258,4 @@
         },
     }
 });
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxTQUFTLENBQUM7SUFJUixPQUFPLEVBQUU7UUFDUCxjQUFjLEVBQUMsSUFBSTtRQUNuQixhQUFhLEVBQUUsSUFBSTtLQUNwQjtJQUNELFVBQVUsRUFBRTtRQUNWLG9CQUFvQixFQUFDO1lBQ25CLElBQUksRUFBRSxPQUFPO1lBQ2IsS0FBSyxFQUFFLElBQUk7U0FDWjtRQUNELHFCQUFxQixFQUFDO1lBQ3BCLElBQUksRUFBRSxPQUFPO1lBQ2IsS0FBSyxFQUFFLElBQUk7U0FDWjtLQUNGO0lBS0QsSUFBSSxFQUFFO1FBRUosV0FBVyxFQUFDLEtBQUs7UUFDakIsUUFBUSxFQUFDLEtBQUs7UUFDZCxVQUFVLEVBQUMsSUFBSTtLQUNoQjtJQUNELFNBQVMsRUFBQztRQUNSLEtBQUs7UUFVTCxDQUFDO0tBQ0Y7SUFDRCxhQUFhLEVBQUU7UUFDYixJQUFJLEVBQUU7UUFHTixDQUFDO1FBQ0QsSUFBSTtRQUVKLENBQUM7S0FDRjtJQUlELE9BQU8sRUFBRTtRQUNELFdBQVcsWUFBQyxDQUFLOzs7Ozs7NEJBQ3JCLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQ1gsS0FBK0MsSUFBSSxDQUFDLElBQUksRUFBdkQsb0JBQW9CLDBCQUFBLEVBQUMscUJBQXFCLDJCQUFBLENBQWM7NEJBQ3pELFNBQVMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQzs0QkFDeEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUMsU0FBUyxDQUFDLENBQUM7NEJBU3RDLElBQUksU0FBUyxDQUFDLFNBQVMsSUFBRSxTQUFTLENBQUMsU0FBUyxFQUFFO2dDQUM1QyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzs2QkFDMUI7NEJBR0QsSUFBSSxDQUFDLHFCQUFxQixJQUFFLENBQUMscUJBQXFCLEVBQUU7Z0NBQ2xELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDOzZCQUMxQjs0QkFHRCxJQUFJLFNBQVMsQ0FBQyxTQUFTLElBQUUsQ0FBQyxxQkFBcUIsRUFBRTtnQ0FDL0MsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7NkJBQzFCO2lDQUlHLENBQUEsQ0FBQyxTQUFTLENBQUMsU0FBUyxJQUFFLHFCQUFxQixDQUFBLEVBQTNDLGNBQTJDOzRCQUM3QyxXQUFNLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBQTs7NEJBQTNCLFNBQTJCLENBQUM7NEJBQzVCLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQzs0QkFDdEQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLFNBQVM7Z0NBQUUsV0FBTzs0QkFDL0MsSUFBSSxTQUFTLENBQUMsU0FBUyxJQUFFLENBQUMsb0JBQW9CLEVBQUM7Z0NBQzdDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDOzZCQUMxQjs7OzRCQUlILElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxJQUFFLG9CQUFvQixFQUFDO2dDQUU3QyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzs2QkFFM0I7Ozs7O1NBQ0Y7UUFFSyxjQUFjOzs7Ozs7NEJBR2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzs0QkFDOUIsV0FBTSxFQUFFLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQztvQ0FDMUIsSUFBSSxFQUFFLFlBQVk7aUNBQ25CLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBTSxHQUFPOzs7O2dEQUNuQixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dEQUNaLFdBQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBQTs7Z0RBQWpDLElBQUksQ0FBQyxDQUFBLFNBQTRCLENBQUE7b0RBQUUsV0FBTztnREFDMUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztvREFDWCxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVE7aURBRXZCLENBQUMsQ0FBQTtnREFDRyxXQUFNLEVBQUUsQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLEVBQUE7O2dEQUExQyxJQUFJLENBQUMsQ0FBQSxTQUFxQyxDQUFBO29EQUFFLFdBQU87Z0RBQ25ELE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQzs7OztxQ0FDaEMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFDLEdBQU87b0NBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUMsaUJBQWlCLENBQUMsQ0FBQztnQ0FFckMsQ0FBQyxDQUFDLEVBQUE7OzRCQWRGLFNBY0UsQ0FBQTs0QkFDRixPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7Ozs7O1NBQ2pDO1FBSUssY0FBYyxZQUFDLENBQUM7Ozs7OzRCQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDOzRCQUNqQyxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7aUNBQzFCLENBQUEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksbUJBQW1CLENBQUEsRUFBdEMsY0FBc0M7NEJBQ25DLFdBQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBQTs7NEJBQWxDLElBQUksQ0FBQyxDQUFBLFNBQTZCLENBQUE7Z0NBQUUsV0FBTzs0QkFDdEMsV0FBTSxFQUFFLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxFQUFBOzs0QkFBMUMsSUFBSSxDQUFDLENBQUEsU0FBcUMsQ0FBQTtnQ0FBRSxXQUFPOzRCQUVuRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzs0QkFFekIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDOzs7NEJBRS9CLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7NEJBR3BCLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQzs7Ozs7O1NBRWxDO1FBRUssWUFBWSxZQUFDLEdBQU87Ozs7O2dDQUNGLFdBQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQ3RDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO2dDQUNmLEdBQUcsRUFBQyxxQ0FBcUM7Z0NBQ3pDLElBQUksRUFBQztvQ0FDSCxTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVM7b0NBQ3hCLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTztvQ0FDcEIsYUFBYSxFQUFFLEdBQUcsQ0FBQyxhQUFhO29DQUNoQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUU7aUNBQ1g7NkJBQ0YsQ0FBQyxDQUNILEVBQUE7OzRCQVZHLEtBQWtCLFNBVXJCLEVBVkksS0FBSyxRQUFBLEVBQUUsTUFBTSxRQUFBOzRCQVdsQixJQUFJLEtBQUssRUFBQztnQ0FDUixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dDQUNuQixXQUFPLEtBQUssRUFBQzs2QkFDZDs0QkFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDOzRCQUNwQixXQUFPLElBQUksRUFBQzs7OztTQUNiO1FBRUssZUFBZSxZQUFDLENBQUM7Ozs7O2dDQUNDLFdBQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQ3RDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO2dDQUNmLEdBQUcsRUFBQyx3Q0FBd0M7Z0NBQzVDLElBQUksRUFBQztvQ0FDSCxhQUFhLEVBQUUsRUFBRTtvQ0FDakIsYUFBYSxFQUFFLEVBQUU7b0NBQ2pCLGFBQWEsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLGFBQWE7b0NBQ3JDLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUU7aUNBQ2hCOzZCQUNGLENBQUMsQ0FDSCxFQUFBOzs0QkFWRyxLQUFrQixTQVVyQixFQVZJLEtBQUssUUFBQSxFQUFFLE1BQU0sUUFBQTs0QkFXbEIsSUFBSSxLQUFLLEVBQUM7Z0NBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDbkIsV0FBTyxLQUFLLEVBQUM7NkJBQ2Q7NEJBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQzs0QkFDcEIsV0FBTyxJQUFJLEVBQUM7Ozs7U0FDYjtRQUVELGtCQUFrQjtZQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUNYLGlCQUFpQixFQUFDLElBQUk7YUFDdkIsQ0FBQyxDQUFBO1FBQ0osQ0FBQztRQUNELGtCQUFrQjtZQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUNYLGlCQUFpQixFQUFDLEtBQUs7YUFDeEIsQ0FBQyxDQUFBO1FBQ0osQ0FBQztRQUNELGlCQUFpQjtZQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUU7Z0JBQzdCLFdBQVcsRUFBRSxJQUFJO2FBQ2xCLENBQUMsQ0FBQTtRQUNKLENBQUM7UUFDRCxhQUFhO1FBTWIsQ0FBQztLQUNGO0NBQ0YsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbi8vIGNvbnN0IGFwcCA9IGdldEFwcDxJQXBwT3B0aW9uPigpO1xyXG5Db21wb25lbnQoe1xyXG4gIC8qKlxyXG4gICAqIOe7hOS7tueahOWxnuaAp+WIl+ihqFxyXG4gICAqL1xyXG4gIG9wdGlvbnM6IHtcclxuICAgIGFkZEdsb2JhbENsYXNzOnRydWUsXHJcbiAgICBtdWx0aXBsZVNsb3RzOiB0cnVlIC8vIOWcqOe7hOS7tuWumuS5ieaXtueahOmAiemhueS4reWQr+eUqOWkmnNsb3TmlK/mjIFcclxuICB9LFxyXG4gIHByb3BlcnRpZXM6IHtcclxuICAgIGlzTXVzdEF1dGhvcml6ZVBob25lOntcclxuICAgICAgdHlwZTogQm9vbGVhbixcclxuICAgICAgdmFsdWU6IHRydWVcclxuICAgIH0sXHJcbiAgICBpc011c3RBdXRob3JpemVBdmF0YXI6e1xyXG4gICAgICB0eXBlOiBCb29sZWFuLFxyXG4gICAgICB2YWx1ZTogdHJ1ZVxyXG4gICAgfSxcclxuICB9LFxyXG5cclxuICAvKipcclxuICAgKiDnu4Tku7bnmoTliJ3lp4vmlbDmja5cclxuICAgKi9cclxuICBkYXRhOiB7XHJcbiAgICAvLyBsb2NhdGlvbjogdW5kZWZpbmVkLFxyXG4gICAgaGFzVXNlckluZm86ZmFsc2UsXHJcbiAgICBoYXNQaG9uZTpmYWxzZSxcclxuICAgIGlzU2hvd01hc2s6dHJ1ZVxyXG4gIH0sXHJcbiAgbGlmZXRpbWVzOntcclxuICAgIHJlYWR5KCl7XHJcbiAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAvLyAgIC8vIHd4Lmdsb2JhbERhdGEubG9naW5EYXRhLmF2YXRhclVybCA9ICcnO1xyXG4gICAgICAvLyAgIC8vIHd4Lmdsb2JhbERhdGEubG9naW5EYXRhLmNsdGNvZGUgPSAnJztcclxuICAgICAgLy8gICB3eC5nbG9iYWxEYXRhLmxvZ2luRGF0YSA9IHt9XHJcbiAgICAgIC8vICAgICAvLyBjbHRjb2RlOjExMSxcclxuICAgICAgLy8gICAgIC8vIGF2YXRhclVybDonMzMzJ1xyXG4gICAgICAvL1xyXG4gICAgICAvLyAgIGNvbnNvbGUubG9nKCc156eS5ZCO77yM5pu05paw5LqGbG9naW5EYXRhJyk7XHJcbiAgICAgIC8vIH0sNTAwMClcclxuICAgIH1cclxuICB9LFxyXG4gIHBhZ2VMaWZldGltZXM6IHtcclxuICAgIHNob3c6IGZ1bmN0aW9uKCkge1xyXG4gICAgICAvLyDpobXpnaLooqvlsZXnpLpcclxuXHJcbiAgICB9LFxyXG4gICAgaGlkZSgpIHtcclxuXHJcbiAgICB9XHJcbiAgfSxcclxuICAvKipcclxuICAgKiDnu4Tku7bnmoTmlrnms5XliJfooahcclxuICAgKi9cclxuICBtZXRob2RzOiB7XHJcbiAgICBhc3luYyBnZXRVc2VySW5mbyhlOmFueSl7XHJcbiAgICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgICBsZXQge2lzTXVzdEF1dGhvcml6ZVBob25lLGlzTXVzdEF1dGhvcml6ZUF2YXRhcn0gPSB0aGlzLmRhdGE7XHJcbiAgICAgIGxldCBsb2dpbkRhdGEgPSB3eC5nbG9iYWxEYXRhLmxvZ2luRGF0YTtcclxuICAgICAgY29uc29sZS5sb2coJ+eCueWHu+aXtmxvZ2luRGF0YScsbG9naW5EYXRhKTtcclxuICAgICAgLy8gaWYgKGxvZ2luRGF0YS5hdmF0YXJVcmwpIHtcclxuICAgICAgLy8gICB0aGlzLnNldERhdGEoe2hhc1VzZXJJbmZvOnRydWV9KVxyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGlmIChsb2dpbkRhdGEuY2x0Y29kZSkge1xyXG4gICAgICAvLyAgIHRoaXMuc2V0RGF0YSh7aGFzUGhvbmU6dHJ1ZX0pXHJcbiAgICAgIC8vIH1cclxuXHJcbiAgICAgIC8v5bey5o6I5p2D5aS05YOP77yM5bey5o6I5p2D55S16K+dXHJcbiAgICAgIGlmIChsb2dpbkRhdGEuYXZhdGFyVXJsJiZsb2dpbkRhdGEudGVsZXBob25lKSB7XHJcbiAgICAgICAgdGhpcy5jb21wbGV0ZUF1dGhvcml6ZSgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyDnlLXor53kuI7lpLTlg4/pg73kuI3pnIDopoHmjojmnYNcclxuICAgICAgaWYgKCFpc011c3RBdXRob3JpemVBdmF0YXImJiFpc011c3RBdXRob3JpemVBdmF0YXIpIHtcclxuICAgICAgICB0aGlzLmNvbXBsZXRlQXV0aG9yaXplKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8v5bey5o6I5p2D5aS05YOP77yM5L2G5LiN6ZyA6KaB5o6I5p2D55S16K+dXHJcbiAgICAgIGlmIChsb2dpbkRhdGEuYXZhdGFyVXJsJiYhaXNNdXN0QXV0aG9yaXplQXZhdGFyKSB7XHJcbiAgICAgICAgdGhpcy5jb21wbGV0ZUF1dGhvcml6ZSgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBsZXQge2hhc1VzZXJJbmZvLGhhc1Bob25lfSA9IHRoaXMuZGF0YTtcclxuICAgICAgICAvLyDmnKrmjojmnYPlpLTlg4/vvIzkuJTlv4XpobvmjojmnYPlpLTlg49cclxuICAgICAgaWYgKCFsb2dpbkRhdGEuYXZhdGFyVXJsJiZpc011c3RBdXRob3JpemVBdmF0YXIpe1xyXG4gICAgICAgIGF3YWl0IHRoaXMuZ2V0VXNlclByb2ZpbGUoKTtcclxuICAgICAgICBjb25zb2xlLmxvZygn5o6I5p2D5aS05YOP5ZCObG9naW5EYXRhJyx3eC5nbG9iYWxEYXRhLmxvZ2luRGF0YSk7XHJcbiAgICAgICAgaWYgKCF3eC5nbG9iYWxEYXRhLmxvZ2luRGF0YS5hdmF0YXJVcmwpIHJldHVybjtcclxuICAgICAgICBpZiAobG9naW5EYXRhLnRlbGVwaG9uZXx8IWlzTXVzdEF1dGhvcml6ZVBob25lKXtcclxuICAgICAgICAgIHRoaXMuY29tcGxldGVBdXRob3JpemUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIOacquaOiOadg+eUteivne+8jOS4lOW/hemhu+aOiOadg+eUteivnVxyXG4gICAgICBpZiAoIWxvZ2luRGF0YS50ZWxlcGhvbmUmJmlzTXVzdEF1dGhvcml6ZVBob25lKXtcclxuICAgICAgICAvLyDmjojmnYPnlLXor51cclxuICAgICAgICB0aGlzLnNob3dHZXRQaG9uZURpYWxvZygpO1xyXG4gICAgICAgIC8vIGlmICghbG9naW5EYXRhLmNsdGNvZGUpIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBhc3luYyBnZXRVc2VyUHJvZmlsZSgpe1xyXG4gICAgICAvLyDmjqjojZDkvb/nlKh3eC5nZXRVc2VyUHJvZmlsZeiOt+WPlueUqOaIt+S/oeaBr++8jOW8gOWPkeiAheavj+asoemAmui/h+ivpeaOpeWPo+iOt+WPlueUqOaIt+S4quS6uuS/oeaBr+Wdh+mcgOeUqOaIt+ehruiupFxyXG4gICAgICAvLyDlvIDlj5HogIXlpqXlloTkv53nrqHnlKjmiLflv6vpgJ/loavlhpnnmoTlpLTlg4/mmLXnp7DvvIzpgb/lhY3ph43lpI3lvLnnqpdcclxuICAgICAgY29uc29sZS5sb2coJz4+Pj4+Pj4+5YeG5aSH6I635Y+W5aS05YOPJyk7XHJcbiAgICAgIGF3YWl0IHd4LnByby5nZXRVc2VyUHJvZmlsZSh7XHJcbiAgICAgICAgZGVzYzogJ+iOt+WPluWktOWDj+WujOWWhOS8muWRmOi1hOaWmScsIC8vIOWjsOaYjuiOt+WPlueUqOaIt+S4quS6uuS/oeaBr+WQjueahOeUqOmAlO+8jOWQjue7reS8muWxleekuuWcqOW8ueeql+S4re+8jOivt+iwqOaFjuWhq+WGmVxyXG4gICAgICB9KS50aGVuKGFzeW5jKHJlczphbnkpPT57XHJcbiAgICAgICAgY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgICBpZiAoIWF3YWl0IHRoaXMucG9zdFVzZXJJbmZvKHJlcykpIHJldHVybjtcclxuICAgICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgICAgdXNlckluZm86IHJlcy51c2VySW5mbyxcclxuICAgICAgICAgIC8vIGhhc1VzZXJJbmZvOnRydWVcclxuICAgICAgICB9KVxyXG4gICAgICAgIGlmICghYXdhaXQgd3guJGNvbW1vblJlcXVlc3QuZ2V0VXNlckluZm8oKSkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCctLS0t6I635Y+W5aS05YOP5oiQ5Yqf77yBLS0tLScpO1xyXG4gICAgICB9KS5jYXRjaCgoZXJyOmFueSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVyciwnLS0tLeiOt+WPluWktOWDj+Wksei0pe+8gS0tLS0nKTtcclxuICAgICAgICAvLyB0aGlzLnNldERhdGEoe2hhc1VzZXJJbmZvOmZhbHNlfSlcclxuICAgICAgfSlcclxuICAgICAgY29uc29sZS5sb2coJz4+Pj4+PuiOt+WPluaOiOadg+WktOWDj+atpemqpOWujOaIkCcpO1xyXG4gICAgfSxcclxuXHJcblxyXG5cclxuICAgIGFzeW5jIGdldFBob25lTnVtYmVyKGUpe1xyXG4gICAgICBjb25zb2xlLmxvZygnZ2V0UGhvbmVOdW1iZXInLCBlKTtcclxuICAgICAgY29uc29sZS5sb2coJz4+Pj4+Pj4+5YeG5aSH6I635Y+W55S16K+dJyk7XHJcbiAgICAgIGlmIChlLmRldGFpbC5lcnJNc2cgPT0gJ2dldFBob25lTnVtYmVyOm9rJykge1xyXG4gICAgICAgIGlmICghYXdhaXQgdGhpcy5wb3N0UGhvbmVOdW1iZXIoZSkpIHJldHVybjtcclxuICAgICAgICBpZiAoIWF3YWl0IHd4LiRjb21tb25SZXF1ZXN0LmdldFVzZXJJbmZvKCkpIHJldHVybjtcclxuICAgICAgICAvLyB0aGlzLnNldERhdGEoe2hhc1Bob25lOnRydWV9KTtcclxuICAgICAgICB0aGlzLmNvbXBsZXRlQXV0aG9yaXplKCk7XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKCctLS0t6I635Y+W55S16K+d5oiQ5Yqf77yBLS0tLScpO1xyXG4gICAgICB9IGVsc2V7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ+WPlua2iOaOiOadgycpO1xyXG4gICAgICAgIC8vIHRoaXMuc2hvd0dldFBob25lRGlhbG9nKCk7XHJcbiAgICAgICAgLy8gdGhpcy5zZXREYXRhKHtoYXNQaG9uZTpmYWxzZX0pO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCctLS0t6I635Y+W55S16K+d5aSx6LSl77yBLS0tLScpO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGFzeW5jIHBvc3RVc2VySW5mbyhyZXM6YW55KXtcclxuICAgICAgbGV0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IHd4LiR1dGlscy50byhcclxuICAgICAgICB3eC4kaHR0cC5yZXF1ZXN0KHtcclxuICAgICAgICAgIHVybDpgL3d4L21pbmlhcHAvdXNlci9wYW5pY0J1eWluZ0luZm8uZG9gLFxyXG4gICAgICAgICAgZGF0YTp7XHJcbiAgICAgICAgICAgIHNpZ25hdHVyZTogcmVzLnNpZ25hdHVyZSxcclxuICAgICAgICAgICAgcmF3RGF0YTogcmVzLnJhd0RhdGEsXHJcbiAgICAgICAgICAgIGVuY3J5cHRlZERhdGE6IHJlcy5lbmNyeXB0ZWREYXRhLFxyXG4gICAgICAgICAgICBpdjogcmVzLml2XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICBpZiAoZXJyb3Ipe1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9LFxyXG5cclxuICAgIGFzeW5jIHBvc3RQaG9uZU51bWJlcihlKXtcclxuICAgICAgbGV0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IHd4LiR1dGlscy50byhcclxuICAgICAgICB3eC4kaHR0cC5yZXF1ZXN0KHtcclxuICAgICAgICAgIHVybDpgL3Nob3BwaW5nL2FjY291bnQuZG8/bT10ZWxSZWdCeUF1dG9SZWdgLFxyXG4gICAgICAgICAgZGF0YTp7XHJcbiAgICAgICAgICAgIFJlZmVycmFsc0NvZGU6ICcnLFxyXG4gICAgICAgICAgICBSZWZlcnJhbHNOYW1lOiAnJyxcclxuICAgICAgICAgICAgZW5jcnlwdGVkRGF0YTogZS5kZXRhaWwuZW5jcnlwdGVkRGF0YSxcclxuICAgICAgICAgICAgaXY6IGUuZGV0YWlsLml2LFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgICAgaWYgKGVycm9yKXtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSxcclxuXHJcbiAgICBzaG93R2V0UGhvbmVEaWFsb2coKXtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICBpc1Nob3dQaG9uZURpYWxvZzp0cnVlXHJcbiAgICAgIH0pXHJcbiAgICB9LFxyXG4gICAgaGlkZUdldFBob25lRGlhbG9nKCl7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgaXNTaG93UGhvbmVEaWFsb2c6ZmFsc2VcclxuICAgICAgfSlcclxuICAgIH0sXHJcbiAgICBjb21wbGV0ZUF1dGhvcml6ZSgpe1xyXG4gICAgICBjb25zb2xlLmxvZygnLS3lrozmiJDmiYDmnInmjojmnYMtLScpO1xyXG4gICAgICB0aGlzLnRyaWdnZXJFdmVudCgnYXV0aG9yaXplJywge1xyXG4gICAgICAgIGlzQXV0aG9yaXplOiB0cnVlXHJcbiAgICAgIH0pXHJcbiAgICB9LFxyXG4gICAgb25EaWFsb2dDbG9zZSgpe1xyXG4gICAgICAvLyB3eC5zaG93VG9hc3Qoe1xyXG4gICAgICAvLyAgIHRpdGxlOiAn5Y+W5raI5o6I5p2DJyxcclxuICAgICAgLy8gICBpY29uOiAnbm9uZScsXHJcbiAgICAgIC8vICAgZHVyYXRpb246IDEwMDBcclxuICAgICAgLy8gfSk7XHJcbiAgICB9LFxyXG4gIH1cclxufSlcclxuIl19
\ No newline at end of file
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxTQUFTLENBQUM7SUFJUixPQUFPLEVBQUU7UUFDUCxjQUFjLEVBQUMsSUFBSTtRQUNuQixhQUFhLEVBQUUsSUFBSTtLQUNwQjtJQUNELFVBQVUsRUFBRTtRQUNWLG9CQUFvQixFQUFDO1lBQ25CLElBQUksRUFBRSxPQUFPO1lBQ2IsS0FBSyxFQUFFLElBQUk7U0FDWjtRQUNELHFCQUFxQixFQUFDO1lBQ3BCLElBQUksRUFBRSxPQUFPO1lBQ2IsS0FBSyxFQUFFLElBQUk7U0FDWjtRQUNELHNCQUFzQixFQUFDO1lBQ3JCLElBQUksRUFBRSxPQUFPO1lBQ2IsS0FBSyxFQUFFLEtBQUs7U0FDYjtLQUNGO0lBS0QsSUFBSSxFQUFFO1FBRUosV0FBVyxFQUFDLEtBQUs7UUFDakIsUUFBUSxFQUFDLEtBQUs7UUFDZCxVQUFVLEVBQUMsSUFBSTtLQUNoQjtJQUNELFNBQVMsRUFBQztRQUNSLEtBQUs7UUFVTCxDQUFDO0tBQ0Y7SUFDRCxhQUFhLEVBQUU7UUFDYixJQUFJLEVBQUU7UUFHTixDQUFDO1FBQ0QsSUFBSTtRQUVKLENBQUM7S0FDRjtJQUlELE9BQU8sRUFBRTtRQUNELFdBQVcsWUFBQyxDQUFLOzs7Ozs7NEJBQ3JCLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQ1gsS0FBc0UsSUFBSSxDQUFDLElBQUksRUFBOUUsb0JBQW9CLDBCQUFBLEVBQUMscUJBQXFCLDJCQUFBLEVBQUMsc0JBQXNCLDRCQUFBLENBQWM7NEJBQ2hGLFNBQVMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQzs0QkFDeEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUMsU0FBUyxDQUFDLENBQUM7aUNBU25DLHNCQUFzQixFQUF0QixjQUFzQjs0QkFD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RixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuLy8gY29uc3QgYXBwID0gZ2V0QXBwPElBcHBPcHRpb24+KCk7XHJcbkNvbXBvbmVudCh7XHJcbiAgLyoqXHJcbiAgICog57uE5Lu255qE5bGe5oCn5YiX6KGoXHJcbiAgICovXHJcbiAgb3B0aW9uczoge1xyXG4gICAgYWRkR2xvYmFsQ2xhc3M6dHJ1ZSxcclxuICAgIG11bHRpcGxlU2xvdHM6IHRydWUgLy8g5Zyo57uE5Lu25a6a5LmJ5pe255qE6YCJ6aG55Lit5ZCv55So5aSac2xvdOaUr+aMgVxyXG4gIH0sXHJcbiAgcHJvcGVydGllczoge1xyXG4gICAgaXNNdXN0QXV0aG9yaXplUGhvbmU6e1xyXG4gICAgICB0eXBlOiBCb29sZWFuLFxyXG4gICAgICB2YWx1ZTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGlzTXVzdEF1dGhvcml6ZUF2YXRhcjp7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgIHZhbHVlOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgaXNSZWZyZXNoQXV0aG9yaXplSW5mbzp7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgIHZhbHVlOiBmYWxzZVxyXG4gICAgfSxcclxuICB9LFxyXG5cclxuICAvKipcclxuICAgKiDnu4Tku7bnmoTliJ3lp4vmlbDmja5cclxuICAgKi9cclxuICBkYXRhOiB7XHJcbiAgICAvLyBsb2NhdGlvbjogdW5kZWZpbmVkLFxyXG4gICAgaGFzVXNlckluZm86ZmFsc2UsXHJcbiAgICBoYXNQaG9uZTpmYWxzZSxcclxuICAgIGlzU2hvd01hc2s6dHJ1ZVxyXG4gIH0sXHJcbiAgbGlmZXRpbWVzOntcclxuICAgIHJlYWR5KCl7XHJcbiAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAvLyAgIC8vIHd4Lmdsb2JhbERhdGEubG9naW5EYXRhLmF2YXRhclVybCA9ICcnO1xyXG4gICAgICAvLyAgIC8vIHd4Lmdsb2JhbERhdGEubG9naW5EYXRhLmNsdGNvZGUgPSAnJztcclxuICAgICAgLy8gICB3eC5nbG9iYWxEYXRhLmxvZ2luRGF0YSA9IHt9XHJcbiAgICAgIC8vICAgICAvLyBjbHRjb2RlOjExMSxcclxuICAgICAgLy8gICAgIC8vIGF2YXRhclVybDonMzMzJ1xyXG4gICAgICAvL1xyXG4gICAgICAvLyAgIGNvbnNvbGUubG9nKCc156eS5ZCO77yM5pu05paw5LqGbG9naW5EYXRhJyk7XHJcbiAgICAgIC8vIH0sNTAwMClcclxuICAgIH1cclxuICB9LFxyXG4gIHBhZ2VMaWZldGltZXM6IHtcclxuICAgIHNob3c6IGZ1bmN0aW9uKCkge1xyXG4gICAgICAvLyDpobXpnaLooqvlsZXnpLpcclxuXHJcbiAgICB9LFxyXG4gICAgaGlkZSgpIHtcclxuXHJcbiAgICB9XHJcbiAgfSxcclxuICAvKipcclxuICAgKiDnu4Tku7bnmoTmlrnms5XliJfooahcclxuICAgKi9cclxuICBtZXRob2RzOiB7XHJcbiAgICBhc3luYyBnZXRVc2VySW5mbyhlOmFueSl7XHJcbiAgICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgICBsZXQge2lzTXVzdEF1dGhvcml6ZVBob25lLGlzTXVzdEF1dGhvcml6ZUF2YXRhcixpc1JlZnJlc2hBdXRob3JpemVJbmZvfSA9IHRoaXMuZGF0YTtcclxuICAgICAgbGV0IGxvZ2luRGF0YSA9IHd4Lmdsb2JhbERhdGEubG9naW5EYXRhO1xyXG4gICAgICBjb25zb2xlLmxvZygn54K55Ye75pe2bG9naW5EYXRhJyxsb2dpbkRhdGEpO1xyXG4gICAgICAvLyBpZiAobG9naW5EYXRhLmF2YXRhclVybCkge1xyXG4gICAgICAvLyAgIHRoaXMuc2V0RGF0YSh7aGFzVXNlckluZm86dHJ1ZX0pXHJcbiAgICAgIC8vIH1cclxuICAgICAgLy8gaWYgKGxvZ2luRGF0YS5jbHRjb2RlKSB7XHJcbiAgICAgIC8vICAgdGhpcy5zZXREYXRhKHtoYXNQaG9uZTp0cnVlfSlcclxuICAgICAgLy8gfVxyXG5cclxuICAgICAgLy8g5Yi35paw5aS05YOP5pi156ewXHJcbiAgICAgIGlmKGlzUmVmcmVzaEF1dGhvcml6ZUluZm8pe1xyXG4gICAgICAgIGF3YWl0IHRoaXMuZ2V0VXNlclByb2ZpbGUoKTtcclxuICAgICAgICBjb25zb2xlLmxvZygn5Yi35paw5o6I5p2D5aS05YOP5ZCObG9naW5EYXRhJyx3eC5nbG9iYWxEYXRhLmxvZ2luRGF0YSk7XHJcbiAgICAgICAgdGhpcy5jb21wbGV0ZUF1dGhvcml6ZSgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvL+W3suaOiOadg+WktOWDj++8jOW3suaOiOadg+eUteivnVxyXG4gICAgICBpZiAobG9naW5EYXRhLmF2YXRhclVybCYmbG9naW5EYXRhLnRlbGVwaG9uZSkge1xyXG4gICAgICAgIHRoaXMuY29tcGxldGVBdXRob3JpemUoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8g55S16K+d5LiO5aS05YOP6YO95LiN6ZyA6KaB5o6I5p2DXHJcbiAgICAgIGlmICghaXNNdXN0QXV0aG9yaXplQXZhdGFyJiYhaXNNdXN0QXV0aG9yaXplQXZhdGFyKSB7XHJcbiAgICAgICAgdGhpcy5jb21wbGV0ZUF1dGhvcml6ZSgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvL+W3suaOiOadg+WktOWDj++8jOS9huS4jemcgOimgeaOiOadg+eUteivnVxyXG4gICAgICBpZiAobG9naW5EYXRhLmF2YXRhclVybCYmIWlzTXVzdEF1dGhvcml6ZUF2YXRhcikge1xyXG4gICAgICAgIHRoaXMuY29tcGxldGVBdXRob3JpemUoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gbGV0IHtoYXNVc2VySW5mbyxoYXNQaG9uZX0gPSB0aGlzLmRhdGE7XHJcbiAgICAgICAgLy8g5pyq5o6I5p2D5aS05YOP77yM5LiU5b+F6aG75o6I5p2D5aS05YOPXHJcbiAgICAgIGlmICghbG9naW5EYXRhLmF2YXRhclVybCYmaXNNdXN0QXV0aG9yaXplQXZhdGFyKXtcclxuICAgICAgICBhd2FpdCB0aGlzLmdldFVzZXJQcm9maWxlKCk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ+aOiOadg+WktOWDj+WQjmxvZ2luRGF0YScsd3guZ2xvYmFsRGF0YS5sb2dpbkRhdGEpO1xyXG4gICAgICAgIGlmICghd3guZ2xvYmFsRGF0YS5sb2dpbkRhdGEuYXZhdGFyVXJsKSByZXR1cm47XHJcbiAgICAgICAgaWYgKGxvZ2luRGF0YS50ZWxlcGhvbmV8fCFpc011c3RBdXRob3JpemVQaG9uZSl7XHJcbiAgICAgICAgICB0aGlzLmNvbXBsZXRlQXV0aG9yaXplKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyDmnKrmjojmnYPnlLXor53vvIzkuJTlv4XpobvmjojmnYPnlLXor51cclxuICAgICAgaWYgKCFsb2dpbkRhdGEudGVsZXBob25lJiZpc011c3RBdXRob3JpemVQaG9uZSl7XHJcbiAgICAgICAgLy8g5o6I5p2D55S16K+dXHJcbiAgICAgICAgdGhpcy5zaG93R2V0UGhvbmVEaWFsb2coKTtcclxuICAgICAgICAvLyBpZiAoIWxvZ2luRGF0YS5jbHRjb2RlKSByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgYXN5bmMgZ2V0VXNlclByb2ZpbGUoKXtcclxuICAgICAgLy8g5o6o6I2Q5L2/55Sod3guZ2V0VXNlclByb2ZpbGXojrflj5bnlKjmiLfkv6Hmga/vvIzlvIDlj5HogIXmr4/mrKHpgJrov4for6XmjqXlj6Pojrflj5bnlKjmiLfkuKrkurrkv6Hmga/lnYfpnIDnlKjmiLfnoa7orqRcclxuICAgICAgLy8g5byA5Y+R6ICF5aal5ZaE5L+d566h55So5oi35b+r6YCf5aGr5YaZ55qE5aS05YOP5pi156ew77yM6YG/5YWN6YeN5aSN5by556qXXHJcbiAgICAgIGNvbnNvbGUubG9nKCc+Pj4+Pj4+PuWHhuWkh+iOt+WPluWktOWDjycpO1xyXG4gICAgICBhd2FpdCB3eC5wcm8uZ2V0VXNlclByb2ZpbGUoe1xyXG4gICAgICAgIGRlc2M6ICfojrflj5blpLTlg4/lrozlloTkvJrlkZjotYTmlpknLCAvLyDlo7DmmI7ojrflj5bnlKjmiLfkuKrkurrkv6Hmga/lkI7nmoTnlKjpgJTvvIzlkI7nu63kvJrlsZXnpLrlnKjlvLnnqpfkuK3vvIzor7fosKjmhY7loavlhplcclxuICAgICAgfSkudGhlbihhc3luYyhyZXM6YW55KT0+e1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XHJcbiAgICAgICAgaWYgKCFhd2FpdCB0aGlzLnBvc3RVc2VySW5mbyhyZXMpKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICAgIHVzZXJJbmZvOiByZXMudXNlckluZm8sXHJcbiAgICAgICAgICAvLyBoYXNVc2VySW5mbzp0cnVlXHJcbiAgICAgICAgfSlcclxuICAgICAgICBpZiAoIWF3YWl0IHd4LiRjb21tb25SZXF1ZXN0LmdldFVzZXJJbmZvKCkpIHJldHVybjtcclxuICAgICAgICBjb25zb2xlLmxvZygnLS0tLeiOt+WPluWktOWDj+aIkOWKn++8gS0tLS0nKTtcclxuICAgICAgICB3eC5zaG93VG9hc3Qoe3RpdGxlOiAn5o6I5p2D5oiQ5YqfJ30pXHJcbiAgICAgIH0pLmNhdGNoKChlcnI6YW55KSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyLCctLS0t6I635Y+W5aS05YOP5aSx6LSl77yBLS0tLScpO1xyXG4gICAgICAgIHd4LnNob3dUb2FzdCh7dGl0bGU6ICfmjojmnYPlpLHotKUnLGljb246J25vbmUnfSlcclxuICAgICAgICAvLyB0aGlzLnNldERhdGEoe2hhc1VzZXJJbmZvOmZhbHNlfSlcclxuICAgICAgfSlcclxuICAgICAgY29uc29sZS5sb2coJz4+Pj4+PuiOt+WPluaOiOadg+WktOWDj+atpemqpOWujOaIkCcpO1xyXG4gICAgfSxcclxuXHJcblxyXG5cclxuICAgIGFzeW5jIGdldFBob25lTnVtYmVyKGUpe1xyXG4gICAgICBjb25zb2xlLmxvZygnZ2V0UGhvbmVOdW1iZXInLCBlKTtcclxuICAgICAgY29uc29sZS5sb2coJz4+Pj4+Pj4+5YeG5aSH6I635Y+W55S16K+dJyk7XHJcbiAgICAgIGlmIChlLmRldGFpbC5lcnJNc2cgPT0gJ2dldFBob25lTnVtYmVyOm9rJykge1xyXG4gICAgICAgIGlmICghYXdhaXQgdGhpcy5wb3N0UGhvbmVOdW1iZXIoZSkpIHJldHVybjtcclxuICAgICAgICBpZiAoIWF3YWl0IHd4LiRjb21tb25SZXF1ZXN0LmdldFVzZXJJbmZvKCkpIHJldHVybjtcclxuICAgICAgICAvLyB0aGlzLnNldERhdGEoe2hhc1Bob25lOnRydWV9KTtcclxuICAgICAgICB0aGlzLmNvbXBsZXRlQXV0aG9yaXplKCk7XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKCctLS0t6I635Y+W55S16K+d5oiQ5Yqf77yBLS0tLScpO1xyXG4gICAgICB9IGVsc2V7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ+WPlua2iOaOiOadgycpO1xyXG4gICAgICAgIC8vIHRoaXMuc2hvd0dldFBob25lRGlhbG9nKCk7XHJcbiAgICAgICAgLy8gdGhpcy5zZXREYXRhKHtoYXNQaG9uZTpmYWxzZX0pO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCctLS0t6I635Y+W55S16K+d5aSx6LSl77yBLS0tLScpO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGFzeW5jIHBvc3RVc2VySW5mbyhyZXM6YW55KXtcclxuICAgICAgbGV0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IHd4LiR1dGlscy50byhcclxuICAgICAgICB3eC4kaHR0cC5yZXF1ZXN0KHtcclxuICAgICAgICAgIHVybDpgL3d4L21pbmlhcHAvdXNlci9wYW5pY0J1eWluZ0luZm8uZG9gLFxyXG4gICAgICAgICAgZGF0YTp7XHJcbiAgICAgICAgICAgIHNpZ25hdHVyZTogcmVzLnNpZ25hdHVyZSxcclxuICAgICAgICAgICAgcmF3RGF0YTogcmVzLnJhd0RhdGEsXHJcbiAgICAgICAgICAgIGVuY3J5cHRlZERhdGE6IHJlcy5lbmNyeXB0ZWREYXRhLFxyXG4gICAgICAgICAgICBpdjogcmVzLml2XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICBpZiAoZXJyb3Ipe1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9LFxyXG5cclxuICAgIGFzeW5jIHBvc3RQaG9uZU51bWJlcihlKXtcclxuICAgICAgbGV0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IHd4LiR1dGlscy50byhcclxuICAgICAgICB3eC4kaHR0cC5yZXF1ZXN0KHtcclxuICAgICAgICAgIHVybDpgL3Nob3BwaW5nL2FjY291bnQuZG8/bT10ZWxSZWdCeUF1dG9SZWdgLFxyXG4gICAgICAgICAgZGF0YTp7XHJcbiAgICAgICAgICAgIFJlZmVycmFsc0NvZGU6ICcnLFxyXG4gICAgICAgICAgICBSZWZlcnJhbHNOYW1lOiAnJyxcclxuICAgICAgICAgICAgZW5jcnlwdGVkRGF0YTogZS5kZXRhaWwuZW5jcnlwdGVkRGF0YSxcclxuICAgICAgICAgICAgaXY6IGUuZGV0YWlsLml2LFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgICAgaWYgKGVycm9yKXtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSxcclxuXHJcbiAgICBzaG93R2V0UGhvbmVEaWFsb2coKXtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICBpc1Nob3dQaG9uZURpYWxvZzp0cnVlXHJcbiAgICAgIH0pXHJcbiAgICB9LFxyXG4gICAgaGlkZUdldFBob25lRGlhbG9nKCl7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgaXNTaG93UGhvbmVEaWFsb2c6ZmFsc2VcclxuICAgICAgfSlcclxuICAgIH0sXHJcbiAgICBjb21wbGV0ZUF1dGhvcml6ZSgpe1xyXG4gICAgICBjb25zb2xlLmxvZygnLS3lrozmiJDmiYDmnInmjojmnYMtLScpO1xyXG4gICAgICB0aGlzLnRyaWdnZXJFdmVudCgnYXV0aG9yaXplJywge1xyXG4gICAgICAgIGlzQXV0aG9yaXplOiB0cnVlXHJcbiAgICAgIH0pXHJcbiAgICB9LFxyXG4gICAgb25EaWFsb2dDbG9zZSgpe1xyXG4gICAgICAvLyB3eC5zaG93VG9hc3Qoe1xyXG4gICAgICAvLyAgIHRpdGxlOiAn5Y+W5raI5o6I5p2DJyxcclxuICAgICAgLy8gICBpY29uOiAnbm9uZScsXHJcbiAgICAgIC8vICAgZHVyYXRpb246IDEwMDBcclxuICAgICAgLy8gfSk7XHJcbiAgICB9LFxyXG4gIH1cclxufSlcclxuIl19
\ No newline at end of file
diff --git a/components/authorize/index.ts b/components/authorize/index.ts
index dd38810..440ec15 100644
--- a/components/authorize/index.ts
+++ b/components/authorize/index.ts
@@ -17,6 +17,10 @@
       type: Boolean,
       value: true
     },
+    isRefreshAuthorizeInfo:{
+      type: Boolean,
+      value: false
+    },
   },
 
   /**
@@ -56,7 +60,7 @@
   methods: {
     async getUserInfo(e:any){
       console.log(e);
-      let {isMustAuthorizePhone,isMustAuthorizeAvatar} = this.data;
+      let {isMustAuthorizePhone,isMustAuthorizeAvatar,isRefreshAuthorizeInfo} = this.data;
       let loginData = wx.globalData.loginData;
       console.log('鐐瑰嚮鏃秎oginData',loginData);
       // if (loginData.avatarUrl) {
@@ -65,6 +69,13 @@
       // if (loginData.cltcode) {
       //   this.setData({hasPhone:true})
       // }
+
+      // 鍒锋柊澶村儚鏄电О
+      if(isRefreshAuthorizeInfo){
+        await this.getUserProfile();
+        console.log('鍒锋柊鎺堟潈澶村儚鍚巐oginData',wx.globalData.loginData);
+        this.completeAuthorize();
+      }
 
       //宸叉巿鏉冨ご鍍忥紝宸叉巿鏉冪數璇�
       if (loginData.avatarUrl&&loginData.telephone) {
@@ -115,8 +126,10 @@
         })
         if (!await wx.$commonRequest.getUserInfo()) return;
         console.log('----鑾峰彇澶村儚鎴愬姛锛�----');
+        wx.showToast({title: '鎺堟潈鎴愬姛'})
       }).catch((err:any) => {
         console.log(err,'----鑾峰彇澶村儚澶辫触锛�----');
+        wx.showToast({title: '鎺堟潈澶辫触',icon:'none'})
         // this.setData({hasUserInfo:false})
       })
       console.log('>>>>>>鑾峰彇鎺堟潈澶村儚姝ラ瀹屾垚');
diff --git a/components/authorize/index.wxml b/components/authorize/index.wxml
index 61553ea..7ee4e18 100644
--- a/components/authorize/index.wxml
+++ b/components/authorize/index.wxml
@@ -1,7 +1,7 @@
 <!--<view  class="clear-btn" open-type="getPhoneNumber"  class="margin-tb-10">-->
 <!--  <slot></slot>-->
 <!--</view>-->
-<view bind:tap="getUserInfo">
+<view catch:tap="getUserInfo">
   <slot></slot>
 </view>
 
diff --git a/components/bubble-tips/index.js b/components/bubble-tips/index.js
index b019097..29be620 100644
--- a/components/bubble-tips/index.js
+++ b/components/bubble-tips/index.js
@@ -7,7 +7,7 @@
     properties: {
         tips: {
             type: String,
-            value: '璇峰湪棣栭〉鏂板缓娲诲姩'
+            value: '棣栭〉鍙互鏂板缓娲诲姩'
         }
     },
     data: {
@@ -30,4 +30,4 @@
         }
     }
 });
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBRUEsU0FBUyxDQUFDO0lBSVIsT0FBTyxFQUFFO1FBQ1AsY0FBYyxFQUFFLElBQUk7UUFDcEIsYUFBYSxFQUFFLElBQUk7S0FDcEI7SUFDRCxVQUFVLEVBQUU7UUFDVixJQUFJLEVBQUM7WUFDSCxJQUFJLEVBQUUsTUFBTTtZQUNaLEtBQUssRUFBQyxVQUFVO1NBQ2pCO0tBQ0Y7SUFLRCxJQUFJLEVBQUU7UUFDSixNQUFNLEVBQUMsSUFBSTtLQUNaO0lBQ0QsU0FBUyxFQUFDO1FBQ1IsS0FBSztZQUFMLGlCQUlDO1lBSEMsVUFBVSxDQUFDO2dCQUNULEtBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQTtZQUNsQixDQUFDLEVBQUMsS0FBSyxDQUFDLENBQUE7UUFDVixDQUFDO0tBQ0Y7SUFLRCxPQUFPLEVBQUU7UUFDUCxTQUFTO1lBQ1AsSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFDWCxNQUFNLEVBQUMsS0FBSzthQUNiLENBQUMsQ0FBQTtZQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekIsQ0FBQztLQUNGO0NBQ0YsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbi8vIGNvbnN0IGFwcCA9IGdldEFwcDxJQXBwT3B0aW9uPigpO1xyXG5Db21wb25lbnQoe1xyXG4gIC8qKlxyXG4gICAqIOe7hOS7tueahOWxnuaAp+WIl+ihqFxyXG4gICAqL1xyXG4gIG9wdGlvbnM6IHtcclxuICAgIGFkZEdsb2JhbENsYXNzOiB0cnVlLFxyXG4gICAgbXVsdGlwbGVTbG90czogdHJ1ZSAvLyDlnKjnu4Tku7blrprkuYnml7bnmoTpgInpobnkuK3lkK/nlKjlpJpzbG905pSv5oyBXHJcbiAgfSxcclxuICBwcm9wZXJ0aWVzOiB7XHJcbiAgICB0aXBzOntcclxuICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICB2YWx1ZTon6K+35Zyo6aaW6aG15paw5bu65rS75YqoJ1xyXG4gICAgfVxyXG4gIH0sXHJcblxyXG4gIC8qKlxyXG4gICAqIOe7hOS7tueahOWIneWni+aVsOaNrlxyXG4gICAqL1xyXG4gIGRhdGE6IHtcclxuICAgIGlzU2hvdzp0cnVlXHJcbiAgfSxcclxuICBsaWZldGltZXM6e1xyXG4gICAgcmVhZHkoKXtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jbG9zZVRpcHMoKVxyXG4gICAgICB9LDEwMDAwKVxyXG4gICAgfVxyXG4gIH0sXHJcblxyXG4gIC8qKlxyXG4gICAqIOe7hOS7tueahOaWueazleWIl+ihqFxyXG4gICAqL1xyXG4gIG1ldGhvZHM6IHtcclxuICAgIGNsb3NlVGlwcygpe1xyXG4gICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgIGlzU2hvdzpmYWxzZVxyXG4gICAgICB9KVxyXG4gICAgICBjb25zb2xlLmxvZygndGlwc+WFs+mXreS6hicpO1xyXG4gICAgfVxyXG4gIH1cclxufSlcclxuIl19
\ No newline at end of file
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBRUEsU0FBUyxDQUFDO0lBSVIsT0FBTyxFQUFFO1FBQ1AsY0FBYyxFQUFFLElBQUk7UUFDcEIsYUFBYSxFQUFFLElBQUk7S0FDcEI7SUFDRCxVQUFVLEVBQUU7UUFDVixJQUFJLEVBQUM7WUFDSCxJQUFJLEVBQUUsTUFBTTtZQUNaLEtBQUssRUFBQyxVQUFVO1NBQ2pCO0tBQ0Y7SUFLRCxJQUFJLEVBQUU7UUFDSixNQUFNLEVBQUMsSUFBSTtLQUNaO0lBQ0QsU0FBUyxFQUFDO1FBQ1IsS0FBSztZQUFMLGlCQUlDO1lBSEMsVUFBVSxDQUFDO2dCQUNULEtBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQTtZQUNsQixDQUFDLEVBQUMsS0FBSyxDQUFDLENBQUE7UUFDVixDQUFDO0tBQ0Y7SUFLRCxPQUFPLEVBQUU7UUFDUCxTQUFTO1lBQ1AsSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFDWCxNQUFNLEVBQUMsS0FBSzthQUNiLENBQUMsQ0FBQTtZQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekIsQ0FBQztLQUNGO0NBQ0YsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbi8vIGNvbnN0IGFwcCA9IGdldEFwcDxJQXBwT3B0aW9uPigpO1xyXG5Db21wb25lbnQoe1xyXG4gIC8qKlxyXG4gICAqIOe7hOS7tueahOWxnuaAp+WIl+ihqFxyXG4gICAqL1xyXG4gIG9wdGlvbnM6IHtcclxuICAgIGFkZEdsb2JhbENsYXNzOiB0cnVlLFxyXG4gICAgbXVsdGlwbGVTbG90czogdHJ1ZSAvLyDlnKjnu4Tku7blrprkuYnml7bnmoTpgInpobnkuK3lkK/nlKjlpJpzbG905pSv5oyBXHJcbiAgfSxcclxuICBwcm9wZXJ0aWVzOiB7XHJcbiAgICB0aXBzOntcclxuICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICB2YWx1ZTon6aaW6aG15Y+v5Lul5paw5bu65rS75YqoJ1xyXG4gICAgfVxyXG4gIH0sXHJcblxyXG4gIC8qKlxyXG4gICAqIOe7hOS7tueahOWIneWni+aVsOaNrlxyXG4gICAqL1xyXG4gIGRhdGE6IHtcclxuICAgIGlzU2hvdzp0cnVlXHJcbiAgfSxcclxuICBsaWZldGltZXM6e1xyXG4gICAgcmVhZHkoKXtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jbG9zZVRpcHMoKVxyXG4gICAgICB9LDEwMDAwKVxyXG4gICAgfVxyXG4gIH0sXHJcblxyXG4gIC8qKlxyXG4gICAqIOe7hOS7tueahOaWueazleWIl+ihqFxyXG4gICAqL1xyXG4gIG1ldGhvZHM6IHtcclxuICAgIGNsb3NlVGlwcygpe1xyXG4gICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgIGlzU2hvdzpmYWxzZVxyXG4gICAgICB9KVxyXG4gICAgICBjb25zb2xlLmxvZygndGlwc+WFs+mXreS6hicpO1xyXG4gICAgfVxyXG4gIH1cclxufSlcclxuIl19
\ No newline at end of file
diff --git a/components/bubble-tips/index.ts b/components/bubble-tips/index.ts
index aab41d3..84cdec0 100644
--- a/components/bubble-tips/index.ts
+++ b/components/bubble-tips/index.ts
@@ -11,7 +11,7 @@
   properties: {
     tips:{
       type: String,
-      value:'璇峰湪棣栭〉鏂板缓娲诲姩'
+      value:'棣栭〉鍙互鏂板缓娲诲姩'
     }
   },
 
diff --git a/components/delivery-method/index.js b/components/delivery-method/index.js
index aa00869..be478fb 100644
--- a/components/delivery-method/index.js
+++ b/components/delivery-method/index.js
@@ -21,7 +21,7 @@
         deliveryMethods: ['鍒板簵鑷彁-', '閰嶉�佸埌瀹�-'],
         isShowPicker: false,
         deliveryMethod: '鍒板簵鑷彁-',
-        transCosts: ''
+        transCosts: 0
     },
     lifetimes: {
         ready: function () {
@@ -107,4 +107,4 @@
         },
     }
 });
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLHVEQUFrRDtBQUVsRCxJQUFJLGlCQUE4QixDQUFDO0FBQ25DLFNBQVMsQ0FBQztJQUlSLE9BQU8sRUFBRTtRQUNQLGNBQWMsRUFBQyxJQUFJO1FBQ25CLGFBQWEsRUFBRSxJQUFJO0tBQ3BCO0lBQ0QsVUFBVSxFQUFFO1FBQ1YsUUFBUSxFQUFDO1lBQ1AsSUFBSSxFQUFFLE1BQU07WUFDWixLQUFLLEVBQUUsRUFBRTtTQU9WO1FBQ0QsT0FBTyxFQUFDO1lBQ04sSUFBSSxFQUFFLE1BQU07WUFDWixLQUFLLEVBQUUsRUFBRTtTQUNWO0tBQ0Y7SUFLRCxJQUFJLEVBQUU7UUFDSixlQUFlLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO1FBQ25DLFlBQVksRUFBQyxLQUFLO1FBQ2xCLGNBQWMsRUFBRSxPQUFPO1FBQ3ZCLFVBQVUsRUFBQyxFQUFFO0tBQ2Q7SUFDRCxTQUFTLEVBQUM7UUFDUixLQUFLO1lBQ0gsSUFBSSxlQUFlLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQ3RELE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQ1gsZUFBZSxFQUFFLGVBQWU7Z0JBQ2hDLGNBQWMsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUTthQUU1QyxDQUFDLENBQUE7WUFRRixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUM7Z0JBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLEVBQUM7b0JBQ3BDLGNBQWMsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDO29CQUNsQyxNQUFNLEVBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU07b0JBQ2hDLEtBQUssRUFBQyxDQUFDO2lCQUNSLENBQUMsQ0FBQTthQUNIO1lBRUQsaUJBQWlCLEdBQUcsSUFBSSxxQkFBVyxDQUFDO2dCQUNsQyxLQUFLLEVBQUU7b0JBQ0wsVUFBVSxFQUFFO3dCQUNWLFFBQVEsRUFBRSxJQUFJO3dCQUNkLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2lCQUNGO2dCQUNELFFBQVEsRUFBRTtvQkFDUixVQUFVLEVBQUU7d0JBQ1YsUUFBUSxFQUFFLFFBQVE7d0JBQ2xCLE1BQU0sRUFBRSxVQUFVO3FCQUNuQjtpQkFDRjtnQkFDRCxVQUFVLEVBQUMsSUFBSTthQUNoQixFQUFDLElBQUksQ0FBQyxDQUFDO1FBQ1YsQ0FBQztLQUNGO0lBQ0QsU0FBUyxFQUFFO1FBQ1QsVUFBVSxFQUFFLFVBQVMsR0FBRztZQUN0QixPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFDLEdBQUcsRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1lBQ3BELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBRSxJQUFJLEVBQUM7Z0JBQzVCLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDO29CQUNYLGNBQWMsRUFBRSxRQUFRLENBQUMsUUFBUTtvQkFDakMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNO29CQUN2QixVQUFVLEVBQUUsUUFBUSxDQUFDLFVBQVU7b0JBQy9CLGlCQUFpQixFQUFDLFFBQVEsQ0FBQyxpQkFBaUI7aUJBQzdDLENBQUMsQ0FBQTthQUNIO1FBRUgsQ0FBQztLQUNGO0lBSUQsT0FBTyxFQUFFO1FBQ1AsVUFBVTtZQUNSLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBQyxZQUFZLEVBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUNwQyxDQUFDO1FBQ0QsYUFBYTtZQUNYLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBQyxZQUFZLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsZUFBZSxZQUFDLEtBQVM7WUFDakIsSUFBQSxpQkFBK0IsRUFBN0IsZ0JBQUssRUFBRSxnQkFBc0IsQ0FBQztZQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBQyxLQUFLLENBQUMsQ0FBQztZQUN6QixJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUNYLGNBQWMsRUFBRSxLQUFLLENBQUMsUUFBUTtnQkFDOUIsaUJBQWlCLEVBQUMsS0FBSyxDQUFDLGlCQUFpQjthQUMxQyxDQUFDLENBQUE7WUFDRixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBQztnQkFDcEMsY0FBYyxFQUFFLEtBQUs7Z0JBQ3JCLE1BQU0sRUFBQyxLQUFLLENBQUMsTUFBTTtnQkFDbkIsS0FBSyxPQUFBO2FBQ04sQ0FBQyxDQUFBO1FBQ0osQ0FBQztRQUVELGNBQWM7WUFDWixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN2QixDQUFDO1FBRUQsZUFBZSxZQUFDLENBQUs7WUFDYixJQUFBLHNCQUFLLENBQWE7WUFDeEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNmLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUMsS0FBSyxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFDWCxVQUFVLEVBQUMsS0FBSyxDQUFDLElBQUksRUFBRTthQUN4QixDQUFDLENBQUE7UUFDSixDQUFDO1FBQ0QsV0FBVztZQUNULE9BQU8saUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUE7UUFDekMsQ0FBQztLQUNGO0NBQ0YsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbi8vIGNvbnN0IGFwcCA9IGdldEFwcDxJQXBwT3B0aW9uPigpO1xyXG5pbXBvcnQgTXlWYWxpZGF0b3IgZnJvbSBcIi4uLy4uL3V0aWxzL215VmFsaWRhdG9yXCI7XHJcblxyXG5sZXQgdmFsaWRhdG9ySW5zdGFuY2U6IE15VmFsaWRhdG9yO1xyXG5Db21wb25lbnQoe1xyXG4gIC8qKlxyXG4gICAqIOe7hOS7tueahOWxnuaAp+WIl+ihqFxyXG4gICAqL1xyXG4gIG9wdGlvbnM6IHtcclxuICAgIGFkZEdsb2JhbENsYXNzOnRydWUsXHJcbiAgICBtdWx0aXBsZVNsb3RzOiB0cnVlIC8vIOWcqOe7hOS7tuWumuS5ieaXtueahOmAiemhueS4reWQr+eUqOWkmnNsb3TmlK/mjIFcclxuICB9LFxyXG4gIHByb3BlcnRpZXM6IHtcclxuICAgIGRlbGl2ZXJ5OntcclxuICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICB2YWx1ZToge30sXHJcbiAgICAgIC8vIG9ic2VydmVyOiBmdW5jdGlvbiAobmV3VmFsLCBvbGRWYWwsIGNoYW5nZWRQYXRoKSB7XHJcbiAgICAgIC8vICAgLy8g5bGe5oCn6KKr5pS55Y+Y5pe25omn6KGM55qE5Ye95pWw77yI5Y+v6YCJ77yJ77yM5Lmf5Y+v5Lul5YaZ5oiQ5ZyobWV0aG9kc+auteS4reWumuS5ieeahOaWueazleWQjeWtl+espuS4slxyXG4gICAgICAvLyAgIC8vIOmAmuW4uCBuZXdWYWwg5bCx5piv5paw6K6+572u55qE5pWw5o2u77yMIG9sZFZhbCDmmK/ml6fmlbDmja5cclxuICAgICAgLy8gICBjb25zb2xlLmxvZyhuZXdWYWwsb2xkVmFsLGNoYW5nZWRQYXRoKTtcclxuICAgICAgLy9cclxuICAgICAgLy8gfVxyXG4gICAgfSxcclxuICAgIGRvY2NvZGU6e1xyXG4gICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgIHZhbHVlOiAnJ1xyXG4gICAgfVxyXG4gIH0sXHJcblxyXG4gIC8qKlxyXG4gICAqIOe7hOS7tueahOWIneWni+aVsOaNrlxyXG4gICAqL1xyXG4gIGRhdGE6IHtcclxuICAgIGRlbGl2ZXJ5TWV0aG9kczogWyfliLDlupfoh6rmj5AtJywgJ+mFjemAgeWIsOWuti0nXSxcclxuICAgIGlzU2hvd1BpY2tlcjpmYWxzZSxcclxuICAgIGRlbGl2ZXJ5TWV0aG9kOiAn5Yiw5bqX6Ieq5o+QLScsXHJcbiAgICB0cmFuc0Nvc3RzOicnXHJcbiAgfSxcclxuICBsaWZldGltZXM6e1xyXG4gICAgcmVhZHkoKXtcclxuICAgICAgbGV0IGRlbGl2ZXJ5TWV0aG9kcyA9IHd4Lmdsb2JhbERhdGEuc2V0dGluZ3MuZnJlZUxpc3Q7XHJcbiAgICAgIGNvbnNvbGUubG9nKCfphY3pgIHmlrnlvI/liJfooajjgILjgILjgIInLGRlbGl2ZXJ5TWV0aG9kcyk7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgZGVsaXZlcnlNZXRob2RzOiBkZWxpdmVyeU1ldGhvZHMsXHJcbiAgICAgICAgZGVsaXZlcnlNZXRob2Q6IGRlbGl2ZXJ5TWV0aG9kc1swXS5GcmVlTmFtZSxcclxuICAgICAgICAvLyBpc1JlcXVpcmVkQWRkcmVzczpkZWxpdmVyeU1ldGhvZHNbMF0uaXNSZXF1aXJlZEFkZHJlc3NcclxuICAgICAgfSlcclxuICAgICAgLy8gY29uc29sZS5sb2coJ+iOt+WPlum7mOiupOmFjemAgeWIl+ihqCcpO1xyXG4gICAgICAvLyBpZiAodGhpcy5kYXRhLmRvY2NvZGUpe1xyXG4gICAgICAvL1xyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGVsc2V7XHJcbiAgICAgIC8vXHJcbiAgICAgIC8vIH1cclxuICAgICAgaWYgKCF0aGlzLmRhdGEuZG9jY29kZSl7XHJcbiAgICAgICAgdGhpcy50cmlnZ2VyRXZlbnQoJ2dldERlbGl2ZXJ5TWV0aG9kJyx7XHJcbiAgICAgICAgICBkZWxpdmVyeU1ldGhvZDogZGVsaXZlcnlNZXRob2RzWzBdLFxyXG4gICAgICAgICAgZnJlZUlkOmRlbGl2ZXJ5TWV0aG9kc1swXS5GcmVlSWQsXHJcbiAgICAgICAgICBpbmRleDowXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG5cclxuICAgICAgdmFsaWRhdG9ySW5zdGFuY2UgPSBuZXcgTXlWYWxpZGF0b3Ioe1xyXG4gICAgICAgIHJ1bGVzOiB7XHJcbiAgICAgICAgICB0cmFuc0Nvc3RzOiB7XHJcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgICAgICBudW1iZXI6IHRydWVcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIG1lc3NhZ2VzOiB7XHJcbiAgICAgICAgICB0cmFuc0Nvc3RzOiB7XHJcbiAgICAgICAgICAgIHJlcXVpcmVkOiAn6K+36L6T5YWl6YWN6YCB6LS5JyxcclxuICAgICAgICAgICAgbnVtYmVyOiAn6YWN6YCB6LS55b+F6aG75Li65pWw5a2XJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbXVsdGlDaGVjazp0cnVlXHJcbiAgICAgIH0sdGhpcyk7XHJcbiAgICB9XHJcbiAgfSxcclxuICBvYnNlcnZlcnM6IHtcclxuICAgICdkZWxpdmVyeSc6IGZ1bmN0aW9uKHZhbCkge1xyXG4gICAgICBjb25zb2xlLmxvZygn55uR5ZCs6YWN6YCB5pa55byPZGVsaXZlcnknLHZhbCx0aGlzLmRhdGEuZGVsaXZlcnkpXHJcbiAgICAgIGlmIChKU09OLnN0cmluZ2lmeSh2YWwpIT0ne30nKXtcclxuICAgICAgICBsZXQgZGVsaXZlcnkgPSB0aGlzLmRhdGEuZGVsaXZlcnk7XHJcbiAgICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICAgIGRlbGl2ZXJ5TWV0aG9kOiBkZWxpdmVyeS5mcmVlTmFtZSxcclxuICAgICAgICAgIGZyZWVJZDogZGVsaXZlcnkuZnJlZUlkLFxyXG4gICAgICAgICAgdHJhbnNDb3N0czogZGVsaXZlcnkudHJhbnNDb3N0cyxcclxuICAgICAgICAgIGlzUmVxdWlyZWRBZGRyZXNzOmRlbGl2ZXJ5LmlzUmVxdWlyZWRBZGRyZXNzXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuICB9LFxyXG4gIC8qKlxyXG4gICAqIOe7hOS7tueahOaWueazleWIl+ihqFxyXG4gICAqL1xyXG4gIG1ldGhvZHM6IHtcclxuICAgIHNob3dQaWNrZXIoKXtcclxuICAgICAgdGhpcy5zZXREYXRhKHtpc1Nob3dQaWNrZXI6dHJ1ZX0pO1xyXG4gICAgfSxcclxuICAgIG9uUGlja2VyQ2xvc2UoKXtcclxuICAgICAgdGhpcy5zZXREYXRhKHtpc1Nob3dQaWNrZXI6ZmFsc2V9KTtcclxuICAgIH0sXHJcbiAgICBvblBpY2tlckNvbmZpcm0oZXZlbnQ6YW55KSB7XHJcbiAgICAgIGNvbnN0IHsgdmFsdWUsIGluZGV4IH0gPSBldmVudC5kZXRhaWw7XHJcbiAgICAgIGNvbnNvbGUubG9nKHZhbHVlLGluZGV4KTtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICBkZWxpdmVyeU1ldGhvZDogdmFsdWUuRnJlZU5hbWUsXHJcbiAgICAgICAgaXNSZXF1aXJlZEFkZHJlc3M6dmFsdWUuaXNSZXF1aXJlZEFkZHJlc3NcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5vblBpY2tlckNsb3NlKCk7XHJcbiAgICAgIHRoaXMudHJpZ2dlckV2ZW50KCdnZXREZWxpdmVyeU1ldGhvZCcse1xyXG4gICAgICAgIGRlbGl2ZXJ5TWV0aG9kOiB2YWx1ZSxcclxuICAgICAgICBmcmVlSWQ6dmFsdWUuRnJlZUlkLFxyXG4gICAgICAgIGluZGV4XHJcbiAgICAgIH0pXHJcbiAgICB9LFxyXG5cclxuICAgIG9uUGlja2VyQ2FuY2VsKCkge1xyXG4gICAgICBjb25zb2xlLmxvZygn5Y+W5raIJyk7XHJcbiAgICAgIHRoaXMub25QaWNrZXJDbG9zZSgpO1xyXG4gICAgfSxcclxuXHJcbiAgICBjaGVja1RyYW5zQ29zdHMoZTphbnkpe1xyXG4gICAgICBsZXQgeyB2YWx1ZSB9ID0gZS5kZXRhaWxcclxuICAgICAgY29uc29sZS5sb2coZSk7XHJcbiAgICAgIHZhbGlkYXRvckluc3RhbmNlLmNoZWNrRmllbGQoJ3RyYW5zQ29zdHMnLHZhbHVlKTtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICB0cmFuc0Nvc3RzOnZhbHVlLnRyaW0oKVxyXG4gICAgICB9KVxyXG4gICAgfSxcclxuICAgIGNoZWNrRmllbGRzKCl7XHJcbiAgICAgIHJldHVybiB2YWxpZGF0b3JJbnN0YW5jZS5jaGVja0FsbERhdGEoKVxyXG4gICAgfSxcclxuICB9XHJcbn0pXHJcbiJdfQ==
\ No newline at end of file
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLHVEQUFrRDtBQUVsRCxJQUFJLGlCQUE4QixDQUFDO0FBQ25DLFNBQVMsQ0FBQztJQUlSLE9BQU8sRUFBRTtRQUNQLGNBQWMsRUFBQyxJQUFJO1FBQ25CLGFBQWEsRUFBRSxJQUFJO0tBQ3BCO0lBQ0QsVUFBVSxFQUFFO1FBQ1YsUUFBUSxFQUFDO1lBQ1AsSUFBSSxFQUFFLE1BQU07WUFDWixLQUFLLEVBQUUsRUFBRTtTQU9WO1FBQ0QsT0FBTyxFQUFDO1lBQ04sSUFBSSxFQUFFLE1BQU07WUFDWixLQUFLLEVBQUUsRUFBRTtTQUNWO0tBQ0Y7SUFLRCxJQUFJLEVBQUU7UUFDSixlQUFlLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO1FBQ25DLFlBQVksRUFBQyxLQUFLO1FBQ2xCLGNBQWMsRUFBRSxPQUFPO1FBQ3ZCLFVBQVUsRUFBRSxDQUFDO0tBQ2Q7SUFDRCxTQUFTLEVBQUM7UUFDUixLQUFLO1lBQ0gsSUFBSSxlQUFlLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQ3RELE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQ1gsZUFBZSxFQUFFLGVBQWU7Z0JBQ2hDLGNBQWMsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUTthQUU1QyxDQUFDLENBQUE7WUFRRixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUM7Z0JBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLEVBQUM7b0JBQ3BDLGNBQWMsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDO29CQUNsQyxNQUFNLEVBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU07b0JBQ2hDLEtBQUssRUFBQyxDQUFDO2lCQUNSLENBQUMsQ0FBQTthQUNIO1lBRUQsaUJBQWlCLEdBQUcsSUFBSSxxQkFBVyxDQUFDO2dCQUNsQyxLQUFLLEVBQUU7b0JBQ0wsVUFBVSxFQUFFO3dCQUNWLFFBQVEsRUFBRSxJQUFJO3dCQUNkLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2lCQUNGO2dCQUNELFFBQVEsRUFBRTtvQkFDUixVQUFVLEVBQUU7d0JBQ1YsUUFBUSxFQUFFLFFBQVE7d0JBQ2xCLE1BQU0sRUFBRSxVQUFVO3FCQUNuQjtpQkFDRjtnQkFDRCxVQUFVLEVBQUMsSUFBSTthQUNoQixFQUFDLElBQUksQ0FBQyxDQUFDO1FBQ1YsQ0FBQztLQUNGO0lBQ0QsU0FBUyxFQUFFO1FBQ1QsVUFBVSxFQUFFLFVBQVMsR0FBRztZQUN0QixPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFDLEdBQUcsRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1lBQ3BELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBRSxJQUFJLEVBQUM7Z0JBQzVCLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDO29CQUNYLGNBQWMsRUFBRSxRQUFRLENBQUMsUUFBUTtvQkFDakMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNO29CQUN2QixVQUFVLEVBQUUsUUFBUSxDQUFDLFVBQVU7b0JBQy9CLGlCQUFpQixFQUFDLFFBQVEsQ0FBQyxpQkFBaUI7aUJBQzdDLENBQUMsQ0FBQTthQUNIO1FBRUgsQ0FBQztLQUNGO0lBSUQsT0FBTyxFQUFFO1FBQ1AsVUFBVTtZQUNSLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBQyxZQUFZLEVBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUNwQyxDQUFDO1FBQ0QsYUFBYTtZQUNYLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBQyxZQUFZLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsZUFBZSxZQUFDLEtBQVM7WUFDakIsSUFBQSxpQkFBK0IsRUFBN0IsZ0JBQUssRUFBRSxnQkFBc0IsQ0FBQztZQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBQyxLQUFLLENBQUMsQ0FBQztZQUN6QixJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUNYLGNBQWMsRUFBRSxLQUFLLENBQUMsUUFBUTtnQkFDOUIsaUJBQWlCLEVBQUMsS0FBSyxDQUFDLGlCQUFpQjthQUMxQyxDQUFDLENBQUE7WUFDRixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBQztnQkFDcEMsY0FBYyxFQUFFLEtBQUs7Z0JBQ3JCLE1BQU0sRUFBQyxLQUFLLENBQUMsTUFBTTtnQkFDbkIsS0FBSyxPQUFBO2FBQ04sQ0FBQyxDQUFBO1FBQ0osQ0FBQztRQUVELGNBQWM7WUFDWixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN2QixDQUFDO1FBRUQsZUFBZSxZQUFDLENBQUs7WUFDYixJQUFBLHNCQUFLLENBQWE7WUFDeEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNmLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUMsS0FBSyxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFDWCxVQUFVLEVBQUMsS0FBSyxDQUFDLElBQUksRUFBRTthQUN4QixDQUFDLENBQUE7UUFDSixDQUFDO1FBQ0QsV0FBVztZQUNULE9BQU8saUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUE7UUFDekMsQ0FBQztLQUNGO0NBQ0YsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbi8vIGNvbnN0IGFwcCA9IGdldEFwcDxJQXBwT3B0aW9uPigpO1xyXG5pbXBvcnQgTXlWYWxpZGF0b3IgZnJvbSBcIi4uLy4uL3V0aWxzL215VmFsaWRhdG9yXCI7XHJcblxyXG5sZXQgdmFsaWRhdG9ySW5zdGFuY2U6IE15VmFsaWRhdG9yO1xyXG5Db21wb25lbnQoe1xyXG4gIC8qKlxyXG4gICAqIOe7hOS7tueahOWxnuaAp+WIl+ihqFxyXG4gICAqL1xyXG4gIG9wdGlvbnM6IHtcclxuICAgIGFkZEdsb2JhbENsYXNzOnRydWUsXHJcbiAgICBtdWx0aXBsZVNsb3RzOiB0cnVlIC8vIOWcqOe7hOS7tuWumuS5ieaXtueahOmAiemhueS4reWQr+eUqOWkmnNsb3TmlK/mjIFcclxuICB9LFxyXG4gIHByb3BlcnRpZXM6IHtcclxuICAgIGRlbGl2ZXJ5OntcclxuICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICB2YWx1ZToge30sXHJcbiAgICAgIC8vIG9ic2VydmVyOiBmdW5jdGlvbiAobmV3VmFsLCBvbGRWYWwsIGNoYW5nZWRQYXRoKSB7XHJcbiAgICAgIC8vICAgLy8g5bGe5oCn6KKr5pS55Y+Y5pe25omn6KGM55qE5Ye95pWw77yI5Y+v6YCJ77yJ77yM5Lmf5Y+v5Lul5YaZ5oiQ5ZyobWV0aG9kc+auteS4reWumuS5ieeahOaWueazleWQjeWtl+espuS4slxyXG4gICAgICAvLyAgIC8vIOmAmuW4uCBuZXdWYWwg5bCx5piv5paw6K6+572u55qE5pWw5o2u77yMIG9sZFZhbCDmmK/ml6fmlbDmja5cclxuICAgICAgLy8gICBjb25zb2xlLmxvZyhuZXdWYWwsb2xkVmFsLGNoYW5nZWRQYXRoKTtcclxuICAgICAgLy9cclxuICAgICAgLy8gfVxyXG4gICAgfSxcclxuICAgIGRvY2NvZGU6e1xyXG4gICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgIHZhbHVlOiAnJ1xyXG4gICAgfVxyXG4gIH0sXHJcblxyXG4gIC8qKlxyXG4gICAqIOe7hOS7tueahOWIneWni+aVsOaNrlxyXG4gICAqL1xyXG4gIGRhdGE6IHtcclxuICAgIGRlbGl2ZXJ5TWV0aG9kczogWyfliLDlupfoh6rmj5AtJywgJ+mFjemAgeWIsOWuti0nXSxcclxuICAgIGlzU2hvd1BpY2tlcjpmYWxzZSxcclxuICAgIGRlbGl2ZXJ5TWV0aG9kOiAn5Yiw5bqX6Ieq5o+QLScsXHJcbiAgICB0cmFuc0Nvc3RzOiAwXHJcbiAgfSxcclxuICBsaWZldGltZXM6e1xyXG4gICAgcmVhZHkoKXtcclxuICAgICAgbGV0IGRlbGl2ZXJ5TWV0aG9kcyA9IHd4Lmdsb2JhbERhdGEuc2V0dGluZ3MuZnJlZUxpc3Q7XHJcbiAgICAgIGNvbnNvbGUubG9nKCfphY3pgIHmlrnlvI/liJfooajjgILjgILjgIInLGRlbGl2ZXJ5TWV0aG9kcyk7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgZGVsaXZlcnlNZXRob2RzOiBkZWxpdmVyeU1ldGhvZHMsXHJcbiAgICAgICAgZGVsaXZlcnlNZXRob2Q6IGRlbGl2ZXJ5TWV0aG9kc1swXS5GcmVlTmFtZSxcclxuICAgICAgICAvLyBpc1JlcXVpcmVkQWRkcmVzczpkZWxpdmVyeU1ldGhvZHNbMF0uaXNSZXF1aXJlZEFkZHJlc3NcclxuICAgICAgfSlcclxuICAgICAgLy8gY29uc29sZS5sb2coJ+iOt+WPlum7mOiupOmFjemAgeWIl+ihqCcpO1xyXG4gICAgICAvLyBpZiAodGhpcy5kYXRhLmRvY2NvZGUpe1xyXG4gICAgICAvL1xyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGVsc2V7XHJcbiAgICAgIC8vXHJcbiAgICAgIC8vIH1cclxuICAgICAgaWYgKCF0aGlzLmRhdGEuZG9jY29kZSl7XHJcbiAgICAgICAgdGhpcy50cmlnZ2VyRXZlbnQoJ2dldERlbGl2ZXJ5TWV0aG9kJyx7XHJcbiAgICAgICAgICBkZWxpdmVyeU1ldGhvZDogZGVsaXZlcnlNZXRob2RzWzBdLFxyXG4gICAgICAgICAgZnJlZUlkOmRlbGl2ZXJ5TWV0aG9kc1swXS5GcmVlSWQsXHJcbiAgICAgICAgICBpbmRleDowXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG5cclxuICAgICAgdmFsaWRhdG9ySW5zdGFuY2UgPSBuZXcgTXlWYWxpZGF0b3Ioe1xyXG4gICAgICAgIHJ1bGVzOiB7XHJcbiAgICAgICAgICB0cmFuc0Nvc3RzOiB7XHJcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgICAgICBudW1iZXI6IHRydWVcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIG1lc3NhZ2VzOiB7XHJcbiAgICAgICAgICB0cmFuc0Nvc3RzOiB7XHJcbiAgICAgICAgICAgIHJlcXVpcmVkOiAn6K+36L6T5YWl6YWN6YCB6LS5JyxcclxuICAgICAgICAgICAgbnVtYmVyOiAn6YWN6YCB6LS55b+F6aG75Li65pWw5a2XJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbXVsdGlDaGVjazp0cnVlXHJcbiAgICAgIH0sdGhpcyk7XHJcbiAgICB9XHJcbiAgfSxcclxuICBvYnNlcnZlcnM6IHtcclxuICAgICdkZWxpdmVyeSc6IGZ1bmN0aW9uKHZhbCkge1xyXG4gICAgICBjb25zb2xlLmxvZygn55uR5ZCs6YWN6YCB5pa55byPZGVsaXZlcnknLHZhbCx0aGlzLmRhdGEuZGVsaXZlcnkpXHJcbiAgICAgIGlmIChKU09OLnN0cmluZ2lmeSh2YWwpIT0ne30nKXtcclxuICAgICAgICBsZXQgZGVsaXZlcnkgPSB0aGlzLmRhdGEuZGVsaXZlcnk7XHJcbiAgICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICAgIGRlbGl2ZXJ5TWV0aG9kOiBkZWxpdmVyeS5mcmVlTmFtZSxcclxuICAgICAgICAgIGZyZWVJZDogZGVsaXZlcnkuZnJlZUlkLFxyXG4gICAgICAgICAgdHJhbnNDb3N0czogZGVsaXZlcnkudHJhbnNDb3N0cyxcclxuICAgICAgICAgIGlzUmVxdWlyZWRBZGRyZXNzOmRlbGl2ZXJ5LmlzUmVxdWlyZWRBZGRyZXNzXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuICB9LFxyXG4gIC8qKlxyXG4gICAqIOe7hOS7tueahOaWueazleWIl+ihqFxyXG4gICAqL1xyXG4gIG1ldGhvZHM6IHtcclxuICAgIHNob3dQaWNrZXIoKXtcclxuICAgICAgdGhpcy5zZXREYXRhKHtpc1Nob3dQaWNrZXI6dHJ1ZX0pO1xyXG4gICAgfSxcclxuICAgIG9uUGlja2VyQ2xvc2UoKXtcclxuICAgICAgdGhpcy5zZXREYXRhKHtpc1Nob3dQaWNrZXI6ZmFsc2V9KTtcclxuICAgIH0sXHJcbiAgICBvblBpY2tlckNvbmZpcm0oZXZlbnQ6YW55KSB7XHJcbiAgICAgIGNvbnN0IHsgdmFsdWUsIGluZGV4IH0gPSBldmVudC5kZXRhaWw7XHJcbiAgICAgIGNvbnNvbGUubG9nKHZhbHVlLGluZGV4KTtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICBkZWxpdmVyeU1ldGhvZDogdmFsdWUuRnJlZU5hbWUsXHJcbiAgICAgICAgaXNSZXF1aXJlZEFkZHJlc3M6dmFsdWUuaXNSZXF1aXJlZEFkZHJlc3NcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5vblBpY2tlckNsb3NlKCk7XHJcbiAgICAgIHRoaXMudHJpZ2dlckV2ZW50KCdnZXREZWxpdmVyeU1ldGhvZCcse1xyXG4gICAgICAgIGRlbGl2ZXJ5TWV0aG9kOiB2YWx1ZSxcclxuICAgICAgICBmcmVlSWQ6dmFsdWUuRnJlZUlkLFxyXG4gICAgICAgIGluZGV4XHJcbiAgICAgIH0pXHJcbiAgICB9LFxyXG5cclxuICAgIG9uUGlja2VyQ2FuY2VsKCkge1xyXG4gICAgICBjb25zb2xlLmxvZygn5Y+W5raIJyk7XHJcbiAgICAgIHRoaXMub25QaWNrZXJDbG9zZSgpO1xyXG4gICAgfSxcclxuXHJcbiAgICBjaGVja1RyYW5zQ29zdHMoZTphbnkpe1xyXG4gICAgICBsZXQgeyB2YWx1ZSB9ID0gZS5kZXRhaWxcclxuICAgICAgY29uc29sZS5sb2coZSk7XHJcbiAgICAgIHZhbGlkYXRvckluc3RhbmNlLmNoZWNrRmllbGQoJ3RyYW5zQ29zdHMnLHZhbHVlKTtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICB0cmFuc0Nvc3RzOnZhbHVlLnRyaW0oKVxyXG4gICAgICB9KVxyXG4gICAgfSxcclxuICAgIGNoZWNrRmllbGRzKCl7XHJcbiAgICAgIHJldHVybiB2YWxpZGF0b3JJbnN0YW5jZS5jaGVja0FsbERhdGEoKVxyXG4gICAgfSxcclxuICB9XHJcbn0pXHJcbiJdfQ==
\ No newline at end of file
diff --git a/components/delivery-method/index.ts b/components/delivery-method/index.ts
index 93a3616..557fa00 100644
--- a/components/delivery-method/index.ts
+++ b/components/delivery-method/index.ts
@@ -35,7 +35,7 @@
     deliveryMethods: ['鍒板簵鑷彁-', '閰嶉�佸埌瀹�-'],
     isShowPicker:false,
     deliveryMethod: '鍒板簵鑷彁-',
-    transCosts:''
+    transCosts: 0
   },
   lifetimes:{
     ready(){
diff --git a/components/delivery-method/index.wxml b/components/delivery-method/index.wxml
index 907056e..8a799cc 100644
--- a/components/delivery-method/index.wxml
+++ b/components/delivery-method/index.wxml
@@ -1,5 +1,5 @@
 <view  class="">
-  <van-cell bind:tap="showPicker" title-width="220rpx" class="my-cell seller" border="{{false}}" title="閰嶉�佹柟寮�" value="{{deliveryMethod}}" ></van-cell>
+  <van-cell bind:tap="showPicker" title-width="220rpx" class="my-cell seller required" border="{{false}}" title="閰嶉�佹柟寮�" value="{{deliveryMethod}}" ></van-cell>
   <van-popup
       show="{{isShowPicker}}"
       position="bottom"
@@ -18,6 +18,7 @@
   </van-popup>
 
   <van-field
+      required
       wx:if="{{isRequiredAddress}}"
       class="my-cell"
       value="{{ transCosts }}"
diff --git a/components/goods-action/index.wxml b/components/goods-action/index.wxml
index eeea1e2..24cbb30 100644
--- a/components/goods-action/index.wxml
+++ b/components/goods-action/index.wxml
@@ -95,6 +95,7 @@
   </view>
 </view>
 <van-share-sheet
+    z-index="1000"
     show="{{ showShare }}"
     title="绔嬪嵆鍒嗕韩缁欏ソ鍙�"
     options="{{ shareOptions }}"
diff --git a/components/location-plugin/index.js b/components/location-plugin/index.js
index 6d710b3..2a4720a 100644
--- a/components/location-plugin/index.js
+++ b/components/location-plugin/index.js
@@ -13,11 +13,16 @@
     },
     data: {},
     lifetimes: {
-        ready: function () { }
+        ready: function () { },
+        detached: function () {
+            console.log('鍦板浘缁勪欢閿�姣�');
+            chooseLocation.setLocation(null);
+        },
     },
     pageLifetimes: {
         show: function () {
             var location = this.data.location;
+            console.log('杩涘叆椤甸潰鏃躲�傘�傘�俵ocation', location);
             if (JSON.stringify(location) == '{}') {
                 this.setData({ location: null });
             }
@@ -29,9 +34,6 @@
                 });
                 this.triggerEvent('getLocation', location);
             }
-        },
-        hide: function () {
-            chooseLocation.setLocation(null);
         }
     },
     methods: {
@@ -55,4 +57,4 @@
         }
     }
 });
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBR0EsSUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDdkQsU0FBUyxDQUFDO0lBSVIsT0FBTyxFQUFFO1FBQ1AsY0FBYyxFQUFDLElBQUk7UUFDbkIsYUFBYSxFQUFFLElBQUk7S0FDcEI7SUFDRCxVQUFVLEVBQUU7UUFDVixRQUFRLEVBQUM7WUFDUCxJQUFJLEVBQUUsTUFBTSxJQUFFLElBQUk7WUFDbEIsS0FBSyxFQUFFLEVBQUU7U0FDVjtLQUNGO0lBS0QsSUFBSSxFQUFFLEVBRUw7SUFDRCxTQUFTLEVBQUM7UUFDUixLQUFLLGdCQUFHLENBQUM7S0FDVjtJQUNELGFBQWEsRUFBRTtRQUNiLElBQUk7WUFFRixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUVsQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxFQUFDO2dCQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUMsUUFBUSxFQUFDLElBQUksRUFBQyxDQUFDLENBQUM7YUFDL0I7WUFFRCxRQUFRLEdBQUcsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDdEIsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLE9BQU8sQ0FBQztvQkFDWCxRQUFRLFVBQUE7aUJBQ1QsQ0FBQyxDQUFBO2dCQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzNDO1FBQ0gsQ0FBQztRQUNELElBQUk7WUFFRixjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLENBQUM7S0FDRjtJQUlELE9BQU8sRUFBRTtRQUNQLGNBQWM7WUFDWixJQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLDRCQUE0QixDQUFDO1lBQ3ZELElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ1IsRUFBRSxDQUFDLFNBQVMsQ0FBQztvQkFDWCxLQUFLLEVBQUUsSUFBSTtvQkFDWCxPQUFPLEVBQUUsa0JBQWtCO29CQUMzQixVQUFVLEVBQUMsS0FBSztpQkFDakIsQ0FBQyxDQUFBO2dCQUNGLE9BQU87YUFDUjtZQUNELElBQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQztZQUMxQixFQUFFLENBQUMsVUFBVSxDQUFDO2dCQUNaLEdBQUcsRUFBRSxvQ0FBb0MsR0FBRyxHQUFHLEdBQUcsV0FBVyxHQUFHLE9BQU87YUFDeEUsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELFdBQVc7WUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzVCLENBQUM7S0FDRjtDQUNGLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIlxyXG4vLyBjb25zdCBhcHAgPSBnZXRBcHA8SUFwcE9wdGlvbj4oKTtcclxuLy8gQHRzLWlnbm9yZVxyXG5jb25zdCBjaG9vc2VMb2NhdGlvbiA9IHJlcXVpcmVQbHVnaW4oJ2Nob29zZUxvY2F0aW9uJyk7XHJcbkNvbXBvbmVudCh7XHJcbiAgLyoqXHJcbiAgICog57uE5Lu255qE5bGe5oCn5YiX6KGoXHJcbiAgICovXHJcbiAgb3B0aW9uczoge1xyXG4gICAgYWRkR2xvYmFsQ2xhc3M6dHJ1ZSxcclxuICAgIG11bHRpcGxlU2xvdHM6IHRydWUgLy8g5Zyo57uE5Lu25a6a5LmJ5pe255qE6YCJ6aG55Lit5ZCv55So5aSac2xvdOaUr+aMgVxyXG4gIH0sXHJcbiAgcHJvcGVydGllczoge1xyXG4gICAgbG9jYXRpb246e1xyXG4gICAgICB0eXBlOiBPYmplY3R8fG51bGwsXHJcbiAgICAgIHZhbHVlOiB7fVxyXG4gICAgfSxcclxuICB9LFxyXG5cclxuICAvKipcclxuICAgKiDnu4Tku7bnmoTliJ3lp4vmlbDmja5cclxuICAgKi9cclxuICBkYXRhOiB7XHJcbiAgICAvLyBsb2NhdGlvbjogdW5kZWZpbmVkLFxyXG4gIH0sXHJcbiAgbGlmZXRpbWVzOntcclxuICAgIHJlYWR5KCl7fVxyXG4gIH0sXHJcbiAgcGFnZUxpZmV0aW1lczoge1xyXG4gICAgc2hvdygpIHtcclxuICAgICAgLy8g6aG16Z2i6KKr5bGV56S6XHJcbiAgICAgIGxldCBsb2NhdGlvbiA9IHRoaXMuZGF0YS5sb2NhdGlvbjtcclxuICAgICAgLy8gbG9jYXRpb27kuLrnqbrlr7nosaFcclxuICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGxvY2F0aW9uKSA9PSAne30nKXtcclxuICAgICAgICB0aGlzLnNldERhdGEoe2xvY2F0aW9uOm51bGx9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbG9jYXRpb24gPSBjaG9vc2VMb2NhdGlvbi5nZXRMb2NhdGlvbigpOyAvLyDlpoLmnpzngrnlh7vnoa7orqTpgInngrnmjInpkq7vvIzliJnov5Tlm57pgInngrnnu5Pmnpzlr7nosaHvvIzlkKbliJnov5Tlm55udWxsXHJcbiAgICAgIGNvbnNvbGUubG9nKGxvY2F0aW9uKTtcclxuICAgICAgaWYgKGxvY2F0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICAgIGxvY2F0aW9uXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLnRyaWdnZXJFdmVudCgnZ2V0TG9jYXRpb24nLGxvY2F0aW9uKTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIGhpZGUoKSB7XHJcbiAgICAgIC8vIOmhtemdouWNuOi9veaXtuiuvue9ruaPkuS7tumAieeCueaVsOaNruS4um51bGzvvIzpmLLmraLlho3mrKHov5vlhaXpobXpnaLvvIxnZUxvY2F0aW9u6L+U5Zue55qE5piv5LiK5qyh6YCJ54K557uT5p6cXHJcbiAgICAgIGNob29zZUxvY2F0aW9uLnNldExvY2F0aW9uKG51bGwpO1xyXG4gICAgfVxyXG4gIH0sXHJcbiAgLyoqXHJcbiAgICog57uE5Lu255qE5pa55rOV5YiX6KGoXHJcbiAgICovXHJcbiAgbWV0aG9kczoge1xyXG4gICAgc2VsZWN0TG9jYXRpb24oKXtcclxuICAgICAgY29uc3Qga2V5ID0gd3guZ2xvYmFsRGF0YS5UZW5nWHVuTWFwTG9jYXRpb25TZXJ2aWNlS2V5O1xyXG4gICAgICBpZiAoIWtleSkge1xyXG4gICAgICAgIHd4LnNob3dNb2RhbCh7XHJcbiAgICAgICAgICB0aXRsZTogJ+aPkOekuicsXHJcbiAgICAgICAgICBjb250ZW50OiAn6K+36YWN572u6IW+6K6v5Zyw5Zu+5pyN5Yqh5omA6ZyA6KaB55qEa2V5JyxcclxuICAgICAgICAgIHNob3dDYW5jZWw6ZmFsc2VcclxuICAgICAgICB9KVxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCByZWZlcmVyID0gJ21pbmlBcHAnO1xyXG4gICAgICB3eC5uYXZpZ2F0ZVRvKHtcclxuICAgICAgICB1cmw6ICdwbHVnaW46Ly9jaG9vc2VMb2NhdGlvbi9pbmRleD9rZXk9JyArIGtleSArICcmcmVmZXJlcj0nICsgcmVmZXJlclxyXG4gICAgICB9KTtcclxuICAgIH0sXHJcbiAgICBnZXRMb2NhdGlvbigpe1xyXG4gICAgICByZXR1cm4gdGhpcy5kYXRhLmxvY2F0aW9uO1xyXG4gICAgfVxyXG4gIH1cclxufSlcclxuIl19
\ No newline at end of file
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBR0EsSUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDdkQsU0FBUyxDQUFDO0lBSVIsT0FBTyxFQUFFO1FBQ1AsY0FBYyxFQUFDLElBQUk7UUFDbkIsYUFBYSxFQUFFLElBQUk7S0FDcEI7SUFDRCxVQUFVLEVBQUU7UUFDVixRQUFRLEVBQUM7WUFDUCxJQUFJLEVBQUUsTUFBTSxJQUFFLElBQUk7WUFDbEIsS0FBSyxFQUFFLEVBQUU7U0FDVjtLQUNGO0lBS0QsSUFBSSxFQUFFLEVBRUw7SUFDRCxTQUFTLEVBQUM7UUFDUixLQUFLLGdCQUFHLENBQUM7UUFDVCxRQUFRO1lBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUV0QixjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLENBQUM7S0FDRjtJQUNELGFBQWEsRUFBRTtRQUNiLElBQUk7WUFFRixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNsQyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXpDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLEVBQUM7Z0JBQ25DLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBQyxRQUFRLEVBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQzthQUMvQjtZQUVELFFBQVEsR0FBRyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDeEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0QixJQUFJLFFBQVEsRUFBRTtnQkFDWixJQUFJLENBQUMsT0FBTyxDQUFDO29CQUNYLFFBQVEsVUFBQTtpQkFDVCxDQUFDLENBQUE7Z0JBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUMsUUFBUSxDQUFDLENBQUM7YUFDM0M7UUFDSCxDQUFDO0tBQ0Y7SUFJRCxPQUFPLEVBQUU7UUFDUCxjQUFjO1lBQ1osSUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyw0QkFBNEIsQ0FBQztZQUN2RCxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNSLEVBQUUsQ0FBQyxTQUFTLENBQUM7b0JBQ1gsS0FBSyxFQUFFLElBQUk7b0JBQ1gsT0FBTyxFQUFFLGtCQUFrQjtvQkFDM0IsVUFBVSxFQUFDLEtBQUs7aUJBQ2pCLENBQUMsQ0FBQTtnQkFDRixPQUFPO2FBQ1I7WUFDRCxJQUFNLE9BQU8sR0FBRyxTQUFTLENBQUM7WUFDMUIsRUFBRSxDQUFDLFVBQVUsQ0FBQztnQkFDWixHQUFHLEVBQUUsb0NBQW9DLEdBQUcsR0FBRyxHQUFHLFdBQVcsR0FBRyxPQUFPO2FBQ3hFLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxXQUFXO1lBQ1QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM1QixDQUFDO0tBQ0Y7Q0FDRixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuLy8gY29uc3QgYXBwID0gZ2V0QXBwPElBcHBPcHRpb24+KCk7XHJcbi8vIEB0cy1pZ25vcmVcclxuY29uc3QgY2hvb3NlTG9jYXRpb24gPSByZXF1aXJlUGx1Z2luKCdjaG9vc2VMb2NhdGlvbicpO1xyXG5Db21wb25lbnQoe1xyXG4gIC8qKlxyXG4gICAqIOe7hOS7tueahOWxnuaAp+WIl+ihqFxyXG4gICAqL1xyXG4gIG9wdGlvbnM6IHtcclxuICAgIGFkZEdsb2JhbENsYXNzOnRydWUsXHJcbiAgICBtdWx0aXBsZVNsb3RzOiB0cnVlIC8vIOWcqOe7hOS7tuWumuS5ieaXtueahOmAiemhueS4reWQr+eUqOWkmnNsb3TmlK/mjIFcclxuICB9LFxyXG4gIHByb3BlcnRpZXM6IHtcclxuICAgIGxvY2F0aW9uOntcclxuICAgICAgdHlwZTogT2JqZWN0fHxudWxsLFxyXG4gICAgICB2YWx1ZToge31cclxuICAgIH0sXHJcbiAgfSxcclxuXHJcbiAgLyoqXHJcbiAgICog57uE5Lu255qE5Yid5aeL5pWw5o2uXHJcbiAgICovXHJcbiAgZGF0YToge1xyXG4gICAgLy8gbG9jYXRpb246IHVuZGVmaW5lZCxcclxuICB9LFxyXG4gIGxpZmV0aW1lczp7XHJcbiAgICByZWFkeSgpe30sXHJcbiAgICBkZXRhY2hlZCgpIHtcclxuICAgICAgY29uc29sZS5sb2coJ+WcsOWbvue7hOS7tumUgOavgScpO1xyXG4gICAgICAvLyDpobXpnaLljbjovb3ml7borr7nva7mj5Lku7bpgInngrnmlbDmja7kuLpudWxs77yM6Ziy5q2i5YaN5qyh6L+b5YWl6aG16Z2i77yMZ2VMb2NhdGlvbui/lOWbnueahOaYr+S4iuasoemAieeCuee7k+aenFxyXG4gICAgICBjaG9vc2VMb2NhdGlvbi5zZXRMb2NhdGlvbihudWxsKTtcclxuICAgIH0sXHJcbiAgfSxcclxuICBwYWdlTGlmZXRpbWVzOiB7XHJcbiAgICBzaG93KCkge1xyXG4gICAgICAvLyDpobXpnaLooqvlsZXnpLpcclxuICAgICAgbGV0IGxvY2F0aW9uID0gdGhpcy5kYXRhLmxvY2F0aW9uO1xyXG4gICAgICBjb25zb2xlLmxvZygn6L+b5YWl6aG16Z2i5pe244CC44CC44CCbG9jYXRpb24nLGxvY2F0aW9uKTtcclxuICAgICAgLy8gbG9jYXRpb27kuLrnqbrlr7nosaFcclxuICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGxvY2F0aW9uKSA9PSAne30nKXtcclxuICAgICAgICB0aGlzLnNldERhdGEoe2xvY2F0aW9uOm51bGx9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbG9jYXRpb24gPSBjaG9vc2VMb2NhdGlvbi5nZXRMb2NhdGlvbigpOyAvLyDlpoLmnpzngrnlh7vnoa7orqTpgInngrnmjInpkq7vvIzliJnov5Tlm57pgInngrnnu5Pmnpzlr7nosaHvvIzlkKbliJnov5Tlm55udWxsXHJcbiAgICAgIGNvbnNvbGUubG9nKGxvY2F0aW9uKTtcclxuICAgICAgaWYgKGxvY2F0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICAgIGxvY2F0aW9uXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLnRyaWdnZXJFdmVudCgnZ2V0TG9jYXRpb24nLGxvY2F0aW9uKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0sXHJcbiAgLyoqXHJcbiAgICog57uE5Lu255qE5pa55rOV5YiX6KGoXHJcbiAgICovXHJcbiAgbWV0aG9kczoge1xyXG4gICAgc2VsZWN0TG9jYXRpb24oKXtcclxuICAgICAgY29uc3Qga2V5ID0gd3guZ2xvYmFsRGF0YS5UZW5nWHVuTWFwTG9jYXRpb25TZXJ2aWNlS2V5O1xyXG4gICAgICBpZiAoIWtleSkge1xyXG4gICAgICAgIHd4LnNob3dNb2RhbCh7XHJcbiAgICAgICAgICB0aXRsZTogJ+aPkOekuicsXHJcbiAgICAgICAgICBjb250ZW50OiAn6K+36YWN572u6IW+6K6v5Zyw5Zu+5pyN5Yqh5omA6ZyA6KaB55qEa2V5JyxcclxuICAgICAgICAgIHNob3dDYW5jZWw6ZmFsc2VcclxuICAgICAgICB9KVxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCByZWZlcmVyID0gJ21pbmlBcHAnO1xyXG4gICAgICB3eC5uYXZpZ2F0ZVRvKHtcclxuICAgICAgICB1cmw6ICdwbHVnaW46Ly9jaG9vc2VMb2NhdGlvbi9pbmRleD9rZXk9JyArIGtleSArICcmcmVmZXJlcj0nICsgcmVmZXJlclxyXG4gICAgICB9KTtcclxuICAgIH0sXHJcbiAgICBnZXRMb2NhdGlvbigpe1xyXG4gICAgICByZXR1cm4gdGhpcy5kYXRhLmxvY2F0aW9uO1xyXG4gICAgfVxyXG4gIH1cclxufSlcclxuIl19
\ No newline at end of file
diff --git a/components/location-plugin/index.ts b/components/location-plugin/index.ts
index ae6c240..57e7ea9 100644
--- a/components/location-plugin/index.ts
+++ b/components/location-plugin/index.ts
@@ -24,12 +24,18 @@
     // location: undefined,
   },
   lifetimes:{
-    ready(){}
+    ready(){},
+    detached() {
+      console.log('鍦板浘缁勪欢閿�姣�');
+      // 椤甸潰鍗歌浇鏃惰缃彃浠堕�夌偣鏁版嵁涓簄ull锛岄槻姝㈠啀娆¤繘鍏ラ〉闈紝geLocation杩斿洖鐨勬槸涓婃閫夌偣缁撴灉
+      chooseLocation.setLocation(null);
+    },
   },
   pageLifetimes: {
     show() {
       // 椤甸潰琚睍绀�
       let location = this.data.location;
+      console.log('杩涘叆椤甸潰鏃躲�傘�傘�俵ocation',location);
       // location涓虹┖瀵硅薄
       if (JSON.stringify(location) == '{}'){
         this.setData({location:null});
@@ -43,10 +49,6 @@
         })
         this.triggerEvent('getLocation',location);
       }
-    },
-    hide() {
-      // 椤甸潰鍗歌浇鏃惰缃彃浠堕�夌偣鏁版嵁涓簄ull锛岄槻姝㈠啀娆¤繘鍏ラ〉闈紝geLocation杩斿洖鐨勬槸涓婃閫夌偣缁撴灉
-      chooseLocation.setLocation(null);
     }
   },
   /**
diff --git a/components/poster-creator/index.js b/components/poster-creator/index.js
index f2e5fa1..733d769 100644
--- a/components/poster-creator/index.js
+++ b/components/poster-creator/index.js
@@ -74,7 +74,8 @@
         sharePath: '',
         visible: false,
         qrCodeUrl: '',
-        isLive: false
+        isLive: false,
+        isDetail: false
     },
     lifetimes: {
         ready: function () {
@@ -215,8 +216,205 @@
         getImgDraw: function () {
             var _a = this.data, detail = _a.detail, liveRoom = _a.liveRoom, sellerList = _a.sellerList, qrCodeUrl = _a.qrCodeUrl;
             var isLive = this.data.isLive;
+            var isDetail = this.data.isDetail;
+            var promotionsType = {
+                710802: '绉掓潃浠�',
+                710803: '鎶ュ悕浠�',
+                710804: '鍥㈣喘浠�',
+            };
             console.log(detail, liveRoom, sellerList, qrCodeUrl, isLive);
-            var imgDraw = {
+            var imgDraw = {};
+            var imgDrawPromotions = {
+                "width": "750rpx",
+                "height": "1196rpx",
+                "background": "#fff",
+                "views": [
+                    {
+                        "type": "image",
+                        "url": "/assets/images/promotions-poster-bg.jpg",
+                        "css": {
+                            "width": "750rpx",
+                            "height": "1196rpx",
+                            "top": "0px",
+                            "left": "0px"
+                        }
+                    },
+                    {
+                        "type": "image",
+                        "url": sellerList[0].sellerWeiXinAvatarUrl || '/assets/images/default-avatar.png',
+                        "css": {
+                            "width": "100rpx",
+                            "height": "100rpx",
+                            "top": "22rpx",
+                            "left": "36rpx",
+                            "borderRadius": "100rpx"
+                        }
+                    },
+                    {
+                        "type": "text",
+                        "text": sellerList[0].sellerName || '鏄电О',
+                        "css": {
+                            "color": "#fff",
+                            "top": "34rpx",
+                            "left": "160rpx",
+                            "fontSize": "32rpx",
+                            "fontWeight": "bold",
+                            "textAlign": "left"
+                        }
+                    },
+                    {
+                        "type": "text",
+                        "text": "閭�璇锋偍鍙備笌娲诲姩",
+                        "css": {
+                            "color": "#fff",
+                            "top": "80rpx",
+                            "left": "160rpx",
+                            "fontSize": "28rpx",
+                            "textAlign": "left"
+                        }
+                    },
+                    {
+                        "type": "image",
+                        "url": detail.coverImageUrl[0] || '',
+                        "css": {
+                            "width": "600rpx",
+                            "height": "600rpx",
+                            "top": "182rpx",
+                            "left": "76rpx",
+                            "borderRadius": "10rpx",
+                        }
+                    },
+                    {
+                        "type": "text",
+                        "text": "锟�",
+                        "css": {
+                            "color": "#f23232",
+                            "top": "820rpx",
+                            "left": "76rpx",
+                            "fontSize": "28rpx",
+                            "textAlign": "left"
+                        }
+                    },
+                    {
+                        "type": "text",
+                        "text": detail.salesPrice || 0,
+                        "css": {
+                            "color": "#f23232",
+                            "top": "808rpx",
+                            "left": "108rpx",
+                            "fontSize": "44rpx",
+                            "fontWeight": "bold",
+                            "textAlign": "left"
+                        }
+                    },
+                    {
+                        "type": "text",
+                        "text": promotionsType[detail.formId] || '',
+                        "css": {
+                            "color": "#f23232",
+                            "background": "rgb(249, 230, 231)",
+                            "width": "110rpx",
+                            "height": "35rpx",
+                            "top": "820rpx",
+                            "left": 130 + (detail.salesPrice.toString().length * 25) + "rpx",
+                            "borderRadius": "20rpx",
+                            "padding": "5rpx",
+                            "fontSize": "28rpx",
+                            "lineHeight": "35rpx",
+                            "textAlign": "center"
+                        }
+                    },
+                    {
+                        "type": "text",
+                        "text": detail.formId == 710803 ? '' : '浠锋牸',
+                        "css": {
+                            "color": "#999",
+                            "top": "884rpx",
+                            "left": "84rpx",
+                            "fontSize": "28rpx",
+                            "textAlign": "left"
+                        }
+                    },
+                    {
+                        "type": "text",
+                        "text": detail.formId == 710803 ? '' : "\uFFE5" + (detail.originalPrice || 0),
+                        "css": {
+                            "color": "#999",
+                            "top": "885rpx",
+                            "left": "150rpx",
+                            "fontSize": "24rpx",
+                            "textDecoration": "line-through",
+                            "textAlign": "left"
+                        }
+                    },
+                    {
+                        "type": "text",
+                        "text": "闄愭椂浼樻儬",
+                        "css": {
+                            "color": "#f23232",
+                            "width": "135rpx",
+                            "height": "40rpx",
+                            "top": detail.formId == 710803 ? '885rpx' : "946rpx",
+                            "left": "88rpx",
+                            "padding": "6rpx",
+                            "borderRadius": "5rpx",
+                            "borderWidth": "2rpx",
+                            "borderColor": "#fde4e7",
+                            "fontSize": "28rpx",
+                            "lineHeight": "40rpx",
+                            "textAlign": "center"
+                        }
+                    },
+                    {
+                        "type": "text",
+                        "text": "\u5DF2\u552E " + (detail.orderTimes || 0),
+                        "css": {
+                            "color": "#999",
+                            "width": "200rpx",
+                            "top": "820rpx",
+                            "left": "476rpx",
+                            "fontSize": "28rpx",
+                            "textAlign": "right"
+                        }
+                    },
+                    {
+                        "type": "text",
+                        "text": "\u3010" + wx.globalData.settings.name + "\u3011" + detail.title || '娲诲姩鏍囬',
+                        "css": {
+                            "color": "#333",
+                            "width": "360rpx",
+                            "top": detail.formId == 710803 ? '980rpx' : "1020rpx",
+                            "left": "76rpx",
+                            "fontSize": "36rpx",
+                            "maxLines": "2",
+                            "lineHeight": '50rpx',
+                            "textAlign": "left"
+                        }
+                    },
+                    {
+                        "type": "image",
+                        "url": qrCodeUrl,
+                        "css": {
+                            "width": "200rpx",
+                            "height": "100px",
+                            "top": "888rpx",
+                            "left": "476rpx",
+                        }
+                    },
+                    {
+                        "type": "text",
+                        "text": "闀挎寜鎵爜璇嗗埆鍙備笌~",
+                        "css": {
+                            "color": "#666",
+                            "top": "1105rpx",
+                            "left": "476rpx",
+                            "fontSize": "24rpx",
+                            "textAlign": "left"
+                        }
+                    }
+                ]
+            };
+            var imgDrawLive = {
                 width: '750rpx',
                 height: '1334rpx',
                 background: '#f5f5f5',
@@ -234,21 +432,21 @@
                     },
                     {
                         type: 'image',
-                        url: isLive ? liveRoom.ShareImgUnidUrl : detail.coverImageUrl[0],
+                        url: liveRoom.ShareImgUnidUrl,
                         css: {
                             top: '10rpx',
                             left: '10rpx',
                             right: '10rpx',
                             width: '730rpx',
-                            height: '480rpx',
+                            height: '630rpx',
                             borderRadius: '16rpx'
                         },
                     },
                     {
                         type: 'image',
-                        url: (isLive ? liveRoom.AnchorImgUnidUrl : sellerList[0].sellerHeadimgurl) || '/assets/images/default-avatar.png',
+                        url: liveRoom.AnchorImgUnidUrl || '/assets/images/default-avatar.png',
                         css: {
-                            top: '444rpx',
+                            top: '594rpx',
                             left: '328rpx',
                             width: '96rpx',
                             height: '96rpx',
@@ -259,9 +457,9 @@
                     },
                     {
                         type: 'text',
-                        text: (isLive ? liveRoom.AnchorName : sellerList[0].sellerName) || '鏄电О',
+                        text: liveRoom.AnchorName || '鏄电О',
                         css: {
-                            top: '572rpx',
+                            top: '722rpx',
                             fontSize: '28rpx',
                             left: '375rpx',
                             align: 'center',
@@ -270,9 +468,9 @@
                     },
                     {
                         type: 'text',
-                        text: "\u9080\u8BF7\u60A8\u53C2\u4E0E" + (isLive ? '鐩存挱' : '娲诲姩'),
+                        text: "\u9080\u8BF7\u60A8\u53C2\u4E0E\u76F4\u64AD",
                         css: {
-                            top: '616rpx',
+                            top: '766rpx',
                             left: '375rpx',
                             align: 'center',
                             fontSize: '28rpx',
@@ -281,9 +479,9 @@
                     },
                     {
                         type: 'text',
-                        text: ((isLive ? liveRoom.RoomName : detail.title) || '娲诲姩鏍囬') + " ",
+                        text: ((liveRoom.RoomName) || '娲诲姩鏍囬') + " ",
                         css: {
-                            top: '684rpx',
+                            top: '820rpx',
                             left: '375rpx',
                             maxLines: 1,
                             align: 'center',
@@ -294,7 +492,7 @@
                     },
                     {
                         type: 'text',
-                        text: "" + ((isLive ? '' : '锟�' + detail.salesPrice) || ''),
+                        text: "",
                         css: {
                             top: '765rpx',
                             left: '375rpx',
@@ -327,6 +525,12 @@
                     },
                 ]
             };
+            if (isLive) {
+                imgDraw = imgDrawLive;
+            }
+            if (isDetail) {
+                imgDraw = imgDrawPromotions;
+            }
             return imgDraw;
         },
         onImgErr: function () {
@@ -392,4 +596,4 @@
         }
     }
 });
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxTQUFTLENBQUM7SUFDUixPQUFPLEVBQUU7UUFDUCxjQUFjLEVBQUMsSUFBSTtRQUNuQixhQUFhLEVBQUUsSUFBSTtLQUNwQjtJQUNELFVBQVUsRUFBRTtRQUVWLFFBQVEsRUFBRTtZQUNSLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLEVBQUU7WUFDVCxRQUFRLFlBQUMsTUFBTTtnQkFDYixPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN4QyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFDO29CQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDO3dCQUNYLE1BQU0sRUFBQyxJQUFJO3FCQUNaLENBQUMsQ0FBQTtpQkFDSDtZQUNILENBQUM7U0FDRjtRQUNELE1BQU0sRUFBQztZQUNMLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLEVBQUU7WUFDVCxRQUFRLFlBQUMsTUFBTTtnQkFDYixPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFDO29CQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDO3dCQUNYLFFBQVEsRUFBRSxJQUFJO3FCQUNmLENBQUMsQ0FBQTtpQkFDSDtZQUNILENBQUM7U0FDRjtRQUNELFVBQVUsRUFBQztZQUNULElBQUksRUFBRSxLQUFLO1lBQ1gsS0FBSyxFQUFFLEVBQUU7U0FDVjtLQU1GO0lBQ0QsSUFBSSxFQUFFO1FBQ0osT0FBTyxFQUFFLEVBQUU7UUFDWCxTQUFTLEVBQUUsRUFBRTtRQUNiLE9BQU8sRUFBRSxLQUFL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QUFLO3lCQUNmLENBQUMsQ0FBQTt3QkFDRixLQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFBO29CQUM1QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUE7Z0JBQ1QsQ0FBQzthQUNGLENBQUMsQ0FBQTtRQUNKLENBQUM7S0FDRjtDQUNGLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIkNvbXBvbmVudCh7XHJcbiAgb3B0aW9uczoge1xyXG4gICAgYWRkR2xvYmFsQ2xhc3M6dHJ1ZSxcclxuICAgIG11bHRpcGxlU2xvdHM6IHRydWUgLy8g5Zyo57uE5Lu25a6a5LmJ5pe255qE6YCJ6aG55Lit5ZCv55So5aSac2xvdOaUr+aMgVxyXG4gIH0sXHJcbiAgcHJvcGVydGllczoge1xyXG4gICAgLy/lsZ7mgKflgLzlj6/ku6XlnKjnu4Tku7bkvb/nlKjml7bmjIflrppcclxuICAgIGxpdmVSb29tOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdCxcclxuICAgICAgdmFsdWU6IHt9LFxyXG4gICAgICBvYnNlcnZlcihuZXdWYWwpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygn55uR5ZCsbGl2ZVJvb23nmoRuZXdWYWwnLG5ld1ZhbCk7XHJcbiAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KG5ld1ZhbCkgIT0gJ3t9Jyl7XHJcbiAgICAgICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgICAgICBpc0xpdmU6dHJ1ZVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBkZXRhaWw6e1xyXG4gICAgICB0eXBlOiBPYmplY3QsXHJcbiAgICAgIHZhbHVlOiB7fSxcclxuICAgICAgb2JzZXJ2ZXIobmV3VmFsKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ+ebkeWQrGRldGFpbOeahG5ld1ZhbCcsbmV3VmFsKTtcclxuICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkobmV3VmFsKSAhPSAne30nKXtcclxuICAgICAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgICAgIGlzRGV0YWlsOiB0cnVlXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIHNlbGxlckxpc3Q6e1xyXG4gICAgICB0eXBlOiBBcnJheSxcclxuICAgICAgdmFsdWU6IFtdXHJcbiAgICB9LFxyXG5cclxuICAgIC8vIHZpc2libGU6IHtcclxuICAgIC8vICAgdHlwZTogQm9vbGVhbixcclxuICAgIC8vICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgLy8gfVxyXG4gIH0sXHJcbiAgZGF0YToge1xyXG4gICAgaW1nRHJhdzoge30sIC8v57uY5Yi25Zu+54mH55qE5aSn5a+56LGhXHJcbiAgICBzaGFyZVBhdGg6ICcnLCAvL+eUn+aIkOeahOWIhuS6q+WbvlxyXG4gICAgdmlzaWJsZTogZmFsc2UsXHJcbiAgICBxckNvZGVVcmw6JycsXHJcbiAgICBpc0xpdmU6ZmFsc2UgLy/mmK/lkKbnm7Tmkq1cclxuICB9LFxyXG4gIGxpZmV0aW1lczp7XHJcbiAgICBhc3luYyByZWFkeSgpe1xyXG5cclxuICAgIH1cclxuICB9LFxyXG4gIHBhZ2VMaWZldGltZXM6IHtcclxuICAgIHNob3c6IGZ1bmN0aW9uKCkge1xyXG4gICAgICAvLyDpobXpnaLooqvlsZXnpLpcclxuXHJcbiAgICB9LFxyXG4gICAgaGlkZSgpIHtcclxuXHJcbiAgICB9XHJcbiAgfSxcclxuICBtZXRob2RzOiB7XHJcbiAgICBhc3luYyBnZXRMaXZlUm9vbVFyQ29kZSgpe1xyXG4gICAgICBsZXQgcm9vbWlkID0gdGhpcy5kYXRhLmxpdmVSb29tLlJvb21JZDtcclxuICAgICAgY29uc29sZS5sb2cocm9vbWlkKTtcclxuICAgICAgbGV0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IHd4LiR1dGlscy50byhcclxuICAgICAgICB3eC4kaHR0cC5yZXF1ZXN0KHtcclxuICAgICAgICAgIHVybDpgL3Nob3BwaW5nL2xpdmUvZ2V0U2hhcmVkQ29kZS5kb2AsXHJcbiAgICAgICAgICBkYXRhOntcclxuICAgICAgICAgICAgcm9vbWlkXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICBpZiAoZXJyb3J8fHJlc3VsdC5zdGF0ZSE9PSdzdWNjZXNzJyl7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgIHd4LnNob3dUb2FzdCh7XHJcbiAgICAgICAgICB0aXRsZTogJ+iOt+WPluS6jOe7tOeggeWksei0pe+8jOivt+eojeWQjuWGjeivlScsXHJcbiAgICAgICAgICBpY29uOidub25lJyxcclxuICAgICAgICB9KVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG4gICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgIHFyQ29kZVVybDpyZXN1bHQuY2RuVXJsXHJcbiAgICAgIH0pXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSxcclxuICAgIGFzeW5jIGdldFFyQ29kZSgpe1xyXG4gICAgICBsZXQgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgd3guJHV0aWxzLnRvKFxyXG4gICAgICAgIHd4LiRodHRwLnJlcXVlc3Qoe1xyXG4gICAgICAgICAgdXJsOmAvc2hvcHBpbmcvcG9zdGVyL2dldFFyQ29kZUZvclBvc3Rlci5kb2AsXHJcbiAgICAgICAgICBkYXRhOntcclxuICAgICAgICAgICAgUXJDb2RlVHlwZTo4MCxcclxuICAgICAgICAgICAgZG9jY29kZTp0aGlzLmRhdGEuZGV0YWlsLmRvY2NvZGUsXHJcbiAgICAgICAgICAgIFNlbGxlck9wZW5JZDp3eC5nbG9iYWxEYXRhLkZyb21PcGVuSWRcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgIGlmIChlcnJvcnx8cmVzdWx0LnN0YXRlIT09J3N1Y2Nlc3MnKXtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgd3guc2hvd1RvYXN0KHtcclxuICAgICAgICAgIHRpdGxlOiAn6I635Y+W5LqM57u056CB5aSx6LSl77yM6K+356iN5ZCO5YaN6K+VJyxcclxuICAgICAgICAgIGljb246J25vbmUnLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgcXJDb2RlVXJsOnJlc3VsdC5RckNvZGVcclxuICAgICAgfSlcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9LFxyXG4gICAgaGFuZGxlQ2xvc2UoKSB7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgdmlzaWJsZTogZmFsc2VcclxuICAgICAgfSlcclxuICAgICAgdGhpcy50cmlnZ2VyRXZlbnQoJ2Nsb3NlJylcclxuICAgIH0sXHJcbiAgICBjbGVhclBvc3RlcigpIHtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICBzaGFyZVBhdGg6JydcclxuICAgICAgfSlcclxuICAgIH0sXHJcbiAgICBhc3luYyBkcmF3UGljKCkge1xyXG4gICAgICBpZiAodGhpcy5kYXRhLnNoYXJlUGF0aCkgeyAvL+WmguaenOW3sue7j+e7mOWItui/h+S6huacrOWcsOS/neWtmOacieWbvueJh+S4jemcgOimgemHjeaWsOe7mOWItlxyXG4gICAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgICB2aXNpYmxlOiB0cnVlXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLnRyaWdnZXJFdmVudCgnaW5pdERhdGEnKVxyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmRhdGEuaXNEZXRhaWwpe1xyXG4gICAgICAgIGlmICghYXdhaXQgdGhpcy5nZXRRckNvZGUoKSkgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmRhdGEuaXNMaXZlKXtcclxuICAgICAgICBpZiAoIWF3YWl0IHRoaXMuZ2V0TGl2ZVJvb21RckNvZGUoKSkgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5kYXRhLnFyQ29kZVVybCkge1xyXG4gICAgICAgIHd4LnNob3dUb2FzdCh7XHJcbiAgICAgICAgICB0aXRsZTogJ+iOt+WPluS6jOe7tOeggeWksei0pe+8jOivt+eojeWQjuWGjeivlScsXHJcbiAgICAgICAgICBpY29uOidub25lJyxcclxuICAgICAgICB9KVxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB3eC5zaG93TG9hZGluZyh7XHJcbiAgICAgICAgdGl0bGU6ICfnlJ/miJDkuK0nXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgIGltZ0RyYXc6IHRoaXMuZ2V0SW1nRHJhdygpXHJcbiAgICAgIH0pXHJcbiAgICB9LFxyXG4gICAgIGdldEltZ0RyYXcoKSB7XHJcbiAgICAgIGxldCB7ZGV0YWlsLGxpdmVSb29tLHNlbGxlckxpc3QscXJDb2RlVXJsfSA9IHRoaXMuZGF0YTtcclxuICAgICAgbGV0IGlzTGl2ZSA9IHRoaXMuZGF0YS5pc0xpdmU7XHJcbiAgICAgIGNvbnNvbGUubG9nKGRldGFpbCxsaXZlUm9vbSxzZWxsZXJMaXN0LHFyQ29kZVVybCxpc0xpdmUpO1xyXG4gICAgICBsZXQgaW1nRHJhdyA9IHtcclxuICAgICAgICB3aWR0aDogJzc1MHJweCcsXHJcbiAgICAgICAgaGVpZ2h0OiAnMTMzNHJweCcsXHJcbiAgICAgICAgYmFja2dyb3VuZDogJyNmNWY1ZjUnLFxyXG4gICAgICAgIHZpZXdzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIFwidHlwZVwiOiBcImltYWdlXCIsXHJcbiAgICAgICAgICAgIFwidXJsXCI6IFwiL2Fzc2V0cy9pbWFnZXMvcG9zdGVyLWJnLnBuZ1wiLFxyXG4gICAgICAgICAgICBcImNzc1wiOiB7XHJcbiAgICAgICAgICAgICAgXCJ3aWR0aFwiOiBcIjc1MHJweFwiLFxyXG4gICAgICAgICAgICAgIFwiaGVpZ2h0XCI6IFwiMTMzNHJweFwiLFxyXG4gICAgICAgICAgICAgIFwidG9wXCI6IFwiMHB4XCIsXHJcbiAgICAgICAgICAgICAgXCJsZWZ0XCI6IFwiMHB4XCIsXHJcbiAgICAgICAgICAgICAgXCJyb3RhdGVcIjogXCIwXCIsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6ICdpbWFnZScsXHJcbiAgICAgICAgICAgIHVybDogaXNMaXZlP2xpdmVSb29tLlNoYXJlSW1nVW5pZFVybDpkZXRhaWwuY292ZXJJbWFnZVVybFswXSxcclxuICAgICAgICAgICAgY3NzOiB7XHJcbiAgICAgICAgICAgICAgdG9wOiAnMTBycHgnLFxyXG4gICAgICAgICAgICAgIGxlZnQ6ICcxMHJweCcsXHJcbiAgICAgICAgICAgICAgcmlnaHQ6ICcxMHJweCcsXHJcbiAgICAgICAgICAgICAgd2lkdGg6ICc3MzBycHgnLFxyXG4gICAgICAgICAgICAgIGhlaWdodDogJzQ4MHJweCcsXHJcbiAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnMTZycHgnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0eXBlOiAnaW1hZ2UnLFxyXG4gICAgICAgICAgICB1cmw6IChpc0xpdmU/bGl2ZVJvb20uQW5jaG9ySW1nVW5pZFVybDpzZWxsZXJMaXN0WzBdLnNlbGxlckhlYWRpbWd1cmwpIHx8ICcvYXNzZXRzL2ltYWdlcy9kZWZhdWx0LWF2YXRhci5wbmcnLFxyXG4gICAgICAgICAgICBjc3M6IHtcclxuICAgICAgICAgICAgICB0b3A6ICc0NDRycHgnLFxyXG4gICAgICAgICAgICAgIGxlZnQ6ICczMjhycHgnLFxyXG4gICAgICAgICAgICAgIHdpZHRoOiAnOTZycHgnLFxyXG4gICAgICAgICAgICAgIGhlaWdodDogJzk2cnB4JyxcclxuICAgICAgICAgICAgICBib3JkZXJXaWR0aDogJzZycHgnLFxyXG4gICAgICAgICAgICAgIGJvcmRlckNvbG9yOiAnI0ZGRicsXHJcbiAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnOTZycHgnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcclxuICAgICAgICAgICAgdGV4dDogKGlzTGl2ZT9saXZlUm9vbS5BbmNob3JOYW1lOiBzZWxsZXJMaXN0WzBdLnNlbGxlck5hbWUpIHx8ICfmmLXnp7AnLFxyXG4gICAgICAgICAgICBjc3M6IHtcclxuICAgICAgICAgICAgICB0b3A6ICc1NzJycHgnLFxyXG4gICAgICAgICAgICAgIGZvbnRTaXplOiAnMjhycHgnLFxyXG4gICAgICAgICAgICAgIGxlZnQ6ICczNzVycHgnLFxyXG4gICAgICAgICAgICAgIGFsaWduOiAnY2VudGVyJyxcclxuICAgICAgICAgICAgICBjb2xvcjogJyMzYzNjM2MnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcclxuICAgICAgICAgICAgdGV4dDogYOmCgOivt+aCqOWPguS4jiR7KGlzTGl2ZT8n55u05pKtJzon5rS75YqoJyl9YCxcclxuICAgICAgICAgICAgY3NzOiB7XHJcbiAgICAgICAgICAgICAgdG9wOiAnNjE2cnB4JyxcclxuICAgICAgICAgICAgICBsZWZ0OiAnMzc1cnB4JyxcclxuICAgICAgICAgICAgICBhbGlnbjogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgZm9udFNpemU6ICcyOHJweCcsXHJcbiAgICAgICAgICAgICAgY29sb3I6ICcjM2MzYzNjJ1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0eXBlOiAndGV4dCcsXHJcbiAgICAgICAgICAgIHRleHQ6IGAkeyhpc0xpdmU/bGl2ZVJvb20uUm9vbU5hbWU6ZGV0YWlsLnRpdGxlKSB8fCAn5rS75Yqo5qCH6aKYJ30gYCxcclxuICAgICAgICAgICAgY3NzOiB7XHJcbiAgICAgICAgICAgICAgdG9wOiAnNjg0cnB4JyxcclxuICAgICAgICAgICAgICBsZWZ0OiAnMzc1cnB4JyxcclxuICAgICAgICAgICAgICBtYXhMaW5lczogMSxcclxuICAgICAgICAgICAgICBhbGlnbjogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgZm9udFdlaWdodDogJ2JvbGQnLFxyXG4gICAgICAgICAgICAgIGZvbnRTaXplOiAnNDRycHgnLFxyXG4gICAgICAgICAgICAgIGNvbG9yOiAnIzNjM2MzYydcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC8vIHtcclxuICAgICAgICAgIC8vICAgdHlwZTogJ3RleHQnLFxyXG4gICAgICAgICAgLy8gICB0ZXh0OiBg5rS75Yqo5Lu3IO+/pWAsXHJcbiAgICAgICAgICAvLyAgIGNzczoge1xyXG4gICAgICAgICAgLy8gICAgIHRvcDogJzc4MHJweCcsXHJcbiAgICAgICAgICAvLyAgICAgbGVmdDogJzI1MHJweCcsXHJcbiAgICAgICAgICAvLyAgICAgbWF4TGluZXM6IDEsXHJcbiAgICAgICAgICAvLyAgICAgYWxpZ246ICdjZW50ZXInLFxyXG4gICAgICAgICAgLy8gICAgIGZvbnRXZWlnaHQ6ICdib2xkJyxcclxuICAgICAgICAgIC8vICAgICBmb250U2l6ZTogJzI4cnB4JyxcclxuICAgICAgICAgIC8vICAgICBjb2xvcjogJyNmMjMyMzInXHJcbiAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgIC8vIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcclxuICAgICAgICAgICAgdGV4dDogYCR7KGlzTGl2ZT8nJzon77+lJytkZXRhaWwuc2FsZXNQcmljZSkgfHwgJyd9YCxcclxuICAgICAgICAgICAgY3NzOiB7XHJcbiAgICAgICAgICAgICAgdG9wOiAnNzY1cnB4JyxcclxuICAgICAgICAgICAgICBsZWZ0OiAnMzc1cnB4JyxcclxuICAgICAgICAgICAgICBtYXhMaW5lczogMSxcclxuICAgICAgICAgICAgICBhbGlnbjogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgZm9udFdlaWdodDogJ2JvbGQnLFxyXG4gICAgICAgICAgICAgIGZvbnRTaXplOiAnNDRycHgnLFxyXG4gICAgICAgICAgICAgIGNvbG9yOiAnI2YyMzIzMidcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogJ2ltYWdlJyxcclxuICAgICAgICAgICAgdXJsOiBxckNvZGVVcmwsXHJcbiAgICAgICAgICAgIGNzczoge1xyXG4gICAgICAgICAgICAgIHRvcDogJzk3MHJweCcsXHJcbiAgICAgICAgICAgICAgbGVmdDogJzM5MHJweCcsXHJcbiAgICAgICAgICAgICAgd2lkdGg6ICczMDBycHgnLFxyXG4gICAgICAgICAgICAgIGhlaWdodDogJzMwMHJweCdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxyXG4gICAgICAgICAgICB0ZXh0OiBg6ZW/5oyJ5LqM57u056CB6K+G5Yir5Y+C5LiOYCxcclxuICAgICAgICAgICAgY3NzOiB7XHJcbiAgICAgICAgICAgICAgdG9wOiAnMTEwMHJweCcsXHJcbiAgICAgICAgICAgICAgbGVmdDogJzU1cnB4JyxcclxuICAgICAgICAgICAgICBmb250U2l6ZTogJzMycnB4JyxcclxuICAgICAgICAgICAgICBjb2xvcjogJyMzYzNjM2MnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXVxyXG4gICAgICB9O1xyXG4gICAgICByZXR1cm4gaW1nRHJhdztcclxuICAgIH0sXHJcbiAgICBvbkltZ0VycigpIHtcclxuICAgICAgd3guaGlkZUxvYWRpbmcoKVxyXG4gICAgICB3eC5zaG93VG9hc3Qoe1xyXG4gICAgICAgIHRpdGxlOiAn55Sf5oiQ5YiG5Lqr5Zu+5aSx6LSl77yM6K+35Yi35paw6aG16Z2i6YeN6K+VJ1xyXG4gICAgICB9KVxyXG4gICAgfSxcclxuICAgIG9uSW1nT0soZSkge1xyXG4gICAgICB3eC5oaWRlTG9hZGluZygpXHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgc2hhcmVQYXRoOiBlLmRldGFpbC5wYXRoLFxyXG4gICAgICAgIHZpc2libGU6IHRydWUsXHJcbiAgICAgIH0pXHJcbiAgICAgIC8v6YCa55+l5aSW6YOo57uY5Yi25a6M5oiQ77yM6YeN572uaXNDYW5EcmF35Li6ZmFsc2VcclxuICAgICAgdGhpcy50cmlnZ2VyRXZlbnQoJ2luaXREYXRhJylcclxuICAgIH0sXHJcbiAgICBwcmV2ZW50RGVmYXVsdCgpIHsgfSxcclxuICAgIC8vIOS/neWtmOWbvueJh1xyXG4gICAgaGFuZGxlU2F2ZVBob3RvKCkge1xyXG4gICAgICB3eC5zaG93TG9hZGluZyh7XHJcbiAgICAgICAgdGl0bGU6ICfmraPlnKjkv53lrZguLi4nLFxyXG4gICAgICAgIG1hc2s6IHRydWVcclxuICAgICAgfSlcclxuICAgICAgd3guc2F2ZUltYWdlVG9QaG90b3NBbGJ1bSh7XHJcbiAgICAgICAgZmlsZVBhdGg6IHRoaXMuZGF0YS5zaGFyZVBhdGgsXHJcbiAgICAgICAgc3VjY2VzczogKCkgPT4ge1xyXG4gICAgICAgICAgd3guc2hvd1RvYXN0KHtcclxuICAgICAgICAgICAgdGl0bGU6ICfkv53lrZjmiJDlip8nXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2VcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGhpcy50cmlnZ2VyRXZlbnQoJ2Nsb3NlJylcclxuICAgICAgICAgIH0sIDMwMClcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZhaWw6ICgpID0+IHtcclxuICAgICAgICAgIHd4LmdldFNldHRpbmcoe1xyXG4gICAgICAgICAgICBzdWNjZXNzOiByZXMgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCBhdXRoU2V0dGluZyA9IHJlcy5hdXRoU2V0dGluZ1xyXG4gICAgICAgICAgICAgIGlmICghYXV0aFNldHRpbmdbJ3Njb3BlLndyaXRlUGhvdG9zQWxidW0nXSkge1xyXG4gICAgICAgICAgICAgICAgd3guc2hvd01vZGFsKHtcclxuICAgICAgICAgICAgICAgICAgdGl0bGU6ICfmj5DnpLonLFxyXG4gICAgICAgICAgICAgICAgICBjb250ZW50OiAn5oKo5pyq5byA5ZCv5L+d5a2Y5Zu+54mH5Yiw55u45YaM55qE5p2D6ZmQ77yM6K+354K55Ye756Gu5a6a5Y675byA5ZCv5p2D6ZmQ77yBJyxcclxuICAgICAgICAgICAgICAgICAgc3VjY2VzcyhyZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmNvbmZpcm0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHd4Lm9wZW5TZXR0aW5nKClcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHd4LmhpZGVMb2FkaW5nKClcclxuICAgICAgICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB0aGlzLnRyaWdnZXJFdmVudCgnY2xvc2UnKVxyXG4gICAgICAgICAgfSwgMzAwKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcbn0pXHJcbiJdfQ==
\ No newline at end of file
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxTQUFTLENBQUM7SUFDUixPQUFPLEVBQUU7UUFDUCxjQUFjLEVBQUMsSUFBSTtRQUNuQixhQUFhLEVBQUUsSUFBSTtLQUNwQjtJQUNELFVBQVUsRUFBRTtRQUVWLFFBQVEsRUFBRTtZQUNSLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLEVBQUU7WUFDVCxRQUFRLFlBQUMsTUFBTTtnQkFDYixPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN4QyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFDO29CQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDO3dCQUNYLE1BQU0sRUFBQyxJQUFJO3FCQUNaLENBQUMsQ0FBQTtpQkFDSDtZQUNILENBQUM7U0FDRjtRQUNELE1BQU0sRUFBQztZQUNMLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLEVBQUU7WUFDVCxRQUFRLFlBQUMsTUFBTTtnQkFDYixPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFDO29CQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDO3dCQUNYLFFBQVEsRUFBRSxJQUFJO3FCQUNmLENBQUMsQ0FBQTtpQkFDSDtZQUNILENBQUM7U0FDRjtRQUNELFVBQVUsRUFBQztZQUNULElBQUksRUFBRSxLQUFLO1lBQ1gsS0FBSyxFQUFFLEVBQUU7U0FDVjtLQU1GO0lBQ0QsSUFBSSxFQUFFO1FBQ0osT0FBTyxFQUFFLEVBQUU7UUFDWCxTQUFTLEVBQUUsRUFBRTtRQUNiLE9BQU8sRUFBRSxLQUFL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Q0FDZixFQUFFLENBQUMsV0FBVyxFQUFFLENBQUE7eUNBQ2pCO29DQUNILENBQUM7aUNBQ0YsQ0FBQyxDQUFBOzZCQUNIO3dCQUNILENBQUM7cUJBQ0YsQ0FBQyxDQUFBO29CQUNGLFVBQVUsQ0FBQzt3QkFDVCxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUE7d0JBQ2hCLEtBQUksQ0FBQyxPQUFPLENBQUM7NEJBQ1gsT0FBTyxFQUFFLEtBQUs7eUJBQ2YsQ0FBQyxDQUFBO3dCQUNGLEtBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUE7b0JBQzVCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQTtnQkFDVCxDQUFDO2FBQ0YsQ0FBQyxDQUFBO1FBQ0osQ0FBQztLQUNGO0NBQ0YsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiQ29tcG9uZW50KHtcclxuICBvcHRpb25zOiB7XHJcbiAgICBhZGRHbG9iYWxDbGFzczp0cnVlLFxyXG4gICAgbXVsdGlwbGVTbG90czogdHJ1ZSAvLyDlnKjnu4Tku7blrprkuYnml7bnmoTpgInpobnkuK3lkK/nlKjlpJpzbG905pSv5oyBXHJcbiAgfSxcclxuICBwcm9wZXJ0aWVzOiB7XHJcbiAgICAvL+WxnuaAp+WAvOWPr+S7peWcqOe7hOS7tuS9v+eUqOaXtuaMh+WumlxyXG4gICAgbGl2ZVJvb206IHtcclxuICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICB2YWx1ZToge30sXHJcbiAgICAgIG9ic2VydmVyKG5ld1ZhbCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCfnm5HlkKxsaXZlUm9vbeeahG5ld1ZhbCcsbmV3VmFsKTtcclxuICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkobmV3VmFsKSAhPSAne30nKXtcclxuICAgICAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgICAgIGlzTGl2ZTp0cnVlXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIGRldGFpbDp7XHJcbiAgICAgIHR5cGU6IE9iamVjdCxcclxuICAgICAgdmFsdWU6IHt9LFxyXG4gICAgICBvYnNlcnZlcihuZXdWYWwpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygn55uR5ZCsZGV0YWls55qEbmV3VmFsJyxuZXdWYWwpO1xyXG4gICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShuZXdWYWwpICE9ICd7fScpe1xyXG4gICAgICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICAgICAgaXNEZXRhaWw6IHRydWVcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgc2VsbGVyTGlzdDp7XHJcbiAgICAgIHR5cGU6IEFycmF5LFxyXG4gICAgICB2YWx1ZTogW11cclxuICAgIH0sXHJcblxyXG4gICAgLy8gdmlzaWJsZToge1xyXG4gICAgLy8gICB0eXBlOiBCb29sZWFuLFxyXG4gICAgLy8gICB2YWx1ZTogZmFsc2UsXHJcbiAgICAvLyB9XHJcbiAgfSxcclxuICBkYXRhOiB7XHJcbiAgICBpbWdEcmF3OiB7fSwgLy/nu5jliLblm77niYfnmoTlpKflr7nosaFcclxuICAgIHNoYXJlUGF0aDogJycsIC8v55Sf5oiQ55qE5YiG5Lqr5Zu+XHJcbiAgICB2aXNpYmxlOiBmYWxzZSxcclxuICAgIHFyQ29kZVVybDonJyxcclxuICAgIGlzTGl2ZTpmYWxzZSwgLy/mmK/lkKbnm7Tmkq1cclxuICAgIGlzRGV0YWlsOmZhbHNlIC8v5piv5ZCm55u05pKtXHJcbiAgfSxcclxuICBsaWZldGltZXM6e1xyXG4gICAgYXN5bmMgcmVhZHkoKXtcclxuXHJcbiAgICB9XHJcbiAgfSxcclxuICBwYWdlTGlmZXRpbWVzOiB7XHJcbiAgICBzaG93OiBmdW5jdGlvbigpIHtcclxuICAgICAgLy8g6aG16Z2i6KKr5bGV56S6XHJcblxyXG4gICAgfSxcclxuICAgIGhpZGUoKSB7XHJcblxyXG4gICAgfVxyXG4gIH0sXHJcbiAgbWV0aG9kczoge1xyXG4gICAgYXN5bmMgZ2V0TGl2ZVJvb21RckNvZGUoKXtcclxuICAgICAgbGV0IHJvb21pZCA9IHRoaXMuZGF0YS5saXZlUm9vbS5Sb29tSWQ7XHJcbiAgICAgIGNvbnNvbGUubG9nKHJvb21pZCk7XHJcbiAgICAgIGxldCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCB3eC4kdXRpbHMudG8oXHJcbiAgICAgICAgd3guJGh0dHAucmVxdWVzdCh7XHJcbiAgICAgICAgICB1cmw6YC9zaG9wcGluZy9saXZlL2dldFNoYXJlZENvZGUuZG9gLFxyXG4gICAgICAgICAgZGF0YTp7XHJcbiAgICAgICAgICAgIHJvb21pZFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgICAgaWYgKGVycm9yfHxyZXN1bHQuc3RhdGUhPT0nc3VjY2Vzcycpe1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgICB3eC5zaG93VG9hc3Qoe1xyXG4gICAgICAgICAgdGl0bGU6ICfojrflj5bkuoznu7TnoIHlpLHotKXvvIzor7fnqI3lkI7lho3or5UnLFxyXG4gICAgICAgICAgaWNvbjonbm9uZScsXHJcbiAgICAgICAgfSlcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICBxckNvZGVVcmw6cmVzdWx0LmNkblVybFxyXG4gICAgICB9KVxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0sXHJcbiAgICBhc3luYyBnZXRRckNvZGUoKXtcclxuICAgICAgbGV0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IHd4LiR1dGlscy50byhcclxuICAgICAgICB3eC4kaHR0cC5yZXF1ZXN0KHtcclxuICAgICAgICAgIHVybDpgL3Nob3BwaW5nL3Bvc3Rlci9nZXRRckNvZGVGb3JQb3N0ZXIuZG9gLFxyXG4gICAgICAgICAgZGF0YTp7XHJcbiAgICAgICAgICAgIFFyQ29kZVR5cGU6ODAsXHJcbiAgICAgICAgICAgIGRvY2NvZGU6dGhpcy5kYXRhLmRldGFpbC5kb2Njb2RlLFxyXG4gICAgICAgICAgICBTZWxsZXJPcGVuSWQ6d3guZ2xvYmFsRGF0YS5Gcm9tT3BlbklkXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICBpZiAoZXJyb3J8fHJlc3VsdC5zdGF0ZSE9PSdzdWNjZXNzJyl7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgIHd4LnNob3dUb2FzdCh7XHJcbiAgICAgICAgICB0aXRsZTogJ+iOt+WPluS6jOe7tOeggeWksei0pe+8jOivt+eojeWQjuWGjeivlScsXHJcbiAgICAgICAgICBpY29uOidub25lJyxcclxuICAgICAgICB9KVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG4gICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgIHFyQ29kZVVybDpyZXN1bHQuUXJDb2RlXHJcbiAgICAgIH0pXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSxcclxuICAgIGhhbmRsZUNsb3NlKCkge1xyXG4gICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgIHZpc2libGU6IGZhbHNlXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMudHJpZ2dlckV2ZW50KCdjbG9zZScpXHJcbiAgICB9LFxyXG4gICAgY2xlYXJQb3N0ZXIoKSB7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgc2hhcmVQYXRoOicnXHJcbiAgICAgIH0pXHJcbiAgICB9LFxyXG4gICAgYXN5bmMgZHJhd1BpYygpIHtcclxuICAgICAgaWYgKHRoaXMuZGF0YS5zaGFyZVBhdGgpIHsgLy/lpoLmnpzlt7Lnu4/nu5jliLbov4fkuobmnKzlnLDkv53lrZjmnInlm77niYfkuI3pnIDopoHph43mlrDnu5jliLZcclxuICAgICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgICAgdmlzaWJsZTogdHJ1ZVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy50cmlnZ2VyRXZlbnQoJ2luaXREYXRhJylcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5kYXRhLmlzRGV0YWlsKXtcclxuICAgICAgICBpZiAoIWF3YWl0IHRoaXMuZ2V0UXJDb2RlKCkpIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5kYXRhLmlzTGl2ZSl7XHJcbiAgICAgICAgaWYgKCFhd2FpdCB0aGlzLmdldExpdmVSb29tUXJDb2RlKCkpIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuZGF0YS5xckNvZGVVcmwpIHtcclxuICAgICAgICB3eC5zaG93VG9hc3Qoe1xyXG4gICAgICAgICAgdGl0bGU6ICfojrflj5bkuoznu7TnoIHlpLHotKXvvIzor7fnqI3lkI7lho3or5UnLFxyXG4gICAgICAgICAgaWNvbjonbm9uZScsXHJcbiAgICAgICAgfSlcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgd3guc2hvd0xvYWRpbmcoe1xyXG4gICAgICAgIHRpdGxlOiAn55Sf5oiQ5LitJ1xyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICBpbWdEcmF3OiB0aGlzLmdldEltZ0RyYXcoKVxyXG4gICAgICB9KVxyXG4gICAgfSxcclxuXHJcbiAgICAgZ2V0SW1nRHJhdygpIHtcclxuICAgICAgbGV0IHtkZXRhaWwsbGl2ZVJvb20sc2VsbGVyTGlzdCxxckNvZGVVcmx9ID0gdGhpcy5kYXRhO1xyXG4gICAgICBsZXQgaXNMaXZlID0gdGhpcy5kYXRhLmlzTGl2ZTtcclxuICAgICAgbGV0IGlzRGV0YWlsID0gdGhpcy5kYXRhLmlzRGV0YWlsO1xyXG4gICAgICBsZXQgcHJvbW90aW9uc1R5cGU6YW55ID0ge1xyXG4gICAgICAgIDcxMDgwMjogJ+enkuadgOS7tycsIC8v56eS5p2AXHJcbiAgICAgICAgNzEwODAzOiAn5oql5ZCN5Lu3JywgLy/miqXlkI1cclxuICAgICAgICA3MTA4MDQ6ICflm6LotK3ku7cnLCAvL+Wboui0rVxyXG4gICAgICB9XHJcbiAgICAgIGNvbnNvbGUubG9nKGRldGFpbCxsaXZlUm9vbSxzZWxsZXJMaXN0LHFyQ29kZVVybCxpc0xpdmUpO1xyXG4gICAgICBsZXQgaW1nRHJhdyA9IHt9O1xyXG4gICAgICBsZXQgaW1nRHJhd1Byb21vdGlvbnMgPSB7XHJcbiAgICAgICAgXCJ3aWR0aFwiOiBcIjc1MHJweFwiLFxyXG4gICAgICAgIFwiaGVpZ2h0XCI6IFwiMTE5NnJweFwiLFxyXG4gICAgICAgIFwiYmFja2dyb3VuZFwiOiBcIiNmZmZcIixcclxuICAgICAgICBcInZpZXdzXCI6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2VcIixcclxuICAgICAgICAgICAgXCJ1cmxcIjogXCIvYXNzZXRzL2ltYWdlcy9wcm9tb3Rpb25zLXBvc3Rlci1iZy5qcGdcIixcclxuICAgICAgICAgICAgXCJjc3NcIjoge1xyXG4gICAgICAgICAgICAgIFwid2lkdGhcIjogXCI3NTBycHhcIixcclxuICAgICAgICAgICAgICBcImhlaWdodFwiOiBcIjExOTZycHhcIixcclxuICAgICAgICAgICAgICBcInRvcFwiOiBcIjBweFwiLFxyXG4gICAgICAgICAgICAgIFwibGVmdFwiOiBcIjBweFwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIFwidHlwZVwiOiBcImltYWdlXCIsXHJcbiAgICAgICAgICAgIFwidXJsXCI6IHNlbGxlckxpc3RbMF0uc2VsbGVyV2VpWGluQXZhdGFyVXJsfHwnL2Fzc2V0cy9pbWFnZXMvZGVmYXVsdC1hdmF0YXIucG5nJyxcclxuICAgICAgICAgICAgXCJjc3NcIjoge1xyXG4gICAgICAgICAgICAgIFwid2lkdGhcIjogXCIxMDBycHhcIixcclxuICAgICAgICAgICAgICBcImhlaWdodFwiOiBcIjEwMHJweFwiLFxyXG4gICAgICAgICAgICAgIFwidG9wXCI6IFwiMjJycHhcIixcclxuICAgICAgICAgICAgICBcImxlZnRcIjogXCIzNnJweFwiLFxyXG4gICAgICAgICAgICAgIFwiYm9yZGVyUmFkaXVzXCI6IFwiMTAwcnB4XCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgXCJ0eXBlXCI6IFwidGV4dFwiLFxyXG4gICAgICAgICAgICBcInRleHRcIjogc2VsbGVyTGlzdFswXS5zZWxsZXJOYW1lfHwn5pi156ewJyxcclxuICAgICAgICAgICAgXCJjc3NcIjoge1xyXG4gICAgICAgICAgICAgIFwiY29sb3JcIjogXCIjZmZmXCIsXHJcbiAgICAgICAgICAgICAgXCJ0b3BcIjogXCIzNHJweFwiLFxyXG4gICAgICAgICAgICAgIFwibGVmdFwiOiBcIjE2MHJweFwiLFxyXG4gICAgICAgICAgICAgIFwiZm9udFNpemVcIjogXCIzMnJweFwiLFxyXG4gICAgICAgICAgICAgIFwiZm9udFdlaWdodFwiOiBcImJvbGRcIixcclxuICAgICAgICAgICAgICBcInRleHRBbGlnblwiOiBcImxlZnRcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBcInR5cGVcIjogXCJ0ZXh0XCIsXHJcbiAgICAgICAgICAgIFwidGV4dFwiOiBcIumCgOivt+aCqOWPguS4jua0u+WKqFwiLFxyXG4gICAgICAgICAgICBcImNzc1wiOiB7XHJcbiAgICAgICAgICAgICAgXCJjb2xvclwiOiBcIiNmZmZcIixcclxuICAgICAgICAgICAgICBcInRvcFwiOiBcIjgwcnB4XCIsXHJcbiAgICAgICAgICAgICAgXCJsZWZ0XCI6IFwiMTYwcnB4XCIsXHJcbiAgICAgICAgICAgICAgXCJmb250U2l6ZVwiOiBcIjI4cnB4XCIsXHJcbiAgICAgICAgICAgICAgXCJ0ZXh0QWxpZ25cIjogXCJsZWZ0XCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2VcIixcclxuICAgICAgICAgICAgXCJ1cmxcIjogZGV0YWlsLmNvdmVySW1hZ2VVcmxbMF18fCcnLFxyXG4gICAgICAgICAgICBcImNzc1wiOiB7XHJcbiAgICAgICAgICAgICAgXCJ3aWR0aFwiOiBcIjYwMHJweFwiLFxyXG4gICAgICAgICAgICAgIFwiaGVpZ2h0XCI6IFwiNjAwcnB4XCIsXHJcbiAgICAgICAgICAgICAgXCJ0b3BcIjogXCIxODJycHhcIixcclxuICAgICAgICAgICAgICBcImxlZnRcIjogXCI3NnJweFwiLFxyXG4gICAgICAgICAgICAgIFwiYm9yZGVyUmFkaXVzXCI6IFwiMTBycHhcIixcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgXCJ0eXBlXCI6IFwidGV4dFwiLFxyXG4gICAgICAgICAgICBcInRleHRcIjogXCLvv6VcIixcclxuICAgICAgICAgICAgXCJjc3NcIjoge1xyXG4gICAgICAgICAgICAgIFwiY29sb3JcIjogXCIjZjIzMjMyXCIsXHJcbiAgICAgICAgICAgICAgXCJ0b3BcIjogXCI4MjBycHhcIixcclxuICAgICAgICAgICAgICBcImxlZnRcIjogXCI3NnJweFwiLFxyXG4gICAgICAgICAgICAgIFwiZm9udFNpemVcIjogXCIyOHJweFwiLFxyXG4gICAgICAgICAgICAgIFwidGV4dEFsaWduXCI6IFwibGVmdFwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIFwidHlwZVwiOiBcInRleHRcIixcclxuICAgICAgICAgICAgXCJ0ZXh0XCI6IGRldGFpbC5zYWxlc1ByaWNlfHwwLFxyXG4gICAgICAgICAgICBcImNzc1wiOiB7XHJcbiAgICAgICAgICAgICAgXCJjb2xvclwiOiBcIiNmMjMyMzJcIixcclxuICAgICAgICAgICAgICBcInRvcFwiOiBcIjgwOHJweFwiLFxyXG4gICAgICAgICAgICAgIFwibGVmdFwiOiBcIjEwOHJweFwiLFxyXG4gICAgICAgICAgICAgIFwiZm9udFNpemVcIjogXCI0NHJweFwiLFxyXG4gICAgICAgICAgICAgIFwiZm9udFdlaWdodFwiOiBcImJvbGRcIixcclxuICAgICAgICAgICAgICBcInRleHRBbGlnblwiOiBcImxlZnRcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBcInR5cGVcIjogXCJ0ZXh0XCIsXHJcbiAgICAgICAgICAgIFwidGV4dFwiOiBwcm9tb3Rpb25zVHlwZVtkZXRhaWwuZm9ybUlkXXx8JycsXHJcbiAgICAgICAgICAgIFwiY3NzXCI6IHtcclxuICAgICAgICAgICAgICBcImNvbG9yXCI6IFwiI2YyMzIzMlwiLFxyXG4gICAgICAgICAgICAgIFwiYmFja2dyb3VuZFwiOiBcInJnYigyNDksIDIzMCwgMjMxKVwiLFxyXG4gICAgICAgICAgICAgIFwid2lkdGhcIjogXCIxMTBycHhcIixcclxuICAgICAgICAgICAgICBcImhlaWdodFwiOiBcIjM1cnB4XCIsXHJcbiAgICAgICAgICAgICAgXCJ0b3BcIjogXCI4MjBycHhcIixcclxuICAgICAgICAgICAgICBcImxlZnRcIjogYCR7MTMwICsgKGRldGFpbC5zYWxlc1ByaWNlLnRvU3RyaW5nKCkubGVuZ3RoKjI1KX1ycHhgLFxyXG4gICAgICAgICAgICAgIFwiYm9yZGVyUmFkaXVzXCI6IFwiMjBycHhcIixcclxuICAgICAgICAgICAgICBcInBhZGRpbmdcIjogXCI1cnB4XCIsXHJcbiAgICAgICAgICAgICAgXCJmb250U2l6ZVwiOiBcIjI4cnB4XCIsXHJcbiAgICAgICAgICAgICAgXCJsaW5lSGVpZ2h0XCI6IFwiMzVycHhcIixcclxuICAgICAgICAgICAgICBcInRleHRBbGlnblwiOiBcImNlbnRlclwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIFwidHlwZVwiOiBcInRleHRcIixcclxuICAgICAgICAgICAgXCJ0ZXh0XCI6IGRldGFpbC5mb3JtSWQ9PTcxMDgwMz8nJzon5Lu35qC8JyxcclxuICAgICAgICAgICAgXCJjc3NcIjoge1xyXG4gICAgICAgICAgICAgIFwiY29sb3JcIjogXCIjOTk5XCIsXHJcbiAgICAgICAgICAgICAgXCJ0b3BcIjogXCI4ODRycHhcIixcclxuICAgICAgICAgICAgICBcImxlZnRcIjogXCI4NHJweFwiLFxyXG4gICAgICAgICAgICAgIFwiZm9udFNpemVcIjogXCIyOHJweFwiLFxyXG4gICAgICAgICAgICAgIFwidGV4dEFsaWduXCI6IFwibGVmdFwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIFwidHlwZVwiOiBcInRleHRcIixcclxuICAgICAgICAgICAgXCJ0ZXh0XCI6IGRldGFpbC5mb3JtSWQ9PTcxMDgwMz8nJzpg77+lJHtkZXRhaWwub3JpZ2luYWxQcmljZXx8MH1gLFxyXG4gICAgICAgICAgICBcImNzc1wiOiB7XHJcbiAgICAgICAgICAgICAgXCJjb2xvclwiOiBcIiM5OTlcIixcclxuICAgICAgICAgICAgICBcInRvcFwiOiBcIjg4NXJweFwiLFxyXG4gICAgICAgICAgICAgIFwibGVmdFwiOiBcIjE1MHJweFwiLFxyXG4gICAgICAgICAgICAgIFwiZm9udFNpemVcIjogXCIyNHJweFwiLFxyXG4gICAgICAgICAgICAgIFwidGV4dERlY29yYXRpb25cIjogXCJsaW5lLXRocm91Z2hcIixcclxuICAgICAgICAgICAgICBcInRleHRBbGlnblwiOiBcImxlZnRcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBcInR5cGVcIjogXCJ0ZXh0XCIsXHJcbiAgICAgICAgICAgIFwidGV4dFwiOiBcIumZkOaXtuS8mOaDoFwiLFxyXG4gICAgICAgICAgICBcImNzc1wiOiB7XHJcbiAgICAgICAgICAgICAgXCJjb2xvclwiOiBcIiNmMjMyMzJcIixcclxuICAgICAgICAgICAgICBcIndpZHRoXCI6IFwiMTM1cnB4XCIsXHJcbiAgICAgICAgICAgICAgXCJoZWlnaHRcIjogXCI0MHJweFwiLFxyXG4gICAgICAgICAgICAgIFwidG9wXCI6IGRldGFpbC5mb3JtSWQ9PTcxMDgwMz8nODg1cnB4JzpcIjk0NnJweFwiLFxyXG4gICAgICAgICAgICAgIFwibGVmdFwiOiBcIjg4cnB4XCIsXHJcbiAgICAgICAgICAgICAgXCJwYWRkaW5nXCI6IFwiNnJweFwiLFxyXG4gICAgICAgICAgICAgIFwiYm9yZGVyUmFkaXVzXCI6IFwiNXJweFwiLFxyXG4gICAgICAgICAgICAgIFwiYm9yZGVyV2lkdGhcIjogXCIycnB4XCIsXHJcbiAgICAgICAgICAgICAgXCJib3JkZXJDb2xvclwiOiBcIiNmZGU0ZTdcIixcclxuICAgICAgICAgICAgICBcImZvbnRTaXplXCI6IFwiMjhycHhcIixcclxuICAgICAgICAgICAgICBcImxpbmVIZWlnaHRcIjogXCI0MHJweFwiLFxyXG4gICAgICAgICAgICAgIFwidGV4dEFsaWduXCI6IFwiY2VudGVyXCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgXCJ0eXBlXCI6IFwidGV4dFwiLFxyXG4gICAgICAgICAgICBcInRleHRcIjogYOW3suWUriAke2RldGFpbC5vcmRlclRpbWVzfHwwfWAsXHJcbiAgICAgICAgICAgIFwiY3NzXCI6IHtcclxuICAgICAgICAgICAgICBcImNvbG9yXCI6IFwiIzk5OVwiLFxyXG4gICAgICAgICAgICAgIFwid2lkdGhcIjogXCIyMDBycHhcIixcclxuICAgICAgICAgICAgICBcInRvcFwiOiBcIjgyMHJweFwiLFxyXG4gICAgICAgICAgICAgIFwibGVmdFwiOiBcIjQ3NnJweFwiLFxyXG4gICAgICAgICAgICAgIFwiZm9udFNpemVcIjogXCIyOHJweFwiLFxyXG4gICAgICAgICAgICAgIFwidGV4dEFsaWduXCI6IFwicmlnaHRcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBcInR5cGVcIjogXCJ0ZXh0XCIsXHJcbiAgICAgICAgICAgIFwidGV4dFwiOiBg44CQJHt3eC5nbG9iYWxEYXRhLnNldHRpbmdzLm5hbWV944CRJHtkZXRhaWwudGl0bGV9YHx8J+a0u+WKqOagh+mimCcsXHJcbiAgICAgICAgICAgIFwiY3NzXCI6IHtcclxuICAgICAgICAgICAgICBcImNvbG9yXCI6IFwiIzMzM1wiLFxyXG4gICAgICAgICAgICAgIFwid2lkdGhcIjogXCIzNjBycHhcIixcclxuICAgICAgICAgICAgICBcInRvcFwiOiBkZXRhaWwuZm9ybUlkPT03MTA4MDM/Jzk4MHJweCc6XCIxMDIwcnB4XCIsXHJcbiAgICAgICAgICAgICAgXCJsZWZ0XCI6IFwiNzZycHhcIixcclxuICAgICAgICAgICAgICBcImZvbnRTaXplXCI6IFwiMzZycHhcIixcclxuICAgICAgICAgICAgICBcIm1heExpbmVzXCI6IFwiMlwiLFxyXG4gICAgICAgICAgICAgIFwibGluZUhlaWdodFwiOic1MHJweCcsXHJcbiAgICAgICAgICAgICAgXCJ0ZXh0QWxpZ25cIjogXCJsZWZ0XCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2VcIixcclxuICAgICAgICAgICAgXCJ1cmxcIjogcXJDb2RlVXJsLFxyXG4gICAgICAgICAgICBcImNzc1wiOiB7XHJcbiAgICAgICAgICAgICAgXCJ3aWR0aFwiOiBcIjIwMHJweFwiLFxyXG4gICAgICAgICAgICAgIFwiaGVpZ2h0XCI6IFwiMTAwcHhcIixcclxuICAgICAgICAgICAgICBcInRvcFwiOiBcIjg4OHJweFwiLFxyXG4gICAgICAgICAgICAgIFwibGVmdFwiOiBcIjQ3NnJweFwiLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBcInR5cGVcIjogXCJ0ZXh0XCIsXHJcbiAgICAgICAgICAgIFwidGV4dFwiOiBcIumVv+aMieaJq+eggeivhuWIq+WPguS4jn5cIixcclxuICAgICAgICAgICAgXCJjc3NcIjoge1xyXG4gICAgICAgICAgICAgIFwiY29sb3JcIjogXCIjNjY2XCIsXHJcbiAgICAgICAgICAgICAgXCJ0b3BcIjogXCIxMTA1cnB4XCIsXHJcbiAgICAgICAgICAgICAgXCJsZWZ0XCI6IFwiNDc2cnB4XCIsXHJcbiAgICAgICAgICAgICAgXCJmb250U2l6ZVwiOiBcIjI0cnB4XCIsXHJcbiAgICAgICAgICAgICAgXCJ0ZXh0QWxpZ25cIjogXCJsZWZ0XCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgICAgfTtcclxuICAgICAgbGV0IGltZ0RyYXdMaXZlID0ge1xyXG4gICAgICAgIHdpZHRoOiAnNzUwcnB4JyxcclxuICAgICAgICBoZWlnaHQ6ICcxMzM0cnB4JyxcclxuICAgICAgICBiYWNrZ3JvdW5kOiAnI2Y1ZjVmNScsXHJcbiAgICAgICAgdmlld3M6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2VcIixcclxuICAgICAgICAgICAgXCJ1cmxcIjogXCIvYXNzZXRzL2ltYWdlcy9wb3N0ZXItYmcucG5nXCIsXHJcbiAgICAgICAgICAgIFwiY3NzXCI6IHtcclxuICAgICAgICAgICAgICBcIndpZHRoXCI6IFwiNzUwcnB4XCIsXHJcbiAgICAgICAgICAgICAgXCJoZWlnaHRcIjogXCIxMzM0cnB4XCIsXHJcbiAgICAgICAgICAgICAgXCJ0b3BcIjogXCIwcHhcIixcclxuICAgICAgICAgICAgICBcImxlZnRcIjogXCIwcHhcIixcclxuICAgICAgICAgICAgICBcInJvdGF0ZVwiOiBcIjBcIixcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogJ2ltYWdlJyxcclxuICAgICAgICAgICAgdXJsOiBsaXZlUm9vbS5TaGFyZUltZ1VuaWRVcmwsXHJcbiAgICAgICAgICAgIGNzczoge1xyXG4gICAgICAgICAgICAgIHRvcDogJzEwcnB4JyxcclxuICAgICAgICAgICAgICBsZWZ0OiAnMTBycHgnLFxyXG4gICAgICAgICAgICAgIHJpZ2h0OiAnMTBycHgnLFxyXG4gICAgICAgICAgICAgIHdpZHRoOiAnNzMwcnB4JyxcclxuICAgICAgICAgICAgICBoZWlnaHQ6ICc2MzBycHgnLFxyXG4gICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzE2cnB4J1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogJ2ltYWdlJyxcclxuICAgICAgICAgICAgdXJsOiBsaXZlUm9vbS5BbmNob3JJbWdVbmlkVXJsIHx8ICcvYXNzZXRzL2ltYWdlcy9kZWZhdWx0LWF2YXRhci5wbmcnLFxyXG4gICAgICAgICAgICBjc3M6IHtcclxuICAgICAgICAgICAgICB0b3A6ICc1OTRycHgnLFxyXG4gICAgICAgICAgICAgIGxlZnQ6ICczMjhycHgnLFxyXG4gICAgICAgICAgICAgIHdpZHRoOiAnOTZycHgnLFxyXG4gICAgICAgICAgICAgIGhlaWdodDogJzk2cnB4JyxcclxuICAgICAgICAgICAgICBib3JkZXJXaWR0aDogJzZycHgnLFxyXG4gICAgICAgICAgICAgIGJvcmRlckNvbG9yOiAnI0ZGRicsXHJcbiAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnOTZycHgnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcclxuICAgICAgICAgICAgdGV4dDogbGl2ZVJvb20uQW5jaG9yTmFtZSB8fCAn5pi156ewJyxcclxuICAgICAgICAgICAgY3NzOiB7XHJcbiAgICAgICAgICAgICAgdG9wOiAnNzIycnB4JyxcclxuICAgICAgICAgICAgICBmb250U2l6ZTogJzI4cnB4JyxcclxuICAgICAgICAgICAgICBsZWZ0OiAnMzc1cnB4JyxcclxuICAgICAgICAgICAgICBhbGlnbjogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgY29sb3I6ICcjM2MzYzNjJ1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0eXBlOiAndGV4dCcsXHJcbiAgICAgICAgICAgIHRleHQ6IGDpgoDor7fmgqjlj4LkuI7nm7Tmkq1gLFxyXG4gICAgICAgICAgICBjc3M6IHtcclxuICAgICAgICAgICAgICB0b3A6ICc3NjZycHgnLFxyXG4gICAgICAgICAgICAgIGxlZnQ6ICczNzVycHgnLFxyXG4gICAgICAgICAgICAgIGFsaWduOiAnY2VudGVyJyxcclxuICAgICAgICAgICAgICBmb250U2l6ZTogJzI4cnB4JyxcclxuICAgICAgICAgICAgICBjb2xvcjogJyMzYzNjM2MnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcclxuICAgICAgICAgICAgdGV4dDogYCR7KGxpdmVSb29tLlJvb21OYW1lKSB8fCAn5rS75Yqo5qCH6aKYJ30gYCxcclxuICAgICAgICAgICAgY3NzOiB7XHJcbiAgICAgICAgICAgICAgdG9wOiAnODIwcnB4JyxcclxuICAgICAgICAgICAgICBsZWZ0OiAnMzc1cnB4JyxcclxuICAgICAgICAgICAgICBtYXhMaW5lczogMSxcclxuICAgICAgICAgICAgICBhbGlnbjogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgZm9udFdlaWdodDogJ2JvbGQnLFxyXG4gICAgICAgICAgICAgIGZvbnRTaXplOiAnNDRycHgnLFxyXG4gICAgICAgICAgICAgIGNvbG9yOiAnIzNjM2MzYydcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxyXG4gICAgICAgICAgICB0ZXh0OiBgYCxcclxuICAgICAgICAgICAgY3NzOiB7XHJcbiAgICAgICAgICAgICAgdG9wOiAnNzY1cnB4JyxcclxuICAgICAgICAgICAgICBsZWZ0OiAnMzc1cnB4JyxcclxuICAgICAgICAgICAgICBtYXhMaW5lczogMSxcclxuICAgICAgICAgICAgICBhbGlnbjogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgZm9udFdlaWdodDogJ2JvbGQnLFxyXG4gICAgICAgICAgICAgIGZvbnRTaXplOiAnNDRycHgnLFxyXG4gICAgICAgICAgICAgIGNvbG9yOiAnI2YyMzIzMidcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogJ2ltYWdlJyxcclxuICAgICAgICAgICAgdXJsOiBxckNvZGVVcmwsXHJcbiAgICAgICAgICAgIGNzczoge1xyXG4gICAgICAgICAgICAgIHRvcDogJzk3MHJweCcsXHJcbiAgICAgICAgICAgICAgbGVmdDogJzM5MHJweCcsXHJcbiAgICAgICAgICAgICAgd2lkdGg6ICczMDBycHgnLFxyXG4gICAgICAgICAgICAgIGhlaWdodDogJzMwMHJweCdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxyXG4gICAgICAgICAgICB0ZXh0OiBg6ZW/5oyJ5LqM57u056CB6K+G5Yir5Y+C5LiOYCxcclxuICAgICAgICAgICAgY3NzOiB7XHJcbiAgICAgICAgICAgICAgdG9wOiAnMTEwMHJweCcsXHJcbiAgICAgICAgICAgICAgbGVmdDogJzU1cnB4JyxcclxuICAgICAgICAgICAgICBmb250U2l6ZTogJzMycnB4JyxcclxuICAgICAgICAgICAgICBjb2xvcjogJyMzYzNjM2MnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXVxyXG4gICAgICB9O1xyXG4gICAgICBpZiAoaXNMaXZlKXtcclxuICAgICAgICBpbWdEcmF3ID0gaW1nRHJhd0xpdmU7XHJcbiAgICAgIH1cclxuICAgICAgaWYoaXNEZXRhaWwpIHtcclxuICAgICAgICBpbWdEcmF3ID0gaW1nRHJhd1Byb21vdGlvbnM7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGltZ0RyYXc7XHJcbiAgICB9LFxyXG4gICAgb25JbWdFcnIoKSB7XHJcbiAgICAgIHd4LmhpZGVMb2FkaW5nKClcclxuICAgICAgd3guc2hvd1RvYXN0KHtcclxuICAgICAgICB0aXRsZTogJ+eUn+aIkOWIhuS6q+WbvuWksei0pe+8jOivt+WIt+aWsOmhtemdoumHjeivlSdcclxuICAgICAgfSlcclxuICAgIH0sXHJcbiAgICBvbkltZ09LKGUpIHtcclxuICAgICAgd3guaGlkZUxvYWRpbmcoKVxyXG4gICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgIHNoYXJlUGF0aDogZS5kZXRhaWwucGF0aCxcclxuICAgICAgICB2aXNpYmxlOiB0cnVlLFxyXG4gICAgICB9KVxyXG4gICAgICAvL+mAmuefpeWklumDqOe7mOWItuWujOaIkO+8jOmHjee9rmlzQ2FuRHJhd+S4umZhbHNlXHJcbiAgICAgIHRoaXMudHJpZ2dlckV2ZW50KCdpbml0RGF0YScpXHJcbiAgICB9LFxyXG4gICAgcHJldmVudERlZmF1bHQoKSB7IH0sXHJcbiAgICAvLyDkv53lrZjlm77niYdcclxuICAgIGhhbmRsZVNhdmVQaG90bygpIHtcclxuICAgICAgd3guc2hvd0xvYWRpbmcoe1xyXG4gICAgICAgIHRpdGxlOiAn5q2j5Zyo5L+d5a2YLi4uJyxcclxuICAgICAgICBtYXNrOiB0cnVlXHJcbiAgICAgIH0pXHJcbiAgICAgIHd4LnNhdmVJbWFnZVRvUGhvdG9zQWxidW0oe1xyXG4gICAgICAgIGZpbGVQYXRoOiB0aGlzLmRhdGEuc2hhcmVQYXRoLFxyXG4gICAgICAgIHN1Y2Nlc3M6ICgpID0+IHtcclxuICAgICAgICAgIHd4LnNob3dUb2FzdCh7XHJcbiAgICAgICAgICAgIHRpdGxlOiAn5L+d5a2Y5oiQ5YqfJ1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgICAgICAgIHZpc2libGU6IGZhbHNlXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHRoaXMudHJpZ2dlckV2ZW50KCdjbG9zZScpXHJcbiAgICAgICAgICB9LCAzMDApXHJcbiAgICAgICAgfSxcclxuICAgICAgICBmYWlsOiAoKSA9PiB7XHJcbiAgICAgICAgICB3eC5nZXRTZXR0aW5nKHtcclxuICAgICAgICAgICAgc3VjY2VzczogcmVzID0+IHtcclxuICAgICAgICAgICAgICBsZXQgYXV0aFNldHRpbmcgPSByZXMuYXV0aFNldHRpbmdcclxuICAgICAgICAgICAgICBpZiAoIWF1dGhTZXR0aW5nWydzY29wZS53cml0ZVBob3Rvc0FsYnVtJ10pIHtcclxuICAgICAgICAgICAgICAgIHd4LnNob3dNb2RhbCh7XHJcbiAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5o+Q56S6JyxcclxuICAgICAgICAgICAgICAgICAgY29udGVudDogJ+aCqOacquW8gOWQr+S/neWtmOWbvueJh+WIsOebuOWGjOeahOadg+mZkO+8jOivt+eCueWHu+ehruWumuWOu+W8gOWQr+adg+mZkO+8gScsXHJcbiAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MocmVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5jb25maXJtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB3eC5vcGVuU2V0dGluZygpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB3eC5oaWRlTG9hZGluZygpXHJcbiAgICAgICAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2VcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGhpcy50cmlnZ2VyRXZlbnQoJ2Nsb3NlJylcclxuICAgICAgICAgIH0sIDMwMClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG59KVxyXG4iXX0=
\ No newline at end of file
diff --git a/components/poster-creator/index.ts b/components/poster-creator/index.ts
index a6eb739..abe119d 100644
--- a/components/poster-creator/index.ts
+++ b/components/poster-creator/index.ts
@@ -44,7 +44,8 @@
     sharePath: '', //鐢熸垚鐨勫垎浜浘
     visible: false,
     qrCodeUrl:'',
-    isLive:false //鏄惁鐩存挱
+    isLive:false, //鏄惁鐩存挱
+    isDetail:false //鏄惁鐩存挱
   },
   lifetimes:{
     async ready(){
@@ -151,11 +152,209 @@
         imgDraw: this.getImgDraw()
       })
     },
+
      getImgDraw() {
       let {detail,liveRoom,sellerList,qrCodeUrl} = this.data;
       let isLive = this.data.isLive;
+      let isDetail = this.data.isDetail;
+      let promotionsType:any = {
+        710802: '绉掓潃浠�', //绉掓潃
+        710803: '鎶ュ悕浠�', //鎶ュ悕
+        710804: '鍥㈣喘浠�', //鍥㈣喘
+      }
       console.log(detail,liveRoom,sellerList,qrCodeUrl,isLive);
-      let imgDraw = {
+      let imgDraw = {};
+      let imgDrawPromotions = {
+        "width": "750rpx",
+        "height": "1196rpx",
+        "background": "#fff",
+        "views": [
+          {
+            "type": "image",
+            "url": "/assets/images/promotions-poster-bg.jpg",
+            "css": {
+              "width": "750rpx",
+              "height": "1196rpx",
+              "top": "0px",
+              "left": "0px"
+            }
+          },
+          {
+            "type": "image",
+            "url": sellerList[0].sellerWeiXinAvatarUrl||'/assets/images/default-avatar.png',
+            "css": {
+              "width": "100rpx",
+              "height": "100rpx",
+              "top": "22rpx",
+              "left": "36rpx",
+              "borderRadius": "100rpx"
+            }
+          },
+          {
+            "type": "text",
+            "text": sellerList[0].sellerName||'鏄电О',
+            "css": {
+              "color": "#fff",
+              "top": "34rpx",
+              "left": "160rpx",
+              "fontSize": "32rpx",
+              "fontWeight": "bold",
+              "textAlign": "left"
+            }
+          },
+          {
+            "type": "text",
+            "text": "閭�璇锋偍鍙備笌娲诲姩",
+            "css": {
+              "color": "#fff",
+              "top": "80rpx",
+              "left": "160rpx",
+              "fontSize": "28rpx",
+              "textAlign": "left"
+            }
+          },
+          {
+            "type": "image",
+            "url": detail.coverImageUrl[0]||'',
+            "css": {
+              "width": "600rpx",
+              "height": "600rpx",
+              "top": "182rpx",
+              "left": "76rpx",
+              "borderRadius": "10rpx",
+            }
+          },
+          {
+            "type": "text",
+            "text": "锟�",
+            "css": {
+              "color": "#f23232",
+              "top": "820rpx",
+              "left": "76rpx",
+              "fontSize": "28rpx",
+              "textAlign": "left"
+            }
+          },
+          {
+            "type": "text",
+            "text": detail.salesPrice||0,
+            "css": {
+              "color": "#f23232",
+              "top": "808rpx",
+              "left": "108rpx",
+              "fontSize": "44rpx",
+              "fontWeight": "bold",
+              "textAlign": "left"
+            }
+          },
+          {
+            "type": "text",
+            "text": promotionsType[detail.formId]||'',
+            "css": {
+              "color": "#f23232",
+              "background": "rgb(249, 230, 231)",
+              "width": "110rpx",
+              "height": "35rpx",
+              "top": "820rpx",
+              "left": `${130 + (detail.salesPrice.toString().length*25)}rpx`,
+              "borderRadius": "20rpx",
+              "padding": "5rpx",
+              "fontSize": "28rpx",
+              "lineHeight": "35rpx",
+              "textAlign": "center"
+            }
+          },
+          {
+            "type": "text",
+            "text": detail.formId==710803?'':'浠锋牸',
+            "css": {
+              "color": "#999",
+              "top": "884rpx",
+              "left": "84rpx",
+              "fontSize": "28rpx",
+              "textAlign": "left"
+            }
+          },
+          {
+            "type": "text",
+            "text": detail.formId==710803?'':`锟�${detail.originalPrice||0}`,
+            "css": {
+              "color": "#999",
+              "top": "885rpx",
+              "left": "150rpx",
+              "fontSize": "24rpx",
+              "textDecoration": "line-through",
+              "textAlign": "left"
+            }
+          },
+          {
+            "type": "text",
+            "text": "闄愭椂浼樻儬",
+            "css": {
+              "color": "#f23232",
+              "width": "135rpx",
+              "height": "40rpx",
+              "top": detail.formId==710803?'885rpx':"946rpx",
+              "left": "88rpx",
+              "padding": "6rpx",
+              "borderRadius": "5rpx",
+              "borderWidth": "2rpx",
+              "borderColor": "#fde4e7",
+              "fontSize": "28rpx",
+              "lineHeight": "40rpx",
+              "textAlign": "center"
+            }
+          },
+          {
+            "type": "text",
+            "text": `宸插敭 ${detail.orderTimes||0}`,
+            "css": {
+              "color": "#999",
+              "width": "200rpx",
+              "top": "820rpx",
+              "left": "476rpx",
+              "fontSize": "28rpx",
+              "textAlign": "right"
+            }
+          },
+          {
+            "type": "text",
+            "text": `銆�${wx.globalData.settings.name}銆�${detail.title}`||'娲诲姩鏍囬',
+            "css": {
+              "color": "#333",
+              "width": "360rpx",
+              "top": detail.formId==710803?'980rpx':"1020rpx",
+              "left": "76rpx",
+              "fontSize": "36rpx",
+              "maxLines": "2",
+              "lineHeight":'50rpx',
+              "textAlign": "left"
+            }
+          },
+          {
+            "type": "image",
+            "url": qrCodeUrl,
+            "css": {
+              "width": "200rpx",
+              "height": "100px",
+              "top": "888rpx",
+              "left": "476rpx",
+            }
+          },
+          {
+            "type": "text",
+            "text": "闀挎寜鎵爜璇嗗埆鍙備笌~",
+            "css": {
+              "color": "#666",
+              "top": "1105rpx",
+              "left": "476rpx",
+              "fontSize": "24rpx",
+              "textAlign": "left"
+            }
+          }
+        ]
+      };
+      let imgDrawLive = {
         width: '750rpx',
         height: '1334rpx',
         background: '#f5f5f5',
@@ -173,21 +372,21 @@
           },
           {
             type: 'image',
-            url: isLive?liveRoom.ShareImgUnidUrl:detail.coverImageUrl[0],
+            url: liveRoom.ShareImgUnidUrl,
             css: {
               top: '10rpx',
               left: '10rpx',
               right: '10rpx',
               width: '730rpx',
-              height: '480rpx',
+              height: '630rpx',
               borderRadius: '16rpx'
             },
           },
           {
             type: 'image',
-            url: (isLive?liveRoom.AnchorImgUnidUrl:sellerList[0].sellerHeadimgurl) || '/assets/images/default-avatar.png',
+            url: liveRoom.AnchorImgUnidUrl || '/assets/images/default-avatar.png',
             css: {
-              top: '444rpx',
+              top: '594rpx',
               left: '328rpx',
               width: '96rpx',
               height: '96rpx',
@@ -198,9 +397,9 @@
           },
           {
             type: 'text',
-            text: (isLive?liveRoom.AnchorName: sellerList[0].sellerName) || '鏄电О',
+            text: liveRoom.AnchorName || '鏄电О',
             css: {
-              top: '572rpx',
+              top: '722rpx',
               fontSize: '28rpx',
               left: '375rpx',
               align: 'center',
@@ -209,9 +408,9 @@
           },
           {
             type: 'text',
-            text: `閭�璇锋偍鍙備笌${(isLive?'鐩存挱':'娲诲姩')}`,
+            text: `閭�璇锋偍鍙備笌鐩存挱`,
             css: {
-              top: '616rpx',
+              top: '766rpx',
               left: '375rpx',
               align: 'center',
               fontSize: '28rpx',
@@ -220,9 +419,9 @@
           },
           {
             type: 'text',
-            text: `${(isLive?liveRoom.RoomName:detail.title) || '娲诲姩鏍囬'} `,
+            text: `${(liveRoom.RoomName) || '娲诲姩鏍囬'} `,
             css: {
-              top: '684rpx',
+              top: '820rpx',
               left: '375rpx',
               maxLines: 1,
               align: 'center',
@@ -231,22 +430,9 @@
               color: '#3c3c3c'
             }
           },
-          // {
-          //   type: 'text',
-          //   text: `娲诲姩浠� 锟,
-          //   css: {
-          //     top: '780rpx',
-          //     left: '250rpx',
-          //     maxLines: 1,
-          //     align: 'center',
-          //     fontWeight: 'bold',
-          //     fontSize: '28rpx',
-          //     color: '#f23232'
-          //   }
-          // },
           {
             type: 'text',
-            text: `${(isLive?'':'锟�'+detail.salesPrice) || ''}`,
+            text: ``,
             css: {
               top: '765rpx',
               left: '375rpx',
@@ -279,6 +465,12 @@
           },
         ]
       };
+      if (isLive){
+        imgDraw = imgDrawLive;
+      }
+      if(isDetail) {
+        imgDraw = imgDrawPromotions;
+      }
       return imgDraw;
     },
     onImgErr() {
diff --git a/components/time-quantum/index.js b/components/time-quantum/index.js
index aeebe62..ca6fc96 100644
--- a/components/time-quantum/index.js
+++ b/components/time-quantum/index.js
@@ -19,11 +19,11 @@
     data: {
         minStartDate: new Date().getTime(),
         maxStartDate: new Date().getTime() + 1000 * 60 * 60 * 24 * 180,
-        startDate: 0,
+        startDate: new Date().getTime(),
         startTime: '',
         minEndDate: new Date().getTime() + 1000 * 60,
         maxEndDate: new Date().getTime() + 1000 * 60 * 60 * 24 * 365 * 100,
-        endDate: 0,
+        endDate: new Date().getTime() + 1000 * 60 * 60 * 24 * 7,
         endTime: '',
         formatter: function (type, value) {
             if (type === "year") {
@@ -41,6 +41,8 @@
     lifetimes: {
         ready: function () {
             this.setData({
+                startTime: this.data.startTime || wx.$utils.formatTime(new Date().getTime()),
+                endTime: this.data.endTime || wx.$utils.formatTime(new Date().getTime() + 1000 * 60 * 60 * 24 * 7),
                 minStartDate: new Date().getTime(),
                 maxStartDate: new Date().getTime() + 1000 * 60 * 60 * 24 * 180,
             });
@@ -69,16 +71,16 @@
             });
             this.handleTimeQuantum();
             this.onStartDatePopupClose();
-            this.checkTime("startTime", "璇烽�夋嫨璁″垝寮�濮嬫椂闂�");
+            this.checkTime("startTime");
         },
         onInputStartDate: function () { },
         onCancelStartDate: function () {
             this.onStartDatePopupClose();
-            this.checkTime("startTime", "璇烽�夋嫨璁″垝寮�濮嬫椂闂�");
+            this.checkTime("startTime");
         },
         onCancelEndDate: function () {
             this.onEndDatePopupClose();
-            this.checkTime("endTime", "璇烽�夋嫨璁″垝缁撴潫鏃堕棿");
+            this.checkTime("endTime");
         },
         onInputEndDate: function () { },
         showEndDatePopup: function () {
@@ -100,7 +102,7 @@
             });
             this.handleTimeQuantum();
             this.onEndDatePopupClose();
-            this.checkTime("endTime", "璇烽�夋嫨璁″垝缁撴潫鏃堕棿");
+            this.checkTime("endTime");
         },
         handleTimeQuantum: function () {
             var startTime = this.data.startTime;
@@ -134,32 +136,32 @@
                 endTime: endTime
             });
         },
-        checkTime: function (time, msg) {
-            var _a, _b, _c, _d;
-            if (this.data[time] == '') {
-                this.setData((_a = {},
-                    _a[time + "Error"] = msg,
-                    _a));
-                console.log(this.data.startTime);
-                return false;
-            }
+        getSelectedTime: function () {
+            var data = this.data;
+            return {
+                startTime: data.startTime,
+                endTime: data.endTime,
+            };
+        },
+        checkTime: function (time) {
+            var _a, _b, _c;
             var startDate = this.data.startDate;
             var endDate = this.data.endDate;
             console.log(this.data);
             if (startDate && endDate && (startDate - endDate > 0)) {
-                this.setData((_b = {},
-                    _b["startTimeError"] = "寮�濮嬫椂闂撮渶灏忎簬缁撴潫鏃堕棿",
-                    _b));
+                this.setData((_a = {},
+                    _a["startTimeError"] = "寮�濮嬫椂闂撮渶灏忎簬缁撴潫鏃堕棿",
+                    _a));
                 return false;
             }
             else {
-                this.setData((_c = {},
-                    _c["startTimeError"] = "",
-                    _c));
+                this.setData((_b = {},
+                    _b["startTimeError"] = "",
+                    _b));
             }
-            this.setData((_d = {},
-                _d[time + "Error"] = "",
-                _d));
+            this.setData((_c = {},
+                _c[time + "Error"] = "",
+                _c));
             return true;
         },
         formatTime: function (time) {
@@ -170,4 +172,4 @@
         }
     }
 });
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLDZCQUErQjtBQUUvQixTQUFTLENBQUM7SUFJUixPQUFPLEVBQUU7UUFDUCxjQUFjLEVBQUUsSUFBSTtRQUNwQixhQUFhLEVBQUUsSUFBSTtLQUNwQjtJQUNELFVBQVUsRUFBRTtRQUNWLFNBQVMsRUFBQztZQUNSLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFDLEVBQUU7U0FDVDtRQUNELE9BQU8sRUFBQztZQUNOLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFDLEVBQUU7U0FDVDtLQWlCRjtJQUtELElBQUksRUFBRTtRQUNKLFlBQVksRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRTtRQUNsQyxZQUFZLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRztRQUM5RCxTQUFTLEVBQUUsQ0FBQztRQUNaLFNBQVMsRUFBRSxFQUFFO1FBQ2IsVUFBVSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUU7UUFDNUMsVUFBVSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHO1FBQ2xFLE9BQU8sRUFBRSxDQUFDO1FBQ1YsT0FBTyxFQUFFLEVBQUU7UUFDWCxTQUFTLFlBQUMsSUFBVyxFQUFFLEtBQVk7WUFFakMsSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFO2dCQUNuQixPQUFVLEtBQUssV0FBRyxDQUFDO2FBQ3BCO2lCQUFNLElBQUksSUFBSSxLQUFLLE9BQU8sRUFBRTtnQkFDM0IsT0FBVSxLQUFLLFdBQUcsQ0FBQzthQUNwQjtpQkFBTSxJ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ZW50IjpbIlxyXG4vLyBjb25zdCBhcHAgPSBnZXRBcHA8SUFwcE9wdGlvbj4oKTtcclxuaW1wb3J0ICogYXMgZGF5anMgZnJvbSBcImRheWpzXCI7XHJcbnR5cGUgdGltZVR5cGUgPSAnc3RhcnRUaW1lJ3wnZW5kVGltZSc7XHJcbkNvbXBvbmVudCh7XHJcbiAgLyoqXHJcbiAgICog57uE5Lu255qE5bGe5oCn5YiX6KGoXHJcbiAgICovXHJcbiAgb3B0aW9uczoge1xyXG4gICAgYWRkR2xvYmFsQ2xhc3M6IHRydWUsXHJcbiAgICBtdWx0aXBsZVNsb3RzOiB0cnVlIC8vIOWcqOe7hOS7tuWumuS5ieaXtueahOmAiemhueS4reWQr+eUqOWkmnNsb3TmlK/mjIFcclxuICB9LFxyXG4gIHByb3BlcnRpZXM6IHtcclxuICAgIHN0YXJ0VGltZTp7XHJcbiAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgdmFsdWU6JydcclxuICAgIH0sXHJcbiAgICBlbmRUaW1lOntcclxuICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICB2YWx1ZTonJ1xyXG4gICAgfSxcclxuICAgIC8vIG1pblN0YXJ0RGF0ZTp7XHJcbiAgICAvLyAgIHR5cGU6IE51bWJlcnx8U3RyaW5nLFxyXG4gICAgLy8gICB2YWx1ZTpuZXcgRGF0ZSgpLmdldFRpbWUoKVxyXG4gICAgLy8gfSxcclxuICAgIC8vIG1pblN0YXJ0RGF0ZTp7XHJcbiAgICAvLyAgIHR5cGU6IE51bWJlcnx8U3RyaW5nLFxyXG4gICAgLy8gICB2YWx1ZTpuZXcgRGF0ZSgpLmdldFRpbWUoKVxyXG4gICAgLy8gfSxcclxuICAgIC8vIG1pblN0YXJ0RGF0ZTp7XHJcbiAgICAvLyAgIHR5cGU6IE51bWJlcnx8U3RyaW5nLFxyXG4gICAgLy8gICB2YWx1ZTpuZXcgRGF0ZSgpLmdldFRpbWUoKVxyXG4gICAgLy8gfSxcclxuICAgIC8vIG1pblN0YXJ0RGF0ZTp7XHJcbiAgICAvLyAgIHR5cGU6IE51bWJlcnx8U3RyaW5nLFxyXG4gICAgLy8gICB2YWx1ZTpuZXcgRGF0ZSgpLmdldFRpbWUoKVxyXG4gICAgLy8gfSxcclxuICB9LFxyXG5cclxuICAvKipcclxuICAgKiDnu4Tku7bnmoTliJ3lp4vmlbDmja5cclxuICAgKi9cclxuICBkYXRhOiB7XHJcbiAgICBtaW5TdGFydERhdGU6IG5ldyBEYXRlKCkuZ2V0VGltZSgpLFxyXG4gICAgbWF4U3RhcnREYXRlOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSArIDEwMDAgKiA2MCAqIDYwICogMjQgKiAxODAsXHJcbiAgICBzdGFydERhdGU6IDAsIC8vbmV3IERhdGUoKS5nZXRUaW1lKCksXHJcbiAgICBzdGFydFRpbWU6ICcnLFxyXG4gICAgbWluRW5kRGF0ZTogbmV3IERhdGUoKS5nZXRUaW1lKCkgKyAxMDAwICogNjAsXHJcbiAgICBtYXhFbmREYXRlOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSArIDEwMDAgKiA2MCAqIDYwICogMjQgKiAzNjUgKiAxMDAsXHJcbiAgICBlbmREYXRlOiAwLCAvL25ldyBEYXRlKCkuZ2V0VGltZSgpLFxyXG4gICAgZW5kVGltZTogJycsXHJcbiAgICBmb3JtYXR0ZXIodHlwZTpzdHJpbmcsIHZhbHVlOnN0cmluZykge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyh0eXBlLHZhbHVlKVxyXG4gICAgICBpZiAodHlwZSA9PT0gXCJ5ZWFyXCIpIHtcclxuICAgICAgICByZXR1cm4gYCR7dmFsdWV95bm0YDtcclxuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBcIm1vbnRoXCIpIHtcclxuICAgICAgICByZXR1cm4gYCR7dmFsdWV95pyIYDtcclxuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBcImRheVwiKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke3ZhbHVlfeaXpWA7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfSxcclxuICB9LFxyXG5cclxuICBsaWZldGltZXM6IHtcclxuICAgIHJlYWR5KCkge1xyXG4gICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgIG1pblN0YXJ0RGF0ZTogbmV3IERhdGUoKS5nZXRUaW1lKCksXHJcbiAgICAgICAgbWF4U3RhcnREYXRlOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSArIDEwMDAgKiA2MCAqIDYwICogMjQgKiAxODAsXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfSxcclxuICAvKipcclxuICAgKiDnu4Tku7bnmoTmlrnms5XliJfooahcclxuICAgKi9cclxuICBtZXRob2RzOiB7XHJcbiAgICBzaG93U3RhcnREYXRlUG9wdXAoKXtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICBpc1Nob3dTdGFydERhdGVQb3B1cDogdHJ1ZVxyXG4gICAgICB9KVxyXG4gICAgfSxcclxuICAgIG9uU3RhcnREYXRlUG9wdXBDbG9zZSgpe1xyXG4gICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgIGlzU2hvd1N0YXJ0RGF0ZVBvcHVwOiBmYWxzZVxyXG4gICAgICB9KVxyXG4gICAgfSxcclxuICAgIG9uRW50ZXJTdGFydERhdGUoZXZlbnQ6IHsgZGV0YWlsOiBhbnk7IH0pIHtcclxuICAgICAgbGV0IGRldGFpbCA9IGV2ZW50LmRldGFpbDtcclxuICAgICAgY29uc3QgZGF0ZVRpbWU6YW55ID0gdGhpcy5mb3JtYXRUaW1lKGV2ZW50LmRldGFpbCk7XHJcbiAgICAgIGNvbnNvbGUubG9nKGRhdGVUaW1lKTtcclxuICAgICAgLy8gLy8g5bey6YCJ5oup6L+H57uT5p2f5pel5pyf77yM5LiUXHJcbiAgICAgIC8vIGlmIChcclxuICAgICAgLy8gICB0aGlzLmRhdGEuZW5kRGF0ZSAmJlxyXG4gICAgICAvLyAgIE1hdGguYWJzKGRldGFpbCAtIHRoaXMuZGF0YS5lbmREYXRlKSA+IDEwMDAgKiA2MCAqIDYwICogMjRcclxuICAgICAgLy8gKSB7XHJcbiAgICAgIC8vICAgbGV0IGRhdGUgPSBkZXRhaWwgKyAxMDAwICogNjAgKiA2MCAqIDI0O1xyXG4gICAgICAvLyAgIGxldCB0aW1lID0gdGhpcy5mb3JtYXRUaW1lKGRhdGUpO1xyXG4gICAgICAvLyAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIC8vICAgICBlbmREYXRlOiBkYXRlLFxyXG4gICAgICAvLyAgICAgZW5kVGltZTogdGltZSxcclxuICAgICAgLy8gICB9KTtcclxuICAgICAgLy8gfVxyXG4gICAgICAvLyBpZiAoXHJcbiAgICAgIC8vICAgdGhpcy5kYXRhLmVuZERhdGUgJiZcclxuICAgICAgLy8gICBNYXRoLmFicyhkZXRhaWwgLSB0aGlzLmRhdGEuZW5kRGF0ZSkgPCAxMDAwICogNjBcclxuICAgICAgLy8gKSB7XHJcbiAgICAgIC8vICAgbGV0IGRhdGUgPSBkZXRhaWwgKyAxMDAwICogNjAgO1xyXG4gICAgICAvLyAgIGxldCB0aW1lID0gdGhpcy5mb3JtYXRUaW1lKGRhdGUpO1xyXG4gICAgICAvLyAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIC8vICAgICBlbmREYXRlOiBkYXRlLFxyXG4gICAgICAvLyAgICAgZW5kVGltZTogdGltZSxcclxuICAgICAgLy8gICB9KTtcclxuICAgICAgLy8gfVxyXG4gICAgICAvLyBpZiAodGhpcy5kYXRhLmVuZERhdGUgJiYgZS5kZXRhaWwgPiB0aGlzLmRhdGEuZW5kRGF0ZSkge1xyXG4gICAgICAvLyB9XHJcbiAgICAgIGNvbnNvbGUubG9nKFwi6YCJ5oup5byA5pKt5pe26Ze0XCIsIGRhdGVUaW1lLGRldGFpbCk7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgc3RhcnREYXRlOiBkZXRhaWwsXHJcbiAgICAgICAgc3RhcnRUaW1lOiBkYXRlVGltZSxcclxuICAgICAgICBtaW5FbmREYXRlOiBkZXRhaWwgKyAxMDAwICogNjAsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmhhbmRsZVRpbWVRdWFudHVtKCk7XHJcbiAgICAgIHRoaXMub25TdGFydERhdGVQb3B1cENsb3NlKCk7XHJcbiAgICAgIHRoaXMuY2hlY2tUaW1lKFwic3RhcnRUaW1lXCIsIFwi6K+36YCJ5oup6K6h5YiS5byA5aeL5pe26Ze0XCIpO1xyXG4gICAgfSxcclxuICAgIG9uSW5wdXRTdGFydERhdGUoKSB7fSxcclxuICAgIG9uQ2FuY2VsU3RhcnREYXRlKCkge1xyXG4gICAgICB0aGlzLm9uU3RhcnREYXRlUG9wdXBDbG9zZSgpO1xyXG4gICAgICB0aGlzLmNoZWNrVGltZShcInN0YXJ0VGltZVwiLCBcIuivt+mAieaLqeiuoeWIkuW8gOWni+aXtumXtFwiKTtcclxuICAgIH0sXHJcbiAgICBvbkNhbmNlbEVuZERhdGUoKSB7XHJcbiAgICAgIHRoaXMub25FbmREYXRlUG9wdXBDbG9zZSgpO1xyXG4gICAgICB0aGlzLmNoZWNrVGltZShcImVuZFRpbWVcIiwgXCLor7fpgInmi6norqHliJLnu5PmnZ/ml7bpl7RcIik7XHJcbiAgICB9LFxyXG4gICAgb25JbnB1dEVuZERhdGUoKSB7fSxcclxuICAgIHNob3dFbmREYXRlUG9wdXAoKXtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICBpc1Nob3dFbmREYXRlUG9wdXA6IHRydWVcclxuICAgICAgfSlcclxuICAgIH0sXHJcbiAgICBvbkVuZERhdGVQb3B1cENsb3NlKCl7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgaXNTaG93RW5kRGF0ZVBvcHVwOiBmYWxzZVxyXG4gICAgICB9KVxyXG4gICAgfSxcclxuICAgIG9uRW50ZXJFbmREYXRlKGV2ZW50OiB7IGRldGFpbDogYW55OyB9KSB7XHJcbiAgICAgIGNvbnN0IGRhdGU6YW55ID0gdGhpcy5mb3JtYXRUaW1lKGV2ZW50LmRldGFpbCk7XHJcbiAgICAgIGNvbnNvbGUubG9nKGRhdGUpO1xyXG4gICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgIGVuZFRpbWU6IGRhdGUsXHJcbiAgICAgICAgZW5kRGF0ZTogZXZlbnQuZGV0YWlsLFxyXG4gICAgICB9KTtcclxuICAgICAgLy8gdGhpcy50cmlnZ2VyRXZlbnQoJ3NlbGVjdGVkRW5kVGltZScse1xyXG4gICAgICAvLyAgIGVuZFRpbWU6IGRhdGVcclxuICAgICAgLy8gfSk7XHJcbiAgICAgIHRoaXMuaGFuZGxlVGltZVF1YW50dW0oKTtcclxuICAgICAgdGhpcy5vbkVuZERhdGVQb3B1cENsb3NlKCk7XHJcbiAgICAgIHRoaXMuY2hlY2tUaW1lKFwiZW5kVGltZVwiLCBcIuivt+mAieaLqeiuoeWIkue7k+adn+aXtumXtFwiKTtcclxuICAgIH0sXHJcblxyXG4gICAgaGFuZGxlVGltZVF1YW50dW0oKXtcclxuXHJcbiAgICAgIC8vIGxldCBzdGFydERhdGUgPSB0aGlzLmRhdGEuc3RhcnREYXRlO1xyXG4gICAgICBsZXQgc3RhcnRUaW1lID0gdGhpcy5kYXRhLnN0YXJ0VGltZTtcclxuICAgICAgbGV0IGVuZERhdGUgPSB0aGlzLmRhdGEuZW5kRGF0ZTtcclxuICAgICAgbGV0IGVuZFRpbWUgPSB0aGlzLmRhdGEuZW5kVGltZTtcclxuICAgICAgaWYgKGVuZFRpbWUmJiFlbmREYXRlKSB7XHJcbiAgICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICAgIGVuZERhdGU6dGhpcy5mb3JtYXRUaW1lU2Vjb25kKHRoaXMuZGF0YS5lbmRUaW1lKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgZW5kRGF0ZSA9IHRoaXMuZGF0YS5lbmREYXRlO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCfovazmjaLkuoZlbmREYXRlJyx0aGlzLmRhdGEuZW5kRGF0ZSxlbmREYXRlKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXN0YXJ0VGltZSYmZW5kVGltZSkge1xyXG4gICAgICAgIHRoaXMudHJpZ2dlckV2ZW50KCdzZWxlY3RlZFN0YXJ0VGltZScse1xyXG4gICAgICAgICAgZW5kVGltZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIWVuZFRpbWUmJnN0YXJ0VGltZSkge1xyXG4gICAgICAgIHRoaXMudHJpZ2dlckV2ZW50KCdzZWxlY3RlZFN0YXJ0VGltZScse1xyXG4gICAgICAgICAgc3RhcnRUaW1lXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghc3RhcnRUaW1lJiYhZW5kVGltZSkgcmV0dXJuO1xyXG4gICAgICAvLyBpZiAoc3RhcnREYXRlIC0gZW5kRGF0ZSA+IDApIHtcclxuICAgICAgLy8gICBjb25zb2xlLmxvZygn5aSE55CGdGltZScsc3RhcnREYXRlLGVuZERhdGUpO1xyXG4gICAgICAvLyAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIC8vICAgICAvLyBzdGFydERhdGU6IGVuZERhdGUsXHJcbiAgICAgIC8vICAgICAvLyBzdGFydFRpbWU6IGVuZFRpbWUsXHJcbiAgICAgIC8vICAgICAvLyBlbmREYXRlOiBzdGFydERhdGUsXHJcbiAgICAgIC8vICAgICAvLyBlbmRUaW1lOiBzdGFydFRpbWUsXHJcbiAgICAgIC8vICAgICBtaW5FbmREYXRlOiBlbmREYXRlICsgMTAwMCAqIDYwLFxyXG4gICAgICAvLyAgIH0pO1xyXG4gICAgICAvLyAgIC8vIHRoaXMudHJpZ2dlckV2ZW50KCdzZWxlY3RlZFN0YXJ0VGltZScse1xyXG4gICAgICAvLyAgIC8vICAgc3RhcnRUaW1lOiBlbmRUaW1lXHJcbiAgICAgIC8vICAgLy8gfSk7XHJcbiAgICAgIC8vICAgLy8gdGhpcy50cmlnZ2VyRXZlbnQoJ3NlbGVjdGVkRW5kVGltZScse1xyXG4gICAgICAvLyAgIC8vICAgZW5kVGltZTogc3RhcnRUaW1lXHJcbiAgICAgIC8vICAgLy8gfSk7XHJcbiAgICAgIC8vICAgLy8gcmV0dXJuO1xyXG4gICAgICAvLyB9XHJcbiAgICAgIHRoaXMudHJpZ2dlckV2ZW50KCdzZWxlY3RlZFN0YXJ0VGltZScse1xyXG4gICAgICAgIHN0YXJ0VGltZVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy50cmlnZ2VyRXZlbnQoJ3NlbGVjdGVkRW5kVGltZScse1xyXG4gICAgICAgIGVuZFRpbWVcclxuICAgICAgfSk7XHJcbiAgICB9LFxyXG5cclxuICAgIGNoZWNrVGltZSh0aW1lOnRpbWVUeXBlLCBtc2c6c3RyaW5nKSB7XHJcbiAgICAgIGlmICh0aGlzLmRhdGFbdGltZV0gPT0gJycpIHtcclxuICAgICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgICAgW3RpbWUgKyBcIkVycm9yXCJdOiBtc2csXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc29sZS5sb2codGhpcy5kYXRhLnN0YXJ0VGltZSk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBzdGFydERhdGUgPSB0aGlzLmRhdGEuc3RhcnREYXRlO1xyXG4gICAgICBsZXQgZW5kRGF0ZSA9IHRoaXMuZGF0YS5lbmREYXRlO1xyXG4gICAgICBjb25zb2xlLmxvZyh0aGlzLmRhdGEpO1xyXG4gICAgICBpZiAoc3RhcnREYXRlJiZlbmREYXRlJiYoc3RhcnREYXRlIC0gZW5kRGF0ZSA+IDApKSB7XHJcbiAgICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICAgIFtcInN0YXJ0VGltZUVycm9yXCJdOiBcIuW8gOWni+aXtumXtOmcgOWwj+S6jue7k+adn+aXtumXtFwiLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgICAgW1wic3RhcnRUaW1lRXJyb3JcIl06IFwiXCIsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICBbdGltZSArIFwiRXJyb3JcIl06IFwiXCIsXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgLy8gdGhpcy5oYW5kbGVMaXZlVGltZSgpXHJcbiAgICB9LFxyXG4gICAgZm9ybWF0VGltZSh0aW1lOiBhbnkpIHtcclxuICAgICAgLy8gY29uc3QgZGF0ZTphbnkgPSBkYXlqcyh0aW1lKTtcclxuICAgICAgLy8gY29uc29sZS5sb2coKTtcclxuICAgICAgLy8gcmV0dXJuIGAke2RhdGUuJHl9LSR7ZGF0ZS4kTSArIDF9LSR7ZGF0ZS4kRH0gJHtkYXRlLiRIfToke2RhdGUuJG19YDtcclxuICAgICAgcmV0dXJuIGRheWpzKHRpbWUpLmZvcm1hdCgnWVlZWS1NTS1ERCBISDptbScpO1xyXG4gICAgfSxcclxuICAgIGZvcm1hdFRpbWVTZWNvbmQodGltZTogc3RyaW5nKSB7XHJcbiAgICAgIC8vIGNvbnN0IGRhdGU6YW55ID0gZGF5anModGltZSk7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKCk7XHJcbiAgICAgIC8vIHJldHVybiBgJHtkYXRlLiR5fS0ke2RhdGUuJE0gKyAxfS0ke2RhdGUuJER9ICR7ZGF0ZS4kSH06JHtkYXRlLiRtfWA7XHJcbiAgICAgIHJldHVybiBuZXcgRGF0ZSh0aW1lKS5nZXRUaW1lKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59KVxyXG4iXX0=
\ No newline at end of file
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLDZCQUErQjtBQUUvQixTQUFTLENBQUM7SUFJUixPQUFPLEVBQUU7UUFDUCxjQUFjLEVBQUUsSUFBSTtRQUNwQixhQUFhLEVBQUUsSUFBSTtLQUNwQjtJQUNELFVBQVUsRUFBRTtRQUNWLFNBQVMsRUFBQztZQUNSLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLEVBQUU7U0FDVjtRQUNELE9BQU8sRUFBQztZQUNOLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFDLEVBQUU7U0FDVDtLQWlCRjtJQUtELElBQUksRUFBRTtRQUNKLFlBQVksRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRTtRQUNsQyxZQUFZLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRztRQUM5RCxTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUU7UUFDL0IsU0FBUyxFQUFFLEVBQUU7UUFDYixVQUFVLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLEdBQUcsRUFBRTtRQUM1QyxVQUFVLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUc7UUFDbEUsT0FBTyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7UUFDdkQsT0FBTyxFQUFFLEVBQUU7UUFDWCxTQUFTLFlBQUMsSUFBVyxFQUFFLEtBQVk7WUFFakMsSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFO2dC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b0JBQ3BCLENBQUM7WUFDSCxPQUFPLElBQUksQ0FBQztRQUVkLENBQUM7UUFDRCxVQUFVLFlBQUMsSUFBUztZQUlsQixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBQ0QsZ0JBQWdCLFlBQUMsSUFBWTtZQUkzQixPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2xDLENBQUM7S0FDRjtDQUNGLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIlxyXG4vLyBjb25zdCBhcHAgPSBnZXRBcHA8SUFwcE9wdGlvbj4oKTtcclxuaW1wb3J0ICogYXMgZGF5anMgZnJvbSBcImRheWpzXCI7XHJcbnR5cGUgdGltZVR5cGUgPSAnc3RhcnRUaW1lJ3wnZW5kVGltZSc7XHJcbkNvbXBvbmVudCh7XHJcbiAgLyoqXHJcbiAgICog57uE5Lu255qE5bGe5oCn5YiX6KGoXHJcbiAgICovXHJcbiAgb3B0aW9uczoge1xyXG4gICAgYWRkR2xvYmFsQ2xhc3M6IHRydWUsXHJcbiAgICBtdWx0aXBsZVNsb3RzOiB0cnVlIC8vIOWcqOe7hOS7tuWumuS5ieaXtueahOmAiemhueS4reWQr+eUqOWkmnNsb3TmlK/mjIFcclxuICB9LFxyXG4gIHByb3BlcnRpZXM6IHtcclxuICAgIHN0YXJ0VGltZTp7XHJcbiAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgdmFsdWU6ICcnXHJcbiAgICB9LFxyXG4gICAgZW5kVGltZTp7XHJcbiAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgdmFsdWU6JydcclxuICAgIH0sXHJcbiAgICAvLyBtaW5TdGFydERhdGU6e1xyXG4gICAgLy8gICB0eXBlOiBOdW1iZXJ8fFN0cmluZyxcclxuICAgIC8vICAgdmFsdWU6bmV3IERhdGUoKS5nZXRUaW1lKClcclxuICAgIC8vIH0sXHJcbiAgICAvLyBtaW5TdGFydERhdGU6e1xyXG4gICAgLy8gICB0eXBlOiBOdW1iZXJ8fFN0cmluZyxcclxuICAgIC8vICAgdmFsdWU6bmV3IERhdGUoKS5nZXRUaW1lKClcclxuICAgIC8vIH0sXHJcbiAgICAvLyBtaW5TdGFydERhdGU6e1xyXG4gICAgLy8gICB0eXBlOiBOdW1iZXJ8fFN0cmluZyxcclxuICAgIC8vICAgdmFsdWU6bmV3IERhdGUoKS5nZXRUaW1lKClcclxuICAgIC8vIH0sXHJcbiAgICAvLyBtaW5TdGFydERhdGU6e1xyXG4gICAgLy8gICB0eXBlOiBOdW1iZXJ8fFN0cmluZyxcclxuICAgIC8vICAgdmFsdWU6bmV3IERhdGUoKS5nZXRUaW1lKClcclxuICAgIC8vIH0sXHJcbiAgfSxcclxuXHJcbiAgLyoqXHJcbiAgICog57uE5Lu255qE5Yid5aeL5pWw5o2uXHJcbiAgICovXHJcbiAgZGF0YToge1xyXG4gICAgbWluU3RhcnREYXRlOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSxcclxuICAgIG1heFN0YXJ0RGF0ZTogbmV3IERhdGUoKS5nZXRUaW1lKCkgKyAxMDAwICogNjAgKiA2MCAqIDI0ICogMTgwLFxyXG4gICAgc3RhcnREYXRlOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSwgLy9uZXcgRGF0ZSgpLmdldFRpbWUoKSxcclxuICAgIHN0YXJ0VGltZTogJycsXHJcbiAgICBtaW5FbmREYXRlOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSArIDEwMDAgKiA2MCxcclxuICAgIG1heEVuZERhdGU6IG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgMTAwMCAqIDYwICogNjAgKiAyNCAqIDM2NSAqIDEwMCxcclxuICAgIGVuZERhdGU6IG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgMTAwMCAqIDYwICogNjAgKiAyNCAqIDcsIC8vbmV3IERhdGUoKS5nZXRUaW1lKCksXHJcbiAgICBlbmRUaW1lOiAnJyxcclxuICAgIGZvcm1hdHRlcih0eXBlOnN0cmluZywgdmFsdWU6c3RyaW5nKSB7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKHR5cGUsdmFsdWUpXHJcbiAgICAgIGlmICh0eXBlID09PSBcInllYXJcIikge1xyXG4gICAgICAgIHJldHVybiBgJHt2YWx1ZX3lubRgO1xyXG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFwibW9udGhcIikge1xyXG4gICAgICAgIHJldHVybiBgJHt2YWx1ZX3mnIhgO1xyXG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiZGF5XCIpIHtcclxuICAgICAgICByZXR1cm4gYCR7dmFsdWV95pelYDtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9LFxyXG4gIH0sXHJcblxyXG4gIGxpZmV0aW1lczoge1xyXG4gICAgcmVhZHkoKSB7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgc3RhcnRUaW1lOiB0aGlzLmRhdGEuc3RhcnRUaW1lIHx8IHd4LiR1dGlscy5mb3JtYXRUaW1lKG5ldyBEYXRlKCkuZ2V0VGltZSgpKSxcclxuICAgICAgICBlbmRUaW1lOiB0aGlzLmRhdGEuZW5kVGltZSB8fCB3eC4kdXRpbHMuZm9ybWF0VGltZShuZXcgRGF0ZSgpLmdldFRpbWUoKSArIDEwMDAgKiA2MCAqIDYwICogMjQgKiA3KSxcclxuICAgICAgICBtaW5TdGFydERhdGU6IG5ldyBEYXRlKCkuZ2V0VGltZSgpLFxyXG4gICAgICAgIG1heFN0YXJ0RGF0ZTogbmV3IERhdGUoKS5nZXRUaW1lKCkgKyAxMDAwICogNjAgKiA2MCAqIDI0ICogMTgwLFxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH0sXHJcbiAgLyoqXHJcbiAgICog57uE5Lu255qE5pa55rOV5YiX6KGoXHJcbiAgICovXHJcbiAgbWV0aG9kczoge1xyXG4gICAgc2hvd1N0YXJ0RGF0ZVBvcHVwKCl7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgaXNTaG93U3RhcnREYXRlUG9wdXA6IHRydWVcclxuICAgICAgfSlcclxuICAgIH0sXHJcbiAgICBvblN0YXJ0RGF0ZVBvcHVwQ2xvc2UoKXtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICBpc1Nob3dTdGFydERhdGVQb3B1cDogZmFsc2VcclxuICAgICAgfSlcclxuICAgIH0sXHJcbiAgICBvbkVudGVyU3RhcnREYXRlKGV2ZW50OiB7IGRldGFpbDogYW55OyB9KSB7XHJcbiAgICAgIGxldCBkZXRhaWwgPSBldmVudC5kZXRhaWw7XHJcbiAgICAgIGNvbnN0IGRhdGVUaW1lOmFueSA9IHRoaXMuZm9ybWF0VGltZShldmVudC5kZXRhaWwpO1xyXG4gICAgICBjb25zb2xlLmxvZyhkYXRlVGltZSk7XHJcbiAgICAgIC8vIC8vIOW3sumAieaLqei/h+e7k+adn+aXpeacn++8jOS4lFxyXG4gICAgICAvLyBpZiAoXHJcbiAgICAgIC8vICAgdGhpcy5kYXRhLmVuZERhdGUgJiZcclxuICAgICAgLy8gICBNYXRoLmFicyhkZXRhaWwgLSB0aGlzLmRhdGEuZW5kRGF0ZSkgPiAxMDAwICogNjAgKiA2MCAqIDI0XHJcbiAgICAgIC8vICkge1xyXG4gICAgICAvLyAgIGxldCBkYXRlID0gZGV0YWlsICsgMTAwMCAqIDYwICogNjAgKiAyNDtcclxuICAgICAgLy8gICBsZXQgdGltZSA9IHRoaXMuZm9ybWF0VGltZShkYXRlKTtcclxuICAgICAgLy8gICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAvLyAgICAgZW5kRGF0ZTogZGF0ZSxcclxuICAgICAgLy8gICAgIGVuZFRpbWU6IHRpbWUsXHJcbiAgICAgIC8vICAgfSk7XHJcbiAgICAgIC8vIH1cclxuICAgICAgLy8gaWYgKFxyXG4gICAgICAvLyAgIHRoaXMuZGF0YS5lbmREYXRlICYmXHJcbiAgICAgIC8vICAgTWF0aC5hYnMoZGV0YWlsIC0gdGhpcy5kYXRhLmVuZERhdGUpIDwgMTAwMCAqIDYwXHJcbiAgICAgIC8vICkge1xyXG4gICAgICAvLyAgIGxldCBkYXRlID0gZGV0YWlsICsgMTAwMCAqIDYwIDtcclxuICAgICAgLy8gICBsZXQgdGltZSA9IHRoaXMuZm9ybWF0VGltZShkYXRlKTtcclxuICAgICAgLy8gICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAvLyAgICAgZW5kRGF0ZTogZGF0ZSxcclxuICAgICAgLy8gICAgIGVuZFRpbWU6IHRpbWUsXHJcbiAgICAgIC8vICAgfSk7XHJcbiAgICAgIC8vIH1cclxuICAgICAgLy8gaWYgKHRoaXMuZGF0YS5lbmREYXRlICYmIGUuZGV0YWlsID4gdGhpcy5kYXRhLmVuZERhdGUpIHtcclxuICAgICAgLy8gfVxyXG4gICAgICBjb25zb2xlLmxvZyhcIumAieaLqeW8gOaSreaXtumXtFwiLCBkYXRlVGltZSxkZXRhaWwpO1xyXG4gICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgIHN0YXJ0RGF0ZTogZGV0YWlsLFxyXG4gICAgICAgIHN0YXJ0VGltZTogZGF0ZVRpbWUsXHJcbiAgICAgICAgbWluRW5kRGF0ZTogZGV0YWlsICsgMTAwMCAqIDYwLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5oYW5kbGVUaW1lUXVhbnR1bSgpO1xyXG4gICAgICB0aGlzLm9uU3RhcnREYXRlUG9wdXBDbG9zZSgpO1xyXG4gICAgICB0aGlzLmNoZWNrVGltZShcInN0YXJ0VGltZVwiKTtcclxuICAgIH0sXHJcbiAgICBvbklucHV0U3RhcnREYXRlKCkge30sXHJcbiAgICBvbkNhbmNlbFN0YXJ0RGF0ZSgpIHtcclxuICAgICAgdGhpcy5vblN0YXJ0RGF0ZVBvcHVwQ2xvc2UoKTtcclxuICAgICAgdGhpcy5jaGVja1RpbWUoXCJzdGFydFRpbWVcIik7XHJcbiAgICB9LFxyXG4gICAgb25DYW5jZWxFbmREYXRlKCkge1xyXG4gICAgICB0aGlzLm9uRW5kRGF0ZVBvcHVwQ2xvc2UoKTtcclxuICAgICAgdGhpcy5jaGVja1RpbWUoXCJlbmRUaW1lXCIpO1xyXG4gICAgfSxcclxuICAgIG9uSW5wdXRFbmREYXRlKCkge30sXHJcbiAgICBzaG93RW5kRGF0ZVBvcHVwKCl7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgaXNTaG93RW5kRGF0ZVBvcHVwOiB0cnVlXHJcbiAgICAgIH0pXHJcbiAgICB9LFxyXG4gICAgb25FbmREYXRlUG9wdXBDbG9zZSgpe1xyXG4gICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgIGlzU2hvd0VuZERhdGVQb3B1cDogZmFsc2VcclxuICAgICAgfSlcclxuICAgIH0sXHJcbiAgICBvbkVudGVyRW5kRGF0ZShldmVudDogeyBkZXRhaWw6IGFueTsgfSkge1xyXG4gICAgICBjb25zdCBkYXRlOmFueSA9IHRoaXMuZm9ybWF0VGltZShldmVudC5kZXRhaWwpO1xyXG4gICAgICBjb25zb2xlLmxvZyhkYXRlKTtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICBlbmRUaW1lOiBkYXRlLFxyXG4gICAgICAgIGVuZERhdGU6IGV2ZW50LmRldGFpbCxcclxuICAgICAgfSk7XHJcbiAgICAgIC8vIHRoaXMudHJpZ2dlckV2ZW50KCdzZWxlY3RlZEVuZFRpbWUnLHtcclxuICAgICAgLy8gICBlbmRUaW1lOiBkYXRlXHJcbiAgICAgIC8vIH0pO1xyXG4gICAgICB0aGlzLmhhbmRsZVRpbWVRdWFudHVtKCk7XHJcbiAgICAgIHRoaXMub25FbmREYXRlUG9wdXBDbG9zZSgpO1xyXG4gICAgICB0aGlzLmNoZWNrVGltZShcImVuZFRpbWVcIik7XHJcbiAgICB9LFxyXG5cclxuICAgIGhhbmRsZVRpbWVRdWFudHVtKCl7XHJcblxyXG4gICAgICAvLyBsZXQgc3RhcnREYXRlID0gdGhpcy5kYXRhLnN0YXJ0RGF0ZTtcclxuICAgICAgbGV0IHN0YXJ0VGltZSA9IHRoaXMuZGF0YS5zdGFydFRpbWU7XHJcbiAgICAgIGxldCBlbmREYXRlID0gdGhpcy5kYXRhLmVuZERhdGU7XHJcbiAgICAgIGxldCBlbmRUaW1lID0gdGhpcy5kYXRhLmVuZFRpbWU7XHJcbiAgICAgIGlmIChlbmRUaW1lJiYhZW5kRGF0ZSkge1xyXG4gICAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgICBlbmREYXRlOnRoaXMuZm9ybWF0VGltZVNlY29uZCh0aGlzLmRhdGEuZW5kVGltZSlcclxuICAgICAgICB9KVxyXG4gICAgICAgIGVuZERhdGUgPSB0aGlzLmRhdGEuZW5kRGF0ZTtcclxuICAgICAgICBjb25zb2xlLmxvZygn6L2s5o2i5LqGZW5kRGF0ZScsdGhpcy5kYXRhLmVuZERhdGUsZW5kRGF0ZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFzdGFydFRpbWUmJmVuZFRpbWUpIHtcclxuICAgICAgICB0aGlzLnRyaWdnZXJFdmVudCgnc2VsZWN0ZWRTdGFydFRpbWUnLHtcclxuICAgICAgICAgIGVuZFRpbWVcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFlbmRUaW1lJiZzdGFydFRpbWUpIHtcclxuICAgICAgICB0aGlzLnRyaWdnZXJFdmVudCgnc2VsZWN0ZWRTdGFydFRpbWUnLHtcclxuICAgICAgICAgIHN0YXJ0VGltZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXN0YXJ0VGltZSYmIWVuZFRpbWUpIHJldHVybjtcclxuICAgICAgLy8gaWYgKHN0YXJ0RGF0ZSAtIGVuZERhdGUgPiAwKSB7XHJcbiAgICAgIC8vICAgY29uc29sZS5sb2coJ+WkhOeQhnRpbWUnLHN0YXJ0RGF0ZSxlbmREYXRlKTtcclxuICAgICAgLy8gICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAvLyAgICAgLy8gc3RhcnREYXRlOiBlbmREYXRlLFxyXG4gICAgICAvLyAgICAgLy8gc3RhcnRUaW1lOiBlbmRUaW1lLFxyXG4gICAgICAvLyAgICAgLy8gZW5kRGF0ZTogc3RhcnREYXRlLFxyXG4gICAgICAvLyAgICAgLy8gZW5kVGltZTogc3RhcnRUaW1lLFxyXG4gICAgICAvLyAgICAgbWluRW5kRGF0ZTogZW5kRGF0ZSArIDEwMDAgKiA2MCxcclxuICAgICAgLy8gICB9KTtcclxuICAgICAgLy8gICAvLyB0aGlzLnRyaWdnZXJFdmVudCgnc2VsZWN0ZWRTdGFydFRpbWUnLHtcclxuICAgICAgLy8gICAvLyAgIHN0YXJ0VGltZTogZW5kVGltZVxyXG4gICAgICAvLyAgIC8vIH0pO1xyXG4gICAgICAvLyAgIC8vIHRoaXMudHJpZ2dlckV2ZW50KCdzZWxlY3RlZEVuZFRpbWUnLHtcclxuICAgICAgLy8gICAvLyAgIGVuZFRpbWU6IHN0YXJ0VGltZVxyXG4gICAgICAvLyAgIC8vIH0pO1xyXG4gICAgICAvLyAgIC8vIHJldHVybjtcclxuICAgICAgLy8gfVxyXG4gICAgICB0aGlzLnRyaWdnZXJFdmVudCgnc2VsZWN0ZWRTdGFydFRpbWUnLHtcclxuICAgICAgICBzdGFydFRpbWVcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMudHJpZ2dlckV2ZW50KCdzZWxlY3RlZEVuZFRpbWUnLHtcclxuICAgICAgICBlbmRUaW1lXHJcbiAgICAgIH0pO1xyXG4gICAgfSxcclxuICAgIGdldFNlbGVjdGVkVGltZSgpe1xyXG4gICAgICBsZXQgZGF0YTphbnkgPSB0aGlzLmRhdGE7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgc3RhcnRUaW1lOiBkYXRhLnN0YXJ0VGltZSxcclxuICAgICAgICBlbmRUaW1lOiBkYXRhLmVuZFRpbWUsXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBjaGVja1RpbWUodGltZTp0aW1lVHlwZSkge1xyXG4gICAgICAvLyBpZiAodGhpcy5kYXRhW3RpbWVdID09ICcnKSB7XHJcbiAgICAgIC8vICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgLy8gICAgIFt0aW1lICsgXCJFcnJvclwiXTogbXNnLFxyXG4gICAgICAvLyAgIH0pO1xyXG4gICAgICAvLyAgIGNvbnNvbGUubG9nKHRoaXMuZGF0YS5zdGFydFRpbWUpO1xyXG4gICAgICAvLyAgIHJldHVybiBmYWxzZTtcclxuICAgICAgLy8gfVxyXG4gICAgICBsZXQgc3RhcnREYXRlID0gdGhpcy5kYXRhLnN0YXJ0RGF0ZTtcclxuICAgICAgbGV0IGVuZERhdGUgPSB0aGlzLmRhdGEuZW5kRGF0ZTtcclxuICAgICAgY29uc29sZS5sb2codGhpcy5kYXRhKTtcclxuICAgICAgaWYgKHN0YXJ0RGF0ZSYmZW5kRGF0ZSYmKHN0YXJ0RGF0ZSAtIGVuZERhdGUgPiAwKSkge1xyXG4gICAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgICBbXCJzdGFydFRpbWVFcnJvclwiXTogXCLlvIDlp4vml7bpl7TpnIDlsI/kuo7nu5PmnZ/ml7bpl7RcIixcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICAgIFtcInN0YXJ0VGltZUVycm9yXCJdOiBcIlwiLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgW3RpbWUgKyBcIkVycm9yXCJdOiBcIlwiLFxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIC8vIHRoaXMuaGFuZGxlTGl2ZVRpbWUoKVxyXG4gICAgfSxcclxuICAgIGZvcm1hdFRpbWUodGltZTogYW55KSB7XHJcbiAgICAgIC8vIGNvbnN0IGRhdGU6YW55ID0gZGF5anModGltZSk7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKCk7XHJcbiAgICAgIC8vIHJldHVybiBgJHtkYXRlLiR5fS0ke2RhdGUuJE0gKyAxfS0ke2RhdGUuJER9ICR7ZGF0ZS4kSH06JHtkYXRlLiRtfWA7XHJcbiAgICAgIHJldHVybiBkYXlqcyh0aW1lKS5mb3JtYXQoJ1lZWVktTU0tREQgSEg6bW0nKTtcclxuICAgIH0sXHJcbiAgICBmb3JtYXRUaW1lU2Vjb25kKHRpbWU6IHN0cmluZykge1xyXG4gICAgICAvLyBjb25zdCBkYXRlOmFueSA9IGRheWpzKHRpbWUpO1xyXG4gICAgICAvLyBjb25zb2xlLmxvZygpO1xyXG4gICAgICAvLyByZXR1cm4gYCR7ZGF0ZS4keX0tJHtkYXRlLiRNICsgMX0tJHtkYXRlLiREfSAke2RhdGUuJEh9OiR7ZGF0ZS4kbX1gO1xyXG4gICAgICByZXR1cm4gbmV3IERhdGUodGltZSkuZ2V0VGltZSgpO1xyXG4gICAgfVxyXG4gIH1cclxufSlcclxuIl19
\ No newline at end of file
diff --git a/components/time-quantum/index.ts b/components/time-quantum/index.ts
index 8c86620..c5a4b83 100644
--- a/components/time-quantum/index.ts
+++ b/components/time-quantum/index.ts
@@ -13,7 +13,7 @@
   properties: {
     startTime:{
       type: String,
-      value:''
+      value: ''
     },
     endTime:{
       type: String,
@@ -43,11 +43,11 @@
   data: {
     minStartDate: new Date().getTime(),
     maxStartDate: new Date().getTime() + 1000 * 60 * 60 * 24 * 180,
-    startDate: 0, //new Date().getTime(),
+    startDate: new Date().getTime(), //new Date().getTime(),
     startTime: '',
     minEndDate: new Date().getTime() + 1000 * 60,
     maxEndDate: new Date().getTime() + 1000 * 60 * 60 * 24 * 365 * 100,
-    endDate: 0, //new Date().getTime(),
+    endDate: new Date().getTime() + 1000 * 60 * 60 * 24 * 7, //new Date().getTime(),
     endTime: '',
     formatter(type:string, value:string) {
       // console.log(type,value)
@@ -65,6 +65,8 @@
   lifetimes: {
     ready() {
       this.setData({
+        startTime: this.data.startTime || wx.$utils.formatTime(new Date().getTime()),
+        endTime: this.data.endTime || wx.$utils.formatTime(new Date().getTime() + 1000 * 60 * 60 * 24 * 7),
         minStartDate: new Date().getTime(),
         maxStartDate: new Date().getTime() + 1000 * 60 * 60 * 24 * 180,
       })
@@ -121,16 +123,16 @@
       });
       this.handleTimeQuantum();
       this.onStartDatePopupClose();
-      this.checkTime("startTime", "璇烽�夋嫨璁″垝寮�濮嬫椂闂�");
+      this.checkTime("startTime");
     },
     onInputStartDate() {},
     onCancelStartDate() {
       this.onStartDatePopupClose();
-      this.checkTime("startTime", "璇烽�夋嫨璁″垝寮�濮嬫椂闂�");
+      this.checkTime("startTime");
     },
     onCancelEndDate() {
       this.onEndDatePopupClose();
-      this.checkTime("endTime", "璇烽�夋嫨璁″垝缁撴潫鏃堕棿");
+      this.checkTime("endTime");
     },
     onInputEndDate() {},
     showEndDatePopup(){
@@ -155,7 +157,7 @@
       // });
       this.handleTimeQuantum();
       this.onEndDatePopupClose();
-      this.checkTime("endTime", "璇烽�夋嫨璁″垝缁撴潫鏃堕棿");
+      this.checkTime("endTime");
     },
 
     handleTimeQuantum(){
@@ -208,15 +210,21 @@
         endTime
       });
     },
-
-    checkTime(time:timeType, msg:string) {
-      if (this.data[time] == '') {
-        this.setData({
-          [time + "Error"]: msg,
-        });
-        console.log(this.data.startTime);
-        return false;
+    getSelectedTime(){
+      let data:any = this.data;
+      return {
+        startTime: data.startTime,
+        endTime: data.endTime,
       }
+    },
+    checkTime(time:timeType) {
+      // if (this.data[time] == '') {
+      //   this.setData({
+      //     [time + "Error"]: msg,
+      //   });
+      //   console.log(this.data.startTime);
+      //   return false;
+      // }
       let startDate = this.data.startDate;
       let endDate = this.data.endDate;
       console.log(this.data);
diff --git a/components/time-quantum/index.wxml b/components/time-quantum/index.wxml
index 118848c..525cb51 100644
--- a/components/time-quantum/index.wxml
+++ b/components/time-quantum/index.wxml
@@ -1,5 +1,5 @@
 <!--components/time-quantum/index.wxml-->
-<van-cell class="my-cell" title="寮�濮嬫椂闂�" >
+<van-cell class="my-cell required" title="寮�濮嬫椂闂�" >
   <view bindtap="showStartDatePopup">{{startTime||'閫夋嫨璁″垝寮�濮嬫椂闂�'}}<text class="iconfont icon-xiangxiazhankai"></text></view>
   <van-popup
       show="{{isShowStartDatePopup}}"
@@ -22,7 +22,7 @@
     {{startTimeError}}
   </view>
 </van-cell>
-<van-cell class="my-cell" title="缁撴潫鏃堕棿" >
+<van-cell class="my-cell required" title="缁撴潫鏃堕棿" >
   <view wx:if="{{startTime}}" bindtap="showEndDatePopup">{{endTime||'閫夋嫨璁″垝缁撴潫鏃堕棿'}}<text class="iconfont icon-xiangxiazhankai"></text></view>
   <van-popup
       show="{{isShowEndDatePopup}}"
diff --git a/modules/promotionsCreate.js b/modules/promotionsCreate.js
new file mode 100644
index 0000000..6edbbd4
--- /dev/null
+++ b/modules/promotionsCreate.js
@@ -0,0 +1,367 @@
+"use strict";
+var __assign = (this && this.__assign) || function () {
+    __assign = Object.assign || function(t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+            s = arguments[i];
+            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
+                t[p] = s[p];
+        }
+        return t;
+    };
+    return __assign.apply(this, arguments);
+};
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+    return new (P || (P = Promise))(function (resolve, reject) {
+        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
+        step((generator = generator.apply(thisArg, _arguments || [])).next());
+    });
+};
+var __generator = (this && this.__generator) || function (thisArg, body) {
+    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+    return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+    function verb(n) { return function (v) { return step([n, v]); }; }
+    function step(op) {
+        if (f) throw new TypeError("Generator is already executing.");
+        while (_) try {
+            if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+            if (y = 0, t) op = [op[0] & 2, t.value];
+            switch (op[0]) {
+                case 0: case 1: t = op; break;
+                case 4: _.label++; return { value: op[1], done: false };
+                case 5: _.label++; y = op[1]; op = [0]; continue;
+                case 7: op = _.ops.pop(); _.trys.pop(); continue;
+                default:
+                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+                    if (t[2]) _.ops.pop();
+                    _.trys.pop(); continue;
+            }
+            op = body.call(thisArg, _);
+        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+    }
+};
+var _this_1 = this;
+Object.defineProperty(exports, "__esModule", { value: true });
+var getSaveData = function (_this) { return __awaiter(_this_1, void 0, void 0, function () {
+    var formId, doccode, _a, error, result, data, formData;
+    return __generator(this, function (_b) {
+        switch (_b.label) {
+            case 0:
+                formId = _this.data.formId;
+                doccode = _this.data.doccode;
+                return [4, wx.$utils.to(wx.$http.request({
+                        url: "/shopping/panicBuying.do?m=getPanicBuyingDetail",
+                        data: {
+                            doccode: doccode,
+                            isEdit: true,
+                            SellerOpenId: wx.globalData.OpenId
+                        }
+                    }))];
+            case 1:
+                _a = _b.sent(), error = _a[0], result = _a[1];
+                if (error) {
+                    console.log(error);
+                    return [2];
+                }
+                console.log(result);
+                data = result.list[0];
+                formData = {
+                    promotionsTitle: data.title,
+                    promotionDescription: data.description,
+                    startTime: data.effectiveStartDate,
+                    endTime: data.effectiveEndDate,
+                    coverImageList: (data.coverImageUrl && _this.getCoverImageList(data)) || [],
+                    imagesList: data.imagesUrl,
+                    coverImage: data.coverImage,
+                    images: data.images,
+                    freeId: data.freeId,
+                };
+                if (formId == 710802) {
+                    formData.originalPrice = data.originalPrice;
+                    formData.flashSalePrice = data.salesPrice;
+                    formData.flashSaleTotal = data.quantity;
+                    formData.flashSaleLimit = data.restrictBuyingQuantity;
+                }
+                if (formId == 710803) {
+                    formData.originalPrice = data.salesPrice;
+                }
+                if (formId == 710804) {
+                    formData.originalPrice = data.originalPrice;
+                    formData.flashSalePrice = data.salesPrice;
+                    formData.flashSaleTotal = data.numberOfTeam;
+                }
+                _this.setData(__assign({}, formData, { coverImageUrl: data.coverImageUrl, sellerList: result.sellerList, storeList: result.storeList, status: data.panicBuyingStatus, delivery: {
+                        freeId: data.freeId,
+                        freeName: data.freeName,
+                        isRequiredAddress: data.isRequiredAddress,
+                        transCosts: data.transCosts,
+                    } }));
+                console.log('閰嶉�佹暟鎹�傘�傘��', _this.data.delivery);
+                wx.setNavigationBarTitle({
+                    title: data.title
+                });
+                return [2];
+        }
+    });
+}); };
+exports.getSaveData = getSaveData;
+var postFormData = function (_this, data) { return __awaiter(_this_1, void 0, void 0, function () {
+    var _a, error, res;
+    return __generator(this, function (_b) {
+        switch (_b.label) {
+            case 0: return [4, wx.$utils.to(wx.$http.request({
+                    url: '/shopping/panicBuying.do?m=saveDocCode',
+                    data: data,
+                    method: 'POST'
+                }))];
+            case 1:
+                _a = _b.sent(), error = _a[0], res = _a[1];
+                if (error) {
+                    console.log(error);
+                    return [2, false];
+                }
+                console.log(res);
+                if (res.state === 'success') {
+                    wx.showToast({
+                        title: '鎴愬姛',
+                        duration: 2000
+                    });
+                    _this.setData({
+                        doccode: res.DocCode
+                    });
+                }
+                if (res.state === 'failed' && res.sellerCheckedBalance > 0) {
+                    _this.setData({
+                        sellerUnCheckedNames: res.sellerUnCheckedNames,
+                        isShowDialog: true
+                    });
+                }
+                return [2, res.state === 'success'];
+        }
+    });
+}); };
+var promotionsSubmitHandler = function (_this, validatorInstance) { return __awaiter(_this_1, void 0, void 0, function () {
+    var formData, type, timeQuantum, sellerEdit, storeEdit, fileUploader, fileUploaderMultiple, checkTransCosts, transCosts, deliveryMethod, checkStartTime, checkEndTime, checkCoverImage, checkAllData, sellerList, storeList, checkDefaultSeller, checkArr, data, coverImage, coverImageUrl, images, selectedTime, rules, _i, rules_1, rule, errorMsg;
+    return __generator(this, function (_a) {
+        switch (_a.label) {
+            case 0:
+                formData = _this.data;
+                type = {
+                    710802: 1,
+                    710803: 2,
+                    710804: 3,
+                };
+                timeQuantum = _this.selectComponent('#time-quantum');
+                sellerEdit = _this.selectComponent('#seller-edit');
+                storeEdit = _this.selectComponent('#store-edit');
+                fileUploader = _this.selectComponent('#file-uploader');
+                fileUploaderMultiple = _this.selectComponent('#file-uploader-multiple');
+                checkTransCosts = true;
+                transCosts = 0;
+                if (formData.formId == 710802 || formData.formId == 710804) {
+                    deliveryMethod = _this.selectComponent('#delivery-method');
+                    if (deliveryMethod.data.isRequiredAddress) {
+                        checkTransCosts = deliveryMethod.checkFields();
+                        transCosts = Number(deliveryMethod.data.transCosts);
+                    }
+                }
+                console.log(timeQuantum);
+                checkStartTime = timeQuantum.checkTime("startTime");
+                checkEndTime = timeQuantum.checkTime("endTime");
+                checkCoverImage = fileUploader.checkImages("coverImage", "璇蜂笂浼犱竴寮犲皝闈㈠浘");
+                checkAllData = validatorInstance.checkAllData();
+                sellerList = sellerEdit.getSellerList();
+                if (sellerList.length < 1) {
+                    wx.showToast({
+                        title: '璇烽�夋嫨钀ラ攢浜哄憳',
+                        icon: 'none',
+                        duration: 2000
+                    });
+                    return [2];
+                }
+                storeList = storeEdit.getSelectedStoreIdList();
+                console.log('寰呮彁浜ょ殑闂ㄥ簵id', storeList);
+                checkDefaultSeller = sellerEdit.checkDefaultSeller();
+                if (!checkDefaultSeller) {
+                    wx.showToast({
+                        title: '璇烽�夋嫨榛樿钀ラ攢浜哄憳',
+                        icon: 'none',
+                        duration: 2000
+                    });
+                    return [2];
+                }
+                console.log('checkDefaultSeller', checkDefaultSeller);
+                checkArr = [checkTransCosts, checkStartTime, checkEndTime, checkCoverImage, checkAllData];
+                data = {};
+                if (!checkArr.every(function (item) {
+                    return item;
+                })) return [3, 2];
+                console.log('....鎻愪氦鎴愬姛');
+                coverImage = fileUploader.getCoverImageUnid();
+                coverImageUrl = fileUploader.getImgList()[0].url || '';
+                _this.setData({
+                    coverImageUrl: coverImageUrl
+                });
+                images = fileUploaderMultiple.getImagesUnid();
+                console.log(coverImage, images, coverImageUrl);
+                selectedTime = timeQuantum.getSelectedTime();
+                data = {
+                    docCode: formData.doccode,
+                    formId: formData.formId,
+                    docStatus: 100,
+                    coverImage: coverImage,
+                    images: images,
+                    effectiveStartDate: formData.startTime || selectedTime.startTime,
+                    effectiveEndDate: formData.endTime || selectedTime.endTime,
+                    freeId: formData.freeId,
+                    title: formData.promotionsTitle,
+                    description: formData.promotionDescription || '',
+                    storeList: storeList,
+                    sellerList: sellerList,
+                };
+                if (formData.formId == 710802) {
+                    data.transCosts = transCosts;
+                    data.originalPrice = Number(formData.originalPrice);
+                    data.quantity = Number(formData.flashSaleTotal);
+                    data.salesPrice = Number(formData.flashSalePrice);
+                    data.restrictBuyingQuantity = Number(formData.flashSaleLimit);
+                }
+                if (formData.formId == 710803) {
+                    data.salesPrice = Number(formData.originalPrice);
+                }
+                if (formData.formId == 710804) {
+                    data.transCosts = transCosts;
+                    data.originalPrice = Number(formData.originalPrice);
+                    data.salesPrice = Number(formData.flashSalePrice);
+                    data.numberOfTeam = Number(formData.flashSaleTotal);
+                }
+                console.log('寰呭彂甯冩暟鎹�', data);
+                return [4, postFormData(_this, data)];
+            case 1:
+                if (!(_a.sent()))
+                    return [2];
+                if (_this.data.fromPage == 'edit') {
+                    wx.navigateBack();
+                }
+                else {
+                    wx.redirectTo({
+                        url: "../promotionsManageList/promotionsManageList?tab=" + type[formData.formId]
+                    });
+                }
+                return [3, 3];
+            case 2:
+                console.log('杩樻湁閿欒鏈鐞�');
+                if (!checkCoverImage) {
+                    wx.$utils.scrollToError('#file-uploader', '璇蜂笂浼犱竴寮犲皝闈㈠浘');
+                    return [2];
+                }
+                if (!checkAllData) {
+                    rules = validatorInstance.getRulers();
+                    for (_i = 0, rules_1 = rules; _i < rules_1.length; _i++) {
+                        rule = rules_1[_i];
+                        errorMsg = _this.data[rule + "Error"];
+                        if (errorMsg) {
+                            wx.$utils.scrollToError("#" + rule, errorMsg);
+                            break;
+                        }
+                    }
+                    return [2];
+                }
+                if (!checkStartTime) {
+                    wx.$utils.scrollToError('#time-quantum', '寮�濮嬫椂闂撮渶灏忎簬缁撴潫鏃堕棿');
+                }
+                _a.label = 3;
+            case 3: return [2];
+        }
+    });
+}); };
+exports.promotionsSubmitHandler = promotionsSubmitHandler;
+var promotionsSaveHandler = function (_this) { return __awaiter(_this_1, void 0, void 0, function () {
+    var formData, timeQuantum, sellerEdit, sellerList, storeEdit, storeList, fileUploader, fileUploaderMultiple, coverImage, images, transCosts, deliveryMethod, selectedTime, data;
+    return __generator(this, function (_a) {
+        switch (_a.label) {
+            case 0:
+                formData = _this.data;
+                timeQuantum = _this.selectComponent('#time-quantum');
+                sellerEdit = _this.selectComponent('#seller-edit');
+                sellerList = sellerEdit.getSellerList();
+                storeEdit = _this.selectComponent('#store-edit');
+                storeList = storeEdit.getSelectedStoreIdList();
+                console.log('寰呮彁浜ょ殑闂ㄥ簵id', storeList);
+                fileUploader = _this.selectComponent('#file-uploader');
+                fileUploaderMultiple = _this.selectComponent('#file-uploader-multiple');
+                console.log('....鎻愪氦鎴愬姛');
+                coverImage = fileUploader.getCoverImageUnid();
+                images = fileUploaderMultiple.getImagesUnid();
+                transCosts = 0;
+                if (formData.formId == 710802 || formData.formId == 710804) {
+                    deliveryMethod = _this.selectComponent('#delivery-method');
+                    if (deliveryMethod.data.isRequiredAddress) {
+                        transCosts = Number(deliveryMethod.data.transCosts);
+                    }
+                }
+                console.log(coverImage, images);
+                selectedTime = timeQuantum.getSelectedTime();
+                data = {
+                    docCode: formData.doccode,
+                    formId: formData.formId,
+                    docStatus: 0,
+                    coverImage: coverImage,
+                    images: images,
+                    effectiveStartDate: formData.startTime || selectedTime.startTime,
+                    effectiveEndDate: formData.endTime || selectedTime.endTime,
+                    freeId: formData.freeId,
+                    title: formData.promotionsTitle,
+                    description: formData.promotionDescription,
+                    storeList: storeList,
+                    sellerList: sellerList,
+                };
+                if (formData.formId == 710802) {
+                    data.transCosts = transCosts;
+                    data.originalPrice = Number(formData.originalPrice) || 0;
+                    data.quantity = Number(formData.flashSaleTotal) || 0;
+                    data.salesPrice = Number(formData.flashSalePrice) || 0;
+                    data.restrictBuyingQuantity = Number(formData.flashSaleLimit) || 0;
+                }
+                if (formData.formId == 710803) {
+                    data.salesPrice = Number(formData.originalPrice) || 0;
+                }
+                if (formData.formId == 710804) {
+                    data.transCosts = transCosts;
+                    data.originalPrice = Number(formData.originalPrice) || 0;
+                    data.salesPrice = Number(formData.flashSalePrice) || 0;
+                    data.numberOfTeam = Number(formData.flashSaleTotal) || 0;
+                }
+                console.log('寰呬繚瀛樻暟鎹�', data);
+                return [4, postFormData(_this, data)];
+            case 1:
+                if (!(_a.sent()))
+                    return [2];
+                wx.showModal({
+                    title: '鎻愮ず',
+                    content: '淇濆瓨鎴愬姛',
+                    confirmText: '鍓嶅線棰勮',
+                    cancelText: '鐣欏湪姝ゅ',
+                    success: function (res) {
+                        if (res.confirm) {
+                            console.log('鐢ㄦ埛鐐瑰嚮纭畾');
+                            wx.redirectTo({
+                                url: "/pages/detail/detail?from=promotionsDraft&doccode=" + _this.data.doccode
+                            });
+                        }
+                        else if (res.cancel) {
+                            console.log('鐢ㄦ埛鐐瑰嚮鍙栨秷');
+                        }
+                    }
+                });
+                return [2];
+        }
+    });
+}); };
+exports.promotionsSaveHandler = promotionsSaveHandler;
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbW90aW9uc0NyZWF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInByb21vdGlvbnNDcmVhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxtQkFxVUE7O0FBclVBLElBQU0sV0FBVyxHQUFHLFVBQU8sS0FBUzs7Ozs7Z0JBQzlCLE1BQU0sR0FBUSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztnQkFDaEMsT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUNYLFdBQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQ3RDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO3dCQUNmLEdBQUcsRUFBQyxpREFBaUQ7d0JBQ3JELElBQUksRUFBQzs0QkFDSCxPQUFPLFNBQUE7NEJBQ1AsTUFBTSxFQUFDLElBQUk7NEJBQ1gsWUFBWSxFQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTTt5QkFDbEM7cUJBQ0YsQ0FBQyxDQUNILEVBQUE7O2dCQVRHLEtBQWtCLFNBU3JCLEVBVEksS0FBSyxRQUFBLEVBQUUsTUFBTSxRQUFBO2dCQVVsQixJQUFJLEtBQUssRUFBQztvQkFDUixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNuQixXQUFPO2lCQUNSO2dCQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2hCLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0QixRQUFRLEdBQU87b0JBQ2pCLGVBQWUsRUFBRSxJQUFJLENBQUMsS0FBSztvQkFDM0Isb0JBQW9CLEVBQUUsSUFBSSxDQUFDLFdBQVc7b0JBQ3RDLFNBQVMsRUFBRSxJQUFJLENBQUMsa0JBQWtCO29CQUNsQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtvQkFD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PSBhc3luYyAoX3RoaXM6YW55KSA9PntcclxuICBsZXQgZm9ybUlkOiBhbnkgPSBfdGhpcy5kYXRhLmZvcm1JZDtcclxuICBsZXQgZG9jY29kZSA9IF90aGlzLmRhdGEuZG9jY29kZTtcclxuICBsZXQgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgd3guJHV0aWxzLnRvKFxyXG4gICAgd3guJGh0dHAucmVxdWVzdCh7XHJcbiAgICAgIHVybDpgL3Nob3BwaW5nL3BhbmljQnV5aW5nLmRvP209Z2V0UGFuaWNCdXlpbmdEZXRhaWxgLFxyXG4gICAgICBkYXRhOntcclxuICAgICAgICBkb2Njb2RlLFxyXG4gICAgICAgIGlzRWRpdDp0cnVlLFxyXG4gICAgICAgIFNlbGxlck9wZW5JZDp3eC5nbG9iYWxEYXRhLk9wZW5JZFxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIClcclxuICBpZiAoZXJyb3Ipe1xyXG4gICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG4gIGxldCBkYXRhID0gcmVzdWx0Lmxpc3RbMF07XHJcbiAgbGV0IGZvcm1EYXRhOmFueSA9IHtcclxuICAgIHByb21vdGlvbnNUaXRsZTogZGF0YS50aXRsZSxcclxuICAgIHByb21vdGlvbkRlc2NyaXB0aW9uOiBkYXRhLmRlc2NyaXB0aW9uLFxyXG4gICAgc3RhcnRUaW1lOiBkYXRhLmVmZmVjdGl2ZVN0YXJ0RGF0ZSxcclxuICAgIGVuZFRpbWU6IGRhdGEuZWZmZWN0aXZlRW5kRGF0ZSxcclxuICAgIGNvdmVySW1hZ2VMaXN0OiAoZGF0YS5jb3ZlckltYWdlVXJsJiZfdGhpcy5nZXRDb3ZlckltYWdlTGlzdChkYXRhKSl8fFtdLFxyXG4gICAgLy8gaW1hZ2VzTGlzdDogKGRhdGEuaW1hZ2VzVXJsLmxlbmd0aD4wJiZfdGhpcy5nZXRJbWFnZXNMaXN0KGRhdGEpKXx8W10sXHJcbiAgICBpbWFnZXNMaXN0OiBkYXRhLmltYWdlc1VybCxcclxuICAgIGNvdmVySW1hZ2U6IGRhdGEuY292ZXJJbWFnZSxcclxuICAgIGltYWdlczogZGF0YS5pbWFnZXMsXHJcbiAgICBmcmVlSWQ6ZGF0YS5mcmVlSWQsXHJcbiAgfTtcclxuICBpZiAoZm9ybUlkPT03MTA4MDIpe1xyXG4gICAgZm9ybURhdGEub3JpZ2luYWxQcmljZT1kYXRhLm9yaWdpbmFsUHJpY2U7XHJcbiAgICBmb3JtRGF0YS5mbGFzaFNhbGVQcmljZT0gZGF0YS5zYWxlc1ByaWNlO1xyXG4gICAgZm9ybURhdGEuZmxhc2hTYWxlVG90YWw9IGRhdGEucXVhbnRpdHk7XHJcbiAgICBmb3JtRGF0YS5mbGFzaFNhbGVMaW1pdD0gZGF0YS5yZXN0cmljdEJ1eWluZ1F1YW50aXR5O1xyXG4gIH1cclxuICBpZiAoZm9ybUlkPT03MTA4MDMpe1xyXG4gICAgZm9ybURhdGEub3JpZ2luYWxQcmljZT1kYXRhLnNhbGVzUHJpY2U7XHJcbiAgfVxyXG4gIGlmIChmb3JtSWQ9PTcxMDgwNCl7XHJcbiAgICBmb3JtRGF0YS5vcmlnaW5hbFByaWNlPWRhdGEub3JpZ2luYWxQcmljZTtcclxuICAgIGZvcm1EYXRhLmZsYXNoU2FsZVByaWNlPSBkYXRhLnNhbGVzUHJpY2U7XHJcbiAgICBmb3JtRGF0YS5mbGFzaFNhbGVUb3RhbD0gZGF0YS5udW1iZXJPZlRlYW07XHJcbiAgfVxyXG4gIF90aGlzLnNldERhdGEoe1xyXG4gICAgLi4uZm9ybURhdGEsXHJcbiAgICBjb3ZlckltYWdlVXJsOmRhdGEuY292ZXJJbWFnZVVybCxcclxuICAgIC8vIFtgZWZmZWN0aXZlU3RhcnREYXRlYF06IGRhdGEuZWZmZWN0aXZlU3RhcnREYXRlLFxyXG4gICAgLy8gW2BlZmZlY3RpdmVFbmREYXRlYF06IGRhdGEuZWZmZWN0aXZlRW5kRGF0ZSxcclxuICAgIC8vIFtgZnJlZUlkYF06IGRhdGEuZnJlZUlkLFxyXG4gICAgLy8gW2B0aXRsZWBdOiBkYXRhLnRpdGxlLFxyXG4gICAgLy8gW2BvcmlnaW5hbFByaWNlYF06IGRhdGEub3JpZ2luYWxQcmljZSxcclxuICAgIC8vIFtgc2FsZXNQcmljZWBdOiBkYXRhLnNhbGVzUHJpY2UsXHJcbiAgICAvLyBbYHF1YW50aXR5YF06IGRhdGEucXVhbnRpdHksXHJcbiAgICAvLyBbYHJlc3RyaWN0QnV5aW5nUXVhbnRpdHlgXTogZGF0YS5yZXN0cmljdEJ1eWluZ1F1YW50aXR5LFxyXG4gICAgLy8gW2BkZXNjcmlwdGlvbmBdOiBkYXRhLmRlc2NyaXB0aW9uLFxyXG4gICAgc2VsbGVyTGlzdDpyZXN1bHQuc2VsbGVyTGlzdCxcclxuICAgIHN0b3JlTGlzdDpyZXN1bHQuc3RvcmVMaXN0LFxyXG4gICAgc3RhdHVzOmRhdGEucGFuaWNCdXlpbmdTdGF0dXMsXHJcbiAgICBkZWxpdmVyeTp7XHJcbiAgICAgIGZyZWVJZDpkYXRhLmZyZWVJZCxcclxuICAgICAgZnJlZU5hbWU6ZGF0YS5mcmVlTmFtZSxcclxuICAgICAgaXNSZXF1aXJlZEFkZHJlc3M6ZGF0YS5pc1JlcXVpcmVkQWRkcmVzcyxcclxuICAgICAgdHJhbnNDb3N0czpkYXRhLnRyYW5zQ29zdHMsXHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgY29uc29sZS5sb2coJ+mFjemAgeaVsOaNruOAguOAguOAgicsX3RoaXMuZGF0YS5kZWxpdmVyeSk7XHJcbiAgd3guc2V0TmF2aWdhdGlvbkJhclRpdGxlKHtcclxuICAgIHRpdGxlOiBkYXRhLnRpdGxlXHJcbiAgfSlcclxufVxyXG5cclxuY29uc3QgcG9zdEZvcm1EYXRhID0gYXN5bmMgKF90aGlzOmFueSxkYXRhOm9iamVjdCkgPT57XHJcbiAgbGV0IFtlcnJvciwgcmVzXSA9IGF3YWl0IHd4LiR1dGlscy50byhcclxuICAgIHd4LiRodHRwLnJlcXVlc3Qoe1xyXG4gICAgICB1cmw6Jy9zaG9wcGluZy9wYW5pY0J1eWluZy5kbz9tPXNhdmVEb2NDb2RlJyxcclxuICAgICAgZGF0YSxcclxuICAgICAgbWV0aG9kOidQT1NUJ1xyXG4gICAgfSlcclxuICApXHJcbiAgaWYgKGVycm9yKSB7XHJcbiAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIGNvbnNvbGUubG9nKHJlcyk7XHJcbiAgaWYgKHJlcy5zdGF0ZSA9PT0gJ3N1Y2Nlc3MnKSB7XHJcbiAgICB3eC5zaG93VG9hc3Qoe1xyXG4gICAgICB0aXRsZTogJ+aIkOWKnycsXHJcbiAgICAgIGR1cmF0aW9uOiAyMDAwXHJcbiAgICB9KVxyXG4gICAgX3RoaXMuc2V0RGF0YSh7XHJcbiAgICAgIGRvY2NvZGU6cmVzLkRvY0NvZGVcclxuICAgIH0pXHJcbiAgICAvLyBjb25zb2xlLmxvZygn5rS75Yqo5Y2V5Y+3JyxfdGhpcy5kYXRhLmZvcm1EYXRhKTtcclxuICB9XHJcbiAgaWYgKHJlcy5zdGF0ZSA9PT0gJ2ZhaWxlZCcmJnJlcy5zZWxsZXJDaGVja2VkQmFsYW5jZT4wKSB7XHJcbiAgICBfdGhpcy5zZXREYXRhKHtcclxuICAgICAgc2VsbGVyVW5DaGVja2VkTmFtZXM6IHJlcy5zZWxsZXJVbkNoZWNrZWROYW1lcyxcclxuICAgICAgaXNTaG93RGlhbG9nOiB0cnVlXHJcbiAgICB9KVxyXG4gIH1cclxuICByZXR1cm4gcmVzLnN0YXRlID09PSAnc3VjY2Vzcyc7XHJcbn1cclxuY29uc3QgcHJvbW90aW9uc1N1Ym1pdEhhbmRsZXIgPSBhc3luYyAoX3RoaXM6YW55LHZhbGlkYXRvckluc3RhbmNlOmFueSkgPT57XHJcbiAgLy8gbGV0IHtfdGhpcyx2YWxpZGF0b3JJbnN0YW5jZX0gPSBvYmo7XHJcbiAgbGV0IGZvcm1EYXRhOiBhbnkgPSBfdGhpcy5kYXRhO1xyXG4gIGxldCB0eXBlID0ge1xyXG4gICAgNzEwODAyOiAxLCAvL+enkuadgFxyXG4gICAgNzEwODAzOiAyLCAvL+aKpeWQjVxyXG4gICAgNzEwODA0OiAzLCAvL+Wboui0rVxyXG4gIH1cclxuICBsZXQgdGltZVF1YW50dW0gPSBfdGhpcy5zZWxlY3RDb21wb25lbnQoJyN0aW1lLXF1YW50dW0nKTtcclxuICBsZXQgc2VsbGVyRWRpdCA9IF90aGlzLnNlbGVjdENvbXBvbmVudCgnI3NlbGxlci1lZGl0Jyk7XHJcbiAgbGV0IHN0b3JlRWRpdCA9IF90aGlzLnNlbGVjdENvbXBvbmVudCgnI3N0b3JlLWVkaXQnKTtcclxuICBsZXQgZmlsZVVwbG9hZGVyID0gX3RoaXMuc2VsZWN0Q29tcG9uZW50KCcjZmlsZS11cGxvYWRlcicpO1xyXG4gIGxldCBmaWxlVXBsb2FkZXJNdWx0aXBsZSA9IF90aGlzLnNlbGVjdENvbXBvbmVudCgnI2ZpbGUtdXBsb2FkZXItbXVsdGlwbGUnKTtcclxuXHJcbiAgbGV0IGNoZWNrVHJhbnNDb3N0cyA9IHRydWU7XHJcbiAgbGV0IHRyYW5zQ29zdHMgPSAwO1xyXG4gIGlmIChmb3JtRGF0YS5mb3JtSWQ9PTcxMDgwMnx8Zm9ybURhdGEuZm9ybUlkPT03MTA4MDQpe1xyXG4gICAgbGV0IGRlbGl2ZXJ5TWV0aG9kID0gX3RoaXMuc2VsZWN0Q29tcG9uZW50KCcjZGVsaXZlcnktbWV0aG9kJyk7XHJcbiAgICBpZiAoZGVsaXZlcnlNZXRob2QuZGF0YS5pc1JlcXVpcmVkQWRkcmVzcyl7XHJcbiAgICAgIGNoZWNrVHJhbnNDb3N0cyA9IGRlbGl2ZXJ5TWV0aG9kLmNoZWNrRmllbGRzKCk7XHJcbiAgICAgIHRyYW5zQ29zdHMgPSBOdW1iZXIoZGVsaXZlcnlNZXRob2QuZGF0YS50cmFuc0Nvc3RzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnNvbGUubG9nKHRpbWVRdWFudHVtKTtcclxuXHJcbiAgbGV0IGNoZWNrU3RhcnRUaW1lID0gdGltZVF1YW50dW0uY2hlY2tUaW1lKFwic3RhcnRUaW1lXCIpO1xyXG4gIGxldCBjaGVja0VuZFRpbWUgPSB0aW1lUXVhbnR1bS5jaGVja1RpbWUoXCJlbmRUaW1lXCIpO1xyXG4gIGxldCBjaGVja0NvdmVySW1hZ2UgPSBmaWxlVXBsb2FkZXIuY2hlY2tJbWFnZXMoXCJjb3ZlckltYWdlXCIsIFwi6K+35LiK5Lyg5LiA5byg5bCB6Z2i5Zu+XCIpO1xyXG4gIC8vIGxldCBjaGVja0ltYWdlcyA9IGZpbGVVcGxvYWRlck11bHRpcGxlLmNoZWNrSW1hZ2VzKFwiaW1hZ2VzXCIsIFwi6K+36Iez5bCR5LiK5Lyg5LiA5byg5Zu+54mHXCIpO1xyXG4gIGxldCBjaGVja0FsbERhdGEgPSB2YWxpZGF0b3JJbnN0YW5jZS5jaGVja0FsbERhdGEoKTtcclxuICAvLyBpZiAoX3RoaXMuZGF0YS5nb29kc0ltZ0xpc3QubGVuZ3RoIDwgMSkge1xyXG4gIC8vICAgY29uc29sZS5sb2coJ+ivt+S4iuS8oOS6p+WTgeWbvueJhycpO1xyXG4gIC8vIH1cclxuICBsZXQgc2VsbGVyTGlzdCA9IHNlbGxlckVkaXQuZ2V0U2VsbGVyTGlzdCgpO1xyXG4gIGlmIChzZWxsZXJMaXN0Lmxlbmd0aDwxKSB7XHJcbiAgICB3eC5zaG93VG9hc3Qoe1xyXG4gICAgICB0aXRsZTogJ+ivt+mAieaLqeiQpemUgOS6uuWRmCcsXHJcbiAgICAgIGljb246ICdub25lJyxcclxuICAgICAgZHVyYXRpb246IDIwMDBcclxuICAgIH0pXHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgbGV0IHN0b3JlTGlzdCA9IHN0b3JlRWRpdC5nZXRTZWxlY3RlZFN0b3JlSWRMaXN0KCk7XHJcbiAgY29uc29sZS5sb2coJ+W+heaPkOS6pOeahOmXqOW6l2lkJyxzdG9yZUxpc3QpO1xyXG4gIGxldCBjaGVja0RlZmF1bHRTZWxsZXIgPSBzZWxsZXJFZGl0LmNoZWNrRGVmYXVsdFNlbGxlcigpO1xyXG4gIGlmICghY2hlY2tEZWZhdWx0U2VsbGVyKSB7XHJcbiAgICB3eC5zaG93VG9hc3Qoe1xyXG4gICAgICB0aXRsZTogJ+ivt+mAieaLqem7mOiupOiQpemUgOS6uuWRmCcsXHJcbiAgICAgIGljb246ICdub25lJyxcclxuICAgICAgZHVyYXRpb246IDIwMDBcclxuICAgIH0pXHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgY29uc29sZS5sb2coJ2NoZWNrRGVmYXVsdFNlbGxlcicsY2hlY2tEZWZhdWx0U2VsbGVyKTtcclxuICBsZXQgY2hlY2tBcnIgPSBbY2hlY2tUcmFuc0Nvc3RzLGNoZWNrU3RhcnRUaW1lLGNoZWNrRW5kVGltZSxjaGVja0NvdmVySW1hZ2UsY2hlY2tBbGxEYXRhXTtcclxuICBsZXQgZGF0YSA9IHt9IGFzIGFueTtcclxuICBpZiAoY2hlY2tBcnIuZXZlcnkoKGl0ZW0pPT57XHJcbiAgICByZXR1cm4gaXRlbVxyXG4gIH0pKXtcclxuICAgIGNvbnNvbGUubG9nKCcuLi4u5o+Q5Lqk5oiQ5YqfJyk7XHJcbiAgICBsZXQgY292ZXJJbWFnZSA9IGZpbGVVcGxvYWRlci5nZXRDb3ZlckltYWdlVW5pZCgpO1xyXG4gICAgbGV0IGNvdmVySW1hZ2VVcmwgPSBmaWxlVXBsb2FkZXIuZ2V0SW1nTGlzdCgpWzBdLnVybHx8Jyc7XHJcbiAgICBfdGhpcy5zZXREYXRhKHtcclxuICAgICAgY292ZXJJbWFnZVVybFxyXG4gICAgfSlcclxuICAgIGxldCBpbWFnZXMgPSBmaWxlVXBsb2FkZXJNdWx0aXBsZS5nZXRJbWFnZXNVbmlkKCk7XHJcbiAgICBjb25zb2xlLmxvZyhjb3ZlckltYWdlLGltYWdlcyxjb3ZlckltYWdlVXJsKTtcclxuICAgIGxldCBzZWxlY3RlZFRpbWUgPSB0aW1lUXVhbnR1bS5nZXRTZWxlY3RlZFRpbWUoKTtcclxuICAgIGRhdGEgPSB7XHJcbiAgICAgIGRvY0NvZGU6IGZvcm1EYXRhLmRvY2NvZGUsIC8v5rS75Yqo5Y2V5Y+377yM5paw5bu65rS75Yqo5pe25Li656m65YC877yM57yW6L6R5pe26ZyA6KaBZG9jY29kZeWAvFxyXG4gICAgICBmb3JtSWQ6IGZvcm1EYXRhLmZvcm1JZCwgLy/lip/og73lj7fvvJrnp5LmnYAgNzEwODAyIO+8jCDmiqXlkI3pgoDnuqYgNzEwODAzIO+8jOWboui0rSA3MTA4MDRcclxuICAgICAgZG9jU3RhdHVzOjEwMCwgLy/ljZXmja7nirbmgIE6IDAg5L+d5a2Y77yI6LW36I2J77yJIO+8jDEwMCDlj5HluINcclxuICAgICAgY292ZXJJbWFnZSxcclxuICAgICAgaW1hZ2VzLFxyXG4gICAgICAvLyAuLi5fdGhpcy5kYXRhLmZvcm1EYXRhLFxyXG5cclxuICAgICAgZWZmZWN0aXZlU3RhcnREYXRlOiBmb3JtRGF0YS5zdGFydFRpbWUgfHwgc2VsZWN0ZWRUaW1lLnN0YXJ0VGltZSxcclxuICAgICAgZWZmZWN0aXZlRW5kRGF0ZTogZm9ybURhdGEuZW5kVGltZSAgfHwgc2VsZWN0ZWRUaW1lLmVuZFRpbWUsXHJcbiAgICAgIGZyZWVJZDogZm9ybURhdGEuZnJlZUlkLFxyXG4gICAgICB0aXRsZTogZm9ybURhdGEucHJvbW90aW9uc1RpdGxlLFxyXG4gICAgICBkZXNjcmlwdGlvbjogZm9ybURhdGEucHJvbW90aW9uRGVzY3JpcHRpb258fCcnLFxyXG4gICAgICBzdG9yZUxpc3QsXHJcbiAgICAgIHNlbGxlckxpc3QsXHJcbiAgICB9XHJcbiAgICBpZiAoZm9ybURhdGEuZm9ybUlkPT03MTA4MDIpe1xyXG4gICAgICBkYXRhLnRyYW5zQ29zdHMgPSB0cmFuc0Nvc3RzO1xyXG4gICAgICBkYXRhLm9yaWdpbmFsUHJpY2U9TnVtYmVyKGZvcm1EYXRhLm9yaWdpbmFsUHJpY2UpO1xyXG4gICAgICBkYXRhLnF1YW50aXR5ID0gTnVtYmVyKGZvcm1EYXRhLmZsYXNoU2FsZVRvdGFsKTtcclxuICAgICAgZGF0YS5zYWxlc1ByaWNlID0gTnVtYmVyKGZvcm1EYXRhLmZsYXNoU2FsZVByaWNlKTtcclxuICAgICAgZGF0YS5yZXN0cmljdEJ1eWluZ1F1YW50aXR5PSBOdW1iZXIoZm9ybURhdGEuZmxhc2hTYWxlTGltaXQpO1xyXG4gICAgfVxyXG4gICAgaWYgKGZvcm1EYXRhLmZvcm1JZD09NzEwODAzKXtcclxuICAgICAgZGF0YS5zYWxlc1ByaWNlID0gTnVtYmVyKGZvcm1EYXRhLm9yaWdpbmFsUHJpY2UpO1xyXG4gICAgfVxyXG4gICAgaWYgKGZvcm1EYXRhLmZvcm1JZD09NzEwODA0KXtcclxuICAgICAgZGF0YS50cmFuc0Nvc3RzID0gdHJhbnNDb3N0cztcclxuICAgICAgZGF0YS5vcmlnaW5hbFByaWNlPU51bWJlcihmb3JtRGF0YS5vcmlnaW5hbFByaWNlKTtcclxuICAgICAgZGF0YS5zYWxlc1ByaWNlID0gTnVtYmVyKGZvcm1EYXRhLmZsYXNoU2FsZVByaWNlKTtcclxuICAgICAgZGF0YS5udW1iZXJPZlRlYW09IE51bWJlcihmb3JtRGF0YS5mbGFzaFNhbGVUb3RhbClcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKCflvoXlj5HluIPmlbDmja4nLGRhdGEpO1xyXG4gICAgaWYgKCFhd2FpdCBwb3N0Rm9ybURhdGEoX3RoaXMsZGF0YSkpIHJldHVybjtcclxuICAgIGlmIChfdGhpcy5kYXRhLmZyb21QYWdlPT0nZWRpdCcpe1xyXG4gICAgICB3eC5uYXZpZ2F0ZUJhY2soKTtcclxuICAgIH0gZWxzZXtcclxuICAgICAgd3gucmVkaXJlY3RUbyh7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIHVybDpgLi4vcHJvbW90aW9uc01hbmFnZUxpc3QvcHJvbW90aW9uc01hbmFnZUxpc3Q/dGFiPSR7dHlwZVtmb3JtRGF0YS5mb3JtSWRdfWBcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgY29uc29sZS5sb2coJ+i/mOaciemUmeivr+acquWkhOeQhicpO1xyXG4gICAgaWYgKCFjaGVja0NvdmVySW1hZ2UpIHtcclxuICAgICAgd3guJHV0aWxzLnNjcm9sbFRvRXJyb3IoJyNmaWxlLXVwbG9hZGVyJywn6K+35LiK5Lyg5LiA5byg5bCB6Z2i5Zu+JylcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKCFjaGVja0FsbERhdGEpIHtcclxuICAgICAgbGV0IHJ1bGVzID0gdmFsaWRhdG9ySW5zdGFuY2UuZ2V0UnVsZXJzKCk7XHJcbiAgICAgIGZvciAoY29uc3QgcnVsZSBvZiBydWxlcykge1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICBsZXQgZXJyb3JNc2cgPSBfdGhpcy5kYXRhW2Ake3J1bGV9RXJyb3JgXTtcclxuICAgICAgICBpZiAoZXJyb3JNc2cpe1xyXG4gICAgICAgICAgd3guJHV0aWxzLnNjcm9sbFRvRXJyb3IoYCMke3J1bGV9YCxlcnJvck1zZylcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoIWNoZWNrU3RhcnRUaW1lKXtcclxuICAgICAgd3guJHV0aWxzLnNjcm9sbFRvRXJyb3IoJyN0aW1lLXF1YW50dW0nLCflvIDlp4vml7bpl7TpnIDlsI/kuo7nu5PmnZ/ml7bpl7QnKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG59XHJcblxyXG5jb25zdCBwcm9tb3Rpb25zU2F2ZUhhbmRsZXIgPSBhc3luYyAoX3RoaXM6YW55KSA9PntcclxuICBsZXQgZm9ybURhdGE6IGFueSA9IF90aGlzLmRhdGE7XHJcbiAgLy8gbGV0IHR5cGUgPSB7XHJcbiAgLy8gICA3MTA4MDI6IDEsIC8v56eS5p2AXHJcbiAgLy8gICA3MTA4MDM6IDIsIC8v5oql5ZCNXHJcbiAgLy8gICA3MTA4MDQ6IDMsIC8v5Zui6LStXHJcbiAgLy8gfVxyXG4gIGxldCB0aW1lUXVhbnR1bSA9IF90aGlzLnNlbGVjdENvbXBvbmVudCgnI3RpbWUtcXVhbnR1bScpO1xyXG4gIGxldCBzZWxsZXJFZGl0ID0gX3RoaXMuc2VsZWN0Q29tcG9uZW50KCcjc2VsbGVyLWVkaXQnKTtcclxuICBsZXQgc2VsbGVyTGlzdCA9IHNlbGxlckVkaXQuZ2V0U2VsbGVyTGlzdCgpO1xyXG4gIGxldCBzdG9yZUVkaXQgPSBfdGhpcy5zZWxlY3RDb21wb25lbnQoJyNzdG9yZS1lZGl0Jyk7XHJcbiAgbGV0IHN0b3JlTGlzdCA9IHN0b3JlRWRpdC5nZXRTZWxlY3RlZFN0b3JlSWRMaXN0KCk7XHJcbiAgY29uc29sZS5sb2coJ+W+heaPkOS6pOeahOmXqOW6l2lkJyxzdG9yZUxpc3QpO1xyXG4gIGxldCBmaWxlVXBsb2FkZXIgPSBfdGhpcy5zZWxlY3RDb21wb25lbnQoJyNmaWxlLXVwbG9hZGVyJyk7XHJcbiAgbGV0IGZpbGVVcGxvYWRlck11bHRpcGxlID0gX3RoaXMuc2VsZWN0Q29tcG9uZW50KCcjZmlsZS11cGxvYWRlci1tdWx0aXBsZScpO1xyXG4gIGNvbnNvbGUubG9nKCcuLi4u5o+Q5Lqk5oiQ5YqfJyk7XHJcbiAgbGV0IGNvdmVySW1hZ2UgPSBmaWxlVXBsb2FkZXIuZ2V0Q292ZXJJbWFnZVVuaWQoKTtcclxuICBsZXQgaW1hZ2VzID0gZmlsZVVwbG9hZGVyTXVsdGlwbGUuZ2V0SW1hZ2VzVW5pZCgpO1xyXG5cclxuICBsZXQgdHJhbnNDb3N0cyA9IDA7XHJcbiAgaWYgKGZvcm1EYXRhLmZvcm1JZD09NzEwODAyfHxmb3JtRGF0YS5mb3JtSWQ9PTcxMDgwNCl7XHJcbiAgICBsZXQgZGVsaXZlcnlNZXRob2QgPSBfdGhpcy5zZWxlY3RDb21wb25lbnQoJyNkZWxpdmVyeS1tZXRob2QnKTtcclxuICAgIGlmIChkZWxpdmVyeU1ldGhvZC5kYXRhLmlzUmVxdWlyZWRBZGRyZXNzKXtcclxuICAgICAgdHJhbnNDb3N0cyA9IE51bWJlcihkZWxpdmVyeU1ldGhvZC5kYXRhLnRyYW5zQ29zdHMpO1xyXG4gICAgfVxyXG4gIH1cclxuICBjb25zb2xlLmxvZyhjb3ZlckltYWdlLGltYWdlcyk7XHJcbiAgbGV0IHNlbGVjdGVkVGltZSA9IHRpbWVRdWFudHVtLmdldFNlbGVjdGVkVGltZSgpO1xyXG4gIGxldCBkYXRhOmFueSA9IHtcclxuICAgIGRvY0NvZGU6IGZvcm1EYXRhLmRvY2NvZGUsIC8v5rS75Yqo5Y2V5Y+377yM5paw5bu65rS75Yqo5pe25Li656m65YC877yM57yW6L6R5pe26ZyA6KaBZG9jY29kZeWAvFxyXG4gICAgZm9ybUlkOiBmb3JtRGF0YS5mb3JtSWQsIC8v5Yqf6IO95Y+377ya56eS5p2AIDcxMDgwMiDvvIwg5oql5ZCN6YKA57qmIDcxMDgwMyDvvIzlm6LotK0gNzEwODA0XHJcbiAgICBkb2NTdGF0dXM6IDAsIC8v5Y2V5o2u54q25oCBOiAwIOS/neWtmO+8iOi1t+iNie+8iSDvvIwxMDAg5Y+R5biDXHJcbiAgICBjb3ZlckltYWdlLFxyXG4gICAgaW1hZ2VzLFxyXG4gICAgLy8gLi4uX3RoaXMuZGF0YS5mb3JtRGF0YSxcclxuXHJcbiAgICBlZmZlY3RpdmVTdGFydERhdGU6IGZvcm1EYXRhLnN0YXJ0VGltZSB8fCBzZWxlY3RlZFRpbWUuc3RhcnRUaW1lLFxyXG4gICAgZWZmZWN0aXZlRW5kRGF0ZTogZm9ybURhdGEuZW5kVGltZSAgfHwgc2VsZWN0ZWRUaW1lLmVuZFRpbWUsXHJcbiAgICBmcmVlSWQ6IGZvcm1EYXRhLmZyZWVJZCxcclxuICAgIHRpdGxlOiBmb3JtRGF0YS5wcm9tb3Rpb25zVGl0bGUsXHJcbiAgICBkZXNjcmlwdGlvbjogZm9ybURhdGEucHJvbW90aW9uRGVzY3JpcHRpb24sXHJcbiAgICBzdG9yZUxpc3QsXHJcbiAgICBzZWxsZXJMaXN0LFxyXG4gIH1cclxuICBpZiAoZm9ybURhdGEuZm9ybUlkPT03MTA4MDIpe1xyXG4gICAgZGF0YS50cmFuc0Nvc3RzID0gdHJhbnNDb3N0cztcclxuICAgIGRhdGEub3JpZ2luYWxQcmljZT1OdW1iZXIoZm9ybURhdGEub3JpZ2luYWxQcmljZSl8fDA7XHJcbiAgICBkYXRhLnF1YW50aXR5ID0gTnVtYmVyKGZvcm1EYXRhLmZsYXNoU2FsZVRvdGFsKXx8MDtcclxuICAgIGRhdGEuc2FsZXNQcmljZSA9IE51bWJlcihmb3JtRGF0YS5mbGFzaFNhbGVQcmljZSl8fDA7XHJcbiAgICBkYXRhLnJlc3RyaWN0QnV5aW5nUXVhbnRpdHk9IE51bWJlcihmb3JtRGF0YS5mbGFzaFNhbGVMaW1pdCl8fDA7XHJcbiAgfVxyXG4gIGlmIChmb3JtRGF0YS5mb3JtSWQ9PTcxMDgwMyl7XHJcbiAgICBkYXRhLnNhbGVzUHJpY2UgPSBOdW1iZXIoZm9ybURhdGEub3JpZ2luYWxQcmljZSl8fDA7XHJcbiAgfVxyXG4gIGlmIChmb3JtRGF0YS5mb3JtSWQ9PTcxMDgwNCl7XHJcbiAgICBkYXRhLnRyYW5zQ29zdHMgPSB0cmFuc0Nvc3RzO1xyXG4gICAgZGF0YS5vcmlnaW5hbFByaWNlPU51bWJlcihmb3JtRGF0YS5vcmlnaW5hbFByaWNlKXx8MDtcclxuICAgIGRhdGEuc2FsZXNQcmljZSA9IE51bWJlcihmb3JtRGF0YS5mbGFzaFNhbGVQcmljZSl8fDA7XHJcbiAgICBkYXRhLm51bWJlck9mVGVhbT0gTnVtYmVyKGZvcm1EYXRhLmZsYXNoU2FsZVRvdGFsKXx8MFxyXG4gIH1cclxuICBjb25zb2xlLmxvZygn5b6F5L+d5a2Y5pWw5o2uJyxkYXRhKTtcclxuICBpZiAoIWF3YWl0IHBvc3RGb3JtRGF0YShfdGhpcyxkYXRhKSkgcmV0dXJuO1xyXG4gIHd4LnNob3dNb2RhbCh7XHJcbiAgICB0aXRsZTogJ+aPkOekuicsXHJcbiAgICBjb250ZW50OiAn5L+d5a2Y5oiQ5YqfJyxcclxuICAgIGNvbmZpcm1UZXh0OifliY3lvoDpooTop4gnLFxyXG4gICAgY2FuY2VsVGV4dDon55WZ5Zyo5q2k5aSEJyxcclxuICAgIHN1Y2Nlc3MgKHJlcykge1xyXG4gICAgICBpZiAocmVzLmNvbmZpcm0pIHtcclxuICAgICAgICBjb25zb2xlLmxvZygn55So5oi354K55Ye756Gu5a6aJylcclxuICAgICAgICB3eC5yZWRpcmVjdFRvKHtcclxuICAgICAgICAgIHVybDpgL3BhZ2VzL2RldGFpbC9kZXRhaWw/ZnJvbT1wcm9tb3Rpb25zRHJhZnQmZG9jY29kZT0ke190aGlzLmRhdGEuZG9jY29kZX1gXHJcbiAgICAgICAgfSlcclxuICAgICAgfSBlbHNlIGlmIChyZXMuY2FuY2VsKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ+eUqOaIt+eCueWHu+WPlua2iCcpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9KVxyXG4gIHJldHVybjtcclxufVxyXG5leHBvcnQge1xyXG4gIHByb21vdGlvbnNTdWJtaXRIYW5kbGVyLFxyXG4gIHByb21vdGlvbnNTYXZlSGFuZGxlcixcclxuICBnZXRTYXZlRGF0YVxyXG59XHJcbiJdfQ==
\ No newline at end of file
diff --git a/modules/promotionsCreate.ts b/modules/promotionsCreate.ts
new file mode 100644
index 0000000..ee2e975
--- /dev/null
+++ b/modules/promotionsCreate.ts
@@ -0,0 +1,326 @@
+
+const getSaveData = async (_this:any) =>{
+  let formId: any = _this.data.formId;
+  let doccode = _this.data.doccode;
+  let [error, result] = await wx.$utils.to(
+    wx.$http.request({
+      url:`/shopping/panicBuying.do?m=getPanicBuyingDetail`,
+      data:{
+        doccode,
+        isEdit:true,
+        SellerOpenId:wx.globalData.OpenId
+      }
+    })
+  )
+  if (error){
+    console.log(error);
+    return;
+  }
+  console.log(result);
+  let data = result.list[0];
+  let formData:any = {
+    promotionsTitle: data.title,
+    promotionDescription: data.description,
+    startTime: data.effectiveStartDate,
+    endTime: data.effectiveEndDate,
+    coverImageList: (data.coverImageUrl&&_this.getCoverImageList(data))||[],
+    // imagesList: (data.imagesUrl.length>0&&_this.getImagesList(data))||[],
+    imagesList: data.imagesUrl,
+    coverImage: data.coverImage,
+    images: data.images,
+    freeId:data.freeId,
+  };
+  if (formId==710802){
+    formData.originalPrice=data.originalPrice;
+    formData.flashSalePrice= data.salesPrice;
+    formData.flashSaleTotal= data.quantity;
+    formData.flashSaleLimit= data.restrictBuyingQuantity;
+  }
+  if (formId==710803){
+    formData.originalPrice=data.salesPrice;
+  }
+  if (formId==710804){
+    formData.originalPrice=data.originalPrice;
+    formData.flashSalePrice= data.salesPrice;
+    formData.flashSaleTotal= data.numberOfTeam;
+  }
+  _this.setData({
+    ...formData,
+    coverImageUrl:data.coverImageUrl,
+    // [`effectiveStartDate`]: data.effectiveStartDate,
+    // [`effectiveEndDate`]: data.effectiveEndDate,
+    // [`freeId`]: data.freeId,
+    // [`title`]: data.title,
+    // [`originalPrice`]: data.originalPrice,
+    // [`salesPrice`]: data.salesPrice,
+    // [`quantity`]: data.quantity,
+    // [`restrictBuyingQuantity`]: data.restrictBuyingQuantity,
+    // [`description`]: data.description,
+    sellerList:result.sellerList,
+    storeList:result.storeList,
+    status:data.panicBuyingStatus,
+    delivery:{
+      freeId:data.freeId,
+      freeName:data.freeName,
+      isRequiredAddress:data.isRequiredAddress,
+      transCosts:data.transCosts,
+    }
+  });
+  console.log('閰嶉�佹暟鎹�傘�傘��',_this.data.delivery);
+  wx.setNavigationBarTitle({
+    title: data.title
+  })
+}
+
+const postFormData = async (_this:any,data:object) =>{
+  let [error, res] = await wx.$utils.to(
+    wx.$http.request({
+      url:'/shopping/panicBuying.do?m=saveDocCode',
+      data,
+      method:'POST'
+    })
+  )
+  if (error) {
+    console.log(error);
+    return false;
+  }
+  console.log(res);
+  if (res.state === 'success') {
+    wx.showToast({
+      title: '鎴愬姛',
+      duration: 2000
+    })
+    _this.setData({
+      doccode:res.DocCode
+    })
+    // console.log('娲诲姩鍗曞彿',_this.data.formData);
+  }
+  if (res.state === 'failed'&&res.sellerCheckedBalance>0) {
+    _this.setData({
+      sellerUnCheckedNames: res.sellerUnCheckedNames,
+      isShowDialog: true
+    })
+  }
+  return res.state === 'success';
+}
+const promotionsSubmitHandler = async (_this:any,validatorInstance:any) =>{
+  // let {_this,validatorInstance} = obj;
+  let formData: any = _this.data;
+  let type = {
+    710802: 1, //绉掓潃
+    710803: 2, //鎶ュ悕
+    710804: 3, //鍥㈣喘
+  }
+  let timeQuantum = _this.selectComponent('#time-quantum');
+  let sellerEdit = _this.selectComponent('#seller-edit');
+  let storeEdit = _this.selectComponent('#store-edit');
+  let fileUploader = _this.selectComponent('#file-uploader');
+  let fileUploaderMultiple = _this.selectComponent('#file-uploader-multiple');
+
+  let checkTransCosts = true;
+  let transCosts = 0;
+  if (formData.formId==710802||formData.formId==710804){
+    let deliveryMethod = _this.selectComponent('#delivery-method');
+    if (deliveryMethod.data.isRequiredAddress){
+      checkTransCosts = deliveryMethod.checkFields();
+      transCosts = Number(deliveryMethod.data.transCosts);
+    }
+  }
+
+  console.log(timeQuantum);
+
+  let checkStartTime = timeQuantum.checkTime("startTime");
+  let checkEndTime = timeQuantum.checkTime("endTime");
+  let checkCoverImage = fileUploader.checkImages("coverImage", "璇蜂笂浼犱竴寮犲皝闈㈠浘");
+  // let checkImages = fileUploaderMultiple.checkImages("images", "璇疯嚦灏戜笂浼犱竴寮犲浘鐗�");
+  let checkAllData = validatorInstance.checkAllData();
+  // if (_this.data.goodsImgList.length < 1) {
+  //   console.log('璇蜂笂浼犱骇鍝佸浘鐗�');
+  // }
+  let sellerList = sellerEdit.getSellerList();
+  if (sellerList.length<1) {
+    wx.showToast({
+      title: '璇烽�夋嫨钀ラ攢浜哄憳',
+      icon: 'none',
+      duration: 2000
+    })
+    return
+  }
+  let storeList = storeEdit.getSelectedStoreIdList();
+  console.log('寰呮彁浜ょ殑闂ㄥ簵id',storeList);
+  let checkDefaultSeller = sellerEdit.checkDefaultSeller();
+  if (!checkDefaultSeller) {
+    wx.showToast({
+      title: '璇烽�夋嫨榛樿钀ラ攢浜哄憳',
+      icon: 'none',
+      duration: 2000
+    })
+    return
+  }
+  console.log('checkDefaultSeller',checkDefaultSeller);
+  let checkArr = [checkTransCosts,checkStartTime,checkEndTime,checkCoverImage,checkAllData];
+  let data = {} as any;
+  if (checkArr.every((item)=>{
+    return item
+  })){
+    console.log('....鎻愪氦鎴愬姛');
+    let coverImage = fileUploader.getCoverImageUnid();
+    let coverImageUrl = fileUploader.getImgList()[0].url||'';
+    _this.setData({
+      coverImageUrl
+    })
+    let images = fileUploaderMultiple.getImagesUnid();
+    console.log(coverImage,images,coverImageUrl);
+    let selectedTime = timeQuantum.getSelectedTime();
+    data = {
+      docCode: formData.doccode, //娲诲姩鍗曞彿锛屾柊寤烘椿鍔ㄦ椂涓虹┖鍊硷紝缂栬緫鏃堕渶瑕乨occode鍊�
+      formId: formData.formId, //鍔熻兘鍙凤細绉掓潃 710802 锛� 鎶ュ悕閭�绾� 710803 锛屽洟璐� 710804
+      docStatus:100, //鍗曟嵁鐘舵��: 0 淇濆瓨锛堣捣鑽夛級 锛�100 鍙戝竷
+      coverImage,
+      images,
+      // ..._this.data.formData,
+
+      effectiveStartDate: formData.startTime || selectedTime.startTime,
+      effectiveEndDate: formData.endTime  || selectedTime.endTime,
+      freeId: formData.freeId,
+      title: formData.promotionsTitle,
+      description: formData.promotionDescription||'',
+      storeList,
+      sellerList,
+    }
+    if (formData.formId==710802){
+      data.transCosts = transCosts;
+      data.originalPrice=Number(formData.originalPrice);
+      data.quantity = Number(formData.flashSaleTotal);
+      data.salesPrice = Number(formData.flashSalePrice);
+      data.restrictBuyingQuantity= Number(formData.flashSaleLimit);
+    }
+    if (formData.formId==710803){
+      data.salesPrice = Number(formData.originalPrice);
+    }
+    if (formData.formId==710804){
+      data.transCosts = transCosts;
+      data.originalPrice=Number(formData.originalPrice);
+      data.salesPrice = Number(formData.flashSalePrice);
+      data.numberOfTeam= Number(formData.flashSaleTotal)
+    }
+    console.log('寰呭彂甯冩暟鎹�',data);
+    if (!await postFormData(_this,data)) return;
+    if (_this.data.fromPage=='edit'){
+      wx.navigateBack();
+    } else{
+      wx.redirectTo({
+        // @ts-ignore
+        url:`../promotionsManageList/promotionsManageList?tab=${type[formData.formId]}`
+      })
+    }
+  } else {
+    console.log('杩樻湁閿欒鏈鐞�');
+    if (!checkCoverImage) {
+      wx.$utils.scrollToError('#file-uploader','璇蜂笂浼犱竴寮犲皝闈㈠浘')
+      return;
+    }
+    if (!checkAllData) {
+      let rules = validatorInstance.getRulers();
+      for (const rule of rules) {
+        // @ts-ignore
+        let errorMsg = _this.data[`${rule}Error`];
+        if (errorMsg){
+          wx.$utils.scrollToError(`#${rule}`,errorMsg)
+          break;
+        }
+      }
+      return;
+    }
+    if (!checkStartTime){
+      wx.$utils.scrollToError('#time-quantum','寮�濮嬫椂闂撮渶灏忎簬缁撴潫鏃堕棿');
+    }
+
+  }
+}
+
+const promotionsSaveHandler = async (_this:any) =>{
+  let formData: any = _this.data;
+  // let type = {
+  //   710802: 1, //绉掓潃
+  //   710803: 2, //鎶ュ悕
+  //   710804: 3, //鍥㈣喘
+  // }
+  let timeQuantum = _this.selectComponent('#time-quantum');
+  let sellerEdit = _this.selectComponent('#seller-edit');
+  let sellerList = sellerEdit.getSellerList();
+  let storeEdit = _this.selectComponent('#store-edit');
+  let storeList = storeEdit.getSelectedStoreIdList();
+  console.log('寰呮彁浜ょ殑闂ㄥ簵id',storeList);
+  let fileUploader = _this.selectComponent('#file-uploader');
+  let fileUploaderMultiple = _this.selectComponent('#file-uploader-multiple');
+  console.log('....鎻愪氦鎴愬姛');
+  let coverImage = fileUploader.getCoverImageUnid();
+  let images = fileUploaderMultiple.getImagesUnid();
+
+  let transCosts = 0;
+  if (formData.formId==710802||formData.formId==710804){
+    let deliveryMethod = _this.selectComponent('#delivery-method');
+    if (deliveryMethod.data.isRequiredAddress){
+      transCosts = Number(deliveryMethod.data.transCosts);
+    }
+  }
+  console.log(coverImage,images);
+  let selectedTime = timeQuantum.getSelectedTime();
+  let data:any = {
+    docCode: formData.doccode, //娲诲姩鍗曞彿锛屾柊寤烘椿鍔ㄦ椂涓虹┖鍊硷紝缂栬緫鏃堕渶瑕乨occode鍊�
+    formId: formData.formId, //鍔熻兘鍙凤細绉掓潃 710802 锛� 鎶ュ悕閭�绾� 710803 锛屽洟璐� 710804
+    docStatus: 0, //鍗曟嵁鐘舵��: 0 淇濆瓨锛堣捣鑽夛級 锛�100 鍙戝竷
+    coverImage,
+    images,
+    // ..._this.data.formData,
+
+    effectiveStartDate: formData.startTime || selectedTime.startTime,
+    effectiveEndDate: formData.endTime  || selectedTime.endTime,
+    freeId: formData.freeId,
+    title: formData.promotionsTitle,
+    description: formData.promotionDescription,
+    storeList,
+    sellerList,
+  }
+  if (formData.formId==710802){
+    data.transCosts = transCosts;
+    data.originalPrice=Number(formData.originalPrice)||0;
+    data.quantity = Number(formData.flashSaleTotal)||0;
+    data.salesPrice = Number(formData.flashSalePrice)||0;
+    data.restrictBuyingQuantity= Number(formData.flashSaleLimit)||0;
+  }
+  if (formData.formId==710803){
+    data.salesPrice = Number(formData.originalPrice)||0;
+  }
+  if (formData.formId==710804){
+    data.transCosts = transCosts;
+    data.originalPrice=Number(formData.originalPrice)||0;
+    data.salesPrice = Number(formData.flashSalePrice)||0;
+    data.numberOfTeam= Number(formData.flashSaleTotal)||0
+  }
+  console.log('寰呬繚瀛樻暟鎹�',data);
+  if (!await postFormData(_this,data)) return;
+  wx.showModal({
+    title: '鎻愮ず',
+    content: '淇濆瓨鎴愬姛',
+    confirmText:'鍓嶅線棰勮',
+    cancelText:'鐣欏湪姝ゅ',
+    success (res) {
+      if (res.confirm) {
+        console.log('鐢ㄦ埛鐐瑰嚮纭畾')
+        wx.redirectTo({
+          url:`/pages/detail/detail?from=promotionsDraft&doccode=${_this.data.doccode}`
+        })
+      } else if (res.cancel) {
+        console.log('鐢ㄦ埛鐐瑰嚮鍙栨秷')
+      }
+    }
+  })
+  return;
+}
+export {
+  promotionsSubmitHandler,
+  promotionsSaveHandler,
+  getSaveData
+}
diff --git a/pages/addressEdit/addressEdit.js b/pages/addressEdit/addressEdit.js
index 69ec1b7..c019f4c 100644
--- a/pages/addressEdit/addressEdit.js
+++ b/pages/addressEdit/addressEdit.js
@@ -148,8 +148,15 @@
         if (!this.data.Seq) {
             var locationComponent = this.selectComponent('#location-plugin');
             var location = locationComponent.getLocation();
-            if (!location)
+            if (!location) {
+                wx.showToast({
+                    title: '璇烽�夋嫨鏀惰揣鍦板潃',
+                    icon: 'none',
+                    duration: 3000
+                });
                 return;
+            }
+            ;
             this.setData({ location: location });
         }
         if (validatorInstance.checkAllData()) {
@@ -269,4 +276,4 @@
         }, this);
     },
 });
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzc0VkaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhZGRyZXNzRWRpdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1REFBa0Q7QUFDbEQsSUFBSSxpQkFBNkIsQ0FBQztBQUNsQyxJQUFNLEdBQUcsR0FBRyxNQUFNLEVBQWMsQ0FBQztBQUNqQyxJQUFJLENBQUM7SUFDSCxJQUFJLEVBQUU7UUFDSixTQUFTLEVBQUMsRUFBRTtRQUNaLE1BQU0sRUFBQyxFQUFFO1FBQ1QsT0FBTyxFQUFDLEVBQUU7UUFDVixHQUFHLEVBQUMsRUFBRTtRQUNOLFFBQVEsRUFBRSxFQUFTO0tBQ3BCO0lBQ0ssTUFBTSxZQUFDLE9BQU87Ozs7Ozt3QkFDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQzt3QkFDYixHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQzs2QkFDbEIsQ0FBQSxHQUFHLElBQUksU0FBUyxDQUFBLEVBQWhCLGNBQWdCO3dCQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBQyxPQUFPLENBQUMsQ0FBQzt3QkFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQzs0QkFDWCxHQUFHLEVBQUMsT0FBTyxDQUFDLEdBQUc7eUJBQ2hCLENBQUMsQ0FBQTt3QkFDRixXQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsRUFBQTs7d0JBQWpDLFNBQWlDLENBQUM7Ozs7OztLQUdyQztJQUNELE9BQU87UUFDTCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUE7SUFDdEIsQ0FBQztJQUNELE1BQU07SUFFTixDQUFDO0lBQ0ssaUJBQWlCLFlBQUMsY0FBcUI7Ozs7OzRCQUNwQixXQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUN0QyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQzs0QkFDZixHQUFHLEVBQUMs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QyxFQUFFLEVBQUUsQ0FBQztpQkFDckI7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULFFBQVEsRUFBRSxJQUFJO29CQUNkLE1BQU0sRUFBRSxJQUFJO2lCQUNiO2dCQUNELE1BQU0sRUFBRTtvQkFDTixRQUFRLEVBQUUsSUFBSTtpQkFDZjthQUNGO1lBQ0QsUUFBUSxFQUFFO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxRQUFRLEVBQUUsUUFBUTtvQkFDbEIsV0FBVyxFQUFFLHNCQUFzQjtpQkFDcEM7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULFFBQVEsRUFBRSxRQUFRO29CQUNsQixNQUFNLEVBQUUsVUFBVTtpQkFDbkI7Z0JBQ0QsTUFBTSxFQUFFO29CQUNOLFFBQVEsRUFBRSxTQUFTO2lCQUNwQjthQUNGO1lBQ0QsVUFBVSxFQUFDLElBQUk7U0FDaEIsRUFBQyxJQUFJLENBQUMsQ0FBQTtJQUNULENBQUM7Q0FDRixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTXlWYWxpZGF0b3IgZnJvbSBcIi4uLy4uL3V0aWxzL215VmFsaWRhdG9yXCI7XHJcbmxldCB2YWxpZGF0b3JJbnN0YW5jZTpNeVZhbGlkYXRvcjtcclxuY29uc3QgYXBwID0gZ2V0QXBwPElBcHBPcHRpb24+KCk7XHJcblBhZ2Uoe1xyXG4gIGRhdGE6IHtcclxuICAgIFRlbGVwaG9uZTonJyxcclxuICAgIFN0cmVldDonJyxcclxuICAgIExpbmtNYW46JycsXHJcbiAgICBTZXE6JycsXHJcbiAgICBsb2NhdGlvbjoge30gYXMgYW55LFxyXG4gIH0sXHJcbiAgYXN5bmMgb25Mb2FkKG9wdGlvbnMpIHtcclxuICAgIGNvbnNvbGUubG9nKGFwcCk7XHJcbiAgICBsZXQgc2VxID0gb3B0aW9ucy5zZXE7XHJcbiAgICBpZiAoc2VxICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBjb25zb2xlLmxvZygnc2VxJyxvcHRpb25zKTtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICBTZXE6b3B0aW9ucy5zZXFcclxuICAgICAgfSlcclxuICAgICAgYXdhaXQgdGhpcy5nZXRBZGRyZXNzRGV0YWlscyhzZXEpO1xyXG4gICAgfVxyXG5cclxuICB9LFxyXG4gIG9uUmVhZHkoKSB7XHJcbiAgICB0aGlzLmluaXRWYWxpZGF0b3IoKVxyXG4gIH0sXHJcbiAgb25TaG93KCkge1xyXG5cclxuICB9LFxyXG4gIGFzeW5jIGdldEFkZHJlc3NEZXRhaWxzKHBheW1lbnRhZGRyZXNzOnN0cmluZykge1xyXG4gICAgIGxldCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCB3eC4kdXRpbHMudG8oXHJcbiAgICAgICB3eC4kaHR0cC5yZXF1ZXN0KHtcclxuICAgICAgICAgdXJsOmAvc2hvcHBpbmcvYWRkcmVzcy5kbz9tPWdldEFkZHJlc3NEZXRhaWxgLFxyXG4gICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgcGF5bWVudGFkZHJlc3NcclxuICAgICAgICAgfVxyXG4gICAgICAgfSlcclxuICAgICApXHJcbiAgICAgaWYgKGVycm9yKXtcclxuICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgIHJldHVybjtcclxuICAgICB9XHJcbiAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcclxuICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgIC4uLnJlc3VsdC5saXN0LFxyXG4gICAgICAgW2Bsb2NhdGlvbi5hZGRyZXNzYF06cmVzdWx0Lmxpc3QuQWRkcmVzcyxcclxuICAgICAgIFtgbG9jYXRpb24ubmFtZWBdOnJlc3VsdC5saXN0LkFkZHJlc3NOYW1lLFxyXG4gICAgICAgW2Bsb2NhdGlvbi5sb25naXR1ZGVgXTpyZXN1bHQubGlzdC5Mb25naXR1ZGUsXHJcbiAgICAgICBbYGxvY2F0aW9uLmxhdGl0dWRlYF06cmVzdWx0Lmxpc3QuTGF0aXR1ZGUsXHJcblxyXG4gICAgIH0pXHJcbiAgfSxcclxuXHJcbiAgLy/ku47lvq7kv6Hor7vlj5ZcclxuICByZWFkRnJvbVd4KCkge1xyXG4gICAgd3guY2hvb3NlQWRkcmVzcyh7XHJcbiAgICAgIHN1Y2Nlc3M6KHJlcyk9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgICBsZXQgTGlua01hbiA9IHJlcy51c2VyTmFtZTtcclxuICAgICAgICBsZXQgU3RyZWV0ID0gcmVzLmRldGFpbEluZm87XHJcbiAgICAgICAgbGV0IFRlbGVwaG9uZSA9IHJlcy50ZWxOdW1iZXI7XHJcbiAgICAgICAgLy9cclxuICAgICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgICAgTGlua01hbixcclxuICAgICAgICAgIFRlbGVwaG9uZSxcclxuICAgICAgICAgIFN0cmVldFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH0sXHJcblxyXG4gIGdldExvY2F0aW9uKGU6YW55KXtcclxuICAgIC8vIGNvbnNvbGUubG9nKCfojrflj5bliLDlnLDlnYDlrprkvY0nLGUpO1xyXG4gICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgbG9jYXRpb246ZS5kZXRhaWxcclxuICAgIH0pXHJcbiAgfSxcclxuXHJcbiAgY2hlY2tMaW5rTWFuKGU6YW55KXtcclxuICAgIGxldCB7IHZhbHVlIH0gPSBlLmRldGFpbFxyXG4gICAgY29uc29sZS5sb2coZSk7XHJcbiAgICB2YWxpZGF0b3JJbnN0YW5jZS5jaGVja0ZpZWxkKCdMaW5rTWFuJyx2YWx1ZSk7XHJcbiAgfSxcclxuICBjaGVja1RlbGVwaG9uZShlOmFueSl7XHJcbiAgICBsZXQgeyB2YWx1ZSB9ID0gZS5kZXRhaWxcclxuICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgdmFsaWRhdG9ySW5zdGFuY2UuY2hlY2tGaWVsZCgnVGVsZXBob25lJyx2YWx1ZSk7XHJcbiAgfSxcclxuICBjaGVja1N0cmVldChlOmFueSl7XHJcbiAgICBsZXQgeyB2YWx1ZSB9ID0gZS5kZXRhaWxcclxuICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgdmFsaWRhdG9ySW5zdGFuY2UuY2hlY2tGaWVsZCgnU3RyZWV0Jyx2YWx1ZSk7XHJcbiAgfSxcclxuICAvLyBjaGVja0ZpZWxkKHR5cGU6IHN0cmluZyx2YWx1ZTogc3RyaW5nKXtcclxuICAvLyAgIHZhbGlkYXRvckluc3RhbmNlLmNoZWNrRmllbGQodHlwZSx2YWx1ZSk7XHJcbiAgLy8gfSxcclxuICBvblNhdmUoKSB7XHJcbiAgICBpZiAoIXRoaXMuZGF0YS5TZXEpIHtcclxuICAgICAgbGV0IGxvY2F0aW9uQ29tcG9uZW50ID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyNsb2NhdGlvbi1wbHVnaW4nKTtcclxuICAgICAgbGV0IGxvY2F0aW9uID0gbG9jYXRpb25Db21wb25lbnQuZ2V0TG9jYXRpb24oKTtcclxuICAgICAgaWYgKCFsb2NhdGlvbikgcmV0dXJuO1xyXG4gICAgICB0aGlzLnNldERhdGEoe2xvY2F0aW9ufSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHZhbGlkYXRvckluc3RhbmNlLmNoZWNrQWxsRGF0YSgpKXtcclxuICAgICAgY29uc29sZS5sb2coJy4uLi7mj5DkuqTorqLljZXmiJDlip8nKTtcclxuICAgICAgdGhpcy5zYXZlQWRkcmVzcygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5sb2coJ+i/mOaciemUmeivr+acquWkhOeQhicpO1xyXG4gICAgfVxyXG5cclxuICB9LFxyXG4gIGFzeW5jIHNhdmVBZGRyZXNzKCkge1xyXG4gICAgbGV0IGFjID0gJ25ldyc7XHJcbiAgICBpZiAodGhpcy5kYXRhLlNlcSl7XHJcbiAgICAgIGFjID0gJ2VkaXQnO1xyXG4gICAgfVxyXG4gICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgIHBheW1lbnRBZGRyZXNzOnRoaXMuZGF0YS5TZXEsXHJcbiAgICAgIGFjLFxyXG4gICAgICBsaW5rTWFuOnRoaXMuZGF0YS5MaW5rTWFuLFxyXG4gICAgICB0ZWxlcGhvbmU6dGhpcy5kYXRhLlRlbGVwaG9uZSxcclxuICAgICAgc3RyZWV0OnRoaXMuZGF0YS5TdHJlZXQsXHJcbiAgICAgIGFkZHJlc3NOYW1lOnRoaXMuZGF0YS5sb2NhdGlvbi5uYW1lLFxyXG4gICAgICBhZGRyZXNzOnRoaXMuZGF0YS5sb2NhdGlvbi5hZGRyZXNzLFxyXG4gICAgICBsb25naXR1ZGU6dGhpcy5kYXRhLmxvY2F0aW9uLmxvbmdpdHVkZSxcclxuICAgICAgbGF0aXR1ZGU6dGhpcy5kYXRhLmxvY2F0aW9uLmxhdGl0dWRlLFxyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2coJ2RhdGEnLGRhdGEpO1xyXG4gICAgbGV0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IHd4LiR1dGlscy50byhcclxuICAgICAgd3guJGh0dHAucmVxdWVzdCh7XHJcbiAgICAgICAgdXJsOmAvc2hvcHBpbmcvYWRkcmVzcy5kbz9tPXVwZGF0ZUFkZHJlc3NgLFxyXG4gICAgICAgIGRhdGE6IGRhdGEsXHJcbiAgICAgICAgbWV0aG9kOidQT1NUJ1xyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICAgaWYgKGVycm9yKXtcclxuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG4gICAgd3gubmF2aWdhdGVCYWNrKCk7XHJcbiAgfSxcclxuICAgb25EZWxldGUoKSB7XHJcbiAgICAgd3gucHJvLnNob3dNb2RhbCh7XHJcbiAgICAgICB0aXRsZTogJ+aPkOekuicsXHJcbiAgICAgICBjb250ZW50OiAn56Gu5a6a6KaB5Yig6Zmk6K+l5Zyw5Z2A5ZCX77yfJyxcclxuICAgICB9KS50aGVuKChyZXM6YW55KSA9PiB7XHJcbiAgICAgICAvLyBvbiBjbG9zZVxyXG4gICAgICAgY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgIGlmIChyZXMuY29uZmlybSl7XHJcbiAgICAgICAgIGNvbnNvbGUubG9nKCfnoa7orqQnKTtcclxuICAgICAgICAgdGhpcy5kZWxldGVBZGRyZXNzKCk7XHJcbiAgICAgICB9XHJcbiAgICAgfSk7XHJcbiAgfSxcclxuICBhc3luYyBkZWxldGVBZGRyZXNzKCkge1xyXG4gICAgbGV0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IHd4LiR1dGlscy50byhcclxuICAgICAgd3guJGh0dHAucmVxdWVzdCh7XHJcbiAgICAgICAgdXJsOmAvc2hvcHBpbmcvYWRkcmVzcy5kbz9tPWRlbEFkZHJlc3NgLFxyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgIHBheW1lbnRhZGRyZXNzOnRoaXMuZGF0YS5TZXEsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuICAgIClcclxuICAgIGlmIChlcnJvcil7XHJcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2cocmVzdWx0KTtcclxuICAgIHd4Lm5hdmlnYXRlQmFjaygpO1xyXG4gIH0sXHJcblxyXG4gIC8vIHZhbGlkYXRvckluc3RhbmNlKCl7fSxcclxuICBpbml0VmFsaWRhdG9yKCl7XHJcbiAgICAvLyDlrp7kvovljJZcclxuICAgIHZhbGlkYXRvckluc3RhbmNlID0gbmV3IE15VmFsaWRhdG9yKHtcclxuICAgICAgcnVsZXM6IHtcclxuICAgICAgICBMaW5rTWFuOiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICAgIHJhbmdlbGVuZ3RoOiBbMiwgMzJdXHJcbiAgICAgICAgfSxcclxuICAgICAgICBUZWxlcGhvbmU6IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgICAgbW9iaWxlOiB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgU3RyZWV0OiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICBtZXNzYWdlczoge1xyXG4gICAgICAgIExpbmtNYW46IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiAn6K+36L6T5YWl55So5oi35ZCNJyxcclxuICAgICAgICAgIHJhbmdlbGVuZ3RoOiAn6IGU57O75Lq65aeT5ZCN5b+F6aG75ZyoMiDoh7MgMzIg5a2X56ym5LmL6Ze077yBJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgVGVsZXBob25lOiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogJ+ivt+i+k+WFpeaJi+acuuWPtycsXHJcbiAgICAgICAgICBtb2JpbGU6ICfmiYvmnLrlj7fmoLzlvI/kuI3mraPnoa4nXHJcbiAgICAgICAgfSxcclxuICAgICAgICBTdHJlZXQ6IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiAn6K+36L6T5YWl6KGX6YGT5Zyw5Z2AJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIG11bHRpQ2hlY2s6dHJ1ZVxyXG4gICAgfSx0aGlzKVxyXG4gIH0sXHJcbn0pXHJcbmV4cG9ydCB7fVxyXG4iXX0=
\ No newline at end of file
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzc0VkaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhZGRyZXNzRWRpdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1REFBa0Q7QUFDbEQsSUFBSSxpQkFBNkIsQ0FBQztBQUNsQyxJQUFNLEdBQUcsR0FBRyxNQUFNLEVBQWMsQ0FBQztBQUNqQyxJQUFJLENBQUM7SUFDSCxJQUFJLEVBQUU7UUFDSixTQUFTLEVBQUMsRUFBRTtRQUNaLE1BQU0sRUFBQyxFQUFFO1FBQ1QsT0FBTyxFQUFDLEVBQUU7UUFDVixHQUFHLEVBQUMsRUFBRTtRQUNOLFFBQVEsRUFBRSxFQUFTO0tBQ3BCO0lBQ0ssTUFBTSxZQUFDLE9BQU87Ozs7Ozt3QkFDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQzt3QkFDYixHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQzs2QkFDbEIsQ0FBQSxHQUFHLElBQUksU0FBUyxDQUFBLEVBQWhCLGNBQWdCO3dCQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBQyxPQUFPLENBQUMsQ0FBQzt3QkFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQzs0QkFDWCxHQUFHLEVBQUMsT0FBTyxDQUFDLEdBQUc7eUJBQ2hCLENBQUMsQ0FBQTt3QkFDRixXQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsRUFBQTs7d0JBQWpDLFNBQWlDLENBQUM7Ozs7OztLQUdyQztJQUNELE9BQU87UUFDTCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUE7SUFDdEIsQ0FBQztJQUNELE1BQU07SUFFTixDQUFDO0lBQ0ssaUJBQWlCLFlBQUMsY0FBcUI7Ozs7OzRCQUNwQixXQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUN0QyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQzs0QkFDZixHQUFHLEVBQUMs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Q25CO0lBR0QsYUFBYTtRQUVYLGlCQUFpQixHQUFHLElBQUkscUJBQVcsQ0FBQztZQUNsQyxLQUFLLEVBQUU7Z0JBQ0wsT0FBTyxFQUFFO29CQUNQLFFBQVEsRUFBRSxJQUFJO29CQUNkLFdBQVcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7aUJBQ3JCO2dCQUNELFNBQVMsRUFBRTtvQkFDVCxRQUFRLEVBQUUsSUFBSTtvQkFDZCxNQUFNLEVBQUUsSUFBSTtpQkFDYjtnQkFDRCxNQUFNLEVBQUU7b0JBQ04sUUFBUSxFQUFFLElBQUk7aUJBQ2Y7YUFDRjtZQUNELFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUU7b0JBQ1AsUUFBUSxFQUFFLFFBQVE7b0JBQ2xCLFdBQVcsRUFBRSxzQkFBc0I7aUJBQ3BDO2dCQUNELFNBQVMsRUFBRTtvQkFDVCxRQUFRLEVBQUUsUUFBUTtvQkFDbEIsTUFBTSxFQUFFLFVBQVU7aUJBQ25CO2dCQUNELE1BQU0sRUFBRTtvQkFDTixRQUFRLEVBQUUsU0FBUztpQkFDcEI7YUFDRjtZQUNELFVBQVUsRUFBQyxJQUFJO1NBQ2hCLEVBQUMsSUFBSSxDQUFDLENBQUE7SUFDVCxDQUFDO0NBQ0YsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE15VmFsaWRhdG9yIGZyb20gXCIuLi8uLi91dGlscy9teVZhbGlkYXRvclwiO1xyXG5sZXQgdmFsaWRhdG9ySW5zdGFuY2U6TXlWYWxpZGF0b3I7XHJcbmNvbnN0IGFwcCA9IGdldEFwcDxJQXBwT3B0aW9uPigpO1xyXG5QYWdlKHtcclxuICBkYXRhOiB7XHJcbiAgICBUZWxlcGhvbmU6JycsXHJcbiAgICBTdHJlZXQ6JycsXHJcbiAgICBMaW5rTWFuOicnLFxyXG4gICAgU2VxOicnLFxyXG4gICAgbG9jYXRpb246IHt9IGFzIGFueSxcclxuICB9LFxyXG4gIGFzeW5jIG9uTG9hZChvcHRpb25zKSB7XHJcbiAgICBjb25zb2xlLmxvZyhhcHApO1xyXG4gICAgbGV0IHNlcSA9IG9wdGlvbnMuc2VxO1xyXG4gICAgaWYgKHNlcSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgY29uc29sZS5sb2coJ3NlcScsb3B0aW9ucyk7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgU2VxOm9wdGlvbnMuc2VxXHJcbiAgICAgIH0pXHJcbiAgICAgIGF3YWl0IHRoaXMuZ2V0QWRkcmVzc0RldGFpbHMoc2VxKTtcclxuICAgIH1cclxuXHJcbiAgfSxcclxuICBvblJlYWR5KCkge1xyXG4gICAgdGhpcy5pbml0VmFsaWRhdG9yKClcclxuICB9LFxyXG4gIG9uU2hvdygpIHtcclxuXHJcbiAgfSxcclxuICBhc3luYyBnZXRBZGRyZXNzRGV0YWlscyhwYXltZW50YWRkcmVzczpzdHJpbmcpIHtcclxuICAgICBsZXQgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgd3guJHV0aWxzLnRvKFxyXG4gICAgICAgd3guJGh0dHAucmVxdWVzdCh7XHJcbiAgICAgICAgIHVybDpgL3Nob3BwaW5nL2FkZHJlc3MuZG8/bT1nZXRBZGRyZXNzRGV0YWlsYCxcclxuICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgIHBheW1lbnRhZGRyZXNzXHJcbiAgICAgICAgIH1cclxuICAgICAgIH0pXHJcbiAgICAgKVxyXG4gICAgIGlmIChlcnJvcil7XHJcbiAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICByZXR1cm47XHJcbiAgICAgfVxyXG4gICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XHJcbiAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICAuLi5yZXN1bHQubGlzdCxcclxuICAgICAgIFtgbG9jYXRpb24uYWRkcmVzc2BdOnJlc3VsdC5saXN0LkFkZHJlc3MsXHJcbiAgICAgICBbYGxvY2F0aW9uLm5hbWVgXTpyZXN1bHQubGlzdC5BZGRyZXNzTmFtZSxcclxuICAgICAgIFtgbG9jYXRpb24ubG9uZ2l0dWRlYF06cmVzdWx0Lmxpc3QuTG9uZ2l0dWRlLFxyXG4gICAgICAgW2Bsb2NhdGlvbi5sYXRpdHVkZWBdOnJlc3VsdC5saXN0LkxhdGl0dWRlLFxyXG5cclxuICAgICB9KVxyXG4gIH0sXHJcblxyXG4gIC8v5LuO5b6u5L+h6K+75Y+WXHJcbiAgcmVhZEZyb21XeCgpIHtcclxuICAgIHd4LmNob29zZUFkZHJlc3Moe1xyXG4gICAgICBzdWNjZXNzOihyZXMpPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XHJcbiAgICAgICAgbGV0IExpbmtNYW4gPSByZXMudXNlck5hbWU7XHJcbiAgICAgICAgbGV0IFN0cmVldCA9IHJlcy5kZXRhaWxJbmZvO1xyXG4gICAgICAgIGxldCBUZWxlcGhvbmUgPSByZXMudGVsTnVtYmVyO1xyXG4gICAgICAgIC8vXHJcbiAgICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICAgIExpbmtNYW4sXHJcbiAgICAgICAgICBUZWxlcGhvbmUsXHJcbiAgICAgICAgICBTdHJlZXRcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9LFxyXG5cclxuICBnZXRMb2NhdGlvbihlOmFueSl7XHJcbiAgICAvLyBjb25zb2xlLmxvZygn6I635Y+W5Yiw5Zyw5Z2A5a6a5L2NJyxlKTtcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIGxvY2F0aW9uOmUuZGV0YWlsXHJcbiAgICB9KVxyXG4gIH0sXHJcblxyXG4gIGNoZWNrTGlua01hbihlOmFueSl7XHJcbiAgICBsZXQgeyB2YWx1ZSB9ID0gZS5kZXRhaWxcclxuICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgdmFsaWRhdG9ySW5zdGFuY2UuY2hlY2tGaWVsZCgnTGlua01hbicsdmFsdWUpO1xyXG4gIH0sXHJcbiAgY2hlY2tUZWxlcGhvbmUoZTphbnkpe1xyXG4gICAgbGV0IHsgdmFsdWUgfSA9IGUuZGV0YWlsXHJcbiAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgIHZhbGlkYXRvckluc3RhbmNlLmNoZWNrRmllbGQoJ1RlbGVwaG9uZScsdmFsdWUpO1xyXG4gIH0sXHJcbiAgY2hlY2tTdHJlZXQoZTphbnkpe1xyXG4gICAgbGV0IHsgdmFsdWUgfSA9IGUuZGV0YWlsXHJcbiAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgIHZhbGlkYXRvckluc3RhbmNlLmNoZWNrRmllbGQoJ1N0cmVldCcsdmFsdWUpO1xyXG4gIH0sXHJcbiAgLy8gY2hlY2tGaWVsZCh0eXBlOiBzdHJpbmcsdmFsdWU6IHN0cmluZyl7XHJcbiAgLy8gICB2YWxpZGF0b3JJbnN0YW5jZS5jaGVja0ZpZWxkKHR5cGUsdmFsdWUpO1xyXG4gIC8vIH0sXHJcbiAgb25TYXZlKCkge1xyXG4gICAgaWYgKCF0aGlzLmRhdGEuU2VxKSB7XHJcbiAgICAgIGxldCBsb2NhdGlvbkNvbXBvbmVudCA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjbG9jYXRpb24tcGx1Z2luJyk7XHJcbiAgICAgIGxldCBsb2NhdGlvbiA9IGxvY2F0aW9uQ29tcG9uZW50LmdldExvY2F0aW9uKCk7XHJcbiAgICAgIGlmICghbG9jYXRpb24pIHtcclxuICAgICAgICB3eC5zaG93VG9hc3Qoe1xyXG4gICAgICAgICAgdGl0bGU6J+ivt+mAieaLqeaUtui0p+WcsOWdgCcsXHJcbiAgICAgICAgICBpY29uOiAnbm9uZScsXHJcbiAgICAgICAgICBkdXJhdGlvbjozMDAwXHJcbiAgICAgICAgfSlcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfTtcclxuICAgICAgdGhpcy5zZXREYXRhKHtsb2NhdGlvbn0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh2YWxpZGF0b3JJbnN0YW5jZS5jaGVja0FsbERhdGEoKSl7XHJcbiAgICAgIGNvbnNvbGUubG9nKCcuLi4u5o+Q5Lqk6K6i5Y2V5oiQ5YqfJyk7XHJcbiAgICAgIHRoaXMuc2F2ZUFkZHJlc3MoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCfov5jmnInplJnor6/mnKrlpITnkIYnKTtcclxuICAgIH1cclxuXHJcbiAgfSxcclxuICBhc3luYyBzYXZlQWRkcmVzcygpIHtcclxuICAgIGxldCBhYyA9ICduZXcnO1xyXG4gICAgaWYgKHRoaXMuZGF0YS5TZXEpe1xyXG4gICAgICBhYyA9ICdlZGl0JztcclxuICAgIH1cclxuICAgIGxldCBkYXRhID0ge1xyXG4gICAgICBwYXltZW50QWRkcmVzczp0aGlzLmRhdGEuU2VxLFxyXG4gICAgICBhYyxcclxuICAgICAgbGlua01hbjp0aGlzLmRhdGEuTGlua01hbixcclxuICAgICAgdGVsZXBob25lOnRoaXMuZGF0YS5UZWxlcGhvbmUsXHJcbiAgICAgIHN0cmVldDp0aGlzLmRhdGEuU3RyZWV0LFxyXG4gICAgICBhZGRyZXNzTmFtZTp0aGlzLmRhdGEubG9jYXRpb24ubmFtZSxcclxuICAgICAgYWRkcmVzczp0aGlzLmRhdGEubG9jYXRpb24uYWRkcmVzcyxcclxuICAgICAgbG9uZ2l0dWRlOnRoaXMuZGF0YS5sb2NhdGlvbi5sb25naXR1ZGUsXHJcbiAgICAgIGxhdGl0dWRlOnRoaXMuZGF0YS5sb2NhdGlvbi5sYXRpdHVkZSxcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKCdkYXRhJyxkYXRhKTtcclxuICAgIGxldCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCB3eC4kdXRpbHMudG8oXHJcbiAgICAgIHd4LiRodHRwLnJlcXVlc3Qoe1xyXG4gICAgICAgIHVybDpgL3Nob3BwaW5nL2FkZHJlc3MuZG8/bT11cGRhdGVBZGRyZXNzYCxcclxuICAgICAgICBkYXRhOiBkYXRhLFxyXG4gICAgICAgIG1ldGhvZDonUE9TVCdcclxuICAgICAgfSlcclxuICAgIClcclxuICAgIGlmIChlcnJvcil7XHJcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2cocmVzdWx0KTtcclxuICAgIHd4Lm5hdmlnYXRlQmFjaygpO1xyXG4gIH0sXHJcbiAgIG9uRGVsZXRlKCkge1xyXG4gICAgIHd4LnByby5zaG93TW9kYWwoe1xyXG4gICAgICAgdGl0bGU6ICfmj5DnpLonLFxyXG4gICAgICAgY29udGVudDogJ+ehruWumuimgeWIoOmZpOivpeWcsOWdgOWQl++8nycsXHJcbiAgICAgfSkudGhlbigocmVzOmFueSkgPT4ge1xyXG4gICAgICAgLy8gb24gY2xvc2VcclxuICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XHJcbiAgICAgICBpZiAocmVzLmNvbmZpcm0pe1xyXG4gICAgICAgICBjb25zb2xlLmxvZygn56Gu6K6kJyk7XHJcbiAgICAgICAgIHRoaXMuZGVsZXRlQWRkcmVzcygpO1xyXG4gICAgICAgfVxyXG4gICAgIH0pO1xyXG4gIH0sXHJcbiAgYXN5bmMgZGVsZXRlQWRkcmVzcygpIHtcclxuICAgIGxldCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCB3eC4kdXRpbHMudG8oXHJcbiAgICAgIHd4LiRodHRwLnJlcXVlc3Qoe1xyXG4gICAgICAgIHVybDpgL3Nob3BwaW5nL2FkZHJlc3MuZG8/bT1kZWxBZGRyZXNzYCxcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICBwYXltZW50YWRkcmVzczp0aGlzLmRhdGEuU2VxLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgICBpZiAoZXJyb3Ipe1xyXG4gICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XHJcbiAgICB3eC5uYXZpZ2F0ZUJhY2soKTtcclxuICB9LFxyXG5cclxuICAvLyB2YWxpZGF0b3JJbnN0YW5jZSgpe30sXHJcbiAgaW5pdFZhbGlkYXRvcigpe1xyXG4gICAgLy8g5a6e5L6L5YyWXHJcbiAgICB2YWxpZGF0b3JJbnN0YW5jZSA9IG5ldyBNeVZhbGlkYXRvcih7XHJcbiAgICAgIHJ1bGVzOiB7XHJcbiAgICAgICAgTGlua01hbjoge1xyXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgICByYW5nZWxlbmd0aDogWzIsIDMyXVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgVGVsZXBob25lOiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICAgIG1vYmlsZTogdHJ1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIFN0cmVldDoge1xyXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAgbWVzc2FnZXM6IHtcclxuICAgICAgICBMaW5rTWFuOiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogJ+ivt+i+k+WFpeeUqOaIt+WQjScsXHJcbiAgICAgICAgICByYW5nZWxlbmd0aDogJ+iBlOezu+S6uuWnk+WQjeW/hemhu+WcqDIg6IezIDMyIOWtl+espuS5i+mXtO+8gSdcclxuICAgICAgICB9LFxyXG4gICAgICAgIFRlbGVwaG9uZToge1xyXG4gICAgICAgICAgcmVxdWlyZWQ6ICfor7fovpPlhaXmiYvmnLrlj7cnLFxyXG4gICAgICAgICAgbW9iaWxlOiAn5omL5py65Y+35qC85byP5LiN5q2j56GuJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgU3RyZWV0OiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogJ+ivt+i+k+WFpeihl+mBk+WcsOWdgCdcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICBtdWx0aUNoZWNrOnRydWVcclxuICAgIH0sdGhpcylcclxuICB9LFxyXG59KVxyXG5leHBvcnQge31cclxuIl19
\ No newline at end of file
diff --git a/pages/addressEdit/addressEdit.ts b/pages/addressEdit/addressEdit.ts
index 14f0edb..27918a8 100644
--- a/pages/addressEdit/addressEdit.ts
+++ b/pages/addressEdit/addressEdit.ts
@@ -98,7 +98,14 @@
     if (!this.data.Seq) {
       let locationComponent = this.selectComponent('#location-plugin');
       let location = locationComponent.getLocation();
-      if (!location) return;
+      if (!location) {
+        wx.showToast({
+          title:'璇烽�夋嫨鏀惰揣鍦板潃',
+          icon: 'none',
+          duration:3000
+        })
+        return
+      };
       this.setData({location});
     }
 
diff --git a/pages/feedback/feedback.js b/pages/feedback/feedback.js
index 48d85d4..4ce7b17 100644
--- a/pages/feedback/feedback.js
+++ b/pages/feedback/feedback.js
@@ -45,7 +45,11 @@
             radio: event.detail,
         });
     },
-    onSubmit: function () {
+    onSubmit: wx.$utils.debounce(function () {
+        this.submitHandler();
+        return;
+    }),
+    submitHandler: function () {
         var radio = this.data.radio;
         if (radio == '') {
             wx.showToast({
@@ -124,4 +128,4 @@
         });
     }
 });
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZGJhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJmZWVkYmFjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFJLENBQUM7SUFDSCxJQUFJLEVBQUU7UUFDSixLQUFLLEVBQUUsRUFBRTtRQUNULFNBQVMsRUFBQyxFQWlCUDtLQUNKO0lBRUQsUUFBUSxZQUFDLEtBQVM7UUFDaEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNYLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTTtTQUNwQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsUUFBUTtRQUNOLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzVCLElBQUksS0FBSyxJQUFFLEVBQUUsRUFBQztZQUNaLEVBQUUsQ0FBQyxTQUFTLENBQUM7Z0JBQ1gsS0FBSyxFQUFDLE9BQU87Z0JBQ2IsSUFBSSxFQUFDLE1BQU07YUFDWixDQUFDLENBQUE7WUFDRixPQUFPO1NBQ1I7UUFDRCxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUU7WUFBRSxPQUFPO1FBQ25DLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFO1lBQUUsT0FBTztRQUN6QyxJQUFJLElBQUksR0FBRztZQUNULFdBQVcsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVc7WUFDeEMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSztZQUM1QixNQUFNLEVBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRTtZQUM3QixPQUFPLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLO1NBSXhCLENBQUE7UUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUNLLE1BQU07OztnQkFDVixPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNwQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Ozs7S0FDeEI7SUFDSyxlQUFlOzs7Ozs0QkFDRyxXQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUN0QyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQzs0QkFDZixHQUFHLEVBQUMsaURBQWlEO3lCQUN0RCxDQUFDLENBQ0gsRUFBQTs7d0JBSkcsS0FBa0IsU0FJckIsRUFKSSxLQUFLLFFBQUEsRUFBRSxNQUFNLFFBQUE7d0JBS2xCLElBQUksS0FBSyxFQUFDOzRCQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQ25CLFdBQU87eUJBQ1I7d0JBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQzt3QkFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQzs0QkFDWCxTQUFTLEVBQUMsTUFBTSxDQUFDLElBQUk7eUJBQ3RCLENBQUMsQ0FBQTs7Ozs7S0FDSDtJQUNLLFlBQVksWUFBQyxJQUFXOzs7Ozs0QkFFTixXQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUN0QyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQzs0QkFDZixHQUFHLEVBQUMsNkNBQTZDOzRCQUNqRCxJQUFJLE1BQUE7NEJBQ0osTUFBTSxFQUFDLE1BQU07eUJBQ2QsQ0FBQyxDQUNILEVBQUE7O3dCQU5HLEtBQWtCLFNBTXJCLEVBTkksS0FBSyxRQUFBLEVBQUUsTUFBTSxRQUFBO3dCQU9sQixJQUFJLEtBQUssRUFBQzs0QkFDUixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUNuQixXQUFPO3lCQUNSO3dCQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQ3BCLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQTs7Ozs7S0FDbEI7Q0FDRixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbmRleC50c1xuLy8g6I635Y+W5bqU55So5a6e5L6LXG4vLyBpbXBvcnQgYXBwTW9kdWxlIGZyb20gJy4uLy4uL21vZHVsZXMvYXBwJztcblBhZ2Uoe1xuICBkYXRhOiB7XG4gICAgcmFkaW86ICcnLFxuICAgIHJhZGlvTGlzdDpbXG4gICAgICAvLyB7XG4gICAgICAvLyAgIG5hbWU6ICcxJyxcbiAgICAgIC8vICAgbGFiZWw6ICfmlofmnKwxJyxcbiAgICAgIC8vIH0sXG4gICAgICAvLyB7XG4gICAgICAvLyAgIG5hbWU6ICcyJyxcbiAgICAgIC8vICAgbGFiZWw6ICfmlofmnKwyJyxcbiAgICAgIC8vIH0sXG4gICAgICAvLyB7XG4gICAgICAvLyAgIG5hbWU6ICczJyxcbiAgICAgIC8vICAgbGFiZWw6ICfmlofmnKwzJyxcbiAgICAgIC8vIH0sXG4gICAgICAvLyB7XG4gICAgICAvLyAgIG5hbWU6ICc0JyxcbiAgICAgIC8vICAgbGFiZWw6ICfmlofmnKw0JyxcbiAgICAgIC8vIH1cbiAgICAgIF1cbiAgfSxcblxuICBvbkNoYW5nZShldmVudDphbnkpIHtcbiAgICBjb25zb2xlLmxvZyhldmVudC5kZXRhaWwpO1xuICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICByYWRpbzogZXZlbnQuZGV0YWlsLFxuICAgIH0pO1xuICB9LFxuICBvblN1Ym1pdCgpIHtcbiAgICBsZXQgcmFkaW8gPSB0aGlzLmRhdGEucmFkaW87XG4gICAgaWYgKHJhZGlvPT0nJyl7XG4gICAgICB3eC5zaG93VG9hc3Qoe1xuICAgICAgICB0aXRsZTon6K+36YCJ5oup5qCH562+JyxcbiAgICAgICAgaWNvbjonbm9uZSdcbiAgICAgIH0pXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBteUZlZWRiYWNrID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyNteS1mZWVkYmFjay1mb3JtJyk7XG4gICAgaWYgKCFteUZlZWRiYWNrLmhhc1RvcGljKCkpIHJldHVybjtcbiAgICBpZiAoIW15RmVlZGJhY2suaGFzRGVzY3JpcHRpb24oKSkgcmV0dXJuO1xuICAgIGxldCBkYXRhID0ge1xuICAgICAgZGVzY3JpcHRpb246IG15RmVlZGJhY2suZGF0YS5kZXNjcmlwdGlvbixcbiAgICAgIHRvcGljOiBteUZlZWRiYWNrLmRhdGEudG9waWMsXG4gICAgICBpbWFnZXM6bXlGZWVkYmFjay5nZXRJbWFnZXMoKSxcbiAgICAgIGRvY1R5cGU6dGhpcy5kYXRhLnJhZGlvXG4gICAgICAvLyBjdXN0b21lckZlZWRiYWNrUGFyYW1ldGVyOntcbiAgICAgIC8vXG4gICAgICAvLyB9XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKGRhdGEpO1xuICAgIHRoaXMucG9zdEZvcm1EYXRhKGRhdGEpO1xuICB9LFxuICBhc3luYyBvbkxvYWQoKSB7XG4gICAgY29uc29sZS5sb2coJzAwMDAnKTtcbiAgICB0aGlzLmdldEZlZWRiYWNrVHlwZSgpO1xuICB9LFxuICBhc3luYyBnZXRGZWVkYmFja1R5cGUoKXtcbiAgICBsZXQgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgd3guJHV0aWxzLnRvKFxuICAgICAgd3guJGh0dHAucmVxdWVzdCh7XG4gICAgICAgIHVybDpgL3Nob3BwaW5nL2N1c3RvbWVyRmVlZGJhY2suZG8/bT1nZXRGZWVkYmFja1R5cGVgLFxuICAgICAgfSlcbiAgICApXG4gICAgaWYgKGVycm9yKXtcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc29sZS5sb2cocmVzdWx0KTtcbiAgICB0aGlzLnNldERhdGEoe1xuICAgICAgcmFkaW9MaXN0OnJlc3VsdC5saXN0XG4gICAgfSlcbiAgfSxcbiAgYXN5bmMgcG9zdEZvcm1EYXRhKGRhdGE6b2JqZWN0KXtcblxuICAgIGxldCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCB3eC4kdXRpbHMudG8oXG4gICAgICB3eC4kaHR0cC5yZXF1ZXN0KHtcbiAgICAgICAgdXJsOmAvc2hvcHBpbmcvY3VzdG9tZXJGZWVkYmFjay5kbz9tPXNhdmVEb2NDb2RlYCxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgbWV0aG9kOidQT1NUJ1xuICAgICAgfSlcbiAgICApXG4gICAgaWYgKGVycm9yKXtcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc29sZS5sb2cocmVzdWx0KTtcbiAgICB3eC5uYXZpZ2F0ZUJhY2soKVxuICB9XG59KVxuIl19
\ No newline at end of file
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZGJhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJmZWVkYmFjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFJLENBQUM7SUFDSCxJQUFJLEVBQUU7UUFDSixLQUFLLEVBQUUsRUFBRTtRQUNULFNBQVMsRUFBQyxFQWlCUDtLQUNKO0lBRUQsUUFBUSxZQUFDLEtBQVM7UUFDaEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNYLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTTtTQUNwQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsUUFBUSxFQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixPQUFPO0lBQ1QsQ0FBQyxDQUFDO0lBQ0YsYUFBYTtRQUNYLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzVCLElBQUksS0FBSyxJQUFFLEVBQUUsRUFBQztZQUNaLEVBQUUsQ0FBQyxTQUFTLENBQUM7Z0JBQ1gsS0FBSyxFQUFDLE9BQU87Z0JBQ2IsSUFBSSxFQUFDLE1BQU07YUFDWixDQUFDLENBQUE7WUFDRixPQUFPO1NBQ1I7UUFDRCxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUU7WUFBRSxPQUFPO1FBQ25DLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFO1lBQUUsT0FBTztRQUN6QyxJQUFJLElBQUksR0FBRztZQUNULFdBQVcsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVc7WUFDeEMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSztZQUM1QixNQUFNLEVBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRTtZQUM3QixPQUFPLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLO1NBSXhCLENBQUE7UUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUNLLE1BQU07OztnQkFDVixPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNwQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Ozs7S0FDeEI7SUFDSyxlQUFlOzs7Ozs0QkFDRyxXQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUN0QyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQzs0QkFDZixHQUFHLEVBQUMsaURBQWlEO3lCQUN0RCxDQUFDLENBQ0gsRUFBQTs7d0JBSkcsS0FBa0IsU0FJckIsRUFKSSxLQUFLLFFBQUEsRUFBRSxNQUFNLFFBQUE7d0JBS2xCLElBQUksS0FBSyxFQUFDOzRCQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQ25CLFdBQU87eUJBQ1I7d0JBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQzt3QkFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQzs0QkFDWCxTQUFTLEVBQUMsTUFBTSxDQUFDLElBQUk7eUJBQ3RCLENBQUMsQ0FBQTs7Ozs7S0FDSDtJQUNLLFlBQVksWUFBQyxJQUFXOzs7Ozs0QkFFTixXQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUN0QyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQzs0QkFDZixHQUFHLEVBQUMsNkNBQTZDOzRCQUNqRCxJQUFJLE1BQUE7NEJBQ0osTUFBTSxFQUFDLE1BQU07eUJBQ2QsQ0FBQyxDQUNILEVBQUE7O3dCQU5HLEtBQWtCLFNBTXJCLEVBTkksS0FBSyxRQUFBLEVBQUUsTUFBTSxRQUFBO3dCQU9sQixJQUFJLEtBQUssRUFBQzs0QkFDUixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUNuQixXQUFPO3lCQUNSO3dCQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQ3BCLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQTs7Ozs7S0FDbEI7Q0FDRixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbmRleC50c1xuLy8g6I635Y+W5bqU55So5a6e5L6LXG4vLyBpbXBvcnQgYXBwTW9kdWxlIGZyb20gJy4uLy4uL21vZHVsZXMvYXBwJztcblBhZ2Uoe1xuICBkYXRhOiB7XG4gICAgcmFkaW86ICcnLFxuICAgIHJhZGlvTGlzdDpbXG4gICAgICAvLyB7XG4gICAgICAvLyAgIG5hbWU6ICcxJyxcbiAgICAgIC8vICAgbGFiZWw6ICfmlofmnKwxJyxcbiAgICAgIC8vIH0sXG4gICAgICAvLyB7XG4gICAgICAvLyAgIG5hbWU6ICcyJyxcbiAgICAgIC8vICAgbGFiZWw6ICfmlofmnKwyJyxcbiAgICAgIC8vIH0sXG4gICAgICAvLyB7XG4gICAgICAvLyAgIG5hbWU6ICczJyxcbiAgICAgIC8vICAgbGFiZWw6ICfmlofmnKwzJyxcbiAgICAgIC8vIH0sXG4gICAgICAvLyB7XG4gICAgICAvLyAgIG5hbWU6ICc0JyxcbiAgICAgIC8vICAgbGFiZWw6ICfmlofmnKw0JyxcbiAgICAgIC8vIH1cbiAgICAgIF1cbiAgfSxcblxuICBvbkNoYW5nZShldmVudDphbnkpIHtcbiAgICBjb25zb2xlLmxvZyhldmVudC5kZXRhaWwpO1xuICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICByYWRpbzogZXZlbnQuZGV0YWlsLFxuICAgIH0pO1xuICB9LFxuICBvblN1Ym1pdDp3eC4kdXRpbHMuZGVib3VuY2UoZnVuY3Rpb24odGhpczphbnkpe1xuICAgIHRoaXMuc3VibWl0SGFuZGxlcigpO1xuICAgIHJldHVybjtcbiAgfSksXG4gIHN1Ym1pdEhhbmRsZXIoKSB7XG4gICAgbGV0IHJhZGlvID0gdGhpcy5kYXRhLnJhZGlvO1xuICAgIGlmIChyYWRpbz09Jycpe1xuICAgICAgd3guc2hvd1RvYXN0KHtcbiAgICAgICAgdGl0bGU6J+ivt+mAieaLqeagh+etvicsXG4gICAgICAgIGljb246J25vbmUnXG4gICAgICB9KVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgbXlGZWVkYmFjayA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjbXktZmVlZGJhY2stZm9ybScpO1xuICAgIGlmICghbXlGZWVkYmFjay5oYXNUb3BpYygpKSByZXR1cm47XG4gICAgaWYgKCFteUZlZWRiYWNrLmhhc0Rlc2NyaXB0aW9uKCkpIHJldHVybjtcbiAgICBsZXQgZGF0YSA9IHtcbiAgICAgIGRlc2NyaXB0aW9uOiBteUZlZWRiYWNrLmRhdGEuZGVzY3JpcHRpb24sXG4gICAgICB0b3BpYzogbXlGZWVkYmFjay5kYXRhLnRvcGljLFxuICAgICAgaW1hZ2VzOm15RmVlZGJhY2suZ2V0SW1hZ2VzKCksXG4gICAgICBkb2NUeXBlOnRoaXMuZGF0YS5yYWRpb1xuICAgICAgLy8gY3VzdG9tZXJGZWVkYmFja1BhcmFtZXRlcjp7XG4gICAgICAvL1xuICAgICAgLy8gfVxuICAgIH1cbiAgICBjb25zb2xlLmxvZyhkYXRhKTtcbiAgICB0aGlzLnBvc3RGb3JtRGF0YShkYXRhKTtcbiAgfSxcbiAgYXN5bmMgb25Mb2FkKCkge1xuICAgIGNvbnNvbGUubG9nKCcwMDAwJyk7XG4gICAgdGhpcy5nZXRGZWVkYmFja1R5cGUoKTtcbiAgfSxcbiAgYXN5bmMgZ2V0RmVlZGJhY2tUeXBlKCl7XG4gICAgbGV0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IHd4LiR1dGlscy50byhcbiAgICAgIHd4LiRodHRwLnJlcXVlc3Qoe1xuICAgICAgICB1cmw6YC9zaG9wcGluZy9jdXN0b21lckZlZWRiYWNrLmRvP209Z2V0RmVlZGJhY2tUeXBlYCxcbiAgICAgIH0pXG4gICAgKVxuICAgIGlmIChlcnJvcil7XG4gICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gICAgdGhpcy5zZXREYXRhKHtcbiAgICAgIHJhZGlvTGlzdDpyZXN1bHQubGlzdFxuICAgIH0pXG4gIH0sXG4gIGFzeW5jIHBvc3RGb3JtRGF0YShkYXRhOm9iamVjdCl7XG5cbiAgICBsZXQgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgd3guJHV0aWxzLnRvKFxuICAgICAgd3guJGh0dHAucmVxdWVzdCh7XG4gICAgICAgIHVybDpgL3Nob3BwaW5nL2N1c3RvbWVyRmVlZGJhY2suZG8/bT1zYXZlRG9jQ29kZWAsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIG1ldGhvZDonUE9TVCdcbiAgICAgIH0pXG4gICAgKVxuICAgIGlmIChlcnJvcil7XG4gICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gICAgd3gubmF2aWdhdGVCYWNrKClcbiAgfVxufSlcbiJdfQ==
\ No newline at end of file
diff --git a/pages/feedbackDetail/feedbackDetail.js b/pages/feedbackDetail/feedbackDetail.js
index 2b48b83..5edc5ab 100644
--- a/pages/feedbackDetail/feedbackDetail.js
+++ b/pages/feedbackDetail/feedbackDetail.js
@@ -64,7 +64,11 @@
             });
         });
     },
-    onSubmit: function () {
+    onSubmit: wx.$utils.debounce(function () {
+        this.submitHandler();
+        return;
+    }),
+    submitHandler: function () {
         return __awaiter(this, void 0, void 0, function () {
             var myFeedback, data;
             return __generator(this, function (_a) {
@@ -152,4 +156,4 @@
         });
     }
 });
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZGJhY2tEZXRhaWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJmZWVkYmFja0RldGFpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFJLENBQUM7SUFDSCxJQUFJLEVBQUU7UUFDSixZQUFZLEVBQUMsS0FBSztRQUNsQixNQUFNLEVBQUMsRUFBUztRQUNoQixPQUFPLEVBQUMsRUFBRTtLQUNYO0lBRUQsVUFBVTtRQUVSLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDWCxZQUFZLEVBQUMsSUFBSTtTQUNsQixDQUFDLENBQUE7SUFDSixDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxPQUFPLENBQUM7WUFDWCxZQUFZLEVBQUMsS0FBSztTQUNuQixDQUFDLENBQUE7SUFDSixDQUFDO0lBR0ssTUFBTSxZQUFDLE9BQU87Ozs7Z0JBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2hCLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLE9BQU8sQ0FBQztvQkFDWCxPQUFPLFNBQUE7aUJBQ1IsQ0FBQyxDQUFBO2dCQUNGLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFBOzs7O0tBQ3pCO0lBQ0ssUUFBUTs7Ozs7O3dCQUNSLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLG1CQUFtQixDQUFDLENBQUM7d0JBQzNELElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFOzRCQUFFLFdBQU87d0JBQ3JDLElBQUksR0FBRzs0QkFDVCxZQUFZLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXOzRCQUN6QyxNQUFNLEVBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRTs0QkFDN0IsT0FBTyxFQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87eUJBQ2pDLENBQUE7d0JBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO3dCQUM5QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNkLFdBQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBQTs7NkJBQTdCLFNBQTZCLEVBQTdCLGNBQTZCO3dCQUMvQixXQUFNLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFBOzt3QkFBOUIsU0FBOEIsQ0FBQzt3QkFDL0IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO3dCQUNuQixVQUFVLENBQUMsYUFBYSxFQUFFLENBQUM7d0JBQzNCLFVBQVUsQ0FBQzs0QkFDVCxFQUFFLENBQUMsWUFBWSxDQUFDO2dDQUNkLFFBQVEsRUFBQyxVQUFVO2dDQUNuQixRQUFRLEVBQUUsR0FBRzs2QkFDZCxDQUFDLENBQUE7d0JBQ0osQ0FBQyxFQUFDLEdBQUcsQ0FBQyxDQUFBOzs7Ozs7S0FJVDtJQUNLLFlBQVksWUFBQyxJQUFXOzs7Ozs0QkFDTixXQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUN0QyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQzs0QkFDZixHQUFHLEVBQUMsa0RBQWtEOzRCQUN0RCxJQUFJLE1BQUE7NEJBQ0osTUFBTSxFQUFDLE1BQU07eUJBQ2QsQ0FBQyxDQUNILEVBQUE7O3dCQU5HLEtBQWtCLFNBTXJCLEVBTkksS0FBSyxRQUFBLEVBQUUsTUFBTSxRQUFBO3dCQU9sQixJQUFJLEtBQUssRUFBQzs0QkFDUixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUNuQixXQUFPLEtBQUssRUFBQzt5QkFDZDt3QkFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO3dCQUNwQixXQUFPLElBQUksRUFBQzs7OztLQUNiO0lBQ0ssaUJBQWlCOzs7Ozs7d0JBQ2pCLElBQUksR0FBRTs0QkFDUixPQUFPLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO3lCQUMxQixDQUFDO3dCQUNvQixXQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUN0QyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztnQ0FDZixHQUFHLEVBQUMsbURBQW1EO2dDQUN2RCxJQUFJLE1BQUE7NkJBQ0wsQ0FBQyxDQUNILEVBQUE7O3dCQUxHLEtBQWtCLFNBS3JCLEVBTEksS0FBSyxRQUFBLEVBQUUsTUFBTSxRQUFBO3dCQU1sQixJQUFJLEtBQUssRUFBQzs0QkFDUixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUNuQixXQUFPO3lCQUNSO3dCQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUM7NEJBQ1gsTUFBTSxFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDOzRCQUNyQixnQkFBZ0IsRUFBQyxNQUFNLENBQUMsZ0JBQWdCO3lCQUN6QyxDQUFDLENBQUE7Ozs7O0tBQ0g7Q0FDRixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbmRleC50c1xuLy8g6I635Y+W5bqU55So5a6e5L6LXG4vLyBpbXBvcnQgYXBwTW9kdWxlIGZyb20gJy4uLy4uL21vZHVsZXMvYXBwJztcblBhZ2Uoe1xuICBkYXRhOiB7XG4gICAgaXNTaG93RGlhbG9nOmZhbHNlLFxuICAgIGRldGFpbDp7fSBhcyBhbnksXG4gICAgZG9jY29kZTonJ1xuICB9LFxuXG4gIHNob3dEaWFsb2coKXtcbiAgICAvLyBjb25zb2xlLmxvZygxMTExMTExMTExMTEpO1xuICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICBpc1Nob3dEaWFsb2c6dHJ1ZVxuICAgIH0pXG4gIH0sXG4gIGNsb3NlRGlhbG9nKCl7XG4gICAgdGhpcy5zZXREYXRhKHtcbiAgICAgIGlzU2hvd0RpYWxvZzpmYWxzZVxuICAgIH0pXG4gIH0sXG5cblxuICBhc3luYyBvbkxvYWQob3B0aW9ucykge1xuICAgIGNvbnNvbGUubG9nKCcwMDAwJyk7XG4gICAgbGV0IGRvY2NvZGUgPSBvcHRpb25zLmRvY2NvZGUgfHwgJyc7XG4gICAgdGhpcy5zZXREYXRhKHtcbiAgICAgIGRvY2NvZGVcbiAgICB9KVxuICAgIHRoaXMuZ2V0RmVlZGJhY2tEZXRhaWwoKVxuICB9LFxuICBhc3luYyBvblN1Ym1pdCgpIHtcbiAgICBsZXQgbXlGZWVkYmFjayA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjbXktZmVlZGJhY2stZm9ybScpO1xuICAgIGlmICghbXlGZWVkYmFjay5oYXNEZXNjcmlwdGlvbigpKSByZXR1cm47XG4gICAgbGV0IGRhdGEgPSB7XG4gICAgICByZXBseU1lc3NhZ2U6IG15RmVlZGJhY2suZGF0YS5kZXNjcmlwdGlvbixcbiAgICAgIGltYWdlczpteUZlZWRiYWNrLmdldEltYWdlcygpLFxuICAgICAgZG9jQ29kZTp0aGlzLmRhdGEuZGV0YWlsLmRvY0NvZGVcbiAgICB9XG4gICAgY29uc29sZS5sb2codGhpcy5kYXRhLmRldGFpbCk7XG4gICAgY29uc29sZS5sb2coZGF0YSk7XG4gICAgaWYgKGF3YWl0IHRoaXMucG9zdEZvcm1EYXRhKGRhdGEpKXtcbiAgICAgIGF3YWl0IHRoaXMuZ2V0RmVlZGJhY2tEZXRhaWwoKTtcbiAgICAgIHRoaXMuY2xvc2VEaWFsb2coKTtcbiAgICAgIG15RmVlZGJhY2suY2xlYXJGb3JtRGF0YSgpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PntcbiAgICAgICAgd3gucGFnZVNjcm9sbFRvKHtcbiAgICAgICAgICBzZWxlY3RvcjonI25vLW1vcmUnLFxuICAgICAgICAgIGR1cmF0aW9uOiAzMDBcbiAgICAgICAgfSlcbiAgICAgIH0sNTAwKVxuXG4gICAgfVxuXG4gIH0sXG4gIGFzeW5jIHBvc3RGb3JtRGF0YShkYXRhOm9iamVjdCl7XG4gICAgbGV0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IHd4LiR1dGlscy50byhcbiAgICAgIHd4LiRodHRwLnJlcXVlc3Qoe1xuICAgICAgICB1cmw6YC9zaG9wcGluZy9jdXN0b21lckZlZWRiYWNrLmRvP209c2F2ZVJlcGx5TWVzc2FnZWAsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIG1ldGhvZDonUE9TVCdcbiAgICAgIH0pXG4gICAgKVxuICAgIGlmIChlcnJvcil7XG4gICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIGFzeW5jIGdldEZlZWRiYWNrRGV0YWlsKCl7XG4gICAgbGV0IGRhdGEgPXtcbiAgICAgIGRvY2NvZGU6dGhpcy5kYXRhLmRvY2NvZGVcbiAgICB9O1xuICAgIGxldCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCB3eC4kdXRpbHMudG8oXG4gICAgICB3eC4kaHR0cC5yZXF1ZXN0KHtcbiAgICAgICAgdXJsOmAvc2hvcHBpbmcvY3VzdG9tZXJGZWVkYmFjay5kbz9tPWdldEZlZWRiYWNrRGV0YWlsYCxcbiAgICAgICAgZGF0YVxuICAgICAgfSlcbiAgICApXG4gICAgaWYgKGVycm9yKXtcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc29sZS5sb2cocmVzdWx0KTtcbiAgICB0aGlzLnNldERhdGEoe1xuICAgICAgZGV0YWlsOnJlc3VsdC5saXN0WzBdLFxuICAgICAgcmVwbHlNZXNzYWdlTGlzdDpyZXN1bHQucmVwbHlNZXNzYWdlTGlzdFxuICAgIH0pXG4gIH1cbn0pXG4iXX0=
\ No newline at end of file
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZGJhY2tEZXRhaWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJmZWVkYmFja0RldGFpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFJLENBQUM7SUFDSCxJQUFJLEVBQUU7UUFDSixZQUFZLEVBQUMsS0FBSztRQUNsQixNQUFNLEVBQUMsRUFBUztRQUNoQixPQUFPLEVBQUMsRUFBRTtLQUNYO0lBRUQsVUFBVTtRQUVSLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDWCxZQUFZLEVBQUMsSUFBSTtTQUNsQixDQUFDLENBQUE7SUFDSixDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxPQUFPLENBQUM7WUFDWCxZQUFZLEVBQUMsS0FBSztTQUNuQixDQUFDLENBQUE7SUFDSixDQUFDO0lBR0ssTUFBTSxZQUFDLE9BQU87Ozs7Z0JBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2hCLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLE9BQU8sQ0FBQztvQkFDWCxPQUFPLFNBQUE7aUJBQ1IsQ0FBQyxDQUFBO2dCQUNGLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFBOzs7O0tBQ3pCO0lBRUQsUUFBUSxFQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixPQUFPO0lBQ1QsQ0FBQyxDQUFDO0lBQ0ksYUFBYTs7Ozs7O3dCQUNiLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLG1CQUFtQixDQUFDLENBQUM7d0JBQzNELElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFOzRCQUFFLFdBQU87d0JBQ3JDLElBQUksR0FBRzs0QkFDVCxZQUFZLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXOzRCQUN6QyxNQUFNLEVBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRTs0QkFDN0IsT0FBTyxFQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87eUJBQ2pDLENBQUE7d0JBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO3dCQUM5QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNkLFdBQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBQTs7NkJBQTdCLFNBQTZCLEVBQTdCLGNBQTZCO3dCQUMvQixXQUFNLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFBOzt3QkFBOUIsU0FBOEIsQ0FBQzt3QkFDL0IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO3dCQUNuQixVQUFVLENBQUMsYUFBYSxFQUFFLENBQUM7d0JBQzNCLFVBQVUsQ0FBQzs0QkFDVCxFQUFFLENBQUMsWUFBWSxDQUFDO2dDQUNkLFFBQVEsRUFBQyxVQUFVO2dDQUNuQixRQUFRLEVBQUUsR0FBRzs2QkFDZCxDQUFDLENBQUE7d0JBQ0osQ0FBQyxFQUFDLEdBQUcsQ0FBQyxDQUFBOzs7Ozs7S0FJVDtJQUNLLFlBQVksWUFBQyxJQUFXOzs7Ozs0QkFDTixXQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUN0QyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQzs0QkFDZixHQUFHLEVBQUMsa0RBQWtEOzRCQUN0RCxJQUFJLE1BQUE7NEJBQ0osTUFBTSxFQUFDLE1BQU07eUJBQ2QsQ0FBQyxDQUNILEVBQUE7O3dCQU5HLEtBQWtCLFNBTXJCLEVBTkksS0FBSyxRQUFBLEVBQUUsTUFBTSxRQUFBO3dCQU9sQixJQUFJLEtBQUssRUFBQzs0QkFDUixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUNuQixXQUFPLEtBQUssRUFBQzt5QkFDZDt3QkFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO3dCQUNwQixXQUFPLElBQUksRUFBQzs7OztLQUNiO0lBQ0ssaUJBQWlCOzs7Ozs7d0JBQ2pCLElBQUksR0FBRTs0QkFDUixPQUFPLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO3lCQUMxQixDQUFDO3dCQUNvQixXQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUN0QyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztnQ0FDZixHQUFHLEVBQUMsbURBQW1EO2dDQUN2RCxJQUFJLE1BQUE7NkJBQ0wsQ0FBQyxDQUNILEVBQUE7O3dCQUxHLEtBQWtCLFNBS3JCLEVBTEksS0FBSyxRQUFBLEVBQUUsTUFBTSxRQUFBO3dCQU1sQixJQUFJLEtBQUssRUFBQzs0QkFDUixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUNuQixXQUFPO3lCQUNSO3dCQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUM7NEJBQ1gsTUFBTSxFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDOzRCQUNyQixnQkFBZ0IsRUFBQyxNQUFNLENBQUMsZ0JBQWdCO3lCQUN6QyxDQUFDLENBQUE7Ozs7O0tBQ0g7Q0FDRixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbmRleC50c1xuLy8g6I635Y+W5bqU55So5a6e5L6LXG4vLyBpbXBvcnQgYXBwTW9kdWxlIGZyb20gJy4uLy4uL21vZHVsZXMvYXBwJztcblBhZ2Uoe1xuICBkYXRhOiB7XG4gICAgaXNTaG93RGlhbG9nOmZhbHNlLFxuICAgIGRldGFpbDp7fSBhcyBhbnksXG4gICAgZG9jY29kZTonJ1xuICB9LFxuXG4gIHNob3dEaWFsb2coKXtcbiAgICAvLyBjb25zb2xlLmxvZygxMTExMTExMTExMTEpO1xuICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICBpc1Nob3dEaWFsb2c6dHJ1ZVxuICAgIH0pXG4gIH0sXG4gIGNsb3NlRGlhbG9nKCl7XG4gICAgdGhpcy5zZXREYXRhKHtcbiAgICAgIGlzU2hvd0RpYWxvZzpmYWxzZVxuICAgIH0pXG4gIH0sXG5cblxuICBhc3luYyBvbkxvYWQob3B0aW9ucykge1xuICAgIGNvbnNvbGUubG9nKCcwMDAwJyk7XG4gICAgbGV0IGRvY2NvZGUgPSBvcHRpb25zLmRvY2NvZGUgfHwgJyc7XG4gICAgdGhpcy5zZXREYXRhKHtcbiAgICAgIGRvY2NvZGVcbiAgICB9KVxuICAgIHRoaXMuZ2V0RmVlZGJhY2tEZXRhaWwoKVxuICB9LFxuICAvL+aPkOS6pOWPjemmiFxuICBvblN1Ym1pdDp3eC4kdXRpbHMuZGVib3VuY2UoZnVuY3Rpb24odGhpczphbnkpe1xuICAgIHRoaXMuc3VibWl0SGFuZGxlcigpO1xuICAgIHJldHVybjtcbiAgfSksXG4gIGFzeW5jIHN1Ym1pdEhhbmRsZXIoKSB7XG4gICAgbGV0IG15RmVlZGJhY2sgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI215LWZlZWRiYWNrLWZvcm0nKTtcbiAgICBpZiAoIW15RmVlZGJhY2suaGFzRGVzY3JpcHRpb24oKSkgcmV0dXJuO1xuICAgIGxldCBkYXRhID0ge1xuICAgICAgcmVwbHlNZXNzYWdlOiBteUZlZWRiYWNrLmRhdGEuZGVzY3JpcHRpb24sXG4gICAgICBpbWFnZXM6bXlGZWVkYmFjay5nZXRJbWFnZXMoKSxcbiAgICAgIGRvY0NvZGU6dGhpcy5kYXRhLmRldGFpbC5kb2NDb2RlXG4gICAgfVxuICAgIGNvbnNvbGUubG9nKHRoaXMuZGF0YS5kZXRhaWwpO1xuICAgIGNvbnNvbGUubG9nKGRhdGEpO1xuICAgIGlmIChhd2FpdCB0aGlzLnBvc3RGb3JtRGF0YShkYXRhKSl7XG4gICAgICBhd2FpdCB0aGlzLmdldEZlZWRiYWNrRGV0YWlsKCk7XG4gICAgICB0aGlzLmNsb3NlRGlhbG9nKCk7XG4gICAgICBteUZlZWRiYWNrLmNsZWFyRm9ybURhdGEoKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT57XG4gICAgICAgIHd4LnBhZ2VTY3JvbGxUbyh7XG4gICAgICAgICAgc2VsZWN0b3I6JyNuby1tb3JlJyxcbiAgICAgICAgICBkdXJhdGlvbjogMzAwXG4gICAgICAgIH0pXG4gICAgICB9LDUwMClcblxuICAgIH1cblxuICB9LFxuICBhc3luYyBwb3N0Rm9ybURhdGEoZGF0YTpvYmplY3Qpe1xuICAgIGxldCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCB3eC4kdXRpbHMudG8oXG4gICAgICB3eC4kaHR0cC5yZXF1ZXN0KHtcbiAgICAgICAgdXJsOmAvc2hvcHBpbmcvY3VzdG9tZXJGZWVkYmFjay5kbz9tPXNhdmVSZXBseU1lc3NhZ2VgLFxuICAgICAgICBkYXRhLFxuICAgICAgICBtZXRob2Q6J1BPU1QnXG4gICAgICB9KVxuICAgIClcbiAgICBpZiAoZXJyb3Ipe1xuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICAgIHJldHVybiB0cnVlO1xuICB9LFxuICBhc3luYyBnZXRGZWVkYmFja0RldGFpbCgpe1xuICAgIGxldCBkYXRhID17XG4gICAgICBkb2Njb2RlOnRoaXMuZGF0YS5kb2Njb2RlXG4gICAgfTtcbiAgICBsZXQgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgd3guJHV0aWxzLnRvKFxuICAgICAgd3guJGh0dHAucmVxdWVzdCh7XG4gICAgICAgIHVybDpgL3Nob3BwaW5nL2N1c3RvbWVyRmVlZGJhY2suZG8/bT1nZXRGZWVkYmFja0RldGFpbGAsXG4gICAgICAgIGRhdGFcbiAgICAgIH0pXG4gICAgKVxuICAgIGlmIChlcnJvcil7XG4gICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gICAgdGhpcy5zZXREYXRhKHtcbiAgICAgIGRldGFpbDpyZXN1bHQubGlzdFswXSxcbiAgICAgIHJlcGx5TWVzc2FnZUxpc3Q6cmVzdWx0LnJlcGx5TWVzc2FnZUxpc3RcbiAgICB9KVxuICB9XG59KVxuIl19
\ No newline at end of file
diff --git a/pages/flashSaleCreate/flashSaleCreate.js b/pages/flashSaleCreate/flashSaleCreate.js
index b2b3286..f0bd01e 100644
--- a/pages/flashSaleCreate/flashSaleCreate.js
+++ b/pages/flashSaleCreate/flashSaleCreate.js
@@ -1,15 +1,4 @@
 "use strict";
-var __assign = (this && this.__assign) || function () {
-    __assign = Object.assign || function(t) {
-        for (var s, i = 1, n = arguments.length; i < n; i++) {
-            s = arguments[i];
-            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
-                t[p] = s[p];
-        }
-        return t;
-    };
-    return __assign.apply(this, arguments);
-};
 var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
     return new (P || (P = Promise))(function (resolve, reject) {
         function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -47,6 +36,7 @@
 };
 Object.defineProperty(exports, "__esModule", { value: true });
 var myValidator_1 = require("../../utils/myValidator");
+var promotionsCreate_1 = require("../../modules/promotionsCreate");
 var validatorInstance;
 Page({
     data: {
@@ -83,52 +73,11 @@
     },
     getSaveData: function () {
         return __awaiter(this, void 0, void 0, function () {
-            var doccode, _a, error, result, data, formData;
-            return __generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        doccode = this.data.doccode;
-                        return [4, wx.$utils.to(wx.$http.request({
-                                url: "/shopping/panicBuying.do?m=getPanicBuyingDetail",
-                                data: {
-                                    doccode: doccode,
-                                    isEdit: true,
-                                    SellerOpenId: wx.globalData.OpenId
-                                }
-                            }))];
+            return __generator(this, function (_a) {
+                switch (_a.label) {
+                    case 0: return [4, promotionsCreate_1.getSaveData(this)];
                     case 1:
-                        _a = _b.sent(), error = _a[0], result = _a[1];
-                        if (error) {
-                            console.log(error);
-                            return [2];
-                        }
-                        console.log(result);
-                        data = result.list[0];
-                        formData = {
-                            promotionsTitle: data.title,
-                            originalPrice: data.originalPrice,
-                            flashSalePrice: data.salesPrice,
-                            flashSaleTotal: data.quantity,
-                            flashSaleLimit: data.restrictBuyingQuantity,
-                            promotionDescription: data.description,
-                            startTime: data.effectiveStartDate,
-                            endTime: data.effectiveEndDate,
-                            coverImageList: (data.coverImageUrl && this.getCoverImageList(data)) || [],
-                            imagesList: data.imagesUrl,
-                            coverImage: data.coverImage,
-                            images: data.images,
-                            freeId: data.freeId,
-                        };
-                        this.setData(__assign({}, formData, { coverImageUrl: data.coverImageUrl, sellerList: result.sellerList, storeList: result.storeList, status: data.panicBuyingStatus, delivery: {
-                                freeId: data.freeId,
-                                freeName: data.freeName,
-                                isRequiredAddress: data.isRequiredAddress,
-                                transCosts: data.transCosts,
-                            } }));
-                        console.log('閰嶉�佹暟鎹�傘�傘��', this.data.delivery);
-                        wx.setNavigationBarTitle({
-                            title: data.title
-                        });
+                        _a.sent();
                         return [2];
                 }
             });
@@ -212,191 +161,24 @@
             promotionDescription: value.trim()
         });
     },
-    postFormData: function (data) {
-        return __awaiter(this, void 0, void 0, function () {
-            var _a, error, res;
-            return __generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0: return [4, wx.$utils.to(wx.$http.request({
-                            url: '/shopping/panicBuying.do?m=saveDocCode',
-                            data: data,
-                            method: 'POST'
-                        }))];
-                    case 1:
-                        _a = _b.sent(), error = _a[0], res = _a[1];
-                        if (error) {
-                            console.log(error);
-                            return [2, false];
-                        }
-                        console.log(res);
-                        if (res.state === 'success') {
-                            wx.showToast({
-                                title: '鎴愬姛',
-                                duration: 2000
-                            });
-                            this.setData({
-                                doccode: res.DocCode
-                            });
-                        }
-                        if (res.state === 'failed' && res.sellerCheckedBalance > 0) {
-                            this.setData({
-                                sellerUnCheckedNames: res.sellerUnCheckedNames,
-                                isShowDialog: true
-                            });
-                        }
-                        return [2, res.state === 'success'];
-                }
-            });
-        });
-    },
     onSubmit: wx.$utils.debounce(function () {
         this.submitHandler();
         return;
     }),
     submitHandler: function () {
         return __awaiter(this, void 0, void 0, function () {
-            var timeQuantum, sellerEdit, storeEdit, fileUploader, fileUploaderMultiple, deliveryMethod, checkTransCosts, transCosts, checkStartTime, checkEndTime, checkCoverImage, checkAllData, sellerList, storeList, checkDefaultSeller, checkArr, data, coverImage, coverImageUrl, images, formData;
             return __generator(this, function (_a) {
                 switch (_a.label) {
-                    case 0:
-                        timeQuantum = this.selectComponent('#time-quantum');
-                        sellerEdit = this.selectComponent('#seller-edit');
-                        storeEdit = this.selectComponent('#store-edit');
-                        fileUploader = this.selectComponent('#file-uploader');
-                        fileUploaderMultiple = this.selectComponent('#file-uploader-multiple');
-                        deliveryMethod = this.selectComponent('#delivery-method');
-                        checkTransCosts = true;
-                        transCosts = 0;
-                        if (deliveryMethod.data.isRequiredAddress) {
-                            checkTransCosts = deliveryMethod.checkFields();
-                            transCosts = Number(deliveryMethod.data.transCosts);
-                        }
-                        console.log(timeQuantum);
-                        checkStartTime = timeQuantum.checkTime("startTime", "璇烽�夋嫨璁″垝寮�濮嬫椂闂�");
-                        checkEndTime = timeQuantum.checkTime("endTime", "璇烽�夋嫨璁″垝缁撴潫鏃堕棿");
-                        checkCoverImage = fileUploader.checkImages("coverImage", "璇蜂笂浼犱竴寮犲皝闈㈠浘");
-                        checkAllData = validatorInstance.checkAllData();
-                        sellerList = sellerEdit.getSellerList();
-                        if (sellerList.length < 1) {
-                            wx.showToast({
-                                title: '璇烽�夋嫨钀ラ攢浜哄憳',
-                                icon: 'none',
-                                duration: 2000
-                            });
-                            return [2];
-                        }
-                        storeList = storeEdit.getSelectedStoreIdList();
-                        console.log('寰呮彁浜ょ殑闂ㄥ簵id', storeList);
-                        checkDefaultSeller = sellerEdit.checkDefaultSeller();
-                        if (!checkDefaultSeller) {
-                            wx.showToast({
-                                title: '璇烽�夋嫨榛樿钀ラ攢浜哄憳',
-                                icon: 'none',
-                                duration: 2000
-                            });
-                            return [2];
-                        }
-                        console.log('checkDefaultSeller', checkDefaultSeller);
-                        checkArr = [checkTransCosts, checkStartTime, checkEndTime, checkCoverImage, checkAllData];
-                        data = {};
-                        if (!checkArr.every(function (item) {
-                            return item;
-                        })) return [3, 2];
-                        console.log('....鎻愪氦鎴愬姛');
-                        coverImage = fileUploader.getCoverImageUnid();
-                        coverImageUrl = fileUploader.getImgList()[0].url || '';
-                        this.setData({
-                            coverImageUrl: coverImageUrl
-                        });
-                        images = fileUploaderMultiple.getImagesUnid();
-                        console.log(coverImage, images, coverImageUrl);
-                        formData = this.data;
-                        data = {
-                            docCode: formData.doccode,
-                            formId: formData.formId,
-                            docStatus: 100,
-                            coverImage: coverImage,
-                            images: images,
-                            transCosts: transCosts,
-                            effectiveStartDate: formData.startTime,
-                            effectiveEndDate: formData.endTime,
-                            freeId: formData.freeId,
-                            title: formData.promotionsTitle,
-                            originalPrice: Number(formData.originalPrice),
-                            salesPrice: Number(formData.flashSalePrice),
-                            quantity: Number(formData.flashSaleTotal),
-                            restrictBuyingQuantity: Number(formData.flashSaleLimit),
-                            description: formData.promotionDescription,
-                            storeList: storeList,
-                            sellerList: sellerList,
-                        };
-                        console.log('寰呭彂甯冩暟鎹�', data);
-                        return [4, this.postFormData(data)];
+                    case 0: return [4, promotionsCreate_1.promotionsSubmitHandler(this, validatorInstance)];
                     case 1:
-                        if (!(_a.sent()))
-                            return [2];
-                        if (this.data.fromPage == 'edit') {
-                            wx.navigateBack();
-                        }
-                        else {
-                            wx.redirectTo({
-                                url: '../promotionsManageList/promotionsManageList?tab=1'
-                            });
-                        }
-                        return [3, 3];
-                    case 2:
-                        wx.showToast({
-                            title: '椤甸潰杩樻湁閿欒鏈鐞�',
-                            icon: 'none',
-                            duration: 2000
-                        });
-                        console.log('杩樻湁閿欒鏈鐞�');
-                        _a.label = 3;
-                    case 3: return [2];
+                        _a.sent();
+                        return [2];
                 }
             });
         });
     },
     onSave: wx.$utils.debounce(function () {
-        var sellerEdit = this.selectComponent('#seller-edit');
-        var sellerList = sellerEdit.getSellerList();
-        var storeEdit = this.selectComponent('#store-edit');
-        var storeList = storeEdit.getSelectedStoreIdList();
-        console.log('寰呮彁浜ょ殑闂ㄥ簵id', storeList);
-        var fileUploader = this.selectComponent('#file-uploader');
-        var fileUploaderMultiple = this.selectComponent('#file-uploader-multiple');
-        console.log('....鎻愪氦鎴愬姛');
-        var coverImage = fileUploader.getCoverImageUnid();
-        var images = fileUploaderMultiple.getImagesUnid();
-        var deliveryMethod = this.selectComponent('#delivery-method');
-        var transCosts = 0;
-        if (deliveryMethod.data.isRequiredAddress) {
-            transCosts = Number(deliveryMethod.data.transCosts);
-        }
-        console.log(coverImage, images);
-        var formData = this.data;
-        console.log('>>>>>>>>formData', formData);
-        var data = {
-            docCode: formData.doccode,
-            formId: formData.formId,
-            docStatus: 0,
-            coverImage: coverImage,
-            images: images,
-            transCosts: transCosts,
-            effectiveStartDate: formData.startTime,
-            effectiveEndDate: formData.endTime,
-            freeId: formData.freeId,
-            title: formData.promotionsTitle,
-            originalPrice: Number(formData.originalPrice) || 0,
-            salesPrice: Number(formData.flashSalePrice) || 0,
-            quantity: Number(formData.flashSaleTotal) || 0,
-            restrictBuyingQuantity: Number(formData.flashSaleLimit) || 0,
-            description: formData.promotionDescription,
-            storeList: storeList,
-            sellerList: sellerList,
-        };
-        console.log('寰呬繚瀛樻暟鎹�', data);
-        this.postFormData(data);
+        promotionsCreate_1.promotionsSaveHandler(this);
         return;
     }),
     initValidator: function () {
@@ -460,4 +242,4 @@
         };
     }
 });
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhc2hTYWxlQ3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZmxhc2hTYWxlQ3JlYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLHVEQUFrRDtBQUVsRCxJQUFJLGlCQUE2QixDQUFDO0FBRWxDLElBQUksQ0FBQztJQUNILElBQUksRUFBRTtRQUNKLFFBQVEsRUFBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtRQUMxQyxpQkFBaUIsRUFBQyxFQUFFO1FBQ3BCLE1BQU0sRUFBQyxDQUFDO1FBQ1IsTUFBTSxFQUFDLE1BQU07UUFDYixRQUFRLEVBQUUsRUFBRTtRQUNaLE9BQU8sRUFBQyxFQUFFO1FBQ1YsUUFBUSxFQUFDLEVBQUU7UUFDWCxRQUFRLEVBQUMsRUFBRTtRQUNYLGFBQWEsRUFBQyxDQUFDO1FBQ2Ysb0JBQW9CLEVBQUMsRUFBRTtRQUN2QixhQUFhLEVBQUMsRUFBRTtRQUNoQixZQUFZLEVBQUMsS0FBSztLQUNuQjtJQUNELE1BQU0sWUFBQyxPQUFPO1FBRVosSUFBSSxPQUFPLEdBQUUsT0FBTyxDQUFDLE9BQU8sSUFBRSxFQUFFLENBQUM7UUFDakMsSUFBSSxRQUFRLEdBQUUsT0FBTyxDQUFDLFFBQVEsSUFBRSxFQUFFLENBQUM7UUFDbkMsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7UUFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNYLGFBQWEsRUFBRSx3REFBc0QsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFRO1lBQ3ZGLE9BQU8sU0FBQTtZQUNQLFFBQVEsVUFBQTtZQUNSLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEdBQUMsUUFBUSxDQUFDLCtCQUErQixDQUFDLEdBQUMsR0FBRztTQUN2RixDQUFDLENBQUE7UUFDRixJQUFJLE9BQU8s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UztpQkFDbEI7Z0JBQ0QsY0FBYyxFQUFFO29CQUNkLFFBQVEsRUFBRSxhQUFhO29CQUN2QixNQUFNLEVBQUUsU0FBUztpQkFDbEI7YUFJRjtZQUNELFVBQVUsRUFBQyxJQUFJO1NBQ2hCLEVBQUMsSUFBSSxDQUFDLENBQUE7UUFJUCxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFDRCxpQkFBaUI7UUFDZixJQUFJLE9BQU8sR0FBVSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFFN0MsSUFBSSxRQUFRLEdBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDO1FBQ3BELElBQUksb0JBQW9CLEdBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxFQUFFLENBQUM7UUFDdkUsT0FBTztZQUVMLEtBQUssRUFBRSxvQ0FBUyxvQkFBb0IsOEJBQU87WUFDM0MsUUFBUSxVQUFBO1lBQ1IsSUFBSSxFQUFFLDZDQUEyQyxPQUFTO1NBQzNELENBQUE7SUFDSCxDQUFDO0NBQ0YsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaW1wb3J0ICogYXMgZGF5anMgZnJvbSBcImRheWpzXCI7XHJcbmltcG9ydCBNeVZhbGlkYXRvciBmcm9tIFwiLi4vLi4vdXRpbHMvbXlWYWxpZGF0b3JcIjtcclxuXHJcbmxldCB2YWxpZGF0b3JJbnN0YW5jZTpNeVZhbGlkYXRvcjtcclxuLy8gY29uc3QgYXBwID0gZ2V0QXBwPElBcHBPcHRpb24+KCk7XHJcblBhZ2Uoe1xyXG4gIGRhdGE6IHtcclxuICAgIGF1dG9zaXplOnsgbWF4SGVpZ2h0OiAxMjAsIG1pbkhlaWdodDogNTAgfSxcclxuICAgIHZhbGlkYXRvckluc3RhbmNlOnt9LFxyXG4gICAgZnJlZUlkOjAsXHJcbiAgICBmb3JtSWQ6NzEwODAyLCAvL+WKn+iDveWPt++8muenkuadgCA3MTA4MDIg77yMIOaKpeWQjemCgOe6piA3MTA4MDMg77yM5Zui6LStIDcxMDgwNFxyXG4gICAgZm9ybURhdGE6IHt9LFxyXG4gICAgZG9jY29kZTonJyxcclxuICAgIGZyb21QYWdlOicnLFxyXG4gICAgZGVsaXZlcnk6e30sXHJcbiAgICBmZWVSYXRlRm9yUGF5OjEsXHJcbiAgICBzZWxsZXJVbkNoZWNrZWROYW1lczonJyxcclxuICAgIGNvdmVySW1hZ2VVcmw6JycsXHJcbiAgICBpc1Nob3dEaWFsb2c6ZmFsc2VcclxuICB9LFxyXG4gIG9uTG9hZChvcHRpb25zKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhhcHApO1xyXG4gICAgbGV0IGRvY2NvZGUgPW9wdGlvbnMuZG9jY29kZXx8Jyc7XHJcbiAgICBsZXQgZnJvbVBhZ2UgPW9wdGlvbnMuZnJvbVBhZ2V8fCcnO1xyXG4gICAgbGV0IHNldHRpbmdzID0gd3guZ2xvYmFsRGF0YS5zZXR0aW5ncztcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIGZpbGVVcGxvYWRVcmw6IGAvc2hvcHBpbmcvcGFuaWNCdXlpbmcuZG8/bT11cGxvYWRBdHRhY2htZW50JmZvcm1pZD0ke3RoaXMuZGF0YS5mb3JtSWR9YCxcclxuICAgICAgZG9jY29kZSxcclxuICAgICAgZnJvbVBhZ2UsXHJcbiAgICAgIGZlZVJhdGVGb3JQYXk6IChzZXR0aW5ncy5mZWVSYXRlRm9yV3hQYXkrc2V0dGluZ3MucGxhdGZvcm1PcGVyYXRvckNvbW1pc3Npb25SYXRpbykqMTAwXHJcbiAgICB9KVxyXG4gICAgaWYgKGRvY2NvZGUpIHtcclxuICAgICAgdGhpcy5nZXRTYXZlRGF0YSgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBzdG9yZUVkaXQgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI3N0b3JlLWVkaXQnKTtcclxuICAgICAgc3RvcmVFZGl0LmdldFN0b3JlTGlzdCgpO1xyXG4gICAgfVxyXG4gIH0sXHJcbiAgYXN5bmMgZ2V0U2F2ZURhdGEoKSB7XHJcbiAgICBsZXQgZG9jY29kZSA9IHRoaXMuZGF0YS5kb2Njb2RlO1xyXG4gICAgbGV0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IHd4LiR1dGlscy50byhcclxuICAgICAgd3guJGh0dHAucmVxdWVzdCh7XHJcbiAgICAgICAgdXJsOmAvc2hvcHBpbmcvcGFuaWNCdXlpbmcuZG8/bT1nZXRQYW5pY0J1eWluZ0RldGFpbGAsXHJcbiAgICAgICAgZGF0YTp7XHJcbiAgICAgICAgICBkb2Njb2RlLFxyXG4gICAgICAgICAgaXNFZGl0OnRydWUsXHJcbiAgICAgICAgICBTZWxsZXJPcGVuSWQ6d3guZ2xvYmFsRGF0YS5PcGVuSWRcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgICBpZiAoZXJyb3Ipe1xyXG4gICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XHJcbiAgICBsZXQgZGF0YSA9IHJlc3VsdC5saXN0WzBdO1xyXG4gICAgbGV0IGZvcm1EYXRhID0ge1xyXG4gICAgICBwcm9tb3Rpb25zVGl0bGU6IGRhdGEudGl0bGUsXHJcbiAgICAgIG9yaWdpbmFsUHJpY2U6IGRhdGEub3JpZ2luYWxQcmljZSxcclxuICAgICAgZmxhc2hTYWxlUHJpY2U6IGRhdGEuc2FsZXNQcmljZSxcclxuICAgICAgZmxhc2hTYWxlVG90YWw6IGRhdGEucXVhbnRpdHksXHJcbiAgICAgIGZsYXNoU2FsZUxpbWl0OiBkYXRhLnJlc3RyaWN0QnV5aW5nUXVhbnRpdHksXHJcbiAgICAgIHByb21vdGlvbkRlc2NyaXB0aW9uOiBkYXRhLmRlc2NyaXB0aW9uLFxyXG4gICAgICBzdGFydFRpbWU6IGRhdGEuZWZmZWN0aXZlU3RhcnREYXRlLFxyXG4gICAgICBlbmRUaW1lOiBkYXRhLmVmZmVjdGl2ZUVuZERhdGUsXHJcbiAgICAgIGNvdmVySW1hZ2VMaXN0OiAoZGF0YS5jb3ZlckltYWdlVXJsJiZ0aGlzLmdldENvdmVySW1hZ2VMaXN0KGRhdGEpKXx8W10sXHJcbiAgICAgIC8vIGltYWdlc0xpc3Q6IChkYXRhLmltYWdlc1VybC5sZW5ndGg+MCYmdGhpcy5nZXRJbWFnZXNMaXN0KGRhdGEpKXx8W10sXHJcbiAgICAgIGltYWdlc0xpc3Q6IGRhdGEuaW1hZ2VzVXJsLFxyXG4gICAgICBjb3ZlckltYWdlOiBkYXRhLmNvdmVySW1hZ2UsXHJcbiAgICAgIGltYWdlczogZGF0YS5pbWFnZXMsXHJcbiAgICAgIGZyZWVJZDpkYXRhLmZyZWVJZCxcclxuICAgIH07XHJcbiAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAuLi5mb3JtRGF0YSxcclxuICAgICAgY292ZXJJbWFnZVVybDpkYXRhLmNvdmVySW1hZ2VVcmwsXHJcbiAgICAgIC8vIFtgZWZmZWN0aXZlU3RhcnREYXRlYF06IGRhdGEuZWZmZWN0aXZlU3RhcnREYXRlLFxyXG4gICAgICAvLyBbYGVmZmVjdGl2ZUVuZERhdGVgXTogZGF0YS5lZmZlY3RpdmVFbmREYXRlLFxyXG4gICAgICAvLyBbYGZyZWVJZGBdOiBkYXRhLmZyZWVJZCxcclxuICAgICAgLy8gW2B0aXRsZWBdOiBkYXRhLnRpdGxlLFxyXG4gICAgICAvLyBbYG9yaWdpbmFsUHJpY2VgXTogZGF0YS5vcmlnaW5hbFByaWNlLFxyXG4gICAgICAvLyBbYHNhbGVzUHJpY2VgXTogZGF0YS5zYWxlc1ByaWNlLFxyXG4gICAgICAvLyBbYHF1YW50aXR5YF06IGRhdGEucXVhbnRpdHksXHJcbiAgICAgIC8vIFtgcmVzdHJpY3RCdXlpbmdRdWFudGl0eWBdOiBkYXRhLnJlc3RyaWN0QnV5aW5nUXVhbnRpdHksXHJcbiAgICAgIC8vIFtgZGVzY3JpcHRpb25gXTogZGF0YS5kZXNjcmlwdGlvbixcclxuICAgICAgc2VsbGVyTGlzdDpyZXN1bHQuc2VsbGVyTGlzdCxcclxuICAgICAgc3RvcmVMaXN0OnJlc3VsdC5zdG9yZUxpc3QsXHJcbiAgICAgIHN0YXR1czpkYXRhLnBhbmljQnV5aW5nU3RhdHVzLFxyXG4gICAgICBkZWxpdmVyeTp7XHJcbiAgICAgICAgZnJlZUlkOmRhdGEuZnJlZUlkLFxyXG4gICAgICAgIGZyZWVOYW1lOmRhdGEuZnJlZU5hbWUsXHJcbiAgICAgICAgaXNSZXF1aXJlZEFkZHJlc3M6ZGF0YS5pc1JlcXVpcmVkQWRkcmVzcyxcclxuICAgICAgICB0cmFuc0Nvc3RzOmRhdGEudHJhbnNDb3N0cyxcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBjb25zb2xlLmxvZygn6YWN6YCB5pWw5o2u44CC44CC44CCJyx0aGlzLmRhdGEuZGVsaXZlcnkpO1xyXG4gICAgd3guc2V0TmF2aWdhdGlvbkJhclRpdGxlKHtcclxuICAgICAgdGl0bGU6IGRhdGEudGl0bGVcclxuICAgIH0pXHJcbiAgfSxcclxuXHJcbiAgZ2V0Q292ZXJJbWFnZUxpc3QoZGF0YTphbnkpe1xyXG4gICAgbGV0IFt1bmlkLHNlcV0gPSBkYXRhLmNvdmVySW1hZ2Uuc3BsaXQoXCI7XCIpO1xyXG4gICAgcmV0dXJuIFt7XHJcbiAgICAgIHVybDogZGF0YS5jb3ZlckltYWdlVXJsfHwnJyxcclxuICAgICAgdW5pZCxcclxuICAgICAgc2VxXHJcbiAgICB9XVxyXG4gIH0sXHJcbiAgLy8gZ2V0SW1hZ2VzTGlzdChkYXRhOmFueSl7XHJcbiAgLy8gICBsZXQgW3VuaWQsc2VxXSA9IGRhdGEuaW1hZ2VzLnNwbGl0KFwiO1wiKTtcclxuICAvLyAgIHJldHVybiBkYXRhLmltYWdlc1VybC5tYXAoKGl0ZW06c3RyaW5nKT0+e1xyXG4gIC8vICAgICByZXR1cm4ge1xyXG4gIC8vICAgICAgIHVybDogaXRlbSxcclxuICAvLyAgICAgICB1bmlkLFxyXG4gIC8vICAgICAgIHNlcVxyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KVxyXG4gIC8vIH0sXHJcblxyXG4gIG9uUmVhZHkoKSB7XHJcbiAgICB0aGlzLmluaXRWYWxpZGF0b3IoKVxyXG4gIH0sXHJcbiAgc2VsZWN0ZWRTdGFydFRpbWUoZXZlbnQ6YW55KSB7XHJcbiAgICBjb25zb2xlLmxvZygn5byA5aeLJyxldmVudCk7XHJcbiAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICBzdGFydFRpbWU6IGV2ZW50LmRldGFpbC5zdGFydFRpbWUsXHJcbiAgICB9KVxyXG4gIH0sXHJcbiAgc2VsZWN0ZWRFbmRUaW1lKGV2ZW50OmFueSl7XHJcbiAgICBjb25zb2xlLmxvZygn57uT5p2fJyxldmVudCk7XHJcbiAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICBlbmRUaW1lOiBldmVudC5kZXRhaWwuZW5kVGltZSxcclxuICAgIH0pXHJcbiAgfSxcclxuICBnZXREZWxpdmVyeU1ldGhvZChldmVudDphbnkpe1xyXG4gICAgY29uc29sZS5sb2coZXZlbnQuZGV0YWlsKTtcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIC8vIGRlbGl2ZXJ5TWV0aG9kOiBldmVudC5kZXRhaWwuZGVsaXZlcnlNZXRob2QsXHJcbiAgICAgIGZyZWVJZDogZXZlbnQuZGV0YWlsLmZyZWVJZCxcclxuICAgIH0pXHJcbiAgICBjb25zb2xlLmxvZygndGhpcy5kYXRhLmZyZWVJZDsnLHRoaXMuZGF0YS5mcmVlSWQpO1xyXG4gIH0sXHJcblxyXG4gIGNoZWNrUHJvbW90aW9uc1RpdGxlKGU6YW55KXtcclxuICAgIGxldCB7IHZhbHVlIH0gPSBlLmRldGFpbFxyXG4gICAgY29uc29sZS5sb2coZSk7XHJcbiAgICB2YWxpZGF0b3JJbnN0YW5jZS5jaGVja0ZpZWxkKCdwcm9tb3Rpb25zVGl0bGUnLHZhbHVlKTtcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIHByb21vdGlvbnNUaXRsZTp2YWx1ZS50cmltKClcclxuICAgIH0pXHJcbiAgfSxcclxuICBjaGVja09yaWdpbmFsUHJpY2UoZTphbnkpe1xyXG4gICAgbGV0IHsgdmFsdWUgfSA9IGUuZGV0YWlsXHJcbiAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgIHZhbGlkYXRvckluc3RhbmNlLmNoZWNrRmllbGQoJ29yaWdpbmFsUHJpY2UnLHZhbHVlKTtcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIG9yaWdpbmFsUHJpY2U6dmFsdWUudHJpbSgpXHJcbiAgICB9KVxyXG4gIH0sXHJcbiAgY2hlY2tGbGFzaFNhbGVQcmljZShlOmFueSl7XHJcbiAgICBsZXQgeyB2YWx1ZSB9ID0gZS5kZXRhaWxcclxuICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgdmFsaWRhdG9ySW5zdGFuY2UuY2hlY2tGaWVsZCgnZmxhc2hTYWxlUHJpY2UnLHZhbHVlKTtcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIGZsYXNoU2FsZVByaWNlOnZhbHVlLnRyaW0oKVxyXG4gICAgfSlcclxuICB9LFxyXG4gIGNoZWNrRmxhc2hTYWxlVG90YWwoZTphbnkpe1xyXG4gICAgbGV0IHsgdmFsdWUgfSA9IGUuZGV0YWlsXHJcbiAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgIHZhbGlkYXRvckluc3RhbmNlLmNoZWNrRmllbGQoJ2ZsYXNoU2FsZVRvdGFsJyx2YWx1ZSk7XHJcbiAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICBmbGFzaFNhbGVUb3RhbDp2YWx1ZS50cmltKClcclxuICAgIH0pXHJcbiAgfSxcclxuICBjaGVja0ZsYXNoU2FsZUxpbWl0KGU6YW55KXtcclxuICAgIGxldCB7IHZhbHVlIH0gPSBlLmRldGFpbFxyXG4gICAgY29uc29sZS5sb2coZSk7XHJcbiAgICB2YWxpZGF0b3JJbnN0YW5jZS5jaGVja0ZpZWxkKCdmbGFzaFNhbGVMaW1pdCcsdmFsdWUpO1xyXG4gICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgZmxhc2hTYWxlTGltaXQ6dmFsdWUudHJpbSgpXHJcbiAgICB9KVxyXG4gIH0sXHJcbiAgY2hlY2tQcm9tb3Rpb25EZXNjcmlwdGlvbihlOmFueSl7XHJcbiAgICBsZXQgeyB2YWx1ZSB9ID0gZS5kZXRhaWxcclxuICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgdmFsaWRhdG9ySW5zdGFuY2UuY2hlY2tGaWVsZCgncHJvbW90aW9uRGVzY3JpcHRpb24nLHZhbHVlKTtcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIHByb21vdGlvbkRlc2NyaXB0aW9uOnZhbHVlLnRyaW0oKVxyXG4gICAgfSlcclxuICB9LFxyXG5cclxuICBhc3luYyBwb3N0Rm9ybURhdGEoZGF0YTpvYmplY3Qpe1xyXG4gICAgbGV0IFtlcnJvciwgcmVzXSA9IGF3YWl0IHd4LiR1dGlscy50byhcclxuICAgICAgd3guJGh0dHAucmVxdWVzdCh7XHJcbiAgICAgICAgdXJsOicvc2hvcHBpbmcvcGFuaWNCdXlpbmcuZG8/bT1zYXZlRG9jQ29kZScsXHJcbiAgICAgICAgZGF0YSxcclxuICAgICAgICBtZXRob2Q6J1BPU1QnXHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgICBpZiAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhyZXMpO1xyXG4gICAgaWYgKHJlcy5zdGF0ZSA9PT0gJ3N1Y2Nlc3MnKSB7XHJcbiAgICAgIHd4LnNob3dUb2FzdCh7XHJcbiAgICAgICAgdGl0bGU6ICfmiJDlip8nLFxyXG4gICAgICAgIGR1cmF0aW9uOiAyMDAwXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgZG9jY29kZTpyZXMuRG9jQ29kZVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgaWYgKHJlcy5zdGF0ZSA9PT0gJ2ZhaWxlZCcmJnJlcy5zZWxsZXJDaGVja2VkQmFsYW5jZT4wKSB7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgc2VsbGVyVW5DaGVja2VkTmFtZXM6IHJlcy5zZWxsZXJVbkNoZWNrZWROYW1lcyxcclxuICAgICAgICBpc1Nob3dEaWFsb2c6IHRydWVcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIHJldHVybiByZXMuc3RhdGUgPT09ICdzdWNjZXNzJztcclxuICB9LFxyXG4gIG9uU3VibWl0Ond4LiR1dGlscy5kZWJvdW5jZShmdW5jdGlvbih0aGlzOmFueSl7XHJcbiAgICB0aGlzLnN1Ym1pdEhhbmRsZXIoKTtcclxuICAgIHJldHVybjtcclxuICB9KSxcclxuXHJcbiAgYXN5bmMgc3VibWl0SGFuZGxlcigpIHtcclxuICAgIGxldCB0aW1lUXVhbnR1bSA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjdGltZS1xdWFudHVtJyk7XHJcbiAgICBsZXQgc2VsbGVyRWRpdCA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjc2VsbGVyLWVkaXQnKTtcclxuICAgIGxldCBzdG9yZUVkaXQgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI3N0b3JlLWVkaXQnKTtcclxuICAgIGxldCBmaWxlVXBsb2FkZXIgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI2ZpbGUtdXBsb2FkZXInKTtcclxuICAgIGxldCBmaWxlVXBsb2FkZXJNdWx0aXBsZSA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjZmlsZS11cGxvYWRlci1tdWx0aXBsZScpO1xyXG5cclxuICAgIGxldCBkZWxpdmVyeU1ldGhvZCA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjZGVsaXZlcnktbWV0aG9kJyk7XHJcbiAgICBsZXQgY2hlY2tUcmFuc0Nvc3RzID0gdHJ1ZTtcclxuICAgIGxldCB0cmFuc0Nvc3RzID0gMDtcclxuICAgIGlmIChkZWxpdmVyeU1ldGhvZC5kYXRhLmlzUmVxdWlyZWRBZGRyZXNzKXtcclxuICAgICAgY2hlY2tUcmFuc0Nvc3RzID0gZGVsaXZlcnlNZXRob2QuY2hlY2tGaWVsZHMoKTtcclxuICAgICAgdHJhbnNDb3N0cyA9IE51bWJlcihkZWxpdmVyeU1ldGhvZC5kYXRhLnRyYW5zQ29zdHMpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnNvbGUubG9nKHRpbWVRdWFudHVtKTtcclxuXHJcbiAgICBsZXQgY2hlY2tTdGFydFRpbWUgPSB0aW1lUXVhbnR1bS5jaGVja1RpbWUoXCJzdGFydFRpbWVcIiwgXCLor7fpgInmi6norqHliJLlvIDlp4vml7bpl7RcIik7XHJcbiAgICBsZXQgY2hlY2tFbmRUaW1lID0gdGltZVF1YW50dW0uY2hlY2tUaW1lKFwiZW5kVGltZVwiLCBcIuivt+mAieaLqeiuoeWIkue7k+adn+aXtumXtFwiKTtcclxuICAgIGxldCBjaGVja0NvdmVySW1hZ2UgPSBmaWxlVXBsb2FkZXIuY2hlY2tJbWFnZXMoXCJjb3ZlckltYWdlXCIsIFwi6K+35LiK5Lyg5LiA5byg5bCB6Z2i5Zu+XCIpO1xyXG4gICAgLy8gbGV0IGNoZWNrSW1hZ2VzID0gZmlsZVVwbG9hZGVyTXVsdGlwbGUuY2hlY2tJbWFnZXMoXCJpbWFnZXNcIiwgXCLor7foh7PlsJHkuIrkvKDkuIDlvKDlm77niYdcIik7XHJcbiAgICBsZXQgY2hlY2tBbGxEYXRhID0gdmFsaWRhdG9ySW5zdGFuY2UuY2hlY2tBbGxEYXRhKCk7XHJcbiAgICAvLyBpZiAodGhpcy5kYXRhLmdvb2RzSW1nTGlzdC5sZW5ndGggPCAxKSB7XHJcbiAgICAvLyAgIGNvbnNvbGUubG9nKCfor7fkuIrkvKDkuqflk4Hlm77niYcnKTtcclxuICAgIC8vIH1cclxuICAgIGxldCBzZWxsZXJMaXN0ID0gc2VsbGVyRWRpdC5nZXRTZWxsZXJMaXN0KCk7XHJcbiAgICBpZiAoc2VsbGVyTGlzdC5sZW5ndGg8MSkge1xyXG4gICAgICB3eC5zaG93VG9hc3Qoe1xyXG4gICAgICAgIHRpdGxlOiAn6K+36YCJ5oup6JCl6ZSA5Lq65ZGYJyxcclxuICAgICAgICBpY29uOiAnbm9uZScsXHJcbiAgICAgICAgZHVyYXRpb246IDIwMDBcclxuICAgICAgfSlcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgc3RvcmVMaXN0ID0gc3RvcmVFZGl0LmdldFNlbGVjdGVkU3RvcmVJZExpc3QoKTtcclxuICAgIGNvbnNvbGUubG9nKCflvoXmj5DkuqTnmoTpl6jlupdpZCcsc3RvcmVMaXN0KTtcclxuICAgIGxldCBjaGVja0RlZmF1bHRTZWxsZXIgPSBzZWxsZXJFZGl0LmNoZWNrRGVmYXVsdFNlbGxlcigpO1xyXG4gICAgaWYgKCFjaGVja0RlZmF1bHRTZWxsZXIpIHtcclxuICAgICAgd3guc2hvd1RvYXN0KHtcclxuICAgICAgICB0aXRsZTogJ+ivt+mAieaLqem7mOiupOiQpemUgOS6uuWRmCcsXHJcbiAgICAgICAgaWNvbjogJ25vbmUnLFxyXG4gICAgICAgIGR1cmF0aW9uOiAyMDAwXHJcbiAgICAgIH0pXHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2coJ2NoZWNrRGVmYXVsdFNlbGxlcicsY2hlY2tEZWZhdWx0U2VsbGVyKTtcclxuXHJcbiAgICBsZXQgY2hlY2tBcnIgPSBbY2hlY2tUcmFuc0Nvc3RzLGNoZWNrU3RhcnRUaW1lLGNoZWNrRW5kVGltZSxjaGVja0NvdmVySW1hZ2UsY2hlY2tBbGxEYXRhXTtcclxuICAgIGxldCBkYXRhID0ge307XHJcbiAgICBpZiAoY2hlY2tBcnIuZXZlcnkoKGl0ZW0pPT57XHJcbiAgICAgIHJldHVybiBpdGVtXHJcbiAgICB9KSl7XHJcbiAgICAgIGNvbnNvbGUubG9nKCcuLi4u5o+Q5Lqk5oiQ5YqfJyk7XHJcbiAgICAgIGxldCBjb3ZlckltYWdlID0gZmlsZVVwbG9hZGVyLmdldENvdmVySW1hZ2VVbmlkKCk7XHJcbiAgICAgIGxldCBjb3ZlckltYWdlVXJsID0gZmlsZVVwbG9hZGVyLmdldEltZ0xpc3QoKVswXS51cmx8fCcnO1xyXG4gICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgIGNvdmVySW1hZ2VVcmxcclxuICAgICAgfSlcclxuICAgICAgbGV0IGltYWdlcyA9IGZpbGVVcGxvYWRlck11bHRpcGxlLmdldEltYWdlc1VuaWQoKTtcclxuICAgICAgY29uc29sZS5sb2coY292ZXJJbWFnZSxpbWFnZXMsY292ZXJJbWFnZVVybCk7XHJcbiAgICAgIGxldCBmb3JtRGF0YTogYW55ID0gdGhpcy5kYXRhO1xyXG4gICAgICBkYXRhID0ge1xyXG4gICAgICAgIGRvY0NvZGU6IGZvcm1EYXRhLmRvY2NvZGUsIC8v5rS75Yqo5Y2V5Y+377yM5paw5bu65rS75Yqo5pe25Li656m65YC877yM57yW6L6R5pe26ZyA6KaBZG9jY29kZeWAvFxyXG4gICAgICAgIGZvcm1JZDogZm9ybURhdGEuZm9ybUlkLCAvL+WKn+iDveWPt++8muenkuadgCA3MTA4MDIg77yMIOaKpeWQjemCgOe6piA3MTA4MDMg77yM5Zui6LStIDcxMDgwNFxyXG4gICAgICAgIGRvY1N0YXR1czoxMDAsIC8v5Y2V5o2u54q25oCBOiAwIOS/neWtmO+8iOi1t+iNie+8iSDvvIwxMDAg5Y+R5biDXHJcbiAgICAgICAgY292ZXJJbWFnZSxcclxuICAgICAgICBpbWFnZXMsXHJcbiAgICAgICAgdHJhbnNDb3N0cywgLy/pgIHotKfkuIrpl6jml7Yg6YWN6YCB6LS5XHJcbiAgICAgICAgLy8gLi4udGhpcy5kYXRhLmZvcm1EYXRhLFxyXG5cclxuICAgICAgICBlZmZlY3RpdmVTdGFydERhdGU6IGZvcm1EYXRhLnN0YXJ0VGltZSxcclxuICAgICAgICBlZmZlY3RpdmVFbmREYXRlOiBmb3JtRGF0YS5lbmRUaW1lLFxyXG4gICAgICAgIGZyZWVJZDogZm9ybURhdGEuZnJlZUlkLFxyXG4gICAgICAgIHRpdGxlOiBmb3JtRGF0YS5wcm9tb3Rpb25zVGl0bGUsXHJcbiAgICAgICAgb3JpZ2luYWxQcmljZTogTnVtYmVyKGZvcm1EYXRhLm9yaWdpbmFsUHJpY2UpLFxyXG4gICAgICAgIHNhbGVzUHJpY2U6IE51bWJlcihmb3JtRGF0YS5mbGFzaFNhbGVQcmljZSksXHJcbiAgICAgICAgcXVhbnRpdHk6IE51bWJlcihmb3JtRGF0YS5mbGFzaFNhbGVUb3RhbCksXHJcbiAgICAgICAgcmVzdHJpY3RCdXlpbmdRdWFudGl0eTogTnVtYmVyKGZvcm1EYXRhLmZsYXNoU2FsZUxpbWl0KSxcclxuICAgICAgICBkZXNjcmlwdGlvbjogZm9ybURhdGEucHJvbW90aW9uRGVzY3JpcHRpb24sXHJcbiAgICAgICAgc3RvcmVMaXN0LFxyXG4gICAgICAgIHNlbGxlckxpc3QsXHJcbiAgICAgIH1cclxuICAgICAgY29uc29sZS5sb2coJ+W+heWPkeW4g+aVsOaNricsZGF0YSk7XHJcbiAgICAgIGlmICghYXdhaXQgdGhpcy5wb3N0Rm9ybURhdGEoZGF0YSkpIHJldHVybjtcclxuICAgICAgaWYgKHRoaXMuZGF0YS5mcm9tUGFnZT09J2VkaXQnKXtcclxuICAgICAgICB3eC5uYXZpZ2F0ZUJhY2soKTtcclxuICAgICAgfSBlbHNle1xyXG4gICAgICAgIHd4LnJlZGlyZWN0VG8oe1xyXG4gICAgICAgICAgdXJsOicuLi9wcm9tb3Rpb25zTWFuYWdlTGlzdC9wcm9tb3Rpb25zTWFuYWdlTGlzdD90YWI9MSdcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgd3guc2hvd1RvYXN0KHtcclxuICAgICAgICB0aXRsZTogJ+mhtemdoui/mOaciemUmeivr+acquWkhOeQhicsXHJcbiAgICAgICAgaWNvbjogJ25vbmUnLFxyXG4gICAgICAgIGR1cmF0aW9uOiAyMDAwXHJcbiAgICAgIH0pXHJcbiAgICAgIGNvbnNvbGUubG9nKCfov5jmnInplJnor6/mnKrlpITnkIYnKTtcclxuICAgIH1cclxuXHJcblxyXG4gIH0sXHJcblxyXG4gIG9uU2F2ZTp3eC4kdXRpbHMuZGVib3VuY2UoZnVuY3Rpb24odGhpczphbnkpe1xyXG4gICAgbGV0IHNlbGxlckVkaXQgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI3NlbGxlci1lZGl0Jyk7XHJcbiAgICBsZXQgc2VsbGVyTGlzdCA9IHNlbGxlckVkaXQuZ2V0U2VsbGVyTGlzdCgpO1xyXG4gICAgbGV0IHN0b3JlRWRpdCA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjc3RvcmUtZWRpdCcpO1xyXG4gICAgbGV0IHN0b3JlTGlzdCA9IHN0b3JlRWRpdC5nZXRTZWxlY3RlZFN0b3JlSWRMaXN0KCk7XHJcbiAgICBjb25zb2xlLmxvZygn5b6F5o+Q5Lqk55qE6Zeo5bqXaWQnLHN0b3JlTGlzdCk7XHJcbiAgICBsZXQgZmlsZVVwbG9hZGVyID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyNmaWxlLXVwbG9hZGVyJyk7XHJcbiAgICBsZXQgZmlsZVVwbG9hZGVyTXVsdGlwbGUgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI2ZpbGUtdXBsb2FkZXItbXVsdGlwbGUnKTtcclxuICAgIGNvbnNvbGUubG9nKCcuLi4u5o+Q5Lqk5oiQ5YqfJyk7XHJcbiAgICBsZXQgY292ZXJJbWFnZSA9IGZpbGVVcGxvYWRlci5nZXRDb3ZlckltYWdlVW5pZCgpO1xyXG4gICAgbGV0IGltYWdlcyA9IGZpbGVVcGxvYWRlck11bHRpcGxlLmdldEltYWdlc1VuaWQoKTtcclxuICAgIGxldCBkZWxpdmVyeU1ldGhvZCA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjZGVsaXZlcnktbWV0aG9kJyk7XHJcbiAgICBsZXQgdHJhbnNDb3N0cyA9IDA7XHJcbiAgICBpZiAoZGVsaXZlcnlNZXRob2QuZGF0YS5pc1JlcXVpcmVkQWRkcmVzcyl7XHJcbiAgICAgIHRyYW5zQ29zdHMgPSBOdW1iZXIoZGVsaXZlcnlNZXRob2QuZGF0YS50cmFuc0Nvc3RzKTtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKGNvdmVySW1hZ2UsaW1hZ2VzKTtcclxuICAgIGxldCBmb3JtRGF0YTogYW55ID0gdGhpcy5kYXRhO1xyXG4gICAgY29uc29sZS5sb2coJz4+Pj4+Pj4+Zm9ybURhdGEnLGZvcm1EYXRhKTtcclxuICAgIGxldCBkYXRhID0ge1xyXG4gICAgICBkb2NDb2RlOiBmb3JtRGF0YS5kb2Njb2RlLCAvL+a0u+WKqOWNleWPt++8jOaWsOW7uua0u+WKqOaXtuS4uuepuuWAvO+8jOe8lui+keaXtumcgOimgWRvY2NvZGXlgLxcclxuICAgICAgZm9ybUlkOiBmb3JtRGF0YS5mb3JtSWQsIC8v5Yqf6IO95Y+377ya56eS5p2AIDcxMDgwMiDvvIwg5oql5ZCN6YKA57qmIDcxMDgwMyDvvIzlm6LotK0gNzEwODA0XHJcbiAgICAgIGRvY1N0YXR1czogMCwgLy/ljZXmja7nirbmgIE6IDAg5L+d5a2Y77yI6LW36I2J77yJIO+8jDEwMCDlj5HluINcclxuICAgICAgY292ZXJJbWFnZSxcclxuICAgICAgaW1hZ2VzLFxyXG4gICAgICB0cmFuc0Nvc3RzLCAvL+mAgei0p+S4iumXqOaXtiDphY3pgIHotLlcclxuICAgICAgLy8gLi4udGhpcy5kYXRhLmZvcm1EYXRhLFxyXG5cclxuICAgICAgZWZmZWN0aXZlU3RhcnREYXRlOiBmb3JtRGF0YS5zdGFydFRpbWUsXHJcbiAgICAgIGVmZmVjdGl2ZUVuZERhdGU6IGZvcm1EYXRhLmVuZFRpbWUsXHJcbiAgICAgIGZyZWVJZDogZm9ybURhdGEuZnJlZUlkLFxyXG4gICAgICB0aXRsZTogZm9ybURhdGEucHJvbW90aW9uc1RpdGxlLFxyXG4gICAgICBvcmlnaW5hbFByaWNlOiBOdW1iZXIoZm9ybURhdGEub3JpZ2luYWxQcmljZSl8fDAsXHJcbiAgICAgIHNhbGVzUHJpY2U6IE51bWJlcihmb3JtRGF0YS5mbGFzaFNhbGVQcmljZSl8fDAsXHJcbiAgICAgIHF1YW50aXR5OiBOdW1iZXIoZm9ybURhdGEuZmxhc2hTYWxlVG90YWwpfHwwLFxyXG4gICAgICByZXN0cmljdEJ1eWluZ1F1YW50aXR5OiBOdW1iZXIoZm9ybURhdGEuZmxhc2hTYWxlTGltaXQpfHwwLFxyXG4gICAgICBkZXNjcmlwdGlvbjogZm9ybURhdGEucHJvbW90aW9uRGVzY3JpcHRpb24sXHJcbiAgICAgIHN0b3JlTGlzdCxcclxuICAgICAgc2VsbGVyTGlzdCxcclxuICAgIH1cclxuICAgIC8vIGxldCBkYXRhID0ge1xyXG4gICAgLy8gICBkb2NDb2RlOnRoaXMuZGF0YS5kb2Njb2RlLCAvL+a0u+WKqOWNleWPt++8jOaWsOW7uua0u+WKqOaXtuS4uuepuuWAvO+8jOe8lui+keaXtumcgOimgWRvY2NvZGXlgLxcclxuICAgIC8vICAgZm9ybUlkOnRoaXMuZGF0YS5mb3JtSWQsIC8v5Yqf6IO95Y+377ya56eS5p2AIDcxMDgwMiDvvIwg5oql5ZCN6YKA57qmIDcxMDgwMyDvvIzlm6LotK0gNzEwODA0XHJcbiAgICAvLyAgIGRvY1N0YXR1czowLCAvL+WNleaNrueKtuaAgTogMCDkv53lrZjvvIjotbfojYnvvIkg77yMMTAwIOWPkeW4g1xyXG4gICAgLy8gICBjb3ZlckltYWdlLFxyXG4gICAgLy8gICBpbWFnZXMsXHJcbiAgICAvLyAgIHRyYW5zQ29zdHMsIC8v6YCB6LSn5LiK6Zeo5pe2IOmFjemAgei0uVxyXG4gICAgLy8gICAuLi50aGlzLmRhdGEuZm9ybURhdGEsXHJcbiAgICAvLyAgIHNlbGxlckxpc3QsXHJcbiAgICAvLyB9XHJcbiAgICBjb25zb2xlLmxvZygn5b6F5L+d5a2Y5pWw5o2uJyxkYXRhKTtcclxuICAgIHRoaXMucG9zdEZvcm1EYXRhKGRhdGEpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH0pLFxyXG4gIC8vIG9uSW5wdXRTdGFydERhdGUoKSB7fSxcclxuICAvLyBvbklucHV0RW5kRGF0ZSgpIHt9LFxyXG4gIGluaXRWYWxpZGF0b3IoKXtcclxuICAgIC8vIOWunuS+i+WMllxyXG4gICAgdmFsaWRhdG9ySW5zdGFuY2UgPSBuZXcgTXlWYWxpZGF0b3Ioe1xyXG4gICAgICBydWxlczoge1xyXG4gICAgICAgIHByb21vdGlvbnNUaXRsZToge1xyXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgICByYW5nZWxlbmd0aDogWzMsMTRdXHJcbiAgICAgICAgfSxcclxuICAgICAgICBvcmlnaW5hbFByaWNlOiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICAgIG51bWJlcjogdHJ1ZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZmxhc2hTYWxlUHJpY2U6IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgICAgbnVtYmVyOiB0cnVlXHJcbiAgICAgICAgfSxcclxuICAgICAgICBmbGFzaFNhbGVUb3RhbDoge1xyXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgICBudW1iZXI6IHRydWVcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZsYXNoU2FsZUxpbWl0OiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICAgIG51bWJlcjogdHJ1ZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gcHJvbW90aW9uRGVzY3JpcHRpb246IHtcclxuICAgICAgICAvLyAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICAgICAgLy8gfSxcclxuICAgICAgfSxcclxuICAgICAgbWVzc2FnZXM6IHtcclxuICAgICAgICBwcm9tb3Rpb25zVGl0bGU6IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiAn6K+36L6T5YWl5rS75Yqo5qCH6aKYJyxcclxuICAgICAgICAgIHJhbmdlbGVuZ3RoOiAn5paH5a2X6ZW/5bqm6K+35o6n5Yi25ZyoM+WIsDE05LmL6Ze0J1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb3JpZ2luYWxQcmljZToge1xyXG4gICAgICAgICAgcmVxdWlyZWQ6ICfor7fovpPlhaXkuqflk4HmoIfku7cnLFxyXG4gICAgICAgICAgbnVtYmVyOiAn5Lu35qC85b+F6aG75Li65pWw5a2XJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZmxhc2hTYWxlUHJpY2U6IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiAn6K+36L6T5YWl5Lqn5ZOB56eS5p2A5Lu3JyxcclxuICAgICAgICAgIG51bWJlcjogJ+S7t+agvOW/hemhu+S4uuaVsOWtlydcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZsYXNoU2FsZVRvdGFsOiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogJ+ivt+i+k+WFpeS6p+WTgeaAu+mHjycsXHJcbiAgICAgICAgICBudW1iZXI6ICfmlbDph4/lv4XpobvkuLrmlbDlrZcnXHJcbiAgICAgICAgfSxcclxuICAgICAgICBmbGFzaFNhbGVMaW1pdDoge1xyXG4gICAgICAgICAgcmVxdWlyZWQ6ICfor7fovpPlhaXkuqflk4Hmr4/kurrpmZDotK3mlbDph48nLFxyXG4gICAgICAgICAgbnVtYmVyOiAn5pWw6YeP5b+F6aG75Li65pWw5a2XJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gcHJvbW90aW9uRGVzY3JpcHRpb246IHtcclxuICAgICAgICAvLyAgIHJlcXVpcmVkOiAn6K+36L6T5YWl5rS75Yqo5o+P6L+wJ1xyXG4gICAgICAgIC8vIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIG11bHRpQ2hlY2s6dHJ1ZVxyXG4gICAgfSx0aGlzKVxyXG4gICAgLy8gdGhpcy5zZXREYXRhKHtcclxuICAgIC8vICAgdmFsaWRhdG9ySW5zdGFuY2VcclxuICAgIC8vIH0pXHJcbiAgICBjb25zb2xlLmxvZygnaGhoaCwnLHZhbGlkYXRvckluc3RhbmNlKTtcclxuICB9LFxyXG4gIG9uU2hhcmVBcHBNZXNzYWdlKCkge1xyXG4gICAgbGV0IGRvY2NvZGU6c3RyaW5nID0gdGhpcy5kYXRhLmRvY2NvZGUgfHwgJyc7XHJcbiAgICAvLyBsZXQgdGl0bGU6c3RyaW5nID0gdGhpcy5kYXRhLnByb21vdGlvbnNEYXRhLnRpdGxlIHx8ICcnO1xyXG4gICAgbGV0IGltYWdlVXJsOnN0cmluZyA9IHRoaXMuZGF0YS5jb3ZlckltYWdlVXJsIHx8ICcnO1xyXG4gICAgbGV0IHNlbGxlclVuQ2hlY2tlZE5hbWVzOnN0cmluZyA9IHRoaXMuZGF0YS5zZWxsZXJVbkNoZWNrZWROYW1lcyB8fCAnJztcclxuICAgIHJldHVybiB7XHJcbiAgICAgIC8vIHRpdGxlOiB1dGlscy5nZXRTaGFyZVRpdGxlKCksXHJcbiAgICAgIHRpdGxlOiBg6K+36JCl6ZSA5Lq65ZGYWyR7c2VsbGVyVW5DaGVja2VkTmFtZXN9XemqjOivgei6q+S7vWAsXHJcbiAgICAgIGltYWdlVXJsLFxyXG4gICAgICBwYXRoOiBgcGFnZXMvc2VsbGVyVmVyaWZ5L3NlbGxlclZlcmlmeT9kb2Njb2RlPSR7ZG9jY29kZX1gLFxyXG4gICAgfVxyXG4gIH1cclxufSlcclxuZXhwb3J0IHt9XHJcbiJdfQ==
\ No newline at end of file
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhc2hTYWxlQ3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZmxhc2hTYWxlQ3JlYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSx1REFBa0Q7QUFDbEQsbUVBQXlHO0FBRXpHLElBQUksaUJBQTZCLENBQUM7QUFFbEMsSUFBSSxDQUFDO0lBQ0gsSUFBSSxFQUFFO1FBQ0osUUFBUSxFQUFDLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO1FBQzFDLGlCQUFpQixFQUFDLEVBQUU7UUFDcEIsTUFBTSxFQUFDLENBQUM7UUFDUixNQUFNLEVBQUMsTUFBTTtRQUNiLFFBQVEsRUFBRSxFQUFFO1FBQ1osT0FBTyxFQUFDLEVBQUU7UUFDVixRQUFRLEVBQUMsRUFBRTtRQUNYLFFBQVEsRUFBQyxFQUFFO1FBQ1gsYUFBYSxFQUFDLENBQUM7UUFDZixvQkFBb0IsRUFBQyxFQUFFO1FBQ3ZCLGFBQWEsRUFBQyxFQUFFO1FBQ2hCLFlBQVksRUFBQyxLQUFLO0tBQ25CO0lBQ0QsTUFBTSxZQUFDLE9BQU87UUFFWixJQUFJLE9BQU8sR0FBRSxPQUFPLENBQUMsT0FBTyxJQUFFLEVBQUUsQ0FBQztRQUNqQyxJQUFJLFFBQVEsR0FBRSxPQUFPLENBQUMsUUFBUSxJQUFFLEVBQUUsQ0FBQztRQUNuQyxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztRQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ1gsYUFBYSxFQUFFLHdEQUFzRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQVE7WUFDdkYsT0FBTyxTQUFBO1lBQ1AsUUFBUSxVQUFBO1lBQ1IsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDLGVBQWUsR0FBQyxRQUFRLENBQUMsK0JBQStCLENBQUMsR0FBQyxHQUFHO1NBQ3ZGLENBQUMsQ0FBQTtRQUNGLElBQUksT0FB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Q0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUU3QyxJQUFJLFFBQVEsR0FBVSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUM7UUFDcEQsSUFBSSxvQkFBb0IsR0FBVSxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixJQUFJLEVBQUUsQ0FBQztRQUN2RSxPQUFPO1lBRUwsS0FBSyxFQUFFLG9DQUFTLG9CQUFvQiw4QkFBTztZQUMzQyxRQUFRLFVBQUE7WUFDUixJQUFJLEVBQUUsNkNBQTJDLE9BQVM7U0FDM0QsQ0FBQTtJQUNILENBQUM7Q0FDRixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQgKiBhcyBkYXlqcyBmcm9tIFwiZGF5anNcIjtcclxuaW1wb3J0IE15VmFsaWRhdG9yIGZyb20gXCIuLi8uLi91dGlscy9teVZhbGlkYXRvclwiO1xyXG5pbXBvcnQge3Byb21vdGlvbnNTdWJtaXRIYW5kbGVyLHByb21vdGlvbnNTYXZlSGFuZGxlcixnZXRTYXZlRGF0YX0gZnJvbSBcIi4uLy4uL21vZHVsZXMvcHJvbW90aW9uc0NyZWF0ZVwiO1xyXG5cclxubGV0IHZhbGlkYXRvckluc3RhbmNlOk15VmFsaWRhdG9yO1xyXG4vLyBjb25zdCBhcHAgPSBnZXRBcHA8SUFwcE9wdGlvbj4oKTtcclxuUGFnZSh7XHJcbiAgZGF0YToge1xyXG4gICAgYXV0b3NpemU6eyBtYXhIZWlnaHQ6IDEyMCwgbWluSGVpZ2h0OiA1MCB9LFxyXG4gICAgdmFsaWRhdG9ySW5zdGFuY2U6e30sXHJcbiAgICBmcmVlSWQ6MCxcclxuICAgIGZvcm1JZDo3MTA4MDIsIC8v5Yqf6IO95Y+377ya56eS5p2AIDcxMDgwMiDvvIwg5oql5ZCN6YKA57qmIDcxMDgwMyDvvIzlm6LotK0gNzEwODA0XHJcbiAgICBmb3JtRGF0YToge30sXHJcbiAgICBkb2Njb2RlOicnLFxyXG4gICAgZnJvbVBhZ2U6JycsXHJcbiAgICBkZWxpdmVyeTp7fSxcclxuICAgIGZlZVJhdGVGb3JQYXk6MSxcclxuICAgIHNlbGxlclVuQ2hlY2tlZE5hbWVzOicnLFxyXG4gICAgY292ZXJJbWFnZVVybDonJyxcclxuICAgIGlzU2hvd0RpYWxvZzpmYWxzZVxyXG4gIH0sXHJcbiAgb25Mb2FkKG9wdGlvbnMpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKGFwcCk7XHJcbiAgICBsZXQgZG9jY29kZSA9b3B0aW9ucy5kb2Njb2RlfHwnJztcclxuICAgIGxldCBmcm9tUGFnZSA9b3B0aW9ucy5mcm9tUGFnZXx8Jyc7XHJcbiAgICBsZXQgc2V0dGluZ3MgPSB3eC5nbG9iYWxEYXRhLnNldHRpbmdzO1xyXG4gICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgZmlsZVVwbG9hZFVybDogYC9zaG9wcGluZy9wYW5pY0J1eWluZy5kbz9tPXVwbG9hZEF0dGFjaG1lbnQmZm9ybWlkPSR7dGhpcy5kYXRhLmZvcm1JZH1gLFxyXG4gICAgICBkb2Njb2RlLFxyXG4gICAgICBmcm9tUGFnZSxcclxuICAgICAgZmVlUmF0ZUZvclBheTogKHNldHRpbmdzLmZlZVJhdGVGb3JXeFBheStzZXR0aW5ncy5wbGF0Zm9ybU9wZXJhdG9yQ29tbWlzc2lvblJhdGlvKSoxMDBcclxuICAgIH0pXHJcbiAgICBpZiAoZG9jY29kZSkge1xyXG4gICAgICB0aGlzLmdldFNhdmVEYXRhKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IHN0b3JlRWRpdCA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjc3RvcmUtZWRpdCcpO1xyXG4gICAgICBzdG9yZUVkaXQuZ2V0U3RvcmVMaXN0KCk7XHJcbiAgICB9XHJcbiAgfSxcclxuICBhc3luYyBnZXRTYXZlRGF0YSgpIHtcclxuICAgIGF3YWl0IGdldFNhdmVEYXRhKHRoaXMpXHJcbiAgICAvLyBsZXQgZG9jY29kZSA9IHRoaXMuZGF0YS5kb2Njb2RlO1xyXG4gICAgLy8gbGV0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IHd4LiR1dGlscy50byhcclxuICAgIC8vICAgd3guJGh0dHAucmVxdWVzdCh7XHJcbiAgICAvLyAgICAgdXJsOmAvc2hvcHBpbmcvcGFuaWNCdXlpbmcuZG8/bT1nZXRQYW5pY0J1eWluZ0RldGFpbGAsXHJcbiAgICAvLyAgICAgZGF0YTp7XHJcbiAgICAvLyAgICAgICBkb2Njb2RlLFxyXG4gICAgLy8gICAgICAgaXNFZGl0OnRydWUsXHJcbiAgICAvLyAgICAgICBTZWxsZXJPcGVuSWQ6d3guZ2xvYmFsRGF0YS5PcGVuSWRcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgIH0pXHJcbiAgICAvLyApXHJcbiAgICAvLyBpZiAoZXJyb3Ipe1xyXG4gICAgLy8gICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAvLyAgIHJldHVybjtcclxuICAgIC8vIH1cclxuICAgIC8vIGNvbnNvbGUubG9nKHJlc3VsdCk7XHJcbiAgICAvLyBsZXQgZGF0YSA9IHJlc3VsdC5saXN0WzBdO1xyXG4gICAgLy8gbGV0IGZvcm1EYXRhID0ge1xyXG4gICAgLy8gICBwcm9tb3Rpb25zVGl0bGU6IGRhdGEudGl0bGUsXHJcbiAgICAvLyAgIG9yaWdpbmFsUHJpY2U6IGRhdGEub3JpZ2luYWxQcmljZSxcclxuICAgIC8vICAgZmxhc2hTYWxlUHJpY2U6IGRhdGEuc2FsZXNQcmljZSxcclxuICAgIC8vICAgZmxhc2hTYWxlVG90YWw6IGRhdGEucXVhbnRpdHksXHJcbiAgICAvLyAgIGZsYXNoU2FsZUxpbWl0OiBkYXRhLnJlc3RyaWN0QnV5aW5nUXVhbnRpdHksXHJcbiAgICAvLyAgIHByb21vdGlvbkRlc2NyaXB0aW9uOiBkYXRhLmRlc2NyaXB0aW9uLFxyXG4gICAgLy8gICBzdGFydFRpbWU6IGRhdGEuZWZmZWN0aXZlU3RhcnREYXRlLFxyXG4gICAgLy8gICBlbmRUaW1lOiBkYXRhLmVmZmVjdGl2ZUVuZERhdGUsXHJcbiAgICAvLyAgIGNvdmVySW1hZ2VMaXN0OiAoZGF0YS5jb3ZlckltYWdlVXJsJiZ0aGlzLmdldENvdmVySW1hZ2VMaXN0KGRhdGEpKXx8W10sXHJcbiAgICAvLyAgIC8vIGltYWdlc0xpc3Q6IChkYXRhLmltYWdlc1VybC5sZW5ndGg+MCYmdGhpcy5nZXRJbWFnZXNMaXN0KGRhdGEpKXx8W10sXHJcbiAgICAvLyAgIGltYWdlc0xpc3Q6IGRhdGEuaW1hZ2VzVXJsLFxyXG4gICAgLy8gICBjb3ZlckltYWdlOiBkYXRhLmNvdmVySW1hZ2UsXHJcbiAgICAvLyAgIGltYWdlczogZGF0YS5pbWFnZXMsXHJcbiAgICAvLyAgIGZyZWVJZDpkYXRhLmZyZWVJZCxcclxuICAgIC8vIH07XHJcbiAgICAvLyB0aGlzLnNldERhdGEoe1xyXG4gICAgLy8gICAuLi5mb3JtRGF0YSxcclxuICAgIC8vICAgY292ZXJJbWFnZVVybDpkYXRhLmNvdmVySW1hZ2VVcmwsXHJcbiAgICAvLyAgIC8vIFtgZWZmZWN0aXZlU3RhcnREYXRlYF06IGRhdGEuZWZmZWN0aXZlU3RhcnREYXRlLFxyXG4gICAgLy8gICAvLyBbYGVmZmVjdGl2ZUVuZERhdGVgXTogZGF0YS5lZmZlY3RpdmVFbmREYXRlLFxyXG4gICAgLy8gICAvLyBbYGZyZWVJZGBdOiBkYXRhLmZyZWVJZCxcclxuICAgIC8vICAgLy8gW2B0aXRsZWBdOiBkYXRhLnRpdGxlLFxyXG4gICAgLy8gICAvLyBbYG9yaWdpbmFsUHJpY2VgXTogZGF0YS5vcmlnaW5hbFByaWNlLFxyXG4gICAgLy8gICAvLyBbYHNhbGVzUHJpY2VgXTogZGF0YS5zYWxlc1ByaWNlLFxyXG4gICAgLy8gICAvLyBbYHF1YW50aXR5YF06IGRhdGEucXVhbnRpdHksXHJcbiAgICAvLyAgIC8vIFtgcmVzdHJpY3RCdXlpbmdRdWFudGl0eWBdOiBkYXRhLnJlc3RyaWN0QnV5aW5nUXVhbnRpdHksXHJcbiAgICAvLyAgIC8vIFtgZGVzY3JpcHRpb25gXTogZGF0YS5kZXNjcmlwdGlvbixcclxuICAgIC8vICAgc2VsbGVyTGlzdDpyZXN1bHQuc2VsbGVyTGlzdCxcclxuICAgIC8vICAgc3RvcmVMaXN0OnJlc3VsdC5zdG9yZUxpc3QsXHJcbiAgICAvLyAgIHN0YXR1czpkYXRhLnBhbmljQnV5aW5nU3RhdHVzLFxyXG4gICAgLy8gICBkZWxpdmVyeTp7XHJcbiAgICAvLyAgICAgZnJlZUlkOmRhdGEuZnJlZUlkLFxyXG4gICAgLy8gICAgIGZyZWVOYW1lOmRhdGEuZnJlZU5hbWUsXHJcbiAgICAvLyAgICAgaXNSZXF1aXJlZEFkZHJlc3M6ZGF0YS5pc1JlcXVpcmVkQWRkcmVzcyxcclxuICAgIC8vICAgICB0cmFuc0Nvc3RzOmRhdGEudHJhbnNDb3N0cyxcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSk7XHJcbiAgICAvLyBjb25zb2xlLmxvZygn6YWN6YCB5pWw5o2u44CC44CC44CCJyx0aGlzLmRhdGEuZGVsaXZlcnkpO1xyXG4gICAgLy8gd3guc2V0TmF2aWdhdGlvbkJhclRpdGxlKHtcclxuICAgIC8vICAgdGl0bGU6IGRhdGEudGl0bGVcclxuICAgIC8vIH0pXHJcbiAgfSxcclxuXHJcbiAgZ2V0Q292ZXJJbWFnZUxpc3QoZGF0YTphbnkpe1xyXG4gICAgbGV0IFt1bmlkLHNlcV0gPSBkYXRhLmNvdmVySW1hZ2Uuc3BsaXQoXCI7XCIpO1xyXG4gICAgcmV0dXJuIFt7XHJcbiAgICAgIHVybDogZGF0YS5jb3ZlckltYWdlVXJsfHwnJyxcclxuICAgICAgdW5pZCxcclxuICAgICAgc2VxXHJcbiAgICB9XVxyXG4gIH0sXHJcbiAgLy8gZ2V0SW1hZ2VzTGlzdChkYXRhOmFueSl7XHJcbiAgLy8gICBsZXQgW3VuaWQsc2VxXSA9IGRhdGEuaW1hZ2VzLnNwbGl0KFwiO1wiKTtcclxuICAvLyAgIHJldHVybiBkYXRhLmltYWdlc1VybC5tYXAoKGl0ZW06c3RyaW5nKT0+e1xyXG4gIC8vICAgICByZXR1cm4ge1xyXG4gIC8vICAgICAgIHVybDogaXRlbSxcclxuICAvLyAgICAgICB1bmlkLFxyXG4gIC8vICAgICAgIHNlcVxyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KVxyXG4gIC8vIH0sXHJcblxyXG4gIG9uUmVhZHkoKSB7XHJcbiAgICB0aGlzLmluaXRWYWxpZGF0b3IoKVxyXG4gIH0sXHJcbiAgc2VsZWN0ZWRTdGFydFRpbWUoZXZlbnQ6YW55KSB7XHJcbiAgICBjb25zb2xlLmxvZygn5byA5aeLJyxldmVudCk7XHJcbiAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICBzdGFydFRpbWU6IGV2ZW50LmRldGFpbC5zdGFydFRpbWUsXHJcbiAgICB9KVxyXG4gIH0sXHJcbiAgc2VsZWN0ZWRFbmRUaW1lKGV2ZW50OmFueSl7XHJcbiAgICBjb25zb2xlLmxvZygn57uT5p2fJyxldmVudCk7XHJcbiAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICBlbmRUaW1lOiBldmVudC5kZXRhaWwuZW5kVGltZSxcclxuICAgIH0pXHJcbiAgfSxcclxuICBnZXREZWxpdmVyeU1ldGhvZChldmVudDphbnkpe1xyXG4gICAgY29uc29sZS5sb2coZXZlbnQuZGV0YWlsKTtcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIC8vIGRlbGl2ZXJ5TWV0aG9kOiBldmVudC5kZXRhaWwuZGVsaXZlcnlNZXRob2QsXHJcbiAgICAgIGZyZWVJZDogZXZlbnQuZGV0YWlsLmZyZWVJZCxcclxuICAgIH0pXHJcbiAgICBjb25zb2xlLmxvZygndGhpcy5kYXRhLmZyZWVJZDsnLHRoaXMuZGF0YS5mcmVlSWQpO1xyXG4gIH0sXHJcblxyXG4gIGNoZWNrUHJvbW90aW9uc1RpdGxlKGU6YW55KXtcclxuICAgIGxldCB7IHZhbHVlIH0gPSBlLmRldGFpbFxyXG4gICAgY29uc29sZS5sb2coZSk7XHJcbiAgICB2YWxpZGF0b3JJbnN0YW5jZS5jaGVja0ZpZWxkKCdwcm9tb3Rpb25zVGl0bGUnLHZhbHVlKTtcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIHByb21vdGlvbnNUaXRsZTp2YWx1ZS50cmltKClcclxuICAgIH0pXHJcbiAgfSxcclxuICBjaGVja09yaWdpbmFsUHJpY2UoZTphbnkpe1xyXG4gICAgbGV0IHsgdmFsdWUgfSA9IGUuZGV0YWlsXHJcbiAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgIHZhbGlkYXRvckluc3RhbmNlLmNoZWNrRmllbGQoJ29yaWdpbmFsUHJpY2UnLHZhbHVlKTtcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIG9yaWdpbmFsUHJpY2U6dmFsdWUudHJpbSgpXHJcbiAgICB9KVxyXG4gIH0sXHJcbiAgY2hlY2tGbGFzaFNhbGVQcmljZShlOmFueSl7XHJcbiAgICBsZXQgeyB2YWx1ZSB9ID0gZS5kZXRhaWxcclxuICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgdmFsaWRhdG9ySW5zdGFuY2UuY2hlY2tGaWVsZCgnZmxhc2hTYWxlUHJpY2UnLHZhbHVlKTtcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIGZsYXNoU2FsZVByaWNlOnZhbHVlLnRyaW0oKVxyXG4gICAgfSlcclxuICB9LFxyXG4gIGNoZWNrRmxhc2hTYWxlVG90YWwoZTphbnkpe1xyXG4gICAgbGV0IHsgdmFsdWUgfSA9IGUuZGV0YWlsXHJcbiAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgIHZhbGlkYXRvckluc3RhbmNlLmNoZWNrRmllbGQoJ2ZsYXNoU2FsZVRvdGFsJyx2YWx1ZSk7XHJcbiAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICBmbGFzaFNhbGVUb3RhbDp2YWx1ZS50cmltKClcclxuICAgIH0pXHJcbiAgfSxcclxuICBjaGVja0ZsYXNoU2FsZUxpbWl0KGU6YW55KXtcclxuICAgIGxldCB7IHZhbHVlIH0gPSBlLmRldGFpbFxyXG4gICAgY29uc29sZS5sb2coZSk7XHJcbiAgICB2YWxpZGF0b3JJbnN0YW5jZS5jaGVja0ZpZWxkKCdmbGFzaFNhbGVMaW1pdCcsdmFsdWUpO1xyXG4gICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgZmxhc2hTYWxlTGltaXQ6dmFsdWUudHJpbSgpXHJcbiAgICB9KVxyXG4gIH0sXHJcbiAgY2hlY2tQcm9tb3Rpb25EZXNjcmlwdGlvbihlOmFueSl7XHJcbiAgICBsZXQgeyB2YWx1ZSB9ID0gZS5kZXRhaWxcclxuICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgdmFsaWRhdG9ySW5zdGFuY2UuY2hlY2tGaWVsZCgncHJvbW90aW9uRGVzY3JpcHRpb24nLHZhbHVlKTtcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIHByb21vdGlvbkRlc2NyaXB0aW9uOnZhbHVlLnRyaW0oKVxyXG4gICAgfSlcclxuICB9LFxyXG5cclxuICAvLyBhc3luYyBwb3N0Rm9ybURhdGEoZGF0YTpvYmplY3Qpe1xyXG4gIC8vICAgbGV0IFtlcnJvciwgcmVzXSA9IGF3YWl0IHd4LiR1dGlscy50byhcclxuICAvLyAgICAgd3guJGh0dHAucmVxdWVzdCh7XHJcbiAgLy8gICAgICAgdXJsOicvc2hvcHBpbmcvcGFuaWNCdXlpbmcuZG8/bT1zYXZlRG9jQ29kZScsXHJcbiAgLy8gICAgICAgZGF0YSxcclxuICAvLyAgICAgICBtZXRob2Q6J1BPU1QnXHJcbiAgLy8gICAgIH0pXHJcbiAgLy8gICApXHJcbiAgLy8gICBpZiAoZXJyb3IpIHtcclxuICAvLyAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gIC8vICAgICByZXR1cm4gZmFsc2U7XHJcbiAgLy8gICB9XHJcbiAgLy8gICBjb25zb2xlLmxvZyhyZXMpO1xyXG4gIC8vICAgaWYgKHJlcy5zdGF0ZSA9PT0gJ3N1Y2Nlc3MnKSB7XHJcbiAgLy8gICAgIHd4LnNob3dUb2FzdCh7XHJcbiAgLy8gICAgICAgdGl0bGU6ICfmiJDlip8nLFxyXG4gIC8vICAgICAgIGR1cmF0aW9uOiAyMDAwXHJcbiAgLy8gICAgIH0pXHJcbiAgLy8gICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgLy8gICAgICAgZG9jY29kZTpyZXMuRG9jQ29kZVxyXG4gIC8vICAgICB9KVxyXG4gIC8vICAgfVxyXG4gIC8vICAgaWYgKHJlcy5zdGF0ZSA9PT0gJ2ZhaWxlZCcmJnJlcy5zZWxsZXJDaGVja2VkQmFsYW5jZT4wKSB7XHJcbiAgLy8gICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgLy8gICAgICAgc2VsbGVyVW5DaGVja2VkTmFtZXM6IHJlcy5zZWxsZXJVbkNoZWNrZWROYW1lcyxcclxuICAvLyAgICAgICBpc1Nob3dEaWFsb2c6IHRydWVcclxuICAvLyAgICAgfSlcclxuICAvLyAgIH1cclxuICAvLyAgIHJldHVybiByZXMuc3RhdGUgPT09ICdzdWNjZXNzJztcclxuICAvLyB9LFxyXG4gIG9uU3VibWl0Ond4LiR1dGlscy5kZWJvdW5jZShmdW5jdGlvbih0aGlzOmFueSl7XHJcbiAgICB0aGlzLnN1Ym1pdEhhbmRsZXIoKTtcclxuICAgIHJldHVybjtcclxuICB9KSxcclxuXHJcbiAgYXN5bmMgc3VibWl0SGFuZGxlcigpIHtcclxuICAgIGF3YWl0IHByb21vdGlvbnNTdWJtaXRIYW5kbGVyKHRoaXMsdmFsaWRhdG9ySW5zdGFuY2UpO1xyXG4gICAgcmV0dXJuO1xyXG4gICAgLy8gbGV0IHRpbWVRdWFudHVtID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyN0aW1lLXF1YW50dW0nKTtcclxuICAgIC8vIGxldCBzZWxsZXJFZGl0ID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyNzZWxsZXItZWRpdCcpO1xyXG4gICAgLy8gbGV0IHN0b3JlRWRpdCA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjc3RvcmUtZWRpdCcpO1xyXG4gICAgLy8gbGV0IGZpbGVVcGxvYWRlciA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjZmlsZS11cGxvYWRlcicpO1xyXG4gICAgLy8gbGV0IGZpbGVVcGxvYWRlck11bHRpcGxlID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyNmaWxlLXVwbG9hZGVyLW11bHRpcGxlJyk7XHJcbiAgICAvL1xyXG4gICAgLy8gbGV0IGRlbGl2ZXJ5TWV0aG9kID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyNkZWxpdmVyeS1tZXRob2QnKTtcclxuICAgIC8vIGxldCBjaGVja1RyYW5zQ29zdHMgPSB0cnVlO1xyXG4gICAgLy8gbGV0IHRyYW5zQ29zdHMgPSAwO1xyXG4gICAgLy8gaWYgKGRlbGl2ZXJ5TWV0aG9kLmRhdGEuaXNSZXF1aXJlZEFkZHJlc3Mpe1xyXG4gICAgLy8gICBjaGVja1RyYW5zQ29zdHMgPSBkZWxpdmVyeU1ldGhvZC5jaGVja0ZpZWxkcygpO1xyXG4gICAgLy8gICB0cmFuc0Nvc3RzID0gTnVtYmVyKGRlbGl2ZXJ5TWV0aG9kLmRhdGEudHJhbnNDb3N0cyk7XHJcbiAgICAvLyB9XHJcbiAgICAvL1xyXG4gICAgLy8gY29uc29sZS5sb2codGltZVF1YW50dW0pO1xyXG4gICAgLy9cclxuICAgIC8vIGxldCBjaGVja1N0YXJ0VGltZSA9IHRpbWVRdWFudHVtLmNoZWNrVGltZShcInN0YXJ0VGltZVwiKTtcclxuICAgIC8vIGxldCBjaGVja0VuZFRpbWUgPSB0aW1lUXVhbnR1bS5jaGVja1RpbWUoXCJlbmRUaW1lXCIpO1xyXG4gICAgLy8gbGV0IGNoZWNrQ292ZXJJbWFnZSA9IGZpbGVVcGxvYWRlci5jaGVja0ltYWdlcyhcImNvdmVySW1hZ2VcIiwgXCLor7fkuIrkvKDkuIDlvKDlsIHpnaLlm75cIik7XHJcbiAgICAvLyAvLyBsZXQgY2hlY2tJbWFnZXMgPSBmaWxlVXBsb2FkZXJNdWx0aXBsZS5jaGVja0ltYWdlcyhcImltYWdlc1wiLCBcIuivt+iHs+WwkeS4iuS8oOS4gOW8oOWbvueJh1wiKTtcclxuICAgIC8vIGxldCBjaGVja0FsbERhdGEgPSB2YWxpZGF0b3JJbnN0YW5jZS5jaGVja0FsbERhdGEoKTtcclxuICAgIC8vIC8vIGlmICh0aGlzLmRhdGEuZ29vZHNJbWdMaXN0Lmxlbmd0aCA8IDEpIHtcclxuICAgIC8vIC8vICAgY29uc29sZS5sb2coJ+ivt+S4iuS8oOS6p+WTgeWbvueJhycpO1xyXG4gICAgLy8gLy8gfVxyXG4gICAgLy8gbGV0IHNlbGxlckxpc3QgPSBzZWxsZXJFZGl0LmdldFNlbGxlckxpc3QoKTtcclxuICAgIC8vIGlmIChzZWxsZXJMaXN0Lmxlbmd0aDwxKSB7XHJcbiAgICAvLyAgIHd4LnNob3dUb2FzdCh7XHJcbiAgICAvLyAgICAgdGl0bGU6ICfor7fpgInmi6nokKXplIDkurrlkZgnLFxyXG4gICAgLy8gICAgIGljb246ICdub25lJyxcclxuICAgIC8vICAgICBkdXJhdGlvbjogMjAwMFxyXG4gICAgLy8gICB9KVxyXG4gICAgLy8gICByZXR1cm5cclxuICAgIC8vIH1cclxuICAgIC8vIGxldCBzdG9yZUxpc3QgPSBzdG9yZUVkaXQuZ2V0U2VsZWN0ZWRTdG9yZUlkTGlzdCgpO1xyXG4gICAgLy8gY29uc29sZS5sb2coJ+W+heaPkOS6pOeahOmXqOW6l2lkJyxzdG9yZUxpc3QpO1xyXG4gICAgLy8gbGV0IGNoZWNrRGVmYXVsdFNlbGxlciA9IHNlbGxlckVkaXQuY2hlY2tEZWZhdWx0U2VsbGVyKCk7XHJcbiAgICAvLyBpZiAoIWNoZWNrRGVmYXVsdFNlbGxlcikge1xyXG4gICAgLy8gICB3eC5zaG93VG9hc3Qoe1xyXG4gICAgLy8gICAgIHRpdGxlOiAn6K+36YCJ5oup6buY6K6k6JCl6ZSA5Lq65ZGYJyxcclxuICAgIC8vICAgICBpY29uOiAnbm9uZScsXHJcbiAgICAvLyAgICAgZHVyYXRpb246IDIwMDBcclxuICAgIC8vICAgfSlcclxuICAgIC8vICAgcmV0dXJuXHJcbiAgICAvLyB9XHJcbiAgICAvLyBjb25zb2xlLmxvZygnY2hlY2tEZWZhdWx0U2VsbGVyJyxjaGVja0RlZmF1bHRTZWxsZXIpO1xyXG4gICAgLy9cclxuICAgIC8vIGxldCBjaGVja0FyciA9IFtjaGVja1RyYW5zQ29zdHMsY2hlY2tTdGFydFRpbWUsY2hlY2tFbmRUaW1lLGNoZWNrQ292ZXJJbWFnZSxjaGVja0FsbERhdGFdO1xyXG4gICAgLy8gbGV0IGRhdGEgPSB7fTtcclxuICAgIC8vIGlmIChjaGVja0Fyci5ldmVyeSgoaXRlbSk9PntcclxuICAgIC8vICAgcmV0dXJuIGl0ZW1cclxuICAgIC8vIH0pKXtcclxuICAgIC8vICAgY29uc29sZS5sb2coJy4uLi7mj5DkuqTmiJDlip8nKTtcclxuICAgIC8vICAgbGV0IGNvdmVySW1hZ2UgPSBmaWxlVXBsb2FkZXIuZ2V0Q292ZXJJbWFnZVVuaWQoKTtcclxuICAgIC8vICAgbGV0IGNvdmVySW1hZ2VVcmwgPSBmaWxlVXBsb2FkZXIuZ2V0SW1nTGlzdCgpWzBdLnVybHx8Jyc7XHJcbiAgICAvLyAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAvLyAgICAgY292ZXJJbWFnZVVybFxyXG4gICAgLy8gICB9KVxyXG4gICAgLy8gICBsZXQgaW1hZ2VzID0gZmlsZVVwbG9hZGVyTXVsdGlwbGUuZ2V0SW1hZ2VzVW5pZCgpO1xyXG4gICAgLy8gICBjb25zb2xlLmxvZyhjb3ZlckltYWdlLGltYWdlcyxjb3ZlckltYWdlVXJsKTtcclxuICAgIC8vICAgbGV0IGZvcm1EYXRhOiBhbnkgPSB0aGlzLmRhdGE7XHJcbiAgICAvLyAgIGRhdGEgPSB7XHJcbiAgICAvLyAgICAgZG9jQ29kZTogZm9ybURhdGEuZG9jY29kZSwgLy/mtLvliqjljZXlj7fvvIzmlrDlu7rmtLvliqjml7bkuLrnqbrlgLzvvIznvJbovpHml7bpnIDopoFkb2Njb2Rl5YC8XHJcbiAgICAvLyAgICAgZm9ybUlkOiBmb3JtRGF0YS5mb3JtSWQsIC8v5Yqf6IO95Y+377ya56eS5p2AIDcxMDgwMiDvvIwg5oql5ZCN6YKA57qmIDcxMDgwMyDvvIzlm6LotK0gNzEwODA0XHJcbiAgICAvLyAgICAgZG9jU3RhdHVzOjEwMCwgLy/ljZXmja7nirbmgIE6IDAg5L+d5a2Y77yI6LW36I2J77yJIO+8jDEwMCDlj5HluINcclxuICAgIC8vICAgICBjb3ZlckltYWdlLFxyXG4gICAgLy8gICAgIGltYWdlcyxcclxuICAgIC8vICAgICB0cmFuc0Nvc3RzLCAvL+mAgei0p+S4iumXqOaXtiDphY3pgIHotLlcclxuICAgIC8vICAgICAvLyAuLi50aGlzLmRhdGEuZm9ybURhdGEsXHJcbiAgICAvL1xyXG4gICAgLy8gICAgIGVmZmVjdGl2ZVN0YXJ0RGF0ZTogZm9ybURhdGEuc3RhcnRUaW1lLFxyXG4gICAgLy8gICAgIGVmZmVjdGl2ZUVuZERhdGU6IGZvcm1EYXRhLmVuZFRpbWUsXHJcbiAgICAvLyAgICAgZnJlZUlkOiBmb3JtRGF0YS5mcmVlSWQsXHJcbiAgICAvLyAgICAgdGl0bGU6IGZvcm1EYXRhLnByb21vdGlvbnNUaXRsZSxcclxuICAgIC8vICAgICBvcmlnaW5hbFByaWNlOiBOdW1iZXIoZm9ybURhdGEub3JpZ2luYWxQcmljZSksXHJcbiAgICAvLyAgICAgc2FsZXNQcmljZTogTnVtYmVyKGZvcm1EYXRhLmZsYXNoU2FsZVByaWNlKSxcclxuICAgIC8vICAgICBxdWFudGl0eTogTnVtYmVyKGZvcm1EYXRhLmZsYXNoU2FsZVRvdGFsKSxcclxuICAgIC8vICAgICByZXN0cmljdEJ1eWluZ1F1YW50aXR5OiBOdW1iZXIoZm9ybURhdGEuZmxhc2hTYWxlTGltaXQpLFxyXG4gICAgLy8gICAgIGRlc2NyaXB0aW9uOiBmb3JtRGF0YS5wcm9tb3Rpb25EZXNjcmlwdGlvbixcclxuICAgIC8vICAgICBzdG9yZUxpc3QsXHJcbiAgICAvLyAgICAgc2VsbGVyTGlzdCxcclxuICAgIC8vICAgfVxyXG4gICAgLy8gICBjb25zb2xlLmxvZygn5b6F5Y+R5biD5pWw5o2uJyxkYXRhKTtcclxuICAgIC8vICAgaWYgKCFhd2FpdCB0aGlzLnBvc3RGb3JtRGF0YShkYXRhKSkgcmV0dXJuO1xyXG4gICAgLy8gICBpZiAodGhpcy5kYXRhLmZyb21QYWdlPT0nZWRpdCcpe1xyXG4gICAgLy8gICAgIHd4Lm5hdmlnYXRlQmFjaygpO1xyXG4gICAgLy8gICB9IGVsc2V7XHJcbiAgICAvLyAgICAgd3gucmVkaXJlY3RUbyh7XHJcbiAgICAvLyAgICAgICB1cmw6Jy4uL3Byb21vdGlvbnNNYW5hZ2VMaXN0L3Byb21vdGlvbnNNYW5hZ2VMaXN0P3RhYj0xJ1xyXG4gICAgLy8gICAgIH0pXHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH0gZWxzZSB7XHJcbiAgICAvLyAgIGNvbnNvbGUubG9nKCfov5jmnInplJnor6/mnKrlpITnkIYnKTtcclxuICAgIC8vICAgaWYgKCFjaGVja0NvdmVySW1hZ2UpIHtcclxuICAgIC8vICAgICB3eC4kdXRpbHMuc2Nyb2xsVG9FcnJvcignI2ZpbGUtdXBsb2FkZXInLCfor7fkuIrkvKDkuIDlvKDlsIHpnaLlm74nKVxyXG4gICAgLy8gICAgIHJldHVybjtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gICBpZiAoIWNoZWNrQWxsRGF0YSkge1xyXG4gICAgLy8gICAgIGxldCBydWxlcyA9IHZhbGlkYXRvckluc3RhbmNlLmdldFJ1bGVycygpO1xyXG4gICAgLy8gICAgIGZvciAoY29uc3QgcnVsZSBvZiBydWxlcykge1xyXG4gICAgLy8gICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgLy8gICAgICAgbGV0IGVycm9yTXNnID0gdGhpcy5kYXRhW2Ake3J1bGV9RXJyb3JgXTtcclxuICAgIC8vICAgICAgIGlmIChlcnJvck1zZyl7XHJcbiAgICAvLyAgICAgICAgIHd4LiR1dGlscy5zY3JvbGxUb0Vycm9yKGAjJHtydWxlfWAsZXJyb3JNc2cpXHJcbiAgICAvLyAgICAgICAgIGJyZWFrO1xyXG4gICAgLy8gICAgICAgfVxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICByZXR1cm47XHJcbiAgICAvLyAgIH1cclxuICAgIC8vICAgaWYgKCFjaGVja1N0YXJ0VGltZSl7XHJcbiAgICAvLyAgICAgd3guJHV0aWxzLnNjcm9sbFRvRXJyb3IoJyN0aW1lLXF1YW50dW0nLCflvIDlp4vml7bpl7TpnIDlsI/kuo7nu5PmnZ/ml7bpl7QnKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy9cclxuICAgIC8vIH1cclxuXHJcblxyXG4gIH0sXHJcblxyXG4gIG9uU2F2ZTp3eC4kdXRpbHMuZGVib3VuY2UoZnVuY3Rpb24odGhpczphbnkpe1xyXG4gICAgcHJvbW90aW9uc1NhdmVIYW5kbGVyKHRoaXMpO1xyXG4gICAgcmV0dXJuO1xyXG4gICAgLy8gbGV0IHNlbGxlckVkaXQgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI3NlbGxlci1lZGl0Jyk7XHJcbiAgICAvLyBsZXQgc2VsbGVyTGlzdCA9IHNlbGxlckVkaXQuZ2V0U2VsbGVyTGlzdCgpO1xyXG4gICAgLy8gbGV0IHN0b3JlRWRpdCA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjc3RvcmUtZWRpdCcpO1xyXG4gICAgLy8gbGV0IHN0b3JlTGlzdCA9IHN0b3JlRWRpdC5nZXRTZWxlY3RlZFN0b3JlSWRMaXN0KCk7XHJcbiAgICAvLyBjb25zb2xlLmxvZygn5b6F5o+Q5Lqk55qE6Zeo5bqXaWQnLHN0b3JlTGlzdCk7XHJcbiAgICAvLyBsZXQgZmlsZVVwbG9hZGVyID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyNmaWxlLXVwbG9hZGVyJyk7XHJcbiAgICAvLyBsZXQgZmlsZVVwbG9hZGVyTXVsdGlwbGUgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI2ZpbGUtdXBsb2FkZXItbXVsdGlwbGUnKTtcclxuICAgIC8vIGNvbnNvbGUubG9nKCcuLi4u5o+Q5Lqk5oiQ5YqfJyk7XHJcbiAgICAvLyBsZXQgY292ZXJJbWFnZSA9IGZpbGVVcGxvYWRlci5nZXRDb3ZlckltYWdlVW5pZCgpO1xyXG4gICAgLy8gbGV0IGltYWdlcyA9IGZpbGVVcGxvYWRlck11bHRpcGxlLmdldEltYWdlc1VuaWQoKTtcclxuICAgIC8vIGxldCBkZWxpdmVyeU1ldGhvZCA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjZGVsaXZlcnktbWV0aG9kJyk7XHJcbiAgICAvLyBsZXQgdHJhbnNDb3N0cyA9IDA7XHJcbiAgICAvLyBpZiAoZGVsaXZlcnlNZXRob2QuZGF0YS5pc1JlcXVpcmVkQWRkcmVzcyl7XHJcbiAgICAvLyAgIHRyYW5zQ29zdHMgPSBOdW1iZXIoZGVsaXZlcnlNZXRob2QuZGF0YS50cmFuc0Nvc3RzKTtcclxuICAgIC8vIH1cclxuICAgIC8vIGNvbnNvbGUubG9nKGNvdmVySW1hZ2UsaW1hZ2VzKTtcclxuICAgIC8vIGxldCBmb3JtRGF0YTogYW55ID0gdGhpcy5kYXRhO1xyXG4gICAgLy8gY29uc29sZS5sb2coJz4+Pj4+Pj4+Zm9ybURhdGEnLGZvcm1EYXRhKTtcclxuICAgIC8vIGxldCBkYXRhID0ge1xyXG4gICAgLy8gICBkb2NDb2RlOiBmb3JtRGF0YS5kb2Njb2RlLCAvL+a0u+WKqOWNleWPt++8jOaWsOW7uua0u+WKqOaXtuS4uuepuuWAvO+8jOe8lui+keaXtumcgOimgWRvY2NvZGXlgLxcclxuICAgIC8vICAgZm9ybUlkOiBmb3JtRGF0YS5mb3JtSWQsIC8v5Yqf6IO95Y+377ya56eS5p2AIDcxMDgwMiDvvIwg5oql5ZCN6YKA57qmIDcxMDgwMyDvvIzlm6LotK0gNzEwODA0XHJcbiAgICAvLyAgIGRvY1N0YXR1czogMCwgLy/ljZXmja7nirbmgIE6IDAg5L+d5a2Y77yI6LW36I2J77yJIO+8jDEwMCDlj5HluINcclxuICAgIC8vICAgY292ZXJJbWFnZSxcclxuICAgIC8vICAgaW1hZ2VzLFxyXG4gICAgLy8gICB0cmFuc0Nvc3RzLCAvL+mAgei0p+S4iumXqOaXtiDphY3pgIHotLlcclxuICAgIC8vICAgLy8gLi4udGhpcy5kYXRhLmZvcm1EYXRhLFxyXG4gICAgLy9cclxuICAgIC8vICAgZWZmZWN0aXZlU3RhcnREYXRlOiBmb3JtRGF0YS5zdGFydFRpbWUsXHJcbiAgICAvLyAgIGVmZmVjdGl2ZUVuZERhdGU6IGZvcm1EYXRhLmVuZFRpbWUsXHJcbiAgICAvLyAgIGZyZWVJZDogZm9ybURhdGEuZnJlZUlkLFxyXG4gICAgLy8gICB0aXRsZTogZm9ybURhdGEucHJvbW90aW9uc1RpdGxlLFxyXG4gICAgLy8gICBvcmlnaW5hbFByaWNlOiBOdW1iZXIoZm9ybURhdGEub3JpZ2luYWxQcmljZSl8fDAsXHJcbiAgICAvLyAgIHNhbGVzUHJpY2U6IE51bWJlcihmb3JtRGF0YS5mbGFzaFNhbGVQcmljZSl8fDAsXHJcbiAgICAvLyAgIHF1YW50aXR5OiBOdW1iZXIoZm9ybURhdGEuZmxhc2hTYWxlVG90YWwpfHwwLFxyXG4gICAgLy8gICByZXN0cmljdEJ1eWluZ1F1YW50aXR5OiBOdW1iZXIoZm9ybURhdGEuZmxhc2hTYWxlTGltaXQpfHwwLFxyXG4gICAgLy8gICBkZXNjcmlwdGlvbjogZm9ybURhdGEucHJvbW90aW9uRGVzY3JpcHRpb24sXHJcbiAgICAvLyAgIHN0b3JlTGlzdCxcclxuICAgIC8vICAgc2VsbGVyTGlzdCxcclxuICAgIC8vIH1cclxuICAgIC8vIC8vIGxldCBkYXRhID0ge1xyXG4gICAgLy8gLy8gICBkb2NDb2RlOnRoaXMuZGF0YS5kb2Njb2RlLCAvL+a0u+WKqOWNleWPt++8jOaWsOW7uua0u+WKqOaXtuS4uuepuuWAvO+8jOe8lui+keaXtumcgOimgWRvY2NvZGXlgLxcclxuICAgIC8vIC8vICAgZm9ybUlkOnRoaXMuZGF0YS5mb3JtSWQsIC8v5Yqf6IO95Y+377ya56eS5p2AIDcxMDgwMiDvvIwg5oql5ZCN6YKA57qmIDcxMDgwMyDvvIzlm6LotK0gNzEwODA0XHJcbiAgICAvLyAvLyAgIGRvY1N0YXR1czowLCAvL+WNleaNrueKtuaAgTogMCDkv53lrZjvvIjotbfojYnvvIkg77yMMTAwIOWPkeW4g1xyXG4gICAgLy8gLy8gICBjb3ZlckltYWdlLFxyXG4gICAgLy8gLy8gICBpbWFnZXMsXHJcbiAgICAvLyAvLyAgIHRyYW5zQ29zdHMsIC8v6YCB6LSn5LiK6Zeo5pe2IOmFjemAgei0uVxyXG4gICAgLy8gLy8gICAuLi50aGlzLmRhdGEuZm9ybURhdGEsXHJcbiAgICAvLyAvLyAgIHNlbGxlckxpc3QsXHJcbiAgICAvLyAvLyB9XHJcbiAgICAvLyBjb25zb2xlLmxvZygn5b6F5L+d5a2Y5pWw5o2uJyxkYXRhKTtcclxuICAgIC8vIHRoaXMucG9zdEZvcm1EYXRhKGRhdGEpO1xyXG4gICAgLy8gcmV0dXJuO1xyXG4gIH0pLFxyXG4gIC8vIG9uSW5wdXRTdGFydERhdGUoKSB7fSxcclxuICAvLyBvbklucHV0RW5kRGF0ZSgpIHt9LFxyXG4gIGluaXRWYWxpZGF0b3IoKXtcclxuICAgIC8vIOWunuS+i+WMllxyXG4gICAgdmFsaWRhdG9ySW5zdGFuY2UgPSBuZXcgTXlWYWxpZGF0b3Ioe1xyXG4gICAgICBydWxlczoge1xyXG4gICAgICAgIHByb21vdGlvbnNUaXRsZToge1xyXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgICByYW5nZWxlbmd0aDogWzMsMTRdXHJcbiAgICAgICAgfSxcclxuICAgICAgICBvcmlnaW5hbFByaWNlOiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICAgIG51bWJlcjogdHJ1ZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZmxhc2hTYWxlUHJpY2U6IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgICAgbnVtYmVyOiB0cnVlXHJcbiAgICAgICAgfSxcclxuICAgICAgICBmbGFzaFNhbGVUb3RhbDoge1xyXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgICBudW1iZXI6IHRydWVcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZsYXNoU2FsZUxpbWl0OiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICAgIG51bWJlcjogdHJ1ZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gcHJvbW90aW9uRGVzY3JpcHRpb246IHtcclxuICAgICAgICAvLyAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICAgICAgLy8gfSxcclxuICAgICAgfSxcclxuICAgICAgbWVzc2FnZXM6IHtcclxuICAgICAgICBwcm9tb3Rpb25zVGl0bGU6IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiAn6K+36L6T5YWl5rS75Yqo5qCH6aKYJyxcclxuICAgICAgICAgIHJhbmdlbGVuZ3RoOiAn5paH5a2X6ZW/5bqm6K+35o6n5Yi25ZyoM+WIsDE05LmL6Ze0J1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb3JpZ2luYWxQcmljZToge1xyXG4gICAgICAgICAgcmVxdWlyZWQ6ICfor7fovpPlhaXkuqflk4HmoIfku7cnLFxyXG4gICAgICAgICAgbnVtYmVyOiAn5Lu35qC85b+F6aG75Li65pWw5a2XJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZmxhc2hTYWxlUHJpY2U6IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiAn6K+36L6T5YWl5Lqn5ZOB56eS5p2A5Lu3JyxcclxuICAgICAgICAgIG51bWJlcjogJ+S7t+agvOW/hemhu+S4uuaVsOWtlydcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZsYXNoU2FsZVRvdGFsOiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogJ+ivt+i+k+WFpeS6p+WTgeaAu+mHjycsXHJcbiAgICAgICAgICBudW1iZXI6ICfmlbDph4/lv4XpobvkuLrmlbDlrZcnXHJcbiAgICAgICAgfSxcclxuICAgICAgICBmbGFzaFNhbGVMaW1pdDoge1xyXG4gICAgICAgICAgcmVxdWlyZWQ6ICfor7fovpPlhaXkuqflk4Hmr4/kurrpmZDotK3mlbDph48nLFxyXG4gICAgICAgICAgbnVtYmVyOiAn5pWw6YeP5b+F6aG75Li65pWw5a2XJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gcHJvbW90aW9uRGVzY3JpcHRpb246IHtcclxuICAgICAgICAvLyAgIHJlcXVpcmVkOiAn6K+36L6T5YWl5rS75Yqo5o+P6L+wJ1xyXG4gICAgICAgIC8vIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIG11bHRpQ2hlY2s6dHJ1ZVxyXG4gICAgfSx0aGlzKVxyXG4gICAgLy8gdGhpcy5zZXREYXRhKHtcclxuICAgIC8vICAgdmFsaWRhdG9ySW5zdGFuY2VcclxuICAgIC8vIH0pXHJcbiAgICBjb25zb2xlLmxvZygnaGhoaCwnLHZhbGlkYXRvckluc3RhbmNlKTtcclxuICB9LFxyXG4gIG9uU2hhcmVBcHBNZXNzYWdlKCkge1xyXG4gICAgbGV0IGRvY2NvZGU6c3RyaW5nID0gdGhpcy5kYXRhLmRvY2NvZGUgfHwgJyc7XHJcbiAgICAvLyBsZXQgdGl0bGU6c3RyaW5nID0gdGhpcy5kYXRhLnByb21vdGlvbnNEYXRhLnRpdGxlIHx8ICcnO1xyXG4gICAgbGV0IGltYWdlVXJsOnN0cmluZyA9IHRoaXMuZGF0YS5jb3ZlckltYWdlVXJsIHx8ICcnO1xyXG4gICAgbGV0IHNlbGxlclVuQ2hlY2tlZE5hbWVzOnN0cmluZyA9IHRoaXMuZGF0YS5zZWxsZXJVbkNoZWNrZWROYW1lcyB8fCAnJztcclxuICAgIHJldHVybiB7XHJcbiAgICAgIC8vIHRpdGxlOiB1dGlscy5nZXRTaGFyZVRpdGxlKCksXHJcbiAgICAgIHRpdGxlOiBg6K+36JCl6ZSA5Lq65ZGYWyR7c2VsbGVyVW5DaGVja2VkTmFtZXN9XemqjOivgei6q+S7vWAsXHJcbiAgICAgIGltYWdlVXJsLFxyXG4gICAgICBwYXRoOiBgcGFnZXMvc2VsbGVyVmVyaWZ5L3NlbGxlclZlcmlmeT9kb2Njb2RlPSR7ZG9jY29kZX1gLFxyXG4gICAgfVxyXG4gIH1cclxufSlcclxuZXhwb3J0IHt9XHJcbiJdfQ==
\ No newline at end of file
diff --git a/pages/flashSaleCreate/flashSaleCreate.ts b/pages/flashSaleCreate/flashSaleCreate.ts
index c58af3c..d9c797a 100644
--- a/pages/flashSaleCreate/flashSaleCreate.ts
+++ b/pages/flashSaleCreate/flashSaleCreate.ts
@@ -1,5 +1,6 @@
 // import * as dayjs from "dayjs";
 import MyValidator from "../../utils/myValidator";
+import {promotionsSubmitHandler,promotionsSaveHandler,getSaveData} from "../../modules/promotionsCreate";
 
 let validatorInstance:MyValidator;
 // const app = getApp<IAppOption>();
@@ -38,65 +39,66 @@
     }
   },
   async getSaveData() {
-    let doccode = this.data.doccode;
-    let [error, result] = await wx.$utils.to(
-      wx.$http.request({
-        url:`/shopping/panicBuying.do?m=getPanicBuyingDetail`,
-        data:{
-          doccode,
-          isEdit:true,
-          SellerOpenId:wx.globalData.OpenId
-        }
-      })
-    )
-    if (error){
-      console.log(error);
-      return;
-    }
-    console.log(result);
-    let data = result.list[0];
-    let formData = {
-      promotionsTitle: data.title,
-      originalPrice: data.originalPrice,
-      flashSalePrice: data.salesPrice,
-      flashSaleTotal: data.quantity,
-      flashSaleLimit: data.restrictBuyingQuantity,
-      promotionDescription: data.description,
-      startTime: data.effectiveStartDate,
-      endTime: data.effectiveEndDate,
-      coverImageList: (data.coverImageUrl&&this.getCoverImageList(data))||[],
-      // imagesList: (data.imagesUrl.length>0&&this.getImagesList(data))||[],
-      imagesList: data.imagesUrl,
-      coverImage: data.coverImage,
-      images: data.images,
-      freeId:data.freeId,
-    };
-    this.setData({
-      ...formData,
-      coverImageUrl:data.coverImageUrl,
-      // [`effectiveStartDate`]: data.effectiveStartDate,
-      // [`effectiveEndDate`]: data.effectiveEndDate,
-      // [`freeId`]: data.freeId,
-      // [`title`]: data.title,
-      // [`originalPrice`]: data.originalPrice,
-      // [`salesPrice`]: data.salesPrice,
-      // [`quantity`]: data.quantity,
-      // [`restrictBuyingQuantity`]: data.restrictBuyingQuantity,
-      // [`description`]: data.description,
-      sellerList:result.sellerList,
-      storeList:result.storeList,
-      status:data.panicBuyingStatus,
-      delivery:{
-        freeId:data.freeId,
-        freeName:data.freeName,
-        isRequiredAddress:data.isRequiredAddress,
-        transCosts:data.transCosts,
-      }
-    });
-    console.log('閰嶉�佹暟鎹�傘�傘��',this.data.delivery);
-    wx.setNavigationBarTitle({
-      title: data.title
-    })
+    await getSaveData(this)
+    // let doccode = this.data.doccode;
+    // let [error, result] = await wx.$utils.to(
+    //   wx.$http.request({
+    //     url:`/shopping/panicBuying.do?m=getPanicBuyingDetail`,
+    //     data:{
+    //       doccode,
+    //       isEdit:true,
+    //       SellerOpenId:wx.globalData.OpenId
+    //     }
+    //   })
+    // )
+    // if (error){
+    //   console.log(error);
+    //   return;
+    // }
+    // console.log(result);
+    // let data = result.list[0];
+    // let formData = {
+    //   promotionsTitle: data.title,
+    //   originalPrice: data.originalPrice,
+    //   flashSalePrice: data.salesPrice,
+    //   flashSaleTotal: data.quantity,
+    //   flashSaleLimit: data.restrictBuyingQuantity,
+    //   promotionDescription: data.description,
+    //   startTime: data.effectiveStartDate,
+    //   endTime: data.effectiveEndDate,
+    //   coverImageList: (data.coverImageUrl&&this.getCoverImageList(data))||[],
+    //   // imagesList: (data.imagesUrl.length>0&&this.getImagesList(data))||[],
+    //   imagesList: data.imagesUrl,
+    //   coverImage: data.coverImage,
+    //   images: data.images,
+    //   freeId:data.freeId,
+    // };
+    // this.setData({
+    //   ...formData,
+    //   coverImageUrl:data.coverImageUrl,
+    //   // [`effectiveStartDate`]: data.effectiveStartDate,
+    //   // [`effectiveEndDate`]: data.effectiveEndDate,
+    //   // [`freeId`]: data.freeId,
+    //   // [`title`]: data.title,
+    //   // [`originalPrice`]: data.originalPrice,
+    //   // [`salesPrice`]: data.salesPrice,
+    //   // [`quantity`]: data.quantity,
+    //   // [`restrictBuyingQuantity`]: data.restrictBuyingQuantity,
+    //   // [`description`]: data.description,
+    //   sellerList:result.sellerList,
+    //   storeList:result.storeList,
+    //   status:data.panicBuyingStatus,
+    //   delivery:{
+    //     freeId:data.freeId,
+    //     freeName:data.freeName,
+    //     isRequiredAddress:data.isRequiredAddress,
+    //     transCosts:data.transCosts,
+    //   }
+    // });
+    // console.log('閰嶉�佹暟鎹�傘�傘��',this.data.delivery);
+    // wx.setNavigationBarTitle({
+    //   title: data.title
+    // })
   },
 
   getCoverImageList(data:any){
@@ -191,198 +193,216 @@
     })
   },
 
-  async postFormData(data:object){
-    let [error, res] = await wx.$utils.to(
-      wx.$http.request({
-        url:'/shopping/panicBuying.do?m=saveDocCode',
-        data,
-        method:'POST'
-      })
-    )
-    if (error) {
-      console.log(error);
-      return false;
-    }
-    console.log(res);
-    if (res.state === 'success') {
-      wx.showToast({
-        title: '鎴愬姛',
-        duration: 2000
-      })
-      this.setData({
-        doccode:res.DocCode
-      })
-    }
-    if (res.state === 'failed'&&res.sellerCheckedBalance>0) {
-      this.setData({
-        sellerUnCheckedNames: res.sellerUnCheckedNames,
-        isShowDialog: true
-      })
-    }
-    return res.state === 'success';
-  },
+  // async postFormData(data:object){
+  //   let [error, res] = await wx.$utils.to(
+  //     wx.$http.request({
+  //       url:'/shopping/panicBuying.do?m=saveDocCode',
+  //       data,
+  //       method:'POST'
+  //     })
+  //   )
+  //   if (error) {
+  //     console.log(error);
+  //     return false;
+  //   }
+  //   console.log(res);
+  //   if (res.state === 'success') {
+  //     wx.showToast({
+  //       title: '鎴愬姛',
+  //       duration: 2000
+  //     })
+  //     this.setData({
+  //       doccode:res.DocCode
+  //     })
+  //   }
+  //   if (res.state === 'failed'&&res.sellerCheckedBalance>0) {
+  //     this.setData({
+  //       sellerUnCheckedNames: res.sellerUnCheckedNames,
+  //       isShowDialog: true
+  //     })
+  //   }
+  //   return res.state === 'success';
+  // },
   onSubmit:wx.$utils.debounce(function(this:any){
     this.submitHandler();
     return;
   }),
 
   async submitHandler() {
-    let timeQuantum = this.selectComponent('#time-quantum');
-    let sellerEdit = this.selectComponent('#seller-edit');
-    let storeEdit = this.selectComponent('#store-edit');
-    let fileUploader = this.selectComponent('#file-uploader');
-    let fileUploaderMultiple = this.selectComponent('#file-uploader-multiple');
-
-    let deliveryMethod = this.selectComponent('#delivery-method');
-    let checkTransCosts = true;
-    let transCosts = 0;
-    if (deliveryMethod.data.isRequiredAddress){
-      checkTransCosts = deliveryMethod.checkFields();
-      transCosts = Number(deliveryMethod.data.transCosts);
-    }
-
-    console.log(timeQuantum);
-
-    let checkStartTime = timeQuantum.checkTime("startTime", "璇烽�夋嫨璁″垝寮�濮嬫椂闂�");
-    let checkEndTime = timeQuantum.checkTime("endTime", "璇烽�夋嫨璁″垝缁撴潫鏃堕棿");
-    let checkCoverImage = fileUploader.checkImages("coverImage", "璇蜂笂浼犱竴寮犲皝闈㈠浘");
-    // let checkImages = fileUploaderMultiple.checkImages("images", "璇疯嚦灏戜笂浼犱竴寮犲浘鐗�");
-    let checkAllData = validatorInstance.checkAllData();
-    // if (this.data.goodsImgList.length < 1) {
-    //   console.log('璇蜂笂浼犱骇鍝佸浘鐗�');
+    await promotionsSubmitHandler(this,validatorInstance);
+    return;
+    // let timeQuantum = this.selectComponent('#time-quantum');
+    // let sellerEdit = this.selectComponent('#seller-edit');
+    // let storeEdit = this.selectComponent('#store-edit');
+    // let fileUploader = this.selectComponent('#file-uploader');
+    // let fileUploaderMultiple = this.selectComponent('#file-uploader-multiple');
+    //
+    // let deliveryMethod = this.selectComponent('#delivery-method');
+    // let checkTransCosts = true;
+    // let transCosts = 0;
+    // if (deliveryMethod.data.isRequiredAddress){
+    //   checkTransCosts = deliveryMethod.checkFields();
+    //   transCosts = Number(deliveryMethod.data.transCosts);
     // }
-    let sellerList = sellerEdit.getSellerList();
-    if (sellerList.length<1) {
-      wx.showToast({
-        title: '璇烽�夋嫨钀ラ攢浜哄憳',
-        icon: 'none',
-        duration: 2000
-      })
-      return
-    }
-    let storeList = storeEdit.getSelectedStoreIdList();
-    console.log('寰呮彁浜ょ殑闂ㄥ簵id',storeList);
-    let checkDefaultSeller = sellerEdit.checkDefaultSeller();
-    if (!checkDefaultSeller) {
-      wx.showToast({
-        title: '璇烽�夋嫨榛樿钀ラ攢浜哄憳',
-        icon: 'none',
-        duration: 2000
-      })
-      return
-    }
-    console.log('checkDefaultSeller',checkDefaultSeller);
-
-    let checkArr = [checkTransCosts,checkStartTime,checkEndTime,checkCoverImage,checkAllData];
-    let data = {};
-    if (checkArr.every((item)=>{
-      return item
-    })){
-      console.log('....鎻愪氦鎴愬姛');
-      let coverImage = fileUploader.getCoverImageUnid();
-      let coverImageUrl = fileUploader.getImgList()[0].url||'';
-      this.setData({
-        coverImageUrl
-      })
-      let images = fileUploaderMultiple.getImagesUnid();
-      console.log(coverImage,images,coverImageUrl);
-      let formData: any = this.data;
-      data = {
-        docCode: formData.doccode, //娲诲姩鍗曞彿锛屾柊寤烘椿鍔ㄦ椂涓虹┖鍊硷紝缂栬緫鏃堕渶瑕乨occode鍊�
-        formId: formData.formId, //鍔熻兘鍙凤細绉掓潃 710802 锛� 鎶ュ悕閭�绾� 710803 锛屽洟璐� 710804
-        docStatus:100, //鍗曟嵁鐘舵��: 0 淇濆瓨锛堣捣鑽夛級 锛�100 鍙戝竷
-        coverImage,
-        images,
-        transCosts, //閫佽揣涓婇棬鏃� 閰嶉�佽垂
-        // ...this.data.formData,
-
-        effectiveStartDate: formData.startTime,
-        effectiveEndDate: formData.endTime,
-        freeId: formData.freeId,
-        title: formData.promotionsTitle,
-        originalPrice: Number(formData.originalPrice),
-        salesPrice: Number(formData.flashSalePrice),
-        quantity: Number(formData.flashSaleTotal),
-        restrictBuyingQuantity: Number(formData.flashSaleLimit),
-        description: formData.promotionDescription,
-        storeList,
-        sellerList,
-      }
-      console.log('寰呭彂甯冩暟鎹�',data);
-      if (!await this.postFormData(data)) return;
-      if (this.data.fromPage=='edit'){
-        wx.navigateBack();
-      } else{
-        wx.redirectTo({
-          url:'../promotionsManageList/promotionsManageList?tab=1'
-        })
-      }
-
-    } else {
-      wx.showToast({
-        title: '椤甸潰杩樻湁閿欒鏈鐞�',
-        icon: 'none',
-        duration: 2000
-      })
-      console.log('杩樻湁閿欒鏈鐞�');
-    }
+    //
+    // console.log(timeQuantum);
+    //
+    // let checkStartTime = timeQuantum.checkTime("startTime");
+    // let checkEndTime = timeQuantum.checkTime("endTime");
+    // let checkCoverImage = fileUploader.checkImages("coverImage", "璇蜂笂浼犱竴寮犲皝闈㈠浘");
+    // // let checkImages = fileUploaderMultiple.checkImages("images", "璇疯嚦灏戜笂浼犱竴寮犲浘鐗�");
+    // let checkAllData = validatorInstance.checkAllData();
+    // // if (this.data.goodsImgList.length < 1) {
+    // //   console.log('璇蜂笂浼犱骇鍝佸浘鐗�');
+    // // }
+    // let sellerList = sellerEdit.getSellerList();
+    // if (sellerList.length<1) {
+    //   wx.showToast({
+    //     title: '璇烽�夋嫨钀ラ攢浜哄憳',
+    //     icon: 'none',
+    //     duration: 2000
+    //   })
+    //   return
+    // }
+    // let storeList = storeEdit.getSelectedStoreIdList();
+    // console.log('寰呮彁浜ょ殑闂ㄥ簵id',storeList);
+    // let checkDefaultSeller = sellerEdit.checkDefaultSeller();
+    // if (!checkDefaultSeller) {
+    //   wx.showToast({
+    //     title: '璇烽�夋嫨榛樿钀ラ攢浜哄憳',
+    //     icon: 'none',
+    //     duration: 2000
+    //   })
+    //   return
+    // }
+    // console.log('checkDefaultSeller',checkDefaultSeller);
+    //
+    // let checkArr = [checkTransCosts,checkStartTime,checkEndTime,checkCoverImage,checkAllData];
+    // let data = {};
+    // if (checkArr.every((item)=>{
+    //   return item
+    // })){
+    //   console.log('....鎻愪氦鎴愬姛');
+    //   let coverImage = fileUploader.getCoverImageUnid();
+    //   let coverImageUrl = fileUploader.getImgList()[0].url||'';
+    //   this.setData({
+    //     coverImageUrl
+    //   })
+    //   let images = fileUploaderMultiple.getImagesUnid();
+    //   console.log(coverImage,images,coverImageUrl);
+    //   let formData: any = this.data;
+    //   data = {
+    //     docCode: formData.doccode, //娲诲姩鍗曞彿锛屾柊寤烘椿鍔ㄦ椂涓虹┖鍊硷紝缂栬緫鏃堕渶瑕乨occode鍊�
+    //     formId: formData.formId, //鍔熻兘鍙凤細绉掓潃 710802 锛� 鎶ュ悕閭�绾� 710803 锛屽洟璐� 710804
+    //     docStatus:100, //鍗曟嵁鐘舵��: 0 淇濆瓨锛堣捣鑽夛級 锛�100 鍙戝竷
+    //     coverImage,
+    //     images,
+    //     transCosts, //閫佽揣涓婇棬鏃� 閰嶉�佽垂
+    //     // ...this.data.formData,
+    //
+    //     effectiveStartDate: formData.startTime,
+    //     effectiveEndDate: formData.endTime,
+    //     freeId: formData.freeId,
+    //     title: formData.promotionsTitle,
+    //     originalPrice: Number(formData.originalPrice),
+    //     salesPrice: Number(formData.flashSalePrice),
+    //     quantity: Number(formData.flashSaleTotal),
+    //     restrictBuyingQuantity: Number(formData.flashSaleLimit),
+    //     description: formData.promotionDescription,
+    //     storeList,
+    //     sellerList,
+    //   }
+    //   console.log('寰呭彂甯冩暟鎹�',data);
+    //   if (!await this.postFormData(data)) return;
+    //   if (this.data.fromPage=='edit'){
+    //     wx.navigateBack();
+    //   } else{
+    //     wx.redirectTo({
+    //       url:'../promotionsManageList/promotionsManageList?tab=1'
+    //     })
+    //   }
+    // } else {
+    //   console.log('杩樻湁閿欒鏈鐞�');
+    //   if (!checkCoverImage) {
+    //     wx.$utils.scrollToError('#file-uploader','璇蜂笂浼犱竴寮犲皝闈㈠浘')
+    //     return;
+    //   }
+    //   if (!checkAllData) {
+    //     let rules = validatorInstance.getRulers();
+    //     for (const rule of rules) {
+    //       // @ts-ignore
+    //       let errorMsg = this.data[`${rule}Error`];
+    //       if (errorMsg){
+    //         wx.$utils.scrollToError(`#${rule}`,errorMsg)
+    //         break;
+    //       }
+    //     }
+    //     return;
+    //   }
+    //   if (!checkStartTime){
+    //     wx.$utils.scrollToError('#time-quantum','寮�濮嬫椂闂撮渶灏忎簬缁撴潫鏃堕棿');
+    //   }
+    //
+    // }
 
 
   },
 
   onSave:wx.$utils.debounce(function(this:any){
-    let sellerEdit = this.selectComponent('#seller-edit');
-    let sellerList = sellerEdit.getSellerList();
-    let storeEdit = this.selectComponent('#store-edit');
-    let storeList = storeEdit.getSelectedStoreIdList();
-    console.log('寰呮彁浜ょ殑闂ㄥ簵id',storeList);
-    let fileUploader = this.selectComponent('#file-uploader');
-    let fileUploaderMultiple = this.selectComponent('#file-uploader-multiple');
-    console.log('....鎻愪氦鎴愬姛');
-    let coverImage = fileUploader.getCoverImageUnid();
-    let images = fileUploaderMultiple.getImagesUnid();
-    let deliveryMethod = this.selectComponent('#delivery-method');
-    let transCosts = 0;
-    if (deliveryMethod.data.isRequiredAddress){
-      transCosts = Number(deliveryMethod.data.transCosts);
-    }
-    console.log(coverImage,images);
-    let formData: any = this.data;
-    console.log('>>>>>>>>formData',formData);
-    let data = {
-      docCode: formData.doccode, //娲诲姩鍗曞彿锛屾柊寤烘椿鍔ㄦ椂涓虹┖鍊硷紝缂栬緫鏃堕渶瑕乨occode鍊�
-      formId: formData.formId, //鍔熻兘鍙凤細绉掓潃 710802 锛� 鎶ュ悕閭�绾� 710803 锛屽洟璐� 710804
-      docStatus: 0, //鍗曟嵁鐘舵��: 0 淇濆瓨锛堣捣鑽夛級 锛�100 鍙戝竷
-      coverImage,
-      images,
-      transCosts, //閫佽揣涓婇棬鏃� 閰嶉�佽垂
-      // ...this.data.formData,
-
-      effectiveStartDate: formData.startTime,
-      effectiveEndDate: formData.endTime,
-      freeId: formData.freeId,
-      title: formData.promotionsTitle,
-      originalPrice: Number(formData.originalPrice)||0,
-      salesPrice: Number(formData.flashSalePrice)||0,
-      quantity: Number(formData.flashSaleTotal)||0,
-      restrictBuyingQuantity: Number(formData.flashSaleLimit)||0,
-      description: formData.promotionDescription,
-      storeList,
-      sellerList,
-    }
+    promotionsSaveHandler(this);
+    return;
+    // let sellerEdit = this.selectComponent('#seller-edit');
+    // let sellerList = sellerEdit.getSellerList();
+    // let storeEdit = this.selectComponent('#store-edit');
+    // let storeList = storeEdit.getSelectedStoreIdList();
+    // console.log('寰呮彁浜ょ殑闂ㄥ簵id',storeList);
+    // let fileUploader = this.selectComponent('#file-uploader');
+    // let fileUploaderMultiple = this.selectComponent('#file-uploader-multiple');
+    // console.log('....鎻愪氦鎴愬姛');
+    // let coverImage = fileUploader.getCoverImageUnid();
+    // let images = fileUploaderMultiple.getImagesUnid();
+    // let deliveryMethod = this.selectComponent('#delivery-method');
+    // let transCosts = 0;
+    // if (deliveryMethod.data.isRequiredAddress){
+    //   transCosts = Number(deliveryMethod.data.transCosts);
+    // }
+    // console.log(coverImage,images);
+    // let formData: any = this.data;
+    // console.log('>>>>>>>>formData',formData);
     // let data = {
-    //   docCode:this.data.doccode, //娲诲姩鍗曞彿锛屾柊寤烘椿鍔ㄦ椂涓虹┖鍊硷紝缂栬緫鏃堕渶瑕乨occode鍊�
-    //   formId:this.data.formId, //鍔熻兘鍙凤細绉掓潃 710802 锛� 鎶ュ悕閭�绾� 710803 锛屽洟璐� 710804
-    //   docStatus:0, //鍗曟嵁鐘舵��: 0 淇濆瓨锛堣捣鑽夛級 锛�100 鍙戝竷
+    //   docCode: formData.doccode, //娲诲姩鍗曞彿锛屾柊寤烘椿鍔ㄦ椂涓虹┖鍊硷紝缂栬緫鏃堕渶瑕乨occode鍊�
+    //   formId: formData.formId, //鍔熻兘鍙凤細绉掓潃 710802 锛� 鎶ュ悕閭�绾� 710803 锛屽洟璐� 710804
+    //   docStatus: 0, //鍗曟嵁鐘舵��: 0 淇濆瓨锛堣捣鑽夛級 锛�100 鍙戝竷
     //   coverImage,
     //   images,
     //   transCosts, //閫佽揣涓婇棬鏃� 閰嶉�佽垂
-    //   ...this.data.formData,
+    //   // ...this.data.formData,
+    //
+    //   effectiveStartDate: formData.startTime,
+    //   effectiveEndDate: formData.endTime,
+    //   freeId: formData.freeId,
+    //   title: formData.promotionsTitle,
+    //   originalPrice: Number(formData.originalPrice)||0,
+    //   salesPrice: Number(formData.flashSalePrice)||0,
+    //   quantity: Number(formData.flashSaleTotal)||0,
+    //   restrictBuyingQuantity: Number(formData.flashSaleLimit)||0,
+    //   description: formData.promotionDescription,
+    //   storeList,
     //   sellerList,
     // }
-    console.log('寰呬繚瀛樻暟鎹�',data);
-    this.postFormData(data);
-    return;
+    // // let data = {
+    // //   docCode:this.data.doccode, //娲诲姩鍗曞彿锛屾柊寤烘椿鍔ㄦ椂涓虹┖鍊硷紝缂栬緫鏃堕渶瑕乨occode鍊�
+    // //   formId:this.data.formId, //鍔熻兘鍙凤細绉掓潃 710802 锛� 鎶ュ悕閭�绾� 710803 锛屽洟璐� 710804
+    // //   docStatus:0, //鍗曟嵁鐘舵��: 0 淇濆瓨锛堣捣鑽夛級 锛�100 鍙戝竷
+    // //   coverImage,
+    // //   images,
+    // //   transCosts, //閫佽揣涓婇棬鏃� 閰嶉�佽垂
+    // //   ...this.data.formData,
+    // //   sellerList,
+    // // }
+    // console.log('寰呬繚瀛樻暟鎹�',data);
+    // this.postFormData(data);
+    // return;
   }),
   // onInputStartDate() {},
   // onInputEndDate() {},
diff --git a/pages/flashSaleCreate/flashSaleCreate.wxml b/pages/flashSaleCreate/flashSaleCreate.wxml
index e76c5e1..5efdb8e 100644
--- a/pages/flashSaleCreate/flashSaleCreate.wxml
+++ b/pages/flashSaleCreate/flashSaleCreate.wxml
@@ -1,7 +1,15 @@
 <!--pages/flashSaleCreate/flashSaleCreate.wxml-->
 <view class="container has-footer">
   <van-cell-group class="my-cell-group">
+    <van-cell class="my-cell required" border="{{false}}" title="浜у搧鍥剧墖"></van-cell>
+    <my-file-uploader id="file-uploader" img-list="{{coverImageList}}" url="{{fileUploadUrl+'&isCoverImage=true'}}" file-delete-url="/shopping/panicBuying.do?m=deleteAttachment"></my-file-uploader>
+
+  </van-cell-group>
+
+  <van-cell-group class="my-cell-group">
     <van-field
+        required
+        id="promotionsTitle"
         class="my-cell"
         value="{{ promotionsTitle }}"
         name="promotionsTitle"
@@ -11,14 +19,11 @@
         error-message="{{promotionsTitleError}}"
     />
   </van-cell-group>
-  <van-cell-group class="my-cell-group">
-    <van-cell class="my-cell" border="{{false}}" title="浜у搧鍥剧墖"></van-cell>
-    <my-file-uploader id="file-uploader" img-list="{{coverImageList}}" url="{{fileUploadUrl+'&isCoverImage=true'}}" file-delete-url="/shopping/panicBuying.do?m=deleteAttachment"></my-file-uploader>
-
-  </van-cell-group>
 
   <van-cell-group class="my-cell-group">
     <van-field
+        required
+        id="originalPrice"
         class="my-cell"
         value="{{ originalPrice }}"
         name="originalPrice"
@@ -33,6 +38,8 @@
       </view>
     </van-field>
     <van-field
+        required
+        id="flashSalePrice"
         class="my-cell"
         value="{{ flashSalePrice }}"
         name="flashSalePrice"
@@ -50,6 +57,8 @@
     <my-time-quantum id="time-quantum" start-time="{{startTime}}" end-time="{{endTime}}" bind:selectedStartTime="selectedStartTime" bind:selectedEndTime="selectedEndTime"></my-time-quantum>
 
     <van-field
+        required
+        id="flashSaleTotal"
         class="my-cell"
         value="{{ flashSaleTotal }}"
         name="flashSaleTotal"
@@ -64,6 +73,8 @@
       </view>
     </van-field>
     <van-field
+        required
+        id="flashSaleLimit"
         class="my-cell"
         value="{{ flashSaleLimit }}"
         name="flashSaleLimit"
@@ -89,7 +100,7 @@
   <my-store-edit id="store-edit" store-list="{{storeList}}" from="{{fromPage}}"></my-store-edit>
   <my-seller-edit id="seller-edit" seller-list="{{sellerList}}" from="{{fromPage}}"></my-seller-edit>
   <van-cell-group class="my-cell-group">
-    <van-cell border="{{false}}" title="璇疯緭鍏ユ椿鍔ㄦ弿杩拌鍒�"></van-cell>
+    <van-cell border="{{false}}" title="璇疯緭鍏ユ椿鍔ㄦ弿杩拌鍒�(閫夊~)"></van-cell>
     <van-field
         cursor-spacing="250"
         value="{{ promotionDescription }}"
diff --git a/pages/groupBuyingCreate/groupBuyingCreate.js b/pages/groupBuyingCreate/groupBuyingCreate.js
index 66f2eb0..c5d0c5d 100644
--- a/pages/groupBuyingCreate/groupBuyingCreate.js
+++ b/pages/groupBuyingCreate/groupBuyingCreate.js
@@ -1,15 +1,4 @@
 "use strict";
-var __assign = (this && this.__assign) || function () {
-    __assign = Object.assign || function(t) {
-        for (var s, i = 1, n = arguments.length; i < n; i++) {
-            s = arguments[i];
-            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
-                t[p] = s[p];
-        }
-        return t;
-    };
-    return __assign.apply(this, arguments);
-};
 var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
     return new (P || (P = Promise))(function (resolve, reject) {
         function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -47,6 +36,7 @@
 };
 Object.defineProperty(exports, "__esModule", { value: true });
 var myValidator_1 = require("../../utils/myValidator");
+var promotionsCreate_1 = require("../../modules/promotionsCreate");
 var validatorInstance;
 Page({
     data: {
@@ -83,51 +73,11 @@
     },
     getSaveData: function () {
         return __awaiter(this, void 0, void 0, function () {
-            var doccode, _a, error, result, data, formData;
-            return __generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        doccode = this.data.doccode;
-                        return [4, wx.$utils.to(wx.$http.request({
-                                url: "/shopping/panicBuying.do?m=getPanicBuyingDetail",
-                                data: {
-                                    doccode: doccode,
-                                    isEdit: true,
-                                    SellerOpenId: wx.globalData.OpenId
-                                }
-                            }))];
+            return __generator(this, function (_a) {
+                switch (_a.label) {
+                    case 0: return [4, promotionsCreate_1.getSaveData(this)];
                     case 1:
-                        _a = _b.sent(), error = _a[0], result = _a[1];
-                        if (error) {
-                            console.log(error);
-                            return [2];
-                        }
-                        console.log(result);
-                        data = result.list[0];
-                        formData = {
-                            promotionsTitle: data.title,
-                            originalPrice: data.originalPrice,
-                            flashSalePrice: data.salesPrice,
-                            flashSaleTotal: data.numberOfTeam,
-                            promotionDescription: data.description,
-                            startTime: data.effectiveStartDate,
-                            endTime: data.effectiveEndDate,
-                            coverImageList: (data.coverImageUrl && this.getCoverImageList(data)) || [],
-                            imagesList: data.imagesUrl,
-                            coverImage: data.coverImage,
-                            images: data.images,
-                            freeId: data.freeId,
-                        };
-                        this.setData(__assign({}, formData, { coverImageUrl: data.coverImageUrl, sellerList: result.sellerList, storeList: result.storeList, status: data.panicBuyingStatus, delivery: {
-                                freeId: data.freeId,
-                                freeName: data.freeName,
-                                isRequiredAddress: data.isRequiredAddress,
-                                transCosts: data.transCosts,
-                            } }));
-                        console.log('閰嶉�佹暟鎹�傘�傘��', this.data.delivery);
-                        wx.setNavigationBarTitle({
-                            title: data.title
-                        });
+                        _a.sent();
                         return [2];
                 }
             });
@@ -203,189 +153,24 @@
             promotionDescription: value.trim()
         });
     },
-    postFormData: function (data) {
-        return __awaiter(this, void 0, void 0, function () {
-            var _a, error, res;
-            return __generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0: return [4, wx.$utils.to(wx.$http.request({
-                            url: '/shopping/panicBuying.do?m=saveDocCode',
-                            data: data,
-                            method: 'POST'
-                        }))];
-                    case 1:
-                        _a = _b.sent(), error = _a[0], res = _a[1];
-                        if (error) {
-                            console.log(error);
-                            return [2, false];
-                        }
-                        console.log(res);
-                        if (res.state === 'success') {
-                            wx.showToast({
-                                title: '鎴愬姛',
-                                duration: 2000
-                            });
-                            this.setData({
-                                doccode: res.DocCode
-                            });
-                        }
-                        if (res.state === 'failed' && res.sellerCheckedBalance > 0) {
-                            this.setData({
-                                sellerUnCheckedNames: res.sellerUnCheckedNames,
-                                isShowDialog: true
-                            });
-                        }
-                        return [2, res.state === 'success'];
-                }
-            });
-        });
-    },
     onSubmit: wx.$utils.debounce(function () {
         this.submitHandler();
         return;
     }),
     submitHandler: function () {
         return __awaiter(this, void 0, void 0, function () {
-            var timeQuantum, sellerEdit, storeEdit, fileUploader, fileUploaderMultiple, deliveryMethod, checkTransCosts, transCosts, checkStartTime, checkEndTime, checkCoverImage, checkAllData, sellerList, storeList, checkDefaultSeller, checkArr, data, coverImage, coverImageUrl, images, formData;
             return __generator(this, function (_a) {
                 switch (_a.label) {
-                    case 0:
-                        timeQuantum = this.selectComponent('#time-quantum');
-                        sellerEdit = this.selectComponent('#seller-edit');
-                        storeEdit = this.selectComponent('#store-edit');
-                        fileUploader = this.selectComponent('#file-uploader');
-                        fileUploaderMultiple = this.selectComponent('#file-uploader-multiple');
-                        deliveryMethod = this.selectComponent('#delivery-method');
-                        checkTransCosts = true;
-                        transCosts = 0;
-                        if (deliveryMethod.data.isRequiredAddress) {
-                            checkTransCosts = deliveryMethod.checkFields();
-                            transCosts = Number(deliveryMethod.data.transCosts);
-                        }
-                        console.log('sellerEdit');
-                        console.log(timeQuantum);
-                        checkStartTime = timeQuantum.checkTime("startTime", "璇烽�夋嫨璁″垝寮�濮嬫椂闂�");
-                        checkEndTime = timeQuantum.checkTime("endTime", "璇烽�夋嫨璁″垝缁撴潫鏃堕棿");
-                        checkCoverImage = fileUploader.checkImages("coverImage", "璇蜂笂浼犱竴寮犲皝闈㈠浘");
-                        checkAllData = validatorInstance.checkAllData();
-                        sellerList = sellerEdit.getSellerList();
-                        if (sellerList.length < 1) {
-                            wx.showToast({
-                                title: '璇烽�夋嫨钀ラ攢浜哄憳',
-                                icon: 'none',
-                                duration: 2000
-                            });
-                            return [2];
-                        }
-                        storeList = storeEdit.getSelectedStoreIdList();
-                        console.log('寰呮彁浜ょ殑闂ㄥ簵id', storeList);
-                        checkDefaultSeller = sellerEdit.checkDefaultSeller();
-                        if (!checkDefaultSeller) {
-                            wx.showToast({
-                                title: '璇烽�夋嫨榛樿钀ラ攢浜哄憳',
-                                icon: 'none',
-                                duration: 2000
-                            });
-                            return [2];
-                        }
-                        console.log('checkDefaultSeller', checkDefaultSeller);
-                        checkArr = [checkTransCosts, checkStartTime, checkEndTime, checkCoverImage, checkAllData];
-                        data = {};
-                        if (!checkArr.every(function (item) {
-                            return item;
-                        })) return [3, 2];
-                        console.log('....鎻愪氦鎴愬姛');
-                        coverImage = fileUploader.getCoverImageUnid();
-                        coverImageUrl = fileUploader.getImgList()[0].url || '';
-                        this.setData({
-                            coverImageUrl: coverImageUrl
-                        });
-                        images = fileUploaderMultiple.getImagesUnid();
-                        console.log(coverImage, images);
-                        formData = this.data;
-                        data = {
-                            docCode: formData.doccode,
-                            formId: formData.formId,
-                            docStatus: 100,
-                            coverImage: coverImage,
-                            images: images,
-                            transCosts: transCosts,
-                            effectiveStartDate: formData.startTime,
-                            effectiveEndDate: formData.endTime,
-                            freeId: formData.freeId,
-                            title: formData.promotionsTitle,
-                            originalPrice: Number(formData.originalPrice),
-                            salesPrice: Number(formData.flashSalePrice),
-                            numberOfTeam: Number(formData.flashSaleTotal),
-                            description: formData.promotionDescription,
-                            storeList: storeList,
-                            sellerList: sellerList,
-                        };
-                        console.log('寰呭彂甯冩暟鎹�', data);
-                        return [4, this.postFormData(data)];
+                    case 0: return [4, promotionsCreate_1.promotionsSubmitHandler(this, validatorInstance)];
                     case 1:
-                        if (!(_a.sent()))
-                            return [2];
-                        if (this.data.fromPage == 'edit') {
-                            wx.navigateBack();
-                        }
-                        else {
-                            wx.redirectTo({
-                                url: '../promotionsManageList/promotionsManageList?tab=3'
-                            });
-                        }
-                        return [3, 3];
-                    case 2:
-                        wx.showToast({
-                            title: '椤甸潰杩樻湁閿欒鏈鐞�',
-                            icon: 'none',
-                            duration: 2000
-                        });
-                        console.log('杩樻湁閿欒鏈鐞�');
-                        _a.label = 3;
-                    case 3: return [2];
+                        _a.sent();
+                        return [2];
                 }
             });
         });
     },
     onSave: wx.$utils.debounce(function () {
-        var sellerEdit = this.selectComponent('#seller-edit');
-        var sellerList = sellerEdit.getSellerList();
-        var storeEdit = this.selectComponent('#store-edit');
-        var storeList = storeEdit.getSelectedStoreIdList();
-        console.log('寰呮彁浜ょ殑闂ㄥ簵id', storeList);
-        var fileUploader = this.selectComponent('#file-uploader');
-        var fileUploaderMultiple = this.selectComponent('#file-uploader-multiple');
-        console.log('....鎻愪氦鎴愬姛');
-        var coverImage = fileUploader.getCoverImageUnid();
-        var images = fileUploaderMultiple.getImagesUnid();
-        var deliveryMethod = this.selectComponent('#delivery-method');
-        var transCosts = 0;
-        if (deliveryMethod.data.isRequiredAddress) {
-            transCosts = Number(deliveryMethod.data.transCosts);
-        }
-        console.log(coverImage, images);
-        var formData = this.data;
-        var data = {
-            docCode: formData.doccode,
-            formId: formData.formId,
-            docStatus: 0,
-            coverImage: coverImage,
-            images: images,
-            transCosts: transCosts,
-            effectiveStartDate: formData.startTime,
-            effectiveEndDate: formData.endTime,
-            freeId: formData.freeId,
-            title: formData.promotionsTitle,
-            originalPrice: Number(formData.originalPrice) || 0,
-            salesPrice: Number(formData.flashSalePrice) || 0,
-            numberOfTeam: Number(formData.flashSaleTotal) || 0,
-            description: formData.promotionDescription,
-            storeList: storeList,
-            sellerList: sellerList,
-        };
-        console.log('寰呬繚瀛樻暟鎹�', data);
-        this.postFormData(data);
+        promotionsCreate_1.promotionsSaveHandler(this);
         return;
     }),
     initValidator: function () {
@@ -441,4 +226,4 @@
         };
     }
 });
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXBCdXlpbmdDcmVhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJncm91cEJ1eWluZ0NyZWF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSx1REFBa0Q7QUFFbEQsSUFBSSxpQkFBNkIsQ0FBQztBQUVsQyxJQUFJLENBQUM7SUFDSCxJQUFJLEVBQUU7UUFDSixRQUFRLEVBQUMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7UUFDMUMsaUJBQWlCLEVBQUMsRUFBRTtRQUNwQixNQUFNLEVBQUMsQ0FBQztRQUNSLE1BQU0sRUFBQyxNQUFNO1FBQ2IsUUFBUSxFQUFFLEVBQUU7UUFDWixPQUFPLEVBQUMsRUFBRTtRQUNWLFFBQVEsRUFBQyxFQUFFO1FBQ1gsUUFBUSxFQUFDLEVBQUU7UUFDWCxhQUFhLEVBQUMsQ0FBQztRQUNmLG9CQUFvQixFQUFDLEVBQUU7UUFDdkIsYUFBYSxFQUFDLEVBQUU7UUFDaEIsWUFBWSxFQUFDLEtBQUs7S0FDbkI7SUFDRCxNQUFNLFlBQUMsT0FBTztRQUVaLElBQUksT0FBTyxHQUFFLE9BQU8sQ0FBQyxPQUFPLElBQUUsRUFBRSxDQUFDO1FBQ2pDLElBQUksUUFBUSxHQUFFLE9BQU8sQ0FBQyxRQUFRLElBQUUsRUFBRSxDQUFDO1FBQ25DLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDWCxhQUFhLEVBQUUsd0RBQXNELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBUTtZQUN2RixPQUFPLFNBQUE7WUFDUCxRQUFRLFVBQUE7WUFDUixhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUMsZUFBZSxHQUFDLFFBQVEsQ0FBQywrQkFBK0IsQ0FBQyxHQUFDLEdBQUc7U0FDdkYsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxP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b3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQgKiBhcyBkYXlqcyBmcm9tIFwiZGF5anNcIjtcclxuaW1wb3J0IE15VmFsaWRhdG9yIGZyb20gXCIuLi8uLi91dGlscy9teVZhbGlkYXRvclwiO1xyXG5cclxubGV0IHZhbGlkYXRvckluc3RhbmNlOk15VmFsaWRhdG9yO1xyXG4vLyBjb25zdCBhcHAgPSBnZXRBcHA8SUFwcE9wdGlvbj4oKTtcclxuUGFnZSh7XHJcbiAgZGF0YToge1xyXG4gICAgYXV0b3NpemU6eyBtYXhIZWlnaHQ6IDEyMCwgbWluSGVpZ2h0OiA1MCB9LFxyXG4gICAgdmFsaWRhdG9ySW5zdGFuY2U6e30sXHJcbiAgICBmcmVlSWQ6MCxcclxuICAgIGZvcm1JZDo3MTA4MDQsIC8v5Yqf6IO95Y+377ya56eS5p2AIDcxMDgwMiDvvIwg5oql5ZCN6YKA57qmIDcxMDgwMyDvvIzlm6LotK0gNzEwODA0XHJcbiAgICBmb3JtRGF0YToge30sXHJcbiAgICBkb2Njb2RlOicnLFxyXG4gICAgZnJvbVBhZ2U6JycsXHJcbiAgICBkZWxpdmVyeTp7fSxcclxuICAgIGZlZVJhdGVGb3JQYXk6MSxcclxuICAgIHNlbGxlclVuQ2hlY2tlZE5hbWVzOicnLFxyXG4gICAgY292ZXJJbWFnZVVybDonJyxcclxuICAgIGlzU2hvd0RpYWxvZzpmYWxzZVxyXG4gIH0sXHJcbiAgb25Mb2FkKG9wdGlvbnMpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKGFwcCk7XHJcbiAgICBsZXQgZG9jY29kZSA9b3B0aW9ucy5kb2Njb2RlfHwnJztcclxuICAgIGxldCBmcm9tUGFnZSA9b3B0aW9ucy5mcm9tUGFnZXx8Jyc7XHJcbiAgICBsZXQgc2V0dGluZ3MgPSB3eC5nbG9iYWxEYXRhLnNldHRpbmdzO1xyXG4gICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgZmlsZVVwbG9hZFVybDogYC9zaG9wcGluZy9wYW5pY0J1eWluZy5kbz9tPXVwbG9hZEF0dGFjaG1lbnQmZm9ybWlkPSR7dGhpcy5kYXRhLmZvcm1JZH1gLFxyXG4gICAgICBkb2Njb2RlLFxyXG4gICAgICBmcm9tUGFnZSxcclxuICAgICAgZmVlUmF0ZUZvclBheTogKHNldHRpbmdzLmZlZVJhdGVGb3JXeFBheStzZXR0aW5ncy5wbGF0Zm9ybU9wZXJhdG9yQ29tbWlzc2lvblJhdGlvKSoxMDBcclxuICAgIH0pXHJcbiAgICBpZiAoZG9jY29kZSkge1xyXG4gICAgICB0aGlzLmdldFNhdmVEYXRhKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IHN0b3JlRWRpdCA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjc3RvcmUtZWRpdCcpO1xyXG4gICAgICBzdG9yZUVkaXQuZ2V0U3RvcmVMaXN0KCk7XHJcbiAgICB9XHJcbiAgfSxcclxuICBhc3luYyBnZXRTYXZlRGF0YSgpIHtcclxuICAgIGxldCBkb2Njb2RlID0gdGhpcy5kYXRhLmRvY2NvZGU7XHJcbiAgICBsZXQgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgd3guJHV0aWxzLnRvKFxyXG4gICAgICB3eC4kaHR0cC5yZXF1ZXN0KHtcclxuICAgICAgICB1cmw6YC9zaG9wcGluZy9wYW5pY0J1eWluZy5kbz9tPWdldFBhbmljQnV5aW5nRGV0YWlsYCxcclxuICAgICAgICBkYXRhOntcclxuICAgICAgICAgIGRvY2NvZGUsXHJcbiAgICAgICAgICBpc0VkaXQ6dHJ1ZSxcclxuICAgICAgICAgIFNlbGxlck9wZW5JZDp3eC5nbG9iYWxEYXRhLk9wZW5JZFxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIClcclxuICAgIGlmIChlcnJvcil7XHJcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2cocmVzdWx0KTtcclxuICAgIGxldCBkYXRhID0gcmVzdWx0Lmxpc3RbMF07XHJcbiAgICBsZXQgZm9ybURhdGEgPSB7XHJcbiAgICAgIHByb21vdGlvbnNUaXRsZTogZGF0YS50aXRsZSxcclxuICAgICAgb3JpZ2luYWxQcmljZTogZGF0YS5vcmlnaW5hbFByaWNlLFxyXG4gICAgICBmbGFzaFNhbGVQcmljZTogZGF0YS5zYWxlc1ByaWNlLFxyXG4gICAgICBmbGFzaFNhbGVUb3RhbDogZGF0YS5udW1iZXJPZlRlYW0sXHJcbiAgICAgIHByb21vdGlvbkRlc2NyaXB0aW9uOiBkYXRhLmRlc2NyaXB0aW9uLFxyXG4gICAgICBzdGFydFRpbWU6IGRhdGEuZWZmZWN0aXZlU3RhcnREYXRlLFxyXG4gICAgICBlbmRUaW1lOiBkYXRhLmVmZmVjdGl2ZUVuZERhdGUsXHJcbiAgICAgIGNvdmVySW1hZ2VMaXN0OiAoZGF0YS5jb3ZlckltYWdlVXJsJiZ0aGlzLmdldENvdmVySW1hZ2VMaXN0KGRhdGEpKXx8W10sXHJcbiAgICAgIC8vIGltYWdlc0xpc3Q6IChkYXRhLmltYWdlc1VybC5sZW5ndGg+MCYmdGhpcy5nZXRJbWFnZXNMaXN0KGRhdGEpKXx8W10sXHJcbiAgICAgIGltYWdlc0xpc3Q6IGRhdGEuaW1hZ2VzVXJsLFxyXG4gICAgICBjb3ZlckltYWdlOiBkYXRhLmNvdmVySW1hZ2UsXHJcbiAgICAgIGltYWdlczogZGF0YS5pbWFnZXMsXHJcbiAgICAgIGZyZWVJZDpkYXRhLmZyZWVJZCxcclxuICAgIH07XHJcbiAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAuLi5mb3JtRGF0YSxcclxuICAgICAgY292ZXJJbWFnZVVybDpkYXRhLmNvdmVySW1hZ2VVcmwsXHJcbiAgICAgIC8vIFtgZWZmZWN0aXZlU3RhcnREYXRlYF06IGRhdGEuZWZmZWN0aXZlU3RhcnREYXRlLFxyXG4gICAgICAvLyBbYGVmZmVjdGl2ZUVuZERhdGVgXTogZGF0YS5lZmZlY3RpdmVFbmREYXRlLFxyXG4gICAgICAvLyBbYGZyZWVJZGBdOiBkYXRhLmZyZWVJZCxcclxuICAgICAgLy8gW2B0aXRsZWBdOiBkYXRhLnRpdGxlLFxyXG4gICAgICAvLyBbYG9yaWdpbmFsUHJpY2VgXTogZGF0YS5vcmlnaW5hbFByaWNlLFxyXG4gICAgICAvLyBbYHNhbGVzUHJpY2VgXTogZGF0YS5zYWxlc1ByaWNlLFxyXG4gICAgICAvLyBbYHF1YW50aXR5YF06IGRhdGEucXVhbnRpdHksXHJcbiAgICAgIC8vIFtgcmVzdHJpY3RCdXlpbmdRdWFudGl0eWBdOiBkYXRhLnJlc3RyaWN0QnV5aW5nUXVhbnRpdHksXHJcbiAgICAgIC8vIFtgZGVzY3JpcHRpb25gXTogZGF0YS5kZXNjcmlwdGlvbixcclxuICAgICAgc2VsbGVyTGlzdDpyZXN1bHQuc2VsbGVyTGlzdCxcclxuICAgICAgc3RvcmVMaXN0OnJlc3VsdC5zdG9yZUxpc3QsXHJcbiAgICAgIHN0YXR1czpkYXRhLnBhbmljQnV5aW5nU3RhdHVzLFxyXG4gICAgICBkZWxpdmVyeTp7XHJcbiAgICAgICAgZnJlZUlkOmRhdGEuZnJlZUlkLFxyXG4gICAgICAgIGZyZWVOYW1lOmRhdGEuZnJlZU5hbWUsXHJcbiAgICAgICAgaXNSZXF1aXJlZEFkZHJlc3M6ZGF0YS5pc1JlcXVpcmVkQWRkcmVzcyxcclxuICAgICAgICB0cmFuc0Nvc3RzOmRhdGEudHJhbnNDb3N0cyxcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBjb25zb2xlLmxvZygn6YWN6YCB5pWw5o2u44CC44CC44CCJyx0aGlzLmRhdGEuZGVsaXZlcnkpO1xyXG4gICAgd3guc2V0TmF2aWdhdGlvbkJhclRpdGxlKHtcclxuICAgICAgdGl0bGU6IGRhdGEudGl0bGVcclxuICAgIH0pXHJcbiAgfSxcclxuXHJcbiAgZ2V0Q292ZXJJbWFnZUxpc3QoZGF0YTphbnkpe1xyXG4gICAgbGV0IFt1bmlkLHNlcV0gPSBkYXRhLmNvdmVySW1hZ2Uuc3BsaXQoXCI7XCIpO1xyXG4gICAgcmV0dXJuIFt7XHJcbiAgICAgIHVybDogZGF0YS5jb3ZlckltYWdlVXJsfHwnJyxcclxuICAgICAgdW5pZCxcclxuICAgICAgc2VxXHJcbiAgICB9XVxyXG4gIH0sXHJcbiAgLy8gZ2V0SW1hZ2VzTGlzdChkYXRhOmFueSl7XHJcbiAgLy8gICBsZXQgW3VuaWQsc2VxXSA9IGRhdGEuaW1hZ2VzLnNwbGl0KFwiO1wiKTtcclxuICAvLyAgIHJldHVybiBkYXRhLmltYWdlc1VybC5tYXAoKGl0ZW06c3RyaW5nKT0+e1xyXG4gIC8vICAgICByZXR1cm4ge1xyXG4gIC8vICAgICAgIHVybDogaXRlbSxcclxuICAvLyAgICAgICB1bmlkLFxyXG4gIC8vICAgICAgIHNlcVxyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KVxyXG4gIC8vIH0sXHJcblxyXG4gIG9uUmVhZHkoKSB7XHJcbiAgICB0aGlzLmluaXRWYWxpZGF0b3IoKVxyXG4gIH0sXHJcbiAgc2VsZWN0ZWRTdGFydFRpbWUoZXZlbnQ6YW55KSB7XHJcbiAgICBjb25zb2xlLmxvZygn5byA5aeLJyxldmVudCk7XHJcbiAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICBzdGFydFRpbWU6IGV2ZW50LmRldGFpbC5zdGFydFRpbWUsXHJcbiAgICB9KVxyXG4gIH0sXHJcbiAgc2VsZWN0ZWRFbmRUaW1lKGV2ZW50OmFueSl7XHJcbiAgICBjb25zb2xlLmxvZygn57uT5p2fJyxldmVudCk7XHJcbiAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICBlbmRUaW1lOiBldmVudC5kZXRhaWwuZW5kVGltZSxcclxuICAgIH0pXHJcbiAgfSxcclxuICBnZXREZWxpdmVyeU1ldGhvZChldmVudDphbnkpe1xyXG4gICAgY29uc29sZS5sb2coZXZlbnQuZGV0YWlsKTtcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIC8vIGRlbGl2ZXJ5TWV0aG9kOiBldmVudC5kZXRhaWwuZGVsaXZlcnlNZXRob2QsXHJcbiAgICAgIGZyZWVJZDogZXZlbnQuZGV0YWlsLmZyZWVJZCxcclxuICAgIH0pXHJcbiAgICBjb25zb2xlLmxvZygndGhpcy5kYXRhLmZyZWVJZDsnLHRoaXMuZGF0YS5mcmVlSWQpO1xyXG4gIH0sXHJcblxyXG4gIGNoZWNrUHJvbW90aW9uc1RpdGxlKGU6YW55KXtcclxuICAgIGxldCB7IHZhbHVlIH0gPSBlLmRldGFpbFxyXG4gICAgY29uc29sZS5sb2coZSk7XHJcbiAgICB2YWxpZGF0b3JJbnN0YW5jZS5jaGVja0ZpZWxkKCdwcm9tb3Rpb25zVGl0bGUnLHZhbHVlKTtcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIHByb21vdGlvbnNUaXRsZTp2YWx1ZS50cmltKClcclxuICAgIH0pXHJcbiAgfSxcclxuICBjaGVja09yaWdpbmFsUHJpY2UoZTphbnkpe1xyXG4gICAgbGV0IHsgdmFsdWUgfSA9IGUuZGV0YWlsXHJcbiAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgIHZhbGlkYXRvckluc3RhbmNlLmNoZWNrRmllbGQoJ29yaWdpbmFsUHJpY2UnLHZhbHVlKTtcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIG9yaWdpbmFsUHJpY2U6dmFsdWUudHJpbSgpXHJcbiAgICB9KVxyXG4gIH0sXHJcbiAgY2hlY2tGbGFzaFNhbGVQcmljZShlOmFueSl7XHJcbiAgICBsZXQgeyB2YWx1ZSB9ID0gZS5kZXRhaWxcclxuICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgdmFsaWRhdG9ySW5zdGFuY2UuY2hlY2tGaWVsZCgnZmxhc2hTYWxlUHJpY2UnLHZhbHVlKTtcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIGZsYXNoU2FsZVByaWNlOnZhbHVlLnRyaW0oKVxyXG4gICAgfSlcclxuICB9LFxyXG4gIGNoZWNrRmxhc2hTYWxlVG90YWwoZTphbnkpe1xyXG4gICAgbGV0IHsgdmFsdWUgfSA9IGUuZGV0YWlsXHJcbiAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgIHZhbGlkYXRvckluc3RhbmNlLmNoZWNrRmllbGQoJ2ZsYXNoU2FsZVRvdGFsJyx2YWx1ZSk7XHJcbiAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICBmbGFzaFNhbGVUb3RhbDp2YWx1ZS50cmltKClcclxuICAgIH0pXHJcbiAgfSxcclxuICBjaGVja1Byb21vdGlvbkRlc2NyaXB0aW9uKGU6YW55KXtcclxuICAgIGxldCB7IHZhbHVlIH0gPSBlLmRldGFpbFxyXG4gICAgY29uc29sZS5sb2coZSk7XHJcbiAgICB2YWxpZGF0b3JJbnN0YW5jZS5jaGVja0ZpZWxkKCdwcm9tb3Rpb25EZXNjcmlwdGlvbicsdmFsdWUpO1xyXG4gICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgcHJvbW90aW9uRGVzY3JpcHRpb246dmFsdWUudHJpbSgpXHJcbiAgICB9KVxyXG4gIH0sXHJcblxyXG4gIGFzeW5jIHBvc3RGb3JtRGF0YShkYXRhOm9iamVjdCl7XHJcbiAgICBsZXQgW2Vycm9yLCByZXNdID0gYXdhaXQgd3guJHV0aWxzLnRvKFxyXG4gICAgICB3eC4kaHR0cC5yZXF1ZXN0KHtcclxuICAgICAgICB1cmw6Jy9zaG9wcGluZy9wYW5pY0J1eWluZy5kbz9tPXNhdmVEb2NDb2RlJyxcclxuICAgICAgICBkYXRhLFxyXG4gICAgICAgIG1ldGhvZDonUE9TVCdcclxuICAgICAgfSlcclxuICAgIClcclxuICAgIGlmIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKHJlcyk7XHJcbiAgICBpZiAocmVzLnN0YXRlID09PSAnc3VjY2VzcycpIHtcclxuICAgICAgd3guc2hvd1RvYXN0KHtcclxuICAgICAgICB0aXRsZTogJ+aIkOWKnycsXHJcbiAgICAgICAgZHVyYXRpb246IDIwMDBcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICBkb2Njb2RlOnJlcy5Eb2NDb2RlXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBpZiAocmVzLnN0YXRlID09PSAnZmFpbGVkJyYmcmVzLnNlbGxlckNoZWNrZWRCYWxhbmNlPjApIHtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICBzZWxsZXJVbkNoZWNrZWROYW1lczogcmVzLnNlbGxlclVuQ2hlY2tlZE5hbWVzLFxyXG4gICAgICAgIGlzU2hvd0RpYWxvZzogdHJ1ZVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcy5zdGF0ZSA9PT0gJ3N1Y2Nlc3MnO1xyXG4gIH0sXHJcbiAgb25TdWJtaXQ6d3guJHV0aWxzLmRlYm91bmNlKGZ1bmN0aW9uKHRoaXM6YW55KXtcclxuICAgIHRoaXMuc3VibWl0SGFuZGxlcigpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH0pLFxyXG5cclxuICBhc3luYyBzdWJtaXRIYW5kbGVyKCl7XHJcbiAgICBsZXQgdGltZVF1YW50dW0gPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI3RpbWUtcXVhbnR1bScpO1xyXG4gICAgbGV0IHNlbGxlckVkaXQgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI3NlbGxlci1lZGl0Jyk7XHJcbiAgICBsZXQgc3RvcmVFZGl0ID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyNzdG9yZS1lZGl0Jyk7XHJcbiAgICBsZXQgZmlsZVVwbG9hZGVyID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyNmaWxlLXVwbG9hZGVyJyk7XHJcbiAgICBsZXQgZmlsZVVwbG9hZGVyTXVsdGlwbGUgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI2ZpbGUtdXBsb2FkZXItbXVsdGlwbGUnKTtcclxuXHJcbiAgICBsZXQgZGVsaXZlcnlNZXRob2QgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI2RlbGl2ZXJ5LW1ldGhvZCcpO1xyXG4gICAgbGV0IGNoZWNrVHJhbnNDb3N0cyA9IHRydWU7XHJcbiAgICBsZXQgdHJhbnNDb3N0cyA9IDA7XHJcbiAgICBpZiAoZGVsaXZlcnlNZXRob2QuZGF0YS5pc1JlcXVpcmVkQWRkcmVzcyl7XHJcbiAgICAgIGNoZWNrVHJhbnNDb3N0cyA9IGRlbGl2ZXJ5TWV0aG9kLmNoZWNrRmllbGRzKCk7XHJcbiAgICAgIHRyYW5zQ29zdHMgPSBOdW1iZXIoZGVsaXZlcnlNZXRob2QuZGF0YS50cmFuc0Nvc3RzKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgY29uc29sZS5sb2coJ3NlbGxlckVkaXQnLCk7XHJcbiAgICBjb25zb2xlLmxvZyh0aW1lUXVhbnR1bSk7XHJcblxyXG4gICAgbGV0IGNoZWNrU3RhcnRUaW1lID0gdGltZVF1YW50dW0uY2hlY2tUaW1lKFwic3RhcnRUaW1lXCIsIFwi6K+36YCJ5oup6K6h5YiS5byA5aeL5pe26Ze0XCIpO1xyXG4gICAgbGV0IGNoZWNrRW5kVGltZSA9IHRpbWVRdWFudHVtLmNoZWNrVGltZShcImVuZFRpbWVcIiwgXCLor7fpgInmi6norqHliJLnu5PmnZ/ml7bpl7RcIik7XHJcbiAgICBsZXQgY2hlY2tDb3ZlckltYWdlID0gZmlsZVVwbG9hZGVyLmNoZWNrSW1hZ2VzKFwiY292ZXJJbWFnZVwiLCBcIuivt+S4iuS8oOS4gOW8oOWwgemdouWbvlwiKTtcclxuICAgIC8vIGxldCBjaGVja0ltYWdlcyA9IGZpbGVVcGxvYWRlck11bHRpcGxlLmNoZWNrSW1hZ2VzKFwiaW1hZ2VzXCIsIFwi6K+36Iez5bCR5LiK5Lyg5LiA5byg5Zu+54mHXCIpO1xyXG4gICAgbGV0IGNoZWNrQWxsRGF0YSA9IHZhbGlkYXRvckluc3RhbmNlLmNoZWNrQWxsRGF0YSgpO1xyXG4gICAgLy8gaWYgKHRoaXMuZGF0YS5nb29kc0ltZ0xpc3QubGVuZ3RoIDwgMSkge1xyXG4gICAgLy8gICBjb25zb2xlLmxvZygn6K+35LiK5Lyg5Lqn5ZOB5Zu+54mHJyk7XHJcbiAgICAvLyB9XHJcbiAgICBsZXQgc2VsbGVyTGlzdCA9IHNlbGxlckVkaXQuZ2V0U2VsbGVyTGlzdCgpO1xyXG4gICAgaWYgKHNlbGxlckxpc3QubGVuZ3RoPDEpIHtcclxuICAgICAgd3guc2hvd1RvYXN0KHtcclxuICAgICAgICB0aXRsZTogJ+ivt+mAieaLqeiQpemUgOS6uuWRmCcsXHJcbiAgICAgICAgaWNvbjogJ25vbmUnLFxyXG4gICAgICAgIGR1cmF0aW9uOiAyMDAwXHJcbiAgICAgIH0pXHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgbGV0IHN0b3JlTGlzdCA9IHN0b3JlRWRpdC5nZXRTZWxlY3RlZFN0b3JlSWRMaXN0KCk7XHJcbiAgICBjb25zb2xlLmxvZygn5b6F5o+Q5Lqk55qE6Zeo5bqXaWQnLHN0b3JlTGlzdCk7XHJcbiAgICBsZXQgY2hlY2tEZWZhdWx0U2VsbGVyID0gc2VsbGVyRWRpdC5jaGVja0RlZmF1bHRTZWxsZXIoKTtcclxuICAgIGlmICghY2hlY2tEZWZhdWx0U2VsbGVyKSB7XHJcbiAgICAgIHd4LnNob3dUb2FzdCh7XHJcbiAgICAgICAgdGl0bGU6ICfor7fpgInmi6npu5jorqTokKXplIDkurrlkZgnLFxyXG4gICAgICAgIGljb246ICdub25lJyxcclxuICAgICAgICBkdXJhdGlvbjogMjAwMFxyXG4gICAgICB9KVxyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKCdjaGVja0RlZmF1bHRTZWxsZXInLGNoZWNrRGVmYXVsdFNlbGxlcik7XHJcblxyXG4gICAgbGV0IGNoZWNrQXJyID0gW2NoZWNrVHJhbnNDb3N0cyxjaGVja1N0YXJ0VGltZSxjaGVja0VuZFRpbWUsY2hlY2tDb3ZlckltYWdlLGNoZWNrQWxsRGF0YV07XHJcbiAgICBsZXQgZGF0YSA9IHt9O1xyXG4gICAgaWYgKGNoZWNrQXJyLmV2ZXJ5KChpdGVtKT0+e1xyXG4gICAgICByZXR1cm4gaXRlbVxyXG4gICAgfSkpe1xyXG4gICAgICBjb25zb2xlLmxvZygnLi4uLuaPkOS6pOaIkOWKnycpO1xyXG4gICAgICBsZXQgY292ZXJJbWFnZSA9IGZpbGVVcGxvYWRlci5nZXRDb3ZlckltYWdlVW5pZCgpO1xyXG4gICAgICBsZXQgY292ZXJJbWFnZVVybCA9IGZpbGVVcGxvYWRlci5nZXRJbWdMaXN0KClbMF0udXJsfHwnJztcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICBjb3ZlckltYWdlVXJsXHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBpbWFnZXMgPSBmaWxlVXBsb2FkZXJNdWx0aXBsZS5nZXRJbWFnZXNVbmlkKCk7XHJcbiAgICAgIGNvbnNvbGUubG9nKGNvdmVySW1hZ2UsaW1hZ2VzKTtcclxuICAgICAgbGV0IGZvcm1EYXRhOiBhbnkgPSB0aGlzLmRhdGE7XHJcbiAgICAgIGRhdGEgPSB7XHJcbiAgICAgICAgZG9jQ29kZTogZm9ybURhdGEuZG9jY29kZSwgLy/mtLvliqjljZXlj7fvvIzmlrDlu7rmtLvliqjml7bkuLrnqbrlgLzvvIznvJbovpHml7bpnIDopoFkb2Njb2Rl5YC8XHJcbiAgICAgICAgZm9ybUlkOiBmb3JtRGF0YS5mb3JtSWQsIC8v5Yqf6IO95Y+377ya56eS5p2AIDcxMDgwMiDvvIwg5oql5ZCN6YKA57qmIDcxMDgwMyDvvIzlm6LotK0gNzEwODA0XHJcbiAgICAgICAgZG9jU3RhdHVzOjEwMCwgLy/ljZXmja7nirbmgIE6IDAg5L+d5a2Y77yI6LW36I2J77yJIO+8jDEwMCDlj5HluINcclxuICAgICAgICBjb3ZlckltYWdlLFxyXG4gICAgICAgIGltYWdlcyxcclxuICAgICAgICB0cmFuc0Nvc3RzLCAvL+mAgei0p+S4iumXqOaXtiDphY3pgIHotLlcclxuICAgICAgICAvLyAuLi50aGlzLmRhdGEuZm9ybURhdGEsXHJcblxyXG4gICAgICAgIGVmZmVjdGl2ZVN0YXJ0RGF0ZTogZm9ybURhdGEuc3RhcnRUaW1lLFxyXG4gICAgICAgIGVmZmVjdGl2ZUVuZERhdGU6IGZvcm1EYXRhLmVuZFRpbWUsXHJcbiAgICAgICAgZnJlZUlkOiBmb3JtRGF0YS5mcmVlSWQsXHJcbiAgICAgICAgdGl0bGU6IGZvcm1EYXRhLnByb21vdGlvbnNUaXRsZSxcclxuICAgICAgICBvcmlnaW5hbFByaWNlOiBOdW1iZXIoZm9ybURhdGEub3JpZ2luYWxQcmljZSksXHJcbiAgICAgICAgc2FsZXNQcmljZTogTnVtYmVyKGZvcm1EYXRhLmZsYXNoU2FsZVByaWNlKSxcclxuICAgICAgICBudW1iZXJPZlRlYW06IE51bWJlcihmb3JtRGF0YS5mbGFzaFNhbGVUb3RhbCksXHJcbiAgICAgICAgZGVzY3JpcHRpb246IGZvcm1EYXRhLnByb21vdGlvbkRlc2NyaXB0aW9uLFxyXG4gICAgICAgIHN0b3JlTGlzdCxcclxuICAgICAgICBzZWxsZXJMaXN0LFxyXG4gICAgICB9XHJcbiAgICAgIGNvbnNvbGUubG9nKCflvoXlj5HluIPmlbDmja4nLGRhdGEpO1xyXG4gICAgICBpZiAoIWF3YWl0IHRoaXMucG9zdEZvcm1EYXRhKGRhdGEpKSByZXR1cm47XHJcbiAgICAgIGlmICh0aGlzLmRhdGEuZnJvbVBhZ2U9PSdlZGl0Jyl7XHJcbiAgICAgICAgd3gubmF2aWdhdGVCYWNrKCk7XHJcbiAgICAgIH0gZWxzZXtcclxuICAgICAgICB3eC5yZWRpcmVjdFRvKHtcclxuICAgICAgICAgIHVybDonLi4vcHJvbW90aW9uc01hbmFnZUxpc3QvcHJvbW90aW9uc01hbmFnZUxpc3Q/dGFiPTMnXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHd4LnNob3dUb2FzdCh7XHJcbiAgICAgICAgdGl0bGU6ICfpobXpnaLov5jmnInplJnor6/mnKrlpITnkIYnLFxyXG4gICAgICAgIGljb246ICdub25lJyxcclxuICAgICAgICBkdXJhdGlvbjogMjAwMFxyXG4gICAgICB9KVxyXG4gICAgICBjb25zb2xlLmxvZygn6L+Y5pyJ6ZSZ6K+v5pyq5aSE55CGJyk7XHJcbiAgICB9XHJcbiAgfSxcclxuXHJcbiAgb25TYXZlOnd4LiR1dGlscy5kZWJvdW5jZShmdW5jdGlvbih0aGlzOmFueSl7XHJcbiAgICBsZXQgc2VsbGVyRWRpdCA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjc2VsbGVyLWVkaXQnKTtcclxuICAgIGxldCBzZWxsZXJMaXN0ID0gc2VsbGVyRWRpdC5nZXRTZWxsZXJMaXN0KCk7XHJcbiAgICBsZXQgc3RvcmVFZGl0ID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyNzdG9yZS1lZGl0Jyk7XHJcbiAgICBsZXQgc3RvcmVMaXN0ID0gc3RvcmVFZGl0LmdldFNlbGVjdGVkU3RvcmVJZExpc3QoKTtcclxuICAgIGNvbnNvbGUubG9nKCflvoXmj5DkuqTnmoTpl6jlupdpZCcsc3RvcmVMaXN0KTtcclxuICAgIGxldCBmaWxlVXBsb2FkZXIgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI2ZpbGUtdXBsb2FkZXInKTtcclxuICAgIGxldCBmaWxlVXBsb2FkZXJNdWx0aXBsZSA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjZmlsZS11cGxvYWRlci1tdWx0aXBsZScpO1xyXG4gICAgY29uc29sZS5sb2coJy4uLi7mj5DkuqTmiJDlip8nKTtcclxuICAgIGxldCBjb3ZlckltYWdlID0gZmlsZVVwbG9hZGVyLmdldENvdmVySW1hZ2VVbmlkKCk7XHJcbiAgICBsZXQgaW1hZ2VzID0gZmlsZVVwbG9hZGVyTXVsdGlwbGUuZ2V0SW1hZ2VzVW5pZCgpO1xyXG4gICAgbGV0IGRlbGl2ZXJ5TWV0aG9kID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyNkZWxpdmVyeS1tZXRob2QnKTtcclxuICAgIGxldCB0cmFuc0Nvc3RzID0gMDtcclxuICAgIGlmIChkZWxpdmVyeU1ldGhvZC5kYXRhLmlzUmVxdWlyZWRBZGRyZXNzKXtcclxuICAgICAgdHJhbnNDb3N0cyA9IE51bWJlcihkZWxpdmVyeU1ldGhvZC5kYXRhLnRyYW5zQ29zdHMpO1xyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2coY292ZXJJbWFnZSxpbWFnZXMpO1xyXG4gICAgbGV0IGZvcm1EYXRhOiBhbnkgPSB0aGlzLmRhdGE7XHJcbiAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgZG9jQ29kZTogZm9ybURhdGEuZG9jY29kZSwgLy/mtLvliqjljZXlj7fvvIzmlrDlu7rmtLvliqjml7bkuLrnqbrlgLzvvIznvJbovpHml7bpnIDopoFkb2Njb2Rl5YC8XHJcbiAgICAgIGZvcm1JZDogZm9ybURhdGEuZm9ybUlkLCAvL+WKn+iDveWPt++8muenkuadgCA3MTA4MDIg77yMIOaKpeWQjemCgOe6piA3MTA4MDMg77yM5Zui6LStIDcxMDgwNFxyXG4gICAgICBkb2NTdGF0dXM6IDAsIC8v5Y2V5o2u54q25oCBOiAwIOS/neWtmO+8iOi1t+iNie+8iSDvvIwxMDAg5Y+R5biDXHJcbiAgICAgIGNvdmVySW1hZ2UsXHJcbiAgICAgIGltYWdlcyxcclxuICAgICAgdHJhbnNDb3N0cywgLy/pgIHotKfkuIrpl6jml7Yg6YWN6YCB6LS5XHJcbiAgICAgIC8vIC4uLnRoaXMuZGF0YS5mb3JtRGF0YSxcclxuXHJcbiAgICAgIGVmZmVjdGl2ZVN0YXJ0RGF0ZTogZm9ybURhdGEuc3RhcnRUaW1lLFxyXG4gICAgICBlZmZlY3RpdmVFbmREYXRlOiBmb3JtRGF0YS5lbmRUaW1lLFxyXG4gICAgICBmcmVlSWQ6IGZvcm1EYXRhLmZyZWVJZCxcclxuICAgICAgdGl0bGU6IGZvcm1EYXRhLnByb21vdGlvbnNUaXRsZSxcclxuICAgICAgb3JpZ2luYWxQcmljZTogTnVtYmVyKGZvcm1EYXRhLm9yaWdpbmFsUHJpY2UpfHwwLFxyXG4gICAgICBzYWxlc1ByaWNlOiBOdW1iZXIoZm9ybURhdGEuZmxhc2hTYWxlUHJpY2UpfHwwLFxyXG4gICAgICBudW1iZXJPZlRlYW06IE51bWJlcihmb3JtRGF0YS5mbGFzaFNhbGVUb3RhbCl8fDAsXHJcbiAgICAgIGRlc2NyaXB0aW9uOiBmb3JtRGF0YS5wcm9tb3Rpb25EZXNjcmlwdGlvbixcclxuICAgICAgc3RvcmVMaXN0LFxyXG4gICAgICBzZWxsZXJMaXN0LFxyXG4gICAgfVxyXG4gICAgLy8gbGV0IGRhdGEgPSB7XHJcbiAgICAvLyAgIGRvY0NvZGU6dGhpcy5kYXRhLmRvY2NvZGUsIC8v5rS75Yqo5Y2V5Y+377yM5paw5bu65rS75Yqo5pe25Li656m65YC877yM57yW6L6R5pe26ZyA6KaBZG9jY29kZeWAvFxyXG4gICAgLy8gICBmb3JtSWQ6dGhpcy5kYXRhLmZvcm1JZCwgLy/lip/og73lj7fvvJrnp5LmnYAgNzEwODAyIO+8jCDmiqXlkI3pgoDnuqYgNzEwODAzIO+8jOWboui0rSA3MTA4MDRcclxuICAgIC8vICAgZG9jU3RhdHVzOjAsIC8v5Y2V5o2u54q25oCBOiAwIOS/neWtmO+8iOi1t+iNie+8iSDvvIwxMDAg5Y+R5biDXHJcbiAgICAvLyAgIGNvdmVySW1hZ2UsXHJcbiAgICAvLyAgIGltYWdlcyxcclxuICAgIC8vICAgdHJhbnNDb3N0cywgLy/pgIHotKfkuIrpl6jml7Yg6YWN6YCB6LS5XHJcbiAgICAvLyAgIC4uLnRoaXMuZGF0YS5mb3JtRGF0YSxcclxuICAgIC8vICAgc2VsbGVyTGlzdCxcclxuICAgIC8vIH1cclxuICAgIGNvbnNvbGUubG9nKCflvoXkv53lrZjmlbDmja4nLGRhdGEpO1xyXG4gICAgdGhpcy5wb3N0Rm9ybURhdGEoZGF0YSk7XHJcbiAgICByZXR1cm47XHJcbiAgICB9KSxcclxuICAvLyBvbklucHV0U3RhcnREYXRlKCkge30sXHJcbiAgLy8gb25JbnB1dEVuZERhdGUoKSB7fSxcclxuICBpbml0VmFsaWRhdG9yKCl7XHJcbiAgICAvLyDlrp7kvovljJZcclxuICAgIHZhbGlkYXRvckluc3RhbmNlID0gbmV3IE15VmFsaWRhdG9yKHtcclxuICAgICAgcnVsZXM6IHtcclxuICAgICAgICBwcm9tb3Rpb25zVGl0bGU6IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgICAgcmFuZ2VsZW5ndGg6IFszLDE0XVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb3JpZ2luYWxQcmljZToge1xyXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgICBudW1iZXI6IHRydWVcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZsYXNoU2FsZVByaWNlOiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICAgIG51bWJlcjogdHJ1ZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZmxhc2hTYWxlVG90YWw6IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgICAgbnVtYmVyOiB0cnVlXHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBwcm9tb3Rpb25EZXNjcmlwdGlvbjoge1xyXG4gICAgICAgIC8vICAgcmVxdWlyZWQ6IHRydWVcclxuICAgICAgICAvLyB9LFxyXG4gICAgICB9LFxyXG4gICAgICBtZXNzYWdlczoge1xyXG4gICAgICAgIHByb21vdGlvbnNUaXRsZToge1xyXG4gICAgICAgICAgcmVxdWlyZWQ6ICfor7fovpPlhaXmtLvliqjmoIfpopgnLFxyXG4gICAgICAgICAgcmFuZ2VsZW5ndGg6ICfmloflrZfplb/luqbor7fmjqfliLblnKgz5YiwMTTkuYvpl7QnXHJcbiAgICAgICAgfSxcclxuICAgICAgICBvcmlnaW5hbFByaWNlOiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogJ+ivt+i+k+WFpeS6p+WTgeagh+S7tycsXHJcbiAgICAgICAgICBudW1iZXI6ICfku7fmoLzlv4XpobvkuLrmlbDlrZcnXHJcbiAgICAgICAgfSxcclxuICAgICAgICBmbGFzaFNhbGVQcmljZToge1xyXG4gICAgICAgICAgcmVxdWlyZWQ6ICfor7fovpPlhaXmi7zlm6Lku7cnLFxyXG4gICAgICAgICAgbnVtYmVyOiAn5Lu35qC85b+F6aG75Li65pWw5a2XJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZmxhc2hTYWxlVG90YWw6IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiAn6K+36L6T5YWl5oiQ5Zui5Lq65pWwJyxcclxuICAgICAgICAgIG51bWJlcjogJ+S6uuaVsOW/hemhu+S4uuaVsOWtlydcclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIHByb21vdGlvbkRlc2NyaXB0aW9uOiB7XHJcbiAgICAgICAgLy8gICByZXF1aXJlZDogJ+ivt+i+k+WFpea0u+WKqOaPj+i/sCdcclxuICAgICAgICAvLyB9LFxyXG4gICAgICB9LFxyXG4gICAgICBtdWx0aUNoZWNrOnRydWVcclxuICAgIH0sdGhpcylcclxuICAgIC8vIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAvLyAgIHZhbGlkYXRvckluc3RhbmNlXHJcbiAgICAvLyB9KVxyXG4gICAgY29uc29sZS5sb2coJ2hoaGgsJyx2YWxpZGF0b3JJbnN0YW5jZSk7XHJcbiAgfSxcclxuICBvblNoYXJlQXBwTWVzc2FnZSgpIHtcclxuICAgIGxldCBkb2Njb2RlOnN0cmluZyA9IHRoaXMuZGF0YS5kb2Njb2RlIHx8ICcnO1xyXG4gICAgLy8gbGV0IHRpdGxlOnN0cmluZyA9IHRoaXMuZGF0YS5wcm9tb3Rpb25zRGF0YS50aXRsZSB8fCAnJztcclxuICAgIGxldCBpbWFnZVVybDpzdHJpbmcgPSB0aGlzLmRhdGEuY292ZXJJbWFnZVVybCB8fCAnJztcclxuICAgIGxldCBzZWxsZXJVbkNoZWNrZWROYW1lczpzdHJpbmcgPSB0aGlzLmRhdGEuc2VsbGVyVW5DaGVja2VkTmFtZXMgfHwgJyc7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAvLyB0aXRsZTogdXRpbHMuZ2V0U2hhcmVUaXRsZSgpLFxyXG4gICAgICB0aXRsZTogYOivt+iQpemUgOS6uuWRmFske3NlbGxlclVuQ2hlY2tlZE5hbWVzfV3pqozor4Houqvku71gLFxyXG4gICAgICBpbWFnZVVybCxcclxuICAgICAgcGF0aDogYHBhZ2VzL3NlbGxlclZlcmlmeS9zZWxsZXJWZXJpZnk/ZG9jY29kZT0ke2RvY2NvZGV9YCxcclxuICAgIH1cclxuICB9XHJcbn0pXHJcbmV4cG9ydCB7fVxyXG4iXX0=
\ No newline at end of file
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXBCdXlpbmdDcmVhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJncm91cEJ1eWluZ0NyZWF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsdURBQWtEO0FBQ2xELG1FQUEyRztBQUUzRyxJQUFJLGlCQUE2QixDQUFDO0FBRWxDLElBQUksQ0FBQztJQUNILElBQUksRUFBRTtRQUNKLFFBQVEsRUFBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtRQUMxQyxpQkFBaUIsRUFBQyxFQUFFO1FBQ3BCLE1BQU0sRUFBQyxDQUFDO1FBQ1IsTUFBTSxFQUFDLE1BQU07UUFDYixRQUFRLEVBQUUsRUFBRTtRQUNaLE9BQU8sRUFBQyxFQUFFO1FBQ1YsUUFBUSxFQUFDLEVBQUU7UUFDWCxRQUFRLEVBQUMsRUFBRTtRQUNYLGFBQWEsRUFBQyxDQUFDO1FBQ2Ysb0JBQW9CLEVBQUMsRUFBRTtRQUN2QixhQUFhLEVBQUMsRUFBRTtRQUNoQixZQUFZLEVBQUMsS0FBSztLQUNuQjtJQUNELE1BQU0sWUFBQyxPQUFPO1FBRVosSUFBSSxPQUFPLEdBQUUsT0FBTyxDQUFDLE9BQU8sSUFBRSxFQUFFLENBQUM7UUFDakMsSUFBSSxRQUFRLEdBQUUsT0FBTyxDQUFDLFFBQVEsSUFBRSxFQUFFLENBQUM7UUFDbkMsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7UUFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNYLGFBQWEsRUFBRSx3REFBc0QsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFRO1lBQ3ZGLE9BQU8sU0FBQTtZQUNQLFFBQVEsVUFBQTtZQUNSLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEdBQUMsUUFBUSxDQUFDLCtCQUErQixDQUFDLEdBQUMsR0FBRztTQUN2RixDQUFDLENBQUE7UUFDRixJQUFJ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TXlWYWxpZGF0b3IgZnJvbSBcIi4uLy4uL3V0aWxzL215VmFsaWRhdG9yXCI7XHJcbmltcG9ydCB7Z2V0U2F2ZURhdGEsIHByb21vdGlvbnNTYXZlSGFuZGxlciwgcHJvbW90aW9uc1N1Ym1pdEhhbmRsZXJ9IGZyb20gXCIuLi8uLi9tb2R1bGVzL3Byb21vdGlvbnNDcmVhdGVcIjtcclxuXHJcbmxldCB2YWxpZGF0b3JJbnN0YW5jZTpNeVZhbGlkYXRvcjtcclxuLy8gY29uc3QgYXBwID0gZ2V0QXBwPElBcHBPcHRpb24+KCk7XHJcblBhZ2Uoe1xyXG4gIGRhdGE6IHtcclxuICAgIGF1dG9zaXplOnsgbWF4SGVpZ2h0OiAxMjAsIG1pbkhlaWdodDogNTAgfSxcclxuICAgIHZhbGlkYXRvckluc3RhbmNlOnt9LFxyXG4gICAgZnJlZUlkOjAsXHJcbiAgICBmb3JtSWQ6NzEwODA0LCAvL+WKn+iDveWPt++8muenkuadgCA3MTA4MDIg77yMIOaKpeWQjemCgOe6piA3MTA4MDMg77yM5Zui6LStIDcxMDgwNFxyXG4gICAgZm9ybURhdGE6IHt9LFxyXG4gICAgZG9jY29kZTonJyxcclxuICAgIGZyb21QYWdlOicnLFxyXG4gICAgZGVsaXZlcnk6e30sXHJcbiAgICBmZWVSYXRlRm9yUGF5OjEsXHJcbiAgICBzZWxsZXJVbkNoZWNrZWROYW1lczonJyxcclxuICAgIGNvdmVySW1hZ2VVcmw6JycsXHJcbiAgICBpc1Nob3dEaWFsb2c6ZmFsc2VcclxuICB9LFxyXG4gIG9uTG9hZChvcHRpb25zKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhhcHApO1xyXG4gICAgbGV0IGRvY2NvZGUgPW9wdGlvbnMuZG9jY29kZXx8Jyc7XHJcbiAgICBsZXQgZnJvbVBhZ2UgPW9wdGlvbnMuZnJvbVBhZ2V8fCcnO1xyXG4gICAgbGV0IHNldHRpbmdzID0gd3guZ2xvYmFsRGF0YS5zZXR0aW5ncztcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIGZpbGVVcGxvYWRVcmw6IGAvc2hvcHBpbmcvcGFuaWNCdXlpbmcuZG8/bT11cGxvYWRBdHRhY2htZW50JmZvcm1pZD0ke3RoaXMuZGF0YS5mb3JtSWR9YCxcclxuICAgICAgZG9jY29kZSxcclxuICAgICAgZnJvbVBhZ2UsXHJcbiAgICAgIGZlZVJhdGVGb3JQYXk6IChzZXR0aW5ncy5mZWVSYXRlRm9yV3hQYXkrc2V0dGluZ3MucGxhdGZvcm1PcGVyYXRvckNvbW1pc3Npb25SYXRpbykqMTAwXHJcbiAgICB9KVxyXG4gICAgaWYgKGRvY2NvZGUpIHtcclxuICAgICAgdGhpcy5nZXRTYXZlRGF0YSgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBzdG9yZUVkaXQgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI3N0b3JlLWVkaXQnKTtcclxuICAgICAgc3RvcmVFZGl0LmdldFN0b3JlTGlzdCgpO1xyXG4gICAgfVxyXG4gIH0sXHJcbiAgYXN5bmMgZ2V0U2F2ZURhdGEoKSB7XHJcbiAgICBhd2FpdCBnZXRTYXZlRGF0YSh0aGlzKVxyXG4gICAgLy8gbGV0IGRvY2NvZGUgPSB0aGlzLmRhdGEuZG9jY29kZTtcclxuICAgIC8vIGxldCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCB3eC4kdXRpbHMudG8oXHJcbiAgICAvLyAgIHd4LiRodHRwLnJlcXVlc3Qoe1xyXG4gICAgLy8gICAgIHVybDpgL3Nob3BwaW5nL3BhbmljQnV5aW5nLmRvP209Z2V0UGFuaWNCdXlpbmdEZXRhaWxgLFxyXG4gICAgLy8gICAgIGRhdGE6e1xyXG4gICAgLy8gICAgICAgZG9jY29kZSxcclxuICAgIC8vICAgICAgIGlzRWRpdDp0cnVlLFxyXG4gICAgLy8gICAgICAgU2VsbGVyT3BlbklkOnd4Lmdsb2JhbERhdGEuT3BlbklkXHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICB9KVxyXG4gICAgLy8gKVxyXG4gICAgLy8gaWYgKGVycm9yKXtcclxuICAgIC8vICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgLy8gICByZXR1cm47XHJcbiAgICAvLyB9XHJcbiAgICAvLyBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG4gICAgLy8gbGV0IGRhdGEgPSByZXN1bHQubGlzdFswXTtcclxuICAgIC8vIGxldCBmb3JtRGF0YSA9IHtcclxuICAgIC8vICAgcHJvbW90aW9uc1RpdGxlOiBkYXRhLnRpdGxlLFxyXG4gICAgLy8gICBvcmlnaW5hbFByaWNlOiBkYXRhLm9yaWdpbmFsUHJpY2UsXHJcbiAgICAvLyAgIGZsYXNoU2FsZVByaWNlOiBkYXRhLnNhbGVzUHJpY2UsXHJcbiAgICAvLyAgIGZsYXNoU2FsZVRvdGFsOiBkYXRhLm51bWJlck9mVGVhbSxcclxuICAgIC8vICAgcHJvbW90aW9uRGVzY3JpcHRpb246IGRhdGEuZGVzY3JpcHRpb24sXHJcbiAgICAvLyAgIHN0YXJ0VGltZTogZGF0YS5lZmZlY3RpdmVTdGFydERhdGUsXHJcbiAgICAvLyAgIGVuZFRpbWU6IGRhdGEuZWZmZWN0aXZlRW5kRGF0ZSxcclxuICAgIC8vICAgY292ZXJJbWFnZUxpc3Q6IChkYXRhLmNvdmVySW1hZ2VVcmwmJnRoaXMuZ2V0Q292ZXJJbWFnZUxpc3QoZGF0YSkpfHxbXSxcclxuICAgIC8vICAgLy8gaW1hZ2VzTGlzdDogKGRhdGEuaW1hZ2VzVXJsLmxlbmd0aD4wJiZ0aGlzLmdldEltYWdlc0xpc3QoZGF0YSkpfHxbXSxcclxuICAgIC8vICAgaW1hZ2VzTGlzdDogZGF0YS5pbWFnZXNVcmwsXHJcbiAgICAvLyAgIGNvdmVySW1hZ2U6IGRhdGEuY292ZXJJbWFnZSxcclxuICAgIC8vICAgaW1hZ2VzOiBkYXRhLmltYWdlcyxcclxuICAgIC8vICAgZnJlZUlkOmRhdGEuZnJlZUlkLFxyXG4gICAgLy8gfTtcclxuICAgIC8vIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAvLyAgIC4uLmZvcm1EYXRhLFxyXG4gICAgLy8gICBjb3ZlckltYWdlVXJsOmRhdGEuY292ZXJJbWFnZVVybCxcclxuICAgIC8vICAgLy8gW2BlZmZlY3RpdmVTdGFydERhdGVgXTogZGF0YS5lZmZlY3RpdmVTdGFydERhdGUsXHJcbiAgICAvLyAgIC8vIFtgZWZmZWN0aXZlRW5kRGF0ZWBdOiBkYXRhLmVmZmVjdGl2ZUVuZERhdGUsXHJcbiAgICAvLyAgIC8vIFtgZnJlZUlkYF06IGRhdGEuZnJlZUlkLFxyXG4gICAgLy8gICAvLyBbYHRpdGxlYF06IGRhdGEudGl0bGUsXHJcbiAgICAvLyAgIC8vIFtgb3JpZ2luYWxQcmljZWBdOiBkYXRhLm9yaWdpbmFsUHJpY2UsXHJcbiAgICAvLyAgIC8vIFtgc2FsZXNQcmljZWBdOiBkYXRhLnNhbGVzUHJpY2UsXHJcbiAgICAvLyAgIC8vIFtgcXVhbnRpdHlgXTogZGF0YS5xdWFudGl0eSxcclxuICAgIC8vICAgLy8gW2ByZXN0cmljdEJ1eWluZ1F1YW50aXR5YF06IGRhdGEucmVzdHJpY3RCdXlpbmdRdWFudGl0eSxcclxuICAgIC8vICAgLy8gW2BkZXNjcmlwdGlvbmBdOiBkYXRhLmRlc2NyaXB0aW9uLFxyXG4gICAgLy8gICBzZWxsZXJMaXN0OnJlc3VsdC5zZWxsZXJMaXN0LFxyXG4gICAgLy8gICBzdG9yZUxpc3Q6cmVzdWx0LnN0b3JlTGlzdCxcclxuICAgIC8vICAgc3RhdHVzOmRhdGEucGFuaWNCdXlpbmdTdGF0dXMsXHJcbiAgICAvLyAgIGRlbGl2ZXJ5OntcclxuICAgIC8vICAgICBmcmVlSWQ6ZGF0YS5mcmVlSWQsXHJcbiAgICAvLyAgICAgZnJlZU5hbWU6ZGF0YS5mcmVlTmFtZSxcclxuICAgIC8vICAgICBpc1JlcXVpcmVkQWRkcmVzczpkYXRhLmlzUmVxdWlyZWRBZGRyZXNzLFxyXG4gICAgLy8gICAgIHRyYW5zQ29zdHM6ZGF0YS50cmFuc0Nvc3RzLFxyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9KTtcclxuICAgIC8vIGNvbnNvbGUubG9nKCfphY3pgIHmlbDmja7jgILjgILjgIInLHRoaXMuZGF0YS5kZWxpdmVyeSk7XHJcbiAgICAvLyB3eC5zZXROYXZpZ2F0aW9uQmFyVGl0bGUoe1xyXG4gICAgLy8gICB0aXRsZTogZGF0YS50aXRsZVxyXG4gICAgLy8gfSlcclxuICB9LFxyXG5cclxuICBnZXRDb3ZlckltYWdlTGlzdChkYXRhOmFueSl7XHJcbiAgICBsZXQgW3VuaWQsc2VxXSA9IGRhdGEuY292ZXJJbWFnZS5zcGxpdChcIjtcIik7XHJcbiAgICByZXR1cm4gW3tcclxuICAgICAgdXJsOiBkYXRhLmNvdmVySW1hZ2VVcmx8fCcnLFxyXG4gICAgICB1bmlkLFxyXG4gICAgICBzZXFcclxuICAgIH1dXHJcbiAgfSxcclxuICAvLyBnZXRJbWFnZXNMaXN0KGRhdGE6YW55KXtcclxuICAvLyAgIGxldCBbdW5pZCxzZXFdID0gZGF0YS5pbWFnZXMuc3BsaXQoXCI7XCIpO1xyXG4gIC8vICAgcmV0dXJuIGRhdGEuaW1hZ2VzVXJsLm1hcCgoaXRlbTpzdHJpbmcpPT57XHJcbiAgLy8gICAgIHJldHVybiB7XHJcbiAgLy8gICAgICAgdXJsOiBpdGVtLFxyXG4gIC8vICAgICAgIHVuaWQsXHJcbiAgLy8gICAgICAgc2VxXHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH0pXHJcbiAgLy8gfSxcclxuXHJcbiAgb25SZWFkeSgpIHtcclxuICAgIHRoaXMuaW5pdFZhbGlkYXRvcigpXHJcbiAgfSxcclxuICBzZWxlY3RlZFN0YXJ0VGltZShldmVudDphbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKCflvIDlp4snLGV2ZW50KTtcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIHN0YXJ0VGltZTogZXZlbnQuZGV0YWlsLnN0YXJ0VGltZSxcclxuICAgIH0pXHJcbiAgfSxcclxuICBzZWxlY3RlZEVuZFRpbWUoZXZlbnQ6YW55KXtcclxuICAgIGNvbnNvbGUubG9nKCfnu5PmnZ8nLGV2ZW50KTtcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIGVuZFRpbWU6IGV2ZW50LmRldGFpbC5lbmRUaW1lLFxyXG4gICAgfSlcclxuICB9LFxyXG4gIGdldERlbGl2ZXJ5TWV0aG9kKGV2ZW50OmFueSl7XHJcbiAgICBjb25zb2xlLmxvZyhldmVudC5kZXRhaWwpO1xyXG4gICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgLy8gZGVsaXZlcnlNZXRob2Q6IGV2ZW50LmRldGFpbC5kZWxpdmVyeU1ldGhvZCxcclxuICAgICAgZnJlZUlkOiBldmVudC5kZXRhaWwuZnJlZUlkLFxyXG4gICAgfSlcclxuICAgIGNvbnNvbGUubG9nKCd0aGlzLmRhdGEuZnJlZUlkOycsdGhpcy5kYXRhLmZyZWVJZCk7XHJcbiAgfSxcclxuXHJcbiAgY2hlY2tQcm9tb3Rpb25zVGl0bGUoZTphbnkpe1xyXG4gICAgbGV0IHsgdmFsdWUgfSA9IGUuZGV0YWlsXHJcbiAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgIHZhbGlkYXRvckluc3RhbmNlLmNoZWNrRmllbGQoJ3Byb21vdGlvbnNUaXRsZScsdmFsdWUpO1xyXG4gICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgcHJvbW90aW9uc1RpdGxlOnZhbHVlLnRyaW0oKVxyXG4gICAgfSlcclxuICB9LFxyXG4gIGNoZWNrT3JpZ2luYWxQcmljZShlOmFueSl7XHJcbiAgICBsZXQgeyB2YWx1ZSB9ID0gZS5kZXRhaWxcclxuICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgdmFsaWRhdG9ySW5zdGFuY2UuY2hlY2tGaWVsZCgnb3JpZ2luYWxQcmljZScsdmFsdWUpO1xyXG4gICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgb3JpZ2luYWxQcmljZTp2YWx1ZS50cmltKClcclxuICAgIH0pXHJcbiAgfSxcclxuICBjaGVja0ZsYXNoU2FsZVByaWNlKGU6YW55KXtcclxuICAgIGxldCB7IHZhbHVlIH0gPSBlLmRldGFpbFxyXG4gICAgY29uc29sZS5sb2coZSk7XHJcbiAgICB2YWxpZGF0b3JJbnN0YW5jZS5jaGVja0ZpZWxkKCdmbGFzaFNhbGVQcmljZScsdmFsdWUpO1xyXG4gICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgZmxhc2hTYWxlUHJpY2U6dmFsdWUudHJpbSgpXHJcbiAgICB9KVxyXG4gIH0sXHJcbiAgY2hlY2tGbGFzaFNhbGVUb3RhbChlOmFueSl7XHJcbiAgICBsZXQgeyB2YWx1ZSB9ID0gZS5kZXRhaWxcclxuICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgdmFsaWRhdG9ySW5zdGFuY2UuY2hlY2tGaWVsZCgnZmxhc2hTYWxlVG90YWwnLHZhbHVlKTtcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIGZsYXNoU2FsZVRvdGFsOnZhbHVlLnRyaW0oKVxyXG4gICAgfSlcclxuICB9LFxyXG4gIGNoZWNrUHJvbW90aW9uRGVzY3JpcHRpb24oZTphbnkpe1xyXG4gICAgbGV0IHsgdmFsdWUgfSA9IGUuZGV0YWlsXHJcbiAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgIHZhbGlkYXRvckluc3RhbmNlLmNoZWNrRmllbGQoJ3Byb21vdGlvbkRlc2NyaXB0aW9uJyx2YWx1ZSk7XHJcbiAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICBwcm9tb3Rpb25EZXNjcmlwdGlvbjp2YWx1ZS50cmltKClcclxuICAgIH0pXHJcbiAgfSxcclxuXHJcbiAgLy8gYXN5bmMgcG9zdEZvcm1EYXRhKGRhdGE6b2JqZWN0KXtcclxuICAvLyAgIGxldCBbZXJyb3IsIHJlc10gPSBhd2FpdCB3eC4kdXRpbHMudG8oXHJcbiAgLy8gICAgIHd4LiRodHRwLnJlcXVlc3Qoe1xyXG4gIC8vICAgICAgIHVybDonL3Nob3BwaW5nL3BhbmljQnV5aW5nLmRvP209c2F2ZURvY0NvZGUnLFxyXG4gIC8vICAgICAgIGRhdGEsXHJcbiAgLy8gICAgICAgbWV0aG9kOidQT1NUJ1xyXG4gIC8vICAgICB9KVxyXG4gIC8vICAgKVxyXG4gIC8vICAgaWYgKGVycm9yKSB7XHJcbiAgLy8gICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAvLyAgICAgcmV0dXJuIGZhbHNlO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgY29uc29sZS5sb2cocmVzKTtcclxuICAvLyAgIGlmIChyZXMuc3RhdGUgPT09ICdzdWNjZXNzJykge1xyXG4gIC8vICAgICB3eC5zaG93VG9hc3Qoe1xyXG4gIC8vICAgICAgIHRpdGxlOiAn5oiQ5YqfJyxcclxuICAvLyAgICAgICBkdXJhdGlvbjogMjAwMFxyXG4gIC8vICAgICB9KVxyXG4gIC8vICAgICB0aGlzLnNldERhdGEoe1xyXG4gIC8vICAgICAgIGRvY2NvZGU6cmVzLkRvY0NvZGVcclxuICAvLyAgICAgfSlcclxuICAvLyAgIH1cclxuICAvLyAgIGlmIChyZXMuc3RhdGUgPT09ICdmYWlsZWQnJiZyZXMuc2VsbGVyQ2hlY2tlZEJhbGFuY2U+MCkge1xyXG4gIC8vICAgICB0aGlzLnNldERhdGEoe1xyXG4gIC8vICAgICAgIHNlbGxlclVuQ2hlY2tlZE5hbWVzOiByZXMuc2VsbGVyVW5DaGVja2VkTmFtZXMsXHJcbiAgLy8gICAgICAgaXNTaG93RGlhbG9nOiB0cnVlXHJcbiAgLy8gICAgIH0pXHJcbiAgLy8gICB9XHJcbiAgLy8gICByZXR1cm4gcmVzLnN0YXRlID09PSAnc3VjY2Vzcyc7XHJcbiAgLy8gfSxcclxuICBvblN1Ym1pdDp3eC4kdXRpbHMuZGVib3VuY2UoZnVuY3Rpb24odGhpczphbnkpe1xyXG4gICAgdGhpcy5zdWJtaXRIYW5kbGVyKCk7XHJcbiAgICByZXR1cm47XHJcbiAgfSksXHJcblxyXG4gIGFzeW5jIHN1Ym1pdEhhbmRsZXIoKXtcclxuICAgIGF3YWl0IHByb21vdGlvbnNTdWJtaXRIYW5kbGVyKHRoaXMsdmFsaWRhdG9ySW5zdGFuY2UpO1xyXG4gICAgcmV0dXJuO1xyXG4gICAgLy8gbGV0IHRpbWVRdWFudHVtID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyN0aW1lLXF1YW50dW0nKTtcclxuICAgIC8vIGxldCBzZWxsZXJFZGl0ID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyNzZWxsZXItZWRpdCcpO1xyXG4gICAgLy8gbGV0IHN0b3JlRWRpdCA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjc3RvcmUtZWRpdCcpO1xyXG4gICAgLy8gbGV0IGZpbGVVcGxvYWRlciA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjZmlsZS11cGxvYWRlcicpO1xyXG4gICAgLy8gbGV0IGZpbGVVcGxvYWRlck11bHRpcGxlID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyNmaWxlLXVwbG9hZGVyLW11bHRpcGxlJyk7XHJcbiAgICAvL1xyXG4gICAgLy8gbGV0IGRlbGl2ZXJ5TWV0aG9kID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyNkZWxpdmVyeS1tZXRob2QnKTtcclxuICAgIC8vIGxldCBjaGVja1RyYW5zQ29zdHMgPSB0cnVlO1xyXG4gICAgLy8gbGV0IHRyYW5zQ29zdHMgPSAwO1xyXG4gICAgLy8gaWYgKGRlbGl2ZXJ5TWV0aG9kLmRhdGEuaXNSZXF1aXJlZEFkZHJlc3Mpe1xyXG4gICAgLy8gICBjaGVja1RyYW5zQ29zdHMgPSBkZWxpdmVyeU1ldGhvZC5jaGVja0ZpZWxkcygpO1xyXG4gICAgLy8gICB0cmFuc0Nvc3RzID0gTnVtYmVyKGRlbGl2ZXJ5TWV0aG9kLmRhdGEudHJhbnNDb3N0cyk7XHJcbiAgICAvLyB9XHJcbiAgICAvL1xyXG4gICAgLy8gY29uc29sZS5sb2codGltZVF1YW50dW0pO1xyXG4gICAgLy9cclxuICAgIC8vIGxldCBjaGVja1N0YXJ0VGltZSA9IHRpbWVRdWFudHVtLmNoZWNrVGltZShcInN0YXJ0VGltZVwiKTtcclxuICAgIC8vIGxldCBjaGVja0VuZFRpbWUgPSB0aW1lUXVhbnR1bS5jaGVja1RpbWUoXCJlbmRUaW1lXCIpO1xyXG4gICAgLy8gbGV0IGNoZWNrQ292ZXJJbWFnZSA9IGZpbGVVcGxvYWRlci5jaGVja0ltYWdlcyhcImNvdmVySW1hZ2VcIiwgXCLor7fkuIrkvKDkuIDlvKDlsIHpnaLlm75cIik7XHJcbiAgICAvLyAvLyBsZXQgY2hlY2tJbWFnZXMgPSBmaWxlVXBsb2FkZXJNdWx0aXBsZS5jaGVja0ltYWdlcyhcImltYWdlc1wiLCBcIuivt+iHs+WwkeS4iuS8oOS4gOW8oOWbvueJh1wiKTtcclxuICAgIC8vIGxldCBjaGVja0FsbERhdGEgPSB2YWxpZGF0b3JJbnN0YW5jZS5jaGVja0FsbERhdGEoKTtcclxuICAgIC8vIC8vIGlmICh0aGlzLmRhdGEuZ29vZHNJbWdMaXN0Lmxlbmd0aCA8IDEpIHtcclxuICAgIC8vIC8vICAgY29uc29sZS5sb2coJ+ivt+S4iuS8oOS6p+WTgeWbvueJhycpO1xyXG4gICAgLy8gLy8gfVxyXG4gICAgLy8gbGV0IHNlbGxlckxpc3QgPSBzZWxsZXJFZGl0LmdldFNlbGxlckxpc3QoKTtcclxuICAgIC8vIGlmIChzZWxsZXJMaXN0Lmxlbmd0aDwxKSB7XHJcbiAgICAvLyAgIHd4LnNob3dUb2FzdCh7XHJcbiAgICAvLyAgICAgdGl0bGU6ICfor7fpgInmi6nokKXplIDkurrlkZgnLFxyXG4gICAgLy8gICAgIGljb246ICdub25lJyxcclxuICAgIC8vICAgICBkdXJhdGlvbjogMjAwMFxyXG4gICAgLy8gICB9KVxyXG4gICAgLy8gICByZXR1cm5cclxuICAgIC8vIH1cclxuICAgIC8vIGxldCBzdG9yZUxpc3QgPSBzdG9yZUVkaXQuZ2V0U2VsZWN0ZWRTdG9yZUlkTGlzdCgpO1xyXG4gICAgLy8gY29uc29sZS5sb2coJ+W+heaPkOS6pOeahOmXqOW6l2lkJyxzdG9yZUxpc3QpO1xyXG4gICAgLy8gbGV0IGNoZWNrRGVmYXVsdFNlbGxlciA9IHNlbGxlckVkaXQuY2hlY2tEZWZhdWx0U2VsbGVyKCk7XHJcbiAgICAvLyBpZiAoIWNoZWNrRGVmYXVsdFNlbGxlcikge1xyXG4gICAgLy8gICB3eC5zaG93VG9hc3Qoe1xyXG4gICAgLy8gICAgIHRpdGxlOiAn6K+36YCJ5oup6buY6K6k6JCl6ZSA5Lq65ZGYJyxcclxuICAgIC8vICAgICBpY29uOiAnbm9uZScsXHJcbiAgICAvLyAgICAgZHVyYXRpb246IDIwMDBcclxuICAgIC8vICAgfSlcclxuICAgIC8vICAgcmV0dXJuXHJcbiAgICAvLyB9XHJcbiAgICAvLyBjb25zb2xlLmxvZygnY2hlY2tEZWZhdWx0U2VsbGVyJyxjaGVja0RlZmF1bHRTZWxsZXIpO1xyXG4gICAgLy9cclxuICAgIC8vIGxldCBjaGVja0FyciA9IFtjaGVja1RyYW5zQ29zdHMsY2hlY2tTdGFydFRpbWUsY2hlY2tFbmRUaW1lLGNoZWNrQ292ZXJJbWFnZSxjaGVja0FsbERhdGFdO1xyXG4gICAgLy8gbGV0IGRhdGEgPSB7fTtcclxuICAgIC8vIGlmIChjaGVja0Fyci5ldmVyeSgoaXRlbSk9PntcclxuICAgIC8vICAgcmV0dXJuIGl0ZW1cclxuICAgIC8vIH0pKXtcclxuICAgIC8vICAgY29uc29sZS5sb2coJy4uLi7mj5DkuqTmiJDlip8nKTtcclxuICAgIC8vICAgbGV0IGNvdmVySW1hZ2UgPSBmaWxlVXBsb2FkZXIuZ2V0Q292ZXJJbWFnZVVuaWQoKTtcclxuICAgIC8vICAgbGV0IGNvdmVySW1hZ2VVcmwgPSBmaWxlVXBsb2FkZXIuZ2V0SW1nTGlzdCgpWzBdLnVybHx8Jyc7XHJcbiAgICAvLyAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAvLyAgICAgY292ZXJJbWFnZVVybFxyXG4gICAgLy8gICB9KVxyXG4gICAgLy8gICBsZXQgaW1hZ2VzID0gZmlsZVVwbG9hZGVyTXVsdGlwbGUuZ2V0SW1hZ2VzVW5pZCgpO1xyXG4gICAgLy8gICBjb25zb2xlLmxvZyhjb3ZlckltYWdlLGltYWdlcyk7XHJcbiAgICAvLyAgIGxldCBmb3JtRGF0YTogYW55ID0gdGhpcy5kYXRhO1xyXG4gICAgLy8gICBkYXRhID0ge1xyXG4gICAgLy8gICAgIGRvY0NvZGU6IGZvcm1EYXRhLmRvY2NvZGUsIC8v5rS75Yqo5Y2V5Y+377yM5paw5bu65rS75Yqo5pe25Li656m65YC877yM57yW6L6R5pe26ZyA6KaBZG9jY29kZeWAvFxyXG4gICAgLy8gICAgIGZvcm1JZDogZm9ybURhdGEuZm9ybUlkLCAvL+WKn+iDveWPt++8muenkuadgCA3MTA4MDIg77yMIOaKpeWQjemCgOe6piA3MTA4MDMg77yM5Zui6LStIDcxMDgwNFxyXG4gICAgLy8gICAgIGRvY1N0YXR1czoxMDAsIC8v5Y2V5o2u54q25oCBOiAwIOS/neWtmO+8iOi1t+iNie+8iSDvvIwxMDAg5Y+R5biDXHJcbiAgICAvLyAgICAgY292ZXJJbWFnZSxcclxuICAgIC8vICAgICBpbWFnZXMsXHJcbiAgICAvLyAgICAgdHJhbnNDb3N0cywgLy/pgIHotKfkuIrpl6jml7Yg6YWN6YCB6LS5XHJcbiAgICAvLyAgICAgLy8gLi4udGhpcy5kYXRhLmZvcm1EYXRhLFxyXG4gICAgLy9cclxuICAgIC8vICAgICBlZmZlY3RpdmVTdGFydERhdGU6IGZvcm1EYXRhLnN0YXJ0VGltZSxcclxuICAgIC8vICAgICBlZmZlY3RpdmVFbmREYXRlOiBmb3JtRGF0YS5lbmRUaW1lLFxyXG4gICAgLy8gICAgIGZyZWVJZDogZm9ybURhdGEuZnJlZUlkLFxyXG4gICAgLy8gICAgIHRpdGxlOiBmb3JtRGF0YS5wcm9tb3Rpb25zVGl0bGUsXHJcbiAgICAvLyAgICAgb3JpZ2luYWxQcmljZTogTnVtYmVyKGZvcm1EYXRhLm9yaWdpbmFsUHJpY2UpLFxyXG4gICAgLy8gICAgIHNhbGVzUHJpY2U6IE51bWJlcihmb3JtRGF0YS5mbGFzaFNhbGVQcmljZSksXHJcbiAgICAvLyAgICAgbnVtYmVyT2ZUZWFtOiBOdW1iZXIoZm9ybURhdGEuZmxhc2hTYWxlVG90YWwpLFxyXG4gICAgLy8gICAgIGRlc2NyaXB0aW9uOiBmb3JtRGF0YS5wcm9tb3Rpb25EZXNjcmlwdGlvbixcclxuICAgIC8vICAgICBzdG9yZUxpc3QsXHJcbiAgICAvLyAgICAgc2VsbGVyTGlzdCxcclxuICAgIC8vICAgfVxyXG4gICAgLy8gICBjb25zb2xlLmxvZygn5b6F5Y+R5biD5pWw5o2uJyxkYXRhKTtcclxuICAgIC8vICAgaWYgKCFhd2FpdCB0aGlzLnBvc3RGb3JtRGF0YShkYXRhKSkgcmV0dXJuO1xyXG4gICAgLy8gICBpZiAodGhpcy5kYXRhLmZyb21QYWdlPT0nZWRpdCcpe1xyXG4gICAgLy8gICAgIHd4Lm5hdmlnYXRlQmFjaygpO1xyXG4gICAgLy8gICB9IGVsc2V7XHJcbiAgICAvLyAgICAgd3gucmVkaXJlY3RUbyh7XHJcbiAgICAvLyAgICAgICB1cmw6Jy4uL3Byb21vdGlvbnNNYW5hZ2VMaXN0L3Byb21vdGlvbnNNYW5hZ2VMaXN0P3RhYj0zJ1xyXG4gICAgLy8gICAgIH0pXHJcbiAgICAvLyAgIH1cclxuICAgIC8vXHJcbiAgICAvLyB9IGVsc2Uge1xyXG4gICAgLy8gICB3eC5zaG93VG9hc3Qoe1xyXG4gICAgLy8gICAgIHRpdGxlOiAn6aG16Z2i6L+Y5pyJ6ZSZ6K+v5pyq5aSE55CGJyxcclxuICAgIC8vICAgICBpY29uOiAnbm9uZScsXHJcbiAgICAvLyAgICAgZHVyYXRpb246IDIwMDBcclxuICAgIC8vICAgfSlcclxuICAgIC8vICAgY29uc29sZS5sb2coJ+i/mOaciemUmeivr+acquWkhOeQhicpO1xyXG4gICAgLy8gfVxyXG4gIH0sXHJcblxyXG4gIG9uU2F2ZTp3eC4kdXRpbHMuZGVib3VuY2UoZnVuY3Rpb24odGhpczphbnkpe1xyXG4gICAgcHJvbW90aW9uc1NhdmVIYW5kbGVyKHRoaXMpO1xyXG4gICAgcmV0dXJuO1xyXG4gICAgLy8gbGV0IHNlbGxlckVkaXQgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI3NlbGxlci1lZGl0Jyk7XHJcbiAgICAvLyBsZXQgc2VsbGVyTGlzdCA9IHNlbGxlckVkaXQuZ2V0U2VsbGVyTGlzdCgpO1xyXG4gICAgLy8gbGV0IHN0b3JlRWRpdCA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjc3RvcmUtZWRpdCcpO1xyXG4gICAgLy8gbGV0IHN0b3JlTGlzdCA9IHN0b3JlRWRpdC5nZXRTZWxlY3RlZFN0b3JlSWRMaXN0KCk7XHJcbiAgICAvLyBjb25zb2xlLmxvZygn5b6F5o+Q5Lqk55qE6Zeo5bqXaWQnLHN0b3JlTGlzdCk7XHJcbiAgICAvLyBsZXQgZmlsZVVwbG9hZGVyID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyNmaWxlLXVwbG9hZGVyJyk7XHJcbiAgICAvLyBsZXQgZmlsZVVwbG9hZGVyTXVsdGlwbGUgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI2ZpbGUtdXBsb2FkZXItbXVsdGlwbGUnKTtcclxuICAgIC8vIGNvbnNvbGUubG9nKCcuLi4u5o+Q5Lqk5oiQ5YqfJyk7XHJcbiAgICAvLyBsZXQgY292ZXJJbWFnZSA9IGZpbGVVcGxvYWRlci5nZXRDb3ZlckltYWdlVW5pZCgpO1xyXG4gICAgLy8gbGV0IGltYWdlcyA9IGZpbGVVcGxvYWRlck11bHRpcGxlLmdldEltYWdlc1VuaWQoKTtcclxuICAgIC8vIGxldCBkZWxpdmVyeU1ldGhvZCA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjZGVsaXZlcnktbWV0aG9kJyk7XHJcbiAgICAvLyBsZXQgdHJhbnNDb3N0cyA9IDA7XHJcbiAgICAvLyBpZiAoZGVsaXZlcnlNZXRob2QuZGF0YS5pc1JlcXVpcmVkQWRkcmVzcyl7XHJcbiAgICAvLyAgIHRyYW5zQ29zdHMgPSBOdW1iZXIoZGVsaXZlcnlNZXRob2QuZGF0YS50cmFuc0Nvc3RzKTtcclxuICAgIC8vIH1cclxuICAgIC8vIGNvbnNvbGUubG9nKGNvdmVySW1hZ2UsaW1hZ2VzKTtcclxuICAgIC8vIGxldCBmb3JtRGF0YTogYW55ID0gdGhpcy5kYXRhO1xyXG4gICAgLy8gbGV0IGRhdGEgPSB7XHJcbiAgICAvLyAgIGRvY0NvZGU6IGZvcm1EYXRhLmRvY2NvZGUsIC8v5rS75Yqo5Y2V5Y+377yM5paw5bu65rS75Yqo5pe25Li656m65YC877yM57yW6L6R5pe26ZyA6KaBZG9jY29kZeWAvFxyXG4gICAgLy8gICBmb3JtSWQ6IGZvcm1EYXRhLmZvcm1JZCwgLy/lip/og73lj7fvvJrnp5LmnYAgNzEwODAyIO+8jCDmiqXlkI3pgoDnuqYgNzEwODAzIO+8jOWboui0rSA3MTA4MDRcclxuICAgIC8vICAgZG9jU3RhdHVzOiAwLCAvL+WNleaNrueKtuaAgTogMCDkv53lrZjvvIjotbfojYnvvIkg77yMMTAwIOWPkeW4g1xyXG4gICAgLy8gICBjb3ZlckltYWdlLFxyXG4gICAgLy8gICBpbWFnZXMsXHJcbiAgICAvLyAgIHRyYW5zQ29zdHMsIC8v6YCB6LSn5LiK6Zeo5pe2IOmFjemAgei0uVxyXG4gICAgLy8gICAvLyAuLi50aGlzLmRhdGEuZm9ybURhdGEsXHJcbiAgICAvL1xyXG4gICAgLy8gICBlZmZlY3RpdmVTdGFydERhdGU6IGZvcm1EYXRhLnN0YXJ0VGltZSxcclxuICAgIC8vICAgZWZmZWN0aXZlRW5kRGF0ZTogZm9ybURhdGEuZW5kVGltZSxcclxuICAgIC8vICAgZnJlZUlkOiBmb3JtRGF0YS5mcmVlSWQsXHJcbiAgICAvLyAgIHRpdGxlOiBmb3JtRGF0YS5wcm9tb3Rpb25zVGl0bGUsXHJcbiAgICAvLyAgIG9yaWdpbmFsUHJpY2U6IE51bWJlcihmb3JtRGF0YS5vcmlnaW5hbFByaWNlKXx8MCxcclxuICAgIC8vICAgc2FsZXNQcmljZTogTnVtYmVyKGZvcm1EYXRhLmZsYXNoU2FsZVByaWNlKXx8MCxcclxuICAgIC8vICAgbnVtYmVyT2ZUZWFtOiBOdW1iZXIoZm9ybURhdGEuZmxhc2hTYWxlVG90YWwpfHwwLFxyXG4gICAgLy8gICBkZXNjcmlwdGlvbjogZm9ybURhdGEucHJvbW90aW9uRGVzY3JpcHRpb24sXHJcbiAgICAvLyAgIHN0b3JlTGlzdCxcclxuICAgIC8vICAgc2VsbGVyTGlzdCxcclxuICAgIC8vIH1cclxuICAgIC8vIC8vIGxldCBkYXRhID0ge1xyXG4gICAgLy8gLy8gICBkb2NDb2RlOnRoaXMuZGF0YS5kb2Njb2RlLCAvL+a0u+WKqOWNleWPt++8jOaWsOW7uua0u+WKqOaXtuS4uuepuuWAvO+8jOe8lui+keaXtumcgOimgWRvY2NvZGXlgLxcclxuICAgIC8vIC8vICAgZm9ybUlkOnRoaXMuZGF0YS5mb3JtSWQsIC8v5Yqf6IO95Y+377ya56eS5p2AIDcxMDgwMiDvvIwg5oql5ZCN6YKA57qmIDcxMDgwMyDvvIzlm6LotK0gNzEwODA0XHJcbiAgICAvLyAvLyAgIGRvY1N0YXR1czowLCAvL+WNleaNrueKtuaAgTogMCDkv53lrZjvvIjotbfojYnvvIkg77yMMTAwIOWPkeW4g1xyXG4gICAgLy8gLy8gICBjb3ZlckltYWdlLFxyXG4gICAgLy8gLy8gICBpbWFnZXMsXHJcbiAgICAvLyAvLyAgIHRyYW5zQ29zdHMsIC8v6YCB6LSn5LiK6Zeo5pe2IOmFjemAgei0uVxyXG4gICAgLy8gLy8gICAuLi50aGlzLmRhdGEuZm9ybURhdGEsXHJcbiAgICAvLyAvLyAgIHNlbGxlckxpc3QsXHJcbiAgICAvLyAvLyB9XHJcbiAgICAvLyBjb25zb2xlLmxvZygn5b6F5L+d5a2Y5pWw5o2uJyxkYXRhKTtcclxuICAgIC8vIHRoaXMucG9zdEZvcm1EYXRhKGRhdGEpO1xyXG4gICAgLy8gcmV0dXJuO1xyXG4gICAgfSksXHJcbiAgLy8gb25JbnB1dFN0YXJ0RGF0ZSgpIHt9LFxyXG4gIC8vIG9uSW5wdXRFbmREYXRlKCkge30sXHJcbiAgaW5pdFZhbGlkYXRvcigpe1xyXG4gICAgLy8g5a6e5L6L5YyWXHJcbiAgICB2YWxpZGF0b3JJbnN0YW5jZSA9IG5ldyBNeVZhbGlkYXRvcih7XHJcbiAgICAgIHJ1bGVzOiB7XHJcbiAgICAgICAgcHJvbW90aW9uc1RpdGxlOiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICAgIHJhbmdlbGVuZ3RoOiBbMywxNF1cclxuICAgICAgICB9LFxyXG4gICAgICAgIG9yaWdpbmFsUHJpY2U6IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgICAgbnVtYmVyOiB0cnVlXHJcbiAgICAgICAgfSxcclxuICAgICAgICBmbGFzaFNhbGVQcmljZToge1xyXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgICBudW1iZXI6IHRydWVcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZsYXNoU2FsZVRvdGFsOiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICAgIG51bWJlcjogdHJ1ZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gcHJvbW90aW9uRGVzY3JpcHRpb246IHtcclxuICAgICAgICAvLyAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICAgICAgLy8gfSxcclxuICAgICAgfSxcclxuICAgICAgbWVzc2FnZXM6IHtcclxuICAgICAgICBwcm9tb3Rpb25zVGl0bGU6IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiAn6K+36L6T5YWl5rS75Yqo5qCH6aKYJyxcclxuICAgICAgICAgIHJhbmdlbGVuZ3RoOiAn5paH5a2X6ZW/5bqm6K+35o6n5Yi25ZyoM+WIsDE05LmL6Ze0J1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb3JpZ2luYWxQcmljZToge1xyXG4gICAgICAgICAgcmVxdWlyZWQ6ICfor7fovpPlhaXkuqflk4HmoIfku7cnLFxyXG4gICAgICAgICAgbnVtYmVyOiAn5Lu35qC85b+F6aG75Li65pWw5a2XJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZmxhc2hTYWxlUHJpY2U6IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiAn6K+36L6T5YWl5ou85Zui5Lu3JyxcclxuICAgICAgICAgIG51bWJlcjogJ+S7t+agvOW/hemhu+S4uuaVsOWtlydcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZsYXNoU2FsZVRvdGFsOiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogJ+ivt+i+k+WFpeaIkOWbouS6uuaVsCcsXHJcbiAgICAgICAgICBudW1iZXI6ICfkurrmlbDlv4XpobvkuLrmlbDlrZcnXHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBwcm9tb3Rpb25EZXNjcmlwdGlvbjoge1xyXG4gICAgICAgIC8vICAgcmVxdWlyZWQ6ICfor7fovpPlhaXmtLvliqjmj4/ov7AnXHJcbiAgICAgICAgLy8gfSxcclxuICAgICAgfSxcclxuICAgICAgbXVsdGlDaGVjazp0cnVlXHJcbiAgICB9LHRoaXMpXHJcbiAgICAvLyB0aGlzLnNldERhdGEoe1xyXG4gICAgLy8gICB2YWxpZGF0b3JJbnN0YW5jZVxyXG4gICAgLy8gfSlcclxuICAgIGNvbnNvbGUubG9nKCdoaGhoLCcsdmFsaWRhdG9ySW5zdGFuY2UpO1xyXG4gIH0sXHJcbiAgb25TaGFyZUFwcE1lc3NhZ2UoKSB7XHJcbiAgICBsZXQgZG9jY29kZTpzdHJpbmcgPSB0aGlzLmRhdGEuZG9jY29kZSB8fCAnJztcclxuICAgIC8vIGxldCB0aXRsZTpzdHJpbmcgPSB0aGlzLmRhdGEucHJvbW90aW9uc0RhdGEudGl0bGUgfHwgJyc7XHJcbiAgICBsZXQgaW1hZ2VVcmw6c3RyaW5nID0gdGhpcy5kYXRhLmNvdmVySW1hZ2VVcmwgfHwgJyc7XHJcbiAgICBsZXQgc2VsbGVyVW5DaGVja2VkTmFtZXM6c3RyaW5nID0gdGhpcy5kYXRhLnNlbGxlclVuQ2hlY2tlZE5hbWVzIHx8ICcnO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLy8gdGl0bGU6IHV0aWxzLmdldFNoYXJlVGl0bGUoKSxcclxuICAgICAgdGl0bGU6IGDor7fokKXplIDkurrlkZhbJHtzZWxsZXJVbkNoZWNrZWROYW1lc31d6aqM6K+B6Lqr5Lu9YCxcclxuICAgICAgaW1hZ2VVcmwsXHJcbiAgICAgIHBhdGg6IGBwYWdlcy9zZWxsZXJWZXJpZnkvc2VsbGVyVmVyaWZ5P2RvY2NvZGU9JHtkb2Njb2RlfWAsXHJcbiAgICB9XHJcbiAgfVxyXG59KVxyXG5leHBvcnQge31cclxuIl19
\ No newline at end of file
diff --git a/pages/groupBuyingCreate/groupBuyingCreate.ts b/pages/groupBuyingCreate/groupBuyingCreate.ts
index 9bb7020..7ac2fea 100644
--- a/pages/groupBuyingCreate/groupBuyingCreate.ts
+++ b/pages/groupBuyingCreate/groupBuyingCreate.ts
@@ -1,5 +1,6 @@
 // import * as dayjs from "dayjs";
 import MyValidator from "../../utils/myValidator";
+import {getSaveData, promotionsSaveHandler, promotionsSubmitHandler} from "../../modules/promotionsCreate";
 
 let validatorInstance:MyValidator;
 // const app = getApp<IAppOption>();
@@ -38,64 +39,65 @@
     }
   },
   async getSaveData() {
-    let doccode = this.data.doccode;
-    let [error, result] = await wx.$utils.to(
-      wx.$http.request({
-        url:`/shopping/panicBuying.do?m=getPanicBuyingDetail`,
-        data:{
-          doccode,
-          isEdit:true,
-          SellerOpenId:wx.globalData.OpenId
-        }
-      })
-    )
-    if (error){
-      console.log(error);
-      return;
-    }
-    console.log(result);
-    let data = result.list[0];
-    let formData = {
-      promotionsTitle: data.title,
-      originalPrice: data.originalPrice,
-      flashSalePrice: data.salesPrice,
-      flashSaleTotal: data.numberOfTeam,
-      promotionDescription: data.description,
-      startTime: data.effectiveStartDate,
-      endTime: data.effectiveEndDate,
-      coverImageList: (data.coverImageUrl&&this.getCoverImageList(data))||[],
-      // imagesList: (data.imagesUrl.length>0&&this.getImagesList(data))||[],
-      imagesList: data.imagesUrl,
-      coverImage: data.coverImage,
-      images: data.images,
-      freeId:data.freeId,
-    };
-    this.setData({
-      ...formData,
-      coverImageUrl:data.coverImageUrl,
-      // [`effectiveStartDate`]: data.effectiveStartDate,
-      // [`effectiveEndDate`]: data.effectiveEndDate,
-      // [`freeId`]: data.freeId,
-      // [`title`]: data.title,
-      // [`originalPrice`]: data.originalPrice,
-      // [`salesPrice`]: data.salesPrice,
-      // [`quantity`]: data.quantity,
-      // [`restrictBuyingQuantity`]: data.restrictBuyingQuantity,
-      // [`description`]: data.description,
-      sellerList:result.sellerList,
-      storeList:result.storeList,
-      status:data.panicBuyingStatus,
-      delivery:{
-        freeId:data.freeId,
-        freeName:data.freeName,
-        isRequiredAddress:data.isRequiredAddress,
-        transCosts:data.transCosts,
-      }
-    });
-    console.log('閰嶉�佹暟鎹�傘�傘��',this.data.delivery);
-    wx.setNavigationBarTitle({
-      title: data.title
-    })
+    await getSaveData(this)
+    // let doccode = this.data.doccode;
+    // let [error, result] = await wx.$utils.to(
+    //   wx.$http.request({
+    //     url:`/shopping/panicBuying.do?m=getPanicBuyingDetail`,
+    //     data:{
+    //       doccode,
+    //       isEdit:true,
+    //       SellerOpenId:wx.globalData.OpenId
+    //     }
+    //   })
+    // )
+    // if (error){
+    //   console.log(error);
+    //   return;
+    // }
+    // console.log(result);
+    // let data = result.list[0];
+    // let formData = {
+    //   promotionsTitle: data.title,
+    //   originalPrice: data.originalPrice,
+    //   flashSalePrice: data.salesPrice,
+    //   flashSaleTotal: data.numberOfTeam,
+    //   promotionDescription: data.description,
+    //   startTime: data.effectiveStartDate,
+    //   endTime: data.effectiveEndDate,
+    //   coverImageList: (data.coverImageUrl&&this.getCoverImageList(data))||[],
+    //   // imagesList: (data.imagesUrl.length>0&&this.getImagesList(data))||[],
+    //   imagesList: data.imagesUrl,
+    //   coverImage: data.coverImage,
+    //   images: data.images,
+    //   freeId:data.freeId,
+    // };
+    // this.setData({
+    //   ...formData,
+    //   coverImageUrl:data.coverImageUrl,
+    //   // [`effectiveStartDate`]: data.effectiveStartDate,
+    //   // [`effectiveEndDate`]: data.effectiveEndDate,
+    //   // [`freeId`]: data.freeId,
+    //   // [`title`]: data.title,
+    //   // [`originalPrice`]: data.originalPrice,
+    //   // [`salesPrice`]: data.salesPrice,
+    //   // [`quantity`]: data.quantity,
+    //   // [`restrictBuyingQuantity`]: data.restrictBuyingQuantity,
+    //   // [`description`]: data.description,
+    //   sellerList:result.sellerList,
+    //   storeList:result.storeList,
+    //   status:data.panicBuyingStatus,
+    //   delivery:{
+    //     freeId:data.freeId,
+    //     freeName:data.freeName,
+    //     isRequiredAddress:data.isRequiredAddress,
+    //     transCosts:data.transCosts,
+    //   }
+    // });
+    // console.log('閰嶉�佹暟鎹�傘�傘��',this.data.delivery);
+    // wx.setNavigationBarTitle({
+    //   title: data.title
+    // })
   },
 
   getCoverImageList(data:any){
@@ -182,195 +184,197 @@
     })
   },
 
-  async postFormData(data:object){
-    let [error, res] = await wx.$utils.to(
-      wx.$http.request({
-        url:'/shopping/panicBuying.do?m=saveDocCode',
-        data,
-        method:'POST'
-      })
-    )
-    if (error) {
-      console.log(error);
-      return false;
-    }
-    console.log(res);
-    if (res.state === 'success') {
-      wx.showToast({
-        title: '鎴愬姛',
-        duration: 2000
-      })
-      this.setData({
-        doccode:res.DocCode
-      })
-    }
-    if (res.state === 'failed'&&res.sellerCheckedBalance>0) {
-      this.setData({
-        sellerUnCheckedNames: res.sellerUnCheckedNames,
-        isShowDialog: true
-      })
-    }
-    return res.state === 'success';
-  },
+  // async postFormData(data:object){
+  //   let [error, res] = await wx.$utils.to(
+  //     wx.$http.request({
+  //       url:'/shopping/panicBuying.do?m=saveDocCode',
+  //       data,
+  //       method:'POST'
+  //     })
+  //   )
+  //   if (error) {
+  //     console.log(error);
+  //     return false;
+  //   }
+  //   console.log(res);
+  //   if (res.state === 'success') {
+  //     wx.showToast({
+  //       title: '鎴愬姛',
+  //       duration: 2000
+  //     })
+  //     this.setData({
+  //       doccode:res.DocCode
+  //     })
+  //   }
+  //   if (res.state === 'failed'&&res.sellerCheckedBalance>0) {
+  //     this.setData({
+  //       sellerUnCheckedNames: res.sellerUnCheckedNames,
+  //       isShowDialog: true
+  //     })
+  //   }
+  //   return res.state === 'success';
+  // },
   onSubmit:wx.$utils.debounce(function(this:any){
     this.submitHandler();
     return;
   }),
 
   async submitHandler(){
-    let timeQuantum = this.selectComponent('#time-quantum');
-    let sellerEdit = this.selectComponent('#seller-edit');
-    let storeEdit = this.selectComponent('#store-edit');
-    let fileUploader = this.selectComponent('#file-uploader');
-    let fileUploaderMultiple = this.selectComponent('#file-uploader-multiple');
-
-    let deliveryMethod = this.selectComponent('#delivery-method');
-    let checkTransCosts = true;
-    let transCosts = 0;
-    if (deliveryMethod.data.isRequiredAddress){
-      checkTransCosts = deliveryMethod.checkFields();
-      transCosts = Number(deliveryMethod.data.transCosts);
-    }
-
-
-    console.log('sellerEdit',);
-    console.log(timeQuantum);
-
-    let checkStartTime = timeQuantum.checkTime("startTime", "璇烽�夋嫨璁″垝寮�濮嬫椂闂�");
-    let checkEndTime = timeQuantum.checkTime("endTime", "璇烽�夋嫨璁″垝缁撴潫鏃堕棿");
-    let checkCoverImage = fileUploader.checkImages("coverImage", "璇蜂笂浼犱竴寮犲皝闈㈠浘");
-    // let checkImages = fileUploaderMultiple.checkImages("images", "璇疯嚦灏戜笂浼犱竴寮犲浘鐗�");
-    let checkAllData = validatorInstance.checkAllData();
-    // if (this.data.goodsImgList.length < 1) {
-    //   console.log('璇蜂笂浼犱骇鍝佸浘鐗�');
+    await promotionsSubmitHandler(this,validatorInstance);
+    return;
+    // let timeQuantum = this.selectComponent('#time-quantum');
+    // let sellerEdit = this.selectComponent('#seller-edit');
+    // let storeEdit = this.selectComponent('#store-edit');
+    // let fileUploader = this.selectComponent('#file-uploader');
+    // let fileUploaderMultiple = this.selectComponent('#file-uploader-multiple');
+    //
+    // let deliveryMethod = this.selectComponent('#delivery-method');
+    // let checkTransCosts = true;
+    // let transCosts = 0;
+    // if (deliveryMethod.data.isRequiredAddress){
+    //   checkTransCosts = deliveryMethod.checkFields();
+    //   transCosts = Number(deliveryMethod.data.transCosts);
     // }
-    let sellerList = sellerEdit.getSellerList();
-    if (sellerList.length<1) {
-      wx.showToast({
-        title: '璇烽�夋嫨钀ラ攢浜哄憳',
-        icon: 'none',
-        duration: 2000
-      })
-      return
-    }
-    let storeList = storeEdit.getSelectedStoreIdList();
-    console.log('寰呮彁浜ょ殑闂ㄥ簵id',storeList);
-    let checkDefaultSeller = sellerEdit.checkDefaultSeller();
-    if (!checkDefaultSeller) {
-      wx.showToast({
-        title: '璇烽�夋嫨榛樿钀ラ攢浜哄憳',
-        icon: 'none',
-        duration: 2000
-      })
-      return
-    }
-    console.log('checkDefaultSeller',checkDefaultSeller);
-
-    let checkArr = [checkTransCosts,checkStartTime,checkEndTime,checkCoverImage,checkAllData];
-    let data = {};
-    if (checkArr.every((item)=>{
-      return item
-    })){
-      console.log('....鎻愪氦鎴愬姛');
-      let coverImage = fileUploader.getCoverImageUnid();
-      let coverImageUrl = fileUploader.getImgList()[0].url||'';
-      this.setData({
-        coverImageUrl
-      })
-      let images = fileUploaderMultiple.getImagesUnid();
-      console.log(coverImage,images);
-      let formData: any = this.data;
-      data = {
-        docCode: formData.doccode, //娲诲姩鍗曞彿锛屾柊寤烘椿鍔ㄦ椂涓虹┖鍊硷紝缂栬緫鏃堕渶瑕乨occode鍊�
-        formId: formData.formId, //鍔熻兘鍙凤細绉掓潃 710802 锛� 鎶ュ悕閭�绾� 710803 锛屽洟璐� 710804
-        docStatus:100, //鍗曟嵁鐘舵��: 0 淇濆瓨锛堣捣鑽夛級 锛�100 鍙戝竷
-        coverImage,
-        images,
-        transCosts, //閫佽揣涓婇棬鏃� 閰嶉�佽垂
-        // ...this.data.formData,
-
-        effectiveStartDate: formData.startTime,
-        effectiveEndDate: formData.endTime,
-        freeId: formData.freeId,
-        title: formData.promotionsTitle,
-        originalPrice: Number(formData.originalPrice),
-        salesPrice: Number(formData.flashSalePrice),
-        numberOfTeam: Number(formData.flashSaleTotal),
-        description: formData.promotionDescription,
-        storeList,
-        sellerList,
-      }
-      console.log('寰呭彂甯冩暟鎹�',data);
-      if (!await this.postFormData(data)) return;
-      if (this.data.fromPage=='edit'){
-        wx.navigateBack();
-      } else{
-        wx.redirectTo({
-          url:'../promotionsManageList/promotionsManageList?tab=3'
-        })
-      }
-
-    } else {
-      wx.showToast({
-        title: '椤甸潰杩樻湁閿欒鏈鐞�',
-        icon: 'none',
-        duration: 2000
-      })
-      console.log('杩樻湁閿欒鏈鐞�');
-    }
+    //
+    // console.log(timeQuantum);
+    //
+    // let checkStartTime = timeQuantum.checkTime("startTime");
+    // let checkEndTime = timeQuantum.checkTime("endTime");
+    // let checkCoverImage = fileUploader.checkImages("coverImage", "璇蜂笂浼犱竴寮犲皝闈㈠浘");
+    // // let checkImages = fileUploaderMultiple.checkImages("images", "璇疯嚦灏戜笂浼犱竴寮犲浘鐗�");
+    // let checkAllData = validatorInstance.checkAllData();
+    // // if (this.data.goodsImgList.length < 1) {
+    // //   console.log('璇蜂笂浼犱骇鍝佸浘鐗�');
+    // // }
+    // let sellerList = sellerEdit.getSellerList();
+    // if (sellerList.length<1) {
+    //   wx.showToast({
+    //     title: '璇烽�夋嫨钀ラ攢浜哄憳',
+    //     icon: 'none',
+    //     duration: 2000
+    //   })
+    //   return
+    // }
+    // let storeList = storeEdit.getSelectedStoreIdList();
+    // console.log('寰呮彁浜ょ殑闂ㄥ簵id',storeList);
+    // let checkDefaultSeller = sellerEdit.checkDefaultSeller();
+    // if (!checkDefaultSeller) {
+    //   wx.showToast({
+    //     title: '璇烽�夋嫨榛樿钀ラ攢浜哄憳',
+    //     icon: 'none',
+    //     duration: 2000
+    //   })
+    //   return
+    // }
+    // console.log('checkDefaultSeller',checkDefaultSeller);
+    //
+    // let checkArr = [checkTransCosts,checkStartTime,checkEndTime,checkCoverImage,checkAllData];
+    // let data = {};
+    // if (checkArr.every((item)=>{
+    //   return item
+    // })){
+    //   console.log('....鎻愪氦鎴愬姛');
+    //   let coverImage = fileUploader.getCoverImageUnid();
+    //   let coverImageUrl = fileUploader.getImgList()[0].url||'';
+    //   this.setData({
+    //     coverImageUrl
+    //   })
+    //   let images = fileUploaderMultiple.getImagesUnid();
+    //   console.log(coverImage,images);
+    //   let formData: any = this.data;
+    //   data = {
+    //     docCode: formData.doccode, //娲诲姩鍗曞彿锛屾柊寤烘椿鍔ㄦ椂涓虹┖鍊硷紝缂栬緫鏃堕渶瑕乨occode鍊�
+    //     formId: formData.formId, //鍔熻兘鍙凤細绉掓潃 710802 锛� 鎶ュ悕閭�绾� 710803 锛屽洟璐� 710804
+    //     docStatus:100, //鍗曟嵁鐘舵��: 0 淇濆瓨锛堣捣鑽夛級 锛�100 鍙戝竷
+    //     coverImage,
+    //     images,
+    //     transCosts, //閫佽揣涓婇棬鏃� 閰嶉�佽垂
+    //     // ...this.data.formData,
+    //
+    //     effectiveStartDate: formData.startTime,
+    //     effectiveEndDate: formData.endTime,
+    //     freeId: formData.freeId,
+    //     title: formData.promotionsTitle,
+    //     originalPrice: Number(formData.originalPrice),
+    //     salesPrice: Number(formData.flashSalePrice),
+    //     numberOfTeam: Number(formData.flashSaleTotal),
+    //     description: formData.promotionDescription,
+    //     storeList,
+    //     sellerList,
+    //   }
+    //   console.log('寰呭彂甯冩暟鎹�',data);
+    //   if (!await this.postFormData(data)) return;
+    //   if (this.data.fromPage=='edit'){
+    //     wx.navigateBack();
+    //   } else{
+    //     wx.redirectTo({
+    //       url:'../promotionsManageList/promotionsManageList?tab=3'
+    //     })
+    //   }
+    //
+    // } else {
+    //   wx.showToast({
+    //     title: '椤甸潰杩樻湁閿欒鏈鐞�',
+    //     icon: 'none',
+    //     duration: 2000
+    //   })
+    //   console.log('杩樻湁閿欒鏈鐞�');
+    // }
   },
 
   onSave:wx.$utils.debounce(function(this:any){
-    let sellerEdit = this.selectComponent('#seller-edit');
-    let sellerList = sellerEdit.getSellerList();
-    let storeEdit = this.selectComponent('#store-edit');
-    let storeList = storeEdit.getSelectedStoreIdList();
-    console.log('寰呮彁浜ょ殑闂ㄥ簵id',storeList);
-    let fileUploader = this.selectComponent('#file-uploader');
-    let fileUploaderMultiple = this.selectComponent('#file-uploader-multiple');
-    console.log('....鎻愪氦鎴愬姛');
-    let coverImage = fileUploader.getCoverImageUnid();
-    let images = fileUploaderMultiple.getImagesUnid();
-    let deliveryMethod = this.selectComponent('#delivery-method');
-    let transCosts = 0;
-    if (deliveryMethod.data.isRequiredAddress){
-      transCosts = Number(deliveryMethod.data.transCosts);
-    }
-    console.log(coverImage,images);
-    let formData: any = this.data;
-    let data = {
-      docCode: formData.doccode, //娲诲姩鍗曞彿锛屾柊寤烘椿鍔ㄦ椂涓虹┖鍊硷紝缂栬緫鏃堕渶瑕乨occode鍊�
-      formId: formData.formId, //鍔熻兘鍙凤細绉掓潃 710802 锛� 鎶ュ悕閭�绾� 710803 锛屽洟璐� 710804
-      docStatus: 0, //鍗曟嵁鐘舵��: 0 淇濆瓨锛堣捣鑽夛級 锛�100 鍙戝竷
-      coverImage,
-      images,
-      transCosts, //閫佽揣涓婇棬鏃� 閰嶉�佽垂
-      // ...this.data.formData,
-
-      effectiveStartDate: formData.startTime,
-      effectiveEndDate: formData.endTime,
-      freeId: formData.freeId,
-      title: formData.promotionsTitle,
-      originalPrice: Number(formData.originalPrice)||0,
-      salesPrice: Number(formData.flashSalePrice)||0,
-      numberOfTeam: Number(formData.flashSaleTotal)||0,
-      description: formData.promotionDescription,
-      storeList,
-      sellerList,
-    }
+    promotionsSaveHandler(this);
+    return;
+    // let sellerEdit = this.selectComponent('#seller-edit');
+    // let sellerList = sellerEdit.getSellerList();
+    // let storeEdit = this.selectComponent('#store-edit');
+    // let storeList = storeEdit.getSelectedStoreIdList();
+    // console.log('寰呮彁浜ょ殑闂ㄥ簵id',storeList);
+    // let fileUploader = this.selectComponent('#file-uploader');
+    // let fileUploaderMultiple = this.selectComponent('#file-uploader-multiple');
+    // console.log('....鎻愪氦鎴愬姛');
+    // let coverImage = fileUploader.getCoverImageUnid();
+    // let images = fileUploaderMultiple.getImagesUnid();
+    // let deliveryMethod = this.selectComponent('#delivery-method');
+    // let transCosts = 0;
+    // if (deliveryMethod.data.isRequiredAddress){
+    //   transCosts = Number(deliveryMethod.data.transCosts);
+    // }
+    // console.log(coverImage,images);
+    // let formData: any = this.data;
     // let data = {
-    //   docCode:this.data.doccode, //娲诲姩鍗曞彿锛屾柊寤烘椿鍔ㄦ椂涓虹┖鍊硷紝缂栬緫鏃堕渶瑕乨occode鍊�
-    //   formId:this.data.formId, //鍔熻兘鍙凤細绉掓潃 710802 锛� 鎶ュ悕閭�绾� 710803 锛屽洟璐� 710804
-    //   docStatus:0, //鍗曟嵁鐘舵��: 0 淇濆瓨锛堣捣鑽夛級 锛�100 鍙戝竷
+    //   docCode: formData.doccode, //娲诲姩鍗曞彿锛屾柊寤烘椿鍔ㄦ椂涓虹┖鍊硷紝缂栬緫鏃堕渶瑕乨occode鍊�
+    //   formId: formData.formId, //鍔熻兘鍙凤細绉掓潃 710802 锛� 鎶ュ悕閭�绾� 710803 锛屽洟璐� 710804
+    //   docStatus: 0, //鍗曟嵁鐘舵��: 0 淇濆瓨锛堣捣鑽夛級 锛�100 鍙戝竷
     //   coverImage,
     //   images,
     //   transCosts, //閫佽揣涓婇棬鏃� 閰嶉�佽垂
-    //   ...this.data.formData,
+    //   // ...this.data.formData,
+    //
+    //   effectiveStartDate: formData.startTime,
+    //   effectiveEndDate: formData.endTime,
+    //   freeId: formData.freeId,
+    //   title: formData.promotionsTitle,
+    //   originalPrice: Number(formData.originalPrice)||0,
+    //   salesPrice: Number(formData.flashSalePrice)||0,
+    //   numberOfTeam: Number(formData.flashSaleTotal)||0,
+    //   description: formData.promotionDescription,
+    //   storeList,
     //   sellerList,
     // }
-    console.log('寰呬繚瀛樻暟鎹�',data);
-    this.postFormData(data);
-    return;
+    // // let data = {
+    // //   docCode:this.data.doccode, //娲诲姩鍗曞彿锛屾柊寤烘椿鍔ㄦ椂涓虹┖鍊硷紝缂栬緫鏃堕渶瑕乨occode鍊�
+    // //   formId:this.data.formId, //鍔熻兘鍙凤細绉掓潃 710802 锛� 鎶ュ悕閭�绾� 710803 锛屽洟璐� 710804
+    // //   docStatus:0, //鍗曟嵁鐘舵��: 0 淇濆瓨锛堣捣鑽夛級 锛�100 鍙戝竷
+    // //   coverImage,
+    // //   images,
+    // //   transCosts, //閫佽揣涓婇棬鏃� 閰嶉�佽垂
+    // //   ...this.data.formData,
+    // //   sellerList,
+    // // }
+    // console.log('寰呬繚瀛樻暟鎹�',data);
+    // this.postFormData(data);
+    // return;
     }),
   // onInputStartDate() {},
   // onInputEndDate() {},
diff --git a/pages/groupBuyingCreate/groupBuyingCreate.wxml b/pages/groupBuyingCreate/groupBuyingCreate.wxml
index 9143a1e..119aa78 100644
--- a/pages/groupBuyingCreate/groupBuyingCreate.wxml
+++ b/pages/groupBuyingCreate/groupBuyingCreate.wxml
@@ -1,6 +1,14 @@
 <view class="container has-footer">
   <van-cell-group class="my-cell-group">
+    <van-cell class="my-cell required" border="{{false}}" title="浜у搧鍥剧墖"></van-cell>
+    <my-file-uploader id="file-uploader" img-list="{{coverImageList}}" url="{{fileUploadUrl+'&isCoverImage=true'}}" file-delete-url="/shopping/panicBuying.do?m=deleteAttachment"></my-file-uploader>
+
+  </van-cell-group>
+
+  <van-cell-group class="my-cell-group">
     <van-field
+        required
+        id="promotionsTitle"
         class="my-cell"
         value="{{ promotionsTitle }}"
         name="promotionsTitle"
@@ -10,14 +18,11 @@
         error-message="{{promotionsTitleError}}"
     />
   </van-cell-group>
-  <van-cell-group class="my-cell-group">
-    <van-cell class="my-cell" border="{{false}}" title="浜у搧鍥剧墖"></van-cell>
-    <my-file-uploader id="file-uploader" img-list="{{coverImageList}}" url="{{fileUploadUrl+'&isCoverImage=true'}}" file-delete-url="/shopping/panicBuying.do?m=deleteAttachment"></my-file-uploader>
-
-  </van-cell-group>
 
   <van-cell-group class="my-cell-group">
     <van-field
+        required
+        id="originalPrice"
         class="my-cell"
         value="{{ originalPrice }}"
         name="originalPrice"
@@ -32,6 +37,8 @@
       </view>
     </van-field>
     <van-field
+        required
+        id="flashSalePrice"
         class="my-cell"
         value="{{ flashSalePrice }}"
         name="flashSalePrice"
@@ -49,6 +56,8 @@
     <my-time-quantum id="time-quantum" start-time="{{startTime}}" end-time="{{endTime}}" bind:selectedStartTime="selectedStartTime" bind:selectedEndTime="selectedEndTime"></my-time-quantum>
 
     <van-field
+        required
+        id="flashSaleTotal"
         border="{{false}}"
         class="my-cell"
         value="{{ flashSaleTotal }}"
@@ -75,7 +84,7 @@
   <my-store-edit id="store-edit" store-list="{{storeList}}" from="{{fromPage}}"></my-store-edit>
   <my-seller-edit id="seller-edit" seller-list="{{sellerList}}" from="{{fromPage}}"></my-seller-edit>
   <van-cell-group class="my-cell-group">
-    <van-cell border="{{false}}" title="璇疯緭鍏ユ椿鍔ㄦ弿杩拌鍒�"></van-cell>
+    <van-cell border="{{false}}" title="璇疯緭鍏ユ椿鍔ㄦ弿杩拌鍒�(閫夊~)"></van-cell>
     <van-field
         cursor-spacing="250"
         value="{{ promotionDescription }}"
diff --git a/pages/index/index.js b/pages/index/index.js
index ff735e5..df960bb 100644
--- a/pages/index/index.js
+++ b/pages/index/index.js
@@ -188,6 +188,9 @@
             }); }
         });
     },
+    refreshAuthorizeInfo: function () {
+        wx.$utils.setLoginData(this);
+    },
     onShareAppMessage: function () {
         return {
             title: "",
@@ -196,4 +199,4 @@
         };
     }
 });
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUksQ0FBQztJQUNILElBQUksRUFBRTtRQUNKLFFBQVEsRUFBRSxFQUFFO1FBQ1osV0FBVyxFQUFDLElBQUk7UUFDaEIsV0FBVyxFQUFFLEtBQUs7UUFDbEIsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsOEJBQThCLENBQUM7UUFDbkQsY0FBYyxFQUFDLEVBQUU7S0FDbEI7SUFDSyxNQUFNLFlBQUMsT0FBTzs7Ozs7Z0JBQ2xCLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBQztvQkFDeEIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEdBQUc7d0JBQzVCLEtBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQzt3QkFDckIsS0FBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO3dCQUNsQixLQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztvQkFDNUIsQ0FBQyxDQUFBO2lCQUNGO3FCQUFLO29CQUNKLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ3hCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDckIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUNsQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztpQkFDM0I7Z0JBQ0csU0FBUyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUE7Z0JBQzNELE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDO29CQUNYLFNBQVMsV0FBQTtpQkFDVixDQUFDLENBQUE7Z0JBQ0YsVUFBVSxDQUFDO29CQUNULElBQUksT0FBTyxDQUFD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QyxNQUFNLEVBQUM7d0JBQ1osRUFBRSxDQUFDLFVBQVUsQ0FBQzs0QkFDWixHQUFHLEVBQUUscUNBQW1DLEdBQUcsQ0FBQyxNQUFRO3lCQUNyRCxDQUFDLENBQUE7cUJBQ0g7OztpQkFDRjtTQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDRCxpQkFBaUI7UUFDZixPQUFPO1lBRUwsS0FBSyxFQUFFLEVBQUU7WUFDVCxRQUFRLEVBQUMsRUFBRTtZQUNYLElBQUksRUFBRSxvQkFBb0I7U0FDM0IsQ0FBQTtJQUNILENBQUM7Q0FDRixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbmRleC50c1xuLy8g6I635Y+W5bqU55So5a6e5L6LXG4vLyBpbXBvcnQgYXBwTW9kdWxlIGZyb20gJy4uLy4uL21vZHVsZXMvYXBwJztcblBhZ2Uoe1xuICBkYXRhOiB7XG4gICAgdXNlckluZm86IHt9LFxuICAgIGlzRmlyc3RPcGVuOnRydWUsXG4gICAgaGFzVXNlckluZm86IGZhbHNlLFxuICAgIGNhbklVc2U6IHd4LmNhbklVc2UoJ2J1dHRvbi5vcGVuLXR5cGUuZ2V0VXNlckluZm8nKSxcbiAgICBwcm9tb3Rpb25zTGlzdDpbXVxuICB9LFxuICBhc3luYyBvbkxvYWQob3B0aW9ucykge1xuICAgIGlmICghd3guZ2xvYmFsRGF0YS5PcGVuSWQpe1xuICAgICAgd3guZ2xvYmFsRGF0YS5pbmRleENhbGxiYWNrID0gKCk9PntcbiAgICAgICAgdGhpcy5zZXRHbG9iYWxEYXRhKCk7XG4gICAgICAgIHRoaXMuZ2V0QmFsYW5jZSgpO1xuICAgICAgICB0aGlzLmdldFBhbmljQnV5aW5nTGlzdCgpO1xuICAgICAgfVxuICAgIH0gZWxzZXtcbiAgICAgIGNvbnNvbGUubG9nKCfkuI3mmK/liJ3mrKHmiZPlvIDpppbpobUnKTtcbiAgICAgIHRoaXMuc2V0R2xvYmFsRGF0YSgpO1xuICAgICAgdGhpcy5nZXRCYWxhbmNlKCk7XG4gICAgICB0aGlzLmdldFBhbmljQnV5aW5nTGlzdCgpO1xuICAgIH1cbiAgICBsZXQgbWluSGVpZ2h0ID0gd3guZ2xvYmFsRGF0YS5zeXN0ZW1JbmZvLndpbmRvd0hlaWdodCAtIDMyNVxuICAgIGNvbnNvbGUubG9nKCdtaW5IZWlnaHQnLG1pbkhlaWdodCk7XG4gICAgdGhpcy5zZXREYXRhKHtcbiAgICAgIG1pbkhlaWdodFxuICAgIH0pXG4gICAgc2V0VGltZW91dCgoKT0+e1xuICAgICAgaWYgKG9wdGlvbnMub3Blbikge1xuICAgICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICAgIGlzU2hvd0RpYWxvZzp0cnVlXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSwxMDAwKVxuICB9LFxuICBzZXRHbG9iYWxEYXRhKCl7XG4gICAgd3guJHV0aWxzLnNldFNob3BOYW1lKHRoaXMpO1xuICAgIHd4LiR1dGlscy5zZXRMb2dpbkRhdGEodGhpcyk7XG4gICAgLy8gbGV0IG1pbkhlaWdodCA9IHd4Lmdsb2JhbERhdGEuc3lzdGVtSW5mby53aW5kb3dIZWlnaHQgLSAzNjVcbiAgICAvLyBjb25zb2xlLmxvZygnbWluSGVpZ2h0JyxtaW5IZWlnaHQpO1xuICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICBhcHBWZXJzaW9uOiB3eC5nbG9iYWxEYXRhLm1pbmlQcm9ncmFtSW5mby52ZXJzaW9uLFxuICAgICAgLy8gbWluSGVpZ2h0XG4gICAgfSlcbiAgICAvLyBsZXQgbG9naW5EYXRhID0gd3guZ2xvYmFsRGF0YS5sb2dpbkRhdGE7XG4gICAgLy8gbGV0IHNldHRpbmdzID0gd3guZ2xvYmFsRGF0YS5zZXR0aW5ncztcbiAgICAvLyBjb25zb2xlLmxvZygnPDw8PDw8PDw86I635Y+WbG9naW5EYXRhJyxsb2dpbkRhdGEpO1xuICAgIC8vIHRoaXMuc2V0RGF0YSh7XG4gICAgLy8gICBsb2dpbkRhdGEsXG4gICAgLy8gfSlcbiAgICAvLyB3eC5zZXROYXZpZ2F0aW9uQmFyVGl0bGUoe1xuICAgIC8vICAgdGl0bGU6c2V0dGluZ3MubmFtZVxuICAgIC8vIH0pXG4gIH0sXG4gIGFzeW5jIG9uU2hvdygpIHtcbiAgICBsZXQgaXNGaXJzdE9wZW4gPSB0aGlzLmRhdGEuaXNGaXJzdE9wZW47XG4gICAgaWYgKCFpc0ZpcnN0T3Blbil7XG4gICAgICBjb25zb2xlLmxvZygn5LiN5piv56ys5LiA5qyh5omT5byAJyk7XG4gICAgICB0aGlzLmdldEJhbGFuY2UoKTtcbiAgICAgIHRoaXMuZ2V0UGFuaWNCdXlpbmdMaXN0KCk7XG4gICAgICB3eC4kdXRpbHMuc2V0TG9naW5EYXRhKHRoaXMpO1xuICAgIH1cbiAgfSxcbiAgb25IaWRlKCkge1xuICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICBpc0ZpcnN0T3BlbjpmYWxzZVxuICAgIH0pXG4gIH0sXG4gIGFzeW5jIGdldEJhbGFuY2UoKXtcbiAgICBsZXQgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgd3guJHV0aWxzLnRvKFxuICAgICAgd3guJGh0dHAucmVxdWVzdCh7XG4gICAgICAgIHVybDpgL3Nob3BwaW5nL3BhbmljQnV5aW5nQmFsYW5jZS5kbz9tPWdldEJhbGFuY2VgLFxuICAgICAgICBpc1Nob3dMb2FkaW5nOmZhbHNlXG4gICAgICB9KVxuICAgIClcbiAgICBpZiAoZXJyb3Ipe1xuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICAuLi5yZXN1bHRcbiAgICB9KVxuICB9LFxuICBhc3luYyBnZXRQYW5pY0J1eWluZ0xpc3QoKXtcbiAgICBsZXQgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgd3guJHV0aWxzLnRvKFxuICAgICAgd3guJGh0dHAucmVxdWVzdCh7XG4gICAgICAgIHVybDpgL3Nob3BwaW5nL3BhbmljQnV5aW5nLmRvP209Z2V0UGFuaWNCdXlpbmdMaXN0Rm9ySG9tZVBhZ2VgLFxuICAgICAgfSlcbiAgICApXG4gICAgaWYgKGVycm9yKXtcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc29sZS5sb2cocmVzdWx0KTtcbiAgICB0aGlzLnNldERhdGEoe1xuICAgICAgcHJvbW90aW9uc0xpc3Q6cmVzdWx0Lmxpc3QsXG4gICAgfSlcbiAgfSxcbiAgYXV0aG9yaXplQ29tcGxldGUoKXtcbiAgICBjb25zb2xlLmxvZyg5OTkpO1xuICB9LFxuICBzaG93UHJvbW90aW9uTGF5ZXIoKXtcbiAgICAvLyBjb25zb2xlLmxvZygxMTExMTExMTExMTEpO1xuICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICBpc1Nob3dEaWFsb2c6dHJ1ZVxuICAgIH0pXG4gIH0sXG4gIGNsb3NlRGlhbG9nKCl7XG4gICAgdGhpcy5zZXREYXRhKHtcbiAgICAgIGlzU2hvd0RpYWxvZzpmYWxzZVxuICAgIH0pXG4gIH0sXG4gIHNjYW5RckNvZGUoKXtcbiAgICB3eC5zY2FuQ29kZSh7XG4gICAgICBzdWNjZXNzOiBhc3luYyAocmVzKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKHJlcylcbiAgICAgICAgaWYocmVzLnJlc3VsdCl7XG4gICAgICAgICAgd3gubmF2aWdhdGVUbyh7XG4gICAgICAgICAgICB1cmw6IGAvcGFnZXMvc2NhbkNvZGUvc2NhbkNvZGU/cXJjb2RlPSR7cmVzLnJlc3VsdH1gLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICB9LFxuICBvblNoYXJlQXBwTWVzc2FnZSgpe1xuICAgIHJldHVybiB7XG4gICAgICAvLyB0aXRsZTogdXRpbHMuZ2V0U2hhcmVUaXRsZSgpLFxuICAgICAgdGl0bGU6IGBgLFxuICAgICAgaW1hZ2VVcmw6JycsXG4gICAgICBwYXRoOiBgL3BhZ2VzL2luZGV4L2luZGV4YCxcbiAgICB9XG4gIH1cbn0pXG4iXX0=
\ No newline at end of file
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUksQ0FBQztJQUNILElBQUksRUFBRTtRQUNKLFFBQVEsRUFBRSxFQUFFO1FBQ1osV0FBVyxFQUFDLElBQUk7UUFDaEIsV0FBVyxFQUFFLEtBQUs7UUFDbEIsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsOEJBQThCLENBQUM7UUFDbkQsY0FBYyxFQUFDLEVBQUU7S0FDbEI7SUFDSyxNQUFNLFlBQUMsT0FBTzs7Ozs7Z0JBQ2xCLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBQztvQkFDeEIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEdBQUc7d0JBQzVCLEtBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQzt3QkFDckIsS0FBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO3dCQUNsQixLQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztvQkFDNUIsQ0FBQyxDQUFBO2lCQUNGO3FCQUFLO29CQUNKLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ3hCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDckIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUNsQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztpQkFDM0I7Z0JBQ0csU0FBUyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUE7Z0JBQzNELE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDO29CQUNYLFNBQVMsV0FBQTtpQkFDVixDQUFDLENBQUE7Z0JBQ0YsVUFBVSxDQUFDO29CQUNULElBQUksT0FBTyxDQUFD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QyxNQUFNLEVBQUM7d0JBQ1osRUFBRSxDQUFDLFVBQVUsQ0FBQzs0QkFDWixHQUFHLEVBQUUscUNBQW1DLEdBQUcsQ0FBQyxNQUFRO3lCQUNyRCxDQUFDLENBQUE7cUJBQ0g7OztpQkFDRjtTQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDRCxvQkFBb0I7UUFDbEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUNELGlCQUFpQjtRQUNmLE9BQU87WUFFTCxLQUFLLEVBQUUsRUFBRTtZQUNULFFBQVEsRUFBQyxFQUFFO1lBQ1gsSUFBSSxFQUFFLG9CQUFvQjtTQUMzQixDQUFBO0lBQ0gsQ0FBQztDQUNGLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIGluZGV4LnRzXG4vLyDojrflj5blupTnlKjlrp7kvotcbi8vIGltcG9ydCBhcHBNb2R1bGUgZnJvbSAnLi4vLi4vbW9kdWxlcy9hcHAnO1xuUGFnZSh7XG4gIGRhdGE6IHtcbiAgICB1c2VySW5mbzoge30sXG4gICAgaXNGaXJzdE9wZW46dHJ1ZSxcbiAgICBoYXNVc2VySW5mbzogZmFsc2UsXG4gICAgY2FuSVVzZTogd3guY2FuSVVzZSgnYnV0dG9uLm9wZW4tdHlwZS5nZXRVc2VySW5mbycpLFxuICAgIHByb21vdGlvbnNMaXN0OltdXG4gIH0sXG4gIGFzeW5jIG9uTG9hZChvcHRpb25zKSB7XG4gICAgaWYgKCF3eC5nbG9iYWxEYXRhLk9wZW5JZCl7XG4gICAgICB3eC5nbG9iYWxEYXRhLmluZGV4Q2FsbGJhY2sgPSAoKT0+e1xuICAgICAgICB0aGlzLnNldEdsb2JhbERhdGEoKTtcbiAgICAgICAgdGhpcy5nZXRCYWxhbmNlKCk7XG4gICAgICAgIHRoaXMuZ2V0UGFuaWNCdXlpbmdMaXN0KCk7XG4gICAgICB9XG4gICAgfSBlbHNle1xuICAgICAgY29uc29sZS5sb2coJ+S4jeaYr+WIneasoeaJk+W8gOmmlumhtScpO1xuICAgICAgdGhpcy5zZXRHbG9iYWxEYXRhKCk7XG4gICAgICB0aGlzLmdldEJhbGFuY2UoKTtcbiAgICAgIHRoaXMuZ2V0UGFuaWNCdXlpbmdMaXN0KCk7XG4gICAgfVxuICAgIGxldCBtaW5IZWlnaHQgPSB3eC5nbG9iYWxEYXRhLnN5c3RlbUluZm8ud2luZG93SGVpZ2h0IC0gMzI1XG4gICAgY29uc29sZS5sb2coJ21pbkhlaWdodCcsbWluSGVpZ2h0KTtcbiAgICB0aGlzLnNldERhdGEoe1xuICAgICAgbWluSGVpZ2h0XG4gICAgfSlcbiAgICBzZXRUaW1lb3V0KCgpPT57XG4gICAgICBpZiAob3B0aW9ucy5vcGVuKSB7XG4gICAgICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICAgICAgaXNTaG93RGlhbG9nOnRydWVcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9LDEwMDApXG4gIH0sXG4gIHNldEdsb2JhbERhdGEoKXtcbiAgICB3eC4kdXRpbHMuc2V0U2hvcE5hbWUodGhpcyk7XG4gICAgd3guJHV0aWxzLnNldExvZ2luRGF0YSh0aGlzKTtcbiAgICAvLyBsZXQgbWluSGVpZ2h0ID0gd3guZ2xvYmFsRGF0YS5zeXN0ZW1JbmZvLndpbmRvd0hlaWdodCAtIDM2NVxuICAgIC8vIGNvbnNvbGUubG9nKCdtaW5IZWlnaHQnLG1pbkhlaWdodCk7XG4gICAgdGhpcy5zZXREYXRhKHtcbiAgICAgIGFwcFZlcnNpb246IHd4Lmdsb2JhbERhdGEubWluaVByb2dyYW1JbmZvLnZlcnNpb24sXG4gICAgICAvLyBtaW5IZWlnaHRcbiAgICB9KVxuICAgIC8vIGxldCBsb2dpbkRhdGEgPSB3eC5nbG9iYWxEYXRhLmxvZ2luRGF0YTtcbiAgICAvLyBsZXQgc2V0dGluZ3MgPSB3eC5nbG9iYWxEYXRhLnNldHRpbmdzO1xuICAgIC8vIGNvbnNvbGUubG9nKCc8PDw8PDw8PDzojrflj5Zsb2dpbkRhdGEnLGxvZ2luRGF0YSk7XG4gICAgLy8gdGhpcy5zZXREYXRhKHtcbiAgICAvLyAgIGxvZ2luRGF0YSxcbiAgICAvLyB9KVxuICAgIC8vIHd4LnNldE5hdmlnYXRpb25CYXJUaXRsZSh7XG4gICAgLy8gICB0aXRsZTpzZXR0aW5ncy5uYW1lXG4gICAgLy8gfSlcbiAgfSxcbiAgYXN5bmMgb25TaG93KCkge1xuICAgIGxldCBpc0ZpcnN0T3BlbiA9IHRoaXMuZGF0YS5pc0ZpcnN0T3BlbjtcbiAgICBpZiAoIWlzRmlyc3RPcGVuKXtcbiAgICAgIGNvbnNvbGUubG9nKCfkuI3mmK/nrKzkuIDmrKHmiZPlvIAnKTtcbiAgICAgIHRoaXMuZ2V0QmFsYW5jZSgpO1xuICAgICAgdGhpcy5nZXRQYW5pY0J1eWluZ0xpc3QoKTtcbiAgICAgIHd4LiR1dGlscy5zZXRMb2dpbkRhdGEodGhpcyk7XG4gICAgfVxuICB9LFxuICBvbkhpZGUoKSB7XG4gICAgdGhpcy5zZXREYXRhKHtcbiAgICAgIGlzRmlyc3RPcGVuOmZhbHNlXG4gICAgfSlcbiAgfSxcbiAgYXN5bmMgZ2V0QmFsYW5jZSgpe1xuICAgIGxldCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCB3eC4kdXRpbHMudG8oXG4gICAgICB3eC4kaHR0cC5yZXF1ZXN0KHtcbiAgICAgICAgdXJsOmAvc2hvcHBpbmcvcGFuaWNCdXlpbmdCYWxhbmNlLmRvP209Z2V0QmFsYW5jZWAsXG4gICAgICAgIGlzU2hvd0xvYWRpbmc6ZmFsc2VcbiAgICAgIH0pXG4gICAgKVxuICAgIGlmIChlcnJvcil7XG4gICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gICAgdGhpcy5zZXREYXRhKHtcbiAgICAgIC4uLnJlc3VsdFxuICAgIH0pXG4gIH0sXG4gIGFzeW5jIGdldFBhbmljQnV5aW5nTGlzdCgpe1xuICAgIGxldCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCB3eC4kdXRpbHMudG8oXG4gICAgICB3eC4kaHR0cC5yZXF1ZXN0KHtcbiAgICAgICAgdXJsOmAvc2hvcHBpbmcvcGFuaWNCdXlpbmcuZG8/bT1nZXRQYW5pY0J1eWluZ0xpc3RGb3JIb21lUGFnZWAsXG4gICAgICB9KVxuICAgIClcbiAgICBpZiAoZXJyb3Ipe1xuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICBwcm9tb3Rpb25zTGlzdDpyZXN1bHQubGlzdCxcbiAgICB9KVxuICB9LFxuICBhdXRob3JpemVDb21wbGV0ZSgpe1xuICAgIGNvbnNvbGUubG9nKDk5OSk7XG4gIH0sXG4gIHNob3dQcm9tb3Rpb25MYXllcigpe1xuICAgIC8vIGNvbnNvbGUubG9nKDExMTExMTExMTExMSk7XG4gICAgdGhpcy5zZXREYXRhKHtcbiAgICAgIGlzU2hvd0RpYWxvZzp0cnVlXG4gICAgfSlcbiAgfSxcbiAgY2xvc2VEaWFsb2coKXtcbiAgICB0aGlzLnNldERhdGEoe1xuICAgICAgaXNTaG93RGlhbG9nOmZhbHNlXG4gICAgfSlcbiAgfSxcbiAgc2NhblFyQ29kZSgpe1xuICAgIHd4LnNjYW5Db2RlKHtcbiAgICAgIHN1Y2Nlc3M6IGFzeW5jIChyZXMpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2cocmVzKVxuICAgICAgICBpZihyZXMucmVzdWx0KXtcbiAgICAgICAgICB3eC5uYXZpZ2F0ZVRvKHtcbiAgICAgICAgICAgIHVybDogYC9wYWdlcy9zY2FuQ29kZS9zY2FuQ29kZT9xcmNvZGU9JHtyZXMucmVzdWx0fWAsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIH0sXG4gIHJlZnJlc2hBdXRob3JpemVJbmZvKCl7XG4gICAgd3guJHV0aWxzLnNldExvZ2luRGF0YSh0aGlzKTtcbiAgfSxcbiAgb25TaGFyZUFwcE1lc3NhZ2UoKXtcbiAgICByZXR1cm4ge1xuICAgICAgLy8gdGl0bGU6IHV0aWxzLmdldFNoYXJlVGl0bGUoKSxcbiAgICAgIHRpdGxlOiBgYCxcbiAgICAgIGltYWdlVXJsOicnLFxuICAgICAgcGF0aDogYC9wYWdlcy9pbmRleC9pbmRleGAsXG4gICAgfVxuICB9XG59KVxuIl19
\ No newline at end of file
diff --git a/pages/index/index.ts b/pages/index/index.ts
index 4b9abf0..6b5ee25 100644
--- a/pages/index/index.ts
+++ b/pages/index/index.ts
@@ -125,6 +125,9 @@
       }
     })
   },
+  refreshAuthorizeInfo(){
+    wx.$utils.setLoginData(this);
+  },
   onShareAppMessage(){
     return {
       // title: utils.getShareTitle(),
diff --git a/pages/index/index.wxml b/pages/index/index.wxml
index 960400a..e8f383a 100644
--- a/pages/index/index.wxml
+++ b/pages/index/index.wxml
@@ -10,7 +10,13 @@
           </view>
         </van-col>
         <van-col span="7" class="line-height-20">
-          <view class="">{{loginData.nickName||'鐢ㄦ埛鍚�'}}</view>
+          <view class="flex-row">
+            <view>{{loginData.nickName||'鐢ㄦ埛鍚�'}}</view>
+            <my-authorize bind:authorize="refreshAuthorizeInfo" is-refresh-authorize-info="{{true}}">
+              <van-icon name="replay" class="theme-icon padding-mini" />
+            </my-authorize>
+
+          </view>
           <view class="margin-top-5" wx:if="{{loginData.isExpired}}">
             <van-tag round plain size="medium" type="primary" class="clear-van-tag" color="#ff751c">鏅�氱敤鎴�</van-tag>
 <!--            <my-check-register url="../verificationIntroduction/verificationIntroduction">-->
diff --git a/pages/liveRoomCreate/dateSetting/dateSetting.js b/pages/liveRoomCreate/dateSetting/dateSetting.js
index 92f8bb5..5f0963c 100644
--- a/pages/liveRoomCreate/dateSetting/dateSetting.js
+++ b/pages/liveRoomCreate/dateSetting/dateSetting.js
@@ -46,7 +46,6 @@
     }
 };
 Object.defineProperty(exports, "__esModule", { value: true });
-var dayjs = require("dayjs");
 Page({
     data: {
         isShowStartDatePopup: false,
@@ -142,13 +141,10 @@
         });
     },
     onShow: function () { },
-    formatTime: function (time) {
-        return dayjs(time).format('YYYY-MM-DD HH:mm');
-    },
     handleDateAndTime: function () {
         var waitHandle = this.data;
-        var startTime = waitHandle.startTime || this.formatTime(new Date().getTime() + 1000 * 60 * 60);
-        var endTime = waitHandle.endTime || this.formatTime(new Date().getTime() + 1000 * 60 * 240);
+        var startTime = waitHandle.startTime || wx.$utils.formatTime(new Date().getTime() + 1000 * 60 * 60);
+        var endTime = waitHandle.endTime || wx.$utils.formatTime(new Date().getTime() + 1000 * 60 * 240);
         this.setData({
             startTime: startTime,
             endTime: endTime,
@@ -168,7 +164,7 @@
     },
     onEnterStartDate: function (event) {
         var detail = event.detail;
-        var dateTime = this.formatTime(event.detail);
+        var dateTime = wx.$utils.formatTime(event.detail);
         console.log("閫夋嫨寮�鎾椂闂�", dateTime, detail);
         this.setData({
             startDate: detail,
@@ -190,7 +186,7 @@
         });
     },
     onEnterEndDate: function (event) {
-        var date = this.formatTime(event.detail);
+        var date = wx.$utils.formatTime(event.detail);
         console.log("閫夋嫨涓嬫挱鏃堕棿", date, event.detail);
         this.setData({
             endTime: date,
@@ -247,4 +243,4 @@
         return true;
     },
 });
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZVNldHRpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkYXRlU2V0dGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2QkFBK0I7QUFFL0IsSUFBSSxDQUFDO0lBSUgsSUFBSSxFQUFFO1FBQ0osb0JBQW9CLEVBQUMsS0FBSztRQUMxQixrQkFBa0IsRUFBQyxLQUFLO1FBQ3hCLFlBQVksRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRTtRQUNuRCxZQUFZLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRztRQUM5RCxTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUU7UUFDaEQsU0FBUyxFQUFFLEVBQUU7UUFDYixnQkFBZ0IsRUFBRSxFQUFTO1FBQzNCLFVBQVUsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRTtRQUNqRCxVQUFVLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRztRQUM1RCxPQUFPLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEdBQUc7UUFDL0MsT0FBTyxFQUFFLEVBQUU7UUFDWCxjQUFjLEVBQUUsRUFBUztRQUN6QixTQUFTLFlBQUMsSUFBVyxFQUFFLEtBQVk7WUFFakMsSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFO2dCQUNuQixPQUFVLEtBQUss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O1NBQ0Y7UUFDRCxJQUFJLElBQUksS0FBRyxTQUFTLEVBQUM7WUFDbkIsSUFBSSxTQUFTLElBQUUsT0FBTyxJQUFFLENBQUMsT0FBTyxHQUFHLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDakQsSUFBSSxDQUFDLE9BQU87b0JBQ1YsR0FBQyxjQUFjLElBQUcsYUFBYTt3QkFDL0IsQ0FBQztnQkFDSCxPQUFPLEtBQUssQ0FBQzthQUNkO1NBQ0Y7UUFDRCxJQUFJLFNBQVMsSUFBRSxPQUFPLElBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsR0FBQyxJQUFJLEdBQUMsRUFBRSxHQUFDLEVBQUUsQ0FBQyxFQUFDO1lBQ2pFLElBQUksQ0FBQyxPQUFPO2dCQUNWLEdBQUMsSUFBSSxHQUFHLE9BQU8sSUFBRyxrQkFBa0I7b0JBQ3BDLENBQUM7WUFDSCxPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsSUFBSSxTQUFTLElBQUUsT0FBTyxJQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLEdBQUMsSUFBSSxHQUFDLEVBQUUsR0FBQyxFQUFFLEdBQUMsRUFBRSxDQUFDLEVBQUM7WUFDcEUsSUFBSSxDQUFDLE9BQU87Z0JBQ1YsR0FBQyxJQUFJLEdBQUcsT0FBTyxJQUFHLGlCQUFpQjtvQkFDbkMsQ0FBQztZQUNILE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxJQUFJLENBQUMsT0FBTztZQUNWLEdBQUMsZ0JBQWdCLElBQUcsRUFBRTtZQUN0QixHQUFDLGNBQWMsSUFBRyxFQUFFO2dCQUNwQixDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUM7SUFFZCxDQUFDO0NBQ0YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZGF5anMgZnJvbSBcImRheWpzXCI7XG50eXBlIHRpbWVUeXBlID0gJ3N0YXJ0VGltZSd8J2VuZFRpbWUnO1xuUGFnZSh7XG4gIC8qKlxuICAgKiDpobXpnaLnmoTliJ3lp4vmlbDmja5cbiAgICovXG4gIGRhdGE6IHtcbiAgICBpc1Nob3dTdGFydERhdGVQb3B1cDpmYWxzZSxcbiAgICBpc1Nob3dFbmREYXRlUG9wdXA6ZmFsc2UsXG4gICAgbWluU3RhcnREYXRlOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSArIDEwMDAgKiA2MCAqIDE1LFxuICAgIG1heFN0YXJ0RGF0ZTogbmV3IERhdGUoKS5nZXRUaW1lKCkgKyAxMDAwICogNjAgKiA2MCAqIDI0ICogMTgwLFxuICAgIHN0YXJ0RGF0ZTogbmV3IERhdGUoKS5nZXRUaW1lKCkgKyAxMDAwICogNjAgKiA2MCwgLy9uZXcgRGF0ZSgpLmdldFRpbWUoKSxcbiAgICBzdGFydFRpbWU6ICcnLFxuICAgIHN0YXJ0RGF0ZUFuZFRpbWU6IFtdIGFzIGFueSxcbiAgICBtaW5FbmREYXRlOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSArIDEwMDAgKiA2MCAqIDQ1LFxuICAgIG1heEVuZERhdGU6IG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgMTAwMCAqIDYwICogNjAgKiAyNCAqIDE4MCxcbiAgICBlbmREYXRlOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSArIDEwMDAgKiA2MCAqIDI0MCwgLy9uZXcgRGF0ZSgpLmdldFRpbWUoKSxcbiAgICBlbmRUaW1lOiAnJyxcbiAgICBlbmREYXRlQW5kVGltZTogW10gYXMgYW55LFxuICAgIGZvcm1hdHRlcih0eXBlOnN0cmluZywgdmFsdWU6c3RyaW5nKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyh0eXBlLHZhbHVlKVxuICAgICAgaWYgKHR5cGUgPT09IFwieWVhclwiKSB7XG4gICAgICAgIHJldHVybiBgJHt2YWx1ZX3lubRgO1xuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBcIm1vbnRoXCIpIHtcbiAgICAgICAgcmV0dXJuIGAke3ZhbHVlfeaciGA7XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiZGF5XCIpIHtcbiAgICAgICAgcmV0dXJuIGAke3ZhbHVlfeaXpWA7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSxcbiAgICBkb2Njb2RlOicnLFxuICAgIHFyQ29kZVVybDpcIlwiLCAvL2h0dHBzOi8vcmVzLnd4LnFxLmNvbS9vcF9yZXMvQmJWTmVjekExWHVkZmpWcUNWb0tnZnVXZTdlM2FVaG9ra3RSVk9xZl9GMElxUzZrWVItLWF0Q3BWTlVVQzN6clxuICB9LFxuXG5cbiAgLyoqXG4gICAqIOajgOafpVxuICAgKi9cblxuICBhc3luYyBvblN1Ym1pdCgpIHtcbiAgICBsZXQgZGF0YSA9IHtcbiAgICAgIGRvY0NvZGU6dGhpcy5kYXRhLmRvY2NvZGUsXG4gICAgICBzdGFydFRpbWU6YCR7dGhpcy5kYXRhLnN0YXJ0VGltZX06MDBgLFxuICAgICAgZW5kVGltZTpgJHt0aGlzLmRhdGEuZW5kVGltZX06MDBgLFxuICAgIH07XG4gICAgbGV0IGNoZWNrU3RhcnRUaW1lID0gdGhpcy5jaGVja1RpbWUoXCJzdGFydFRpbWVcIiwgXCLor7fpgInmi6norqHliJLlvIDlp4vml7bpl7RcIik7XG4gICAgbGV0IGNoZWNrRW5kVGltZSA9IHRoaXMuY2hlY2tUaW1lKFwiZW5kVGltZVwiLCBcIuivt+mAieaLqeiuoeWIkue7k+adn+aXtumXtFwiKTtcbiAgICBjb25zb2xlLmxvZygn5b6F5o+Q5Lqk5pWw5o2uJyxkYXRhKTtcbiAgICBpZiAoIWNoZWNrU3RhcnRUaW1lfHwhY2hlY2tFbmRUaW1lKXtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IHd4LiR1dGlscy50byhcbiAgICAgIHd4LiRodHRwLnJlcXVlc3Qoe1xuICAgICAgICB1cmw6YC9zaG9wcGluZy9wYW5pY0J1eWluZ0xpdmUvc2F2ZVJvb21TdGVwMy5kb2AsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIG1ldGhvZDogJ1BPU1QnXG4gICAgICB9KVxuICAgIClcbiAgICBpZiAoZXJyb3Ipe1xuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZyhcIuaWsOW7uuaIv+mXtC0t56ys5LiJ5q2lXCIscmVzdWx0KTtcbiAgICBpZiAocmVzdWx0LnFyY29kZVVybCl7XG4gICAgICBsZXQgYXV0aGVudGljYXRpb24gPXRoaXMuc2VsZWN0Q29tcG9uZW50KCcjbXktYW5jaG9yLWF1dGhlbnRpY2F0aW9uJyk7XG4gICAgICBhdXRoZW50aWNhdGlvbi5zaG93UXJDb2RlRGlhbG9nKHJlc3VsdC5xcmNvZGVVcmwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocmVzdWx0LnN0YXRlPT0nc3VjY2Vzcycpe1xuICAgICAgd3gubmF2aWdhdGVCYWNrKHtcbiAgICAgICAgZGVsdGE6IDNcbiAgICAgIH0pXG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiDnlJ/lkb3lkajmnJ/lh73mlbAtLeebkeWQrOmhtemdouWKoOi9vVxuICAgKi9cbiAgb25Mb2FkOiBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgIGxldCBkb2Njb2RlID0gb3B0aW9ucy5kb2Njb2RlIHx8ICcnO1xuICAgIGxldCBjdXJyZW50TGl2ZVJvb21EYXRhID0gd3guZ2xvYmFsRGF0YS5jdXJyZW50TGl2ZVJvb21EYXRhO1xuICAgIGNvbnNvbGUubG9nKCfmraPlnKjnvJbovpHnmoTnm7Tmkq3pl7TmlbDmja4nLGN1cnJlbnRMaXZlUm9vbURhdGEpO1xuICAgIGlmIChjdXJyZW50TGl2ZVJvb21EYXRhJiZKU09OLnN0cmluZ2lmeShjdXJyZW50TGl2ZVJvb21EYXRhKSAhPSAne30nKXtcbiAgICAgIGxldCBzdGFydERhdGUgPSB0aGlzLmRhdGEuc3RhcnREYXRlO1xuICAgICAgbGV0IGVuZERhdGUgPSB0aGlzLmRhdGEuZW5kRGF0ZTtcbiAgICAgIGxldCBsaXZlcyA9IHtcbiAgICAgICAgc3RhcnRUaW1lOiBjdXJyZW50TGl2ZVJvb21EYXRhLlN0YXJ0VGltZSxcbiAgICAgICAgZW5kVGltZTogY3VycmVudExpdmVSb29tRGF0YS5FbmRUaW1lLFxuICAgICAgICBzdGFydERhdGU6IGN1cnJlbnRMaXZlUm9vbURhdGEuU3RhcnRUaW1lP25ldyBEYXRlKGN1cnJlbnRMaXZlUm9vbURhdGEuU3RhcnRUaW1lKS5nZXRUaW1lKCk6c3RhcnREYXRlLFxuICAgICAgICBlbmREYXRlOiBjdXJyZW50TGl2ZVJvb21EYXRhLkVuZFRpbWU/bmV3IERhdGUoY3VycmVudExpdmVSb29tRGF0YS5FbmRUaW1lKS5nZXRUaW1lKCk6ZW5kRGF0ZSxcbiAgICAgIH07XG4gICAgICAvLyBpZiAoY3VycmVudExpdmVSb29tRGF0YS5TdGFydFRpbWUpe1xuICAgICAgLy8gICBzdGFydERhdGUgPSAgbmV3IERhdGUoY3VycmVudExpdmVSb29tRGF0YS5TdGFydFRpbWUpLmdldFRpbWUoKVxuICAgICAgLy8gfVxuICAgICAgLy8gaWYgKGN1cnJlbnRMaXZlUm9vbURhdGEuRW5kVGltZSl7XG4gICAgICAvLyAgIGVuZERhdGUgPSBuZXcgRGF0ZShjdXJyZW50TGl2ZVJvb21EYXRhLkVuZFRpbWUpLmdldFRpbWUoKVxuICAgICAgLy8gfVxuICAgICAgY29uc29sZS5sb2coJ+W3suacieaXtumXtCcsbGl2ZXMpO1xuICAgICAgdGhpcy5zZXREYXRhKHtcbiAgICAgICAgLi4ubGl2ZXMsXG4gICAgICB9KVxuICAgIH1cbiAgICB0aGlzLmhhbmRsZURhdGVBbmRUaW1lKClcbiAgICB0aGlzLnNldERhdGEoe1xuICAgICAgZG9jY29kZSxcbiAgICB9KVxuICB9LFxuICAvKipcbiAgICog55Sf5ZG95ZGo5pyf5Ye95pWwLS3nm5HlkKzpobXpnaLmmL7npLpcbiAgICovXG4gIG9uU2hvdzogZnVuY3Rpb24gKCkge30sXG4gIGZvcm1hdFRpbWUodGltZTogYW55KSB7XG4gICAgLy8gY29uc3QgZGF0ZTphbnkgPSBkYXlqcyh0aW1lKTtcbiAgICAvLyBjb25zb2xlLmxvZygpO1xuICAgIC8vIHJldHVybiBgJHtkYXRlLiR5fS0ke2RhdGUuJE0gKyAxfS0ke2RhdGUuJER9ICR7ZGF0ZS4kSH06JHtkYXRlLiRtfWA7XG4gICAgcmV0dXJuIGRheWpzKHRpbWUpLmZvcm1hdCgnWVlZWS1NTS1ERCBISDptbScpO1xuICB9LFxuICBoYW5kbGVEYXRlQW5kVGltZSgpe1xuICAgIGxldCB3YWl0SGFuZGxlID0gdGhpcy5kYXRhO1xuICAgIGxldCBzdGFydFRpbWUgPSB3YWl0SGFuZGxlLnN0YXJ0VGltZXx8IHRoaXMuZm9ybWF0VGltZShuZXcgRGF0ZSgpLmdldFRpbWUoKSArIDEwMDAgKiA2MCAqIDYwKTtcbiAgICBsZXQgZW5kVGltZSA9d2FpdEhhbmRsZS5lbmRUaW1lfHwgdGhpcy5mb3JtYXRUaW1lKG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgMTAwMCAqIDYwICogMjQwKTtcbiAgICB0aGlzLnNldERhdGEoe1xuICAgICAgc3RhcnRUaW1lLFxuICAgICAgZW5kVGltZSxcbiAgICAgIHN0YXJ0RGF0ZUFuZFRpbWU6IHN0YXJ0VGltZS5zcGxpdCgnICcpLFxuICAgICAgZW5kRGF0ZUFuZFRpbWU6IGVuZFRpbWUuc3BsaXQoJyAnKSxcbiAgICB9KVxuXG4gIH0sXG4gIHNob3dTdGFydERhdGVQb3B1cCgpe1xuICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICBpc1Nob3dTdGFydERhdGVQb3B1cDogdHJ1ZVxuICAgIH0pXG4gIH0sXG4gIG9uU3RhcnREYXRlUG9wdXBDbG9zZSgpe1xuICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICBpc1Nob3dTdGFydERhdGVQb3B1cDogZmFsc2VcbiAgICB9KVxuICB9LFxuICBvbkVudGVyU3RhcnREYXRlKGV2ZW50OiB7IGRldGFpbDogYW55OyB9KSB7XG4gICAgbGV0IGRldGFpbCA9IGV2ZW50LmRldGFpbDtcbiAgICBjb25zdCBkYXRlVGltZTphbnkgPSB0aGlzLmZvcm1hdFRpbWUoZXZlbnQuZGV0YWlsKTtcbiAgICBjb25zb2xlLmxvZyhcIumAieaLqeW8gOaSreaXtumXtFwiLCBkYXRlVGltZSxkZXRhaWwpO1xuICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICBzdGFydERhdGU6IGRldGFpbCxcbiAgICAgIHN0YXJ0VGltZTogZGF0ZVRpbWUsXG4gICAgICBtaW5FbmREYXRlOiBkZXRhaWwgKyAxMDAwICogNjAgKiAzMCxcbiAgICB9KTtcbiAgICB0aGlzLmhhbmRsZURhdGVBbmRUaW1lKCk7XG4gICAgdGhpcy5vblN0YXJ0RGF0ZVBvcHVwQ2xvc2UoKTtcbiAgICB0aGlzLmNoZWNrVGltZShcInN0YXJ0VGltZVwiLCBcIuivt+mAieaLqeiuoeWIkuW8gOWni+aXtumXtFwiKTtcbiAgfSxcbiAgc2hvd0VuZERhdGVQb3B1cCgpe1xuICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICBpc1Nob3dFbmREYXRlUG9wdXA6IHRydWVcbiAgICB9KVxuICB9LFxuICBvbkVuZERhdGVQb3B1cENsb3NlKCl7XG4gICAgdGhpcy5zZXREYXRhKHtcbiAgICAgIGlzU2hvd0VuZERhdGVQb3B1cDogZmFsc2VcbiAgICB9KVxuICB9LFxuICBvbkVudGVyRW5kRGF0ZShldmVudDogeyBkZXRhaWw6IGFueTsgfSkge1xuICAgIGNvbnN0IGRhdGU6YW55ID0gdGhpcy5mb3JtYXRUaW1lKGV2ZW50LmRldGFpbCk7XG4gICAgY29uc29sZS5sb2coXCLpgInmi6nkuIvmkq3ml7bpl7RcIiwgZGF0ZSxldmVudC5kZXRhaWwpO1xuICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICBlbmRUaW1lOiBkYXRlLFxuICAgICAgZW5kRGF0ZTogZXZlbnQuZGV0YWlsLFxuICAgIH0pO1xuICAgIC8vIHRoaXMudHJpZ2dlckV2ZW50KCdzZWxlY3RlZEVuZFRpbWUnLHtcbiAgICAvLyAgIGVuZFRpbWU6IGRhdGVcbiAgICAvLyB9KTtcbiAgICB0aGlzLmhhbmRsZURhdGVBbmRUaW1lKCk7XG4gICAgdGhpcy5vbkVuZERhdGVQb3B1cENsb3NlKCk7XG4gICAgdGhpcy5jaGVja1RpbWUoXCJlbmRUaW1lXCIsIFwi6K+36YCJ5oup6K6h5YiS57uT5p2f5pe26Ze0XCIpO1xuICB9LFxuICBjaGVja1RpbWUodGltZTp0aW1lVHlwZSwgbXNnOnN0cmluZykge1xuICAgIGlmICh0aGlzLmRhdGFbdGltZV0gPT0gJycpIHtcbiAgICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICAgIFt0aW1lICsgXCJFcnJvclwiXTogbXNnLFxuICAgICAgfSk7XG4gICAgICBjb25zb2xlLmxvZyh0aGlzLmRhdGEuc3RhcnRUaW1lKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgbGV0IHN0YXJ0RGF0ZSA9IHRoaXMuZGF0YS5zdGFydERhdGU7XG4gICAgbGV0IGVuZERhdGUgPSB0aGlzLmRhdGEuZW5kRGF0ZTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLmRhdGEpO1xuICAgIGlmICh0aW1lPT09J3N0YXJ0VGltZScpe1xuICAgICAgaWYgKHN0YXJ0RGF0ZSYmZW5kRGF0ZSYmKHN0YXJ0RGF0ZSAtIGVuZERhdGUgPiAwKSkge1xuICAgICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICAgIFtcInN0YXJ0VGltZUVycm9yXCJdOiBcIuW8gOWni+aXtumXtOmcgOWwj+S6jue7k+adn+aXtumXtFwiLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGltZT09PSdlbmRUaW1lJyl7XG4gICAgICBpZiAoc3RhcnREYXRlJiZlbmREYXRlJiYoZW5kRGF0ZSAtIHN0YXJ0RGF0ZSA8IDApKSB7XG4gICAgICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICAgICAgW1wiZW5kVGltZUVycm9yXCJdOiBcIue7k+adn+aXtumXtOmcgOWkp+S6juW8gOWni+aXtumXtFwiLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoc3RhcnREYXRlJiZlbmREYXRlJiYoTWF0aC5hYnMoc3RhcnREYXRlIC0gZW5kRGF0ZSk8MTAwMCo2MCozMCkpe1xuICAgICAgdGhpcy5zZXREYXRhKHtcbiAgICAgICAgW3RpbWUgKyBcIkVycm9yXCJdOiBcIuaJgOmAieaXtumXtOiMg+WbtOmXtOmalOS4jeW+l+efreS6jjMw5YiG6ZKfXCIsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHN0YXJ0RGF0ZSYmZW5kRGF0ZSYmKE1hdGguYWJzKHN0YXJ0RGF0ZSAtIGVuZERhdGUpPjEwMDAqNjAqNjAqMjQpKXtcbiAgICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICAgIFt0aW1lICsgXCJFcnJvclwiXTogXCLmiYDpgInml7bpl7TojIPlm7Tlv4XpobvlnKgyNOWwj+aXtuS7peWGhVwiLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICBbXCJzdGFydFRpbWVFcnJvclwiXTogXCJcIixcbiAgICAgIFtcImVuZFRpbWVFcnJvclwiXTogXCJcIixcbiAgICB9KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgICAvLyB0aGlzLmhhbmRsZUxpdmVUaW1lKClcbiAgfSxcbn0pO1xuXG5leHBvcnQge31cbiJdfQ==
\ No newline at end of file
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZVNldHRpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkYXRlU2V0dGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxJQUFJLENBQUM7SUFJSCxJQUFJLEVBQUU7UUFDSixvQkFBb0IsRUFBQyxLQUFLO1FBQzFCLGtCQUFrQixFQUFDLEtBQUs7UUFDeEIsWUFBWSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFO1FBQ25ELFlBQVksRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHO1FBQzlELFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRTtRQUNoRCxTQUFTLEVBQUUsRUFBRTtRQUNiLGdCQUFnQixFQUFFLEVBQVM7UUFDM0IsVUFBVSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFO1FBQ2pELFVBQVUsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHO1FBQzVELE9BQU8sRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksR0FBRyxFQUFFLEdBQUcsR0FBRztRQUMvQyxPQUFPLEVBQUUsRUFBRTtRQUNYLGNBQWMsRUFBRSxFQUFTO1FBQ3pCLFNBQVMsWUFBQyxJQUFXLEVBQUUsS0FBWTtZQUVqQyxJQUFJLElBQUksS0FBSyxNQUFNLEVBQUU7Z0JBQ25CLE9BQVUsS0FBSyxXQUFHLENBQUM7YUFD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Q0FBQyxPQUFPLEdBQUcsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUNqRCxJQUFJLENBQUMsT0FBTztvQkFDVixHQUFDLGNBQWMsSUFBRyxhQUFhO3dCQUMvQixDQUFDO2dCQUNILE9BQU8sS0FBSyxDQUFDO2FBQ2Q7U0FDRjtRQUNELElBQUksU0FBUyxJQUFFLE9BQU8sSUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxHQUFDLElBQUksR0FBQyxFQUFFLEdBQUMsRUFBRSxDQUFDLEVBQUM7WUFDakUsSUFBSSxDQUFDLE9BQU87Z0JBQ1YsR0FBQyxJQUFJLEdBQUcsT0FBTyxJQUFHLGtCQUFrQjtvQkFDcEMsQ0FBQztZQUNILE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxJQUFJLFNBQVMsSUFBRSxPQUFPLElBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsR0FBQyxJQUFJLEdBQUMsRUFBRSxHQUFDLEVBQUUsR0FBQyxFQUFFLENBQUMsRUFBQztZQUNwRSxJQUFJLENBQUMsT0FBTztnQkFDVixHQUFDLElBQUksR0FBRyxPQUFPLElBQUcsaUJBQWlCO29CQUNuQyxDQUFDO1lBQ0gsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELElBQUksQ0FBQyxPQUFPO1lBQ1YsR0FBQyxnQkFBZ0IsSUFBRyxFQUFFO1lBQ3RCLEdBQUMsY0FBYyxJQUFHLEVBQUU7Z0JBQ3BCLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQztJQUVkLENBQUM7Q0FDRixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJ0eXBlIHRpbWVUeXBlID0gJ3N0YXJ0VGltZSd8J2VuZFRpbWUnO1xuUGFnZSh7XG4gIC8qKlxuICAgKiDpobXpnaLnmoTliJ3lp4vmlbDmja5cbiAgICovXG4gIGRhdGE6IHtcbiAgICBpc1Nob3dTdGFydERhdGVQb3B1cDpmYWxzZSxcbiAgICBpc1Nob3dFbmREYXRlUG9wdXA6ZmFsc2UsXG4gICAgbWluU3RhcnREYXRlOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSArIDEwMDAgKiA2MCAqIDE1LFxuICAgIG1heFN0YXJ0RGF0ZTogbmV3IERhdGUoKS5nZXRUaW1lKCkgKyAxMDAwICogNjAgKiA2MCAqIDI0ICogMTgwLFxuICAgIHN0YXJ0RGF0ZTogbmV3IERhdGUoKS5nZXRUaW1lKCkgKyAxMDAwICogNjAgKiA2MCwgLy9uZXcgRGF0ZSgpLmdldFRpbWUoKSxcbiAgICBzdGFydFRpbWU6ICcnLFxuICAgIHN0YXJ0RGF0ZUFuZFRpbWU6IFtdIGFzIGFueSxcbiAgICBtaW5FbmREYXRlOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSArIDEwMDAgKiA2MCAqIDQ1LFxuICAgIG1heEVuZERhdGU6IG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgMTAwMCAqIDYwICogNjAgKiAyNCAqIDE4MCxcbiAgICBlbmREYXRlOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSArIDEwMDAgKiA2MCAqIDI0MCwgLy9uZXcgRGF0ZSgpLmdldFRpbWUoKSxcbiAgICBlbmRUaW1lOiAnJyxcbiAgICBlbmREYXRlQW5kVGltZTogW10gYXMgYW55LFxuICAgIGZvcm1hdHRlcih0eXBlOnN0cmluZywgdmFsdWU6c3RyaW5nKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyh0eXBlLHZhbHVlKVxuICAgICAgaWYgKHR5cGUgPT09IFwieWVhclwiKSB7XG4gICAgICAgIHJldHVybiBgJHt2YWx1ZX3lubRgO1xuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBcIm1vbnRoXCIpIHtcbiAgICAgICAgcmV0dXJuIGAke3ZhbHVlfeaciGA7XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiZGF5XCIpIHtcbiAgICAgICAgcmV0dXJuIGAke3ZhbHVlfeaXpWA7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSxcbiAgICBkb2Njb2RlOicnLFxuICAgIHFyQ29kZVVybDpcIlwiLCAvL2h0dHBzOi8vcmVzLnd4LnFxLmNvbS9vcF9yZXMvQmJWTmVjekExWHVkZmpWcUNWb0tnZnVXZTdlM2FVaG9ra3RSVk9xZl9GMElxUzZrWVItLWF0Q3BWTlVVQzN6clxuICB9LFxuXG5cbiAgLyoqXG4gICAqIOajgOafpVxuICAgKi9cblxuICBhc3luYyBvblN1Ym1pdCgpIHtcbiAgICBsZXQgZGF0YSA9IHtcbiAgICAgIGRvY0NvZGU6dGhpcy5kYXRhLmRvY2NvZGUsXG4gICAgICBzdGFydFRpbWU6YCR7dGhpcy5kYXRhLnN0YXJ0VGltZX06MDBgLFxuICAgICAgZW5kVGltZTpgJHt0aGlzLmRhdGEuZW5kVGltZX06MDBgLFxuICAgIH07XG4gICAgbGV0IGNoZWNrU3RhcnRUaW1lID0gdGhpcy5jaGVja1RpbWUoXCJzdGFydFRpbWVcIiwgXCLor7fpgInmi6norqHliJLlvIDlp4vml7bpl7RcIik7XG4gICAgbGV0IGNoZWNrRW5kVGltZSA9IHRoaXMuY2hlY2tUaW1lKFwiZW5kVGltZVwiLCBcIuivt+mAieaLqeiuoeWIkue7k+adn+aXtumXtFwiKTtcbiAgICBjb25zb2xlLmxvZygn5b6F5o+Q5Lqk5pWw5o2uJyxkYXRhKTtcbiAgICBpZiAoIWNoZWNrU3RhcnRUaW1lfHwhY2hlY2tFbmRUaW1lKXtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IHd4LiR1dGlscy50byhcbiAgICAgIHd4LiRodHRwLnJlcXVlc3Qoe1xuICAgICAgICB1cmw6YC9zaG9wcGluZy9wYW5pY0J1eWluZ0xpdmUvc2F2ZVJvb21TdGVwMy5kb2AsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIG1ldGhvZDogJ1BPU1QnXG4gICAgICB9KVxuICAgIClcbiAgICBpZiAoZXJyb3Ipe1xuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZyhcIuaWsOW7uuaIv+mXtC0t56ys5LiJ5q2lXCIscmVzdWx0KTtcbiAgICBpZiAocmVzdWx0LnFyY29kZVVybCl7XG4gICAgICBsZXQgYXV0aGVudGljYXRpb24gPXRoaXMuc2VsZWN0Q29tcG9uZW50KCcjbXktYW5jaG9yLWF1dGhlbnRpY2F0aW9uJyk7XG4gICAgICBhdXRoZW50aWNhdGlvbi5zaG93UXJDb2RlRGlhbG9nKHJlc3VsdC5xcmNvZGVVcmwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocmVzdWx0LnN0YXRlPT0nc3VjY2Vzcycpe1xuICAgICAgd3gubmF2aWdhdGVCYWNrKHtcbiAgICAgICAgZGVsdGE6IDNcbiAgICAgIH0pXG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiDnlJ/lkb3lkajmnJ/lh73mlbAtLeebkeWQrOmhtemdouWKoOi9vVxuICAgKi9cbiAgb25Mb2FkOiBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgIGxldCBkb2Njb2RlID0gb3B0aW9ucy5kb2Njb2RlIHx8ICcnO1xuICAgIGxldCBjdXJyZW50TGl2ZVJvb21EYXRhID0gd3guZ2xvYmFsRGF0YS5jdXJyZW50TGl2ZVJvb21EYXRhO1xuICAgIGNvbnNvbGUubG9nKCfmraPlnKjnvJbovpHnmoTnm7Tmkq3pl7TmlbDmja4nLGN1cnJlbnRMaXZlUm9vbURhdGEpO1xuICAgIGlmIChjdXJyZW50TGl2ZVJvb21EYXRhJiZKU09OLnN0cmluZ2lmeShjdXJyZW50TGl2ZVJvb21EYXRhKSAhPSAne30nKXtcbiAgICAgIGxldCBzdGFydERhdGUgPSB0aGlzLmRhdGEuc3RhcnREYXRlO1xuICAgICAgbGV0IGVuZERhdGUgPSB0aGlzLmRhdGEuZW5kRGF0ZTtcbiAgICAgIGxldCBsaXZlcyA9IHtcbiAgICAgICAgc3RhcnRUaW1lOiBjdXJyZW50TGl2ZVJvb21EYXRhLlN0YXJ0VGltZSxcbiAgICAgICAgZW5kVGltZTogY3VycmVudExpdmVSb29tRGF0YS5FbmRUaW1lLFxuICAgICAgICBzdGFydERhdGU6IGN1cnJlbnRMaXZlUm9vbURhdGEuU3RhcnRUaW1lP25ldyBEYXRlKGN1cnJlbnRMaXZlUm9vbURhdGEuU3RhcnRUaW1lKS5nZXRUaW1lKCk6c3RhcnREYXRlLFxuICAgICAgICBlbmREYXRlOiBjdXJyZW50TGl2ZVJvb21EYXRhLkVuZFRpbWU/bmV3IERhdGUoY3VycmVudExpdmVSb29tRGF0YS5FbmRUaW1lKS5nZXRUaW1lKCk6ZW5kRGF0ZSxcbiAgICAgIH07XG4gICAgICAvLyBpZiAoY3VycmVudExpdmVSb29tRGF0YS5TdGFydFRpbWUpe1xuICAgICAgLy8gICBzdGFydERhdGUgPSAgbmV3IERhdGUoY3VycmVudExpdmVSb29tRGF0YS5TdGFydFRpbWUpLmdldFRpbWUoKVxuICAgICAgLy8gfVxuICAgICAgLy8gaWYgKGN1cnJlbnRMaXZlUm9vbURhdGEuRW5kVGltZSl7XG4gICAgICAvLyAgIGVuZERhdGUgPSBuZXcgRGF0ZShjdXJyZW50TGl2ZVJvb21EYXRhLkVuZFRpbWUpLmdldFRpbWUoKVxuICAgICAgLy8gfVxuICAgICAgY29uc29sZS5sb2coJ+W3suacieaXtumXtCcsbGl2ZXMpO1xuICAgICAgdGhpcy5zZXREYXRhKHtcbiAgICAgICAgLi4ubGl2ZXMsXG4gICAgICB9KVxuICAgIH1cbiAgICB0aGlzLmhhbmRsZURhdGVBbmRUaW1lKClcbiAgICB0aGlzLnNldERhdGEoe1xuICAgICAgZG9jY29kZSxcbiAgICB9KVxuICB9LFxuICAvKipcbiAgICog55Sf5ZG95ZGo5pyf5Ye95pWwLS3nm5HlkKzpobXpnaLmmL7npLpcbiAgICovXG4gIG9uU2hvdzogZnVuY3Rpb24gKCkge30sXG4gIGhhbmRsZURhdGVBbmRUaW1lKCl7XG4gICAgbGV0IHdhaXRIYW5kbGUgPSB0aGlzLmRhdGE7XG4gICAgbGV0IHN0YXJ0VGltZSA9IHdhaXRIYW5kbGUuc3RhcnRUaW1lfHwgd3guJHV0aWxzLmZvcm1hdFRpbWUobmV3IERhdGUoKS5nZXRUaW1lKCkgKyAxMDAwICogNjAgKiA2MCk7XG4gICAgbGV0IGVuZFRpbWUgPXdhaXRIYW5kbGUuZW5kVGltZXx8IHd4LiR1dGlscy5mb3JtYXRUaW1lKG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgMTAwMCAqIDYwICogMjQwKTtcbiAgICB0aGlzLnNldERhdGEoe1xuICAgICAgc3RhcnRUaW1lLFxuICAgICAgZW5kVGltZSxcbiAgICAgIHN0YXJ0RGF0ZUFuZFRpbWU6IHN0YXJ0VGltZS5zcGxpdCgnICcpLFxuICAgICAgZW5kRGF0ZUFuZFRpbWU6IGVuZFRpbWUuc3BsaXQoJyAnKSxcbiAgICB9KVxuXG4gIH0sXG4gIHNob3dTdGFydERhdGVQb3B1cCgpe1xuICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICBpc1Nob3dTdGFydERhdGVQb3B1cDogdHJ1ZVxuICAgIH0pXG4gIH0sXG4gIG9uU3RhcnREYXRlUG9wdXBDbG9zZSgpe1xuICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICBpc1Nob3dTdGFydERhdGVQb3B1cDogZmFsc2VcbiAgICB9KVxuICB9LFxuICBvbkVudGVyU3RhcnREYXRlKGV2ZW50OiB7IGRldGFpbDogYW55OyB9KSB7XG4gICAgbGV0IGRldGFpbCA9IGV2ZW50LmRldGFpbDtcbiAgICBjb25zdCBkYXRlVGltZTphbnkgPSB3eC4kdXRpbHMuZm9ybWF0VGltZShldmVudC5kZXRhaWwpO1xuICAgIGNvbnNvbGUubG9nKFwi6YCJ5oup5byA5pKt5pe26Ze0XCIsIGRhdGVUaW1lLGRldGFpbCk7XG4gICAgdGhpcy5zZXREYXRhKHtcbiAgICAgIHN0YXJ0RGF0ZTogZGV0YWlsLFxuICAgICAgc3RhcnRUaW1lOiBkYXRlVGltZSxcbiAgICAgIG1pbkVuZERhdGU6IGRldGFpbCArIDEwMDAgKiA2MCAqIDMwLFxuICAgIH0pO1xuICAgIHRoaXMuaGFuZGxlRGF0ZUFuZFRpbWUoKTtcbiAgICB0aGlzLm9uU3RhcnREYXRlUG9wdXBDbG9zZSgpO1xuICAgIHRoaXMuY2hlY2tUaW1lKFwic3RhcnRUaW1lXCIsIFwi6K+36YCJ5oup6K6h5YiS5byA5aeL5pe26Ze0XCIpO1xuICB9LFxuICBzaG93RW5kRGF0ZVBvcHVwKCl7XG4gICAgdGhpcy5zZXREYXRhKHtcbiAgICAgIGlzU2hvd0VuZERhdGVQb3B1cDogdHJ1ZVxuICAgIH0pXG4gIH0sXG4gIG9uRW5kRGF0ZVBvcHVwQ2xvc2UoKXtcbiAgICB0aGlzLnNldERhdGEoe1xuICAgICAgaXNTaG93RW5kRGF0ZVBvcHVwOiBmYWxzZVxuICAgIH0pXG4gIH0sXG4gIG9uRW50ZXJFbmREYXRlKGV2ZW50OiB7IGRldGFpbDogYW55OyB9KSB7XG4gICAgY29uc3QgZGF0ZTphbnkgPSB3eC4kdXRpbHMuZm9ybWF0VGltZShldmVudC5kZXRhaWwpO1xuICAgIGNvbnNvbGUubG9nKFwi6YCJ5oup5LiL5pKt5pe26Ze0XCIsIGRhdGUsZXZlbnQuZGV0YWlsKTtcbiAgICB0aGlzLnNldERhdGEoe1xuICAgICAgZW5kVGltZTogZGF0ZSxcbiAgICAgIGVuZERhdGU6IGV2ZW50LmRldGFpbCxcbiAgICB9KTtcbiAgICAvLyB0aGlzLnRyaWdnZXJFdmVudCgnc2VsZWN0ZWRFbmRUaW1lJyx7XG4gICAgLy8gICBlbmRUaW1lOiBkYXRlXG4gICAgLy8gfSk7XG4gICAgdGhpcy5oYW5kbGVEYXRlQW5kVGltZSgpO1xuICAgIHRoaXMub25FbmREYXRlUG9wdXBDbG9zZSgpO1xuICAgIHRoaXMuY2hlY2tUaW1lKFwiZW5kVGltZVwiLCBcIuivt+mAieaLqeiuoeWIkue7k+adn+aXtumXtFwiKTtcbiAgfSxcbiAgY2hlY2tUaW1lKHRpbWU6dGltZVR5cGUsIG1zZzpzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5kYXRhW3RpbWVdID09ICcnKSB7XG4gICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICBbdGltZSArIFwiRXJyb3JcIl06IG1zZyxcbiAgICAgIH0pO1xuICAgICAgY29uc29sZS5sb2codGhpcy5kYXRhLnN0YXJ0VGltZSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGxldCBzdGFydERhdGUgPSB0aGlzLmRhdGEuc3RhcnREYXRlO1xuICAgIGxldCBlbmREYXRlID0gdGhpcy5kYXRhLmVuZERhdGU7XG4gICAgY29uc29sZS5sb2codGhpcy5kYXRhKTtcbiAgICBpZiAodGltZT09PSdzdGFydFRpbWUnKXtcbiAgICAgIGlmIChzdGFydERhdGUmJmVuZERhdGUmJihzdGFydERhdGUgLSBlbmREYXRlID4gMCkpIHtcbiAgICAgICAgdGhpcy5zZXREYXRhKHtcbiAgICAgICAgICBbXCJzdGFydFRpbWVFcnJvclwiXTogXCLlvIDlp4vml7bpl7TpnIDlsI/kuo7nu5PmnZ/ml7bpl7RcIixcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRpbWU9PT0nZW5kVGltZScpe1xuICAgICAgaWYgKHN0YXJ0RGF0ZSYmZW5kRGF0ZSYmKGVuZERhdGUgLSBzdGFydERhdGUgPCAwKSkge1xuICAgICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICAgIFtcImVuZFRpbWVFcnJvclwiXTogXCLnu5PmnZ/ml7bpl7TpnIDlpKfkuo7lvIDlp4vml7bpl7RcIixcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHN0YXJ0RGF0ZSYmZW5kRGF0ZSYmKE1hdGguYWJzKHN0YXJ0RGF0ZSAtIGVuZERhdGUpPDEwMDAqNjAqMzApKXtcbiAgICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICAgIFt0aW1lICsgXCJFcnJvclwiXTogXCLmiYDpgInml7bpl7TojIPlm7Tpl7TpmpTkuI3lvpfnn63kuo4zMOWIhumSn1wiLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChzdGFydERhdGUmJmVuZERhdGUmJihNYXRoLmFicyhzdGFydERhdGUgLSBlbmREYXRlKT4xMDAwKjYwKjYwKjI0KSl7XG4gICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICBbdGltZSArIFwiRXJyb3JcIl06IFwi5omA6YCJ5pe26Ze06IyD5Zu05b+F6aG75ZyoMjTlsI/ml7bku6XlhoVcIixcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLnNldERhdGEoe1xuICAgICAgW1wic3RhcnRUaW1lRXJyb3JcIl06IFwiXCIsXG4gICAgICBbXCJlbmRUaW1lRXJyb3JcIl06IFwiXCIsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRydWU7XG4gICAgLy8gdGhpcy5oYW5kbGVMaXZlVGltZSgpXG4gIH0sXG59KTtcblxuZXhwb3J0IHt9XG4iXX0=
\ No newline at end of file
diff --git a/pages/liveRoomCreate/dateSetting/dateSetting.ts b/pages/liveRoomCreate/dateSetting/dateSetting.ts
index 364a358..a15e285 100644
--- a/pages/liveRoomCreate/dateSetting/dateSetting.ts
+++ b/pages/liveRoomCreate/dateSetting/dateSetting.ts
@@ -1,4 +1,3 @@
-import * as dayjs from "dayjs";
 type timeType = 'startTime'|'endTime';
 Page({
   /**
@@ -109,16 +108,10 @@
    * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず
    */
   onShow: function () {},
-  formatTime(time: any) {
-    // const date:any = dayjs(time);
-    // console.log();
-    // return `${date.$y}-${date.$M + 1}-${date.$D} ${date.$H}:${date.$m}`;
-    return dayjs(time).format('YYYY-MM-DD HH:mm');
-  },
   handleDateAndTime(){
     let waitHandle = this.data;
-    let startTime = waitHandle.startTime|| this.formatTime(new Date().getTime() + 1000 * 60 * 60);
-    let endTime =waitHandle.endTime|| this.formatTime(new Date().getTime() + 1000 * 60 * 240);
+    let startTime = waitHandle.startTime|| wx.$utils.formatTime(new Date().getTime() + 1000 * 60 * 60);
+    let endTime =waitHandle.endTime|| wx.$utils.formatTime(new Date().getTime() + 1000 * 60 * 240);
     this.setData({
       startTime,
       endTime,
@@ -139,7 +132,7 @@
   },
   onEnterStartDate(event: { detail: any; }) {
     let detail = event.detail;
-    const dateTime:any = this.formatTime(event.detail);
+    const dateTime:any = wx.$utils.formatTime(event.detail);
     console.log("閫夋嫨寮�鎾椂闂�", dateTime,detail);
     this.setData({
       startDate: detail,
@@ -161,7 +154,7 @@
     })
   },
   onEnterEndDate(event: { detail: any; }) {
-    const date:any = this.formatTime(event.detail);
+    const date:any = wx.$utils.formatTime(event.detail);
     console.log("閫夋嫨涓嬫挱鏃堕棿", date,event.detail);
     this.setData({
       endTime: date,
diff --git a/pages/merchantSigning/merchantSigning.js b/pages/merchantSigning/merchantSigning.js
index 7bf5206..6e3bb3d 100644
--- a/pages/merchantSigning/merchantSigning.js
+++ b/pages/merchantSigning/merchantSigning.js
@@ -114,7 +114,11 @@
             });
         });
     },
-    onSubmit: function () {
+    onSubmit: wx.$utils.debounce(function () {
+        this.submitHandler();
+        return;
+    }),
+    submitHandler: function () {
         var _a = this.data, checked = _a.checked, region = _a.region, telephone = _a.telephone;
         var checkRegion = region.length < 1;
         console.log(checked, region);
@@ -211,4 +215,4 @@
         }, this);
     },
 });
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyY2hhbnRTaWduaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibWVyY2hhbnRTaWduaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1REFBa0Q7QUFDbEQsSUFBSSxpQkFBNkIsQ0FBQztBQUNsQyxJQUFJLENBQUM7SUFDSCxJQUFJLEVBQUU7UUFDSixNQUFNLEVBQUUsRUFBRTtRQUNWLE9BQU8sRUFBQyxLQUFLO1FBQ2IsU0FBUyxFQUFDLEVBQUU7UUFDWixVQUFVLEVBQUMsRUFBRTtRQUNiLElBQUksRUFBQyxFQUFFO0tBRVI7SUFDRCxNQUFNLFlBQUMsT0FBTztRQUlaLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUEsQ0FBQyxDQUFBLFFBQU0sT0FBTyxDQUFDLElBQUksU0FBSSxPQUFPLENBQUMsSUFBTSxDQUFBLENBQUMsQ0FBQSxFQUFFLENBQUM7UUFDaEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNYLElBQUksTUFBQTtTQUNMLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFBO0lBQ3RCLENBQUM7SUFDRCxnQkFBZ0IsWUFBQyxDQUFLO1FBQ3BCLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNoRCxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ1gsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSztTQUN2QixDQUFDLENBQUE7SUFDSixDQUFDO0lBQ0QsYUFBYSxZQUFDLEtBQVM7UUFDckIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDO1lB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NEJBQ0wsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO3lCQUNuQjs7Ozs7O0tBR0o7SUFDRCxhQUFhO1FBRVgsaUJBQWlCLEdBQUcsSUFBSSxxQkFBVyxDQUFDO1lBQ2xDLEtBQUssRUFBRTtnQkFDTCxVQUFVLEVBQUU7b0JBQ1YsUUFBUSxFQUFFLElBQUk7b0JBQ2QsU0FBUyxFQUFFLENBQUM7aUJBQ2I7YUFDRjtZQUNELFFBQVEsRUFBRTtnQkFDUixVQUFVLEVBQUU7b0JBQ1YsUUFBUSxFQUFFLFFBQVE7aUJBQ25CO2FBQ0Y7WUFDRCxVQUFVLEVBQUMsSUFBSTtTQUNoQixFQUFDLElBQUksQ0FBQyxDQUFBO0lBQ1QsQ0FBQztDQUNGLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBNeVZhbGlkYXRvciBmcm9tIFwiLi4vLi4vdXRpbHMvbXlWYWxpZGF0b3JcIjtcclxubGV0IHZhbGlkYXRvckluc3RhbmNlOk15VmFsaWRhdG9yO1xyXG5QYWdlKHtcclxuICBkYXRhOiB7XHJcbiAgICByZWdpb246IFtdLFxyXG4gICAgY2hlY2tlZDpmYWxzZSxcclxuICAgIHRlbGVwaG9uZTonJyxcclxuICAgIGFjdHVhbE5hbWU6JycsXHJcbiAgICBnb3RvOicnIC8v562+57qm5a6M5ZCO5YmN5b6AXHJcbiAgICAvLyBjdXN0b21JdGVtOiAn5YWo6YOoJyxcclxuICB9LFxyXG4gIG9uTG9hZChvcHRpb25zKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhhcHAsb3B0aW9ucyk7XHJcbiAgICAvLyBjb25zb2xlLmxvZyh3eC4kdXRpbHMpO1xyXG4gICAgLy8gY29uc29sZS5sb2cod3guJHV0aWxzLmZvcm1hdFRpbWUobmV3IERhdGUoKSkpO1xyXG4gICAgbGV0IGdvdG8gPSBvcHRpb25zLmdvdG8/YC4uLyR7b3B0aW9ucy5nb3RvfS8ke29wdGlvbnMuZ290b31gOicnO1xyXG4gICAgY29uc29sZS5sb2coJ+etvue6puWujOWQjuWJjeW+gCAnLGdvdG8pO1xyXG4gICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgZ290b1xyXG4gICAgfSlcclxuICB9LFxyXG4gIG9uUmVhZHkoKSB7XHJcbiAgICB0aGlzLmluaXRWYWxpZGF0b3IoKVxyXG4gIH0sXHJcbiAgYmluZFJlZ2lvbkNoYW5nZShlOmFueSkge1xyXG4gICAgY29uc29sZS5sb2coJ3BpY2tlcuWPkemAgemAieaLqeaUueWPmO+8jOaQuuW4puWAvOS4uicsIGUuZGV0YWlsLnZhbHVlKVxyXG4gICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgcmVnaW9uOiBlLmRldGFpbC52YWx1ZVxyXG4gICAgfSlcclxuICB9LFxyXG4gIG9uQWdyZWVDaGFuZ2UoZXZlbnQ6YW55KSB7XHJcbiAgICBjb25zb2xlLmxvZyhldmVudCk7XHJcbiAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICBjaGVja2VkOiBldmVudC5kZXRhaWwsXHJcbiAgICB9KTtcclxuICB9LFxyXG4gIGNoZWNrQWN0dWFsTmFtZShlOmFueSl7XHJcbiAgICBsZXQgeyB2YWx1ZSB9ID0gZS5kZXRhaWxcclxuICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgdmFsaWRhdG9ySW5zdGFuY2UuY2hlY2tGaWVsZCgnYWN0dWFsTmFtZScsdmFsdWUpO1xyXG4gIH0sXHJcbiAgYXN5bmMgZ2V0UGhvbmVOdW1iZXIoZTphbnkpe1xyXG4gICAgY29uc29sZS5sb2coJ2dldFBob25lTnVtYmVyJywgZSk7XHJcbiAgICBpZiAoZS5kZXRhaWwuZXJyTXNnID09ICdnZXRQaG9uZU51bWJlcjpvaycpIHtcclxuICAgICAgbGV0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IHd4LiR1dGlscy50byhcclxuICAgICAgICB3eC4kaHR0cC5yZXF1ZXN0KHtcclxuICAgICAgICAgIHVybDpgL3Nob3BwaW5nL2FjY291bnQuZG8/bT10ZWxSZWdCeUF1dG9SZWdgLFxyXG4gICAgICAgICAgZGF0YTp7XHJcbiAgICAgICAgICAgIFJlZmVycmFsc0NvZGU6ICcnLFxyXG4gICAgICAgICAgICBSZWZlcnJhbHNOYW1lOiAnJyxcclxuICAgICAgICAgICAgZW5jcnlwdGVkRGF0YTogZS5kZXRhaWwuZW5jcnlwdGVkRGF0YSxcclxuICAgICAgICAgICAgaXY6IGUuZGV0YWlsLml2LFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgICAgaWYgKGVycm9yKXtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgdGVsZXBob25lOnJlc3VsdC5UZWxlcGhvbmUsXHJcbiAgICAgICAgcGhvbmVFcnJvcjonJ1xyXG4gICAgICB9KVxyXG4gICAgfSBlbHNle1xyXG4gICAgICBjb25zb2xlLmxvZygn5Y+W5raI5o6I5p2DJyk7XHJcbiAgICAgIHd4LnNob3dUb2FzdCh7XHJcbiAgICAgICAgdGl0bGU6ICflj5bmtojmjojmnYMnLFxyXG4gICAgICAgIGljb246ICdub25lJyxcclxuICAgICAgICBkdXJhdGlvbjogMTAwMFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9LFxyXG4gIC8vIGNoZWNrUGhvbmUoZTphbnkpe1xyXG4gIC8vICAgbGV0IHsgdmFsdWUgfSA9IGUuZGV0YWlsXHJcbiAgLy8gICBjb25zb2xlLmxvZyh2YWx1ZSk7XHJcbiAgLy8gICB2YWxpZGF0b3JJbnN0YW5jZS5jaGVja0ZpZWxkKCdwaG9uZScsdmFsdWUpO1xyXG4gIC8vIH0sXHJcbiAgb25TdWJtaXQoKXtcclxuICAgIGxldCB7Y2hlY2tlZCxyZWdpb24sdGVsZXBob25lfSA9IHRoaXMuZGF0YTtcclxuICAgIGxldCBjaGVja1JlZ2lvbiA9IHJlZ2lvbi5sZW5ndGggPCAxO1xyXG4gICAgY29uc29sZS5sb2coY2hlY2tlZCxyZWdpb24pO1xyXG4gICAgaWYgKGNoZWNrUmVnaW9uKSB7XHJcbiAgICAgIHd4LnNob3dUb2FzdCh7XHJcbiAgICAgICAgdGl0bGU6ICfor7fpgInmi6nlnLDljLonLFxyXG4gICAgICAgIGljb246ICdub25lJyxcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBjaGVja0FsbERhdGEgPSB2YWxpZGF0b3JJbnN0YW5jZS5jaGVja0FsbERhdGEoKTtcclxuICAgIC8vIGxldCBjaGVja0FyciA9IFtjaGVja1JlZ2lvbixjaGVja0NoZWNrZWQsY2hlY2tBbGxEYXRhXTtcclxuICAgIGlmICghY2hlY2tBbGxEYXRhKXtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0ZWxlcGhvbmUpIHtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICBwaG9uZUVycm9yOifor7fovpPlhaXmiYvmnLrlj7cnXHJcbiAgICAgIH0pXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICghY2hlY2tlZCl7XHJcbiAgICAgIGNvbnNvbGUubG9nKCfor7flkIzmhI/llYblrrbmnaHmrL4nKTtcclxuICAgICAgd3guc2hvd1RvYXN0KHtcclxuICAgICAgICB0aXRsZTogJ+ivt+WQjOaEj+WVhuWutuadoeasvicsXHJcbiAgICAgICAgaWNvbjogJ25vbmUnLFxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2coJy4uLi7mj5DkuqTmiJDlip8nKTtcclxuICAgIHRoaXMucG9zdEZvcm1EYXRhKCk7XHJcbiAgfSxcclxuICBhc3luYyBwb3N0Rm9ybURhdGEoKXtcclxuICAgIGxldCB7cmVnaW9uLGFjdHVhbE5hbWUsdGVsZXBob25lfSA9IHRoaXMuZGF0YTtcclxuICAgIGxldCBbcHJvdmluY2VOYW1lLGNpdHlOYW1lLGNvdW50eU5hbWVdID0gcmVnaW9uO1xyXG4gICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgIGNvdW50cnlOYW1lOifkuK3lm70nLFxyXG4gICAgICBwcm92aW5jZU5hbWUsXHJcbiAgICAgIGNpdHlOYW1lLFxyXG4gICAgICBjb3VudHlOYW1lLFxyXG4gICAgICBhY3R1YWxOYW1lLFxyXG4gICAgICB0ZWxlcGhvbmVcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKGRhdGEpO1xyXG4gICAgbGV0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IHd4LiR1dGlscy50byhcclxuICAgICAgd3guJGh0dHAucmVxdWVzdCh7XHJcbiAgICAgICAgdXJsOmAvc2hvcHBpbmcvY3VzdG9tZXJTaWdudXAuZG8/bT1zYXZlQ3VzdG9tZXJTaWdudXBgLFxyXG4gICAgICAgIGRhdGEsXHJcbiAgICAgICAgbWV0aG9kOidQT1NUJ1xyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICAgaWYgKGVycm9yKXtcclxuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG4gICAgaWYgKHJlc3VsdC5zdGF0dXM9PSdzdWNjZXNzJyl7XHJcbiAgICAgIGF3YWl0IHd4LiRjb21tb25SZXF1ZXN0LmdldFVzZXJJbmZvKCk7XHJcbiAgICAgIGxldCBnb3RvID0gdGhpcy5kYXRhLmdvdG87XHJcbiAgICAgIGlmIChnb3RvKXtcclxuICAgICAgICB3eC5yZWRpcmVjdFRvKHtcclxuICAgICAgICAgIHVybDpnb3RvXHJcbiAgICAgICAgfSlcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB3eC5uYXZpZ2F0ZUJhY2soKTtcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuICB9LFxyXG4gIGluaXRWYWxpZGF0b3IoKXtcclxuICAgIC8vIOWunuS+i+WMllxyXG4gICAgdmFsaWRhdG9ySW5zdGFuY2UgPSBuZXcgTXlWYWxpZGF0b3Ioe1xyXG4gICAgICBydWxlczoge1xyXG4gICAgICAgIGFjdHVhbE5hbWU6IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgICAgbWlubGVuZ3RoOiAyXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBtZXNzYWdlczoge1xyXG4gICAgICAgIGFjdHVhbE5hbWU6IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiAn6K+36L6T5YWl55So5oi35ZCNJyxcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIG11bHRpQ2hlY2s6dHJ1ZVxyXG4gICAgfSx0aGlzKVxyXG4gIH0sXHJcbn0pXHJcbmV4cG9ydCB7fVxyXG4iXX0=
\ No newline at end of file
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyY2hhbnRTaWduaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibWVyY2hhbnRTaWduaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1REFBa0Q7QUFDbEQsSUFBSSxpQkFBNkIsQ0FBQztBQUNsQyxJQUFJLENBQUM7SUFDSCxJQUFJLEVBQUU7UUFDSixNQUFNLEVBQUUsRUFBRTtRQUNWLE9BQU8sRUFBQyxLQUFLO1FBQ2IsU0FBUyxFQUFDLEVBQUU7UUFDWixVQUFVLEVBQUMsRUFBRTtRQUNiLElBQUksRUFBQyxFQUFFO0tBRVI7SUFDRCxNQUFNLFlBQUMsT0FBTztRQUlaLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUEsQ0FBQyxDQUFBLFFBQU0sT0FBTyxDQUFDLElBQUksU0FBSSxPQUFPLENBQUMsSUFBTSxDQUFBLENBQUMsQ0FBQSxFQUFFLENBQUM7UUFDaEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNYLElBQUksTUFBQTtTQUNMLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFBO0lBQ3RCLENBQUM7SUFDRCxnQkFBZ0IsWUFBQyxDQUFLO1FBQ3BCLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNoRCxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ1gsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSztTQUN2QixDQUFDLENBQUE7SUFDSixDQUFDO0lBQ0QsYUFBYSxZQUFDLEtBQVM7UUFDckIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDO1lB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Q0FBQzt3QkFDMUIsSUFBSSxJQUFJLEVBQUM7NEJBQ1AsRUFBRSxDQUFDLFVBQVUsQ0FBQztnQ0FDWixHQUFHLEVBQUMsSUFBSTs2QkFDVCxDQUFDLENBQUE7eUJBQ0g7NkJBQU07NEJBQ0wsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO3lCQUNuQjs7Ozs7O0tBR0o7SUFDRCxhQUFhO1FBRVgsaUJBQWlCLEdBQUcsSUFBSSxxQkFBVyxDQUFDO1lBQ2xDLEtBQUssRUFBRTtnQkFDTCxVQUFVLEVBQUU7b0JBQ1YsUUFBUSxFQUFFLElBQUk7b0JBQ2QsU0FBUyxFQUFFLENBQUM7aUJBQ2I7YUFDRjtZQUNELFFBQVEsRUFBRTtnQkFDUixVQUFVLEVBQUU7b0JBQ1YsUUFBUSxFQUFFLFFBQVE7aUJBQ25CO2FBQ0Y7WUFDRCxVQUFVLEVBQUMsSUFBSTtTQUNoQixFQUFDLElBQUksQ0FBQyxDQUFBO0lBQ1QsQ0FBQztDQUNGLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBNeVZhbGlkYXRvciBmcm9tIFwiLi4vLi4vdXRpbHMvbXlWYWxpZGF0b3JcIjtcclxubGV0IHZhbGlkYXRvckluc3RhbmNlOk15VmFsaWRhdG9yO1xyXG5QYWdlKHtcclxuICBkYXRhOiB7XHJcbiAgICByZWdpb246IFtdLFxyXG4gICAgY2hlY2tlZDpmYWxzZSxcclxuICAgIHRlbGVwaG9uZTonJyxcclxuICAgIGFjdHVhbE5hbWU6JycsXHJcbiAgICBnb3RvOicnIC8v562+57qm5a6M5ZCO5YmN5b6AXHJcbiAgICAvLyBjdXN0b21JdGVtOiAn5YWo6YOoJyxcclxuICB9LFxyXG4gIG9uTG9hZChvcHRpb25zKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhhcHAsb3B0aW9ucyk7XHJcbiAgICAvLyBjb25zb2xlLmxvZyh3eC4kdXRpbHMpO1xyXG4gICAgLy8gY29uc29sZS5sb2cod3guJHV0aWxzLmZvcm1hdFRpbWUobmV3IERhdGUoKSkpO1xyXG4gICAgbGV0IGdvdG8gPSBvcHRpb25zLmdvdG8/YC4uLyR7b3B0aW9ucy5nb3RvfS8ke29wdGlvbnMuZ290b31gOicnO1xyXG4gICAgY29uc29sZS5sb2coJ+etvue6puWujOWQjuWJjeW+gCAnLGdvdG8pO1xyXG4gICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgZ290b1xyXG4gICAgfSlcclxuICB9LFxyXG4gIG9uUmVhZHkoKSB7XHJcbiAgICB0aGlzLmluaXRWYWxpZGF0b3IoKVxyXG4gIH0sXHJcbiAgYmluZFJlZ2lvbkNoYW5nZShlOmFueSkge1xyXG4gICAgY29uc29sZS5sb2coJ3BpY2tlcuWPkemAgemAieaLqeaUueWPmO+8jOaQuuW4puWAvOS4uicsIGUuZGV0YWlsLnZhbHVlKVxyXG4gICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgcmVnaW9uOiBlLmRldGFpbC52YWx1ZVxyXG4gICAgfSlcclxuICB9LFxyXG4gIG9uQWdyZWVDaGFuZ2UoZXZlbnQ6YW55KSB7XHJcbiAgICBjb25zb2xlLmxvZyhldmVudCk7XHJcbiAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICBjaGVja2VkOiBldmVudC5kZXRhaWwsXHJcbiAgICB9KTtcclxuICB9LFxyXG4gIGNoZWNrQWN0dWFsTmFtZShlOmFueSl7XHJcbiAgICBsZXQgeyB2YWx1ZSB9ID0gZS5kZXRhaWxcclxuICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgdmFsaWRhdG9ySW5zdGFuY2UuY2hlY2tGaWVsZCgnYWN0dWFsTmFtZScsdmFsdWUpO1xyXG4gIH0sXHJcbiAgYXN5bmMgZ2V0UGhvbmVOdW1iZXIoZTphbnkpe1xyXG4gICAgY29uc29sZS5sb2coJ2dldFBob25lTnVtYmVyJywgZSk7XHJcbiAgICBpZiAoZS5kZXRhaWwuZXJyTXNnID09ICdnZXRQaG9uZU51bWJlcjpvaycpIHtcclxuICAgICAgbGV0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IHd4LiR1dGlscy50byhcclxuICAgICAgICB3eC4kaHR0cC5yZXF1ZXN0KHtcclxuICAgICAgICAgIHVybDpgL3Nob3BwaW5nL2FjY291bnQuZG8/bT10ZWxSZWdCeUF1dG9SZWdgLFxyXG4gICAgICAgICAgZGF0YTp7XHJcbiAgICAgICAgICAgIFJlZmVycmFsc0NvZGU6ICcnLFxyXG4gICAgICAgICAgICBSZWZlcnJhbHNOYW1lOiAnJyxcclxuICAgICAgICAgICAgZW5jcnlwdGVkRGF0YTogZS5kZXRhaWwuZW5jcnlwdGVkRGF0YSxcclxuICAgICAgICAgICAgaXY6IGUuZGV0YWlsLml2LFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgICAgaWYgKGVycm9yKXtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgdGVsZXBob25lOnJlc3VsdC5UZWxlcGhvbmUsXHJcbiAgICAgICAgcGhvbmVFcnJvcjonJ1xyXG4gICAgICB9KVxyXG4gICAgfSBlbHNle1xyXG4gICAgICBjb25zb2xlLmxvZygn5Y+W5raI5o6I5p2DJyk7XHJcbiAgICAgIHd4LnNob3dUb2FzdCh7XHJcbiAgICAgICAgdGl0bGU6ICflj5bmtojmjojmnYMnLFxyXG4gICAgICAgIGljb246ICdub25lJyxcclxuICAgICAgICBkdXJhdGlvbjogMTAwMFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9LFxyXG4gIC8vIGNoZWNrUGhvbmUoZTphbnkpe1xyXG4gIC8vICAgbGV0IHsgdmFsdWUgfSA9IGUuZGV0YWlsXHJcbiAgLy8gICBjb25zb2xlLmxvZyh2YWx1ZSk7XHJcbiAgLy8gICB2YWxpZGF0b3JJbnN0YW5jZS5jaGVja0ZpZWxkKCdwaG9uZScsdmFsdWUpO1xyXG4gIC8vIH0sXHJcbiAgb25TdWJtaXQ6d3guJHV0aWxzLmRlYm91bmNlKGZ1bmN0aW9uKHRoaXM6YW55KXtcclxuICAgIHRoaXMuc3VibWl0SGFuZGxlcigpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH0pLFxyXG4gIHN1Ym1pdEhhbmRsZXIoKSB7XHJcbiAgICBsZXQge2NoZWNrZWQscmVnaW9uLHRlbGVwaG9uZX0gPSB0aGlzLmRhdGE7XHJcbiAgICBsZXQgY2hlY2tSZWdpb24gPSByZWdpb24ubGVuZ3RoIDwgMTtcclxuICAgIGNvbnNvbGUubG9nKGNoZWNrZWQscmVnaW9uKTtcclxuICAgIGlmIChjaGVja1JlZ2lvbikge1xyXG4gICAgICB3eC5zaG93VG9hc3Qoe1xyXG4gICAgICAgIHRpdGxlOiAn6K+36YCJ5oup5Zyw5Yy6JyxcclxuICAgICAgICBpY29uOiAnbm9uZScsXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgY2hlY2tBbGxEYXRhID0gdmFsaWRhdG9ySW5zdGFuY2UuY2hlY2tBbGxEYXRhKCk7XHJcbiAgICAvLyBsZXQgY2hlY2tBcnIgPSBbY2hlY2tSZWdpb24sY2hlY2tDaGVja2VkLGNoZWNrQWxsRGF0YV07XHJcbiAgICBpZiAoIWNoZWNrQWxsRGF0YSl7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICghdGVsZXBob25lKSB7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgcGhvbmVFcnJvcjon6K+36L6T5YWl5omL5py65Y+3J1xyXG4gICAgICB9KVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoIWNoZWNrZWQpe1xyXG4gICAgICBjb25zb2xlLmxvZygn6K+35ZCM5oSP5ZWG5a625p2h5qy+Jyk7XHJcbiAgICAgIHd4LnNob3dUb2FzdCh7XHJcbiAgICAgICAgdGl0bGU6ICfor7flkIzmhI/llYblrrbmnaHmrL4nLFxyXG4gICAgICAgIGljb246ICdub25lJyxcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKCcuLi4u5o+Q5Lqk5oiQ5YqfJyk7XHJcbiAgICB0aGlzLnBvc3RGb3JtRGF0YSgpO1xyXG4gIH0sXHJcbiAgYXN5bmMgcG9zdEZvcm1EYXRhKCl7XHJcbiAgICBsZXQge3JlZ2lvbixhY3R1YWxOYW1lLHRlbGVwaG9uZX0gPSB0aGlzLmRhdGE7XHJcbiAgICBsZXQgW3Byb3ZpbmNlTmFtZSxjaXR5TmFtZSxjb3VudHlOYW1lXSA9IHJlZ2lvbjtcclxuICAgIGxldCBkYXRhID0ge1xyXG4gICAgICBjb3VudHJ5TmFtZTon5Lit5Zu9JyxcclxuICAgICAgcHJvdmluY2VOYW1lLFxyXG4gICAgICBjaXR5TmFtZSxcclxuICAgICAgY291bnR5TmFtZSxcclxuICAgICAgYWN0dWFsTmFtZSxcclxuICAgICAgdGVsZXBob25lXHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhkYXRhKTtcclxuICAgIGxldCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCB3eC4kdXRpbHMudG8oXHJcbiAgICAgIHd4LiRodHRwLnJlcXVlc3Qoe1xyXG4gICAgICAgIHVybDpgL3Nob3BwaW5nL2N1c3RvbWVyU2lnbnVwLmRvP209c2F2ZUN1c3RvbWVyU2lnbnVwYCxcclxuICAgICAgICBkYXRhLFxyXG4gICAgICAgIG1ldGhvZDonUE9TVCdcclxuICAgICAgfSlcclxuICAgIClcclxuICAgIGlmIChlcnJvcil7XHJcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2cocmVzdWx0KTtcclxuICAgIGlmIChyZXN1bHQuc3RhdHVzPT0nc3VjY2Vzcycpe1xyXG4gICAgICBhd2FpdCB3eC4kY29tbW9uUmVxdWVzdC5nZXRVc2VySW5mbygpO1xyXG4gICAgICBsZXQgZ290byA9IHRoaXMuZGF0YS5nb3RvO1xyXG4gICAgICBpZiAoZ290byl7XHJcbiAgICAgICAgd3gucmVkaXJlY3RUbyh7XHJcbiAgICAgICAgICB1cmw6Z290b1xyXG4gICAgICAgIH0pXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgd3gubmF2aWdhdGVCYWNrKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgfSxcclxuICBpbml0VmFsaWRhdG9yKCl7XHJcbiAgICAvLyDlrp7kvovljJZcclxuICAgIHZhbGlkYXRvckluc3RhbmNlID0gbmV3IE15VmFsaWRhdG9yKHtcclxuICAgICAgcnVsZXM6IHtcclxuICAgICAgICBhY3R1YWxOYW1lOiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICAgIG1pbmxlbmd0aDogMlxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgbWVzc2FnZXM6IHtcclxuICAgICAgICBhY3R1YWxOYW1lOiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogJ+ivt+i+k+WFpeeUqOaIt+WQjScsXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBtdWx0aUNoZWNrOnRydWVcclxuICAgIH0sdGhpcylcclxuICB9LFxyXG59KVxyXG5leHBvcnQge31cclxuIl19
\ No newline at end of file
diff --git a/pages/orderSubmit/orderSubmit.wxml b/pages/orderSubmit/orderSubmit.wxml
index 34134a4..c283812 100644
--- a/pages/orderSubmit/orderSubmit.wxml
+++ b/pages/orderSubmit/orderSubmit.wxml
@@ -45,7 +45,7 @@
 
   <van-cell-group class="my-cell-group">
 <!--    <my-delivery-method bind:getDeliveryMethod="getDeliveryMethod"></my-delivery-method>-->
-    <van-cell title-width="220rpx" class="my-cell seller" border="{{true}}" title="閰嶉�佹柟寮�">
+    <van-cell wx:if="{{order.formId==710802||order.formId==710804}}" title-width="220rpx" class="my-cell seller" border="{{true}}" title="閰嶉�佹柟寮�">
       <view class="">
         {{order.freeName}}
       </view>
diff --git a/pages/signUpCreate/signUpCreate.js b/pages/signUpCreate/signUpCreate.js
index 5e77748..34bbea0 100644
--- a/pages/signUpCreate/signUpCreate.js
+++ b/pages/signUpCreate/signUpCreate.js
@@ -1,15 +1,4 @@
 "use strict";
-var __assign = (this && this.__assign) || function () {
-    __assign = Object.assign || function(t) {
-        for (var s, i = 1, n = arguments.length; i < n; i++) {
-            s = arguments[i];
-            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
-                t[p] = s[p];
-        }
-        return t;
-    };
-    return __assign.apply(this, arguments);
-};
 var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
     return new (P || (P = Promise))(function (resolve, reject) {
         function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -47,6 +36,7 @@
 };
 Object.defineProperty(exports, "__esModule", { value: true });
 var myValidator_1 = require("../../utils/myValidator");
+var promotionsCreate_1 = require("../../modules/promotionsCreate");
 var validatorInstance;
 Page({
     data: {
@@ -83,49 +73,11 @@
     },
     getSaveData: function () {
         return __awaiter(this, void 0, void 0, function () {
-            var doccode, _a, error, result, data, formData;
-            return __generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        doccode = this.data.doccode;
-                        return [4, wx.$utils.to(wx.$http.request({
-                                url: "/shopping/panicBuying.do?m=getPanicBuyingDetail",
-                                data: {
-                                    doccode: doccode,
-                                    isEdit: true,
-                                    SellerOpenId: wx.globalData.OpenId
-                                }
-                            }))];
+            return __generator(this, function (_a) {
+                switch (_a.label) {
+                    case 0: return [4, promotionsCreate_1.getSaveData(this)];
                     case 1:
-                        _a = _b.sent(), error = _a[0], result = _a[1];
-                        if (error) {
-                            console.log(error);
-                            return [2];
-                        }
-                        console.log(result);
-                        data = result.list[0];
-                        formData = {
-                            promotionsTitle: data.title,
-                            originalPrice: data.salesPrice,
-                            promotionDescription: data.description,
-                            startTime: data.effectiveStartDate,
-                            endTime: data.effectiveEndDate,
-                            coverImageList: (data.coverImageUrl && this.getCoverImageList(data)) || [],
-                            imagesList: data.imagesUrl,
-                            coverImage: data.coverImage,
-                            images: data.images,
-                            freeId: data.freeId,
-                        };
-                        this.setData(__assign({}, formData, { coverImageUrl: data.coverImageUrl, sellerList: result.sellerList, storeList: result.storeList, status: data.panicBuyingStatus, delivery: {
-                                freeId: data.freeId,
-                                freeName: data.freeName,
-                                isRequiredAddress: data.isRequiredAddress,
-                                transCosts: data.transCosts,
-                            } }));
-                        console.log('閰嶉�佹暟鎹�傘�傘��', this.data.delivery);
-                        wx.setNavigationBarTitle({
-                            title: data.title
-                        });
+                        _a.sent();
                         return [2];
                 }
             });
@@ -178,171 +130,24 @@
             promotionDescription: value.trim()
         });
     },
-    postFormData: function (data) {
-        return __awaiter(this, void 0, void 0, function () {
-            var _a, error, res;
-            return __generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0: return [4, wx.$utils.to(wx.$http.request({
-                            url: '/shopping/panicBuying.do?m=saveDocCode',
-                            data: data,
-                            method: 'POST'
-                        }))];
-                    case 1:
-                        _a = _b.sent(), error = _a[0], res = _a[1];
-                        if (error) {
-                            console.log(error);
-                            return [2, false];
-                        }
-                        console.log(res);
-                        if (res.state === 'success') {
-                            wx.showToast({
-                                title: '鎴愬姛',
-                                duration: 2000
-                            });
-                            this.setData({
-                                doccode: res.DocCode
-                            });
-                        }
-                        if (res.state === 'failed' && res.sellerCheckedBalance > 0) {
-                            this.setData({
-                                sellerUnCheckedNames: res.sellerUnCheckedNames,
-                                isShowDialog: true
-                            });
-                        }
-                        return [2, res.state === 'success'];
-                }
-            });
-        });
-    },
     onSubmit: wx.$utils.debounce(function () {
         this.submitHandler();
         return;
     }),
     submitHandler: function () {
         return __awaiter(this, void 0, void 0, function () {
-            var timeQuantum, sellerEdit, storeEdit, fileUploader, fileUploaderMultiple, checkStartTime, checkEndTime, checkCoverImage, checkAllData, sellerList, checkDefaultSeller, storeList, checkArr, data, coverImage, coverImageUrl, images, formData;
             return __generator(this, function (_a) {
                 switch (_a.label) {
-                    case 0:
-                        timeQuantum = this.selectComponent('#time-quantum');
-                        sellerEdit = this.selectComponent('#seller-edit');
-                        storeEdit = this.selectComponent('#store-edit');
-                        fileUploader = this.selectComponent('#file-uploader');
-                        fileUploaderMultiple = this.selectComponent('#file-uploader-multiple');
-                        console.log('sellerEdit');
-                        console.log(timeQuantum);
-                        checkStartTime = timeQuantum.checkTime("startTime", "璇烽�夋嫨璁″垝寮�濮嬫椂闂�");
-                        checkEndTime = timeQuantum.checkTime("endTime", "璇烽�夋嫨璁″垝缁撴潫鏃堕棿");
-                        checkCoverImage = fileUploader.checkImages("coverImage", "璇蜂笂浼犱竴寮犲皝闈㈠浘");
-                        checkAllData = validatorInstance.checkAllData();
-                        sellerList = sellerEdit.getSellerList();
-                        if (sellerList.length < 1) {
-                            wx.showToast({
-                                title: '璇烽�夋嫨钀ラ攢浜哄憳',
-                                icon: 'none',
-                                duration: 2000
-                            });
-                            return [2];
-                        }
-                        checkDefaultSeller = sellerEdit.checkDefaultSeller();
-                        if (!checkDefaultSeller) {
-                            wx.showToast({
-                                title: '璇烽�夋嫨榛樿钀ラ攢浜哄憳',
-                                icon: 'none',
-                                duration: 2000
-                            });
-                            return [2];
-                        }
-                        console.log('checkDefaultSeller', checkDefaultSeller);
-                        storeList = storeEdit.getSelectedStoreIdList();
-                        console.log('寰呮彁浜ょ殑闂ㄥ簵id', storeList);
-                        checkArr = [checkStartTime, checkEndTime, checkCoverImage, checkAllData];
-                        data = {};
-                        if (!checkArr.every(function (item) {
-                            return item;
-                        })) return [3, 2];
-                        console.log('....鎻愪氦鎴愬姛');
-                        coverImage = fileUploader.getCoverImageUnid();
-                        coverImageUrl = fileUploader.getImgList()[0].url || '';
-                        this.setData({
-                            coverImageUrl: coverImageUrl
-                        });
-                        images = fileUploaderMultiple.getImagesUnid();
-                        console.log(coverImage, images);
-                        formData = this.data;
-                        data = {
-                            docCode: formData.doccode,
-                            formId: formData.formId,
-                            docStatus: 100,
-                            coverImage: coverImage,
-                            images: images,
-                            effectiveStartDate: formData.startTime,
-                            effectiveEndDate: formData.endTime,
-                            freeId: formData.freeId,
-                            title: formData.promotionsTitle,
-                            salesPrice: Number(formData.originalPrice),
-                            description: formData.promotionDescription,
-                            storeList: storeList,
-                            sellerList: sellerList,
-                        };
-                        console.log('寰呭彂甯冩暟鎹�', data);
-                        return [4, this.postFormData(data)];
+                    case 0: return [4, promotionsCreate_1.promotionsSubmitHandler(this, validatorInstance)];
                     case 1:
-                        if (!(_a.sent()))
-                            return [2];
-                        if (this.data.fromPage == 'edit') {
-                            wx.navigateBack();
-                        }
-                        else {
-                            wx.redirectTo({
-                                url: '../promotionsManageList/promotionsManageList?tab=2'
-                            });
-                        }
-                        return [3, 3];
-                    case 2:
-                        wx.showToast({
-                            title: '椤甸潰杩樻湁閿欒鏈鐞�',
-                            icon: 'none',
-                            duration: 2000
-                        });
-                        console.log('杩樻湁閿欒鏈鐞�');
-                        _a.label = 3;
-                    case 3: return [2];
+                        _a.sent();
+                        return [2];
                 }
             });
         });
     },
     onSave: wx.$utils.debounce(function () {
-        var sellerEdit = this.selectComponent('#seller-edit');
-        var sellerList = sellerEdit.getSellerList();
-        var storeEdit = this.selectComponent('#store-edit');
-        var storeList = storeEdit.getSelectedStoreIdList();
-        console.log('寰呮彁浜ょ殑闂ㄥ簵id', storeList);
-        var fileUploader = this.selectComponent('#file-uploader');
-        var fileUploaderMultiple = this.selectComponent('#file-uploader-multiple');
-        console.log('....鎻愪氦鎴愬姛');
-        var coverImage = fileUploader.getCoverImageUnid();
-        var images = fileUploaderMultiple.getImagesUnid();
-        console.log(coverImage, images);
-        var formData = this.data;
-        var data = {
-            docCode: formData.doccode,
-            formId: formData.formId,
-            docStatus: 0,
-            coverImage: coverImage,
-            images: images,
-            effectiveStartDate: formData.startTime,
-            effectiveEndDate: formData.endTime,
-            freeId: formData.freeId,
-            title: formData.promotionsTitle,
-            salesPrice: Number(formData.originalPrice),
-            description: formData.promotionDescription,
-            storeList: storeList,
-            sellerList: sellerList,
-        };
-        console.log('寰呬繚瀛樻暟鎹�', data);
-        this.postFormData(data);
+        promotionsCreate_1.promotionsSaveHandler(this);
         return;
     }),
     initValidator: function () {
@@ -382,4 +187,4 @@
         };
     }
 });
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnblVwQ3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2lnblVwQ3JlYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLHVEQUFrRDtBQUVsRCxJQUFJLGlCQUE2QixDQUFDO0FBRWxDLElBQUksQ0FBQztJQUNILElBQUksRUFBRTtRQUNKLFFBQVEsRUFBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtRQUMxQyxpQkFBaUIsRUFBQyxFQUFFO1FBQ3BCLE1BQU0sRUFBQyxDQUFDO1FBQ1IsTUFBTSxFQUFDLE1BQU07UUFDYixRQUFRLEVBQUUsRUFBRTtRQUNaLE9BQU8sRUFBQyxFQUFFO1FBQ1YsUUFBUSxFQUFDLEVBQUU7UUFDWCxRQUFRLEVBQUMsRUFBRTtRQUNYLGFBQWEsRUFBQyxDQUFDO1FBQ2Ysb0JBQW9CLEVBQUMsRUFBRTtRQUN2QixhQUFhLEVBQUMsRUFBRTtRQUNoQixZQUFZLEVBQUMsS0FBSztLQUNuQjtJQUNELE1BQU0sWUFBQyxPQUFPO1FBRVosSUFBSSxPQUFPLEdBQUUsT0FBTyxDQUFDLE9BQU8sSUFBRSxFQUFFLENBQUM7UUFDakMsSUFBSSxRQUFRLEdBQUUsT0FBTyxDQUFDLFFBQVEsSUFBRSxFQUFFLENBQUM7UUFDbkMsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7UUFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNYLGFBQWEsRUFBRSx3REFBc0QsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFRO1lBQ3ZGLE9BQU8sU0FBQTtZQUNQLFFBQVEsVUFBQTtZQUNSLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEdBQUMsUUFBUSxDQUFDLCtCQUErQixDQUFDLEdBQUMsR0FBRztTQUN2RixDQUFDLENBQUE7UUFDRixJQUFJLE9BQU8sRUFBRTtZ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QUksRUFBRSw2Q0FBMkMsT0FBUztTQUMzRCxDQUFBO0lBQ0gsQ0FBQztDQUNGLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIGltcG9ydCAqIGFzIGRheWpzIGZyb20gXCJkYXlqc1wiO1xyXG5pbXBvcnQgTXlWYWxpZGF0b3IgZnJvbSBcIi4uLy4uL3V0aWxzL215VmFsaWRhdG9yXCI7XHJcblxyXG5sZXQgdmFsaWRhdG9ySW5zdGFuY2U6TXlWYWxpZGF0b3I7XHJcbi8vIGNvbnN0IGFwcCA9IGdldEFwcDxJQXBwT3B0aW9uPigpO1xyXG5QYWdlKHtcclxuICBkYXRhOiB7XHJcbiAgICBhdXRvc2l6ZTp7IG1heEhlaWdodDogMTIwLCBtaW5IZWlnaHQ6IDUwIH0sXHJcbiAgICB2YWxpZGF0b3JJbnN0YW5jZTp7fSxcclxuICAgIGZyZWVJZDowLFxyXG4gICAgZm9ybUlkOjcxMDgwMywgLy/lip/og73lj7fvvJrnp5LmnYAgNzEwODAyIO+8jCDmiqXlkI3pgoDnuqYgNzEwODAzIO+8jOWboui0rSA3MTA4MDRcclxuICAgIGZvcm1EYXRhOiB7fSxcclxuICAgIGRvY2NvZGU6JycsXHJcbiAgICBmcm9tUGFnZTonJyxcclxuICAgIGRlbGl2ZXJ5Ont9LFxyXG4gICAgZmVlUmF0ZUZvclBheToxLFxyXG4gICAgc2VsbGVyVW5DaGVja2VkTmFtZXM6JycsXHJcbiAgICBjb3ZlckltYWdlVXJsOicnLFxyXG4gICAgaXNTaG93RGlhbG9nOmZhbHNlXHJcbiAgfSxcclxuICBvbkxvYWQob3B0aW9ucykge1xyXG4gICAgLy8gY29uc29sZS5sb2coYXBwKTtcclxuICAgIGxldCBkb2Njb2RlID1vcHRpb25zLmRvY2NvZGV8fCcnO1xyXG4gICAgbGV0IGZyb21QYWdlID1vcHRpb25zLmZyb21QYWdlfHwnJztcclxuICAgIGxldCBzZXR0aW5ncyA9IHd4Lmdsb2JhbERhdGEuc2V0dGluZ3M7XHJcbiAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICBmaWxlVXBsb2FkVXJsOiBgL3Nob3BwaW5nL3BhbmljQnV5aW5nLmRvP209dXBsb2FkQXR0YWNobWVudCZmb3JtaWQ9JHt0aGlzLmRhdGEuZm9ybUlkfWAsXHJcbiAgICAgIGRvY2NvZGUsXHJcbiAgICAgIGZyb21QYWdlLFxyXG4gICAgICBmZWVSYXRlRm9yUGF5OiAoc2V0dGluZ3MuZmVlUmF0ZUZvcld4UGF5K3NldHRpbmdzLnBsYXRmb3JtT3BlcmF0b3JDb21taXNzaW9uUmF0aW8pKjEwMFxyXG4gICAgfSlcclxuICAgIGlmIChkb2Njb2RlKSB7XHJcbiAgICAgIHRoaXMuZ2V0U2F2ZURhdGEoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgc3RvcmVFZGl0ID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyNzdG9yZS1lZGl0Jyk7XHJcbiAgICAgIHN0b3JlRWRpdC5nZXRTdG9yZUxpc3QoKTtcclxuICAgIH1cclxuICB9LFxyXG4gIGFzeW5jIGdldFNhdmVEYXRhKCkge1xyXG4gICAgbGV0IGRvY2NvZGUgPSB0aGlzLmRhdGEuZG9jY29kZTtcclxuICAgIGxldCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCB3eC4kdXRpbHMudG8oXHJcbiAgICAgIHd4LiRodHRwLnJlcXVlc3Qoe1xyXG4gICAgICAgIHVybDpgL3Nob3BwaW5nL3BhbmljQnV5aW5nLmRvP209Z2V0UGFuaWNCdXlpbmdEZXRhaWxgLFxyXG4gICAgICAgIGRhdGE6e1xyXG4gICAgICAgICAgZG9jY29kZSxcclxuICAgICAgICAgIGlzRWRpdDp0cnVlLFxyXG4gICAgICAgICAgU2VsbGVyT3BlbklkOnd4Lmdsb2JhbERhdGEuT3BlbklkXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICAgaWYgKGVycm9yKXtcclxuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG4gICAgbGV0IGRhdGEgPSByZXN1bHQubGlzdFswXTtcclxuICAgIGxldCBmb3JtRGF0YSA9IHtcclxuICAgICAgcHJvbW90aW9uc1RpdGxlOiBkYXRhLnRpdGxlLFxyXG4gICAgICBvcmlnaW5hbFByaWNlOiBkYXRhLnNhbGVzUHJpY2UsXHJcbiAgICAgIHByb21vdGlvbkRlc2NyaXB0aW9uOiBkYXRhLmRlc2NyaXB0aW9uLFxyXG4gICAgICBzdGFydFRpbWU6IGRhdGEuZWZmZWN0aXZlU3RhcnREYXRlLFxyXG4gICAgICBlbmRUaW1lOiBkYXRhLmVmZmVjdGl2ZUVuZERhdGUsXHJcbiAgICAgIGNvdmVySW1hZ2VMaXN0OiAoZGF0YS5jb3ZlckltYWdlVXJsJiZ0aGlzLmdldENvdmVySW1hZ2VMaXN0KGRhdGEpKXx8W10sXHJcbiAgICAgIC8vIGltYWdlc0xpc3Q6IChkYXRhLmltYWdlc1VybC5sZW5ndGg+MCYmdGhpcy5nZXRJbWFnZXNMaXN0KGRhdGEpKXx8W10sXHJcbiAgICAgIGltYWdlc0xpc3Q6IGRhdGEuaW1hZ2VzVXJsLFxyXG4gICAgICBjb3ZlckltYWdlOiBkYXRhLmNvdmVySW1hZ2UsXHJcbiAgICAgIGltYWdlczogZGF0YS5pbWFnZXMsXHJcbiAgICAgIGZyZWVJZDpkYXRhLmZyZWVJZCxcclxuICAgIH07XHJcbiAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAuLi5mb3JtRGF0YSxcclxuICAgICAgY292ZXJJbWFnZVVybDpkYXRhLmNvdmVySW1hZ2VVcmwsXHJcbiAgICAgIHNlbGxlckxpc3Q6cmVzdWx0LnNlbGxlckxpc3QsXHJcbiAgICAgIHN0b3JlTGlzdDpyZXN1bHQuc3RvcmVMaXN0LFxyXG4gICAgICBzdGF0dXM6ZGF0YS5wYW5pY0J1eWluZ1N0YXR1cyxcclxuICAgICAgZGVsaXZlcnk6e1xyXG4gICAgICAgIGZyZWVJZDpkYXRhLmZyZWVJZCxcclxuICAgICAgICBmcmVlTmFtZTpkYXRhLmZyZWVOYW1lLFxyXG4gICAgICAgIGlzUmVxdWlyZWRBZGRyZXNzOmRhdGEuaXNSZXF1aXJlZEFkZHJlc3MsXHJcbiAgICAgICAgdHJhbnNDb3N0czpkYXRhLnRyYW5zQ29zdHMsXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgY29uc29sZS5sb2coJ+mFjemAgeaVsOaNruOAguOAguOAgicsdGhpcy5kYXRhLmRlbGl2ZXJ5KTtcclxuICAgIHd4LnNldE5hdmlnYXRpb25CYXJUaXRsZSh7XHJcbiAgICAgIHRpdGxlOiBkYXRhLnRpdGxlXHJcbiAgICB9KVxyXG4gIH0sXHJcblxyXG4gIGdldENvdmVySW1hZ2VMaXN0KGRhdGE6YW55KXtcclxuICAgIGxldCBbdW5pZCxzZXFdID0gZGF0YS5jb3ZlckltYWdlLnNwbGl0KFwiO1wiKTtcclxuICAgIHJldHVybiBbe1xyXG4gICAgICB1cmw6IGRhdGEuY292ZXJJbWFnZVVybHx8JycsXHJcbiAgICAgIHVuaWQsXHJcbiAgICAgIHNlcVxyXG4gICAgfV1cclxuICB9LFxyXG5cclxuICBvblJlYWR5KCkge1xyXG4gICAgdGhpcy5pbml0VmFsaWRhdG9yKClcclxuICB9LFxyXG4gIHNlbGVjdGVkU3RhcnRUaW1lKGV2ZW50OmFueSkge1xyXG4gICAgY29uc29sZS5sb2coJ+W8gOWniycsZXZlbnQpO1xyXG4gICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgc3RhcnRUaW1lOiBldmVudC5kZXRhaWwuc3RhcnRUaW1lLFxyXG4gICAgfSlcclxuICB9LFxyXG4gIHNlbGVjdGVkRW5kVGltZShldmVudDphbnkpe1xyXG4gICAgY29uc29sZS5sb2coJ+e7k+adnycsZXZlbnQpO1xyXG4gICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgZW5kVGltZTogZXZlbnQuZGV0YWlsLmVuZFRpbWUsXHJcbiAgICB9KVxyXG4gIH0sXHJcblxyXG4gIGNoZWNrUHJvbW90aW9uc1RpdGxlKGU6YW55KXtcclxuICAgIGxldCB7IHZhbHVlIH0gPSBlLmRldGFpbFxyXG4gICAgY29uc29sZS5sb2coZSk7XHJcbiAgICB2YWxpZGF0b3JJbnN0YW5jZS5jaGVja0ZpZWxkKCdwcm9tb3Rpb25zVGl0bGUnLHZhbHVlKTtcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIHByb21vdGlvbnNUaXRsZTp2YWx1ZS50cmltKClcclxuICAgIH0pXHJcbiAgfSxcclxuICBjaGVja09yaWdpbmFsUHJpY2UoZTphbnkpe1xyXG4gICAgbGV0IHsgdmFsdWUgfSA9IGUuZGV0YWlsXHJcbiAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgIHZhbGlkYXRvckluc3RhbmNlLmNoZWNrRmllbGQoJ29yaWdpbmFsUHJpY2UnLHZhbHVlKTtcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIG9yaWdpbmFsUHJpY2U6dmFsdWUudHJpbSgpXHJcbiAgICB9KVxyXG4gIH0sXHJcbiAgY2hlY2tQcm9tb3Rpb25EZXNjcmlwdGlvbihlOmFueSl7XHJcbiAgICBsZXQgeyB2YWx1ZSB9ID0gZS5kZXRhaWxcclxuICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgdmFsaWRhdG9ySW5zdGFuY2UuY2hlY2tGaWVsZCgncHJvbW90aW9uRGVzY3JpcHRpb24nLHZhbHVlKTtcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIHByb21vdGlvbkRlc2NyaXB0aW9uOnZhbHVlLnRyaW0oKVxyXG4gICAgfSlcclxuICB9LFxyXG5cclxuICBhc3luYyBwb3N0Rm9ybURhdGEoZGF0YTpvYmplY3Qpe1xyXG4gICAgbGV0IFtlcnJvciwgcmVzXSA9IGF3YWl0IHd4LiR1dGlscy50byhcclxuICAgICAgd3guJGh0dHAucmVxdWVzdCh7XHJcbiAgICAgICAgdXJsOicvc2hvcHBpbmcvcGFuaWNCdXlpbmcuZG8/bT1zYXZlRG9jQ29kZScsXHJcbiAgICAgICAgZGF0YSxcclxuICAgICAgICBtZXRob2Q6J1BPU1QnXHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgICBpZiAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhyZXMpO1xyXG4gICAgaWYgKHJlcy5zdGF0ZSA9PT0gJ3N1Y2Nlc3MnKSB7XHJcbiAgICAgIHd4LnNob3dUb2FzdCh7XHJcbiAgICAgICAgdGl0bGU6ICfmiJDlip8nLFxyXG4gICAgICAgIGR1cmF0aW9uOiAyMDAwXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgZG9jY29kZTpyZXMuRG9jQ29kZVxyXG4gICAgICB9KVxyXG4gICAgICAvLyBjb25zb2xlLmxvZygn5rS75Yqo5Y2V5Y+3Jyx0aGlzLmRhdGEuZm9ybURhdGEpO1xyXG4gICAgfVxyXG4gICAgaWYgKHJlcy5zdGF0ZSA9PT0gJ2ZhaWxlZCcmJnJlcy5zZWxsZXJDaGVja2VkQmFsYW5jZT4wKSB7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgc2VsbGVyVW5DaGVja2VkTmFtZXM6IHJlcy5zZWxsZXJVbkNoZWNrZWROYW1lcyxcclxuICAgICAgICBpc1Nob3dEaWFsb2c6IHRydWVcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIHJldHVybiByZXMuc3RhdGUgPT09ICdzdWNjZXNzJztcclxuICB9LFxyXG4gIG9uU3VibWl0Ond4LiR1dGlscy5kZWJvdW5jZShmdW5jdGlvbih0aGlzOmFueSl7XHJcbiAgICB0aGlzLnN1Ym1pdEhhbmRsZXIoKTtcclxuICAgIHJldHVybjtcclxuICB9KSxcclxuXHJcbiAgYXN5bmMgc3VibWl0SGFuZGxlcigpIHtcclxuICAgIGxldCB0aW1lUXVhbnR1bSA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjdGltZS1xdWFudHVtJyk7XHJcbiAgICBsZXQgc2VsbGVyRWRpdCA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjc2VsbGVyLWVkaXQnKTtcclxuICAgIGxldCBzdG9yZUVkaXQgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI3N0b3JlLWVkaXQnKTtcclxuICAgIGxldCBmaWxlVXBsb2FkZXIgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI2ZpbGUtdXBsb2FkZXInKTtcclxuICAgIGxldCBmaWxlVXBsb2FkZXJNdWx0aXBsZSA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjZmlsZS11cGxvYWRlci1tdWx0aXBsZScpO1xyXG5cclxuXHJcbiAgICBjb25zb2xlLmxvZygnc2VsbGVyRWRpdCcsKTtcclxuICAgIGNvbnNvbGUubG9nKHRpbWVRdWFudHVtKTtcclxuXHJcbiAgICBsZXQgY2hlY2tTdGFydFRpbWUgPSB0aW1lUXVhbnR1bS5jaGVja1RpbWUoXCJzdGFydFRpbWVcIiwgXCLor7fpgInmi6norqHliJLlvIDlp4vml7bpl7RcIik7XHJcbiAgICBsZXQgY2hlY2tFbmRUaW1lID0gdGltZVF1YW50dW0uY2hlY2tUaW1lKFwiZW5kVGltZVwiLCBcIuivt+mAieaLqeiuoeWIkue7k+adn+aXtumXtFwiKTtcclxuICAgIGxldCBjaGVja0NvdmVySW1hZ2UgPSBmaWxlVXBsb2FkZXIuY2hlY2tJbWFnZXMoXCJjb3ZlckltYWdlXCIsIFwi6K+35LiK5Lyg5LiA5byg5bCB6Z2i5Zu+XCIpO1xyXG4gICAgLy8gbGV0IGNoZWNrSW1hZ2VzID0gZmlsZVVwbG9hZGVyTXVsdGlwbGUuY2hlY2tJbWFnZXMoXCJpbWFnZXNcIiwgXCLor7foh7PlsJHkuIrkvKDkuIDlvKDlm77niYdcIik7XHJcbiAgICBsZXQgY2hlY2tBbGxEYXRhID0gdmFsaWRhdG9ySW5zdGFuY2UuY2hlY2tBbGxEYXRhKCk7XHJcbiAgICAvLyBpZiAodGhpcy5kYXRhLmdvb2RzSW1nTGlzdC5sZW5ndGggPCAxKSB7XHJcbiAgICAvLyAgIGNvbnNvbGUubG9nKCfor7fkuIrkvKDkuqflk4Hlm77niYcnKTtcclxuICAgIC8vIH1cclxuICAgIGxldCBzZWxsZXJMaXN0ID0gc2VsbGVyRWRpdC5nZXRTZWxsZXJMaXN0KCk7XHJcbiAgICBpZiAoc2VsbGVyTGlzdC5sZW5ndGg8MSkge1xyXG4gICAgICB3eC5zaG93VG9hc3Qoe1xyXG4gICAgICAgIHRpdGxlOiAn6K+36YCJ5oup6JCl6ZSA5Lq65ZGYJyxcclxuICAgICAgICBpY29uOiAnbm9uZScsXHJcbiAgICAgICAgZHVyYXRpb246IDIwMDBcclxuICAgICAgfSlcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgY2hlY2tEZWZhdWx0U2VsbGVyID0gc2VsbGVyRWRpdC5jaGVja0RlZmF1bHRTZWxsZXIoKTtcclxuICAgIGlmICghY2hlY2tEZWZhdWx0U2VsbGVyKSB7XHJcbiAgICAgIHd4LnNob3dUb2FzdCh7XHJcbiAgICAgICAgdGl0bGU6ICfor7fpgInmi6npu5jorqTokKXplIDkurrlkZgnLFxyXG4gICAgICAgIGljb246ICdub25lJyxcclxuICAgICAgICBkdXJhdGlvbjogMjAwMFxyXG4gICAgICB9KVxyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKCdjaGVja0RlZmF1bHRTZWxsZXInLGNoZWNrRGVmYXVsdFNlbGxlcik7XHJcblxyXG4gICAgbGV0IHN0b3JlTGlzdCA9IHN0b3JlRWRpdC5nZXRTZWxlY3RlZFN0b3JlSWRMaXN0KCk7XHJcbiAgICBjb25zb2xlLmxvZygn5b6F5o+Q5Lqk55qE6Zeo5bqXaWQnLHN0b3JlTGlzdCk7XHJcblxyXG4gICAgbGV0IGNoZWNrQXJyID0gW2NoZWNrU3RhcnRUaW1lLGNoZWNrRW5kVGltZSxjaGVja0NvdmVySW1hZ2UsY2hlY2tBbGxEYXRhXTtcclxuICAgIGxldCBkYXRhID0ge307XHJcbiAgICBpZiAoY2hlY2tBcnIuZXZlcnkoKGl0ZW0pPT57XHJcbiAgICAgIHJldHVybiBpdGVtXHJcbiAgICB9KSl7XHJcbiAgICAgIGNvbnNvbGUubG9nKCcuLi4u5o+Q5Lqk5oiQ5YqfJyk7XHJcbiAgICAgIGxldCBjb3ZlckltYWdlID0gZmlsZVVwbG9hZGVyLmdldENvdmVySW1hZ2VVbmlkKCk7XHJcbiAgICAgIGxldCBjb3ZlckltYWdlVXJsID0gZmlsZVVwbG9hZGVyLmdldEltZ0xpc3QoKVswXS51cmx8fCcnO1xyXG4gICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgIGNvdmVySW1hZ2VVcmxcclxuICAgICAgfSlcclxuICAgICAgbGV0IGltYWdlcyA9IGZpbGVVcGxvYWRlck11bHRpcGxlLmdldEltYWdlc1VuaWQoKTtcclxuICAgICAgY29uc29sZS5sb2coY292ZXJJbWFnZSxpbWFnZXMpO1xyXG4gICAgICBsZXQgZm9ybURhdGE6IGFueSA9IHRoaXMuZGF0YTtcclxuICAgICAgZGF0YSA9IHtcclxuICAgICAgICBkb2NDb2RlOiBmb3JtRGF0YS5kb2Njb2RlLCAvL+a0u+WKqOWNleWPt++8jOaWsOW7uua0u+WKqOaXtuS4uuepuuWAvO+8jOe8lui+keaXtumcgOimgWRvY2NvZGXlgLxcclxuICAgICAgICBmb3JtSWQ6IGZvcm1EYXRhLmZvcm1JZCwgLy/lip/og73lj7fvvJrnp5LmnYAgNzEwODAyIO+8jCDmiqXlkI3pgoDnuqYgNzEwODAzIO+8jOWboui0rSA3MTA4MDRcclxuICAgICAgICBkb2NTdGF0dXM6MTAwLCAvL+WNleaNrueKtuaAgTogMCDkv53lrZjvvIjotbfojYnvvIkg77yMMTAwIOWPkeW4g1xyXG4gICAgICAgIGNvdmVySW1hZ2UsXHJcbiAgICAgICAgaW1hZ2VzLFxyXG4gICAgICAgIC8vIC4uLnRoaXMuZGF0YS5mb3JtRGF0YSxcclxuXHJcbiAgICAgICAgZWZmZWN0aXZlU3RhcnREYXRlOiBmb3JtRGF0YS5zdGFydFRpbWUsXHJcbiAgICAgICAgZWZmZWN0aXZlRW5kRGF0ZTogZm9ybURhdGEuZW5kVGltZSxcclxuICAgICAgICBmcmVlSWQ6IGZvcm1EYXRhLmZyZWVJZCxcclxuICAgICAgICB0aXRsZTogZm9ybURhdGEucHJvbW90aW9uc1RpdGxlLFxyXG4gICAgICAgIC8vIG9yaWdpbmFsUHJpY2U6IE51bWJlcihmb3JtRGF0YS5vcmlnaW5hbFByaWNlKSxcclxuICAgICAgICBzYWxlc1ByaWNlOiBOdW1iZXIoZm9ybURhdGEub3JpZ2luYWxQcmljZSksXHJcbiAgICAgICAgZGVzY3JpcHRpb246IGZvcm1EYXRhLnByb21vdGlvbkRlc2NyaXB0aW9uLFxyXG4gICAgICAgIHN0b3JlTGlzdCxcclxuICAgICAgICBzZWxsZXJMaXN0LFxyXG4gICAgICB9XHJcbiAgICAgIGNvbnNvbGUubG9nKCflvoXlj5HluIPmlbDmja4nLGRhdGEpO1xyXG4gICAgICBpZiAoIWF3YWl0IHRoaXMucG9zdEZvcm1EYXRhKGRhdGEpKSByZXR1cm47XHJcbiAgICAgIGlmICh0aGlzLmRhdGEuZnJvbVBhZ2U9PSdlZGl0Jyl7XHJcbiAgICAgICAgd3gubmF2aWdhdGVCYWNrKCk7XHJcbiAgICAgIH0gZWxzZXtcclxuICAgICAgICB3eC5yZWRpcmVjdFRvKHtcclxuICAgICAgICAgIHVybDonLi4vcHJvbW90aW9uc01hbmFnZUxpc3QvcHJvbW90aW9uc01hbmFnZUxpc3Q/dGFiPTInXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHd4LnNob3dUb2FzdCh7XHJcbiAgICAgICAgdGl0bGU6ICfpobXpnaLov5jmnInplJnor6/mnKrlpITnkIYnLFxyXG4gICAgICAgIGljb246ICdub25lJyxcclxuICAgICAgICBkdXJhdGlvbjogMjAwMFxyXG4gICAgICB9KVxyXG4gICAgICBjb25zb2xlLmxvZygn6L+Y5pyJ6ZSZ6K+v5pyq5aSE55CGJyk7XHJcbiAgICB9XHJcblxyXG5cclxuICB9LFxyXG5cclxuICBvblNhdmU6d3guJHV0aWxzLmRlYm91bmNlKGZ1bmN0aW9uKHRoaXM6YW55KXtcclxuICAgIGxldCBzZWxsZXJFZGl0ID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyNzZWxsZXItZWRpdCcpO1xyXG4gICAgbGV0IHNlbGxlckxpc3QgPSBzZWxsZXJFZGl0LmdldFNlbGxlckxpc3QoKTtcclxuICAgIGxldCBzdG9yZUVkaXQgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI3N0b3JlLWVkaXQnKTtcclxuICAgIGxldCBzdG9yZUxpc3QgPSBzdG9yZUVkaXQuZ2V0U2VsZWN0ZWRTdG9yZUlkTGlzdCgpO1xyXG4gICAgY29uc29sZS5sb2coJ+W+heaPkOS6pOeahOmXqOW6l2lkJyxzdG9yZUxpc3QpO1xyXG4gICAgbGV0IGZpbGVVcGxvYWRlciA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjZmlsZS11cGxvYWRlcicpO1xyXG4gICAgbGV0IGZpbGVVcGxvYWRlck11bHRpcGxlID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyNmaWxlLXVwbG9hZGVyLW11bHRpcGxlJyk7XHJcbiAgICBjb25zb2xlLmxvZygnLi4uLuaPkOS6pOaIkOWKnycpO1xyXG4gICAgbGV0IGNvdmVySW1hZ2UgPSBmaWxlVXBsb2FkZXIuZ2V0Q292ZXJJbWFnZVVuaWQoKTtcclxuICAgIGxldCBpbWFnZXMgPSBmaWxlVXBsb2FkZXJNdWx0aXBsZS5nZXRJbWFnZXNVbmlkKCk7XHJcblxyXG4gICAgY29uc29sZS5sb2coY292ZXJJbWFnZSxpbWFnZXMpO1xyXG4gICAgbGV0IGZvcm1EYXRhOiBhbnkgPSB0aGlzLmRhdGE7XHJcbiAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgZG9jQ29kZTogZm9ybURhdGEuZG9jY29kZSwgLy/mtLvliqjljZXlj7fvvIzmlrDlu7rmtLvliqjml7bkuLrnqbrlgLzvvIznvJbovpHml7bpnIDopoFkb2Njb2Rl5YC8XHJcbiAgICAgIGZvcm1JZDogZm9ybURhdGEuZm9ybUlkLCAvL+WKn+iDveWPt++8muenkuadgCA3MTA4MDIg77yMIOaKpeWQjemCgOe6piA3MTA4MDMg77yM5Zui6LStIDcxMDgwNFxyXG4gICAgICBkb2NTdGF0dXM6IDAsIC8v5Y2V5o2u54q25oCBOiAwIOS/neWtmO+8iOi1t+iNie+8iSDvvIwxMDAg5Y+R5biDXHJcbiAgICAgIGNvdmVySW1hZ2UsXHJcbiAgICAgIGltYWdlcyxcclxuICAgICAgLy8gLi4udGhpcy5kYXRhLmZvcm1EYXRhLFxyXG5cclxuICAgICAgZWZmZWN0aXZlU3RhcnREYXRlOiBmb3JtRGF0YS5zdGFydFRpbWUsXHJcbiAgICAgIGVmZmVjdGl2ZUVuZERhdGU6IGZvcm1EYXRhLmVuZFRpbWUsXHJcbiAgICAgIGZyZWVJZDogZm9ybURhdGEuZnJlZUlkLFxyXG4gICAgICB0aXRsZTogZm9ybURhdGEucHJvbW90aW9uc1RpdGxlLFxyXG4gICAgICAvLyBvcmlnaW5hbFByaWNlOiBOdW1iZXIoZm9ybURhdGEub3JpZ2luYWxQcmljZSl8fDAsXHJcbiAgICAgIHNhbGVzUHJpY2U6IE51bWJlcihmb3JtRGF0YS5vcmlnaW5hbFByaWNlKSxcclxuICAgICAgZGVzY3JpcHRpb246IGZvcm1EYXRhLnByb21vdGlvbkRlc2NyaXB0aW9uLFxyXG4gICAgICBzdG9yZUxpc3QsXHJcbiAgICAgIHNlbGxlckxpc3QsXHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZygn5b6F5L+d5a2Y5pWw5o2uJyxkYXRhKTtcclxuICAgIHRoaXMucG9zdEZvcm1EYXRhKGRhdGEpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH0pLFxyXG4gIC8vIG9uSW5wdXRTdGFydERhdGUoKSB7fSxcclxuICAvLyBvbklucHV0RW5kRGF0ZSgpIHt9LFxyXG4gIGluaXRWYWxpZGF0b3IoKXtcclxuICAgIC8vIOWunuS+i+WMllxyXG4gICAgdmFsaWRhdG9ySW5zdGFuY2UgPSBuZXcgTXlWYWxpZGF0b3Ioe1xyXG4gICAgICBydWxlczoge1xyXG4gICAgICAgIHByb21vdGlvbnNUaXRsZToge1xyXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgICByYW5nZWxlbmd0aDogWzMsMTRdXHJcbiAgICAgICAgfSxcclxuICAgICAgICBvcmlnaW5hbFByaWNlOiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICAgIG51bWJlcjogdHJ1ZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gcHJvbW90aW9uRGVzY3JpcHRpb246IHtcclxuICAgICAgICAvLyAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICAgICAgLy8gfSxcclxuICAgICAgfSxcclxuICAgICAgbWVzc2FnZXM6IHtcclxuICAgICAgICBwcm9tb3Rpb25zVGl0bGU6IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiAn6K+36L6T5YWl5rS75Yqo5qCH6aKYJyxcclxuICAgICAgICAgIHJhbmdlbGVuZ3RoOiAn5paH5a2X6ZW/5bqm6K+35o6n5Yi25ZyoM+WIsDE05LmL6Ze0J1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb3JpZ2luYWxQcmljZToge1xyXG4gICAgICAgICAgcmVxdWlyZWQ6ICfor7fovpPlhaXmtLvliqjmiqXlkI3otLknLFxyXG4gICAgICAgICAgbnVtYmVyOiAn5Lu35qC85b+F6aG75Li65pWw5a2XJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gcHJvbW90aW9uRGVzY3JpcHRpb246IHtcclxuICAgICAgICAvLyAgIHJlcXVpcmVkOiAn6K+36L6T5YWl5rS75Yqo5o+P6L+wJ1xyXG4gICAgICAgIC8vIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIG11bHRpQ2hlY2s6dHJ1ZVxyXG4gICAgfSx0aGlzKVxyXG4gICAgLy8gdGhpcy5zZXREYXRhKHtcclxuICAgIC8vICAgdmFsaWRhdG9ySW5zdGFuY2VcclxuICAgIC8vIH0pXHJcbiAgICBjb25zb2xlLmxvZygnaGhoaCwnLHZhbGlkYXRvckluc3RhbmNlKTtcclxuICB9LFxyXG4gIG9uU2hhcmVBcHBNZXNzYWdlKCkge1xyXG4gICAgbGV0IGRvY2NvZGU6c3RyaW5nID0gdGhpcy5kYXRhLmRvY2NvZGUgfHwgJyc7XHJcbiAgICAvLyBsZXQgdGl0bGU6c3RyaW5nID0gdGhpcy5kYXRhLnByb21vdGlvbnNEYXRhLnRpdGxlIHx8ICcnO1xyXG4gICAgbGV0IGltYWdlVXJsOnN0cmluZyA9IHRoaXMuZGF0YS5jb3ZlckltYWdlVXJsIHx8ICcnO1xyXG4gICAgbGV0IHNlbGxlclVuQ2hlY2tlZE5hbWVzOnN0cmluZyA9IHRoaXMuZGF0YS5zZWxsZXJVbkNoZWNrZWROYW1lcyB8fCAnJztcclxuICAgIHJldHVybiB7XHJcbiAgICAgIC8vIHRpdGxlOiB1dGlscy5nZXRTaGFyZVRpdGxlKCksXHJcbiAgICAgIHRpdGxlOiBg6K+36JCl6ZSA5Lq65ZGYWyR7c2VsbGVyVW5DaGVja2VkTmFtZXN9XemqjOivgei6q+S7vWAsXHJcbiAgICAgIGltYWdlVXJsLFxyXG4gICAgICBwYXRoOiBgcGFnZXMvc2VsbGVyVmVyaWZ5L3NlbGxlclZlcmlmeT9kb2Njb2RlPSR7ZG9jY29kZX1gLFxyXG4gICAgfVxyXG4gIH1cclxufSlcclxuZXhwb3J0IHt9XHJcbiJdfQ==
\ No newline at end of file
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnblVwQ3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2lnblVwQ3JlYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSx1REFBa0Q7QUFDbEQsbUVBQTJHO0FBQzNHLElBQUksaUJBQTZCLENBQUM7QUFFbEMsSUFBSSxDQUFDO0lBQ0gsSUFBSSxFQUFFO1FBQ0osUUFBUSxFQUFDLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO1FBQzFDLGlCQUFpQixFQUFDLEVBQUU7UUFDcEIsTUFBTSxFQUFDLENBQUM7UUFDUixNQUFNLEVBQUMsTUFBTTtRQUNiLFFBQVEsRUFBRSxFQUFFO1FBQ1osT0FBTyxFQUFDLEVBQUU7UUFDVixRQUFRLEVBQUMsRUFBRTtRQUNYLFFBQVEsRUFBQyxFQUFFO1FBQ1gsYUFBYSxFQUFDLENBQUM7UUFDZixvQkFBb0IsRUFBQyxFQUFFO1FBQ3ZCLGFBQWEsRUFBQyxFQUFFO1FBQ2hCLFlBQVksRUFBQyxLQUFLO0tBQ25CO0lBQ0QsTUFBTSxZQUFDLE9BQU87UUFFWixJQUFJLE9BQU8sR0FBRSxPQUFPLENBQUMsT0FBTyxJQUFFLEVBQUUsQ0FBQztRQUNqQyxJQUFJLFFBQVEsR0FBRSxPQUFPLENBQUMsUUFBUSxJQUFFLEVBQUUsQ0FBQztRQUNuQyxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztRQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ1gsYUFBYSxFQUFFLHdEQUFzRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQVE7WUFDdkYsT0FBTyxTQUFBO1lBQ1AsUUFBUSxVQUFBO1lBQ1IsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDLGVBQWUsR0FBQyxRQUFRLENBQUMsK0JBQStCLENBQUMsR0FBQyxHQUFHO1NBQ3ZGLENBQUMsQ0FBQTtRQUNGLElBQUksT0FBTyxFQUFF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RyxJQUFJLHFCQUFXLENBQUM7WUFDbEMsS0FBSyxFQUFFO2dCQUNMLGVBQWUsRUFBRTtvQkFDZixRQUFRLEVBQUUsSUFBSTtvQkFDZCxXQUFXLEVBQUUsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDO2lCQUNwQjtnQkFDRCxhQUFhLEVBQUU7b0JBQ2IsUUFBUSxFQUFFLElBQUk7b0JBQ2QsTUFBTSxFQUFFLElBQUk7aUJBQ2I7YUFJRjtZQUNELFFBQVEsRUFBRTtnQkFDUixlQUFlLEVBQUU7b0JBQ2YsUUFBUSxFQUFFLFNBQVM7b0JBQ25CLFdBQVcsRUFBRSxnQkFBZ0I7aUJBQzlCO2dCQUNELGFBQWEsRUFBRTtvQkFDYixRQUFRLEVBQUUsVUFBVTtvQkFDcEIsTUFBTSxFQUFFLFNBQVM7aUJBQ2xCO2FBSUY7WUFDRCxVQUFVLEVBQUMsSUFBSTtTQUNoQixFQUFDLElBQUksQ0FBQyxDQUFBO1FBSVAsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBQ0QsaUJBQWlCO1FBQ2YsSUFBSSxPQUFPLEdBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBRTdDLElBQUksUUFBUSxHQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQztRQUNwRCxJQUFJLG9CQUFvQixHQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksRUFBRSxDQUFDO1FBQ3ZFLE9BQU87WUFFTCxLQUFLLEVBQUUsb0NBQVMsb0JBQW9CLDhCQUFPO1lBQzNDLFFBQVEsVUFBQTtZQUNSLElBQUksRUFBRSw2Q0FBMkMsT0FBUztTQUMzRCxDQUFBO0lBQ0gsQ0FBQztDQUNGLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIGltcG9ydCAqIGFzIGRheWpzIGZyb20gXCJkYXlqc1wiO1xyXG5pbXBvcnQgTXlWYWxpZGF0b3IgZnJvbSBcIi4uLy4uL3V0aWxzL215VmFsaWRhdG9yXCI7XHJcbmltcG9ydCB7Z2V0U2F2ZURhdGEsIHByb21vdGlvbnNTYXZlSGFuZGxlciwgcHJvbW90aW9uc1N1Ym1pdEhhbmRsZXJ9IGZyb20gXCIuLi8uLi9tb2R1bGVzL3Byb21vdGlvbnNDcmVhdGVcIjtcclxubGV0IHZhbGlkYXRvckluc3RhbmNlOk15VmFsaWRhdG9yO1xyXG4vLyBjb25zdCBhcHAgPSBnZXRBcHA8SUFwcE9wdGlvbj4oKTtcclxuUGFnZSh7XHJcbiAgZGF0YToge1xyXG4gICAgYXV0b3NpemU6eyBtYXhIZWlnaHQ6IDEyMCwgbWluSGVpZ2h0OiA1MCB9LFxyXG4gICAgdmFsaWRhdG9ySW5zdGFuY2U6e30sXHJcbiAgICBmcmVlSWQ6MCxcclxuICAgIGZvcm1JZDo3MTA4MDMsIC8v5Yqf6IO95Y+377ya56eS5p2AIDcxMDgwMiDvvIwg5oql5ZCN6YKA57qmIDcxMDgwMyDvvIzlm6LotK0gNzEwODA0XHJcbiAgICBmb3JtRGF0YToge30sXHJcbiAgICBkb2Njb2RlOicnLFxyXG4gICAgZnJvbVBhZ2U6JycsXHJcbiAgICBkZWxpdmVyeTp7fSxcclxuICAgIGZlZVJhdGVGb3JQYXk6MSxcclxuICAgIHNlbGxlclVuQ2hlY2tlZE5hbWVzOicnLFxyXG4gICAgY292ZXJJbWFnZVVybDonJyxcclxuICAgIGlzU2hvd0RpYWxvZzpmYWxzZVxyXG4gIH0sXHJcbiAgb25Mb2FkKG9wdGlvbnMpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKGFwcCk7XHJcbiAgICBsZXQgZG9jY29kZSA9b3B0aW9ucy5kb2Njb2RlfHwnJztcclxuICAgIGxldCBmcm9tUGFnZSA9b3B0aW9ucy5mcm9tUGFnZXx8Jyc7XHJcbiAgICBsZXQgc2V0dGluZ3MgPSB3eC5nbG9iYWxEYXRhLnNldHRpbmdzO1xyXG4gICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgZmlsZVVwbG9hZFVybDogYC9zaG9wcGluZy9wYW5pY0J1eWluZy5kbz9tPXVwbG9hZEF0dGFjaG1lbnQmZm9ybWlkPSR7dGhpcy5kYXRhLmZvcm1JZH1gLFxyXG4gICAgICBkb2Njb2RlLFxyXG4gICAgICBmcm9tUGFnZSxcclxuICAgICAgZmVlUmF0ZUZvclBheTogKHNldHRpbmdzLmZlZVJhdGVGb3JXeFBheStzZXR0aW5ncy5wbGF0Zm9ybU9wZXJhdG9yQ29tbWlzc2lvblJhdGlvKSoxMDBcclxuICAgIH0pXHJcbiAgICBpZiAoZG9jY29kZSkge1xyXG4gICAgICB0aGlzLmdldFNhdmVEYXRhKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IHN0b3JlRWRpdCA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjc3RvcmUtZWRpdCcpO1xyXG4gICAgICBzdG9yZUVkaXQuZ2V0U3RvcmVMaXN0KCk7XHJcbiAgICB9XHJcbiAgfSxcclxuICBhc3luYyBnZXRTYXZlRGF0YSgpIHtcclxuICAgIGF3YWl0IGdldFNhdmVEYXRhKHRoaXMpXHJcbiAgICAvLyBsZXQgZG9jY29kZSA9IHRoaXMuZGF0YS5kb2Njb2RlO1xyXG4gICAgLy8gbGV0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IHd4LiR1dGlscy50byhcclxuICAgIC8vICAgd3guJGh0dHAucmVxdWVzdCh7XHJcbiAgICAvLyAgICAgdXJsOmAvc2hvcHBpbmcvcGFuaWNCdXlpbmcuZG8/bT1nZXRQYW5pY0J1eWluZ0RldGFpbGAsXHJcbiAgICAvLyAgICAgZGF0YTp7XHJcbiAgICAvLyAgICAgICBkb2Njb2RlLFxyXG4gICAgLy8gICAgICAgaXNFZGl0OnRydWUsXHJcbiAgICAvLyAgICAgICBTZWxsZXJPcGVuSWQ6d3guZ2xvYmFsRGF0YS5PcGVuSWRcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgIH0pXHJcbiAgICAvLyApXHJcbiAgICAvLyBpZiAoZXJyb3Ipe1xyXG4gICAgLy8gICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAvLyAgIHJldHVybjtcclxuICAgIC8vIH1cclxuICAgIC8vIGNvbnNvbGUubG9nKHJlc3VsdCk7XHJcbiAgICAvLyBsZXQgZGF0YSA9IHJlc3VsdC5saXN0WzBdO1xyXG4gICAgLy8gbGV0IGZvcm1EYXRhID0ge1xyXG4gICAgLy8gICBwcm9tb3Rpb25zVGl0bGU6IGRhdGEudGl0bGUsXHJcbiAgICAvLyAgIG9yaWdpbmFsUHJpY2U6IGRhdGEuc2FsZXNQcmljZSxcclxuICAgIC8vICAgcHJvbW90aW9uRGVzY3JpcHRpb246IGRhdGEuZGVzY3JpcHRpb24sXHJcbiAgICAvLyAgIHN0YXJ0VGltZTogZGF0YS5lZmZlY3RpdmVTdGFydERhdGUsXHJcbiAgICAvLyAgIGVuZFRpbWU6IGRhdGEuZWZmZWN0aXZlRW5kRGF0ZSxcclxuICAgIC8vICAgY292ZXJJbWFnZUxpc3Q6IChkYXRhLmNvdmVySW1hZ2VVcmwmJnRoaXMuZ2V0Q292ZXJJbWFnZUxpc3QoZGF0YSkpfHxbXSxcclxuICAgIC8vICAgLy8gaW1hZ2VzTGlzdDogKGRhdGEuaW1hZ2VzVXJsLmxlbmd0aD4wJiZ0aGlzLmdldEltYWdlc0xpc3QoZGF0YSkpfHxbXSxcclxuICAgIC8vICAgaW1hZ2VzTGlzdDogZGF0YS5pbWFnZXNVcmwsXHJcbiAgICAvLyAgIGNvdmVySW1hZ2U6IGRhdGEuY292ZXJJbWFnZSxcclxuICAgIC8vICAgaW1hZ2VzOiBkYXRhLmltYWdlcyxcclxuICAgIC8vICAgZnJlZUlkOmRhdGEuZnJlZUlkLFxyXG4gICAgLy8gfTtcclxuICAgIC8vIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAvLyAgIC4uLmZvcm1EYXRhLFxyXG4gICAgLy8gICBjb3ZlckltYWdlVXJsOmRhdGEuY292ZXJJbWFnZVVybCxcclxuICAgIC8vICAgc2VsbGVyTGlzdDpyZXN1bHQuc2VsbGVyTGlzdCxcclxuICAgIC8vICAgc3RvcmVMaXN0OnJlc3VsdC5zdG9yZUxpc3QsXHJcbiAgICAvLyAgIHN0YXR1czpkYXRhLnBhbmljQnV5aW5nU3RhdHVzLFxyXG4gICAgLy8gICBkZWxpdmVyeTp7XHJcbiAgICAvLyAgICAgZnJlZUlkOmRhdGEuZnJlZUlkLFxyXG4gICAgLy8gICAgIGZyZWVOYW1lOmRhdGEuZnJlZU5hbWUsXHJcbiAgICAvLyAgICAgaXNSZXF1aXJlZEFkZHJlc3M6ZGF0YS5pc1JlcXVpcmVkQWRkcmVzcyxcclxuICAgIC8vICAgICB0cmFuc0Nvc3RzOmRhdGEudHJhbnNDb3N0cyxcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSk7XHJcbiAgICAvLyBjb25zb2xlLmxvZygn6YWN6YCB5pWw5o2u44CC44CC44CCJyx0aGlzLmRhdGEuZGVsaXZlcnkpO1xyXG4gICAgLy8gd3guc2V0TmF2aWdhdGlvbkJhclRpdGxlKHtcclxuICAgIC8vICAgdGl0bGU6IGRhdGEudGl0bGVcclxuICAgIC8vIH0pXHJcbiAgfSxcclxuXHJcbiAgZ2V0Q292ZXJJbWFnZUxpc3QoZGF0YTphbnkpe1xyXG4gICAgbGV0IFt1bmlkLHNlcV0gPSBkYXRhLmNvdmVySW1hZ2Uuc3BsaXQoXCI7XCIpO1xyXG4gICAgcmV0dXJuIFt7XHJcbiAgICAgIHVybDogZGF0YS5jb3ZlckltYWdlVXJsfHwnJyxcclxuICAgICAgdW5pZCxcclxuICAgICAgc2VxXHJcbiAgICB9XVxyXG4gIH0sXHJcblxyXG4gIG9uUmVhZHkoKSB7XHJcbiAgICB0aGlzLmluaXRWYWxpZGF0b3IoKVxyXG4gIH0sXHJcbiAgc2VsZWN0ZWRTdGFydFRpbWUoZXZlbnQ6YW55KSB7XHJcbiAgICBjb25zb2xlLmxvZygn5byA5aeLJyxldmVudCk7XHJcbiAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICBzdGFydFRpbWU6IGV2ZW50LmRldGFpbC5zdGFydFRpbWUsXHJcbiAgICB9KVxyXG4gIH0sXHJcbiAgc2VsZWN0ZWRFbmRUaW1lKGV2ZW50OmFueSl7XHJcbiAgICBjb25zb2xlLmxvZygn57uT5p2fJyxldmVudCk7XHJcbiAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICBlbmRUaW1lOiBldmVudC5kZXRhaWwuZW5kVGltZSxcclxuICAgIH0pXHJcbiAgfSxcclxuXHJcbiAgY2hlY2tQcm9tb3Rpb25zVGl0bGUoZTphbnkpe1xyXG4gICAgbGV0IHsgdmFsdWUgfSA9IGUuZGV0YWlsXHJcbiAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgIHZhbGlkYXRvckluc3RhbmNlLmNoZWNrRmllbGQoJ3Byb21vdGlvbnNUaXRsZScsdmFsdWUpO1xyXG4gICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgcHJvbW90aW9uc1RpdGxlOnZhbHVlLnRyaW0oKVxyXG4gICAgfSlcclxuICB9LFxyXG4gIGNoZWNrT3JpZ2luYWxQcmljZShlOmFueSl7XHJcbiAgICBsZXQgeyB2YWx1ZSB9ID0gZS5kZXRhaWxcclxuICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgdmFsaWRhdG9ySW5zdGFuY2UuY2hlY2tGaWVsZCgnb3JpZ2luYWxQcmljZScsdmFsdWUpO1xyXG4gICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgb3JpZ2luYWxQcmljZTp2YWx1ZS50cmltKClcclxuICAgIH0pXHJcbiAgfSxcclxuICBjaGVja1Byb21vdGlvbkRlc2NyaXB0aW9uKGU6YW55KXtcclxuICAgIGxldCB7IHZhbHVlIH0gPSBlLmRldGFpbFxyXG4gICAgY29uc29sZS5sb2coZSk7XHJcbiAgICB2YWxpZGF0b3JJbnN0YW5jZS5jaGVja0ZpZWxkKCdwcm9tb3Rpb25EZXNjcmlwdGlvbicsdmFsdWUpO1xyXG4gICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgcHJvbW90aW9uRGVzY3JpcHRpb246dmFsdWUudHJpbSgpXHJcbiAgICB9KVxyXG4gIH0sXHJcblxyXG4gIC8vIGFzeW5jIHBvc3RGb3JtRGF0YShkYXRhOm9iamVjdCl7XHJcbiAgLy8gICBsZXQgW2Vycm9yLCByZXNdID0gYXdhaXQgd3guJHV0aWxzLnRvKFxyXG4gIC8vICAgICB3eC4kaHR0cC5yZXF1ZXN0KHtcclxuICAvLyAgICAgICB1cmw6Jy9zaG9wcGluZy9wYW5pY0J1eWluZy5kbz9tPXNhdmVEb2NDb2RlJyxcclxuICAvLyAgICAgICBkYXRhLFxyXG4gIC8vICAgICAgIG1ldGhvZDonUE9TVCdcclxuICAvLyAgICAgfSlcclxuICAvLyAgIClcclxuICAvLyAgIGlmIChlcnJvcikge1xyXG4gIC8vICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgLy8gICAgIHJldHVybiBmYWxzZTtcclxuICAvLyAgIH1cclxuICAvLyAgIGNvbnNvbGUubG9nKHJlcyk7XHJcbiAgLy8gICBpZiAocmVzLnN0YXRlID09PSAnc3VjY2VzcycpIHtcclxuICAvLyAgICAgd3guc2hvd1RvYXN0KHtcclxuICAvLyAgICAgICB0aXRsZTogJ+aIkOWKnycsXHJcbiAgLy8gICAgICAgZHVyYXRpb246IDIwMDBcclxuICAvLyAgICAgfSlcclxuICAvLyAgICAgdGhpcy5zZXREYXRhKHtcclxuICAvLyAgICAgICBkb2Njb2RlOnJlcy5Eb2NDb2RlXHJcbiAgLy8gICAgIH0pXHJcbiAgLy8gICAgIC8vIGNvbnNvbGUubG9nKCfmtLvliqjljZXlj7cnLHRoaXMuZGF0YS5mb3JtRGF0YSk7XHJcbiAgLy8gICB9XHJcbiAgLy8gICBpZiAocmVzLnN0YXRlID09PSAnZmFpbGVkJyYmcmVzLnNlbGxlckNoZWNrZWRCYWxhbmNlPjApIHtcclxuICAvLyAgICAgdGhpcy5zZXREYXRhKHtcclxuICAvLyAgICAgICBzZWxsZXJVbkNoZWNrZWROYW1lczogcmVzLnNlbGxlclVuQ2hlY2tlZE5hbWVzLFxyXG4gIC8vICAgICAgIGlzU2hvd0RpYWxvZzogdHJ1ZVxyXG4gIC8vICAgICB9KVxyXG4gIC8vICAgfVxyXG4gIC8vICAgcmV0dXJuIHJlcy5zdGF0ZSA9PT0gJ3N1Y2Nlc3MnO1xyXG4gIC8vIH0sXHJcbiAgb25TdWJtaXQ6d3guJHV0aWxzLmRlYm91bmNlKGZ1bmN0aW9uKHRoaXM6YW55KXtcclxuICAgIHRoaXMuc3VibWl0SGFuZGxlcigpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH0pLFxyXG5cclxuICBhc3luYyBzdWJtaXRIYW5kbGVyKCkge1xyXG4gICAgYXdhaXQgcHJvbW90aW9uc1N1Ym1pdEhhbmRsZXIodGhpcyx2YWxpZGF0b3JJbnN0YW5jZSk7XHJcbiAgICByZXR1cm47XHJcbiAgICAvLyBsZXQgdGltZVF1YW50dW0gPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI3RpbWUtcXVhbnR1bScpO1xyXG4gICAgLy8gbGV0IHNlbGxlckVkaXQgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI3NlbGxlci1lZGl0Jyk7XHJcbiAgICAvLyBsZXQgc3RvcmVFZGl0ID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyNzdG9yZS1lZGl0Jyk7XHJcbiAgICAvLyBsZXQgZmlsZVVwbG9hZGVyID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyNmaWxlLXVwbG9hZGVyJyk7XHJcbiAgICAvLyBsZXQgZmlsZVVwbG9hZGVyTXVsdGlwbGUgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI2ZpbGUtdXBsb2FkZXItbXVsdGlwbGUnKTtcclxuICAgIC8vXHJcbiAgICAvL1xyXG4gICAgLy8gY29uc29sZS5sb2coJ3NlbGxlckVkaXQnLCk7XHJcbiAgICAvLyBjb25zb2xlLmxvZyh0aW1lUXVhbnR1bSk7XHJcbiAgICAvL1xyXG4gICAgLy8gbGV0IGNoZWNrU3RhcnRUaW1lID0gdGltZVF1YW50dW0uY2hlY2tUaW1lKFwic3RhcnRUaW1lXCIsIFwi6K+36YCJ5oup6K6h5YiS5byA5aeL5pe26Ze0XCIpO1xyXG4gICAgLy8gbGV0IGNoZWNrRW5kVGltZSA9IHRpbWVRdWFudHVtLmNoZWNrVGltZShcImVuZFRpbWVcIiwgXCLor7fpgInmi6norqHliJLnu5PmnZ/ml7bpl7RcIik7XHJcbiAgICAvLyBsZXQgY2hlY2tDb3ZlckltYWdlID0gZmlsZVVwbG9hZGVyLmNoZWNrSW1hZ2VzKFwiY292ZXJJbWFnZVwiLCBcIuivt+S4iuS8oOS4gOW8oOWwgemdouWbvlwiKTtcclxuICAgIC8vIC8vIGxldCBjaGVja0ltYWdlcyA9IGZpbGVVcGxvYWRlck11bHRpcGxlLmNoZWNrSW1hZ2VzKFwiaW1hZ2VzXCIsIFwi6K+36Iez5bCR5LiK5Lyg5LiA5byg5Zu+54mHXCIpO1xyXG4gICAgLy8gbGV0IGNoZWNrQWxsRGF0YSA9IHZhbGlkYXRvckluc3RhbmNlLmNoZWNrQWxsRGF0YSgpO1xyXG4gICAgLy8gLy8gaWYgKHRoaXMuZGF0YS5nb29kc0ltZ0xpc3QubGVuZ3RoIDwgMSkge1xyXG4gICAgLy8gLy8gICBjb25zb2xlLmxvZygn6K+35LiK5Lyg5Lqn5ZOB5Zu+54mHJyk7XHJcbiAgICAvLyAvLyB9XHJcbiAgICAvLyBsZXQgc2VsbGVyTGlzdCA9IHNlbGxlckVkaXQuZ2V0U2VsbGVyTGlzdCgpO1xyXG4gICAgLy8gaWYgKHNlbGxlckxpc3QubGVuZ3RoPDEpIHtcclxuICAgIC8vICAgd3guc2hvd1RvYXN0KHtcclxuICAgIC8vICAgICB0aXRsZTogJ+ivt+mAieaLqeiQpemUgOS6uuWRmCcsXHJcbiAgICAvLyAgICAgaWNvbjogJ25vbmUnLFxyXG4gICAgLy8gICAgIGR1cmF0aW9uOiAyMDAwXHJcbiAgICAvLyAgIH0pXHJcbiAgICAvLyAgIHJldHVyblxyXG4gICAgLy8gfVxyXG4gICAgLy8gbGV0IGNoZWNrRGVmYXVsdFNlbGxlciA9IHNlbGxlckVkaXQuY2hlY2tEZWZhdWx0U2VsbGVyKCk7XHJcbiAgICAvLyBpZiAoIWNoZWNrRGVmYXVsdFNlbGxlcikge1xyXG4gICAgLy8gICB3eC5zaG93VG9hc3Qoe1xyXG4gICAgLy8gICAgIHRpdGxlOiAn6K+36YCJ5oup6buY6K6k6JCl6ZSA5Lq65ZGYJyxcclxuICAgIC8vICAgICBpY29uOiAnbm9uZScsXHJcbiAgICAvLyAgICAgZHVyYXRpb246IDIwMDBcclxuICAgIC8vICAgfSlcclxuICAgIC8vICAgcmV0dXJuXHJcbiAgICAvLyB9XHJcbiAgICAvLyBjb25zb2xlLmxvZygnY2hlY2tEZWZhdWx0U2VsbGVyJyxjaGVja0RlZmF1bHRTZWxsZXIpO1xyXG4gICAgLy9cclxuICAgIC8vIGxldCBzdG9yZUxpc3QgPSBzdG9yZUVkaXQuZ2V0U2VsZWN0ZWRTdG9yZUlkTGlzdCgpO1xyXG4gICAgLy8gY29uc29sZS5sb2coJ+W+heaPkOS6pOeahOmXqOW6l2lkJyxzdG9yZUxpc3QpO1xyXG4gICAgLy9cclxuICAgIC8vIGxldCBjaGVja0FyciA9IFtjaGVja1N0YXJ0VGltZSxjaGVja0VuZFRpbWUsY2hlY2tDb3ZlckltYWdlLGNoZWNrQWxsRGF0YV07XHJcbiAgICAvLyBsZXQgZGF0YSA9IHt9O1xyXG4gICAgLy8gaWYgKGNoZWNrQXJyLmV2ZXJ5KChpdGVtKT0+e1xyXG4gICAgLy8gICByZXR1cm4gaXRlbVxyXG4gICAgLy8gfSkpe1xyXG4gICAgLy8gICBjb25zb2xlLmxvZygnLi4uLuaPkOS6pOaIkOWKnycpO1xyXG4gICAgLy8gICBsZXQgY292ZXJJbWFnZSA9IGZpbGVVcGxvYWRlci5nZXRDb3ZlckltYWdlVW5pZCgpO1xyXG4gICAgLy8gICBsZXQgY292ZXJJbWFnZVVybCA9IGZpbGVVcGxvYWRlci5nZXRJbWdMaXN0KClbMF0udXJsfHwnJztcclxuICAgIC8vICAgdGhpcy5zZXREYXRhKHtcclxuICAgIC8vICAgICBjb3ZlckltYWdlVXJsXHJcbiAgICAvLyAgIH0pXHJcbiAgICAvLyAgIGxldCBpbWFnZXMgPSBmaWxlVXBsb2FkZXJNdWx0aXBsZS5nZXRJbWFnZXNVbmlkKCk7XHJcbiAgICAvLyAgIGNvbnNvbGUubG9nKGNvdmVySW1hZ2UsaW1hZ2VzKTtcclxuICAgIC8vICAgbGV0IGZvcm1EYXRhOiBhbnkgPSB0aGlzLmRhdGE7XHJcbiAgICAvLyAgIGRhdGEgPSB7XHJcbiAgICAvLyAgICAgZG9jQ29kZTogZm9ybURhdGEuZG9jY29kZSwgLy/mtLvliqjljZXlj7fvvIzmlrDlu7rmtLvliqjml7bkuLrnqbrlgLzvvIznvJbovpHml7bpnIDopoFkb2Njb2Rl5YC8XHJcbiAgICAvLyAgICAgZm9ybUlkOiBmb3JtRGF0YS5mb3JtSWQsIC8v5Yqf6IO95Y+377ya56eS5p2AIDcxMDgwMiDvvIwg5oql5ZCN6YKA57qmIDcxMDgwMyDvvIzlm6LotK0gNzEwODA0XHJcbiAgICAvLyAgICAgZG9jU3RhdHVzOjEwMCwgLy/ljZXmja7nirbmgIE6IDAg5L+d5a2Y77yI6LW36I2J77yJIO+8jDEwMCDlj5HluINcclxuICAgIC8vICAgICBjb3ZlckltYWdlLFxyXG4gICAgLy8gICAgIGltYWdlcyxcclxuICAgIC8vICAgICAvLyAuLi50aGlzLmRhdGEuZm9ybURhdGEsXHJcbiAgICAvL1xyXG4gICAgLy8gICAgIGVmZmVjdGl2ZVN0YXJ0RGF0ZTogZm9ybURhdGEuc3RhcnRUaW1lLFxyXG4gICAgLy8gICAgIGVmZmVjdGl2ZUVuZERhdGU6IGZvcm1EYXRhLmVuZFRpbWUsXHJcbiAgICAvLyAgICAgZnJlZUlkOiBmb3JtRGF0YS5mcmVlSWQsXHJcbiAgICAvLyAgICAgdGl0bGU6IGZvcm1EYXRhLnByb21vdGlvbnNUaXRsZSxcclxuICAgIC8vICAgICAvLyBvcmlnaW5hbFByaWNlOiBOdW1iZXIoZm9ybURhdGEub3JpZ2luYWxQcmljZSksXHJcbiAgICAvLyAgICAgc2FsZXNQcmljZTogTnVtYmVyKGZvcm1EYXRhLm9yaWdpbmFsUHJpY2UpLFxyXG4gICAgLy8gICAgIGRlc2NyaXB0aW9uOiBmb3JtRGF0YS5wcm9tb3Rpb25EZXNjcmlwdGlvbixcclxuICAgIC8vICAgICBzdG9yZUxpc3QsXHJcbiAgICAvLyAgICAgc2VsbGVyTGlzdCxcclxuICAgIC8vICAgfVxyXG4gICAgLy8gICBjb25zb2xlLmxvZygn5b6F5Y+R5biD5pWw5o2uJyxkYXRhKTtcclxuICAgIC8vICAgaWYgKCFhd2FpdCB0aGlzLnBvc3RGb3JtRGF0YShkYXRhKSkgcmV0dXJuO1xyXG4gICAgLy8gICBpZiAodGhpcy5kYXRhLmZyb21QYWdlPT0nZWRpdCcpe1xyXG4gICAgLy8gICAgIHd4Lm5hdmlnYXRlQmFjaygpO1xyXG4gICAgLy8gICB9IGVsc2V7XHJcbiAgICAvLyAgICAgd3gucmVkaXJlY3RUbyh7XHJcbiAgICAvLyAgICAgICB1cmw6Jy4uL3Byb21vdGlvbnNNYW5hZ2VMaXN0L3Byb21vdGlvbnNNYW5hZ2VMaXN0P3RhYj0yJ1xyXG4gICAgLy8gICAgIH0pXHJcbiAgICAvLyAgIH1cclxuICAgIC8vXHJcbiAgICAvLyB9IGVsc2Uge1xyXG4gICAgLy8gICB3eC5zaG93VG9hc3Qoe1xyXG4gICAgLy8gICAgIHRpdGxlOiAn6aG16Z2i6L+Y5pyJ6ZSZ6K+v5pyq5aSE55CGJyxcclxuICAgIC8vICAgICBpY29uOiAnbm9uZScsXHJcbiAgICAvLyAgICAgZHVyYXRpb246IDIwMDBcclxuICAgIC8vICAgfSlcclxuICAgIC8vICAgY29uc29sZS5sb2coJ+i/mOaciemUmeivr+acquWkhOeQhicpO1xyXG4gICAgLy8gfVxyXG5cclxuXHJcbiAgfSxcclxuXHJcbiAgb25TYXZlOnd4LiR1dGlscy5kZWJvdW5jZShmdW5jdGlvbih0aGlzOmFueSl7XHJcbiAgICBwcm9tb3Rpb25zU2F2ZUhhbmRsZXIodGhpcyk7XHJcbiAgICByZXR1cm47XHJcbiAgICAvLyBsZXQgc2VsbGVyRWRpdCA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjc2VsbGVyLWVkaXQnKTtcclxuICAgIC8vIGxldCBzZWxsZXJMaXN0ID0gc2VsbGVyRWRpdC5nZXRTZWxsZXJMaXN0KCk7XHJcbiAgICAvLyBsZXQgc3RvcmVFZGl0ID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyNzdG9yZS1lZGl0Jyk7XHJcbiAgICAvLyBsZXQgc3RvcmVMaXN0ID0gc3RvcmVFZGl0LmdldFNlbGVjdGVkU3RvcmVJZExpc3QoKTtcclxuICAgIC8vIGNvbnNvbGUubG9nKCflvoXmj5DkuqTnmoTpl6jlupdpZCcsc3RvcmVMaXN0KTtcclxuICAgIC8vIGxldCBmaWxlVXBsb2FkZXIgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI2ZpbGUtdXBsb2FkZXInKTtcclxuICAgIC8vIGxldCBmaWxlVXBsb2FkZXJNdWx0aXBsZSA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjZmlsZS11cGxvYWRlci1tdWx0aXBsZScpO1xyXG4gICAgLy8gY29uc29sZS5sb2coJy4uLi7mj5DkuqTmiJDlip8nKTtcclxuICAgIC8vIGxldCBjb3ZlckltYWdlID0gZmlsZVVwbG9hZGVyLmdldENvdmVySW1hZ2VVbmlkKCk7XHJcbiAgICAvLyBsZXQgaW1hZ2VzID0gZmlsZVVwbG9hZGVyTXVsdGlwbGUuZ2V0SW1hZ2VzVW5pZCgpO1xyXG4gICAgLy9cclxuICAgIC8vIGNvbnNvbGUubG9nKGNvdmVySW1hZ2UsaW1hZ2VzKTtcclxuICAgIC8vIGxldCBmb3JtRGF0YTogYW55ID0gdGhpcy5kYXRhO1xyXG4gICAgLy8gbGV0IGRhdGEgPSB7XHJcbiAgICAvLyAgIGRvY0NvZGU6IGZvcm1EYXRhLmRvY2NvZGUsIC8v5rS75Yqo5Y2V5Y+377yM5paw5bu65rS75Yqo5pe25Li656m65YC877yM57yW6L6R5pe26ZyA6KaBZG9jY29kZeWAvFxyXG4gICAgLy8gICBmb3JtSWQ6IGZvcm1EYXRhLmZvcm1JZCwgLy/lip/og73lj7fvvJrnp5LmnYAgNzEwODAyIO+8jCDmiqXlkI3pgoDnuqYgNzEwODAzIO+8jOWboui0rSA3MTA4MDRcclxuICAgIC8vICAgZG9jU3RhdHVzOiAwLCAvL+WNleaNrueKtuaAgTogMCDkv53lrZjvvIjotbfojYnvvIkg77yMMTAwIOWPkeW4g1xyXG4gICAgLy8gICBjb3ZlckltYWdlLFxyXG4gICAgLy8gICBpbWFnZXMsXHJcbiAgICAvLyAgIC8vIC4uLnRoaXMuZGF0YS5mb3JtRGF0YSxcclxuICAgIC8vXHJcbiAgICAvLyAgIGVmZmVjdGl2ZVN0YXJ0RGF0ZTogZm9ybURhdGEuc3RhcnRUaW1lLFxyXG4gICAgLy8gICBlZmZlY3RpdmVFbmREYXRlOiBmb3JtRGF0YS5lbmRUaW1lLFxyXG4gICAgLy8gICBmcmVlSWQ6IGZvcm1EYXRhLmZyZWVJZCxcclxuICAgIC8vICAgdGl0bGU6IGZvcm1EYXRhLnByb21vdGlvbnNUaXRsZSxcclxuICAgIC8vICAgLy8gb3JpZ2luYWxQcmljZTogTnVtYmVyKGZvcm1EYXRhLm9yaWdpbmFsUHJpY2UpfHwwLFxyXG4gICAgLy8gICBzYWxlc1ByaWNlOiBOdW1iZXIoZm9ybURhdGEub3JpZ2luYWxQcmljZSksXHJcbiAgICAvLyAgIGRlc2NyaXB0aW9uOiBmb3JtRGF0YS5wcm9tb3Rpb25EZXNjcmlwdGlvbixcclxuICAgIC8vICAgc3RvcmVMaXN0LFxyXG4gICAgLy8gICBzZWxsZXJMaXN0LFxyXG4gICAgLy8gfVxyXG4gICAgLy8gY29uc29sZS5sb2coJ+W+heS/neWtmOaVsOaNricsZGF0YSk7XHJcbiAgICAvLyB0aGlzLnBvc3RGb3JtRGF0YShkYXRhKTtcclxuICAgIC8vIHJldHVybjtcclxuICB9KSxcclxuICAvLyBvbklucHV0U3RhcnREYXRlKCkge30sXHJcbiAgLy8gb25JbnB1dEVuZERhdGUoKSB7fSxcclxuICBpbml0VmFsaWRhdG9yKCl7XHJcbiAgICAvLyDlrp7kvovljJZcclxuICAgIHZhbGlkYXRvckluc3RhbmNlID0gbmV3IE15VmFsaWRhdG9yKHtcclxuICAgICAgcnVsZXM6IHtcclxuICAgICAgICBwcm9tb3Rpb25zVGl0bGU6IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgICAgcmFuZ2VsZW5ndGg6IFszLDE0XVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb3JpZ2luYWxQcmljZToge1xyXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgICBudW1iZXI6IHRydWVcclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIHByb21vdGlvbkRlc2NyaXB0aW9uOiB7XHJcbiAgICAgICAgLy8gICByZXF1aXJlZDogdHJ1ZVxyXG4gICAgICAgIC8vIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIG1lc3NhZ2VzOiB7XHJcbiAgICAgICAgcHJvbW90aW9uc1RpdGxlOiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogJ+ivt+i+k+WFpea0u+WKqOagh+mimCcsXHJcbiAgICAgICAgICByYW5nZWxlbmd0aDogJ+aWh+Wtl+mVv+W6puivt+aOp+WItuWcqDPliLAxNOS5i+mXtCdcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9yaWdpbmFsUHJpY2U6IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiAn6K+36L6T5YWl5rS75Yqo5oql5ZCN6LS5JyxcclxuICAgICAgICAgIG51bWJlcjogJ+S7t+agvOW/hemhu+S4uuaVsOWtlydcclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIHByb21vdGlvbkRlc2NyaXB0aW9uOiB7XHJcbiAgICAgICAgLy8gICByZXF1aXJlZDogJ+ivt+i+k+WFpea0u+WKqOaPj+i/sCdcclxuICAgICAgICAvLyB9LFxyXG4gICAgICB9LFxyXG4gICAgICBtdWx0aUNoZWNrOnRydWVcclxuICAgIH0sdGhpcylcclxuICAgIC8vIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAvLyAgIHZhbGlkYXRvckluc3RhbmNlXHJcbiAgICAvLyB9KVxyXG4gICAgY29uc29sZS5sb2coJ2hoaGgsJyx2YWxpZGF0b3JJbnN0YW5jZSk7XHJcbiAgfSxcclxuICBvblNoYXJlQXBwTWVzc2FnZSgpIHtcclxuICAgIGxldCBkb2Njb2RlOnN0cmluZyA9IHRoaXMuZGF0YS5kb2Njb2RlIHx8ICcnO1xyXG4gICAgLy8gbGV0IHRpdGxlOnN0cmluZyA9IHRoaXMuZGF0YS5wcm9tb3Rpb25zRGF0YS50aXRsZSB8fCAnJztcclxuICAgIGxldCBpbWFnZVVybDpzdHJpbmcgPSB0aGlzLmRhdGEuY292ZXJJbWFnZVVybCB8fCAnJztcclxuICAgIGxldCBzZWxsZXJVbkNoZWNrZWROYW1lczpzdHJpbmcgPSB0aGlzLmRhdGEuc2VsbGVyVW5DaGVja2VkTmFtZXMgfHwgJyc7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAvLyB0aXRsZTogdXRpbHMuZ2V0U2hhcmVUaXRsZSgpLFxyXG4gICAgICB0aXRsZTogYOivt+iQpemUgOS6uuWRmFske3NlbGxlclVuQ2hlY2tlZE5hbWVzfV3pqozor4Houqvku71gLFxyXG4gICAgICBpbWFnZVVybCxcclxuICAgICAgcGF0aDogYHBhZ2VzL3NlbGxlclZlcmlmeS9zZWxsZXJWZXJpZnk/ZG9jY29kZT0ke2RvY2NvZGV9YCxcclxuICAgIH1cclxuICB9XHJcbn0pXHJcbmV4cG9ydCB7fVxyXG4iXX0=
\ No newline at end of file
diff --git a/pages/signUpCreate/signUpCreate.ts b/pages/signUpCreate/signUpCreate.ts
index 80e1688..bc56904 100644
--- a/pages/signUpCreate/signUpCreate.ts
+++ b/pages/signUpCreate/signUpCreate.ts
@@ -1,6 +1,6 @@
 // import * as dayjs from "dayjs";
 import MyValidator from "../../utils/myValidator";
-
+import {getSaveData, promotionsSaveHandler, promotionsSubmitHandler} from "../../modules/promotionsCreate";
 let validatorInstance:MyValidator;
 // const app = getApp<IAppOption>();
 Page({
@@ -38,53 +38,54 @@
     }
   },
   async getSaveData() {
-    let doccode = this.data.doccode;
-    let [error, result] = await wx.$utils.to(
-      wx.$http.request({
-        url:`/shopping/panicBuying.do?m=getPanicBuyingDetail`,
-        data:{
-          doccode,
-          isEdit:true,
-          SellerOpenId:wx.globalData.OpenId
-        }
-      })
-    )
-    if (error){
-      console.log(error);
-      return;
-    }
-    console.log(result);
-    let data = result.list[0];
-    let formData = {
-      promotionsTitle: data.title,
-      originalPrice: data.salesPrice,
-      promotionDescription: data.description,
-      startTime: data.effectiveStartDate,
-      endTime: data.effectiveEndDate,
-      coverImageList: (data.coverImageUrl&&this.getCoverImageList(data))||[],
-      // imagesList: (data.imagesUrl.length>0&&this.getImagesList(data))||[],
-      imagesList: data.imagesUrl,
-      coverImage: data.coverImage,
-      images: data.images,
-      freeId:data.freeId,
-    };
-    this.setData({
-      ...formData,
-      coverImageUrl:data.coverImageUrl,
-      sellerList:result.sellerList,
-      storeList:result.storeList,
-      status:data.panicBuyingStatus,
-      delivery:{
-        freeId:data.freeId,
-        freeName:data.freeName,
-        isRequiredAddress:data.isRequiredAddress,
-        transCosts:data.transCosts,
-      }
-    });
-    console.log('閰嶉�佹暟鎹�傘�傘��',this.data.delivery);
-    wx.setNavigationBarTitle({
-      title: data.title
-    })
+    await getSaveData(this)
+    // let doccode = this.data.doccode;
+    // let [error, result] = await wx.$utils.to(
+    //   wx.$http.request({
+    //     url:`/shopping/panicBuying.do?m=getPanicBuyingDetail`,
+    //     data:{
+    //       doccode,
+    //       isEdit:true,
+    //       SellerOpenId:wx.globalData.OpenId
+    //     }
+    //   })
+    // )
+    // if (error){
+    //   console.log(error);
+    //   return;
+    // }
+    // console.log(result);
+    // let data = result.list[0];
+    // let formData = {
+    //   promotionsTitle: data.title,
+    //   originalPrice: data.salesPrice,
+    //   promotionDescription: data.description,
+    //   startTime: data.effectiveStartDate,
+    //   endTime: data.effectiveEndDate,
+    //   coverImageList: (data.coverImageUrl&&this.getCoverImageList(data))||[],
+    //   // imagesList: (data.imagesUrl.length>0&&this.getImagesList(data))||[],
+    //   imagesList: data.imagesUrl,
+    //   coverImage: data.coverImage,
+    //   images: data.images,
+    //   freeId:data.freeId,
+    // };
+    // this.setData({
+    //   ...formData,
+    //   coverImageUrl:data.coverImageUrl,
+    //   sellerList:result.sellerList,
+    //   storeList:result.storeList,
+    //   status:data.panicBuyingStatus,
+    //   delivery:{
+    //     freeId:data.freeId,
+    //     freeName:data.freeName,
+    //     isRequiredAddress:data.isRequiredAddress,
+    //     transCosts:data.transCosts,
+    //   }
+    // });
+    // console.log('閰嶉�佹暟鎹�傘�傘��',this.data.delivery);
+    // wx.setNavigationBarTitle({
+    //   title: data.title
+    // })
   },
 
   getCoverImageList(data:any){
@@ -137,173 +138,177 @@
     })
   },
 
-  async postFormData(data:object){
-    let [error, res] = await wx.$utils.to(
-      wx.$http.request({
-        url:'/shopping/panicBuying.do?m=saveDocCode',
-        data,
-        method:'POST'
-      })
-    )
-    if (error) {
-      console.log(error);
-      return false;
-    }
-    console.log(res);
-    if (res.state === 'success') {
-      wx.showToast({
-        title: '鎴愬姛',
-        duration: 2000
-      })
-      this.setData({
-        doccode:res.DocCode
-      })
-      // console.log('娲诲姩鍗曞彿',this.data.formData);
-    }
-    if (res.state === 'failed'&&res.sellerCheckedBalance>0) {
-      this.setData({
-        sellerUnCheckedNames: res.sellerUnCheckedNames,
-        isShowDialog: true
-      })
-    }
-    return res.state === 'success';
-  },
+  // async postFormData(data:object){
+  //   let [error, res] = await wx.$utils.to(
+  //     wx.$http.request({
+  //       url:'/shopping/panicBuying.do?m=saveDocCode',
+  //       data,
+  //       method:'POST'
+  //     })
+  //   )
+  //   if (error) {
+  //     console.log(error);
+  //     return false;
+  //   }
+  //   console.log(res);
+  //   if (res.state === 'success') {
+  //     wx.showToast({
+  //       title: '鎴愬姛',
+  //       duration: 2000
+  //     })
+  //     this.setData({
+  //       doccode:res.DocCode
+  //     })
+  //     // console.log('娲诲姩鍗曞彿',this.data.formData);
+  //   }
+  //   if (res.state === 'failed'&&res.sellerCheckedBalance>0) {
+  //     this.setData({
+  //       sellerUnCheckedNames: res.sellerUnCheckedNames,
+  //       isShowDialog: true
+  //     })
+  //   }
+  //   return res.state === 'success';
+  // },
   onSubmit:wx.$utils.debounce(function(this:any){
     this.submitHandler();
     return;
   }),
 
   async submitHandler() {
-    let timeQuantum = this.selectComponent('#time-quantum');
-    let sellerEdit = this.selectComponent('#seller-edit');
-    let storeEdit = this.selectComponent('#store-edit');
-    let fileUploader = this.selectComponent('#file-uploader');
-    let fileUploaderMultiple = this.selectComponent('#file-uploader-multiple');
-
-
-    console.log('sellerEdit',);
-    console.log(timeQuantum);
-
-    let checkStartTime = timeQuantum.checkTime("startTime", "璇烽�夋嫨璁″垝寮�濮嬫椂闂�");
-    let checkEndTime = timeQuantum.checkTime("endTime", "璇烽�夋嫨璁″垝缁撴潫鏃堕棿");
-    let checkCoverImage = fileUploader.checkImages("coverImage", "璇蜂笂浼犱竴寮犲皝闈㈠浘");
-    // let checkImages = fileUploaderMultiple.checkImages("images", "璇疯嚦灏戜笂浼犱竴寮犲浘鐗�");
-    let checkAllData = validatorInstance.checkAllData();
-    // if (this.data.goodsImgList.length < 1) {
-    //   console.log('璇蜂笂浼犱骇鍝佸浘鐗�');
+    await promotionsSubmitHandler(this,validatorInstance);
+    return;
+    // let timeQuantum = this.selectComponent('#time-quantum');
+    // let sellerEdit = this.selectComponent('#seller-edit');
+    // let storeEdit = this.selectComponent('#store-edit');
+    // let fileUploader = this.selectComponent('#file-uploader');
+    // let fileUploaderMultiple = this.selectComponent('#file-uploader-multiple');
+    //
+    //
+    // console.log('sellerEdit',);
+    // console.log(timeQuantum);
+    //
+    // let checkStartTime = timeQuantum.checkTime("startTime", "璇烽�夋嫨璁″垝寮�濮嬫椂闂�");
+    // let checkEndTime = timeQuantum.checkTime("endTime", "璇烽�夋嫨璁″垝缁撴潫鏃堕棿");
+    // let checkCoverImage = fileUploader.checkImages("coverImage", "璇蜂笂浼犱竴寮犲皝闈㈠浘");
+    // // let checkImages = fileUploaderMultiple.checkImages("images", "璇疯嚦灏戜笂浼犱竴寮犲浘鐗�");
+    // let checkAllData = validatorInstance.checkAllData();
+    // // if (this.data.goodsImgList.length < 1) {
+    // //   console.log('璇蜂笂浼犱骇鍝佸浘鐗�');
+    // // }
+    // let sellerList = sellerEdit.getSellerList();
+    // if (sellerList.length<1) {
+    //   wx.showToast({
+    //     title: '璇烽�夋嫨钀ラ攢浜哄憳',
+    //     icon: 'none',
+    //     duration: 2000
+    //   })
+    //   return
     // }
-    let sellerList = sellerEdit.getSellerList();
-    if (sellerList.length<1) {
-      wx.showToast({
-        title: '璇烽�夋嫨钀ラ攢浜哄憳',
-        icon: 'none',
-        duration: 2000
-      })
-      return
-    }
-    let checkDefaultSeller = sellerEdit.checkDefaultSeller();
-    if (!checkDefaultSeller) {
-      wx.showToast({
-        title: '璇烽�夋嫨榛樿钀ラ攢浜哄憳',
-        icon: 'none',
-        duration: 2000
-      })
-      return
-    }
-    console.log('checkDefaultSeller',checkDefaultSeller);
-
-    let storeList = storeEdit.getSelectedStoreIdList();
-    console.log('寰呮彁浜ょ殑闂ㄥ簵id',storeList);
-
-    let checkArr = [checkStartTime,checkEndTime,checkCoverImage,checkAllData];
-    let data = {};
-    if (checkArr.every((item)=>{
-      return item
-    })){
-      console.log('....鎻愪氦鎴愬姛');
-      let coverImage = fileUploader.getCoverImageUnid();
-      let coverImageUrl = fileUploader.getImgList()[0].url||'';
-      this.setData({
-        coverImageUrl
-      })
-      let images = fileUploaderMultiple.getImagesUnid();
-      console.log(coverImage,images);
-      let formData: any = this.data;
-      data = {
-        docCode: formData.doccode, //娲诲姩鍗曞彿锛屾柊寤烘椿鍔ㄦ椂涓虹┖鍊硷紝缂栬緫鏃堕渶瑕乨occode鍊�
-        formId: formData.formId, //鍔熻兘鍙凤細绉掓潃 710802 锛� 鎶ュ悕閭�绾� 710803 锛屽洟璐� 710804
-        docStatus:100, //鍗曟嵁鐘舵��: 0 淇濆瓨锛堣捣鑽夛級 锛�100 鍙戝竷
-        coverImage,
-        images,
-        // ...this.data.formData,
-
-        effectiveStartDate: formData.startTime,
-        effectiveEndDate: formData.endTime,
-        freeId: formData.freeId,
-        title: formData.promotionsTitle,
-        // originalPrice: Number(formData.originalPrice),
-        salesPrice: Number(formData.originalPrice),
-        description: formData.promotionDescription,
-        storeList,
-        sellerList,
-      }
-      console.log('寰呭彂甯冩暟鎹�',data);
-      if (!await this.postFormData(data)) return;
-      if (this.data.fromPage=='edit'){
-        wx.navigateBack();
-      } else{
-        wx.redirectTo({
-          url:'../promotionsManageList/promotionsManageList?tab=2'
-        })
-      }
-
-    } else {
-      wx.showToast({
-        title: '椤甸潰杩樻湁閿欒鏈鐞�',
-        icon: 'none',
-        duration: 2000
-      })
-      console.log('杩樻湁閿欒鏈鐞�');
-    }
+    // let checkDefaultSeller = sellerEdit.checkDefaultSeller();
+    // if (!checkDefaultSeller) {
+    //   wx.showToast({
+    //     title: '璇烽�夋嫨榛樿钀ラ攢浜哄憳',
+    //     icon: 'none',
+    //     duration: 2000
+    //   })
+    //   return
+    // }
+    // console.log('checkDefaultSeller',checkDefaultSeller);
+    //
+    // let storeList = storeEdit.getSelectedStoreIdList();
+    // console.log('寰呮彁浜ょ殑闂ㄥ簵id',storeList);
+    //
+    // let checkArr = [checkStartTime,checkEndTime,checkCoverImage,checkAllData];
+    // let data = {};
+    // if (checkArr.every((item)=>{
+    //   return item
+    // })){
+    //   console.log('....鎻愪氦鎴愬姛');
+    //   let coverImage = fileUploader.getCoverImageUnid();
+    //   let coverImageUrl = fileUploader.getImgList()[0].url||'';
+    //   this.setData({
+    //     coverImageUrl
+    //   })
+    //   let images = fileUploaderMultiple.getImagesUnid();
+    //   console.log(coverImage,images);
+    //   let formData: any = this.data;
+    //   data = {
+    //     docCode: formData.doccode, //娲诲姩鍗曞彿锛屾柊寤烘椿鍔ㄦ椂涓虹┖鍊硷紝缂栬緫鏃堕渶瑕乨occode鍊�
+    //     formId: formData.formId, //鍔熻兘鍙凤細绉掓潃 710802 锛� 鎶ュ悕閭�绾� 710803 锛屽洟璐� 710804
+    //     docStatus:100, //鍗曟嵁鐘舵��: 0 淇濆瓨锛堣捣鑽夛級 锛�100 鍙戝竷
+    //     coverImage,
+    //     images,
+    //     // ...this.data.formData,
+    //
+    //     effectiveStartDate: formData.startTime,
+    //     effectiveEndDate: formData.endTime,
+    //     freeId: formData.freeId,
+    //     title: formData.promotionsTitle,
+    //     // originalPrice: Number(formData.originalPrice),
+    //     salesPrice: Number(formData.originalPrice),
+    //     description: formData.promotionDescription,
+    //     storeList,
+    //     sellerList,
+    //   }
+    //   console.log('寰呭彂甯冩暟鎹�',data);
+    //   if (!await this.postFormData(data)) return;
+    //   if (this.data.fromPage=='edit'){
+    //     wx.navigateBack();
+    //   } else{
+    //     wx.redirectTo({
+    //       url:'../promotionsManageList/promotionsManageList?tab=2'
+    //     })
+    //   }
+    //
+    // } else {
+    //   wx.showToast({
+    //     title: '椤甸潰杩樻湁閿欒鏈鐞�',
+    //     icon: 'none',
+    //     duration: 2000
+    //   })
+    //   console.log('杩樻湁閿欒鏈鐞�');
+    // }
 
 
   },
 
   onSave:wx.$utils.debounce(function(this:any){
-    let sellerEdit = this.selectComponent('#seller-edit');
-    let sellerList = sellerEdit.getSellerList();
-    let storeEdit = this.selectComponent('#store-edit');
-    let storeList = storeEdit.getSelectedStoreIdList();
-    console.log('寰呮彁浜ょ殑闂ㄥ簵id',storeList);
-    let fileUploader = this.selectComponent('#file-uploader');
-    let fileUploaderMultiple = this.selectComponent('#file-uploader-multiple');
-    console.log('....鎻愪氦鎴愬姛');
-    let coverImage = fileUploader.getCoverImageUnid();
-    let images = fileUploaderMultiple.getImagesUnid();
-
-    console.log(coverImage,images);
-    let formData: any = this.data;
-    let data = {
-      docCode: formData.doccode, //娲诲姩鍗曞彿锛屾柊寤烘椿鍔ㄦ椂涓虹┖鍊硷紝缂栬緫鏃堕渶瑕乨occode鍊�
-      formId: formData.formId, //鍔熻兘鍙凤細绉掓潃 710802 锛� 鎶ュ悕閭�绾� 710803 锛屽洟璐� 710804
-      docStatus: 0, //鍗曟嵁鐘舵��: 0 淇濆瓨锛堣捣鑽夛級 锛�100 鍙戝竷
-      coverImage,
-      images,
-      // ...this.data.formData,
-
-      effectiveStartDate: formData.startTime,
-      effectiveEndDate: formData.endTime,
-      freeId: formData.freeId,
-      title: formData.promotionsTitle,
-      // originalPrice: Number(formData.originalPrice)||0,
-      salesPrice: Number(formData.originalPrice),
-      description: formData.promotionDescription,
-      storeList,
-      sellerList,
-    }
-    console.log('寰呬繚瀛樻暟鎹�',data);
-    this.postFormData(data);
+    promotionsSaveHandler(this);
     return;
+    // let sellerEdit = this.selectComponent('#seller-edit');
+    // let sellerList = sellerEdit.getSellerList();
+    // let storeEdit = this.selectComponent('#store-edit');
+    // let storeList = storeEdit.getSelectedStoreIdList();
+    // console.log('寰呮彁浜ょ殑闂ㄥ簵id',storeList);
+    // let fileUploader = this.selectComponent('#file-uploader');
+    // let fileUploaderMultiple = this.selectComponent('#file-uploader-multiple');
+    // console.log('....鎻愪氦鎴愬姛');
+    // let coverImage = fileUploader.getCoverImageUnid();
+    // let images = fileUploaderMultiple.getImagesUnid();
+    //
+    // console.log(coverImage,images);
+    // let formData: any = this.data;
+    // let data = {
+    //   docCode: formData.doccode, //娲诲姩鍗曞彿锛屾柊寤烘椿鍔ㄦ椂涓虹┖鍊硷紝缂栬緫鏃堕渶瑕乨occode鍊�
+    //   formId: formData.formId, //鍔熻兘鍙凤細绉掓潃 710802 锛� 鎶ュ悕閭�绾� 710803 锛屽洟璐� 710804
+    //   docStatus: 0, //鍗曟嵁鐘舵��: 0 淇濆瓨锛堣捣鑽夛級 锛�100 鍙戝竷
+    //   coverImage,
+    //   images,
+    //   // ...this.data.formData,
+    //
+    //   effectiveStartDate: formData.startTime,
+    //   effectiveEndDate: formData.endTime,
+    //   freeId: formData.freeId,
+    //   title: formData.promotionsTitle,
+    //   // originalPrice: Number(formData.originalPrice)||0,
+    //   salesPrice: Number(formData.originalPrice),
+    //   description: formData.promotionDescription,
+    //   storeList,
+    //   sellerList,
+    // }
+    // console.log('寰呬繚瀛樻暟鎹�',data);
+    // this.postFormData(data);
+    // return;
   }),
   // onInputStartDate() {},
   // onInputEndDate() {},
diff --git a/pages/signUpCreate/signUpCreate.wxml b/pages/signUpCreate/signUpCreate.wxml
index 5c412fc..cec88d6 100644
--- a/pages/signUpCreate/signUpCreate.wxml
+++ b/pages/signUpCreate/signUpCreate.wxml
@@ -1,6 +1,13 @@
 <view class="container has-footer">
   <van-cell-group class="my-cell-group">
+    <van-cell class="my-cell required" border="{{false}}" title="鎶ュ悕鍥剧墖"></van-cell>
+    <my-file-uploader id="file-uploader" img-list="{{coverImageList}}" url="{{fileUploadUrl+'&isCoverImage=true'}}" file-delete-url="/shopping/panicBuying.do?m=deleteAttachment"></my-file-uploader>
+
+  </van-cell-group>
+  <van-cell-group class="my-cell-group">
     <van-field
+        required
+        id="promotionsTitle"
         class="my-cell"
         value="{{ promotionsTitle }}"
         name="promotionsTitle"
@@ -10,14 +17,11 @@
         error-message="{{promotionsTitleError}}"
     />
   </van-cell-group>
-  <van-cell-group class="my-cell-group">
-    <van-cell class="my-cell" border="{{false}}" title="鎶ュ悕鍥剧墖"></van-cell>
-    <my-file-uploader id="file-uploader" img-list="{{coverImageList}}" url="{{fileUploadUrl+'&isCoverImage=true'}}" file-delete-url="/shopping/panicBuying.do?m=deleteAttachment"></my-file-uploader>
-
-  </van-cell-group>
 
   <van-cell-group class="my-cell-group">
     <van-field
+        required
+        id="originalPrice"
         class="my-cell"
         value="{{ originalPrice }}"
         name="originalPrice"
@@ -41,7 +45,7 @@
   <my-store-edit id="store-edit" store-list="{{storeList}}" from="{{fromPage}}"></my-store-edit>
   <my-seller-edit id="seller-edit" seller-list="{{sellerList}}" from="{{fromPage}}"></my-seller-edit>
   <van-cell-group class="my-cell-group">
-    <van-cell border="{{false}}" title="璇疯緭鍏ユ椿鍔ㄦ弿杩拌鍒�"></van-cell>
+    <van-cell border="{{false}}" title="璇疯緭鍏ユ椿鍔ㄦ弿杩拌鍒�(閫夊~)"></van-cell>
     <van-field
         cursor-spacing="250"
         value="{{ promotionDescription }}"
diff --git a/pages/storeEdit/storeEdit.js b/pages/storeEdit/storeEdit.js
index b72eb65..430ea9d 100644
--- a/pages/storeEdit/storeEdit.js
+++ b/pages/storeEdit/storeEdit.js
@@ -291,7 +291,7 @@
             });
         });
     },
-    onSave: function () {
+    onSave: wx.$utils.debounce(function () {
         var location = this.data.location;
         if (!location) {
             wx.showToast({
@@ -315,7 +315,7 @@
         });
         console.log('....鎻愪氦鎴愬姛');
         this.saveStore();
-    },
+    }),
     onShow: function () {
         var location = chooseLocation.getLocation();
         console.log(location);
@@ -329,4 +329,4 @@
         chooseLocation.setLocation(null);
     }
 });
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmVFZGl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3RvcmVFZGl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1REFBa0Q7QUFFbEQsSUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDdkQsSUFBSSxpQkFBOEIsQ0FBQztBQUNuQyxJQUFJLENBQUM7SUFDSCxJQUFJLEVBQUU7UUFDSixPQUFPLEVBQUMsSUFBVztRQUNuQixRQUFRLEVBQUMsSUFBVztRQUNwQixNQUFNLEVBQUMsRUFBRTtRQUNULFNBQVMsRUFBQyxFQUFFO1FBQ1osTUFBTSxFQUFDLEVBQUU7UUFDVCxLQUFLLEVBQUUsRUFBRTtRQUNULE9BQU8sRUFBQyxFQUFFO1FBQ1YsU0FBUyxFQUFDLE9BQU87UUFDakIsT0FBTyxFQUFDLE9BQU87UUFDZixlQUFlLEVBQUMsRUFBRTtLQUVuQjtJQUNELE1BQU0sWUFBQyxPQUFPO1FBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQixJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQzlCLElBQUksT0FBTyxFQUFFO1lBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFDWCxPQUFPLFNBQUE7YUFDUixDQUFDLENBQUE7WUFDRixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUE7U0FDcEI7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ1gsYUFBYSxFQUFFLCtDQUErQztZQUM5RCxhQUFhLEVBQUUsK0NBQStDO1NBQy9ELENBQUMsQ0FBQztJQVVMLENBQUM7SUFDRCxPQUFPO1FBQ0wsaUJBQWlCLEdBQUcsSUFBSSxxQkFBVyxDQUFDO1lBQ2xDLEtBQUssRUFBRTtnQkFDTCxNQUFNLEVBQUU7b0JBQ04sUUFBUSxFQUFFLElBQUk7aUJBQ2Y7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULFFBQVEsRUFBRSxJQUFJO2lCQUNmO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxRQUFRLEVBQUUsSUFBSTtpQkFDZjtnQkFDRCxLQUFLLEVBQUU7b0JBQ0wsUUFBUSxFQUFFLElBQUk7b0JBQ2QsTUFBTSxFQUFFLElBQUk7aUJBQ2I7YUFDRjtZQUNELFFBQVEsRUFBRTtnQkFDUixNQUFNLEVBQUU7b0JBQ04sUUFBUSxFQUFFLFdBQVc7aUJBQ3RCO2dCQUNELFNBQVMsRUFBRTtvQkFDVCxRQUFRLEVBQUUsU0FBUztpQkFDcEI7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLFFBQVEsRUFBRSxVQUFVO2lCQUNyQjtnQkFDRCxLQUFLLEVBQUU7b0JBQ0wsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLE1BQU0sRUFBRSxVQUFVO2lCQUNuQjthQUNGO1lBQ0QsVUFBVSxFQUFDLElBQUk7U0FDaEIsRUFBQyxJQUFJLENBQUMsQ0FBQztJQUNWLENBQUM7SUFDSyxZQUFZOzs7Ozs7d0JBQ1osT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO3dCQUNWLFdBQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQ3RDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO2dDQUNmLEdBQUcsRUFBQyxxREFBcUQ7Z0NBQ3pELElBQUksRUFBQztvQ0FDSCxPQUFPLFNBQUE7aUNBQ1I7NkJBQ0YsQ0FBQyxDQUNILEVBQUE7O3dCQVBHLEtBQWtCLFNBT3JCLEVBUEksS0FBSyxRQUFBLEVBQUUsTUFBTSxRQUFBO3dCQVFsQixJQUFJLEtBQUssRUFBQzs0QkFDUixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUNuQixXQUFPO3lCQUNSO3dCQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQ2hCLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUMxQixJQUFJLENBQUMsT0FBTztnQ0FDVixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0NBQ25CLFNBQVMsRUFBQyxJQUFJLENBQUMsU0FBUztnQ0FDeEIsU0FBUyxFQUFDLElBQUksQ0FBQyxTQUFTOzs0QkFDeEIsR0FBQyxtQkFBbUIsSUFBRyxJQUFJLENBQUMsWUFBWTs0QkFDeEMsR0FBQyxlQUFlLElBQUcsSUFBSSxDQUFDLFFBQVE7NEJBQ2hDLEdBQUMsbUJBQW1CLElBQUcsSUFBSSxDQUFDLFVBQVU7NEJBQ3RDLEdBQUMsa0JBQWtCLElBQUcsSUFBSSxDQUFDLE9BQU87NEJBQ2xDLEdBQUMsZUFBZSxJQUFHLElBQUksQ0FBQyxXQUFXOzRCQUNuQyxHQUFDLG9CQUFvQixJQUFHLElBQUksQ0FBQyxTQUFTOzRCQUN0QyxHQUFDLG1CQUFtQixJQUFHLElBQUksQ0FBQyxRQUFROzRCQUNwQyxTQUFNLEdBQUUsSUFBSSxDQUFDLE1BQU07NEJBQ25CLFlBQVMsR0FBRSxJQUFJLENBQUMsaUJBQWlCOzRCQUNqQyxVQUFPLEdBQUUsSUFBSSxDQUFDLGVBQWU7NEJBQzdCLFFBQUssR0FBRSxJQUFJLENBQUMsU0FBUzs0QkFDckIsVUFBTyxHQUFFLElBQUksQ0FBQyxPQUFPOzRCQUNyQixrQkFBZSxHQUFDLE1BQU0sQ0FBQyxlQUFlO2dDQUN0QyxDQUFBOzs7OztLQUNIO0lBQ0QsY0FBYztRQUNaLElBQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsNEJBQTRCLENBQUM7UUFDdkQsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNSLEVBQUUsQ0FBQyxTQUFTLENBQUM7Z0JBQ1gsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsT0FBTyxFQUFFLGtCQUFrQjtnQkFDM0IsVUFBVSxFQUFDLEtBQUs7YUFDakIsQ0FBQyxDQUFBO1lBQ0YsT0FBTztTQUNSO1FBQ0QsSUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDO1FBQzFCLEVBQUUsQ0FBQyxVQUFVLENBQUM7WUFDWixHQUFHLEVBQUUsb0NBQW9DLEdBQUcsR0FBRyxHQUFHLFdBQVcsR0FBRyxPQUFPO1NBRXhFLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxXQUFXLFlBQUMsQ0FBSztRQUNULElBQUEsc0JBQUssQ0FBYztRQUN6QixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUNELGNBQWMsWUFBQyxDQUFLO1FBQ1osSUFBQSxzQkFBSyxDQUFjO1FBQ3pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBQ0QsWUFBWSxZQUFDLENBQUs7UUFDVixJQUFBLHNCQUFLLENBQWM7UUFDekIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFDRCxVQUFVLFlBQUMsQ0FBSztRQUNSLElBQUEsc0JBQUssQ0FBYztRQUN6QixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUNELFVBQVUsWUFBQyxJQUFXLEVBQUMsS0FBWTs7UUFDakMsSUFBSSxRQUFRLEdBQUcsaUJBQWlCLENBQUMsVUFBVSxDQUFDLEtBQUcsSUFBTSxFQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdELElBQUksUUFBUSxLQUFHLEVBQUUsRUFBQztZQUNoQixJQUFJLENBQUMsT0FBTztnQkFDVixHQUFDLEtBQUcsSUFBTSxJQUFHLEtBQUs7Z0JBQ2xCLEdBQUksSUFBSSxVQUFPLElBQUcsUUFBUTtvQkFDMUIsQ0FBQTtTQUNIO2FBQU07WUFDTCxJQUFJLENBQUMsT0FBTztnQkFDVixHQUFJLElBQUksU0FBTSxJQUFHLEtBQUs7Z0JBQ3RCLEdBQUksSUFBSSxVQUFPLElBQUcsUUFBUTtvQkFDMUIsQ0FBQTtTQUNIO0lBQ0gsQ0FBQztJQUNELGFBQWE7UUFBYixpQkFlQztRQVpDLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDO1lBQ2YsS0FBSyxFQUFFLFdBQVc7U0FDbkIsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFDLEdBQU87WUFDZCxJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUU7Z0JBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQTtnQkFDckIsS0FBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2FBRXBCO2lCQUFNLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRTtnQkFDckIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQTthQUN0QjtRQUVILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNLLFdBQVc7Ozs7Ozt3QkFDWCxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7d0JBQ1YsV0FBTSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FDdEMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7Z0NBQ2YsR0FBRyxFQUFDLGtEQUFrRDtnQ0FDdEQsSUFBSSxFQUFDO29DQUNILE9BQU8sU0FBQTtpQ0FDUjs2QkFDRixDQUFDLENBQ0gsRUFBQTs7d0JBUEcsS0FBa0IsU0FPckIsRUFQSSxLQUFLLFFBQUEsRUFBRSxNQUFNLFFBQUE7d0JBUWxCLElBQUksS0FBSyxFQUFDOzRCQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQ25CLFdBQU87eUJBQ1I7d0JBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQzt3QkFDcEIsRUFBRSxDQUFDLFNBQVMsQ0FBQzs0QkFDWCxLQUFLLEVBQUMsTUFBTTt5QkFDYixDQUFDLENBQUE7d0JBQ0YsVUFBVSxDQUFDLGNBQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUEsQ0FBQyxFQUFDLElBQUksQ0FBQyxDQUFBOzs7OztLQUM1QztJQUNLLFNBQVM7Ozs7Ozt3QkFDVCxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO3dCQUN0RCxLQUFzQixZQUFZLENBQUMsZUFBZSxFQUFFLEVBQW5ELFNBQVMsZUFBQSxFQUFDLE9BQU8sYUFBQSxDQUFtQzt3QkFDckQsV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLENBQUM7d0JBQ3BELE1BQU0sR0FBRyxXQUFXLENBQUMsbUJBQW1CLEVBQUUsQ0FBQzt3QkFDM0MsS0FRQSxJQUFJLENBQUMsSUFBSSxFQVBYLFFBQVEsY0FBQSxFQUNSLE1BQU0sWUFBQSxFQUNOLFNBQVMsZUFBQSxFQUNULE9BQU8sYUFBQSxFQUNQLE1BQU0sWUFBQSxFQUNOLE9BQU8sYUFBQSxFQUNQLEtBQUssV0FBQSxDQUNPO3dCQUNWLFNBQVMsR0FBRzs0QkFDZCxXQUFXLEVBQUMsSUFBSTs0QkFDaEIsWUFBWSxFQUFFLFFBQVEsQ0FBQyxRQUFROzRCQUMvQixRQUFRLEVBQUUsUUFBUSxDQUFDLElBQUk7NEJBQ3ZCLFVBQVUsRUFBRSxRQUFRLENBQUMsUUFBUTs0QkFDN0IsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPOzRCQUN6QixXQUFXLEVBQUUsUUFBUSxDQUFDLElBQUk7NEJBQzFCLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUzs0QkFDN0IsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFROzRCQUMzQixNQUFNLFFBQUE7NEJBQ04sU0FBUyxXQUFBOzRCQUNULE1BQU0sUUFBQTs0QkFDTixPQUFPLFNBQUE7NEJBQ1AsaUJBQWlCLEVBQUMsU0FBUzs0QkFDM0IsZUFBZSxFQUFDLE9BQU87NEJBQ3ZCLFNBQVMsRUFBQyxLQUFLOzRCQUNmLE9BQU8sRUFBQyxPQUFPOzRCQUNmLE1BQU0sUUFBQTt5QkFDUCxDQUFBO3dCQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxDQUFDO3dCQUNaLFdBQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQ3RDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO2dDQUNmLEdBQUcsRUFBQyxnREFBZ0Q7Z0NBQ3BELElBQUksRUFBRSxTQUFTO2dDQUNmLE1BQU0sRUFBQyxNQUFNOzZCQUNkLENBQUMsQ0FDSCxFQUFBOzt3QkFORyxLQUFrQixTQU1yQixFQU5JLEtBQUssUUFBQSxFQUFFLE1BQU0sUUFBQTt3QkFPbEIsSUFBSSxLQUFLLEVBQUM7NEJBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQzs0QkFDbkIsV0FBTzt5QkFDUjt3QkFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO3dCQUNwQixFQUFFLENBQUMsU0FBUyxDQUFDOzRCQUNYLEtBQUssRUFBQyxNQUFNO3lCQUNiLENBQUMsQ0FBQTt3QkFDRixVQUFVLENBQUMsY0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQSxDQUFDLEVBQUMsSUFBSSxDQUFDLENBQUE7Ozs7O0tBQzVDO0lBZUQsTUFBTTtRQUNKLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDYixFQUFFLENBQUMsU0FBUyxDQUFDO2dCQUNYLEtBQUssRUFBQyxTQUFTO2dCQUNmLElBQUksRUFBQyxNQUFNO2FBQ1osQ0FBQyxDQUFBO1lBQ0YsT0FBTTtTQUNQO1FBRUQsSUFBSSxZQUFZLEdBQUcsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEQsSUFBSSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDM0UsSUFBSSxXQUFXLEdBQUcsb0JBQW9CLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsWUFBWSxFQUFDO1lBQ2hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdkIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFdBQVc7WUFBRSxPQUFPO1FBQ3pCLElBQUksTUFBTSxHQUFHLG9CQUFvQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxPQUFPLENBQUM7WUFDWCxNQUFNLFFBQUE7U0FDUCxDQUFDLENBQUE7UUFDRixPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBQ0QsTUFBTTtRQUNKLElBQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM5QyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RCLElBQUksUUFBUSxFQUFFO1lBQ1osSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFDWCxRQUFRLFVBQUE7YUFDVCxDQUFDLENBQUE7U0FDSDtJQUVILENBQUM7SUFDRCxRQUFRO1FBRU4sY0FBYyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0NBRUYsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE15VmFsaWRhdG9yIGZyb20gXCIuLi8uLi91dGlscy9teVZhbGlkYXRvclwiO1xyXG4vLyBAdHMtaWdub3JlXHJcbmNvbnN0IGNob29zZUxvY2F0aW9uID0gcmVxdWlyZVBsdWdpbignY2hvb3NlTG9jYXRpb24nKTtcclxubGV0IHZhbGlkYXRvckluc3RhbmNlOiBNeVZhbGlkYXRvcjtcclxuUGFnZSh7XHJcbiAgZGF0YToge1xyXG4gICAgZG9jY29kZTpudWxsIGFzIGFueSxcclxuICAgIGxvY2F0aW9uOm51bGwgYXMgYW55LFxyXG4gICAgc3RyZWV0OicnLFxyXG4gICAgc3RvcmVOYW1lOicnLFxyXG4gICAgaW1hZ2VzOicnLFxyXG4gICAgcGhvbmU6ICcnLFxyXG4gICAgbGlua01hbjonJyxcclxuICAgIHN0YXJ0VGltZTonMDA6MDAnLFxyXG4gICAgZW5kVGltZTonMjQ6MDAnLFxyXG4gICAgc3RvcmVTdGF0dXNMaXN0OltdXHJcbiAgICAvLyBzZWxlY3RlZFN0b3JlSWRMaXN0OltdXHJcbiAgfSxcclxuICBvbkxvYWQob3B0aW9ucykge1xyXG4gICAgY29uc29sZS5sb2cob3B0aW9ucyk7XHJcbiAgICBsZXQgZG9jY29kZSA9IG9wdGlvbnMuZG9jY29kZTtcclxuICAgIGlmIChkb2Njb2RlKSB7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgZG9jY29kZVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmdldFN0b3JlRGF0YSgpXHJcbiAgICB9XHJcbiAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICBmaWxlVXBsb2FkVXJsOiBcIi9zaG9wcGluZy9jdXN0b21lclN0b3JlLmRvP209dXBsb2FkQXR0YWNobWVudFwiLFxyXG4gICAgICBmaWxlRGVsZXRlVXJsOiBcIi9zaG9wcGluZy9jdXN0b21lclN0b3JlLmRvP209ZGVsZXRlQXR0YWNobWVudFwiLFxyXG4gICAgfSk7XHJcbiAgICAvLyB0aGlzLmdldE15Rm9vdHByaW50KCk7XHJcbiAgICAvLyBjb25zdCBldmVudENoYW5uZWwgPSB0aGlzLmdldE9wZW5lckV2ZW50Q2hhbm5lbCgpO1xyXG4gICAgLy8gZXZlbnRDaGFubmVsLm9uKCdnZXRTdG9yZUxpc3RGcm9tU3RvcmVMaXN0UGFnZScsIChkYXRhOmFueSk9PiB7XHJcbiAgICAvLyAgIGNvbnNvbGUubG9nKCfojrflj5bmlrDlu7rmtLvliqjml7bpgInkuK3nmoTpl6jlupcnLGRhdGEpXHJcbiAgICAvLyAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAvLyAgICAgc2VsZWN0ZWRTdG9yZUlkTGlzdDpkYXRhLnNlbGVjdGVkU3RvcmVJZExpc3QsXHJcbiAgICAvLyAgIH0pXHJcbiAgICAvL1xyXG4gICAgLy8gfSlcclxuICB9LFxyXG4gIG9uUmVhZHkoKSB7XHJcbiAgICB2YWxpZGF0b3JJbnN0YW5jZSA9IG5ldyBNeVZhbGlkYXRvcih7XHJcbiAgICAgIHJ1bGVzOiB7XHJcbiAgICAgICAgc3RyZWV0OiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHN0b3JlTmFtZToge1xyXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgICAgICB9LFxyXG4gICAgICAgIGxpbmtNYW46IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICAgICAgfSxcclxuICAgICAgICBwaG9uZToge1xyXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgICBtb2JpbGU6IHRydWVcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIG1lc3NhZ2VzOiB7XHJcbiAgICAgICAgc3RyZWV0OiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogJ+ivt+i+k+WFpemXqOW6l+ivpue7huWcsOWdgCdcclxuICAgICAgICB9LFxyXG4gICAgICAgIHN0b3JlTmFtZToge1xyXG4gICAgICAgICAgcmVxdWlyZWQ6ICfor7fovpPlhaXpl6jlupflkI3np7AnXHJcbiAgICAgICAgfSxcclxuICAgICAgICBsaW5rTWFuOiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogJ+ivt+i+k+WFpei0n+i0o+S6uuWnk+WQjSdcclxuICAgICAgICB9LFxyXG4gICAgICAgIHBob25lOiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogJ+ivt+i+k+WFpemXqOW6l+iBlOezu+aWueW8jycsXHJcbiAgICAgICAgICBtb2JpbGU6ICfmiYvmnLrlj7fmoLzlvI/kuI3mraPnoa4nXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAgbXVsdGlDaGVjazp0cnVlXHJcbiAgICB9LHRoaXMpO1xyXG4gIH0sXHJcbiAgYXN5bmMgZ2V0U3RvcmVEYXRhKCl7XHJcbiAgICBsZXQgZG9jY29kZSA9IHRoaXMuZGF0YS5kb2Njb2RlO1xyXG4gICAgbGV0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IHd4LiR1dGlscy50byhcclxuICAgICAgd3guJGh0dHAucmVxdWVzdCh7XHJcbiAgICAgICAgdXJsOmAvc2hvcHBpbmcvY3VzdG9tZXJTdG9yZS5kbz9tPWdldEN1c3RvbWVyU3RvcmVEZXRhaWxgLFxyXG4gICAgICAgIGRhdGE6e1xyXG4gICAgICAgICAgZG9jY29kZVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIClcclxuICAgIGlmIChlcnJvcil7XHJcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2cocmVzdWx0KTtcclxuICAgIGxldCBkYXRhID0gcmVzdWx0Lmxpc3RbMF07XHJcbiAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICBzdHJlZXQ6IGRhdGEuc3RyZWV0LFxyXG4gICAgICBzdG9yZU5hbWU6ZGF0YS5zdG9yZU5hbWUsXHJcbiAgICAgIGltYWdlc1VybDpkYXRhLmltYWdlc1VybCxcclxuICAgICAgW1wibG9jYXRpb24ucHJvdmluY2VcIl06IGRhdGEucHJvdmluY2VOYW1lLFxyXG4gICAgICBbXCJsb2NhdGlvbi5jaXR5XCJdOiBkYXRhLmNpdHlOYW1lLFxyXG4gICAgICBbXCJsb2NhdGlvbi5kaXN0cmljdFwiXTogZGF0YS5jb3VudHlOYW1lLFxyXG4gICAgICBbXCJsb2NhdGlvbi5hZGRyZXNzXCJdOiBkYXRhLmFkZHJlc3MsXHJcbiAgICAgIFtcImxvY2F0aW9uLm5hbWVcIl06IGRhdGEuYWRkcmVzc05hbWUsXHJcbiAgICAgIFtcImxvY2F0aW9uLmxvbmdpdHVkZVwiXTogZGF0YS5sb25naXR1ZGUsXHJcbiAgICAgIFtcImxvY2F0aW9uLmxhdGl0dWRlXCJdOiBkYXRhLmxhdGl0dWRlLFxyXG4gICAgICBzdGF0dXM6IGRhdGEuc3RhdHVzLFxyXG4gICAgICBzdGFydFRpbWU6IGRhdGEuZnJvbUJ1c2luZXNzSG91cnMsXHJcbiAgICAgIGVuZFRpbWU6IGRhdGEudG9CdXNpbmVzc0hvdXJzLFxyXG4gICAgICBwaG9uZTogZGF0YS50ZWxlcGhvbmUsXHJcbiAgICAgIGxpbmtNYW46IGRhdGEubGlua01hbixcclxuICAgICAgc3RvcmVTdGF0dXNMaXN0OnJlc3VsdC5zdG9yZVN0YXR1c0xpc3RcclxuICAgIH0pXHJcbiAgfSxcclxuICBzZWxlY3RMb2NhdGlvbigpe1xyXG4gICAgY29uc3Qga2V5ID0gd3guZ2xvYmFsRGF0YS5UZW5nWHVuTWFwTG9jYXRpb25TZXJ2aWNlS2V5O1xyXG4gICAgaWYgKCFrZXkpIHtcclxuICAgICAgd3guc2hvd01vZGFsKHtcclxuICAgICAgICB0aXRsZTogJ+aPkOekuicsXHJcbiAgICAgICAgY29udGVudDogJ+ivt+mFjee9ruiFvuiur+WcsOWbvuacjeWKoeaJgOmcgOimgeeahGtleScsXHJcbiAgICAgICAgc2hvd0NhbmNlbDpmYWxzZVxyXG4gICAgICB9KVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCByZWZlcmVyID0gJ21pbmlBcHAnO1xyXG4gICAgd3gubmF2aWdhdGVUbyh7XHJcbiAgICAgIHVybDogJ3BsdWdpbjovL2Nob29zZUxvY2F0aW9uL2luZGV4P2tleT0nICsga2V5ICsgJyZyZWZlcmVyPScgKyByZWZlcmVyXHJcbiAgICAgIC8vICArICcmbG9jYXRpb249JyArIGxvY2F0aW9uICsgJyZjYXRlZ29yeT0nICsgY2F0ZWdvcnlcclxuICAgIH0pO1xyXG4gIH0sXHJcbiAgY2hlY2tTdHJlZXQoZTphbnkpe1xyXG4gICAgbGV0IHsgdmFsdWUgfSA9IGUuZGV0YWlsO1xyXG4gICAgY29uc29sZS5sb2coZSk7XHJcbiAgICB0aGlzLmNoZWNrRmllbGQoYHN0cmVldGAsdmFsdWUpO1xyXG4gIH0sXHJcbiAgY2hlY2tTdG9yZU5hbWUoZTphbnkpe1xyXG4gICAgbGV0IHsgdmFsdWUgfSA9IGUuZGV0YWlsO1xyXG4gICAgY29uc29sZS5sb2coZSk7XHJcbiAgICB0aGlzLmNoZWNrRmllbGQoYHN0b3JlTmFtZWAsdmFsdWUpO1xyXG4gIH0sXHJcbiAgY2hlY2tMaW5rTWFuKGU6YW55KXtcclxuICAgIGxldCB7IHZhbHVlIH0gPSBlLmRldGFpbDtcclxuICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgdGhpcy5jaGVja0ZpZWxkKGBsaW5rTWFuYCx2YWx1ZSk7XHJcbiAgfSxcclxuICBjaGVja1Bob25lKGU6YW55KXtcclxuICAgIGxldCB7IHZhbHVlIH0gPSBlLmRldGFpbDtcclxuICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgdGhpcy5jaGVja0ZpZWxkKGBwaG9uZWAsdmFsdWUpO1xyXG4gIH0sXHJcbiAgY2hlY2tGaWVsZChuYW1lOnN0cmluZyx2YWx1ZTpzdHJpbmcpe1xyXG4gICAgbGV0IGVycm9yTXNnID0gdmFsaWRhdG9ySW5zdGFuY2UuY2hlY2tGaWVsZChgJHtuYW1lfWAsdmFsdWUpO1xyXG4gICAgaWYgKGVycm9yTXNnPT09Jycpe1xyXG4gICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgIFtgJHtuYW1lfWBdOiB2YWx1ZSxcclxuICAgICAgICBbYCR7bmFtZX1FcnJvcmBdOiBlcnJvck1zZyxcclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgW2Ake25hbWV9TmFtZWBdOiB2YWx1ZSxcclxuICAgICAgICBbYCR7bmFtZX1FcnJvcmBdOiBlcnJvck1zZyxcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9LFxyXG4gIG9uRGVsZXRlU3RvcmUoKSB7XHJcblxyXG4gICAgLy8gY29uc29sZS5sb2coZXZlbnQpO1xyXG4gICAgd3gucHJvLnNob3dNb2RhbCh7XHJcbiAgICAgIHRpdGxlOiAn56Gu5a6a5Yig6Zmk6K+l6Zeo5bqX5ZCX77yfJyxcclxuICAgIH0pLnRoZW4oKHJlczphbnkpID0+IHtcclxuICAgICAgaWYgKHJlcy5jb25maXJtKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ+eUqOaIt+eCueWHu+ehruWumicpXHJcbiAgICAgICAgdGhpcy5kZWxldGVTdG9yZSgpO1xyXG5cclxuICAgICAgfSBlbHNlIGlmIChyZXMuY2FuY2VsKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ+eUqOaIt+eCueWHu+WPlua2iCcpXHJcbiAgICAgIH1cclxuICAgICAgLy8gaW5zdGFuY2UuY2xvc2UoKTtcclxuICAgIH0pO1xyXG4gIH0sXHJcbiAgYXN5bmMgZGVsZXRlU3RvcmUoKXtcclxuICAgIGxldCBkb2Njb2RlID0gdGhpcy5kYXRhLmRvY2NvZGU7XHJcbiAgICBsZXQgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgd3guJHV0aWxzLnRvKFxyXG4gICAgICB3eC4kaHR0cC5yZXF1ZXN0KHtcclxuICAgICAgICB1cmw6YC9zaG9wcGluZy9jdXN0b21lclN0b3JlLmRvP209ZGVsZXRlQ3VzdG9tZXJTdG9yZWAsXHJcbiAgICAgICAgZGF0YTp7XHJcbiAgICAgICAgICBkb2Njb2RlXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICAgaWYgKGVycm9yKXtcclxuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG4gICAgd3guc2hvd1RvYXN0KHtcclxuICAgICAgdGl0bGU6J+WIoOmZpOaIkOWKnydcclxuICAgIH0pXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHt3eC5uYXZpZ2F0ZUJhY2soKTt9LDEwMDApXHJcbiAgfSxcclxuICBhc3luYyBzYXZlU3RvcmUoKXtcclxuICAgIGxldCB0aW1lU2VsZWN0b3IgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI3RpbWUtc2VsZWN0b3InKTtcclxuICAgIGxldCB7c3RhcnRUaW1lLGVuZFRpbWV9ID0gdGltZVNlbGVjdG9yLmdldFNlbGVjdGVkVGltZSgpO1xyXG4gICAgbGV0IHN0b3JlU3RhdHVzID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyNzdG9yZS1zdGF0dXMnKTtcclxuICAgIGxldCBzdGF0dXMgPSBzdG9yZVN0YXR1cy5nZXRTdG9yZVN0YXR1c1ZhbHVlKCk7XHJcbiAgICBsZXQge1xyXG4gICAgICBsb2NhdGlvbixcclxuICAgICAgc3RyZWV0LFxyXG4gICAgICBzdG9yZU5hbWUsXHJcbiAgICAgIGRvY2NvZGUsXHJcbiAgICAgIGltYWdlcyxcclxuICAgICAgbGlua01hbixcclxuICAgICAgcGhvbmVcclxuICAgIH0gPSB0aGlzLmRhdGE7XHJcbiAgICBsZXQgc3RvcmVEYXRhID0ge1xyXG4gICAgICBjb3VudHJ5TmFtZTon5Lit5Zu9JyxcclxuICAgICAgcHJvdmluY2VOYW1lOiBsb2NhdGlvbi5wcm92aW5jZSxcclxuICAgICAgY2l0eU5hbWU6IGxvY2F0aW9uLmNpdHksXHJcbiAgICAgIGNvdW50eU5hbWU6IGxvY2F0aW9uLmRpc3RyaWN0LFxyXG4gICAgICBhZGRyZXNzOiBsb2NhdGlvbi5hZGRyZXNzLFxyXG4gICAgICBhZGRyZXNzTmFtZTogbG9jYXRpb24ubmFtZSxcclxuICAgICAgbG9uZ2l0dWRlOiBsb2NhdGlvbi5sb25naXR1ZGUsXHJcbiAgICAgIGxhdGl0dWRlOiBsb2NhdGlvbi5sYXRpdHVkZSxcclxuICAgICAgc3RyZWV0LFxyXG4gICAgICBzdG9yZU5hbWUsXHJcbiAgICAgIGltYWdlcyxcclxuICAgICAgbGlua01hbixcclxuICAgICAgZnJvbUJ1c2luZXNzSG91cnM6c3RhcnRUaW1lLFxyXG4gICAgICB0b0J1c2luZXNzSG91cnM6ZW5kVGltZSxcclxuICAgICAgdGVsZXBob25lOnBob25lLFxyXG4gICAgICBkb2NDb2RlOmRvY2NvZGUsXHJcbiAgICAgIHN0YXR1c1xyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2coJ+W+heS/neWtmOeahOmXqOW6l+aVsOaNricsc3RvcmVEYXRhKTtcclxuICAgIGxldCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCB3eC4kdXRpbHMudG8oXHJcbiAgICAgIHd4LiRodHRwLnJlcXVlc3Qoe1xyXG4gICAgICAgIHVybDpgL3Nob3BwaW5nL2N1c3RvbWVyU3RvcmUuZG8/bT1zYXZlQ3VzdG9tZXJTdG9yZWAsXHJcbiAgICAgICAgZGF0YTogc3RvcmVEYXRhLFxyXG4gICAgICAgIG1ldGhvZDonUE9TVCdcclxuICAgICAgfSlcclxuICAgIClcclxuICAgIGlmIChlcnJvcil7XHJcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2cocmVzdWx0KTtcclxuICAgIHd4LnNob3dUb2FzdCh7XHJcbiAgICAgIHRpdGxlOifkv53lrZjmiJDlip8nXHJcbiAgICB9KVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7d3gubmF2aWdhdGVCYWNrKCk7fSwxNTAwKVxyXG4gIH0sXHJcbiAgLy8gbmF2aWdhdGVCYWNrKG1vZGU/OmFueSl7XHJcbiAgLy8gICBsZXQge3NlbGVjdGVkU3RvcmVJZExpc3QsZG9jY29kZX0gPSB0aGlzLmRhdGE7XHJcbiAgLy8gICBpZiAobW9kZSA9PSdkZWxldGUnKXtcclxuICAvLyAgICAgLy8gQHRzLWlnbm9yZVxyXG4gIC8vICAgICBzZWxlY3RlZFN0b3JlSWRMaXN0LnNwbGljZShzZWxlY3RlZFN0b3JlSWRMaXN0LmluZGV4T2YoZG9jY29kZSksMSlcclxuICAvLyAgICAgY29uc29sZS5sb2coJ+WIoOmZpOmXqOW6l+WQjueahHNlbGVjdGVkU3RvcmVJZExpc3QnLHNlbGVjdGVkU3RvcmVJZExpc3QpO1xyXG4gIC8vICAgfVxyXG4gIC8vXHJcbiAgLy8gICBsZXQgZXZlbnRDaGFubmVsID0gdGhpcy5nZXRPcGVuZXJFdmVudENoYW5uZWwoKTtcclxuICAvLyAgIGV2ZW50Q2hhbm5lbC5lbWl0KCdnZXRTZWxlY3RlZFN0b3JlSWRMaXN0RnJvbVN0b3JlRWRpdFBhZ2UnLCB7XHJcbiAgLy8gICAgIHNlbGVjdGVkU3RvcmVJZExpc3QsXHJcbiAgLy8gICB9KTtcclxuICAvLyAgIHd4Lm5hdmlnYXRlQmFjaygpO1xyXG4gIC8vIH0sXHJcbiAgb25TYXZlKCl7XHJcbiAgICBsZXQgbG9jYXRpb24gPSB0aGlzLmRhdGEubG9jYXRpb247XHJcbiAgICBpZiAoIWxvY2F0aW9uKSB7XHJcbiAgICAgIHd4LnNob3dUb2FzdCh7XHJcbiAgICAgICAgdGl0bGU6J+ivt+mAieaLqemXqOW6l+WcsOWdgCcsXHJcbiAgICAgICAgaWNvbjonbm9uZSdcclxuICAgICAgfSlcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGNoZWNrQWxsRGF0YSA9IHZhbGlkYXRvckluc3RhbmNlLmNoZWNrQWxsRGF0YSgpO1xyXG4gICAgbGV0IGZpbGVVcGxvYWRlck11bHRpcGxlID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyNmaWxlLXVwbG9hZGVyLW11bHRpcGxlJyk7XHJcbiAgICBsZXQgY2hlY2tJbWFnZXMgPSBmaWxlVXBsb2FkZXJNdWx0aXBsZS5jaGVja0ltYWdlcyhcImltYWdlc1wiLCBcIuivt+iHs+WwkeS4iuS8oOS4gOW8oOWbvueJh1wiKTtcclxuICAgIGlmICghY2hlY2tBbGxEYXRhKXtcclxuICAgICAgY29uc29sZS5sb2coJ+i/mOaciemUmeivr+acquWkhOeQhicpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoIWNoZWNrSW1hZ2VzKSByZXR1cm47XHJcbiAgICBsZXQgaW1hZ2VzID0gZmlsZVVwbG9hZGVyTXVsdGlwbGUuZ2V0SW1hZ2VzVW5pZCgpO1xyXG4gICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgaW1hZ2VzXHJcbiAgICB9KVxyXG4gICAgY29uc29sZS5sb2coJy4uLi7mj5DkuqTmiJDlip8nKTtcclxuICAgIHRoaXMuc2F2ZVN0b3JlKCk7XHJcbiAgfSxcclxuICBvblNob3coKXtcclxuICAgIGNvbnN0IGxvY2F0aW9uID0gY2hvb3NlTG9jYXRpb24uZ2V0TG9jYXRpb24oKTsgLy8g5aaC5p6c54K55Ye756Gu6K6k6YCJ54K55oyJ6ZKu77yM5YiZ6L+U5Zue6YCJ54K557uT5p6c5a+56LGh77yM5ZCm5YiZ6L+U5ZuebnVsbFxyXG4gICAgY29uc29sZS5sb2cobG9jYXRpb24pO1xyXG4gICAgaWYgKGxvY2F0aW9uKSB7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgbG9jYXRpb25cclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgfSxcclxuICBvblVubG9hZCAoKSB7XHJcbiAgICAvLyDpobXpnaLljbjovb3ml7borr7nva7mj5Lku7bpgInngrnmlbDmja7kuLpudWxs77yM6Ziy5q2i5YaN5qyh6L+b5YWl6aG16Z2i77yMZ2VMb2NhdGlvbui/lOWbnueahOaYr+S4iuasoemAieeCuee7k+aenFxyXG4gICAgY2hvb3NlTG9jYXRpb24uc2V0TG9jYXRpb24obnVsbCk7XHJcbiAgfVxyXG5cclxufSlcclxuZXhwb3J0IHt9XHJcbiJdfQ==
\ No newline at end of file
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmVFZGl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3RvcmVFZGl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1REFBa0Q7QUFFbEQsSUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDdkQsSUFBSSxpQkFBOEIsQ0FBQztBQUNuQyxJQUFJLENBQUM7SUFDSCxJQUFJLEVBQUU7UUFDSixPQUFPLEVBQUMsSUFBVztRQUNuQixRQUFRLEVBQUMsSUFBVztRQUNwQixNQUFNLEVBQUMsRUFBRTtRQUNULFNBQVMsRUFBQyxFQUFFO1FBQ1osTUFBTSxFQUFDLEVBQUU7UUFDVCxLQUFLLEVBQUUsRUFBRTtRQUNULE9BQU8sRUFBQyxFQUFFO1FBQ1YsU0FBUyxFQUFDLE9BQU87UUFDakIsT0FBTyxFQUFDLE9BQU87UUFDZixlQUFlLEVBQUMsRUFBRTtLQUVuQjtJQUNELE1BQU0sWUFBQyxPQUFPO1FBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQixJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQzlCLElBQUksT0FBTyxFQUFFO1lBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFDWCxPQUFPLFNBQUE7YUFDUixDQUFDLENBQUE7WUFDRixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUE7U0FDcEI7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ1gsYUFBYSxFQUFFLCtDQUErQztZQUM5RCxhQUFhLEVBQUUsK0NBQStDO1NBQy9ELENBQUMsQ0FBQztJQVVMLENBQUM7SUFDRCxPQUFPO1FBQ0wsaUJBQWlCLEdBQUcsSUFBSSxxQkFBVyxDQUFDO1lBQ2xDLEtBQUssRUFBRTtnQkFDTCxNQUFNLEVBQUU7b0JBQ04sUUFBUSxFQUFFLElBQUk7aUJBQ2Y7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULFFBQVEs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Q0QsSUFBSSxDQUFDLFdBQVc7WUFBRSxPQUFPO1FBQ3pCLElBQUksTUFBTSxHQUFHLG9CQUFvQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxPQUFPLENBQUM7WUFDWCxNQUFNLFFBQUE7U0FDUCxDQUFDLENBQUE7UUFDRixPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDLENBQUM7SUFDRixNQUFNO1FBQ0osSUFBTSxRQUFRLEdBQUcsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzlDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEIsSUFBSSxRQUFRLEVBQUU7WUFDWixJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUNYLFFBQVEsVUFBQTthQUNULENBQUMsQ0FBQTtTQUNIO0lBRUgsQ0FBQztJQUNELFFBQVE7UUFFTixjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7Q0FFRixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTXlWYWxpZGF0b3IgZnJvbSBcIi4uLy4uL3V0aWxzL215VmFsaWRhdG9yXCI7XHJcbi8vIEB0cy1pZ25vcmVcclxuY29uc3QgY2hvb3NlTG9jYXRpb24gPSByZXF1aXJlUGx1Z2luKCdjaG9vc2VMb2NhdGlvbicpO1xyXG5sZXQgdmFsaWRhdG9ySW5zdGFuY2U6IE15VmFsaWRhdG9yO1xyXG5QYWdlKHtcclxuICBkYXRhOiB7XHJcbiAgICBkb2Njb2RlOm51bGwgYXMgYW55LFxyXG4gICAgbG9jYXRpb246bnVsbCBhcyBhbnksXHJcbiAgICBzdHJlZXQ6JycsXHJcbiAgICBzdG9yZU5hbWU6JycsXHJcbiAgICBpbWFnZXM6JycsXHJcbiAgICBwaG9uZTogJycsXHJcbiAgICBsaW5rTWFuOicnLFxyXG4gICAgc3RhcnRUaW1lOicwMDowMCcsXHJcbiAgICBlbmRUaW1lOicyNDowMCcsXHJcbiAgICBzdG9yZVN0YXR1c0xpc3Q6W11cclxuICAgIC8vIHNlbGVjdGVkU3RvcmVJZExpc3Q6W11cclxuICB9LFxyXG4gIG9uTG9hZChvcHRpb25zKSB7XHJcbiAgICBjb25zb2xlLmxvZyhvcHRpb25zKTtcclxuICAgIGxldCBkb2Njb2RlID0gb3B0aW9ucy5kb2Njb2RlO1xyXG4gICAgaWYgKGRvY2NvZGUpIHtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICBkb2Njb2RlXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZ2V0U3RvcmVEYXRhKClcclxuICAgIH1cclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIGZpbGVVcGxvYWRVcmw6IFwiL3Nob3BwaW5nL2N1c3RvbWVyU3RvcmUuZG8/bT11cGxvYWRBdHRhY2htZW50XCIsXHJcbiAgICAgIGZpbGVEZWxldGVVcmw6IFwiL3Nob3BwaW5nL2N1c3RvbWVyU3RvcmUuZG8/bT1kZWxldGVBdHRhY2htZW50XCIsXHJcbiAgICB9KTtcclxuICAgIC8vIHRoaXMuZ2V0TXlGb290cHJpbnQoKTtcclxuICAgIC8vIGNvbnN0IGV2ZW50Q2hhbm5lbCA9IHRoaXMuZ2V0T3BlbmVyRXZlbnRDaGFubmVsKCk7XHJcbiAgICAvLyBldmVudENoYW5uZWwub24oJ2dldFN0b3JlTGlzdEZyb21TdG9yZUxpc3RQYWdlJywgKGRhdGE6YW55KT0+IHtcclxuICAgIC8vICAgY29uc29sZS5sb2coJ+iOt+WPluaWsOW7uua0u+WKqOaXtumAieS4reeahOmXqOW6lycsZGF0YSlcclxuICAgIC8vICAgdGhpcy5zZXREYXRhKHtcclxuICAgIC8vICAgICBzZWxlY3RlZFN0b3JlSWRMaXN0OmRhdGEuc2VsZWN0ZWRTdG9yZUlkTGlzdCxcclxuICAgIC8vICAgfSlcclxuICAgIC8vXHJcbiAgICAvLyB9KVxyXG4gIH0sXHJcbiAgb25SZWFkeSgpIHtcclxuICAgIHZhbGlkYXRvckluc3RhbmNlID0gbmV3IE15VmFsaWRhdG9yKHtcclxuICAgICAgcnVsZXM6IHtcclxuICAgICAgICBzdHJlZXQ6IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc3RvcmVOYW1lOiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbGlua01hbjoge1xyXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgICAgICB9LFxyXG4gICAgICAgIHBob25lOiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICAgIG1vYmlsZTogdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgbWVzc2FnZXM6IHtcclxuICAgICAgICBzdHJlZXQ6IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiAn6K+36L6T5YWl6Zeo5bqX6K+m57uG5Zyw5Z2AJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc3RvcmVOYW1lOiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogJ+ivt+i+k+WFpemXqOW6l+WQjeensCdcclxuICAgICAgICB9LFxyXG4gICAgICAgIGxpbmtNYW46IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiAn6K+36L6T5YWl6LSf6LSj5Lq65aeT5ZCNJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcGhvbmU6IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiAn6K+36L6T5YWl6Zeo5bqX6IGU57O75pa55byPJyxcclxuICAgICAgICAgIG1vYmlsZTogJ+aJi+acuuWPt+agvOW8j+S4jeato+ehridcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICBtdWx0aUNoZWNrOnRydWVcclxuICAgIH0sdGhpcyk7XHJcbiAgfSxcclxuICBhc3luYyBnZXRTdG9yZURhdGEoKXtcclxuICAgIGxldCBkb2Njb2RlID0gdGhpcy5kYXRhLmRvY2NvZGU7XHJcbiAgICBsZXQgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgd3guJHV0aWxzLnRvKFxyXG4gICAgICB3eC4kaHR0cC5yZXF1ZXN0KHtcclxuICAgICAgICB1cmw6YC9zaG9wcGluZy9jdXN0b21lclN0b3JlLmRvP209Z2V0Q3VzdG9tZXJTdG9yZURldGFpbGAsXHJcbiAgICAgICAgZGF0YTp7XHJcbiAgICAgICAgICBkb2Njb2RlXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICAgaWYgKGVycm9yKXtcclxuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG4gICAgbGV0IGRhdGEgPSByZXN1bHQubGlzdFswXTtcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIHN0cmVldDogZGF0YS5zdHJlZXQsXHJcbiAgICAgIHN0b3JlTmFtZTpkYXRhLnN0b3JlTmFtZSxcclxuICAgICAgaW1hZ2VzVXJsOmRhdGEuaW1hZ2VzVXJsLFxyXG4gICAgICBbXCJsb2NhdGlvbi5wcm92aW5jZVwiXTogZGF0YS5wcm92aW5jZU5hbWUsXHJcbiAgICAgIFtcImxvY2F0aW9uLmNpdHlcIl06IGRhdGEuY2l0eU5hbWUsXHJcbiAgICAgIFtcImxvY2F0aW9uLmRpc3RyaWN0XCJdOiBkYXRhLmNvdW50eU5hbWUsXHJcbiAgICAgIFtcImxvY2F0aW9uLmFkZHJlc3NcIl06IGRhdGEuYWRkcmVzcyxcclxuICAgICAgW1wibG9jYXRpb24ubmFtZVwiXTogZGF0YS5hZGRyZXNzTmFtZSxcclxuICAgICAgW1wibG9jYXRpb24ubG9uZ2l0dWRlXCJdOiBkYXRhLmxvbmdpdHVkZSxcclxuICAgICAgW1wibG9jYXRpb24ubGF0aXR1ZGVcIl06IGRhdGEubGF0aXR1ZGUsXHJcbiAgICAgIHN0YXR1czogZGF0YS5zdGF0dXMsXHJcbiAgICAgIHN0YXJ0VGltZTogZGF0YS5mcm9tQnVzaW5lc3NIb3VycyxcclxuICAgICAgZW5kVGltZTogZGF0YS50b0J1c2luZXNzSG91cnMsXHJcbiAgICAgIHBob25lOiBkYXRhLnRlbGVwaG9uZSxcclxuICAgICAgbGlua01hbjogZGF0YS5saW5rTWFuLFxyXG4gICAgICBzdG9yZVN0YXR1c0xpc3Q6cmVzdWx0LnN0b3JlU3RhdHVzTGlzdFxyXG4gICAgfSlcclxuICB9LFxyXG4gIHNlbGVjdExvY2F0aW9uKCl7XHJcbiAgICBjb25zdCBrZXkgPSB3eC5nbG9iYWxEYXRhLlRlbmdYdW5NYXBMb2NhdGlvblNlcnZpY2VLZXk7XHJcbiAgICBpZiAoIWtleSkge1xyXG4gICAgICB3eC5zaG93TW9kYWwoe1xyXG4gICAgICAgIHRpdGxlOiAn5o+Q56S6JyxcclxuICAgICAgICBjb250ZW50OiAn6K+36YWN572u6IW+6K6v5Zyw5Zu+5pyN5Yqh5omA6ZyA6KaB55qEa2V5JyxcclxuICAgICAgICBzaG93Q2FuY2VsOmZhbHNlXHJcbiAgICAgIH0pXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHJlZmVyZXIgPSAnbWluaUFwcCc7XHJcbiAgICB3eC5uYXZpZ2F0ZVRvKHtcclxuICAgICAgdXJsOiAncGx1Z2luOi8vY2hvb3NlTG9jYXRpb24vaW5kZXg/a2V5PScgKyBrZXkgKyAnJnJlZmVyZXI9JyArIHJlZmVyZXJcclxuICAgICAgLy8gICsgJyZsb2NhdGlvbj0nICsgbG9jYXRpb24gKyAnJmNhdGVnb3J5PScgKyBjYXRlZ29yeVxyXG4gICAgfSk7XHJcbiAgfSxcclxuICBjaGVja1N0cmVldChlOmFueSl7XHJcbiAgICBsZXQgeyB2YWx1ZSB9ID0gZS5kZXRhaWw7XHJcbiAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgIHRoaXMuY2hlY2tGaWVsZChgc3RyZWV0YCx2YWx1ZSk7XHJcbiAgfSxcclxuICBjaGVja1N0b3JlTmFtZShlOmFueSl7XHJcbiAgICBsZXQgeyB2YWx1ZSB9ID0gZS5kZXRhaWw7XHJcbiAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgIHRoaXMuY2hlY2tGaWVsZChgc3RvcmVOYW1lYCx2YWx1ZSk7XHJcbiAgfSxcclxuICBjaGVja0xpbmtNYW4oZTphbnkpe1xyXG4gICAgbGV0IHsgdmFsdWUgfSA9IGUuZGV0YWlsO1xyXG4gICAgY29uc29sZS5sb2coZSk7XHJcbiAgICB0aGlzLmNoZWNrRmllbGQoYGxpbmtNYW5gLHZhbHVlKTtcclxuICB9LFxyXG4gIGNoZWNrUGhvbmUoZTphbnkpe1xyXG4gICAgbGV0IHsgdmFsdWUgfSA9IGUuZGV0YWlsO1xyXG4gICAgY29uc29sZS5sb2coZSk7XHJcbiAgICB0aGlzLmNoZWNrRmllbGQoYHBob25lYCx2YWx1ZSk7XHJcbiAgfSxcclxuICBjaGVja0ZpZWxkKG5hbWU6c3RyaW5nLHZhbHVlOnN0cmluZyl7XHJcbiAgICBsZXQgZXJyb3JNc2cgPSB2YWxpZGF0b3JJbnN0YW5jZS5jaGVja0ZpZWxkKGAke25hbWV9YCx2YWx1ZSk7XHJcbiAgICBpZiAoZXJyb3JNc2c9PT0nJyl7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgW2Ake25hbWV9YF06IHZhbHVlLFxyXG4gICAgICAgIFtgJHtuYW1lfUVycm9yYF06IGVycm9yTXNnLFxyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICBbYCR7bmFtZX1OYW1lYF06IHZhbHVlLFxyXG4gICAgICAgIFtgJHtuYW1lfUVycm9yYF06IGVycm9yTXNnLFxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH0sXHJcbiAgb25EZWxldGVTdG9yZSgpIHtcclxuXHJcbiAgICAvLyBjb25zb2xlLmxvZyhldmVudCk7XHJcbiAgICB3eC5wcm8uc2hvd01vZGFsKHtcclxuICAgICAgdGl0bGU6ICfnoa7lrprliKDpmaTor6Xpl6jlupflkJfvvJ8nLFxyXG4gICAgfSkudGhlbigocmVzOmFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzLmNvbmZpcm0pIHtcclxuICAgICAgICBjb25zb2xlLmxvZygn55So5oi354K55Ye756Gu5a6aJylcclxuICAgICAgICB0aGlzLmRlbGV0ZVN0b3JlKCk7XHJcblxyXG4gICAgICB9IGVsc2UgaWYgKHJlcy5jYW5jZWwpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygn55So5oi354K55Ye75Y+W5raIJylcclxuICAgICAgfVxyXG4gICAgICAvLyBpbnN0YW5jZS5jbG9zZSgpO1xyXG4gICAgfSk7XHJcbiAgfSxcclxuICBhc3luYyBkZWxldGVTdG9yZSgpe1xyXG4gICAgbGV0IGRvY2NvZGUgPSB0aGlzLmRhdGEuZG9jY29kZTtcclxuICAgIGxldCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCB3eC4kdXRpbHMudG8oXHJcbiAgICAgIHd4LiRodHRwLnJlcXVlc3Qoe1xyXG4gICAgICAgIHVybDpgL3Nob3BwaW5nL2N1c3RvbWVyU3RvcmUuZG8/bT1kZWxldGVDdXN0b21lclN0b3JlYCxcclxuICAgICAgICBkYXRhOntcclxuICAgICAgICAgIGRvY2NvZGVcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgICBpZiAoZXJyb3Ipe1xyXG4gICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XHJcbiAgICB3eC5zaG93VG9hc3Qoe1xyXG4gICAgICB0aXRsZTon5Yig6Zmk5oiQ5YqfJ1xyXG4gICAgfSlcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge3d4Lm5hdmlnYXRlQmFjaygpO30sMTAwMClcclxuICB9LFxyXG4gIGFzeW5jIHNhdmVTdG9yZSgpe1xyXG4gICAgbGV0IHRpbWVTZWxlY3RvciA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjdGltZS1zZWxlY3RvcicpO1xyXG4gICAgbGV0IHtzdGFydFRpbWUsZW5kVGltZX0gPSB0aW1lU2VsZWN0b3IuZ2V0U2VsZWN0ZWRUaW1lKCk7XHJcbiAgICBsZXQgc3RvcmVTdGF0dXMgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI3N0b3JlLXN0YXR1cycpO1xyXG4gICAgbGV0IHN0YXR1cyA9IHN0b3JlU3RhdHVzLmdldFN0b3JlU3RhdHVzVmFsdWUoKTtcclxuICAgIGxldCB7XHJcbiAgICAgIGxvY2F0aW9uLFxyXG4gICAgICBzdHJlZXQsXHJcbiAgICAgIHN0b3JlTmFtZSxcclxuICAgICAgZG9jY29kZSxcclxuICAgICAgaW1hZ2VzLFxyXG4gICAgICBsaW5rTWFuLFxyXG4gICAgICBwaG9uZVxyXG4gICAgfSA9IHRoaXMuZGF0YTtcclxuICAgIGxldCBzdG9yZURhdGEgPSB7XHJcbiAgICAgIGNvdW50cnlOYW1lOifkuK3lm70nLFxyXG4gICAgICBwcm92aW5jZU5hbWU6IGxvY2F0aW9uLnByb3ZpbmNlLFxyXG4gICAgICBjaXR5TmFtZTogbG9jYXRpb24uY2l0eSxcclxuICAgICAgY291bnR5TmFtZTogbG9jYXRpb24uZGlzdHJpY3QsXHJcbiAgICAgIGFkZHJlc3M6IGxvY2F0aW9uLmFkZHJlc3MsXHJcbiAgICAgIGFkZHJlc3NOYW1lOiBsb2NhdGlvbi5uYW1lLFxyXG4gICAgICBsb25naXR1ZGU6IGxvY2F0aW9uLmxvbmdpdHVkZSxcclxuICAgICAgbGF0aXR1ZGU6IGxvY2F0aW9uLmxhdGl0dWRlLFxyXG4gICAgICBzdHJlZXQsXHJcbiAgICAgIHN0b3JlTmFtZSxcclxuICAgICAgaW1hZ2VzLFxyXG4gICAgICBsaW5rTWFuLFxyXG4gICAgICBmcm9tQnVzaW5lc3NIb3VyczpzdGFydFRpbWUsXHJcbiAgICAgIHRvQnVzaW5lc3NIb3VyczplbmRUaW1lLFxyXG4gICAgICB0ZWxlcGhvbmU6cGhvbmUsXHJcbiAgICAgIGRvY0NvZGU6ZG9jY29kZSxcclxuICAgICAgc3RhdHVzXHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZygn5b6F5L+d5a2Y55qE6Zeo5bqX5pWw5o2uJyxzdG9yZURhdGEpO1xyXG4gICAgbGV0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IHd4LiR1dGlscy50byhcclxuICAgICAgd3guJGh0dHAucmVxdWVzdCh7XHJcbiAgICAgICAgdXJsOmAvc2hvcHBpbmcvY3VzdG9tZXJTdG9yZS5kbz9tPXNhdmVDdXN0b21lclN0b3JlYCxcclxuICAgICAgICBkYXRhOiBzdG9yZURhdGEsXHJcbiAgICAgICAgbWV0aG9kOidQT1NUJ1xyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICAgaWYgKGVycm9yKXtcclxuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG4gICAgd3guc2hvd1RvYXN0KHtcclxuICAgICAgdGl0bGU6J+S/neWtmOaIkOWKnydcclxuICAgIH0pXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHt3eC5uYXZpZ2F0ZUJhY2soKTt9LDE1MDApXHJcbiAgfSxcclxuICAvLyBuYXZpZ2F0ZUJhY2sobW9kZT86YW55KXtcclxuICAvLyAgIGxldCB7c2VsZWN0ZWRTdG9yZUlkTGlzdCxkb2Njb2RlfSA9IHRoaXMuZGF0YTtcclxuICAvLyAgIGlmIChtb2RlID09J2RlbGV0ZScpe1xyXG4gIC8vICAgICAvLyBAdHMtaWdub3JlXHJcbiAgLy8gICAgIHNlbGVjdGVkU3RvcmVJZExpc3Quc3BsaWNlKHNlbGVjdGVkU3RvcmVJZExpc3QuaW5kZXhPZihkb2Njb2RlKSwxKVxyXG4gIC8vICAgICBjb25zb2xlLmxvZygn5Yig6Zmk6Zeo5bqX5ZCO55qEc2VsZWN0ZWRTdG9yZUlkTGlzdCcsc2VsZWN0ZWRTdG9yZUlkTGlzdCk7XHJcbiAgLy8gICB9XHJcbiAgLy9cclxuICAvLyAgIGxldCBldmVudENoYW5uZWwgPSB0aGlzLmdldE9wZW5lckV2ZW50Q2hhbm5lbCgpO1xyXG4gIC8vICAgZXZlbnRDaGFubmVsLmVtaXQoJ2dldFNlbGVjdGVkU3RvcmVJZExpc3RGcm9tU3RvcmVFZGl0UGFnZScsIHtcclxuICAvLyAgICAgc2VsZWN0ZWRTdG9yZUlkTGlzdCxcclxuICAvLyAgIH0pO1xyXG4gIC8vICAgd3gubmF2aWdhdGVCYWNrKCk7XHJcbiAgLy8gfSxcclxuICBvblNhdmU6d3guJHV0aWxzLmRlYm91bmNlKGZ1bmN0aW9uKHRoaXM6YW55KXtcclxuICAgIGxldCBsb2NhdGlvbiA9IHRoaXMuZGF0YS5sb2NhdGlvbjtcclxuICAgIGlmICghbG9jYXRpb24pIHtcclxuICAgICAgd3guc2hvd1RvYXN0KHtcclxuICAgICAgICB0aXRsZTon6K+36YCJ5oup6Zeo5bqX5Zyw5Z2AJyxcclxuICAgICAgICBpY29uOidub25lJ1xyXG4gICAgICB9KVxyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuXHJcbiAgICBsZXQgY2hlY2tBbGxEYXRhID0gdmFsaWRhdG9ySW5zdGFuY2UuY2hlY2tBbGxEYXRhKCk7XHJcbiAgICBsZXQgZmlsZVVwbG9hZGVyTXVsdGlwbGUgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI2ZpbGUtdXBsb2FkZXItbXVsdGlwbGUnKTtcclxuICAgIGxldCBjaGVja0ltYWdlcyA9IGZpbGVVcGxvYWRlck11bHRpcGxlLmNoZWNrSW1hZ2VzKFwiaW1hZ2VzXCIsIFwi6K+36Iez5bCR5LiK5Lyg5LiA5byg5Zu+54mHXCIpO1xyXG4gICAgaWYgKCFjaGVja0FsbERhdGEpe1xyXG4gICAgICBjb25zb2xlLmxvZygn6L+Y5pyJ6ZSZ6K+v5pyq5aSE55CGJyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICghY2hlY2tJbWFnZXMpIHJldHVybjtcclxuICAgIGxldCBpbWFnZXMgPSBmaWxlVXBsb2FkZXJNdWx0aXBsZS5nZXRJbWFnZXNVbmlkKCk7XHJcbiAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICBpbWFnZXNcclxuICAgIH0pXHJcbiAgICBjb25zb2xlLmxvZygnLi4uLuaPkOS6pOaIkOWKnycpO1xyXG4gICAgdGhpcy5zYXZlU3RvcmUoKTtcclxuICB9KSxcclxuICBvblNob3coKXtcclxuICAgIGNvbnN0IGxvY2F0aW9uID0gY2hvb3NlTG9jYXRpb24uZ2V0TG9jYXRpb24oKTsgLy8g5aaC5p6c54K55Ye756Gu6K6k6YCJ54K55oyJ6ZKu77yM5YiZ6L+U5Zue6YCJ54K557uT5p6c5a+56LGh77yM5ZCm5YiZ6L+U5ZuebnVsbFxyXG4gICAgY29uc29sZS5sb2cobG9jYXRpb24pO1xyXG4gICAgaWYgKGxvY2F0aW9uKSB7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgbG9jYXRpb25cclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgfSxcclxuICBvblVubG9hZCAoKSB7XHJcbiAgICAvLyDpobXpnaLljbjovb3ml7borr7nva7mj5Lku7bpgInngrnmlbDmja7kuLpudWxs77yM6Ziy5q2i5YaN5qyh6L+b5YWl6aG16Z2i77yMZ2VMb2NhdGlvbui/lOWbnueahOaYr+S4iuasoemAieeCuee7k+aenFxyXG4gICAgY2hvb3NlTG9jYXRpb24uc2V0TG9jYXRpb24obnVsbCk7XHJcbiAgfVxyXG5cclxufSlcclxuZXhwb3J0IHt9XHJcbiJdfQ==
\ No newline at end of file
diff --git a/pages/storeEdit/storeEdit.ts b/pages/storeEdit/storeEdit.ts
index 5f49bdc..fd0b28d 100644
--- a/pages/storeEdit/storeEdit.ts
+++ b/pages/storeEdit/storeEdit.ts
@@ -260,7 +260,7 @@
   //   });
   //   wx.navigateBack();
   // },
-  onSave(){
+  onSave:wx.$utils.debounce(function(this:any){
     let location = this.data.location;
     if (!location) {
       wx.showToast({
@@ -284,7 +284,7 @@
     })
     console.log('....鎻愪氦鎴愬姛');
     this.saveStore();
-  },
+  }),
   onShow(){
     const location = chooseLocation.getLocation(); // 濡傛灉鐐瑰嚮纭閫夌偣鎸夐挳锛屽垯杩斿洖閫夌偣缁撴灉瀵硅薄锛屽惁鍒欒繑鍥瀗ull
     console.log(location);
diff --git a/utils/myValidator.js b/utils/myValidator.js
index 3510bc1..ecaa26e 100644
--- a/utils/myValidator.js
+++ b/utils/myValidator.js
@@ -39,9 +39,8 @@
     MyValidator.prototype.checkAllData = function () {
         var _this = this;
         var value = {};
-        var keys = Object.keys(this.options.rules);
-        console.log('keys', keys);
-        keys.forEach(function (key) {
+        var rules = this.getRulers();
+        rules.forEach(function (key) {
             value[key] = _this.pageInstance.data[key];
         });
         return this.validator.checkData(value, function (data) {
@@ -55,10 +54,15 @@
             console.log(data, error);
         });
     };
+    MyValidator.prototype.getRulers = function () {
+        var keys = Object.keys(this.options.rules);
+        console.log('keys', keys);
+        return keys;
+    };
     MyValidator.addRule = function (rulesName, rules) {
         WeValidator.addRule(rulesName, rules);
     };
     return MyValidator;
 }());
 exports.default = MyValidator;
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXlWYWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJteVZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVVBLElBQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUU1QztJQUVFLHFCQUFtQixPQUFlLEVBQVEsWUFBZ0I7UUFBdkMsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUFRLGlCQUFZLEdBQVosWUFBWSxDQUFJO1FBQ3hELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7SUFDbkMsQ0FBQztJQUNELDhCQUFRLEdBQVIsVUFBUyxLQUFZO1FBRW5CLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFDRCxpQ0FBVyxHQUFYLFVBQVksTUFBb0I7UUFFOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUNELGdDQUFVLEdBQVYsVUFBVyxJQUFZLEVBQUMsS0FBYTtRQUFyQyxpQkFvQkM7O1FBbkJDLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLFdBQUUsR0FBQyxJQUFJLElBQUUsS0FBSyxNQUFFLENBQUM7UUFDMUMsSUFBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxXQUFFLEdBQUMsSUFBSSxJQUFFLEtBQUssT0FBRSxDQUFDLEtBQUcsSUFBTSxDQUFDLEVBQUMsVUFBQyxJQUFROztZQUNqRSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xCLEtBQUksQ0FBQyxZQUFZLENBQUMsT0FBTztnQkFDdkIsR0FBSSxJQUFJLFVBQU8sSUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRztvQkFDL0IsQ0FBQTtZQUNGLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQztZQUFFLE9BQU8sR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPO1lBQ3ZCLEdBQUksSUFBSSxVQUFPLElBQUUsRUFBRTtnQkFDbkIsQ0FBQTtRQUNGLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDVCxPQUFPLEdBQUcsQ0FBQztJQUtiLENBQUM7SUFDRCxrQ0FBWSxHQUFaO1FBQUEsaUJBb0JDO1FBaEJDLElBQUksS0FBSyxHQUFPLEVBQUUsQ0FBQztRQUNuQixJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFDLEdBQUc7WUFDZixLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDMUMsQ0FBQyxDQUFDLENBQUE7UUFDRixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBQyxVQUFDLElBQVE7WUFDN0MsSUFBSSxLQUFLLEdBQWMsRUFBRSxDQUFDO1lBQzFCLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFO2dCQUNyQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQzdCLEtBQUssQ0FBSSxJQUFJLFVBQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUE7aUJBQ3ZDO2FBQ0Y7WUFDRCxLQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNoQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksRUFBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFTSxtQkFBTyxHQUFkLFVBQWUsU0FBZ0IsRUFBQyxLQUFZO1FBQzFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFDSCxrQkFBQztBQUFELENBQUMsQUE3REQsSUE2REM7QUFFRCxrQkFBZSxXQUFXLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbnRlcmZhY2Ugd2VWYWxpZGF0b3Ige1xyXG4vLyAgIGNoZWNrRmllbGRzKGRhdGE6IG9iamVjdCwgZmllbGRzOkFycmF5PHN0cmluZz4sIG9uTWVzc2FnZT86IEZ1bmN0aW9uLCBzaG93TWVzc2FnZT86IGJvb2xlYW4pOmJvb2xlYW47XHJcbi8vICAgY2hlY2tEYXRhKGRhdGE6IG9iamVjdCwgb25NZXNzYWdlPzogRnVuY3Rpb24sIHNob3dNZXNzYWdlPzogYm9vbGVhbiwgZmllbGRNYXA/OiBvYmplY3QpOiBib29sZWFuO1xyXG4vLyB9XHJcbnR5cGUgT3B0aW9ucyA9IHtcclxuICBydWxlczogb2JqZWN0LFxyXG4gIG1lc3NhZ2VzOiBvYmplY3QsXHJcbiAgb25NZXNzYWdlPzogRnVuY3Rpb24sXHJcbiAgbXVsdGlDaGVjaz86IGJvb2xlYW5cclxufVxyXG5jb25zdCBXZVZhbGlkYXRvciA9IHJlcXVpcmUoJ3dlLXZhbGlkYXRvcicpO1xyXG5cclxuY2xhc3MgTXlWYWxpZGF0b3Ige1xyXG4gIHB1YmxpYyB2YWxpZGF0b3I6IGFueVxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBvcHRpb25zOk9wdGlvbnMscHVibGljIHBhZ2VJbnN0YW5jZTphbnkpIHtcclxuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XHJcbiAgICB0aGlzLnZhbGlkYXRvciA9IG5ldyBXZVZhbGlkYXRvcihvcHRpb25zKTtcclxuICAgIHRoaXMucGFnZUluc3RhbmNlID0gcGFnZUluc3RhbmNlO1xyXG4gIH1cclxuICBhZGRSdWxlcyhydWxlczpvYmplY3Qpe1xyXG4gICAgLy8g5Yqo5oCB5re75Yqg5qCh6aqMXHJcbiAgICB0aGlzLnZhbGlkYXRvci5hZGRSdWxlcyhydWxlcyk7XHJcbiAgfVxyXG4gIHJlbW92ZVJ1bGVzKGZpZWxkczpBcnJheTxzdHJpbmc+KXtcclxuICAgIC8vIOWKqOaAgeWIoOmZpOagoemqjFxyXG4gICAgdGhpcy52YWxpZGF0b3IucmVtb3ZlUnVsZXMoZmllbGRzKTtcclxuICB9XHJcbiAgY2hlY2tGaWVsZCh0eXBlOiBzdHJpbmcsdmFsdWU6IHN0cmluZyl7XHJcbiAgICB2YWx1ZSA9IHZhbHVlLnRyaW0oKTtcclxuICAgIGxldCBtc2cgPSAnJztcclxuICAgIHRoaXMucGFnZUluc3RhbmNlLnNldERhdGEoe1t0eXBlXTp2YWx1ZX0pO1xyXG4gICAgaWYoIXRoaXMudmFsaWRhdG9yLmNoZWNrRmllbGRzKHtbdHlwZV06dmFsdWV9LFtgJHt0eXBlfWBdLChkYXRhOmFueSk9PntcclxuICAgICAgY29uc29sZS5sb2coZGF0YSk7XHJcbiAgICAgIHRoaXMucGFnZUluc3RhbmNlLnNldERhdGEoe1xyXG4gICAgICAgIFtgJHt0eXBlfUVycm9yYF06ZGF0YVt0eXBlXS5tc2dcclxuICAgICAgfSlcclxuICAgICAgbXNnID0gZGF0YVt0eXBlXS5tc2c7XHJcbiAgICB9KSkgcmV0dXJuIG1zZztcclxuICAgIHRoaXMucGFnZUluc3RhbmNlLnNldERhdGEoe1xyXG4gICAgICBbYCR7dHlwZX1FcnJvcmBdOicnXHJcbiAgICB9KVxyXG4gICAgbXNnID0gJyc7XHJcbiAgICByZXR1cm4gbXNnO1xyXG4gICAgLy8gY29uc29sZS5sb2coKHRoaXMgYXMgYW55KS52YWxpZGF0b3JJbnN0YW5jZS5jaGVja0ZpZWxkcyh7dXNlcm5hbWU6dmFsdWV9LFsndXNlcm5hbWUnXSkpO1xyXG4gICAgLy8gY29uc29sZS5sb2coKHRoaXMgYXMgYW55KS52YWxpZGF0b3JJbnN0YW5jZS5pc1ZhbGlkKHt1c2VybmFtZTp2YWx1ZX0sWyd1c2VybmFtZSddKSk7XHJcblxyXG4gICAgLy8gaWYoISh0aGlzIGFzIGFueSkudmFsaWRhdG9ySW5zdGFuY2UuY2hlY2tEYXRhKHZhbHVlKSkgcmV0dXJuXHJcbiAgfVxyXG4gIGNoZWNrQWxsRGF0YSgpOmJvb2xlYW4ge1xyXG4gICAgaW50ZXJmYWNlIGVycm9yVHlwZSB7XHJcbiAgICAgIFtwcm9wZXJ0eTpzdHJpbmddOmFueTtcclxuICAgIH1cclxuICAgIGxldCB2YWx1ZTphbnkgPSB7fTtcclxuICAgIGxldCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5vcHRpb25zLnJ1bGVzKTtcclxuICAgIGNvbnNvbGUubG9nKCdrZXlzJyxrZXlzKTtcclxuICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgIHZhbHVlW2tleV0gPSB0aGlzLnBhZ2VJbnN0YW5jZS5kYXRhW2tleV1cclxuICAgIH0pXHJcbiAgICByZXR1cm4gdGhpcy52YWxpZGF0b3IuY2hlY2tEYXRhKHZhbHVlLChkYXRhOmFueSk9PntcclxuICAgICAgbGV0IGVycm9yOiBlcnJvclR5cGUgPSB7fTtcclxuICAgICAgZm9yIChsZXQgdHlwZSBpbiBkYXRhKSB7XHJcbiAgICAgICAgaWYgKGRhdGEuaGFzT3duUHJvcGVydHkodHlwZSkpIHtcclxuICAgICAgICAgIGVycm9yW2Ake3R5cGV9RXJyb3JgXSA9IGRhdGFbdHlwZV0ubXNnXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucGFnZUluc3RhbmNlLnNldERhdGEoZXJyb3IpXHJcbiAgICAgIGNvbnNvbGUubG9nKGRhdGEsZXJyb3IpO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHN0YXRpYyBhZGRSdWxlKHJ1bGVzTmFtZTpzdHJpbmcscnVsZXM6b2JqZWN0KSB7XHJcbiAgICBXZVZhbGlkYXRvci5hZGRSdWxlKHJ1bGVzTmFtZSxydWxlcyk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBNeVZhbGlkYXRvclxyXG4iXX0=
\ No newline at end of file
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXlWYWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJteVZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVVBLElBQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUU1QztJQUVFLHFCQUFtQixPQUFlLEVBQVEsWUFBZ0I7UUFBdkMsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUFRLGlCQUFZLEdBQVosWUFBWSxDQUFJO1FBQ3hELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7SUFDbkMsQ0FBQztJQUNELDhCQUFRLEdBQVIsVUFBUyxLQUFZO1FBRW5CLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFDRCxpQ0FBVyxHQUFYLFVBQVksTUFBb0I7UUFFOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUNELGdDQUFVLEdBQVYsVUFBVyxJQUFZLEVBQUMsS0FBYTtRQUFyQyxpQkFvQkM7O1FBbkJDLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLFdBQUUsR0FBQyxJQUFJLElBQUUsS0FBSyxNQUFFLENBQUM7UUFDMUMsSUFBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxXQUFFLEdBQUMsSUFBSSxJQUFFLEtBQUssT0FBRSxDQUFDLEtBQUcsSUFBTSxDQUFDLEVBQUMsVUFBQyxJQUFROztZQUNqRSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xCLEtBQUksQ0FBQyxZQUFZLENBQUMsT0FBTztnQkFDdkIsR0FBSSxJQUFJLFVBQU8sSUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRztvQkFDL0IsQ0FBQTtZQUNGLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQztZQUFFLE9BQU8sR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPO1lBQ3ZCLEdBQUksSUFBSSxVQUFPLElBQUUsRUFBRTtnQkFDbkIsQ0FBQTtRQUNGLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDVCxPQUFPLEdBQUcsQ0FBQztJQUtiLENBQUM7SUFDRCxrQ0FBWSxHQUFaO1FBQUEsaUJBbUJDO1FBZkMsSUFBSSxLQUFLLEdBQU8sRUFBRSxDQUFDO1FBQ25CLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM3QixLQUFLLENBQUMsT0FBTyxDQUFDLFVBQUMsR0FBRztZQUNoQixLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDMUMsQ0FBQyxDQUFDLENBQUE7UUFDRixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBQyxVQUFDLElBQVE7WUFDN0MsSUFBSSxLQUFLLEdBQWMsRUFBRSxDQUFDO1lBQzFCLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFO2dCQUNyQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQzdCLEtBQUssQ0FBSSxJQUFJLFVBQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUE7aUJBQ3ZDO2FBQ0Y7WUFDRCxLQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNoQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksRUFBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDRCwrQkFBUyxHQUFUO1FBQ0UsSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLG1CQUFPLEdBQWQsVUFBZSxTQUFnQixFQUFDLEtBQVk7UUFDMUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUNILGtCQUFDO0FBQUQsQ0FBQyxBQWpFRCxJQWlFQztBQUVELGtCQUFlLFdBQVcsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIGludGVyZmFjZSB3ZVZhbGlkYXRvciB7XHJcbi8vICAgY2hlY2tGaWVsZHMoZGF0YTogb2JqZWN0LCBmaWVsZHM6QXJyYXk8c3RyaW5nPiwgb25NZXNzYWdlPzogRnVuY3Rpb24sIHNob3dNZXNzYWdlPzogYm9vbGVhbik6Ym9vbGVhbjtcclxuLy8gICBjaGVja0RhdGEoZGF0YTogb2JqZWN0LCBvbk1lc3NhZ2U/OiBGdW5jdGlvbiwgc2hvd01lc3NhZ2U/OiBib29sZWFuLCBmaWVsZE1hcD86IG9iamVjdCk6IGJvb2xlYW47XHJcbi8vIH1cclxudHlwZSBPcHRpb25zID0ge1xyXG4gIHJ1bGVzOiBvYmplY3QsXHJcbiAgbWVzc2FnZXM6IG9iamVjdCxcclxuICBvbk1lc3NhZ2U/OiBGdW5jdGlvbixcclxuICBtdWx0aUNoZWNrPzogYm9vbGVhblxyXG59XHJcbmNvbnN0IFdlVmFsaWRhdG9yID0gcmVxdWlyZSgnd2UtdmFsaWRhdG9yJyk7XHJcblxyXG5jbGFzcyBNeVZhbGlkYXRvciB7XHJcbiAgcHVibGljIHZhbGlkYXRvcjogYW55XHJcbiAgY29uc3RydWN0b3IocHVibGljIG9wdGlvbnM6T3B0aW9ucyxwdWJsaWMgcGFnZUluc3RhbmNlOmFueSkge1xyXG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcclxuICAgIHRoaXMudmFsaWRhdG9yID0gbmV3IFdlVmFsaWRhdG9yKG9wdGlvbnMpO1xyXG4gICAgdGhpcy5wYWdlSW5zdGFuY2UgPSBwYWdlSW5zdGFuY2U7XHJcbiAgfVxyXG4gIGFkZFJ1bGVzKHJ1bGVzOm9iamVjdCl7XHJcbiAgICAvLyDliqjmgIHmt7vliqDmoKHpqoxcclxuICAgIHRoaXMudmFsaWRhdG9yLmFkZFJ1bGVzKHJ1bGVzKTtcclxuICB9XHJcbiAgcmVtb3ZlUnVsZXMoZmllbGRzOkFycmF5PHN0cmluZz4pe1xyXG4gICAgLy8g5Yqo5oCB5Yig6Zmk5qCh6aqMXHJcbiAgICB0aGlzLnZhbGlkYXRvci5yZW1vdmVSdWxlcyhmaWVsZHMpO1xyXG4gIH1cclxuICBjaGVja0ZpZWxkKHR5cGU6IHN0cmluZyx2YWx1ZTogc3RyaW5nKXtcclxuICAgIHZhbHVlID0gdmFsdWUudHJpbSgpO1xyXG4gICAgbGV0IG1zZyA9ICcnO1xyXG4gICAgdGhpcy5wYWdlSW5zdGFuY2Uuc2V0RGF0YSh7W3R5cGVdOnZhbHVlfSk7XHJcbiAgICBpZighdGhpcy52YWxpZGF0b3IuY2hlY2tGaWVsZHMoe1t0eXBlXTp2YWx1ZX0sW2Ake3R5cGV9YF0sKGRhdGE6YW55KT0+e1xyXG4gICAgICBjb25zb2xlLmxvZyhkYXRhKTtcclxuICAgICAgdGhpcy5wYWdlSW5zdGFuY2Uuc2V0RGF0YSh7XHJcbiAgICAgICAgW2Ake3R5cGV9RXJyb3JgXTpkYXRhW3R5cGVdLm1zZ1xyXG4gICAgICB9KVxyXG4gICAgICBtc2cgPSBkYXRhW3R5cGVdLm1zZztcclxuICAgIH0pKSByZXR1cm4gbXNnO1xyXG4gICAgdGhpcy5wYWdlSW5zdGFuY2Uuc2V0RGF0YSh7XHJcbiAgICAgIFtgJHt0eXBlfUVycm9yYF06JydcclxuICAgIH0pXHJcbiAgICBtc2cgPSAnJztcclxuICAgIHJldHVybiBtc2c7XHJcbiAgICAvLyBjb25zb2xlLmxvZygodGhpcyBhcyBhbnkpLnZhbGlkYXRvckluc3RhbmNlLmNoZWNrRmllbGRzKHt1c2VybmFtZTp2YWx1ZX0sWyd1c2VybmFtZSddKSk7XHJcbiAgICAvLyBjb25zb2xlLmxvZygodGhpcyBhcyBhbnkpLnZhbGlkYXRvckluc3RhbmNlLmlzVmFsaWQoe3VzZXJuYW1lOnZhbHVlfSxbJ3VzZXJuYW1lJ10pKTtcclxuXHJcbiAgICAvLyBpZighKHRoaXMgYXMgYW55KS52YWxpZGF0b3JJbnN0YW5jZS5jaGVja0RhdGEodmFsdWUpKSByZXR1cm5cclxuICB9XHJcbiAgY2hlY2tBbGxEYXRhKCk6Ym9vbGVhbiB7XHJcbiAgICBpbnRlcmZhY2UgZXJyb3JUeXBlIHtcclxuICAgICAgW3Byb3BlcnR5OnN0cmluZ106YW55O1xyXG4gICAgfVxyXG4gICAgbGV0IHZhbHVlOmFueSA9IHt9O1xyXG4gICAgbGV0IHJ1bGVzID0gdGhpcy5nZXRSdWxlcnMoKTtcclxuICAgIHJ1bGVzLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICB2YWx1ZVtrZXldID0gdGhpcy5wYWdlSW5zdGFuY2UuZGF0YVtrZXldXHJcbiAgICB9KVxyXG4gICAgcmV0dXJuIHRoaXMudmFsaWRhdG9yLmNoZWNrRGF0YSh2YWx1ZSwoZGF0YTphbnkpPT57XHJcbiAgICAgIGxldCBlcnJvcjogZXJyb3JUeXBlID0ge307XHJcbiAgICAgIGZvciAobGV0IHR5cGUgaW4gZGF0YSkge1xyXG4gICAgICAgIGlmIChkYXRhLmhhc093blByb3BlcnR5KHR5cGUpKSB7XHJcbiAgICAgICAgICBlcnJvcltgJHt0eXBlfUVycm9yYF0gPSBkYXRhW3R5cGVdLm1zZ1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnBhZ2VJbnN0YW5jZS5zZXREYXRhKGVycm9yKVxyXG4gICAgICBjb25zb2xlLmxvZyhkYXRhLGVycm9yKTtcclxuICAgIH0pXHJcbiAgfVxyXG4gIGdldFJ1bGVycygpe1xyXG4gICAgbGV0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLm9wdGlvbnMucnVsZXMpO1xyXG4gICAgY29uc29sZS5sb2coJ2tleXMnLGtleXMpO1xyXG4gICAgcmV0dXJuIGtleXM7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYWRkUnVsZShydWxlc05hbWU6c3RyaW5nLHJ1bGVzOm9iamVjdCkge1xyXG4gICAgV2VWYWxpZGF0b3IuYWRkUnVsZShydWxlc05hbWUscnVsZXMpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgTXlWYWxpZGF0b3JcclxuIl19
\ No newline at end of file
diff --git a/utils/myValidator.ts b/utils/myValidator.ts
index 24ccc5a..920e49f 100644
--- a/utils/myValidator.ts
+++ b/utils/myValidator.ts
@@ -51,9 +51,8 @@
       [property:string]:any;
     }
     let value:any = {};
-    let keys = Object.keys(this.options.rules);
-    console.log('keys',keys);
-    keys.forEach((key) => {
+    let rules = this.getRulers();
+    rules.forEach((key) => {
       value[key] = this.pageInstance.data[key]
     })
     return this.validator.checkData(value,(data:any)=>{
@@ -67,6 +66,11 @@
       console.log(data,error);
     })
   }
+  getRulers(){
+    let keys = Object.keys(this.options.rules);
+    console.log('keys',keys);
+    return keys;
+  }
 
   static addRule(rulesName:string,rules:object) {
     WeValidator.addRule(rulesName,rules);
diff --git a/utils/util.js b/utils/util.js
index 99abdcf..9081996 100644
--- a/utils/util.js
+++ b/utils/util.js
@@ -36,21 +36,10 @@
 };
 var _this_1 = this;
 Object.defineProperty(exports, "__esModule", { value: true });
-var formatTime = function (dateString) {
-    var date = new Date(dateString);
-    var year = date.getFullYear();
-    var month = date.getMonth() + 1;
-    var day = date.getDate();
-    var hour = date.getHours();
-    var minute = date.getMinutes();
-    var second = date.getSeconds();
-    return ([year, month, day].map(formatNumber).join('-') +
-        ' ' +
-        [hour, minute, second].map(formatNumber).join(':'));
-};
-var formatNumber = function (n) {
-    var s = n.toString();
-    return s[1] ? s : '0' + s;
+var dayjs = require("dayjs");
+var formatTime = function (dateString, format) {
+    if (format === void 0) { format = 'YYYY-MM-DD HH:mm'; }
+    return dayjs(dateString).format(format);
 };
 var to = function (promise) {
     return promise.then(function (res) {
@@ -87,7 +76,7 @@
     });
 };
 var debounce = function (fn, delay) {
-    if (delay === void 0) { delay = 500; }
+    if (delay === void 0) { delay = 200; }
     var timer = null;
     return function () {
         var _this_1 = this;
@@ -192,6 +181,18 @@
     };
     return new Proxy(target, handler);
 };
+var scrollToError = function (selector, errorMsg, duration) {
+    if (duration === void 0) { duration = 3000; }
+    wx.pageScrollTo({
+        selector: selector,
+        duration: 300
+    });
+    wx.showToast({
+        title: errorMsg,
+        icon: 'none',
+        duration: duration
+    });
+};
 exports.default = {
     formatTime: formatTime,
     to: to,
@@ -203,6 +204,7 @@
     getLocation: getLocation,
     getAuthorizeInfo: getAuthorizeInfo,
     setShopName: setShopName,
-    watchObj: watchObj
+    watchObj: watchObj,
+    scrollToError: scrollToError
 };
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUJBK0xBOztBQS9MQSxJQUFNLFVBQVUsR0FBRyxVQUFDLFVBQWdCO0lBQ2xDLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hDLElBQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUMvQixJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFBO0lBQ2pDLElBQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUMxQixJQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDNUIsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBO0lBQ2hDLElBQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQTtJQUVoQyxPQUFPLENBQ0wsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQzlDLEdBQUc7UUFDSCxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FDbkQsQ0FBQTtBQUNILENBQUMsQ0FBQTtBQUVELElBQU0sWUFBWSxHQUFHLFVBQUMsQ0FBUztJQUM3QixJQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDdEIsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQTtB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ID0+IHtcbiAgbGV0IGRhdGUgPSBuZXcgRGF0ZShkYXRlU3RyaW5nKTtcbiAgY29uc3QgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKVxuICBjb25zdCBtb250aCA9IGRhdGUuZ2V0TW9udGgoKSArIDFcbiAgY29uc3QgZGF5ID0gZGF0ZS5nZXREYXRlKClcbiAgY29uc3QgaG91ciA9IGRhdGUuZ2V0SG91cnMoKVxuICBjb25zdCBtaW51dGUgPSBkYXRlLmdldE1pbnV0ZXMoKVxuICBjb25zdCBzZWNvbmQgPSBkYXRlLmdldFNlY29uZHMoKVxuXG4gIHJldHVybiAoXG4gICAgW3llYXIsIG1vbnRoLCBkYXldLm1hcChmb3JtYXROdW1iZXIpLmpvaW4oJy0nKSArXG4gICAgJyAnICtcbiAgICBbaG91ciwgbWludXRlLCBzZWNvbmRdLm1hcChmb3JtYXROdW1iZXIpLmpvaW4oJzonKVxuICApXG59XG5cbmNvbnN0IGZvcm1hdE51bWJlciA9IChuOiBudW1iZXIpID0+IHtcbiAgY29uc3QgcyA9IG4udG9TdHJpbmcoKVxuICByZXR1cm4gc1sxXSA/IHMgOiAnMCcgKyBzXG59XG5cbmNvbnN0IHRvID0gKHByb21pc2U6UHJvbWlzZTxhbnk+KT0+e1xuICByZXR1cm4gcHJvbWlzZS50aGVuKChyZXM6YW55KT0+e1xuICAgIHJldHVybiBbbnVsbCxyZXNdXG4gIH0pLmNhdGNoKChlcnJvcjphbnkpPT57XG4gICAgcmV0dXJuIFtlcnJvcl1cbiAgfSlcbn1cblxuY29uc3QgZ2V0VXJsID0gKHVybDpzdHJpbmcscGFyYW1zOnN0cmluZyk9PntcbiAgLy8gQXBwSWQ6IGFwcC5nbG9iYWxEYXRhLkFwcElkXG4gIHVybCA9IHd4Lmdsb2JhbERhdGEucmVxQmFzZSArIHVybDtcbiAgaWYocGFyYW1zICE9IG51bGwpe1xuICAgIHVybCA9IHVybCArICh1cmwuaW5kZXhPZignPycpID49IDAgPyBcIiZcIiA6IFwiP1wiKSArIHBhcmFtcztcbiAgfVxuICBpZiAod3guZ2xvYmFsRGF0YS5BcHBJZCAhPSBudWxsICYmIHVybC5pbmRleE9mKCdBcHBJZD0nKSA8IDApIHtcbiAgICB1cmwgPSB1cmwgKyAodXJsLmluZGV4T2YoJz8nKSA+PSAwID8gXCImXCIgOiBcIj9cIikgKyBcIkFwcElkPVwiICsgd3guZ2xvYmFsRGF0YS5BcHBJZDtcbiAgfVxuICBpZiAodXJsLmluZGV4T2YoJ3d4PTMnKSA8IDApIHtcbiAgICB1cmwgPSB1cmwgKyAodXJsLmluZGV4T2YoJz8nKSA+PSAwID8gXCImXCIgOiBcIj9cIikgICsnd3g9Myc7XG4gIH1cbiAgLy8gaWYgKHVybC5pbmRleE9mKCdGcm9tVXNlcklkPScpIDwgMCkge1xuICAvLyAgIHVybCA9IHVybCArICh1cmwuaW5kZXhPZignPycpID49IDAgPyBcIiZcIiA6IFwiP1wiKSAgKydGcm9tVXNlcklkPScgKyB3eC5nbG9iYWxEYXRhLkZyb21Vc2VySWQ7XG4gIC8vIH1cblxuICByZXR1cm4gdXJsIDtcbn1cblxuY29uc3QgbWFrZVBob25lQ2FsbCA9IChtb2JpbGU6c3RyaW5nKT0+e1xuICB3eC5wcm8uc2hvd01vZGFsKHtcbiAgICB0aXRsZTogJ+aPkOekuicsXG4gICAgY29udGVudDogYOWNs+WwhuaLqOaJk+eUteivnSAke21vYmlsZX1gLFxuICB9KS50aGVuKChyZXM6YW55KSA9PiB7XG4gICAgLy8gb24gY2xvc2VcbiAgICBjb25zb2xlLmxvZyhyZXMpO1xuICAgIGlmIChyZXMuY29uZmlybSl7XG4gICAgICBjb25zb2xlLmxvZygn56Gu6K6kJyk7XG4gICAgICB3eC5tYWtlUGhvbmVDYWxsKHtcbiAgICAgICAgcGhvbmVOdW1iZXI6IG1vYmlsZSxcbiAgICAgIH0pXG4gICAgfVxuICB9KTtcbn1cblxuY29uc3QgZGVib3VuY2UgPSAoZm46KCk9Pnt9LGRlbGF5Om51bWJlciA9IDUwMCk9PntcbiAgbGV0IHRpbWVyOmFueSA9IG51bGw7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRpbWVyKSBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvLyBjb25zb2xlLmxvZyh0aGlzKTtcbiAgICAgIGlmICh0eXBlb2YgZm4gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGZuLmFwcGx5KHRoaXMsYXJndW1lbnRzKVxuICAgICAgfVxuICAgICAgdGltZXIgPSBudWxsO1xuICAgIH0sIGRlbGF5KTtcbiAgfVxufVxuXG5jb25zdCAgc2V0TG9naW5EYXRhID0gKF90aGlzOmFueSk9PntcbiAgbGV0IGxvZ2luRGF0YSA9IHd4Lmdsb2JhbERhdGEubG9naW5EYXRhO1xuICBjb25zb2xlLmxvZygnPDw8PDw8PDw86I635Y+WbG9naW5EYXRhJyxsb2dpbkRhdGEpO1xuICBfdGhpcy5zZXREYXRhKHtcbiAgICBsb2dpbkRhdGEsXG4gIH0pXG59XG5cbmNvbnN0IGdldFNpbmdsZVVwbG9hZEltYWdlTGlzdCA9IChkYXRhOmFueSx0eXBlOnN0cmluZyk9PntcbiAgbGV0IFt1bmlkLHNlcV0gPSBkYXRhW3R5cGVdLnNwbGl0KFwiO1wiKTtcbiAgcmV0dXJuIFt7XG4gICAgdXJsOiBkYXRhW2Ake3R5cGV9VXJsYF18fCcnLFxuICAgIHVuaWQsXG4gICAgc2VxXG4gIH1dXG59XG5cbi8v6I635Y+W5b6u5L+h5a6a5L2NXG5jb25zdCBnZXRMb2NhdGlvbiA9ICBhc3luYyAoKT0+e1xuICBsZXQgaXNBdXRob3JpemUgPSBhd2FpdCBnZXRBdXRob3JpemVJbmZvKCdzY29wZS51c2VyTG9jYXRpb24nKTtcbiAgaWYgKCFpc0F1dGhvcml6ZSkge1xuICAgIGxldCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCB3eC4kdXRpbHMudG8od3gucHJvLmF1dGhvcml6ZSh7c2NvcGU6ICdzY29wZS51c2VyTG9jYXRpb24nfSkpO1xuICAgIGlmIChlcnJvcil7XG4gICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKCfmjojmnYPlvLnnqpfkv6Hmga8nLHJlc3VsdCk7XG4gICAgLy8gd3guc2hvd01vZGFsKHtcbiAgICAvLyAgIHRpdGxlOiBcIuaPkOekulwiLFxuICAgIC8vICAgY29udGVudDogXCLmgqjov5jmnKrmjojmnYPlrprkvY3vvIzor7flnKjmjqXkuIvmnaXmiZPlvIDnmoTorr7nva7pobXpnaLlvIDlkK/nm7jlhozlrprkvY3vvIFcIixcbiAgICAvLyAgIHN1Y2Nlc3MocmVzKSB7XG4gICAgLy8gICAgIGlmIChyZXMuY29uZmlybSkge1xuICAgIC8vICAgICAgIGNvbnNvbGUubG9nKFwi55So5oi354K55Ye756Gu5a6aXCIpO1xuICAgIC8vICAgICAgIHd4Lm9wZW5TZXR0aW5nKCk7XG4gICAgLy8gICAgIH0gZWxzZSBpZiAocmVzLmNhbmNlbCkge1xuICAgIC8vICAgICAgIGNvbnNvbGUubG9nKFwi55So5oi354K55Ye75Y+W5raIXCIpO1xuICAgIC8vICAgICB9XG4gICAgLy8gICB9LFxuICAgIC8vIH0pO1xuICAgIHJldHVybjtcbiAgfVxuICBsZXQgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgd3guJHV0aWxzLnRvKFxuICAgIHd4LnByby5nZXRMb2NhdGlvbigpXG4gIClcbiAgaWYgKGVycm9yKXtcbiAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnNvbGUubG9nKCfojrflj5blrprkvY3kv6Hmga8nLHJlc3VsdCk7XG4gIHd4Lmdsb2JhbERhdGEubG9jYXRpb24gPSB7XG4gICAgbGF0aXR1ZGU6cmVzdWx0LmxhdGl0dWRlLFxuICAgIGxvbmdpdHVkZTpyZXN1bHQubG9uZ2l0dWRlXG4gIH07XG4gIC8vIHRoaXMuc2V0RGF0YSh7XG4gIC8vICAgbGF0aXR1ZGU6cmVzdWx0LmxhdGl0dWRlLFxuICAvLyAgIGxvbmdpdHVkZTpyZXN1bHQubG9uZ2l0dWRlXG4gIC8vIH0pXG4gIHJldHVybiB0cnVlO1xufVxuXG5jb25zdCBnZXRBdXRob3JpemVJbmZvID0gYXN5bmMoc2NvcGU6c3RyaW5nPVwic2NvcGUud3JpdGVQaG90b3NBbGJ1bVwiKT0+e1xuICBsZXQgW2VyciwgcmVzXSA9IGF3YWl0IHd4LiR1dGlscy50byh3eC5wcm8uZ2V0U2V0dGluZygpKTtcbiAgaWYgKGVycikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zb2xlLmxvZyhcImdldFNldHRpbmdcIiwgcmVzKTtcbiAgcmV0dXJuIHJlcy5hdXRoU2V0dGluZ1tzY29wZV0gIT09IGZhbHNlO1xufVxuXG4vLyDorr7nva7pl6jlupflkI3np7BcbmNvbnN0IHNldFNob3BOYW1lID0gKF90aGlzOmFueSk9PntcbiAgbGV0IHNldHRpbmdzID0gd3guZ2xvYmFsRGF0YS5zZXR0aW5ncztcbiAgY29uc29sZS5sb2coJzw8PDw8PDw8POiOt+WPlnNldHRpbmdzLm5hbWUnLHNldHRpbmdzLm5hbWUpO1xuICBfdGhpcy5zZXREYXRhKHtcbiAgICBzaG9wTmFtZTpzZXR0aW5ncy5uYW1lLFxuICAgIGhlbHBVcmw6c2V0dGluZ3MuaGVscFVybCxcbiAgfSlcbiAgd3guc2V0TmF2aWdhdGlvbkJhclRpdGxlKHtcbiAgICB0aXRsZTpzZXR0aW5ncy5uYW1lXG4gIH0pXG59XG5cbmNvbnN0IHdhdGNoT2JqID0gKHRhcmdldDpvYmplY3QsY2FsbGJhY2s6RnVuY3Rpb24pPT57XG4gIGxldCBoYW5kbGVyID0ge1xuICAgIGdldCh0YXJnZXQ6b2JqZWN0LCBrZXk6c3RyaW5nLCByZWNlaXZlcjphbnkpIHtcbiAgICAgIGNvbnNvbGUubG9nKCc+Pj4+Pj4uLi5nZXQnLCBrZXkpXG4gICAgICByZXR1cm4gUmVmbGVjdC5nZXQodGFyZ2V0LCBrZXksIHJlY2VpdmVyKVxuICAgICAgLy/nrYnku7fkuo4gcmV0dXJuIHRhcmdldFtrZXldO1xuICAgIH0sXG4gICAgc2V0KHRhcmdldDpvYmplY3QsIGtleTpzdHJpbmcsIHZhbHVlOmFueSwgcmVjZWl2ZXI6YW55KSB7XG4gICAgICBjb25zb2xlLmxvZygnPj4+Pj4uLi5zZXQnLCBrZXksIHZhbHVlKTtcbiAgICAgIHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJyAmJiBjYWxsYmFjayhrZXksIHZhbHVlKVxuICAgICAgcmV0dXJuIFJlZmxlY3Quc2V0KHRhcmdldCwga2V5LCB2YWx1ZSwgcmVjZWl2ZXIpXG4gICAgICAvL+etieS7t+S6jiByZXR1cm4gdGFyZ2V0W2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ldyBQcm94eSh0YXJnZXQsIGhhbmRsZXIpXG5cbn1cbmV4cG9ydCBkZWZhdWx0e1xuICBmb3JtYXRUaW1lLFxuICB0byxcbiAgZ2V0VXJsLFxuICBtYWtlUGhvbmVDYWxsLFxuICBkZWJvdW5jZSxcbiAgc2V0TG9naW5EYXRhLFxuICBnZXRTaW5nbGVVcGxvYWRJbWFnZUxpc3QsXG4gIGdldExvY2F0aW9uLFxuICBnZXRBdXRob3JpemVJbmZvLFxuICBzZXRTaG9wTmFtZSxcbiAgd2F0Y2hPYmpcbn1cbiJdfQ==
\ No newline at end of file
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUJBaU5BOztBQWpOQSw2QkFBK0I7QUFDL0IsSUFBTSxVQUFVLEdBQUcsVUFBQyxVQUFnQixFQUFDLE1BQWtDO0lBQWxDLHVCQUFBLEVBQUEsMkJBQWtDO0lBQ3JFLE9BQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMxQyxDQUFDLENBQUE7QUF1QkQsSUFBTSxFQUFFLEdBQUcsVUFBQyxPQUFvQjtJQUM5QixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBQyxHQUFPO1FBQzFCLE9BQU8sQ0FBQyxJQUFJLEVBQUMsR0FBRyxDQUFDLENBQUE7SUFDbkIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQUMsS0FBUztRQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDaEIsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUE7QUFFRCxJQUFNLE1BQU0sR0FBRyxVQUFDLEdBQVUsRUFBQyxNQUFhO0lBRXRDLEdBQUcsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7SUFDbEMsSUFBRyxNQUFNLElBQUksSUFBSSxFQUFDO1FBQ2hCLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUM7S0FDMUQ7SUFDRCxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUM1RCxHQUFHLEdBQUcsR0FBRyxH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LE9BQU8sQ0FBQyxDQUFBO0FBRW5DLENBQUMsQ0FBQTtBQUVELElBQU0sYUFBYSxHQUFHLFVBQUMsUUFBZSxFQUFFLFFBQWUsRUFBRSxRQUFzQjtJQUF0Qix5QkFBQSxFQUFBLGVBQXNCO0lBQzdFLEVBQUUsQ0FBQyxZQUFZLENBQUM7UUFDZCxRQUFRLFVBQUE7UUFDUixRQUFRLEVBQUUsR0FBRztLQUNkLENBQUMsQ0FBQTtJQUNGLEVBQUUsQ0FBQyxTQUFTLENBQUM7UUFDWCxLQUFLLEVBQUUsUUFBUTtRQUNmLElBQUksRUFBRSxNQUFNO1FBQ1osUUFBUSxVQUFBO0tBQ1QsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFBO0FBQ0Qsa0JBQWM7SUFDWixVQUFVLFlBQUE7SUFDVixFQUFFLElBQUE7SUFDRixNQUFNLFFBQUE7SUFDTixhQUFhLGVBQUE7SUFDYixRQUFRLFVBQUE7SUFDUixZQUFZLGNBQUE7SUFDWix3QkFBd0IsMEJBQUE7SUFDeEIsV0FBVyxhQUFBO0lBQ1gsZ0JBQWdCLGtCQUFBO0lBQ2hCLFdBQVcsYUFBQTtJQUNYLFFBQVEsVUFBQTtJQUNSLGFBQWEsZUFBQTtDQUNkLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBkYXlqcyBmcm9tIFwiZGF5anNcIjtcbmNvbnN0IGZvcm1hdFRpbWUgPSAoZGF0ZVN0cmluZzogRGF0ZSxmb3JtYXQ6IHN0cmluZyA9J1lZWVktTU0tREQgSEg6bW0nKSA9PiB7XG4gIHJldHVybiBkYXlqcyhkYXRlU3RyaW5nKS5mb3JtYXQoZm9ybWF0KTtcbn1cblxuLy8gY29uc3QgZm9ybWF0VGltZTIgPSAoZGF0ZVN0cmluZzogRGF0ZSkgPT4ge1xuLy8gICBsZXQgZGF0ZSA9IG5ldyBEYXRlKGRhdGVTdHJpbmcpO1xuLy8gICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpXG4vLyAgIGNvbnN0IG1vbnRoID0gZGF0ZS5nZXRNb250aCgpICsgMVxuLy8gICBjb25zdCBkYXkgPSBkYXRlLmdldERhdGUoKVxuLy8gICBjb25zdCBob3VyID0gZGF0ZS5nZXRIb3VycygpXG4vLyAgIGNvbnN0IG1pbnV0ZSA9IGRhdGUuZ2V0TWludXRlcygpXG4vLyAgIGNvbnN0IHNlY29uZCA9IGRhdGUuZ2V0U2Vjb25kcygpXG4vL1xuLy8gICByZXR1cm4gKFxuLy8gICAgIFt5ZWFyLCBtb250aCwgZGF5XS5tYXAoZm9ybWF0TnVtYmVyKS5qb2luKCctJykgK1xuLy8gICAgICcgJyArXG4vLyAgICAgW2hvdXIsIG1pbnV0ZSwgc2Vjb25kXS5tYXAoZm9ybWF0TnVtYmVyKS5qb2luKCc6Jylcbi8vICAgKVxuLy8gfVxuLy9cbi8vIGNvbnN0IGZvcm1hdE51bWJlciA9IChuOiBudW1iZXIpID0+IHtcbi8vICAgY29uc3QgcyA9IG4udG9TdHJpbmcoKVxuLy8gICByZXR1cm4gc1sxXSA/IHMgOiAnMCcgKyBzXG4vLyB9XG5cbmNvbnN0IHRvID0gKHByb21pc2U6UHJvbWlzZTxhbnk+KT0+e1xuICByZXR1cm4gcHJvbWlzZS50aGVuKChyZXM6YW55KT0+e1xuICAgIHJldHVybiBbbnVsbCxyZXNdXG4gIH0pLmNhdGNoKChlcnJvcjphbnkpPT57XG4gICAgcmV0dXJuIFtlcnJvcl1cbiAgfSlcbn1cblxuY29uc3QgZ2V0VXJsID0gKHVybDpzdHJpbmcscGFyYW1zOnN0cmluZyk9PntcbiAgLy8gQXBwSWQ6IGFwcC5nbG9iYWxEYXRhLkFwcElkXG4gIHVybCA9IHd4Lmdsb2JhbERhdGEucmVxQmFzZSArIHVybDtcbiAgaWYocGFyYW1zICE9IG51bGwpe1xuICAgIHVybCA9IHVybCArICh1cmwuaW5kZXhPZignPycpID49IDAgPyBcIiZcIiA6IFwiP1wiKSArIHBhcmFtcztcbiAgfVxuICBpZiAod3guZ2xvYmFsRGF0YS5BcHBJZCAhPSBudWxsICYmIHVybC5pbmRleE9mKCdBcHBJZD0nKSA8IDApIHtcbiAgICB1cmwgPSB1cmwgKyAodXJsLmluZGV4T2YoJz8nKSA+PSAwID8gXCImXCIgOiBcIj9cIikgKyBcIkFwcElkPVwiICsgd3guZ2xvYmFsRGF0YS5BcHBJZDtcbiAgfVxuICBpZiAodXJsLmluZGV4T2YoJ3d4PTMnKSA8IDApIHtcbiAgICB1cmwgPSB1cmwgKyAodXJsLmluZGV4T2YoJz8nKSA+PSAwID8gXCImXCIgOiBcIj9cIikgICsnd3g9Myc7XG4gIH1cbiAgLy8gaWYgKHVybC5pbmRleE9mKCdGcm9tVXNlcklkPScpIDwgMCkge1xuICAvLyAgIHVybCA9IHVybCArICh1cmwuaW5kZXhPZignPycpID49IDAgPyBcIiZcIiA6IFwiP1wiKSAgKydGcm9tVXNlcklkPScgKyB3eC5nbG9iYWxEYXRhLkZyb21Vc2VySWQ7XG4gIC8vIH1cblxuICByZXR1cm4gdXJsIDtcbn1cblxuY29uc3QgbWFrZVBob25lQ2FsbCA9IChtb2JpbGU6c3RyaW5nKT0+e1xuICB3eC5wcm8uc2hvd01vZGFsKHtcbiAgICB0aXRsZTogJ+aPkOekuicsXG4gICAgY29udGVudDogYOWNs+WwhuaLqOaJk+eUteivnSAke21vYmlsZX1gLFxuICB9KS50aGVuKChyZXM6YW55KSA9PiB7XG4gICAgLy8gb24gY2xvc2VcbiAgICBjb25zb2xlLmxvZyhyZXMpO1xuICAgIGlmIChyZXMuY29uZmlybSl7XG4gICAgICBjb25zb2xlLmxvZygn56Gu6K6kJyk7XG4gICAgICB3eC5tYWtlUGhvbmVDYWxsKHtcbiAgICAgICAgcGhvbmVOdW1iZXI6IG1vYmlsZSxcbiAgICAgIH0pXG4gICAgfVxuICB9KTtcbn1cblxuY29uc3QgZGVib3VuY2UgPSAoZm46KCk9Pnt9LGRlbGF5Om51bWJlciA9IDIwMCk9PntcbiAgbGV0IHRpbWVyOmFueSA9IG51bGw7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRpbWVyKSBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvLyBjb25zb2xlLmxvZyh0aGlzKTtcbiAgICAgIGlmICh0eXBlb2YgZm4gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGZuLmFwcGx5KHRoaXMsYXJndW1lbnRzKVxuICAgICAgfVxuICAgICAgdGltZXIgPSBudWxsO1xuICAgIH0sIGRlbGF5KTtcbiAgfVxufVxuXG5jb25zdCAgc2V0TG9naW5EYXRhID0gKF90aGlzOmFueSk9PntcbiAgbGV0IGxvZ2luRGF0YSA9IHd4Lmdsb2JhbERhdGEubG9naW5EYXRhO1xuICBjb25zb2xlLmxvZygnPDw8PDw8PDw86I635Y+WbG9naW5EYXRhJyxsb2dpbkRhdGEpO1xuICBfdGhpcy5zZXREYXRhKHtcbiAgICBsb2dpbkRhdGEsXG4gIH0pXG59XG5cbmNvbnN0IGdldFNpbmdsZVVwbG9hZEltYWdlTGlzdCA9IChkYXRhOmFueSx0eXBlOnN0cmluZyk9PntcbiAgbGV0IFt1bmlkLHNlcV0gPSBkYXRhW3R5cGVdLnNwbGl0KFwiO1wiKTtcbiAgcmV0dXJuIFt7XG4gICAgdXJsOiBkYXRhW2Ake3R5cGV9VXJsYF18fCcnLFxuICAgIHVuaWQsXG4gICAgc2VxXG4gIH1dXG59XG5cbi8v6I635Y+W5b6u5L+h5a6a5L2NXG5jb25zdCBnZXRMb2NhdGlvbiA9ICBhc3luYyAoKT0+e1xuICBsZXQgaXNBdXRob3JpemUgPSBhd2FpdCBnZXRBdXRob3JpemVJbmZvKCdzY29wZS51c2VyTG9jYXRpb24nKTtcbiAgaWYgKCFpc0F1dGhvcml6ZSkge1xuICAgIGxldCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCB3eC4kdXRpbHMudG8od3gucHJvLmF1dGhvcml6ZSh7c2NvcGU6ICdzY29wZS51c2VyTG9jYXRpb24nfSkpO1xuICAgIGlmIChlcnJvcil7XG4gICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKCfmjojmnYPlvLnnqpfkv6Hmga8nLHJlc3VsdCk7XG4gICAgLy8gd3guc2hvd01vZGFsKHtcbiAgICAvLyAgIHRpdGxlOiBcIuaPkOekulwiLFxuICAgIC8vICAgY29udGVudDogXCLmgqjov5jmnKrmjojmnYPlrprkvY3vvIzor7flnKjmjqXkuIvmnaXmiZPlvIDnmoTorr7nva7pobXpnaLlvIDlkK/nm7jlhozlrprkvY3vvIFcIixcbiAgICAvLyAgIHN1Y2Nlc3MocmVzKSB7XG4gICAgLy8gICAgIGlmIChyZXMuY29uZmlybSkge1xuICAgIC8vICAgICAgIGNvbnNvbGUubG9nKFwi55So5oi354K55Ye756Gu5a6aXCIpO1xuICAgIC8vICAgICAgIHd4Lm9wZW5TZXR0aW5nKCk7XG4gICAgLy8gICAgIH0gZWxzZSBpZiAocmVzLmNhbmNlbCkge1xuICAgIC8vICAgICAgIGNvbnNvbGUubG9nKFwi55So5oi354K55Ye75Y+W5raIXCIpO1xuICAgIC8vICAgICB9XG4gICAgLy8gICB9LFxuICAgIC8vIH0pO1xuICAgIHJldHVybjtcbiAgfVxuICBsZXQgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgd3guJHV0aWxzLnRvKFxuICAgIHd4LnByby5nZXRMb2NhdGlvbigpXG4gIClcbiAgaWYgKGVycm9yKXtcbiAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnNvbGUubG9nKCfojrflj5blrprkvY3kv6Hmga8nLHJlc3VsdCk7XG4gIHd4Lmdsb2JhbERhdGEubG9jYXRpb24gPSB7XG4gICAgbGF0aXR1ZGU6cmVzdWx0LmxhdGl0dWRlLFxuICAgIGxvbmdpdHVkZTpyZXN1bHQubG9uZ2l0dWRlXG4gIH07XG4gIC8vIHRoaXMuc2V0RGF0YSh7XG4gIC8vICAgbGF0aXR1ZGU6cmVzdWx0LmxhdGl0dWRlLFxuICAvLyAgIGxvbmdpdHVkZTpyZXN1bHQubG9uZ2l0dWRlXG4gIC8vIH0pXG4gIHJldHVybiB0cnVlO1xufVxuXG5jb25zdCBnZXRBdXRob3JpemVJbmZvID0gYXN5bmMoc2NvcGU6c3RyaW5nPVwic2NvcGUud3JpdGVQaG90b3NBbGJ1bVwiKT0+e1xuICBsZXQgW2VyciwgcmVzXSA9IGF3YWl0IHd4LiR1dGlscy50byh3eC5wcm8uZ2V0U2V0dGluZygpKTtcbiAgaWYgKGVycikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zb2xlLmxvZyhcImdldFNldHRpbmdcIiwgcmVzKTtcbiAgcmV0dXJuIHJlcy5hdXRoU2V0dGluZ1tzY29wZV0gIT09IGZhbHNlO1xufVxuXG4vLyDorr7nva7pl6jlupflkI3np7BcbmNvbnN0IHNldFNob3BOYW1lID0gKF90aGlzOmFueSk9PntcbiAgbGV0IHNldHRpbmdzID0gd3guZ2xvYmFsRGF0YS5zZXR0aW5ncztcbiAgY29uc29sZS5sb2coJzw8PDw8PDw8POiOt+WPlnNldHRpbmdzLm5hbWUnLHNldHRpbmdzLm5hbWUpO1xuICBfdGhpcy5zZXREYXRhKHtcbiAgICBzaG9wTmFtZTpzZXR0aW5ncy5uYW1lLFxuICAgIGhlbHBVcmw6c2V0dGluZ3MuaGVscFVybCxcbiAgfSlcbiAgd3guc2V0TmF2aWdhdGlvbkJhclRpdGxlKHtcbiAgICB0aXRsZTpzZXR0aW5ncy5uYW1lXG4gIH0pXG59XG5cbmNvbnN0IHdhdGNoT2JqID0gKHRhcmdldDpvYmplY3QsY2FsbGJhY2s6RnVuY3Rpb24pPT57XG4gIGxldCBoYW5kbGVyID0ge1xuICAgIGdldCh0YXJnZXQ6b2JqZWN0LCBrZXk6c3RyaW5nLCByZWNlaXZlcjphbnkpIHtcbiAgICAgIGNvbnNvbGUubG9nKCc+Pj4+Pj4uLi5nZXQnLCBrZXkpXG4gICAgICByZXR1cm4gUmVmbGVjdC5nZXQodGFyZ2V0LCBrZXksIHJlY2VpdmVyKVxuICAgICAgLy/nrYnku7fkuo4gcmV0dXJuIHRhcmdldFtrZXldO1xuICAgIH0sXG4gICAgc2V0KHRhcmdldDpvYmplY3QsIGtleTpzdHJpbmcsIHZhbHVlOmFueSwgcmVjZWl2ZXI6YW55KSB7XG4gICAgICBjb25zb2xlLmxvZygnPj4+Pj4uLi5zZXQnLCBrZXksIHZhbHVlKTtcbiAgICAgIHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJyAmJiBjYWxsYmFjayhrZXksIHZhbHVlKVxuICAgICAgcmV0dXJuIFJlZmxlY3Quc2V0KHRhcmdldCwga2V5LCB2YWx1ZSwgcmVjZWl2ZXIpXG4gICAgICAvL+etieS7t+S6jiByZXR1cm4gdGFyZ2V0W2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ldyBQcm94eSh0YXJnZXQsIGhhbmRsZXIpXG5cbn1cblxuY29uc3Qgc2Nyb2xsVG9FcnJvciA9IChzZWxlY3RvcjpzdHJpbmcsIGVycm9yTXNnOnN0cmluZywgZHVyYXRpb246bnVtYmVyID0gMzAwMCk9PntcbiAgd3gucGFnZVNjcm9sbFRvKHtcbiAgICBzZWxlY3RvcixcbiAgICBkdXJhdGlvbjogMzAwXG4gIH0pXG4gIHd4LnNob3dUb2FzdCh7XG4gICAgdGl0bGU6IGVycm9yTXNnLFxuICAgIGljb246ICdub25lJyxcbiAgICBkdXJhdGlvblxuICB9KVxufVxuZXhwb3J0IGRlZmF1bHR7XG4gIGZvcm1hdFRpbWUsXG4gIHRvLFxuICBnZXRVcmwsXG4gIG1ha2VQaG9uZUNhbGwsXG4gIGRlYm91bmNlLFxuICBzZXRMb2dpbkRhdGEsXG4gIGdldFNpbmdsZVVwbG9hZEltYWdlTGlzdCxcbiAgZ2V0TG9jYXRpb24sXG4gIGdldEF1dGhvcml6ZUluZm8sXG4gIHNldFNob3BOYW1lLFxuICB3YXRjaE9iaixcbiAgc2Nyb2xsVG9FcnJvclxufVxuIl19
\ No newline at end of file
diff --git a/utils/util.ts b/utils/util.ts
index 03d4df6..d102754 100644
--- a/utils/util.ts
+++ b/utils/util.ts
@@ -1,23 +1,28 @@
-const formatTime = (dateString: Date) => {
-  let date = new Date(dateString);
-  const year = date.getFullYear()
-  const month = date.getMonth() + 1
-  const day = date.getDate()
-  const hour = date.getHours()
-  const minute = date.getMinutes()
-  const second = date.getSeconds()
-
-  return (
-    [year, month, day].map(formatNumber).join('-') +
-    ' ' +
-    [hour, minute, second].map(formatNumber).join(':')
-  )
+import * as dayjs from "dayjs";
+const formatTime = (dateString: Date,format: string ='YYYY-MM-DD HH:mm') => {
+  return dayjs(dateString).format(format);
 }
 
-const formatNumber = (n: number) => {
-  const s = n.toString()
-  return s[1] ? s : '0' + s
-}
+// const formatTime2 = (dateString: Date) => {
+//   let date = new Date(dateString);
+//   const year = date.getFullYear()
+//   const month = date.getMonth() + 1
+//   const day = date.getDate()
+//   const hour = date.getHours()
+//   const minute = date.getMinutes()
+//   const second = date.getSeconds()
+//
+//   return (
+//     [year, month, day].map(formatNumber).join('-') +
+//     ' ' +
+//     [hour, minute, second].map(formatNumber).join(':')
+//   )
+// }
+//
+// const formatNumber = (n: number) => {
+//   const s = n.toString()
+//   return s[1] ? s : '0' + s
+// }
 
 const to = (promise:Promise<any>)=>{
   return promise.then((res:any)=>{
@@ -62,7 +67,7 @@
   });
 }
 
-const debounce = (fn:()=>{},delay:number = 500)=>{
+const debounce = (fn:()=>{},delay:number = 200)=>{
   let timer:any = null;
   return function () {
     if (timer) clearTimeout(timer);
@@ -176,6 +181,18 @@
   return new Proxy(target, handler)
 
 }
+
+const scrollToError = (selector:string, errorMsg:string, duration:number = 3000)=>{
+  wx.pageScrollTo({
+    selector,
+    duration: 300
+  })
+  wx.showToast({
+    title: errorMsg,
+    icon: 'none',
+    duration
+  })
+}
 export default{
   formatTime,
   to,
@@ -187,5 +204,6 @@
   getLocation,
   getAuthorizeInfo,
   setShopName,
-  watchObj
+  watchObj,
+  scrollToError
 }

--
Gitblit v1.8.0