
    <html>
      <head>
        <link rel="preconnect" href="https://independencerequest-dev.powerappsportals.com" crossorigin>
        <link rel="dns-prefetch" href="https://independencerequest-dev.powerappsportals.com" >

        <base href="https://independencerequest-dev.powerappsportals.com" />

        <!-- Render the bootstrap file -->
        
        
      <!-- Render runtime js resources from CDN -->
      
      <!-- Render runtime css resources from CDN -->
      
       
      

        <!-- Render all other css files -->
        
          <link rel="stylesheet" href="/thumbnail.css" >
        
          <link rel="stylesheet" href="data:text/css;base64,LyohDQogKiBCb290c3RyYXAgdjMuMy42IChodHRwOi8vZ2V0Ym9vdHN0cmFwLmNvbSkNCiAqIENvcHlyaWdodCAyMDExLTIwMTUgVHdpdHRlciwgSW5jLg0KICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYXN0ZXIvTElDRU5TRSkNCiAqLw0KDQpoMS51bmRlcmxpbmUsDQpoNC51bmRlcmxpbmUgew0KICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2JjYmNiYzsNCiAgcGFkZGluZy1ib3R0b206IDIxcHg7DQp9DQoNCkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkgew0KICANCiAgLnRleHRfY2VudGVyLW1vYmlsZSB7DQogICAgdGV4dC1hbGlnbjogY2VudGVyOw0KICB9DQp9DQoNCg0KLmJ0bi1sZy1ob21lIHsNCiAgcGFkZGluZzogMjBweCA0MHB4Ow0KICBmb250LXNpemU6IDE1cHg7DQp9DQoNCg0KLmJ0bi1pbmZvLWhvbWUgew0KICBjb2xvcjogI2ZmZjsNCiAgYm9yZGVyLWNvbG9yOiAjZmZmOw0KICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsNCn0NCg0KLmJ0bi1pbmZvLWhvbWU6aG92ZXIgew0KICBjb2xvcjogIzAwMDsNCiAgYm9yZGVyLWNvbG9yOiAjMDAwOw0KICBiYWNrZ3JvdW5kOiAjZmZmOw0KfQ0KDQouYnRuLWluZm8taG9tZTphY3RpdmUgew0KICBjb2xvcjogIzAwMDsNCiAgYm9yZGVyLWNvbG9yOiAjMDAwOw0KICBiYWNrZ3JvdW5kOiAjZmZmOw0KfQ0KDQouYnRuLWluZm8taG9tZTpmb2N1cyB7DQogIGNvbG9yOiAjMDAwOw0KICBib3JkZXItY29sb3I6ICMwMDA7DQogIGJhY2tncm91bmQ6ICNmZmY7DQp9DQoNCg0KLmJyZWFkY3J1bWIgPiBsaSBhIHsNCiAgY29sb3I6ICMzMDJjZTE7DQogIHBhZGRpbmc6IDJweCA0cHg7DQp9DQouYnJlYWRjcnVtYiA+IGxpIGE6aG92ZXIgew0KICBjb2xvcjogIzMwMmNlMTsNCn0NCg0KDQoucGFnaW5hdGlvbiA+IGxpID4gYSwNCi5wYWdpbmF0aW9uID4gbGkgPiBzcGFuIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7DQogIGJvcmRlcjogMHB4Ow0KICBtYXJnaW4tbGVmdDogMTBweDsNCiAgd2lkdGg6IDQwcHg7DQogIGhlaWdodDogNDBweDsNCiAgdGV4dC1hbGlnbjogY2VudGVyOw0KfQ0KDQoNCi5wYWdpbmF0aW9uID4gbGk6Zmlyc3QtY2hpbGQgPiBhOmhvdmVyLA0KLnBhZ2luYXRpb24gPiBsaTpmaXJzdC1jaGlsZCA+IHNwYW46aG92ZXIgew0KICBiYWNrZ3JvdW5kOiBub25lOw0KfQ0KDQoNCi5wYWdpbmF0aW9uID4gbGk6bGFzdC1jaGlsZCA+IGE6aG92ZXIsDQoucGFnaW5hdGlvbiA+IGxpOmxhc3QtY2hpbGQgPiBzcGFuOmhvdmVyIHsNCiAgYmFja2dyb3VuZDogbm9uZTsNCn0NCg0KDQoucGFnaW5hdGlvbiA+IGxpID4gYTpob3ZlciwNCi5wYWdpbmF0aW9uID4gbGkgPiBhOmZvY3VzLA0KLnBhZ2luYXRpb24gPiBsaSA+IHNwYW46aG92ZXIsDQoucGFnaW5hdGlvbiA+IGxpID4gc3Bhbjpmb2N1cyB7DQogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Ow0KICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50Ow0KfQ0KDQoNCi5wYWdpbmF0aW9uID4gLmFjdGl2ZSA+IGEsDQoucGFnaW5hdGlvbiA+IC5hY3RpdmUgPiBhOmhvdmVyLA0KLnBhZ2luYXRpb24gPiAuYWN0aXZlID4gYTpmb2N1cywNCi5wYWdpbmF0aW9uID4gLmFjdGl2ZSA+IHNwYW4sDQoucGFnaW5hdGlvbiA+IC5hY3RpdmUgPiBzcGFuOmhvdmVyLA0KLnBhZ2luYXRpb24gPiAuYWN0aXZlID4gc3Bhbjpmb2N1cyB7DQogIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7DQogIGJvcmRlci1yYWRpdXM6IDUwJTsNCiAgYm9yZGVyOiBzb2xpZCAxcHg7DQp9DQoNCi5sb2dvLWNvbnRhaW5lciB7DQogIGhlaWdodDogNTFweDsNCiAgd2lkdGg6IDE4N3B4Ow0KICBtYXJnaW4tbGVmdDogOXB4Ow0KfQ0KDQoNCi5maXhlZC10b3Agew0KICBib3JkZXItd2lkdGg6IDA7DQp9DQoNCg0KLnN0YXRpYy10b3Agew0KICBib3JkZXItd2lkdGg6IDA7DQogIG1hcmdpbi1ib3R0b206IDA7DQp9DQoNCg0KLm5hdmJhci1kZWZhdWx0IHsNCiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsNCn0NCg0KDQouaG9tZWxpbmssDQphLmhvbWVsaW5rOmhvdmVyLA0KYS5ob21lbGluazpmb2N1cyB7DQogIGNvbG9yOiAjZmZmOw0KICB0ZXh0LWRlY29yYXRpb246IG5vbmU7DQp9DQoNCg0KLnJlZ2lzdGVyLWJhciB7DQogIGNsZWFyOiBib3RoOw0KfQ0KDQoNCi5maXhlZC10b3AubmF2YmFyIHsNCiAgbWluLWhlaWdodDogNjdweDsNCn0NCg0KLmZpeGVkLXRvcC5uYXZiYXIgLm5hdmJhci1jb2xsYXBzZSB7DQogIG1heC1oZWlnaHQ6IDUxMHB4Ow0KICBib3gtc2hhZG93OiBub25lOw0KICBib3JkZXItdG9wOiBub25lOw0KICBwYWRkaW5nLXRvcDogOHB4Ow0KfQ0KDQouZml4ZWQtdG9wLm5hdmJhciAuZm9ybS1pbmxpbmUgew0KICBib3JkZXI6IG5vbmU7DQogIG1hcmdpbi1sZWZ0OiAwOw0KICBtYXJnaW4tcmlnaHQ6IDA7DQp9DQoNCi5maXhlZC10b3AubmF2YmFyIC5mb3JtLWlubGluZSAuZm9ybS1jb250cm9sIHsNCiAgZm9udC1zaXplOiAxZW07DQp9DQoNCg0KLnN0YXRpYy10b3AubmF2YmFyIC5uYXZiYXItY29sbGFwc2Ugew0KICBtYXgtaGVpZ2h0OiA1MTBweDsNCiAgYm94LXNoYWRvdzogbm9uZTsNCiAgYm9yZGVyLXRvcDogbm9uZTsNCn0NCg0KDQouc3RhdGljLXRvcC5uYXZiYXIgLmZvcm0taW5saW5lIHsNCiAgYm9yZGVyOiBub25lOw0KICBtYXJnaW4tbGVmdDogMDsNCiAgbWFyZ2luLXJpZ2h0OiAwOw0KfQ0KDQouc3RhdGljLXRvcC5uYXZiYXIgLmZvcm0taW5saW5lIC5mb3JtLWNvbnRyb2wgew0KICBmb250LXNpemU6IDFlbTsNCn0NCg0KQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7DQogIA0KICAuZml4LW5hdmJhciAucmVnaXN0ZXItYmFyIHsNCiAgICBkaXNwbGF5OiBub25lOw0KICB9DQp9DQoNCg0KLmZpeGVkLXRvcC5uYXZiYXIgPiAuY29udGFpbmVyID4gLnJvdyA+IGRpdiB7DQogIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7DQogIGRpc3BsYXk6IGlubGluZS1ibG9jazsNCiAgdmVydGljYWwtYWxpZ246IGJvdHRvbTsNCn0NCg0KDQouc3RhdGljLXRvcC5uYXZiYXIgPiAuY29udGFpbmVyID4gLnJvdyA+IGRpdiB7DQogIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7DQogIGRpc3BsYXk6IGlubGluZS1ibG9jazsNCiAgdmVydGljYWwtYWxpZ246IGJvdHRvbTsNCn0NCg0KDQouZml4ZWQtdG9wLm5hdmJhciAubWVudS1iYXIgPiAubmF2YmFyLW5hdiA+IGxpID4gYSB7DQogIGZvbnQtZmFtaWx5OiAnU2Vnb2UgVUkgU2VtaWJvbGQnLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOw0KICBmb250LXNpemU6IDFlbTsNCiAgZm9udC13ZWlnaHQ6IGJvbGQ7DQp9DQoNCg0KLmZpeGVkLXRvcC5uYXZiYXIgLm1lbnUtYmFyID4gLm5hdmJhci1uYXYgPiAuZGl2aWRlci12ZXJ0aWNhbCB7DQogIGhlaWdodDogMjFweDsNCiAgbWFyZ2luOiAwIDRweDsNCiAgbWFyZ2luLXRvcDogMTQuNXB4Ow0KICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZmZmOw0KICBib3JkZXItbGVmdDogMXB4IHNvbGlkICM2NjY7DQp9DQoNCg0KLnN0YXRpYy10b3AubmF2YmFyIC5tZW51LWJhciA+IC5uYXZiYXItbmF2ID4gbGkgPiBhIHsNCiAgZm9udC1mYW1pbHk6ICdTZWdvZSBVSSBTZW1pYm9sZCcsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7DQogIGZvbnQtc2l6ZTogMWVtOw0KICBmb250LXdlaWdodDogYm9sZDsNCn0NCg0KDQouc3RhdGljLXRvcC5uYXZiYXIgLm1lbnUtYmFyID4gLm5hdmJhci1uYXYgPiAuZGl2aWRlci12ZXJ0aWNhbCB7DQogIGhlaWdodDogMjFweDsNCiAgbWFyZ2luOiAwIDRweDsNCiAgbWFyZ2luLXRvcDogMTQuNXB4Ow0KICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZmZmOw0KICBib3JkZXItbGVmdDogMXB4IHNvbGlkICM2NjY7DQp9DQoNCg0KLmZpeGVkLXRvcCAubmF2YmFyLWJyYW5kIHsNCiAgZm9udC1zaXplOiAyLjExZW07DQogIGZvbnQtZmFtaWx5OiAnU2Vnb2UgVUkgTGlnaHQnLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOw0KICBjb2xvcjogIzIzMjIyMjsNCiAgcG9zaXRpb246IHJlbGF0aXZlOw0KfQ0KDQpAbWVkaWEgKG1heC13aWR0aDogMTIwMHB4KSB7DQogIA0KICAuZml4ZWQtdG9wIC5uYXZiYXItYnJhbmQgew0KICAgIHBvc2l0aW9uOiBpbml0aWFsOw0KICB9DQp9DQoNCg0KLmZpeGVkLXRvcCAubmF2YmFyLWhlYWRlciB7DQogIHBhZGRpbmctdG9wOiA4cHg7DQp9DQoNCg0KLnN0YXRpYy10b3AgLm5hdmJhci1icmFuZCB7DQogIGZvbnQtc2l6ZTogMi4xMWVtOw0KICBmb250LWZhbWlseTogJ1NlZ29lIFVJIExpZ2h0JywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsNCiAgY29sb3I6ICMyMzIyMjI7DQogIHBvc2l0aW9uOiByZWxhdGl2ZTsNCn0NCg0KQG1lZGlhIChtYXgtd2lkdGg6IDEyMDBweCkgew0KICANCiAgLnN0YXRpYy10b3AgLm5hdmJhci1icmFuZCB7DQogICAgcG9zaXRpb246IGluaXRpYWw7DQogIH0NCn0NCg0KDQouZml4ZWQtdG9wLm5hdmJhci1kYXJrIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzIzMjIyMjsNCiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsNCn0NCg0KLmZpeGVkLXRvcC5uYXZiYXItZGFyayAubmF2YmFyLWJyYW5kIHsNCiAgY29sb3I6ICNmZmY7DQp9DQoNCi5maXhlZC10b3AubmF2YmFyLWRhcmsgLmRpdmlkZXItdmVydGljYWwgew0KICBib3JkZXItcmlnaHQtY29sb3I6ICNmZmY7DQogIGJvcmRlci1sZWZ0LWNvbG9yOiAjMTExOw0KfQ0KDQoNCi5zdGF0aWMtdG9wLm5hdmJhci1kYXJrIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsNCiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsNCiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDNweCA1cHggcmdiYSg1NywgNjMsIDcyLCAwLjMpOw0KICAtbW96LWJveC1zaGFkb3c6IDAgM3B4IDVweCByZ2JhKDU3LCA2MywgNzIsIDAuMyk7DQogIGJveC1zaGFkb3c6IDAgM3B4IDVweCByZ2JhKDU3LCA2MywgNzIsIDAuMyk7DQp9DQoNCi5zdGF0aWMtdG9wLm5hdmJhci1kYXJrIC5uYXZiYXItYnJhbmQgew0KICBjb2xvcjogI2ZmZjsNCn0NCg0KLnN0YXRpYy10b3AubmF2YmFyLWRhcmsgLmRpdmlkZXItdmVydGljYWwgew0KICBib3JkZXItcmlnaHQtY29sb3I6ICNmZmY7DQogIGJvcmRlci1sZWZ0LWNvbG9yOiAjMTExOw0KfQ0KDQoNCi5uYXZiYXItZGFyayAubmF2YmFyLW5hdiA+IGxpID4gYSB7DQogIGNvbG9yOiAjMDAwOw0KfQ0KDQoubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgPiBsaSA+IGE6aG92ZXIgew0KICBjb2xvcjogI2ZmZjsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzMwMmNlMTsNCiAgLypib3JkZXItYm90dG9tOiA0cHggc29saWQgIzJGNUZFRjsNCiAgICBwYWRkaW5nLWJvdHRvbTogMTBweDsqLw0KfQ0KDQoubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgPiBsaSA+IGE6Zm9jdXMgew0KICBjb2xvcjogI2ZmZjsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzMwMmNlMTsNCiAgYm9yZGVyOiAxcHggZGFzaGVkIGJsYWNrICFpbXBvcnRhbnQ7DQogIG91dGxpbmU6IDFweCBkYXNoZWQgI2ZmZmZmZjsNCn0NCg0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTlweCkgew0KICANCiAgLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2ID4gbGkgPiBhOmhvdmVyIHsNCiAgICBjb2xvcjogI2ZmZjsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzAyY2UxOw0KICAgIC8qYm9yZGVyLWJvdHRvbTogNHB4IHNvbGlkICMyRjVGRUY7DQogICAgcGFkZGluZy1ib3R0b206IDZweDsqLw0KICB9DQp9DQoNCg0KLm1lbnUtYmFyIC5zaG9wcGluZ19saW5rIHsNCiAgcG9zaXRpb246IHJlbGF0aXZlOw0KfQ0KDQoubWVudS1iYXIgLnNob3BwaW5nX2xpbmsgLmNhcnRfYW1vdW50IHsNCiAgYm9yZGVyLXJhZGl1czogMTAwJTsNCiAgaGVpZ2h0OiAxN3B4Ow0KICB3aWR0aDogMTdweDsNCiAgcG9zaXRpb246IGFic29sdXRlOw0KICBib3R0b206IDZweDsNCiAgcmlnaHQ6IC02cHg7DQogIGJhY2tncm91bmQtY29sb3I6ICMyZjVmZWY7DQogIHRleHQtYWxpZ246IC13ZWJraXQtY2VudGVyOw0KICBsaW5lLWhlaWdodDogMTdweDsNCiAgZm9udC1zaXplOiA5cHg7DQogIHBhZGRpbmctbGVmdDogMS45cHg7DQogIGNvbG9yOiAjZmZmOw0KfQ0KDQoubWVudS1iYXIgLnNob3BwaW5nX2xpbmsgLmNhcnRfYW1vdW50OmhvdmVyIHsNCiAgY29sb3I6ICNmZmY7DQp9DQoNCkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5cHgpIHsNCiAgDQogIC5maXhlZC10b3AgLm5hdmJhci1jb2xsYXBzZSAubmF2ID4gLmRpdmlkZXItdmVydGljYWwgew0KICAgIGRpc3BsYXk6IG5vbmU7DQogIH0NCn0NCg0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTlweCkgew0KICANCiAgLnN0YXRpYy10b3AgLm5hdmJhci1jb2xsYXBzZSAubmF2ID4gLmRpdmlkZXItdmVydGljYWwgew0KICAgIGRpc3BsYXk6IG5vbmU7DQogIH0NCn0NCg0KQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7DQogIA0KICAuZml4ZWQtdG9wLm5hdmJhciA+IC5jb250YWluZXIgPiAucm93ID4gZGl2IHsNCiAgICBkaXNwbGF5OiBibG9jazsNCiAgfQ0KICANCiAgLm5hdmJhci1oZWFkZXIgew0KICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsNCiAgfQ0KfQ0KDQpAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHsNCiAgDQogIC5zdGF0aWMtdG9wLm5hdmJhciA+IC5jb250YWluZXIgPiAucm93ID4gZGl2IHsNCiAgICBkaXNwbGF5OiBibG9jazsNCiAgfQ0KICANCiAgLm5hdmJhci1oZWFkZXIgew0KICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsNCiAgfQ0KfQ0KDQoNCi5jYXJkIHsNCiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDBweCAwcHggdHJhbnNwYXJlbnQ7DQogIGJveC1zaGFkb3c6IDAgMHB4IDBweCB0cmFuc3BhcmVudDsNCn0NCg0KDQoNCg0KYm9keSB7DQogIHBhZGRpbmctdG9wOiAwcHg7DQogIA0KICBtYXJnaW46IDA7DQogIGhlaWdodDogMTAwJTsNCn0NCg0KQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7DQogIA0KICBib2R5IHsNCiAgICBwYWRkaW5nLXRvcDogMHB4Ow0KICB9DQp9DQoNCg0KLmxheWVyX2Rvd24gew0KICBoZWlnaHQ6IDUwcHg7DQogIGJhY2tncm91bmQ6IHVybCgnbGF5ZXJfZG93bi5wbmcnKSBuby1yZXBlYXQgYm90dG9tIGNlbnRlcjsNCiAgcG9zaXRpb246IGFic29sdXRlOw0KICBib3R0b206IDA7DQogIHotaW5kZXg6IDkwMDsNCiAgd2lkdGg6IDEwMCU7DQp9DQoNCg0KLmxheWVyX3VwIHsNCiAgaGVpZ2h0OiA0MHB4Ow0KICBiYWNrZ3JvdW5kOiB1cmwoJ2xheWVyX3VwLnBuZycpIG5vLXJlcGVhdCBib3R0b20gY2VudGVyOw0KICBwb3NpdGlvbjogcmVsYXRpdmU7DQogIHotaW5kZXg6IDIwOw0KfQ0KDQoNCi5zZWN0aW9uLW1hcmdpbiB7DQogIG1hcmdpbjogMjFweCAwOw0KfQ0KDQoNCi5zZWN0aW9uLWlubGluZS1zZWFyY2ggew0KICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOw0KfQ0KDQouc2VjdGlvbi1pbmxpbmUtc2VhcmNoIC5yb3cgPiBkaXYgew0KICBtYXJnaW4tdG9wOiAxMDBweDsNCn0NCg0KLnNlY3Rpb24taW5saW5lLXNlYXJjaCAucm93ID4gZGl2IGgxIHsNCiAgY29sb3I6ICNmZmY7DQp9DQoNCkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDYwMHB4KSB7DQogIA0KICAuc2VjdGlvbi1pbmxpbmUtc2VhcmNoIC5yb3cgPiBkaXYgaDEgew0KICAgIGZvbnQtc2l6ZTogMTZ2dzsNCiAgfQ0KfQ0KDQouc2VjdGlvbi1pbmxpbmUtc2VhcmNoIC5yb3cgPiBkaXYgLmZvcm0taW5saW5lIC5yb3cgLmlucHV0LWdyb3VwIHsNCiAgbWFyZ2luLXJpZ2h0OiAyMXB4Ow0KfQ0KDQouc2VjdGlvbi1pbmxpbmUtc2VhcmNoIC5yb3cgPiBkaXYgLmZvcm0taW5saW5lIC5yb3cgLmlucHV0LWdyb3VwIC5pbnB1dC1ncm91cC10ZXh0IHsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsNCiAgYm9yZGVyLXJpZ2h0OiBub25lOw0KfQ0KDQouc2VjdGlvbi1pbmxpbmUtc2VhcmNoIC5yb3cgPiBkaXYgLmZvcm0taW5saW5lIC5yb3cgLmlucHV0LWdyb3VwIC5mb3JtLWNvbnRyb2wgew0KICBoZWlnaHQ6IDYwcHg7DQogIGJvcmRlci1sZWZ0OiBub25lOw0KICBib3gtc2hhZG93OiBub25lOw0KfQ0KDQouc2VjdGlvbi1pbmxpbmUtc2VhcmNoIC5yb3cgPiBkaXYgLmZvcm0taW5saW5lIC5yb3cgLmlucHV0LWdyb3VwIC5mb3JtLWNvbnRyb2w6Zm9jdXMgew0KICBib3gtc2hhZG93OiBub25lOw0KICBib3JkZXItcmlnaHQ6IG5vbmU7DQogIGJvcmRlci1jb2xvcjogI2NjYzsNCn0NCg0KDQoud3JhcHBlciB7DQogIHdpZHRoOiAxMDAlOw0KICBtYXJnaW46IDAgYXV0bzsNCiAgdGV4dC1hbGlnbjogY2VudGVyOw0KICAtbW96LXRyYW5zaXRpb246IHdpZHRoIDAuM3MgZWFzZS1vdXQ7DQogIC1vLXRyYW5zaXRpb246IHdpZHRoIDAuM3MgZWFzZS1vdXQ7DQogIC13ZWJraXQtdHJhbnNpdGlvbjogd2lkdGggMC4zcyBlYXNlLW91dDsNCiAgdHJhbnNpdGlvbjogd2lkdGggMC4zcyBlYXNlLW91dDsNCn0NCg0KDQoud3JhcHBlciAuY29udGFpbmVkIHsNCiAgcG9zaXRpb246IHJlbGF0aXZlOw0KICBoZWlnaHQ6IDQwMHB4Ow0KICBwYWRkaW5nLWJvdHRvbTogNTYuMjUlOw0KfQ0KDQoNCi53cmFwcGVyIC5jb250YWluZWQgPiBzdmcgew0KICBtYXJnaW4tdG9wOiAtMTAwcHg7DQogIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgZGlzcGxheTogYmxvY2s7DQp9DQoNCg0KLmNvbnRhaW5lZCAucm93IHsNCiAgbWFyZ2luLXRvcDogODBweDsNCn0NCg0KDQpmb290ZXIgew0KICBwb3NpdGlvbjogcmVsYXRpdmU7DQogIGNvbG9yOiAjMjIyMjFlOw0KfQ0KDQpmb290ZXIgLmZvb3Rlci10b3Agew0KICB3aWR0aDogMTAwJTsNCiAgbWluLWhlaWdodDogMTMwcHg7DQogIGJhY2tncm91bmQtY29sb3I6ICMyMzIyMjI7DQogIGRpc3BsYXk6IGZsZXg7DQogIGFsaWduLWl0ZW1zOiBjZW50ZXI7DQp9DQoNCmZvb3RlciAuZm9vdGVyLXRvcCBoMywNCmZvb3RlciAuZm9vdGVyLXRvcCBoNCB7DQogIGNvbG9yOiAjZmZmOw0KfQ0KDQpmb290ZXIgLmZvb3Rlci10b3AgLmxpc3Qtc29jaWFsLWxpbmtzIHsNCiAgbWFyZ2luLXRvcDogMjVweDsNCiAgbWFyZ2luLWJvdHRvbTogMTIuNXB4Ow0KfQ0KDQpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5OTFweCkgew0KICANCiAgZm9vdGVyIC5mb290ZXItdG9wIGgzLA0KICBmb290ZXIgLmZvb3Rlci10b3AgLmxpc3Qtc29jaWFsLWxpbmtzIHsNCiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7DQogIH0NCn0NCg0KZm9vdGVyIC5mb290ZXItYm90dG9tIHsNCiAgd2lkdGg6IDEwMCU7DQogIG1pbi1oZWlnaHQ6IDY4cHg7DQogIGJhY2tncm91bmQtY29sb3I6ICNkMmQyY2U7DQogIGZvbnQtc2l6ZTogMTRweDsNCiAgZGlzcGxheTogZmxleDsNCiAgYWxpZ24taXRlbXM6IGNlbnRlcjsNCn0NCg0KZm9vdGVyIC5mb290ZXItYm90dG9tIHAgew0KICBtYXJnaW46IDA7DQogIGNvbG9yOiAjZmZmOw0KfQ0KDQpmb290ZXIgLmZvb3Rlci1ib3R0b20gaDQgew0KICBtYXJnaW4tdG9wOiAwOw0KICBjb2xvcjogI2ZmZjsNCn0NCg0KZm9vdGVyIC5mb290ZXItYm90dG9tIHVsIHsNCiAgbGlzdC1zdHlsZS10eXBlOiBub25lOw0KICBtYXJnaW46IDA7DQp9DQoNCmZvb3RlciAuZm9vdGVyLWJvdHRvbSB1bCBsaSBhLA0KZm9vdGVyIC5mb290ZXItYm90dG9tIHVsIGxpIGE6aG92ZXIsDQpmb290ZXIgLmZvb3Rlci1ib3R0b20gdWwgbGkgYTpmb2N1cywNCmZvb3RlciAuZm9vdGVyLWJvdHRvbSB1bCBsaSBhOmFjdGl2ZSwNCmZvb3RlciAuZm9vdGVyLWJvdHRvbSB1bCBsaSBhLmFjdGl2ZSB7DQogIGZvbnQtc2l6ZTogMTVweDsNCiAgY29sb3I6ICNmZmY7DQp9DQoNCg0KLmxpc3Qtc29jaWFsLWxpbmtzIHsNCiAgbGlzdC1zdHlsZS10eXBlOiBub25lOw0KICBwYWRkaW5nLWxlZnQ6IDA7DQp9DQoNCi5saXN0LXNvY2lhbC1saW5rcyBsaSB7DQogIGRpc3BsYXk6IGlubGluZS1ibG9jazsNCiAgbWFyZ2luOiAwIDEwcHg7DQp9DQoNCi5saXN0LXNvY2lhbC1saW5rcyBsaSBhLA0KLmxpc3Qtc29jaWFsLWxpbmtzIGxpIGE6aG92ZXIsDQoubGlzdC1zb2NpYWwtbGlua3MgbGkgYTpmb2N1cywNCi5saXN0LXNvY2lhbC1saW5rcyBsaSBhOmFjdGl2ZSwNCi5saXN0LXNvY2lhbC1saW5rcyBsaSBhLmFjdGl2ZSB7DQogIGNvbG9yOiAjZmZmOw0KfQ0KDQpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5OTNweCkgew0KICANCiAgLnNlY3Rpb24tbGFuZGluZyBoMSB7DQogICAgZm9udC1zaXplOiA2NXB4Ow0KICB9DQogIA0KICAuc2VjdGlvbi1sYW5kaW5nIGgyIHsNCiAgICBsZXR0ZXItc3BhY2luZzogbm9ybWFsOw0KICAgIG1hcmdpbi1sZWZ0OiAtM3B4Ow0KICB9DQp9DQoNCg0KLnVzZXItaWNvbiB7DQogIHdpZHRoOiAxNnB4Ow0KICBoZWlnaHQ6IDE2cHg7DQogIGRpc3BsYXk6IGlubGluZS1ibG9jazsNCiAgbWFyZ2luLXJpZ2h0OiA3cHg7DQp9DQoNCg0KLmFydGljbGUtdGl0bGUtY29udGFpbmVyIHsNCiAgYm9yZGVyLXRvcDogc29saWQgMXB4ICNiY2JjYmM7DQogIGJvcmRlci1ib3R0b206IHNvbGlkIDFweCAjYmNiY2JjOw0KICBwYWRkaW5nLWxlZnQ6IDE1cHg7DQogIHBhZGRpbmctdG9wOiAyOHB4Ow0KICBwYWRkaW5nLWJvdHRvbTogMjhweDsNCn0NCg0KDQouYXJ0aWNsZS10aXRsZSB7DQogIG1hcmdpbi1sZWZ0OiAtMzVweDsNCn0NCg0KLmFydGljbGUtdGl0bGUgPiBzcGFuIHsNCiAgbWFyZ2luLWxlZnQ6IDNweDsNCn0NCg0KLmFydGljbGUtdGl0bGUgPiBzcGFuIC5hcnRpY2xlLWF1dGhvciB7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KICBjb2xvcjogIzJmNWZlZjsNCn0NCg0KDQouYXJ0aWNsZS1jb250ZW50IHsNCiAgbWFyZ2luLXRvcDogMTVweDsNCn0NCg0KLmFydGljbGUtY29udGVudCA+IHAgew0KICB0ZXh0LWFsaWduOiBqdXN0aWZ5Ow0KfQ0KDQpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5OTNweCkgew0KICANCiAgLmFydGljbGUtdGl0bGUgew0KICAgIG1hcmdpbi1sZWZ0OiAwOw0KICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgfQ0KICANCiAgLmFydGljbGUtYXV0aG9yIHsNCiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7DQogIH0NCn0NCg0KDQouc2VjdGlvbi1zZWFyY2ggLmhlYWRlci1zZWFyY2ggew0KICBwYWRkaW5nLXRvcDogNDBweDsNCiAgcGFkZGluZy1ib3R0b206IDQwcHg7DQogIG1hcmdpbi1ib3R0b206IDQwcHg7DQogIGJhY2tncm91bmQtY29sb3I6ICNlZWVlZWU7DQp9DQoNCi5zZWN0aW9uLXNlYXJjaCAuaGVhZGVyLXNlYXJjaCBpbWcgew0KICBtYXgtd2lkdGg6IDM1MHB4Ow0KfQ0KDQpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2MDBweCkgew0KICANCiAgLnNlY3Rpb24tc2VhcmNoIC5oZWFkZXItc2VhcmNoIGgxIHsNCiAgICBmb250LXNpemU6IDEzdnc7DQogIH0NCn0NCg0KDQouc2VjdGlvbi1zZWFyY2ggLnRpdGxlLXNlYXJjaCB7DQogIGZvbnQtc2l6ZTogMjZweDsNCiAgZm9udC13ZWlnaHQ6IGJvbGQ7DQp9DQoNCg0KLnNlY3Rpb24tc2VhcmNoIGlucHV0IHsNCiAgYm9yZGVyLXN0eWxlOiBub25lOw0KICBwYWRkaW5nLWxlZnQ6IDEwcHg7DQogIGhlaWdodDogNjBweDsNCn0NCg0KDQouc2VjdGlvbi1zZWFyY2ggLm1lZGlhIC5tZWRpYS1sZWZ0ID4gaW1nIHsNCiAgbWF4LXdpZHRoOiAyNDBweDsNCn0NCg0KDQouc2VjdGlvbi1zZWFyY2ggLm1lZGlhIC5tZWRpYS1ib2R5IHsNCiAgcGFkZGluZy1sZWZ0OiAyMHB4Ow0KfQ0KDQouc2VjdGlvbi1zZWFyY2ggLm1lZGlhIC5tZWRpYS1ib2R5ID4gYSB7DQogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsNCiAgZm9udC13ZWlnaHQ6IGJvbGQ7DQp9DQoNCi5zZWN0aW9uLXNlYXJjaCAubWVkaWEgLm1lZGlhLWJvZHkgLm1lZGlhLWhlYWRpbmcgew0KICBtYXJnaW4tdG9wOiA1cHg7DQogIG1hcmdpbi1ib3R0b206IDIwcHg7DQp9DQoNCg0KLmNhcmRzLWNvbnRhaW5lciB7DQogIG1hcmdpbi10b3A6IDg0cHg7DQogIGRpc3BsYXk6IGZsZXg7DQogIGp1c3RpZnktY29udGVudDogY2VudGVyOw0KfQ0KDQpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5OTFweCkgew0KICANCiAgLmNhcmRzLWNvbnRhaW5lciB7DQogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsNCiAgfQ0KfQ0KDQoNCi5jYXJvdXNlbC1jdXN0b20gLmNhcm91c2VsLWlubmVyID4gLmNhcm91c2VsLWl0ZW0gew0KICBtYXJnaW4tcmlnaHQ6IGF1dG87DQogIG1hcmdpbi1sZWZ0OiBhdXRvOw0KfQ0KDQouY2Fyb3VzZWwtY3VzdG9tIC5jYXJvdXNlbC1pbm5lciA+IC5jYXJvdXNlbC1pdGVtIC5jYXJvdXNlbC1jYXB0aW9uIHsNCiAgZGlzcGxheTogZmxleDsNCiAgYWxpZ24taXRlbXM6IGNlbnRlcjsNCiAgdG9wOiA1JTsNCiAgbGVmdDogNSU7DQogIHJpZ2h0OiA1JTsNCn0NCg0KQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY4cHgpIHsNCiAgDQogIC5jYXJvdXNlbC1jdXN0b20gLmNhcm91c2VsLWlubmVyID4gLmNhcm91c2VsLWl0ZW0gLmNhcm91c2VsLWNhcHRpb24gew0KICAgIGxlZnQ6IDUlOw0KICAgIHJpZ2h0OiA1JTsNCiAgfQ0KfQ0KDQoNCi5jYXJvdXNlbC1jdXN0b20gLmNhcm91c2VsLWluZGljYXRvcnMgbGkgew0KICBib3JkZXItY29sb3I6ICMyMzIyMjI7DQp9DQoNCg0KLnRhYmxlLnRhYmxlLWZvcm1zIHRkIHsNCiAgcGFkZGluZzogMTVweCA4cHg7DQp9DQoNCg0KLnRhYmxlLnRhYmxlLWZvcm1zIHRib2R5IHRyOmZpcnN0LWNoaWxkIHRkIHsNCiAgYm9yZGVyLXRvcDogbm9uZTsNCn0NCg0KDQoucG9sbCB7DQogIGJhY2tncm91bmQtY29sb3I6ICNlZWVlZWU7DQogIGJvcmRlci10b3A6IDdweCBzb2xpZCAjMGI4MGQwOw0KICBwb3NpdGlvbjogcmVsYXRpdmU7DQogIHBhZGRpbmctbGVmdDogMTVweDsNCiAgcGFkZGluZy1yaWdodDogMTVweDsNCn0NCg0KLnBvbGwgLnBvbGwtaGVhZGVyIHsNCiAgZGlzcGxheTogZmxleDsNCiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsNCiAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyOw0KICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOw0KICBhbGlnbi1pdGVtczogY2VudGVyOw0KICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47DQogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYmNiY2JjOw0KICBwYWRkaW5nLWJvdHRvbTogNXB4Ow0KfQ0KDQoucG9sbCAucG9sbC1oZWFkZXIgaDQgew0KICBmb250LXdlaWdodDogYm9sZDsNCiAgZGlzcGxheTogaW5saW5lLWJsb2NrOw0KfQ0KDQoucG9sbCAucG9sbC1jb250ZW50IHsNCiAgcGFkZGluZy10b3A6IDI1cHg7DQp9DQoNCi5wb2xsIC5wb2xsLWNvbnRlbnQgcCB7DQogIGZvbnQtc2l6ZTogMTRweDsNCn0NCg0KLnBvbGwgLnBvbGwtY29udGVudCBmb3JtIHsNCiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNiY2JjYmM7DQogIHBhZGRpbmctYm90dG9tOiAxMHB4Ow0KfQ0KDQoucG9sbCAucG9sbC1jb250ZW50IC5wb2xsLWJ1dHRvbnMgew0KICBwYWRkaW5nLXRvcDogMjBweDsNCiAgcGFkZGluZy1sZWZ0OiAxMXB4Ow0KfQ0KDQoucG9sbCAucG9sbC1jb250ZW50IC5wb2xsLWJ1dHRvbnMgLmJ0biB7DQogIHBhZGRpbmc6IDRweCAxNHB4Ow0KICBmb250LXNpemU6IDE0cHg7DQp9DQoNCi5wb2xsIC5wb2xsLWNvbnRlbnQgLnBvbGwtYnV0dG9ucyAuYnRuLWRlZmF1bHQsDQoucG9sbCAucG9sbC1jb250ZW50IC5wb2xsLWJ1dHRvbnMgLmJ0bi1zZWNvbmRhcnkgew0KICBjb2xvcjogIzAwMDsNCiAgYm9yZGVyLWNvbG9yOiAjMDAwOw0KfQ0KDQoucG9sbCAucG9sbC1jb250ZW50IC5wb2xsLWJ1dHRvbnMgLmJ0bi1kZWZhdWx0OmhvdmVyLA0KLnBvbGwgLnBvbGwtY29udGVudCAucG9sbC1idXR0b25zIC5idG4tc2Vjb25kYXJ5OmhvdmVyIHsNCiAgY29sb3I6ICMwMDA7DQogIGJvcmRlci1jb2xvcjogIzAwMDsNCn0NCg0KLnBvbGwgLnBvbGwtdGFncyB7DQogIHBhZGRpbmctdG9wOiAxMHB4Ow0KfQ0KDQoucG9sbCAucG9sbC10YWdzIGg0IHsNCiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNiY2JjYmM7DQogIHBhZGRpbmctYm90dG9tOiAxMHB4Ow0KfQ0KDQoucG9sbCAucG9sbC10YWdzIC50YWcgew0KICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7DQogIGJhY2tncm91bmQtY29sb3I6ICNlMWUxZTE7DQogIGNvbG9yOiAjMjMyMjIyOw0KICBwYWRkaW5nOiA1cHggMTRweDsNCiAgbWFyZ2luOiA1cHggMHB4Ow0KICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOw0KICBmb250LXNpemU6IDEzcHg7DQp9DQoNCg0KLm5hdi1zaWRlYmFyIHsNCiAgcGFkZGluZy1sZWZ0OiAyMHB4Ow0KICBtYXJnaW4tdG9wOiAyMHB4Ow0KICBtYXJnaW4tYm90dG9tOiAyMHB4Ow0KfQ0KDQoubmF2LXNpZGViYXIgLm5hdiA+IGxpID4gYSB7DQogIHBhZGRpbmc6IDRweCAyMHB4Ow0KICBjb2xvcjogIzJmNWZlZjsNCiAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgI2VlZWVlZTsNCn0NCg0KLm5hdi1zaWRlYmFyIC5uYXYgPiBsaSA+IGE6aG92ZXIsDQoubmF2LXNpZGViYXIgLm5hdiA+IGxpID4gYTpmb2N1cyB7DQogIGNvbG9yOiAjMjMyMjIyOw0KICB0ZXh0LWRlY29yYXRpb246IG5vbmU7DQogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Ow0KICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCAjNTU1NTU1Ow0KfQ0KDQoubmF2LXNpZGViYXIgLm5hdiA+IGxpID4gYTpiZWZvcmUgew0KICBwb3NpdGlvbjogcmVsYXRpdmU7DQogIHRvcDogMXB4Ow0KICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7DQogIGZvbnQtZmFtaWx5OiAnR2x5cGhpY29ucyBIYWxmbGluZ3MnOw0KICBmb250LXN0eWxlOiBub3JtYWw7DQogIGZvbnQtd2VpZ2h0OiBub3JtYWw7DQogIGxpbmUtaGVpZ2h0OiAxOw0KICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsNCiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsNCiAgY29udGVudDogJ1xlMjUwJzsNCiAgbWFyZ2luLXJpZ2h0OiA3cHg7DQp9DQoNCi5uYXYtc2lkZWJhciAubmF2ID4gLmFjdGl2ZSA+IGEgew0KICBjb2xvcjogIzIzMjIyMjsNCiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsNCiAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgIzU1NTU1NTsNCiAgZm9udC13ZWlnaHQ6IGJvbGQ7DQp9DQoNCi5uYXYtc2lkZWJhciAubmF2ID4gLmFjdGl2ZSA+IGE6YmVmb3JlIHsNCiAgY29udGVudDogJ1xlMjUyJzsNCn0NCg0KLm5hdi1zaWRlYmFyIC5uYXYgPiAuYWN0aXZlOmhvdmVyID4gYSwNCi5uYXYtc2lkZWJhciAubmF2ID4gLmFjdGl2ZWZvY3VzID4gYSB7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KfQ0KDQoubmF2LXNpZGViYXIgLm5hdiA+IC5hY3RpdmUgPiB1bC5uYXYgew0KICBkaXNwbGF5OiBibG9jazsNCn0NCg0KLm5hdi1zaWRlYmFyIC5uYXYgdWwubmF2IHsNCiAgZGlzcGxheTogbm9uZTsNCn0NCg0KLm5hdi1zaWRlYmFyIC5uYXYgLm5hdiA+IGxpID4gYSB7DQogIHBhZGRpbmctdG9wOiAxcHg7DQogIHBhZGRpbmctYm90dG9tOiAxcHg7DQogIHBhZGRpbmctbGVmdDogMzBweDsNCn0NCg0KLm5hdi1zaWRlYmFyIC5uYXYgLm5hdiA+IC5hY3RpdmUsDQoubmF2LXNpZGViYXIgLm5hdiAubmF2ID4gLmFjdGl2ZTpob3ZlciwNCi5uYXYtc2lkZWJhciAubmF2IC5uYXYgPiAuYWN0aXZlOmZvY3VzIHsNCiAgZm9udC13ZWlnaHQ6IGJvbGQ7DQp9DQoNCi5uYXYtc2lkZWJhciAubmF2IC5uYXYgLm5hdiA+IGxpID4gYSB7DQogIHBhZGRpbmctdG9wOiAxcHg7DQogIHBhZGRpbmctYm90dG9tOiAxcHg7DQogIHBhZGRpbmctbGVmdDogNjBweDsNCn0NCg0KLm5hdi1zaWRlYmFyIC5uYXYgLm5hdiAubmF2ID4gbGkgPiBhOmJlZm9yZSB7DQogIGNvbnRlbnQ6ICcnOw0KfQ0KDQoubmF2LXNpZGViYXIgLm5hdiAubmF2IC5uYXYgPiAuYWN0aXZlLA0KLm5hdi1zaWRlYmFyIC5uYXYgLm5hdiAubmF2ID4gLmFjdGl2ZTpob3ZlciwNCi5uYXYtc2lkZWJhciAubmF2IC5uYXYgLm5hdiA+IC5hY3RpdmU6Zm9jdXMgew0KICBmb250LXdlaWdodDogYm9sZDsNCn0NCg0KDQojbmF2YmFyIC5kcm9wZG93bi1tZW51IHsNCiAgbWFyZ2luLXRvcDogOHB4Ow0KfQ0KDQoNCiNuYXZiYXIgLmRyb3Bkb3duLXNlYXJjaCB7DQogIHBhZGRpbmctdG9wOiAwOw0KICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsNCiAgYm9yZGVyOiAwOw0KICBib3gtc2hhZG93OiBub25lOw0KICBtYXJnaW46IDlweDsNCn0NCg0KI25hdmJhciAuZHJvcGRvd24tc2VhcmNoICNxIHsNCiAgbWluLXdpZHRoOiAyMDBweDsNCn0NCg0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTlweCkgew0KICANCiAgI25hdmJhciAuZHJvcGRvd24tc2VhcmNoIC5pbnB1dC1ncm91cC1idG4gew0KICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7DQogIH0NCiAgDQogICNuYXZiYXIgLmRyb3Bkb3duLXNlYXJjaCAjc2VhcmNoLWZpbHRlciB7DQogICAgd2lkdGg6IDEwMCU7DQogICAgdGV4dC1hbGlnbjogbGVmdDsNCiAgICBwYWRkaW5nLWxlZnQ6IDI1cHg7DQogIH0NCiAgDQogICNuYXZiYXIgLmRyb3Bkb3duLXNlYXJjaC5kcm9wZG93bi1tZW51ID4gbGk6aG92ZXIsDQogICNuYXZiYXIgLmRyb3Bkb3duLXNlYXJjaCAuZHJvcGRvd24tbWVudSA+IGxpOmhvdmVyIHsNCiAgICBjb2xvcjogd2hpdGU7DQogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7DQogIH0NCn0NCg0KDQoudGFicy1oZWFkZXIgew0KICBwYWRkaW5nLWJvdHRvbTogOS41cHg7DQogIG1hcmdpbjogNDJweCAwIDIxcHg7DQp9DQoNCg0KLmhlbHAtYmxvY2suZXJyb3IsDQpsYWJlbC5jb2wtZm9ybS1sYWJlbC5yZXF1aXJlZDpiZWZvcmUsDQouY3JtRW50aXR5Rm9ybVZpZXcgLmNlbGwgZGl2LmluZm8ucmVxdWlyZWQgbGFiZWw6YWZ0ZXIsDQouY3JtRW50aXR5Rm9ybVZpZXcgLmNlbGwgZGl2LmluZm8gZGl2LnZhbGlkYXRvcnMsDQouY3JtRW50aXR5Rm9ybVZpZXcgLnZhbGlkYXRvci10ZXh0LA0KLmNybUVudGl0eUZvcm1WaWV3IC5yYW5rLW9yZGVyLWNlbGwgLnZhbGlkYXRvci10ZXh0LA0KLmNybUVudGl0eUZvcm1WaWV3IC5jb25zdGFudC1zdW0tY2VsbCAudmFsaWRhdG9yLXRleHQsDQouY3JtRW50aXR5Rm9ybVZpZXcgLnN0YWNrLXJhbmstY2VsbCAudmFsaWRhdG9yLXRleHQgew0KICBjb2xvcjogI2E5NDQ0MjsNCn0NCg0KQG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpIHsNCiAgDQogIC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLXRvZ2dsZXIgLm5hdmJhci10b2dnbGVyLWljb24gew0KICAgIGJhY2tncm91bmQtY29sb3I6ICM4ODg7DQogIH0NCiAgDQogIC5uYXZiYXItZGFyayAubmF2YmFyLXRvZ2dsZXIgLm5hdmJhci10b2dnbGVyLWljb24gew0KICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7DQogIH0NCn0NCg0KDQoucHItY29sb3Igew0KICBjb2xvcjogIzJmNWZlZjsNCn0NCg0KDQouYmx1ZV9ib3JkZXIgew0KICBwYWRkaW5nLWJvdHRvbTogMTBweDsNCiAgYm9yZGVyLWJvdHRvbTogN3B4IHNvbGlkICMwYjgwZDA7DQp9DQoNCg0KLnBhZ2Vfc2VjdGlvbiB7DQogIHBvc2l0aW9uOiByZWxhdGl2ZTsNCiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsNCiAgY29sb3I6ICMwMDA7DQp9DQoNCi5wYWdlX3NlY3Rpb24gLnJvdyB7DQogIHBhZGRpbmctdG9wOiA0MHB4Ow0KICBwYWRkaW5nLWJvdHRvbTogMTAwcHg7DQp9DQoNCi5wYWdlX3NlY3Rpb24gLnJvdy5zaWRlYmFyLWhvbWUgew0KICBwYWRkaW5nLWJvdHRvbTogMDsNCn0NCg0KLnBhZ2Vfc2VjdGlvbiBoMSB7DQogIGZvbnQtc2l6ZTogMzJweDsNCn0NCg0KLnBhZ2Vfc2VjdGlvbiBoMiB7DQogIGNvbG9yOiAjNjY2NjY2Ow0KICBmb250LXNpemU6IDQwcHg7DQp9DQoNCi5wYWdlX3NlY3Rpb24gaDMgew0KICBmb250LXNpemU6IDY2cHg7DQogIGZvbnQtZmFtaWx5OiAnU2Vnb2UgVUkgTGlnaHQnLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOw0KfQ0KDQoucGFnZV9zZWN0aW9uIHAgew0KICBwYWRkaW5nLXRvcDogNXB4Ow0KfQ0KDQoucGFnZV9zZWN0aW9uIC5idG4gew0KICBtYXJnaW4tdG9wOiA1MHB4Ow0KfQ0KDQoucGFnZV9zZWN0aW9uIC5mb3JtLXNlYXJjaCAuYnRuIHsNCiAgcGFkZGluZzogNHB4IDEycHg7DQogIG1hcmdpbi10b3A6IDA7DQp9DQoNCi5wYWdlX3NlY3Rpb24gLnNlY3Rpb24tbGFuZGluZy1oZWFkaW5nIHAsDQoucGFnZV9zZWN0aW9uIC5zZWN0aW9uLWxhbmRpbmctc3ViLWhlYWRpbmcgcCB7DQogIGJvcmRlci10b3A6IDA7DQp9DQoNCg0KLmZvcm0tc2VhcmNoIC5idG4gew0KICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOw0KfQ0KDQoNCi5mb3JtLXNlYXJjaCAuYnRuLWRlZmF1bHQ6aG92ZXIsDQouZm9ybS1zZWFyY2ggLmJ0bi1zZWNvbmRhcnk6aG92ZXIgew0KICBib3JkZXItY29sb3I6ICNjY2M7DQp9DQoNCg0KLmZvcm0tc2VhcmNoIC5kcm9wZG93bi1zdWJtZW51IHsNCiAgcmlnaHQ6IC0ycHg7DQp9DQoNCg0KLmZvcm0tc2VhcmNoIC5kcm9wZG93bi1tZW51IHsNCiAgbWFyZ2luLXRvcDogMHB4Ow0KfQ0KDQoNCi5kcm9wZG93bi1zZWFyY2guZHJvcGRvd24tbWVudSA+IGxpOmhvdmVyIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7DQp9DQoNCg0KI25hdmJhciAuZm9ybS1zZWFyY2ggLmRyb3Bkb3duLW1lbnUgew0KICBtYXJnaW4tdG9wOiAwcHg7DQp9DQoNCg0KLnNlY3Rpb24tZGlhZ29uYWwtbGVmdCB7DQogIC13ZWJraXQtdHJhbnNmb3JtOiBza2V3KDBkZWcsIC0xLjNkZWcpOw0KICAtbXMtdHJhbnNmb3JtOiBza2V3KDBkZWcsIC0xLjNkZWcpOw0KICB0cmFuc2Zvcm06IHNrZXcoMGRlZywgLTEuM2RlZyk7DQogIG92ZXJmbG93OiBoaWRkZW47DQogIG1hcmdpbi10b3A6IC02MHB4Ow0KICBtYXJnaW4tYm90dG9tOiAtMjBweDsNCn0NCg0KLnNlY3Rpb24tZGlhZ29uYWwtbGVmdCAuc2VjdGlvbi1kaWFnb25hbC1sZWZ0LWNvbnRlbnQgew0KICAtd2Via2l0LXRyYW5zZm9ybTogc2tldygwZGVnLCAxLjNkZWcpOw0KICAtbXMtdHJhbnNmb3JtOiBza2V3KDBkZWcsIDEuM2RlZyk7DQogIHRyYW5zZm9ybTogc2tldygwZGVnLCAxLjNkZWcpOw0KICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOw0KICBtYXJnaW4tdG9wOiAtNzBweDsNCn0NCg0KLnNlY3Rpb24tZGlhZ29uYWwtbGVmdCAuc2VjdGlvbi1kaWFnb25hbC1sZWZ0LWNvbnRlbnQ6YmVmb3JlIHsNCiAgY29udGVudDogJyc7DQogIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgdG9wOiAwOw0KICBsZWZ0OiAwOw0KICB3aWR0aDogMTAwJTsNCiAgaGVpZ2h0OiAxMDAlOw0KICBvcGFjaXR5OiAwLjI7DQogIHotaW5kZXg6IC0xOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOw0KfQ0KDQoNCi5zZWN0aW9uLWRpYWdvbmFsLXJpZ2h0IHsNCiAgLXdlYmtpdC10cmFuc2Zvcm06IHNrZXcoMGRlZywgMS4zZGVnKTsNCiAgLW1zLXRyYW5zZm9ybTogc2tldygwZGVnLCAxLjNkZWcpOw0KICB0cmFuc2Zvcm06IHNrZXcoMGRlZywgMS4zZGVnKTsNCiAgb3ZlcmZsb3c6IGhpZGRlbjsNCiAgbWFyZ2luLXRvcDogNjBweDsNCiAgbWFyZ2luLWJvdHRvbTogLTIwcHg7DQp9DQoNCi5zZWN0aW9uLWRpYWdvbmFsLXJpZ2h0LmhvbWUtc2VjdGlvbiB7DQogIG1hcmdpbi10b3A6IC02MHB4Ow0KfQ0KDQouc2VjdGlvbi1kaWFnb25hbC1yaWdodCAuc2VjdGlvbi1kaWFnb25hbC1yaWdodC1jb250ZW50IHsNCiAgLXdlYmtpdC10cmFuc2Zvcm06IHNrZXcoMGRlZywgLTEuM2RlZyk7DQogIC1tcy10cmFuc2Zvcm06IHNrZXcoMGRlZywgLTEuM2RlZyk7DQogIHRyYW5zZm9ybTogc2tldygwZGVnLCAtMS4zZGVnKTsNCiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsNCiAgbWFyZ2luLXRvcDogLTcwcHg7DQp9DQoNCi5zZWN0aW9uLWRpYWdvbmFsLXJpZ2h0IC5zZWN0aW9uLWRpYWdvbmFsLXJpZ2h0LWNvbnRlbnQ6YmVmb3JlIHsNCiAgY29udGVudDogJyc7DQogIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgdG9wOiAwOw0KICBsZWZ0OiAwOw0KICB3aWR0aDogMTAwJTsNCiAgaGVpZ2h0OiAxMDAlOw0KICBvcGFjaXR5OiAwLjg7DQogIHotaW5kZXg6IC0xOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmY1ZmVmOw0KfQ0KDQoNCi5zZWN0aW9uLWRpYWdvbmFsLWxlZnQgLnJvdywNCi5zZWN0aW9uLWRpYWdvbmFsLXJpZ2h0IC5yb3cgew0KICBwYWRkaW5nLXRvcDogMTI1cHg7DQp9DQoNCg0KLnNlY3Rpb24tZGlhZ29uYWwtbGVmdCAuY29sLWxnLTUsDQouc2VjdGlvbi1kaWFnb25hbC1yaWdodCAuY29sLWxnLTUgew0KICBmbG9hdDogbm9uZTsNCiAgbWFyZ2luOiAwIGF1dG87DQp9DQoNCg0KLnNlY3Rpb24tZGlhZ29uYWwtbGVmdCBwLA0KLnNlY3Rpb24tZGlhZ29uYWwtcmlnaHQgcCB7DQogIGJvcmRlci10b3A6IG5vbmU7DQp9DQoNCg0KLnNlY3Rpb24tbGFuZGluZyB7DQogIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0cmFuc3BhcmVudCwgdHJhbnNwYXJlbnQpOw0KICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOw0KfQ0KDQouc2VjdGlvbi1sYW5kaW5nIC5yb3cgPiBkaXYgew0KICBtYXJnaW4tdG9wOiA4MHB4Ow0KfQ0KDQouc2VjdGlvbi1sYW5kaW5nIC5yb3cgPiBkaXYgLnNlY3Rpb24tbGFuZGluZy1oZWFkaW5nIHsNCiAgZm9udC1zaXplOiA0cmVtOw0KICBjb2xvcjogI2ZmZjsNCn0NCg0KQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjAwcHgpIHsNCiAgDQogIC5zZWN0aW9uLWxhbmRpbmcgLnJvdyA+IGRpdiAuc2VjdGlvbi1sYW5kaW5nLWhlYWRpbmcgew0KICAgIGZvbnQtc2l6ZTogMTZ2dzsNCiAgfQ0KfQ0KDQouc2VjdGlvbi1sYW5kaW5nIC5yb3cgPiBkaXYgLnNlY3Rpb24tbGFuZGluZy1zdWItaGVhZGluZyB7DQogIG1hcmdpbi10b3A6IDA7DQogIG1hcmdpbi1ib3R0b206IDUwcHg7DQogIGZvbnQtc2l6ZTogMS41cmVtOw0KICBjb2xvcjogI2ZmZjsNCiAgZm9udC13ZWlnaHQ6IFNlbWlib2xkOw0KfQ0KDQpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2MDBweCkgew0KICANCiAgLnNlY3Rpb24tbGFuZGluZyAucm93ID4gZGl2IC5zZWN0aW9uLWxhbmRpbmctc3ViLWhlYWRpbmcgew0KICAgIGZvbnQtc2l6ZTogNHZ3Ow0KICB9DQp9DQoNCg0KLnNlY3Rpb24tc3ViLWxhbmRpbmcgew0KICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOw0KfQ0KDQoNCi5zZWN0aW9uLWRlZmF1bHQgew0KICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOw0KfQ0KDQpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgew0KICANCiAgLnNlY3Rpb24tZGVmYXVsdDpiZWZvcmUgew0KICAgIGNvbnRlbnQ6ICcgJzsNCiAgICB3aWR0aDogMTAwJTsNCiAgICBoZWlnaHQ6IDEwMCU7DQogICAgcG9zaXRpb246IGFic29sdXRlOw0KICAgIHotaW5kZXg6IDA7DQogICAgdG9wOiAwOw0KICAgIGxlZnQ6IDA7DQogICAgYmFja2dyb3VuZDogLW1vei1saW5lYXItZ3JhZGllbnQoDQogICAgICB0b3AsDQogICAgICB0cmFuc3BhcmVudCAwJSwNCiAgICAgIHJnYmEoMCwgMCwgMCwgMC41OSkgNDElLA0KICAgICAgcmdiYSgwLCAwLCAwLCAwLjYyKSA0MyUsDQogICAgICBibGFjayAxMDAlDQogICAgKTsNCiAgICANCiAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgNCiAgICAgIHRvcCwNCiAgICAgIHRyYW5zcGFyZW50IDAlLA0KICAgICAgcmdiYSgwLCAwLCAwLCAwLjU5KSA0MSUsDQogICAgICByZ2JhKDAsIDAsIDAsIDAuNjIpIDQzJSwNCiAgICAgIGJsYWNrIDEwMCUNCiAgICApOw0KICAgIA0KICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgNCiAgICAgIHRvIGJvdHRvbSwNCiAgICAgIHRyYW5zcGFyZW50IDAlLA0KICAgICAgcmdiYSgwLCAwLCAwLCAwLjU5KSA0MSUsDQogICAgICByZ2JhKDAsIDAsIDAsIDAuNjIpIDQzJSwNCiAgICAgIGJsYWNrIDEwMCUNCiAgICApOw0KICAgIA0KICAgIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KCBzdGFydENvbG9yc3RyPScjMDAwMDAwMDAnLCBlbmRDb2xvcnN0cj0nIzAwMDAwMCcsR3JhZGllbnRUeXBlPTAgKTsNCiAgICANCiAgfQ0KfQ0KDQouc2VjdGlvbi1kZWZhdWx0IC5yb3cgew0KICBwYWRkaW5nLWJvdHRvbTogMTUwcHg7DQp9DQoNCg0KLnNlY3Rpb24ta25vd2xlZGdlIHsNCiAgbWFyZ2luLWJvdHRvbTogNDBweDsNCn0NCg0KDQouY29udGVudC1ob21lIC5idG4gew0KICBtYXJnaW4tdG9wOiAwOw0KfQ0KDQoNCi5jb250ZW50LWhvbWUgLmNhcmQgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsNCiAgYm9yZGVyOiAwOw0KICBib3gtc2hhZG93OiBub25lOw0KfQ0KDQouY29udGVudC1ob21lIC5jYXJkIHAgew0KICBib3JkZXI6IDA7DQp9DQoNCg0KLmNvbnRlbnQtaG9tZSAuY2FyZC1oZWFkZXIgew0KICBkaXNwbGF5OiBub25lOw0KfQ0KDQoNCi5jb250ZW50LWhvbWUgLmxpc3QtZ3JvdXAtaXRlbSB7DQogIHBhZGRpbmc6IDIwcHggMDsNCiAgZm9udC1zaXplOiAyMHB4Ow0KICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsNCiAgYm9yZGVyOiAwOw0KICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDsNCn0NCg0KLmNvbnRlbnQtaG9tZSAubGlzdC1ncm91cC1pdGVtIGltZyB7DQogIG1hcmdpbi1yaWdodDogMjVweDsNCn0NCg0KDQouY29udGVudC1ob21lIGEubGlzdC1ncm91cC1pdGVtLA0KLmNvbnRlbnQtaG9tZSAubGlzdC1ncm91cC1pdGVtIGEudGl0bGUgew0KICBjb2xvcjogIzIzMjIyMjsNCn0NCg0KLmNvbnRlbnQtaG9tZSBhLmxpc3QtZ3JvdXAtaXRlbTpob3ZlciwNCi5jb250ZW50LWhvbWUgYS5saXN0LWdyb3VwLWl0ZW06Zm9jdXMsDQouY29udGVudC1ob21lIC5saXN0LWdyb3VwLWl0ZW0gYS50aXRsZTpob3ZlciwNCi5jb250ZW50LWhvbWUgLmxpc3QtZ3JvdXAtaXRlbSBhLnRpdGxlOmZvY3VzIHsNCiAgY29sb3I6ICMyMzIyMjI7DQogIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsNCn0NCg0KDQouY29udGVudC1ob21lIC50aXRsZSwNCi5jb250ZW50LWhvbWUgLmRlc2NyaXB0aW9uIHsNCiAgZGlzcGxheTogYmxvY2s7DQp9DQoNCg0KLmNvbnRlbnQtaG9tZSAudGl0bGUgew0KICBmb250LXNpemU6IDI0cHg7DQogIGZvbnQtZmFtaWx5OiAnU2Vnb2UgVUkgTGlnaHQnLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOw0KfQ0KDQoNCi5jb250ZW50LWhvbWUgLmRlc2NyaXB0aW9uIHsNCiAgZGlzcGxheTogYmxvY2s7DQogIGZvbnQtc2l6ZTogMTRweDsNCn0NCg0KDQouc2lkZWJhci1ob21lIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZWVlZTsNCiAgYm9yZGVyLXRvcDogN3B4IHNvbGlkICMwYjgwZDA7DQogIG1hcmdpbi10b3A6IDM2cHg7DQogIHBvc2l0aW9uOiByZWxhdGl2ZTsNCn0NCg0KLnNpZGViYXItaG9tZSBoMyB7DQogIGZvbnQtc2l6ZTogMThweDsNCn0NCg0KLnNpZGViYXItaG9tZSAuY2FyZCB7DQogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Ow0KICBib3JkZXI6IDA7DQogIGJveC1zaGFkb3c6IG5vbmU7DQp9DQoNCi5zaWRlYmFyLWhvbWUgLmNhcmQtaGVhZGVyIHsNCiAgcGFkZGluZy1sZWZ0OiAwOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsNCiAgYm9yZGVyOiAwOw0KfQ0KDQouc2lkZWJhci1ob21lIC5jYXJkLXRpdGxlIHsNCiAgZm9udC1zaXplOiAxNHB4Ow0KICBjb2xvcjogIzJmNWZlZjsNCiAgZm9udC1mYW1pbHk6ICdTZWdvZSBVSSBTZW1pYm9sZCcsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7DQp9DQoNCi5zaWRlYmFyLWhvbWUgLmxpc3QtZ3JvdXAtaXRlbSB7DQogIHBhZGRpbmctbGVmdDogMDsNCiAgZm9udC1zaXplOiAxNHB4Ow0KICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsNCiAgYm9yZGVyOiAwOw0KfQ0KDQouc2lkZWJhci1ob21lIC5saXN0LWdyb3VwLWl0ZW06aG92ZXIsDQouc2lkZWJhci1ob21lIC5saXN0LWdyb3VwLWl0ZW06Zm9jdXMgew0KICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsNCiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7DQp9DQoNCi5zaWRlYmFyLWhvbWUgLmxpc3QtZ3JvdXAtaXRlbSAuZGF0ZSB7DQogIHZpc2liaWxpdHk6IGhpZGRlbjsNCn0NCg0KDQouc2VjdGlvbi1sYW5kaW5nLXNlYXJjaCB7DQogIG1pbi1oZWlnaHQ6IDI1MHB4Ow0KICBiYWNrZ3JvdW5kOiB1cmwoaG9tZWhlcm8uanBnKSBuby1yZXBlYXQgMCAyNSU7DQogIGJhY2tncm91bmQtc2l6ZTogY292ZXI7DQp9DQoNCg0KLnNlY3Rpb24tbGFuZGluZy1mb3J1bXMgew0KICBtaW4taGVpZ2h0OiAyNTBweDsNCiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsNCn0NCg0KDQouc2VjdGlvbi1rbm93bGVkZ2UgLmxpc3QtZ3JvdXAgYS5saXN0LWdyb3VwLWl0ZW0gew0KICBjb2xvcjogIzJmNWZlZjsNCn0NCg0KDQouc2VjdGlvbi1rbm93bGVkZ2UgLmNhcmQtdGl0bGUgew0KICBjb2xvcjogIzAwMDsNCn0NCg0KDQoucGFnZV9zZWN0aW9uLnNlY3Rpb24tbGFuZGluZyAucm93IHsNCiAgcGFkZGluZy1ib3R0b206IDYwcHg7DQp9DQoNCg0KLnBhZ2Vfc2VjdGlvbi5zZWN0aW9uLWxhbmRpbmcgLnJvdyA+IGRpdiB7DQogIG1hcmdpbi10b3A6IDBweDsNCn0NCg0KDQp1bC50cmVlLA0Kb2wudHJlZSB7DQogIGNvbG9yOiAjMmY1ZmVmOw0KfQ0KDQoNCi50cmVlIHVsLA0KLnRyZWUgb2wsDQoudHJlZSB1bCB1bCwNCi50cmVlIG9sIHVsLA0KLnRyZWUgb2wgb2wgdWwsDQoudHJlZSBvbCB1bCB1bCwNCi50cmVlIHVsIG9sIHVsLA0KLnRyZWUgdWwgdWwgdWwgew0KICBsaXN0LXN0eWxlLXR5cGU6IGRpc2M7DQogIGNvbG9yOiAjMmY1ZmVmOw0KfQ0KDQoNCg0KLmFkeF9mb3Jtc19mb250X2NhbGlicmkgew0KICBmb250LWZhbWlseTogQ2FsaWJyaTsNCn0NCg0KDQouYWR4X2Zvcm1zX2ZvbnRfbmV3X3JvbWFuIHsNCiAgZm9udC1mYW1pbHk6IFRpbWVzIE5ldyBSb21hbjsNCn0NCg0KDQouYWR4X2Zvcm1zX2ZvbnRfaGVsdmV0aWNhIHsNCiAgZm9udC1mYW1pbHk6ICdIZWx2ZXRpY2EnLCBzYW5zLXNlcmlmOw0KfQ0KDQoNCmh0bWwgew0KICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsNCiAgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7DQogIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsNCiAgaGVpZ2h0OiAxMDAlOw0KICBtYXJnaW46IDA7DQp9DQoNCi53cmFwcGVyLWJvZHkgew0KICBtaW4taGVpZ2h0OiBjYWxjKDEwMCUgLSAxMzJweCk7DQogIG1hcmdpbi1ib3R0b206IDBweDsNCn0NCg0KLmZvb3RlciAucHVzaCB7DQogIGhlaWdodDogNDNweDsNCn0NCg0KLmZvb3RlciB7DQogIG1hcmdpbi10b3A6IDBweDsNCn0NCg0KLnBhZ2UtY29weSB7DQogIG1hcmdpbi10b3A6IDBweDsNCiAgbWFyZ2luLWJvdHRvbTogMHB4Ow0KfQ0KDQoubmF2YmFyLWJyYW5kIHsNCiAgbGluZS1oZWlnaHQ6IDM3cHg7DQp9DQoNCmgxLA0KaDIsDQpoMywNCmg0LA0KaDUsDQpoNiB7DQogIGNvbG9yOiB1bnNldDsNCn0NCg0KYm9keSwNCmxlZ2VuZCB7DQogIGNvbG9yOiAjMDAwMDAwOw0KfQ0KDQoubmF2LXRhYnMgPiBsaSA+IGE6aG92ZXIsDQoubmF2LXRhYnMgPiBsaSA+IGE6Zm9jdXMgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJmMmYyOw0KICBjb2xvcjogIzMwMmNlMTsNCn0NCg0KLmJ0bi1kZWZhdWx0LA0KLmJ0bi1zZWNvbmRhcnkgew0KICBjb2xvcjogIzMwMmNlMTsNCiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7DQogIGJvcmRlci1jb2xvcjogIzMwMmNlMTsNCn0NCg0KLmJ0bi1kZWZhdWx0OmhvdmVyLA0KLmJ0bi1kZWZhdWx0OmFjdGl2ZSwNCi5idG4tZGVmYXVsdC5hY3RpdmUsDQouYnRuLWRlZmF1bHQ6Zm9jdXMsDQouYnRuLWRlZmF1bHQuZm9jdXMsDQouYnRuLXNlY29uZGFyeTpob3ZlciwNCi5idG4tc2Vjb25kYXJ5OmFjdGl2ZSwNCi5idG4tc2Vjb25kYXJ5LmFjdGl2ZSwNCi5idG4tc2Vjb25kYXJ5OmZvY3VzLA0KLmJ0bi1zZWNvbmRhcnkuZm9jdXMgew0KICBjb2xvcjogIzMwMmNlMTsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2YyZjJmMjsNCiAgYm9yZGVyLWNvbG9yOiAjMzAyY2UxOw0KfQ0KDQouYnRuLXByaW1hcnkgew0KICBjb2xvcjogd2hpdGU7DQogIGJhY2tncm91bmQtY29sb3I6ICMzMDJjZTE7DQogIGJvcmRlci1jb2xvcjogIzMwMmNlMTsNCn0NCg0KLmJ0bi1wcmltYXJ5OmhvdmVyLA0KLmJ0bi1wcmltYXJ5OmFjdGl2ZSwNCi5idG4tcHJpbWFyeS5hY3RpdmUsDQouYnRuLXByaW1hcnk6YWN0aXZlOmhvdmVyLA0KLmJ0bi1wcmltYXJ5LmFjdGl2ZTpob3ZlciwNCi5idG4tcHJpbWFyeTphY3RpdmU6Zm9jdXMsDQouYnRuLXByaW1hcnkuYWN0aXZlOmZvY3VzLA0KLmJ0bi1wcmltYXJ5OmFjdGl2ZS5mb2N1cywNCi5idG4tcHJpbWFyeS5hY3RpdmUuZm9jdXMsDQouYnRuLXByaW1hcnk6Zm9jdXMsDQouYnRuLXByaW1hcnkuZm9jdXMgew0KICBjb2xvcjogd2hpdGU7DQogIGJhY2tncm91bmQtY29sb3I6ICM1YzU5ZTc7DQogIGJvcmRlci1jb2xvcjogIzVjNTllNzsNCn0NCg0KLm5hdmJhci1kYXJrIC5uYXZiYXItdG9nZ2xlciB7DQogIGJvcmRlcjogMXB4IHNvbGlkICMzMDJjZTE7DQp9DQoNCi5uYXZiYXItZGFyayAubmF2YmFyLXRvZ2dsZXI6aG92ZXIgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDY0MmU0Ow0KfQ0KDQoubmF2YmFyLWRhcmsgLm5hdmJhci10b2dnbGVyOmZvY3VzIHsNCiAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7DQogIGJhY2tncm91bmQtY29sb3I6ICM0NjQyZTQ7DQp9DQoNCi5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAuc2hvdy5kcm9wZG93bi1tZW51IHsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzMwMmNlMTsNCn0NCg0KLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5zaG93LmRyb3Bkb3duLW1lbnUgPiBsaSA+IGEgew0KICBjb2xvcjogI2ZmZjsNCn0NCg0KLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2ID4gLmRyb3Bkb3duID4gYS5zaG93IC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiA+IC5kcm9wZG93biA+IGEuc2hvdzpob3ZlciwNCi5uYXZiYXItZGFyayAubmF2YmFyLW5hdiA+IC5kcm9wZG93biA+IGEuc2hvdzpmb2N1cyB7DQogIGJhY2tncm91bmQtY29sb3I6ICMzMDJjZTE7DQogIGNvbG9yOiAjZmZmOw0KfQ0KDQoubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLnNob3cuZHJvcGRvd24tbWVudSA+IGxpID4gYTpob3ZlciwNCi5uYXZiYXItZGFyaw0KICAubmF2YmFyLW5hdg0KICAuc2hvdy5kcm9wZG93bi1tZW51DQogID4gbGkNCiAgPiBhOmZvY3VzDQogIC5uYXZiYXItZGFyaw0KICAubmF2YmFyLW5hdg0KICAuc2hvdy5kcm9wZG93bi1tZW51DQogID4gLmFjdGl2ZQ0KICA+IGEsDQoubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLnNob3cuZHJvcGRvd24tbWVudSA+IC5hY3RpdmUgPiBhOmhvdmVyLA0KLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5zaG93LmRyb3Bkb3duLW1lbnUgPiAuYWN0aXZlID4gYTpmb2N1cyB7DQogIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7DQogIGNvbG9yOiAjMzAyY2UxOw0KfQ0KDQoubmF2ID4gbGkgPiBhOmhvdmVyLA0KLm5hdiA+IGxpID4gYTpmb2N1cyB7DQogIGJhY2tncm91bmQtY29sb3I6ICNmMmYyZjI7DQp9DQoNCi5uYXYgLnNob3cuZHJvcGRvd24tbWVudSB7DQogIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7DQp9DQoNCi5uYXYgLnNob3cuZHJvcGRvd24tbWVudSA+IGxpID4gYSB7DQogIGNvbG9yOiBibGFjazsNCn0NCg0KLm5hdiA+IC5kcm9wZG93biA+IGEgLm5hdiA+IC5kcm9wZG93biA+IGE6aG92ZXIsDQoubmF2ID4gLmRyb3Bkb3duID4gYTpmb2N1cyB7DQogIGJhY2tncm91bmQtY29sb3I6ICNmMmYyZjI7DQp9DQoNCi5uYXYgLnNob3cuZHJvcGRvd24tbWVudSA+IC5hY3RpdmUgPiBhLA0KLm5hdiAuc2hvdy5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZSA+IGE6aG92ZXIsDQoubmF2IC5zaG93LmRyb3Bkb3duLW1lbnUgPiAuYWN0aXZlID4gYTpmb2N1cywNCi5uYXYgLnNob3cuZHJvcGRvd24tbWVudSA+IGxpID4gYTpob3ZlciwNCi5uYXYgLnNob3cuZHJvcGRvd24tbWVudSA+IGxpID4gYTpmb2N1cyB7DQogIGJhY2tncm91bmQtY29sb3I6ICNmMmYyZjI7DQogIGNvbG9yOiBibGFjazsNCn0NCg0KI2ZpbHRlckRyb3Bkb3duSWQgPiAuZHJvcGRvd24tbWVudSA+IGxpID4gYTpmb2N1cyB7DQogIGJvcmRlcjogMXB4IHNvbGlkOw0KfQ0KDQojZmlsdGVyRHJvcGRvd25JZCA+IGE6Zm9jdXMgew0KICBib3JkZXI6IDFweCBzb2xpZDsNCn0NCg0KLmNybUVudGl0eUZvcm1WaWV3LA0KLmVudGl0eWxpc3Qgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOw0KICBjb2xvcjogIzAwMDAwMDsNCiAgYm9yZGVyOiAxcHggc29saWQgI2YyZjJmMjsNCn0NCg0KLnNlY3Rpb25QcmltYXJ5Q29sb3Igew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzAyY2UxOw0KICBjb2xvcjogI2ZmZmZmZjsNCn0NCg0KLnNlY3Rpb25QcmltYXJ5Q29sb3IgaDEsDQouc2VjdGlvblByaW1hcnlDb2xvciBoMiwNCi5zZWN0aW9uUHJpbWFyeUNvbG9yIGgzLA0KLnNlY3Rpb25QcmltYXJ5Q29sb3IgaDQsDQouc2VjdGlvblByaW1hcnlDb2xvciBoNSwNCi5zZWN0aW9uUHJpbWFyeUNvbG9yIGg2IHsNCiAgY29sb3I6ICNmZmZmZmY7DQp9DQoNCi5zZWN0aW9uUHJpbWFyeUNvbG9yIC5jcm1FbnRpdHlGb3JtVmlldyBoMSwNCi5zZWN0aW9uUHJpbWFyeUNvbG9yIC5jcm1FbnRpdHlGb3JtVmlldyBoMiwNCi5zZWN0aW9uUHJpbWFyeUNvbG9yIC5jcm1FbnRpdHlGb3JtVmlldyBoMywNCi5zZWN0aW9uUHJpbWFyeUNvbG9yIC5jcm1FbnRpdHlGb3JtVmlldyBoNCwNCi5zZWN0aW9uUHJpbWFyeUNvbG9yIC5jcm1FbnRpdHlGb3JtVmlldyBoNSwNCi5zZWN0aW9uUHJpbWFyeUNvbG9yIC5jcm1FbnRpdHlGb3JtVmlldyBoNiB7DQogIGNvbG9yOiAjMDAwMDAwOw0KfQ0KDQouc2VjdGlvblByaW1hcnlDb2xvciAuZW50aXR5bGlzdCBoMSwNCi5zZWN0aW9uUHJpbWFyeUNvbG9yIC5lbnRpdHlsaXN0IGgyLA0KLnNlY3Rpb25QcmltYXJ5Q29sb3IgLmVudGl0eWxpc3QgaDMsDQouc2VjdGlvblByaW1hcnlDb2xvciAuZW50aXR5bGlzdCBoNCwNCi5zZWN0aW9uUHJpbWFyeUNvbG9yIC5lbnRpdHlsaXN0IGg1LA0KLnNlY3Rpb25QcmltYXJ5Q29sb3IgLmVudGl0eWxpc3QgaDYgew0KICBjb2xvcjogIzAwMDAwMDsNCn0NCg0KLnNlY3Rpb25GaXhlZFN0eWxlIHsNCiAgY29sb3I6ICMwMDAwMDA7DQp9DQoNCmEgew0KICBjb2xvcjogIzMwMmNlMTsNCn0NCg0KYTpub3QoLmJ0bikgew0KICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsNCn0NCg0KW3JvbGU9J25hdmlnYXRpb24nXSBhLA0KW3JvbGU9J2NvbnRlbnRpbmZvJ10gYSwNCi50b29sYmFyIGEsDQphLmxpc3QtZ3JvdXAtaXRlbSB7DQogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsNCn0NCg0KYTpob3ZlciwNCmE6Zm9jdXMgew0KICBjb2xvcjogIzMwMmNlMTsNCiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7DQp9DQoNCi5icmVhZGNydW1iID4gLmFjdGl2ZSB7DQogIGNvbG9yOiAjMDAwMDAwOw0KICBmb250LXdlaWdodDogYm9sZDsNCn0NCg0KcCB7DQogIGZvbnQtc2l6ZTogMTZweDsNCn0NCg0KaDEgew0KICBmb250LXNpemU6IDM2cHg7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KICBtYXJnaW4tbGVmdDogMHB4Ow0KICBtYXJnaW4tcmlnaHQ6IDBweDsNCn0NCg0KaDIgew0KICBmb250LXNpemU6IDI4cHg7DQogIGZvbnQtd2VpZ2h0OiA2MDA7DQp9DQoNCmgzIHsNCiAgZm9udC1zaXplOiAyNHB4Ow0KICBmb250LXdlaWdodDogNjAwOw0KfQ0KDQoucGFnZS1oZWFkZXIgew0KICBib3JkZXItYm90dG9tOiAwcHg7DQp9DQoNCi5uYXZiYXItYnJhbmQgew0KICBwYWRkaW5nOiA4cHg7DQp9DQoNCi5zdGF0aWMtdG9wLm5hdmJhci1kYXJrIC5uYXZiYXItYnJhbmQgew0KICBmb250LXNpemU6IDI0cHg7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KICBmb250LWZhbWlseTogdW5zZXQ7DQp9DQoNCi5zdGF0aWMtdG9wLm5hdmJhci1kYXJrIC5uYXZiYXItYnJhbmQgYSB7DQogIGNvbG9yOiBibGFjazsNCiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOw0KfQ0KLmhlbHAtYmxvY2sgew0KICBjb2xvcjogYmxhY2s7DQp9DQoNCi5za2lwLXRvLWNvbnRlbnQgYSB7DQogIHBhZGRpbmc6IDEwcHggMjBweDsNCiAgcG9zaXRpb246IGFic29sdXRlOw0KICB0b3A6IC00M3B4Ow0KICBsZWZ0OiAwcHg7DQogIGNvbG9yOiAjZmZmZmZmOw0KICBib3JkZXItcmFkaXVzOiAycHg7DQogIGJhY2tncm91bmQ6ICM3NDI3NzQ7DQogIC13ZWJraXQtdHJhbnNpdGlvbjogdG9wIDFzIGVhc2Utb3V0Ow0KICB0cmFuc2l0aW9uOiB0b3AgMXMgZWFzZS1vdXQ7DQogIHotaW5kZXg6IDEwMDsNCiAgZm9udC1mYW1pbHk6IFNlZ29lIFVJOw0KICBmb250LXNpemU6IDE0cHg7DQp9DQoNCi5za2lwLXRvLWNvbnRlbnQgYTpmb2N1cyB7DQogIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgbGVmdDogMHB4Ow0KICB0b3A6IDBweDsNCiAgb3V0bGluZTogbm9uZTsNCiAgY29sb3I6ICNmZmZmZmY7DQogIC13ZWJraXQtdHJhbnNpdGlvbjogdG9wIDAuMXMgZWFzZS1pbjsNCiAgdHJhbnNpdGlvbjogdG9wIDAuMXMgZWFzZS1pbjsNCn0NCg0KQG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpIHsNCiAgLm5hdi10YWJzID4gbGkuYWN0aXZlID4gYSwNCiAgLm5hdi10YWJzID4gbGkuYWN0aXZlID4gYTpob3ZlciwNCiAgLm5hdi10YWJzID4gbGkuYWN0aXZlID4gYTpmb2N1cyB7DQogICAgYm9yZGVyLWJvdHRvbTogMHB4Ow0KICB9DQoNCiAgLm5hdi10YWJzID4gbGkgPiBhIHsNCiAgICBib3JkZXI6IDBweDsNCiAgfQ0KDQogIC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAuc2hvdy5kcm9wZG93bi1tZW51ID4gbGkgPiBhOmhvdmVyLA0KICAubmF2YmFyLWRhcmsNCiAgICAubmF2YmFyLW5hdg0KICAgIC5zaG93LmRyb3Bkb3duLW1lbnUNCiAgICA+IGxpDQogICAgPiBhOmZvY3VzDQogICAgLm5hdmJhci1kYXJrDQogICAgLm5hdmJhci1uYXYNCiAgICAuc2hvdy5kcm9wZG93bi1tZW51DQogICAgPiAuYWN0aXZlDQogICAgPiBhLA0KICAubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLnNob3cuZHJvcGRvd24tbWVudSA+IC5hY3RpdmUgPiBhOmhvdmVyLA0KICAubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLnNob3cuZHJvcGRvd24tbWVudSA+IC5hY3RpdmUgPiBhOmZvY3VzIHsNCiAgICBib3JkZXI6IDFweCBzb2xpZDsNCiAgfQ0KDQogIC5mYWNldC1saXN0LWdyb3VwLWl0ZW0gew0KICAgIG1hcmdpbjogMXB4Ow0KICAgIGJvcmRlcjogMHB4Ow0KICB9DQp9DQoNCi5mcmVuY2hBY2Nlc3NpYmlsaXR5TGluayB7DQogIGZsb2F0OiByaWdodDsNCiAgd2lkdGg6IDI5N3B4Ow0KICBoZWlnaHQ6IDI0cHg7DQogIGZvbnQtZmFtaWx5OiBTZWdvZSBVSTsNCiAgZm9udC1zaXplOiAxOHB4Ow0KICBsaW5lLWhlaWdodDogMjFweDsNCiAgdGV4dC1kZWNvcmF0aW9uLWxpbmU6IHVuZGVybGluZTsNCiAgY29sb3I6ICMyYzMzZDg7DQp9DQoNCg0KLnB2YS1mbG9hdGluZy1zdHlsZSB7DQogIHBvc2l0aW9uOiBmaXhlZDsNCiAgYm90dG9tOiAwcHg7DQogIHJpZ2h0OiAwcHg7DQogIG1hcmdpbi1yaWdodDogMTZweDsNCiAgbWFyZ2luLWJvdHRvbTogMThweDsNCiAgei1pbmRleDogOTk5OTsNCn0NCg0KDQoudmlzaWJsZS1sZy1ibG9jayB7DQogIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsNCiAgYWxpZ24taXRlbXM6IGNlbnRlcjsNCn0NCg0KDQpoMSwNCi5oMSwNCmgyLA0KLmgyLA0KaDMsDQouaDMgew0KICBtYXJnaW4tdG9wOiAyMXB4Ow0KICBtYXJnaW4tYm90dG9tOiAxMC41cHg7DQp9DQpoNCwNCi5oNCwNCmg1LA0KLmg1LA0KaDYsDQouaDYgew0KICBtYXJnaW4tdG9wOiAxMC41cHg7DQogIG1hcmdpbi1ib3R0b206IDEwLjVweDsNCn0NCg0KDQoNCi5uYXYtaXRlbSAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7DQogIGJvcmRlci10b3A6IDAuMmVtIHNvbGlkOw0KICBib3JkZXItcmlnaHQ6IDAuMmVtIHNvbGlkIHRyYW5zcGFyZW50Ow0KICBib3JkZXItYm90dG9tOiAwOw0KICBib3JkZXItbGVmdDogMC4yZW0gc29saWQgdHJhbnNwYXJlbnQ7DQp9DQoNCi5jdXN0b20tY29udGFpbmVyIHsNCiAgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7DQogIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsNCn0NCg0KLmN1c3RvbS1zaXRldGl0bGUgew0KICB0ZXh0LXdyYXA6IHdyYXA7DQp9DQoNCi5jdXN0b20tbmF2YmFyLXRvZ2dsZXIgew0KICBtYXJnaW4tbGVmdDogYXV0bzsNCn0NCg0KYTpub3QoLmJ0bik6aG92ZXIgew0KICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSAhaW1wb3J0YW50Ow0KfQ==" >
        
          <link rel="stylesheet" href="data:text/css;base64,LyoqDQogKiBDb2RlIGdlbmVyYXRlZCBieSBNaWNyb3NvZnQuIENoYW5nZXMgdG8gdGhpcyBmaWxlIGFyZSBub3QNCiAqIHN1cHBvcnRlZC4gV2UgcmVjb21tZW5kIHRoYXQgeW91IGRvIG5vdCBtb2RpZnkgdGhpcyBmaWxlLiBBbnkNCiAqIGNoYW5nZSB0byB0aGlzIGZpbGUgd2lsbCBnZXQgb3ZlcndyaXR0ZW4gd2l0aCBhIHRoZW1lIGFwcGxpZWQgdXNpbmcNCiAqIFNpdGUgU3R5bGluZyBwYW5lbCBmcm9tIFBvd2VyIEFwcHMgUG9ydGFscy4NCiAqLw0KIDpyb290IHsNCiAgLS1wb3J0YWxUaGVtZUNvbG9yMTogI0I2QjRCMjsNCiAgLS1wb3J0YWxUaGVtZUNvbG9yMjogIzYwNUU1QzsNCiAgLS1wb3J0YWxUaGVtZUNvbG9yMzogI0YzRjJGMTsNCiAgLS1wb3J0YWxUaGVtZUNvbG9yNDogIzMyMzEzMDsNCiAgLS1wb3J0YWxUaGVtZUNvbG9yNTogI0Y4RjhGODsNCiAgLS1wb3J0YWxUaGVtZUNvbG9yNjogIzVDNUE1ODsNCiAgLS1wb3J0YWxUaGVtZUNvbG9yNzogI0ZGRkZGRjsNCiAgLS1wb3J0YWxUaGVtZUNvbG9yODogIzAwMDAwMDsNCiAgLS1wb3J0YWxUaGVtZUNvbG9yOTogIzE5MTgxNzsNCiAgLS1wb3J0YWxUaGVtZUNvbG9yMTA6IDsNCiAgLS1wb3J0YWxUaGVtZUNvbG9yMTE6IDsNCiAgLS1wb3J0YWxUaGVtZUNvbG9yMTI6IDsNCiAgLS1wb3J0YWxUaGVtZU9uQ29sb3IxOiAjMDAwMDAwOw0KICAtLXBvcnRhbFRoZW1lT25Db2xvcjI6ICNGRkZGRkY7DQogIC0tcG9ydGFsVGhlbWVPbkNvbG9yMzogIzAwMDAwMDsNCiAgLS1wb3J0YWxUaGVtZU9uQ29sb3I0OiAjRkZGRkZGOw0KICAtLXBvcnRhbFRoZW1lT25Db2xvcjU6ICMwMDAwMDA7DQogIC0tcG9ydGFsVGhlbWVPbkNvbG9yNjogI0ZGRkZGRjsNCiAgLS1wb3J0YWxUaGVtZU9uQ29sb3I3OiAjMDAwMDAwOw0KICAtLXBvcnRhbFRoZW1lT25Db2xvcjg6ICNGRkZGRkY7DQogIC0tcG9ydGFsVGhlbWVPbkNvbG9yOTogI0ZGRkZGRjsNCiAgLS1wb3J0YWxUaGVtZU9uQ29sb3IxMDogOw0KICAtLXBvcnRhbFRoZW1lT25Db2xvcjExOiA7DQogIC0tcG9ydGFsVGhlbWVPbkNvbG9yMTI6IDsgfQ0KDQpbZGF0YS1jb21wb25lbnQtdGhlbWU9InBvcnRhbFRoZW1lQ29sb3IxIl0gew0KICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wb3J0YWxUaGVtZUNvbG9yMSk7DQogIGNvbG9yOiB2YXIoLS1wb3J0YWxUaGVtZU9uQ29sb3IxKTsgfQ0KICBbZGF0YS1jb21wb25lbnQtdGhlbWU9InBvcnRhbFRoZW1lQ29sb3IxIl0gaDEsIFtkYXRhLWNvbXBvbmVudC10aGVtZT0icG9ydGFsVGhlbWVDb2xvcjEiXSBoMiwgW2RhdGEtY29tcG9uZW50LXRoZW1lPSJwb3J0YWxUaGVtZUNvbG9yMSJdIGgzLCBbZGF0YS1jb21wb25lbnQtdGhlbWU9InBvcnRhbFRoZW1lQ29sb3IxIl0gaDQsIFtkYXRhLWNvbXBvbmVudC10aGVtZT0icG9ydGFsVGhlbWVDb2xvcjEiXSBoNSwgW2RhdGEtY29tcG9uZW50LXRoZW1lPSJwb3J0YWxUaGVtZUNvbG9yMSJdIGg2LCBbZGF0YS1jb21wb25lbnQtdGhlbWU9InBvcnRhbFRoZW1lQ29sb3IxIl0gcCB7DQogICAgY29sb3I6IHZhcigtLXBvcnRhbFRoZW1lT25Db2xvcjEpOyB9DQoNCltkYXRhLWNvbXBvbmVudC10aGVtZT0icG9ydGFsVGhlbWVDb2xvcjIiXSB7DQogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBvcnRhbFRoZW1lQ29sb3IyKTsNCiAgY29sb3I6IHZhcigtLXBvcnRhbFRoZW1lT25Db2xvcjIpOyB9DQogIFtkYXRhLWNvbXBvbmVudC10aGVtZT0icG9ydGFsVGhlbWVDb2xvcjIiXSBoMSwgW2RhdGEtY29tcG9uZW50LXRoZW1lPSJwb3J0YWxUaGVtZUNvbG9yMiJdIGgyLCBbZGF0YS1jb21wb25lbnQtdGhlbWU9InBvcnRhbFRoZW1lQ29sb3IyIl0gaDMsIFtkYXRhLWNvbXBvbmVudC10aGVtZT0icG9ydGFsVGhlbWVDb2xvcjIiXSBoNCwgW2RhdGEtY29tcG9uZW50LXRoZW1lPSJwb3J0YWxUaGVtZUNvbG9yMiJdIGg1LCBbZGF0YS1jb21wb25lbnQtdGhlbWU9InBvcnRhbFRoZW1lQ29sb3IyIl0gaDYsIFtkYXRhLWNvbXBvbmVudC10aGVtZT0icG9ydGFsVGhlbWVDb2xvcjIiXSBwIHsNCiAgICBjb2xvcjogdmFyKC0tcG9ydGFsVGhlbWVPbkNvbG9yMik7IH0NCg0KW2RhdGEtY29tcG9uZW50LXRoZW1lPSJwb3J0YWxUaGVtZUNvbG9yMyJdIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcG9ydGFsVGhlbWVDb2xvcjMpOw0KICBjb2xvcjogdmFyKC0tcG9ydGFsVGhlbWVPbkNvbG9yMyk7IH0NCiAgW2RhdGEtY29tcG9uZW50LXRoZW1lPSJwb3J0YWxUaGVtZUNvbG9yMyJdIGgxLCBbZGF0YS1jb21wb25lbnQtdGhlbWU9InBvcnRhbFRoZW1lQ29sb3IzIl0gaDIsIFtkYXRhLWNvbXBvbmVudC10aGVtZT0icG9ydGFsVGhlbWVDb2xvcjMiXSBoMywgW2RhdGEtY29tcG9uZW50LXRoZW1lPSJwb3J0YWxUaGVtZUNvbG9yMyJdIGg0LCBbZGF0YS1jb21wb25lbnQtdGhlbWU9InBvcnRhbFRoZW1lQ29sb3IzIl0gaDUsIFtkYXRhLWNvbXBvbmVudC10aGVtZT0icG9ydGFsVGhlbWVDb2xvcjMiXSBoNiwgW2RhdGEtY29tcG9uZW50LXRoZW1lPSJwb3J0YWxUaGVtZUNvbG9yMyJdIHAgew0KICAgIGNvbG9yOiB2YXIoLS1wb3J0YWxUaGVtZU9uQ29sb3IzKTsgfQ0KDQpbZGF0YS1jb21wb25lbnQtdGhlbWU9InBvcnRhbFRoZW1lQ29sb3I0Il0gew0KICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wb3J0YWxUaGVtZUNvbG9yNCk7DQogIGNvbG9yOiB2YXIoLS1wb3J0YWxUaGVtZU9uQ29sb3I0KTsgfQ0KICBbZGF0YS1jb21wb25lbnQtdGhlbWU9InBvcnRhbFRoZW1lQ29sb3I0Il0gaDEsIFtkYXRhLWNvbXBvbmVudC10aGVtZT0icG9ydGFsVGhlbWVDb2xvcjQiXSBoMiwgW2RhdGEtY29tcG9uZW50LXRoZW1lPSJwb3J0YWxUaGVtZUNvbG9yNCJdIGgzLCBbZGF0YS1jb21wb25lbnQtdGhlbWU9InBvcnRhbFRoZW1lQ29sb3I0Il0gaDQsIFtkYXRhLWNvbXBvbmVudC10aGVtZT0icG9ydGFsVGhlbWVDb2xvcjQiXSBoNSwgW2RhdGEtY29tcG9uZW50LXRoZW1lPSJwb3J0YWxUaGVtZUNvbG9yNCJdIGg2LCBbZGF0YS1jb21wb25lbnQtdGhlbWU9InBvcnRhbFRoZW1lQ29sb3I0Il0gcCB7DQogICAgY29sb3I6IHZhcigtLXBvcnRhbFRoZW1lT25Db2xvcjQpOyB9DQoNCltkYXRhLWNvbXBvbmVudC10aGVtZT0icG9ydGFsVGhlbWVDb2xvcjUiXSB7DQogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBvcnRhbFRoZW1lQ29sb3I1KTsNCiAgY29sb3I6IHZhcigtLXBvcnRhbFRoZW1lT25Db2xvcjUpOyB9DQogIFtkYXRhLWNvbXBvbmVudC10aGVtZT0icG9ydGFsVGhlbWVDb2xvcjUiXSBoMSwgW2RhdGEtY29tcG9uZW50LXRoZW1lPSJwb3J0YWxUaGVtZUNvbG9yNSJdIGgyLCBbZGF0YS1jb21wb25lbnQtdGhlbWU9InBvcnRhbFRoZW1lQ29sb3I1Il0gaDMsIFtkYXRhLWNvbXBvbmVudC10aGVtZT0icG9ydGFsVGhlbWVDb2xvcjUiXSBoNCwgW2RhdGEtY29tcG9uZW50LXRoZW1lPSJwb3J0YWxUaGVtZUNvbG9yNSJdIGg1LCBbZGF0YS1jb21wb25lbnQtdGhlbWU9InBvcnRhbFRoZW1lQ29sb3I1Il0gaDYsIFtkYXRhLWNvbXBvbmVudC10aGVtZT0icG9ydGFsVGhlbWVDb2xvcjUiXSBwIHsNCiAgICBjb2xvcjogdmFyKC0tcG9ydGFsVGhlbWVPbkNvbG9yNSk7IH0NCg0KW2RhdGEtY29tcG9uZW50LXRoZW1lPSJwb3J0YWxUaGVtZUNvbG9yNiJdIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcG9ydGFsVGhlbWVDb2xvcjYpOw0KICBjb2xvcjogdmFyKC0tcG9ydGFsVGhlbWVPbkNvbG9yNik7IH0NCiAgW2RhdGEtY29tcG9uZW50LXRoZW1lPSJwb3J0YWxUaGVtZUNvbG9yNiJdIGgxLCBbZGF0YS1jb21wb25lbnQtdGhlbWU9InBvcnRhbFRoZW1lQ29sb3I2Il0gaDIsIFtkYXRhLWNvbXBvbmVudC10aGVtZT0icG9ydGFsVGhlbWVDb2xvcjYiXSBoMywgW2RhdGEtY29tcG9uZW50LXRoZW1lPSJwb3J0YWxUaGVtZUNvbG9yNiJdIGg0LCBbZGF0YS1jb21wb25lbnQtdGhlbWU9InBvcnRhbFRoZW1lQ29sb3I2Il0gaDUsIFtkYXRhLWNvbXBvbmVudC10aGVtZT0icG9ydGFsVGhlbWVDb2xvcjYiXSBoNiwgW2RhdGEtY29tcG9uZW50LXRoZW1lPSJwb3J0YWxUaGVtZUNvbG9yNiJdIHAgew0KICAgIGNvbG9yOiB2YXIoLS1wb3J0YWxUaGVtZU9uQ29sb3I2KTsgfQ0KDQpbZGF0YS1jb21wb25lbnQtdGhlbWU9InBvcnRhbFRoZW1lQ29sb3I3Il0gew0KICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wb3J0YWxUaGVtZUNvbG9yNyk7DQogIGNvbG9yOiB2YXIoLS1wb3J0YWxUaGVtZU9uQ29sb3I3KTsgfQ0KICBbZGF0YS1jb21wb25lbnQtdGhlbWU9InBvcnRhbFRoZW1lQ29sb3I3Il0gaDEsIFtkYXRhLWNvbXBvbmVudC10aGVtZT0icG9ydGFsVGhlbWVDb2xvcjciXSBoMiwgW2RhdGEtY29tcG9uZW50LXRoZW1lPSJwb3J0YWxUaGVtZUNvbG9yNyJdIGgzLCBbZGF0YS1jb21wb25lbnQtdGhlbWU9InBvcnRhbFRoZW1lQ29sb3I3Il0gaDQsIFtkYXRhLWNvbXBvbmVudC10aGVtZT0icG9ydGFsVGhlbWVDb2xvcjciXSBoNSwgW2RhdGEtY29tcG9uZW50LXRoZW1lPSJwb3J0YWxUaGVtZUNvbG9yNyJdIGg2LCBbZGF0YS1jb21wb25lbnQtdGhlbWU9InBvcnRhbFRoZW1lQ29sb3I3Il0gcCB7DQogICAgY29sb3I6IHZhcigtLXBvcnRhbFRoZW1lT25Db2xvcjcpOyB9DQoNCltkYXRhLWNvbXBvbmVudC10aGVtZT0icG9ydGFsVGhlbWVDb2xvcjgiXSB7DQogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBvcnRhbFRoZW1lQ29sb3I4KTsNCiAgY29sb3I6IHZhcigtLXBvcnRhbFRoZW1lT25Db2xvcjgpOyB9DQogIFtkYXRhLWNvbXBvbmVudC10aGVtZT0icG9ydGFsVGhlbWVDb2xvcjgiXSBoMSwgW2RhdGEtY29tcG9uZW50LXRoZW1lPSJwb3J0YWxUaGVtZUNvbG9yOCJdIGgyLCBbZGF0YS1jb21wb25lbnQtdGhlbWU9InBvcnRhbFRoZW1lQ29sb3I4Il0gaDMsIFtkYXRhLWNvbXBvbmVudC10aGVtZT0icG9ydGFsVGhlbWVDb2xvcjgiXSBoNCwgW2RhdGEtY29tcG9uZW50LXRoZW1lPSJwb3J0YWxUaGVtZUNvbG9yOCJdIGg1LCBbZGF0YS1jb21wb25lbnQtdGhlbWU9InBvcnRhbFRoZW1lQ29sb3I4Il0gaDYsIFtkYXRhLWNvbXBvbmVudC10aGVtZT0icG9ydGFsVGhlbWVDb2xvcjgiXSBwIHsNCiAgICBjb2xvcjogdmFyKC0tcG9ydGFsVGhlbWVPbkNvbG9yOCk7IH0NCg0KW2RhdGEtY29tcG9uZW50LXRoZW1lPSJwb3J0YWxUaGVtZUNvbG9yOSJdIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcG9ydGFsVGhlbWVDb2xvcjkpOw0KICBjb2xvcjogdmFyKC0tcG9ydGFsVGhlbWVPbkNvbG9yOSk7IH0NCiAgW2RhdGEtY29tcG9uZW50LXRoZW1lPSJwb3J0YWxUaGVtZUNvbG9yOSJdIGgxLCBbZGF0YS1jb21wb25lbnQtdGhlbWU9InBvcnRhbFRoZW1lQ29sb3I5Il0gaDIsIFtkYXRhLWNvbXBvbmVudC10aGVtZT0icG9ydGFsVGhlbWVDb2xvcjkiXSBoMywgW2RhdGEtY29tcG9uZW50LXRoZW1lPSJwb3J0YWxUaGVtZUNvbG9yOSJdIGg0LCBbZGF0YS1jb21wb25lbnQtdGhlbWU9InBvcnRhbFRoZW1lQ29sb3I5Il0gaDUsIFtkYXRhLWNvbXBvbmVudC10aGVtZT0icG9ydGFsVGhlbWVDb2xvcjkiXSBoNiwgW2RhdGEtY29tcG9uZW50LXRoZW1lPSJwb3J0YWxUaGVtZUNvbG9yOSJdIHAgew0KICAgIGNvbG9yOiB2YXIoLS1wb3J0YWxUaGVtZU9uQ29sb3I5KTsgfQ0KDQpbZGF0YS1jb21wb25lbnQtdGhlbWU9InBvcnRhbFRoZW1lQ29sb3IxMCJdIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcG9ydGFsVGhlbWVDb2xvcjEwKTsNCiAgY29sb3I6IHZhcigtLXBvcnRhbFRoZW1lT25Db2xvcjEwKTsgfQ0KICBbZGF0YS1jb21wb25lbnQtdGhlbWU9InBvcnRhbFRoZW1lQ29sb3IxMCJdIGgxLCBbZGF0YS1jb21wb25lbnQtdGhlbWU9InBvcnRhbFRoZW1lQ29sb3IxMCJdIGgyLCBbZGF0YS1jb21wb25lbnQtdGhlbWU9InBvcnRhbFRoZW1lQ29sb3IxMCJdIGgzLCBbZGF0YS1jb21wb25lbnQtdGhlbWU9InBvcnRhbFRoZW1lQ29sb3IxMCJdIGg0LCBbZGF0YS1jb21wb25lbnQtdGhlbWU9InBvcnRhbFRoZW1lQ29sb3IxMCJdIGg1LCBbZGF0YS1jb21wb25lbnQtdGhlbWU9InBvcnRhbFRoZW1lQ29sb3IxMCJdIGg2LCBbZGF0YS1jb21wb25lbnQtdGhlbWU9InBvcnRhbFRoZW1lQ29sb3IxMCJdIHAgew0KICAgIGNvbG9yOiB2YXIoLS1wb3J0YWxUaGVtZU9uQ29sb3IxMCk7IH0NCg0KW2RhdGEtY29tcG9uZW50LXRoZW1lPSJwb3J0YWxUaGVtZUNvbG9yMTEiXSB7DQogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBvcnRhbFRoZW1lQ29sb3IxMSk7DQogIGNvbG9yOiB2YXIoLS1wb3J0YWxUaGVtZU9uQ29sb3IxMSk7IH0NCiAgW2RhdGEtY29tcG9uZW50LXRoZW1lPSJwb3J0YWxUaGVtZUNvbG9yMTEiXSBoMSwgW2RhdGEtY29tcG9uZW50LXRoZW1lPSJwb3J0YWxUaGVtZUNvbG9yMTEiXSBoMiwgW2RhdGEtY29tcG9uZW50LXRoZW1lPSJwb3J0YWxUaGVtZUNvbG9yMTEiXSBoMywgW2RhdGEtY29tcG9uZW50LXRoZW1lPSJwb3J0YWxUaGVtZUNvbG9yMTEiXSBoNCwgW2RhdGEtY29tcG9uZW50LXRoZW1lPSJwb3J0YWxUaGVtZUNvbG9yMTEiXSBoNSwgW2RhdGEtY29tcG9uZW50LXRoZW1lPSJwb3J0YWxUaGVtZUNvbG9yMTEiXSBoNiwgW2RhdGEtY29tcG9uZW50LXRoZW1lPSJwb3J0YWxUaGVtZUNvbG9yMTEiXSBwIHsNCiAgICBjb2xvcjogdmFyKC0tcG9ydGFsVGhlbWVPbkNvbG9yMTEpOyB9DQoNCltkYXRhLWNvbXBvbmVudC10aGVtZT0icG9ydGFsVGhlbWVDb2xvcjEyIl0gew0KICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wb3J0YWxUaGVtZUNvbG9yMTIpOw0KICBjb2xvcjogdmFyKC0tcG9ydGFsVGhlbWVPbkNvbG9yMTIpOyB9DQogIFtkYXRhLWNvbXBvbmVudC10aGVtZT0icG9ydGFsVGhlbWVDb2xvcjEyIl0gaDEsIFtkYXRhLWNvbXBvbmVudC10aGVtZT0icG9ydGFsVGhlbWVDb2xvcjEyIl0gaDIsIFtkYXRhLWNvbXBvbmVudC10aGVtZT0icG9ydGFsVGhlbWVDb2xvcjEyIl0gaDMsIFtkYXRhLWNvbXBvbmVudC10aGVtZT0icG9ydGFsVGhlbWVDb2xvcjEyIl0gaDQsIFtkYXRhLWNvbXBvbmVudC10aGVtZT0icG9ydGFsVGhlbWVDb2xvcjEyIl0gaDUsIFtkYXRhLWNvbXBvbmVudC10aGVtZT0icG9ydGFsVGhlbWVDb2xvcjEyIl0gaDYsIFtkYXRhLWNvbXBvbmVudC10aGVtZT0icG9ydGFsVGhlbWVDb2xvcjEyIl0gcCB7DQogICAgY29sb3I6IHZhcigtLXBvcnRhbFRoZW1lT25Db2xvcjEyKTsgfQ0KDQpib2R5IHsNCiAgY29sb3I6ICMwMDAwMDA7DQogIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7IH0NCg0KbGVnZW5kIHsNCiAgY29sb3I6ICMwMDAwMDA7IH0NCg0KZm9vdGVyIHsNCiAgY29sb3I6ICNGRkZGRkY7DQogIGZvbnQtZmFtaWx5OiBBcmlhbDsNCiAgZm9udC13ZWlnaHQ6IDQwMDsNCiAgZm9udC1zaXplOiAxNnB4OyB9DQogIGZvb3RlciAuZm9vdGVyLWJvdHRvbSB7DQogICAgYmFja2dyb3VuZC1jb2xvcjogIzVDNUE1ODsgDQogICAgZGlzcGxheTogbm9uZTsNCiAgfQ0KDQouY29sdW1uQmxvY2tMYXlvdXQgew0KICBtYXJnaW4tdG9wOiA2MHB4Ow0KICBtYXJnaW4tYm90dG9tOiA2MHB4Ow0KICBwYWRkaW5nOiAxNnB4OyB9DQoNCi5icmVhZGNydW1iIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH0NCiAgLmJyZWFkY3J1bWIgPiBsaSBhIHsNCiAgICBjb2xvcjogIzMyMzEzMDsgfQ0KICAgIC5icmVhZGNydW1iID4gbGkgYTpob3ZlciB7DQogICAgICBjb2xvcjogIzMyMzEzMDsgfQ0KICAuYnJlYWRjcnVtYiA+IC5hY3RpdmUgew0KICAgIGNvbG9yOiAjMDAwMDAwOyB9DQoNCi5uYXYtdGFicyA+IGxpID4gYTpob3ZlciB7DQogIGJhY2tncm91bmQtY29sb3I6ICNmMmYyZjI7DQogIGNvbG9yOiAjMzIzMTMwOyB9DQoNCi5uYXYtdGFicyA+IGxpID4gYTpmb2N1cyB7DQogIGJhY2tncm91bmQtY29sb3I6ICNmMmYyZjI7DQogIGNvbG9yOiAjMzIzMTMwOyB9DQoNCi5idG4tcHJpbWFyeSB7DQogIGNvbG9yOiAjRkZGRkZGOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzIzMTMwOw0KICBib3JkZXItY29sb3I6ICMzMjMxMzA7DQogIGJvcmRlci1yYWRpdXM6IDJweDsNCiAgZm9udC1mYW1pbHk6IEFyaWFsOw0KICBmb250LXdlaWdodDogNjAwOw0KICBmb250LXNpemU6IDE0cHg7DQogIHBhZGRpbmc6IDZweCAyMHB4Ow0KICB3aWR0aDogZml0LWNvbnRlbnQ7DQogIGJvcmRlci1zdHlsZTogc29saWQ7DQogIGJhY2tncm91bmQtY29sb3I6ICMzMjMxMzA7DQogIGNvbG9yOiAjRkZGRkZGOyB9DQogIC5idG4tcHJpbWFyeTpob3ZlciB7DQogICAgY29sb3I6ICNGRkZGRkY7DQogICAgYmFja2dyb3VuZC1jb2xvcjogIzE5MTgxNzsNCiAgICBib3JkZXItY29sb3I6ICMxOTE4MTc7IH0NCiAgLmJ0bi1wcmltYXJ5OmFjdGl2ZSwgLmJ0bi1wcmltYXJ5LmFjdGl2ZSB7DQogICAgY29sb3I6ICNGRkZGRkY7DQogICAgYmFja2dyb3VuZC1jb2xvcjogIzE5MTgxNzsNCiAgICBib3JkZXItY29sb3I6ICMxOTE4MTc7IH0NCiAgICAuYnRuLXByaW1hcnk6YWN0aXZlOmhvdmVyLCAuYnRuLXByaW1hcnk6YWN0aXZlOmZvY3VzLCAuYnRuLXByaW1hcnk6YWN0aXZlLmZvY3VzLCAuYnRuLXByaW1hcnkuYWN0aXZlOmhvdmVyLCAuYnRuLXByaW1hcnkuYWN0aXZlOmZvY3VzLCAuYnRuLXByaW1hcnkuYWN0aXZlLmZvY3VzIHsNCiAgICAgIGNvbG9yOiAjRkZGRkZGOw0KICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzE5MTgxNzsNCiAgICAgIGJvcmRlci1jb2xvcjogIzE5MTgxNzsgfQ0KICAuYnRuLXByaW1hcnk6Zm9jdXMsIC5idG4tcHJpbWFyeS5mb2N1cyB7DQogICAgY29sb3I6ICNGRkZGRkY7DQogICAgYmFja2dyb3VuZC1jb2xvcjogIzE5MTgxNzsNCiAgICBib3JkZXItY29sb3I6ICMxOTE4MTc7IH0NCg0KLnN0YXRpYy10b3AubmF2YmFyLWRhcmsgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjQjZCNEIyOyANCiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Ow0KfQ0KDQoubmF2YmFyLXRvZ2dsZXIgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzIzMTMwOyB9DQoNCi5zdGF0aWMtdG9wLm5hdmJhciAubWVudS1iYXIgPiAubmF2YmFyLW5hdiA+IGxpID4gYSB7DQogIGZvbnQtZmFtaWx5OiBBcmlhbDsNCiAgZm9udC13ZWlnaHQ6IDQwMDsNCiAgZm9udC1zaXplOiAyMHB4OyB9DQogIC5zdGF0aWMtdG9wLm5hdmJhciAubWVudS1iYXIgPiAubmF2YmFyLW5hdiA+IGxpID4gYTpob3ZlciB7DQogICAgdGV4dC1kZWNvcmF0aW9uOiBVbmRlcmxpbmU7IH0NCg0KLm5hdmJhci1kYXJrIC5uYXZiYXItdG9nZ2xlciB7DQogIGJvcmRlcjogMXB4IHNvbGlkICMzMjMxMzA7IH0NCiAgLm5hdmJhci1kYXJrIC5uYXZiYXItdG9nZ2xlcjpob3ZlciB7DQogICAgYmFja2dyb3VuZC1jb2xvcjogIzE5MTgxNzsNCiAgICBib3JkZXItY29sb3I6ICMxOTE4MTc7IH0NCiAgLm5hdmJhci1kYXJrIC5uYXZiYXItdG9nZ2xlcjpmb2N1cyB7DQogICAgYm9yZGVyOiAxcHggc29saWQgIzAwMDAwMDsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTkxODE3OyB9DQogIC5uYXZiYXItZGFyayAubmF2YmFyLXRvZ2dsZXIgLm5hdmJhci10b2dnbGVyLWljb24gew0KICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwgJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMiAzMicgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggc3Ryb2tlPSclMjNGRkZGRkYnICBzdHJva2Utd2lkdGg9JzMnIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLW1pdGVybGltaXQ9JzEwJyBkPSdNNCA4aDI0TTQgMTZoMjRNNCAyNGgyNCcvJTNFJTNDL3N2ZyUzRSIpOyB9DQoNCi5uYXZiYXItZGFyayAubmF2YmFyLW5hdiA+IGxpID4gYSwgLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2ID4gbGkuZHJvcGRvd24gPiBhIHsNCiAgY29sb3I6ICMwMDAwMDA7DQogIGZvbnQtZmFtaWx5OiBBcmlhbDsNCiAgZm9udC13ZWlnaHQ6IDQwMDsNCiAgZm9udC1zaXplOiAyMHB4OyB9DQogIC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiA+IGxpID4gYTpob3ZlciwgLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2ID4gbGkuZHJvcGRvd24gPiBhOmhvdmVyIHsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzIzMTMwOw0KICAgIGNvbG9yOiAjZmZmZmZmOw0KICAgIHRleHQtZGVjb3JhdGlvbjogVW5kZXJsaW5lOyB9DQogIC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiA+IGxpID4gYTpmb2N1cywgLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2ID4gbGkuZHJvcGRvd24gPiBhOmZvY3VzIHsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzIzMTMwOw0KICAgIGNvbG9yOiAjZmZmZmZmOw0KICAgIHRleHQtZGVjb3JhdGlvbjogVW5kZXJsaW5lOyB9DQogIC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiA+IGxpID4gYTpmb2N1cy12aXNpYmxlLCAubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgPiBsaS5kcm9wZG93biA+IGE6Zm9jdXMtdmlzaWJsZSB7DQogICAgYmFja2dyb3VuZC1jb2xvcjogIzMyMzEzMDsNCiAgICBjb2xvcjogI2ZmZmZmZjsNCiAgICB0ZXh0LWRlY29yYXRpb246IFVuZGVybGluZTsgfQ0KDQoubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgYS5zaG93LCAubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgYS5kcm9wZG93bi10b2dnbGUuc2hvdyB7DQogIGNvbG9yOiAjZmZmZmZmOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzIzMTMwOw0KICB0ZXh0LWRlY29yYXRpb246IFVuZGVybGluZTsgfQ0KICAubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgYS5zaG93OmhvdmVyLCAubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgYS5kcm9wZG93bi10b2dnbGUuc2hvdzpob3ZlciB7DQogICAgY29sb3I6ICNmZmZmZmY7DQogICAgYmFja2dyb3VuZC1jb2xvcjogIzMyMzEzMDsNCiAgICB0ZXh0LWRlY29yYXRpb246IFVuZGVybGluZTsgfQ0KICAubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgYS5zaG93OmZvY3VzLCAubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgYS5kcm9wZG93bi10b2dnbGUuc2hvdzpmb2N1cyB7DQogICAgY29sb3I6ICNmZmZmZmY7DQogICAgYmFja2dyb3VuZC1jb2xvcjogIzMyMzEzMDsNCiAgICB0ZXh0LWRlY29yYXRpb246IFVuZGVybGluZTsgfQ0KDQoubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLnNob3cuZHJvcGRvd24tbWVudSB7DQogIGJhY2tncm91bmQtY29sb3I6ICMzMjMxMzA7DQogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQ0KICAubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLnNob3cuZHJvcGRvd24tbWVudSA+IGxpID4gYSB7DQogICAgY29sb3I6ICNmZmZmZmY7DQogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9DQogICAgLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5zaG93LmRyb3Bkb3duLW1lbnUgPiBsaSA+IGE6aG92ZXIgew0KICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsNCiAgICAgIGNvbG9yOiAjMzIzMTMwOw0KICAgICAgdGV4dC1kZWNvcmF0aW9uOiBVbmRlcmxpbmU7IH0NCiAgICAubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLnNob3cuZHJvcGRvd24tbWVudSA+IGxpID4gYTpmb2N1cyB7DQogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOw0KICAgICAgY29sb3I6ICMzMjMxMzA7DQogICAgICB0ZXh0LWRlY29yYXRpb246IFVuZGVybGluZTsgfQ0KICAubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLnNob3cuZHJvcGRvd24tbWVudSA+IC5hY3RpdmUgPiBhIHsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOw0KICAgIGNvbG9yOiAjMzIzMTMwOw0KICAgIHRleHQtZGVjb3JhdGlvbjogVW5kZXJsaW5lOyB9DQogICAgLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5zaG93LmRyb3Bkb3duLW1lbnUgPiAuYWN0aXZlID4gYTpob3ZlciB7DQogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOw0KICAgICAgY29sb3I6ICMzMjMxMzA7DQogICAgICB0ZXh0LWRlY29yYXRpb246IFVuZGVybGluZTsgfQ0KICAgIC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAuc2hvdy5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZSA+IGE6Zm9jdXMgew0KICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsNCiAgICAgIGNvbG9yOiAjMzIzMTMwOw0KICAgICAgdGV4dC1kZWNvcmF0aW9uOiBVbmRlcmxpbmU7IH0NCg0KLm5hdiA+IGxpID4gYSB7DQogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQ0KICAubmF2ID4gbGkgPiBhOmhvdmVyIHsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJmMmYyOyB9DQogIC5uYXYgPiBsaSA+IGE6Zm9jdXMgew0KICAgIGJhY2tncm91bmQtY29sb3I6ICNmMmYyZjI7IH0NCg0KLm5hdiAuc2hvdy5kcm9wZG93bi1tZW51IHsNCiAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsgfQ0KICAubmF2IC5zaG93LmRyb3Bkb3duLW1lbnUgPiBsaSA+IGEgew0KICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsNCiAgICBjb2xvcjogIzAwMDAwMDsgfQ0KICAgIC5uYXYgLnNob3cuZHJvcGRvd24tbWVudSA+IGxpID4gYTpob3ZlciB7DQogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJmMmYyOw0KICAgICAgY29sb3I6ICMwMDAwMDA7IH0NCiAgICAubmF2IC5zaG93LmRyb3Bkb3duLW1lbnUgPiBsaSA+IGE6Zm9jdXMgew0KICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YyZjJmMjsNCiAgICAgIGNvbG9yOiAjMDAwMDAwOyB9DQogIC5uYXYgLnNob3cuZHJvcGRvd24tbWVudSA+IC5hY3RpdmUgPiBhIHsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJmMmYyOw0KICAgIGNvbG9yOiAjMDAwMDAwOyB9DQogICAgLm5hdiAuc2hvdy5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZSA+IGE6aG92ZXIgew0KICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YyZjJmMjsNCiAgICAgIGNvbG9yOiAjMDAwMDAwOyB9DQogICAgLm5hdiAuc2hvdy5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZSA+IGE6Zm9jdXMgew0KICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YyZjJmMjsNCiAgICAgIGNvbG9yOiAjMDAwMDAwOyB9DQoNCi5uYXYgPiAuZHJvcGRvd24gPiBhLnNob3cgew0KICB0ZXh0LWRlY29yYXRpb246IG5vbmU7DQogIGJhY2tncm91bmQtY29sb3I6IFVuZGVybGluZTsgfQ0KICAubmF2ID4gLmRyb3Bkb3duID4gYS5zaG93OmhvdmVyIHsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBVbmRlcmxpbmU7IH0NCiAgLm5hdiA+IC5kcm9wZG93biA+IGEuc2hvdzpmb2N1cyB7DQogICAgYmFja2dyb3VuZC1jb2xvcjogVW5kZXJsaW5lOyB9DQoNCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgew0KICAucm93LnNlY3Rpb25CbG9ja0xheW91dCA+IC5jb250YWluZXIsIC5yb3cuc2VjdGlvbkJsb2NrTGF5b3V0ID4gLmNvbnRhaW5lci1zbSB7DQogICAgbWF4LXdpZHRoOiA1NDBweDsgfSB9DQoNCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgew0KICAucm93LnNlY3Rpb25CbG9ja0xheW91dCA+IC5jb250YWluZXIsIC5yb3cuc2VjdGlvbkJsb2NrTGF5b3V0ID4gLmNvbnRhaW5lci1tZCwgLnJvdy5zZWN0aW9uQmxvY2tMYXlvdXQgPiAuY29udGFpbmVyLXNtIHsNCiAgICBtYXgtd2lkdGg6IDcyMHB4OyB9IH0NCg0KQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7DQogIC5yb3cuc2VjdGlvbkJsb2NrTGF5b3V0ID4gLmNvbnRhaW5lciwgLnJvdy5zZWN0aW9uQmxvY2tMYXlvdXQgPiAuY29udGFpbmVyLWxnLCAucm93LnNlY3Rpb25CbG9ja0xheW91dCA+IC5jb250YWluZXItbWQsIC5yb3cuc2VjdGlvbkJsb2NrTGF5b3V0ID4gLmNvbnRhaW5lci1zbSB7DQogICAgbWF4LXdpZHRoOiA5NjBweDsgfSB9DQoNCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsNCiAgLnJvdy5zZWN0aW9uQmxvY2tMYXlvdXQgPiAuY29udGFpbmVyLCAucm93LnNlY3Rpb25CbG9ja0xheW91dCA+IC5jb250YWluZXItbGcsIC5yb3cuc2VjdGlvbkJsb2NrTGF5b3V0ID4gLmNvbnRhaW5lci1tZCwgLnJvdy5zZWN0aW9uQmxvY2tMYXlvdXQgPiAuY29udGFpbmVyLXNtLCAucm93LnNlY3Rpb25CbG9ja0xheW91dCA+IC5jb250YWluZXIteGwgew0KICAgIG1heC13aWR0aDogMTE0MHB4OyB9IH0NCg0KQG1lZGlhIChtaW4td2lkdGg6IDE0MDBweCkgew0KICAucm93LnNlY3Rpb25CbG9ja0xheW91dCA+IC5jb250YWluZXIsIC5yb3cuc2VjdGlvbkJsb2NrTGF5b3V0ID4gLmNvbnRhaW5lci1sZywgLnJvdy5zZWN0aW9uQmxvY2tMYXlvdXQgPiAuY29udGFpbmVyLW1kLCAucm93LnNlY3Rpb25CbG9ja0xheW91dCA+IC5jb250YWluZXItc20sIC5yb3cuc2VjdGlvbkJsb2NrTGF5b3V0ID4gLmNvbnRhaW5lci14bCwgLnJvdy5zZWN0aW9uQmxvY2tMYXlvdXQgPiAuY29udGFpbmVyLXh4bCB7DQogICAgbWF4LXdpZHRoOiAxMzIwcHg7IH0gfQ0KDQouc2VjdGlvblByaW1hcnlDb2xvciB7DQogIGJhY2tncm91bmQtY29sb3I6ICM2MDVFNUM7DQogIGNvbG9yOiAjZmZmZmZmOyB9DQogIC5zZWN0aW9uUHJpbWFyeUNvbG9yIGgxLCAuc2VjdGlvblByaW1hcnlDb2xvciBoMiwgLnNlY3Rpb25QcmltYXJ5Q29sb3IgaDMsIC5zZWN0aW9uUHJpbWFyeUNvbG9yIGg0LCAuc2VjdGlvblByaW1hcnlDb2xvciBoNSwgLnNlY3Rpb25QcmltYXJ5Q29sb3IgaDYsIC5zZWN0aW9uUHJpbWFyeUNvbG9yIHAsIC5zZWN0aW9uUHJpbWFyeUNvbG9yIGEgew0KICAgIGNvbG9yOiAjZmZmZmZmOyB9DQogIC5zZWN0aW9uUHJpbWFyeUNvbG9yIC5jcm1FbnRpdHlGb3JtVmlldyBoMSwgLnNlY3Rpb25QcmltYXJ5Q29sb3IgLmNybUVudGl0eUZvcm1WaWV3IGgyLCAuc2VjdGlvblByaW1hcnlDb2xvciAuY3JtRW50aXR5Rm9ybVZpZXcgaDMsIC5zZWN0aW9uUHJpbWFyeUNvbG9yIC5jcm1FbnRpdHlGb3JtVmlldyBoNCwgLnNlY3Rpb25QcmltYXJ5Q29sb3IgLmNybUVudGl0eUZvcm1WaWV3IGg1LCAuc2VjdGlvblByaW1hcnlDb2xvciAuY3JtRW50aXR5Rm9ybVZpZXcgaDYsIC5zZWN0aW9uUHJpbWFyeUNvbG9yIC5jcm1FbnRpdHlGb3JtVmlldyBwLCAuc2VjdGlvblByaW1hcnlDb2xvciAuY3JtRW50aXR5Rm9ybVZpZXcgYSB7DQogICAgY29sb3I6ICMwMDAwMDA7IH0NCiAgLnNlY3Rpb25QcmltYXJ5Q29sb3IgLmVudGl0eWxpc3QgaDEsIC5zZWN0aW9uUHJpbWFyeUNvbG9yIC5lbnRpdHlsaXN0IGgyLCAuc2VjdGlvblByaW1hcnlDb2xvciAuZW50aXR5bGlzdCBoMywgLnNlY3Rpb25QcmltYXJ5Q29sb3IgLmVudGl0eWxpc3QgaDQsIC5zZWN0aW9uUHJpbWFyeUNvbG9yIC5lbnRpdHlsaXN0IGg1LCAuc2VjdGlvblByaW1hcnlDb2xvciAuZW50aXR5bGlzdCBoNiwgLnNlY3Rpb25QcmltYXJ5Q29sb3IgLmVudGl0eWxpc3QgcCwgLnNlY3Rpb25QcmltYXJ5Q29sb3IgLmVudGl0eWxpc3QgYSB7DQogICAgY29sb3I6ICMwMDAwMDA7IH0NCg0KYTpub3QoLmJ0bikgew0KICB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH0NCiAgYTpub3QoLmJ0bik6aG92ZXIgew0KICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9DQoNCmEsDQouYSB7DQogIGNvbG9yOiAjMzIzMTMwOw0KICBmb250LWZhbWlseTogQXJpYWw7DQogIGZvbnQtd2VpZ2h0OiA0MDA7DQogIGZvbnQtc2l6ZTogMTRweDsgfQ0KICBhOmhvdmVyLCBhOmZvY3VzLA0KLmE6aG92ZXIsDQouYTpmb2N1cyB7DQogICAgY29sb3I6ICMxOTE4MTc7IH0NCg0KYVtkaXNhYmxlZF0gew0KICBjb2xvcjogI0ExOUY5RDsNCiAgcG9pbnRlci1ldmVudHM6IG5vbmU7IH0NCg0KYnV0dG9uW2Rpc2FibGVkXSB7DQogIGJhY2tncm91bmQtY29sb3I6ICNGM0YyRjE7DQogIGNvbG9yOiAjQTE5RjlEOw0KICBwb2ludGVyLWV2ZW50czogbm9uZTsNCiAgYm9yZGVyOiAycHg7IH0NCg0KLmJ0bi1zZWNvbmRhcnkuZHJvcGRvd24tdG9nZ2xlLnNob3cgew0KICBjb2xvcjogI0ZGRkZGRjsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZTZlNjsNCiAgYm9yZGVyLWNvbG9yOiAjMzIzMTMwOyB9DQoNCi5idG4tZGVmYXVsdC5kcm9wZG93bi10b2dnbGUuc2hvdyB7DQogIGNvbG9yOiAjRkZGRkZGOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlNmU2Ow0KICBib3JkZXItY29sb3I6ICMzMjMxMzA7IH0NCg0KLmJ0bi1wcmltYXJ5LmRyb3Bkb3duLXRvZ2dsZS5zaG93IHsNCiAgY29sb3I6ICNmZmZmZmY7DQogIGJhY2tncm91bmQtY29sb3I6ICMzMjMxMzA7DQogIGJvcmRlci1jb2xvcjogIzMyMzEzMDsgfQ0KICAuYnRuLXByaW1hcnkuZHJvcGRvd24tdG9nZ2xlLnNob3c6aG92ZXIsIC5idG4tcHJpbWFyeS5kcm9wZG93bi10b2dnbGUuc2hvdzpmb2N1cywgLmJ0bi1wcmltYXJ5LmRyb3Bkb3duLXRvZ2dsZS5zaG93LmZvY3VzIHsNCiAgICBjb2xvcjogI0ZGRkZGRjsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTkxODE3Ow0KICAgIGJvcmRlci1jb2xvcjogIzM0MzIyZjsgfQ0KDQouY3JtRW50aXR5Rm9ybVZpZXcsIC5lbnRpdHlsaXN0LCAubW9kYWwtY29udGVudCwgLnBvcG92ZXItY29udGVudCB7DQogIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7DQogIGNvbG9yOiAjMDAwMDAwOw0KICBib3JkZXI6IDFweCBzb2xpZCAjZjJmMmYyOyB9DQoNCi5jYXJkLWJvZHksIC5saXN0LWdyb3VwLWl0ZW0gew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOw0KICBjb2xvcjogIzAwMDAwMDsgfQ0KDQouY2FyZC1oZWFkZXIgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJmMmYyOw0KICBjb2xvcjogIzAwMDAwMDsgfQ0KDQouZmFjZXQtbGlzdC1ncm91cC1pdGVtLXRpdGxlIHsNCiAgY29sb3I6ICMwMDAwMDA7IH0NCg0KLmZvcm0tY29udHJvbCB7DQogIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYgIWltcG9ydGFudDsNCiAgY29sb3I6ICMwMDAwMDA7IH0NCg0KaW5wdXQgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOyB9DQoNCi8qIC5ib290c3RyYXAtZGF0ZXRpbWVwaWNrZXItd2lkZ2V0IHsNCiAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsgfQ0KICAuYm9vdHN0cmFwLWRhdGV0aW1lcGlja2VyLXdpZGdldCB0YWJsZSB0aGVhZCB0cjpmaXJzdC1jaGlsZCB0aDpob3ZlciwgLmJvb3RzdHJhcC1kYXRldGltZXBpY2tlci13aWRnZXQgdGFibGUgdGQuZGF5OmhvdmVyLCAuYm9vdHN0cmFwLWRhdGV0aW1lcGlja2VyLXdpZGdldCB0YWJsZSB0ZCBzcGFuOmhvdmVyIHsNCiAgICBjb2xvcjogYmxhY2s7IH0NCiAgLmJvb3RzdHJhcC1kYXRldGltZXBpY2tlci13aWRnZXQgdGFibGUgdGQuYWN0aXZlOmhvdmVyLCAuYm9vdHN0cmFwLWRhdGV0aW1lcGlja2VyLXdpZGdldCB0YWJsZSB0ZCBzcGFuLmFjdGl2ZTpob3ZlciB7DQogICAgY29sb3I6IHdoaXRlOyB9ICovDQoNCi50YWJsZS1zdHJpcGVkID4gdGJvZHkgPiB0cjpudGgtb2YtdHlwZShvZGQpIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogdW5zZXQ7IH0NCg0KLmxvZ2luLWhlYWRpbmctc2VjdGlvbiB7DQogIGNvbG9yOiB1bnNldDsgfQ0KDQouc3RhdGljLXRvcC5uYXZiYXItZGFyayAubmF2YmFyLWJyYW5kIGEgew0KICBjb2xvcjogIzAwMDAwMDsgfQ0KDQouc2VhcmNoLXJlc3VsdHMgLmhpZ2hsaWdodCB7DQogIGNvbG9yOiAjMDAwMDAwOyB9DQoNCi50YWJsZSA+IHRoZWFkID4gdHIuaW5mbyA+IHRkIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2YyZjJmMjsgfQ0KDQoudGFibGUgPiB0aGVhZCA+IHRyLmluZm8gPiB0aCB7DQogIGJhY2tncm91bmQtY29sb3I6ICNmMmYyZjI7IH0NCg0KLnRhYmxlID4gdGhlYWQgPiB0ciA+IHRkLmluZm8gew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJmMmYyOyB9DQoNCi50YWJsZSA+IHRoZWFkID4gdHIgPiB0aC5pbmZvIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2YyZjJmMjsgfQ0KDQoudGFibGUgPiB0Ym9keSA+IHRyLmluZm8gPiB0ZCB7DQogIGJhY2tncm91bmQtY29sb3I6ICNmMmYyZjI7IH0NCg0KLnRhYmxlID4gdGJvZHkgPiB0ci5pbmZvID4gdGggew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJmMmYyOyB9DQoNCi50YWJsZSA+IHRib2R5ID4gdHIgPiB0ZC5pbmZvIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2YyZjJmMjsgfQ0KDQoudGFibGUgPiB0Ym9keSA+IHRyID4gdGguaW5mbyB7DQogIGJhY2tncm91bmQtY29sb3I6ICNmMmYyZjI7IH0NCg0KLnRhYmxlID4gdGZvb3QgPiB0ci5pbmZvID4gdGQgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJmMmYyOyB9DQoNCi50YWJsZSA+IHRmb290ID4gdHIuaW5mbyA+IHRoIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2YyZjJmMjsgfQ0KDQoudGFibGUgPiB0Zm9vdCA+IHRyID4gdGQuaW5mbyB7DQogIGJhY2tncm91bmQtY29sb3I6ICNmMmYyZjI7IH0NCg0KLnRhYmxlID4gdGZvb3QgPiB0ciA+IHRoLmluZm8gew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJmMmYyOyB9DQoNCi50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHI6aG92ZXIgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJmMmYyOyB9DQoNCi50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIgPiB0ZC5pbmZvOmhvdmVyIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2YyZjJmMjsgfQ0KDQoudGFibGUtaG92ZXIgPiB0Ym9keSA+IHRyID4gdGguaW5mbzpob3ZlciB7DQogIGJhY2tncm91bmQtY29sb3I6ICNmMmYyZjI7IH0NCg0KLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0ci5pbmZvOmhvdmVyID4gdGQgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJmMmYyOyB9DQoNCi50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIuaW5mbzpob3ZlciA+IHRoIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2YyZjJmMjsgfQ0KDQoudGFibGUtaG92ZXIgPiB0Ym9keSA+IHRyOmhvdmVyID4gLmluZm8gew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJmMmYyOyB9DQoNCi5mb3JtLWNsb3NlIHsNCiAgY29sb3I6ICMwMDAwMDA7IH0NCiAgLmZvcm0tY2xvc2U6aG92ZXIgew0KICAgIGNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7IH0NCiAgLmZvcm0tY2xvc2U6Zm9jdXMgew0KICAgIGNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7IH0NCg0KOjpwbGFjZWhvbGRlciB7DQogIGNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7IH0NCg0KLmhlbHAtYmxvY2sgew0KICBjb2xvcjogIzAwMDAwMDsgfQ0KDQoubXNvcy1zZWxlY3Rpb24tY29udGFpbmVyLCAubXNvcy1jb250YWluZXIsIC5tc29zLWNhcmV0LWNvbnRhaW5lciwgLm1zb3MtYWN0aW9uLWJ1dHRvbnM6aG92ZXIgew0KICBjb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50Ow0KICBiYWNrZ3JvdW5kOiAjRkZGRkZGICFpbXBvcnRhbnQ7IH0NCg0KLm1zb3Mtb3B0aW9uLXNlbGVjdGVkLCAubXNvcy1zZWxlY3RlZC1kaXNwbGF5LWl0ZW0sIC5tc29zLXF1aWNrLWRlbGV0ZSwgLm1zb3MtcXVpY2stZGVsZXRlOmhvdmVyIHsNCiAgYmFja2dyb3VuZDogI2YyZjJmMiAhaW1wb3J0YW50OyB9DQoNCi5tc29zLWxhYmVsLCAubXNvcy1xdWljay1kZWxldGUsIC5tc29zLXF1aWNrLWRlbGV0ZTpob3ZlciB7DQogIGNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7IH0NCg0KLm1zb3Mtb3B0aW9uLWZvY3VzZWQ6YWZ0ZXIsIC5tc29zLXNlbGVjdGVkaXRlbXM6Zm9jdXMgLm1zb3Mtc2VsZWN0ZWQtZGlzcGxheS1pdGVtLm1zb3Mtc2VsZWN0ZWRpdGVtLWFjdGl2ZTphZnRlciwgLm1zb3Mtc2VsZWN0ZWRpdGVtcy10b2dnbGU6Zm9jdXMgew0KICBib3JkZXItY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsgfQ0KDQoubXNvcy1vcHRpb246aG92ZXIsIC5tc29zLW9wdGlvbi1zZWxlY3RlZDpob3ZlciB7DQogIGJhY2tncm91bmQ6ICNmOWY5ZjkgIWltcG9ydGFudDsgfQ0KDQoubXNvcy1zZWxlY3RlZGl0ZW1zLXRvZ2dsZSB7DQogIGNvbG9yOiAjNjA1RTVDICFpbXBvcnRhbnQ7IH0NCg0KaDEsDQouaDEsDQouc2VjdGlvbi1sYW5kaW5nLWhlYWRpbmcsDQouc2VjdGlvbi1sYW5kaW5nIC5yb3cgPiBkaXYgLnNlY3Rpb24tbGFuZGluZy1oZWFkaW5nLA0KLnNlY3Rpb24taW5saW5lLXNlYXJjaCAucm93ID4gZGl2IGgxLA0KLnNlY3Rpb24tbGFuZGluZyBoMSwNCi5zZWN0aW9uLXNlYXJjaCAuaGVhZGVyLXNlYXJjaCBoMSwNCi5wYWdlX3NlY3Rpb24gaDEsDQouY29sb3ItaW52ZXJzZSBoMSwNCmgxIHAgew0KICBmb250LWZhbWlseTogQXJpYWw7DQogIGZvbnQtd2VpZ2h0OiA0MDA7DQogIGZvbnQtc2l6ZTogNDBweDsNCiAgY29sb3I6ICMwMDAwMDA7DQogIG1hcmdpbi1sZWZ0OiAwcHg7DQogIG1hcmdpbi1yaWdodDogMHB4OyB9DQoNCmgyLA0KLmgyLA0KLnNlY3Rpb24tbGFuZGluZyAucm93ID4gZGl2IC5zZWN0aW9uLWxhbmRpbmctc3ViLWhlYWRpbmcsDQoucGFnZV9zZWN0aW9uIGgyLA0KLmNvbG9yLWludmVyc2UgaDIsDQpoMiBwIHsNCiAgZm9udC1mYW1pbHk6IEFyaWFsOw0KICBmb250LXdlaWdodDogNDAwOw0KICBmb250LXNpemU6IDM2cHg7DQogIGNvbG9yOiAjMDAwMDAwOyB9DQoNCmgzLA0KLmgzLA0KLnBhZ2Vfc2VjdGlvbiBoMywNCi5jb2xvci1pbnZlcnNlIGgzLA0KLnNpZGViYXItaG9tZSBoMyB7DQogIGZvbnQtZmFtaWx5OiBBcmlhbDsNCiAgZm9udC13ZWlnaHQ6IDQwMDsNCiAgZm9udC1zaXplOiAyNHB4Ow0KICBjb2xvcjogIzAwMDAwMDsgfQ0KDQpoNCwNCi5oNCwNCi5wb2xsIC5wb2xsLWhlYWRlciBoNCwNCi5wb2xsIC5wb2xsLXRhZ3MgaDQgew0KICBmb250LWZhbWlseTogQXJpYWw7DQogIGZvbnQtd2VpZ2h0OiA3MDA7DQogIGZvbnQtc2l6ZTogMjRweDsNCiAgY29sb3I6ICMwMDAwMDA7IH0NCg0KaDUsDQouaDUgew0KICBmb250LWZhbWlseTogQXJpYWw7DQogIGZvbnQtd2VpZ2h0OiA3MDA7DQogIGZvbnQtc2l6ZTogMTRweDsNCiAgY29sb3I6ICMwMDAwMDA7IH0NCg0KcCwNCi5wLA0KLnBhZ2Vfc2VjdGlvbiBwLA0KLnNlY3Rpb24tZGlhZ29uYWwtbGVmdCBwLA0KLnNlY3Rpb24tZGlhZ29uYWwtcmlnaHQgcCwNCnAuZm9ybS10ZXh0IHNwYW4gew0KICBmb250LWZhbWlseTogQXJpYWw7DQogIGZvbnQtd2VpZ2h0OiA0MDA7DQogIGZvbnQtc2l6ZTogMjBweDsNCiAgY29sb3I6ICMwMDAwMDA7IH0NCg0KLnAyIHsNCiAgZm9udC1mYW1pbHk6IEFyaWFsOw0KICBmb250LXdlaWdodDogNDAwOw0KICBmb250LXNpemU6IDE2cHg7DQogIGNvbG9yOiAjMDAwMDAwOyB9DQoNCi5idXR0b24xIHsNCiAgY29sb3I6ICNGRkZGRkY7DQogIGJvcmRlci1yYWRpdXM6IDJweDsNCiAgZm9udC1mYW1pbHk6IEFyaWFsOw0KICBmb250LXdlaWdodDogNjAwOw0KICBmb250LXNpemU6IDE0cHg7DQogIGJvcmRlci1jb2xvcjogIzMyMzEzMDsNCiAgcGFkZGluZzogNnB4IDIwcHg7DQogIHdpZHRoOiBmaXQtY29udGVudDsNCiAgYm9yZGVyLXN0eWxlOiBzb2xpZDsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzMyMzEzMDsgfQ0KICAuYnV0dG9uMTpub3QoLmdqcy1zZWxlY3RlZCk6aG92ZXIgew0KICAgIGNvbG9yOiAjRkZGRkZGOw0KICAgIGJhY2tncm91bmQtY29sb3I6ICMxOTE4MTc7DQogICAgYm9yZGVyLWNvbG9yOiAjMTkxODE3OyB9DQogIC5idXR0b24xOm5vdCguZ2pzLXNlbGVjdGVkKTphY3RpdmUsIC5idXR0b24xLmFjdGl2ZTpub3QoLmdqcy1zZWxlY3RlZCkgew0KICAgIGNvbG9yOiAjRkZGRkZGOw0KICAgIGJhY2tncm91bmQtY29sb3I6ICMxOTE4MTc7IH0NCiAgLmJ1dHRvbjE6Zm9jdXMsIC5idXR0b24xLmZvY3VzIHsNCiAgICBjb2xvcjogI0ZGRkZGRjsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTkxODE3OyB9DQoNCi5idXR0b24yLCAuYnRuLXNlY29uZGFyeSwgLmJ0bi1kZWZhdWx0IHsNCiAgY29sb3I6ICMzMjMxMzA7DQogIGJvcmRlci1yYWRpdXM6IDJweDsNCiAgZm9udC1mYW1pbHk6IEFyaWFsOw0KICBmb250LXdlaWdodDogNjAwOw0KICBmb250LXNpemU6IDE0cHg7DQogIGJvcmRlci1jb2xvcjogIzMyMzEzMDsNCiAgcGFkZGluZzogNnB4IDIwcHg7DQogIHdpZHRoOiBmaXQtY29udGVudDsNCiAgYm9yZGVyLXN0eWxlOiBzb2xpZDsNCiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH0NCiAgLmJ1dHRvbjI6bm90KC5nanMtc2VsZWN0ZWQpOmhvdmVyLCAuYnRuLXNlY29uZGFyeTpub3QoLmdqcy1zZWxlY3RlZCk6aG92ZXIsIC5idG4tZGVmYXVsdDpub3QoLmdqcy1zZWxlY3RlZCk6aG92ZXIgew0KICAgIGNvbG9yOiAjRkZGRkZGOw0KICAgIGJhY2tncm91bmQtY29sb3I6ICMzMjMxMzA7DQogICAgYm9yZGVyLWNvbG9yOiAjMzIzMTMwOyB9DQogIC5idXR0b24yOm5vdCguZ2pzLXNlbGVjdGVkKTphY3RpdmUsIC5idXR0b24yLmFjdGl2ZTpub3QoLmdqcy1zZWxlY3RlZCksIC5idG4tc2Vjb25kYXJ5Om5vdCguZ2pzLXNlbGVjdGVkKTphY3RpdmUsIC5idG4tc2Vjb25kYXJ5LmFjdGl2ZTpub3QoLmdqcy1zZWxlY3RlZCksIC5idG4tZGVmYXVsdDpub3QoLmdqcy1zZWxlY3RlZCk6YWN0aXZlLCAuYnRuLWRlZmF1bHQuYWN0aXZlOm5vdCguZ2pzLXNlbGVjdGVkKSB7DQogICAgY29sb3I6ICNGRkZGRkY7DQogICAgYmFja2dyb3VuZC1jb2xvcjogIzMyMzEzMDsgfQ0KICAuYnV0dG9uMjpmb2N1cywgLmJ1dHRvbjIuZm9jdXMsIC5idG4tc2Vjb25kYXJ5OmZvY3VzLCAuYnRuLXNlY29uZGFyeS5mb2N1cywgLmJ0bi1kZWZhdWx0OmZvY3VzLCAuYnRuLWRlZmF1bHQuZm9jdXMgew0KICAgIGNvbG9yOiAjRkZGRkZGOw0KICAgIGJhY2tncm91bmQtY29sb3I6ICMzMjMxMzA7IH0NCg0KLnN0YXRpYy10b3AubmF2YmFyLWRhcmsgLm5hdmJhci1icmFuZCBhIHAsDQouc3RhdGljLXRvcC5uYXZiYXItZGFyayAubmF2YmFyLWJyYW5kIGEgaDEsDQouc3RhdGljLXRvcC5uYXZiYXItZGFyayAubmF2YmFyLWJyYW5kIGEgaDIsDQouc3RhdGljLXRvcC5uYXZiYXItZGFyayAubmF2YmFyLWJyYW5kIGEgaDMsDQouc3RhdGljLXRvcC5uYXZiYXItZGFyayAubmF2YmFyLWJyYW5kIGEgaDQsDQouc3RhdGljLXRvcC5uYXZiYXItZGFyayAubmF2YmFyLWJyYW5kIGEgaDUsDQouc3RhdGljLXRvcC5uYXZiYXItZGFyayAubmF2YmFyLWJyYW5kIGEgc3BhbiB7DQogIGRpc3BsYXk6IGlubGluZTsNCiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsNCiAgY29sb3I6ICMwMDAwMDA7IH0NCg0KaDEuc2l0ZVRpdGxlLA0KLnN0YXRpYy10b3AubmF2YmFyLWRhcmsgLm5hdmJhci1icmFuZCBhIGgxLnNpdGVUaXRsZSwNCi5zdGF0aWMtdG9wLm5hdmJhci1kYXJrIC5uYXZiYXItYnJhbmQgYSBoMS5zaXRlVGl0bGUgPiBzcGFuIHsNCiAgZGlzcGxheTogaW5saW5lOw0KICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOw0KICBjb2xvcjogIzAwMDAwMDsNCiAgZm9udC1mYW1pbHk6IEFyaWFsOw0KICBmb250LXdlaWdodDogNDAwOw0KICBmb250LXNpemU6IDMwcHg7IH0NCg0KcC5zbWFsbFRleHQgew0KICBkaXNwbGF5OiBpbmxpbmU7DQogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7DQogIGNvbG9yOiAjRkZGRkZGOw0KICBmb250LWZhbWlseTogQXJpYWw7DQogIGZvbnQtd2VpZ2h0OiA0MDA7DQogIGZvbnQtc2l6ZTogMTZweDsgfQ0KDQphLmFuY2hvci1pbmhlcml0LXN0eWxlcyB7DQogIGZvbnQtc2l6ZTogaW5oZXJpdDsNCiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7DQogIGNvbG9yOiBpbmhlcml0OyB9DQoNCmEuYW5jaG9yLWhvdmVyLWNvbG9yLWNvbG9yMTpob3ZlciB7DQogIGNvbG9yOiB2YXIoLS1wb3J0YWxUaGVtZUNvbG9yMSkgIWltcG9ydGFudDsgfQ0KDQphLmFuY2hvci1ob3Zlci1jb2xvci1jb2xvcjI6aG92ZXIgew0KICBjb2xvcjogdmFyKC0tcG9ydGFsVGhlbWVDb2xvcjIpICFpbXBvcnRhbnQ7IH0NCg0KYS5hbmNob3ItaG92ZXItY29sb3ItY29sb3IzOmhvdmVyIHsNCiAgY29sb3I6IHZhcigtLXBvcnRhbFRoZW1lQ29sb3IzKSAhaW1wb3J0YW50OyB9DQoNCmEuYW5jaG9yLWhvdmVyLWNvbG9yLWNvbG9yNDpob3ZlciB7DQogIGNvbG9yOiB2YXIoLS1wb3J0YWxUaGVtZUNvbG9yNCkgIWltcG9ydGFudDsgfQ0KDQphLmFuY2hvci1ob3Zlci1jb2xvci1jb2xvcjU6aG92ZXIgew0KICBjb2xvcjogdmFyKC0tcG9ydGFsVGhlbWVDb2xvcjUpICFpbXBvcnRhbnQ7IH0NCg0KYS5hbmNob3ItaG92ZXItY29sb3ItY29sb3I2OmhvdmVyIHsNCiAgY29sb3I6IHZhcigtLXBvcnRhbFRoZW1lQ29sb3I2KSAhaW1wb3J0YW50OyB9DQoNCmEuYW5jaG9yLWhvdmVyLWNvbG9yLWNvbG9yNzpob3ZlciB7DQogIGNvbG9yOiB2YXIoLS1wb3J0YWxUaGVtZUNvbG9yNykgIWltcG9ydGFudDsgfQ0KDQphLmFuY2hvci1ob3Zlci1jb2xvci1jb2xvcjg6aG92ZXIgew0KICBjb2xvcjogdmFyKC0tcG9ydGFsVGhlbWVDb2xvcjgpICFpbXBvcnRhbnQ7IH0NCg0KYS5hbmNob3ItaG92ZXItY29sb3ItY29sb3I5OmhvdmVyIHsNCiAgY29sb3I6IHZhcigtLXBvcnRhbFRoZW1lQ29sb3I5KSAhaW1wb3J0YW50OyB9DQoNCmEuYW5jaG9yLWhvdmVyLWNvbG9yLWNvbG9yMTA6aG92ZXIgew0KICBjb2xvcjogdmFyKC0tcG9ydGFsVGhlbWVDb2xvcjEwKSAhaW1wb3J0YW50OyB9DQoNCmEuYW5jaG9yLWhvdmVyLWNvbG9yLWNvbG9yMTE6aG92ZXIgew0KICBjb2xvcjogdmFyKC0tcG9ydGFsVGhlbWVDb2xvcjExKSAhaW1wb3J0YW50OyB9DQoNCmEuYW5jaG9yLWhvdmVyLWNvbG9yLWNvbG9yMTI6aG92ZXIgew0KICBjb2xvcjogdmFyKC0tcG9ydGFsVGhlbWVDb2xvcjEyKSAhaW1wb3J0YW50OyB9DQoNCmEuYW5jaG9yLXRleHQtZGVjb3JhdGlvbi1ub25lIHsNCiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9DQoNCmEuYW5jaG9yLXRleHQtZGVjb3JhdGlvbi11bmRlcmxpbmUgew0KICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgfQ0KDQphLmFuY2hvci1ob3Zlci10ZXh0LWRlY29yYXRpb24tbm9uZTpob3ZlciB7DQogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQ0KDQphLmFuY2hvci1ob3Zlci10ZXh0LWRlY29yYXRpb24tdW5kZXJsaW5lOmhvdmVyIHsNCiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH0NCg0KLypCb290c3RyYXAgVjUgQ2hhbmdlcyAqLw0KLyogLmRyb3Bkb3duLW1lbnUgPiBsaSA+IGE6aG92ZXIsIC5kcm9wZG93bi1tZW51ID4gbGkgPiBhOmZvY3VzIHsNCiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOw0KICBkaXNwbGF5OiBibG9jazsNCiAgd2lkdGg6IGF1dG87DQogIGJhY2tncm91bmQtY29sb3I6ICMzMjMxMzA7DQogIGNvbG9yOiAjZmZmZmZmOyB9DQoNCi5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZSA+IGEsIC5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZSA+IGE6aG92ZXIsIC5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZSA+IGE6Zm9jdXMgew0KICB0ZXh0LWRlY29yYXRpb246IG5vbmU7DQogIG91dGxpbmU6IDA7DQogIHdpZHRoOiBhdXRvOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzIzMTMwOw0KICBjb2xvcjogI2ZmZmZmZjsgfQ0KDQouZHJvcGRvd24tbWVudSA+IGxpID4gYSB7DQogIGRpc3BsYXk6IGJsb2NrOw0KICBwYWRkaW5nOiAzcHggMjBweDsNCiAgY2xlYXI6IGJvdGg7DQogIGZvbnQtd2VpZ2h0OiBub3JtYWw7DQogIGxpbmUtaGVpZ2h0OiAxLjQyODU3Ow0KICBjb2xvcjogIzAwMDAwMDsNCiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsNCiAgd2lkdGg6IGF1dG87IH0NCg0KaDEsIC5oMSwgaDIsIC5oMiwgaDMsIC5oMyB7DQogIG1hcmdpbi10b3A6IDIxcHg7DQogIG1hcmdpbi1ib3R0b206IDEwLjVweDsgfQ0KDQpoNCwgLmg0LCBoNSwgLmg1LCBoNiwgLmg2IHsNCiAgbWFyZ2luLXRvcDogMTAuNXB4Ow0KICBtYXJnaW4tYm90dG9tOiAxMC41cHg7IH0NCg0KYS5uYXYtbGlua1tyb2xlPSJ0YWIiXTpub3QoLmFjdGl2ZSkgew0KICBjb2xvcjogdmFyKC0tcG9ydGFsVGhlbWVDb2xvcjgpOw0KICBmb250LWZhbWlseTogQXJpYWw7DQogIGZvbnQtd2VpZ2h0OiA0MDA7DQogIGZvbnQtc2l6ZTogMTRweDsgfQ0KDQphLmFjdGl2ZS5uYXYtbGlua1tyb2xlPSJ0YWIiXSB7DQogIGZvbnQtc2l6ZTogMTRweDsNCiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9DQoNCi5jcm1FbnRpdHlGb3JtVmlldyBsYWJlbCB7DQogIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7DQogIGNvbG9yOiAjMDAwMDAwOyB9ICovDQoNCi8qQm9vdHN0cmFwIFY1IENoYW5nZXMgKi8NCi8qIC5mb3JtLXNlbGVjdCwgLmNybWVudGl0eWZvcm12aWV3IHNlbGVjdCB7DQogIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7DQogIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IC43NXJlbSBjZW50ZXI7DQogIGJhY2tncm91bmQtc2l6ZTogMTZweCAxMnB4Ow0KICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM2NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMTYgMTYnJTNlJTNjcGF0aCBmaWxsPSdub25lJyBzdHJva2U9JyUyMzAwMDAwMCcgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbGluZWpvaW49J3JvdW5kJyBzdHJva2Utd2lkdGg9JzInIGQ9J20yIDUgNiA2IDYtNicvJTNlJTNjL3N2ZyUzZSIpOw0KfSAqLw0KDQovKiB0aWxsIGhlcmUgKi8=" >
        
        <script defer src="/_resources/getresourcemanager?lang=en-US"></script>


        

        <!--[if lt IE 9]>
            <script defer src="//html5shim.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->

        <!--[if lt IE 10]>
            <script defer src="/js/formdata.js"></script>
        <![endif]-->
      </head>
      <body>
        <div data-editorblocktype="Header" data-record-id="42ceb7fa-9c6e-43ec-925a-96d3b02964c1" > <head>
    <link rel="icon" href="favicon.ico" type="image/x-icon" />
    <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
    <!-- To use CDN, include JS and CSS in the <head> tag. -->
    <!-- 1. Add JS link below. -->
    <script type="module"
        src="https://appkitcdn.pwc.com/appkit4/cdn/web-components/1.0.0/dist/appkit4/appkit4.esm.js"></script>

    <!-- 2. Choose one link below to include CSS. -->
    <!-- Latest compiled and minified CSS with default theme -->
    <!-- <link rel="stylesheet" href="https://appkitcdn.pwc.com/appkit4/cdn/styles/4.6.3/appkit.min.css"> -->
    <!-- Latest compiled and minified CSS with default dark theme -->
    <!-- <link rel="stylesheet" href="https://appkitcdn.pwc.com/appkit4/cdn/styles/4.6.3/appkit.dark.min.css"> -->
    <!-- Latest compiled and minified CSS with blue theme, you can replace 'blue' with other themes -->
    <link rel="stylesheet" href="https://appkitcdn.pwc.com/appkit4/cdn/styles/4.6.3/themes/appkit.min.css">
    <script src="https://cdn.jsdelivr.net/npm/ag-grid-community@31.1.1/dist/ag-grid-community.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
