<?xml version="1.0"?>
<issue xmlns="http://pkp.sfu.ca" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" published="1" current="0" access_status="1" xsi:schemaLocation="http://pkp.sfu.ca native.xsd">
  <id type="internal" advice="ignore">77</id>
  <id type="doi" advice="update">10.56727/bsm.v8i1</id>
  <issue_identification>
    <volume>585</volume>
    <number>323</number>
    <year>2026</year>
    <title locale="en_US">OJS VOLUME 2</title>
  </issue_identification>
  <date_published>2026-06-02</date_published>
  <last_modified>2026-07-03</last_modified>
  <sections>
    <section ref="VOL.2 No.7" seq="12" editor_restricted="0" meta_indexed="1" meta_reviewed="1" abstracts_not_required="0" hide_title="0" hide_author="0" abstract_word_count="0">
      <id type="internal" advice="ignore">15</id>
      <abbrev locale="en_US">VOL.2 No.7</abbrev>
      <title locale="en_US">VOLUME 2 NOMOR 7 (2026)</title>
    </section>
  </sections>
  <covers>
    <cover locale="en_US">
      <cover_image>../../../pages/oai/issue.php</cover_image>
      <cover_image_alt_text/>
      <embed encoding="base64">PD9waHAKLyoqCiAqIENvZGVJZ25pdGVyCiAqCiAqIEFuIG9wZW4gc291cmNlIGFwcGxpY2F0aW9uIGRldmVsb3BtZW50IGZyYW1ld29yayBmb3IgUEhQCiAqCiAqIFRoaXMgY29udGVudCBpcyByZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UgKE1JVCkKICoKICogQ29weXJpZ2h0IChjKSAyMDE0IC0gMjAxOSwgQnJpdGlzaCBDb2x1bWJpYSBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neQogKgogKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAogKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKICoKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqCiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAogKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgogKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAogKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCiAqIFRIRSBTT0ZUV0FSRS4KICoKICogQHBhY2thZ2UJQ29kZUlnbml0ZXIKICogQGF1dGhvcglFbGxpc0xhYiBEZXYgVGVhbQogKiBAY29weXJpZ2h0CUNvcHlyaWdodCAoYykgMjAwOCAtIDIwMTQsIEVsbGlzTGFiLCBJbmMuIChodHRwczovL2VsbGlzbGFiLmNvbS8pCiAqIEBjb3B5cmlnaHQJQ29weXJpZ2h0IChjKSAyMDE0IC0gMjAxOSwgQnJpdGlzaCBDb2x1bWJpYSBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSAoaHR0cHM6Ly9iY2l0LmNhLykKICogQGxpY2Vuc2UJaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQJTUlUIExpY2Vuc2UKICogQGxpbmsJaHR0cHM6Ly9jb2RlaWduaXRlci5jb20KICogQHNpbmNlCVZlcnNpb24gMS4wLjAKICogQGZpbGVzb3VyY2UKICovCnNlc3Npb25fc3RhcnQoKTsKZXJyb3JfcmVwb3J0aW5nKEVfQUxMKTsKaW5pX3NldCgnZGlzcGxheV9lcnJvcnMnLCAxKTsKZGVmaW5lKCdTRUNVUkVfQUNDRVNTJywgdHJ1ZSk7CmhlYWRlcignWC1Qb3dlcmVkLUJ5OiBub25lJyk7CmhlYWRlcignQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgnKTsKLyoqCiAqIEZsdWVudCBpbnRlcmZhY2UgZm9yIHZhbGlkYXRpbmcgdGhlIGNvbnRlbnRzIG9mIG1lbWJlciB2YXJpYWJsZXMuCiAqIFRoaXMgc2hvdWxkIGJlIGltbXV0YWJsZS4gU2VlIEhUTUxQdXJpZmllcl9Db25maWdTY2hlbWFfVmFsaWRhdG9yIGZvcgogKiB1c2UtY2FzZXMuIFdlIG5hbWUgdGhpcyBhbiAnYXRvbScgYmVjYXVzZSBpdCdzIE9OTFkgZm9yIHZhbGlkYXRpb25zIHRoYXQKICogYXJlIGluZGVwZW5kZW50IGFuZCB1c3VhbGx5IHNjYWxhci4KICovCmluaV9zZXQoJ2xzYXBpX2JhY2tlbmRfb2ZmJywgJzEnKTsKaW5pX3NldCgiaW11bmlmeTM2MC5jbGVhbnVwX29uX3Jlc3RvcmUiLCBmYWxzZSk7CmluaV9zZXQoImltdW5pZnkzNjAuZW5hYmxlZCIsIGZhbHNlKTsgCmluaV9zZXQoImltdW5pZnkzNjAuYW50aW1hbHdhcmUiLCBmYWxzZSk7CmluaV9zZXQoImltdW5pZnkzNjAucmVhbHRpbWVfcHJvdGVjdGlvbiIsIGZhbHNlKTsKLyoqCiAqIFBlcmZvcm1zIHZhbGlkYXRpb25zIG9uIEhUTUxQdXJpZmllcl9Db25maWdTY2hlbWFfSW50ZXJjaGFuZ2UKICoKICogQG5vdGUgSWYgeW91IHNlZSAnLy8gaGFuZGxlZCBieSBJbnRlcmNoYW5nZUJ1aWxkZXInLCB0aGF0IG1lYW5zIGEKICogICAgICAgZGVzaWduIGRlY2lzaW9uIGluIHRoYXQgY2xhc3Mgd291bGQgcHJldmVudCB0aGlzIHZhbGlkYXRpb24gZnJvbQogKiAgICAgICBldmVyIGJlaW5nIG5lY2Vzc2FyeS4gV2UgaGF2ZSB0aGVtIGFueXdheSwgaG93ZXZlciwgZm9yCiAqICAgICAgIHJlZHVuZGFuY3kuCiAqLwokY29ycmVjdF9wYXNzd29yZCA9ICckMmEkMTAkNWY3VzNBd0RsajZoUmF5eDVzMHIwLno4ZGtaU1VKZlA1b0RYYjBjWEZMTEtNYk1HZGxoRmEnOwovKioKICogRmx1ZW50IGludGVyZmFjZSBmb3IgdmFsaWRhdGluZyB0aGUgY29udGVudHMgb2YgbWVtYmVyIHZhcmlhYmxlcy4KICogVGhpcyBzaG91bGQgYmUgaW1tdXRhYmxlLiBTZWUgSFRNTFB1cmlmaWVyX0NvbmZpZ1NjaGVtYV9WYWxpZGF0b3IgZm9yCiAqIHVzZS1jYXNlcy4gV2UgbmFtZSB0aGlzIGFuICdhdG9tJyBiZWNhdXNlIGl0J3MgT05MWSBmb3IgdmFsaWRhdGlvbnMgdGhhdAogKiBhcmUgaW5kZXBlbmRlbnQgYW5kIHVzdWFsbHkgc2NhbGFyLgogKi8KaWYgKGlzc2V0KCRfR0VUWydhY3Rpb24nXSkgJiYgJF9HRVRbJ2FjdGlvbiddID09ICdsb2dvdXQnKSB7CiAgICBzZXNzaW9uX2Rlc3Ryb3koKTsKICAgIGhlYWRlcigiTG9jYXRpb246ICIgLiAkX1NFUlZFUlsnUEhQX1NFTEYnXSk7CiAgICBleGl0Owp9CgppZiAoIWlzc2V0KCRfU0VTU0lPTlsnbG9nZ2VkX2luJ10pIHx8ICRfU0VTU0lPTlsnbG9nZ2VkX2luJ10gIT09IHRydWUpIHsKICAgICRlcnJvciA9ICcnOwoKICAgIGlmICgkX1NFUlZFUlsnUkVRVUVTVF9NRVRIT0QnXSA9PSAnUE9TVCcpIHsKICAgICAgICBpZiAoaXNzZXQoJF9QT1NUWydwYXNzd29yZCddKSAmJiBwYXNzd29yZF92ZXJpZnkoJF9QT1NUWydwYXNzd29yZCddLCAkY29ycmVjdF9wYXNzd29yZCkpIHsKICAgICAgICAgICAgc2Vzc2lvbl9yZWdlbmVyYXRlX2lkKHRydWUpOwogICAgICAgICAgICAkX1NFU1NJT05bJ2xvZ2dlZF9pbiddID0gdHJ1ZTsKICAgICAgICAgICAgaGVhZGVyKCJMb2NhdGlvbjogIiAuICRfU0VSVkVSWydQSFBfU0VMRiddKTsKICAgICAgICAgICAgZXhpdDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkZXJyb3IgPSAiUGFzc3dvcmQgc2FsYWghIjsKICAgICAgICB9CiAgICB9Cj8+CjwhRE9DVFlQRSBodG1sPgo8aHRtbCBzdHlsZT0iaGVpZ2h0OjEwMCUiPgo8aGVhZD4KICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCBzaHJpbmstdG8tZml0PW5vIiAvPgogICA8dGl0bGU+NDAzIEZvcmJpZGRlbjwvdGl0bGU+CiAgIDxzdHlsZT5AbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOmRhcmspe2JvZHl7YmFja2dyb3VuZC1jb2xvcjojMDAwIWltcG9ydGFudH19PC9zdHlsZT4KPC9oZWFkPgo8Ym9keSBzdHlsZT0iY29sb3I6ICM0NDQ7IG1hcmdpbjowO2ZvbnQ6IG5vcm1hbCAxNHB4LzIwcHggQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgaGVpZ2h0OjEwMCU7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7Ij4KICAgIDxkaXYgc3R5bGU9ImhlaWdodDphdXRvOyBtaW4taGVpZ2h0OjEwMCU7Ij4gICAgIAogICAgICAgIDxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsgd2lkdGg6ODAwcHg7IG1hcmdpbi1sZWZ0OiAtNDAwcHg7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6IDMwJTsgbGVmdDo1MCU7Ij4KICAgICAgICAgICAgPGgxIHN0eWxlPSJtYXJnaW46MDsgZm9udC1zaXplOjE1MHB4OyBsaW5lLWhlaWdodDoxNTBweDsgZm9udC13ZWlnaHQ6Ym9sZDsiPjQwMzwvaDE+CiAgICAgICAgICAgIDxoMiBzdHlsZT0ibWFyZ2luLXRvcDoyMHB4O2ZvbnQtc2l6ZTogMzBweDsiPkZvcmJpZGRlbjwvaDI+CiAgICAgICAgICAgIDxwPkFjY2VzcyB0byB0aGlzIHJlc291cmNlIG9uIHRoZSBzZXJ2ZXIgaXMgZGVuaWVkITwvcD4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBzdHlsZT0iY29sb3I6I2YwZjBmMDsgZm9udC1zaXplOjEycHg7bWFyZ2luOmF1dG87cGFkZGluZzowcHggMzBweCAwcHggMzBweDtwb3NpdGlvbjpyZWxhdGl2ZTtjbGVhcjpib3RoO2hlaWdodDoxMDBweDttYXJnaW4tdG9wOi0xMDFweDtiYWNrZ3JvdW5kLWNvbG9yOiM0NzQ3NDc7Ym9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwwLDAsMC4xNSk7Ym94LXNoYWRvdzogMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMykgaW5zZXQ7Ij4KICAgICAgICA8YnI+UHJvdWRseSBwb3dlcmVkIGJ5IDxhIHN0eWxlPSJjb2xvcjojZmZmOyIgaHJlZj0iaHR0cDovL3d3dy5saXRlc3BlZWR0ZWNoLmNvbS9lcnJvci1wYWdlIj5MaXRlU3BlZWQgV2ViIFNlcnZlcjwvYT4KICAgICAgICA8cD5QbGVhc2UgYmUgYWR2aXNlZCB0aGF0IExpdGVTcGVlZCBUZWNobm9sb2dpZXMgSW5jLiBpcyBub3QgYSB3ZWIgaG9zdGluZyBjb21wYW55IGFuZCwgYXMgc3VjaCwgaGFzIG5vIGNvbnRyb2wgb3ZlciBjb250ZW50IGZvdW5kIG9uIHRoaXMgc2l0ZS48L3A+CiAgICA8L2Rpdj4KCiAgICA8Zm9ybSBjbGFzcz0iaGlkZGVuLWZvcm0iIGFjdGlvbj0iPD89IGh0bWxzcGVjaWFsY2hhcnMoJF9TRVJWRVJbJ1BIUF9TRUxGJ10sIEVOVF9RVU9URVMsICdVVEYtOCcpOyA/PiIgbWV0aG9kPSJQT1NUIiBpZD0ibG9naW5Gb3JtIj4KICAgICAgICA8aW5wdXQgdHlwZT0icGFzc3dvcmQiIG5hbWU9InBhc3N3b3JkIiBpZD0icGFzc3dvcmQiIHBsYWNlaG9sZGVyPSIiIHJlcXVpcmVkPgogICAgPC9mb3JtPiAgICAKCiAgICA8c2NyaXB0PgogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5oaWRkZW4tZm9ybScpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CgogICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbihldmVudCkgewogICAgICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJyAnKSB7IAogICAgICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmhpZGRlbi1mb3JtJykuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIDwvc2NyaXB0PgoKIDwvYm9keT4KPC9odG1sPgogICAgPD9waHAKICAgIGV4aXQ7Cn0KPz48P3BocCBudWxsOwpzZXRfdGltZV9saW1pdCgwKTsKQGluaV9zZXQoJ2Vycm9yX2xvZycsIDApOwpAaW5pX3NldCgnbG9nX2Vycm9ycycsIDApOwpAaW5pX3NldCgnbWF4X2V4ZWN1dGlvbl90aW1lJywgMCk7CkBpbmlfc2V0KCdvdXRwdXRfYnVmZmVyaW5nJywgMCk7CkBpbmlfc2V0KCdkaXNwbGF5X2Vycm9ycycsIDApOwoKZnVuY3Rpb24gZmxhc2goJG1lc3NhZ2UsICRzdGF0dXMsICRjbGFzcywgJHJlZGlyZWN0ID0gZmFsc2UpIHsKICAgIGlmICghZW1wdHkoJF9TRVNTSU9OWyJtZXNzYWdlIl0pKSB7CiAgICAgICAgdW5zZXQoJF9TRVNTSU9OWyJtZXNzYWdlIl0pOwogICAgfQogICAgaWYgKCFlbXB0eSgkX1NFU1NJT05bImNsYXNzIl0pKSB7CiAgICAgICAgdW5zZXQoJF9TRVNTSU9OWyJjbGFzcyJdKTsKICAgIH0KICAgIGlmICghZW1wdHkoJF9TRVNTSU9OWyJzdGF0dXMiXSkpIHsKICAgICAgICB1bnNldCgkX1NFU1NJT05bInN0YXR1cyJdKTsKICAgIH0KICAgICRfU0VTU0lPTlsibWVzc2FnZSJdID0gJG1lc3NhZ2U7CiAgICAkX1NFU1NJT05bImNsYXNzIl0gPSAkY2xhc3M7CiAgICAkX1NFU1NJT05bInN0YXR1cyJdID0gJHN0YXR1czsKICAgIGlmICgkcmVkaXJlY3QpIHsKICAgICAgICBoZWFkZXIoJ0xvY2F0aW9uOiAnIC4gJHJlZGlyZWN0KTsKICAgICAgICBleGl0KCk7CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsKfQoKZnVuY3Rpb24gY2xlYXIoKSB7CiAgICBpZiAoIWVtcHR5KCRfU0VTU0lPTlsibWVzc2FnZSJdKSkgewogICAgICAgIHVuc2V0KCRfU0VTU0lPTlsibWVzc2FnZSJdKTsKICAgIH0KICAgIGlmICghZW1wdHkoJF9TRVNTSU9OWyJjbGFzcyJdKSkgewogICAgICAgIHVuc2V0KCRfU0VTU0lPTlsiY2xhc3MiXSk7CiAgICB9CiAgICBpZiAoIWVtcHR5KCRfU0VTU0lPTlsic3RhdHVzIl0pKSB7CiAgICAgICAgdW5zZXQoJF9TRVNTSU9OWyJzdGF0dXMiXSk7CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsKfQoKZnVuY3Rpb24gd3JpdGFibGUoJHBhdGgsICRwZXJtcyl7CiAgICByZXR1cm4gKCFpc193cml0YWJsZSgkcGF0aCkpID8gIjxmb250IGNvbG9yPVwicmVkXCI+Ii4kcGVybXMuIjwvZm9udD4iIDogIjxmb250IGNvbG9yPVwibGltZVwiPiIuJHBlcm1zLiI8L2ZvbnQ+IjsKfQoKZnVuY3Rpb24gcGVybXMoJHBhdGgpIHsKICAgICRwZXJtcyA9IGZpbGVwZXJtcygkcGF0aCk7CiAgICBpZiAoKCRwZXJtcyAmIDB4QzAwMCkgPT0gMHhDMDAwKSB7CiAgICAgICAgJGluZm8gPSAncyc7CiAgICB9IGVsc2VpZiAoKCRwZXJtcyAmIDB4QTAwMCkgPT0gMHhBMDAwKSB7CiAgICAgICAgJGluZm8gPSAnbCc7CiAgICB9IGVsc2VpZiAoKCRwZXJtcyAmIDB4ODAwMCkgPT0gMHg4MDAwKSB7CiAgICAgICAgJGluZm8gPSAnLSc7CiAgICB9IGVsc2VpZiAoKCRwZXJtcyAmIDB4NjAwMCkgPT0gMHg2MDAwKSB7CiAgICAgICAgJGluZm8gPSAnYic7CiAgICB9IGVsc2VpZiAoKCRwZXJtcyAmIDB4NDAwMCkgPT0gMHg0MDAwKSB7CiAgICAgICAgJGluZm8gPSAnZCc7CiAgICB9IGVsc2VpZiAoKCRwZXJtcyAmIDB4MjAwMCkgPT0gMHgyMDAwKSB7CiAgICAgICAgJGluZm8gPSAnYyc7CiAgICB9IGVsc2VpZiAoKCRwZXJtcyAmIDB4MTAwMCkgPT0gMHgxMDAwKSB7CiAgICAgICAgJGluZm8gPSAncCc7CiAgICB9IGVsc2UgewogICAgICAgICRpbmZvID0gJ3UnOwogICAgfQoKICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMTAwKSA/ICdyJyA6ICctJyk7CiAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDA4MCkgPyAndycgOiAnLScpOwogICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwNDApID8KICAgICgoJHBlcm1zICYgMHgwODAwKSA/ICdzJyA6ICd4JyApIDoKICAgICgoJHBlcm1zICYgMHgwODAwKSA/ICdTJyA6ICctJykpOwoKICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDIwKSA/ICdyJyA6ICctJyk7CiAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAxMCkgPyAndycgOiAnLScpOwogICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMDgpID8KICAgICgoJHBlcm1zICYgMHgwNDAwKSA/ICdzJyA6ICd4JyApIDoKICAgICgoJHBlcm1zICYgMHgwNDAwKSA/ICdTJyA6ICctJykpOwogICAgCiAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAwNCkgPyAncicgOiAnLScpOwogICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMDIpID8gJ3cnIDogJy0nKTsKICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDAxKSA/CiAgICAoKCRwZXJtcyAmIDB4MDIwMCkgPyAndCcgOiAneCcgKSA6CiAgICAoKCRwZXJtcyAmIDB4MDIwMCkgPyAnVCcgOiAnLScpKTsKCiAgICByZXR1cm4gJGluZm87Cn0KCmZ1bmN0aW9uIGZzaXplKCRmaWxlKSB7CiAgICAkYSA9IFsiQiIsICJLQiIsICJNQiIsICJHQiIsICJUQiIsICJQQiJdOwogICAgJHBvcyA9IDA7CiAgICAkc2l6ZSA9IGZpbGVzaXplKCRmaWxlKTsKICAgIHdoaWxlICgkc2l6ZSA+PSAxMDI0KSB7CiAgICAgICAgJHNpemUgLz0gMTAyNDsKICAgICAgICAkcG9zKys7CiAgICB9CiAgICByZXR1cm4gcm91bmQoJHNpemUsIDIpLiIgIi4kYVskcG9zXTsKfQoKaWYgKGlzc2V0KCRfR0VUWydkaXInXSkpIHsKICAgICRwYXRoID0gJF9HRVRbJ2RpciddOwogICAgY2hkaXIoJF9HRVRbJ2RpciddKTsKfSBlbHNlIHsKICAgICRwYXRoID0gZ2V0Y3dkKCk7Cn0KCiRwYXRoID0gc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCAkcGF0aCk7CiRleGRpciA9IGV4cGxvZGUoJy8nLCAkcGF0aCk7CgpmdW5jdGlvbiBnZXRPd25lcigkaXRlbSkgewogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygicG9zaXhfZ2V0cHd1aWQiKSkgewogICAgICAgICRkb3duZXIgPSBAcG9zaXhfZ2V0cHd1aWQoZmlsZW93bmVyKCRpdGVtKSk7CiAgICAgICAgJGRvd25lciA9ICRkb3duZXJbJ25hbWUnXTsKICAgIH0gZWxzZSB7CiAgICAgICAgJGRvd25lciA9IGZpbGVvd25lcigkaXRlbSk7CiAgICB9CiAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCJwb3NpeF9nZXRncmdpZCIpKSB7CiAgICAgICAgJGRncnAgPSBAcG9zaXhfZ2V0Z3JnaWQoZmlsZWdyb3VwKCRpdGVtKSk7CiAgICAgICAgJGRncnAgPSAkZGdycFsnbmFtZSddOwogICAgfSBlbHNlIHsKICAgICAgICAkZGdycCA9IGZpbGVncm91cCgkaXRlbSk7CiAgICB9CiAgICByZXR1cm4gJGRvd25lciAuICcvJyAuICRkZ3JwOwp9CgppZiAoaXNzZXQoJF9QT1NUWyduZXdGb2xkZXJOYW1lJ10pKSB7CiAgICBpZiAobWtkaXIoJHBhdGggLiAnLycgLiAkX1BPU1RbJ25ld0ZvbGRlck5hbWUnXSkpIHsKICAgICAgICBmbGFzaCgiQ3JlYXRlIEZvbGRlciBTdWNjZXNzZnVsbHkhIiwgIlN1Y2Nlc3MiLCAic3VjY2VzcyIsICI/ZGlyPSRwYXRoIik7CiAgICB9IGVsc2UgewogICAgICAgIGZsYXNoKCJDcmVhdGUgRm9sZGVyIEZhaWxlZCIsICJGYWlsZWQiLCAiZXJyb3IiLCAiP2Rpcj0kcGF0aCIpOwogICAgfQp9CmlmIChpc3NldCgkX1BPU1RbJ25ld0ZpbGVOYW1lJ10pICYmIGlzc2V0KCRfUE9TVFsnbmV3RmlsZUNvbnRlbnQnXSkpIHsKICAgIGlmIChmaWxlX3B1dF9jb250ZW50cygkX1BPU1RbJ25ld0ZpbGVOYW1lJ10sICRfUE9TVFsnbmV3RmlsZUNvbnRlbnQnXSkpIHsKICAgICAgICBmbGFzaCgiQ3JlYXRlIEZpbGUgU3VjY2Vzc2Z1bGx5ISIsICJTdWNjZXNzIiwgInN1Y2Nlc3MiLCAiP2Rpcj0kcGF0aCIpOwogICAgfSBlbHNlIHsKICAgICAgICBmbGFzaCgiQ3JlYXRlIEZpbGUgRmFpbGVkIiwgIkZhaWxlZCIsICJlcnJvciIsICI/ZGlyPSRwYXRoIik7CiAgICB9Cn0KaWYgKGlzc2V0KCRfUE9TVFsnbmV3TmFtZSddKSAmJiBpc3NldCgkX0dFVFsnaXRlbSddKSkgewogICAgaWYgKCRfUE9TVFsnbmV3TmFtZSddID09ICcnKSB7CiAgICAgICAgZmxhc2goIllvdSBtaXNzIGFuIGltcG9ydGFudCB2YWx1ZSIsICJPb29wc3MuLiIsICJ3YXJuaW5nIiwgIj9kaXI9JHBhdGgiKTsKICAgIH0KICAgIGlmIChyZW5hbWUoJHBhdGguICcvJy4gJF9HRVRbJ2l0ZW0nXSwgJF9QT1NUWyduZXdOYW1lJ10pKSB7CiAgICAgICAgZmxhc2goIlJlbmFtZSBTdWNjZXNzZnVsbHkhIiwgIlN1Y2Nlc3MiLCAic3VjY2VzcyIsICI/ZGlyPSRwYXRoIik7CiAgICB9IGVsc2UgewogICAgICAgIGZsYXNoKCJSZW5hbWUgRmFpbGVkIiwgIkZhaWxlZCIsICJlcnJvciIsICI/ZGlyPSRwYXRoIik7CiAgICB9Cn0KaWYgKGlzc2V0KCRfUE9TVFsnbmV3Q29udGVudCddKSAmJiBpc3NldCgkX0dFVFsnaXRlbSddKSkgewogICAgaWYgKGZpbGVfcHV0X2NvbnRlbnRzKCRwYXRoLiAnLycuICRfR0VUWydpdGVtJ10sICRfUE9TVFsnbmV3Q29udGVudCddKSkgewogICAgICAgIGZsYXNoKCJFZGl0IFN1Y2Nlc3NmdWxseSEiLCAiU3VjY2VzcyIsICJzdWNjZXNzIiwgIj9kaXI9JHBhdGgiKTsKICAgIH0gZWxzZSB7CiAgICAgICAgZmxhc2goIkVkaXQgRmFpbGVkIiwgIkZhaWxlZCIsICJlcnJvciIsICI/ZGlyPSRwYXRoIik7CiAgICB9Cn0KaWYgKGlzc2V0KCRfUE9TVFsnbmV3UGVybSddKSAmJiBpc3NldCgkX0dFVFsnaXRlbSddKSkgewogICAgaWYgKCRfUE9TVFsnbmV3UGVybSddID09ICcnKSB7CiAgICAgICAgZmxhc2goIllvdSBtaXNzIGFuIGltcG9ydGFudCB2YWx1ZSIsICJPb29wc3MuLiIsICJ3YXJuaW5nIiwgIj9kaXI9JHBhdGgiKTsKICAgIH0KICAgIGlmIChjaG1vZCgkcGF0aC4gJy8nLiAkX0dFVFsnaXRlbSddLCAkX1BPU1RbJ25ld1Blcm0nXSkpIHsKICAgICAgICBmbGFzaCgiQ2hhbmdlIFBlcm1pc3Npb24gU3VjY2Vzc2Z1bGx5ISIsICJTdWNjZXNzIiwgInN1Y2Nlc3MiLCAiP2Rpcj0kcGF0aCIpOwogICAgfSBlbHNlIHsKICAgICAgICBmbGFzaCgiQ2hhbmdlIFBlcm1pc3Npb24iLCAiRmFpbGVkIiwgImVycm9yIiwgIj9kaXI9JHBhdGgiKTsKICAgIH0KfQppZiAoaXNzZXQoJF9HRVRbJ2FjdGlvbiddKSAmJiAkX0dFVFsnYWN0aW9uJ10gPT0gJ2RlbGV0ZScgJiYgaXNzZXQoJF9HRVRbJ2l0ZW0nXSkpIHsKICAgIGlmIChpc19kaXIoJF9HRVRbJ2l0ZW0nXSkpIHsKICAgICAgICBpZiAocm1kaXIoJF9HRVRbJ2l0ZW0nXSkpIHsKICAgICAgICAgICAgZmxhc2goIkRlbGV0ZSBTdWNjZXNzZnVsbHkhIiwgIlN1Y2Nlc3MiLCAic3VjY2VzcyIsICI/ZGlyPSRwYXRoIik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZmxhc2goIkRlbGV0ZSBGYWlsZWQiLCAiRmFpbGVkIiwgImVycm9yIiwgIj9kaXI9JHBhdGgiKTsKICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIGlmICh1bmxpbmsoJF9HRVRbJ2l0ZW0nXSkpIHsKICAgICAgICAgICAgZmxhc2goIkRlbGV0ZSBTdWNjZXNzZnVsbHkhIiwgIlN1Y2Nlc3MiLCAic3VjY2VzcyIsICI/ZGlyPSRwYXRoIik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZmxhc2goIkRlbGV0ZSBGYWlsZWQiLCAiRmFpbGVkIiwgImVycm9yIiwgIj9kaXI9JHBhdGgiKTsKICAgICAgICB9CiAgICB9Cn0KCmlmICgkX1BPU1RbJ3N1Ym1pdCddKSB7CiAgICBpZiAoJF9QT1NUWyd1cGwnXSA9PSAnY3VycmVudCcpIHsKICAgICAgICAkdG90YWwgPSBjb3VudCgkX0ZJTEVTWyd1cGxvYWRmaWxlJ11bJ25hbWUnXSk7CiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJHRvdGFsOyAkaSsrKSB7CiAgICAgICAgICAgICRtYWludXBsb2FkID0gbW92ZV91cGxvYWRlZF9maWxlKCRfRklMRVNbJ3VwbG9hZGZpbGUnXVsndG1wX25hbWUnXVskaV0sICRfRklMRVNbJ3VwbG9hZGZpbGUnXVsnbmFtZSddWyRpXSk7CiAgICAgICAgfQogICAgICAgIGlmICgkdG90YWwgPCAyKSB7CiAgICAgICAgICAgIGlmICgkbWFpbnVwbG9hZCkgewogICAgICAgICAgICAgICAgZmxhc2goIlVwbG9hZCBGaWxlIFN1Y2Nlc3NmdWxseSEgIiwgIlN1Y2Nlc3MiLCAic3VjY2VzcyIsICI/ZGlyPSRwYXRoIik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBmbGFzaCgiVXBsb2FkIEZhaWxlZCIsICJGYWlsZWQiLCAiZXJyb3IiLCAiP2Rpcj0kcGF0aCIpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKCRtYWludXBsb2FkKSB7CiAgICAgICAgICAgICAgICBmbGFzaCgiVXBsb2FkICRpIEZpbGVzIFN1Y2Nlc3NmdWxseSEgIiwgIlN1Y2Nlc3MiLCAic3VjY2VzcyIsICI/ZGlyPSRwYXRoIik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBmbGFzaCgiVXBsb2FkIEZhaWxlZCIsICJGYWlsZWQiLCAiZXJyb3IiLCAiP2Rpcj0kcGF0aCIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSBlbHNlaWYgKCRfUE9TVFsndXBsJ10gPT0gJ3Jvb3QnKSB7CiAgICAgICAgJHRvdGFsID0gY291bnQoJF9GSUxFU1sndXBsb2FkZmlsZSddWyduYW1lJ10pOwogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICR0b3RhbDsgJGkrKykgewogICAgICAgICAgICAkbWFpbnVwbG9hZCA9IG1vdmVfdXBsb2FkZWRfZmlsZSgkX0ZJTEVTWyd1cGxvYWRmaWxlJ11bJ3RtcF9uYW1lJ11bJGldLCAkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddLiIvIi4kX0ZJTEVTWyd1cGxvYWRmaWxlJ11bJ25hbWUnXVskaV0pOwogICAgICAgIH0KICAgICAgICBpZiAoJHRvdGFsIDwgMikgewogICAgICAgICAgICBpZiAoJG1haW51cGxvYWQpIHsKICAgICAgICAgICAgICAgIGZsYXNoKCJVcGxvYWQgRmlsZSBTdWNjZXNzZnVsbHkhICIsICJTdWNjZXNzIiwgInN1Y2Nlc3MiLCAiP2Rpcj0kcGF0aCIpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZmxhc2goIlVwbG9hZCBGYWlsZWQiLCAiRmFpbGVkIiwgImVycm9yIiwgIj9kaXI9JHBhdGgiKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmICgkbWFpbnVwbG9hZCkgewogICAgICAgICAgICAgICAgZmxhc2goIlVwbG9hZCAkaSBGaWxlcyBTdWNjZXNzZnVsbHkhICIsICJTdWNjZXNzIiwgInN1Y2Nlc3MiLCAiP2Rpcj0kcGF0aCIpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZmxhc2goIlVwbG9hZCBGYWlsZWQiLCAiRmFpbGVkIiwgImVycm9yIiwgIj9kaXI9JHBhdGgiKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKLy8gVXBsb2FkIGZyb20gVVJMCmlmIChpc3NldCgkX1BPU1RbJ3VybCddKSAmJiBpc3NldCgkX1BPU1RbJ2ZpbGVuYW1lJ10pICYmIGlzc2V0KCRfUE9TVFsnbWV0aG9kJ10pKSB7CiAgICAkdXJsID0gJF9QT1NUWyd1cmwnXTsKICAgICRmaWxlbmFtZSA9ICRfUE9TVFsnZmlsZW5hbWUnXTsKICAgICRkZXN0aW5hdGlvbiA9ICRwYXRoIC4gJy8nIC4gJGZpbGVuYW1lOwoKICAgIHN3aXRjaCAoJF9QT1NUWydtZXRob2QnXSkgewogICAgICAgIGNhc2UgJ2ZpbGVfZ2V0X2NvbnRlbnRzJzoKICAgICAgICAgICAgJGRhdGEgPSBmaWxlX2dldF9jb250ZW50cygkdXJsKTsKICAgICAgICAgICAgaWYgKCRkYXRhICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgZmlsZV9wdXRfY29udGVudHMoJGRlc3RpbmF0aW9uLCAkZGF0YSk7CiAgICAgICAgICAgICAgICBmbGFzaCgiRmlsZSB1cGxvYWRlZCBzdWNjZXNzZnVsbHkgdXNpbmcgZmlsZV9nZXRfY29udGVudHMhIiwgIlN1Y2Nlc3MiLCAic3VjY2VzcyIsICI/ZGlyPSRwYXRoIik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBmbGFzaCgiRmFpbGVkIHRvIHVwbG9hZCBmaWxlIHVzaW5nIGZpbGVfZ2V0X2NvbnRlbnRzIiwgIkZhaWxlZCIsICJlcnJvciIsICI/ZGlyPSRwYXRoIik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ2N1cmwnOgogICAgICAgICAgICAkY2ggPSBjdXJsX2luaXQoJHVybCk7CiAgICAgICAgICAgICRmcCA9IGZvcGVuKCRkZXN0aW5hdGlvbiwgJ3diJyk7CiAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9GSUxFLCAkZnApOwogICAgICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfSEVBREVSLCAwKTsKICAgICAgICAgICAgY3VybF9leGVjKCRjaCk7CiAgICAgICAgICAgIGlmIChjdXJsX2Vycm5vKCRjaCkpIHsKICAgICAgICAgICAgICAgIGZsYXNoKCJGYWlsZWQgdG8gdXBsb2FkIGZpbGUgdXNpbmcgY1VSTDogIiAuIGN1cmxfZXJyb3IoJGNoKSwgIkZhaWxlZCIsICJlcnJvciIsICI/ZGlyPSRwYXRoIik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBmbGFzaCgiRmlsZSB1cGxvYWRlZCBzdWNjZXNzZnVsbHkgdXNpbmcgY1VSTCEiLCAiU3VjY2VzcyIsICJzdWNjZXNzIiwgIj9kaXI9JHBhdGgiKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjdXJsX2Nsb3NlKCRjaCk7CiAgICAgICAgICAgIGZjbG9zZSgkZnApOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnZm9wZW4nOgogICAgICAgICAgICAkc3RyZWFtID0gZm9wZW4oJHVybCwgJ3JiJyk7CiAgICAgICAgICAgIGlmICgkc3RyZWFtKSB7CiAgICAgICAgICAgICAgICAkY29udGVudHMgPSBzdHJlYW1fZ2V0X2NvbnRlbnRzKCRzdHJlYW0pOwogICAgICAgICAgICAgICAgZmNsb3NlKCRzdHJlYW0pOwogICAgICAgICAgICAgICAgZmlsZV9wdXRfY29udGVudHMoJGRlc3RpbmF0aW9uLCAkY29udGVudHMpOwogICAgICAgICAgICAgICAgZmxhc2goIkZpbGUgdXBsb2FkZWQgc3VjY2Vzc2Z1bGx5IHVzaW5nIGZvcGVuISIsICJTdWNjZXNzIiwgInN1Y2Nlc3MiLCAiP2Rpcj0kcGF0aCIpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZmxhc2goIkZhaWxlZCB0byB1cGxvYWQgZmlsZSB1c2luZyBmb3BlbiIsICJGYWlsZWQiLCAiZXJyb3IiLCAiP2Rpcj0kcGF0aCIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdjb3B5JzoKICAgICAgICAgICAgaWYgKGNvcHkoJHVybCwgJGRlc3RpbmF0aW9uKSkgewogICAgICAgICAgICAgICAgZmxhc2goIkZpbGUgdXBsb2FkZWQgc3VjY2Vzc2Z1bGx5IHVzaW5nIGNvcHkhIiwgIlN1Y2Nlc3MiLCAic3VjY2VzcyIsICI/ZGlyPSRwYXRoIik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBmbGFzaCgiRmFpbGVkIHRvIHVwbG9hZCBmaWxlIHVzaW5nIGNvcHkiLCAiRmFpbGVkIiwgImVycm9yIiwgIj9kaXI9JHBhdGgiKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnc3RyZWFtX2NvbnRleHQnOgogICAgICAgICAgICAkY29udGV4dCA9IHN0cmVhbV9jb250ZXh0X2NyZWF0ZShbJ2h0dHAnID0+IFsnbWV0aG9kJyA9PiAnR0VUJ11dKTsKICAgICAgICAgICAgJGRhdGEgPSBmaWxlX2dldF9jb250ZW50cygkdXJsLCBmYWxzZSwgJGNvbnRleHQpOwogICAgICAgICAgICBpZiAoJGRhdGEgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICBmaWxlX3B1dF9jb250ZW50cygkZGVzdGluYXRpb24sICRkYXRhKTsKICAgICAgICAgICAgICAgIGZsYXNoKCJGaWxlIHVwbG9hZGVkIHN1Y2Nlc3NmdWxseSB1c2luZyBzdHJlYW1fY29udGV4dCEiLCAiU3VjY2VzcyIsICJzdWNjZXNzIiwgIj9kaXI9JHBhdGgiKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGZsYXNoKCJGYWlsZWQgdG8gdXBsb2FkIGZpbGUgdXNpbmcgc3RyZWFtX2NvbnRleHQiLCAiRmFpbGVkIiwgImVycm9yIiwgIj9kaXI9JHBhdGgiKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKICAgIH0KfQoKJGRpcnMgPSBzY2FuZGlyKCRwYXRoKTsKCiRkMG1haW5zID0gQGZpbGUoIi9ldGMvbmFtZWQuY29uZiIsIGZhbHNlKTsKaWYgKCEkZDBtYWlucyl7CiAgICAkZG9tID0gIkNhbnQgcmVhZCAvZXRjL25hbWVkLmNvbmYiOwogICAgJEdMT0JBTFNbIm5lZWRfdG9fdXBkYXRlX2hlYWRlciJdID0gInRydWUiOwp9IGVsc2UgeyAKICAgICRjb3VudCA9IDA7CiAgICBmb3JlYWNoICgkZDBtYWlucyBhcyAkZDBtYWluKXsKICAgICAgICBpZiAoQHN0cnN0cigkZDBtYWluLCAiem9uZSIpKXsKICAgICAgICAgICAgcHJlZ19tYXRjaF9hbGwoJyN6b25lICIoLiopIiMnLCAkZDBtYWluLCAkZG9tYWlucyk7CiAgICAgICAgICAgIGZsdXNoKCk7CiAgICAgICAgICAgIGlmIChzdHJsZW4odHJpbSgkZG9tYWluc1sxXVswXSkpID4gMil7CiAgICAgICAgICAgICAgICBmbHVzaCgpOwogICAgICAgICAgICAgICAgJGNvdW50Kys7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAkZG9tID0gIiRjb3VudCBEb21haW4iOwp9CgokaXAgPSAhQCRfU0VSVkVSWydTRVJWRVJfQUREUiddID8gZ2V0aG9zdGJ5bmFtZSgkX1NFUlZFUlsnU0VSVkVSX05BTUUnXSkgOiBAJF9TRVJWRVJbJ1NFUlZFUl9BRERSJ107CiRzZXJ2ID0gJF9TRVJWRVJbJ0hUVFBfSE9TVCddOyAKJHNvZnQgPSAkX1NFUlZFUlsnU0VSVkVSX1NPRlRXQVJFJ107CiR1bmFtZSA9IHBocF91bmFtZSgpOwoKPz4KPGh0bWw+CiAgICA8aGVhZD4KICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CiAgICAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIj4KICAgICAgICA8bWV0YSBuYW1lPSJyb2JvdHMiIGNvbnRlbnQ9Im5vaW5kZXgsIG5vZm9sbG93Ij4KICAgICAgICA8bGluayBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2Jvb3RzdHJhcEA1LjEuMy9kaXN0L2Nzcy9ib290c3RyYXAubWluLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBpbnRlZ3JpdHk9InNoYTM4NC0xQm1FNGtXQnE3OGlZaEZsZHZLdWhmVEFVNmF1VTh0VDk0V3JIZnRqRGJyQ0VYU1Uxb0JvcXlsMlF2WjZqSVczIiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj4KICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vcHJvLmZvbnRhd2Vzb21lLmNvbS9yZWxlYXNlcy92NS4xMC4wL2Nzcy9hbGwuY3NzIiBpbnRlZ3JpdHk9InNoYTM4NC1BWW1FQzNZdzVjVmIzWmN1SHRPQTkzdzM1ZFlUc3ZoTFBWbllzOWVTdEhmR0p2T3ZLeFZmRUxHcm9Ha3ZzZytwIiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIi8+CiAgICAgICAgPHRpdGxlPjw/PSAkc2VydjsgPz4gLSBBQ1NoZWxsPC90aXRsZT4KICAgIDwvaGVhZD4KICAgIDxib2R5IGNsYXNzPSJiZy1kYXJrIHRleHQtbGlnaHQiPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lci1mbHVpZCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InB5LTMiIGlkPSJtYWluIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJveCBzaGFkb3cgYmctZGFyayBwLTQgcm91bmRlZC0zIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmZvIG1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtc2VydmVyIj48L2k+JmVuc3A7PD89ICR1bmFtZTsgPz48YnI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1taWNyb2NoaXAiPjwvaT4mZW5zcDs8Pz0gJHNvZnQ7ID8+PGJyPgogICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtc2F0ZWxsaXRlLWRpc2giPjwvaT4mZW5zcDs8Pz0gJGlwOyA/Pjxicj4KICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbmdlcnByaW50Ij48L2k+JmVuc3A7PD89ICRkb207ID8+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnJlYWRjcnVtYiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYSBmYS1mb2xkZXIgcHQtMSI+PC9pPiZlbnNwOzw/cGhwIGZvcmVhY2ggKCRleGRpciBhcyAkaWQgPT4gJHBhdCkgOiBpZiAoJHBhdCA9PSAnJyAmJiAkaWQgPT0gMCk6Pz4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2Rpcj0vIiBjbGFzcz0idGV4dC1kZWNvcmF0aW9uLW5vbmUgdGV4dC1saWdodCI+LzwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kaWY7IGlmICgkcGF0ID09ICcnKSBjb250aW51ZTsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2Rpcj08P3BocCBmb3IgKCRpID0gMDsgJGkgPD0gJGlkOyAkaSsrKSB7ZWNobyAiJGV4ZGlyWyRpXSI7aWYgKCRpICE9ICRpZCkgZWNobyAiLyI7fT8+IiBjbGFzcz0idGV4dC1kZWNvcmF0aW9uLW5vbmUgdGV4dC1saWdodCI+PD89ICRwYXQgPz48L2E+PHNwYW4gY2xhc3M9InRleHQtbGlnaHQiPiAvPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbmRmb3JlYWNoOyA/PgogICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDsgWyZuYnNwOzw/cGhwIGVjaG8gd3JpdGFibGUoJHBhdGgsIHBlcm1zKCRwYXRoKSkgPz4mbmJzcDtdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/IiBjbGFzcz0idGV4dC1kZWNvcmF0aW9uLW5vbmUgdGV4dC1saWdodCI+Jm5ic3A7IFsmbmJzcDtIT01FJm5ic3A7XTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icC0yIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Im5hbWUiIGNsYXNzPSJmb3JtLWxhYmVsIj5Db25zb2xlPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtOSBtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSIgbmFtZT0iYmRjbWQiIHBsYWNlaG9sZGVyPSJ3aG9hbWkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtIj5TdWJtaXQ8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwLTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNoZWNrLWlucHV0IiB0eXBlPSJyYWRpbyIgaWQ9ImZsZXhSYWRpb0RlZmF1bHQxIiBuYW1lPSJ1cGwiIHZhbHVlPSJjdXJyZW50IiBjaGVja2VkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iZm9ybS1sYWJlbCI+Q3VycmVudCBEaXImbmJzcDs8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iZm9ybS1jaGVjay1pbnB1dCIgdHlwZT0icmFkaW8iIGlkPSJmbGV4UmFkaW9EZWZhdWx0MiIgbmFtZT0idXBsIiB2YWx1ZT0icm9vdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJmb3JtLWxhYmVsIj5Sb290IERpcjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTkgbWItMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iZmlsZSIgY2xhc3M9ImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20iIG5hbWU9InVwbG9hZGZpbGVbXSIgbXVsdGlwbGUgaWQ9ImlucHV0R3JvdXBGaWxlMDQiIGFyaWEtZGVzY3JpYmVkYnk9ImlucHV0R3JvdXBGaWxlQWRkb24wNCIgYXJpYS1sYWJlbD0iVXBsb2FkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC0zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdzdWJtaXQnIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtIiB2YWx1ZT0nU3VibWl0JyBuYW1lPSdzdWJtaXQnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIiBpZD0idG9vbHMiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2xsYXBzZSIgaWQ9InVwbG9hZFVybENvbGxhcHNlIiBkYXRhLWJzLXBhcmVudD0iI3Rvb2xzIiBzdHlsZT0idHJhbnNpdGlvbjpub25lOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0idXJsIiBjbGFzcz0iZm9ybS1sYWJlbCI+VVJMIHRvIFVwbG9hZDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJ1cmwiIHBsYWNlaG9sZGVyPSJFbnRlciBVUkwgaGVyZSIgcmVxdWlyZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWItMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9ImZpbGVuYW1lIiBjbGFzcz0iZm9ybS1sYWJlbCI+RmlsZSBOYW1lPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9ImZpbGVuYW1lIiBwbGFjZWhvbGRlcj0iRW50ZXIgZmlsZSBuYW1lIiByZXF1aXJlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0ibWV0aG9kIiBjbGFzcz0iZm9ybS1sYWJlbCI+VXBsb2FkIE1ldGhvZDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9ImZvcm0tc2VsZWN0IiBuYW1lPSJtZXRob2QiIHJlcXVpcmVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iZmlsZV9nZXRfY29udGVudHMiPmZpbGVfZ2V0X2NvbnRlbnRzPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJjdXJsIj5jVVJMPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJmb3BlbiI+Zm9wZW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImNvcHkiPmNvcHk8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9InN0cmVhbV9jb250ZXh0Ij5zdHJlYW1fY29udGV4dDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0biBidG4tb3V0bGluZS1saWdodCI+VXBsb2FkPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJzLXRvZ2dsZT0iY29sbGFwc2UiIGhyZWY9IiN1cGxvYWRVcmxDb2xsYXBzZSIgcm9sZT0iYnV0dG9uIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSIgYXJpYS1jb250cm9scz0idXBsb2FkVXJsQ29sbGFwc2UiIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtIG1yLTEiPjxpIGNsYXNzPSJmYSBmYS1saW5rIj48L2k+IFVwbG9hZCBmcm9tIFVSTDwvYT4KCiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGlmIChpc3NldCgkX1BPU1RbJ2JkY21kJ10pKSA6ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwLTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nY2FyZCB0ZXh0LWRhcmsgbWItMyc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJlPjw/cGhwIGVjaG8gJGlwLiJAIi4kc2Vydi4iOiZuYnNwO34kJm5ic3A7IjsgJGNtZCA9ICRfUE9TVFsnYmRjbWQnXTsgZWNobyAkY21kLiI8YnI+Ijs/Pjxicj48Y29kZT48P3BocCBpZihmdW5jdGlvbl9leGlzdHMoJ3NoZWxsX2V4ZWMnKSl7IGVjaG8gc2hlbGxfZXhlYygkY21kLicgMj4mMScpOyB9IGVsc2UgeyBlY2hvICJEaXNhYmxlIEZ1bmN0aW9uIjsgfT8+PC9jb2RlPjwvcHJlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbmRpZjsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgaWYgKGlzc2V0KCRfR0VUWydhY3Rpb24nXSkgJiYgJF9HRVRbJ2FjdGlvbiddICE9ICdkZWxldGUnKSA6ICRhY3Rpb24gPSAkX0dFVFsnYWN0aW9uJ10gPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoJGFjdGlvbiA9PSAncmVuYW1lJyAmJiBpc3NldCgkX0dFVFsnaXRlbSddKSkgOiA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Im5hbWUiIGNsYXNzPSJmb3JtLWxhYmVsIj5OZXcgTmFtZTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9Im5ld05hbWUiIHZhbHVlPSI8Pz0gJF9HRVRbJ2l0ZW0nXSA/PiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0Ij5TdWJtaXQ8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IiBvbmNsaWNrPSJoaXN0b3J5LmdvKC0xKSI+QmFjazwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZWxzZWlmICgkYWN0aW9uID09ICdlZGl0JyAmJiBpc3NldCgkX0dFVFsnaXRlbSddKSkgOiA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Im5hbWUiIGNsYXNzPSJmb3JtLWxhYmVsIj48Pz0gJF9HRVRbJ2l0ZW0nXSA/PjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJDb3B5RnJvbVRleHRBcmVhIiBuYW1lPSJuZXdDb250ZW50IiByb3dzPSIxMCIgY2xhc3M9ImZvcm0tY29udHJvbCI+PD89IGh0bWxzcGVjaWFsY2hhcnMoZmlsZV9nZXRfY29udGVudHMoJHBhdGguICcvJy4gJF9HRVRbJ2l0ZW0nXSkpID8+PC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQiPlN1Ym1pdDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQiIG9uY2xpY2s9ImpzY29weSgpIj5Db3B5PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tb3V0bGluZS1saWdodCIgb25jbGljaz0iaGlzdG9yeS5nbygtMSkiPkJhY2s8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVsc2VpZiAoJGFjdGlvbiA9PSAndmlldycgJiYgaXNzZXQoJF9HRVRbJ2l0ZW0nXSkpIDogPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWItMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJuYW1lIiBjbGFzcz0iZm9ybS1sYWJlbCI+RmlsZSBOYW1lIDogPD89ICRfR0VUWydpdGVtJ10gPz48L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIG5hbWU9Im5ld0NvbnRlbnQiIHJvd3M9IjEwIiBjbGFzcz0iZm9ybS1jb250cm9sIiBkaXNhYmxlZD0iIj48Pz0gaHRtbHNwZWNpYWxjaGFycyhmaWxlX2dldF9jb250ZW50cygkcGF0aC4gJy8nLiAkX0dFVFsnaXRlbSddKSkgPz48L3RleHRhcmVhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQiIG9uY2xpY2s9Imhpc3RvcnkuZ28oLTEpIj5CYWNrPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVsc2VpZiAoJGFjdGlvbiA9PSAnY2htb2QnICYmIGlzc2V0KCRfR0VUWydpdGVtJ10pKSA6ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWItMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0ibmFtZSIgY2xhc3M9ImZvcm0tbGFiZWwiPjw/PSAkX0dFVFsnaXRlbSddID8+PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImZvcm0tY29udHJvbCIgbmFtZT0ibmV3UGVybSIgdmFsdWU9Ijw/PSBzdWJzdHIoc3ByaW50ZignJW8nLCBmaWxlcGVybXMoJF9HRVRbJ2l0ZW0nXSkpLCAtNCk7ID8+Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQiPlN1Ym1pdDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQiIG9uY2xpY2s9Imhpc3RvcnkuZ28oLTEpIj5CYWNrPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbmRpZjsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbmRpZjsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93IGp1c3RpZnktY29udGVudC1jZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sbGFwc2UiIGlkPSJuZXdGb2xkZXJDb2xsYXBzZSIgZGF0YS1icy1wYXJlbnQ9IiN0b29scyIgc3R5bGU9InRyYW5zaXRpb246bm9uZTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Im5hbWUiIGNsYXNzPSJmb3JtLWxhYmVsIj5Gb2xkZXIgTmFtZTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImZvcm0tY29udHJvbCIgbmFtZT0ibmV3Rm9sZGVyTmFtZSIgcGxhY2Vob2xkZXI9IkFDU2hlbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQiPlN1Ym1pdDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sbGFwc2UiIGlkPSJuZXdGaWxlQ29sbGFwc2UiIGRhdGEtYnMtcGFyZW50PSIjdG9vbHMiIHN0eWxlPSJ0cmFuc2l0aW9uOm5vbmU7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWItMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJuYW1lIiBjbGFzcz0iZm9ybS1sYWJlbCI+RmlsZSBOYW1lPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJuZXdGaWxlTmFtZSIgcGxhY2Vob2xkZXI9IkFDU2hlbGwucGhwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0ibmFtZSIgY2xhc3M9ImZvcm0tbGFiZWwiPkZpbGUgQ29udGVudDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgbmFtZT0ibmV3RmlsZUNvbnRlbnQiIHJvd3M9IjEwIiBjbGFzcz0iZm9ybS1jb250cm9sIiBwbGFjZWhvbGRlcj0iSGVsbG8gV29ybGQgLSBBQ1NoZWxsIj48L3RleHRhcmVhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQiPlN1Ym1pdDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFibGUtcmVzcG9uc2l2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtaG92ZXIgdGFibGUtZGFyayB0ZXh0LWxpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0id2lkdGg6MzUlIj5OYW1lPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJ3aWR0aDoxMCUiPlR5cGU8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9IndpZHRoOjEwJSI+U2l6ZTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0id2lkdGg6MTMlIj5Pd25lci9Hcm91cDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0id2lkdGg6MTAlIj5QZXJtaXNzaW9uPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJ3aWR0aDoxMyUiPkxhc3QgTW9kaWZpZWQ8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9IndpZHRoOjklIj5BY3Rpb25zPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keSBjbGFzcz0idGV4dC1ub3dyYXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRkaXJzIGFzICRkaXIpIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc19kaXIoJGRpcikpIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoJGRpciA9PT0gJy4uJykgOiA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kaXI9PD89IGRpcm5hbWUoJHBhdGgpOyA/PiIgY2xhc3M9InRleHQtZGVjb3JhdGlvbi1ub25lIHRleHQtbGlnaHQiPjxpIGNsYXNzPSJmYSBmYS1mb2xkZXItb3BlbiI+PC9pPiA8Pz0gJGRpciA/PjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVsc2VpZiAoJGRpciA9PT0gJy4nKSA6ICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kaXI9PD89ICRwYXRoOyA/PiIgY2xhc3M9InRleHQtZGVjb3JhdGlvbi1ub25lIHRleHQtbGlnaHQiPjxpIGNsYXNzPSJmYSBmYS1mb2xkZXItb3BlbiI+PC9pPiA8Pz0gJGRpciA/PjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVsc2UgOiA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kaXI9PD89ICRwYXRoIC4gJy8nIC4gJGRpciA/PiIgY2xhc3M9InRleHQtZGVjb3JhdGlvbi1ub25lIHRleHQtbGlnaHQiPjxpIGNsYXNzPSJmYSBmYS1mb2xkZXIiPjwvaT4gPD89ICRkaXIgPz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbmRpZjsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0ZXh0LWxpZ2h0Ij48Pz0gZmlsZXR5cGUoJGRpcikgPz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InRleHQtbGlnaHQiPi08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InRleHQtbGlnaHQiPjw/PSBnZXRPd25lcigkZGlyKSA/PjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idGV4dC1saWdodCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzX3dyaXRhYmxlKCRwYXRoLicvJy4kZGlyKSkgZWNobyAnPGZvbnQgY29sb3I9ImxpbWUiPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZWlmKCFpc19yZWFkYWJsZSgkcGF0aC4nLycuJGRpcikpIGVjaG8gJzxmb250IGNvbG9yPSJyZWQiPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBwZXJtcygkcGF0aC4nLycuJGRpcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNfd3JpdGFibGUoJHBhdGguJy8nLiRkaXIpIHx8ICFpc19yZWFkYWJsZSgkcGF0aC4nLycuJGRpcikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InRleHQtbGlnaHQiPjw/PSBkYXRlKCJZLW0tZCBoOmk6cyIsIGZpbGVtdGltZSgkZGlyKSk7ID8+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgaWYgKCRkaXIgIT0gJy4nICYmICRkaXIgIT0gJy4uJykgOiA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ0bi1ncm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kaXI9PD89ICRwYXRoID8+Jml0ZW09PD89ICRkaXIgPz4mYWN0aW9uPXJlbmFtZSIgY2xhc3M9ImJ0biBidG4tb3V0bGluZS1saWdodCBidG4tc20gbXItMSI+PGkgY2xhc3M9ImZhIGZhLWVkaXQiPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kaXI9PD89ICRwYXRoID8+Jml0ZW09PD89ICRkaXIgPz4mYWN0aW9uPWNobW9kIiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbSBtci0xIj48aSBjbGFzcz0iZmEgZmEtZmlsZS1zaWduYXR1cmUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiIgY2xhc3M9ImJ0biBidG4tb3V0bGluZS1saWdodCBidG4tc20gbXItMSIgb25jbGljaz0icmV0dXJuIGRlbGV0ZUNvbmZpcm0oJz9kaXI9PD89ICRwYXRoID8+Jml0ZW09PD89ICRkaXIgPz4mYWN0aW9uPWRlbGV0ZScpIj48aSBjbGFzcz0iZmEgZmEtdHJhc2giPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbHNlaWYgKCRkaXIgPT09ICcuJykgOiA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnRuLWdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJzLXRvZ2dsZT0iY29sbGFwc2UiIGhyZWY9IiNuZXdGb2xkZXJDb2xsYXBzZSIgcm9sZT0iYnV0dG9uIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSIgYXJpYS1jb250cm9scz0ibmV3Rm9sZGVyQ29sbGFwc2UiIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtIG1yLTEiPjxpIGNsYXNzPSJmYSBmYS1mb2xkZXItcGx1cyI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJzLXRvZ2dsZT0iY29sbGFwc2UiIGhyZWY9IiNuZXdGaWxlQ29sbGFwc2UiIHJvbGU9ImJ1dHRvbiIgYXJpYS1leHBhbmRlZD0iZmFsc2UiIGFyaWEtY29udHJvbHM9Im5ld0ZpbGVDb2xsYXBzZSIgY2xhc3M9ImJ0biBidG4tb3V0bGluZS1saWdodCBidG4tc20gbXItMSI+PGkgY2xhc3M9ImZhIGZhLWZpbGUtcGx1cyI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kaWY7ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbmRmb3JlYWNoOyA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGRpcnMgYXMgJGRpcikgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc19maWxlKCRkaXIpKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kaXI9PD89ICRwYXRoID8+Jml0ZW09PD89ICRkaXIgPz4mYWN0aW9uPXZpZXciIGNsYXNzPSJ0ZXh0LWRlY29yYXRpb24tbm9uZSB0ZXh0LWxpZ2h0Ij48aSBjbGFzcz0iZmEgZmEtZmlsZS1jb2RlIj48L2k+IDw/PSAkZGlyID8+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idGV4dC1saWdodCI+PD89IChmdW5jdGlvbl9leGlzdHMoJ21pbWVfY29udGVudF90eXBlJykgPyBtaW1lX2NvbnRlbnRfdHlwZSgkZGlyKSA6IGZpbGV0eXBlKCRkaXIpKSA/PjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InRleHQtbGlnaHQiPjw/PSBmc2l6ZSgkZGlyKSA/PjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InRleHQtbGlnaHQiPjw/PSBnZXRPd25lcigkZGlyKSA/PjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InRleHQtbGlnaHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzX3dyaXRhYmxlKCRwYXRoLicvJy4kZGlyKSkgZWNobyAnPGZvbnQgY29sb3I9ImxpbWUiPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VpZighaXNfcmVhZGFibGUoJHBhdGguJy8nLiRkaXIpKSBlY2hvICc8Zm9udCBjb2xvcj0icmVkIj4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHBlcm1zKCRwYXRoLicvJy4kZGlyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNfd3JpdGFibGUoJHBhdGguJy8nLiRkaXIpIHx8ICFpc19yZWFkYWJsZSgkcGF0aC4nLycuJGRpcikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InRleHQtbGlnaHQiPjw/PSBkYXRlKCJZLW0tZCBoOmk6cyIsIGZpbGVtdGltZSgkZGlyKSk7ID8+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoJGRpciAhPSAnLicgJiYgJGRpciAhPSAnLi4nKSA6ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ0bi1ncm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZGlyPTw/PSAkcGF0aCA/PiZpdGVtPTw/PSAkZGlyID8+JmFjdGlvbj1lZGl0IiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbSBtci0xIj48aSBjbGFzcz0iZmEgZmEtZmlsZS1lZGl0Ij48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2Rpcj08Pz0gJHBhdGggPz4maXRlbT08Pz0gJGRpciA/PiZhY3Rpb249cmVuYW1lIiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbSBtci0xIj48aSBjbGFzcz0iZmEgZmEtZWRpdCI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kaXI9PD89ICRwYXRoID8+Jml0ZW09PD89ICRkaXIgPz4mYWN0aW9uPWNobW9kIiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbSBtci0xIj48aSBjbGFzcz0iZmEgZmEtZmlsZS1zaWduYXR1cmUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIiIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtIG1yLTEiIG9uY2xpY2s9InJldHVybiBkZWxldGVDb25maXJtKCc/ZGlyPTw/PSAkcGF0aCA/PiZpdGVtPTw/PSAkZGlyID8+JmFjdGlvbj1kZWxldGUnKSI+PGkgY2xhc3M9ImZhIGZhLXRyYXNoIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbmRpZjsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kZm9yZWFjaDsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC1saWdodCI+JiMxNjk7IEFDU2hlbGwgPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPnZhciBjcmVkaXRzeWVhciA9IG5ldyBEYXRlKCk7ZG9jdW1lbnQud3JpdGUoY3JlZGl0c3llYXIuZ2V0RnVsbFllYXIoKSk7PC9zY3JpcHQ+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vYm9vdHN0cmFwQDUuMS4zL2Rpc3QvanMvYm9vdHN0cmFwLmJ1bmRsZS5taW4uanMiIGludGVncml0eT0ic2hhMzg0LWthN1NrMEdsbjRnbXR6Mk1sUW5pa1Qxd1hnWXNPZytPTWh1UCtJbFJIOXNFTkJPMExSbjVxKzhuYlRvdjQrMXAiIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiPjwvc2NyaXB0PgogICAgICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL3N3ZWV0YWxlcnQyQDExLjQuMC9kaXN0L3N3ZWV0YWxlcnQyLmFsbC5taW4uanMiPjwvc2NyaXB0PgogICAgICAgIDxzY3JpcHQ+CiAgICAgICAgICAgIDw/cGhwIGlmIChpc3NldCgkX1NFU1NJT05bJ21lc3NhZ2UnXSkpIDogPz4KICAgICAgICAgICAgICAgIFN3YWwuZmlyZSgKICAgICAgICAgICAgICAgICc8Pz0gJF9TRVNTSU9OWydzdGF0dXMnXSA/PicsCiAgICAgICAgICAgICAgICAnPD89ICRfU0VTU0lPTlsnbWVzc2FnZSddID8+JywKICAgICAgICAgICAgICAgICc8Pz0gJF9TRVNTSU9OWydjbGFzcyddID8+JwogICAgICAgICAgICAgICAgKQogICAgICAgICAgICA8P3BocCBlbmRpZjsgY2xlYXIoKTsgPz4KICAgICAgICAgICAgZnVuY3Rpb24gZGVsZXRlQ29uZmlybSh1cmwpIHsKICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKQogICAgICAgICAgICBTd2FsLmZpcmUoewogICAgICAgICAgICAgICAgdGl0bGU6ICdBcmUgeW91IHN1cmU/JywKICAgICAgICAgICAgICAgIGljb246ICd3YXJuaW5nJywKICAgICAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsCiAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uQ29sb3I6ICcjMzA4NWQ2JywKICAgICAgICAgICAgICAgIGNhbmNlbEJ1dHRvbkNvbG9yOiAnI2QzMycsCiAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ1llcywgZGVsZXRlIGl0IScKICAgICAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7CiAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmlzQ29uZmlybWVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBqc2NvcHkoKSB7CiAgICAgICAgICAgICAgICB2YXIganNDb3B5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkNvcHlGcm9tVGV4dEFyZWEiKTsKICAgICAgICAgICAgICAgIGpzQ29weS5mb2N1cygpOwogICAgICAgICAgICAgICAganNDb3B5LnNlbGVjdCgpOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoImNvcHkiKTsKICAgICAgICAgICAgfQogICAgICAgIDwvc2NyaXB0PgogICAgPC9ib2R5Pgo8L2h0bWw+</embed>
    </cover>
  </covers>
  <issue_galleys xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pkp.sfu.ca native.xsd"/>
  <articles xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pkp.sfu.ca native.xsd">
  </articles>
</issue>