Name: Portland_Urban_Soundmapping
Display Field: objectid
Type: Feature Layer
Geometry Type: esriGeometryPoint
Description:
Copyright Text:
Min. Scale: 0
Max. Scale: 0
Default Visibility: true
Max Record Count: 1000
Supported query Formats: JSON, geoJSON, PBF
Use Standardized Queries: True
Extent:
XMin: -180
YMin: -90
XMax: 180
YMax: 90
Spatial Reference: 4326 (4326)
Drawing Info:
{"renderer":{"type":"simple","label":"Portland Urban Soundmapping","description":"Survey Data Locations","symbol":{"angle":0,"xoffset":0,"yoffset":0,"type":"esriPMS","url":"9742c6c1-64dc-4d9d-85c8-548bec95296f","width":13.5,"height":13.5,"imageData":"CjwhRE9DVFlQRSBodG1sPgo8aHRtbCBsYW5nPSJlbiI+CiAgPGhlYWQ+CiAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgogIDxtZXRhIGNvbnRlbnQ9IndpZHRoPTMwMCwgaW5pdGlhbC1zY2FsZT0xIiBuYW1lPSJ2aWV3cG9ydCI+CiAgPG1ldGEgbmFtZT0iZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uIiBjb250ZW50PSJMcmRUVVc5cHNVQU1iaDRJYTA3NC1CUEVWbWNwQnhGNkd3ZjBNU2dRWFpzIj4KICA8dGl0bGU+U2lnbiBpbiAtIEdvb2dsZSBBY2NvdW50czwvdGl0bGU+CiAgPHN0eWxlPgogIEBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdPcGVuIFNhbnMgTGlnaHQnKSwgbG9jYWwoJ09wZW5TYW5zLUxpZ2h0JyksIHVybCgvL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjE1L21lbTVZYUdzMTI2TWlacEJBLVVOX3I4T1V1aHMudHRmKSBmb3JtYXQoJ3RydWV0eXBlJyk7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ09wZW4gU2FucycpLCBsb2NhbCgnT3BlblNhbnMnKSwgdXJsKC8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92MTUvbWVtOFlhR3MxMjZNaVpwQkEtVUZWWjBlLnR0ZikgZm9ybWF0KCd0cnVldHlwZScpOwp9CiAgPC9zdHlsZT4KICA8c3R5bGU+CiAgaDEsIGgyIHsKICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMC4xczsKICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmb250Zml4OwogIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogMTsKICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjsKICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogMDsKICB9CiAgQC13ZWJraXQta2V5ZnJhbWVzIGZvbnRmaXggewogIGZyb20gewogIG9wYWNpdHk6IDE7CiAgfQogIHRvIHsKICBvcGFjaXR5OiAxOwogIH0KICB9CiAgPC9zdHlsZT4KPHN0eWxlPgogIGh0bWwsIGJvZHkgewogIGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjsKICBiYWNrZ3JvdW5kOiAjZmZmOwogIG1hcmdpbjogMDsKICBwYWRkaW5nOiAwOwogIGJvcmRlcjogMDsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgaGVpZ2h0OiAxMDAlOwogIG1pbi13aWR0aDogMTAwJTsKICBmb250LXNpemU6IDEzcHg7CiAgY29sb3I6ICM0MDQwNDA7CiAgZGlyZWN0aW9uOiBsdHI7CiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiBub25lOwogIH0KICBidXR0b24sCiAgaW5wdXRbdHlwZT1idXR0b25dLAogIGlucHV0W3R5cGU9c3VibWl0XSB7CiAgZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmOwogIGZvbnQtc2l6ZTogMTNweDsKICB9CiAgYSwKICBhOmhvdmVyLAogIGE6dmlzaXRlZCB7CiAgY29sb3I6ICM0MjdmZWQ7CiAgY3Vyc29yOiBwb2ludGVyOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICB9CiAgYTpob3ZlciB7CiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgfQogIGgxIHsKICBmb250LXNpemU6IDIwcHg7CiAgY29sb3I6ICMyNjI2MjY7CiAgbWFyZ2luOiAwIDAgMTVweDsKICBmb250LXdlaWdodDogbm9ybWFsOwogIH0KICBoMiB7CiAgZm9udC1zaXplOiAxNHB4OwogIGNvbG9yOiAjMjYyNjI2OwogIG1hcmdpbjogMCAwIDE1cHg7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgfQogIGlucHV0W3R5cGU9ZW1haWxdLAogIGlucHV0W3R5cGU9bnVtYmVyXSwKICBpbnB1dFt0eXBlPXBhc3N3b3JkXSwKICBpbnB1dFt0eXBlPXRlbF0sCiAgaW5wdXRbdHlwZT10ZXh0XSwKICBpbnB1dFt0eXBlPXVybF0gewogIC1tb3otYXBwZWFyYW5jZTogbm9uZTsKICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CiAgYXBwZWFyYW5jZTogbm9uZTsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgaGVpZ2h0OiAzNnB4OwogIHBhZGRpbmc6IDAgOHB4OwogIG1hcmdpbjogMDsKICBiYWNrZ3JvdW5kOiAjZmZmOwogIGJvcmRlcjogMXB4IHNvbGlkICNkOWQ5ZDk7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNjMGMwYzA7CiAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogIC1tb3otYm9yZGVyLXJhZGl1czogMXB4OwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMXB4OwogIGJvcmRlci1yYWRpdXM6IDFweDsKICBmb250LXNpemU6IDE1cHg7CiAgY29sb3I6ICM0MDQwNDA7CiAgfQogIGlucHV0W3R5cGU9ZW1haWxdOmhvdmVyLAogIGlucHV0W3R5cGU9bnVtYmVyXTpob3ZlciwKICBpbnB1dFt0eXBlPXBhc3N3b3JkXTpob3ZlciwKICBpbnB1dFt0eXBlPXRlbF06aG92ZXIsCiAgaW5wdXRbdHlwZT10ZXh0XTpob3ZlciwKICBpbnB1dFt0eXBlPXVybF06aG92ZXIgewogIGJvcmRlcjogMXB4IHNvbGlkICNiOWI5Yjk7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNhMGEwYTA7CiAgLW1vei1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAycHggcmdiYSgwLDAsMCwwLjEpOwogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMnB4IHJnYmEoMCwwLDAsMC4xKTsKICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAycHggcmdiYSgwLDAsMCwwLjEpOwogIH0KICBpbnB1dFt0eXBlPWVtYWlsXTpmb2N1cywKICBpbnB1dFt0eXBlPW51bWJlcl06Zm9jdXMsCiAgaW5wdXRbdHlwZT1wYXNzd29yZF06Zm9jdXMsCiAgaW5wdXRbdHlwZT10ZWxdOmZvY3VzLAogIGlucHV0W3R5cGU9dGV4dF06Zm9jdXMsCiAgaW5wdXRbdHlwZT11cmxdOmZvY3VzIHsKICBvdXRsaW5lOiBub25lOwogIGJvcmRlcjogMXB4IHNvbGlkICM0ZDkwZmU7CiAgLW1vei1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAycHggcmdiYSgwLDAsMCwwLjMpOwogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMnB4IHJnYmEoMCwwLDAsMC4zKTsKICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAycHggcmdiYSgwLDAsMCwwLjMpOwogIH0KICBpbnB1dFt0eXBlPWNoZWNrYm94XSwKICBpbnB1dFt0eXBlPXJhZGlvXSB7CiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMTNweDsKICBoZWlnaHQ6IDEzcHg7CiAgbWFyZ2luOiAwOwogIGN1cnNvcjogcG9pbnRlcjsKICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tOwogIGJhY2tncm91bmQ6ICNmZmY7CiAgYm9yZGVyOiAxcHggc29saWQgI2M2YzZjNjsKICAtbW96LWJvcmRlci1yYWRpdXM6IDFweDsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDFweDsKICBib3JkZXItcmFkaXVzOiAxcHg7CiAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB9CiAgaW5wdXRbdHlwZT1jaGVja2JveF06YWN0aXZlLAogIGlucHV0W3R5cGU9cmFkaW9dOmFjdGl2ZSB7CiAgYmFja2dyb3VuZDogI2ViZWJlYjsKICB9CiAgaW5wdXRbdHlwZT1jaGVja2JveF06aG92ZXIgewogIGJvcmRlci1jb2xvcjogI2M2YzZjNjsKICAtbW96LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDJweCByZ2JhKDAsMCwwLDAuMSk7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAycHggcmdiYSgwLDAsMCwwLjEpOwogIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDJweCByZ2JhKDAsMCwwLDAuMSk7CiAgfQogIGlucHV0W3R5cGU9cmFkaW9dIHsKICAtbW96LWJvcmRlci1yYWRpdXM6IDFlbTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDFlbTsKICBib3JkZXItcmFkaXVzOiAxZW07CiAgd2lkdGg6IDE1cHg7CiAgaGVpZ2h0OiAxNXB4OwogIH0KICBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkLAogIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQgewogIGJhY2tncm91bmQ6ICNmZmY7CiAgfQogIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6OmFmdGVyIHsKICBjb250ZW50OiAnJzsKICBkaXNwbGF5OiBibG9jazsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdG9wOiAzcHg7CiAgbGVmdDogM3B4OwogIHdpZHRoOiA3cHg7CiAgaGVpZ2h0OiA3cHg7CiAgYmFja2dyb3VuZDogIzY2NjsKICAtbW96LWJvcmRlci1yYWRpdXM6IDFlbTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDFlbTsKICBib3JkZXItcmFkaXVzOiAxZW07CiAgfQogIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6OmFmdGVyIHsKICBjb250ZW50OiB1cmwoaHR0cHM6Ly9zc2wuZ3N0YXRpYy5jb20vdWkvdjEvbWVudS9jaGVja21hcmsucG5nKTsKICBkaXNwbGF5OiBibG9jazsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAtNnB4OwogIGxlZnQ6IC01cHg7CiAgfQogIGlucHV0W3R5cGU9Y2hlY2tib3hdOmZvY3VzIHsKICBvdXRsaW5lOiBub25lOwogIGJvcmRlci1jb2xvcjogIzRkOTBmZTsKICB9CiAgLnN0YWNrZWQtbGFiZWwgewogIGRpc3BsYXk6IGJsb2NrOwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIG1hcmdpbjogLjVlbSAwOwogIH0KICAuaGlkZGVuLWxhYmVsIHsKICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDsKICBjbGlwOiByZWN0KDFweCAxcHggMXB4IDFweCk7IC8qIElFNiwgSUU3ICovCiAgY2xpcDogcmVjdCgxcHgsIDFweCwgMXB4LCAxcHgpOwogIGhlaWdodDogMHB4OwogIHdpZHRoOiAwcHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgfQogIGlucHV0W3R5cGU9Y2hlY2tib3hdLmZvcm0tZXJyb3IsCiAgaW5wdXRbdHlwZT1lbWFpbF0uZm9ybS1lcnJvciwKICBpbnB1dFt0eXBlPW51bWJlcl0uZm9ybS1lcnJvciwKICBpbnB1dFt0eXBlPXBhc3N3b3JkXS5mb3JtLWVycm9yLAogIGlucHV0W3R5cGU9dGV4dF0uZm9ybS1lcnJvciwKICBpbnB1dFt0eXBlPXRlbF0uZm9ybS1lcnJvciwKICBpbnB1dFt0eXBlPXVybF0uZm9ybS1lcnJvciB7CiAgYm9yZGVyOiAxcHggc29saWQgI2RkNGIzOTsKICB9CiAgLmVycm9yLW1zZyB7CiAgbWFyZ2luOiAuNWVtIDA7CiAgZGlzcGxheTogYmxvY2s7CiAgY29sb3I6ICNkZDRiMzk7CiAgbGluZS1oZWlnaHQ6IDE3cHg7CiAgfQogIC5oZWxwLWxpbmsgewogIGJhY2tncm91bmQ6ICNkZDRiMzk7CiAgcGFkZGluZzogMCA1cHg7CiAgY29sb3I6ICNmZmY7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIC1tb3otYm9yZGVyLXJhZGl1czogMWVtOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMWVtOwogIGJvcmRlci1yYWRpdXM6IDFlbTsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHRvcDogMHB4OwogIH0KICAuaGVscC1saW5rOnZpc2l0ZWQgewogIGNvbG9yOiAjZmZmOwogIH0KICAuaGVscC1saW5rOmhvdmVyIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kOiAjYzAzNTIzOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICB9CiAgLmhlbHAtbGluazphY3RpdmUgewogIG9wYWNpdHk6IDE7CiAgYmFja2dyb3VuZDogI2FlMjgxNzsKICB9CiAgLndyYXBwZXIgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBtaW4taGVpZ2h0OiAxMDAlOwogIH0KICAuY29udGVudCB7CiAgcGFkZGluZzogMCA0NHB4OwogIH0KICAubWFpbiB7CiAgcGFkZGluZy1ib3R0b206IDEwMHB4OwogIH0KICAvKiBGb3IgbW9kZXJuIGJyb3dzZXJzICovCiAgLmNsZWFyZml4OmJlZm9yZSwKICAuY2xlYXJmaXg6YWZ0ZXIgewogIGNvbnRlbnQ6ICIiOwogIGRpc3BsYXk6IHRhYmxlOwogIH0KICAuY2xlYXJmaXg6YWZ0ZXIgewogIGNsZWFyOiBib3RoOwogIH0KICAvKiBGb3IgSUUgNi83ICh0cmlnZ2VyIGhhc0xheW91dCkgKi8KICAuY2xlYXJmaXggewogIHpvb206MTsKICB9CiAgLmdvb2dsZS1oZWFkZXItYmFyIHsKICBoZWlnaHQ6IDcxcHg7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlNWU1ZTU7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICB9CiAgLmhlYWRlciAubG9nbyB7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKGh0dHBzOi8vc3NsLmdzdGF0aWMuY29tL2FjY291bnRzL3VpL2xvZ29fMXgucG5nKTsKICBiYWNrZ3JvdW5kLXNpemU6IDExNnB4IDM4cHg7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKICBtYXJnaW46IDE3cHggMCAwOwogIGZsb2F0OiBsZWZ0OwogIGhlaWdodDogMzhweDsKICB3aWR0aDogMTE2cHg7CiAgfQogIC5oZWFkZXIgLmxvZ28tdyB7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKGh0dHBzOi8vc3NsLmdzdGF0aWMuY29tL2ltYWdlcy9icmFuZGluZy9nb29nbGVsb2dvLzF4L2dvb2dsZWxvZ29fY29sb3JfMTEyeDM2ZHAucG5nKTsKICBiYWNrZ3JvdW5kLXNpemU6IDExMnB4IDM2cHg7CiAgbWFyZ2luOiAyMXB4IDAgMDsKICB9CiAgLmhlYWRlciAuc2Vjb25kYXJ5LWxpbmsgewogIG1hcmdpbjogMjhweCAwIDA7CiAgZmxvYXQ6IHJpZ2h0OwogIH0KICAuaGVhZGVyIC5zZWNvbmRhcnktbGluayBhIHsKICBmb250LXdlaWdodDogbm9ybWFsOwogIH0KICAuZ29vZ2xlLWhlYWRlci1iYXIuY2VudGVyZWQgewogIGJvcmRlcjogMDsKICBoZWlnaHQ6IDEwOHB4OwogIH0KICAuZ29vZ2xlLWhlYWRlci1iYXIuY2VudGVyZWQgLmhlYWRlciAubG9nbyB7CiAgZmxvYXQ6IG5vbmU7CiAgbWFyZ2luOiA0MHB4IGF1dG8gMzBweDsKICBkaXNwbGF5OiBibG9jazsKICB9CiAgLmdvb2dsZS1oZWFkZXItYmFyLmNlbnRlcmVkIC5oZWFkZXIgLnNlY29uZGFyeS1saW5rIHsKICBkaXNwbGF5OiBub25lCiAgfQogIC5nb29nbGUtZm9vdGVyLWJhciB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGJvdHRvbTogMDsKICBoZWlnaHQ6IDM1cHg7CiAgd2lkdGg6IDEwMCU7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlNWU1ZTU7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICB9CiAgLmZvb3RlciB7CiAgcGFkZGluZy10b3A6IDdweDsKICBmb250LXNpemU6IC44NWVtOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgbGluZS1oZWlnaHQ6IDA7CiAgfQogIC5mb290ZXIgdWwgewogIGZsb2F0OiBsZWZ0OwogIG1heC13aWR0aDogODAlOwogIG1pbi1oZWlnaHQ6IDE2cHg7CiAgcGFkZGluZzogMDsKICB9CiAgLmZvb3RlciB1bCBsaSB7CiAgY29sb3I6ICM3MzczNzM7CiAgZGlzcGxheTogaW5saW5lOwogIHBhZGRpbmc6IDA7CiAgcGFkZGluZy1yaWdodDogMS41ZW07CiAgfQogIC5mb290ZXIgYSB7CiAgY29sb3I6ICM3MzczNzM7CiAgfQogIC5sYW5nLWNob29zZXItd3JhcCB7CiAgZmxvYXQ6IHJpZ2h0OwogIGRpc3BsYXk6IGlubGluZTsKICB9CiAgLmxhbmctY2hvb3Nlci13cmFwIGltZyB7CiAgdmVydGljYWwtYWxpZ246IHRvcDsKICB9CiAgLmxhbmctY2hvb3NlciB7CiAgZm9udC1zaXplOiAxM3B4OwogIGhlaWdodDogMjRweDsKICBsaW5lLWhlaWdodDogMjRweDsKICB9CiAgLmxhbmctY2hvb3NlciBvcHRpb24gewogIGZvbnQtc2l6ZTogMTNweDsKICBsaW5lLWhlaWdodDogMjRweDsKICB9CiAgLmhpZGRlbiB7CiAgaGVpZ2h0OiAwcHg7CiAgd2lkdGg6IDBweDsKICBvdmVyZmxvdzogaGlkZGVuOwogIHZpc2liaWxpdHk6IGhpZGRlbjsKICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgfQogIC5iYW5uZXIgewogIHRleHQtYWxpZ246IGNlbnRlcjsKICB9CiAgLmNhcmQgewogIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7CiAgcGFkZGluZzogMjBweCAyNXB4IDMwcHg7CiAgbWFyZ2luOiAwIGF1dG8gMjVweDsKICB3aWR0aDogMzA0cHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAycHg7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAycHg7CiAgYm9yZGVyLXJhZGl1czogMnB4OwogIC1tb3otYm94LXNoYWRvdzogMHB4IDJweCAycHggcmdiYSgwLCAwLCAwLCAwLjMpOwogIC13ZWJraXQtYm94LXNoYWRvdzogMHB4IDJweCAycHggcmdiYSgwLCAwLCAwLCAwLjMpOwogIGJveC1zaGFkb3c6IDBweCAycHggMnB4IHJnYmEoMCwgMCwgMCwgMC4zKTsKICB9CiAgLmNhcmQgPiAqOmZpcnN0LWNoaWxkIHsKICBtYXJnaW4tdG9wOiAwOwogIH0KICAucmMtYnV0dG9uLAogIC5yYy1idXR0b246dmlzaXRlZCB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIG1pbi13aWR0aDogNDZweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgY29sb3I6ICM0NDQ7CiAgZm9udC1zaXplOiAxNHB4OwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgaGVpZ2h0OiAzNnB4OwogIHBhZGRpbmc6IDAgOHB4OwogIGxpbmUtaGVpZ2h0OiAzNnB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogM3B4OwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4OwogIGJvcmRlci1yYWRpdXM6IDNweDsKICAtby10cmFuc2l0aW9uOiBhbGwgMC4yMThzOwogIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuMjE4czsKICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjIxOHM7CiAgdHJhbnNpdGlvbjogYWxsIDAuMjE4czsKICBib3JkZXI6IDFweCBzb2xpZCAjZGNkY2RjOwogIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCNmNWY1ZjUsI2YxZjFmMSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQodG9wLCNmNWY1ZjUsI2YxZjFmMSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW1zLWxpbmVhci1ncmFkaWVudCh0b3AsI2Y1ZjVmNSwjZjFmMWYxKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCNmNWY1ZjUsI2YxZjFmMSk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvcCwjZjVmNWY1LCNmMWYxZjEpOwogIC1vLXRyYW5zaXRpb246IG5vbmU7CiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogIHVzZXItc2VsZWN0OiBub25lOwogIGN1cnNvcjogZGVmYXVsdDsKICB9CiAgLmNhcmQgLnJjLWJ1dHRvbiB7CiAgd2lkdGg6IDEwMCU7CiAgcGFkZGluZzogMDsKICB9CiAgLnJjLWJ1dHRvbi5kaXNhYmxlZCwKICAucmMtYnV0dG9uW2Rpc2FibGVkXSB7CiAgb3BhY2l0eTogLjU7CiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTUwKTsKICBjdXJzb3I6IGRlZmF1bHQ7CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgfQogIC5yYy1idXR0b246aG92ZXIgewogIGJvcmRlcjogMXB4IHNvbGlkICNjNmM2YzY7CiAgY29sb3I6ICMzMzM7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIC1vLXRyYW5zaXRpb246IGFsbCAwLjBzOwogIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuMHM7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4wczsKICB0cmFuc2l0aW9uOiBhbGwgMC4wczsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOGY4OwogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwjZjhmOGY4LCNmMWYxZjEpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwjZjhmOGY4LCNmMWYxZjEpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tcy1saW5lYXItZ3JhZGllbnQodG9wLCNmOGY4ZjgsI2YxZjFmMSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwjZjhmOGY4LCNmMWYxZjEpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0b3AsI2Y4ZjhmOCwjZjFmMWYxKTsKICAtbW96LWJveC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsMCwwLDAuMSk7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgwLDAsMCwwLjEpOwogIGJveC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsMCwwLDAuMSk7CiAgfQogIC5yYy1idXR0b246YWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjZmNmY2OwogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwjZjZmNmY2LCNmMWYxZjEpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwjZjZmNmY2LCNmMWYxZjEpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tcy1saW5lYXItZ3JhZGllbnQodG9wLCNmNmY2ZjYsI2YxZjFmMSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwjZjZmNmY2LCNmMWYxZjEpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0b3AsI2Y2ZjZmNiwjZjFmMWYxKTsKICAtbW96LWJveC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDAsMCwwLDAuMSk7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDFweCAycHggcmdiYSgwLDAsMCwwLjEpOwogIGJveC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDAsMCwwLDAuMSk7CiAgfQogIC5yYy1idXR0b24tc3VibWl0LAogIC5yYy1idXR0b24tc3VibWl0OnZpc2l0ZWQgewogIGJvcmRlcjogMXB4IHNvbGlkICMzMDc5ZWQ7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1zaGFkb3c6IDAgMXB4IHJnYmEoMCwwLDAsMC4xKTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGQ5MGZlOwogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwjNGQ5MGZlLCM0Nzg3ZWQpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwjNGQ5MGZlLCM0Nzg3ZWQpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tcy1saW5lYXItZ3JhZGllbnQodG9wLCM0ZDkwZmUsIzQ3ODdlZCk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwjNGQ5MGZlLCM0Nzg3ZWQpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0b3AsIzRkOTBmZSwjNDc4N2VkKTsKICB9CiAgLnJjLWJ1dHRvbi1zdWJtaXQ6aG92ZXIgewogIGJvcmRlcjogMXB4IHNvbGlkICMyZjViYjc7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1zaGFkb3c6IDAgMXB4IHJnYmEoMCwwLDAsMC4zKTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzU3YWU4OwogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwjNGQ5MGZlLCMzNTdhZTgpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwjNGQ5MGZlLCMzNTdhZTgpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tcy1saW5lYXItZ3JhZGllbnQodG9wLCM0ZDkwZmUsIzM1N2FlOCk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwjNGQ5MGZlLCMzNTdhZTgpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0b3AsIzRkOTBmZSwjMzU3YWU4KTsKICB9CiAgLnJjLWJ1dHRvbi1zdWJtaXQ6YWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzU3YWU4OwogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwjNGQ5MGZlLCMzNTdhZTgpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwjNGQ5MGZlLCMzNTdhZTgpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tcy1saW5lYXItZ3JhZGllbnQodG9wLCM0ZDkwZmUsIzM1N2FlOCk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwjNGQ5MGZlLCMzNTdhZTgpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0b3AsIzRkOTBmZSwjMzU3YWU4KTsKICAtbW96LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDJweCByZ2JhKDAsMCwwLDAuMyk7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAycHggcmdiYSgwLDAsMCwwLjMpOwogIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDJweCByZ2JhKDAsMCwwLDAuMyk7CiAgfQogIC5yYy1idXR0b24tcmVkLAogIC5yYy1idXR0b24tcmVkOnZpc2l0ZWQgewogIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGNvbG9yOiAjZmZmOwogIHRleHQtc2hhZG93OiAwIDFweCByZ2JhKDAsMCwwLDAuMSk7CiAgYmFja2dyb3VuZC1jb2xvcjogI2QxNDgzNjsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsI2RkNGIzOSwjZDE0ODM2KTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtbW96LWxpbmVhci1ncmFkaWVudCh0b3AsI2RkNGIzOSwjZDE0ODM2KTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtbXMtbGluZWFyLWdyYWRpZW50KHRvcCwjZGQ0YjM5LCNkMTQ4MzYpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudCh0b3AsI2RkNGIzOSwjZDE0ODM2KTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG9wLCNkZDRiMzksI2QxNDgzNik7CiAgfQogIC5yYy1idXR0b24tcmVkOmhvdmVyIHsKICBib3JkZXI6IDFweCBzb2xpZCAjYjAyODFhOwogIGNvbG9yOiAjZmZmOwogIHRleHQtc2hhZG93OiAwIDFweCByZ2JhKDAsMCwwLDAuMyk7CiAgYmFja2dyb3VuZC1jb2xvcjogI2M1MzcyNzsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsI2RkNGIzOSwjYzUzNzI3KTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtbW96LWxpbmVhci1ncmFkaWVudCh0b3AsI2RkNGIzOSwjYzUzNzI3KTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtbXMtbGluZWFyLWdyYWRpZW50KHRvcCwjZGQ0YjM5LCNjNTM3MjcpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudCh0b3AsI2RkNGIzOSwjYzUzNzI3KTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG9wLCNkZDRiMzksI2M1MzcyNyk7CiAgfQogIC5yYy1idXR0b24tcmVkOmFjdGl2ZSB7CiAgYm9yZGVyOiAxcHggc29saWQgIzk5MmExYjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjAyODFhOwogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwjZGQ0YjM5LCNiMDI4MWEpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwjZGQ0YjM5LCNiMDI4MWEpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tcy1saW5lYXItZ3JhZGllbnQodG9wLCNkZDRiMzksI2IwMjgxYSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwjZGQ0YjM5LCNiMDI4MWEpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0b3AsI2RkNGIzOSwjYjAyODFhKTsKICAtbW96LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDJweCByZ2JhKDAsMCwwLDAuMyk7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAycHggcmdiYSgwLDAsMCwwLjMpOwogIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDJweCByZ2JhKDAsMCwwLDAuMyk7CiAgfQogIC5zZWNvbmRhcnktYWN0aW9ucyB7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIH0KPC9zdHlsZT4KPHN0eWxlIG1lZGlhPSJzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDgwMHB4KSwgc2NyZWVuIGFuZCAobWF4LWhlaWdodDogODAwcHgpIj4KICAuZ29vZ2xlLWhlYWRlci1iYXIuY2VudGVyZWQgewogIGhlaWdodDogODNweDsKICB9CiAgLmdvb2dsZS1oZWFkZXItYmFyLmNlbnRlcmVkIC5oZWFkZXIgLmxvZ28gewogIG1hcmdpbjogMjVweCBhdXRvIDIwcHg7CiAgfQogIC5jYXJkIHsKICBtYXJnaW4tYm90dG9tOiAyMHB4OwogIH0KPC9zdHlsZT4KPHN0eWxlIG1lZGlhPSJzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU4MHB4KSI+CiAgaHRtbCwgYm9keSB7CiAgZm9udC1zaXplOiAxNHB4OwogIH0KICAuZ29vZ2xlLWhlYWRlci1iYXIuY2VudGVyZWQgewogIGhlaWdodDogNzNweDsKICB9CiAgLmdvb2dsZS1oZWFkZXItYmFyLmNlbnRlcmVkIC5oZWFkZXIgLmxvZ28gewogIG1hcmdpbjogMjBweCBhdXRvIDE1cHg7CiAgfQogIC5jb250ZW50IHsKICBwYWRkaW5nLWxlZnQ6IDEwcHg7CiAgcGFkZGluZy1yaWdodDogMTBweDsKICB9CiAgLmhpZGRlbi1zbWFsbCB7CiAgZGlzcGxheTogbm9uZTsKICB9CiAgLmNhcmQgewogIHBhZGRpbmc6IDIwcHggMTVweCAzMHB4OwogIHdpZHRoOiAyNzBweDsKICB9CiAgLmZvb3RlciB1bCBsaSB7CiAgcGFkZGluZy1yaWdodDogMWVtOwogIH0KICAubGFuZy1jaG9vc2VyLXdyYXAgewogIGRpc3BsYXk6IG5vbmU7CiAgfQo8L3N0eWxlPgo8c3R5bGUgbWVkaWE9InNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMS41KSwgKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzogMS41KSwgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDMgLyAyKSwgKG1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDEuNSkiPgogIC5oZWFkZXIgLmxvZ28gewogIGJhY2tncm91bmQtaW1hZ2U6IHVybChodHRwczovL3NzbC5nc3RhdGljLmNvbS9hY2NvdW50cy91aS9sb2dvXzJ4LnBuZyk7CiAgfQogIC5oZWFkZXIgLmxvZ28tdyB7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKGh0dHBzOi8vc3NsLmdzdGF0aWMuY29tL2ltYWdlcy9icmFuZGluZy9nb29nbGVsb2dvLzJ4L2dvb2dsZWxvZ29fY29sb3JfMTEyeDM2ZHAucG5nKTsKICB9Cjwvc3R5bGU+CjxzdHlsZT4KICBwcmUuZGVidWcgewogIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDA7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDEuNWVtOwogIGZvbnQtc2l6ZTogMTNweDsKICBiYWNrZ3JvdW5kOiAjZjFmMWYxOwogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTVlNWU1OwogIGRpcmVjdGlvbjogbHRyOwogIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKICB3aWR0aDogOTAlOwogIG92ZXJmbG93OiBoaWRkZW47CiAgfQo8L3N0eWxlPgo8c3R5bGU+CiAgLmJhbm5lciBoMSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCBhcmlhbDsKICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICBjb2xvcjogIzU1NTsKICBmb250LXNpemU6IDQycHg7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgfQogIC5iYW5uZXIgaDIgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgYXJpYWw7CiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgY29sb3I6ICM1NTU7CiAgZm9udC1zaXplOiAxOHB4OwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKICB9CiAgLnNpZ25pbi1jYXJkIHsKICB3aWR0aDogMjc0cHg7CiAgcGFkZGluZzogNDBweCA0MHB4OwogIH0KICAuc2lnbmluLWNhcmQgLnByb2ZpbGUtaW1nIHsKICB3aWR0aDogOTZweDsKICBoZWlnaHQ6IDk2cHg7CiAgbWFyZ2luOiAwIGF1dG8gMTBweDsKICBkaXNwbGF5OiBibG9jazsKICAtbW96LWJvcmRlci1yYWRpdXM6IDUwJTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwJTsKICBib3JkZXItcmFkaXVzOiA1MCU7CiAgfQogIC5zaWduaW4tY2FyZCAucHJvZmlsZS1uYW1lIHsKICBmb250LXNpemU6IDE2cHg7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIG1hcmdpbjogMTBweCAwIDA7CiAgbWluLWhlaWdodDogMWVtOwogIH0KICAuc2lnbmluLWNhcmQgLnByb2ZpbGUtZW1haWwgewogIGZvbnQtc2l6ZTogMTZweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgbWFyZ2luOiAxMHB4IDAgMjBweCAwOwogIG1pbi1oZWlnaHQ6IDFlbTsKICB9CiAgLnNpZ25pbi1jYXJkIGlucHV0W3R5cGU9ZW1haWxdLAogIC5zaWduaW4tY2FyZCBpbnB1dFt0eXBlPXBhc3N3b3JkXSwKICAuc2lnbmluLWNhcmQgaW5wdXRbdHlwZT10ZXh0XSwKICAuc2lnbmluLWNhcmQgaW5wdXRbdHlwZT1zdWJtaXRdIHsKICB3aWR0aDogMTAwJTsKICBkaXNwbGF5OiBibG9jazsKICBtYXJnaW4tYm90dG9tOiAxMHB4OwogIHotaW5kZXg6IDE7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDsKICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICB9CiAgLnNpZ25pbi1jYXJkICNFbWFpbCwKICAuc2lnbmluLWNhcmQgI1Bhc3N3ZCwKICAuc2lnbmluLWNhcmQgLmNhcHRjaGEgewogIGRpcmVjdGlvbjogbHRyOwogIGhlaWdodDogNDRweDsKICBmb250LXNpemU6IDE2cHg7CiAgfQogIC5zaWduaW4tY2FyZCAjRW1haWwgKyAuc3RhY2tlZC1sYWJlbCB7CiAgbWFyZ2luLXRvcDogMTVweDsKICB9CiAgLnNpZ25pbi1jYXJkICNyZWF1dGhFbWFpbCB7CiAgZGlzcGxheTogYmxvY2s7CiAgbWFyZ2luLWJvdHRvbTogMTBweDsKICBsaW5lLWhlaWdodDogMzZweDsKICBwYWRkaW5nOiAwIDhweDsKICBmb250LXNpemU6IDE1cHg7CiAgY29sb3I6ICM0MDQwNDA7CiAgbGluZS1oZWlnaHQ6IDI7CiAgbWFyZ2luLWJvdHRvbTogMTBweDsKICBmb250LXNpemU6IDE0cHg7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIG92ZXJmbG93OiBoaWRkZW47CiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgfQogIC5vbmUtZ29vZ2xlIHAgewogIG1hcmdpbjogMCAwIDEwcHg7CiAgY29sb3I6ICM1NTU7CiAgZm9udC1zaXplOiAxNHB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB9CiAgLm9uZS1nb29nbGUgcC5jcmVhdGUtYWNjb3VudCwKICAub25lLWdvb2dsZSBwLnN3aXRjaC1hY2NvdW50IHsKICBtYXJnaW4tYm90dG9tOiA2MHB4OwogIH0KICAub25lLWdvb2dsZSAubG9nby1zdHJpcCB7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKICBkaXNwbGF5OiBibG9jazsKICBtYXJnaW46IDEwcHggYXV0bzsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaHR0cHM6Ly9zc2wuZ3N0YXRpYy5jb20vYWNjb3VudHMvdWkvd2xvZ29zdHJpcF8yMzB4MTdfMXgucG5nKTsKICBiYWNrZ3JvdW5kLXNpemU6IDIzMHB4IDE3cHg7CiAgd2lkdGg6IDIzMHB4OwogIGhlaWdodDogMTdweDsKICB9Cjwvc3R5bGU+CjxzdHlsZSBtZWRpYT0ic2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4MDBweCksIHNjcmVlbiBhbmQgKG1heC1oZWlnaHQ6IDgwMHB4KSI+CiAgLmJhbm5lciBoMSB7CiAgZm9udC1zaXplOiAzOHB4OwogIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgfQogIC5iYW5uZXIgaDIgewogIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgfQogIC5vbmUtZ29vZ2xlIHAuY3JlYXRlLWFjY291bnQsCiAgLm9uZS1nb29nbGUgcC5zd2l0Y2gtYWNjb3VudCB7CiAgbWFyZ2luLWJvdHRvbTogMzBweDsKICB9CiAgLnNpZ25pbi1jYXJkICNFbWFpbCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKICB9CiAgLnNpZ25pbi1jYXJkICNQYXNzd2QgewogIG1hcmdpbi10b3A6IC0xcHg7CiAgfQogIC5zaWduaW4tY2FyZCAjRW1haWwuZm9ybS1lcnJvciwKICAuc2lnbmluLWNhcmQgI1Bhc3N3ZC5mb3JtLWVycm9yIHsKICB6LWluZGV4OiAyOwogIH0KICAuc2lnbmluLWNhcmQgI0VtYWlsOmhvdmVyLAogIC5zaWduaW4tY2FyZCAjRW1haWw6Zm9jdXMsCiAgLnNpZ25pbi1jYXJkICNQYXNzd2Q6aG92ZXIsCiAgLnNpZ25pbi1jYXJkICNQYXNzd2Q6Zm9jdXMgewogIHotaW5kZXg6IDM7CiAgfQo8L3N0eWxlPgo8c3R5bGUgbWVkaWE9InNjcmVlbiBhbmQgKG1heC13aWR0aDogNTgwcHgpIj4KICAuYmFubmVyIGgxIHsKICBmb250LXNpemU6IDIycHg7CiAgbWFyZ2luLWJvdHRvbTogMTVweDsKICB9CiAgLnNpZ25pbi1jYXJkIHsKICB3aWR0aDogMjYwcHg7CiAgcGFkZGluZzogMjBweCAyMHB4OwogIG1hcmdpbjogMCBhdXRvIDIwcHg7CiAgfQogIC5zaWduaW4tY2FyZCAucHJvZmlsZS1pbWcgewogIHdpZHRoOiA3MnB4OwogIGhlaWdodDogNzJweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDcycHg7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA3MnB4OwogIGJvcmRlci1yYWRpdXM6IDcycHg7CiAgfQo8L3N0eWxlPgo8c3R5bGUgbWVkaWE9InNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMS41KSwgKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzogMS41KSwgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDMgLyAyKSwgKG1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDEuNSkiPgogIC5vbmUtZ29vZ2xlIC5sb2dvLXN0cmlwIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaHR0cHM6Ly9zc2wuZ3N0YXRpYy5jb20vYWNjb3VudHMvdWkvd2xvZ29zdHJpcF8yMzB4MTdfMngucG5nKTsKICB9Cjwvc3R5bGU+CjxzdHlsZT4KICAucmVtZW1iZXIgLmJ1YmJsZS13cmFwIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgcGFkZGluZy10b3A6IDNweDsKICAtby10cmFuc2l0aW9uOiBvcGFjaXR5IC4yMThzIGVhc2UtaW4gLjIxOHM7CiAgLW1vei10cmFuc2l0aW9uOiBvcGFjaXR5IC4yMThzIGVhc2UtaW4gLjIxOHM7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IC4yMThzIGVhc2UtaW4gLjIxOHM7CiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMjE4cyBlYXNlLWluIC4yMThzOwogIGxlZnQ6IC05OTllbTsKICBvcGFjaXR5OiAwOwogIHdpZHRoOiAzMTRweDsKICBtYXJnaW4tbGVmdDogLTIwcHg7CiAgfQogIC5yZW1lbWJlcjpob3ZlciAuYnViYmxlLXdyYXAsCiAgLnJlbWVtYmVyIGlucHV0OmZvY3VzIH4gLmJ1YmJsZS13cmFwLAogIC5yZW1lbWJlciAuYnViYmxlLXdyYXA6aG92ZXIsCiAgLnJlbWVtYmVyIC5idWJibGUtd3JhcDpmb2N1cyB7CiAgb3BhY2l0eTogMTsKICBsZWZ0OiBpbmhlcml0OwogIH0KICAuYnViYmxlLXBvaW50ZXIgewogIGJvcmRlci1sZWZ0OiAxMHB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1yaWdodDogMTBweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItYm90dG9tOiAxMHB4IHNvbGlkICNmZmY7CiAgd2lkdGg6IDA7CiAgaGVpZ2h0OiAwOwogIG1hcmdpbi1sZWZ0OiAxN3B4OwogIH0KICAuYnViYmxlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIHBhZGRpbmc6IDE1cHg7CiAgbWFyZ2luLXRvcDogLTFweDsKICBmb250LXNpemU6IDExcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAycHg7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAycHg7CiAgYm9yZGVyLXJhZGl1czogMnB4OwogIC1tb3otYm94LXNoYWRvdzogMHB4IDJweCAycHggcmdiYSgwLCAwLCAwLCAwLjMpOwogIC13ZWJraXQtYm94LXNoYWRvdzogMHB4IDJweCAycHggcmdiYSgwLCAwLCAwLCAwLjMpOwogIGJveC1zaGFkb3c6IDBweCAycHggMnB4IHJnYmEoMCwgMCwgMCwgMC4zKTsKICB9CiAgI3N0YXktc2lnbmVkLWluIHsKICBmbG9hdDogbGVmdDsKICB9CiAgI3N0YXktc2lnbmVkLWluLXRvb2x0aXAgewogIGxlZnQ6IGF1dG87CiAgbWFyZ2luLWxlZnQ6IC0yMHB4OwogIHBhZGRpbmctdG9wOiAzcHg7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgd2lkdGg6IDMxNHB4OwogIHotaW5kZXg6IDE7CiAgfQogIC5kYXNoZXItdG9vbHRpcCB7CiAgdG9wOiAzODBweDsKICB9Cjwvc3R5bGU+CjxzdHlsZSBtZWRpYT0ic2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4MDBweCksIHNjcmVlbiBhbmQgKG1heC1oZWlnaHQ6IDgwMHB4KSI+CiAgLmRhc2hlci10b29sdGlwIHsKICB0b3A6IDM0MHB4OwogIH0KPC9zdHlsZT4KPHN0eWxlPgogIC5qZmstdG9vbHRpcCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBib3JkZXI6IDFweCBzb2xpZDsKICBjb2xvcjogIzczNzM3MzsKICBmb250LXNpemU6IDEycHg7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHotaW5kZXg6IDgwMCAhaW1wb3J0YW50OwogIGJvcmRlci1jb2xvcjogI2JiYiAjYmJiICNhOGE4YTg7CiAgcGFkZGluZzogMTZweDsKICB3aWR0aDogMjUwcHg7CiAgfQogLmpmay10b29sdGlwIGgzIHsKICBjb2xvcjogIzU1NTsKICBmb250LXNpemU6IDEycHg7CiAgbWFyZ2luOiAwIDAgLjVlbTsKICB9CiAuamZrLXRvb2x0aXAtY29udGVudCBwOmxhc3QtY2hpbGQgewogIG1hcmdpbi1ib3R0b206IDA7CiAgfQogIC5qZmstdG9vbHRpcC1hcnJvdyB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIH0KICAuamZrLXRvb2x0aXAtYXJyb3cgLmpmay10b29sdGlwLWFycm93aW1wbGJlZm9yZSwKICAuamZrLXRvb2x0aXAtYXJyb3cgLmpmay10b29sdGlwLWFycm93aW1wbGFmdGVyIHsKICBkaXNwbGF5OiBibG9jazsKICBoZWlnaHQ6IDA7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAwOwogIH0KICAuamZrLXRvb2x0aXAtYXJyb3cgLmpmay10b29sdGlwLWFycm93aW1wbGJlZm9yZSB7CiAgYm9yZGVyOiA5cHggc29saWQ7CiAgfQogIC5qZmstdG9vbHRpcC1hcnJvdyAuamZrLXRvb2x0aXAtYXJyb3dpbXBsYWZ0ZXIgewogIGJvcmRlcjogOHB4IHNvbGlkOwogIH0KICAuamZrLXRvb2x0aXAtYXJyb3dkb3duIHsKICBib3R0b206IDA7CiAgfQogIC5qZmstdG9vbHRpcC1hcnJvd3VwIHsKICB0b3A6IC05cHg7CiAgfQogIC5qZmstdG9vbHRpcC1hcnJvd2xlZnQgewogIGxlZnQ6IC05cHg7CiAgdG9wOiAzMHB4OwogIH0KICAuamZrLXRvb2x0aXAtYXJyb3dyaWdodCB7CiAgcmlnaHQ6IDA7CiAgdG9wOiAzMHB4OwogIH0KICAuamZrLXRvb2x0aXAtYXJyb3dkb3duIC5qZmstdG9vbHRpcC1hcnJvd2ltcGxiZWZvcmUsLmpmay10b29sdGlwLWFycm93dXAgLmpmay10b29sdGlwLWFycm93aW1wbGJlZm9yZSB7CiAgYm9yZGVyLWNvbG9yOiAjYmJiIHRyYW5zcGFyZW50OwogIGxlZnQ6IC05cHg7CiAgfQogIC5qZmstdG9vbHRpcC1hcnJvd2Rvd24gLmpmay10b29sdGlwLWFycm93aW1wbGJlZm9yZSB7CiAgYm9yZGVyLWNvbG9yOiAjYThhOGE4IHRyYW5zcGFyZW50OwogIH0KICAuamZrLXRvb2x0aXAtYXJyb3dkb3duIC5qZmstdG9vbHRpcC1hcnJvd2ltcGxhZnRlciwuamZrLXRvb2x0aXAtYXJyb3d1cCAuamZrLXRvb2x0aXAtYXJyb3dpbXBsYWZ0ZXIgewogIGJvcmRlci1jb2xvcjogI2ZmZiB0cmFuc3BhcmVudDsKICBsZWZ0OiAtOHB4OwogIH0KICAuamZrLXRvb2x0aXAtYXJyb3dkb3duIC5qZmstdG9vbHRpcC1hcnJvd2ltcGxiZWZvcmUgewogIGJvcmRlci1ib3R0b20td2lkdGg6IDA7CiAgfQogIC5qZmstdG9vbHRpcC1hcnJvd2Rvd24gLmpmay10b29sdGlwLWFycm93aW1wbGFmdGVyIHsKICBib3JkZXItYm90dG9tLXdpZHRoOiAwOwogIH0KICAuamZrLXRvb2x0aXAtYXJyb3d1cCAuamZrLXRvb2x0aXAtYXJyb3dpbXBsYmVmb3JlIHsKICBib3JkZXItdG9wLXdpZHRoOiAwOwogIH0KICAuamZrLXRvb2x0aXAtYXJyb3d1cCAuamZrLXRvb2x0aXAtYXJyb3dpbXBsYWZ0ZXIgewogIGJvcmRlci10b3Atd2lkdGg6IDA7CiAgdG9wOiAxcHg7CiAgfQogIC5qZmstdG9vbHRpcC1hcnJvd2xlZnQgLmpmay10b29sdGlwLWFycm93aW1wbGJlZm9yZSwKICAuamZrLXRvb2x0aXAtYXJyb3dyaWdodCAuamZrLXRvb2x0aXAtYXJyb3dpbXBsYmVmb3JlIHsKICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICNiYmI7CiAgdG9wOiAtOXB4OwogIH0KICAuamZrLXRvb2x0aXAtYXJyb3dsZWZ0IC5qZmstdG9vbHRpcC1hcnJvd2ltcGxhZnRlciwKICAuamZrLXRvb2x0aXAtYXJyb3dyaWdodCAuamZrLXRvb2x0aXAtYXJyb3dpbXBsYWZ0ZXIgewogIGJvcmRlci1jb2xvcjp0cmFuc3BhcmVudCAjZmZmOwogIHRvcDotOHB4OwogIH0KICAuamZrLXRvb2x0aXAtYXJyb3dsZWZ0IC5qZmstdG9vbHRpcC1hcnJvd2ltcGxiZWZvcmUgewogIGJvcmRlci1sZWZ0LXdpZHRoOiAwOwogIH0KICAuamZrLXRvb2x0aXAtYXJyb3dsZWZ0IC5qZmstdG9vbHRpcC1hcnJvd2ltcGxhZnRlciB7CiAgYm9yZGVyLWxlZnQtd2lkdGg6IDA7CiAgbGVmdDogMXB4OwogIH0KICAuamZrLXRvb2x0aXAtYXJyb3dyaWdodCAuamZrLXRvb2x0aXAtYXJyb3dpbXBsYmVmb3JlIHsKICBib3JkZXItcmlnaHQtd2lkdGg6IDA7CiAgfQogIC5qZmstdG9vbHRpcC1hcnJvd3JpZ2h0IC5qZmstdG9vbHRpcC1hcnJvd2ltcGxhZnRlciB7CiAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwOwogIH0KICAuamZrLXRvb2x0aXAtY2xvc2VidG4gewogIGJhY2tncm91bmQ6IHVybCgiLy9zc2wuZ3N0YXRpYy5jb20vdWkvdjEvaWNvbnMvY29tbW9uL3hfOHB4LnBuZyIpIG5vLXJlcGVhdDsKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICBoZWlnaHQ6IDIxcHg7CiAgb3BhY2l0eTogLjQ7CiAgb3V0bGluZTogMDsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgcmlnaHQ6IDJweDsKICB0b3A6IDJweDsKICB3aWR0aDogMjFweDsKICB9CiAgLmpmay10b29sdGlwLWNsb3NlYnRuOmZvY3VzLAogIC5qZmstdG9vbHRpcC1jbG9zZWJ0bjpob3ZlciB7CiAgb3BhY2l0eTogLjg7CiAgY3Vyc29yOiBwb2ludGVyOwogIH0KICAuamZrLXRvb2x0aXAtY2xvc2VidG46Zm9jdXMgewogIGJvcmRlci1jb2xvcjogIzRkOTBmZTsKICB9Cjwvc3R5bGU+CjxzdHlsZSBtZWRpYT0ic2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1ODBweCkiPgogIC5qZmstdG9vbHRpcCB7CiAgZGlzcGxheTogbm9uZTsKICB9Cjwvc3R5bGU+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Ci5jYXB0Y2hhLWJveCB7CiAgYmFja2dyb3VuZDogI2ZmZjsKICBtYXJnaW46IDAgMCAxMHB4OwogIG92ZXJmbG93OiBoaWRkZW47CiAgcGFkZGluZzogMTBweDsKfQouY2FwdGNoYS1ib3ggLmNhcHRjaGEtaW1nIHsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KLmNhcHRjaGEtYm94IC5jYXB0Y2hhLWxhYmVsIHsKICBmb250LXdlaWdodDogYm9sZDsKICBkaXNwbGF5OiBibG9jazsKICBtYXJnaW46IC41ZW0gMDsKfQouY2FwdGNoYS1ib3ggLmNhcHRjaGEtbXNnIHsKICBjb2xvcjogIzk5OTsKICBkaXNwbGF5OiBibG9jazsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLmNhcHRjaGEtYm94IC5jYXB0Y2hhLW1zZyAuYWNjZXNzaWJpbGl0eS1sb2dvIHsKICBmbG9hdDogcmlnaHQ7CiAgYm9yZGVyOiAwOwp9Ci5jYXB0Y2hhLWJveCAuYXVkaW8tYm94IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwOwp9Cjwvc3R5bGU+CjxzdHlsZT4KLmNocm9taXVtc3luYy1jdXN0b20tY29udGVudCB7CiAgcGFkZGluZy10b3A6IDIwcHg7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQouZm9ybS1wYW5lbCB7CiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CiAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOwogIHdpZHRoOiAxMDAlOwp9Ci5mb3JtLXBhbmVsLmZpcnN0IHsKICB6LWluZGV4OiAyOwp9Ci5mb3JtLXBhbmVsLnNlY29uZCB7CiAgei1pbmRleDogMTsKfQouc2hpZnQtZm9ybSAuZm9ybS1wYW5lbC5maXJzdCB7CiAgei1pbmRleDogMTsKfQouc2hpZnQtZm9ybSAuZm9ybS1wYW5lbC5zZWNvbmQgewogIHotaW5kZXg6IDI7Cn0KLnNsaWRlLWluLAouc2xpZGUtb3V0IHsKICBkaXNwbGF5OiBibG9jazsKICAtd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6IC13ZWJraXQtdHJhbnNmb3JtLCBvcGFjaXR5OwogIC1tb3otdHJhbnNpdGlvbi1wcm9wZXJ0eTogLW1vei10cmFuc2Zvcm0sIG9wYWNpdHk7CiAgLW1zLXRyYW5zaXRpb24tcHJvcGVydHk6IC1tcy10cmFuc2Zvcm0sIG9wYWNpdHk7CiAgLW8tdHJhbnNpdGlvbi1wcm9wZXJ0eTogLW8tdHJhbnNmb3JtLCBvcGFjaXR5OwogIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybSwgb3BhY2l0eTsKICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IDAuMXM7CiAgLW1vei10cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjFzOwogIC1tcy10cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjFzOwogIC1vLXRyYW5zaXRpb24tZHVyYXRpb246IDAuMXM7CiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4xczsKICAtd2Via2l0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOwogIC1tb3otdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7CiAgLW1zLXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOwogIC1vLXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOwogIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOwp9Ci5zbGlkZS1vdXQgewogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwp9Ci5zaGlmdC1mb3JtIC5zbGlkZS1vdXQgewogIG9wYWNpdHk6IDA7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMjAlLCAwLCAwKTsKICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEyMCUsIDAsIDApOwogIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMjAlLCAwLCAwKTsKICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMjAlLCAwLCAwKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMjAlLCAwLCAwKTsKfQouc2xpZGUtaW4gewogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMjAlLCAwLCAwKTsKICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTIwJSwgMCwgMCk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTIwJSwgMCwgMCk7CiAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMjAlLCAwLCAwKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEyMCUsIDAsIDApOwp9Ci5zaGlmdC1mb3JtIC5zbGlkZS1pbiB7CiAgb3BhY2l0eTogMTsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKfQouZXJyb3ItbXNnIHsKICAtd2Via2l0LXRyYW5zaXRpb246IG1heC1oZWlnaHQgMC4zcywgb3BhY2l0eSAwLjNzIDBzIHN0ZXBzKDEwLCBlbmQpOwogIC1tb3otdHJhbnNpdGlvbjogbWF4LWhlaWdodCAwLjNzLCBvcGFjaXR5IDAuM3MgMHMgc3RlcHMoMTAsIGVuZCk7CiAgLW1zLXRyYW5zaXRpb246IG1heC1oZWlnaHQgMC4zcywgb3BhY2l0eSAwLjNzIDBzIHN0ZXBzKDEwLCBlbmQpOwogIC1vLXRyYW5zaXRpb246IG1heC1oZWlnaHQgMC4zcywgb3BhY2l0eSAwLjNzIDBzIHN0ZXBzKDEwLCBlbmQpOwogIHRyYW5zaXRpb246IG1heC1oZWlnaHQgMC4zcywgb3BhY2l0eSAwLjNzIDBzIHN0ZXBzKDEwLCBlbmQpOwogIGhlaWdodDogYXV0bzsKICBtYXgtaGVpZ2h0OiAwOwogIG9wYWNpdHk6IDA7Cn0KLmhhcy1lcnJvciAuZXJyb3ItbXNnIHsKICBtYXgtaGVpZ2h0OiAzLjVlbTsKICBtYXJnaW4tdG9wOiAxMHB4OwogIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgb3BhY2l0eTogMTsKICB2aXNpYmlsaXR5OiB2aXNpYmxlOwp9Ci5iYWNrLWFycm93IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAzN3B4OwogIHdpZHRoOiAyNHB4OwogIGhlaWdodDogMjRweDsKICBkaXNwbGF5OiBub25lOwogIGN1cnNvcjogcG9pbnRlcjsKfQouYmFjay1hcnJvdyB7CiAgYm9yZGVyLXN0eWxlOiBub25lOwp9Ci5zaGlmdC1mb3JtLmJhY2stYXJyb3cgewogIGRpc3BsYXk6IGJsb2NrOwp9Ci5iYWNrLWFycm93IGltZyB7CiAgZGlzcGxheTogYmxvY2s7Cn0KI2xpbmstc2lnbnVwIHsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgZm9udC1zaXplOiAxNHB4Owp9Ci5zaGlmdC1mb3JtICNsaW5rLXNpZ251cHsKICBkaXNwbGF5OiBub25lOwp9CiNsaW5rLXNpZ25pbi1kaWZmZXJlbnQgewogIGRpc3BsYXk6IG5vbmU7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGZvbnQtc2l6ZTogMTRweDsKfQouc2hpZnQtZm9ybSAjbGluay1zaWduaW4tZGlmZmVyZW50IHsKICBkaXNwbGF5OiBibG9jazsKfQouc2lnbmluLWNhcmQgI3Byb2ZpbGUtbmFtZSB7CiAgZm9udC1zaXplOiAxNnB4OwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBtYXJnaW46IDA7CiAgbWluLWhlaWdodDogMWVtOwp9Ci5zaWduaW4tY2FyZC5uby1uYW1lICNwcm9maWxlLW5hbWUgewogIGRpc3BsYXk6IG5vbmU7Cn0KLnNpZ25pbi1jYXJkLm5vLW5hbWUgI2VtYWlsLWRpc3BsYXkgewogIGxpbmUtaGVpZ2h0OiBpbml0aWFsOwogIG1hcmdpbi1ib3R0b206IDE2cHg7Cn0KLnNpZ25pbi1jYXJkICNlbWFpbC1kaXNwbGF5IHsKICBkaXNwbGF5OiBibG9jazsKICBwYWRkaW5nOiAwcHggOHB4OwogIGNvbG9yOiByZ2IoNjQsIDY0LCA2NCk7CiAgbGluZS1oZWlnaHQ6IDI7CiAgbWFyZ2luLWJvdHRvbTogMTBweDsKICBmb250LXNpemU6IDE0cHg7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIG92ZXJmbG93OiBoaWRkZW47CiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KLnNpZ25pbi1jYXJkICNFbWFpbCB7CiAgbWFyZ2luLXRvcDogMTZweDsKfQoubmVlZC1oZWxwIHsKICBmbG9hdDogcmlnaHQ7CiAgdGV4dC1hbGlnbjogcmlnaHQ7Cn0KLmZvcm0tcGFuZWwgewogIHdpZHRoOiAyNzRweDsKfQojZ2FpYV9maXJzdGZvcm0gewogIHotaW5kZXg6IDI7Cn0KLnNpZ25pbi1jYXJkIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQouc2lnbmluLWNhcmQgI3Byb2ZpbGUtbmFtZSB7CiAgY29sb3I6ICMwMDA7Cn0KLmNpcmNsZS1tYXNrIHsKICBkaXNwbGF5OiBibG9jazsKICBoZWlnaHQ6IDk2cHg7CiAgd2lkdGg6IDk2cHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBib3JkZXItcmFkaXVzOiA1MCU7CiAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogIHotaW5kZXg6IDEwMDsKICBtYXJnaW4tYm90dG9tOiAxMHB4Owp9Ci5jaXJjbGUgewogIC13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogLXdlYmtpdC10cmFuc2Zvcm07CiAgLW1vei10cmFuc2l0aW9uLXByb3BlcnR5OiAtbW96LXRyYW5zZm9ybTsKICAtbXMtdHJhbnNpdGlvbi1wcm9wZXJ0eTogLW1zLXRyYW5zZm9ybTsKICAtby10cmFuc2l0aW9uLXByb3BlcnR5OiAtby10cmFuc2Zvcm07CiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtOwogIC13ZWJraXQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllciguNjQ1LC4wNDUsLjM1NSwxKTsKICAtbW96LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoLjY0NSwuMDQ1LC4zNTUsMSk7CiAgLW1zLXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoLjY0NSwuMDQ1LC4zNTUsMSk7CiAgLW8tdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllciguNjQ1LC4wNDUsLjM1NSwxKTsKICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKC42NDUsLjA0NSwuMzU1LDEpOwp9Ci5jaXJjbGUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB6LWluZGV4OiAxMDE7CiAgaGVpZ2h0OiA5NnB4OwogIHdpZHRoOiA5NnB4OwogIGJvcmRlci1yYWRpdXM6IDUwJTsKICBvcGFjaXR5OiAwLjk5OwogIG92ZXJmbG93OiBoaWRkZW47CiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyOwp9Ci5tYWluIHsKICBvdmVyZmxvdzogaGlkZGVuOwp9Ci5jYXJkLW1hc2std3JhcCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHdpZHRoOiAzNjBweDsKICBtYXJnaW46IDAgYXV0bzsKICB6LWluZGV4OiAxOwp9Ci5kYXNoZXItdG9vbHRpcCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDUwJTsKICBtYXJnaW4tbGVmdDogMTUwcHg7Cn0KLmRhc2hlci10b29sdGlwIC50b29sdGlwLXBvaW50ZXIgewogIG1hcmdpbi10b3A6IDE1cHg7Cn0KLmRhc2hlci10b29sdGlwIHAgewogIG1hcmdpbi10b3A6IDA7Cn0KLmRhc2hlci10b29sdGlwIHAgc3BhbiB7CiAgZGlzcGxheTogYmxvY2s7Cn0KLmNhcmQgewogIG1hcmdpbi1ib3R0b206IDA7Cn0KLm9uZS1nb29nbGUgewogIHBhZGRpbmctdG9wOiAyN3B4Owp9CiNjYW52YXMgewogIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAwLjA3NXM7CiAgLW1vei10cmFuc2l0aW9uOiBvcGFjaXR5IDAuMDc1czsKICAtbXMtdHJhbnNpdGlvbjogb3BhY2l0eSAwLjA3NXM7CiAgLW8tdHJhbnNpdGlvbjogb3BhY2l0eSAwLjA3NXM7CiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjA3NXM7CiAgb3BhY2l0eTogMC4wMTsKfQouc2hpZnQtZm9ybSAjY2FudmFzIHsKICBvcGFjaXR5OiAwLjk5Owp9Ci5sYWJlbCB7CiAgY29sb3I6ICM0MDQwNDA7Cn0KI2FjY291bnQtY2hvb3Nlci1saW5rIHsKICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMC4zczsKICAtbW96LXRyYW5zaXRpb246IG9wYWNpdHkgMC4zczsKICAtbXMtdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzOwogIC1vLXRyYW5zaXRpb246IG9wYWNpdHkgMC4zczsKICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3M7Cn0KLmlucHV0LXdyYXBwZXIgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQouZ29vZ2xlLWZvb3Rlci1iYXIgewogIHotaW5kZXg6IDI7Cn0KPC9zdHlsZT4KPHN0eWxlIG1lZGlhPSJzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU4MHB4KSI+Ci5iYWNrLWFycm93IHsKICB0b3A6IDE3cHg7Cn0KLmNpcmNsZS1tYXNrIHsKICBoZWlnaHQ6IDcycHg7CiAgd2lkdGg6IDcycHg7CiAgYmFja2dyb3VuZC1zaXplOiA3MnB4Owp9Ci5jaXJjbGUgewogIGhlaWdodDogNzJweDsKICB3aWR0aDogNzJweDsKfQojY2FudmFzIHsKICBoZWlnaHQ6IDcycHg7CiAgd2lkdGg6IDcycHg7Cn0KLmZvcm0tcGFuZWwgewogIHdpZHRoOiAyNTZweDsKfQouY2FyZC1tYXNrLXdyYXAgewogIHdpZHRoOiAzMDBweDsKfQouc2lnbmluLWNhcmQgewogIHdpZHRoOiAyNTZweDsKfQouc2lnbmluLWNhcmQgI0VtYWlsRmlyc3QgewogIG1hcmdpbi10b3A6IDE1cHg7Cn0KLm9uZS1nb29nbGUgewogIHBhZGRpbmctdG9wOiAyMnB4Owp9Cjwvc3R5bGU+CiAgPC9oZWFkPgogIDxib2R5PgogIDxkaXYgY2xhc3M9IndyYXBwZXIiPgogIDxkaXYgY2xhc3M9Imdvb2dsZS1oZWFkZXItYmFyICBjZW50ZXJlZCI+CiAgPGRpdiBjbGFzcz0iaGVhZGVyIGNvbnRlbnQgY2xlYXJmaXgiPgogIDxkaXYgY2xhc3M9ImxvZ28gbG9nby13IiBhcmlhLWxhYmVsPSJHb29nbGUiPjwvZGl2PgogIDwvZGl2PgogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1haW4gY29udGVudCBjbGVhcmZpeCI+CjxkaXYgY2xhc3M9ImJhbm5lciI+CjxoMT4KICBPbmUgYWNjb3VudC4gQWxsIG9mIEdvb2dsZS4KPC9oMT4KICA8aDIgY2xhc3M9ImhpZGRlbi1zbWFsbCI+CiAgU2lnbiBpbiB3aXRoIHlvdXIgR29vZ2xlIEFjY291bnQKICA8L2gyPgo8L2Rpdj4KPGRpdiBjbGFzcz0ibWFpbi1jb250ZW50IAogIAogIAogICAgbm8tbmFtZQogIAogIAogIAoiPgo8ZGl2IGNsYXNzPSJjYXJkIHNpZ25pbi1jYXJkCiAgCiAgICBwcmUtc2hpZnQKICAKICAKICAKICAgbm8tbmFtZSI+CiAgPGltZyBjbGFzcz0iY2lyY2xlLW1hc2siCiAgICAgIAogICAgICAgIAogICAgICAgICAgc3JjPSJodHRwczovL3NzbC5nc3RhdGljLmNvbS9hY2NvdW50cy91aS9hdmF0YXJfMngucG5nIgogICAgICAgIAogICAgICA+CiAgPGZvcm0gbm92YWxpZGF0ZSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tL3NpZ25pbi92MS9sb29rdXAiIGlkPSJnYWlhX2xvZ2luZm9ybSI+CiAgPGlucHV0IG5hbWU9IlBhZ2UiIHR5cGU9ImhpZGRlbiIgdmFsdWU9IlBhc3N3b3JkU2VwYXJhdGlvblNpZ25JbiI+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iIiB2YWx1ZT0iIj4KICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJneGYiIHZhbHVlPSJBRm9hZ1VYcElMWVF2bllMU0oySGp2UnRvVG9weTgxNzF3OjE1NjAyNzQ2MTgzMDkiPgogIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbnRpbnVlIiB2YWx1ZT0iaHR0cHM6Ly9saDMuZ29vZ2xlLmNvbS8zdHJWTXNFSkJKNzZmVE5xOFhIZTNZRW1CUVFQMDhIR3ZtdGVDQkV0QWpGWUVnanFuM1pGeVViRFpZajFUcE8yY0lwbWpaRmZoXzNBMm0waj1zMTIwLW5vIj4KICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJobCIgdmFsdWU9ImVuIj4KICA8aW5wdXQgaWQ9InByb2ZpbGUtaW5mb3JtYXRpb24iIG5hbWU9IlByb2ZpbGVJbmZvcm1hdGlvbiIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iIj4KICA8aW5wdXQgaWQ9InNlc3Npb24tc3RhdGUiIG5hbWU9IlNlc3Npb25TdGF0ZSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iQUVUaExseldUZGlkLTVGeXo0YTdCTWN2Rkt2eHY3VHBsOFNzcl9wekRmZlFySW1fLUhkN1Y5eW5qQm1EMVhUc1p6b0tucW9iU1JFT1c1VTdvWmo1UjZEQ3hxMENLazI4cHdzc2ZPbFhnQ2J1MnlIejNPeU9pbjBleWJXcmE5eTVMZjFkUjlhaXNEUVliQklNRENRaEVnZkNYRFhmTS02ZmtsV0pFeUU1a05aUmoyRGI2MWxHOWRnIj4KICA8aW5wdXQgbmFtZT0iZmxvd05hbWUiIHR5cGU9ImhpZGRlbiIgdmFsdWU9IkdsaWZXZWJTaWduSW4iPgogIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJfdXRmOCIgbmFtZT0iX3V0ZjgiIHZhbHVlPSImIzk3MzE7Ii8+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmdyZXNwb25zZSIgaWQ9ImJncmVzcG9uc2UiIHZhbHVlPSJqc19kaXNhYmxlZCI+CiAgPGRpdiBjbGFzcz0iZm9ybS1wYW5lbCBmaXJzdCB2YWxpZCIgaWQ9ImdhaWFfZmlyc3Rmb3JtIj4KICA8ZGl2IGNsYXNzPSJzbGlkZS1vdXQgIj4KICA8ZGl2IGNsYXNzPSJpbnB1dC13cmFwcGVyIGZvY3VzZWQiPgogIDxkaXYgaWQ9ImlkZW50aWZpZXItc2hvd24iPgogIDxkaXY+CiAgPGxhYmVsIGNsYXNzPSJoaWRkZW4tbGFiZWwiIGZvcj0iRW1haWwiPgogIEVudGVyIHlvdXIgZW1haWw8L2xhYmVsPgogIDxpbnB1dCBpZD0iRW1haWwiIHR5cGU9ImVtYWlsIiB2YWx1ZT0iIiBzcGVsbGNoZWNrPSJmYWxzZSIKICAgICAgICAgICAgICAgICAgIG5hbWU9IkVtYWlsIgogICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPSJFbWFpbCBvciBwaG9uZSIKICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgIGF1dG9mb2N1cz4KICA8aW5wdXQgaWQ9IlBhc3N3ZC1oaWRkZW4iIHR5cGU9InBhc3N3b3JkIiBzcGVsbGNoZWNrPSJmYWxzZSIgY2xhc3M9ImhpZGRlbiI+CiAgPC9kaXY+CiAgPC9kaXY+CiAgPHNwYW4gcm9sZT0iYWxlcnQiIGNsYXNzPSJlcnJvci1tc2ciIGlkPSJlcnJvcm1zZ18wX0VtYWlsIj48L3NwYW4+CiAgPC9kaXY+CjxpbnB1dCBpZD0ibmV4dCIgbmFtZT0ic2lnbkluIiBjbGFzcz0icmMtYnV0dG9uIHJjLWJ1dHRvbi1zdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9Ik5leHQiPgogIDxhIGNsYXNzPSJuZWVkLWhlbHAiCiAgICAgICAgaHJlZj0iaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tL3NpZ25pbi91c2VybmFtZXJlY292ZXJ5P2NvbnRpbnVlPWh0dHBzJTNBJTJGJTJGbGgzLmdvb2dsZS5jb20lMkYzdHJWTXNFSkJKNzZmVE5xOFhIZTNZRW1CUVFQMDhIR3ZtdGVDQkV0QWpGWUVnanFuM1pGeVViRFpZajFUcE8yY0lwbWpaRmZoXzNBMm0waiUzRHMxMjAtbm8mYW1wO2hsPWVuIj4KICBGaW5kIG15IGFjY291bnQKICA8L2E+CiAgPC9kaXY+CiAgPC9kaXY+CiAgPC9mb3JtPgo8L2Rpdj4KICA8ZGl2IGNsYXNzPSJjYXJkLW1hc2std3JhcAogICAgCiAgICAgICAgCiAgICAgbm8tbmFtZSI+CiAgPGRpdiBjbGFzcz0iY2FyZC1tYXNrIj4KICA8ZGl2IGNsYXNzPSJvbmUtZ29vZ2xlIj4KICA8cCBjbGFzcz0iY3JlYXRlLWFjY291bnQiPgogIDxzcGFuIGlkPSJsaW5rLXNpZ25pbi1kaWZmZXJlbnQiPgogIDxhIGhyZWY9Imh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbS9BY2NvdW50Q2hvb3Nlcj9jb250aW51ZT1odHRwcyUzQSUyRiUyRmxoMy5nb29nbGUuY29tJTJGM3RyVk1zRUpCSjc2ZlROcThYSGUzWUVtQlFRUDA4SEd2bXRlQ0JFdEFqRllFZ2pxbjNaRnlVYkRaWWoxVHBPMmNJcG1qWkZmaF8zQTJtMGolM0RzMTIwLW5vJmFtcDtobD1lbiI+CiAgU2lnbiBpbiB3aXRoIGEgZGlmZmVyZW50IGFjY291bnQKICA8L2E+CiAgPC9zcGFuPgogIDxzcGFuIGlkPSJsaW5rLXNpZ251cCI+CiAgPGEgaHJlZj0iaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tL1NpZ25VcD9jb250aW51ZT1odHRwcyUzQSUyRiUyRmxoMy5nb29nbGUuY29tJTJGM3RyVk1zRUpCSjc2ZlROcThYSGUzWUVtQlFRUDA4SEd2bXRlQ0JFdEFqRllFZ2pxbjNaRnlVYkRaWWoxVHBPMmNJcG1qWkZmaF8zQTJtMGolM0RzMTIwLW5vJmFtcDtobD1lbiI+CiAgQ3JlYXRlIGFjY291bnQKICA8L2E+CiAgPC9zcGFuPgogIDwvcD4KPHAgY2xhc3M9InRhZ2xpbmUiPgogIE9uZSBHb29nbGUgQWNjb3VudCBmb3IgZXZlcnl0aGluZyBHb29nbGUKPC9wPgo8ZGl2IGNsYXNzPSJsb2dvLXN0cmlwIj48L2Rpdj4KICA8L2Rpdj4KICA8L2Rpdj4KICA8L2Rpdj4KPC9kaXY+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iZ29vZ2xlLWZvb3Rlci1iYXIiPgogIDxkaXYgY2xhc3M9ImZvb3RlciBjb250ZW50IGNsZWFyZml4Ij4KICA8dWwgaWQ9ImZvb3Rlci1saXN0Ij4KICA8bGk+CiAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9pbnRsL2VuL2Fib3V0IiB0YXJnZXQ9Il9ibGFuayI+CiAgQWJvdXQgR29vZ2xlCiAgPC9hPgogIDwvbGk+CiAgPGxpPgogIDxhIGhyZWY9Imh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbS9UT1M/bG9jPVVTJmhsPWVuJnByaXZhY3k9dHJ1ZSIgdGFyZ2V0PSJfYmxhbmsiPgogIFByaXZhY3kKICA8L2E+CiAgPC9saT4KICA8bGk+CiAgPGEgaHJlZj0iaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tL1RPUz9sb2M9VVMmaGw9ZW4iIHRhcmdldD0iX2JsYW5rIj4KICBUZXJtcwogIDwvYT4KICA8L2xpPgogIDxsaT4KICA8YSBocmVmPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20vc3VwcG9ydC9hY2NvdW50cz9obD1lbiIgdGFyZ2V0PSJfYmxhbmsiPgogIEhlbHAKICA8L2E+CiAgPC9saT4KICA8L3VsPgogIDxkaXYgaWQ9ImxhbmctdmlzLWNvbnRyb2wiIHN0eWxlPSJkaXNwbGF5OiBub25lIj4KICA8c3BhbiBpZD0ibGFuZy1jaG9vc2VyLXdyYXAiIGNsYXNzPSJsYW5nLWNob29zZXItd3JhcCI+CiAgPGxhYmVsIGZvcj0ibGFuZy1jaG9vc2VyIj48aW1nIHNyYz0iLy9zc2wuZ3N0YXRpYy5jb20vaW1hZ2VzL2ljb25zL3VpL2NvbW1vbi91bml2ZXJzYWxfbGFuZ3VhZ2Vfc2V0dGluZ3MtMjEucG5nIiBhbHQ9IkNoYW5nZSBsYW5ndWFnZSI+PC9sYWJlbD4KICA8c2VsZWN0IGlkPSJsYW5nLWNob29zZXIiIGNsYXNzPSJsYW5nLWNob29zZXIiIG5hbWU9ImxhbmctY2hvb3NlciI+CiAgPG9wdGlvbiB2YWx1ZT0iYWYiCiAgICAgICAgICAgICAgICAgPgogIOKAqkFmcmlrYWFuc+KArAogIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9ImF6IgogICAgICAgICAgICAgICAgID4KICDigKphesmZcmJheWNhbuKArAogIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9ImNhIgogICAgICAgICAgICAgICAgID4KICDigKpjYXRhbMOg4oCsCiAgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iY3MiCiAgICAgICAgICAgICAgICAgPgogIOKAqsSMZcWhdGluYeKArAogIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9ImRhIgogICAgICAgICAgICAgICAgID4KICDigKpEYW5za+KArAogIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9ImRlIgogICAgICAgICAgICAgICAgID4KICDigKpEZXV0c2No4oCsCiAgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iZXQiCiAgICAgICAgICAgICAgICAgPgogIOKAqmVlc3Rp4oCsCiAgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iZW4tR0IiCiAgICAgICAgICAgICAgICAgPgogIOKAqkVuZ2xpc2ggKFVuaXRlZCBLaW5nZG9tKeKArAogIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9ImVuIgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPSJzZWxlY3RlZCIKICAgICAgICAgICAgICAgICA+CiAg4oCqRW5nbGlzaCAoVW5pdGVkIFN0YXRlcynigKwKICA8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJlcyIKICAgICAgICAgICAgICAgICA+CiAg4oCqRXNwYcOxb2wgKEVzcGHDsWEp4oCsCiAgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iZXMtNDE5IgogICAgICAgICAgICAgICAgID4KICDigKpFc3Bhw7FvbCAoTGF0aW5vYW3DqXJpY2Ep4oCsCiAgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iZXUiCiAgICAgICAgICAgICAgICAgPgogIOKAqmV1c2thcmHigKwKICA8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJmaWwiCiAgICAgICAgICAgICAgICAgPgogIOKAqkZpbGlwaW5v4oCsCiAgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iZnItQ0EiCiAgICAgICAgICAgICAgICAgPgogIOKAqkZyYW7Dp2FpcyAoQ2FuYWRhKeKArAogIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9ImZyIgogICAgICAgICAgICAgICAgID4KICDigKpGcmFuw6dhaXMgKEZyYW5jZSnigKwKICA8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJnbCIKICAgICAgICAgICAgICAgICA+CiAg4oCqZ2FsZWdv4oCsCiAgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iaHIiCiAgICAgICAgICAgICAgICAgPgogIOKAqkhydmF0c2tp4oCsCiAgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iaW4iCiAgICAgICAgICAgICAgICAgPgogIOKAqkluZG9uZXNpYeKArAogIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9Inp1IgogICAgICAgICAgICAgICAgID4KICDigKppc2ladWx14oCsCiAgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iaXMiCiAgICAgICAgICAgICAgICAgPgogIOKAqsOtc2xlbnNrYeKArAogIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9Iml0IgogICAgICAgICAgICAgICAgID4KICDigKpJdGFsaWFub+KArAogIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9InN3IgogICAgICAgICAgICAgICAgID4KICDigKpLaXN3YWhpbGnigKwKICA8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJsdiIKICAgICAgICAgICAgICAgICA+CiAg4oCqbGF0dmllxaF14oCsCiAgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0ibHQiCiAgICAgICAgICAgICAgICAgPgogIOKAqmxpZXR1dmnFs+KArAogIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9Imh1IgogICAgICAgICAgICAgICAgID4KICDigKptYWd5YXLigKwKICA8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJtcyIKICAgICAgICAgICAgICAgICA+CiAg4oCqTWVsYXl14oCsCiAgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0ibmwiCiAgICAgICAgICAgICAgICAgPgogIOKAqk5lZGVybGFuZHPigKwKICA8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJubyIKICAgICAgICAgICAgICAgICA+CiAg4oCqbm9yc2vigKwKICA8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJwbCIKICAgICAgICAgICAgICAgICA+CiAg4oCqcG9sc2tp4oCsCiAgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0icHQiCiAgICAgICAgICAgICAgICAgPgogIOKAqlBvcnR1Z3XDqnMgKEJyYXNpbCnigKwKICA8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJwdC1QVCIKICAgICAgICAgICAgICAgICA+CiAg4oCqUG9ydHVndcOqcyAoUG9ydHVnYWwp4oCsCiAgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0icm8iCiAgICAgICAgICAgICAgICAgPgogIOKAqnJvbcOibsSD4oCsCiAgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0ic2siCiAgICAgICAgICAgICAgICAgPgogIOKAqlNsb3ZlbsSNaW5h4oCsCiAgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0ic2wiCiAgICAgICAgICAgICAgICAgPgogIOKAqnNsb3ZlbsWhxI1pbmHigKwKICA8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJmaSIKICAgICAgICAgICAgICAgICA+CiAg4oCqU3VvbWnigKwKICA8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJzdiIKICAgICAgICAgICAgICAgICA+CiAg4oCqU3ZlbnNrYeKArAogIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9InZpIgogICAgICAgICAgICAgICAgID4KICDigKpUaeG6v25nIFZp4buHdOKArAogIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9InRyIgogICAgICAgICAgICAgICAgID4KICDigKpUw7xya8OnZeKArAogIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9ImVsIgogICAgICAgICAgICAgICAgID4KICDigKrOlc67zrvOt869zrnOus6s4oCsCiAgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iYmciCiAgICAgICAgICAgICAgICAgPgogIOKAqtCx0YrQu9Cz0LDRgNGB0LrQuOKArAogIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9Im1uIgogICAgICAgICAgICAgICAgID4KICDigKrQvNC+0L3Qs9C+0LvigKwKICA8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJydSIKICAgICAgICAgICAgICAgICA+CiAg4oCq0KDRg9GB0YHQutC40LnigKwKICA8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJzciIKICAgICAgICAgICAgICAgICA+CiAg4oCq0YHRgNC/0YHQutC44oCsCiAgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0idWsiCiAgICAgICAgICAgICAgICAgPgogIOKAqtCj0LrRgNCw0ZfQvdGB0YzQutCw4oCsCiAgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0ia2EiCiAgICAgICAgICAgICAgICAgPgogIOKAquGDpeGDkOGDoOGDl+GDo+GDmuGDmOKArAogIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9Imh5IgogICAgICAgICAgICAgICAgID4KICDigKrVsNWh1bXVpdaA1aXVtuKArAogIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9Iml3IgogICAgICAgICAgICAgICAgID4KICDigKvXoteR16jXmdeq4oCs4oCOCiAgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0idXIiCiAgICAgICAgICAgICAgICAgPgogIOKAq9in2LHYr9mI4oCs4oCOCiAgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iYXIiCiAgICAgICAgICAgICAgICAgPgogIOKAq9in2YTYudix2KjZitip4oCs4oCOCiAgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iZmEiCiAgICAgICAgICAgICAgICAgPgogIOKAq9mB2KfYsdiz24zigKzigI4KICA8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJhbSIKICAgICAgICAgICAgICAgICA+CiAg4oCq4Yqg4Yib4Yit4Yqb4oCsCiAgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0ibmUiCiAgICAgICAgICAgICAgICAgPgogIOKAquCkqOClh+CkquCkvuCksuClgOKArAogIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9Im1yIgogICAgICAgICAgICAgICAgID4KICDigKrgpK7gpLDgpL7gpKDgpYDigKwKICA8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJoaSIKICAgICAgICAgICAgICAgICA+CiAg4oCq4KS54KS/4KSo4KWN4KSm4KWA4oCsCiAgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iYm4iCiAgICAgICAgICAgICAgICAgPgogIOKAquCmrOCmvuCmguCmsuCmvuKArAogIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9Imd1IgogICAgICAgICAgICAgICAgID4KICDigKrgqpfgq4HgqpzgqrDgqr7gqqTgq4DigKwKICA8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJ0YSIKICAgICAgICAgICAgICAgICA+CiAg4oCq4K6k4K6u4K6/4K604K+N4oCsCiAgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0idGUiCiAgICAgICAgICAgICAgICAgPgogIOKAquCwpOCxhuCwsuCxgeCwl+CxgeKArAogIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9ImtuIgogICAgICAgICAgICAgICAgID4KICDigKrgspXgsqjgs43gsqjgsqHigKwKICA8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJtbCIKICAgICAgICAgICAgICAgICA+CiAg4oCq4LSu4LSy4LSv4LS+4LSz4LSC4oCsCiAgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0ic2kiCiAgICAgICAgICAgICAgICAgPgogIOKAquC3g+C3kuC2guC3hOC2veKArAogIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9InRoIgogICAgICAgICAgICAgICAgID4KICDigKrguYTguJfguKLigKwKICA8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJsbyIKICAgICAgICAgICAgICAgICA+CiAg4oCq4Lql4Lqy4Lqn4oCsCiAgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0ibXkiCiAgICAgICAgICAgICAgICAgPgogIOKAquGAmeGAvOGAlOGAuuGAmeGArOKArAogIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9ImttIgogICAgICAgICAgICAgICAgID4KICDigKrhnoHhn5Lhnpjhn4LhnprigKwKICA8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJrbyIKICAgICAgICAgICAgICAgICA+CiAg4oCq7ZWc6rWt7Ja04oCsCiAgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iemgtSEsiCiAgICAgICAgICAgICAgICAgPgogIOKAquS4reaWh++8iOmmmea4r++8ieKArAogIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9ImphIgogICAgICAgICAgICAgICAgID4KICDigKrml6XmnKzoqp7igKwKICA8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJ6aC1DTiIKICAgICAgICAgICAgICAgICA+CiAg4oCq566A5L2T5Lit5paH4oCsCiAgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iemgtVFciCiAgICAgICAgICAgICAgICAgPgogIOKAque5gemrlOS4reaWh+KArAogIDwvb3B0aW9uPgogIDwvc2VsZWN0PgogIDwvc3Bhbj4KICA8L2Rpdj4KICA8L2Rpdj4KPC9kaXY+CiAgPC9kaXY+CiAgPHNjcmlwdCBub25jZT0ibVRCOVJYL1ZoVmw2NzA1SndhSGpoUSI+CiAgKGZ1bmN0aW9uKCl7CiAgdmFyIHNwbGl0QnlGaXJzdENoYXIgPSBmdW5jdGlvbih0b0JlU3BsaXQsIHNwbGl0Q2hhcikgewogIHZhciBpbmRleCA9IHRvQmVTcGxpdC5pbmRleE9mKHNwbGl0Q2hhcik7CiAgaWYgKGluZGV4ID49IDApIHsKICByZXR1cm4gW3RvQmVTcGxpdC5zdWJzdHJpbmcoMCwgaW5kZXgpLAogIHRvQmVTcGxpdC5zdWJzdHJpbmcoaW5kZXggKyAxKV07CiAgfQogIHJldHVybiBbdG9CZVNwbGl0XTsKICB9CiAgdmFyIGxhbmdDaG9vc2VyX3BhcnNlUGFyYW1zID0gZnVuY3Rpb24ocGFyYW1zU2VjdGlvbikgewogIGlmIChwYXJhbXNTZWN0aW9uKSB7CiAgdmFyIHF1ZXJ5ID0ge307CiAgdmFyIHBhcmFtcyA9IHBhcmFtc1NlY3Rpb24uc3BsaXQoJyYnKTsKICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcmFtcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgIHZhciBwYXJhbSA9IHNwbGl0QnlGaXJzdENoYXIocGFyYW1zW2ldLCAnPScpOwogICAgICAgICAgICAgIGlmIChwYXJhbS5sZW5ndGggPT0gMikgewogICAgICAgICAgICAgICAgcXVlcnlbcGFyYW1bMF1dID0gcGFyYW1bMV07CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBxdWVyeTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiB7fTsKICAgICAgICB9CiAgICAgICAgdmFyIGFwcGVuZEhpZGRlblBhcmFtcyA9IGZ1bmN0aW9uKHF1ZXJ5KSB7CiAgICAgICAgICB2YXIgbG9naW5Gb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dhaWFfbG9naW5mb3JtJyk7CiAgICAgICAgICBpZiAobG9naW5Gb3JtKSB7CiAgICAgICAgICAgIHZhciBsb2dpbklucHV0cyA9IGxvZ2luRm9ybS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKTsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGlucHV0OyBpbnB1dCA9IGxvZ2luSW5wdXRzW2ldOyBpKyspIHsKICAgICAgICAgICAgICBpZiAoaW5wdXQudHlwZSA9PSAnaGlkZGVuJyAmJiBpbnB1dC52YWx1ZSAmJiAhcXVlcnlbaW5wdXQubmFtZV0pIHsKICAgICAgICAgICAgICAgIHF1ZXJ5W2lucHV0Lm5hbWVdID0gaW5wdXQudmFsdWU7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHZhciBwb3N0ID0gZnVuY3Rpb24ocGF0aCwgcGFyYW1zKSB7CiAgICAgICAgICB2YXIgZm9ybSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Zvcm0nKTsKICAgICAgICAgIGZvcm0uc2V0QXR0cmlidXRlKCdtZXRob2QnLCAncG9zdCcpOwogICAgICAgICAgZm9ybS5zZXRBdHRyaWJ1dGUoJ2FjdGlvbicsIHBhdGgpOwoKICAgICAgICAgIGZvciAodmFyIGtleSBpbiBwYXJhbXMpIHsKICAgICAgICAgICAgaWYgKHBhcmFtcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7CiAgICAgICAgICAgICAgdmFyIGhpZGRlbkZpZWxkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsKICAgICAgICAgICAgICBoaWRkZW5GaWVsZC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnaGlkZGVuJyk7CiAgICAgICAgICAgICAgaGlkZGVuRmllbGQuc2V0QXR0cmlidXRlKCduYW1lJywga2V5KTsKICAgICAgICAgICAgICBoaWRkZW5GaWVsZC5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgcGFyYW1zW2tleV0pOwoKICAgICAgICAgICAgICBmb3JtLmFwcGVuZENoaWxkKGhpZGRlbkZpZWxkKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZm9ybSk7CiAgICAgICAgICBmb3JtLnN1Ym1pdCgpOwogICAgICAgIH0KICAgICAgICB2YXIgbGFuZ0Nob29zZXJfZ2V0UGFyYW1TdHIgPSBmdW5jdGlvbihwYXJhbXMpIHsKICAgICAgICAgIHZhciBwYXJhbXNTdHIgPSBbXTsKICAgICAgICAgIGZvciAodmFyIGEgaW4gcGFyYW1zKSB7CiAgICAgICAgICAgIHBhcmFtc1N0ci5wdXNoKGEgKyAiPSIgKyBwYXJhbXNbYV0pOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHBhcmFtc1N0ci5qb2luKCcmJyk7CiAgICAgICAgfQogICAgICAgIHZhciBsYW5nQ2hvb3Nlcl9jdXJyZW50VXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7CiAgICAgICAgdmFyIG1hdGNoID0gbGFuZ0Nob29zZXJfY3VycmVudFVybC5tYXRjaCgiXiguKj8pKFxcPyguKj8pKT8oIyguKikpPyQiKTsKICAgICAgICB2YXIgbGFuZ0Nob29zZXJfY3VycmVudFBhdGggPSBtYXRjaFsxXTsKICAgICAgICB2YXIgbGFuZ0Nob29zZXJfcGFyYW1zID0gbGFuZ0Nob29zZXJfcGFyc2VQYXJhbXMobWF0Y2hbM10pOwogICAgICAgIHZhciBsYW5nQ2hvb3Nlcl9mcmFnbWVudCA9IG1hdGNoWzVdOwoKICAgICAgICB2YXIgbGFuZ0Nob29zZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGFuZy1jaG9vc2VyJyk7CiAgICAgICAgdmFyIGxhbmdDaG9vc2VyV3JhcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYW5nLWNob29zZXItd3JhcCcpOwogICAgICAgIHZhciBsYW5nVmlzQ29udHJvbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYW5nLXZpcy1jb250cm9sJyk7CiAgICAgICAgaWYgKGxhbmdWaXNDb250cm9sICYmIGxhbmdDaG9vc2VyKSB7CiAgICAgICAgICBsYW5nVmlzQ29udHJvbC5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZSc7CiAgICAgICAgICBsYW5nQ2hvb3Nlci5vbmNoYW5nZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBsYW5nQ2hvb3Nlcl9wYXJhbXNbJ2xwJ10gPSAxOwogICAgICAgICAgICBsYW5nQ2hvb3Nlcl9wYXJhbXNbJ2hsJ10gPSBlbmNvZGVVUklDb21wb25lbnQodGhpcy52YWx1ZSk7CiAgICAgICAgICAgIHZhciBoaWRkZW5FbWFpbElucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0VtYWlsLWhpZGRlbicpOwogICAgICAgICAgICBpZiAoaGlkZGVuRW1haWxJbnB1dCkgewogICAgICAgICAgICAgIC8vIElmIHdlIGFyZSBpbiBwYXNzd29yZCBzZXBhcmF0aW9uIG9uIHBhc3N3b3JkIHBhZ2UsIHBvc3QgdG8KICAgICAgICAgICAgICAvLyAvQWNjb3VudExvZ2luSW5mby4KICAgICAgICAgICAgICBhcHBlbmRIaWRkZW5QYXJhbXMobGFuZ0Nob29zZXJfcGFyYW1zKTsKICAgICAgICAgICAgICBsYW5nQ2hvb3Nlcl9wYXJhbXNbJ0VtYWlsJ10gPSBoaWRkZW5FbWFpbElucHV0LnZhbHVlOwogICAgICAgICAgICAgIHBvc3QoJy9BY2NvdW50TG9naW5JbmZvJywgbGFuZ0Nob29zZXJfcGFyYW1zKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICB2YXIgcGFyYW1zU3RyID0gbGFuZ0Nob29zZXJfZ2V0UGFyYW1TdHIobGFuZ0Nob29zZXJfcGFyYW1zKTsKICAgICAgICAgICAgICB2YXIgbmV3SHJlZiA9IGxhbmdDaG9vc2VyX2N1cnJlbnRQYXRoICsgIj8iICsgcGFyYW1zU3RyOwogICAgICAgICAgICAgIGlmIChsYW5nQ2hvb3Nlcl9mcmFnbWVudCkgewogICAgICAgICAgICAgICAgbmV3SHJlZiA9IG5ld0hyZWYgKyAiIyIgKyBsYW5nQ2hvb3Nlcl9mcmFnbWVudDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBuZXdIcmVmOwogICAgICAgICAgICB9CiAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgfSkoKTsKICAgIDwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgbm9uY2U9Im1UQjlSWC9WaFZsNjcwNUp3YUhqaFEiPgogIHZhciBnYWlhX2F0dGFjaEV2ZW50ID0gZnVuY3Rpb24oZWxlbWVudCwgZXZlbnQsIGNhbGxiYWNrKSB7CiAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKSB7CiAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBjYWxsYmFjaywgZmFsc2UpOwogIH0gZWxzZSBpZiAoZWxlbWVudCAmJiBlbGVtZW50LmF0dGFjaEV2ZW50KSB7CiAgZWxlbWVudC5hdHRhY2hFdmVudCgnb24nICsgZXZlbnQsIGNhbGxiYWNrKTsKICB9CiAgfTsKPC9zY3JpcHQ+CiAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIG5vbmNlPSJtVEI5UlgvVmhWbDY3MDVKd2FIamhRIj4vKiBBbnRpLXNwYW0uIFdhbnQgdG8gc2F5IGhlbGxvPyBDb250YWN0IChiYXNlNjQpIFltOTBaM1ZoY21RdFkyOXVkR0ZqZEVCbmIyOW5iR1V1WTI5dCAqL0Z1bmN0aW9uKCd2YXIgdD17fSx6aj1mdW5jdGlvbih6KXtyZXR1cm4vXltcXHNcXHhhMF0qKFtcXHNcXFNdKj8pW1xcc1xceGEwXSokLy5leGVjKHopWzFdfSxGPWZ1bmN0aW9uKHosUyxWKXtpZigib2JqZWN0Ij09KFM9dHlwZW9mIHosUykpaWYoeil7aWYoeiBpbnN0YW5jZW9mIEFycmF5KXJldHVybiJhcnJheSI7aWYoeiBpbnN0YW5jZW9mIE9iamVjdClyZXR1cm4gUztpZigoVj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoeiksIltvYmplY3QgV2luZG93XSIpPT1WKXJldHVybiJvYmplY3QiO2lmKCJbb2JqZWN0IEFycmF5XSI9PVZ8fCJudW1iZXIiPT10eXBlb2Ygei5sZW5ndGgmJiJ1bmRlZmluZWQiIT10eXBlb2Ygei5zcGxpY2UmJiJ1bmRlZmluZWQiIT10eXBlb2Ygei5wcm9wZXJ0eUlzRW51bWVyYWJsZSYmIXoucHJvcGVydHlJc0VudW1lcmFibGUoInNwbGljZSIpKXJldHVybiJhcnJheSI7aWYoIltvYmplY3QgRnVuY3Rpb25dIj09Vnx8InVuZGVmaW5lZCIhPXR5cGVvZiB6LmNhbGwmJiJ1bmRlZmluZWQiIT10eXBlb2Ygei5wcm9wZXJ0eUlzRW51bWVyYWJsZSYmIXoucHJvcGVydHlJc0VudW1lcmFibGUoImNhbGwiKSlyZXR1cm4iZnVuY3Rpb24ifWVsc2UgcmV0dXJuIm51bGwiO2Vsc2UgaWYoImZ1bmN0aW9uIj09UyYmInVuZGVmaW5lZCI9PXR5cGVvZiB6LmNhbGwpcmV0dXJuIm9iamVjdCI7cmV0dXJuIFN9LHI9dGhpc3x8c2VsZixtLGMsU0M9ZnVuY3Rpb24oeixTKXtmdW5jdGlvbiBWKCl7fSh6LnByb3RvdHlwZT0oKFYucHJvdG90eXBlPVMucHJvdG90eXBlLHopLkQ9Uy5wcm90b3R5cGUsbmV3IFYpLHoucHJvdG90eXBlLmNvbnN0cnVjdG9yPXoseikublo9ZnVuY3Rpb24odSxmLHYpe2Zvcih2YXIgZD1BcnJheShhcmd1bWVudHMubGVuZ3RoLTIpLEs9MjtLPGFyZ3VtZW50cy5sZW5ndGg7SysrKWRbSy0yXT1hcmd1bWVudHNbS107cmV0dXJuIFMucHJvdG90eXBlW2ZdLmFwcGx5KHUsZCl9fSxOPWZ1bmN0aW9uKHosUyl7cmV0dXJuIm9iamVjdCI9PShTPXR5cGVvZiB6LFMpJiZudWxsIT16fHwiZnVuY3Rpb24iPT1TfSx2Rj1mdW5jdGlvbih6LFMsVix1LGYpe2Zvcih1PShTPVtdLFY9MCk7dTx6Lmxlbmd0aDt1KyspZj16LmNoYXJDb2RlQXQodSksMTI4PmY/U1tWKytdPWY6KDIwNDg+Zj9TW1YrK109Zj4+NnwxOTI6KDU1Mjk2PT0oZiY2NDUxMikmJnUrMTx6Lmxlbmd0aCYmNTYzMjA9PSh6LmNoYXJDb2RlQXQodSsxKSY2NDUxMik/KGY9NjU1MzYrKChmJjEwMjMpPDwxMCkrKHouY2hhckNvZGVBdCgrK3UpJjEwMjMpLFNbVisrXT1mPj4xOHwyNDAsU1tWKytdPWY+PjEyJjYzfDEyOCk6U1tWKytdPWY+PjEyfDIyNCxTW1YrK109Zj4+NiY2M3wxMjgpLFNbVisrXT1mJjYzfDEyOCk7cmV0dXJuIFN9LFZLPWZ1bmN0aW9uKCl7fSx1TD1mdW5jdGlvbih6KXtmb3Ioej0wOzY0Pno7Kyt6KUhbel09IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5LV8iLmNoYXJBdCh6KSx0WyJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS1fIi5jaGFyQXQoeildPXo7dFsiPSJdPSh0W0hbNjRdPSIiLHRbIisiXT02MiwiLyJdPTYzLDY0KX0sSD17fSxsPWZ1bmN0aW9uKHosUyl7cmV0dXJuIHo8Uz8tMTp6PlM/MTowfTthOnt2YXIgZFg9ci5uYXZpZ2F0b3I7aWYoZFgpe3ZhciBmMD1kWC51c2VyQWdlbnQ7aWYoZjApe2M9ZjA7YnJlYWsgYX19Yz0iIn12YXIgaUw9ZnVuY3Rpb24oeil7cmV0dXJuKHo9ci5kb2N1bWVudCk/ei5kb2N1bWVudE1vZGU6dm9pZCAwfSxLMD1mdW5jdGlvbih6LFMsVil7Zm9yKFYgaW4geilpZihTLmNhbGwodm9pZCAwLHpbVl0sVix6KSlyZXR1cm4gdHJ1ZTtyZXR1cm4gZmFsc2V9LFo9IiIsdGM9ZnVuY3Rpb24oeixTLFYpe3JldHVybihWPVFLLE9iamVjdCkucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoVix6KT9WW3pdOlZbel09Uyh6KX0sST0vXFxiKD86TVNJRXxydilbOiBdKFteXFwpO10rKShcXCl8OykvLmV4ZWMoYyksTz0oSSYmKFo9ST9JWzFdOiIiKSxpTCkoKSxxcj1udWxsIT1PJiZPPnBhcnNlRmxvYXQoWik/U3RyaW5nKE8pOloseUssUUs9e30sRGk9ci5kb2N1bWVudCxHPTk8PU51bWJlcigoeUs9RGk/aUwoKXx8KCJDU1MxQ29tcGF0Ij09RGkuY29tcGF0TW9kZT9wYXJzZUludChxciwxMCk6NSk6dm9pZCAwLHlLKSksRnQ9IWZ1bmN0aW9uKHope3JldHVybiB0Yyh6LGZ1bmN0aW9uKFMsVix1LGYsdixkLEspe2Zvcih2PShmPU1hdGgubWF4KCh1PXpqKFN0cmluZyh6KSkuc3BsaXQoIi4iKSxWPXpqKFN0cmluZyhxcikpLnNwbGl0KCIuIiksUz0wLFYpLmxlbmd0aCx1Lmxlbmd0aCksMCk7MD09UyYmdjxmO3YrKyl7ZD0oSz11W3ZdfHwiIixWW3ZdKXx8IiI7ZG97aWYoMD09KEs9KGQ9LyhcXGQqKShcXEQqKSguKikvLmV4ZWMoZCl8fFsiIiwiIiwiIiwiIl0sLyhcXGQqKShcXEQqKSguKikvLmV4ZWMoSyl8fFsiIiwiIiwiIiwiIl0pLGQpWzBdLmxlbmd0aCYmMD09S1swXS5sZW5ndGgpYnJlYWs7Sz0oUz1sKDA9PWRbMV0ubGVuZ3RoPzA6cGFyc2VJbnQoZFsxXSwxMCksMD09S1sxXS5sZW5ndGg/MDpwYXJzZUludChLWzFdLDEwKSl8fGwoMD09ZFsyXS5sZW5ndGgsMD09S1syXS5sZW5ndGgpfHxsKGRbMl0sS1syXSksS1szXSksZD1kWzNdfXdoaWxlKDA9PVMpfXJldHVybiAwPD1TfSl9KCI5IiksbXM9ZnVuY3Rpb24oeixTKXtpZighci5hZGRFdmVudExpc3RlbmVyfHwhT2JqZWN0LmRlZmluZVByb3BlcnR5KXJldHVybiBmYWxzZTtTPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwoej1mYWxzZSwicGFzc2l2ZSIpLHtnZXQ6ZnVuY3Rpb24oKXt6PXRydWV9fSk7dHJ5e3IuYWRkRXZlbnRMaXN0ZW5lcigidGVzdCIsVkssUyksci5yZW1vdmVFdmVudExpc3RlbmVyKCJ0ZXN0IixWSyxTKX1jYXRjaChWKXt9cmV0dXJuIHp9KCksaD1mdW5jdGlvbih6LFMpe3RoaXMuY3VycmVudFRhcmdldD10aGlzLnRhcmdldD0odGhpcy50eXBlPXosUyksdGhpcy5kZWZhdWx0UHJldmVudGVkPWZhbHNlfSxrPShoLnByb3RvdHlwZS5wcmV2ZW50RGVmYXVsdD1mdW5jdGlvbigpe3RoaXMuZGVmYXVsdFByZXZlbnRlZD10cnVlfSxoLnByb3RvdHlwZS5zdG9wUHJvcGFnYXRpb249ZnVuY3Rpb24oKXt9LGZ1bmN0aW9uKHosUyxWLHUpeyh0aGlzLnBvaW50ZXJUeXBlPSgodGhpcy5zdGF0ZT0odGhpcy5tZXRhS2V5PXRoaXMuc2hpZnRLZXk9KHRoaXMuY2hhckNvZGU9KHRoaXMuYnV0dG9uPXRoaXMuc2NyZWVuWT10aGlzLnNjcmVlblg9dGhpcy5jbGllbnRZPXRoaXMuY2xpZW50WD10aGlzLm9mZnNldFk9dGhpcy5vZmZzZXRYPSh0aGlzLnJlbGF0ZWRUYXJnZXQ9dGhpcy5jdXJyZW50VGFyZ2V0PShoLmNhbGwodGhpcyx6P3oudHlwZToiIiksdGhpcy50YXJnZXQ9bnVsbCksMCksdGhpcy5rZXk9IiIsdGhpcy5rZXlDb2RlPTApLHRoaXMuYWx0S2V5PXRoaXMuY3RybEtleT1mYWxzZSksbnVsbCksdGhpcykucG9pbnRlcklkPTAsIiIpLHRoaXMuYT1udWxsLHopJiYoVj10aGlzLnR5cGU9ei50eXBlLHU9ei5jaGFuZ2VkVG91Y2hlcyYmei5jaGFuZ2VkVG91Y2hlcy5sZW5ndGg/ei5jaGFuZ2VkVG91Y2hlc1swXTpudWxsLHRoaXMudGFyZ2V0PXoudGFyZ2V0fHx6LnNyY0VsZW1lbnQsdGhpcy5jdXJyZW50VGFyZ2V0PVMsUz16LnJlbGF0ZWRUYXJnZXQsU3x8KCJtb3VzZW92ZXIiPT1WP1M9ei5mcm9tRWxlbWVudDoibW91c2VvdXQiPT1WJiYoUz16LnRvRWxlbWVudCkpLHRoaXMucmVsYXRlZFRhcmdldD1TLHU/KHRoaXMuY2xpZW50WD12b2lkIDAhPT11LmNsaWVudFg/dS5jbGllbnRYOnUucGFnZVgsdGhpcy5jbGllbnRZPXZvaWQgMCE9PXUuY2xpZW50WT91LmNsaWVudFk6dS5wYWdlWSx0aGlzLnNjcmVlblg9dS5zY3JlZW5YfHwwLHRoaXMuc2NyZWVuWT11LnNjcmVlbll8fDApOih0aGlzLm9mZnNldFg9dm9pZCAwIT09ei5vZmZzZXRYP3oub2Zmc2V0WDp6LmxheWVyWCx0aGlzLm9mZnNldFk9dm9pZCAwIT09ei5vZmZzZXRZP3oub2Zmc2V0WTp6LmxheWVyWSx0aGlzLmNsaWVudFg9dm9pZCAwIT09ei5jbGllbnRYP3ouY2xpZW50WDp6LnBhZ2VYLHRoaXMuY2xpZW50WT12b2lkIDAhPT16LmNsaWVudFk/ei5jbGllbnRZOnoucGFnZVksdGhpcy5zY3JlZW5YPXouc2NyZWVuWHx8MCx0aGlzLnNjcmVlblk9ei5zY3JlZW5ZfHwwKSx0aGlzLmJ1dHRvbj16LmJ1dHRvbix0aGlzLmtleUNvZGU9ei5rZXlDb2RlfHwwLHRoaXMua2V5PXoua2V5fHwiIix0aGlzLmNoYXJDb2RlPXouY2hhckNvZGV8fCgia2V5cHJlc3MiPT1WP3oua2V5Q29kZTowKSx0aGlzLmN0cmxLZXk9ei5jdHJsS2V5LHRoaXMuYWx0S2V5PXouYWx0S2V5LHRoaXMuc2hpZnRLZXk9ei5zaGlmdEtleSx0aGlzLm1ldGFLZXk9ei5tZXRhS2V5LHRoaXMucG9pbnRlcklkPXoucG9pbnRlcklkfHwwLHRoaXMucG9pbnRlclR5cGU9InN0cmluZyI9PXR5cGVvZiB6LnBvaW50ZXJUeXBlP3oucG9pbnRlclR5cGU6Y0Zbei5wb2ludGVyVHlwZV18fCIiLHRoaXMuc3RhdGU9ei5zdGF0ZSx0aGlzLmE9eix6LmRlZmF1bHRQcmV2ZW50ZWQmJnRoaXMucHJldmVudERlZmF1bHQoKSl9KSxjRj17MjoidG91Y2giLDM6KFNDKGssaCksInBlbiIpLDQ6Im1vdXNlIn0sWD0iY2xvc3VyZV9saXN0ZW5hYmxlXyIrKGsucHJvdG90eXBlLnN0b3BQcm9wYWdhdGlvbj0oay5wcm90b3R5cGUucHJldmVudERlZmF1bHQ9ZnVuY3Rpb24oeil7aWYoej0oay5ELnByZXZlbnREZWZhdWx0LmNhbGwodGhpcyksdGhpcy5hKSx6LnByZXZlbnREZWZhdWx0KXoucHJldmVudERlZmF1bHQoKTtlbHNlIGlmKHoucmV0dXJuVmFsdWU9ZmFsc2UsRnQpdHJ5e2lmKHouY3RybEtleXx8MTEyPD16LmtleUNvZGUmJjEyMz49ei5rZXlDb2RlKXoua2V5Q29kZT0tMX1jYXRjaChTKXt9fSxmdW5jdGlvbigpeyhrLkQuc3RvcFByb3BhZ2F0aW9uLmNhbGwodGhpcyksdGhpcy5hKS5zdG9wUHJvcGFnYXRpb24/dGhpcy5hLnN0b3BQcm9wYWdhdGlvbigpOnRoaXMuYS5jYW5jZWxCdWJibGU9dHJ1ZX0pLDFFNipNYXRoLnJhbmRvbSgpfDApLFA9ZnVuY3Rpb24oeil7dGhpcy5HPSh0aGlzLks9e30sdGhpcy5zcmM9eiwwKX0sc1U9ZnVuY3Rpb24oeil7KHouZj0oei5CPW51bGwsbnVsbCkseikuSD10cnVlLHouc3JjPW51bGwsei5saXN0ZW5lcj1udWxsfSxOcj0wLEhGPWZ1bmN0aW9uKHosUyxWLHUsZil7dGhpcy5CPWYsdGhpcy5jYXB0dXJlPSEhKHRoaXMudHlwZT0odGhpcy5IPXRoaXMuVz1mYWxzZSx0aGlzLnNyYz0oKHRoaXMua2V5PSsrTnIsdGhpcy5mPW51bGwsdGhpcykubGlzdGVuZXI9eixTKSxWKSx1KX0sbEw9KFAucHJvdG90eXBlLnJlbW92ZT0oKFAucHJvdG90eXBlLmhhc0xpc3RlbmVyPWZ1bmN0aW9uKHosUyxWLHUsZil7cmV0dXJuIEswKChmPSh1PShWPXZvaWQgMCE9PXopP3oudG9TdHJpbmcoKToiIix2b2lkIDApIT09Uyx0aGlzKS5LLGZ1bmN0aW9uKHYsZCl7Zm9yKGQ9MDtkPHYubGVuZ3RoOysrZClpZighKFYmJnZbZF0udHlwZSE9dXx8ZiYmdltkXS5jYXB0dXJlIT1TKSlyZXR1cm4gdHJ1ZTtyZXR1cm4gZmFsc2V9KX0sUC5wcm90b3R5cGUpLmFkZD1mdW5jdGlvbih6LFMsVix1LGYsdixkKXtyZXR1cm4oZD1sTCgodj16LnRvU3RyaW5nKCksej10aGlzLktbdl0senx8KHo9dGhpcy5LW3ZdPVtdLHRoaXMuRysrKSx6KSxTLHUsZiksLTEpPGQ/KFM9eltkXSxWfHwoUy5XPWZhbHNlKSk6KFM9bmV3IEhGKFMsdGhpcy5zcmMsdiwhIXUsZiksUy5XPVYsei5wdXNoKFMpKSxTfSxmdW5jdGlvbih6LFMsVix1LGYpe2lmKCEoej16LnRvU3RyaW5nKCkseiBpbiB0aGlzLkspKXJldHVybiBmYWxzZTtyZXR1cm4oUz1sTCgoZj10aGlzLktbel0sZiksUyxWLHUpLC0xKTxTPyhzVShmW1NdKSxBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwoZixTLDEpLDA9PWYubGVuZ3RoJiYoZGVsZXRlIHRoaXMuS1t6XSx0aGlzLkctLSksdHJ1ZSk6ZmFsc2V9KSxmdW5jdGlvbih6LFMsVix1LGYsdil7Zm9yKGY9MDtmPHoubGVuZ3RoOysrZilpZih2PXpbZl0sIXYuSCYmdi5saXN0ZW5lcj09UyYmdi5jYXB0dXJlPT0hIVYmJnYuQj09dSlyZXR1cm4gZjtyZXR1cm4tMX0pLFppPSJjbG9zdXJlX2xtXyIrKDFFNipNYXRoLnJhbmRvbSgpfDApLEdqPWZ1bmN0aW9uKHosUyxWLHUsZix2LGQsSyl7aWYoIVMpdGhyb3cgRXJyb3IoIkludmFsaWQgZXZlbnQgdHlwZSIpO2lmKChkPU4oZik/ISFmLmNhcHR1cmU6ISFmLCFkKXx8RylpZigoSz1Jdyh6KSl8fCh6W1ppXT1LPW5ldyBQKHopKSxWPUsuYWRkKFMsVix1LGQsdiksIVYuZil7aWYoKFYuZj0odT13WCgpLHUpLHUpLnNyYz16LHUubGlzdGVuZXI9Vix6LmFkZEV2ZW50TGlzdGVuZXIpbXN8fChmPWQpLHZvaWQgMD09PWYmJihmPWZhbHNlKSx6LmFkZEV2ZW50TGlzdGVuZXIoUy50b1N0cmluZygpLHUsZik7ZWxzZSBpZih6LmF0dGFjaEV2ZW50KXouYXR0YWNoRXZlbnQoT1UoUy50b1N0cmluZygpKSx1KTtlbHNlIGlmKHouYWRkTGlzdGVuZXImJnoucmVtb3ZlTGlzdGVuZXIpei5hZGRMaXN0ZW5lcih1KTtlbHNlIHRocm93IEVycm9yKCJhZGRFdmVudExpc3RlbmVyIGFuZCBhdHRhY2hFdmVudCBhcmUgdW5hdmFpbGFibGUuIik7akMrK319LGhjPWZ1bmN0aW9uKHosUyxWLHUsZix2LGQpe2lmKCJudW1iZXIiIT10eXBlb2YgeiYmeiYmIXouSClpZigoUz16LnNyYykmJlNbWF0pUy5mWih6KTtlbHNlIGlmKHU9ei5mLFY9ei50eXBlLFMucmVtb3ZlRXZlbnRMaXN0ZW5lcj9TLnJlbW92ZUV2ZW50TGlzdGVuZXIoVix1LHouY2FwdHVyZSk6Uy5kZXRhY2hFdmVudD9TLmRldGFjaEV2ZW50KE9VKFYpLHUpOlMuYWRkTGlzdGVuZXImJlMucmVtb3ZlTGlzdGVuZXImJlMucmVtb3ZlTGlzdGVuZXIodSksakMtLSxWPUl3KFMpKXtpZih1PXoudHlwZSx1IGluIFYuSyl7Zj1WLktbdV07YjppZigic3RyaW5nIj09dHlwZW9mIGYpdj0ic3RyaW5nIj09dHlwZW9mIHomJjE9PXoubGVuZ3RoP2YuaW5kZXhPZih6LDApOi0xO2Vsc2V7Zm9yKHY9MDt2PGYubGVuZ3RoO3YrKylpZih2IGluIGYmJmZbdl09PT16KWJyZWFrIGI7dj0tMX0oKGQ9MDw9dikmJkFycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbChmLHYsMSksZCkmJihzVSh6KSwwPT1WLktbdV0ubGVuZ3RoJiYoZGVsZXRlIFYuS1t1XSxWLkctLSkpfTA9PVYuRyYmKFYuc3JjPW51bGwsU1taaV09bnVsbCl9ZWxzZSBzVSh6KX0sd1g9ZnVuY3Rpb24oeixTKXtyZXR1cm4gUz0oej1rWCxHKT9mdW5jdGlvbihWKXtyZXR1cm4gei5jYWxsKFMuc3JjLFMubGlzdGVuZXIsVil9OmZ1bmN0aW9uKFYpe2lmKFY9ei5jYWxsKFMuc3JjLFMubGlzdGVuZXIsViksIVYpcmV0dXJuIFZ9fSxYdD1mdW5jdGlvbih6LFMsVix1LGYsdil7aWYoImFycmF5Ij09RihTKSlmb3Iodj0wO3Y8Uy5sZW5ndGg7disrKVh0KHosU1t2XSxWLHUsZik7ZWxzZSh1PU4odSk/ISF1LmNhcHR1cmU6ISF1LFY9UEYoVikseiYmeltYXSk/ei5tZShTLFYsdSxmKTp6JiYoej1Jdyh6KSkmJihTPXouS1tTLnRvU3RyaW5nKCldLHo9LTEsUyYmKHo9bEwoUyxWLHUsZikpLChWPS0xPHo/U1t6XTpudWxsKSYmaGMoVikpfSxJdz1mdW5jdGlvbih6KXtyZXR1cm4oej16W1ppXSx6IGluc3RhbmNlb2YgUCk/ejpudWxsfSxiTD17fSxqQz0wLGtYPWZ1bmN0aW9uKHosUyxWLHUpe2lmKHouSClyZXR1cm4gdHJ1ZTtpZighRyl7aWYoIVMpYTp7Zm9yKFM9Wyh1PShWPXIsMCksIndpbmRvdyIpLCJldmVudCJdO3U8Uy5sZW5ndGg7dSsrKWlmKFY9VltTW3VdXSxudWxsPT1WKXtTPW51bGw7YnJlYWsgYX1TPVZ9cmV0dXJuIFM9bmV3IGsoUyx0aGlzKSxZWCh6LFMpfXJldHVybiBZWCh6LG5ldyBrKFMsdGhpcykpfSxZWD1mdW5jdGlvbih6LFMsVix1KXtyZXR1cm4odT0oVj16Lmxpc3RlbmVyLHouQil8fHouc3JjLHopLlcmJmhjKHopLFYuY2FsbCh1LFMpfSxCRj1mdW5jdGlvbih6LFMsVix1LGYsdil7aWYoImFycmF5Ij09RihTKSlmb3Iodj0wO3Y8Uy5sZW5ndGg7disrKUJGKHosU1t2XSxWLHUsZik7ZWxzZSBWPVBGKFYpLHomJnpbWF0/ei50YihTLFYsTih1KT8hIXUuY2FwdHVyZTohIXUsZik6R2ooeixTLFYsdHJ1ZSx1LGYpfSxvdz1mdW5jdGlvbih6LFMsVix1LGYsdil7aWYodSYmdS5vbmNlKUJGKHosUyxWLHUsZik7ZWxzZSBpZigiYXJyYXkiPT1GKFMpKWZvcih2PTA7djxTLmxlbmd0aDt2Kyspb3coeixTW3ZdLFYsdSxmKTtlbHNlIFY9UEYoVikseiYmeltYXT96LmU4KFMsVixOKHUpPyEhdS5jYXB0dXJlOiEhdSxmKTpHaih6LFMsVixmYWxzZSx1LGYpfSxPVT1mdW5jdGlvbih6KXtyZXR1cm4geiBpbiBiTD9iTFt6XTpiTFt6XT0ib24iK3p9LEwwPSJfX2Nsb3N1cmVfZXZlbnRzX2ZuXyIrKDFFOSpNYXRoLnJhbmRvbSgpPj4+MCksVT1bImJvdGd1YXJkIl0sSj1mdW5jdGlvbih6LFMpe3ouVj0oIkU6IitTLm1lc3NhZ2UrIjoiK1Muc3RhY2spLnNsaWNlKDAsMjA0OCl9LFBGPWZ1bmN0aW9uKHope2lmKCJmdW5jdGlvbiI9PUYoeikpcmV0dXJuIHo7cmV0dXJuIHpbeltMMF18fCh6W0wwXT1mdW5jdGlvbihTKXtyZXR1cm4gei5oYW5kbGVFdmVudChTKX0pLEwwXX0sVVU9ZnVuY3Rpb24oeixTLFYsdSl7Zm9yKFY9ei5GKCksdT0wOzA8UztTLS0pdT11PDw4fHouRigpO0UoeixWLHUpfSxKYz1mdW5jdGlvbih6LFMsVix1KXtWPXouRigpLHU9ei5GKCksZSh6LHUsVyh6LkooViksUykpfSxXPWZ1bmN0aW9uKHosUyxWLHUpe2Zvcih1PVMtMSxWPVtdOzA8PXU7dS0tKVZbUy0xLXVdPXo+PjgqdSYyNTU7cmV0dXJuIFZ9LEVVPXt9LGVDPWZ1bmN0aW9uKHosUyxWLHUsZix2KXtmb3IoZj0odT0oKFY9KFM9e30sei5GKCkpLFMpLlA9ei5GKCksUy5sPVtdLHopLkYoKS0xLHouRigpKSx2PTA7djx1O3YrKylTLmwucHVzaCh6LkYoKSk7Zm9yKChTLmg9ei5KKFYpLFMpLk09ei5KKGYpO3UtLTspUy5sW3VdPXouSihTLmxbdV0pO3JldHVybiBTfSx4PWZ1bmN0aW9uKHosUyxWLHUsZil7KDM8KCh1PSgoKGY9ei5KKDE1OCksUz1bUyxmPj44JjI1NSxmJjI1NV0sdm9pZCAwKSE9dSYmUy5wdXNoKHUpLDA9PXouSigxMSkubGVuZ3RoKSYmKHoud1sxMV09dm9pZCAwLEUoeiwxMSxTKSksIiIpLFYpJiYoVi5tZXNzYWdlJiYodSs9Vi5tZXNzYWdlKSxWLnN0YWNrJiYodSs9IjoiK1Yuc3RhY2spKSxWPXouSigxMjgpLFYpJiYodT11LnNsaWNlKDAsVi0zKSxWLT11Lmxlbmd0aCszLHU9dkYodS5yZXBsYWNlKC9cXHJcXG4vZywiXFxuIikpLGUoeiwxMzMsVyh1Lmxlbmd0aCwyKS5jb25jYXQodSksMTIpKSxFKSh6LDEyOCxWKX0sV0Y9e30seFg9e30sTXI9ZnVuY3Rpb24oeixTLFYsdSxmKXtmb3IoKHouUz1mYWxzZSx6KS5SPSEodT1bXSwoei5pWT1mdW5jdGlvbih2LGQsSyl7cmV0dXJuIGQ9ZnVuY3Rpb24oKXtyZXR1cm4gSygpfSxLPWZ1bmN0aW9uKCl7cmV0dXJuIHZ9LGRbdGhpcy5JXT1mdW5jdGlvbihRKXt2PVF9LGR9LHouSmI9KHoubT12b2lkIDAsW10pLHouQT0yNSx6KS5UPShmPSh6Lkw9ZnVuY3Rpb24odixkLEssUSxxLHkpe3JldHVybiB2PSgoKHk9KHE9ZnVuY3Rpb24oKXtyZXR1cm4gUSgpfSwoSz0oUT1mdW5jdGlvbigpe3JldHVybiBRW0suWCsocVtLLlVdPT09ZCktIXlbSy5VXV19LHRoaXMpLEspLmIpLHEpW0suSV09ZnVuY3Rpb24oRCl7UVtLLlpdPUR9LHEpW0suSV0odikscSl9LDApLHouTj0wLDApLDEpLHouQz12b2lkIDA7MTI4PmY7ZisrKXVbZl09U3RyaW5nLmZyb21DaGFyQ29kZShmKTsoKChmPSh6LkNaPSgoKCgoKCgoKCgoKHoucz0oKCgoKCh6LiQ9KCgoRSh6LDIsKHoudz1bXSx6LmM9W10sMCkpLEUpKHosMTU4LDApLEUpKHosMTUzLGZ1bmN0aW9uKHYsZCxLLFEscSx5LEQpe2codiwxLDUpfHwoZD1lQyh2KSxLPWQubCxxPWQuaCxRPWQuTSxEPUsubGVuZ3RoLDA9PUQ/eT1RW3FdKCk6MT09RD95PVFbcV0oS1swXSk6Mj09RD95PVFbcV0oS1swXSxLWzFdKTozPT1EP3k9UVtxXShLWzBdLEtbMV0sS1syXSk6eCh2LDIyKSxFKHYsZC5QLHkpKX0pLFtdKSxFKSh6LDEzMyxBYyg0KSksRSh6LDE0NCxmdW5jdGlvbih2LGQsSyxRLHEpezAhPT0oUT0oSz0ocT0oUT0oSz0oZD12LkYoKSx2KS5GKCksdi5GKCkpLGQ9di5KKGQpLHYpLkoodi5GKCkpLHYuSihLKSksdikuSihRKSxkKSYmKFE9Z1godixRLHEsMSxkLEspLG93KGQsSyxRKSxFKHYsNzMsW2QsSyxRXSkpfSksRSh6LDkwLGZ1bmN0aW9uKHYsZCxLLFEpeyhRPShLPShkPXYuRigpLHYuRigpKSx2LkYoKSksRSkodixRLCh2LkooZClpbiB2LkooSykpKzApfSksRSh6LDE5MSxyKSxFKSh6LDE0OSx7fSksRSh6LDI1NSxmdW5jdGlvbih2LGQsSyxRLHEseSxEKXtpZigoZD12LkYoKSxLPSRYKHYpLFE9IiIsdikud1syMjBdKWZvcihxPXYuSigyMjApLHk9MCxEPXEubGVuZ3RoO0stLTspeT0oeSskWCh2KSklRCxRKz11W3FbeV1dO2Vsc2UgZm9yKDtLLS07KVErPXVbdi5GKCldO0UodixkLFEpfSksRSh6LDg5LGZ1bmN0aW9uKHYsZCxLKXtLPShkPXYuRigpLHYuRigpKSxFKHYsSyx2LkooSykrdi5KKGQpKX0pLEUpKHosMjAsZnVuY3Rpb24odil7SmModiw0KX0pLEUoeiwxMjUsZnVuY3Rpb24odixkLEspe0s9KGQ9di5GKCksdikuRigpLEUodixLLCIiK3YuSihkKSl9KSxFKHosMjMsZnVuY3Rpb24odixkLEssUSl7KEs9KGQ9di5GKCksdikuRigpLFE9di5GKCksRSkodixRLHYuSihkKXx8di5KKEspKX0pLEUpKHosMjM4LGZ1bmN0aW9uKHYpe1VVKHYsMil9KSxFKHosMjUxLGZ1bmN0aW9uKHYsZCxLLFEscSx5KXtpZighZyh2LDEsMjU1KSl7aWYoIm9iamVjdCI9PUYoKHY9KFE9KEs9KGQ9KHE9KFE9KEs9KGQ9di5GKCksdi5GKCkpLHYpLkYoKSx2LkYoKSksdi5KKGQpKSx2LkooSykpLHYpLkooUSksdikuSihxKSxkKSkpe2Zvcih5IGluIHE9W10sZClxLnB1c2goeSk7ZD1xfWZvcih5PShxPTAsZC5sZW5ndGgpO3E8eTtxKz1RKUsoZC5zbGljZShxLHErUSksdil9fSksRSkoeiwxMzksZnVuY3Rpb24odixkLEspe2Q9KGQ9di5GKCksSz12LkYoKSx2LndbZF0pJiZ2LkooZCksRSh2LEssZCl9KSxFKHosMTIxLGZ1bmN0aW9uKHYsZCxLLFEpeyhRPShkPXYuRigpLEs9di5GKCksdi5GKCkpLEUpKHYsUSx2LkooZCk+PkspfSksRSh6LDI0NyxmdW5jdGlvbih2LGQsSyxRKXsoZD0oZD12LkYoKSxLPXYuRigpLFE9di5GKCksSz12LkooSyksdikuSihkKSxFKSh2LFEsZFtLXSl9KSxFKHosMTQ3LDApLFtdKSxFKHosMTM0LGZ1bmN0aW9uKHYpe3YuRm4oNCl9KSxFKSh6LDE1OSxbXSksRSkoeiw1LGZ1bmN0aW9uKHYsZCxLKXsoSz0oZD12LkYoKSx2LkYoKSksMCkhPXYuSihkKSYmRSh2LDIsdi5KKEspKX0pLEUoeiw4NSx6KSxFKHosOTMsZnVuY3Rpb24odixkLEssUSxxLHksRCl7Zyh2LDEsNSl8fChkPWVDKHYpLHE9ZC5oLFE9ZC5NLEs9ZC5sLEQ9Sy5sZW5ndGgsMD09RD95PW5ldyBRW3FdOjE9PUQ/eT1uZXcgUVtxXShLWzBdKToyPT1EP3k9bmV3IFFbcV0oS1swXSxLWzFdKTozPT1EP3k9bmV3IFFbcV0oS1swXSxLWzFdLEtbMl0pOjQ9PUQ/eT1uZXcgUVtxXShLWzBdLEtbMV0sS1syXSxLWzNdKTp4KHYsMjIpLEUodixkLlAseSkpfSksRSkoeiwxNDgsZnVuY3Rpb24odil7VVUodiw0KX0pLEUoeiwyNTMsZnVuY3Rpb24odixkLEspe2Q9KEs9KGQ9di5GKCksdi5GKCkpLHYuSihkKSksRSh2LEssRihkKSl9KSxFKSh6LDE0NixmdW5jdGlvbih2LGQsSyxRKXsoZD0oUT0oSz0oZD12LkYoKSx2LkYoKSksdi5GKCkpLHYuSihkKSk9PXYuSihLKSxFKSh2LFEsK2QpfSksRSh6LDIyMSxmdW5jdGlvbigpe30pLEUpKHosMjQyLFsxNjUsMCwwXSksRSh6LDIwMSxmdW5jdGlvbih2LGQpe2Q9di5GKCksdj12LkooZCksWHQodlswXSx2WzFdLHZbMl0pfSksRSkoeiwxNzIsZnVuY3Rpb24odixkLEspe2codiwxLDUpfHwoZD12LkYoKSxLPXYuRigpLEUodixLLGZ1bmN0aW9uKFEpe3JldHVybiBldmFsKFEpfSh2LkooZCkpKSl9KSxFKSh6LDExLFtdKSxFKHosNTgsZnVuY3Rpb24odil7VVUodiwxKX0pLEUpKHosMTYwLGZ1bmN0aW9uKHYsZCxLLFEscSl7KEs9KHE9KFE9KEs9KGQ9di5GKCksdi5GKCkpLHYpLkoodi5GKCkpLHYuSih2LkYoKSkpLHYuSihLKSksRSkodixkLGdYKHYsSyxRLHEpKX0pLHouYlk9ZnVuY3Rpb24odixkKXtkLnB1c2godlswXTw8MjR8dlsxXTw8MTZ8dlsyXTw8OHx2WzNdKSxkLnB1c2godls0XTw8MjR8dls1XTw8MTZ8dls2XTw8OHx2WzddKSxkLnB1c2godls4XTw8MjR8dls5XTw8MTZ8dlsxMF08PDh8dlsxMV0pfSxFKSh6LDYzLGZ1bmN0aW9uKHYsZCl7Zyh2LDEsNSl8fChkPWVDKHYpLEUodixkLlAsZC5oLmFwcGx5KGQuTSxkLmwpKSl9KSxFKHosMjM1LGZ1bmN0aW9uKHYsZCl7KGQ9di5KKHYuRigpKSxDMCkodixkKX0pLEUpKHosMjM2LGZ1bmN0aW9uKHYsZCxLLFEpe2lmKGQ9di5zLnBvcCgpKXtmb3IoSz12LkYoKTswPEs7Sy0tKVE9di5GKCksZFtRXT12LndbUV07di53PShkWzEyOF09KGRbMTFdPXYud1sxMV0sdi53WzEyOF0pLGQpfWVsc2UgRSh2LDIsdi5pLmxlbmd0aCl9KSx3aW5kb3cucGVyZm9ybWFuY2V8fHt9KS50aW1pbmd8fHt9KS5uYXZpZ2F0aW9uU3RhcnR8fDAsRSh6LDEyOCwyMDQ4KSxFKHosMTU0LGZ1bmN0aW9uKHYpe0pjKHYsMSl9KSxFKHosMjUyLGZ1bmN0aW9uKHYsZCxLLFEpe1E9KEs9KGQ9di5GKCksdi5GKCkpLHYuRigpKSx2LkooZClbdi5KKEspXT12LkooUSl9KSxFKHosMTgwLGZ1bmN0aW9uKHYsZCxLLFEscSx5LEQsYixZLHAscDAsQSxyWCl7Zm9yKHA9WT0oYj0oRD0oeT0ocT0oUT1LPShkPXYuRigpLDApLGZ1bmN0aW9uKFIsdyl7Zm9yKDtRPFI7KUt8PXYuRigpPDxRLFErPTg7cmV0dXJuIEs+Pj0odz1LJigoUS09UiwxKTw8UiktMSxSKSx3fSkscSgzKSkrMSxxKDUpKSxbXSksMCk7cDxEO3ArKylwMD1xKDEpLGIucHVzaChwMCksWSs9cDA/MDoxO2ZvcihZPShZLTEpLnRvU3RyaW5nKChBPVtdLDIpKS5sZW5ndGgscD0wO3A8RDtwKyspYltwXXx8KEFbcF09cShZKSk7Zm9yKHA9MDtwPEQ7cCsrKWJbcF0mJihBW3BdPXYuRigpKTtmb3IocD15LHJYPVtdO3AtLTspclgucHVzaCh2Lkoodi5GKCkpKTtFKHYsZCxmdW5jdGlvbihSLHcsUncsQixMKXtmb3IoUnc9KFIuTisrLHc9KEI9MCxbXSksW10pO0I8RDtCKyspe2lmKEw9QVtCXSwhYltCXSl7Zm9yKDtMPj13Lmxlbmd0aDspdy5wdXNoKFIuRigpKTtMPXdbTF19UncucHVzaChMKX1SLm09KFIuQz1SLkwoclguc2xpY2UoKSxSLkYpLFIuTChSdyxSLkYpKX0pfSksdUwoKSxWLk8pfHxmdW5jdGlvbigpe30sRSh6LDE1NiwwKSxFKSh6LDE2MixmdW5jdGlvbih2LGQsSyxRLHEpe2ZvcihRPShLPShkPXYuRigpLCRYKHYpKSxbXSkscT0wO3E8SztxKyspUS5wdXNoKHYuRigpKTtFKHYsZCxRKX0pLEUpKHosNzMsMCksRSkoeiwxMDQsMTA2KSxFKHosMTY2LDApLFMmJiIhIj09Uy5jaGFyQXQoMCk/KHouVj1TLGYoKSk6KFY9ISFWLk8sei5pPVtdLEMoeixbRVUsU10pLEMoeixbVGosZl0pLFQoeixmYWxzZSxWLHRydWUpKX0sJFg9ZnVuY3Rpb24oeixTKXtyZXR1cm4oUz16LkYoKSxTKSYxMjgmJihTPVMmMTI3fHouRigpPDw3KSxTfSxhdz1mdW5jdGlvbih6LFMpe3JldHVybiB6W1NdPDwyNHx6W1MrMV08PDE2fHpbUysyXTw8OHx6W1MrM119LG4wPXt9LFNzPWZ1bmN0aW9uKHosUyxWLHUsZil7Zm9yKDt6LiQubGVuZ3RoOyl7aWYoVj1WJiZTKXouVCYmei5TPyh6LlM9ZmFsc2UsVj0wIT1kb2N1bWVudC5oaWRkZW4/ZmFsc2U6dHJ1ZSk6Vj1mYWxzZTtpZihWKXt6LnlKKChmPXosZnVuY3Rpb24oKXtUKGYsZmFsc2UsUyxmYWxzZSl9KSk7YnJlYWt9dT0oVj10cnVlLHU9ei4kLnBvcCgpLHpiKHosdSkpfXJldHVybiB1fSx2aT17fSxUaj17fSxWMD1mdW5jdGlvbih6LFMsVix1KXt0cnl7Zm9yKHU9MDs3OTY2OTM4NzQ4OCE9dTspeis9KFM8PDReUz4+PjUpK1NedStWW3UmM10sdSs9MjQ4OTY2ODM1OSxTKz0oejw8NF56Pj4+NSkrel51K1ZbdT4+PjExJjNdO3JldHVyblt6Pj4+MjQsej4+MTYmMjU1LHo+PjgmMjU1LHomMjU1LFM+Pj4yNCxTPj4xNiYyNTUsUz4+OCYyNTUsUyYyNTVdfWNhdGNoKGYpe3Rocm93IGY7fX0sTT1mdW5jdGlvbih6LFMpe3RyeXtNcih0aGlzLHosUyl9Y2F0Y2goVil7Sih0aGlzLFYpfX0sZ1g9KE0ucHJvdG90eXBlLmFyPWZ1bmN0aW9uKHosUyxWLHUpe3RyeXt1PXpbKFMrMiklM10seltTXT16W1NdLXpbKFMrMSklM10tdV4oMT09Uz91PDxWOnU+Pj5WKX1jYXRjaChmKXt0aHJvdyBmO319LE0ucHJvdG90eXBlLlZKPShNLnByb3RvdHlwZS5VPShNLnByb3RvdHlwZS5Jcj1mdW5jdGlvbih6LFMsVix1KXtmb3IoO1YtLTspMiE9ViYmMTU4IT1WJiZTLndbVl0mJihTLndbVl09U1t1XShTW3pdKFYpLHRoaXMpKTtTW3pdPXRoaXN9LCJjYWxsZXIiKSwoKE0ucHJvdG90eXBlLnd0PWZhbHNlLE0pLnByb3RvdHlwZS5iPWZ1bmN0aW9uKHosUyxWLHUsZix2LGQsSyxRLHEpe2lmKFM9elswXSxTPT1FVSl7ej16WzFdO3RyeXtmb3IoVj0oUz1bXSwwKTtWPHoubGVuZ3RoOyl7aWYoZD0odT10W3ouY2hhckF0KFYrKyldLGY9Vjx6Lmxlbmd0aD90W3ouY2hhckF0KFYpXTowLCsrVix2PVY8ei5sZW5ndGg/dFt6LmNoYXJBdChWKV06NjQsKytWLFYpPHoubGVuZ3RoP3Rbei5jaGFyQXQoVildOjY0LCsrVixudWxsPT11fHxudWxsPT1mfHxudWxsPT12fHxudWxsPT1kKXRocm93IEVycm9yKCk7NjQhPShTLnB1c2godTw8MnxmPj40KSx2KSYmKFMucHVzaChmPDw0JjI0MHx2Pj4yKSw2NCE9ZCYmUy5wdXNoKHY8PDYmMTkyfGQpKX10aGlzLmk9U31jYXRjaCh5KXt4KHRoaXMsMTcseSl9dVModGhpcyl9ZWxzZSBpZihTPT12aSl1PXpbMV0sdS5wdXNoKHRoaXMuSigyNDIpLmxlbmd0aCx0aGlzLkooMTMzKS5sZW5ndGgsdGhpcy5KKDE1OSkubGVuZ3RoLHRoaXMuSigxMjgpKSxFKHRoaXMsMTQ5LHpbMl0pLHRoaXMud1sxMjRdJiZkTSh0aGlzLHRoaXMuSigxMjQpKTtlbHNle2lmKFM9PW4wKXtmb3Iodj0oZD0oKChmPSgoMDwoKGQ9KGY9KChmPSh2PVcodGhpcy5KKCh1PXpbMl0sMjQyKSkubGVuZ3RoKzIsMiksdGhpcy5KKDExKSksMDxmLmxlbmd0aCkmJmUodGhpcywyNDIsVyhmLmxlbmd0aCwyKS5jb25jYXQoZiksMTUpLHRoaXMuSigxNjYpJjUxMSksZi09dGhpcy5KKDI0MikubGVuZ3RoKzUsdGhpcykuSigxMzMpLDQ8ZC5sZW5ndGgpJiYoZi09ZC5sZW5ndGgrMyksZikmJmUodGhpcywyNDIsVyhmLDIpLmNvbmNhdChBYyhmKSksMTApLDQ8ZC5sZW5ndGgpJiZlKHRoaXMsMjQyLFcoZC5sZW5ndGgsMikuY29uY2F0KGQpLDE1MyksQWMpKDIpLmNvbmNhdCh0aGlzLkooMjQyKSksZlsxXT1mWzBdXjMsZilbM109ZlsxXV52WzBdLGYpWzRdPWZbMV1edlsxXSwwKSxbXSk7ZDxmLmxlbmd0aDtkKz0zKUs9ZltkXSxRPSh6PWQrMTxmLmxlbmd0aCk/ZltkKzFdOjAscT0oUz1kKzI8Zi5sZW5ndGgpP2ZbZCsyXTowLFY9Sz4+MixLPShLJjMpPDw0fFE+PjQsUT0oUSYxNSk8PDJ8cT4+NixxJj02MyxTfHwocT02NCx6fHwoUT02NCkpLHYucHVzaChIW1ZdLEhbS10sSFtRXSxIW3FdKTtpZih2PXYuam9pbigiIikpdj0iISIrdjtlbHNlIGZvcihkPTAsdj0iIjtkPGYubGVuZ3RoO2QrKyl6PWZbZF1bdGhpcy5JXSgxNiksMT09ei5sZW5ndGgmJih6PSIwIit6KSx2Kz16O3JldHVybiB0aGlzLkooKGY9diwyNDIpKS5sZW5ndGg9dVswXSx0aGlzLkooMTMzKS5sZW5ndGg9dVsxXSx0aGlzLkooMTU5KS5sZW5ndGg9dVsyXSxFKHRoaXMsMTI4LHVbM10pLGZ9aWYoUz09V0YpZE0odGhpcyx6WzFdKTtlbHNlIGlmKFM9PXhYKXJldHVybiBkTSh0aGlzLHpbMV0pfX0sTS5wcm90b3R5cGUpLlFKPWZ1bmN0aW9uKHosUyxWLHUsZix2KXtpZih0aGlzLlYpcmV0dXJuIHRoaXMuVjt0cnl7dj1bXSx1PSEheixmPVtdLEModGhpcyxbdmksZixTXSksQyh0aGlzLFtuMCx6LGYsdl0pLFQodGhpcyxmYWxzZSx1LHRydWUpLFY9dlswXX1jYXRjaChkKXtKKHRoaXMsZCksVj10aGlzLlYseiYmeihWKX1yZXR1cm4gVn0sZnVuY3Rpb24oeixTLFYsdSxmLHYpe2Zvcih2PXU9KFY9W10sMCk7djx6Lmxlbmd0aDt2KyspZm9yKHUrPVMsZj1mPDxTfHpbdl07Nzx1Oyl1LT04LFYucHVzaChmPj51JjI1NSk7cmV0dXJuIFZ9KSxmdW5jdGlvbih6LFMsVix1LGYsdil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQ9W3hYLFMsVix2b2lkIDAsZix2LGFyZ3VtZW50c10sSz11JjE7aWYodSYyKXZhciBRPShDKHosZCksVCkoeix0cnVlLGZhbHNlLGZhbHNlKTtlbHNlIEsmJnouJC5sZW5ndGg/Qyh6LGQpOks/KEMoeixkKSxUKHosdHJ1ZSxmYWxzZSxmYWxzZSkpOlE9emIoeixkKTtyZXR1cm4gUX19KSxhPXIsQzA9KE0ucHJvdG90eXBlLlo9KE0ucHJvdG90eXBlLnlKPXIucmVxdWVzdElkbGVDYWxsYmFjaz9mdW5jdGlvbih6KXtyZXF1ZXN0SWRsZUNhbGxiYWNrKHose3RpbWVvdXQ6NH0pfTpyLnNldEltbWVkaWF0ZT9mdW5jdGlvbih6KXtzZXRJbW1lZGlhdGUoeil9OmZ1bmN0aW9uKHope3NldFRpbWVvdXQoeiwwKX0sMzYpLGZ1bmN0aW9uKHosUyl7ei5zLnB1c2goei53LnNsaWNlKCkpLHoud1syXT12b2lkIDAsRSh6LDIsUyl9KSxDPSgoKE0ucHJvdG90eXBlLkZuPWZ1bmN0aW9uKHosUyxWLHUpeyhWPSh1PShWPSh6Jj0oUz16JjQsMyksdGhpcykuRigpLHRoaXMpLkYoKSx0aGlzKS5KKFYpLFMmJihWPXZGKCgiIitWKS5yZXBsYWNlKC9cXHJcXG4vZywiXFxuIikpKSx6KSYmZSh0aGlzLHUsVyhWLmxlbmd0aCwyKSksZSh0aGlzLHUsVil9LE0pLnByb3RvdHlwZS5YPTM1LE0ucHJvdG90eXBlKS52PXt9LGZ1bmN0aW9uKHosUyl7ei4kLnNwbGljZSgwLDAsUyl9KSxlPShNLnByb3RvdHlwZS5JPSJ0b1N0cmluZyIsZnVuY3Rpb24oeixTLFYsdSxmLHYpe2Zvcih1PSgoZj16LkooUyksMTMzPT1TKT8oUz1mdW5jdGlvbihkLEssUSxxKXtpZigoSz1mLmxlbmd0aCxRPUstND4+MyxmKS5LWiE9USl7UT0ocT1bMCwwLDAsdl0sKFE8PChmLktaPVEsMykpLTQpO3RyeXtmLmR0PVYwKGF3KGYsUSksYXcoZixRKzQpLHEpfWNhdGNoKHkpe3Rocm93IHk7fX1mLnB1c2goZi5kdFtLJjddXmQpfSx2PXouSigxNDcpKTpTPWZ1bmN0aW9uKGQpe2YucHVzaChkKX0sdSYmUyh1JjI1NSksej1WLmxlbmd0aCwwKTt1PHo7dSsrKVMoVlt1XSl9KSxFPShNLnByb3RvdHlwZS5KPWZ1bmN0aW9uKHosUyl7aWYoUz10aGlzLndbel0sdm9pZCAwPT09Uyl0aHJvdyB4KHRoaXMsMzAsMCx6KSx0aGlzLnY7cmV0dXJuIFMoKX0sZnVuY3Rpb24oeixTLFYpe2lmKDI9PVN8fDE1OD09UylpZih6LndbU10pei53W1NdW3ouSV0oVik7ZWxzZSB6LndbU109ei5pWShWKTtlbHNlIGlmKDI0MiE9UyYmMTMzIT1TJiYxNTkhPVMmJjExIT1TfHwhei53W1NdKXoud1tTXT16LkwoVix6LkopOzE1Nj09UyYmKHoubz12b2lkIDAsRSh6LDIsei5KKDIpKzQpKX0pLHpiPShNLnByb3RvdHlwZS5OOD1mdW5jdGlvbih6LFMsVix1LGYpe2ZvcihmPXU9MDtmPHoubGVuZ3RoO2YrKyl1Kz16LmNoYXJDb2RlQXQoZiksdSs9dTw8MTAsdV49dT4+NjtyZXR1cm4gej0odSs9dTw8Myx1Xj11Pj4xMSx1Kyh1PDwxNSkpPj4+MCx1PW5ldyBOdW1iZXIoeiYoMTw8UyktMSksdVswXT0oej4+PlMpJVYsdX0sZnVuY3Rpb24oeixTLFYsdSxmKXtpZih6LlI9IShWPVNbMF0sMSksVj09dmkpei5BPTI1LHouYihTKTtlbHNlIGlmKFY9PW4wKXtWPSh1PVNbMV0sU1szXSk7dHJ5e2Y9ei5iKFMpfWNhdGNoKHYpe0ooeix2KSxmPXouVn0odSYmdShmKSxWKS5wdXNoKGYpfWVsc2UgaWYoVj09V0Ypei5iKFMpO2Vsc2UgaWYoVj09RVUpei5iKFMpO2Vsc2UgaWYoVj09VGope3RyeXtmb3IoZj0wO2Y8ei5jLmxlbmd0aDtmKyspdHJ5e3U9ei5jW2ZdLHVbMF1bdVsxXV0odVsyXSl9Y2F0Y2godil7fX1jYXRjaCh2KXt9ei5jPVtdLCgwLFNbMV0pKCl9ZWxzZSBpZihWPT14WClyZXR1cm4gdT1TWzZdLGY9U1syXSxFKHosMTIzLFNbNF0/W3VbMF0uYV06dSksRSh6LDE0OSxmKSx6LmIoUyl9KSxkTT1mdW5jdGlvbih6LFMsVil7cmV0dXJuIHVTKCgoVj16LkooMiksei5pKSYmVjx6LmkubGVuZ3RoPyhFKHosMix6LmkubGVuZ3RoKSxDMCh6LFMpKTpFKHosMixTKSx6KSxWKX0sZz0oTS5wcm90b3R5cGUuJFc9KE0ucHJvdG90eXBlLlk9KChNLnByb3RvdHlwZS5GPWZ1bmN0aW9uKHosUyl7aWYodGhpcy5DKXJldHVybiB6PXo/dGhpcy5DKCkuc2hpZnQoKTp0aGlzLm0oKS5zaGlmdCgpLHRoaXMuQygpLmxlbmd0aHx8dGhpcy5tKCkubGVuZ3RofHwodGhpcy5tPXRoaXMuQz12b2lkIDAsdGhpcy5OLS0pLHo7aWYoISgoej10aGlzLkooMikseilpbiB0aGlzLmkpKXRocm93IHgodGhpcywzMSksdGhpcy52O3JldHVybigodm9pZCAwPT10aGlzLm8mJih0aGlzLm89YXcodGhpcy5pLHotNCksdGhpcy5qPXZvaWQgMCksdGhpcykuaiE9ej4+MyYmKHRoaXMuaj16Pj4zLFM9WzAsMCwwLHRoaXMuSigxNTYpXSx0aGlzLnVZPVYwKHRoaXMubyx0aGlzLmosUykpLEUodGhpcywyLHorMSksdGhpcykuaVt6XV50aGlzLnVZW3olOF19LHdpbmRvdy5wZXJmb3JtYW5jZSl8fHt9KS5ub3c/ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5DWisod2luZG93LnBlcmZvcm1hbmNlLm5vdygpfDApfTpmdW5jdGlvbigpe3JldHVybituZXcgRGF0ZX0sZnVuY3Rpb24oeixTLFYpe2lmKDM9PXoubGVuZ3RoKXtmb3IoVj0wOzM+VjtWKyspU1tWXSs9eltWXTtmb3Ioej1bMTMsOCwxMywxMiwxNiw1LDMsMTAsMTVdLFY9MDs5PlY7VisrKVNbM10oUyxWJTMseltWXSl9fSksZnVuY3Rpb24oeixTLFYpe2lmKDA+PXouVHx8MTx6Lk58fCF6LlImJjA8U3x8MCE9ZG9jdW1lbnQuaGlkZGVufHx6LlkoKS16Lmc8ei5ULVYpcmV0dXJuIGZhbHNlO3JldHVybiEoKFM9ei5KKCh6LlM9dHJ1ZSwyKSktUyxFKHosMix6LmkubGVuZ3RoKSx6KS4kLnB1c2goW1dGLFNdKSwwKX0pLEFjPWZ1bmN0aW9uKHosUyl7Zm9yKFM9W107ei0tOylTLnB1c2goMjU1Kk1hdGgucmFuZG9tKCl8MCk7cmV0dXJuIFN9LFQ9KE0ucHJvdG90eXBlLmxZPWZ1bmN0aW9uKHosUyxWKXtyZXR1cm4oU149Uzw8MTMsU149Uz4+MTcsUz0oU15TPDw1KSZWKXx8KFM9MSksel5TfSxmdW5jdGlvbih6LFMsVix1LGYpe2lmKDAhPXouJC5sZW5ndGgpe2lmKGY9MD09ei5OKXouZz16LlkoKTtyZXR1cm4oVj1Tcyh6LFYsdSksZikmJihmPXouWSgpLXouZyxmPChTPzEwOjApfHwwPj16LkEtLXx8ei5KYi5wdXNoKDI1ND49Zj9mOjI1NCkpLFZ9fSksdVM9ZnVuY3Rpb24oeixTLFYsdSxmLHYsZCl7ei5OKys7dHJ5e2Zvcih2PSh1PTUwMDEsVj0oZj12b2lkIDAsei5pLmxlbmd0aCksMCk7KHoud3R8fC0tdSkmJih6LkN8fCh2PXouSigyKSk8Vik7KXRyeXt6LkM/Zj16LkYodHJ1ZSk6KEUoeiwxNTgsdiksZD16LkYoKSxmPXouSihkKSksZiYmZi5jYWxsP2Yoeik6eCh6LDIxLDAsZCksei5SPXRydWUsZyh6LDAsMil9Y2F0Y2goSyl7SyE9ei52JiYoei5KKDEwNCk/eCh6LDIyLEspOkUoeiwxMDQsSykpfXV8fHgoeiwzMyl9Y2F0Y2goSyl7dHJ5e3goeiwyMixLKX1jYXRjaChRKXtKKHosUSl9fXJldHVybihWPXouSigxNDkpLFMpJiZFKHosMixTKSx6Lk4tLSxWfTtVWzBdaW4gYXx8InVuZGVmaW5lZCI9PXR5cGVvZiBhLmV4ZWNTY3JpcHR8fGEuZXhlY1NjcmlwdCgidmFyICIrVVswXSk7Zm9yKHZhciBuO1UubGVuZ3RoJiYobj1VLnNoaWZ0KCkpOylhPWFbbl0mJmFbbl0hPT1PYmplY3QucHJvdG90eXBlW25dP2Fbbl06YVtuXT17fTsoKG09ci5ib3RndWFyZCxtKS5iZz1mdW5jdGlvbih6LFMsVil7cmV0dXJuIHomJnouc3Vic3RyaW5nJiYoVj1tW3ouc3Vic3RyaW5nKDAsMyldKT9uZXcgVih6LnN1YnN0cmluZygzKSxTKTpuZXcgbS5OTFMoeixTKX0sbSkuTkxTPWZ1bmN0aW9uKHosUyxWKXsoVj1uZXcgTSh6LHtPOlN9KSx0aGlzKS5pbnZva2U9ZnVuY3Rpb24odSxmLHYpe3JldHVybih2PVYuUUooZiYmdSx2KSx1KSYmIWYmJnUodiksdn19O3RyeXttLnV8fChvdyhyLCJ1bmxvYWQiLGZ1bmN0aW9uKCl7fSksbS51PTEpfWNhdGNoKHope307JykoKTs8L3NjcmlwdD4KICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgbm9uY2U9Im1UQjlSWC9WaFZsNjcwNUp3YUhqaFEiPgogIGRvY3VtZW50LmJnID0gbmV3IGJvdGd1YXJkLmJnKCdOTFNsRFp2aXJyWEpPc3ppZllIRXMyK1VwdFdwTWp6d3pEWWJTVU1iV0JhY0hDQTFIckoySnJraGEyTHRJeUMrS3lMWmw1bGJqejdPdzFKaHdnUjlWcGJFclV6QVFCV2NrNXE4cS84TG13TnpUUVMyRHFrMy9HTTJpYzdINTVmQUk1NXJTa0gwZnNLUUY1VmhUM2lYYjJ1S1M2NHlFc056bVMybit1TmUySFY0S1ZFeXZSbVluWnhKbk03WFErdTlLWk5IK0lmK3dSdmx3ekRseXJaY0VBT1lMNWNUS0VZMk5yNTBvNFlkQUdHNTVDZXJtcVBnZnE0ZGdZM1RhaGJhM2ZPSW93VzI4VHV5ZFV2TTdsSkd4dWY5UmV4aFdGVXNkZ0FYMnVWemJPY1NCMmF6MTNmRTl2T2hodkE3ZnBQcW1sVnZKeC9hbTFidFJSQnhKVCt6bFZ6dWNubzN0eE4rTG90QU1PVUZvMittVkdxTlVwaTR3R0JrM25EU0xjYkhsemh0UjREczdxSkI2bk9ESENERFkxUEY1dGRuUDNoLzlhY3MvUmpGTm9NcXV2RitBNkthYmdBUUhoNUVNazhCT3dzakZxcFFoQ3M1RE9ONFhGMzJodnBQWjRGMXh1WWhjKzJzbVUwaDRmUlRhd1EwVzcvQWQ2c1VjcW5pUGZqQy9ScHJ5cjJORHFGeVVaQ3p1MHJFZ3N3N0p1a3FUS0czRS9ZR3hJUnpLbnh2UjVKbGtQSHlpMHFhTEFta0hyMlp5OG9WcEtQRytNcFh6MTNzYkwyejRWZTYwWnpocVJaWjJDcTE1M1RpeDJYdDVURUVKWDlDZ21Ca29jaE5IU3Q1N0ZGRkp0LzNDcUNaV3AwdGJjZmx5TjRVVyt0dzRMMjVRU3BDOGZ1RURUanA3YW5vT0pJMzhxbC9reDFiOUR4NC9xRVFGMXpRc0k5UzVOZUJ5cTFCYmk2K3IwRGpiaFZOaUF6QkU4QTRHczdMcWdsZzJuVUpiZUNQWTNRcnl4amUxRnVaQ3ZZRlo3WVFtcHE0T3QreDJab0lDbERRQU5YOXMxRUhDQS9CbkJuUjU1Nko3VktqUFdyY1daUkREL2oveXlMcXdBcUQ1YksvdGdZSUxhM2FFYjdWeW5NZDZycnNTelRNT1QyYUl1VWdJdmtiM2dzVFd1MVV2R1Nvd1lycWYvUWJPdEYzQXMwaVdJblphYjBvM1p1NnZRdUJtVDlBYzVzOTNSU2RQYTZzTjkxd1g2Tnh2USsxdkRWbEhwT0QwN0dzTktxWWdsUkQ2SmQ5UjFVZG5ZdXpLK1lzL1lteC9ZTXlPQ0l3TXpQN0w0RUJoSXkrKysrZFVxT291QllJdkR6b0E2NW9UZ1c5Z1BuZ0lXOEpGYmFYRldVMWtlMmJMSHRkanFPaGVHUUphUnByYklnZmJJYkFOU3E4cnpSU1plWXlETXZnME5PTXJwbE5QTHBKbFpKQ3ExSFI1dkx6Sm56WGRlZzZXRG9EUGdQc0dlM1Q0emhtK0dBU2VvOXBSV1o3dDUrU2FrV3BkVGk2TWVnS1RsOUZkc2lubTZvdnhhdk1DTHBadWNzMllEeCtZZlVXUFBsQnNKTDRNL2hQeFVHZXRsQ0lxWTRHZFE2OUtNVTRYQmsrcUtFYW9YaG4vanpIMGdlVHJKSUk0dXYrTjY5eU1QV0wzRUZFUmk0Q0psemxWUzF0cVQzQzUvNFdnL0VvTjJZWVloTWw1WDM3dE1VbGRNL0J3RW1seTRFNmtYekxvcFN4NUNiTno3STJ3UkZEMjJEakNCNWVhS2FMNmpxbGJyTlVoeER6M1FiNE5uOEtPbGRwRGkwSVIyWko5anVvYVZ4YmJZTkxKYzRyWjJVdTRJdndEdG45UHAycWFlTXpEZXdkemgzUXdvbkJPOEdTZUlJemlHQkdzaDNscC9SMm1sMU1sbFRCV29KZWovRW5zOElkTUw5eURadjFFM0Zvc3NNME9UVWx2MmVGT2ZXUG1NZTNPczBFeitKVGxEa1FodE9lN0lUS1ZlaEhnZTFpVjBieitLYlpNc0hpSmJKOXdsa2lLbTdQdzB4UC9NL0lKZDgyQkNndHc3TFlRSFJhajV3TmJseG93S0UyT3Jja044bCtGblZlUy9JQXBqcEdsQjE3ZkpsdUFrNHJoSnBUajBFNktEMzJHNk8zUUMrWnF4VVYycFRZdjRHYW5sQjNya2RMYW80VVpzS2xRbmc0cjk0WDJkaUZsbEdQMjhQRStjTHI0TkQxaVJ4Z1k2ejNYMlVQcGJVMkpQZDBTejcxdkpSYVgvOHExdXRqT2loemxKbzhMNHFqRnhFcE9FemE5L3lLU2lVTWR5S0RuOTVvbEdIYXUyUUJHc2sxSW03ajltL1J2UVZyaHN0cFN3WENpTk9HWGdoVy9xNG1pZkhpSjh2bW93MFBzYUVZQ1pqWGp0QmVXWXV3L2R6Q1YvbEV0VGFHQjhpeEVCQ1BzUEM5T2ZBd2RxQ1pYTXgxWHpQWWVYSmQ4ajEyUHZ2OG9ISlREQngvTUI3cUFGcUw0YytKU3d2ZWt2UWNDMjM1ODZmSnZiUEJtdEFuU1dQZDB0QlBBWHl4Uk1jVjFKaHpEdzVpWmVEeGlSOTBCS2FlRnNYdFBjU0VUajZ1a2V6c0FlSC9mN2VGbitkUXo0M0lDZGNpVTVHWGpaUUVFdHVjOExaRzF6Z1plb0xsRkhpNUhxbm8wcGdlUm94K3l1UXNDdmlYcXFhQjJEaEpiRjJZeUtFOWRUdTR5cVpkYW9RM3hONlVOTkJFaFU5Q0lSWXNHeFFXbVVQTk5iM3F0YVBFNHoxTUpQUTlGU3d6T2FkMUFvQ25xWDA2eWFlTEVjandkUjhhSUVsekgzVzJaaGdld1FHZlJLaHh6S3BZTUlVai9KeDRxRGs2QmYzcW12Mnkvc0gvZjZLaHV1OUZlSFBhNURMM2JQMzJFZFJKcCtBTlZwd1o3L0Rab0toK0dhZGg3ZXloWnJscmwxTHpqa0JaMmd1ZlVENlc4RlZXclJDc0w4cCt0cWZjS2NOYUtteDV6WGtGdWpmaGtpV0JtWmQyR0diYlkwalFVUkVva2R5TUdOano1NUZsdTU3V2l6aGN0VzdPdGtSQVpSYjIydThFQitxNDRETDRYZ3A1R2c3U1ZPblVFYXNWRFhia3Nnb1p5UXMvMFdJKzRwYkhkeGlIS20zZGlNM0hxT1QvalgwNzAvUHNVd0JPVWNtaWVxNWRCVVNqQ2txT0xPRnIveU1mVWdBcDFBL0U3dmU0a2ovK0JIbG1xSksrcHJzN0FZdXdlWFU5aERvclpxL1BYNVhwMzhnUVUybkduRnBJQjJ2QUlRZlRGbHk1VG9Rcy9SWk1yalpuMml2RmRWYXNHc0NrNWZxTit2MHRWaGFsS0lXUU42SWJkbkd6OE5hMndwOUM2UkRNditMTUZFMFEzRlJudUZDTHdvSTJVV21lb3NXalFTK05jbTVJUG5XQTJ2QlJsa0RVamdtMTFGeWVzVzY5Zk81Y05ydGhPN3BjMXZOWWZhL1hqYWpiaDY5N0lNcnFmL1F0MzVRZWdJU2RDbXlPZWovdUlST21uaEgwWDd3UnlHR1lXc0kwdGlxdG9BYnAwTVBUeVl5RXFWcFZWdTZjU1d2K2dTOStQeG9vSTM5cFl5ZE1aV1RVaENvdDl3ZktIUHc2YTdobSs2Tm9rV1dHaWpkM0ZOeU9XYlV2bWdvYVl1TWpZTHl2cE40ckxnbGZxVlIwcXd0NWhRNmZaSXpxWExGR3k3V0ZHa3VTL1Vtb0VUZVRid01IQzZZYU92emx4aEVYNTVhZlYvQzNxN29CdUV6TTJ4R1FlTTZFZXkyZ2pUYmFod0RsczJJeFg2SFJ4N0k1aldOYk9DNCtiVU5IVXhSSURDUUhOaWZHeWlGc1Q3YVVpZjZHYXUweXN2aDI1Q2NaY3ZjSlVOdDF3cjVaSmU4R05jS055emFlWWlvVjJTKzFVaUpjTlFhV3Jtc01ZU2MxMU9EeFF0TnBldWpKTVVkTUh1OGVNV2FYUk1sL3dJQnIvZ3NVZDNJSjByTHpsL0dBRGF4VXVydmRxVkl4YWNHbU50aEE1UFVmT3RVYXRZSkNzQ2MzbEJqOU81WXg1OHFESFcxSjVYY0JEZzZaa3ZSMkRlZ2VrUkhaR2hTRzJCdEdiNzZRTUZQenR3U0cxWUJwWHpCcjdrdkN4NjRVbEprQ29yanRCZFl3ajZFZTh1S2l1ME5PRVRVVHhFN1FzRWxkTFkvRWxvb2FmR3Y1ZVh2ekR5cjhvaDkxNXVFU0lWQk9hOHdVU05IVXovdG1haUJzbEE0V0MxeWthVXZ2RzBoYnJoaHhMbkZIVFgyeWpDdFNNTHBObm9oTko5NkwwYmxQTHMxaGFHbGJxUEdHNEovRFlSSHRsRWNkUjUzRGg4MHRPTEtscGlia21iamtnV3B1TW96UUF0ZWF3ZkhJRmQ4ZVNpdkJWaFBIbE9HcVZmbGJya0h5S2pPY3BlL1FTYWFyL29lTWVhUG5vZXBWTmxrai9sOVZlc0JZOThqM3dyKzZad05zZUxPSFZGL0dUdWpXcHA4cjNTUURoL2EwR0kxQnA1TTVsVmZqcjBrZUVVREcrRElZWkM4cWhQVHpYRFk3b3hLdUQwZURYVFh0YkRnVG80Wk0yZUpnTHEySUs0Y0U1YkR0MWZmK1J0RFpHL1ZoZHZTdWZYakVxSnNSNTRzTXNubDdqUy9ENjNTN3pEY1dZbHNVRE5XVk53VURla0liaUMvQ09WT1hpbDlTS2tWUmpmcU5Kalhlc2FLdmRPWUFER090Z1d5WFVWc29ldEMrdG5BQkpCWm1Hc2t6QXpKOTIvSUNPTHNwYlJ6SDRvcmFSOCtNaWpwb1dRd0FwUnZKOHlPeHJRUXkxUTdLR3AyN0g5R1IzaSt4SnljdWdXVTc3RjNvc3BzZnFnRkxQVUtuT2J5OEhSOEZscXEzMG9ZQUpCcllYVXgrQUJHdExQaWRNVzBKb1FMdk16VGxPMWh1WGFYSUlOUzdBaHJqRkFCRktRWmFTcHZPQkVwY0NzYitBNVU3c21wWHp3dlFQL1lBdHJwV2lJTFJ0UHZCUFVlMStJTHpIZWVlTGI3cjhqcGZhd1RqK0dLNVZLUGU2SkpiQXc3VnpMYlpteEdFNytCVGQyRjdkYSsyYTVnUlVpdDNSbU5vM3dWdkcydkxrNHZpYkZDZ04xTmhSOUlqUWY1eEprUWhpeU5iZ1BmQ0srckpwZ2lUNEQ5Uy9LU0JnVHpnaFJUaUhVZzFOOWJJTVB2K2wvM2RPMXd4a1F1SkpBY1FCcjZnQjJUZjBFbFZ5TUlFQVlER0crU2FQbm5RcUpvOG1aRy9RTGhPU1ZnbDdqUmtDaWFkbmRCRGZ3ZzhZUlBDVnhtaFlQdTJ0WE5rc3ZCRjZvSnZUM2VDVGpaK2krdGtjV21ySElTdmtqUXZtK1JhK0JPeEsvWkhmY2NRS0dtUTZ6aVhnaXR1cG9hN3dWUFBJeW1TYmpkMDFnbnJFa0ZYa29WeVUzaUJQUDVEMEJJdUlNTStxejJXMWN2YlNjTzUrazA1QTJaZXN0NlBhNHJDZjhFSG8rdU5OeWk4TERZbmlRT0JhNXNIN0NacW9EYSt1L3RJSkpKbkdSTmZuTXhDa0s2Y3BMYUhaWkNQRUZpWTZaSnFtMjUxU3VRWmFkdjJlZ1l1Y1JoVGFBRmhuQUplM3huM05mS2ZyYmVkM203R2plTEFRUnp3aEdmK2R6ZUNKOFdYRStnNk80dzJWWUpUdW93dlFIaEQwaFlkaGIxUlhtQ3NERlFrb05pTjNrWlRON3hQOGd4M3VrVXRTeURpcGxwcTNnZzEzZkMzNzBsOTcrTXBGNHIvMU9mZzdUekZ2bjFWbXhJNmd0emdGNTBTMDZKQkFsclFYOW5yUFFnNmRKRkFJLzZnREhHSGtKek1UOFV0MTBBSU1ZU1lGUGl5ckVISzdpeXhKdXNZL0lqNms1R25NN0lsMmgyWkRxTXhmbGx2bnZPRWczdm9CUVRJK2Z1OWlKMVVyNzhOTVFGZXd5Ym1VZi9BcTd0US94dXgyVXhsZ0RJTzJmRU1jbzBTYU03c0pGVk0wQ3YyTERIRXpHVkNFT3Q0NFFyc3RTYTF4WlBxR1VUZjVwZWxqM1l1Z3NxUmxhZ1JsdTRBU3RMVzBXY3NHNnlxR3l5T0NUZzRwUTZ4V0U9Jyk7CiAgPC9zY3JpcHQ+CjxzY3JpcHQgbm9uY2U9Im1UQjlSWC9WaFZsNjcwNUp3YUhqaFEiPgogIGdhaWEgPSB3aW5kb3cuZ2FpYSB8fCB7fTsKICBnYWlhLnBzID0gZ2FpYS5wcyB8fCB7fTsKICBnYWlhLnBzLmhhc1ByZWZpbGxlZElkZW50aWZpZXIgPSBmYWxzZTsKICBmdW5jdGlvbiBnYWlhX3BhcnNlRnJhZ21lbnQoKSB7CiAgdmFyIGhhc2ggPSBsb2NhdGlvbi5oYXNoOwogIHZhciBwYXJhbXMgPSB7fTsKICBpZiAoIWhhc2gpIHsKICByZXR1cm4gcGFyYW1zOwogIH0KICB2YXIgcGFyYW1TdHJzID0gZGVjb2RlVVJJQ29tcG9uZW50KGhhc2guc3Vic3RyaW5nKDEpKS5zcGxpdCgnJicpOwogIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyYW1TdHJzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBwYXJhbSA9IHBhcmFtU3Ryc1tpXS5zcGxpdCgnPScpOwogICAgICBwYXJhbXNbcGFyYW1bMF1dID0gcGFyYW1bMV07CiAgICB9CiAgICByZXR1cm4gcGFyYW1zOwogIH0KCiAgZnVuY3Rpb24gZ2FpYV9wcmVmaWxsRW1haWwoKSB7CiAgICB2YXIgZW1haWwgPSBudWxsOwogICAgdmFyIGZvcm0gPSBudWxsOwogICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKSB7CiAgICAgIGVtYWlsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0VtYWlsJyk7CiAgICAgIGZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ2FpYV9sb2dpbmZvcm0nKTsKICAgIH0KICAgIGlmIChmb3JtICYmIGVtYWlsICYmIChlbWFpbC52YWx1ZSA9PSBudWxsIHx8IGVtYWlsLnZhbHVlID09ICcnKQogICAgICAgICYmIChlbWFpbC50eXBlICE9ICdoaWRkZW4nKSkgewogICAgICBoYXNoUGFyYW1zID0gZ2FpYV9wYXJzZUZyYWdtZW50KCk7CiAgICAgIGlmIChoYXNoUGFyYW1zWydFbWFpbCddICYmIGhhc2hQYXJhbXNbJ0VtYWlsJ10gIT0gJycpIHsKICAgICAgICBlbWFpbC52YWx1ZSA9IGhhc2hQYXJhbXNbJ0VtYWlsJ107CiAgICAgIH0KICAgIH0KICB9CgogIAogIHRyeSB7CiAgICBnYWlhX3ByZWZpbGxFbWFpbCgpOwogIH0gY2F0Y2ggKGUpIHsKICB9CiAgCjwvc2NyaXB0Pgo8c2NyaXB0IG5vbmNlPSJtVEI5UlgvVmhWbDY3MDVKd2FIamhRIj4KICB2YXIgZ2FpYV9zY3JvbGxUb0VsZW1lbnQgPSBmdW5jdGlvbihlbGVtZW50KSB7CiAgdmFyIGNhbGN1bGF0ZU9mZnNldEhlaWdodCA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICB2YXIgY3VydG9wID0gMDsKICBpZiAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKICB3aGlsZSAoZWxlbWVudCkgewogIGN1cnRvcCArPSBlbGVtZW50Lm9mZnNldFRvcDsKICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CiAgfQogIH0KICByZXR1cm4gY3VydG9wOwogIH0KICB2YXIgc2lnaW5PZmZzZXRIZWlnaHQgPSBjYWxjdWxhdGVPZmZzZXRIZWlnaHQoZWxlbWVudCk7CiAgdmFyIHNjcm9sbEhlaWdodCA9IHNpZ2luT2Zmc2V0SGVpZ2h0IC0gd2luZG93LmlubmVySGVpZ2h0ICsKICBlbGVtZW50LmNsaWVudEhlaWdodCArIDAuMDIgKiB3aW5kb3cuaW5uZXJIZWlnaHQ7CiAgd2luZG93LnNjcm9sbCgwLCBzY3JvbGxIZWlnaHQpOwogIH0KPC9zY3JpcHQ+CiAgPHNjcmlwdCBub25jZT0ibVRCOVJYL1ZoVmw2NzA1SndhSGpoUSI+CiAgaWYgKGdhaWEucHMuaGFzUHJlZmlsbGVkSWRlbnRpZmllcikgewogIHZhciBmb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dhaWFfbG9naW5mb3JtJyk7CiAgaWYgKGZvcm0pIHsKICBmb3JtLnN1Ym1pdCgpOwogIH0KICB9CiAgPC9zY3JpcHQ+CjxzY3JpcHQgbm9uY2U9Im1UQjlSWC9WaFZsNjcwNUp3YUhqaFEiPgogIChmdW5jdGlvbigpewogIGdhaWFfb25Mb2dpblN1Ym1pdCA9IGZ1bmN0aW9uKCkgewogIHRyeSB7CiAgZ2FpYS5sb2dpbkF1dG9SZWRpcmVjdC5zdG9wKCk7CiAgfSBjYXRjaCAoZXJyKSB7CiAgLy8gZG8gbm90IHByZXZlbnQgZm9ybSBmcm9tIGJlaW5nIHN1Ym1pdHRlZAogIH0KICB0cnkgewogIGRvY3VtZW50LmJnLmludm9rZShmdW5jdGlvbihyZXNwb25zZSkgewogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiZ3Jlc3BvbnNlJykudmFsdWUgPSByZXNwb25zZTsKICB9KTsKICB9IGNhdGNoIChlcnIpIHsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmdyZXNwb25zZScpLnZhbHVlID0gJyc7CiAgfQogIHJldHVybiB0cnVlOwogIH0KICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ2FpYV9sb2dpbmZvcm0nKS5vbnN1Ym1pdCA9IGdhaWFfb25Mb2dpblN1Ym1pdDsKICB2YXIgc2lnbmluQnV0dG9uOwogIHNpZ25pbkJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduZXh0Jyk7CiAgZ2FpYV9hdHRhY2hFdmVudCh3aW5kb3csICdsb2FkJywgZnVuY3Rpb24oKXsKICBnYWlhX3Njcm9sbFRvRWxlbWVudChzaWduaW5CdXR0b24pOwogIH0pOwogIH0pKCk7Cjwvc2NyaXB0PgogIDwvYm9keT4KPC9odG1sPgo=","contentType":"text/html; charset=UTF-8"}},"transparency":0}
HasZ: false
HasM: false
Has Attachments: true
Has Geometry Properties: false
HTML Popup Type: esriServerHTMLPopupTypeAsHTMLText
Object ID Field: objectid
Unique ID Field:
IsSystemMaintained : True
Global ID Field: globalid
Type ID Field:
Fields:
- objectid (type: esriFieldTypeOID, alias: ObjectID, SQL Type: sqlTypeOther, length: 0, nullable: false, editable: false)
- globalid (type: esriFieldTypeGlobalID, alias: GlobalID, SQL Type: sqlTypeGUID, length: 38, nullable: false, editable: false)
- header_img (type: esriFieldTypeString, alias: header_img, SQL Type: sqlTypeOther, length: 255, nullable: true, editable: true)
- sound_category (type: esriFieldTypeString, alias: Sound Category, SQL Type: sqlTypeOther, length: 255, nullable: true, editable: true)
- volume_rank (type: esriFieldTypeInteger, alias: Perceived Volume, SQL Type: sqlTypeOther, nullable: true, editable: true, Coded Values: [1: 1 (Quiet)], [2: 2], [3: 3], ... 2 more ...)
- distance_rank (type: esriFieldTypeInteger, alias: Perceived Distance, SQL Type: sqlTypeOther, nullable: true, editable: true, Coded Values: [1: 1 (Distant)], [2: 2], [3: 3], ... 2 more ...)
- CreationDate (type: esriFieldTypeDate, alias: CreationDate, SQL Type: sqlTypeOther, length: 8, nullable: true, editable: false)
- Creator (type: esriFieldTypeString, alias: Creator, SQL Type: sqlTypeOther, length: 128, nullable: true, editable: false)
- EditDate (type: esriFieldTypeDate, alias: EditDate, SQL Type: sqlTypeOther, length: 8, nullable: true, editable: false)
- Editor (type: esriFieldTypeString, alias: Editor, SQL Type: sqlTypeOther, length: 128, nullable: true, editable: false)
- sound_category2 (type: esriFieldTypeString, alias: Secondary Sound Category, SQL Type: sqlTypeOther, length: 255, nullable: true, editable: true, Coded Values: [church: Bells (Church)], [school: Bells (School)], [rail_xing: Bells (Rail Crossing)], ... 20 more ...)
- volume_rank2 (type: esriFieldTypeInteger, alias: Perceived Volume, SQL Type: sqlTypeOther, nullable: true, editable: true, Coded Values: [1: 1 (Quiet)], [2: 2], [3: 3], ... 2 more ...)
- distance_rank2 (type: esriFieldTypeInteger, alias: Perceived Distance, SQL Type: sqlTypeOther, nullable: true, editable: true, Coded Values: [1: 1 (Distant)], [2: 2], [3: 3], ... 2 more ...)
- AttachID (type: esriFieldTypeInteger, alias: Attachment ID, SQL Type: sqlTypeOther, nullable: true, editable: true)
- CountAttach (type: esriFieldTypeInteger, alias: Attachment Count, SQL Type: sqlTypeOther, nullable: true, editable: true)
- AudioFormat (type: esriFieldTypeString, alias: Audio Format, SQL Type: sqlTypeOther, length: 256, nullable: true, editable: true)
Templates:
Name: New Feature
Description:
Drawing Tool: esriFeatureEditToolPoint
Prototype:
Is Data Versioned: false
Has Contingent Values: false
Supports Rollback On Failure Parameter: true
Last Edit Date: 6/12/2023 9:23:51 PM
Schema Last Edit Date: 6/12/2023 9:23:51 PM
Data Last Edit Date: 6/12/2023 9:23:51 PM
Supported Operations:
Query
Query Pivot
Query Top Features
Query Analytic
Query Bins
Query Attachments
Add Features
Update Features
Delete Features
Apply Edits
Calculate
Generate Renderer
Validate SQL
Get Estimates
ConvertFormat