</head>
<style>
    .ap-header-title {
        font-size: var(--spacing-5);
        line-height: var(--spacing-6);
        white-space: nowrap;
        color: var(--color-text-heading);
    }

    .ap-header-subtitle {
        display: flex;
        align-items: center;
        color: var(--color-text-heading);
    }

    .ap-header-subtitle .ap-header-subtitle-divider {
        width: 1px;
        height: var(--spacing-7);
        margin: 0 var(--spacing-4);
        opacity: 0.32;
        background-color: var(--color-text-heading);
    }

    .ap-header-options-item {
        position: relative;
        display: flex;
        column-gap: var(--spacing-2);
        align-items: center;
        height: 40px;
        color: var(--color-text-heading);
        border-radius: var(--spacing-2);
        cursor: pointer;
    }

    .with-hamburger {
        display: none !important;
    }

    @media (max-width: 576px) {
        .responsive-hamburger {
            display: none !important;
        }
    }

    .ap-header-options-item:hover {
        background-color: rgba(232, 232, 232, 0.48);
        backdrop-filter: blur(rem(20px));
        -webkit-backdrop-filter: blur(rem(20px));
    }

    .ap-header-options-item.has-icon.has-label {
        padding: var(--spacing-3) var(--spacing-4) var(--spacing-3) var(--spacing-3);
    }

    .ap-header-options-item.has-icon:not(.has-label) {
        padding: var(--spacing-3);
    }

    .ap-header-options-item.has-label:not(.has-icon) {
        padding: var(--spacing-3) var(--spacing-4);
    }

    .ap-header-options-item.with-compact {
        padding-right: var(--spacing-3) !important;
    }

    .ap-header-options-item.reverse {
        flex-direction: row-reverse;
        padding: var(--spacing-3) var(--spacing-3) var(--spacing-3) var(--spacing-4);
    }

    .ap-header-options-item .Appkit4-icon {
        width: var(--spacing-7);
        height: var(--spacing-7);
    }

    .ap-header-options-item .ap-header-options-label {
        line-height: var(--spacing-7);
    }

    .ap-header-options-item .ap-header-options-label.with-compact {
        display: none;
    }

    .ap-header {
        background-color: white !important
    }

    html,
    body {
        max-width: 100%;
        height: 100%;
    }

    body>footer {
        top: 100vh;
        /* pushes the footer outside the visible area */
        position: sticky;
        /* pulls it back up and sticks it to the bottom edge */
    }
