Notes from the Hall
PGRpdiBpZD0iYmhwb2RzIj4KPHN0eWxlPgoKICA6cm9vdHsKICAgIC8qIGV4YWN0IEJleW9uZCBIZWFsaW5nIHBhbGV0dGUgcHVsbGVkIGZyb20gdGhlIGxpdmUgc2l0ZSAqLwogICAgLS1jcmVhbTojZjFlY2U0OyAgICAgIC8qIGhlYWRlciArIGhlcm8gYmFuZCBiYWNrZ3JvdW5kICovCiAgICAtLXNsYXRlOiMyYzQ5NjA7ICAgICAgLyogZm9vdGVyIGJhbmQgKyBwcmltYXJ5IHRleHQgKi8KICAgIC0tc2FnZTojNGI3MjVmOyAgICAgICAvKiBuYXYgbGlua3MsIGFjY2VudHMgKi8KICAgIC0tdGVhbDojOGFiZWM2OyAgICAgICAvKiBDb250YWN0IFVzIC8gQ1RBIHBpbGwgKi8KICAgIC0tdGVycmE6I2E2NWYzMzsgICAgICAvKiBoZWFkaW5ncyBhY2NlbnQgKi8KICAgIC0tZm9yZXN0OiMyODRiNDE7CiAgICAtLXBhcGVyOiNmZmZmZmY7IC0tcGFuZWw6I2ZhZjhmNDsgLS1pbms6IzI2MzQzYzsgLS1pbmstc29mdDojNWY2ZjY4OwogICAgLS1saW5lOiNlNGRkZDA7IC0tc2hhZG93OjAgOHB4IDI2cHggcmdiYSg0NCw3Myw5NiwuMTApOyAtLXJhZGl1czoxNHB4OyAtLW1heHc6MTA4MHB4OwogICAgLS1oZWFkOiJoYWxvZ2VuIiwiUG9wcGlucyIsLWFwcGxlLXN5c3RlbSxTZWdvZSBVSSxSb2JvdG8sc2Fucy1zZXJpZjsKICAgIC0tYm9keToibXVuZGlhbCIsIlNvdXJjZSBTYW5zIDMiLC1hcHBsZS1zeXN0ZW0sU2Vnb2UgVUksUm9ib3RvLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmOwogIH0jYmhwb2RzICp7Ym94LXNpemluZzpib3JkZXItYm94fSNiaHBvZHMgaHRtbCwgI2JocG9kc3ttYXJnaW46MDtwYWRkaW5nOjB9I2JocG9kc3tmb250LWZhbWlseTp2YXIoLS1ib2R5KTtjb2xvcjp2YXIoLS1pbmspO2JhY2tncm91bmQ6dmFyKC0tcGFwZXIpO2xpbmUtaGVpZ2h0OjEuNTU7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZH0jYmhwb2RzIGgxLCAjYmhwb2RzIGgyLCAjYmhwb2RzIGgzLCAjYmhwb2RzIGg0e2ZvbnQtZmFtaWx5OnZhcigtLWhlYWQpO2ZvbnQtd2VpZ2h0OjcwMDtsZXR0ZXItc3BhY2luZzotLjAxZW19I2JocG9kcyBhe2NvbG9yOnZhcigtLXNhZ2UpO3RleHQtZGVjb3JhdGlvbjpub25lfSNiaHBvZHMgYTpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfSNiaHBvZHMgLndyYXB7bWF4LXdpZHRoOnZhcigtLW1heHcpO21hcmdpbjowIGF1dG87cGFkZGluZzowIDI2cHh9I2JocG9kcyAvKiAtLS0tLS0tLS0tIFJlYWwgaGVhZGVyIChjcmVhbSwgI2JocG9kcyBzYWdlIG5hdiwgI2JocG9kcyB0ZWFsIENUQSkgLS0tLS0tLS0tLSAqLwogIGhlYWRlci5zaXRle2JhY2tncm91bmQ6dmFyKC0tY3JlYW0pfSNiaHBvZHMgLnNpdGUtaW5uZXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MDtwYWRkaW5nOjE2cHggY2xhbXAoMjJweCw0dncsNDhweCk7bWluLWhlaWdodDo4OHB4O21heC13aWR0aDoxNDQwcHg7bWFyZ2luOjAgYXV0b30jYmhwb2RzIC5sb2dvIGltZ3toZWlnaHQ6NTZweDtkaXNwbGF5OmJsb2NrfSNiaHBvZHMgbmF2Lm1haW57ZGlzcGxheTpmbGV4O2dhcDpjbGFtcCgxNnB4LDEuOHZ3LDI4cHgpO21hcmdpbi1sZWZ0OmNsYW1wKDIycHgsM3Z3LDQ2cHgpO2ZsZXgtd3JhcDp3cmFwfSNiaHBvZHMgbmF2Lm1haW4gYXtjb2xvcjp2YXIoLS1zYWdlKTtmb250LWZhbWlseTp2YXIoLS1ib2R5KTtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjE2cHg7bGV0dGVyLXNwYWNpbmc6LjAzZW07d2hpdGUtc3BhY2U6bm93cmFwfSNiaHBvZHMgbmF2Lm1haW4gYTpob3Zlcntjb2xvcjp2YXIoLS1mb3Jlc3QpO3RleHQtZGVjb3JhdGlvbjpub25lfSNiaHBvZHMgLmhlYWRlci1yaWdodHttYXJnaW4tbGVmdDphdXRvO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjE4cHh9I2JocG9kcyAuc29jaWFse2Rpc3BsYXk6ZmxleDtnYXA6MTJweDthbGlnbi1pdGVtczpjZW50ZXJ9I2JocG9kcyAuc29jaWFsIGF7Y29sb3I6dmFyKC0tc2FnZSk7ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcn0jYmhwb2RzIC5zb2NpYWwgc3Zne3dpZHRoOjE3cHg7aGVpZ2h0OjE3cHg7ZmlsbDpjdXJyZW50Q29sb3J9I2JocG9kcyAuY3Rhe2JhY2tncm91bmQ6dmFyKC0tdGVhbCk7Y29sb3I6dmFyKC0tY3JlYW0pO2ZvbnQtZmFtaWx5OnZhcigtLWhlYWQpO2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTJweDtsZXR0ZXItc3BhY2luZzozLjZweDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Ym9yZGVyLXJhZGl1czoyMnB4O3BhZGRpbmc6MTRweCAzMHB4IDEycHg7d2hpdGUtc3BhY2U6bm93cmFwfSNiaHBvZHMgLmN0YTpob3ZlcntmaWx0ZXI6YnJpZ2h0bmVzcyguOTYpO3RleHQtZGVjb3JhdGlvbjpub25lfUBtZWRpYShtYXgtd2lkdGg6ODIwcHgpeyNiaHBvZHMgbmF2Lm1haW57ZGlzcGxheTpub25lfX0jYmhwb2RzIC8qIC0tLS0tLS0tLS0gSGVybyBiYW5kIChjcmVhbSArIHJlYWwgbGVhZiB3YXRlcm1hcmssICNiaHBvZHMgbGlrZSBvdGhlciBwYWdlcykgLS0tLS0tLS0tLSAqLwogIC5oZXJvYmFuZHtiYWNrZ3JvdW5kOnZhcigtLWNyZWFtKTtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW59I2JocG9kcyAuaGVyb2JhbmQ6OmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDt6LWluZGV4OjA7cG9pbnRlci1ldmVudHM6bm9uZTtvcGFjaXR5Oi41OwogICAgYmFja2dyb3VuZDp1cmwoImh0dHBzOi8vY29ubmVjdGJleW9uZGhlYWxpbmcuY29tL3dwLWNvbnRlbnQvdGhlbWVzL2JleW9uZC1oZWFsaW5nL2Rpc3QvaW1hZ2VzL2Jnci1zaGFwZS0wMi5wbmciKSA1MCUgMC9jb3ZlciBuby1yZXBlYXR9I2JocG9kcyAuaGVyb2JhbmQ6OmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDt3aWR0aDozMDBweDtoZWlnaHQ6MzAwcHg7ei1pbmRleDoxO3BvaW50ZXItZXZlbnRzOm5vbmU7CiAgICBiYWNrZ3JvdW5kOnVybCgiaHR0cHM6Ly9jb25uZWN0YmV5b25kaGVhbGluZy5jb20vd3AtY29udGVudC90aGVtZXMvYmV5b25kLWhlYWxpbmcvZGlzdC9pbWFnZXMvbGVhZi1jb3JuZXJMLnBuZyIpIDAgMC9jb250YWluIG5vLXJlcGVhdH0jYmhwb2RzIC5oZXJvYmFuZCAud3JhcHtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjJ9I2JocG9kcyAuaGVyb3tkaXNwbGF5OmZsZXg7Z2FwOjI4cHg7YWxpZ24taXRlbXM6ZmxleC1lbmQ7cGFkZGluZzozNHB4IDAgNDBweDtmbGV4LXdyYXA6d3JhcH0jYmhwb2RzIC5jb3ZlcmZyYW1le2ZsZXg6bm9uZTtiYWNrZ3JvdW5kOiNmZmY7cGFkZGluZzoxM3B4O2JvcmRlci1yYWRpdXM6MjBweDtsaW5lLWhlaWdodDowOwogICAgYm94LXNoYWRvdzowIDE2cHggNDRweCByZ2JhKDQ0LDczLDk2LC4yMiksIDAgMCAwIDFweCByZ2JhKDI1NSwyNTUsMjU1LC45KTt9I2JocG9kcyAuaGVybyAuY292ZXJ7d2lkdGg6MTgwcHg7aGVpZ2h0OjE4MHB4O2JvcmRlci1yYWRpdXM6MTJweDtvYmplY3QtZml0OmNvdmVyO2Rpc3BsYXk6YmxvY2t9I2JocG9kcyAuaGVybyAubWV0YXtmbGV4OjE7bWluLXdpZHRoOjI2MHB4fSNiaHBvZHMgLmhlcm8gLmtpY2tlcntjb2xvcjp2YXIoLS10ZXJyYSk7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NzAwO2xldHRlci1zcGFjaW5nOi4xMmVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0jYmhwb2RzIC5oZXJvIGgxe2ZvbnQtc2l6ZTo1MnB4O2xpbmUtaGVpZ2h0OjE7bWFyZ2luOjhweCAwIDEwcHg7Y29sb3I6dmFyKC0tdGVycmEpfUBtZWRpYShtYXgtd2lkdGg6NTYwcHgpeyNiaHBvZHMgLmhlcm8gaDF7Zm9udC1zaXplOjM4cHh9fSNiaHBvZHMgLmhlcm8gcHtjb2xvcjp2YXIoLS1zbGF0ZSk7Zm9udC1zaXplOjE2cHg7bWFyZ2luOjAgMCAxNnB4O21heC13aWR0aDo2MDBweH0jYmhwb2RzIC5saXN0ZW4tbGFiZWx7Zm9udC1mYW1pbHk6dmFyKC0taGVhZCk7Zm9udC1zaXplOjExcHg7bGV0dGVyLXNwYWNpbmc6LjE2ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2NvbG9yOnZhcigtLXNsYXRlKTttYXJnaW4tYm90dG9tOjEwcHh9I2JocG9kcyAubGlzdGVue2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6MTBweH0jYmhwb2RzIC5scGlsbHtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4O2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyOjEuNXB4IHNvbGlkIHZhcigtLXNhZ2UpO2NvbG9yOnZhcigtLXNhZ2UpOwogICAgYm9yZGVyLXJhZGl1czoyMnB4O3BhZGRpbmc6OXB4IDE4cHggOHB4O2ZvbnQtZmFtaWx5OnZhcigtLWhlYWQpO2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTFweDtsZXR0ZXItc3BhY2luZzoxLjZweDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9I2JocG9kcyAubHBpbGwgc3Zne3dpZHRoOjE1cHg7aGVpZ2h0OjE1cHg7ZmlsbDpjdXJyZW50Q29sb3I7ZmxleDpub25lfSNiaHBvZHMgLmxwaWxsOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tc2FnZSk7Y29sb3I6dmFyKC0tY3JlYW0pO3RleHQtZGVjb3JhdGlvbjpub25lfSNiaHBvZHMgLyogLS0tLS0tLS0tLSBDb250cm9scyAtLS0tLS0tLS0tICovCiAgLmNvbnRyb2xze2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Z2FwOjE0cHg7ZmxleC13cmFwOndyYXA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tbGluZSk7cGFkZGluZzoxNnB4IDA7bWFyZ2luLXRvcDoxNHB4fSNiaHBvZHMgLmNvbnRyb2xzIC5jb3VudHtmb250LXNpemU6MTRweDtjb2xvcjp2YXIoLS1pbmstc29mdCl9I2JocG9kcyAuY29udHJvbHMgLnJpZ2h0e2Rpc3BsYXk6ZmxleDtnYXA6MTBweDthbGlnbi1pdGVtczpjZW50ZXJ9I2JocG9kcyAuc2VhcmNoe2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czo5OTlweDtwYWRkaW5nOjhweCAxNHB4O2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTRweDttaW4td2lkdGg6MTgwcHg7YmFja2dyb3VuZDp2YXIoLS1wYW5lbCk7Y29sb3I6dmFyKC0taW5rKX0jYmhwb2RzIC5zb3J0YnRue2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7YmFja2dyb3VuZDp2YXIoLS1wYXBlcik7Ym9yZGVyLXJhZGl1czo5OTlweDtwYWRkaW5nOjhweCAxNHB4O2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo2MDA7Y29sb3I6dmFyKC0tc2xhdGUpO2N1cnNvcjpwb2ludGVyfSNiaHBvZHMgLnNvcnRidG46aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLXNhZ2UpfSNiaHBvZHMgLyogLS0tLS0tLS0tLSBFcGlzb2RlIHJvd3MgLS0tLS0tLS0tLSAqLwogIC5saXN0e3BhZGRpbmc6NnB4IDAgNjBweH0jYmhwb2RzIC5lcHtkaXNwbGF5OmZsZXg7Z2FwOjE2cHg7cGFkZGluZzoxOHB4IDhweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1saW5lKTthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fSNiaHBvZHMgLmVwOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tcGFuZWwpfSNiaHBvZHMgLmVwIC5udW17ZmxleDpub25lO3dpZHRoOjUwcHg7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6dmFyKC0tc2FnZSk7Zm9udC1mYW1pbHk6dmFyKC0taGVhZCk7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxNXB4O3BhZGRpbmctdG9wOjZweH0jYmhwb2RzIC5lcCAuYXJ0e2ZsZXg6bm9uZTt3aWR0aDo2NnB4O2hlaWdodDo2NnB4O2JvcmRlci1yYWRpdXM6MTJweDtvdmVyZmxvdzpoaWRkZW47Ym94LXNoYWRvdzp2YXIoLS1zaGFkb3cpfSNiaHBvZHMgLmVwIC5hcnQgaW1ne3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7b2JqZWN0LWZpdDpjb3ZlcjtkaXNwbGF5OmJsb2NrfSNiaHBvZHMgLmVwIC5tYWlue2ZsZXg6MTttaW4td2lkdGg6MH0jYmhwb2RzIC5lcCAudGl0bGV7Zm9udC1mYW1pbHk6dmFyKC0taGVhZCk7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxN3B4O2NvbG9yOnZhcigtLXNsYXRlKTttYXJnaW46MXB4IDAgM3B4O2xpbmUtaGVpZ2h0OjEuMjV9I2JocG9kcyAuZXAgLnN1Yntjb2xvcjp2YXIoLS1pbmstc29mdCk7Zm9udC1zaXplOjEyLjVweDttYXJnaW4tYm90dG9tOjZweDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7bGV0dGVyLXNwYWNpbmc6LjA0ZW19I2JocG9kcyAuZXAgLmRlc2N7Y29sb3I6dmFyKC0taW5rLXNvZnQpO2ZvbnQtc2l6ZToxNHB4O21hcmdpbjowIDAgMTJweDtkaXNwbGF5Oi13ZWJraXQtYm94Oy13ZWJraXQtbGluZS1jbGFtcDoyOy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDtvdmVyZmxvdzpoaWRkZW59I2JocG9kcyAucGxheWVye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEycHg7YmFja2dyb3VuZDp2YXIoLS1wYW5lbCk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOjk5OXB4O3BhZGRpbmc6OHB4IDE0cHggOHB4IDhweDttYXgtd2lkdGg6NjQwcHh9I2JocG9kcyAucGxheXtmbGV4Om5vbmU7d2lkdGg6NDBweDtoZWlnaHQ6NDBweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOnZhcigtLXNhZ2UpO2JvcmRlcjowO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjEycyxiYWNrZ3JvdW5kIC4xMnN9I2JocG9kcyAucGxheTpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWZvcmVzdCk7dHJhbnNmb3JtOnNjYWxlKDEuMDUpfSNiaHBvZHMgLnBsYXk6YWZ0ZXJ7Y29udGVudDoiIjtib3JkZXItbGVmdDoxM3B4IHNvbGlkICNmZmY7Ym9yZGVyLXRvcDo4cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbTo4cHggc29saWQgdHJhbnNwYXJlbnQ7bWFyZ2luLWxlZnQ6M3B4fSNiaHBvZHMgLnRyYWNre2ZsZXg6MTtoZWlnaHQ6NnB4O2JvcmRlci1yYWRpdXM6NHB4O2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLHZhcigtLXNhZ2UpIDAgMjIlLCNkOWUyZGMgMjIlIDEwMCUpfSNiaHBvZHMgLnBsYWJlbHtmbGV4Om5vbmU7Zm9udC1zaXplOjEyLjVweDtjb2xvcjp2YXIoLS1pbmstc29mdCk7Zm9udC13ZWlnaHQ6NjAwfSNiaHBvZHMgLndhdGNoe21hcmdpbi1sZWZ0OjE0cHg7Zm9udC1zaXplOjEyLjVweDtjb2xvcjp2YXIoLS10ZXJyYSk7Zm9udC13ZWlnaHQ6NjAwfSNiaHBvZHMgLmFydDE5LWxpdmV7bWFyZ2luLXRvcDo0cHg7bWF4LXdpZHRoOjY2MHB4fSNiaHBvZHMgLmFydDE5LWxpdmUgaWZyYW1le3dpZHRoOjEwMCU7aGVpZ2h0OjIwMHB4O2JvcmRlcjowIG5vbmU7Ym9yZGVyLXJhZGl1czoxMnB4O2JhY2tncm91bmQ6I2ZmZn0jYmhwb2RzIC8qIC0tLS0tLS0tLS0gUmVhbCBmb290ZXIgKHNsYXRlIGJhbmQsICNiaHBvZHMgY3JlYW0gbGlua3MpIC0tLS0tLS0tLS0gKi8KICBmb290ZXIuc2l0ZXtiYWNrZ3JvdW5kOnZhcigtLXNsYXRlKTtjb2xvcjp2YXIoLS1jcmVhbSk7bWFyZ2luLXRvcDoxMHB4fSNiaHBvZHMgLmZvb3QtdG9we2Rpc3BsYXk6ZmxleDtnYXA6NDBweDtmbGV4LXdyYXA6d3JhcDtwYWRkaW5nOjQwcHggMCAyNHB4O21heC13aWR0aDp2YXIoLS1tYXh3KTttYXJnaW46MCBhdXRvO3BhZGRpbmctbGVmdDoyNnB4O3BhZGRpbmctcmlnaHQ6MjZweH0jYmhwb2RzIC5mb290LWJyYW5ke2ZsZXg6MTttaW4td2lkdGg6MjAwcHh9I2JocG9kcyAuZm9vdC1icmFuZCAuZm9vdC1sb2dve21hcmdpbi1ib3R0b206MThweH0jYmhwb2RzIC5mb290LWJyYW5kIC5mb290LWxvZ28gaW1ne2hlaWdodDo2NnB4O3dpZHRoOmF1dG87ZGlzcGxheTpibG9ja30jYmhwb2RzIC5mb290LWJyYW5kIHB7Y29sb3I6I2NkZDZkZDtmb250LXNpemU6MTMuNXB4O21hcmdpbjowfSNiaHBvZHMgLmZvb3QtY29se21pbi13aWR0aDoxNTBweH0jYmhwb2RzIC5mb290LWNvbCBoNHtmb250LWZhbWlseTp2YXIoLS1oZWFkKTtmb250LXNpemU6MTNweDtsZXR0ZXItc3BhY2luZzouMTJlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Y29sb3I6I2FlYmFjNDttYXJnaW46MCAwIDEycHh9I2JocG9kcyAuZm9vdC1jb2wgYSwgI2JocG9kcyAuZm9vdC1jb2wgc3BhbntkaXNwbGF5OmJsb2NrO2NvbG9yOnZhcigtLWNyZWFtKTtmb250LXNpemU6MTRweDttYXJnaW4tYm90dG9tOjlweH0jYmhwb2RzIC5mb290LWNvbCBhOmhvdmVye2NvbG9yOnZhcigtLXRlYWwpO3RleHQtZGVjb3JhdGlvbjpub25lfSNiaHBvZHMgLmZvb3Qtc29jaWFse2Rpc3BsYXk6ZmxleDtnYXA6MTRweDttYXJnaW4tdG9wOjZweH0jYmhwb2RzIC5mb290LXNvY2lhbCBhe2NvbG9yOnZhcigtLXRlYWwpfSNiaHBvZHMgLmZvb3Qtc29jaWFsIHN2Z3t3aWR0aDoxOXB4O2hlaWdodDoxOXB4O2ZpbGw6Y3VycmVudENvbG9yfSNiaHBvZHMgLmZvb3QtYm90dG9te2JvcmRlci10b3A6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjE1KX0jYmhwb2RzIC5mb290LWJvdHRvbSAud3JhcHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2dhcDoxNnB4O2ZsZXgtd3JhcDp3cmFwO3BhZGRpbmctdG9wOjE2cHg7cGFkZGluZy1ib3R0b206MjJweH0jYmhwb2RzIC5mb290LWJvdHRvbSBzbWFsbHtjb2xvcjojYWViYWM0O2ZvbnQtc2l6ZToxMi41cHh9I2JocG9kcyAuZm9vdC1ib3R0b20gYXtjb2xvcjojY2RkNmRkfSNiaHBvZHMgLmZvb3QtYm90dG9tIGltZ3toZWlnaHQ6NDRweDtvcGFjaXR5Oi45NX0jYmhwb2RzIC5kZW1vLWZsYWd7YmFja2dyb3VuZDp2YXIoLS10ZXJyYSk7Y29sb3I6I2ZmZjt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6MTIuNXB4O3BhZGRpbmc6NnB4IDEycHh9I2JocG9kcyAud2F0Y2gub2Zme2NvbG9yOiM5YWE4YTAgIWltcG9ydGFudDtjdXJzb3I6ZGVmYXVsdDtvcGFjaXR5Oi42NX0jYmhwb2RzIC53YXRjaC5vZmY6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9I2JocG9kcyAuZXAgLm51bS5ub2RhdGV7b3BhY2l0eTouNTtmb250LXNpemU6MTJweH0KCi8qIGZ1bGwtYmxlZWQgbGVhZiBoZXJvIHRvIG1hdGNoIHByZXZpZXcgKyBoaWRlIHRoZW1lIGR1cGxpY2F0ZSB0aXRsZSAqLwouaGVyby1hYm91dC5oZXJvLXRpdGxle2Rpc3BsYXk6bm9uZSAhaW1wb3J0YW50fQoub3ZlcnZpZXctc2VjdGlvbntwYWRkaW5nLXRvcDowICFpbXBvcnRhbnR9CiNiaHBvZHN7YmFja2dyb3VuZDp0cmFuc3BhcmVudH0KI2JocG9kcyAuaGVybzo6YmVmb3JlLCNiaHBvZHMgLmhlcm86OmFmdGVye2Rpc3BsYXk6bm9uZSAhaW1wb3J0YW50O2JhY2tncm91bmQ6bm9uZSAhaW1wb3J0YW50O2NvbnRlbnQ6bm9uZSAhaW1wb3J0YW50fQojYmhwb2RzIC5mdWxsYmxlZWR7bWFyZ2luLWxlZnQ6Y2FsYyg1MCUgLSA1MHZ3KTttYXJnaW4tcmlnaHQ6Y2FsYyg1MCUgLSA1MHZ3KX0KI2JocG9kcyAuaW5mb2JhcntiYWNrZ3JvdW5kOnZhcigtLXRlcnJhKTtjb2xvcjojZmZmO3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtZmFtaWx5OnZhcigtLWhlYWQpO2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTNweDtsZXR0ZXItc3BhY2luZzouMDNlbTtwYWRkaW5nOjEwcHggMTZweH0KI2JocG9kcyAuaGVyb2JhbmR7YmFja2dyb3VuZDojZjFlY2U0ICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnQ7cG9zaXRpb246cmVsYXRpdmV9CiNiaHBvZHMgLmhlcm9iYW5kOjphZnRlcntkaXNwbGF5OmJsb2NrICFpbXBvcnRhbnQ7Y29udGVudDoiIiAhaW1wb3J0YW50O3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7ei1pbmRleDowO3BvaW50ZXItZXZlbnRzOm5vbmU7b3BhY2l0eTouNTtiYWNrZ3JvdW5kOnVybCgiaHR0cHM6Ly9jb25uZWN0YmV5b25kaGVhbGluZy5jb20vd3AtY29udGVudC90aGVtZXMvYmV5b25kLWhlYWxpbmcvZGlzdC9pbWFnZXMvYmdyLXNoYXBlLTAyLnBuZyIpIDUwJSAwL2NvdmVyIG5vLXJlcGVhdCAhaW1wb3J0YW50fQojYmhwb2RzIC5oZXJvYmFuZDo6YmVmb3Jle2Rpc3BsYXk6bm9uZSAhaW1wb3J0YW50fQojYmhwb2RzIC5oZXJvYmFuZCAud3JhcHtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjI7bWF4LXdpZHRoOjEwODBweDttYXJnaW46MCBhdXRvO3BhZGRpbmc6MCAyNnB4fQojYmhwb2RzIC5oZXJve3BhZGRpbmc6MzRweCAwIDQycHggIWltcG9ydGFudDthbGlnbi1pdGVtczpjZW50ZXIgIWltcG9ydGFudH0KI2JocG9kcyAuaGVybyBoMS5iaHAtdGl0bGV7ZGlzcGxheTpibG9jaztmb250LWZhbWlseTp2YXIoLS1oZWFkKTtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjY0cHg7bGluZS1oZWlnaHQ6Ljk4O2NvbG9yOnZhcigtLXRlcnJhKTttYXJnaW46NnB4IDAgMTJweH0KQG1lZGlhKG1heC13aWR0aDo1NjBweCl7I2JocG9kcyAuaGVybyBoMS5iaHAtdGl0bGV7Zm9udC1zaXplOjQwcHh9fQojYmhwb2RzIC5jb3ZlcmZyYW1le2JvcmRlcjowICFpbXBvcnRhbnQ7bWF4LXdpZHRoOjEwMCU7Ym94LXNpemluZzpib3JkZXItYm94fQpAbWVkaWEobWF4LXdpZHRoOjY4MHB4KXsjYmhwb2RzIC5jb250cm9sc3tmbGV4LXdyYXA6d3JhcH0jYmhwb2RzIC5jb250cm9scyAucmlnaHR7d2lkdGg6MTAwJX0jYmhwb2RzIC5jb250cm9scyAuc2VhcmNoe2ZsZXg6MSAxIGF1dG87bWluLXdpZHRoOjA7d2lkdGg6YXV0b30jYmhwb2RzIC5zb3J0YnRue3doaXRlLXNwYWNlOm5vd3JhcDtmbGV4Om5vbmV9fQojYmhwb2RzIC53YXRjaCBzdmd7d2lkdGg6MTBweDtoZWlnaHQ6MTBweDtmaWxsOmN1cnJlbnRDb2xvcjttYXJnaW4tcmlnaHQ6NHB4O3ZlcnRpY2FsLWFsaWduOi0xcHh9CiNiaHBvZHMgLndhdGNoLm9mZiBzdmd7b3BhY2l0eTouNjV9Ci8qIHBsYXllciByb3c6IGtlZXAgV2F0Y2ggdHJpYW5nbGUrbGFiZWwgYWxpZ25lZDsgdGlkeSBwaWxsIG9uIG1vYmlsZSAqLwojYmhwb2RzIC53YXRjaHtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXA7bGluZS1oZWlnaHQ6MX0KI2JocG9kcyAud2F0Y2ggc3Zne3ZlcnRpY2FsLWFsaWduOjB9CkBtZWRpYShtYXgtd2lkdGg6NjAwcHgpeyNiaHBvZHMgLnBsYXllcntnYXA6OHB4O3BhZGRpbmc6N3B4IDE0cHggN3B4IDdweH0jYmhwb2RzIC50cmFja3tkaXNwbGF5Om5vbmV9I2JocG9kcyAud2F0Y2h7bWFyZ2luLWxlZnQ6YXV0b319Cjwvc3R5bGU+CjxkaXYgY2xhc3M9ImluZm9iYXIgZnVsbGJsZWVkIj5BIFByb2R1Y3Qgb2YgQmV5b25kIEhlYWxpbmcgTWVkaWE8L2Rpdj4KPGRpdiBjbGFzcz0iaGVyb2JhbmQgZnVsbGJsZWVkIj4KICA8ZGl2IGNsYXNzPSJ3cmFwIj4KICAgIDxzZWN0aW9uIGNsYXNzPSJoZXJvIj4KICAgICAgPGRpdiBjbGFzcz0iY292ZXJmcmFtZSI+PGltZyBjbGFzcz0iY292ZXIgY292ZXItLXdpZGUiIHNyYz0iaHR0cHM6Ly9jb25uZWN0YmV5b25kaGVhbGluZy5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDgvbmZ0aC1zZXJpZXMtY2FyZC5hdmlmIiBhbHQ9Ik5vdGVzIGZyb20gdGhlIEhhbGwsIHJlY29yZGVkIGF0IHRoZSBFTURSSUEgQ29uZmVyZW5jZSAyMDI2IGluIEFuYWhlaW0iIC8+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9Im1ldGEiPgogICAgICAgIDxkaXYgY2xhc3M9ImtpY2tlciI+RnJvbSB0aGUgTm90aWNlIFRoYXQgUG9kY2FzdDwvZGl2PgogICAgICAgIDxoMSBjbGFzcz0iYmhwLXRpdGxlIj5Ob3RlcyBmcm9tIHRoZSBIYWxsPC9oMT4KICAgICAgICA8cD4yNiBjb252ZXJzYXRpb25zIGZyb20gdGhlIGZsb29yIG9mIEVNRFJJQSAyMDI2LiBOZXcgZXZlcnkgd2Vlay48L3A+CiAgICAgICAgPGRpdiBjbGFzcz0ibGlzdGVuLWxhYmVsIj5MaXN0ZW4gJmFtcDsgU3Vic2NyaWJlPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibGlzdGVuIj48YSBjbGFzcz0ibHBpbGwiIGhyZWY9Imh0dHBzOi8vcG9kY2FzdHMuYXBwbGUuY29tL3BvZGNhc3QvaWQxNDYyNjA1MTQ3IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciI+PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xMiAxNGEzIDMgMCAwMDMtM1Y2YTMgMyAwIDEwLTYgMHY1YTMgMyAwIDAwMyAzem01LTNhNSA1IDAgMDEtMTAgMEg1YTcgNyAwIDAwNiA2LjlWMjFoMnYtMy4xQTcgNyAwIDAwMTkgMTFoLTJ6Ii8+PC9zdmc+QXBwbGUgUG9kY2FzdHM8L2E+PGEgY2xhc3M9ImxwaWxsIiBocmVmPSJodHRwczovL29wZW4uc3BvdGlmeS5jb20vc2hvdy8xU0JWeUJ2MEd1bVd6bTFKQVYyeEhjIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciI+PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xMiAyYTEwIDEwIDAgMTAwIDIwIDEwIDEwIDAgMDAwLTIwem00LjYgMTQuNGEuNjIuNjIgMCAwMS0uODYuMmMtMi4zNS0xLjQ0LTUuMy0xLjc2LTguOC0uOTZhLjYyLjYyIDAgMTEtLjI4LTEuMmMzLjgzLS44OCA3LjEtLjUgOS43MyAxLjEuMy4xOC40LjU4LjIxLjg2em0xLjIzLTIuNzRhLjc4Ljc4IDAgMDEtMS4wNy4yNmMtMi42OS0xLjY1LTYuNzktMi4xMy05Ljk3LTEuMTZhLjc4Ljc4IDAgMTEtLjQ1LTEuNDljMy42My0xLjEgOC4xNS0uNTYgMTEuMjMgMS4zMi4zNy4yMy40OS43MS4yNiAxLjA3em0uMS0yLjg1QzE0LjcyIDguODcgOS42IDguNyA2LjYzIDkuNmEuOTQuOTQgMCAxMS0uNTQtMS44YzMuNDItMS4wMyA5LjA3LS44MyAxMi42NSAxLjI5YS45NC45NCAwIDAxLS45NSAxLjYyeiIvPjwvc3ZnPlNwb3RpZnk8L2E+PGEgY2xhc3M9ImxwaWxsIiBocmVmPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS9wbGF5bGlzdD9saXN0PVBMRXFHdl9Qb0RQUGU2NEJtMnZPX3dwUHVValk3VlRaTksiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIj48c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTIzIDcuNXMtLjItMS42LS45LTIuM2MtLjktLjktMS44LS45LTIuMy0xQzE2LjYgNCAxMiA0IDEyIDRzLTQuNiAwLTcuOC4yYy0uNS4xLTEuNC4xLTIuMyAxLS43LjctLjkgMi4zLS45IDIuM1MuOCA5LjQuOCAxMS4zdjEuNGMwIDEuOS4yIDMuOC4yIDMuOHMuMiAxLjYuOSAyLjNjLjkuOSAyIC45IDIuNSAxIDEuOC4yIDcuNi4yIDcuNi4yczQuNiAwIDcuOC0uMmMuNS0uMSAxLjQtLjEgMi4zLTEgLjctLjcuOS0yLjMuOS0yLjNzLjItMS45LjItMy44di0xLjRjMC0xLjktLjItMy44LS4yLTMuOHpNOS43IDE1LjFWOC45bDYgMy4xLTYgMy4xeiIvPjwvc3ZnPllvdVR1YmU8L2E+PGEgY2xhc3M9ImxwaWxsIiBocmVmPSJodHRwczovL3Jzcy5hcnQxOS5jb20vbm90aWNlLXRoYXQtYW4tZW1kci1wb2RjYXN0IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciI+PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik00IDExYTkgOSAwIDAxOSA5aDIuNkExMS42IDExLjYgMCAwMDQgOC40VjExem0wIDQuMWE1IDUgMCAwMTUgNWgyLjZBNy42IDcuNiAwIDAwNCAxMi41djIuNnpNNi4yIDIwYTIuMiAyLjIgMCAxMDAtNC40IDIuMiAyLjIgMCAwMDAgNC40eiIvPjwvc3ZnPlJTUzwvYT48L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CiAgPC9kaXY+CjwvZGl2Pgo8bWFpbiBjbGFzcz0id3JhcCI+CiAgPGRpdiBjbGFzcz0iY29udHJvbHMiPgogICAgPHNwYW4gY2xhc3M9ImNvdW50IiBpZD0iYmhwLWNvdW50Ij48L3NwYW4+CiAgICA8ZGl2IGNsYXNzPSJyaWdodCI+CiAgICAgIDxpbnB1dCBjbGFzcz0ic2VhcmNoIiBpZD0iYmhwLXNlYXJjaCIgcGxhY2Vob2xkZXI9IlNlYXJjaCBlcGlzb2Rlc+KApiIgLz4KICAgICAgPGJ1dHRvbiBjbGFzcz0ic29ydGJ0biIgaWQ9ImJocC1zb3J0Ij7ihpMgT2xkZXN0IGZpcnN0PC9idXR0b24+CiAgICA8L2Rpdj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJsaXN0IiBpZD0iYmhwLWxpc3QiPjwvZGl2Pgo8L21haW4+CjxzdHlsZT4KICAjYmhwb2RzIC5jb3ZlcmZyYW1lIC5jb3Zlci0td2lkZXt3aWR0aDo0MDBweDttYXgtd2lkdGg6MTAwJTtoZWlnaHQ6YXV0bzthc3BlY3QtcmF0aW86MTYvOTtvYmplY3QtZml0OmNvdmVyfQogICNiaHBvZHMgLmVwe2Rpc3BsYXk6Z3JpZCAhaW1wb3J0YW50O2dyaWQtdGVtcGxhdGUtY29sdW1uczoxNzZweCAxZnI7Z2FwOjE4cHg7YWxpZ24taXRlbXM6Y2VudGVyfQogICNiaHBvZHMgLmVwIC50aHVtYndyYXB7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jazt3aWR0aDoxNzZweH0KICAjYmhwb2RzIC5lcCAudGh1bWJ3cmFwIGltZ3t3aWR0aDoxMDAlO2FzcGVjdC1yYXRpbzoxNi85O29iamVjdC1maXQ6Y292ZXI7Ym9yZGVyLXJhZGl1czo4cHg7ZGlzcGxheTpibG9ja30KICAjYmhwb2RzIC5lcCAubnVtY2hpcHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NnB4O2xlZnQ6NnB4O2JhY2tncm91bmQ6cmdiYSg0MCw3NSw2NSwuOTIpO2NvbG9yOiNmMWVjZTQ7Zm9udC1mYW1pbHk6dmFyKC0taGVhZCk7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMXB4O2xldHRlci1zcGFjaW5nOi42cHg7cGFkZGluZzozcHggOXB4O2JvcmRlci1yYWRpdXM6NnB4O2xpbmUtaGVpZ2h0OjEuMn0KICAjYmhwb2RzIC5lcC51cGNvbWluZyAubnVtY2hpcHtiYWNrZ3JvdW5kOnJnYmEoOTUsMTExLDEwNCwuOSl9CiAgI2JocG9kcyAuZXAgLnBsYXliYWRnZXtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjUwJTt0b3A6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKTt3aWR0aDozNHB4O2hlaWdodDozNHB4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6cmdiYSgzOCw1Miw2MCwuNjUpO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn0KICAjYmhwb2RzIC5lcCAucGxheWJhZGdlIHN2Z3ttYXJnaW4tbGVmdDoycHh9CiAgI2JocG9kcyAuZXAgLnRpdGxlIGF7Y29sb3I6aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246bm9uZX0KICAjYmhwb2RzIC5lcCAudGl0bGUgYTpob3Zlcntjb2xvcjp2YXIoLS10ZXJyYSl9CiAgI2JocG9kcyAuZXAgLnRyYW5zY3JpcHR7Zm9udC1mYW1pbHk6dmFyKC0taGVhZCk7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXNsYXRlKTt0ZXh0LWRlY29yYXRpb246bm9uZTttYXJnaW4tbGVmdDoxNHB4fQogICNiaHBvZHMgLmVwIC50cmFuc2NyaXB0OmhvdmVye2NvbG9yOnZhcigtLXRlcnJhKX0KICAjYmhwb2RzIC5hcmNyb3d7Ym9yZGVyOjJweCBkYXNoZWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMpO3BhZGRpbmc6MThweCAyMnB4O3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtZmFtaWx5OnZhcigtLWhlYWQpO2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTNweDtsZXR0ZXItc3BhY2luZzoxLjRweDtjb2xvcjp2YXIoLS1pbmstc29mdCk7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO21hcmdpbi10b3A6MTRweH0KICAjYmhwb2RzIC5lcCAudGh1bWJ0aWxle3dpZHRoOjEwMCU7YXNwZWN0LXJhdGlvOjE2Lzk7Ym9yZGVyLXJhZGl1czo4cHg7YmFja2dyb3VuZDp2YXIoLS1jcmVhbSk7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfQogIEBtZWRpYShtYXgtd2lkdGg6NjgwcHgpeyNiaHBvZHMgLmVwe2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgIWltcG9ydGFudH0jYmhwb2RzIC5lcCAudGh1bWJ3cmFwe3dpZHRoOjEwMCV9fQo8L3N0eWxlPjxzdHlsZT4KICAjYmhwb2RzIC5zZW97bWF4LXdpZHRoOjc4MHB4O21hcmdpbjowIGF1dG87cGFkZGluZzo4cHggMjZweCA2NHB4fQogICNiaHBvZHMgLnNlbyBoMntjb2xvcjp2YXIoLS10ZXJyYSk7Zm9udC1mYW1pbHk6dmFyKC0taGVhZCk7Zm9udC1zaXplOjI2cHg7bWFyZ2luOjM0cHggMCAxMnB4fQogICNiaHBvZHMgLnNlbyBwe2NvbG9yOnZhcigtLWluayk7Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MS43NTttYXJnaW46MCAwIDE0cHh9CiAgI2JocG9kcyAuc2VvIC5mYXEgaDN7Y29sb3I6dmFyKC0tc2xhdGUpO2ZvbnQtZmFtaWx5OnZhcigtLWhlYWQpO2ZvbnQtc2l6ZToxN3B4O21hcmdpbjoyMnB4IDAgNHB4fQogICNiaHBvZHMgLnNlbyAuZmFxIHB7Y29sb3I6dmFyKC0taW5rLXNvZnQpfQo8L3N0eWxlPgo8ZGl2IGNsYXNzPSJzZW8iPgogIDxoMj5BYm91dCB0aGUgc2VyaWVzPC9oMj4KICA8cD5Ob3RlcyBmcm9tIHRoZSBIYWxsIGlzIGEgMjYgZXBpc29kZSBzZXJpZXMgZnJvbSB0aGUgTm90aWNlIFRoYXQgcG9kY2FzdCwgcmVjb3JkZWQgb24gdGhlIGZsb29yIG9mIHRoZSBFTURSSUEgQ29uZmVyZW5jZSAyMDI2IGluIEFuYWhlaW0uIEl0IGlzIGEgd2luZG93IGludG8gdGhlIGxhcmdlc3QgZ2F0aGVyaW5nIG9mIEVNRFIgdGhlcmFwaXN0cyBpbiB0aGUgVW5pdGVkIFN0YXRlcywgZm9yIGV2ZXJ5b25lIHdobyB3YXMgdGhlcmUgYW5kIGV2ZXJ5b25lIHdobyBjb3VsZCBub3QgYmUuPC9wPgogIDxwPlRoZXNlIGFyZSBub3Qga2V5bm90ZSByZWNhcHMuIFdlIHRyaWVkIHRvIGNhcHR1cmUgdGhlIGNvbnZlcnNhdGlvbnMgdGhhdCBhY3R1YWxseSBoYXBwZW4gYXQgYSBjb25mZXJlbmNlOiBpbiB0aGUgaGFsbHdheSBiZXR3ZWVuIHNlc3Npb25zLCBpbiB0aGUgZXhoaWJpdCBoYWxsLCBhbmQgYXQgdGhlIGVuZCBvZiBhIGxvbmcgZGF5IHdoZW4gc29tZWJvZHkgZmluYWxseSBzYXlzIHRoZSB0aGluZyB0aGV5IGhhdmUgYmVlbiBjaGV3aW5nIG9uIGFsbCB3ZWVrZW5kLiBIb3N0ZWQgYnkgQnJpZGdlciBGYWxrZW5zdGllbiBhbmQgSmVuIFNhdmFnZS4gUHJvZHVjZWQgYnkgQmV5b25kIEhlYWxpbmcgTWVkaWEuIE5ldyBlcGlzb2RlcyByZWxlYXNlIHdlZWtseSBhbG9uZ3NpZGUgdGhlIHJlZ3VsYXIgPGEgaHJlZj0iaHR0cHM6Ly9jb25uZWN0YmV5b25kaGVhbGluZy5jb20vbm90aWNlLXRoYXQvIj5Ob3RpY2UgVGhhdDwvYT4gZmVlZC48L3A+CiAgPGgyPkFsbCBlcGlzb2RlczwvaDI+CiAgPHVsIGlkPSJiaHAtc3RhdGljLWxpc3QiPgogICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vY29ubmVjdGJleW9uZGhlYWxpbmcuY29tL25vdGVzLWZyb20tdGhlLWhhbGwvbm8tMS1qZW5uaWZlci1ib2hsZS8iPk5vdGVzIGZyb20gdGhlIEhhbGwgTm8uIDE6IEplbm5pZmVyIEJvaGxlLCBQZXJtaXNzaW9uIHRvIEJlIGEgRnVua3kgVGhlcmFwaXN0PC9hPjwvbGk+CiAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9jb25uZWN0YmV5b25kaGVhbGluZy5jb20vbm90ZXMtZnJvbS10aGUtaGFsbC9uby0yLWRlcmVrLWZhcnJlbGwvIj5Ob3RlcyBmcm9tIHRoZSBIYWxsIE5vLiAyOiBEZXJlayBGYXJyZWxsLCBXaHkgRU1EUiBOZWVkcyBJdHMgQ3JpdGljczwvYT48L2xpPgogIDxsaT48YSBocmVmPSJodHRwczovL2Nvbm5lY3RiZXlvbmRoZWFsaW5nLmNvbS9ub3Rlcy1mcm9tLXRoZS1oYWxsL25vLTMtc2FyYWgtc2NodWJlcnQvIj5Ob3RlcyBmcm9tIHRoZSBIYWxsIE5vLiAzOiBTYXJhaCBTY2h1YmVydCwgRU1EUiBCZXlvbmQgdGhlIEluZGl2aWR1YWw8L2E+PC9saT4KICAgIDwvdWw+CjwvZGl2PjxzY3JpcHQ+CmNvbnN0IFNMVUc9J25vdGljZS10aGF0LWFuLWVtZHItcG9kY2FzdCc7CmNvbnN0IFRPVEFMPTI2Owpjb25zdCBFUFM9WwogIHtuOjEsIGlzbzonMjAyNi0wOC0yNicsIGlkOic3NWI0MzE0Yi02MjQ0LTRkOTQtOWVjYy00N2JhY2FlNDU5OWEnLCB5OicyaERzbFl5eHJ1WScsCiAgIHQ6J0plbm5pZmVyIEJvaGxlOiBQZXJtaXNzaW9uIHRvIEJlIGEgRnVua3kgVGhlcmFwaXN0JywKICAgZDonVHdvIHllYXJzIGFnbyBzaGUgYXRlIGJyZWFrZmFzdCBhbG9uZSBhdCBoZXIgZmlyc3QgRU1EUklBIGNvbmZlcmVuY2UuIFRoaXMgeWVhciBzaGUgd2FzIHJlY29nbml6ZWQgdGhlIG1vbWVudCBzaGUgd2Fsa2VkIGludG8gdGhlIGxvYmJ5LiBPbiByZWNvZ25pdGlvbiwgYXV0aGVudGljaXR5LCBhbmQgZ2l2aW5nIHRoZXJhcGlzdHMgcGVybWlzc2lvbiB0byBiZSBhIGxpdHRsZSBmdW5reSBvbiBjYW1lcmEuJywKICAgdGh1bWI6J2h0dHBzOi8vY29ubmVjdGJleW9uZGhlYWxpbmcuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA4L25mdGgtZXAwMS10aHVtYi1qZW5uaWZlci1ib2hsZS5qcGcnLAogICBwYWdlOicvbm90ZXMtZnJvbS10aGUtaGFsbC9uby0xLWplbm5pZmVyLWJvaGxlLyd9LAogIHsibiI6IjIiLCJpc28iOiIyMDI2LTA5LTAzIiwiaWQiOiIxNDA1ZWIxOC0xMmFmLTQ5MzMtYjM3NC00YWQwYmJkZWM2YzUiLCJ5Ijoid09oX3RQcUtLak0iLCJ0IjoiRGVyZWsgRmFycmVsbDogV2h5IEVNRFIgTmVlZHMgSXRzIENyaXRpY3MiLCJkIjoiVGhlIGRheSBhZnRlciBoaXMgRU1EUklBIDIwMjYga2V5bm90ZSwgUHJvZi4gRGVyZWsgRmFycmVsbCBNQkUgb24gd2hhdCB0byBkbyB3aGVuIGEgcGFwZXIgY2FsbHMgRU1EUiBwc2V1ZG9zY2llbmNlOiBub3QgYXJndWUgYmFjaywgYnV0IGFzayB3aGVyZSB0aGUgY3JpdGljcyBtaWdodCBiZSByaWdodC4gT24gdGhlIG5hbWUgRU1EUiwgdGhlIEFJUCBtb2RlbCwgdGhlIEVNRFJJQeKAk01RIHJlc2VhcmNoIGZ1bmRpbmcsIGFuZCB0aGUgb2FrIHRyZWUgdGhhdCBmZWxsIGJlY2F1c2Ugbm90aGluZyBldmVyIHB1c2hlZCBiYWNrIG9uIGl0LiIsInRodW1iIjoiaHR0cHM6Ly9jb25uZWN0YmV5b25kaGVhbGluZy5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDkvbmZ0aC1lcDAyLXRodW1iLWRlcmVrLWZhcnJlbGwuanBnIiwicGFnZSI6Ii9ub3Rlcy1mcm9tLXRoZS1oYWxsL25vLTItZGVyZWstZmFycmVsbC8ifSwKICB7Im4iOiIzIiwiaXNvIjoiMjAyNi0wOS0xNCIsImlkIjoiNWU4YmY2MDctNDE3OS00NzNmLTk5NTQtYzZlOGQwYmIyYjUyIiwieSI6ImNzUjBobHVLZk0wIiwidCI6IlNhcmFoIFNjaHViZXJ0OiBFTURSIEJleW9uZCB0aGUgSW5kaXZpZHVhbCIsImQiOiJNaW51dGVzIGFmdGVyIGhlciBFTURSSUEgMjAyNiBrZXlub3RlLCBEci4gU2FyYWggU2NodWJlcnQgb24gd2h5IHBoYXNlIHR3byBpcyBhYm91dCBjb25uZWN0aW5nIHRvIHdoYXQgaXMgYWxyZWFkeSB0aGVyZSByYXRoZXIgdGhhbiBidWlsZGluZyBzb21ldGhpbmcgbmV3OiBJbmRpZ2Vub3VzIHdpc2RvbSBhbmQgbm9ubGluZWFyIHRpbWUsIG1lbW9yeSB0aGF0IGxpdmVzIGJleW9uZCBvbmUgbWluZCwgdGhlIEFJUCBzeXN0ZW0gYXMgYW4gYXR0YWNobWVudCBzeXN0ZW0sIGFuZCB0aGUgZHVhbC10aGVyYXBpc3QgbW9kZWwgaGVyIHRlYW0gdXNlcyB3aXRoIGNoaWxkcmVuIGluIGNhcmUuIEhlciBjbG9zaW5nIHF1ZXN0aW9uOiB3aHkgYXJlIHdlIGRvaW5nIHRoZXJhcHkgb24gb3VyIG93bj8iLCJ0aHVtYiI6Imh0dHBzOi8vY29ubmVjdGJleW9uZGhlYWxpbmcuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA5L25mdGgtZXAwMy10aHVtYi1zYXJhaC1zY2h1YmVydC5qcGciLCJwYWdlIjoiL25vdGVzLWZyb20tdGhlLWhhbGwvbm8tMy1zYXJhaC1zY2h1YmVydC8ifQpdOwpjb25zdCBNT049WydKYW4nLCdGZWInLCdNYXInLCdBcHInLCdNYXknLCdKdW4nLCdKdWwnLCdBdWcnLCdTZXAnLCdPY3QnLCdOb3YnLCdEZWMnXTsKZnVuY3Rpb24gZm10KGlzbyl7IGlmKCFpc28pIHJldHVybiAnJzsgY29uc3QgcD1pc28uc3BsaXQoJy0nKTsgaWYocC5sZW5ndGg8MykgcmV0dXJuIGlzbzsgcmV0dXJuIE1PTlsoK3BbMV0pLTFdKycgJysoK3BbMl0pKycsICcrcFswXTsgfQpmdW5jdGlvbiB0cmFjayhwbCx1cmwpeyB0cnl7IGlmKHdpbmRvdy5kYXRhTGF5ZXIpe2RhdGFMYXllci5wdXNoKHtldmVudDonbmZ0aF9jbGljaycscGxhY2VtZW50OnBsLGxpbmtfdXJsOnVybHx8Jyd9KTt9IGlmKHR5cGVvZiBndGFnPT09J2Z1bmN0aW9uJyl7Z3RhZygnZXZlbnQnLCdpbnRlcm5hbF9mdW5uZWxfY2xpY2snLHtwbGFjZW1lbnQ6cGwsbGlua191cmw6dXJsfHwnJ30pO30gfWNhdGNoKGUpe30gfQpsZXQgc29ydE5ld2VzdD1mYWxzZTsKY29uc3QgbGlzdEVsPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiaHAtbGlzdCcpLCBjb3VudEVsPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiaHAtY291bnQnKTsKY29uc3QgUExBWT0nPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgZmlsbD0iI2ZmZmZmZiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGQ9Ik04IDV2MTRsMTEtN3oiLz48L3N2Zz4nOwpmdW5jdGlvbiByZW5kZXIoKXsKICBjb25zdCBxPShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmhwLXNlYXJjaCcpLnZhbHVlfHwnJykudHJpbSgpLnRvTG93ZXJDYXNlKCk7CiAgbGV0IHJvd3M9RVBTLmZpbHRlcihlPT4gIXEgfHwgKGUudCYmZS50LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocSkpIHx8IChlLmQmJmUuZC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHEpKSk7CiAgcm93cz1yb3dzLnNsaWNlKCkuc29ydCgoYSxiKT0+eyBjb25zdCBjPShhLm48Yi5uPy0xOmEubj5iLm4/MTowKTsgcmV0dXJuIHNvcnROZXdlc3Q/IC1jIDogYzsgfSk7CiAgY291bnRFbC50ZXh0Q29udGVudCA9IEVQUy5sZW5ndGgrJyBvZiAnK1RPVEFMKycgZXBpc29kZXMgcmVsZWFzZWQgwrcgYSBuZXcgbm90ZSBldmVyeSB3ZWVrJzsKICBsaXN0RWwuaW5uZXJIVE1MPScnOwogIGlmKCFyb3dzLmxlbmd0aCl7IGxpc3RFbC5pbm5lckhUTUw9JzxkaXYgY2xhc3M9ImVtcHR5IiBzdHlsZT0iZ3JpZC1jb2x1bW46MS8tMSI+PGgzPk5vIGVwaXNvZGVzIG1hdGNoICInK3ErJyIuPC9oMz48L2Rpdj4nOyByZXR1cm47IH0KICBjb25zdCBmcmFnPWRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICByb3dzLmZvckVhY2goZT0+ewogICAgY29uc3Qgcm93PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyByb3cuY2xhc3NOYW1lPSdlcCc7CiAgICBjb25zdCBjaGlwPSc8c3BhbiBjbGFzcz0ibnVtY2hpcCI+Tm8uICcrZS5uKyc8L3NwYW4+JzsKICAgIGNvbnN0IGltZz0nPGltZyBzcmM9IicrZS50aHVtYisnIiBhbHQ9IiIgbG9hZGluZz0ibGF6eSI+JzsKICAgIGNvbnN0IHRodW1iID0gZS55CiAgICAgID8gJzxhIGNsYXNzPSJ0aHVtYndyYXAiIGhyZWY9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9JytlLnkrJyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEtcGw9Imh1Yi1lcGlzb2RlLXRodW1iIiB0aXRsZT0iV2F0Y2ggb24gWW91VHViZSI+JytpbWcrY2hpcCsnPHNwYW4gY2xhc3M9InBsYXliYWRnZSI+JytQTEFZKyc8L3NwYW4+PC9hPicKICAgICAgOiAnPHNwYW4gY2xhc3M9InRodW1id3JhcCI+JytpbWcrY2hpcCsnPC9zcGFuPic7CiAgICBjb25zdCBzdWI9J05vdGVzIGZyb20gdGhlIEhhbGwgTm8uICcrZS5uKyhlLmlzbz8oJyDCtyAnK2ZtdChlLmlzbykpOicnKTsKICAgIGNvbnN0IGxpc3RlbiA9IGUuaWQKICAgICAgPyAnPGRpdiBjbGFzcz0icGxheWVyd3JhcCI+PGRpdiBjbGFzcz0icGxheWVyIj48YnV0dG9uIGNsYXNzPSJwbGF5IiBhcmlhLWxhYmVsPSJQbGF5IiBkYXRhLWlkPSInK2UuaWQrJyI+PC9idXR0b24+PGRpdiBjbGFzcz0idHJhY2siPjwvZGl2PjxzcGFuIGNsYXNzPSJwbGFiZWwiPkxpc3Rlbjwvc3Bhbj48L2Rpdj48L2Rpdj4nCiAgICAgIDogJzxkaXYgY2xhc3M9InBsYXllcndyYXAiPjxzcGFuIGNsYXNzPSJwbGFiZWwiPkF1ZGlvIHJlbGVhc2VzIHdpdGggdGhlIGVwaXNvZGU8L3NwYW4+PC9kaXY+JzsKICAgIHJvdy5pbm5lckhUTUw9CiAgICAgIHRodW1iKwogICAgICAnPGRpdiBjbGFzcz0ibWFpbiI+JysKICAgICAgICAnPGRpdiBjbGFzcz0idGl0bGUiPjxhIGhyZWY9IicrZS5wYWdlKyciIGRhdGEtcGw9Imh1Yi1lcGlzb2RlLXRpdGxlIj4nK2UudCsnPC9hPjwvZGl2PicrCiAgICAgICAgJzxkaXYgY2xhc3M9InN1YiI+JytzdWIrJzwvZGl2PicrCiAgICAgICAgKGUuZD8oJzxwIGNsYXNzPSJkZXNjIj4nK2UuZCsnPC9wPicpOicnKSsKICAgICAgICBsaXN0ZW4rCiAgICAgICc8L2Rpdj4nOwogICAgY29uc3QgcHc9cm93LnF1ZXJ5U2VsZWN0b3IoJy5wbGF5ZXJ3cmFwJyk7CiAgICBpZihwdyl7IGNvbnN0IHRyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsgdHIuY2xhc3NOYW1lPSd0cmFuc2NyaXB0JzsgdHIuaHJlZj1lLnBhZ2U7IHRyLnNldEF0dHJpYnV0ZSgnZGF0YS1wbCcsJ2h1Yi1lcGlzb2RlLXRyYW5zY3JpcHQnKTsgdHIudGV4dENvbnRlbnQ9J1RyYW5zY3JpcHQg4oaSJzsgcHcuYXBwZW5kQ2hpbGQodHIpOyB9CiAgICBmcmFnLmFwcGVuZENoaWxkKHJvdyk7CiAgfSk7CiAgbGlzdEVsLmFwcGVuZENoaWxkKGZyYWcpOwogIGlmKEVQUy5sZW5ndGg8VE9UQUwgJiYgIXEpewogICAgY29uc3QgdXA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7IHVwLmNsYXNzTmFtZT0nZXAgdXBjb21pbmcnOwogICAgdXAuaW5uZXJIVE1MPSc8c3BhbiBjbGFzcz0idGh1bWJ3cmFwIj48c3BhbiBjbGFzcz0idGh1bWJ0aWxlIj48c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI2IiBoZWlnaHQ9IjI2IiBmaWxsPSJub25lIiBzdHJva2U9IiM0YjcyNWYiIHN0cm9rZS13aWR0aD0iMiIgYXJpYS1oaWRkZW49InRydWUiPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjkiLz48cGF0aCBkPSJNMTIgN3Y1bDMgMyIvPjwvc3ZnPjwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtY2hpcCI+Tm8uICcrKEVQUy5sZW5ndGgrMSkrJzwvc3Bhbj48L3NwYW4+JysKICAgICAgJzxkaXYgY2xhc3M9Im1haW4iPjxkaXYgY2xhc3M9InRpdGxlIj5OZXh0IGNvbnZlcnNhdGlvbiBkcm9wcyBoZXJlPC9kaXY+PGRpdiBjbGFzcz0ic3ViIj5BIG5ldyBub3RlIGV2ZXJ5IHdlZWsgdGhyb3VnaCB0aGUgc2VyaWVzPC9kaXY+PC9kaXY+JzsKICAgIGxpc3RFbC5hcHBlbmRDaGlsZCh1cCk7CiAgICBjb25zdCByZW1haW5pbmc9VE9UQUwtRVBTLmxlbmd0aC0xOwogICAgaWYocmVtYWluaW5nPjApeyBjb25zdCBhcmM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7IGFyYy5jbGFzc05hbWU9J2FyY3Jvdyc7IGFyYy50ZXh0Q29udGVudD1yZW1haW5pbmcrJyBtb3JlIGNvbnZlcnNhdGlvbnMgZnJvbSB0aGUgaGFsbCwgcmVsZWFzaW5nIHdlZWtseSc7IGxpc3RFbC5hcHBlbmRDaGlsZChhcmMpOyB9CiAgfQogIGxpc3RFbC5xdWVyeVNlbGVjdG9yQWxsKCcucGxheScpLmZvckVhY2goYnRuPT5idG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCgpPT57CiAgICB0cmFjaygnaHViLWVwaXNvZGUtbGlzdGVuJywnJyk7CiAgICBjb25zdCBpZD1idG4uZ2V0QXR0cmlidXRlKCdkYXRhLWlkJyk7IGNvbnN0IHdyYXA9YnRuLmNsb3Nlc3QoJy5wbGF5ZXJ3cmFwJyk7CiAgICB3cmFwLmlubmVySFRNTD0nPGRpdiBjbGFzcz0iYXJ0MTktbGl2ZSI+PGlmcmFtZSBzcmM9Imh0dHBzOi8vd3d3LmFydDE5LmNvbS9zaG93cy8nK1NMVUcrJy9lcGlzb2Rlcy8nK2lkKycvZW1iZWQ/dGhlbWU9bGlnaHQtZ3JlZW4iIHNjcm9sbGluZz0ibm8iIGFsbG93PSJhdXRvcGxheSIgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1wb3B1cHMgYWxsb3ctcG9wdXBzLXRvLWVzY2FwZS1zYW5kYm94Ij48L2lmcmFtZT48L2Rpdj4nOwogIH0pKTsKICBsaXN0RWwucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtcGxdJykuZm9yRWFjaChlbD0+ZWwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCgpPT50cmFjayhlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtcGwnKSwgZWwuaHJlZnx8JycpKSk7Cn0KZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JocC1zZWFyY2gnKS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIHJlbmRlcik7CmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiaHAtc29ydCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsgc29ydE5ld2VzdD0hc29ydE5ld2VzdDsgdGhpcy50ZXh0Q29udGVudD1zb3J0TmV3ZXN0PyfihpMgTmV3ZXN0IGZpcnN0Jzon4oaRIE9sZGVzdCBmaXJzdCc7IHJlbmRlcigpOyB9KTsKZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI2JocG9kcyAubGlzdGVuIC5scGlsbCcpLmZvckVhY2goZnVuY3Rpb24oYSl7IGEuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpeyB0cmFjaygnaGVyby1waWxsJywgYS5ocmVmKTsgfSk7IH0pOwpyZW5kZXIoKTsKPC9zY3JpcHQ+CjwvZGl2Pg==