{"id":20975,"date":"2023-10-18T13:32:27","date_gmt":"2023-10-18T11:32:27","guid":{"rendered":"https:\/\/www.cofgipuzkoa.eus\/formakuntza-egutegia\/"},"modified":"2024-01-02T10:20:39","modified_gmt":"2024-01-02T09:20:39","slug":"formakuntza-egutegia","status":"publish","type":"page","link":"https:\/\/www.cofgipuzkoa.eus\/eu\/formakuntza-egutegia\/","title":{"rendered":"Formakuntza Egutegia"},"content":{"rendered":"<div class=\"wpb-content-wrapper\"><p>[vc_row][vc_column width=&#8221;1\/1&#8243;][vc_raw_html]PGxpbmsNCiAgICByZWw9InN0eWxlc2hlZXQiDQogICAgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvZm9udC1hd2Vzb21lLzYuMi4wL2Nzcy9hbGwubWluLmNzcyINCiAgICBpbnRlZ3JpdHk9InNoYTUxMi14aDZPL0NrUW9QT1dEZFlURHFlUmRQQ1ZkMVNwdkNBOVhYY1VuWlMyRm1KTnAxY29BRnp2dENOOUJtYW1FKzRhSEs4eXlVSFVTQ2NKSGdYbG9UeVQyQT09Ig0KICAgIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiDQogICAgcmVmZXJyZXJwb2xpY3k9Im5vLXJlZmVycmVyIg0KLz4NCjxzdHlsZT4NCiAgIDpyb290IHsNCiAgLS1wcmltYXJ5LWNscjogIzhmMTg2MDsNCn0NCi5jb250YWluZXJDYWxlbmRhciB7DQogICAgcG9zaXRpb246IHJlbGF0aXZlOw0KICAgIA0KICAgIG1hcmdpbjogMCBhdXRvOw0KICAgIA0KICAgIHBhZGRpbmc6IDVweDsNCiAgICBtYXJnaW4tYm90dG9tOiA4MHB4Ow0KICAgIGNvbG9yOiAjZmZmOw0KICAgIGRpc3BsYXk6IGZsZXg7DQogICAgYmFja2dyb3VuZC1jb2xvcjogI2RkZGRkZDsNCiAgICBib3JkZXItcmFkaXVzOiAxMHB4Ow0KfQ0KDQoubGVmdCB7DQogIHdpZHRoOiA2MCU7DQogIHBhZGRpbmc6IDIwcHg7DQp9DQouY2FsZW5kYXIgew0KICBwb3NpdGlvbjogcmVsYXRpdmU7DQogIHdpZHRoOiAxMDAlOw0KICANCiAgZGlzcGxheTogZmxleDsNCiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsNCiAgZmxleC13cmFwOiB3cmFwOw0KICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47DQogIGNvbG9yOiAjODc4ODk1Ow0KICBib3JkZXItcmFkaXVzOiA1cHg7DQogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7DQp9DQovKiBzZXQgYWZ0ZXIgYmVoaW5kIHRoZSBtYWluIGVsZW1lbnQgKi8NCi5jYWxlbmRhcjo6YmVmb3JlLA0KLmNhbGVuZGFyOjphZnRlciB7DQogIGNvbnRlbnQ6ICIiOw0KICBwb3NpdGlvbjogYWJzb2x1dGU7DQogIHRvcDogNTAlOw0KICBsZWZ0OiAxMDAlOw0KICB3aWR0aDogMTJweDsNCiAgaGVpZ2h0OiA5NyU7DQogIGJvcmRlci1yYWRpdXM6IDAgNXB4IDVweCAwOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDNkNGQ2ZDc7DQogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsNCn0NCi5jYWxlbmRhcjo6YmVmb3JlIHsNCiAgaGVpZ2h0OiA5NCU7DQogIGxlZnQ6IGNhbGMoMTAwJSArIDEycHgpOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTUzLCAxNTMsIDE1Myk7DQp9DQouY2FsZW5kYXIgLm1vbnRoIHsNCiAgd2lkdGg6IDEwMCU7DQogIGhlaWdodDogNjBweDsNCiAgZGlzcGxheTogZmxleDsNCiAgYWxpZ24taXRlbXM6IGNlbnRlcjsNCiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOw0KICBwYWRkaW5nOiAwIDUwcHg7DQogIGZvbnQtc2l6ZTogMS4ycmVtOw0KICBmb250LXdlaWdodDogNTAwOw0KICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsNCn0NCi5jYWxlbmRhciAubW9udGggLnByZXYsDQouY2FsZW5kYXIgLm1vbnRoIC5uZXh0IHsNCiAgY3Vyc29yOiBwb2ludGVyOw0KfQ0KLmNhbGVuZGFyIC5tb250aCAucHJldjpob3ZlciwNCi5jYWxlbmRhciAubW9udGggLm5leHQ6aG92ZXIgew0KICBjb2xvcjogdmFyKC0tcHJpbWFyeS1jbHIpOw0KfQ0KLmNhbGVuZGFyIC53ZWVrZGF5cyB7DQogIHdpZHRoOiAxMDAlOw0KICBoZWlnaHQ6IDQwcHg7DQogIGRpc3BsYXk6IGZsZXg7DQogIGFsaWduLWl0ZW1zOiBjZW50ZXI7DQogIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsNCiAgcGFkZGluZzogMCAyMHB4Ow0KICBmb250LXNpemU6IDFyZW07DQogIGZvbnQtd2VpZ2h0OiA1MDA7DQogIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOw0KfQ0KLndlZWtkYXlzIGRpdiB7DQogIHdpZHRoOiAxNC4yOCU7DQogIGhlaWdodDogMTAwJTsNCiAgZGlzcGxheTogZmxleDsNCiAgYWxpZ24taXRlbXM6IGNlbnRlcjsNCiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7DQp9DQouY2FsZW5kYXIgLmRheXMgew0KICB3aWR0aDogMTAwJTsNCiAgZGlzcGxheTogZmxleDsNCiAgZmxleC13cmFwOiB3cmFwOw0KICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47DQogIHBhZGRpbmc6IDAgMjBweDsNCiAgZm9udC1zaXplOiAxcmVtOw0KICBmb250LXdlaWdodDogNTAwOw0KICBtYXJnaW4tYm90dG9tOiAyMHB4Ow0KfQ0KLmNhbGVuZGFyIC5kYXlzIC5kYXkgew0KICB3aWR0aDogMTQuMjglOw0KICBoZWlnaHQ6IDg1cHg7DQogIGRpc3BsYXk6IGZsZXg7DQogIGFsaWduLWl0ZW1zOiBjZW50ZXI7DQogIGp1c3RpZnktY29udGVudDogY2VudGVyOw0KICBjdXJzb3I6IHBvaW50ZXI7DQogIGNvbG9yOiB2YXIoLS1wcmltYXJ5LWNscik7DQogIGJvcmRlcjogMXB4IHNvbGlkICNmNWY1ZjU7DQp9DQouY2FsZW5kYXIgLmRheXMgLmRheTpudGgtY2hpbGQoN24gKyAxKSB7DQogIGJvcmRlci1sZWZ0OiAycHggc29saWQgI2Y1ZjVmNTsNCn0NCi5jYWxlbmRhciAuZGF5cyAuZGF5Om50aC1jaGlsZCg3bikgew0KICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCAjZjVmNWY1Ow0KfQ0KLmNhbGVuZGFyIC5kYXlzIC5kYXk6bnRoLWNoaWxkKC1uICsgNykgew0KICBib3JkZXItdG9wOiAycHggc29saWQgI2Y1ZjVmNTsNCn0NCi5jYWxlbmRhciAuZGF5cyAuZGF5Om50aC1jaGlsZChuICsgMjkpIHsNCiAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNmNWY1ZjU7DQp9DQoNCi5jYWxlbmRhciAuZGF5cyAuZGF5Om5vdCgucHJldi1kYXRlLCAubmV4dC1kYXRlKTpob3ZlciB7DQogIGNvbG9yOiAjZmZmOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wcmltYXJ5LWNscik7DQp9DQouY2FsZW5kYXIgLmRheXMgLnByZXYtZGF0ZSwNCi5jYWxlbmRhciAuZGF5cyAubmV4dC1kYXRlIHsNCiAgY29sb3I6ICNiM2IzYjM7DQp9DQouY2FsZW5kYXIgLmRheXMgLmFjdGl2ZSB7DQogIHBvc2l0aW9uOiByZWxhdGl2ZTsNCiAgZm9udC1zaXplOiAycmVtOw0KICBjb2xvcjogI2ZmZjsNCiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcHJpbWFyeS1jbHIpOw0KfQ0KLmNhbGVuZGFyIC5kYXlzIC5hY3RpdmU6OmJlZm9yZSB7DQogIGNvbnRlbnQ6ICIiOw0KICBwb3NpdGlvbjogYWJzb2x1dGU7DQogIHRvcDogMDsNCiAgbGVmdDogMDsNCiAgd2lkdGg6IDEwMCU7DQogIGhlaWdodDogMTAwJTsNCiAgYm94LXNoYWRvdzogMCAwIDEwcHggMnB4IHZhcigtLXByaW1hcnktY2xyKTsNCn0NCi5jYWxlbmRhciAuZGF5cyAudG9kYXkgew0KICBmb250LXNpemU6IDJyZW07DQp9DQouY2FsZW5kYXIgLmRheXMgLmV2ZW50IHsNCiAgcG9zaXRpb246IHJlbGF0aXZlOw0KfQ0KLmNhbGVuZGFyIC5kYXlzIC5ldmVudDo6YWZ0ZXIgew0KICBjb250ZW50OiAiIjsNCiAgcG9zaXRpb246IGFic29sdXRlOw0KICBib3R0b206IDEwJTsNCiAgbGVmdDogNTAlOw0KICB3aWR0aDogNzUlOw0KICBoZWlnaHQ6IDZweDsNCiAgYm9yZGVyLXJhZGl1czogMzBweDsNCiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wcmltYXJ5LWNscik7DQp9DQouY2FsZW5kYXIgLmRheXMgLmRheTpob3Zlci5ldmVudDo6YWZ0ZXIgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOw0KfQ0KLmNhbGVuZGFyIC5kYXlzIC5hY3RpdmUuZXZlbnQ6OmFmdGVyIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsNCiAgYm90dG9tOiAyMCU7DQp9DQouY2FsZW5kYXIgLmRheXMgLmFjdGl2ZS5ldmVudCB7DQogIHBhZGRpbmctYm90dG9tOiAxMHB4Ow0KfQ0KLmNhbGVuZGFyIC5nb3RvLXRvZGF5IHsNCiAgd2lkdGg6IDEwMCU7DQogIGhlaWdodDogNTBweDsNCiAgZGlzcGxheTogZmxleDsNCiAgYWxpZ24taXRlbXM6IGNlbnRlcjsNCiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOw0KICBnYXA6IDVweDsNCiAgcGFkZGluZzogMCAyMHB4Ow0KICBtYXJnaW4tYm90dG9tOiAyMHB4Ow0KICBjb2xvcjogdmFyKC0tcHJpbWFyeS1jbHIpOw0KfQ0KLmNhbGVuZGFyIC5nb3RvLXRvZGF5IC5nb3RvIHsNCiAgZGlzcGxheTogZmxleDsNCiAgYWxpZ24taXRlbXM6IGNlbnRlcjsNCiAgYm9yZGVyLXJhZGl1czogNXB4Ow0KICBvdmVyZmxvdzogaGlkZGVuOw0KICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1wcmltYXJ5LWNscik7DQp9DQouY2FsZW5kYXIgLmdvdG8tdG9kYXkgLmdvdG8gaW5wdXQgew0KICB3aWR0aDogMTAwJTsNCiAgaGVpZ2h0OiAzMHB4Ow0KICBvdXRsaW5lOiBub25lOw0KICBib3JkZXI6IG5vbmU7DQogIGJvcmRlci1yYWRpdXM6IDVweDsNCiAgcGFkZGluZzogMCAyMHB4Ow0KICBjb2xvcjogdmFyKC0tcHJpbWFyeS1jbHIpOw0KICBib3JkZXItcmFkaXVzOiA1cHg7DQp9DQouY2FsZW5kYXIgLmdvdG8tdG9kYXkgYnV0dG9uIHsNCiAgcGFkZGluZzogNXB4IDEwcHg7DQogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXByaW1hcnktY2xyKTsNCiAgYm9yZGVyLXJhZGl1czogNXB4Ow0KICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsNCiAgY3Vyc29yOiBwb2ludGVyOw0KICBjb2xvcjogdmFyKC0tcHJpbWFyeS1jbHIpOw0KfQ0KLmNhbGVuZGFyIC5nb3RvLXRvZGF5IGJ1dHRvbjpob3ZlciB7DQogIGNvbG9yOiAjZmZmOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wcmltYXJ5LWNscik7DQp9DQouY2FsZW5kYXIgLmdvdG8tdG9kYXkgLmdvdG8gYnV0dG9uIHsNCiAgYm9yZGVyOiBub25lOw0KICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLXByaW1hcnktY2xyKTsNCiAgYm9yZGVyLXJhZGl1czogMDsNCn0NCi5jb250YWluZXJDYWxlbmRhciAucmlnaHQgew0KICBwb3NpdGlvbjogcmVsYXRpdmU7DQogIHdpZHRoOiA0MCU7DQogIG1pbi1oZWlnaHQ6IDEwMCU7DQogIHBhZGRpbmc6IDIwcHggMDsNCn0NCg0KLnJpZ2h0IC50b2RheS1kYXRlIHsNCiAgd2lkdGg6IDEwMCU7DQogIGhlaWdodDogNTBweDsNCiAgZGlzcGxheTogZmxleDsNCiAgZmxleC13cmFwOiB3cmFwOw0KICBnYXA6IDEwcHg7DQogIGFsaWduLWl0ZW1zOiBjZW50ZXI7DQogIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsNCiAgcGFkZGluZzogMCA0MHB4Ow0KICBwYWRkaW5nLWxlZnQ6IDcwcHg7DQogIG1hcmdpbi10b3A6IDUwcHg7DQogIG1hcmdpbi1ib3R0b206IDIwcHg7DQogIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOw0KfQ0KLnJpZ2h0IC50b2RheS1kYXRlIC5ldmVudC1kYXkgew0KICAgIGNvbG9yOiAjMDAwOw0KICBmb250LXNpemU6IDJyZW07DQogIGZvbnQtd2VpZ2h0OiA1MDA7DQp9DQoucmlnaHQgLnRvZGF5LWRhdGUgLmV2ZW50LWRhdGUgew0KICBmb250LXNpemU6IDFyZW07DQogIGZvbnQtd2VpZ2h0OiA0MDA7DQogIGNvbG9yOiAjODc4ODk1Ow0KfQ0KLmV2ZW50cyB7DQogIHdpZHRoOiAxMDAlOw0KICBoZWlnaHQ6IDEwMCU7DQogIG1heC1oZWlnaHQ6IDYwMHB4Ow0KICBvdmVyZmxvdy14OiBoaWRkZW47DQogIG92ZXJmbG93LXk6IGF1dG87DQogIGRpc3BsYXk6IGZsZXg7DQogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47DQogIHBhZGRpbmctbGVmdDogNHB4Ow0KfQ0KLmV2ZW50cyAuZXZlbnQgew0KICBwb3NpdGlvbjogcmVsYXRpdmU7DQogIHdpZHRoOiA5NSU7DQogIG1pbi1oZWlnaHQ6IDcwcHg7DQogIGRpc3BsYXk6IGZsZXg7DQogIGp1c3RpZnktY29udGVudDogY2VudGVyOw0KICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOw0KICBnYXA6IDVweDsNCiAgcGFkZGluZzogMCAyMHB4Ow0KICBwYWRkaW5nLWxlZnQ6IDUwcHg7DQogIGNvbG9yOiAjZmZmOw0KICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsICNjOWM5YzksIHRyYW5zcGFyZW50KTsNCiANCn0NCi8qIGV2ZW4gZXZlbnQgKi8NCi5ldmVudHMgLmV2ZW50Om50aC1jaGlsZChldmVuKSB7DQogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50Ow0KfQ0KLyouZXZlbnRzIC5ldmVudDpob3ZlciB7DQogIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdmFyKC0tcHJpbWFyeS1jbHIpLCB0cmFuc3BhcmVudCk7DQp9Ki8NCi5ldmVudHMgLmV2ZW50IC50aXRsZSB7DQogIGRpc3BsYXk6IGZsZXg7DQogIGFsaWduLWl0ZW1zOiBjZW50ZXI7DQogIHBvaW50ZXItZXZlbnRzOiBub25lOw0KfQ0KLmV2ZW50cyAuZXZlbnQgLnRpdGxlIC5ldmVudC10aXRsZSB7DQogIGZvbnQtc2l6ZTogMXJlbTsNCiAgZm9udC13ZWlnaHQ6IDQwMDsNCiAgbWFyZ2luLWxlZnQ6IDIwcHg7DQpwYWRkaW5nLXRvcDogMTVweDsNCn0NCi5ldmVudHMgLmV2ZW50IGkgew0KICBjb2xvcjogdmFyKC0tcHJpbWFyeS1jbHIpOw0KICBmb250LXNpemU6IDAuNXJlbTsNCn0NCi5ldmVudHMgLmV2ZW50OmhvdmVyIGkgew0KICBjb2xvcjogI2ZmZjsNCn0NCi5ldmVudHMgLmV2ZW50IC5ldmVudC10aW1lIHsNCiAgZm9udC1zaXplOiAwLjhyZW07DQogIGZvbnQtd2VpZ2h0OiA0MDA7DQogIGNvbG9yOiAjODc4ODk1Ow0KICBtYXJnaW4tbGVmdDogMTVweDsNCiAgcG9pbnRlci1ldmVudHM6IG5vbmU7DQp9DQouZXZlbnRzIC5ldmVudDpob3ZlciAuZXZlbnQtdGltZSB7DQogIGNvbG9yOiAjZmZmOw0KfQ0KLyogYWRkIHRpY2sgaW4gZXZlbnQgYWZ0ZXIgKi8NCi5ldmVudHMgLmV2ZW50OjphZnRlciB7DQogIGNvbnRlbnQ6ICLinJMiOw0KICBwb3NpdGlvbjogYWJzb2x1dGU7DQogIHRvcDogNTAlOw0KICByaWdodDogMDsNCiAgZm9udC1zaXplOiAzcmVtOw0KICBsaW5lLWhlaWdodDogMTsNCiAgZGlzcGxheTogbm9uZTsNCiAgYWxpZ24taXRlbXM6IGNlbnRlcjsNCiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7DQogIG9wYWNpdHk6IDAuMzsNCiAgY29sb3I6IHZhcigtLXByaW1hcnktY2xyKTsNCiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOw0KfQ0KLmV2ZW50cyAuZXZlbnQ6aG92ZXI6OmFmdGVyIHsNCiAgZGlzcGxheTogZmxleDsNCn0NCi5hZGQtZXZlbnQgew0KICBwb3NpdGlvbjogYWJzb2x1dGU7DQogIGJvdHRvbTogMzBweDsNCiAgcmlnaHQ6IDMwcHg7DQogIHdpZHRoOiA0MHB4Ow0KICBoZWlnaHQ6IDQwcHg7DQogIGRpc3BsYXk6IGZsZXg7DQogIGFsaWduLWl0ZW1zOiBjZW50ZXI7DQogIGp1c3RpZnktY29udGVudDogY2VudGVyOw0KICBmb250LXNpemU6IDFyZW07DQogIGNvbG9yOiAjODc4ODk1Ow0KICBib3JkZXI6IDJweCBzb2xpZCAjODc4ODk1Ow0KICBvcGFjaXR5OiAwLjU7DQogIGJvcmRlci1yYWRpdXM6IDUwJTsNCiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7DQogIGN1cnNvcjogcG9pbnRlcjsNCn0NCi5hZGQtZXZlbnQ6aG92ZXIgew0KICBvcGFjaXR5OiAxOw0KfQ0KLmFkZC1ldmVudCBpIHsNCiAgcG9pbnRlci1ldmVudHM6IG5vbmU7DQp9DQouZXZlbnRzIC5uby1ldmVudCB7DQogIHdpZHRoOiAxMDAlOw0KICBoZWlnaHQ6IDEwMCU7DQogIGRpc3BsYXk6IGZsZXg7DQogIGFsaWduLWl0ZW1zOiBjZW50ZXI7DQogIGp1c3RpZnktY29udGVudDogY2VudGVyOw0KICBmb250LXNpemU6IDEuNXJlbTsNCiAgZm9udC13ZWlnaHQ6IDUwMDsNCiAgY29sb3I6ICM4Nzg4OTU7DQp9DQouYWRkLWV2ZW50LXdyYXBwZXIgew0KICBwb3NpdGlvbjogYWJzb2x1dGU7DQogIGJvdHRvbTogMTAwcHg7DQogIGxlZnQ6IDUwJTsNCiAgd2lkdGg6IDkwJTsNCiAgbWF4LWhlaWdodDogMDsNCiAgb3ZlcmZsb3c6IGhpZGRlbjsNCiAgYm9yZGVyLXJhZGl1czogNXB4Ow0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOw0KICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7DQogIHRyYW5zaXRpb246IG1heC1oZWlnaHQgMC41cyBlYXNlOw0KfQ0KLmFkZC1ldmVudC13cmFwcGVyLmFjdGl2ZSB7DQogIG1heC1oZWlnaHQ6IDMwMHB4Ow0KfQ0KLmFkZC1ldmVudC1oZWFkZXIgew0KICB3aWR0aDogMTAwJTsNCiAgaGVpZ2h0OiA1MHB4Ow0KICBkaXNwbGF5OiBmbGV4Ow0KICBhbGlnbi1pdGVtczogY2VudGVyOw0KICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47DQogIHBhZGRpbmc6IDAgMjBweDsNCiAgY29sb3I6ICMzNzNjNGY7DQogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZjVmNWY1Ow0KfQ0KLmFkZC1ldmVudC1oZWFkZXIgLmNsb3NlIHsNCiAgZm9udC1zaXplOiAxLjVyZW07DQogIGN1cnNvcjogcG9pbnRlcjsNCn0NCi5hZGQtZXZlbnQtaGVhZGVyIC5jbG9zZTpob3ZlciB7DQogIGNvbG9yOiB2YXIoLS1wcmltYXJ5LWNscik7DQp9DQouYWRkLWV2ZW50LWhlYWRlciAudGl0bGUgew0KICBmb250LXNpemU6IDEuMnJlbTsNCiAgZm9udC13ZWlnaHQ6IDUwMDsNCn0NCi5hZGQtZXZlbnQtYm9keSB7DQogIHdpZHRoOiAxMDAlOw0KICBoZWlnaHQ6IDEwMCU7DQogIGRpc3BsYXk6IGZsZXg7DQogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47DQogIGdhcDogNXB4Ow0KICBwYWRkaW5nOiAyMHB4Ow0KfQ0KLmFkZC1ldmVudC1ib2R5IC5hZGQtZXZlbnQtaW5wdXQgew0KICB3aWR0aDogMTAwJTsNCiAgaGVpZ2h0OiA0MHB4Ow0KICBkaXNwbGF5OiBmbGV4Ow0KICBhbGlnbi1pdGVtczogY2VudGVyOw0KICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47DQogIGdhcDogMTBweDsNCn0NCi5hZGQtZXZlbnQtYm9keSAuYWRkLWV2ZW50LWlucHV0IGlucHV0IHsNCiAgd2lkdGg6IDEwMCU7DQogIGhlaWdodDogMTAwJTsNCiAgb3V0bGluZTogbm9uZTsNCiAgYm9yZGVyOiBub25lOw0KICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Y1ZjVmNTsNCiAgcGFkZGluZzogMCAxMHB4Ow0KICBmb250LXNpemU6IDFyZW07DQogIGZvbnQtd2VpZ2h0OiA0MDA7DQogIGNvbG9yOiAjMzczYzRmOw0KfQ0KLmFkZC1ldmVudC1ib2R5IC5hZGQtZXZlbnQtaW5wdXQgaW5wdXQ6OnBsYWNlaG9sZGVyIHsNCiAgY29sb3I6ICNhNWE1YTU7DQp9DQouYWRkLWV2ZW50LWJvZHkgLmFkZC1ldmVudC1pbnB1dCBpbnB1dDpmb2N1cyB7DQogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1wcmltYXJ5LWNscik7DQp9DQouYWRkLWV2ZW50LWJvZHkgLmFkZC1ldmVudC1pbnB1dCBpbnB1dDpmb2N1czo6cGxhY2Vob2xkZXIgew0KICBjb2xvcjogdmFyKC0tcHJpbWFyeS1jbHIpOw0KfQ0KLmFkZC1ldmVudC1mb290ZXIgew0KICBkaXNwbGF5OiBmbGV4Ow0KICBhbGlnbi1pdGVtczogY2VudGVyOw0KICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsNCiAgcGFkZGluZzogMjBweDsNCn0NCi5hZGQtZXZlbnQtZm9vdGVyIC5hZGQtZXZlbnQtYnRuIHsNCiAgaGVpZ2h0OiA0MHB4Ow0KICBmb250LXNpemU6IDFyZW07DQogIGZvbnQtd2VpZ2h0OiA1MDA7DQogIG91dGxpbmU6IG5vbmU7DQogIGJvcmRlcjogbm9uZTsNCiAgY29sb3I6ICNmZmY7DQogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktY2xyKTsNCiAgYm9yZGVyLXJhZGl1czogNXB4Ow0KICBjdXJzb3I6IHBvaW50ZXI7DQogIHBhZGRpbmc6IDVweCAxMHB4Ow0KICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1wcmltYXJ5LWNscik7DQp9DQouYWRkLWV2ZW50LWZvb3RlciAuYWRkLWV2ZW50LWJ0bjpob3ZlciB7DQogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Ow0KICBjb2xvcjogdmFyKC0tcHJpbWFyeS1jbHIpOw0KfQ0KDQovKiBtZWRpYSBxdWVyaWVzICovDQoNCkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEwMDBweCkgew0KICBib2R5IHsNCiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsNCiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7DQogIH0NCiAgLmNvbnRhaW5lckNhbGVuZGFyIHsNCiAgICBtaW4taGVpZ2h0OiAxMDB2aDsNCiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOw0KICAgIGJvcmRlci1yYWRpdXM6IDA7DQogIH0NCiAgLmNvbnRhaW5lckNhbGVuZGFyIC5sZWZ0IHsNCiAgICB3aWR0aDogMTAwJTsNCiAgICBoZWlnaHQ6IDEwMCU7DQogICAgcGFkZGluZzogMjBweCAwOw0KICB9DQogIC5jb250YWluZXJDYWxlbmRhciAucmlnaHQgew0KICAgIHdpZHRoOiAxMDAlOw0KICAgIGhlaWdodDogMTAwJTsNCiAgICBwYWRkaW5nOiAyMHB4IDA7DQogIH0NCiAgLmNhbGVuZGFyOjpiZWZvcmUsDQogIC5jYWxlbmRhcjo6YWZ0ZXIgew0KICAgIHRvcDogMTAwJTsNCiAgICBsZWZ0OiA1MCU7DQogICAgd2lkdGg6IDk3JTsNCiAgICBoZWlnaHQ6IDEycHg7DQogICAgYm9yZGVyLXJhZGl1czogMCAwIDVweCA1cHg7DQogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOw0KICB9DQogIC5jYWxlbmRhcjo6YmVmb3JlIHsNCiAgICB3aWR0aDogOTQlOw0KICAgIHRvcDogY2FsYygxMDAlICsgMTJweCk7DQogIH0NCiAgLmV2ZW50cyB7DQogICAgcGFkZGluZy1ib3R0b206IDM0MHB4Ow0KICB9DQogIC5hZGQtZXZlbnQtd3JhcHBlciB7DQogICAgYm90dG9tOiAxMDBweDsNCiAgfQ0KfQ0KQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTAwcHgpIHsNCiAgLmNhbGVuZGFyIC5tb250aCB7DQogICAgaGVpZ2h0OiA3NXB4Ow0KICB9DQogIC5jYWxlbmRhciAud2Vla2RheXMgew0KICAgIGhlaWdodDogNTBweDsNCiAgfQ0KICAuY2FsZW5kYXIgLmRheXMgLmRheSB7DQogICAgaGVpZ2h0OiA0MHB4Ow0KICAgIGZvbnQtc2l6ZTogMC44cmVtOw0KICB9DQogIC5jYWxlbmRhciAuZGF5cyAuZGF5LmFjdGl2ZSwNCiAgLmNhbGVuZGFyIC5kYXlzIC5kYXkudG9kYXkgew0KICAgIGZvbnQtc2l6ZTogMXJlbTsNCiAgfQ0KICAucmlnaHQgLnRvZGF5LWRhdGUgew0KICAgIHBhZGRpbmc6IDIwcHg7DQogIH0NCn0NCg0KLmNyZWRpdHMgew0KICBwb3NpdGlvbjogYWJzb2x1dGU7DQogIGJvdHRvbTogMDsNCiAgbGVmdDogMDsNCiAgcmlnaHQ6IDA7DQogIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgcGFkZGluZzogMTBweDsNCiAgZm9udC1zaXplOiAxMnB4Ow0KICBjb2xvcjogI2ZmZjsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2IzOGFkZDsNCn0NCi5jcmVkaXRzIGEgew0KICBjb2xvcjogI2ZmZjsNCiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOw0KICBmb250LXdlaWdodDogNjAwOw0KfQ0KLmNyZWRpdHMgYTpob3ZlciB7DQogIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOw0KfQ0KPC9zdHlsZT4NCiAgIA0KPGRpdiBpZD0ibG9hZGVyIiBzdHlsZT0iZGlzcGxheTpibG9jazsgcG9zaXRpb246IGZpeGVkOyB0b3A6IDA7IHJpZ2h0OiAwOyBib3R0b206IDA7IGxlZnQ6IDA7IGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsMC44KTsgei1pbmRleDogOTk5OTsiPg0KICAgICAgICA8ZGl2IGNsYXNzPSJzcGlubmVyLWNvbnRhaW5lciI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGlubmVyIj48L2Rpdj4NCiAgICAgICAgICAgIENhcmdhbmRvLi4uDQogICAgICAgIDwvZGl2Pg0KICAgIDwvZGl2Pg0KDQogICAgPGRpdiBjbGFzcz0iY29udGFpbmVyQ2FsZW5kYXIiPg0KICAgICAgPGRpdiBjbGFzcz0ibGVmdCI+DQogICAgICAgIDxkaXYgY2xhc3M9ImNhbGVuZGFyIj4NCiAgICAgICAgICA8ZGl2IGNsYXNzPSJtb250aCI+DQogICAgICAgICAgICA8aSBjbGFzcz0iZmFzIGZhLWFuZ2xlLWxlZnQgcHJldiI+PC9pPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGF0ZSI+ZGljaWVtYnJlIDIwMTU8L2Rpdj4NCiAgICAgICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtYW5nbGUtcmlnaHQgbmV4dCI+PC9pPg0KICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgIDxkaXYgY2xhc3M9IndlZWtkYXlzIj4NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgPGRpdj5MdW48L2Rpdj4NCiAgICAgICAgICAgIDxkaXY+TWFyPC9kaXY+DQogICAgICAgICAgICA8ZGl2Pk1pZTwvZGl2Pg0KICAgICAgICAgICAgPGRpdj5KdWU8L2Rpdj4NCiAgICAgICAgICAgIDxkaXY+VmllPC9kaXY+DQogICAgICAgICAgICA8ZGl2PlNhYjwvZGl2Pg0KPGRpdj5Eb208L2Rpdj4NCiAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICA8ZGl2IGNsYXNzPSJkYXlzIj48L2Rpdj4NCiAgICAgICAgICANCiAgICAgICAgPC9kaXY+DQogICAgICA8L2Rpdj4NCiAgICAgIDxkaXYgY2xhc3M9InJpZ2h0Ij4NCiAgICAgICAgPGRpdiBjbGFzcz0idG9kYXktZGF0ZSI+DQogICAgICAgICAgPGRpdiBjbGFzcz0iZXZlbnQtZGF5Ij48L2Rpdj4NCiAgICAgICAgICA8ZGl2IGNsYXNzPSJldmVudC1kYXRlIj4xMiBEaWNpZW1icmUgMjAyMjwvZGl2Pg0KICAgICAgICA8L2Rpdj4NCiAgICAgICAgPGRpdiBjbGFzcz0iZXZlbnRzIj48L2Rpdj4NCiAgICAgICAgDQogICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCjxzY3JpcHQ+DQogIGNvbnN0IGxvYWRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2FkZXInKTsNCiAgY29uc3QgY2FsZW5kYXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuY2FsZW5kYXIiKSwNCiAgZGF0ZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5kYXRlIiksDQogIGRheXNDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuZGF5cyIpLA0KICBwcmV2ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnByZXYiKSwNCiAgbmV4dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5uZXh0IiksDQogIHRvZGF5QnRuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnRvZGF5LWJ0biIpLA0KICBnb3RvQnRuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmdvdG8tYnRuIiksDQogIGRhdGVJbnB1dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5kYXRlLWlucHV0IiksDQogIGV2ZW50RGF5ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmV2ZW50LWRheSIpLA0KICBldmVudERhdGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuZXZlbnQtZGF0ZSIpLA0KICBldmVudHNDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuZXZlbnRzIiksDQogIGFkZEV2ZW50V3JhcHBlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5hZGQtZXZlbnQtd3JhcHBlciAiKSwNCiAgYWRkRXZlbnRDbG9zZUJ0biA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5jbG9zZSAiKSwNCiAgYWRkRXZlbnRUaXRsZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5ldmVudC1uYW1lICIpLA0KICBhZGRFdmVudEZyb20gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuZXZlbnQtdGltZS1mcm9tICIpLA0KICBhZGRFdmVudFRvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmV2ZW50LXRpbWUtdG8gIiksDQogIGFkZEV2ZW50U3VibWl0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmFkZC1ldmVudC1idG4gIik7DQoNCmxldCB0b2RheSA9IG5ldyBEYXRlKCk7DQpsZXQgYWN0aXZlRGF5Ow0KbGV0IG1vbnRoID0gdG9kYXkuZ2V0TW9udGgoKTsNCmxldCB5ZWFyID0gdG9kYXkuZ2V0RnVsbFllYXIoKTsNCg0KY29uc3QgbW9udGhzID0gWw0KICAiRW5lcm8iLA0KICAiRmVicmVybyIsDQogICJNYXJ6byIsDQogICJBYnJpbCIsDQogICJNYXlvIiwNCiAgIkp1bmlvIiwNCiAgIkp1bGlvIiwNCiAgIkFnb3N0byIsDQogICJTZXB0aWVtYnJlIiwNCiAgIk9jdHVicmUiLA0KICAiTm92aWVtYnJlIiwNCiAgIkRpY2llbWJyZSIsDQpdOw0KDQovLyBERSBBUVVJIFNFIENBUkdBTiBMT1MgRVZFTlRPUw0KYXN5bmMgZnVuY3Rpb24gY2FyZ2FyRXZlbnRvcygpIHsNCiAgdHJ5IHsNCiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKCdodHRwczovL2NvZmdpcHV6a29hLnByZXRvb2xzLm5ldC9jYWxlbmRhcmlvJyk7DQogICAgaWYgKCFyZXNwb25zZS5vaykgew0KICAgICAgdGhyb3cgbmV3IEVycm9yKGBIVFRQIGVycm9yISBTdGF0dXM6ICR7cmVzcG9uc2Uuc3RhdHVzfWApOw0KICAgIH0NCiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpOw0KDQpyZXR1cm4gZGF0YTsNCg0KICB9IGNhdGNoIChlcnJvcikgew0KICAgIGNvbnNvbGUuZXJyb3IoJ0h1Ym8gdW4gZXJyb3IgYWwgb2J0ZW5lciBsb3MgZGF0b3M6JywgZXJyb3IpOw0KICAgIHRocm93IGVycm9yOyAgLy8gT3BjaW9uYWw6IHB1ZWRlcyBsYW56YXIgZWwgZXJyb3IgcGFyYSBtYW5lamFybG8gbcOhcyBhcnJpYmEgZW4gbGEgY2FkZW5hIGRlIGxsYW1hZGFzDQogIH0NCn0NCmxldCBldmVudHNBcnIgPSBbXTsNCg0KaW5pY2lhcigpOw0KYXN5bmMgZnVuY3Rpb24gaW5pY2lhcigpIHsNCiAgICBldmVudHNBcnIgPSBhd2FpdCBjYXJnYXJFdmVudG9zKCk7DQogICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oImV2ZW50cyIsIEpTT04uc3RyaW5naWZ5KGV2ZW50c0FycikpOw0KICAgIGdldEV2ZW50cygpDQogICAgaW5pdENhbGVuZGFyKCk7DQp9DQovL2Z1bmNpw7NuIHBhcmEgYWdyZWdhciBkw61hcyBlbiBkw61hcyBjb24gbGEgY2xhc2UgImRheSIgeSAicHJldi1kYXRlIiAibmV4dC1kYXRlIiBlbiBsb3MgZMOtYXMgZGVsIG1lcyBhbnRlcmlvciB5IHNpZ3VpZW50ZSwgeSBhY3Rpdm8gZW4gZWwgZMOtYSBkZSBob3kuDQpmdW5jdGlvbiBpbml0Q2FsZW5kYXIoKSB7DQogIGNvbnN0IGZpcnN0RGF5ID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpOw0KICBjb25zdCBsYXN0RGF5ID0gbmV3IERhdGUoeWVhciwgbW9udGggKyAxLCAwKTsNCiAgY29uc3QgcHJldkxhc3REYXkgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMCk7DQogIGNvbnN0IHByZXZEYXlzID0gcHJldkxhc3REYXkuZ2V0RGF0ZSgpOw0KICBjb25zdCBsYXN0RGF0ZSA9IGxhc3REYXkuZ2V0RGF0ZSgpOw0KICBjb25zdCBkYXkgPSAoZmlyc3REYXkuZ2V0RGF5KCkgPT09IDApID8gNiA6IGZpcnN0RGF5LmdldERheSgpIC0gMTsNCi8vIGFqdXN0ZSBlbCBkaWEgcGFyYSBxdWUgY29taWVuemUgZWwgbHVuZXMNCg0KICBjb25zdCBuZXh0RGF5cyA9IDcgLSAobGFzdERheS5nZXREYXkoKSA9PT0gMCA\/IDcgOiBsYXN0RGF5LmdldERheSgpKTsNCg0KDQogIGRhdGUuaW5uZXJIVE1MID0gbW9udGhzW21vbnRoXSArICIgIiArIHllYXI7DQoNCiAgbGV0IGRheXMgPSAiIjsNCg0KICBmb3IgKGxldCB4ID0gZGF5OyB4ID4gMDsgeC0tKSB7DQogICAgZGF5cyArPSBgPGRpdiBjbGFzcz0iZGF5IHByZXYtZGF0ZSI+JHtwcmV2RGF5cyAtIHggKyAxfTwvZGl2PmA7DQogIH0NCg0KICBmb3IgKGxldCBpID0gMTsgaSA8PSBsYXN0RGF0ZTsgaSsrKSB7DQogICANCiAgICAvL2NoZWNrIGlmIGV2ZW50IGlzIHByZXNlbnQgb24gdGhhdCBkYXkNCiAgICBsZXQgZXZlbnQgPSBmYWxzZTsNCiAgICBldmVudHNBcnIuZm9yRWFjaCgoZXZlbnRPYmopID0+IHsNCiAgICAgIGlmICgNCiAgICAgICAgZXZlbnRPYmouZGF5ID09PSBpICYmDQogICAgICAgIGV2ZW50T2JqLm1vbnRoID09PSBtb250aCArIDEgJiYNCiAgICAgICAgZXZlbnRPYmoueWVhciA9PT0geWVhcg0KICAgICAgKSB7DQogICAgICAgIGV2ZW50ID0gdHJ1ZTsNCiAgICAgIH0NCiAgICB9KTsNCiAgICBpZiAoDQogICAgICBpID09PSBuZXcgRGF0ZSgpLmdldERhdGUoKSAmJg0KICAgICAgeWVhciA9PT0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpICYmDQogICAgICBtb250aCA9PT0gbmV3IERhdGUoKS5nZXRNb250aCgpDQogICAgKSB7DQogICAgICBhY3RpdmVEYXkgPSBpOw0KICAgICAgZ2V0QWN0aXZlRGF5KGkpOw0KICAgICAgdXBkYXRlRXZlbnRzKGkpOw0KICAgICAgaWYgKGV2ZW50KSB7DQogICAgICAgIGRheXMgKz0gYDxkaXYgY2xhc3M9ImRheSB0b2RheSBhY3RpdmUgZXZlbnQiPiR7aX08L2Rpdj5gOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgZGF5cyArPSBgPGRpdiBjbGFzcz0iZGF5IHRvZGF5IGFjdGl2ZSI+JHtpfTwvZGl2PmA7DQogICAgICB9DQogICAgfSBlbHNlIHsNCiAgICAgIGlmIChldmVudCkgew0KICAgICAgICBkYXlzICs9IGA8ZGl2IGNsYXNzPSJkYXkgZXZlbnQiPiR7aX08L2Rpdj5gOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgZGF5cyArPSBgPGRpdiBjbGFzcz0iZGF5ICI+JHtpfTwvZGl2PmA7DQogICAgICB9DQogICAgfQ0KICB9DQoNCiAgZm9yIChsZXQgaiA9IDE7IGogPD0gbmV4dERheXM7IGorKykgew0KICAgIGRheXMgKz0gYDxkaXYgY2xhc3M9ImRheSBuZXh0LWRhdGUiPiR7an08L2Rpdj5gOw0KICB9DQogIGRheXNDb250YWluZXIuaW5uZXJIVE1MID0gZGF5czsNCiAgYWRkTGlzdG5lcigpOw0KfQ0KDQovL2Z1bmNpw7NuIHBhcmEgYWdyZWdhciBtZXMgeSBhw7FvIGVuIGxvcyBib3RvbmVzIGRlIGFudGVyaW9yIHkgc2lndWllbnRlLg0KZnVuY3Rpb24gcHJldk1vbnRoKCkgew0KICBtb250aC0tOw0KICBpZiAobW9udGggPCAwKSB7DQogICAgbW9udGggPSAxMTsNCiAgICB5ZWFyLS07DQogIH0NCiAgaW5pdENhbGVuZGFyKCk7DQp9DQoNCmZ1bmN0aW9uIG5leHRNb250aCgpIHsNCiAgbW9udGgrKzsNCiAgaWYgKG1vbnRoID4gMTEpIHsNCiAgICBtb250aCA9IDA7DQogICAgeWVhcisrOw0KICB9DQogIGluaXRDYWxlbmRhcigpOw0KfQ0KDQpwcmV2LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgcHJldk1vbnRoKTsNCm5leHQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBuZXh0TW9udGgpOw0KDQovLyBpbml0Q2FsZW5kYXIoKTsNCg0KDQovL2Z1bmN0aW9uIHRvIGFkZCBhY3RpdmUgb24gZGF5DQpmdW5jdGlvbiBhZGRMaXN0bmVyKCkgew0KICBjb25zdCBkYXlzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmRheSIpOw0KICBkYXlzLmZvckVhY2goKGRheSkgPT4gew0KICAgIGRheS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIChlKSA9PiB7DQogICAgICBnZXRBY3RpdmVEYXkoZS50YXJnZXQuaW5uZXJIVE1MKTsNCiAgICAgIHVwZGF0ZUV2ZW50cyhOdW1iZXIoZS50YXJnZXQuaW5uZXJIVE1MKSk7DQogICAgICBhY3RpdmVEYXkgPSBOdW1iZXIoZS50YXJnZXQuaW5uZXJIVE1MKTsNCiAgICAgIC8vcmVtb3ZlIGFjdGl2ZQ0KICAgICAgZGF5cy5mb3JFYWNoKChkYXkpID0+IHsNCiAgICAgICAgZGF5LmNsYXNzTGlzdC5yZW1vdmUoImFjdGl2ZSIpOw0KICAgICAgfSk7DQogICAgICAvL2lmIGNsaWNrZWQgcHJldi1kYXRlIG9yIG5leHQtZGF0ZSBzd2l0Y2ggdG8gdGhhdCBtb250aA0KICAgICAgaWYgKGUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygicHJldi1kYXRlIikpIHsNCiAgICAgICAgcHJldk1vbnRoKCk7DQogICAgICAgIC8vYWRkIGFjdGl2ZSB0byBjbGlja2VkIGRheSBhZnRlIG1vbnRoIGlzIGNoYW5nZQ0KICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsNCiAgICAgICAgICAvL2FkZCBhY3RpdmUgd2hlcmUgbm8gcHJldi1kYXRlIG9yIG5leHQtZGF0ZQ0KICAgICAgICAgIGNvbnN0IGRheXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuZGF5Iik7DQogICAgICAgICAgZGF5cy5mb3JFYWNoKChkYXkpID0+IHsNCiAgICAgICAgICAgIGlmICgNCiAgICAgICAgICAgICAgIWRheS5jbGFzc0xpc3QuY29udGFpbnMoInByZXYtZGF0ZSIpICYmDQogICAgICAgICAgICAgIGRheS5pbm5lckhUTUwgPT09IGUudGFyZ2V0LmlubmVySFRNTA0KICAgICAgICAgICAgKSB7DQogICAgICAgICAgICAgIGRheS5jbGFzc0xpc3QuYWRkKCJhY3RpdmUiKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9KTsNCiAgICAgICAgfSwgMTAwKTsNCiAgICAgIH0gZWxzZSBpZiAoZS50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCJuZXh0LWRhdGUiKSkgew0KICAgICAgICBuZXh0TW9udGgoKTsNCiAgICAgICAgLy9hZGQgYWN0aXZlIHRvIGNsaWNrZWQgZGF5IGFmdGUgbW9udGggaXMgY2hhbmdlZA0KICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsNCiAgICAgICAgICBjb25zdCBkYXlzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmRheSIpOw0KICAgICAgICAgIGRheXMuZm9yRWFjaCgoZGF5KSA9PiB7DQogICAgICAgICAgICBpZiAoDQogICAgICAgICAgICAgICFkYXkuY2xhc3NMaXN0LmNvbnRhaW5zKCJuZXh0LWRhdGUiKSAmJg0KICAgICAgICAgICAgICBkYXkuaW5uZXJIVE1MID09PSBlLnRhcmdldC5pbm5lckhUTUwNCiAgICAgICAgICAgICkgew0KICAgICAgICAgICAgICBkYXkuY2xhc3NMaXN0LmFkZCgiYWN0aXZlIik7DQogICAgICAgICAgICB9DQogICAgICAgICAgfSk7DQogICAgICAgIH0sIDEwMCk7DQogICAgICB9IGVsc2Ugew0KICAgICAgICBlLnRhcmdldC5jbGFzc0xpc3QuYWRkKCJhY3RpdmUiKTsNCiAgICAgIH0NCiAgICB9KTsNCiAgfSk7DQp9DQoNCmZ1bmN0aW9uIGRpYUVzKGRheU5hbWUpIHsNCiAgc3dpdGNoIChkYXlOYW1lKSB7DQogICAgY2FzZSAnTW9uJzoNCiAgICAgIHJldHVybiBkYXlOYW1lID0gJ0x1bic7DQogICAgY2FzZSAnVHVlJzoNCiAgICAgIHJldHVybiBkYXlOYW1lID0gJ01hcic7DQogICAgY2FzZSAnV2VkJzoNCiAgICAgIHJldHVybiBkYXlOYW1lID0gJ01pw6knOw0KICAgIGNhc2UgJ1RodSc6DQogICAgICByZXR1cm4gZGF5TmFtZSA9ICdKdWUnOw0KICAgIGNhc2UgJ0ZyaSc6DQogICAgICByZXR1cm4gZGF5TmFtZSA9ICdWaWUnOw0KICAgIGNhc2UgJ1NhdCc6DQogICAgICByZXR1cm4gZGF5TmFtZSA9ICdTw6FiJzsNCiAgICBjYXNlICdTdW4nOg0KICAgICAgcmV0dXJuIGRheU5hbWUgPSAnRG9tJzsNCiAgICBkZWZhdWx0Og0KICAgICAgcmV0dXJuIGRheU5hbWU7IC8vIERldnVlbHZlIGVsIG1pc21vIHZhbG9yIHNpIG5vIGNvaW5jaWRlIGNvbiBuaW5ndW5vDQogIH0NCn0NCg0KLy9mdW5jdGlvbiBnZXQgYWN0aXZlIGRheSBkYXkgbmFtZSBhbmQgZGF0ZSBhbmQgdXBkYXRlIGV2ZW50ZGF5IGV2ZW50ZGF0ZQ0KZnVuY3Rpb24gZ2V0QWN0aXZlRGF5KGRhdGUpIHsNCiAgY29uc3QgZGF5ID0gbmV3IERhdGUoeWVhciwgbW9udGgsIGRhdGUpOw0KICBsZXQgZGF5TmFtZSA9IGRheS50b1N0cmluZygpLnNwbGl0KCIgIilbMF07DQogIGRheU5hbWUgPSBkaWFFcyhkYXlOYW1lKTsNCiAgZXZlbnREYXkuaW5uZXJIVE1MID0gZGF5TmFtZTsNCiAgZXZlbnREYXRlLmlubmVySFRNTCA9IGRhdGUgKyAiICIgKyBtb250aHNbbW9udGhdICsgIiAiICsgeWVhcjsNCn0NCg0KLy9mdW5jdGlvbiB1cGRhdGUgZXZlbnRzIHdoZW4gYSBkYXkgaXMgYWN0aXZlDQpmdW5jdGlvbiB1cGRhdGVFdmVudHMoZGF0ZSkgew0KICBsZXQgZXZlbnRzID0gIiI7DQogIGV2ZW50c0Fyci5mb3JFYWNoKChldmVudCkgPT4gew0KICAgIGlmICgNCiAgICAgIGRhdGUgPT09IGV2ZW50LmRheSAmJg0KICAgICAgbW9udGggKyAxID09PSBldmVudC5tb250aCAmJg0KICAgICAgeWVhciA9PT0gZXZlbnQueWVhcg0KICAgICkgew0KICAgICAgbGV0IGlkRiA9IGV2ZW50LmlkOw0KICAgICAgZXZlbnQuZXZlbnRzLmZvckVhY2goKGV2ZW50KSA9PiB7DQogICAgICAgIGV2ZW50cyArPSBgPGEgaHJlZj0iL2Zvcm1hY2lvbmVzLz9pZD0ke2lkRn0iIHN0eWxlPSJjb2xvcjogaW5oZXJpdDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJldmVudCI+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPg0KICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmFzIGZhLWNpcmNsZSI+PC9pPg0KICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9ImV2ZW50LXRpdGxlIj4ke2V2ZW50LnRpdGxlfTwvaDM+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZXZlbnQtdGltZSI+DQogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJldmVudC10aW1lIj4ke2V2ZW50LnRpbWV9PC9zcGFuPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIDwvYT5gOw0KICAgICAgfSk7DQogICAgfQ0KICB9KTsNCiAgaWYgKGV2ZW50cyA9PT0gIiIpIHsNCiAgICBldmVudHMgPSBgPGRpdiBjbGFzcz0ibm8tZXZlbnQiPg0KICAgICAgICAgICAgPGgzPlNpbiBFdmVudG9zPC9oMz4NCiAgICAgICAgPC9kaXY+YDsNCiAgfQ0KICBldmVudHNDb250YWluZXIuaW5uZXJIVE1MID0gZXZlbnRzOw0KICBzYXZlRXZlbnRzKCk7DQp9DQoNCg0KZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoKSB7DQogIHZhciBvc2NjcmVkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7DQogIG9zY2NyZWQuaW5uZXJIVE1MID0NCiAgICAiIjsNCiAgb3NjY3JlZC5zdHlsZS5wb3NpdGlvbiA9ICJhYnNvbHV0ZSI7DQogIG9zY2NyZWQuc3R5bGUuYm90dG9tID0gIjAiOw0KICBvc2NjcmVkLnN0eWxlLnJpZ2h0ID0gIjAiOw0KICBvc2NjcmVkLnN0eWxlLmZvbnRTaXplID0gIjEwcHgiOw0KICBvc2NjcmVkLnN0eWxlLmNvbG9yID0gIiNjY2MiOw0KICBvc2NjcmVkLnN0eWxlLmZvbnRGYW1pbHkgPSAic2Fucy1zZXJpZiI7DQogIG9zY2NyZWQuc3R5bGUucGFkZGluZyA9ICI1cHgiOw0KICBvc2NjcmVkLnN0eWxlLmJhY2tncm91bmQgPSAiI2ZmZiI7DQogIG9zY2NyZWQuc3R5bGUuYm9yZGVyVG9wTGVmdFJhZGl1cyA9ICI1cHgiOw0KICBvc2NjcmVkLnN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzID0gIjVweCI7DQogIG9zY2NyZWQuc3R5bGUuYm94U2hhZG93ID0gIjAgMCA1cHggI2NjYyI7DQogIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQob3NjY3JlZCk7DQp9DQoNCmRlZmluZVByb3BlcnR5KCk7DQoNCi8vRnVuY2lvbiBwYXJhIGd1YXJkYXIgZXZlbnRvcyBlbiBsb2NhbFN0b3JhZ2UNCmZ1bmN0aW9uIHNhdmVFdmVudHMoKSB7DQogIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCJldmVudHMiLCBKU09OLnN0cmluZ2lmeShldmVudHNBcnIpKTsNCn0NCi8vRnVuY2lvbiBwYXJhIHJlY3VwZXJhciBldmVudG9zIGRlIGxvY2FsU3RvcmFnZQ0KZnVuY3Rpb24gZ2V0RXZlbnRzKCkgew0KICAvL3ZlcmlmaWNhciBzaSBsb3MgZXZlbnRvcyB5YSBlc3TDoW4gZ3VhcmRhZG9zIGVuIGVsIGFsbWFjZW5hbWllbnRvIGxvY2FsLCBsdWVnbyBkZXZvbHZlciBlbCBldmVudG8sIGRlIGxvIGNvbnRyYXJpbywgbmFkYQ0KICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oImV2ZW50cyIpID09PSBudWxsKSB7DQogICAgcmV0dXJuOw0KICB9DQogIGxvYWRlci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KfQ0KLy8gRXNjdWNoYSBsb3MgY2xpY3MgZW4gZWwgY29udGVuZWRvciBkZSBldmVudG9zDQpkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZXZlbnRzJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7DQogICAgLy8gVmVyaWZpY2Egc2kgZWwgZWxlbWVudG8gY2xpY2FkbyBlcyB1biBlbmxhY2UNCiAgICBpZiAoZS50YXJnZXQudGFnTmFtZSA9PT0gJ0EnKSB7DQogICAgICAgIC8vIEFxdcOtIHB1ZWRlcyBtYW5lamFyIGVsIGNsaWMgZW4gZWwgZW5sYWNlLCBzaSBlcyBuZWNlc2FyaW8NCiAgICAgICAgY29uc29sZS5sb2coJ0VubGFjZSBjbGljYWRvOicsIGUudGFyZ2V0LmhyZWYpOw0KICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7DQogICAgfQ0KfSk7DQoNCjwvc2NyaXB0Pg==[\/vc_raw_html][\/vc_column][\/vc_row]<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>[vc_row][vc_column width=&#8221;1\/1&#8243;][vc_raw_html]PGxpbmsNCiAgICByZWw9InN0eWxlc2hlZXQiDQogICAgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvZm9udC1hd2Vzb21lLzYuMi4wL2Nzcy9hbGwubWluLmNzcyINCiAgICBpbnRlZ3JpdHk9InNoYTUxMi14aDZPL0NrUW9QT1dEZFlURHFlUmRQQ1ZkMVNwdkNBOVhYY1VuWlMyRm1KTnAxY29BRnp2dENOOUJtYW1FKzRhSEs4eXlVSFVTQ2NKSGdYbG9UeVQyQT09Ig0KICAgIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiDQogICAgcmVmZXJyZXJwb2xpY3k9Im5vLXJlZmVycmVyIg0KLz4NCjxzdHlsZT4NCiAgIDpyb290IHsNCiAgLS1wcmltYXJ5LWNscjogIzhmMTg2MDsNCn0NCi5jb250YWluZXJDYWxlbmRhciB7DQogICAgcG9zaXRpb246IHJlbGF0aXZlOw0KICAgIA0KICAgIG1hcmdpbjogMCBhdXRvOw0KICAgIA0KICAgIHBhZGRpbmc6IDVweDsNCiAgICBtYXJnaW4tYm90dG9tOiA4MHB4Ow0KICAgIGNvbG9yOiAjZmZmOw0KICAgIGRpc3BsYXk6IGZsZXg7DQogICAgYmFja2dyb3VuZC1jb2xvcjogI2RkZGRkZDsNCiAgICBib3JkZXItcmFkaXVzOiAxMHB4Ow0KfQ0KDQoubGVmdCB7DQogIHdpZHRoOiA2MCU7DQogIHBhZGRpbmc6IDIwcHg7DQp9DQouY2FsZW5kYXIgew0KICBwb3NpdGlvbjogcmVsYXRpdmU7DQogIHdpZHRoOiAxMDAlOw0KICANCiAgZGlzcGxheTogZmxleDsNCiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsNCiAgZmxleC13cmFwOiB3cmFwOw0KICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47DQogIGNvbG9yOiAjODc4ODk1Ow0KICBib3JkZXItcmFkaXVzOiA1cHg7DQogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7DQp9DQovKiBzZXQgYWZ0ZXIgYmVoaW5kIHRoZSBtYWluIGVsZW1lbnQgKi8NCi5jYWxlbmRhcjo6YmVmb3JlLA0KLmNhbGVuZGFyOjphZnRlciB7DQogIGNvbnRlbnQ6ICIiOw0KICBwb3NpdGlvbjogYWJzb2x1dGU7DQogIHRvcDogNTAlOw0KICBsZWZ0OiAxMDAlOw0KICB3aWR0aDogMTJweDsNCiAgaGVpZ2h0OiA5NyU7DQogIGJvcmRlci1yYWRpdXM6IDAgNXB4IDVweCAwOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDNkNGQ2ZDc7DQogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsNCn0NCi5jYWxlbmRhcjo6YmVmb3JlIHsNCiAgaGVpZ2h0OiA5NCU7DQogIGxlZnQ6IGNhbGMoMTAwJSArIDEycHgpOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTUzLCAxNTMsIDE1Myk7DQp9DQouY2FsZW5kYXIgLm1vbnRoIHsNCiAgd2lkdGg6IDEwMCU7DQogIGhlaWdodDogNjBweDsNCiAgZGlzcGxheTogZmxleDsNCiAgYWxpZ24taXRlbXM6IGNlbnRlcjsNCiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOw0KICBwYWRkaW5nOiAwIDUwcHg7DQogIGZvbnQtc2l6ZTogMS4ycmVtOw0KICBmb250LXdlaWdodDogNTAwOw0KICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsNCn0NCi5jYWxlbmRhciAubW9udGggLnByZXYsDQouY2FsZW5kYXIgLm1vbnRoIC5uZXh0IHsNCiAgY3Vyc29yOiBwb2ludGVyOw0KfQ0KLmNhbGVuZGFyIC5tb250aCAucHJldjpob3ZlciwNCi5jYWxlbmRhciAubW9udGggLm5leHQ6aG92ZXIgew0KICBjb2xvcjogdmFyKC0tcHJpbWFyeS1jbHIpOw0KfQ0KLmNhbGVuZGFyIC53ZWVrZGF5cyB7DQogIHdpZHRoOiAxMDAlOw0KICBoZWlnaHQ6IDQwcHg7DQogIGRpc3BsYXk6IGZsZXg7DQogIGFsaWduLWl0ZW1zOiBjZW50ZXI7DQogIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsNCiAgcGFkZGluZzogMCAyMHB4Ow0KICBmb250LXNpemU6IDFyZW07DQogIGZvbnQtd2VpZ2h0OiA1MDA7DQogIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOw0KfQ0KLndlZWtkYXlzIGRpdiB7DQogIHdpZHRoOiAxNC4yOCU7DQogIGhlaWdodDogMTAwJTsNCiAgZGlzcGxheTogZmxleDsNCiAgYWxpZ24taXRlbXM6IGNlbnRlcjsNCiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7DQp9DQouY2FsZW5kYXIgLmRheXMgew0KICB3aWR0aDogMTAwJTsNCiAgZGlzcGxheTogZmxleDsNCiAgZmxleC13cmFwOiB3cmFwOw0KICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47DQogIHBhZGRpbmc6IDAgMjBweDsNCiAgZm9udC1zaXplOiAxcmVtOw0KICBmb250LXdlaWdodDogNTAwOw0KICBtYXJnaW4tYm90dG9tOiAyMHB4Ow0KfQ0KLmNhbGVuZGFyIC5kYXlzIC5kYXkgew0KICB3aWR0aDogMTQuMjglOw0KICBoZWlnaHQ6IDg1cHg7DQogIGRpc3BsYXk6IGZsZXg7DQogIGFsaWduLWl0ZW1zOiBjZW50ZXI7DQogIGp1c3RpZnktY29udGVudDogY2VudGVyOw0KICBjdXJzb3I6IHBvaW50ZXI7DQogIGNvbG9yOiB2YXIoLS1wcmltYXJ5LWNscik7DQogIGJvcmRlcjogMXB4IHNvbGlkICNmNWY1ZjU7DQp9DQouY2FsZW5kYXIgLmRheXMgLmRheTpudGgtY2hpbGQoN24gKyAxKSB7DQogIGJvcmRlci1sZWZ0OiAycHggc29saWQgI2Y1ZjVmNTsNCn0NCi5jYWxlbmRhciAuZGF5cyAuZGF5Om50aC1jaGlsZCg3bikgew0KICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCAjZjVmNWY1Ow0KfQ0KLmNhbGVuZGFyIC5kYXlzIC5kYXk6bnRoLWNoaWxkKC1uICsgNykgew0KICBib3JkZXItdG9wOiAycHggc29saWQgI2Y1ZjVmNTsNCn0NCi5jYWxlbmRhciAuZGF5cyAuZGF5Om50aC1jaGlsZChuICsgMjkpIHsNCiAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNmNWY1ZjU7DQp9DQoNCi5jYWxlbmRhciAuZGF5cyAuZGF5Om5vdCgucHJldi1kYXRlLCAubmV4dC1kYXRlKTpob3ZlciB7DQogIGNvbG9yOiAjZmZmOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wcmltYXJ5LWNscik7DQp9DQouY2FsZW5kYXIgLmRheXMgLnByZXYtZGF0ZSwNCi5jYWxlbmRhciAuZGF5cyAubmV4dC1kYXRlIHsNCiAgY29sb3I6ICNiM2IzYjM7DQp9DQouY2FsZW5kYXIgLmRheXMgLmFjdGl2ZSB7DQogIHBvc2l0aW9uOiByZWxhdGl2ZTsNCiAgZm9udC1zaXplOiAycmVtOw0KICBjb2xvcjogI2ZmZjsNCiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcHJpbWFyeS1jbHIpOw0KfQ0KLmNhbGVuZGFyIC5kYXlzIC5hY3RpdmU6OmJlZm9yZSB7DQogIGNvbnRlbnQ6ICIiOw0KICBwb3NpdGlvbjogYWJzb2x1dGU7DQogIHRvcDogMDsNCiAgbGVmdDogMDsNCiAgd2lkdGg6IDEwMCU7DQogIGhlaWdodDogMTAwJTsNCiAgYm94LXNoYWRvdzogMCAwIDEwcHggMnB4IHZhcigtLXByaW1hcnktY2xyKTsNCn0NCi5jYWxlbmRhciAuZGF5cyAudG9kYXkgew0KICBmb250LXNpemU6IDJyZW07DQp9DQouY2FsZW5kYXIgLmRheXMgLmV2ZW50IHsNCiAgcG9zaXRpb246IHJlbGF0aXZlOw0KfQ0KLmNhbGVuZGFyIC5kYXlzIC5ldmVudDo6YWZ0ZXIgew0KICBjb250ZW50OiAiIjsNCiAgcG9zaXRpb246IGFic29sdXRlOw0KICBib3R0b206IDEwJTsNCiAgbGVmdDogNTAlOw0KICB3aWR0aDogNzUlOw0KICBoZWlnaHQ6IDZweDsNCiAgYm9yZGVyLXJhZGl1czogMzBweDsNCiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wcmltYXJ5LWNscik7DQp9DQouY2FsZW5kYXIgLmRheXMgLmRheTpob3Zlci5ldmVudDo6YWZ0ZXIgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOw0KfQ0KLmNhbGVuZGFyIC5kYXlzIC5hY3RpdmUuZXZlbnQ6OmFmdGVyIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsNCiAgYm90dG9tOiAyMCU7DQp9DQouY2FsZW5kYXIgLmRheXMgLmFjdGl2ZS5ldmVudCB7DQogIHBhZGRpbmctYm90dG9tOiAxMHB4Ow0KfQ0KLmNhbGVuZGFyIC5nb3RvLXRvZGF5IHsNCiAgd2lkdGg6IDEwMCU7DQogIGhlaWdodDogNTBweDsNCiAgZGlzcGxheTogZmxleDsNCiAgYWxpZ24taXRlbXM6IGNlbnRlcjsNCiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOw0KICBnYXA6IDVweDsNCiAgcGFkZGluZzogMCAyMHB4Ow0KICBtYXJnaW4tYm90dG9tOiAyMHB4Ow0KICBjb2xvcjogdmFyKC0tcHJpbWFyeS1jbHIpOw0KfQ0KLmNhbGVuZGFyIC5nb3RvLXRvZGF5IC5nb3RvIHsNCiAgZGlzcGxheTogZmxleDsNCiAgYWxpZ24taXRlbXM6IGNlbnRlcjsNCiAgYm9yZGVyLXJhZGl1czogNXB4Ow0KICBvdmVyZmxvdzogaGlkZGVuOw0KICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1wcmltYXJ5LWNscik7DQp9DQouY2FsZW5kYXIgLmdvdG8tdG9kYXkgLmdvdG8gaW5wdXQgew0KICB3aWR0aDogMTAwJTsNCiAgaGVpZ2h0OiAzMHB4Ow0KICBvdXRsaW5lOiBub25lOw0KICBib3JkZXI6IG5vbmU7DQogIGJvcmRlci1yYWRpdXM6IDVweDsNCiAgcGFkZGluZzogMCAyMHB4Ow0KICBjb2xvcjogdmFyKC0tcHJpbWFyeS1jbHIpOw0KICBib3JkZXItcmFkaXVzOiA1cHg7DQp9DQouY2FsZW5kYXIgLmdvdG8tdG9kYXkgYnV0dG9uIHsNCiAgcGFkZGluZzogNXB4IDEwcHg7DQogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXByaW1hcnktY2xyKTsNCiAgYm9yZGVyLXJhZGl1czogNXB4Ow0KICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsNCiAgY3Vyc29yOiBwb2ludGVyOw0KICBjb2xvcjogdmFyKC0tcHJpbWFyeS1jbHIpOw0KfQ0KLmNhbGVuZGFyIC5nb3RvLXRvZGF5IGJ1dHRvbjpob3ZlciB7DQogIGNvbG9yOiAjZmZmOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wcmltYXJ5LWNscik7DQp9DQouY2FsZW5kYXIgLmdvdG8tdG9kYXkgLmdvdG8gYnV0dG9uIHsNCiAgYm9yZGVyOiBub25lOw0KICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLXByaW1hcnktY2xyKTsNCiAgYm9yZGVyLXJhZGl1czogMDsNCn0NCi5jb250YWluZXJDYWxlbmRhciAucmlnaHQgew0KICBwb3NpdGlvbjogcmVsYXRpdmU7DQogIHdpZHRoOiA0MCU7DQogIG1pbi1oZWlnaHQ6IDEwMCU7DQogIHBhZGRpbmc6IDIwcHggMDsNCn0NCg0KLnJpZ2h0IC50b2RheS1kYXRlIHsNCiAgd2lkdGg6IDEwMCU7DQogIGhlaWdodDogNTBweDsNCiAgZGlzcGxheTogZmxleDsNCiAgZmxleC13cmFwOiB3cmFwOw0KICBnYXA6IDEwcHg7DQogIGFsaWduLWl0ZW1zOiBjZW50ZXI7DQogIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsNCiAgcGFkZGluZzogMCA0MHB4Ow0KICBwYWRkaW5nLWxlZnQ6IDcwcHg7DQogIG1hcmdpbi10b3A6IDUwcHg7DQogIG1hcmdpbi1ib3R0b206IDIwcHg7DQogIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOw0KfQ0KLnJpZ2h0IC50b2RheS1kYXRlIC5ldmVudC1kYXkgew0KICAgIGNvbG9yOiAjMDAwOw0KICBmb250LXNpemU6IDJyZW07DQogIGZvbnQtd2VpZ2h0OiA1MDA7DQp9DQoucmlnaHQgLnRvZGF5LWRhdGUgLmV2ZW50LWRhdGUgew0KICBmb250LXNpemU6IDFyZW07DQogIGZvbnQtd2VpZ2h0OiA0MDA7DQogIGNvbG9yOiAjODc4ODk1Ow0KfQ0KLmV2ZW50cyB7DQogIHdpZHRoOiAxMDAlOw0KICBoZWlnaHQ6IDEwMCU7DQogIG1heC1oZWlnaHQ6IDYwMHB4Ow0KICBvdmVyZmxvdy14OiBoaWRkZW47DQogIG92ZXJmbG93LXk6IGF1dG87DQogIGRpc3BsYXk6IGZsZXg7DQogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47DQogIHBhZGRpbmctbGVmdDogNHB4Ow0KfQ0KLmV2ZW50cyAuZXZlbnQgew0KICBwb3NpdGlvbjogcmVsYXRpdmU7DQogIHdpZHRoOiA5NSU7DQogIG1pbi1oZWlnaHQ6IDcwcHg7DQogIGRpc3BsYXk6IGZsZXg7DQogIGp1c3RpZnktY29udGVudDogY2VudGVyOw0KICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOw0KICBnYXA6IDVweDsNCiAgcGFkZGluZzogMCAyMHB4Ow0KICBwYWRkaW5nLWxlZnQ6IDUwcHg7DQogIGNvbG9yOiAjZmZmOw0KICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsICNjOWM5YzksIHRyYW5zcGFyZW50KTsNCiANCn0NCi8qIGV2ZW4gZXZlbnQgKi8NCi5ldmVudHMgLmV2ZW50Om50aC1jaGlsZChldmVuKSB7DQogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50Ow0KfQ0KLyouZXZlbnRzIC5ldmVudDpob3ZlciB7DQogIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdmFyKC0tcHJpbWFyeS1jbHIpLCB0cmFuc3BhcmVudCk7DQp9Ki8NCi5ldmVudHMgLmV2ZW50IC50aXRsZSB7DQogIGRpc3BsYXk6IGZsZXg7DQogIGFsaWduLWl0ZW1zOiBjZW50ZXI7DQogIHBvaW50ZXItZXZlbnRzOiBub25lOw0KfQ0KLmV2ZW50cyAuZXZlbnQgLnRpdGxlIC5ldmVudC10aXRsZSB7DQogIGZvbnQtc2l6ZTogMXJlbTsNCiAgZm9udC13ZWlnaHQ6IDQwMDsNCiAgbWFyZ2luLWxlZnQ6IDIwcHg7DQpwYWRkaW5nLXRvcDogMTVweDsNCn0NCi5ldmVudHMgLmV2ZW50IGkgew0KICBjb2xvcjogdmFyKC0tcHJpbWFyeS1jbHIpOw0KICBmb250LXNpemU6IDAuNXJlbTsNCn0NCi5ldmVudHMgLmV2ZW50OmhvdmVyIGkgew0KICBjb2xvcjogI2ZmZjsNCn0NCi5ldmVudHMgLmV2ZW50IC5ldmVudC10aW1lIHsNCiAgZm9udC1zaXplOiAwLjhyZW07DQogIGZvbnQtd2VpZ2h0OiA0MDA7DQogIGNvbG9yOiAjODc4ODk1Ow0KICBtYXJnaW4tbGVmdDogMTVweDsNCiAgcG9pbnRlci1ldmVudHM6IG5vbmU7DQp9DQouZXZlbnRzIC5ldmVudDpob3ZlciAuZXZlbnQtdGltZSB7DQogIGNvbG9yOiAjZmZmOw0KfQ0KLyogYWRkIHRpY2sgaW4gZXZlbnQgYWZ0ZXIgKi8NCi5ldmVudHMgLmV2ZW50OjphZnRlciB7DQogIGNvbnRlbnQ6ICLinJMiOw0KICBwb3NpdGlvbjogYWJzb2x1dGU7DQogIHRvcDogNTAlOw0KICByaWdodDogMDsNCiAgZm9udC1zaXplOiAzcmVtOw0KICBsaW5lLWhlaWdodDogMTsNCiAgZGlzcGxheTogbm9uZTsNCiAgYWxpZ24taXRlbXM6IGNlbnRlcjsNCiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7DQogIG9wYWNpdHk6IDAuMzsNCiAgY29sb3I6IHZhcigtLXByaW1hcnktY2xyKTsNCiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOw0KfQ0KLmV2ZW50cyAuZXZlbnQ6aG92ZXI6OmFmdGVyIHsNCiAgZGlzcGxheTogZmxleDsNCn0NCi5hZGQtZXZlbnQgew0KICBwb3NpdGlvbjogYWJzb2x1dGU7DQogIGJvdHRvbTogMzBweDsNCiAgcmlnaHQ6IDMwcHg7DQogIHdpZHRoOiA0MHB4Ow0KICBoZWlnaHQ6IDQwcHg7DQogIGRpc3BsYXk6IGZsZXg7DQogIGFsaWduLWl0ZW1zOiBjZW50ZXI7DQogIGp1c3RpZnktY29udGVudDogY2VudGVyOw0KICBmb250LXNpemU6IDFyZW07DQogIGNvbG9yOiAjODc4ODk1Ow0KICBib3JkZXI6IDJweCBzb2xpZCAjODc4ODk1Ow0KICBvcGFjaXR5OiAwLjU7DQogIGJvcmRlci1yYWRpdXM6IDUwJTsNCiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7DQogIGN1cnNvcjogcG9pbnRlcjsNCn0NCi5hZGQtZXZlbnQ6aG92ZXIgew0KICBvcGFjaXR5OiAxOw0KfQ0KLmFkZC1ldmVudCBpIHsNCiAgcG9pbnRlci1ldmVudHM6IG5vbmU7DQp9DQouZXZlbnRzIC5uby1ldmVudCB7DQogIHdpZHRoOiAxMDAlOw0KICBoZWlnaHQ6IDEwMCU7DQogIGRpc3BsYXk6IGZsZXg7DQogIGFsaWduLWl0ZW1zOiBjZW50ZXI7DQogIGp1c3RpZnktY29udGVudDogY2VudGVyOw0KICBmb250LXNpemU6IDEuNXJlbTsNCiAgZm9udC13ZWlnaHQ6IDUwMDsNCiAgY29sb3I6ICM4Nzg4OTU7DQp9DQouYWRkLWV2ZW50LXdyYXBwZXIgew0KICBwb3NpdGlvbjogYWJzb2x1dGU7DQogIGJvdHRvbTogMTAwcHg7DQogIGxlZnQ6IDUwJTsNCiAgd2lkdGg6IDkwJTsNCiAgbWF4LWhlaWdodDogMDsNCiAgb3ZlcmZsb3c6IGhpZGRlbjsNCiAgYm9yZGVyLXJhZGl1czogNXB4Ow0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOw0KICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7DQogIHRyYW5zaXRpb246IG1heC1oZWlnaHQgMC41cyBlYXNlOw0KfQ0KLmFkZC1ldmVudC13cmFwcGVyLmFjdGl2ZSB7DQogIG1heC1oZWlnaHQ6IDMwMHB4Ow0KfQ0KLmFkZC1ldmVudC1oZWFkZXIgew0KICB3aWR0aDogMTAwJTsNCiAgaGVpZ2h0OiA1MHB4Ow0KICBkaXNwbGF5OiBmbGV4Ow0KICBhbGlnbi1pdGVtczogY2VudGVyOw0KICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47DQogIHBhZGRpbmc6IDAgMjBweDsNCiAgY29sb3I6ICMzNzNjNGY7DQogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZjVmNWY1Ow0KfQ0KLmFkZC1ldmVudC1oZWFkZXIgLmNsb3NlIHsNCiAgZm9udC1zaXplOiAxLjVyZW07DQogIGN1cnNvcjogcG9pbnRlcjsNCn0NCi5hZGQtZXZlbnQtaGVhZGVyIC5jbG9zZTpob3ZlciB7DQogIGNvbG9yOiB2YXIoLS1wcmltYXJ5LWNscik7DQp9DQouYWRkLWV2ZW50LWhlYWRlciAudGl0bGUgew0KICBmb250LXNpemU6IDEuMnJlbTsNCiAgZm9udC13ZWlnaHQ6IDUwMDsNCn0NCi5hZGQtZXZlbnQtYm9keSB7DQogIHdpZHRoOiAxMDAlOw0KICBoZWlnaHQ6IDEwMCU7DQogIGRpc3BsYXk6IGZsZXg7DQogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47DQogIGdhcDogNXB4Ow0KICBwYWRkaW5nOiAyMHB4Ow0KfQ0KLmFkZC1ldmVudC1ib2R5IC5hZGQtZXZlbnQtaW5wdXQgew0KICB3aWR0aDogMTAwJTsNCiAgaGVpZ2h0OiA0MHB4Ow0KICBkaXNwbGF5OiBmbGV4Ow0KICBhbGlnbi1pdGVtczogY2VudGVyOw0KICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47DQogIGdhcDogMTBweDsNCn0NCi5hZGQtZXZlbnQtYm9keSAuYWRkLWV2ZW50LWlucHV0IGlucHV0IHsNCiAgd2lkdGg6IDEwMCU7DQogIGhlaWdodDogMTAwJTsNCiAgb3V0bGluZTogbm9uZTsNCiAgYm9yZGVyOiBub25lOw0KICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Y1ZjVmNTsNCiAgcGFkZGluZzogMCAxMHB4Ow0KICBmb250LXNpemU6IDFyZW07DQogIGZvbnQtd2VpZ2h0OiA0MDA7DQogIGNvbG9yOiAjMzczYzRmOw0KfQ0KLmFkZC1ldmVudC1ib2R5IC5hZGQtZXZlbnQtaW5wdXQgaW5wdXQ6OnBsYWNlaG9sZGVyIHsNCiAgY29sb3I6ICNhNWE1YTU7DQp9DQouYWRkLWV2ZW50LWJvZHkgLmFkZC1ldmVudC1pbnB1dCBpbnB1dDpmb2N1cyB7DQogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1wcmltYXJ5LWNscik7DQp9DQouYWRkLWV2ZW50LWJvZHkgLmFkZC1ldmVudC1pbnB1dCBpbnB1dDpmb2N1czo6cGxhY2Vob2xkZXIgew0KICBjb2xvcjogdmFyKC0tcHJpbWFyeS1jbHIpOw0KfQ0KLmFkZC1ldmVudC1mb290ZXIgew0KICBkaXNwbGF5OiBmbGV4Ow0KICBhbGlnbi1pdGVtczogY2VudGVyOw0KICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsNCiAgcGFkZGluZzogMjBweDsNCn0NCi5hZGQtZXZlbnQtZm9vdGVyIC5hZGQtZXZlbnQtYnRuIHsNCiAgaGVpZ2h0OiA0MHB4Ow0KICBmb250LXNpemU6IDFyZW07DQogIGZvbnQtd2VpZ2h0OiA1MDA7DQogIG91dGxpbmU6IG5vbmU7DQogIGJvcmRlcjogbm9uZTsNCiAgY29sb3I6ICNmZmY7DQogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktY2xyKTsNCiAgYm9yZGVyLXJhZGl1czogNXB4Ow0KICBjdXJzb3I6IHBvaW50ZXI7DQogIHBhZGRpbmc6IDVweCAxMHB4Ow0KICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1wcmltYXJ5LWNscik7DQp9DQouYWRkLWV2ZW50LWZvb3RlciAuYWRkLWV2ZW50LWJ0bjpob3ZlciB7DQogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Ow0KICBjb2xvcjogdmFyKC0tcHJpbWFyeS1jbHIpOw0KfQ0KDQovKiBtZWRpYSBxdWVyaWVzICovDQoNCkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEwMDBweCkgew0KICBib2R5IHsNCiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsNCiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7DQogIH0NCiAgLmNvbnRhaW5lckNhbGVuZGFyIHsNCiAgICBtaW4taGVpZ2h0OiAxMDB2aDsNCiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOw0KICAgIGJvcmRlci1yYWRpdXM6IDA7DQogIH0NCiAgLmNvbnRhaW5lckNhbGVuZGFyIC5sZWZ0IHsNCiAgICB3aWR0aDogMTAwJTsNCiAgICBoZWlnaHQ6IDEwMCU7DQogICAgcGFkZGluZzogMjBweCAwOw0KICB9DQogIC5jb250YWluZXJDYWxlbmRhciAucmlnaHQgew0KICAgIHdpZHRoOiAxMDAlOw0KICAgIGhlaWdodDogMTAwJTsNCiAgICBwYWRkaW5nOiAyMHB4IDA7DQogIH0NCiAgLmNhbGVuZGFyOjpiZWZvcmUsDQogIC5jYWxlbmRhcjo6YWZ0ZXIgew0KICAgIHRvcDogMTAwJTsNCiAgICBsZWZ0OiA1MCU7DQogICAgd2lkdGg6IDk3JTsNCiAgICBoZWlnaHQ6IDEycHg7DQogICAgYm9yZGVyLXJhZGl1czogMCAwIDVweCA1cHg7DQogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOw0KICB9DQogIC5jYWxlbmRhcjo6YmVmb3JlIHsNCiAgICB3aWR0aDogOTQlOw0KICAgIHRvcDogY2FsYygxMDAlICsgMTJweCk7DQogIH0NCiAgLmV2ZW50cyB7DQogICAgcGFkZGluZy1ib3R0b206IDM0MHB4Ow0KICB9DQogIC5hZGQtZXZlbnQtd3JhcHBlciB7DQogICAgYm90dG9tOiAxMDBweDsNCiAgfQ0KfQ0KQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTAwcHgpIHsNCiAgLmNhbGVuZGFyIC5tb250aCB7DQogICAgaGVpZ2h0OiA3NXB4Ow0KICB9DQogIC5jYWxlbmRhciAud2Vla2RheXMgew0KICAgIGhlaWdodDogNTBweDsNCiAgfQ0KICAuY2FsZW5kYXIgLmRheXMgLmRheSB7DQogICAgaGVpZ2h0OiA0MHB4Ow0KICAgIGZvbnQtc2l6ZTogMC44cmVtOw0KICB9DQogIC5jYWxlbmRhciAuZGF5cyAuZGF5LmFjdGl2ZSwNCiAgLmNhbGVuZGFyIC5kYXlzIC5kYXkudG9kYXkgew0KICAgIGZvbnQtc2l6ZTogMXJlbTsNCiAgfQ0KICAucmlnaHQgLnRvZGF5LWRhdGUgew0KICAgIHBhZGRpbmc6IDIwcHg7DQogIH0NCn0NCg0KLmNyZWRpdHMgew0KICBwb3NpdGlvbjogYWJzb2x1dGU7DQogIGJvdHRvbTogMDsNCiAgbGVmdDogMDsNCiAgcmlnaHQ6IDA7DQogIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgcGFkZGluZzogMTBweDsNCiAgZm9udC1zaXplOiAxMnB4Ow0KICBjb2xvcjogI2ZmZjsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2IzOGFkZDsNCn0NCi5jcmVkaXRzIGEgew0KICBjb2xvcjogI2ZmZjsNCiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOw0KICBmb250LXdlaWdodDogNjAwOw0KfQ0KLmNyZWRpdHMgYTpob3ZlciB7DQogIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOw0KfQ0KPC9zdHlsZT4NCiAgIA0KPGRpdiBpZD0ibG9hZGVyIiBzdHlsZT0iZGlzcGxheTpibG9jazsgcG9zaXRpb246IGZpeGVkOyB0b3A6IDA7IHJpZ2h0OiAwOyBib3R0b206IDA7IGxlZnQ6IDA7IGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsMC44KTsgei1pbmRleDogOTk5OTsiPg0KICAgICAgICA8ZGl2IGNsYXNzPSJzcGlubmVyLWNvbnRhaW5lciI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGlubmVyIj48L2Rpdj4NCiAgICAgICAgICAgIENhcmdhbmRvLi4uDQogICAgICAgIDwvZGl2Pg0KICAgIDwvZGl2Pg0KDQogICAgPGRpdiBjbGFzcz0iY29udGFpbmVyQ2FsZW5kYXIiPg0KICAgICAgPGRpdiBjbGFzcz0ibGVmdCI+DQogICAgICAgIDxkaXYgY2xhc3M9ImNhbGVuZGFyIj4NCiAgICAgICAgICA8ZGl2IGNsYXNzPSJtb250aCI+DQogICAgICAgICAgICA8aSBjbGFzcz0iZmFzIGZhLWFuZ2xlLWxlZnQgcHJldiI+PC9pPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGF0ZSI+ZGljaWVtYnJlIDIwMTU8L2Rpdj4NCiAgICAgICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtYW5nbGUtcmlnaHQgbmV4dCI+PC9pPg0KICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgIDxkaXYgY2xhc3M9IndlZWtkYXlzIj4NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgPGRpdj5MdW48L2Rpdj4NCiAgICAgICAgICAgIDxkaXY+TWFyPC9kaXY+DQogICAgICAgICAgICA8ZGl2Pk1pZTwvZGl2Pg0KICAgICAgICAgICAgPGRpdj5KdWU8L2Rpdj4NCiAgICAgICAgICAgIDxkaXY+VmllPC9kaXY+DQogICAgICAgICAgICA8ZGl2PlNhYjwvZGl2Pg0KPGRpdj5Eb208L2Rpdj4NCiAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICA8ZGl2IGNsYXNzPSJkYXlzIj48L2Rpdj4NCiAgICAgICAgICANCiAgICAgICAgPC9kaXY+DQogICAgICA8L2Rpdj4NCiAgICAgIDxkaXYgY2xhc3M9InJpZ2h0Ij4NCiAgICAgICAgPGRpdiBjbGFzcz0idG9kYXktZGF0ZSI+DQogICAgICAgICAgPGRpdiBjbGFzcz0iZXZlbnQtZGF5Ij48L2Rpdj4NCiAgICAgICAgICA8ZGl2IGNsYXNzPSJldmVudC1kYXRlIj4xMiBEaWNpZW1icmUgMjAyMjwvZGl2Pg0KICAgICAgICA8L2Rpdj4NCiAgICAgICAgPGRpdiBjbGFzcz0iZXZlbnRzIj48L2Rpdj4NCiAgICAgICAgDQogICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCjxzY3JpcHQ+DQogIGNvbnN0IGxvYWRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2FkZXInKTsNCiAgY29uc3QgY2FsZW5kYXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuY2FsZW5kYXIiKSwNCiAgZGF0ZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5kYXRlIiksDQogIGRheXNDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuZGF5cyIpLA0KICBwcmV2ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnByZXYiKSwNCiAgbmV4dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5uZXh0IiksDQogIHRvZGF5QnRuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnRvZGF5LWJ0biIpLA0KICBnb3RvQnRuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmdvdG8tYnRuIiksDQogIGRhdGVJbnB1dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5kYXRlLWlucHV0IiksDQogIGV2ZW50RGF5ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmV2ZW50LWRheSIpLA0KICBldmVudERhdGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuZXZlbnQtZGF0ZSIpLA0KICBldmVudHNDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuZXZlbnRzIiksDQogIGFkZEV2ZW50V3JhcHBlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5hZGQtZXZlbnQtd3JhcHBlciAiKSwNCiAgYWRkRXZlbnRDbG9zZUJ0biA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5jbG9zZSAiKSwNCiAgYWRkRXZlbnRUaXRsZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5ldmVudC1uYW1lICIpLA0KICBhZGRFdmVudEZyb20gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuZXZlbnQtdGltZS1mcm9tICIpLA0KICBhZGRFdmVudFRvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmV2ZW50LXRpbWUtdG8gIiksDQogIGFkZEV2ZW50U3VibWl0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmFkZC1ldmVudC1idG4gIik7DQoNCmxldCB0b2RheSA9IG5ldyBEYXRlKCk7DQpsZXQgYWN0aXZlRGF5Ow0KbGV0IG1vbnRoID0gdG9kYXkuZ2V0TW9udGgoKTsNCmxldCB5ZWFyID0gdG9kYXkuZ2V0RnVsbFllYXIoKTsNCg0KY29uc3QgbW9udGhzID0gWw0KICAiRW5lcm8iLA0KICAiRmVicmVybyIsDQogICJNYXJ6byIsDQogICJBYnJpbCIsDQogICJNYXlvIiwNCiAgIkp1bmlvIiwNCiAgIkp1bGlvIiwNCiAgIkFnb3N0byIsDQogICJTZXB0aWVtYnJlIiwNCiAgIk9jdHVicmUiLA0KICAiTm92aWVtYnJlIiwNCiAgIkRpY2llbWJyZSIsDQpdOw0KDQovLyBERSBBUVVJIFNFIENBUkdBTiBMT1MgRVZFTlRPUw0KYXN5bmMgZnVuY3Rpb24gY2FyZ2FyRXZlbnRvcygpIHsNCiAgdHJ5IHsNCiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKCdodHRwczovL2NvZmdpcHV6a29hLnByZXRvb2xzLm5ldC9jYWxlbmRhcmlvJyk7DQogICAgaWYgKCFyZXNwb25zZS5vaykgew0KICAgICAgdGhyb3cgbmV3IEVycm9yKGBIVFRQIGVycm9yISBTdGF0dXM6ICR7cmVzcG9uc2Uuc3RhdHVzfWApOw0KICAgIH0NCiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpOw0KDQpyZXR1cm4gZGF0YTsNCg0KICB9IGNhdGNoIChlcnJvcikgew0KICAgIGNvbnNvbGUuZXJyb3IoJ0h1Ym8gdW4gZXJyb3IgYWwgb2J0ZW5lciBsb3MgZGF0b3M6JywgZXJyb3IpOw0KICAgIHRocm93IGVycm9yOyAgLy8gT3BjaW9uYWw6IHB1ZWRlcyBsYW56YXIgZWwgZXJyb3IgcGFyYSBtYW5lamFybG8gbcOhcyBhcnJpYmEgZW4gbGEgY2FkZW5hIGRlIGxsYW1hZGFzDQogIH0NCn0NCmxldCBldmVudHNBcnIgPSBbXTsNCg0KaW5pY2lhcigpOw0KYXN5bmMgZnVuY3Rpb24gaW5pY2lhcigpIHsNCiAgICBldmVudHNBcnIgPSBhd2FpdCBjYXJnYXJFdmVudG9zKCk7DQogICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oImV2ZW50cyIsIEpTT04uc3RyaW5naWZ5KGV2ZW50c0FycikpOw0KICAgIGdldEV2ZW50cygpDQogICAgaW5pdENhbGVuZGFyKCk7DQp9DQovL2Z1bmNpw7NuIHBhcmEgYWdyZWdhciBkw61hcyBlbiBkw61hcyBjb24gbGEgY2xhc2UgImRheSIgeSAicHJldi1kYXRlIiAibmV4dC1kYXRlIiBlbiBsb3MgZMOtYXMgZGVsIG1lcyBhbnRlcmlvciB5IHNpZ3VpZW50ZSwgeSBhY3Rpdm8gZW4gZWwgZMOtYSBkZSBob3kuDQpmdW5jdGlvbiBpbml0Q2FsZW5kYXIoKSB7DQogIGNvbnN0IGZpcnN0RGF5ID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpOw0KICBjb25zdCBsYXN0RGF5ID0gbmV3IERhdGUoeWVhciwgbW9udGggKyAxLCAwKTsNCiAgY29uc3QgcHJldkxhc3REYXkgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMCk7DQogIGNvbnN0IHByZXZEYXlzID0gcHJldkxhc3REYXkuZ2V0RGF0ZSgpOw0KICBjb25zdCBsYXN0RGF0ZSA9IGxhc3REYXkuZ2V0RGF0ZSgpOw0KICBjb25zdCBkYXkgPSAoZmlyc3REYXkuZ2V0RGF5KCkgPT09IDApID8gNiA6IGZpcnN0RGF5LmdldERheSgpIC0gMTsNCi8vIGFqdXN0ZSBlbCBkaWEgcGFyYSBxdWUgY29taWVuemUgZWwgbHVuZXMNCg0KICBjb25zdCBuZXh0RGF5cyA9IDcgLSAobGFzdERheS5nZXREYXkoKSA9PT0gMCA\/IDcgOiBsYXN0RGF5LmdldERheSgpKTsNCg0KDQogIGRhdGUuaW5uZXJIVE1MID0gbW9udGhzW21vbnRoXSArICIgIiArIHllYXI7DQoNCiAgbGV0IGRheXMgPSAiIjsNCg0KICBmb3IgKGxldCB4ID0gZGF5OyB4ID4gMDsgeC0tKSB7DQogICAgZGF5cyArPSBgPGRpdiBjbGFzcz0iZGF5IHByZXYtZGF0ZSI+JHtwcmV2RGF5cyAtIHggKyAxfTwvZGl2PmA7DQogIH0NCg0KICBmb3IgKGxldCBpID0gMTsgaSA8PSBsYXN0RGF0ZTsgaSsrKSB7DQogICANCiAgICAvL2NoZWNrIGlmIGV2ZW50IGlzIHByZXNlbnQgb24gdGhhdCBkYXkNCiAgICBsZXQgZXZlbnQgPSBmYWxzZTsNCiAgICBldmVudHNBcnIuZm9yRWFjaCgoZXZlbnRPYmopID0+IHsNCiAgICAgIGlmICgNCiAgICAgICAgZXZlbnRPYmouZGF5ID09PSBpICYmDQogICAgICAgIGV2ZW50T2JqLm1vbnRoID09PSBtb250aCArIDEgJiYNCiAgICAgICAgZXZlbnRPYmoueWVhciA9PT0geWVhcg0KICAgICAgKSB7DQogICAgICAgIGV2ZW50ID0gdHJ1ZTsNCiAgICAgIH0NCiAgICB9KTsNCiAgICBpZiAoDQogICAgICBpID09PSBuZXcgRGF0ZSgpLmdldERhdGUoKSAmJg0KICAgICAgeWVhciA9PT0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpICYmDQogICAgICBtb250aCA9PT0gbmV3IERhdGUoKS5nZXRNb250aCgpDQogICAgKSB7DQogICAgICBhY3RpdmVEYXkgPSBpOw0KICAgICAgZ2V0QWN0aXZlRGF5KGkpOw0KICAgICAgdXBkYXRlRXZlbnRzKGkpOw0KICAgICAgaWYgKGV2ZW50KSB7DQogICAgICAgIGRheXMgKz0gYDxkaXYgY2xhc3M9ImRheSB0b2RheSBhY3RpdmUgZXZlbnQiPiR7aX08L2Rpdj5gOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgZGF5cyArPSBgPGRpdiBjbGFzcz0iZGF5IHRvZGF5IGFjdGl2ZSI+JHtpfTwvZGl2PmA7DQogICAgICB9DQogICAgfSBlbHNlIHsNCiAgICAgIGlmIChldmVudCkgew0KICAgICAgICBkYXlzICs9IGA8ZGl2IGNsYXNzPSJkYXkgZXZlbnQiPiR7aX08L2Rpdj5gOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgZGF5cyArPSBgPGRpdiBjbGFzcz0iZGF5ICI+JHtpfTwvZGl2PmA7DQogICAgICB9DQogICAgfQ0KICB9DQoNCiAgZm9yIChsZXQgaiA9IDE7IGogPD0gbmV4dERheXM7IGorKykgew0KICAgIGRheXMgKz0gYDxkaXYgY2xhc3M9ImRheSBuZXh0LWRhdGUiPiR7an08L2Rpdj5gOw0KICB9DQogIGRheXNDb250YWluZXIuaW5uZXJIVE1MID0gZGF5czsNCiAgYWRkTGlzdG5lcigpOw0KfQ0KDQovL2Z1bmNpw7NuIHBhcmEgYWdyZWdhciBtZXMgeSBhw7FvIGVuIGxvcyBib3RvbmVzIGRlIGFudGVyaW9yIHkgc2lndWllbnRlLg0KZnVuY3Rpb24gcHJldk1vbnRoKCkgew0KICBtb250aC0tOw0KICBpZiAobW9udGggPCAwKSB7DQogICAgbW9udGggPSAxMTsNCiAgICB5ZWFyLS07DQogIH0NCiAgaW5pdENhbGVuZGFyKCk7DQp9DQoNCmZ1bmN0aW9uIG5leHRNb250aCgpIHsNCiAgbW9udGgrKzsNCiAgaWYgKG1vbnRoID4gMTEpIHsNCiAgICBtb250aCA9IDA7DQogICAgeWVhcisrOw0KICB9DQogIGluaXRDYWxlbmRhcigpOw0KfQ0KDQpwcmV2LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgcHJldk1vbnRoKTsNCm5leHQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBuZXh0TW9udGgpOw0KDQovLyBpbml0Q2FsZW5kYXIoKTsNCg0KDQovL2Z1bmN0aW9uIHRvIGFkZCBhY3RpdmUgb24gZGF5DQpmdW5jdGlvbiBhZGRMaXN0bmVyKCkgew0KICBjb25zdCBkYXlzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmRheSIpOw0KICBkYXlzLmZvckVhY2goKGRheSkgPT4gew0KICAgIGRheS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIChlKSA9PiB7DQogICAgICBnZXRBY3RpdmVEYXkoZS50YXJnZXQuaW5uZXJIVE1MKTsNCiAgICAgIHVwZGF0ZUV2ZW50cyhOdW1iZXIoZS50YXJnZXQuaW5uZXJIVE1MKSk7DQogICAgICBhY3RpdmVEYXkgPSBOdW1iZXIoZS50YXJnZXQuaW5uZXJIVE1MKTsNCiAgICAgIC8vcmVtb3ZlIGFjdGl2ZQ0KICAgICAgZGF5cy5mb3JFYWNoKChkYXkpID0+IHsNCiAgICAgICAgZGF5LmNsYXNzTGlzdC5yZW1vdmUoImFjdGl2ZSIpOw0KICAgICAgfSk7DQogICAgICAvL2lmIGNsaWNrZWQgcHJldi1kYXRlIG9yIG5leHQtZGF0ZSBzd2l0Y2ggdG8gdGhhdCBtb250aA0KICAgICAgaWYgKGUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygicHJldi1kYXRlIikpIHsNCiAgICAgICAgcHJldk1vbnRoKCk7DQogICAgICAgIC8vYWRkIGFjdGl2ZSB0byBjbGlja2VkIGRheSBhZnRlIG1vbnRoIGlzIGNoYW5nZQ0KICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsNCiAgICAgICAgICAvL2FkZCBhY3RpdmUgd2hlcmUgbm8gcHJldi1kYXRlIG9yIG5leHQtZGF0ZQ0KICAgICAgICAgIGNvbnN0IGRheXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuZGF5Iik7DQogICAgICAgICAgZGF5cy5mb3JFYWNoKChkYXkpID0+IHsNCiAgICAgICAgICAgIGlmICgNCiAgICAgICAgICAgICAgIWRheS5jbGFzc0xpc3QuY29udGFpbnMoInByZXYtZGF0ZSIpICYmDQogICAgICAgICAgICAgIGRheS5pbm5lckhUTUwgPT09IGUudGFyZ2V0LmlubmVySFRNTA0KICAgICAgICAgICAgKSB7DQogICAgICAgICAgICAgIGRheS5jbGFzc0xpc3QuYWRkKCJhY3RpdmUiKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9KTsNCiAgICAgICAgfSwgMTAwKTsNCiAgICAgIH0gZWxzZSBpZiAoZS50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCJuZXh0LWRhdGUiKSkgew0KICAgICAgICBuZXh0TW9udGgoKTsNCiAgICAgICAgLy9hZGQgYWN0aXZlIHRvIGNsaWNrZWQgZGF5IGFmdGUgbW9udGggaXMgY2hhbmdlZA0KICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsNCiAgICAgICAgICBjb25zdCBkYXlzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmRheSIpOw0KICAgICAgICAgIGRheXMuZm9yRWFjaCgoZGF5KSA9PiB7DQogICAgICAgICAgICBpZiAoDQogICAgICAgICAgICAgICFkYXkuY2xhc3NMaXN0LmNvbnRhaW5zKCJuZXh0LWRhdGUiKSAmJg0KICAgICAgICAgICAgICBkYXkuaW5uZXJIVE1MID09PSBlLnRhcmdldC5pbm5lckhUTUwNCiAgICAgICAgICAgICkgew0KICAgICAgICAgICAgICBkYXkuY2xhc3NMaXN0LmFkZCgiYWN0aXZlIik7DQogICAgICAgICAgICB9DQogICAgICAgICAgfSk7DQogICAgICAgIH0sIDEwMCk7DQogICAgICB9IGVsc2Ugew0KICAgICAgICBlLnRhcmdldC5jbGFzc0xpc3QuYWRkKCJhY3RpdmUiKTsNCiAgICAgIH0NCiAgICB9KTsNCiAgfSk7DQp9DQoNCmZ1bmN0aW9uIGRpYUVzKGRheU5hbWUpIHsNCiAgc3dpdGNoIChkYXlOYW1lKSB7DQogICAgY2FzZSAnTW9uJzoNCiAgICAgIHJldHVybiBkYXlOYW1lID0gJ0x1bic7DQogICAgY2FzZSAnVHVlJzoNCiAgICAgIHJldHVybiBkYXlOYW1lID0gJ01hcic7DQogICAgY2FzZSAnV2VkJzoNCiAgICAgIHJldHVybiBkYXlOYW1lID0gJ01pw6knOw0KICAgIGNhc2UgJ1RodSc6DQogICAgICByZXR1cm4gZGF5TmFtZSA9ICdKdWUnOw0KICAgIGNhc2UgJ0ZyaSc6DQogICAgICByZXR1cm4gZGF5TmFtZSA9ICdWaWUnOw0KICAgIGNhc2UgJ1NhdCc6DQogICAgICByZXR1cm4gZGF5TmFtZSA9ICdTw6FiJzsNCiAgICBjYXNlICdTdW4nOg0KICAgICAgcmV0dXJuIGRheU5hbWUgPSAnRG9tJzsNCiAgICBkZWZhdWx0Og0KICAgICAgcmV0dXJuIGRheU5hbWU7IC8vIERldnVlbHZlIGVsIG1pc21vIHZhbG9yIHNpIG5vIGNvaW5jaWRlIGNvbiBuaW5ndW5vDQogIH0NCn0NCg0KLy9mdW5jdGlvbiBnZXQgYWN0aXZlIGRheSBkYXkgbmFtZSBhbmQgZGF0ZSBhbmQgdXBkYXRlIGV2ZW50ZGF5IGV2ZW50ZGF0ZQ0KZnVuY3Rpb24gZ2V0QWN0aXZlRGF5KGRhdGUpIHsNCiAgY29uc3QgZGF5ID0gbmV3IERhdGUoeWVhciwgbW9udGgsIGRhdGUpOw0KICBsZXQgZGF5TmFtZSA9IGRheS50b1N0cmluZygpLnNwbGl0KCIgIilbMF07DQogIGRheU5hbWUgPSBkaWFFcyhkYXlOYW1lKTsNCiAgZXZlbnREYXkuaW5uZXJIVE1MID0gZGF5TmFtZTsNCiAgZXZlbnREYXRlLmlubmVySFRNTCA9IGRhdGUgKyAiICIgKyBtb250aHNbbW9udGhdICsgIiAiICsgeWVhcjsNCn0NCg0KLy9mdW5jdGlvbiB1cGRhdGUgZXZlbnRzIHdoZW4gYSBkYXkgaXMgYWN0aXZlDQpmdW5jdGlvbiB1cGRhdGVFdmVudHMoZGF0ZSkgew0KICBsZXQgZXZlbnRzID0gIiI7DQogIGV2ZW50c0Fyci5mb3JFYWNoKChldmVudCkgPT4gew0KICAgIGlmICgNCiAgICAgIGRhdGUgPT09IGV2ZW50LmRheSAmJg0KICAgICAgbW9udGggKyAxID09PSBldmVudC5tb250aCAmJg0KICAgICAgeWVhciA9PT0gZXZlbnQueWVhcg0KICAgICkgew0KICAgICAgbGV0IGlkRiA9IGV2ZW50LmlkOw0KICAgICAgZXZlbnQuZXZlbnRzLmZvckVhY2goKGV2ZW50KSA9PiB7DQogICAgICAgIGV2ZW50cyArPSBgPGEgaHJlZj0iL2Zvcm1hY2lvbmVzLz9pZD0ke2lkRn0iIHN0eWxlPSJjb2xvcjogaW5oZXJpdDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJldmVudCI+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPg0KICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmFzIGZhLWNpcmNsZSI+PC9pPg0KICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9ImV2ZW50LXRpdGxlIj4ke2V2ZW50LnRpdGxlfTwvaDM+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZXZlbnQtdGltZSI+DQogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJldmVudC10aW1lIj4ke2V2ZW50LnRpbWV9PC9zcGFuPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIDwvYT5gOw0KICAgICAgfSk7DQogICAgfQ0KICB9KTsNCiAgaWYgKGV2ZW50cyA9PT0gIiIpIHsNCiAgICBldmVudHMgPSBgPGRpdiBjbGFzcz0ibm8tZXZlbnQiPg0KICAgICAgICAgICAgPGgzPlNpbiBFdmVudG9zPC9oMz4NCiAgICAgICAgPC9kaXY+YDsNCiAgfQ0KICBldmVudHNDb250YWluZXIuaW5uZXJIVE1MID0gZXZlbnRzOw0KICBzYXZlRXZlbnRzKCk7DQp9DQoNCg0KZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoKSB7DQogIHZhciBvc2NjcmVkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7DQogIG9zY2NyZWQuaW5uZXJIVE1MID0NCiAgICAiIjsNCiAgb3NjY3JlZC5zdHlsZS5wb3NpdGlvbiA9ICJhYnNvbHV0ZSI7DQogIG9zY2NyZWQuc3R5bGUuYm90dG9tID0gIjAiOw0KICBvc2NjcmVkLnN0eWxlLnJpZ2h0ID0gIjAiOw0KICBvc2NjcmVkLnN0eWxlLmZvbnRTaXplID0gIjEwcHgiOw0KICBvc2NjcmVkLnN0eWxlLmNvbG9yID0gIiNjY2MiOw0KICBvc2NjcmVkLnN0eWxlLmZvbnRGYW1pbHkgPSAic2Fucy1zZXJpZiI7DQogIG9zY2NyZWQuc3R5bGUucGFkZGluZyA9ICI1cHgiOw0KICBvc2NjcmVkLnN0eWxlLmJhY2tncm91bmQgPSAiI2ZmZiI7DQogIG9zY2NyZWQuc3R5bGUuYm9yZGVyVG9wTGVmdFJhZGl1cyA9ICI1cHgiOw0KICBvc2NjcmVkLnN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzID0gIjVweCI7DQogIG9zY2NyZWQuc3R5bGUuYm94U2hhZG93ID0gIjAgMCA1cHggI2NjYyI7DQogIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQob3NjY3JlZCk7DQp9DQoNCmRlZmluZVByb3BlcnR5KCk7DQoNCi8vRnVuY2lvbiBwYXJhIGd1YXJkYXIgZXZlbnRvcyBlbiBsb2NhbFN0b3JhZ2UNCmZ1bmN0aW9uIHNhdmVFdmVudHMoKSB7DQogIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCJldmVudHMiLCBKU09OLnN0cmluZ2lmeShldmVudHNBcnIpKTsNCn0NCi8vRnVuY2lvbiBwYXJhIHJlY3VwZXJhciBldmVudG9zIGRlIGxvY2FsU3RvcmFnZQ0KZnVuY3Rpb24gZ2V0RXZlbnRzKCkgew0KICAvL3ZlcmlmaWNhciBzaSBsb3MgZXZlbnRvcyB5YSBlc3TDoW4gZ3VhcmRhZG9zIGVuIGVsIGFsbWFjZW5hbWllbnRvIGxvY2FsLCBsdWVnbyBkZXZvbHZlciBlbCBldmVudG8sIGRlIGxvIGNvbnRyYXJpbywgbmFkYQ0KICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oImV2ZW50cyIpID09PSBudWxsKSB7DQogICAgcmV0dXJuOw0KICB9DQogIGxvYWRlci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KfQ0KLy8gRXNjdWNoYSBsb3MgY2xpY3MgZW4gZWwgY29udGVuZWRvciBkZSBldmVudG9zDQpkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZXZlbnRzJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7DQogICAgLy8gVmVyaWZpY2Egc2kgZWwgZWxlbWVudG8gY2xpY2FkbyBlcyB1biBlbmxhY2UNCiAgICBpZiAoZS50YXJnZXQudGFnTmFtZSA9PT0gJ0EnKSB7DQogICAgICAgIC8vIEFxdcOtIHB1ZWRlcyBtYW5lamFyIGVsIGNsaWMgZW4gZWwgZW5sYWNlLCBzaSBlcyBuZWNlc2FyaW8NCiAgICAgICAgY29uc29sZS5sb2coJ0VubGFjZSBjbGljYWRvOicsIGUudGFyZ2V0LmhyZWYpOw0KICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7DQogICAgfQ0KfSk7DQoNCjwvc2NyaXB0Pg==[\/vc_raw_html][\/vc_column][\/vc_row]<\/p>\n","protected":false},"author":1104,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"om_disable_all_campaigns":false,"footnotes":""},"class_list":["post-20975","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v23.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Prestakuntza Egutegia - Gipuzkoako Farmazialarien Elkargoa<\/title>\n<meta name=\"description\" content=\"Kontsultatu Gipuzkoako Elkargoko prestakuntza egutegia; programatu zure ikastaroak eta tailerrak farmazia lanbide garapenerako.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.cofgipuzkoa.eus\/eu\/formakuntza-egutegia\/\" \/>\n<meta property=\"og:locale\" content=\"eu_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Prestakuntza Egutegia - Gipuzkoako Farmazialarien Elkargoa\" \/>\n<meta property=\"og:description\" content=\"Kontsultatu Gipuzkoako Elkargoko prestakuntza egutegia; programatu zure ikastaroak eta tailerrak farmazia lanbide garapenerako.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.cofgipuzkoa.eus\/eu\/formakuntza-egutegia\/\" \/>\n<meta property=\"og:site_name\" content=\"Colegio Oficial de Farmac\u00e9uticos de Gipuzkoa - Gipuzkoako Farmazilarien Elkargo Ofiziala\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-02T09:20:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.cofgipuzkoa.eus\/wp-content\/uploads\/2023\/12\/cofg.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@GipuzkoaCOF\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.cofgipuzkoa.eus\/eu\/formakuntza-egutegia\/\",\"url\":\"https:\/\/www.cofgipuzkoa.eus\/eu\/formakuntza-egutegia\/\",\"name\":\"Prestakuntza Egutegia - Gipuzkoako Farmazialarien Elkargoa\",\"isPartOf\":{\"@id\":\"https:\/\/www.cofgipuzkoa.eus\/#website\"},\"datePublished\":\"2023-10-18T11:32:27+00:00\",\"dateModified\":\"2024-01-02T09:20:39+00:00\",\"description\":\"Kontsultatu Gipuzkoako Elkargoko prestakuntza egutegia; programatu zure ikastaroak eta tailerrak farmazia lanbide garapenerako.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.cofgipuzkoa.eus\/eu\/formakuntza-egutegia\/#breadcrumb\"},\"inLanguage\":\"eu-ES\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.cofgipuzkoa.eus\/eu\/formakuntza-egutegia\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.cofgipuzkoa.eus\/eu\/formakuntza-egutegia\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.cofgipuzkoa.eus\/eu\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Formakuntza Egutegia\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.cofgipuzkoa.eus\/#website\",\"url\":\"https:\/\/www.cofgipuzkoa.eus\/\",\"name\":\"Colegio Oficial de Farmac\u00e9uticos de Gipuzkoa - Gipuzkoako Farmazilarien Elkargo Ofiziala\",\"description\":\"Colegio Oficial de Farmac\u00e9uticos de Gipuzkoa - Gipuzkoako Farmazilarien Elkargo Ofiziala\",\"publisher\":{\"@id\":\"https:\/\/www.cofgipuzkoa.eus\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.cofgipuzkoa.eus\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"eu-ES\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.cofgipuzkoa.eus\/#organization\",\"name\":\"Colegio Oficial de Farmac\u00e9uticos de Gipuzkoa - Gipuzkoako Farmazilarien Elkargo Ofiziala\",\"url\":\"https:\/\/www.cofgipuzkoa.eus\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"eu-ES\",\"@id\":\"https:\/\/www.cofgipuzkoa.eus\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.cofgipuzkoa.eus\/wp-content\/uploads\/2023\/11\/cofg_logo.png\",\"contentUrl\":\"https:\/\/www.cofgipuzkoa.eus\/wp-content\/uploads\/2023\/11\/cofg_logo.png\",\"width\":112,\"height\":112,\"caption\":\"Colegio Oficial de Farmac\u00e9uticos de Gipuzkoa - Gipuzkoako Farmazilarien Elkargo Ofiziala\"},\"image\":{\"@id\":\"https:\/\/www.cofgipuzkoa.eus\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/GipuzkoaCOF\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Prestakuntza Egutegia - Gipuzkoako Farmazialarien Elkargoa","description":"Kontsultatu Gipuzkoako Elkargoko prestakuntza egutegia; programatu zure ikastaroak eta tailerrak farmazia lanbide garapenerako.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.cofgipuzkoa.eus\/eu\/formakuntza-egutegia\/","og_locale":"eu_ES","og_type":"article","og_title":"Prestakuntza Egutegia - Gipuzkoako Farmazialarien Elkargoa","og_description":"Kontsultatu Gipuzkoako Elkargoko prestakuntza egutegia; programatu zure ikastaroak eta tailerrak farmazia lanbide garapenerako.","og_url":"https:\/\/www.cofgipuzkoa.eus\/eu\/formakuntza-egutegia\/","og_site_name":"Colegio Oficial de Farmac\u00e9uticos de Gipuzkoa - Gipuzkoako Farmazilarien Elkargo Ofiziala","article_modified_time":"2024-01-02T09:20:39+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/www.cofgipuzkoa.eus\/wp-content\/uploads\/2023\/12\/cofg.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_site":"@GipuzkoaCOF","twitter_misc":{"Est. reading time":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.cofgipuzkoa.eus\/eu\/formakuntza-egutegia\/","url":"https:\/\/www.cofgipuzkoa.eus\/eu\/formakuntza-egutegia\/","name":"Prestakuntza Egutegia - Gipuzkoako Farmazialarien Elkargoa","isPartOf":{"@id":"https:\/\/www.cofgipuzkoa.eus\/#website"},"datePublished":"2023-10-18T11:32:27+00:00","dateModified":"2024-01-02T09:20:39+00:00","description":"Kontsultatu Gipuzkoako Elkargoko prestakuntza egutegia; programatu zure ikastaroak eta tailerrak farmazia lanbide garapenerako.","breadcrumb":{"@id":"https:\/\/www.cofgipuzkoa.eus\/eu\/formakuntza-egutegia\/#breadcrumb"},"inLanguage":"eu-ES","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.cofgipuzkoa.eus\/eu\/formakuntza-egutegia\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.cofgipuzkoa.eus\/eu\/formakuntza-egutegia\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.cofgipuzkoa.eus\/eu\/"},{"@type":"ListItem","position":2,"name":"Formakuntza Egutegia"}]},{"@type":"WebSite","@id":"https:\/\/www.cofgipuzkoa.eus\/#website","url":"https:\/\/www.cofgipuzkoa.eus\/","name":"Colegio Oficial de Farmac\u00e9uticos de Gipuzkoa - Gipuzkoako Farmazilarien Elkargo Ofiziala","description":"Colegio Oficial de Farmac\u00e9uticos de Gipuzkoa - Gipuzkoako Farmazilarien Elkargo Ofiziala","publisher":{"@id":"https:\/\/www.cofgipuzkoa.eus\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.cofgipuzkoa.eus\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"eu-ES"},{"@type":"Organization","@id":"https:\/\/www.cofgipuzkoa.eus\/#organization","name":"Colegio Oficial de Farmac\u00e9uticos de Gipuzkoa - Gipuzkoako Farmazilarien Elkargo Ofiziala","url":"https:\/\/www.cofgipuzkoa.eus\/","logo":{"@type":"ImageObject","inLanguage":"eu-ES","@id":"https:\/\/www.cofgipuzkoa.eus\/#\/schema\/logo\/image\/","url":"https:\/\/www.cofgipuzkoa.eus\/wp-content\/uploads\/2023\/11\/cofg_logo.png","contentUrl":"https:\/\/www.cofgipuzkoa.eus\/wp-content\/uploads\/2023\/11\/cofg_logo.png","width":112,"height":112,"caption":"Colegio Oficial de Farmac\u00e9uticos de Gipuzkoa - Gipuzkoako Farmazilarien Elkargo Ofiziala"},"image":{"@id":"https:\/\/www.cofgipuzkoa.eus\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/GipuzkoaCOF"]}]}},"publishpress_future_action":{"enabled":false,"date":"2026-05-07 07:35:01","action":"change-status","newStatus":"draft","terms":[],"taxonomy":"translation_priority"},"_links":{"self":[{"href":"https:\/\/www.cofgipuzkoa.eus\/eu\/wp-json\/wp\/v2\/pages\/20975"}],"collection":[{"href":"https:\/\/www.cofgipuzkoa.eus\/eu\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.cofgipuzkoa.eus\/eu\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.cofgipuzkoa.eus\/eu\/wp-json\/wp\/v2\/users\/1104"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cofgipuzkoa.eus\/eu\/wp-json\/wp\/v2\/comments?post=20975"}],"version-history":[{"count":1,"href":"https:\/\/www.cofgipuzkoa.eus\/eu\/wp-json\/wp\/v2\/pages\/20975\/revisions"}],"predecessor-version":[{"id":21368,"href":"https:\/\/www.cofgipuzkoa.eus\/eu\/wp-json\/wp\/v2\/pages\/20975\/revisions\/21368"}],"wp:attachment":[{"href":"https:\/\/www.cofgipuzkoa.eus\/eu\/wp-json\/wp\/v2\/media?parent=20975"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}