</style>




<div data-editorblocktype="WebTemplate" data-liquidexpressionvalue="eyUgaW5jbHVkZSAnd2ViYXBpLWZ1bmN0aW9ucycgJX0=" data-record-id="881e0a6c-ff0d-ef11-9f89-6045bd04af26" data-ppid="881e0a6c-ff0d-ef11-9f89-6045bd04af26" ><script>
    // CRUD functions
    var UserId = 'Id';
    
    function createRecord(logicalName, recordData)
    {
        recordData = GetCreateAuditMetadata(recordData);
        return createRecordAPI(logicalName, recordData);
    }

    function createRecordMap(logicalName, recordData)
    {
        return createRecordAPI(logicalName, recordData);
    }

    function createRecordAPI(logicalName, recordData)
    {
        return appAjax({
            type: "POST",
            url: `/_api/${logicalName}`,
            contentType: "application/json",
            data: JSON.stringify(recordData)
        });
    }
    
    async function deleteRequestRecordMaps(logicalName, requestId, idColumn)
    {
        var query = `$select=nks_name,${idColumn}&$filter=_nks_requestid_value eq '${requestId}'`;
        var records = await getRecords(logicalName, query);
        if(records != null && records.value != null && records.value.length > 0) {
            $.each(records.value, async function(index, item) {
                await deleteRecord(logicalName, item[idColumn]);
            });
        }
    }

    function deleteRecord(logicalName, id)
    {
        let entity = `${logicalName}(${id})`;
        return deleteRecordAPI(entity);
    }

    function deleteRecordAPI(logicalName)
    {
        return appAjax({
            type: "DELETE",
            url: `/_api/${logicalName}`,
            contentType: "application/json"
        });
    }

    function updateReviewRecord(logicalName, id, updateData)
    {
        updateData = GetReviewedAuditMetadata(updateData);
        let entity = `${logicalName}(${id})`;
       
        return updateRecordAPI(entity, updateData);
    }

    function updateRecord(logicalName, id, updateData)
    {
        updateData = GetUpdateAuditMetadata(updateData);
        let entity = `${logicalName}(${id})`;

        return updateRecordAPI(entity, updateData);
    }

    function updateRecordAPI(logicalName, updateData)
    {
        return appAjax({
            type: "PATCH",
            url: `/_api/${logicalName}`,
            contentType: "application/json",
            data: JSON.stringify(updateData)
        });
    }
    
    function getRecordsWithParameters(entityName, queryString, filterString, orderByString) {
        if(entityName != "") {
            let latestDate = new Date().toISOString();
            
            var filter = `&$filter=(modifiedon lt ${latestDate})` + ((filterString != "") ? ` and (${filterString})` : "");
            var select = (select != "") ? `$select=${queryString}` : "";
            var orderBy = (orderByString != "") ? `&$orderby=${orderByString}` : "";
    
            let url = `/_api/${entityName}?${select}${filter}`;
            return appAjax({
                type: "GET",
                url: url,
                contentType: "application/json",
            });
        }
    }
    
    function getRecords(entityName, queryString, pageLimit, errorMessage) {
        if(entityName != "") {
            if(checkValidQuery(queryString, errorMessage)){
                let url = `/_api/${entityName}?${queryString}`;
                let options = {
                    type: "GET",
                    url: url,
                    contentType: "application/json"
                };
                
                if(pageLimit != null && pageLimit > 0) {
                    options["headers"] = {"Prefer": `odata.maxpagesize=${pageLimit}`};
                }

                return appAjax(options);
            }
            else {
                return Promise.reject("Exceeds query strings maximum length.");
            }
        }
        else {
            return Promise.reject("Entity name should not be blank.");
        }
    }
    
    function getMoreRecords(queryString, pageLimit) {
        if(queryString != "") {
            if(checkValidQuery(queryString)){
                let url = queryString;
                let options = {
                    type: "GET",
                    url: url,
                    contentType: "application/json"
                };
                if(pageLimit != null && pageLimit > 0) {
                    options["headers"] = {"Prefer": `odata.maxpagesize=${pageLimit}`};
                }
                return appAjax(options);
            }
            else {
                return Promise.reject("Exceeds query strings maximum length.");
            }
        }
    }

    function checkValidQuery(queryString, errorMessage) {
        let encodedQueryStringLength = encodeURIComponent(queryString).length;
        if(encodedQueryStringLength > 2000) {
            let message = "Search request length exceeding the maximum limit.<br>Please reduce search criteria and try again.";
            if(errorMessage != undefined && errorMessage != "") {
                message = errorMessage;
            }
            notifyUser("error", message, true, 10);
            return false;
        }
        return true;
    }
    // Audit functions
    function GetCreateAuditMetadata(recordData) {
        var metaData = "/contacts("+ UserId +")";
    
        //recordData["nks_ReviewedBy@odata.bind"] = metaData;
        recordData["nks_SubmittedBy@odata.bind"] = metaData;    
        recordData["nks_UpdatedBy@odata.bind"] = metaData;
        return recordData;
    }
    
    function GetUpdateAuditMetadata(recordData) {
        var metaData = "/contacts("+ UserId +")";
        recordData["nks_UpdatedBy@odata.bind"] = metaData;
        return recordData;
    }
    
    function GetReviewedAuditMetadata(recordData) {
        var metaData = "/contacts("+ UserId +")";
        recordData["nks_ReviewedBy@odata.bind"] = metaData;
        recordData["nks_UpdatedBy@odata.bind"] = metaData;
        return recordData;
    }
    
    // Funcitons
    function insertDocumentRecord(data, requestId){
        let record = {
            "nks_name": data.name,
            "nks_filename": data.name,
            "nks_filepath": `${data.blobContainter}/${requestId}/${data.name}`,
            "nks_filesize": data.fileSize.toString(),
            "nks_filetype": data.fileType,
            "nks_ismaindoc": data.isMainDoc,
            "nks_previewstatus": data.previewStatus,
            "nks_RequestId@odata.bind": "/nks_requests(" + requestId + ")"
        };
    
        return createRecord("nks_documents", record);
    }

    function updateDocumentRecord(data){
        let updateData = {
            "nks_ismaindoc": data.isMainDoc
        };
    
        return updateRecord("nks_documents", data.documentId, updateData);
    }

    function insertRequestDocumentMapping(data, documentId, requestId){
        let record = { "nks_name": data.name };
    
        if(requestId != null)
            record["nks_RequestId@odata.bind"] = "/nks_requests(" + requestId + ")";
    
        if(documentId != null)
            record["nks_DocumentId@odata.bind"] = "/nks_documents(" + documentId + ")";
            
        return createRecord("nks_requestdocumentmaps", record);
    }
    
    function insertRequestRecord(data) {
        let record = {
            "nks_name": data.name,
            "nks_requeststatus": 10, //data.isDraft ? 10 : 20,
            "nks_Source@odata.bind": `/nks_categories(${data.sourceId})`,
            "nks_DocumentType@odata.bind": `/nks_categories(${data.documentTypeId})`,
            "nks_documentstatus": data.documentStatus,
            "nks_documentoverview": data.documentOverview,
            "nks_publisheddate": data.publishedDate,
            "nks_viewpointurl" : data.viewpointUrl,
            "nks_author": data.author, 
            "nks_partners": data.partners
        };
        if(data.subDocumentTypeId != null && data.subDocumentTypeId != "") {
            record["nks_SubDocumentType@odata.bind"] = `/nks_categories(${data.subDocumentTypeId})`;
        }
        if(data.requestedReviewerId != null && data.requestedReviewerId != "" && data.requestedReviewerId != "na") {
            record["nks_RequestedReviewer@odata.bind"] = `/contacts(${data.requestedReviewerId})`;
        }
        if(!data.isDraft) {
            record["nks_submittedon"] = (new Date()).toISOString();
        }
               
       
        return createRecord("nks_requests", record);
    }

    function updateRequestRecord(requestId, data, isSubmitedForReview) {
        let record = {
            "nks_name": data.name,
            "nks_Source@odata.bind": `/nks_categories(${data.sourceId})`,
            "nks_DocumentType@odata.bind": `/nks_categories(${data.documentTypeId})`,
            "nks_documentstatus": data.documentStatus,
            "nks_documentoverview": data.documentOverview,
            "nks_publisheddate": data.publishedDate,
            "nks_viewpointurl" : data.viewpointUrl,
            "nks_author": data.author, 
            "nks_partners": data.partners
        };
        if(data.subDocumentTypeId != null && data.subDocumentTypeId != "") {
            record["nks_SubDocumentType@odata.bind"] = `/nks_categories(${data.subDocumentTypeId})`;
        }
        else {
            record["nks_SubDocumentType"] = null;
        }

        if(data.requestedReviewerId != null && data.requestedReviewerId != "" && data.requestedReviewerId != "na") {
            record["nks_RequestedReviewer@odata.bind"] = `/contacts(${data.requestedReviewerId})`;
        }
        else {
            record["nks_RequestedReviewer"] = null;
        }
        if(isSubmitedForReview) {
            record["nks_submittedon"] = (new Date()).toISOString();
        }
        if(data.newStatus != null) {
            record["nks_requeststatus"] = data.newStatus;
        }
        
        return updateRecord("nks_requests", requestId, record);
    }

    function updateRequestStatus(data, requestId) {
        let updateData = {
            "nks_requeststatus": data.requestStatus
        };
        return updateRecord("nks_requests", requestId, updateData);
    }

    function updateRequestMetadata(documentMetadata, requestId){
        let updateData = {
            "nks_documentmetadata": documentMetadata
        };
        return updateRecord("nks_requests", requestId, updateData);
    }

    function insertRequestCategoryMapping(name, requestId, categoryId){
        let record = { "nks_name": name };
    
        if(requestId != null)
            record["nks_RequestId@odata.bind"] = `/nks_requests(${requestId})`;
    
        if(categoryId != null)
            record["nks_CategoryId@odata.bind"] = `/nks_categories(${categoryId})`;
            
        return createRecord("nks_requestcategorymaps", record);
    }
    
    function updateReviewRequestRecord(data, requestId) {
        let updateData = {
            "nks_requeststatus": data.isRejected ? 50 : 40,
            "nks_reviewedon": (new Date()).toISOString()
        };
        if(data.isRejected) {
            updateData["nks_reviewcomment"] = data.reviewComment;
        }
        if(data.documentMetada != null && data.documentMetada != "") {
            updateData["nks_documentmetadata"] = data.documentMetada;
        }
        return updateReviewRecord("nks_requests", requestId, updateData);
    }

    function updateRequestDocumentMetada(data, requestId) {
        let updateData = {
            "nks_documentmetadata": data.documentMetada
        };
        return updateRecord("nks_requests", requestId, updateData);
    }

    function updateACReviewedRequestRecord(requestId) {
        let updateData = {
            "nks_isacreviewed": true,
            "nks_ACReviewedBy@odata.bind": "/contacts(" + UserId + ")"
        };
        
        return updateReviewRecord("nks_requests", requestId, updateData);
    }
    //reportedDocuments
    
    function insertReportedDocumentRecord(data){
        let record = { 
            "nks_name": "", 
            "nks_reporttype": data.reportType, 
            "nks_reasontext": data.reportText,
            "nks_reportstatus": 10,
            "nks_RequestId@odata.bind": "/nks_requests(" + data.requestId + ")"
        };

        if(data.reviewer != null && data.reviewer != "") {
            record["nks_Reviewer@odata.bind"] = "/contacts(" + data.reviewer + ")";
        }

        return createRecord("nks_reporteddocuments", record);	
    }

    
    function updateReviewReportRecord(data, reportId) {
        let updateData = {
            "nks_reportstatus": data.isRejected ? 30 : 20,
            "nks_reviewedon": (new Date()).toISOString()
        };
            
        if(data.isRejected) {
            updateData["nks_reviewcomment"] = data.reviewComment;
        }
        
        return updateReviewRecord("nks_reporteddocuments", reportId, updateData);
    }

    // Request topic tag map
    function insertRequestTopicTagMapping(name, data){
        let record = { "nks_name": name };
    
        if(data.requestId != null) {
            record["nks_RequestId@odata.bind"] = `/nks_requests(${data.requestId})`;
        }
        if(data.topicTagId != null) {
            record["nks_TopicTagId@odata.bind"] = `/nks_topictags(${data.topicTagId})`;
        }
        if(data.topicTagGroupId != null) {
            record["nks_TopicTagGroupId@odata.bind"] = `/nks_topictaggroups(${data.topicTagGroupId})`;
        }
        return createRecordMap("nks_requesttopictagmaps", record);
    }

    async function deleteRequestTopicTagMapping(requestId){
        return deleteRequestRecordMaps("nks_requesttopictagmaps", requestId, "nks_requesttopictagmapid");
    }

    // Request accounting topic map
    function insertRequestAccountingTopicMapping(name, data){
        let record = { "nks_name": name, "nks_accountingtopictype": data.accountingTopicType };
    
        if(data.requestId != null) {
            record["nks_RequestId@odata.bind"] = `/nks_requests(${data.requestId})`;
        }
        if(data.accountingTopicId != null) {
            record["nks_AccountingTopicId@odata.bind"] = `/nks_accountingtopics(${data.accountingTopicId})`;
        }
        if(data.accountingSubTopicId != null) {
            record["nks_AccountingSubTopicId@odata.bind"] = `/nks_accountingsubtopics(${data.accountingSubTopicId})`;
        }   
        return createRecordMap("nks_requestaccountingtopicmaps", record);
    }

    async function deleteRequestAccountingTopicMapping(requestId){
        return deleteRequestRecordMaps("nks_requestaccountingtopicmaps", requestId, "nks_requestaccountingtopicmapid");
    }

    // Category
    function getCategoryData(isActive) {
      let latestDate = new Date().toISOString();
      let entityName = "nks_categories";
      let queryString = `$select=nks_categoryid,nks_name,_nks_parentcategoryid_value,nks_displayorder,statecode&$filter=${isActive ? "(statecode eq 0) and": ""}(modifiedon lt ${latestDate})&$orderby=nks_displayorder`;
      
      return getRecords(entityName, queryString);
    }

    // Admin section - data feed funcitons
    
    // Category insertion
    async function createCategoryObject(nodes, parentCategoryId) {
        if(nodes != null && nodes.length > 0 ) {
            for(let i=0; i< nodes.length; i++) {
                let item = nodes[i];
                createCategoryRecord(item, parentCategoryId).then((res, status, xhr) => {
                    var categoryId = xhr.getResponseHeader("entityid");
                    console.log("Inserted");
                    item.status = true;
                    createCategoryObject(item.value, categoryId);
                });   
            }
        }
    }

    function createCategoryRecord(node, parentCategoryId) {
        var record = {"nks_name": node.name};
        if(parentCategoryId != null) {
            record["nks_ParentCategoryId@odata.bind"] = "/nks_categories(" + parentCategoryId + ")";
        }
        
        return insertCategoryRecord(record);
    }

    function insertCategoryRecord(data) {
        let url = `/_api/nks_categories`;
        return appAjax({
            type: "POST",
            url: url,
            contentType: "application/json",
            data: JSON.stringify(data)
        });
    }

    async function updateCategoryObject(nodes, parentCategoryId) {
        if(nodes != null && nodes.length > 0 ) {
            for(let i=0; i< nodes.length; i++) {
                let item = nodes[i];
                if(item.id != null && item.id != "") {
                    let updateData = {
                        "nks_name": item.name
                    };
                    if(item.isModified) {
                        updateData["nks_displayorder"] = item.displayOrder;
                        updateData["statecode"] = item.stateCode;
                        
                        updateCategoryRecord(item.id, updateData).then((res, status, xhr) => {
                            console.log("Source and Document Type(s) - Updated");
                            item.status = true;
                            updateCategoryObject(item.value, item.id);
                        });   
                    }
                    else {
                        console.log("Source and Document Type(s) - No Change");
                        item.status = true;
                        updateCategoryObject(item.value, item.id);
                    }
                }
                else {
                    createCategoryRecord(item, parentCategoryId).then((res, status, xhr) => {
                        var categoryId = xhr.getResponseHeader("entityid");
                        console.log("Source and Document Type(s) - Inserted");
                        item.status = true;
                        updateCategoryObject(item.value, categoryId);
                    });   
                }
            }
        }
    }

    function updateCategoryRecord(id, updateData) {
        let logicalName = `nks_categories(${id})`;

        return updateRecordAPI(logicalName, updateData);
    }
    
    async function updateCategoryOrderObject(nodes) {
        if(nodes != null && nodes.length > 0 ) {
            for(let i=0; i< nodes.length; i++) {
                let item = nodes[i];
                if(item.id != null && item.id != "") {
                    let updateData = {
                        "nks_displayorder": item.displayOrder
                    };
                    
                    updateCategoryRecord(item.id, updateData).then((res, status, xhr) => {
                        console.log("Source and Document Type(s) - Display order - Updated");
                        //item.status = true;
                        updateCategoryOrderObject(item.value, item.id);
                    });
                }
            }
        }
    }

    async function updateCategoryStatusObject(nodes) {
        if(nodes != null && nodes.length > 0 ) {
            for(let i=0; i< nodes.length; i++) {
                let item = nodes[i];
                if(item.id != null && item.id != "") {
                    if(item.stateCode == 1) {
                        let updateData = {
                            "statecode": item.stateCode
                        };
                        
                        updateCategoryRecord(item.id, updateData).then((res, status, xhr) => {
                            console.log("Source and Document Type(s) - Status - Updated");
                            //item.status = true;
                            updateCategoryStatusObject(item.value, item.id);
                        });
                    }
                    else {
                        updateCategoryStatusObject(item.value, item.id);
                    }
                }
            }
        }
    }
    // Topic Group and Topic Tag insert

    async function createTopicTagGroupObject(nodes) {
        if(nodes != null && nodes.length > 0 ) {
            for(let i=0; i< nodes.length; i++) {
                let item = nodes[i];
                createTopicTagGroupRecord(item).then((res, status, xhr) => {
                    var id = xhr.getResponseHeader("entityid");
                    //console.log("Inserted");
                    createTopicTagObject(item.value, id, item.categoryId);
                });   
            }
        }
    }

    function createTopicTagGroupRecord(node) {
        var record = {"nks_name": node.name};
        
        return insertTopicTagGroupRecord(record);
    }

    function createTopicTagObject(nodes, parentId, categoryId) {
        if(nodes != null && nodes.length > 0 ) {
            for(let i=0; i< nodes.length; i++) {
                let item = nodes[i];
                createTopicTagRecord(item, parentId, categoryId).then(res => {
                    console.log("Inserted");
                });
            }
        }
    }

    function createTopicTagRecord(node, parentId, categoryId) {
        var record = {"nks_name": node.name};

        if(parentId != null) {
            record["nks_TopicTagGroupId@odata.bind"] = `/nks_topictaggroups(${parentId})`;
        }
        if(categoryId != null) {
            record["nks_CategoryId@odata.bind"] = `/nks_categories(${categoryId})`;
        }
        
        if(node.desc != null && node.desc != "") {
            record["nks_description"] = node.desc;
        }
        
        return insertTopicTagRecord(record);
    }

    function insertTopicTagGroupRecord(data) {
        let url = `/_api/nks_topictaggroups`;
        return appAjax({
            type: "POST",
            url: url,
            contentType: "application/json",
            data: JSON.stringify(data)
        });
    }

    function insertTopicTagRecord(data) {
        let url = `/_api/nks_topictags`;
        return appAjax({
            type: "POST",
            url: url,
            contentType: "application/json",
            data: JSON.stringify(data)
        });
    }
    
    function updateTopicTagRecord(id, updateData) {
        let logicalName = `nks_topictags(${id})`;
        var record = {"nks_name": updateData.name};

        if(updateData.tagGroupId != null) {
            record["nks_TopicTagGroupId@odata.bind"] = `/nks_topictaggroups(${updateData.tagGroupId})`;
        }
        if(updateData.categoryId != null) {
            record["nks_CategoryId@odata.bind"] = `/nks_categories(${updateData.categoryId})`;
        }

        if(updateData.desc != null && updateData.desc != "") {
            record["nks_description"] = updateData.desc;
        }

        return updateRecordAPI(logicalName, record);
    }

    // Accounting Topics and Sub Topics insert
    
    async function createAccountingTopicObject(nodes) {
        if(nodes != null && nodes.length > 0 ) {
            for(let i=0; i< nodes.length; i++) {
                let item = nodes[i];
                createAccountingTopicRecord(item).then((res, status, xhr) => {
                    var Id = xhr.getResponseHeader("entityid");
                    item.status = true;
                    //console.log("Inserted");
                    createAccountingSubTopicObject(item.value, Id);
                });   
            }
        }
    }

    function createAccountingTopicRecord(node) {
        var record = {"nks_name": node.name};
        
        return insertAccountingTopicRecord(record);
    }

    function createAccountingSubTopicObject(nodes, parentId) {
        if(nodes != null && nodes.length > 0 ) {
            for(let i=0; i< nodes.length; i++) {
                let item = nodes[i];
                createAccountingSubTopicRecord(item, parentId).then(res => {
                    item.status = true;
                    console.log("Inserted");
                });
            }
        }
    }

    function createAccountingSubTopicRecord(node, parentId) {
        var record = {"nks_name": node.name};
        if(parentId != null) {
            record["nks_AccountingTopicId@odata.bind"] = `/nks_accountingtopics(${parentId})`;
        }
        
        return insertAccountingSubTopicRecord(record);
    }
    
    async function updateAccountingTopicObject(nodes) {
        if(nodes != null && nodes.length > 0 ) {
            for(let i=0; i< nodes.length; i++) {
                let item = nodes[i];
                if(item.id != null && item.id != "") {
                    let updateData = {
                        "nks_name": item.name
                    };
                    if(item.isModified) {
                        updateAccountingTopicRecord(item.id, updateData).then((res, status, xhr) => {
                            console.log("Accounting Topic - Updated");
                            item.status = true;
                            updateAccountingSubTopicObject(item.value, item.id);
                        });
                    }
                    else {
                        console.log("Accounting Topic - No Change");
                        item.status = true;
                        updateAccountingSubTopicObject(item.value, item.id);
                    }
                }
                else {
                    createAccountingTopicRecord(item).then((res, status, xhr) => {
                        var parentId = xhr.getResponseHeader("entityid");
                        console.log("Accounting Topic - Inserted");
                        item.status = true;
                        updateAccountingSubTopicObject(item.value, parentId);
                    });   
                }
            }
        }
    }
    
    async function updateAccountingSubTopicObject(nodes, parentId) {
        if(nodes != null && nodes.length > 0 ) {
            for(let i=0; i< nodes.length; i++) {
                let item = nodes[i];
                if(item.id != null && item.id != "") {
                    let updateData = {
                        "nks_name": item.name
                    };
                    if(item.isModified) {
                        updateAccountingSubTopicRecord(item.id, updateData).then((res, status, xhr) => {
                            console.log("Accounting Sub Topic - Updated");
                            item.status = true;
                        });
                    }
                    else {
                        console.log("Accounting Sub Topic - No Change");
                        item.status = true;
                    }
                }
                else {
                    createAccountingSubTopicRecord(item, parentId).then((res, status, xhr) => {
                        console.log("Accounting Sub Topic - Inserted");
                        item.status = true;
                    });   
                }
            }
        }
    }

    function updateAccountingTopicRecord(id, updateData) {
        let logicalName = `nks_accountingtopics(${id})`;

        return updateRecordAPI(logicalName, updateData);
    }
    function updateAccountingSubTopicRecord(id, updateData) {
        let logicalName = `nks_accountingsubtopics(${id})`;

        return updateRecordAPI(logicalName, updateData);
    }

    function insertAccountingTopicRecord(data) {
        let url = `/_api/nks_accountingtopics`;
        return appAjax({
            type: "POST",
            url: url,
            contentType: "application/json",
            data: JSON.stringify(data)
        });
    }

    function insertAccountingSubTopicRecord(data) {
        let url = `/_api/nks_accountingsubtopics`;
        return appAjax({
            type: "POST",
            url: url,
            contentType: "application/json",
            data: JSON.stringify(data)
        });
    }

    // Custom Activity
    function insertCustomActivityRecord(data) {
        let record = {
            "nks_name": data.name,
            "nks_inputjson": data.inputJson,
            "nks_eventtype": data.eventType
        };
    
        return createRecord("nks_customactivities", record);
    }
