{"js":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgICAKICAgIDwhLS0gUHJpbWFyeSBNZXRhIFRhZ3MgLS0+CiAgICA8dGl0bGU+RHIuIEJhcmJhcmEgU3Ryb3VkLCBQaEQgfCBDbGluaWNhbCBQc3ljaG9sb2dpc3QgfCBJbmZhbnQgTWVudGFsIEhlYWx0aCBTcGVjaWFsaXN0PC90aXRsZT4KICAgIDxtZXRhIG5hbWU9InRpdGxlIiBjb250ZW50PSJEci4gQmFyYmFyYSBTdHJvdWQsIFBoRCB8IENsaW5pY2FsIFBzeWNob2xvZ2lzdCB8IEluZmFudCBNZW50YWwgSGVhbHRoIFNwZWNpYWxpc3QiPgogICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkNoYW5naW5nIHRoZSBXb3JsZCDigJMgT25lIFJlbGF0aW9uc2hpcCBhdCBhIFRpbWUuIERyLiBCYXJiYXJhIFN0cm91ZCBpcyBhIHJlbm93bmVkIHRyYWluZXIsIGNvbnN1bHRhbnQsIGF1dGhvciAmIFpFUk8gVE8gVEhSRUUgRmVsbG93IHNwZWNpYWxpemluZyBpbiBpbmZhbnQgbWVudGFsIGhlYWx0aCBhbmQgY2hpbGQgZGV2ZWxvcG1lbnQuIj4KICAgIDxtZXRhIG5hbWU9ImtleXdvcmRzIiBjb250ZW50PSJEci4gQmFyYmFyYSBTdHJvdWQsIENsaW5pY2FsIFBzeWNob2xvZ2lzdCwgSW5mYW50IE1lbnRhbCBIZWFsdGgsIENoaWxkIERldmVsb3BtZW50LCBaRVJPIFRPIFRIUkVFLCBQYWxvIEFsdG8sIFRyYWluaW5nLCBDb25zdWx0YXRpb24iPgogICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSJEci4gQmFyYmFyYSBTdHJvdWQiPgogICAgPG1ldGEgbmFtZT0icm9ib3RzIiBjb250ZW50PSJpbmRleCwgZm9sbG93Ij4KICAgIAogICAgPCEtLSBPcGVuIEdyYXBoIC8gRmFjZWJvb2sgLS0+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dHlwZSIgY29udGVudD0icHJvZmlsZSI+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dXJsIiBjb250ZW50PSJodHRwczovL2RyYmFyYmFyYXN0cm91ZC5jb20iPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOnRpdGxlIiBjb250ZW50PSJEci4gQmFyYmFyYSBTdHJvdWQsIFBoRCB8IENoYW5naW5nIHRoZSBXb3JsZCDigJMgT25lIFJlbGF0aW9uc2hpcCBhdCBhIFRpbWUiPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOmRlc2NyaXB0aW9uIiBjb250ZW50PSJSZW5vd25lZCB0cmFpbmVyLCBjb25zdWx0YW50LCBhdXRob3IgJiBaRVJPIFRPIFRIUkVFIEZlbGxvdyBzcGVjaWFsaXppbmcgaW4gaW5mYW50IG1lbnRhbCBoZWFsdGggYW5kIGNoaWxkIGRldmVsb3BtZW50LiI+CiAgICAKICAgIDwhLS0gVGhlbWUgQ29sb3IgLS0+CiAgICA8bWV0YSBuYW1lPSJ0aGVtZS1jb2xvciIgY29udGVudD0iIzBEM0I0QyI+CiAgICAKICAgIDxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbSI+CiAgICA8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Imh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20iIGNyb3Nzb3JpZ2luPgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1Db3Jtb3JhbnQrR2FyYW1vbmQ6aXRhbCx3Z2h0QDAsNDAwOzAsNTAwOzAsNjAwOzAsNzAwOzEsNDAwOzEsNTAwJmZhbWlseT1MYXRvOndnaHRAMzAwOzQwMDs1MDA7NjAwOzcwMCZkaXNwbGF5PXN3YXAiIHJlbD0ic3R5bGVzaGVldCI+CiAgICAKICAgIDxzdHlsZT4KICAgICAgICA6cm9vdCB7CiAgICAgICAgICAgIC0tZGVlcC1vY2VhbjogIzBEM0I0QzsKICAgICAgICAgICAgLS1vY2Vhbi1ibHVlOiAjMUI2QjkzOwogICAgICAgICAgICAtLXRlYWw6ICMxOTc2QTg7CiAgICAgICAgICAgIC0tc2t5LWJsdWU6ICM0QkEzQzc7CiAgICAgICAgICAgIC0tbGlnaHQtc2t5OiAjN0VDOEUzOwogICAgICAgICAgICAtLXBhbGUtc2t5OiAjQjhFMEYwOwogICAgICAgICAgICAtLWNyZWFtOiAjRkRGOEYzOwogICAgICAgICAgICAtLXdhcm0td2hpdGU6ICNGRkZFRkE7CiAgICAgICAgICAgIC0tc29mdC1jb3JhbDogI0U4QTU5ODsKICAgICAgICAgICAgLS1jb3JhbDogI0Q0ODU3QTsKICAgICAgICAgICAgLS1nb2xkLXdhcm06ICNDOUEyMjc7CiAgICAgICAgICAgIC0tdGV4dC1kYXJrOiAjMUEyRTM1OwogICAgICAgICAgICAtLXRleHQtbWVkaXVtOiAjM0Q1QTY4OwogICAgICAgICAgICAtLXRleHQtbGlnaHQ6ICM2QjhBOTk7CiAgICAgICAgfQoKICAgICAgICAqIHsKICAgICAgICAgICAgbWFyZ2luOiAwOwogICAgICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIH0KCiAgICAgICAgYm9keSB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnTGF0bycsIHNhbnMtc2VyaWY7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWRlZXAtb2NlYW4pIDAlLCB2YXIoLS1vY2Vhbi1ibHVlKSA1MCUsIHZhcigtLXRlYWwpIDEwMCUpOwogICAgICAgICAgICBtaW4taGVpZ2h0OiAxMDB2aDsKICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgICAgIH0KCiAgICAgICAgLyogQ29udGFpbmVyIC0gVEFCTEVUIFJFU1BPTlNJVkUgKi8KICAgICAgICAuY29udGFpbmVyIHsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICB6LWluZGV4OiAxMDsKICAgICAgICAgICAgbWF4LXdpZHRoOiA0ODBweDsKICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgICAgICAgIHBhZGRpbmc6IDI1cHggMjBweDsKICAgICAgICAgICAgbWluLWhlaWdodDogMTAwdmg7CiAgICAgICAgfQoKICAgICAgICAvKiBUQUJMRVQgQlJFQUtQT0lOVCAqLwogICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA2MDBweCkgewogICAgICAgICAgICAuY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogNTgwcHg7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAzNXB4IDMwcHg7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA5MDBweCkgewogICAgICAgICAgICAuY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogNjgwcHg7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiA0NXB4IDQwcHg7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8qIENhcmQgKi8KICAgICAgICAuY2FyZCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHZhcigtLWNyZWFtKSAwJSwgdmFyKC0td2FybS13aGl0ZSkgMTAwJSk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDMwcHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDQwcHggMzBweDsKICAgICAgICAgICAgYm94LXNoYWRvdzogCiAgICAgICAgICAgICAgICAwIDI1cHggODBweCByZ2JhKDAsIDAsIDAsIDAuNCksCiAgICAgICAgICAgICAgICAwIDEwcHggMzBweCByZ2JhKDAsIDAsIDAsIDAuMiksCiAgICAgICAgICAgICAgICBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTsKICAgICAgICAgICAgYW5pbWF0aW9uOiBjYXJkRmxvYXQgMC44cyBlYXNlOwogICAgICAgIH0KCiAgICAgICAgQGtleWZyYW1lcyBjYXJkRmxvYXQgewogICAgICAgICAgICBmcm9tIHsgb3BhY2l0eTogMDsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDQwcHgpOyB9CiAgICAgICAgICAgIHRvIHsgb3BhY2l0eTogMTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyB9CiAgICAgICAgfQoKICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogNjAwcHgpIHsKICAgICAgICAgICAgLmNhcmQgewogICAgICAgICAgICAgICAgcGFkZGluZzogNTBweCA0MHB4OwogICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMzVweDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyogSGVhZGVyICovCiAgICAgICAgLmhlYWRlciB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDsKICAgICAgICB9CgogICAgICAgIC8qIFByb2ZpbGUgSWNvbiAtIEhlYXJ0L0dsb2JlIHJlcHJlc2VudGF0aW9uICovCiAgICAgICAgLnByb2ZpbGUtY29udGFpbmVyIHsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICB3aWR0aDogMTQwcHg7CiAgICAgICAgICAgIGhlaWdodDogMTQwcHg7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvIDI1cHg7CiAgICAgICAgfQoKICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogNjAwcHgpIHsKICAgICAgICAgICAgLnByb2ZpbGUtY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAxNjBweDsKICAgICAgICAgICAgICAgIGhlaWdodDogMTYwcHg7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC5wcm9maWxlLXJpbmcgewogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHRvcDogLThweDsKICAgICAgICAgICAgbGVmdDogLThweDsKICAgICAgICAgICAgd2lkdGg6IDE1NnB4OwogICAgICAgICAgICBoZWlnaHQ6IDE1NnB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLW9jZWFuLWJsdWUpLCB2YXIoLS1zb2Z0LWNvcmFsKSwgdmFyKC0tdGVhbCkpOwogICAgICAgICAgICBhbmltYXRpb246IHJpbmdQdWxzZSA0cyBlYXNlLWluLW91dCBpbmZpbml0ZTsKICAgICAgICB9CgogICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA2MDBweCkgewogICAgICAgICAgICAucHJvZmlsZS1yaW5nIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAxNzZweDsKICAgICAgICAgICAgICAgIGhlaWdodDogMTc2cHg7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIEBrZXlmcmFtZXMgcmluZ1B1bHNlIHsKICAgICAgICAgICAgMCUsIDEwMCUgeyBvcGFjaXR5OiAwLjg7IHRyYW5zZm9ybTogc2NhbGUoMSk7IH0KICAgICAgICAgICAgNTAlIHsgb3BhY2l0eTogMTsgdHJhbnNmb3JtOiBzY2FsZSgxLjAzKTsgfQogICAgICAgIH0KCiAgICAgICAgLnByb2ZpbGUtaWNvbiB7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgd2lkdGg6IDE0MHB4OwogICAgICAgICAgICBoZWlnaHQ6IDE0MHB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLW9jZWFuLWJsdWUpLCB2YXIoLS10ZWFsKSk7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBib3JkZXI6IDVweCBzb2xpZCB2YXIoLS13YXJtLXdoaXRlKTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCAxMHB4IDQwcHggcmdiYSgyNywgMTA3LCAxNDcsIDAuNCk7CiAgICAgICAgfQoKICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogNjAwcHgpIHsKICAgICAgICAgICAgLnByb2ZpbGUtaWNvbiB7CiAgICAgICAgICAgICAgICB3aWR0aDogMTYwcHg7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IDE2MHB4OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAucHJvZmlsZS1lbW9qaSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogNHJlbTsKICAgICAgICB9CgogICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA2MDBweCkgewogICAgICAgICAgICAucHJvZmlsZS1lbW9qaSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDQuNXJlbTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyogTmFtZSAqLwogICAgICAgIC5uYW1lIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdDb3Jtb3JhbnQgR2FyYW1vbmQnLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAyLjRyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1kZWVwLW9jZWFuKTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4OwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7CiAgICAgICAgfQoKICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogNjAwcHgpIHsKICAgICAgICAgICAgLm5hbWUgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAyLjhyZW07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC5jcmVkZW50aWFscyB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tb2NlYW4tYmx1ZSk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDFweDsKICAgICAgICB9CgogICAgICAgIC50aXRsZSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXRleHQtbWVkaXVtKTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4OwogICAgICAgICAgICBsaW5lLWhlaWdodDogMS41OwogICAgICAgIH0KCiAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDYwMHB4KSB7CiAgICAgICAgICAgIC50aXRsZSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLmxvY2F0aW9uIHsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tdGV4dC1saWdodCk7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBnYXA6IDZweDsKICAgICAgICB9CgogICAgICAgIC8qIE1pc3Npb24gU3RhdGVtZW50ICovCiAgICAgICAgLm1pc3Npb24gewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1kZWVwLW9jZWFuKSwgdmFyKC0tb2NlYW4tYmx1ZSkpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgICAgICAgICBwYWRkaW5nOiAyNXB4IDIwcHg7CiAgICAgICAgICAgIG1hcmdpbjogMjVweCAwOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB9CgogICAgICAgIC5taXNzaW9uOjpiZWZvcmUgewogICAgICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICB0b3A6IDA7CiAgICAgICAgICAgIGxlZnQ6IDA7CiAgICAgICAgICAgIHJpZ2h0OiAwOwogICAgICAgICAgICBib3R0b206IDA7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB3aWR0aD0nNjAnIGhlaWdodD0nNjAnIHZpZXdCb3g9JzAgMCA2MCA2MCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ2cgZmlsbD0nbm9uZScgZmlsbC1ydWxlPSdldmVub2RkJyUzRSUzQ2cgZmlsbD0nJTIzZmZmZmZmJyBmaWxsLW9wYWNpdHk9JzAuMDMnJTNFJTNDcGF0aCBkPSdNMzYgMzR2LTRoLTJ2NGgtNHYyaDR2NGgydi00aDR2LTJoLTR6bTAtMzBWMGgtMnY0aC00djJoNHY0aDJWNmg0VjRoLTR6TTYgMzR2LTRINHY0SDB2Mmg0djRoMnYtNGg0di0ySDZ6TTYgNFYwSDR2NEgwdjJoNHY0aDJWNmg0VjRINnonLyUzRSUzQy9nJTNFJTNDL2clM0UlM0Mvc3ZnJTNFIik7CiAgICAgICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgICB9CgogICAgICAgIC5taXNzaW9uLWljb24gewogICAgICAgICAgICBmb250LXNpemU6IDIuNXJlbTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICB6LWluZGV4OiAxOwogICAgICAgIH0KCiAgICAgICAgLm1pc3Npb24tdGV4dCB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnQ29ybW9yYW50IEdhcmFtb25kJywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS40cmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS13YXJtLXdoaXRlKTsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICB6LWluZGV4OiAxOwogICAgICAgIH0KCiAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDYwMHB4KSB7CiAgICAgICAgICAgIC5taXNzaW9uLXRleHQgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjZyZW07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8qIEJhZGdlcyAqLwogICAgICAgIC5iYWRnZXMgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBnYXA6IDEwcHg7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDI1cHg7CiAgICAgICAgfQoKICAgICAgICAuYmFkZ2UgewogICAgICAgICAgICBwYWRkaW5nOiA4cHggMTZweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjVweDsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjhyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjVweDsKICAgICAgICB9CgogICAgICAgIC5iYWRnZS1mZWxsb3cgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1nb2xkLXdhcm0pLCAjRDRCMzJBKTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWRlZXAtb2NlYW4pOwogICAgICAgIH0KCiAgICAgICAgLmJhZGdlLWF3YXJkIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc29mdC1jb3JhbCksIHZhcigtLWNvcmFsKSk7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS13YXJtLXdoaXRlKTsKICAgICAgICB9CgogICAgICAgIC5iYWRnZS1hdXRob3IgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS10ZWFsKSwgdmFyKC0tb2NlYW4tYmx1ZSkpOwogICAgICAgICAgICBjb2xvcjogdmFyKC0td2FybS13aGl0ZSk7CiAgICAgICAgfQoKICAgICAgICAvKiBEaXZpZGVyICovCiAgICAgICAgLmRpdmlkZXIgewogICAgICAgICAgICBoZWlnaHQ6IDJweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgdmFyKC0tc2t5LWJsdWUpLCB0cmFuc3BhcmVudCk7CiAgICAgICAgICAgIG1hcmdpbjogMjVweCAwOwogICAgICAgIH0KCiAgICAgICAgLyogU2VydmljZXMgKi8KICAgICAgICAuc2VydmljZXMgewogICAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpOwogICAgICAgICAgICBnYXA6IDE1cHg7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDI1cHg7CiAgICAgICAgfQoKICAgICAgICAuc2VydmljZS1pdGVtIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIH0KCiAgICAgICAgLnNlcnZpY2UtaWNvbiB7CiAgICAgICAgICAgIHdpZHRoOiA1NXB4OwogICAgICAgICAgICBoZWlnaHQ6IDU1cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXBhbGUtc2t5KSwgdmFyKC0tbGlnaHQtc2t5KSk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS41cmVtOwogICAgICAgICAgICBtYXJnaW46IDAgYXV0byAxMHB4OwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDRweCAxNXB4IHJnYmEoNzUsIDE2MywgMTk5LCAwLjMpOwogICAgICAgIH0KCiAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDYwMHB4KSB7CiAgICAgICAgICAgIC5zZXJ2aWNlLWljb24gewogICAgICAgICAgICAgICAgd2lkdGg6IDY1cHg7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IDY1cHg7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuOHJlbTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLnNlcnZpY2UtdGV4dCB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tdGV4dC1kYXJrKTsKICAgICAgICB9CgogICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA2MDBweCkgewogICAgICAgICAgICAuc2VydmljZS10ZXh0IHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyogQ29udGFjdCBTZWN0aW9uICovCiAgICAgICAgLmNvbnRhY3Qtc2VjdGlvbiB7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICAgICAgfQoKICAgICAgICAuY29udGFjdC1pdGVtIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgcGFkZGluZzogMTZweCAxOHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1wYWxlLXNreSksIHZhcigtLWxpZ2h0LXNreSkpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxNXB4OwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMnB4OwogICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1kZWVwLW9jZWFuKTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAgICAgfQoKICAgICAgICAuY29udGFjdC1pdGVtOmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0td2FybS13aGl0ZSk7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tb2NlYW4tYmx1ZSk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg1cHgpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDhweCAyNXB4IHJnYmEoMjcsIDEwNywgMTQ3LCAwLjIpOwogICAgICAgIH0KCiAgICAgICAgLmNvbnRhY3QtaXRlbTpsYXN0LWNoaWxkIHsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgICAgICB9CgogICAgICAgIC5jb250YWN0LWljb24gewogICAgICAgICAgICB3aWR0aDogNTJweDsKICAgICAgICAgICAgaGVpZ2h0OiA1MnB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1vY2Vhbi1ibHVlKSwgdmFyKC0tdGVhbCkpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjVyZW07CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTVweDsKICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgfQoKICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogNjAwcHgpIHsKICAgICAgICAgICAgLmNvbnRhY3QtaWNvbiB7CiAgICAgICAgICAgICAgICB3aWR0aDogNThweDsKICAgICAgICAgICAgICAgIGhlaWdodDogNThweDsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS43cmVtOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAuY29udGFjdC1kZXRhaWxzIHsKICAgICAgICAgICAgZmxleDogMTsKICAgICAgICB9CgogICAgICAgIC5jb250YWN0LWxhYmVsIHsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjhyZW07CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LW1lZGl1bSk7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjVweDsKICAgICAgICB9CgogICAgICAgIC5jb250YWN0LXZhbHVlIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjA1cmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tZGVlcC1vY2Vhbik7CiAgICAgICAgfQoKICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogNjAwcHgpIHsKICAgICAgICAgICAgLmNvbnRhY3QtdmFsdWUgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjE1cmVtOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAuY29udGFjdC1hcnJvdyB7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1vY2Vhbi1ibHVlKTsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjRyZW07CiAgICAgICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2U7CiAgICAgICAgfQoKICAgICAgICAuY29udGFjdC1pdGVtOmhvdmVyIC5jb250YWN0LWFycm93IHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDVweCk7CiAgICAgICAgfQoKICAgICAgICAvKiBBY3Rpb24gQnV0dG9ucyAqLwogICAgICAgIC5hY3Rpb24tYnV0dG9ucyB7CiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjsKICAgICAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgICAgICBtYXJnaW4tdG9wOiAyMHB4OwogICAgICAgIH0KCiAgICAgICAgLmFjdGlvbi1idG4gewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiAxMHB4OwogICAgICAgICAgICBwYWRkaW5nOiAxNnB4IDIwcHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDE1cHg7CiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgIH0KCiAgICAgICAgLmJ0bi1wcmltYXJ5IHsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tb2NlYW4tYmx1ZSksIHZhcigtLXRlYWwpKTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXdhcm0td2hpdGUpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDVweCAyMHB4IHJnYmEoMjcsIDEwNywgMTQ3LCAwLjQpOwogICAgICAgIH0KCiAgICAgICAgLmJ0bi1wcmltYXJ5OmhvdmVyIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDEwcHggMzBweCByZ2JhKDI3LCAxMDcsIDE0NywgMC41KTsKICAgICAgICB9CgogICAgICAgIC5idG4tc2Vjb25kYXJ5IHsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc29mdC1jb3JhbCksIHZhcigtLWNvcmFsKSk7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS13YXJtLXdoaXRlKTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCA1cHggMjBweCByZ2JhKDIxMiwgMTMzLCAxMjIsIDAuNCk7CiAgICAgICAgfQoKICAgICAgICAuYnRuLXNlY29uZGFyeTpob3ZlciB7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtM3B4KTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCAxMHB4IDMwcHggcmdiYSgyMTIsIDEzMywgMTIyLCAwLjUpOwogICAgICAgIH0KCiAgICAgICAgLyogQm9va3MgU2VjdGlvbiAqLwogICAgICAgIC5ib29rcy1zZWN0aW9uIHsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMjVweDsKICAgICAgICAgICAgcGFkZGluZy10b3A6IDI1cHg7CiAgICAgICAgICAgIGJvcmRlci10b3A6IDJweCBzb2xpZCB2YXIoLS1wYWxlLXNreSk7CiAgICAgICAgfQoKICAgICAgICAuYm9va3MtdGl0bGUgewogICAgICAgICAgICBmb250LWZhbWlseTogJ0Nvcm1vcmFudCBHYXJhbW9uZCcsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDEuM3JlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWRlZXAtb2NlYW4pOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgICAgICAgfQoKICAgICAgICAuYm9va3MtZ3JpZCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjsKICAgICAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgIH0KCiAgICAgICAgLmJvb2staXRlbSB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXBhbGUtc2t5KSwgdmFyKC0tbGlnaHQtc2t5KSk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDE1cHg7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tZGVlcC1vY2Vhbik7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgICAgIH0KCiAgICAgICAgLmJvb2staXRlbTpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXdhcm0td2hpdGUpOwogICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWdvbGQtd2FybSk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtM3B4KTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCA4cHggMjVweCByZ2JhKDIwMSwgMTYyLCAzOSwgMC4yKTsKICAgICAgICB9CgogICAgICAgIC5ib29rLWljb24gewogICAgICAgICAgICBmb250LXNpemU6IDJyZW07CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgICAgICB9CgogICAgICAgIC5ib29rLXRpdGxlIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdDb3Jtb3JhbnQgR2FyYW1vbmQnLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tZGVlcC1vY2Vhbik7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM7CiAgICAgICAgfQoKICAgICAgICAuYm9vay1iYWRnZSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZ29sZC13YXJtKTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWRlZXAtb2NlYW4pOwogICAgICAgICAgICBwYWRkaW5nOiAzcHggOHB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgICAgICAgICBmb250LXNpemU6IDAuNjVyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDhweDsKICAgICAgICB9CgogICAgICAgIC8qIENhcmQgQWN0aW9ucyAqLwogICAgICAgIC5jYXJkLWFjdGlvbnMgewogICAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7CiAgICAgICAgICAgIGdhcDogMTJweDsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMjVweDsKICAgICAgICAgICAgcGFkZGluZy10b3A6IDIwcHg7CiAgICAgICAgICAgIGJvcmRlci10b3A6IDJweCBzb2xpZCB2YXIoLS1wYWxlLXNreSk7CiAgICAgICAgfQoKICAgICAgICAuY2FyZC1hY3Rpb24tYnRuIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogOHB4OwogICAgICAgICAgICBwYWRkaW5nOiAxOHB4IDE1cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXBhbGUtc2t5KTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTVweDsKICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tZGVlcC1vY2Vhbik7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgfQoKICAgICAgICAuY2FyZC1hY3Rpb24tYnRuOmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0td2FybS13aGl0ZSk7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tb2NlYW4tYmx1ZSk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtM3B4KTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCA4cHggMjVweCByZ2JhKDI3LCAxMDcsIDE0NywgMC4yKTsKICAgICAgICB9CgogICAgICAgIC5jYXJkLWFjdGlvbi1pY29uIHsKICAgICAgICAgICAgd2lkdGg6IDUwcHg7CiAgICAgICAgICAgIGhlaWdodDogNTBweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tb2NlYW4tYmx1ZSksIHZhcigtLXRlYWwpKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjRyZW07CiAgICAgICAgfQoKICAgICAgICAuY2FyZC1hY3Rpb24tdGV4dCB7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWRlZXAtb2NlYW4pOwogICAgICAgIH0KCiAgICAgICAgLnFyLWxpbmsgewogICAgICAgICAgICBncmlkLWNvbHVtbjogMSAvIC0xOwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgICAgICBnYXA6IDE1cHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDE2cHggMThweDsKICAgICAgICB9CgogICAgICAgIC5xci1saW5rIC5jYXJkLWFjdGlvbi1pY29uIHsKICAgICAgICAgICAgd2lkdGg6IDQ4cHg7CiAgICAgICAgICAgIGhlaWdodDogNDhweDsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjNyZW07CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXNvZnQtY29yYWwpLCB2YXIoLS1jb3JhbCkpOwogICAgICAgIH0KCiAgICAgICAgLnFyLWxpbmstY29udGVudCB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgICAgfQoKICAgICAgICAucXItbGluay1jb250ZW50IC5jYXJkLWFjdGlvbi10ZXh0IHsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMnB4OwogICAgICAgIH0KCiAgICAgICAgLnFyLWxpbmstY29udGVudCAuY2FyZC1hY3Rpb24tc3VidGV4dCB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXRleHQtbWVkaXVtKTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICB9CgogICAgICAgIC8qIEZvb3RlciAqLwogICAgICAgIC5mb290ZXIgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIHBhZGRpbmc6IDMwcHggMjBweCAxNXB4OwogICAgICAgIH0KCiAgICAgICAgLmZvb3Rlci1jb21wYW55IHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdDb3Jtb3JhbnQgR2FyYW1vbmQnLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjJyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS13YXJtLXdoaXRlKTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogM3B4OwogICAgICAgIH0KCiAgICAgICAgLmZvb3Rlci10YWdsaW5lIHsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1saWdodC1za3kpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgICAgIH0KCiAgICAgICAgLmZvb3Rlci1wb3dlcmVkIHsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tbGlnaHQtc2t5KTsKICAgICAgICB9CgogICAgICAgIC5mb290ZXItcG93ZXJlZCBhIHsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXBhbGUtc2t5KTsKICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIH0KCiAgICAgICAgLmZvb3Rlci1wb3dlcmVkIGE6aG92ZXIgewogICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgICAgICB9CgogICAgICAgIC5mb290ZXItY29weXJpZ2h0IHsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjhyZW07CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1za3ktYmx1ZSk7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDhweDsKICAgICAgICAgICAgb3BhY2l0eTogMC44OwogICAgICAgIH0KCiAgICAgICAgLyogUmVzcG9uc2l2ZSBBZGp1c3RtZW50cyAqLwogICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAzODBweCkgewogICAgICAgICAgICAuY2FyZCB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAzMHB4IDIwcHg7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC5uYW1lIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMnJlbTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLnNlcnZpY2VzIHsKICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOwogICAgICAgICAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAuc2VydmljZS1pdGVtIHsKICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICAgICAgZ2FwOiAxNXB4OwogICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLnNlcnZpY2UtaWNvbiB7CiAgICAgICAgICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC5hY3Rpb24tYnV0dG9ucywKICAgICAgICAgICAgLmNhcmQtYWN0aW9ucywKICAgICAgICAgICAgLmJvb2tzLWdyaWQgewogICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC5xci1saW5rIHsKICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KCiAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICAgIAogICAgICAgIDwhLS0gTWFpbiBDYXJkIC0tPgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQiPgogICAgICAgICAgICAKICAgICAgICAgICAgPCEtLSBIZWFkZXIgLS0+CiAgICAgICAgICAgIDxoZWFkZXIgY2xhc3M9ImhlYWRlciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9maWxlLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvZmlsZS1yaW5nIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9maWxlLWljb24iPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHJvZmlsZS1lbW9qaSI+8J+SmTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8aDEgY2xhc3M9Im5hbWUiPkRyLiBCYXJiYXJhIFN0cm91ZDwvaDE+CiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iY3JlZGVudGlhbHMiPlBoRDwvcD4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0aXRsZSI+Q2xpbmljYWwgJiBEZXZlbG9wbWVudGFsIFBzeWNob2xvZ2lzdDxicj5JbmZhbnQgTWVudGFsIEhlYWx0aCBTcGVjaWFsaXN0PC9wPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImxvY2F0aW9uIj7wn5ONIFBhbG8gQWx0bywgQ2FsaWZvcm5pYTwvcD4KICAgICAgICAgICAgPC9oZWFkZXI+CgogICAgICAgICAgICA8IS0tIE1pc3Npb24gU3RhdGVtZW50IC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtaXNzaW9uIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1pc3Npb24taWNvbiI+8J+MjfCfkpk8L2Rpdj4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJtaXNzaW9uLXRleHQiPiJDaGFuZ2luZyB0aGUgV29ybGQg4oCTPGJyPk9uZSBSZWxhdGlvbnNoaXAgYXQgYSBUaW1lIjwvcD4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8IS0tIEJhZGdlcyAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmFkZ2VzIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJiYWRnZSBiYWRnZS1mZWxsb3ciPvCfjpMgWkVSTyBUTyBUSFJFRSBGZWxsb3c8L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYmFkZ2UgYmFkZ2UtYXdhcmQiPvCfj4YgQnJ1Y2UgRC4gUGVycnkgQXdhcmQ8L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYmFkZ2UgYmFkZ2UtYXV0aG9yIj7wn5OaIEJlc3QtU2VsbGluZyBBdXRob3I8L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGl2aWRlciI+PC9kaXY+CgogICAgICAgICAgICA8IS0tIFNlcnZpY2VzIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZXJ2aWNlcyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZXJ2aWNlLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlcnZpY2UtaWNvbiI+8J+OpDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlcnZpY2UtdGV4dCI+VHJhaW5pbmc8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VydmljZS1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZXJ2aWNlLWljb24iPvCfkqE8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZXJ2aWNlLXRleHQiPkNvbnN1bHRpbmc8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VydmljZS1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZXJ2aWNlLWljb24iPuKcje+4jzwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlcnZpY2UtdGV4dCI+QXV0aG9yPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJkaXZpZGVyIj48L2Rpdj4KCiAgICAgICAgICAgIDwhLS0gQ29udGFjdCBTZWN0aW9uIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWN0LXNlY3Rpb24iPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5kcmJhcmJhcmFzdHJvdWQuY29tIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImNvbnRhY3QtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGFjdC1pY29uIj7wn4yQPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGFjdC1kZXRhaWxzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGFjdC1sYWJlbCI+V2Vic2l0ZTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWN0LXZhbHVlIj5EckJhcmJhcmFTdHJvdWQuY29tPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbnRhY3QtYXJyb3ciPuKGkjwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGEgaHJlZj0ibWFpbHRvOmluZm9AZHJiYXJiYXJhc3Ryb3VkLmNvbSIgY2xhc3M9ImNvbnRhY3QtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGFjdC1pY29uIj7inInvuI88L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWN0LWRldGFpbHMiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWN0LWxhYmVsIj5FbWFpbDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWN0LXZhbHVlIj5Db250YWN0IERyLiBTdHJvdWQ8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29udGFjdC1hcnJvdyI+4oaSPC9zcGFuPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vaW4vZHItYmFyYmFyYS1zdHJvdWQtMDYyMTYyMjIwLyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJjb250YWN0LWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhY3QtaWNvbiI+8J+SvDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhY3QtZGV0YWlscyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhY3QtbGFiZWwiPkxpbmtlZEluPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhY3QtdmFsdWUiPkNvbm5lY3QgUHJvZmVzc2lvbmFsbHk8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29udGFjdC1hcnJvdyI+4oaSPC9zcGFuPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9ucyI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0ibWFpbHRvOmluZm9AZHJiYXJiYXJhc3Ryb3VkLmNvbSIgY2xhc3M9ImFjdGlvbi1idG4gYnRuLXByaW1hcnkiPgogICAgICAgICAgICAgICAgICAgICAgICDinInvuI8gRW1haWwKICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuZHJiYXJiYXJhc3Ryb3VkLmNvbSIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJhY3Rpb24tYnRuIGJ0bi1zZWNvbmRhcnkiPgogICAgICAgICAgICAgICAgICAgICAgICDwn4yQIFdlYnNpdGUKICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8IS0tIEJvb2tzIFNlY3Rpb24gLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvb2tzLXNlY3Rpb24iPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJib29rcy10aXRsZSI+8J+TmiBQdWJsaXNoZWQgV29ya3M8L2gzPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm9va3MtZ3JpZCI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmNvbS9JbnRlbnRpb25hbC1MaXZpbmctZmluZGluZy1zdWNjZXNzZnVsLXJlbGF0aW9uc2hpcHMvZHAvMTUwMDcxODM2WCIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJib29rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib29rLWljb24iPvCfk5Y8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm9vay10aXRsZSI+SW50ZW50aW9uYWwgTGl2aW5nPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJib29rLWJhZGdlIj7irZAgQkVTVCBTRUxMRVI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5jb20vcz9rPWJhcmJhcmErc3Ryb3VkK2hvdyt0byttZWFzdXJlK2ErcmVsYXRpb25zaGlwIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImJvb2staXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvb2staWNvbiI+8J+TmDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib29rLXRpdGxlIj5Ib3cgdG8gTWVhc3VyZSBhIFJlbGF0aW9uc2hpcDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDwhLS0gQ2FyZCBBY3Rpb25zIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWFjdGlvbnMiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImNhcmQtYWN0aW9uLWJ0biIgb25jbGljaz0iYWxlcnQoJ0Rvd25sb2FkIGNvbnRhY3QgZmVhdHVyZSBjb21pbmcgc29vbiEnKSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1hY3Rpb24taWNvbiI+4qyH77iPPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNhcmQtYWN0aW9uLXRleHQiPkRvd25sb2FkIENhcmQ8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iY2FyZC1hY3Rpb24tYnRuIiBvbmNsaWNrPSJuYXZpZ2F0b3Iuc2hhcmUgPyBuYXZpZ2F0b3Iuc2hhcmUoe3RpdGxlOiAnRHIuIEJhcmJhcmEgU3Ryb3VkLCBQaEQnLCB0ZXh0OiAnQ2hhbmdpbmcgdGhlIFdvcmxkIOKAkyBPbmUgUmVsYXRpb25zaGlwIGF0IGEgVGltZScsIHVybDogd2luZG93LmxvY2F0aW9uLmhyZWZ9KSA6IGFsZXJ0KCdTaGFyZSB0aGlzIGxpbms6ICcgKyB3aW5kb3cubG9jYXRpb24uaHJlZikiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtYWN0aW9uLWljb24iPvCfk6Q8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY2FyZC1hY3Rpb24tdGV4dCI+U2hhcmUgQ2FyZDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vcS0wLmNvL2RyYmFyYmFyYXN0cm91ZCIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJjYXJkLWFjdGlvbi1idG4gcXItbGluayI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1hY3Rpb24taWNvbiI+8J+TsTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InFyLWxpbmstY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjYXJkLWFjdGlvbi10ZXh0Ij5UYXAgZm9yIFFSIENvZGU8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjYXJkLWFjdGlvbi1zdWJ0ZXh0Ij5TY2FuIHRvIHNhdmUgY29udGFjdCBpbnN0YW50bHk8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAKICAgICAgICA8L2Rpdj4KCiAgICAgICAgPCEtLSBGb290ZXIgLS0+CiAgICAgICAgPGZvb3RlciBjbGFzcz0iZm9vdGVyIj4KICAgICAgICAgICAgPHAgY2xhc3M9ImZvb3Rlci1jb21wYW55Ij5CYXJiYXJhIFN0cm91ZCBUcmFpbmluZyAmIENvbnN1bHRhdGlvbjwvcD4KICAgICAgICAgICAgPHAgY2xhc3M9ImZvb3Rlci10YWdsaW5lIj5DaGFuZ2luZyB0aGUgV29ybGQg4oCTIE9uZSBSZWxhdGlvbnNoaXAgYXQgYSBUaW1lPC9wPgogICAgICAgICAgICAKICAgICAgICAgICAgPHAgY2xhc3M9ImZvb3Rlci1wb3dlcmVkIj4KICAgICAgICAgICAgICAgIFBvd2VyZWQgYnkgPGEgaHJlZj0iaHR0cHM6Ly9icmFuZGhhbmRzaGFrZS5jb20iIHRhcmdldD0iX2JsYW5rIj5CcmFuZCBIYW5kc2hha2U8L2E+CiAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPHAgY2xhc3M9ImZvb3Rlci1jb3B5cmlnaHQiPgogICAgICAgICAgICAgICAgwqkgMjAyNiBEci4gQmFyYmFyYSBTdHJvdWQsIFBoRAogICAgICAgICAgICA8L3A+CiAgICAgICAgPC9mb290ZXI+CiAgICAgICAgCiAgICA8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+","embed":""}
💙
Dr. Barbara Stroud
PhD
Clinical & Developmental Psychologist
Infant Mental Health Specialist
📍 Palo Alto, California
🌍💙
"Changing the World –
One Relationship at a Time"
🎓 ZERO TO THREE Fellow
🏆 Bruce D. Perry Award
📚 Best-Selling Author
🎤
Training
💡
Consulting
✍️
Author