</script></div>
<div data-editorblocktype="WebTemplate" data-liquidexpressionvalue="eyUgaW5jbHVkZSAnd2ViYXBpLXdyYXBwZXInICV9" data-record-id="09e68ef7-990e-ef11-9f89-6045bd0359a6" data-ppid="09e68ef7-990e-ef11-9f89-6045bd0359a6" ><script>
$(function () {
    //Web API ajax wrapper
    (function (webapi, $) {
        function safeAjax(ajaxOptions) {
            var deferredAjax = $.Deferred();
            shell.getTokenDeferred().done(function (token) {
                // Add headers for ajax
                if (!ajaxOptions.headers) {
                    $.extend(ajaxOptions, {
                        headers: {
                            "__RequestVerificationToken": token
                        }
                    });
                } else {
                    ajaxOptions.headers["__RequestVerificationToken"] = token;
                }
                $.ajax(ajaxOptions)
                    .done(function (data, textStatus, jqXHR) {
                        validateLoginSession(data, textStatus, jqXHR, deferredAjax.resolve);
                    }).fail(deferredAjax.reject); //ajax
            }).fail(function () {
                deferredAjax.rejectWith(this, arguments); // On token failure pass the token ajax and args
            });
            return deferredAjax.promise();
        }
        webapi.safeAjax = safeAjax;
    })(window.webapi = window.webapi || {}, jQuery)
});

function appAjax(ajaxOptions) {
    return webapi.safeAjax(ajaxOptions)
        .fail(function (response) {
            if (response.responseJSON) {
                alert("Error: " + response.responseJSON.error.message)
            } else {
                alert("Error: Web API is not available... ")
            }
        });
}
</script></div>


<apw-header id="defaultHeader" type="transparent" compact="false"
    style="height: 65px;position:fixed;top:0px;width: 100%;z-index: 999;" apwClickLogo="Nwindow.location.href='/'">
    <span slot="title" class="ap-header-title">Independence Data Request</span>
    <div slot="options" class="ap-header-options-item has-icon has-label" tabindex="0" role="button" aria-label="Home">
        <span class="Appkit4-icon icon-home-outline"></span>
        <span class="ap-header-options-label">Home</span>
    </div>

    <apw-avatar id="avater-inital" slot="user" name="PI" borderWidth="0" diameter="40" role="button"></apw-avatar>

</apw-header>




<script type="text/javascript">
    let defaultHeader = document.getElementById('defaultHeader');
    defaultHeader.addEventListener('apwDidLoad', function (event) {
        defaultHeader.shadowRoot.querySelector('header').style.backgroundColor = 'white'
    })
    defaultHeader.addEventListener('apwClickLogo', function (event) {
        window.location.href = '/'
    })
    let homeButton = document.querySelector('div[role="button"][aria-label="Home"]');

    homeButton.addEventListener('click', function () {
        window.location.href = '/'
    });

    defaultHeader.apwStyle = { "height": "7vh" }
    if (window.location.pathname == '/SignIn') {
        defaultHeader.style.display = "none"
    }

</script>

<script type="text/javascript">


    let name = '<span data-editorblocktype="Liquid" data-liquidexpressionvalue="e3sgdXNlci5mdWxsbmFtZSB8IGVzY2FwZSB9fQ==">John Doe</span>';
    let roles = 'roles';
    console.log(roles);
    console.log(window.location.pathname);

    if ((name == '' || name == undefined) && window.location.pathname != '/SignIn') {
        window.location.href = "/SignIn?returnUrl=%2F";

    }
    // else if (roles != '' && roles != undefined && roles.length > 0 && (roles.includes("ET User") || roles.includes("Super User")) && window.location.pathname != '/ETHome/' && window.location.pathname != '/rickAPITest/') {
    //     window.location.href = "/ETHome";
    // } 
    else {
        var splits = name.split(' ');
        var initials = `${splits[0][0]}${splits[splits.length - 1][0]}`;
        let avatar = document.getElementById('avater-inital')
        avatar.name = initials
        avatar.withDropdown = "true";
        avatar.apwDropdownStyle = {
            zIndex: '2',
        };
        avatar.list = [
            { value: 'item3', label: 'Logout', apwPrefix: `<span class="Appkit4-icon icon-lockclosed-locked-outline" ></span>` },
        ];
        avatar.addEventListener("apwDidLoad", (e) => {

            avatar.shadowRoot.querySelectorAll("apw-dropdown-list-item")[0].shadowRoot.querySelectorAll(".ap-option-item")[0].addEventListener('click', function () {
                window.location.href = '/Account/Login/Logoff'
            });


        });
    }


</script>

<script type="text/javascript">
    const TENANT_ID_MSAL = "513294a0-3e20-41b2-a970-6d30bf1546fa";
    const CLIENT_ID_MSAL = "<span data-editorblocktype="Liquid" data-liquidexpressionvalue="e3sgc2V0dGluZ3NbJ0NvbmZpZ3VyYXRpb24vQXp1cmVGdW5jdGlvbkF1dGhDbGllbnRJZCddIH19">df2d5ad6-491c-418e-b56f-b6168080f483</span>"


    if (window.location.pathname != '/' && window.location.pathname != '/SignIn') {


        const msalConfig = {
            auth: {
                clientId: CLIENT_ID_MSAL,
                authority: `https://login.microsoftonline.com/${TENANT_ID_MSAL}`,
                postLogoutRedirectUri: `${window.location.origin}`,
                navigateToLoginRequestUrl: true
            },
            cache: {
                cacheLocation: "sessionStorage",
                storeAuthStateInCookie: false,
            },
            system: {
                tokenRenewalOffsetSeconds: 21 * 60,
                iframeHashTimeout: 20000,
                loadFrameTimeout: 20000
            },
        };

        const msalInstance = new msal.PublicClientApplication(msalConfig);
        msalInstance.handleRedirectPromise()
            .then((tokenResponse) => { })
            .catch((error) => { });

        const reLoginForMSAL = () => {
            const loginRequest = {
                scopes: [`${CLIENT_ID_MSAL}/.default`],
                loginHint: "emailaddress1"
            };
            const ssoRequest = {
                loginHint: "emailaddress1"
            };
            msalInstance.ssoSilent(loginRequest)
                .then(response => {
                    acquireAndSetToken();
                })
                .catch(error => {
                    msalInstance.loginRedirect(loginRequest);
                });
        }

        const acquireAndSetToken = () => {
            if (msalInstance.getAccountByUsername("emailaddress1")) {
                let tokenRequest = {
                    scopes: [`${CLIENT_ID_MSAL}/.default`],
                    account: msalInstance.getAccountByUsername("emailaddress1")
                };
                msalInstance.acquireTokenSilent(tokenRequest)
                    .then(response => {
                        window.sessionStorage.setItem('API_ACCESS_TOKEN', response.accessToken);
                    })
                    .catch(err => {
                        console.log("error: ", err);
                        if (err.name === "InteractionRequiredAuthError") {
                            let tokenRequest = {
                                scopes: [`${CLIENT_ID_MSAL}/.default`],
                                loginHint: "emailaddress1"
                            };
                            msalInstance.acquireTokenRedirect(tokenRequest)
                                .then(response => {
                                    window.sessionStorage.setItem('API_ACCESS_TOKEN', response.accessToken);
                                })
                                .catch(err => {
                                    console.log("Something went wrong ...",
                                        err);
                                    reLoginForMSAL();
                                });
                        }
                    });
            } else {
                reLoginForMSAL();
            }
        }
        acquireAndSetToken();
        tokenPoller = setInterval(acquireAndSetToken, 7 * 60 * 1000);

    }


</script> </div>
        <!-- Default studio template. Please do not modify -->
<div id="mainContent" class="wrapper-body" role="main">
    <div class="page-copy">
      <div data-editorblocktype="PageCopy" data-liquidexpressionvalue="eyUgZWRpdGFibGUgcGFnZSAnYWR4X2NvcHknIHR5cGU6ICdodG1sJywgbGlxdWlkOiB0cnVlICV9" data-record-id="58c81aae-bbd1-4f86-a446-7685e4b53220" data-ppid="58c81aae-bbd1-4f86-a446-7685e4b53220" ><!-- <div id="ibx36q" class="row sectionBlockLayout text-start" style="display: flex; flex-wrap: wrap; margin: 0px; min-height: auto; padding: 8px; background-position: center center; background-repeat: no-repeat; background-size: cover;">
    <div id="ictvvr" class="container" style="padding: 0px; display: flex; flex-wrap: wrap;"><div id="i1tv4f" class="col-lg-12 columnBlockLayout" style="word-break: break-word; flex-grow: 1; display: flex; flex-direction: column; min-width: 300px;"> -->
<div id="i9ixt" class="row sectionBlockLayout text-start" style="padding-top: 60px;margin-left: 0px;margin-right: 0px;"><div data-editorblocktype="PcfControl" data-liquidexpressionvalue="eyUgY29kZWNvbXBvbmVudCBuYW1lOmNhbmFyeV9Qcm9qZWN0Q2FuYXJ5UENGLkNsaWVudEhvbWVwYWdlICV9" data-record-id="canary_ProjectCanaryPCF.ClientHomepage" data-ppid="canary_ProjectCanaryPCF.ClientHomepage" ><div style="width: 100%; height: 300px;background-color: #FFFFFF;box-sizing: border-box;position: relative;"><p data-gjs-type="default" style="margin: 0;position: relative;top: 50%;left: 50%;transform: translate(-50%, -50%);border-top: 0;padding: 0 4px 0 4px; text-align: center;"><i class="ms-Icon ms-Icon--Code" style="display: table;font-size: 100px;color: #D2D0CE; margin: 0 auto; line-height: 1.1;word-spacing: normal;letter-spacing: normal;"></i><span style="color: #605E5C;font-size: 14px;text-transform: capitalize;font-weight: 600;font-family: wf_segoe-ui, 'Segoe UI', Frutiger, 'Frutiger Linotype', 'Dejavu Sans', 'Helvetica Neue', 'Arial', sans-serif; display: table; margin: 0 auto; line-height:1.42857;word-spacing: normal;letter-spacing: normal;">Code component: ClientHomepage</span><span style="color: #797775;font-size: 12px;font-family:wf_segoe-ui, 'Segoe UI', Frutiger, 'Frutiger Linotype', 'Dejavu Sans', 'Helvetica Neue', 'Arial', sans-serif; display: table; margin: 0 auto; font-weight:normal; line-height:1.42857;word-spacing: normal;letter-spacing: normal;text-transform: initial;">To configure this code component: clienthomepage, choose edit from the toolbar</span></p></div></div></div>
<!-- </div></div>
</div> -->
</div>
    </div>
</div>
        <div data-editorblocktype="Footer" data-record-id="7c72b0f7-3cab-4844-be7d-45fdf32457a4" > 
<div class="g-col-12" style="text-align: center;">
  <apw-footer content="© 2024 PwC. All rights reserved. PwC refers to the PwC network and/or one or more of its member firms, each of which is a separate legal entity. Please see <a class='ap-link' href='https://www.pwc.com/structure' target='_blank'>www.pwc.com/structure</a> for
    further details."></apw-footer>
</div>
 </div>
        

        <script type="text/javascript">
          // Fix for incorrect viewport width setting in IE 10 on Windows Phone 8.
          if (navigator.userAgent.match(/IEMobile/10.0/)) {
            var msViewportStyle = document.createElement("style");
            msViewportStyle?.appendChild(document.createTextNode("@-ms-viewport{width:auto!important}"));
            document.getElementsByTagName("head")[0]?.appendChild(msViewportStyle);
          }
        </script>
      </body>
    </html>
  