<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>35059</bug_id>
          
          <creation_ts>2010-02-17 14:45:26 -0800</creation_ts>
          <short_desc>New port: EFL; adding files to WebKit/efl</short_desc>
          <delta_ts>2010-03-31 14:28:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Leandro Pereira">leandro</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barbieri</cc>
    
    <cc>bunhere</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hyuki.a.kim</cc>
    
    <cc>hyuki.kim</cc>
    
    <cc>joone.hur</cc>
    
    <cc>miroslaw.s</cc>
    
    <cc>rakuco</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>191231</commentid>
    <comment_count>0</comment_count>
      <attachid>48940</attachid>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2010-02-17 14:45:26 -0800</bug_when>
    <thetext>Created attachment 48940
Add EFL port files in WebKit/efl

This patch is part of a series of patches to add an updated version of the EFL port to the WebKit tree.

This particular patch adds files to WebKit/efl directory, including necessary image files (stored in webkit-efl-port-webkit_efl.tar, also attached). Changes to the port-independent parts and build system changes, will come later.

It should apply cleanly on SVN rev 54651.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191233</commentid>
    <comment_count>1</comment_count>
      <attachid>48941</attachid>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2010-02-17 14:46:28 -0800</bug_when>
    <thetext>Created attachment 48941
Image files needed by the EFL port</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191277</commentid>
    <comment_count>2</comment_count>
    <who name="Gustavo Sverzut Barbieri">barbieri</who>
    <bug_when>2010-02-17 16:03:15 -0800</bug_when>
    <thetext>I&apos;m interested in the review process of this item, so adding it to CC.

ProFUSION wrote WebKit-EFL on behalf of Samsung Electronics, which now wants to contribute back and we&apos;ll maintain this port upstream as things should be ;-)

The port was based on previous attempt by INdT, however most of WebKit/efl was rewritten to fit better EFL architecture. The files that include INdT&apos;s work have their copyright listed accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191522</commentid>
    <comment_count>3</comment_count>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2010-02-18 03:48:00 -0800</bug_when>
    <thetext>Changing platform to Other / Linux.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191524</commentid>
    <comment_count>4</comment_count>
      <attachid>48940</attachid>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2010-02-18 03:59:25 -0800</bug_when>
    <thetext>Comment on attachment 48940
Add EFL port files in WebKit/efl

Mark patch for review.Mark patch for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191534</commentid>
    <comment_count>5</comment_count>
      <attachid>48940</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-02-18 04:35:59 -0800</bug_when>
    <thetext>Comment on attachment 48940
Add EFL port files in WebKit/efl

It is a very big patch, would it be possible to split it up? Also, r- as there is no ChangeLog entry. 

Please use the prepare-ChangeLog to create ChangeLog entries. Also, read the page on webkit.org on how to contribute.

Also, we try to not commit out-commented code, please remove that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191549</commentid>
    <comment_count>6</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-02-18 05:48:19 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 48940 [details])
&gt; It is a very big patch, would it be possible to split it up? Also, r- as there
&gt; is no ChangeLog entry. 

I suggest a good first step would be to get enough build system in to build EFL&apos;s JavaScriptCore, what do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206720</commentid>
    <comment_count>7</comment_count>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2010-03-31 14:28:34 -0700</bug_when>
    <thetext>All files included in the attached patch either already landed (through smaller patches with their respective bug reports) or are awaiting review, so I am closing this bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48940</attachid>
            <date>2010-02-17 14:45:26 -0800</date>
            <delta_ts>2010-03-09 12:23:24 -0800</delta_ts>
            <desc>Add EFL port files in WebKit/efl</desc>
            <filename>webkit-efl-port-webkit_efl.diff</filename>
            <type>text/plain</type>
            <size>498978</size>
            <attacher name="Leandro Pereira">leandro</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL01ha2VmaWxlLmFtIGIvV2ViS2l0
L2VmbC9EZWZhdWx0VGhlbWUvTWFrZWZpbGUuYW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNTQ1M2UzMQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9lZmwvRGVmYXVsdFRo
ZW1lL01ha2VmaWxlLmFtCkBAIC0wLDAgKzEsMzUgQEAKK0JBU0VfVEhFTUVfRElSID0gJCh0b3Bf
c3JjZGlyKS9XZWJLaXQvZWZsL0RlZmF1bHRUaGVtZQorQlVJTERfVEhFTUVfRElSID0gJCh0b3Bf
YnVpbGRkaXIpL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lCisKK01BSU5UQUlORVJDTEVBTkZJTEVT
ICs9IFwKKwkkKHRvcF9idWlsZGRpcikvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvTWFrZWZpbGUu
aW4KKworRURKRV9DQyA9IGVkamVfY2MKK0VESkVfRkxBR1MgPSAtdiAtaWQgJCh0b3BfYnVpbGRk
aXIpL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lLworCitmaWxlc2RpciA9ICQoZGF0YWRpcikvd2Vi
a2l0LTEuMC90aGVtZQorZmlsZXNfREFUQSA9ICQoQlVJTERfVEhFTUVfRElSKS9kZWZhdWx0LmVk
agorCitFWFRSQV9ESVNUICs9IFwKKwkkKHRvcF9idWlsZGRpcikvV2ViS2l0L2VmbC9EZWZhdWx0
VGhlbWUvZGVmYXVsdC5lZGMgXAorCSQodG9wX2J1aWxkZGlyKS9XZWJLaXQvZWZsL0RlZmF1bHRU
aGVtZS93aWRnZXQvZW50cnkvZW50cnkuZWRjIFwKKwkkKHRvcF9idWlsZGRpcikvV2ViS2l0L2Vm
bC9EZWZhdWx0VGhlbWUvd2lkZ2V0L3JhZGlvL3JhZGlvLmVkYyBcCisJJCh0b3BfYnVpbGRkaXIp
L1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9jaGVjay9jaGVjay5lZGMgXAorCSQodG9w
X2J1aWxkZGlyKS9XZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvY29tYm8vY29tYm8uZWRj
IFwKKwkkKHRvcF9idWlsZGRpcikvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L2J1dHRv
bi9idXR0b24uZWRjIFwKKwkkKHRvcF9idWlsZGRpcikvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUv
d2lkZ2V0L3Njcm9sbGJhci9zY3JvbGxiYXIuZWRjIFwKKwkkKHRvcF9idWlsZGRpcikvV2ViS2l0
L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L3NlYXJjaC9maWVsZC9zZWFyY2hfZmllbGQuZWRjIFwK
KwkkKHRvcF9idWlsZGRpcikvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L3NlYXJjaC9k
ZWNvcmF0aW9uL3NlYXJjaF9kZWNvcmF0aW9uLmVkYyBcCisJJCh0b3BfYnVpbGRkaXIpL1dlYktp
dC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9zZWFyY2gvY2FuY2VsL3NlYXJjaF9jYW5jZWwuZWRj
IFwKKwkkKHRvcF9idWlsZGRpcikvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L2ZpbGUv
ZmlsZS5lZGMKKworYWxsOiAkKEJVSUxEX1RIRU1FX0RJUikvZGVmYXVsdC5lZGoKKworJChCVUlM
RF9USEVNRV9ESVIpL2RlZmF1bHQuZWRqOiBNYWtlZmlsZSAkKEVYVFJBX0RJU1QpCisJbWtkaXIg
LXAgJChCVUlMRF9USEVNRV9ESVIpCisJJChFREpFX0NDKSAkKEVESkVfRkxBR1MpIFwKKwlXZWJL
aXQvZWZsL0RlZmF1bHRUaGVtZS9kZWZhdWx0LmVkYyBcCisJJChCVUlMRF9USEVNRV9ESVIpL2Rl
ZmF1bHQuZWRqCisKK0NMRUFORklMRVMgKz0gXAorCSQoQlVJTERfVEhFTUVfRElSKS9kZWZhdWx0
LmVkagpkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvZGVmYXVsdC5lZGMgYi9X
ZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS9kZWZhdWx0LmVkYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi43ZTBmZTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2VmbC9EZWZh
dWx0VGhlbWUvZGVmYXVsdC5lZGMKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAgICBDb3B5cmlnaHQg
KEMpIDIwMDgsMjAwOSBJTmRUIC0gSW5zdGl0dXRvIE5va2lhIGRlIFRlY25vbG9naWEKKyAgICBD
b3B5cmlnaHQgKEMpIDIwMDksMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworICAgIENv
cHlyaWdodCAoQykgMjAwOSwyMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgZmls
ZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCitjb2xvcl9jbGFzc2VzIHsK
KyAgIGNvbG9yX2NsYXNzIHsKKyAgICAgIG5hbWU6ICJ3ZWJraXQvc2VsZWN0aW9uL2FjdGl2ZSI7
CisgICAgICBjb2xvcjogMjU1IDI1NSAyNTUgMjU1OyAvKiBmb3JlZ3JvdW5kICovCisgICAgICBj
b2xvcjI6IDMyIDAgMjAwIDI1NTsgLyogYmFja2dyb3VuZCAqLworICAgfQorICAgY29sb3JfY2xh
c3MgeworICAgICAgbmFtZTogIndlYmtpdC9zZWxlY3Rpb24vaW5hY3RpdmUiOworICAgICAgY29s
b3I6IDI1NSAyNTUgMjU1IDI1NTsgLyogZm9yZWdyb3VuZCAqLworICAgICAgY29sb3IyOiAxMjgg
MCAyNTUgMTI4OyAvKiBiYWNrZ3JvdW5kICovCisgICB9CisgICBjb2xvcl9jbGFzcyB7CisgICAg
ICBuYW1lOiAid2Via2l0L2ZvY3VzX3JpbmciOworICAgICAgY29sb3I6IDI2IDE4MiAyNDAgMjU1
OyAvKiBmb3JlZ3JvdW5kICovCisgICAgICAvKiBubyBiYWNrZ3JvdW5kLCBjb25zaWRlciB0cmFu
c3BhcmVudCAqLworICAgfQorICAgY29sb3JfY2xhc3MgeworICAgICAgbmFtZTogIndlYmtpdC9i
dXR0b24vdGV4dCI7CisgICAgICBjb2xvcjogMzIgMzIgMzIgMjU1OworICAgICAgLyogbm8gYmFj
a2dyb3VuZCwgY29uc2lkZXIgdHJhbnNwYXJlbnQgKi8KKyAgIH0KKyAgIGNvbG9yX2NsYXNzIHsK
KyAgICAgIG5hbWU6ICJ3ZWJraXQvY29tYm8vdGV4dCI7CisgICAgICBjb2xvcjogMzIgMzIgMzIg
MjU1OworICAgICAgLyogbm8gYmFja2dyb3VuZCwgY29uc2lkZXIgdHJhbnNwYXJlbnQgKi8KKyAg
IH0KKyAgIGNvbG9yX2NsYXNzIHsKKyAgICAgIG5hbWU6ICJ3ZWJraXQvZW50cnkvdGV4dCI7Cisg
ICAgICBjb2xvcjogMzIgMzIgMzIgMjU1OworICAgICAgLyogbm8gYmFja2dyb3VuZCwgY29uc2lk
ZXIgdHJhbnNwYXJlbnQgKi8KKyAgIH0KKyAgIGNvbG9yX2NsYXNzIHsKKyAgICAgIG5hbWU6ICJ3
ZWJraXQvc2VhcmNoL3RleHQiOworICAgICAgY29sb3I6IDMyIDMyIDMyIDI1NTsKKyAgICAgIC8q
IG5vIGJhY2tncm91bmQsIGNvbnNpZGVyIHRyYW5zcGFyZW50ICovCisgICB9Cit9CisKK2NvbGxl
Y3Rpb25zIHsKKyAgIGdyb3VwIHsgbmFtZTogIndlYmtpdC9iYXNlIjsKKyAgICAgIC8qIHNwZWNp
ZmljIGNvbG9ycyBhbmQgYWxsLCB1c2VkIHRvIGxpc3RlbiBmb3IgY29sb3JfY2xhc3MgY2hhbmdl
cyAqLworICAgfQorCisjaW5jbHVkZSAid2lkZ2V0L2J1dHRvbi9idXR0b24uZWRjIgorI2luY2x1
ZGUgIndpZGdldC9lbnRyeS9lbnRyeS5lZGMiCisjaW5jbHVkZSAid2lkZ2V0L3Njcm9sbGJhci9z
Y3JvbGxiYXIuZWRjIgorI2luY2x1ZGUgIndpZGdldC9yYWRpby9yYWRpby5lZGMiCisjaW5jbHVk
ZSAid2lkZ2V0L2NoZWNrL2NoZWNrLmVkYyIKKyNpbmNsdWRlICJ3aWRnZXQvZW50cnkvZW50cnku
ZWRjIgorI2luY2x1ZGUgIndpZGdldC9jb21iby9jb21iby5lZGMiCisjaW5jbHVkZSAid2lkZ2V0
L2ZpbGUvZmlsZS5lZGMiCisjaW5jbHVkZSAid2lkZ2V0L3NlYXJjaC9maWVsZC9zZWFyY2hfZmll
bGQuZWRjIgorI2luY2x1ZGUgIndpZGdldC9zZWFyY2gvY2FuY2VsL3NlYXJjaF9jYW5jZWwuZWRj
IgorI2luY2x1ZGUgIndpZGdldC9zZWFyY2gvZGVjb3JhdGlvbi9zZWFyY2hfZGVjb3JhdGlvbi5l
ZGMiCit9CmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvYnV0dG9u
L2J1dHRvbi5lZGMgYi9XZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvYnV0dG9uL2J1dHRv
bi5lZGMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjAzZGFhMAotLS0gL2Rl
di9udWxsCisrKyBiL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9idXR0b24vYnV0dG9u
LmVkYwpAQCAtMCwwICsxLDE3NiBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDgsMjAwOSBJ
TmRUIC0gSW5zdGl0dXRvIE5va2lhIGRlIFRlY25vbG9naWEKKyAgICBDb3B5cmlnaHQgKEMpIDIw
MDksMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworICAgIENvcHlyaWdodCAoQykgMjAw
OSwyMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAg
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKworICAgIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisqLworCisgICBncm91cCB7CisgICAgICBuYW1lOiAid2Via2l0
L3dpZGdldC9idXR0b24iOworCisgICAgICBpbWFnZXMgeworICAgICAgICAgaW1hZ2U6ICJ3aWRn
ZXQvYnV0dG9uL2ltZ19idXR0b25fbm9ybWFsLnBuZyIgQ09NUDsKKyAgICAgICAgIGltYWdlOiAi
d2lkZ2V0L2J1dHRvbi9pbWdfYnV0dG9uX3ByZXNzLnBuZyIgQ09NUDsKKyAgICAgICAgIGltYWdl
OiAid2lkZ2V0L2J1dHRvbi9pbWdfYnV0dG9uX2hvdmVyLnBuZyIgQ09NUDsKKyAgICAgICAgIGlt
YWdlOiAid2lkZ2V0L2J1dHRvbi9pbWdfYnV0dG9uX2ZvY3VzLnBuZyIgQ09NUDsKKyAgICAgIH0K
KworICAgICAgc2NyaXB0IHsKKyAgICAgICAgICBwdWJsaWMgaXNFbmFibGVkOworICAgICAgICAg
IHB1YmxpYyBpc1ByZXNzZWQ7CisgICAgICAgICAgcHVibGljIGlzQ2hlY2tlZDsKKyAgICAgICAg
ICBwdWJsaWMgaXNGb2N1c2VkOworICAgICAgICAgIHB1YmxpYyBpc0hvdmVyZWQ7CisKKyAgICAg
ICAgICBwdWJsaWMgc2hvdygpIHsKKworICAgICAgICAgICAgICBpZiAoZ2V0X2ludChpc0VuYWJs
ZWQpID09IDEpIHsKKyAgICAgICAgICAgICAgICAgIHNldF9zdGF0ZShQQVJUOiJidXR0b24iLCAi
ZGVmYXVsdCIsIDAuMCk7CisgICAgICAgICAgICAgICAgICBpZiAoZ2V0X2ludChpc0ZvY3VzZWQp
ID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICBzZXRfc3RhdGUoUEFSVDoiYnV0dG9uIiwg
ImZvY3VzZWQiLCAwLjApOworICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRfaW50KGlzUHJl
c3NlZCkgPT0gMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0X3N0YXRlKFBBUlQ6ImJ1
dHRvbiIsICJwcmVzc2VkIiwgMC4wKTsKKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICBlbHNlIGlmIChnZXRfaW50KGlzSG92ZXJlZCkgPT0gMSkgeworICAgICAgICAg
ICAgICAgICAgICAgIHNldF9zdGF0ZShQQVJUOiJidXR0b24iLCAiaG92ZXJlZCIsIDAuMCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGdldF9pbnQoaXNQcmVzc2VkKSA9PSAxKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRfc3RhdGUoUEFSVDoiYnV0dG9uIiwgInByZXNzZWQiLCAw
LjApOworCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgc2V0X3N0YXRlKFBBUlQ6ImJ1dHRvbiIsICJkaXNh
YmxlZCIsIDAuMCk7CisgICAgICAgICAgfQorICAgICAgfQorCisgICAgICBwYXJ0cyB7CisKKyAg
ICAgICAgIHBhcnQgeworICAgICAgICAgICAgbmFtZTogImJ1dHRvbiI7CisgICAgICAgICAgICB0
eXBlOiBJTUFHRTsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uIHsKKyAgICAgICAgICAgICAgIHN0
YXRlOiAiZGVmYXVsdCIgMC4wOworICAgICAgICAgICAgICAgbWluOiAyNSAxMDsKKyAgICAgICAg
ICAgICAgIGltYWdlIHsKKyAgICAgICAgICAgICAgICAgIG5vcm1hbDogIndpZGdldC9idXR0b24v
aW1nX2J1dHRvbl9ub3JtYWwucG5nIjsKKyAgICAgICAgICAgICAgICAgIGJvcmRlcjogNiA2IDYg
NjsKKyAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlc2NyaXB0
aW9uIHsKKyAgICAgICAgICAgICAgIHN0YXRlOiAicHJlc3NlZCIgMC4wOworICAgICAgICAgICAg
ICAgaW5oZXJpdDogImRlZmF1bHQiIDAuMDsKKyAgICAgICAgICAgICAgIGltYWdlIHsKKyAgICAg
ICAgICAgICAgICAgIG5vcm1hbDogIndpZGdldC9idXR0b24vaW1nX2J1dHRvbl9wcmVzcy5wbmci
OworICAgICAgICAgICAgICAgICAgYm9yZGVyOiA4IDggOCA4OworICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVzY3JpcHRpb24geworICAgICAgICAgICAgICAg
c3RhdGU6ICJkaXNhYmxlZCIgMC4wOworICAgICAgICAgICAgICAgaW5oZXJpdDogImRlZmF1bHQi
IDAuMDsKKyAgICAgICAgICAgICAgIGNvbG9yOiAyNTUgMjU1IDI1NSAxNTA7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBkZXNjcmlwdGlvbiB7CisgICAgICAgICAgICAgICBzdGF0ZTogImhv
dmVyZWQiIDAuMDsKKyAgICAgICAgICAgICAgIGluaGVyaXQ6ICJkZWZhdWx0IiAwLjA7CisgICAg
ICAgICAgICAgICBpbWFnZSB7CisgICAgICAgICAgICAgICAgICBub3JtYWw6ICJ3aWRnZXQvYnV0
dG9uL2ltZ19idXR0b25faG92ZXIucG5nIjsKKyAgICAgICAgICAgICAgICAgIGJvcmRlcjogNiA2
IDYgNjsKKyAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlc2Ny
aXB0aW9uIHsKKyAgICAgICAgICAgICAgIHN0YXRlOiAiZm9jdXNlZCIgMC4wOworICAgICAgICAg
ICAgICAgaW5oZXJpdDogImRlZmF1bHQiIDAuMDsKKyAgICAgICAgICAgICAgIGltYWdlIHsKKyAg
ICAgICAgICAgICAgICAgIG5vcm1hbDogIndpZGdldC9idXR0b24vaW1nX2J1dHRvbl9mb2N1cy5w
bmciOworICAgICAgICAgICAgICAgICAgYm9yZGVyOiA2IDYgNiA2OworICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICAgfQorCisgICAgICAgICBwYXJ0IHsKKyAgICAgICAg
ICAgIG5hbWU6ICJ0ZXh0X2NvbmZpbmVtZW50IjsKKyAgICAgICAgICAgIHR5cGU6IFJFQ1Q7Cisg
ICAgICAgICAgICBkZXNjcmlwdGlvbiB7CisgICAgICAgICAgICAgICBzdGF0ZTogImRlZmF1bHQi
IDAuMDsKKyAgICAgICAgICAgICAgIGNvbG9yOiAwIDAgMCAwOworICAgICAgICAgICAgICAgcmVs
MSB7CisgICAgICAgICAgICAgICAgICByZWxhdGl2ZTogMC4wIDAuMDsKKyAgICAgICAgICAgICAg
ICAgIG9mZnNldDogMTAgNTsKKyAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgIHJlbDIg
eworICAgICAgICAgICAgICAgICAgcmVsYXRpdmU6IDEuMCAxLjA7CisgICAgICAgICAgICAgICAg
ICBvZmZzZXQ6IC0xMSAtNjsKKyAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgIH0KKyAgICAgIH0KKworICAgICAgcHJvZ3JhbXMgeworICAgICAgICAgcHJvZ3JhbSB7Cisg
ICAgICAgICAgICBuYW1lOiAiZW5hYmxlZCI7CisgICAgICAgICAgICBzaWduYWw6ICJlbmFibGVk
IjsKKyAgICAgICAgICAgIHNjcmlwdCB7CisgICAgICAgICAgICAgICBzZXRfaW50KGlzRW5hYmxl
ZCwgMSk7CisgICAgICAgICAgICAgICBzaG93KCk7CisgICAgICAgICAgICB9CisgICAgICAgICB9
CisgICAgICAgICBwcm9ncmFtIHsKKyAgICAgICAgICAgIG5hbWU6ICJwcmVzc2VkIjsKKyAgICAg
ICAgICAgIHNpZ25hbDogInByZXNzZWQiOworICAgICAgICAgICAgc2NyaXB0IHsKKyAgICAgICAg
ICAgICAgIHNldF9pbnQoaXNQcmVzc2VkLCAxKTsKKyAgICAgICAgICAgICAgIHNob3coKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgICAgcHJvZ3JhbSB7CisgICAgICAgICAgICBu
YW1lOiAiY2hlY2tlZCI7CisgICAgICAgICAgICBzaWduYWw6ICJjaGVja2VkIjsKKyAgICAgICAg
ICAgIHNjcmlwdCB7CisgICAgICAgICAgICAgICBzZXRfaW50KGlzQ2hlY2tlZCwgMSk7CisgICAg
ICAgICAgICAgICBzaG93KCk7CisgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgICAgICBw
cm9ncmFtIHsKKyAgICAgICAgICAgIG5hbWU6ICJmb2N1c2VkIjsKKyAgICAgICAgICAgIHNpZ25h
bDogImZvY3VzZWQiOworICAgICAgICAgICAgc2NyaXB0IHsKKyAgICAgICAgICAgICAgIHNldF9p
bnQoaXNGb2N1c2VkLCAxKTsKKyAgICAgICAgICAgICAgIHNob3coKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgIH0KKyAgICAgICAgICBwcm9ncmFtIHsKKyAgICAgICAgICAgIG5hbWU6ICJob3Zl
cmVkIjsKKyAgICAgICAgICAgIHNpZ25hbDogImhvdmVyZWQiOworICAgICAgICAgICAgc2NyaXB0
IHsKKyAgICAgICAgICAgICAgIHNldF9pbnQoaXNIb3ZlcmVkLCAxKTsKKyAgICAgICAgICAgICAg
IHNob3coKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgICAgcHJvZ3JhbSB7Cisg
ICAgICAgICAgICBuYW1lOiAicmVzZXQiOworICAgICAgICAgICAgc2lnbmFsOiAicmVzZXQiOwor
ICAgICAgICAgICAgc2NyaXB0IHsKKyAgICAgICAgICAgICAgIHNldF9pbnQoaXNFbmFibGVkLCAw
KTsKKyAgICAgICAgICAgICAgIHNldF9pbnQoaXNQcmVzc2VkLCAwKTsKKyAgICAgICAgICAgICAg
IHNldF9pbnQoaXNDaGVja2VkLCAwKTsKKyAgICAgICAgICAgICAgIHNldF9pbnQoaXNGb2N1c2Vk
LCAwKTsKKyAgICAgICAgICAgICAgIHNldF9pbnQoaXNIb3ZlcmVkLCAwKTsKKyAgICAgICAgICAg
ICAgIHNob3coKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgIH0KKyAgIH0KZGlm
ZiAtLWdpdCBhL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9idXR0b24vaW1nX2J1dHRv
bl9mb2N1cy5wbmcgYi9XZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvYnV0dG9uL2ltZ19i
dXR0b25fZm9jdXMucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhNDlm
OTIKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9XZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93
aWRnZXQvYnV0dG9uL2ltZ19idXR0b25fZm9jdXMucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L2J1dHRvbi9pbWdfYnV0dG9uX2hvdmVyLnBuZyBi
L1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9idXR0b24vaW1nX2J1dHRvbl9ob3Zlci5w
bmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFmNzU5NwpCaW5hcnkgZmls
ZXMgL2Rldi9udWxsIGFuZCBiL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9idXR0b24v
aW1nX2J1dHRvbl9ob3Zlci5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL0RlZmF1
bHRUaGVtZS93aWRnZXQvYnV0dG9uL2ltZ19idXR0b25fbm9ybWFsLnBuZyBiL1dlYktpdC9lZmwv
RGVmYXVsdFRoZW1lL3dpZGdldC9idXR0b24vaW1nX2J1dHRvbl9ub3JtYWwucG5nCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxODMwY2UKQmluYXJ5IGZpbGVzIC9kZXYvbnVs
bCBhbmQgYi9XZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvYnV0dG9uL2ltZ19idXR0b25f
bm9ybWFsLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dp
ZGdldC9idXR0b24vaW1nX2J1dHRvbl9wcmVzcy5wbmcgYi9XZWJLaXQvZWZsL0RlZmF1bHRUaGVt
ZS93aWRnZXQvYnV0dG9uL2ltZ19idXR0b25fcHJlc3MucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjFhMDdhM2IKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9XZWJL
aXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvYnV0dG9uL2ltZ19idXR0b25fcHJlc3MucG5nIGRp
ZmZlcgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L2NoZWNrL2No
ZWNrLmVkYyBiL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9jaGVjay9jaGVjay5lZGMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY0OTBmNgotLS0gL2Rldi9udWxs
CisrKyBiL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9jaGVjay9jaGVjay5lZGMKQEAg
LTAsMCArMSwxODEgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA4LDIwMDkgSU5kVCAtIElu
c3RpdHV0byBOb2tpYSBkZSBUZWNub2xvZ2lhCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LDIwMTAg
UHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDksMjAxMCBT
YW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisKKyAgICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorKi8KKworICAgZ3JvdXAgeworCisgICAgICBuYW1lOiAid2Via2l0L3dpZGdl
dC9jaGVja2JveCI7CisgICAgICBtaW46IDE0IDE0OworCisgICAgICBpbWFnZXMgeworICAgICAg
ICAgaW1hZ2U6ICJ3aWRnZXQvY2hlY2svaW1nX2NoZWNrX29uLnBuZyIgQ09NUDsKKyAgICAgICAg
IGltYWdlOiAid2lkZ2V0L2NoZWNrL2ltZ19jaGVja19vZmYucG5nIiBDT01QOworICAgICAgICAg
aW1hZ2U6ICJ3aWRnZXQvY2hlY2svaW1nX2NoZWNrX29mZl9mb2N1cy5wbmciIENPTVA7CisgICAg
ICAgICBpbWFnZTogIndpZGdldC9jaGVjay9pbWdfY2hlY2tfb25fZm9jdXMucG5nIiBDT01QOwor
ICAgICAgICAgaW1hZ2U6ICJ3aWRnZXQvY2hlY2svaW1nX2NoZWNrX29mZl9ob3Zlci5wbmciIENP
TVA7CisgICAgICAgICBpbWFnZTogIndpZGdldC9jaGVjay9pbWdfY2hlY2tfb25faG92ZXIucG5n
IiBDT01QOworICAgICAgfQorCisgICAgICBzY3JpcHQgeworICAgICAgICAgIHB1YmxpYyBpc0Vu
YWJsZWQ7CisgICAgICAgICAgcHVibGljIGlzUHJlc3NlZDsKKyAgICAgICAgICBwdWJsaWMgaXND
aGVja2VkOworICAgICAgICAgIHB1YmxpYyBpc0ZvY3VzZWQ7CisgICAgICAgICAgcHVibGljIGlz
SG92ZXJlZDsKKworICAgICAgICAgIHB1YmxpYyBzaG93KCkgeworICAgICAgICAgICAgICBpZiAo
Z2V0X2ludChpc0VuYWJsZWQpID09IDEpIHsKKyAgICAgICAgICAgICAgICAgIHNldF9zdGF0ZShQ
QVJUOiJjaGVja19idXR0b24iLCAiZGVmYXVsdCIsIDAuMCk7CisgICAgICAgICAgICAgICAgICBp
ZiAoZ2V0X2ludChpc0NoZWNrZWQpID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICBzZXRf
c3RhdGUoUEFSVDoiY2hlY2tfYnV0dG9uIiwgImVuYWJsZWRfY2hlY2tlZCIsIDAuMCk7CisgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGdldF9pbnQoaXNGb2N1c2VkKSA9PSAxKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRfc3RhdGUoUEFSVDoiY2hlY2tfYnV0dG9uIiwgImZvY3VzX2No
ZWNrZWQiLCAwLjApOworICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRfaW50KGlzSG92ZXJl
ZCkgPT0gMSAmJiBnZXRfaW50KGlzRm9jdXNlZCkgPT0gMCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0X3N0YXRlKFBBUlQ6ImNoZWNrX2J1dHRvbiIsICJob3ZlcmVkX2NoZWNrZWQiLCAw
LjApOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGdldF9pbnQoaXNGb2N1c2VkKSA9PSAxKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRfc3RhdGUoUEFSVDoiY2hlY2tfYnV0dG9uIiwgImZvY3VzZWQi
LCAwLjApOworICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRfaW50KGlzSG92ZXJlZCkgPT0g
MSAmJiBnZXRfaW50KGlzRm9jdXNlZCkgPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0X3N0YXRlKFBBUlQ6ImNoZWNrX2J1dHRvbiIsICJob3ZlcmVkIiwgMC4wKTsKKyAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgIHNldF9zdGF0ZShQQVJUOiJjaGVja19idXR0b24iLCAiZGlzYWJsZWQiLCAw
LjApOworICAgICAgICAgICAgICAgICAgaWYgKGdldF9pbnQoaXNDaGVja2VkKSA9PSAxKQorICAg
ICAgICAgICAgICAgICAgICAgIHNldF9zdGF0ZShQQVJUOiJjaGVja19idXR0b24iLCAiZGlzYWJs
ZWRfY2hlY2tlZCIsIDAuMCk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICB9
CisKKyAgICAgIHBhcnRzIHsKKyAgICAgICAgIHBhcnQgeworICAgICAgICAgICAgbmFtZTogImNo
ZWNrX2J1dHRvbiI7CisgICAgICAgICAgICB0eXBlOiBJTUFHRTsKKyAgICAgICAgICAgIGRlc2Ny
aXB0aW9uIHsKKyAgICAgICAgICAgICAgIHN0YXRlOiAiZGVmYXVsdCIgMC4wOworICAgICAgICAg
ICAgICAgbWluOiAxNCAxNDsKKyAgICAgICAgICAgICAgIG1heDogMTQgMTQ7CisgICAgICAgICAg
ICAgICBpbWFnZSB7CisgICAgICAgICAgICAgICAgICBub3JtYWw6ICJ3aWRnZXQvY2hlY2svaW1n
X2NoZWNrX29mZi5wbmciOworICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZGVzY3JpcHRpb24geworICAgICAgICAgICAgICAgc3RhdGU6ICJlbmFibGVkX2NoZWNr
ZWQiIDAuMDsKKyAgICAgICAgICAgICAgIGluaGVyaXQ6ICJkZWZhdWx0IiAwLjA7CisgICAgICAg
ICAgICAgICBpbWFnZSB7CisgICAgICAgICAgICAgICAgICBub3JtYWw6ICJ3aWRnZXQvY2hlY2sv
aW1nX2NoZWNrX29uLnBuZyI7CisgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBkZXNjcmlwdGlvbiB7CisgICAgICAgICAgICAgICBzdGF0ZTogImRpc2FibGVkX2No
ZWNrZWQiIDAuMDsKKyAgICAgICAgICAgICAgIGluaGVyaXQ6ICJlbmFibGVkX2NoZWNrZWQiIDAu
MDsKKyAgICAgICAgICAgICAgIGNvbG9yOiAyNTUgMjU1IDI1NSAxNTA7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBkZXNjcmlwdGlvbiB7CisgICAgICAgICAgICAgICBzdGF0ZTogImRpc2Fi
bGVkIiAwLjA7CisgICAgICAgICAgICAgICBpbmhlcml0OiAiZGVmYXVsdCIgMC4wOworICAgICAg
ICAgICAgICAgY29sb3I6IDI1NSAyNTUgMjU1IDE1MDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGRlc2NyaXB0aW9uIHsKKyAgICAgICAgICAgICAgIHN0YXRlOiAiaG92ZXJlZF9jaGVja2Vk
IiAwLjA7CisgICAgICAgICAgICAgICBpbmhlcml0OiAiZGVmYXVsdCIgMC4wOworICAgICAgICAg
ICAgICAgaW1hZ2UgeworICAgICAgICAgICAgICAgICAgbm9ybWFsOiAid2lkZ2V0L2NoZWNrL2lt
Z19jaGVja19vbl9ob3Zlci5wbmciOworICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICAgICAgZGVzY3JpcHRpb24geworICAgICAgICAgICAgICAgc3RhdGU6ICJob3ZlcmVk
IiAwLjA7CisgICAgICAgICAgICAgICBpbmhlcml0OiAiZGVmYXVsdCIgMC4wOworICAgICAgICAg
ICAgICAgaW1hZ2UgeworICAgICAgICAgICAgICAgICAgbm9ybWFsOiAid2lkZ2V0L2NoZWNrL2lt
Z19jaGVja19vZmZfaG92ZXIucG5nIjsKKyAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGRlc2NyaXB0aW9uIHsKKyAgICAgICAgICAgICAgIHN0YXRlOiAiZm9jdXNf
Y2hlY2tlZCIgMC4wOworICAgICAgICAgICAgICAgaW5oZXJpdDogImRlZmF1bHQiIDAuMDsKKyAg
ICAgICAgICAgICAgIGltYWdlIHsKKyAgICAgICAgICAgICAgICAgIG5vcm1hbDogIndpZGdldC9j
aGVjay9pbWdfY2hlY2tfb25fZm9jdXMucG5nIjsKKyAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGRlc2NyaXB0aW9uIHsKKyAgICAgICAgICAgICAgIHN0YXRlOiAi
Zm9jdXNlZCIgMC4wOworICAgICAgICAgICAgICAgaW5oZXJpdDogImRlZmF1bHQiIDAuMDsKKyAg
ICAgICAgICAgICAgIGltYWdlIHsKKyAgICAgICAgICAgICAgICAgIG5vcm1hbDogIndpZGdldC9j
aGVjay9pbWdfY2hlY2tfb2ZmX2ZvY3VzLnBuZyI7CisgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgICB9CisgICAgICB9CisgICAgICBwcm9ncmFtcyB7CisgICAgICAgICBw
cm9ncmFtIHsKKyAgICAgICAgICAgIG5hbWU6ICJlbmFibGVkIjsKKyAgICAgICAgICAgIHNpZ25h
bDogImVuYWJsZWQiOworICAgICAgICAgICAgc2NyaXB0IHsKKyAgICAgICAgICAgICAgIHNldF9p
bnQoaXNFbmFibGVkLCAxKTsKKyAgICAgICAgICAgICAgIHNob3coKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgIH0KKyAgICAgICAgIHByb2dyYW0geworICAgICAgICAgICAgbmFtZTogInByZXNz
ZWQiOworICAgICAgICAgICAgc2lnbmFsOiAicHJlc3NlZCI7CisgICAgICAgICAgICBzY3JpcHQg
eworICAgICAgICAgICAgICAgc2V0X2ludChpc1ByZXNzZWQsIDEpOworICAgICAgICAgICAgICAg
c2hvdygpOworICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICAgICBwcm9ncmFtIHsKKyAg
ICAgICAgICAgIG5hbWU6ICJjaGVja2VkIjsKKyAgICAgICAgICAgIHNpZ25hbDogImNoZWNrZWQi
OworICAgICAgICAgICAgc2NyaXB0IHsKKyAgICAgICAgICAgICAgIHNldF9pbnQoaXNDaGVja2Vk
LCAxKTsKKyAgICAgICAgICAgICAgIHNob3coKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0K
KyAgICAgICAgIHByb2dyYW0geworICAgICAgICAgICAgbmFtZTogImZvY3VzZWQiOworICAgICAg
ICAgICAgc2lnbmFsOiAiZm9jdXNlZCI7CisgICAgICAgICAgICBzY3JpcHQgeworICAgICAgICAg
ICAgICAgc2V0X2ludChpc0ZvY3VzZWQsIDEpOworICAgICAgICAgICAgICAgc2hvdygpOworICAg
ICAgICAgICAgfQorICAgICAgICAgfQorICAgICAgICAgIHByb2dyYW0geworICAgICAgICAgICAg
bmFtZTogImhvdmVyZWQiOworICAgICAgICAgICAgc2lnbmFsOiAiaG92ZXJlZCI7CisgICAgICAg
ICAgICBzY3JpcHQgeworICAgICAgICAgICAgICAgc2V0X2ludChpc0hvdmVyZWQsIDEpOworICAg
ICAgICAgICAgICAgc2hvdygpOworICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICAgICBw
cm9ncmFtIHsKKyAgICAgICAgICAgIG5hbWU6ICJyZXNldCI7CisgICAgICAgICAgICBzaWduYWw6
ICJyZXNldCI7CisgICAgICAgICAgICBzY3JpcHQgeworICAgICAgICAgICAgICAgc2V0X2ludChp
c0VuYWJsZWQsIDApOworICAgICAgICAgICAgICAgc2V0X2ludChpc1ByZXNzZWQsIDApOworICAg
ICAgICAgICAgICAgc2V0X2ludChpc0NoZWNrZWQsIDApOworICAgICAgICAgICAgICAgc2V0X2lu
dChpc0ZvY3VzZWQsIDApOworICAgICAgICAgICAgICAgc2V0X2ludChpc0hvdmVyZWQsIDApOwor
ICAgICAgICAgICAgICAgc2hvdygpOworICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICAg
fQorICAgfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L2NoZWNr
L2ltZ19jaGVja19vZmYucG5nIGIvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L2NoZWNr
L2ltZ19jaGVja19vZmYucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlh
MGMzNWUKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9XZWJLaXQvZWZsL0RlZmF1bHRUaGVt
ZS93aWRnZXQvY2hlY2svaW1nX2NoZWNrX29mZi5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJL
aXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvY2hlY2svaW1nX2NoZWNrX29mZl9mb2N1cy5wbmcg
Yi9XZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvY2hlY2svaW1nX2NoZWNrX29mZl9mb2N1
cy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTAxZDIwMgpCaW5hcnkg
ZmlsZXMgL2Rldi9udWxsIGFuZCBiL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9jaGVj
ay9pbWdfY2hlY2tfb2ZmX2ZvY3VzLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwv
RGVmYXVsdFRoZW1lL3dpZGdldC9jaGVjay9pbWdfY2hlY2tfb2ZmX2hvdmVyLnBuZyBiL1dlYktp
dC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9jaGVjay9pbWdfY2hlY2tfb2ZmX2hvdmVyLnBuZwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjg1Y2YxCkJpbmFyeSBmaWxlcyAv
ZGV2L251bGwgYW5kIGIvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L2NoZWNrL2ltZ19j
aGVja19vZmZfaG92ZXIucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9EZWZhdWx0
VGhlbWUvd2lkZ2V0L2NoZWNrL2ltZ19jaGVja19vbi5wbmcgYi9XZWJLaXQvZWZsL0RlZmF1bHRU
aGVtZS93aWRnZXQvY2hlY2svaW1nX2NoZWNrX29uLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4zZDM5ZDk1CkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvV2ViS2l0
L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L2NoZWNrL2ltZ19jaGVja19vbi5wbmcgZGlmZmVyCmRp
ZmYgLS1naXQgYS9XZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvY2hlY2svaW1nX2NoZWNr
X29uX2ZvY3VzLnBuZyBiL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9jaGVjay9pbWdf
Y2hlY2tfb25fZm9jdXMucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIy
OTQ2YTUKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9XZWJLaXQvZWZsL0RlZmF1bHRUaGVt
ZS93aWRnZXQvY2hlY2svaW1nX2NoZWNrX29uX2ZvY3VzLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBh
L1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9jaGVjay9pbWdfY2hlY2tfb25faG92ZXIu
cG5nIGIvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L2NoZWNrL2ltZ19jaGVja19vbl9o
b3Zlci5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJjZDA3ZgpCaW5h
cnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9j
aGVjay9pbWdfY2hlY2tfb25faG92ZXIucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Vm
bC9EZWZhdWx0VGhlbWUvd2lkZ2V0L2NvbWJvL2NvbWJvLmVkYyBiL1dlYktpdC9lZmwvRGVmYXVs
dFRoZW1lL3dpZGdldC9jb21iby9jb21iby5lZGMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uOWM0MzZjYwotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9lZmwvRGVmYXVsdFRo
ZW1lL3dpZGdldC9jb21iby9jb21iby5lZGMKQEAgLTAsMCArMSwzMDYgQEAKKy8qCisgICAgQ29w
eXJpZ2h0IChDKSAyMDA4LDIwMDkgSU5kVCAtIEluc3RpdHV0byBOb2tpYSBkZSBUZWNub2xvZ2lh
CisgICAgQ29weXJpZ2h0IChDKSAyMDA5LDIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMK
KyAgICBDb3B5cmlnaHQgKEMpIDIwMDksMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBU
aGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGZpbGUgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworZ3JvdXAgewor
ICAgIG5hbWU6ICJ3ZWJraXQvd2lkZ2V0L2NvbWJvIjsKKworICAgIGltYWdlcyB7CisgICAgICAg
IGltYWdlOiAid2lkZ2V0L2NvbWJvL2NvbWJvX25vcm1hbC5wbmciIENPTVA7CisgICAgICAgIGlt
YWdlOiAid2lkZ2V0L2NvbWJvL2NvbWJvX25vcm1hbF9idXR0b24ucG5nIiBDT01QOworICAgICAg
ICBpbWFnZTogIndpZGdldC9jb21iby9jb21ib19ob3Zlci5wbmciIENPTVA7CisgICAgICAgIGlt
YWdlOiAid2lkZ2V0L2NvbWJvL2NvbWJvX2hvdmVyX2J1dHRvbi5wbmciIENPTVA7CisgICAgICAg
IGltYWdlOiAid2lkZ2V0L2NvbWJvL2NvbWJvX2ZvY3VzLnBuZyIgQ09NUDsKKyAgICAgICAgaW1h
Z2U6ICJ3aWRnZXQvY29tYm8vY29tYm9fZm9jdXNfYnV0dG9uLnBuZyIgQ09NUDsKKyAgICAgICAg
aW1hZ2U6ICJ3aWRnZXQvY29tYm8vY29tYm9fcHJlc3MucG5nIiBDT01QOworICAgICAgICBpbWFn
ZTogIndpZGdldC9jb21iby9jb21ib19wcmVzc19idXR0b24ucG5nIiBDT01QOworICAgICAgICBp
bWFnZTogIndpZGdldC9jb21iby9pY29uLnBuZyIgQ09NUDsKKyAgICB9CisKKyAgICBzY3JpcHQg
eworICAgICAgICBwdWJsaWMgaXNFbmFibGVkOworICAgICAgICBwdWJsaWMgaXNQcmVzc2VkOwor
ICAgICAgICBwdWJsaWMgaXNDaGVja2VkOworICAgICAgICBwdWJsaWMgaXNGb2N1c2VkOworICAg
ICAgICBwdWJsaWMgaXNIb3ZlcmVkOworCisgICAgICAgIHB1YmxpYyBzaG93KCkgeworICAgICAg
ICAgICAgaWYgKGdldF9pbnQoaXNFbmFibGVkKSA9PSAxKSB7CisgICAgICAgICAgICAgICAgc2V0
X3N0YXRlKFBBUlQ6ImNvbWJvIiwgImRlZmF1bHQiLCAwLjApOworICAgICAgICAgICAgICAgIHNl
dF9zdGF0ZShQQVJUOiJjb21ib19idXR0b24iLCAiZGVmYXVsdCIsIDAuMCk7CisgICAgICAgICAg
ICAgICAgc2V0X3N0YXRlKFBBUlQ6ImNvbWJvX2J1dHRvbl9pY29uIiwgImRlZmF1bHQiLCAwLjAp
OworICAgICAgICAgICAgICAgIGlmIChnZXRfaW50KGlzRm9jdXNlZCkgPT0gMSkgeworICAgICAg
ICAgICAgICAgICAgICBzZXRfc3RhdGUoUEFSVDoiY29tYm8iLCAiZm9jdXNlZCIsIDAuMCk7Cisg
ICAgICAgICAgICAgICAgICAgIHNldF9zdGF0ZShQQVJUOiJjb21ib19idXR0b24iLCAiZm9jdXNl
ZCIsIDAuMCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChnZXRfaW50KGlzUHJlc3NlZCkgPT0g
MSkgeworICAgICAgICAgICAgICAgICAgICAgICAgc2V0X3N0YXRlKFBBUlQ6ImNvbWJvIiwgInBy
ZXNzZWQiLCAwLjApOworICAgICAgICAgICAgICAgICAgICAgICAgc2V0X3N0YXRlKFBBUlQ6ImNv
bWJvX2J1dHRvbiIsICJwcmVzc2VkIiwgMC4wKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChnZXRfaW50KGlzSG92ZXJl
ZCkgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICBzZXRfc3RhdGUoUEFSVDoiY29tYm8iLCAi
aG92ZXJlZCIsIDAuMCk7CisgICAgICAgICAgICAgICAgICAgIHNldF9zdGF0ZShQQVJUOiJjb21i
b19idXR0b24iLCAiaG92ZXJlZCIsIDAuMCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChnZXRf
aW50KGlzUHJlc3NlZCkgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgc2V0X3N0YXRl
KFBBUlQ6ImNvbWJvIiwgInByZXNzZWQiLCAwLjApOworICAgICAgICAgICAgICAgICAgICAgICAg
c2V0X3N0YXRlKFBBUlQ6ImNvbWJvX2J1dHRvbiIsICJwcmVzc2VkIiwgMC4wKTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHNldF9zdGF0ZShQQVJUOiJjb21ibyIsICJkaXNh
YmxlZCIsIDAuMCk7CisgICAgICAgICAgICAgICAgc2V0X3N0YXRlKFBBUlQ6ImNvbWJvX2J1dHRv
biIsICJkaXNhYmxlZCIsIDAuMCk7CisgICAgICAgICAgICAgICAgc2V0X3N0YXRlKFBBUlQ6ImNv
bWJvX2J1dHRvbl9pY29uIiwgImRpc2FibGVkIiwgMC4wKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKworICAgIHBhcnRzIHsKKyAgICAgICAgcGFydCB7CisgICAgICAgICAgICBu
YW1lOiAiY2xpcHBlciI7CisgICAgICAgICAgICB0eXBlOiBSRUNUOworICAgICAgICAgICAgZGVz
Y3JpcHRpb24geworICAgICAgICAgICAgICAgIG1pbjogMzUgMjc7CisgICAgICAgICAgICAgICAg
c3RhdGU6ICJkZWZhdWx0IiAwLjA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICBwYXJ0IHsKKyAgICAgICAgICAgIG5hbWU6ICJjb21ib19jbGlwcGVyIjsKKyAgICAgICAgICAg
IHR5cGU6IFJFQ1Q7CisgICAgICAgICAgICBjbGlwX3RvOiAiY2xpcHBlciI7CisgICAgICAgICAg
ICBkZXNjcmlwdGlvbiB7CisgICAgICAgICAgICAgICAgc3RhdGU6ICJkZWZhdWx0IiAwLjA7Cisg
ICAgICAgICAgICAgICAgcmVsMS50bzogImNsaXBwZXIiOworICAgICAgICAgICAgICAgIHJlbDIg
eworICAgICAgICAgICAgICAgICAgICB0bzogImNsaXBwZXIiOyAKKyAgICAgICAgICAgICAgICAg
ICAgb2Zmc2V0OiAtMzIgLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgcGFydCB7CisgICAgICAgICAgICBuYW1lOiAiY29tYm8iOworICAg
ICAgICAgICAgdHlwZTogSU1BR0U7CisgICAgICAgICAgICBjbGlwX3RvOiAiY29tYm9fY2xpcHBl
ciI7CisgICAgICAgICAgICBkZXNjcmlwdGlvbiB7CisgICAgICAgICAgICAgICAgc3RhdGU6ICJk
ZWZhdWx0IiAwLjA7CisgICAgICAgICAgICAgICAgbWluOiAzNiAyMDsKKyAgICAgICAgICAgICAg
ICBpbWFnZSB7CisgICAgICAgICAgICAgICAgICAgIG5vcm1hbDogIndpZGdldC9jb21iby9jb21i
b19ub3JtYWwucG5nIjsKKyAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiA3IDcgNyA3OworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlc2NyaXB0aW9uIHsK
KyAgICAgICAgICAgICAgIHN0YXRlOiAiZGlzYWJsZWQiIDAuMDsKKyAgICAgICAgICAgICAgIGlu
aGVyaXQ6ICJkZWZhdWx0IiAwLjA7CisgICAgICAgICAgICAgICBjb2xvcjogMjU1IDI1NSAyNTUg
MTUwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVzY3JpcHRpb24geworICAgICAgICAg
ICAgICAgc3RhdGU6ICJob3ZlcmVkIiAwLjA7CisgICAgICAgICAgICAgICBpbmhlcml0OiAiZGVm
YXVsdCIgMC4wOworICAgICAgICAgICAgICAgaW1hZ2UgeworICAgICAgICAgICAgICAgICAgbm9y
bWFsOiAid2lkZ2V0L2NvbWJvL2NvbWJvX2hvdmVyLnBuZyI7CisgICAgICAgICAgICAgICAgICBi
b3JkZXI6IDcgNyA3IDc7CisgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBkZXNjcmlwdGlvbiB7CisgICAgICAgICAgICAgICBzdGF0ZTogImZvY3VzZWQiIDAuMDsK
KyAgICAgICAgICAgICAgIGluaGVyaXQ6ICJkZWZhdWx0IiAwLjA7CisgICAgICAgICAgICAgICBp
bWFnZSB7CisgICAgICAgICAgICAgICAgICBub3JtYWw6ICJ3aWRnZXQvY29tYm8vY29tYm9fZm9j
dXMucG5nIjsKKyAgICAgICAgICAgICAgICAgIGJvcmRlcjogNyA3IDcgNzsKKyAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlc2NyaXB0aW9uIHsKKyAgICAgICAg
ICAgICAgIHN0YXRlOiAicHJlc3NlZCIgMC4wOworICAgICAgICAgICAgICAgaW5oZXJpdDogImRl
ZmF1bHQiIDAuMDsKKyAgICAgICAgICAgICAgIGltYWdlIHsKKyAgICAgICAgICAgICAgICAgIG5v
cm1hbDogIndpZGdldC9jb21iby9jb21ib19wcmVzcy5wbmciOworICAgICAgICAgICAgICAgICAg
Ym9yZGVyOiA3IDcgNyA3OworICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgcGFydCB7CisgICAgICAgICAgICBuYW1lOiAiYnRfY29tYm9fY2xpcHBl
ciI7CisgICAgICAgICAgICB0eXBlOiBSRUNUOworICAgICAgICAgICAgY2xpcF90bzogImNsaXBw
ZXIiOworICAgICAgICAgICAgZGVzY3JpcHRpb24geworICAgICAgICAgICAgICAgIHN0YXRlOiAi
ZGVmYXVsdCIgMC4wOworICAgICAgICAgICAgICAgIHJlbDEgeworICAgICAgICAgICAgICAgICAg
ICB0bzogImNvbWJvX2NsaXBwZXIiOworICAgICAgICAgICAgICAgICAgICByZWxhdGl2ZTogMS4w
IDAuMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVsMiB7CisgICAgICAg
ICAgICAgICAgICAgIHRvOiAiY2xpcHBlciI7IAorICAgICAgICAgICAgICAgICAgICByZWxhdGl2
ZTogMS4wIDEuMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICBwYXJ0IHsKKyAgICAgICAgICAgIG5hbWU6ICJjb21ib19idXR0b24iOworICAg
ICAgICAgICAgdHlwZTogSU1BR0U7CisgICAgICAgICAgICBjbGlwX3RvOiAiYnRfY29tYm9fY2xp
cHBlciI7CisgICAgICAgICAgICBkZXNjcmlwdGlvbiB7CisgICAgICAgICAgICAgICAgc3RhdGU6
ICJkZWZhdWx0IiAwLjA7CisgICAgICAgICAgICAgICAgbWluOiAxOCAyMDsgLy8gMyArIDUgKyBp
bWFnZSB3aWR0aCAoMTApLCA1ICsgNSArIGltYWdlIGhlaWdodCAoMTApCisgICAgICAgICAgICAg
ICAgcmVsMS50bzogImJ0X2NvbWJvX2NsaXBwZXIiOworICAgICAgICAgICAgICAgIGltYWdlIHsK
KyAgICAgICAgICAgICAgICAgICAgIG5vcm1hbDogIndpZGdldC9jb21iby9jb21ib19ub3JtYWxf
YnV0dG9uLnBuZyI7CisgICAgICAgICAgICAgICAgICAgICBib3JkZXI6IDMgNSA1IDU7CisgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZXNjcmlwdGlvbiB7Cisg
ICAgICAgICAgICAgICAgc3RhdGU6ICJkaXNhYmxlZCIgMC4wOworICAgICAgICAgICAgICAgIGlu
aGVyaXQ6ICJkZWZhdWx0IiAwLjA7CisgICAgICAgICAgICAgICAgY29sb3I6IDI1NSAyNTUgMjU1
IDE1MDsKKyAgICAgICAgICAgICAgICByZWwxLnRvOiAiYnRfY29tYm9fY2xpcHBlciI7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBkZXNjcmlwdGlvbiB7CisgICAgICAgICAgICAgICAgc3Rh
dGU6ICJob3ZlcmVkIiAwLjA7CisgICAgICAgICAgICAgICAgaW5oZXJpdDogImRlZmF1bHQiIDAu
MDsKKyAgICAgICAgICAgICAgICByZWwxLnRvOiAiYnRfY29tYm9fY2xpcHBlciI7CisgICAgICAg
ICAgICAgICAgaW1hZ2UgeworICAgICAgICAgICAgICAgICAgICBub3JtYWw6ICJ3aWRnZXQvY29t
Ym8vY29tYm9faG92ZXJfYnV0dG9uLnBuZyI7CisgICAgICAgICAgICAgICAgICAgIGJvcmRlcjog
MyA1IDUgNTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBk
ZXNjcmlwdGlvbiB7CisgICAgICAgICAgICAgICAgc3RhdGU6ICJmb2N1c2VkIiAwLjA7CisgICAg
ICAgICAgICAgICAgaW5oZXJpdDogImRlZmF1bHQiIDAuMDsKKyAgICAgICAgICAgICAgICByZWwx
LnRvOiAiYnRfY29tYm9fY2xpcHBlciI7CisgICAgICAgICAgICAgICAgaW1hZ2UgeworICAgICAg
ICAgICAgICAgICAgICBub3JtYWw6ICJ3aWRnZXQvY29tYm8vY29tYm9fZm9jdXNfYnV0dG9uLnBu
ZyI7CisgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogNiA3IDcgNzsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZXNjcmlwdGlvbiB7CisgICAgICAgICAg
ICAgICAgc3RhdGU6ICJwcmVzc2VkIiAwLjA7CisgICAgICAgICAgICAgICAgaW5oZXJpdDogImRl
ZmF1bHQiIDAuMDsKKyAgICAgICAgICAgICAgICByZWwxLnRvOiAiYnRfY29tYm9fY2xpcHBlciI7
CisgICAgICAgICAgICAgICAgaW1hZ2UgeworICAgICAgICAgICAgICAgICAgICBub3JtYWw6ICJ3
aWRnZXQvY29tYm8vY29tYm9fcHJlc3NfYnV0dG9uLnBuZyI7CisgICAgICAgICAgICAgICAgICAg
IGJvcmRlcjogNiA4IDggODsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworCisgICAgICAgIHBhcnQgeworICAgICAgICAgICAgbmFtZTogImNvbWJvX2J1dHRv
bl9pY29uIjsKKyAgICAgICAgICAgIHR5cGU6IElNQUdFOworICAgICAgICAgICAgY2xpcF90bzog
ImJ0X2NvbWJvX2NsaXBwZXIiOworICAgICAgICAgICAgZGVzY3JpcHRpb24geworICAgICAgICAg
ICAgICAgIHN0YXRlOiAiZGVmYXVsdCIgMC4wOworICAgICAgICAgICAgICAgIG1pbjogMTcgMTM7
CisgICAgICAgICAgICAgICAgbWF4OiAxNyAxMzsKKyAgICAgICAgICAgICAgICBjb2xvcjogMjU1
IDI1NSAyNTUgMTUwOworICAgICAgICAgICAgICAgIHJlbDEgeworICAgICAgICAgICAgICAgICAg
ICB0bzogImJ0X2NvbWJvX2NsaXBwZXIiOworICAgICAgICAgICAgICAgICAgICByZWxhdGl2ZTog
MC41IDAuNTsKKyAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAwIDE7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIHJlbDIgeworICAgICAgICAgICAgICAgICAgICB0bzogImJ0
X2NvbWJvX2NsaXBwZXIiOworICAgICAgICAgICAgICAgICAgICByZWxhdGl2ZTogMC41IDAuNTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZml4ZWQ6IDEgMTsKKyAgICAgICAg
ICAgICAgICBpbWFnZSB7CisgICAgICAgICAgICAgICAgICAgICBub3JtYWw6ICJ3aWRnZXQvY29t
Ym8vaWNvbi5wbmciOworICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiA1IDUgMCAwOworICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVzY3JpcHRpb24gewor
ICAgICAgICAgICAgICAgIHN0YXRlOiAiZGlzYWJsZWQiIDAuMDsKKyAgICAgICAgICAgICAgICBp
bmhlcml0OiAiZGVmYXVsdCIgMC4wOworICAgICAgICAgICAgICAgIGNvbG9yOiAyNTUgMjU1IDI1
NSA1MDsKKyAgICAgICAgICAgICAgICBpbWFnZSB7CisgICAgICAgICAgICAgICAgICAgICBub3Jt
YWw6ICJ3aWRnZXQvY29tYm8vaWNvbi5wbmciOworICAgICAgICAgICAgICAgICAgICAgYm9yZGVy
OiA1IDUgMCAwOworICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAgICAgcGFydCB7CisgICAgICAgICAgICBuYW1lOiAidGV4dF9jb25maW5lbWVudCI7Cisg
ICAgICAgICAgICB0eXBlOiBSRUNUOworICAgICAgICAgICAgZGVzY3JpcHRpb24geworICAgICAg
ICAgICAgICAgc3RhdGU6ICJkZWZhdWx0IiAwLjA7CisgICAgICAgICAgICAgICBjb2xvcjogMCAw
IDAgMDsKKyAgICAgICAgICAgICAgIHJlbDEgeworICAgICAgICAgICAgICAgICAgdG86ICJjb21i
b19jbGlwcGVyIjsKKyAgICAgICAgICAgICAgICAgIG9mZnNldDogMTAgNTsKKyAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgIHJlbDIgeworICAgICAgICAgICAgICAgICAgdG86ICJjb21i
b19jbGlwcGVyIjsKKyAgICAgICAgICAgICAgICAgIG9mZnNldDogLTYgLTY7CisgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgfQorCisgICAgcHJvZ3JhbXMg
eworICAgICAgICBwcm9ncmFtIHsKKyAgICAgICAgICAgIG5hbWU6ICJlbmFibGVkIjsKKyAgICAg
ICAgICAgIHNpZ25hbDogImVuYWJsZWQiOworICAgICAgICAgICAgc2NyaXB0IHsKKyAgICAgICAg
ICAgICAgICBzZXRfaW50KGlzRW5hYmxlZCwgMSk7CisgICAgICAgICAgICAgICAgc2hvdygpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHByb2dyYW0geworICAgICAgICAgICAg
bmFtZTogInByZXNzZWQiOworICAgICAgICAgICAgc2lnbmFsOiAicHJlc3NlZCI7CisgICAgICAg
ICAgICBzY3JpcHQgeworICAgICAgICAgICAgICAgc2V0X2ludChpc1ByZXNzZWQsIDEpOworICAg
ICAgICAgICAgICAgc2hvdygpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHBy
b2dyYW0geworICAgICAgICAgICAgbmFtZTogImZvY3VzZWQiOworICAgICAgICAgICAgc2lnbmFs
OiAiZm9jdXNlZCI7CisgICAgICAgICAgICBzY3JpcHQgeworICAgICAgICAgICAgICAgIHNldF9p
bnQoaXNGb2N1c2VkLCAxKTsKKyAgICAgICAgICAgICAgICBzaG93KCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgcHJvZ3JhbSB7CisgICAgICAgICAgICBuYW1lOiAiaG92ZXJl
ZCI7CisgICAgICAgICAgICBzaWduYWw6ICJob3ZlcmVkIjsKKyAgICAgICAgICAgIHNjcmlwdCB7
CisgICAgICAgICAgICAgICAgc2V0X2ludChpc0hvdmVyZWQsIDEpOworICAgICAgICAgICAgICAg
IHNob3coKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBwcm9ncmFtIHsKKyAg
ICAgICAgICAgIG5hbWU6ICJyZXNldCI7CisgICAgICAgICAgICBzaWduYWw6ICJyZXNldCI7Cisg
ICAgICAgICAgICBzY3JpcHQgeworICAgICAgICAgICAgICAgIHNldF9pbnQoaXNFbmFibGVkLCAw
KTsKKyAgICAgICAgICAgICAgICBzZXRfaW50KGlzUHJlc3NlZCwgMCk7CisgICAgICAgICAgICAg
ICAgc2V0X2ludChpc0NoZWNrZWQsIDApOworICAgICAgICAgICAgICAgIHNldF9pbnQoaXNGb2N1
c2VkLCAwKTsKKyAgICAgICAgICAgICAgICBzZXRfaW50KGlzSG92ZXJlZCwgMCk7CisgICAgICAg
ICAgICAgICAgc2hvdygpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L2NvbWJvL2NvbWJvX2ZvY3Vz
LnBuZyBiL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9jb21iby9jb21ib19mb2N1cy5w
bmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIwMjBhYgpCaW5hcnkgZmls
ZXMgL2Rldi9udWxsIGFuZCBiL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9jb21iby9j
b21ib19mb2N1cy5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL0RlZmF1bHRUaGVt
ZS93aWRnZXQvY29tYm8vY29tYm9fZm9jdXNfYnV0dG9uLnBuZyBiL1dlYktpdC9lZmwvRGVmYXVs
dFRoZW1lL3dpZGdldC9jb21iby9jb21ib19mb2N1c19idXR0b24ucG5nCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlMmJhYzEKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQg
Yi9XZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvY29tYm8vY29tYm9fZm9jdXNfYnV0dG9u
LnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9j
b21iby9jb21ib19ob3Zlci5wbmcgYi9XZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvY29t
Ym8vY29tYm9faG92ZXIucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4
NzZkNmUKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9XZWJLaXQvZWZsL0RlZmF1bHRUaGVt
ZS93aWRnZXQvY29tYm8vY29tYm9faG92ZXIucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L2NvbWJvL2NvbWJvX2hvdmVyX2J1dHRvbi5wbmcgYi9X
ZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvY29tYm8vY29tYm9faG92ZXJfYnV0dG9uLnBu
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzZhOGUwCkJpbmFyeSBmaWxl
cyAvZGV2L251bGwgYW5kIGIvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L2NvbWJvL2Nv
bWJvX2hvdmVyX2J1dHRvbi5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL0RlZmF1
bHRUaGVtZS93aWRnZXQvY29tYm8vY29tYm9fbm9ybWFsLnBuZyBiL1dlYktpdC9lZmwvRGVmYXVs
dFRoZW1lL3dpZGdldC9jb21iby9jb21ib19ub3JtYWwucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmIzMTU3NmMKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9XZWJL
aXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvY29tYm8vY29tYm9fbm9ybWFsLnBuZyBkaWZmZXIK
ZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9jb21iby9jb21ib19u
b3JtYWxfYnV0dG9uLnBuZyBiL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9jb21iby9j
b21ib19ub3JtYWxfYnV0dG9uLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5kOTIwZDkwCkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvV2ViS2l0L2VmbC9EZWZhdWx0
VGhlbWUvd2lkZ2V0L2NvbWJvL2NvbWJvX25vcm1hbF9idXR0b24ucG5nIGRpZmZlcgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L2NvbWJvL2NvbWJvX3ByZXNzLnBu
ZyBiL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9jb21iby9jb21ib19wcmVzcy5wbmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDY0MWRmZQpCaW5hcnkgZmlsZXMg
L2Rldi9udWxsIGFuZCBiL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9jb21iby9jb21i
b19wcmVzcy5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93
aWRnZXQvY29tYm8vY29tYm9fcHJlc3NfYnV0dG9uLnBuZyBiL1dlYktpdC9lZmwvRGVmYXVsdFRo
ZW1lL3dpZGdldC9jb21iby9jb21ib19wcmVzc19idXR0b24ucG5nCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjdjZTA4OWYKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9X
ZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvY29tYm8vY29tYm9fcHJlc3NfYnV0dG9uLnBu
ZyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9jb21i
by9pY29uLnBuZyBiL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9jb21iby9pY29uLnBu
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTE0OTI3CkJpbmFyeSBmaWxl
cyAvZGV2L251bGwgYW5kIGIvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L2NvbWJvL2lj
b24ucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0
L2VudHJ5L2VudHJ5LmVkYyBiL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9lbnRyeS9l
bnRyeS5lZGMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjEzZWU1OQotLS0g
L2Rldi9udWxsCisrKyBiL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9lbnRyeS9lbnRy
eS5lZGMKQEAgLTAsMCArMSwxNjcgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA4LDIwMDkg
SU5kVCAtIEluc3RpdHV0byBOb2tpYSBkZSBUZWNub2xvZ2lhCisgICAgQ29weXJpZ2h0IChDKSAy
MDA5LDIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKKyAgICBDb3B5cmlnaHQgKEMpIDIw
MDksMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAg
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisKKyAgICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworICAgZ3JvdXAgeworICAgICAgbmFtZTogIndlYmtp
dC93aWRnZXQvZW50cnkiOworCisgICAgICBpbWFnZXMgeworICAgICAgICAgaW1hZ2U6ICJ3aWRn
ZXQvZW50cnkvaW1nX25vcm1hbC5wbmciIENPTVA7CisgICAgICAgICBpbWFnZTogIndpZGdldC9l
bnRyeS9pbWdfZm9jdXNlZC5wbmciIENPTVA7CisgICAgICAgICBpbWFnZTogIndpZGdldC9lbnRy
eS9pbWdfaG92ZXJlZC5wbmciIENPTVA7CisgICAgICB9CisKKyAgICAgIHNjcmlwdCB7CisgICAg
ICAgICAgcHVibGljIGlzRW5hYmxlZDsKKyAgICAgICAgICBwdWJsaWMgaXNQcmVzc2VkOworICAg
ICAgICAgIHB1YmxpYyBpc0NoZWNrZWQ7CisgICAgICAgICAgcHVibGljIGlzRm9jdXNlZDsKKyAg
ICAgICAgICBwdWJsaWMgaXNIb3ZlcmVkOworCisgICAgICAgICAgcHVibGljIHNob3coKSB7Cisg
ICAgICAgICAgICAgIGlmIChnZXRfaW50KGlzRW5hYmxlZCkgPT0gMSkgeworICAgICAgICAgICAg
ICAgICAgc2V0X3N0YXRlKFBBUlQ6ImVudHJ5IiwgImRlZmF1bHQiLCAwLjApOworICAgICAgICAg
ICAgICAgICAgaWYgKGdldF9pbnQoaXNQcmVzc2VkKSA9PSAxKQorICAgICAgICAgICAgICAgICAg
ICAgIHNldF9zdGF0ZShQQVJUOiJlbnRyeSIsICJwcmVzc2VkIiwgMC4wKTsKKyAgICAgICAgICAg
ICAgICAgIGlmIChnZXRfaW50KGlzRm9jdXNlZCkgPT0gMSkKKyAgICAgICAgICAgICAgICAgICAg
ICBzZXRfc3RhdGUoUEFSVDoiZW50cnkiLCAiZm9jdXNlZCIsIDAuMCk7CisgICAgICAgICAgICAg
ICAgICBpZiAoZ2V0X2ludChpc0hvdmVyZWQpID09IDEgJiYgZ2V0X2ludChpc0ZvY3VzZWQpID09
IDApCisgICAgICAgICAgICAgICAgICAgICAgc2V0X3N0YXRlKFBBUlQ6ImVudHJ5IiwgImhvdmVy
ZWQiLCAwLjApOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgIHNldF9zdGF0ZShQQVJUOiJlbnRyeSIsICJkaXNhYmxlZCIsIDAuMCk7CisgICAg
ICAgICAgfQorCisgICAgICB9CisKKyAgICAgIHBhcnRzIHsKKyAgICAgICAgIHBhcnQgeworICAg
ICAgICAgICAgbmFtZTogImVudHJ5IjsKKyAgICAgICAgICAgIHR5cGU6IElNQUdFOworICAgICAg
ICAgICAgZGVzY3JpcHRpb24geworICAgICAgICAgICAgICAgc3RhdGU6ICJkZWZhdWx0IiAwLjA7
CisgICAgICAgICAgICAgICBtaW46IDE0IDE0OworICAgICAgICAgICAgICAgcmVsMSB7CisgICAg
ICAgICAgICAgICAgICByZWxhdGl2ZTogMC4wIDAuMDsKKyAgICAgICAgICAgICAgICAgIG9mZnNl
dDogMCAwOworICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgcmVsMiB7CisgICAgICAg
ICAgICAgICAgICByZWxhdGl2ZTogMS4wIDEuMDsKKyAgICAgICAgICAgICAgICAgIG9mZnNldDog
LTEgLTE7CisgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICBpbWFnZSB7CisgICAgICAg
ICAgICAgICAgICBub3JtYWw6ICJ3aWRnZXQvZW50cnkvaW1nX25vcm1hbC5wbmciOworICAgICAg
ICAgICAgICAgICAgYm9yZGVyOiA3IDcgNyA3OworICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZGVzY3JpcHRpb24geworICAgICAgICAgICAgICAgc3RhdGU6ICJk
aXNhYmxlZCIgMC4wOworICAgICAgICAgICAgICAgaW5oZXJpdDogImRlZmF1bHQiIDAuMDsKKyAg
ICAgICAgICAgICAgIGNvbG9yOiAyNTUgMjU1IDI1NSAxNTA7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBkZXNjcmlwdGlvbiB7CisgICAgICAgICAgICAgICBzdGF0ZTogImZvY3VzZWQiIDAu
MDsKKyAgICAgICAgICAgICAgIGluaGVyaXQ6ICJkZWZhdWx0IiAwLjA7CisgICAgICAgICAgICAg
ICBpbWFnZSB7CisgICAgICAgICAgICAgICAgICBub3JtYWw6ICJ3aWRnZXQvZW50cnkvaW1nX2Zv
Y3VzZWQucG5nIjsKKyAgICAgICAgICAgICAgICAgIGJvcmRlcjogNyA3IDcgNzsKKyAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlc2NyaXB0aW9uIHsKKyAgICAg
ICAgICAgICAgIHN0YXRlOiAicHJlc3NlZCIgMC4wOworICAgICAgICAgICAgICAgaW5oZXJpdDog
ImZvY3VzZWQiIDAuMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlc2NyaXB0aW9uIHsK
KyAgICAgICAgICAgICAgIHN0YXRlOiAiaG92ZXJlZCIgMC4wOworICAgICAgICAgICAgICAgaW5o
ZXJpdDogImZvY3VzZWQiIDAuMDsKKyAgICAgICAgICAgICAgIGltYWdlIHsKKyAgICAgICAgICAg
ICAgICAgIG5vcm1hbDogIndpZGdldC9lbnRyeS9pbWdfaG92ZXJlZC5wbmciOworICAgICAgICAg
ICAgICAgICAgYm9yZGVyOiA3IDcgNyA3OworICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICAgfQorCisgICAgICAgICBwYXJ0IHsKKyAgICAgICAgICAgIG5hbWU6ICJ0ZXh0
X2NvbmZpbmVtZW50IjsKKyAgICAgICAgICAgIHR5cGU6IFJFQ1Q7CisgICAgICAgICAgICBkZXNj
cmlwdGlvbiB7CisgICAgICAgICAgICAgICBzdGF0ZTogImRlZmF1bHQiIDAuMDsKKyAgICAgICAg
ICAgICAgIGNvbG9yOiAwIDAgMCAwOworICAgICAgICAgICAgICAgcmVsMS5vZmZzZXQ6IDQgNjsg
ICAvLyA8LSA2IGJlY2F1c2Ugb2YgdGhlIGJsaW5rIGN1cnNvcgorICAgICAgICAgICAgICAgcmVs
Mi5vZmZzZXQ6IC00IC01OyAvLyA8LSBkdWUgdG8gdGhlIGltYWdlCisgICAgICAgICAgICB9Cisg
ICAgICAgICB9CisgICAgICB9CisKKyAgICAgIHByb2dyYW1zIHsKKyAgICAgICAgIHByb2dyYW0g
eworICAgICAgICAgICAgbmFtZTogImVuYWJsZWQiOworICAgICAgICAgICAgc2lnbmFsOiAiZW5h
YmxlZCI7CisgICAgICAgICAgICBzY3JpcHQgeworICAgICAgICAgICAgICAgc2V0X2ludChpc0Vu
YWJsZWQsIDEpOworICAgICAgICAgICAgICAgc2hvdygpOworICAgICAgICAgICAgfQorICAgICAg
ICAgfQorICAgICAgICAgcHJvZ3JhbSB7CisgICAgICAgICAgICBuYW1lOiAicHJlc3NlZCI7Cisg
ICAgICAgICAgICBzaWduYWw6ICJwcmVzc2VkIjsKKyAgICAgICAgICAgIHNjcmlwdCB7CisgICAg
ICAgICAgICAgICBzZXRfaW50KGlzUHJlc3NlZCwgMSk7CisgICAgICAgICAgICAgICBzaG93KCk7
CisgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgICAgIHByb2dyYW0geworICAgICAgICAg
ICAgbmFtZTogImNoZWNrZWQiOworICAgICAgICAgICAgc2lnbmFsOiAiY2hlY2tlZCI7CisgICAg
ICAgICAgICBzY3JpcHQgeworICAgICAgICAgICAgICAgc2V0X2ludChpc0NoZWNrZWQsIDEpOwor
ICAgICAgICAgICAgICAgc2hvdygpOworICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICAg
ICAgcHJvZ3JhbSB7CisgICAgICAgICAgICBuYW1lOiAiZm9jdXNlZCI7CisgICAgICAgICAgICBz
aWduYWw6ICJmb2N1c2VkIjsKKyAgICAgICAgICAgIHNjcmlwdCB7CisgICAgICAgICAgICAgICBz
ZXRfaW50KGlzRm9jdXNlZCwgMSk7CisgICAgICAgICAgICAgICBzaG93KCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICB9CisgICAgICAgICAgcHJvZ3JhbSB7CisgICAgICAgICAgICBuYW1lOiAi
aG92ZXJlZCI7CisgICAgICAgICAgICBzaWduYWw6ICJob3ZlcmVkIjsKKyAgICAgICAgICAgIHNj
cmlwdCB7CisgICAgICAgICAgICAgICBzZXRfaW50KGlzSG92ZXJlZCwgMSk7CisgICAgICAgICAg
ICAgICBzaG93KCk7CisgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgICAgIHByb2dyYW0g
eworICAgICAgICAgICAgbmFtZTogInJlc2V0IjsKKyAgICAgICAgICAgIHNpZ25hbDogInJlc2V0
IjsKKyAgICAgICAgICAgIHNjcmlwdCB7CisgICAgICAgICAgICAgICBzZXRfaW50KGlzRW5hYmxl
ZCwgMCk7CisgICAgICAgICAgICAgICBzZXRfaW50KGlzUHJlc3NlZCwgMCk7CisgICAgICAgICAg
ICAgICBzZXRfaW50KGlzQ2hlY2tlZCwgMCk7CisgICAgICAgICAgICAgICBzZXRfaW50KGlzRm9j
dXNlZCwgMCk7CisgICAgICAgICAgICAgICBzZXRfaW50KGlzSG92ZXJlZCwgMCk7CisgICAgICAg
ICAgICAgICBzaG93KCk7CisgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgICB9CisgICB9
CmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvZW50cnkvaW1nX2Zv
Y3VzZWQucG5nIGIvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L2VudHJ5L2ltZ19mb2N1
c2VkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzI2OTIxCkJpbmFy
eSBmaWxlcyAvZGV2L251bGwgYW5kIGIvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L2Vu
dHJ5L2ltZ19mb2N1c2VkLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwvRGVmYXVs
dFRoZW1lL3dpZGdldC9lbnRyeS9pbWdfaG92ZXJlZC5wbmcgYi9XZWJLaXQvZWZsL0RlZmF1bHRU
aGVtZS93aWRnZXQvZW50cnkvaW1nX2hvdmVyZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmE1NmI4MTMKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9XZWJLaXQv
ZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvZW50cnkvaW1nX2hvdmVyZWQucG5nIGRpZmZlcgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L2VudHJ5L2ltZ19ub3JtYWwu
cG5nIGIvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L2VudHJ5L2ltZ19ub3JtYWwucG5n
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllN2ZjZjMKQmluYXJ5IGZpbGVz
IC9kZXYvbnVsbCBhbmQgYi9XZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvZW50cnkvaW1n
X25vcm1hbC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93
aWRnZXQvZmlsZS9maWxlLmVkYyBiL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9maWxl
L2ZpbGUuZWRjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwYWZjYzcKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvZmlsZS9maWxl
LmVkYwpAQCAtMCwwICsxLDE0OCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDgsMjAwOSBJ
TmRUIC0gSW5zdGl0dXRvIE5va2lhIGRlIFRlY25vbG9naWEKKyAgICBDb3B5cmlnaHQgKEMpIDIw
MDksMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworICAgIENvcHlyaWdodCAoQykgMjAw
OSwyMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAg
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKworICAgIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisqLworCitncm91cCB7CisgICAgICBuYW1lOiAid2Via2l0L3dp
ZGdldC9maWxlIjsKKworICAgICAgaW1hZ2VzIHsKKyAgICAgICAgIGltYWdlOiAid2lkZ2V0L2Zp
bGUvZmlsZV9ub3JtYWwucG5nIiBDT01QOworICAgICAgICAgaW1hZ2U6ICJ3aWRnZXQvZmlsZS9m
aWxlX2hvdmVyLnBuZyIgQ09NUDsKKyAgICAgICAgIGltYWdlOiAid2lkZ2V0L2ZpbGUvZmlsZV9m
b2N1cy5wbmciIENPTVA7CisgICAgICAgICBpbWFnZTogIndpZGdldC9maWxlL2ZpbGVfcHJlc3Mu
cG5nIiBDT01QOworICAgICAgfQorCisgICAgICBzY3JpcHQgeworICAgICAgICAgIHB1YmxpYyBp
c0VuYWJsZWQ7CisgICAgICAgICAgcHVibGljIGlzUHJlc3NlZDsKKyAgICAgICAgICBwdWJsaWMg
aXNDaGVja2VkOworICAgICAgICAgIHB1YmxpYyBpc0ZvY3VzZWQ7CisgICAgICAgICAgcHVibGlj
IGlzSG92ZXJlZDsKKworICAgICAgICAgIHB1YmxpYyBzaG93KCkgeworICAgICAgICAgICAgICAg
aWYgKGdldF9pbnQoaXNFbmFibGVkKSA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgc2V0X3N0
YXRlKFBBUlQ6ImZpbGUiLCAiZGVmYXVsdCIsIDAuMCk7CisgICAgICAgICAgICAgICAgICAgaWYg
KGdldF9pbnQoaXNGb2N1c2VkKSA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgIHNldF9z
dGF0ZShQQVJUOiJmaWxlIiwgImZvY3VzZWQiLCAwLjApOworICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoZ2V0X2ludChpc1ByZXNzZWQpID09IDEpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRfc3RhdGUoUEFSVDoiZmlsZSIsICJwcmVzc2VkIiwgMC4wKTsKKyAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICBlbHNlIGlmIChnZXRfaW50KGlzSG92ZXJlZCkgPT0g
MSkgeworICAgICAgICAgICAgICAgICAgIHNldF9zdGF0ZShQQVJUOiJmaWxlIiwgImhvdmVyZWQi
LCAwLjApOworICAgICAgICAgICAgICAgICAgIGlmIChnZXRfaW50KGlzUHJlc3NlZCkgPT0gMSkK
KyAgICAgICAgICAgICAgICAgICAgICAgc2V0X3N0YXRlKFBBUlQ6ImZpbGUiLCAicHJlc3NlZCIs
IDAuMCk7CisKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICBzZXRfc3RhdGUoUEFSVDoiZmlsZSIsICJkaXNh
YmxlZCIsIDAuMCk7CisgICAgICAgICAgfQorICAgICAgfQorCisgICAgICBwYXJ0cyB7CisgICAg
ICAgICBwYXJ0IHsKKyAgICAgICAgICAgIG5hbWU6ICJmaWxlIjsKKyAgICAgICAgICAgIHR5cGU6
IElNQUdFOworICAgICAgICAgICAgZGVzY3JpcHRpb24geworICAgICAgICAgICAgICAgc3RhdGU6
ICJkZWZhdWx0IiAwLjA7CisgICAgICAgICAgICAgICBpbWFnZSB7CisgICAgICAgICAgICAgICAg
ICBub3JtYWw6ICJ3aWRnZXQvZmlsZS9maWxlX25vcm1hbC5wbmciOworICAgICAgICAgICAgICAg
ICAgYm9yZGVyOiA4IDggOCA4OworICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZGVzY3JpcHRpb24geworICAgICAgICAgICAgICAgc3RhdGU6ICJkaXNhYmxlZCIg
MC4wOworICAgICAgICAgICAgICAgaW5oZXJpdDogImRlZmF1bHQiIDAuMDsKKyAgICAgICAgICAg
ICAgIGNvbG9yOiAyNTUgMjU1IDI1NSAxNTA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBk
ZXNjcmlwdGlvbiB7CisgICAgICAgICAgICAgICBzdGF0ZTogImhvdmVyZWQiIDAuMDsKKyAgICAg
ICAgICAgICAgIGluaGVyaXQ6ICJkZWZhdWx0IiAwLjA7CisgICAgICAgICAgICAgICBpbWFnZSB7
CisgICAgICAgICAgICAgICAgICBub3JtYWw6ICJ3aWRnZXQvZmlsZS9maWxlX2hvdmVyLnBuZyI7
CisgICAgICAgICAgICAgICAgICBib3JkZXI6IDggOCA4IDg7CisgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBkZXNjcmlwdGlvbiB7CisgICAgICAgICAgICAgICBz
dGF0ZTogImZvY3VzZWQiIDAuMDsKKyAgICAgICAgICAgICAgIGluaGVyaXQ6ICJkZWZhdWx0IiAw
LjA7CisgICAgICAgICAgICAgICBpbWFnZSB7CisgICAgICAgICAgICAgICAgICBub3JtYWw6ICJ3
aWRnZXQvZmlsZS9maWxlX2ZvY3VzLnBuZyI7CisgICAgICAgICAgICAgICAgICBib3JkZXI6IDgg
OCA4IDg7CisgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZXNj
cmlwdGlvbiB7CisgICAgICAgICAgICAgICBzdGF0ZTogInByZXNzZWQiIDAuMDsKKyAgICAgICAg
ICAgICAgIGluaGVyaXQ6ICJkZWZhdWx0IiAwLjA7CisgICAgICAgICAgICAgICBpbWFnZSB7Cisg
ICAgICAgICAgICAgICAgICBub3JtYWw6ICJ3aWRnZXQvZmlsZS9maWxlX3ByZXNzLnBuZyI7Cisg
ICAgICAgICAgICAgICAgICBib3JkZXI6IDggOCA4IDg7CisgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgICB9CisgICAgICB9CisKKyAgICAgIHByb2dyYW1zIHsKKyAgICAg
ICAgIHByb2dyYW0geworICAgICAgICAgICAgbmFtZTogImVuYWJsZWQiOworICAgICAgICAgICAg
c2lnbmFsOiAiZW5hYmxlZCI7CisgICAgICAgICAgICBzY3JpcHQgeworICAgICAgICAgICAgICAg
c2V0X2ludChpc0VuYWJsZWQsIDEpOworICAgICAgICAgICAgICAgc2hvdygpOworICAgICAgICAg
ICAgfQorICAgICAgICAgfQorICAgICAgICAgcHJvZ3JhbSB7CisgICAgICAgICAgICBuYW1lOiAi
cHJlc3NlZCI7CisgICAgICAgICAgICBzaWduYWw6ICJwcmVzc2VkIjsKKyAgICAgICAgICAgIHNj
cmlwdCB7CisgICAgICAgICAgICAgICBzZXRfaW50KGlzUHJlc3NlZCwgMSk7CisgICAgICAgICAg
ICAgICBzaG93KCk7CisgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgICAgICBwcm9ncmFt
IHsKKyAgICAgICAgICAgIG5hbWU6ICJmb2N1c2VkIjsKKyAgICAgICAgICAgIHNpZ25hbDogImZv
Y3VzZWQiOworICAgICAgICAgICAgc2NyaXB0IHsKKyAgICAgICAgICAgICAgIHNldF9pbnQoaXNG
b2N1c2VkLCAxKTsKKyAgICAgICAgICAgICAgIHNob3coKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgIH0KKyAgICAgICAgICBwcm9ncmFtIHsKKyAgICAgICAgICAgIG5hbWU6ICJob3ZlcmVkIjsK
KyAgICAgICAgICAgIHNpZ25hbDogImhvdmVyZWQiOworICAgICAgICAgICAgc2NyaXB0IHsKKyAg
ICAgICAgICAgICAgIHNldF9pbnQoaXNIb3ZlcmVkLCAxKTsKKyAgICAgICAgICAgICAgIHNob3co
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgICAgcHJvZ3JhbSB7CisgICAgICAg
ICAgICBuYW1lOiAicmVzZXQiOworICAgICAgICAgICAgc2lnbmFsOiAicmVzZXQiOworICAgICAg
ICAgICAgc2NyaXB0IHsKKyAgICAgICAgICAgICAgIHNldF9pbnQoaXNFbmFibGVkLCAwKTsKKyAg
ICAgICAgICAgICAgIHNldF9pbnQoaXNQcmVzc2VkLCAwKTsKKyAgICAgICAgICAgICAgIHNldF9p
bnQoaXNDaGVja2VkLCAwKTsKKyAgICAgICAgICAgICAgIHNldF9pbnQoaXNGb2N1c2VkLCAwKTsK
KyAgICAgICAgICAgICAgIHNldF9pbnQoaXNIb3ZlcmVkLCAwKTsKKyAgICAgICAgICAgICAgIHNo
b3coKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgIH0KKyAgIH0KZGlmZiAtLWdp
dCBhL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9maWxlL2ZpbGVfZm9jdXMucG5nIGIv
V2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L2ZpbGUvZmlsZV9mb2N1cy5wbmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYxYzAyZQpCaW5hcnkgZmlsZXMgL2Rldi9u
dWxsIGFuZCBiL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9maWxlL2ZpbGVfZm9jdXMu
cG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L2Zp
bGUvZmlsZV9ob3Zlci5wbmcgYi9XZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvZmlsZS9m
aWxlX2hvdmVyLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWU3MDRh
CkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lk
Z2V0L2ZpbGUvZmlsZV9ob3Zlci5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL0Rl
ZmF1bHRUaGVtZS93aWRnZXQvZmlsZS9maWxlX25vcm1hbC5wbmcgYi9XZWJLaXQvZWZsL0RlZmF1
bHRUaGVtZS93aWRnZXQvZmlsZS9maWxlX25vcm1hbC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZjA5ZjI0MQpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL1dlYktp
dC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9maWxlL2ZpbGVfbm9ybWFsLnBuZyBkaWZmZXIKZGlm
ZiAtLWdpdCBhL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9maWxlL2ZpbGVfcHJlc3Mu
cG5nIGIvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L2ZpbGUvZmlsZV9wcmVzcy5wbmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ0Y2I3YgpCaW5hcnkgZmlsZXMg
L2Rldi9udWxsIGFuZCBiL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9maWxlL2ZpbGVf
cHJlc3MucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lk
Z2V0L3JhZGlvL2ltZ19yYWRpb19vZmYucG5nIGIvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lk
Z2V0L3JhZGlvL2ltZ19yYWRpb19vZmYucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjM2ZDc5MTMKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9XZWJLaXQvZWZsL0Rl
ZmF1bHRUaGVtZS93aWRnZXQvcmFkaW8vaW1nX3JhZGlvX29mZi5wbmcgZGlmZmVyCmRpZmYgLS1n
aXQgYS9XZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvcmFkaW8vaW1nX3JhZGlvX29mZl9m
b2N1cy5wbmcgYi9XZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvcmFkaW8vaW1nX3JhZGlv
X29mZl9mb2N1cy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU5OGNl
YwpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dp
ZGdldC9yYWRpby9pbWdfcmFkaW9fb2ZmX2ZvY3VzLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dl
YktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9yYWRpby9pbWdfcmFkaW9fb2ZmX2hvdmVyLnBu
ZyBiL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9yYWRpby9pbWdfcmFkaW9fb2ZmX2hv
dmVyLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzM1ZTNhCkJpbmFy
eSBmaWxlcyAvZGV2L251bGwgYW5kIGIvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L3Jh
ZGlvL2ltZ19yYWRpb19vZmZfaG92ZXIucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Vm
bC9EZWZhdWx0VGhlbWUvd2lkZ2V0L3JhZGlvL2ltZ19yYWRpb19vbi5wbmcgYi9XZWJLaXQvZWZs
L0RlZmF1bHRUaGVtZS93aWRnZXQvcmFkaW8vaW1nX3JhZGlvX29uLnBuZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi45Njk2NzI4CkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5k
IGIvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L3JhZGlvL2ltZ19yYWRpb19vbi5wbmcg
ZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvcmFkaW8v
aW1nX3JhZGlvX29uX2ZvY3VzLnBuZyBiL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9y
YWRpby9pbWdfcmFkaW9fb25fZm9jdXMucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmRjMDkzMWIKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9XZWJLaXQvZWZsL0Rl
ZmF1bHRUaGVtZS93aWRnZXQvcmFkaW8vaW1nX3JhZGlvX29uX2ZvY3VzLnBuZyBkaWZmZXIKZGlm
ZiAtLWdpdCBhL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9yYWRpby9pbWdfcmFkaW9f
b25faG92ZXIucG5nIGIvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L3JhZGlvL2ltZ19y
YWRpb19vbl9ob3Zlci5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdi
MjMzNgpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1l
L3dpZGdldC9yYWRpby9pbWdfcmFkaW9fb25faG92ZXIucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L3JhZGlvL3JhZGlvLmVkYyBiL1dlYktpdC9l
ZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9yYWRpby9yYWRpby5lZGMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMzhhNmRhOQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9lZmwv
RGVmYXVsdFRoZW1lL3dpZGdldC9yYWRpby9yYWRpby5lZGMKQEAgLTAsMCArMSwxODEgQEAKKy8q
CisgICAgQ29weXJpZ2h0IChDKSAyMDA4LDIwMDkgSU5kVCAtIEluc3RpdHV0byBOb2tpYSBkZSBU
ZWNub2xvZ2lhCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LDIwMTAgUHJvRlVTSU9OIGVtYmVkZGVk
IHN5c3RlbXMKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDksMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNz
CisKKyAgICBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGZpbGUg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKwor
ICAgZ3JvdXAgeworICAgICAgbmFtZTogIndlYmtpdC93aWRnZXQvcmFkaW8iOworICAgICAgbWlu
OiAxNiAxNjsKKworICAgICAgaW1hZ2VzIHsKKyAgICAgICAgIGltYWdlOiAid2lkZ2V0L3JhZGlv
L2ltZ19yYWRpb19vbi5wbmciIENPTVA7CisgICAgICAgICBpbWFnZTogIndpZGdldC9yYWRpby9p
bWdfcmFkaW9fb2ZmLnBuZyIgQ09NUDsKKyAgICAgICAgIGltYWdlOiAid2lkZ2V0L3JhZGlvL2lt
Z19yYWRpb19vbl9mb2N1cy5wbmciIENPTVA7CisgICAgICAgICBpbWFnZTogIndpZGdldC9yYWRp
by9pbWdfcmFkaW9fb2ZmX2ZvY3VzLnBuZyIgQ09NUDsKKyAgICAgICAgIGltYWdlOiAid2lkZ2V0
L3JhZGlvL2ltZ19yYWRpb19vbl9ob3Zlci5wbmciIENPTVA7CisgICAgICAgICBpbWFnZTogIndp
ZGdldC9yYWRpby9pbWdfcmFkaW9fb2ZmX2hvdmVyLnBuZyIgQ09NUDsKKyAgICAgIH0KKworICAg
ICAgc2NyaXB0IHsKKyAgICAgICAgICBwdWJsaWMgaXNFbmFibGVkOworICAgICAgICAgIHB1Ymxp
YyBpc1ByZXNzZWQ7CisgICAgICAgICAgcHVibGljIGlzQ2hlY2tlZDsKKyAgICAgICAgICBwdWJs
aWMgaXNGb2N1c2VkOworICAgICAgICAgIHB1YmxpYyBpc0hvdmVyZWQ7CisKKyAgICAgICAgICBw
dWJsaWMgc2hvdygpIHsKKyAgICAgICAgICAgICAgaWYgKGdldF9pbnQoaXNFbmFibGVkKSA9PSAx
KSB7CisgICAgICAgICAgICAgICAgICBzZXRfc3RhdGUoUEFSVDoicmFkaW9fYnV0dG9uIiwgImRl
ZmF1bHQiLCAwLjApOworICAgICAgICAgICAgICAgICAgaWYgKGdldF9pbnQoaXNDaGVja2VkKSA9
PSAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgc2V0X3N0YXRlKFBBUlQ6InJhZGlvX2J1dHRv
biIsICJlbmFibGVkX2NoZWNrZWQiLCAwLjApOworICAgICAgICAgICAgICAgICAgICAgIGlmIChn
ZXRfaW50KGlzRm9jdXNlZCkgPT0gMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0X3N0
YXRlKFBBUlQ6InJhZGlvX2J1dHRvbiIsICJmb2N1c19jaGVja2VkIiwgMC4wKTsKKyAgICAgICAg
ICAgICAgICAgICAgICBpZiAoZ2V0X2ludChpc0hvdmVyZWQpID09IDEgJiYgZ2V0X2ludChpc0Zv
Y3VzZWQpID09IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNldF9zdGF0ZShQQVJUOiJy
YWRpb19idXR0b24iLCAiaG92ZXJlZF9jaGVja2VkIiwgMC4wKTsKKyAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgIGlmIChn
ZXRfaW50KGlzRm9jdXNlZCkgPT0gMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0X3N0
YXRlKFBBUlQ6InJhZGlvX2J1dHRvbiIsICJmb2N1c2VkIiwgMC4wKTsKKyAgICAgICAgICAgICAg
ICAgICAgICBpZiAoZ2V0X2ludChpc0hvdmVyZWQpID09IDEgJiYgZ2V0X2ludChpc0ZvY3VzZWQp
ID09IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNldF9zdGF0ZShQQVJUOiJyYWRpb19i
dXR0b24iLCAiaG92ZXJlZCIsIDAuMCk7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICBzZXRfc3RhdGUo
UEFSVDoicmFkaW9fYnV0dG9uIiwgImRpc2FibGVkIiwgMC4wKTsKKyAgICAgICAgICAgICAgICAg
IGlmIChnZXRfaW50KGlzQ2hlY2tlZCkgPT0gMSkKKyAgICAgICAgICAgICAgICAgICAgICBzZXRf
c3RhdGUoUEFSVDoicmFkaW9fYnV0dG9uIiwgImRpc2FibGVkX2NoZWNrZWQiLCAwLjApOworICAg
ICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgfQorCisgICAgICBwYXJ0cyB7CisgICAg
ICAgICBwYXJ0IHsKKyAgICAgICAgICAgIG5hbWU6ICJyYWRpb19idXR0b24iOworICAgICAgICAg
ICAgdHlwZTogSU1BR0U7CisgICAgICAgICAgICBkZXNjcmlwdGlvbiB7CisgICAgICAgICAgICAg
ICBzdGF0ZTogImRlZmF1bHQiIDAuMDsKKyAgICAgICAgICAgICAgIG1pbjogMTYgMTY7CisgICAg
ICAgICAgICAgICBtYXg6IDE2IDE2OworICAgICAgICAgICAgICAgaW1hZ2UgeworICAgICAgICAg
ICAgICAgICAgbm9ybWFsOiAid2lkZ2V0L3JhZGlvL2ltZ19yYWRpb19vZmYucG5nIjsKKyAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlc2NyaXB0aW9uIHsKKyAg
ICAgICAgICAgICAgIHN0YXRlOiAiZW5hYmxlZF9jaGVja2VkIiAwLjA7CisgICAgICAgICAgICAg
ICBpbmhlcml0OiAiZGVmYXVsdCIgMC4wOworICAgICAgICAgICAgICAgaW1hZ2UgeworICAgICAg
ICAgICAgICAgICAgbm9ybWFsOiAid2lkZ2V0L3JhZGlvL2ltZ19yYWRpb19vbi5wbmciOworICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVzY3JpcHRpb24gewor
ICAgICAgICAgICAgICAgc3RhdGU6ICJkaXNhYmxlZF9jaGVja2VkIiAwLjA7CisgICAgICAgICAg
ICAgICBpbmhlcml0OiAiZW5hYmxlZF9jaGVja2VkIiAwLjA7CisgICAgICAgICAgICAgICBjb2xv
cjogMjU1IDI1NSAyNTUgMTUwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVzY3JpcHRp
b24geworICAgICAgICAgICAgICAgc3RhdGU6ICJkaXNhYmxlZCIgMC4wOworICAgICAgICAgICAg
ICAgaW5oZXJpdDogImRlZmF1bHQiIDAuMDsKKyAgICAgICAgICAgICAgIGNvbG9yOiAyNTUgMjU1
IDI1NSAxNTA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZXNjcmlwdGlvbiB7CisgICAg
ICAgICAgICAgICBzdGF0ZTogImhvdmVyZWRfY2hlY2tlZCIgMC4wOworICAgICAgICAgICAgICAg
aW5oZXJpdDogImRlZmF1bHQiIDAuMDsKKyAgICAgICAgICAgICAgIGltYWdlIHsKKyAgICAgICAg
ICAgICAgICAgIG5vcm1hbDogIndpZGdldC9yYWRpby9pbWdfcmFkaW9fb25faG92ZXIucG5nIjsK
KyAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlc2NyaXB0aW9u
IHsKKyAgICAgICAgICAgICAgIHN0YXRlOiAiaG92ZXJlZCIgMC4wOworICAgICAgICAgICAgICAg
aW5oZXJpdDogImRlZmF1bHQiIDAuMDsKKyAgICAgICAgICAgICAgIGltYWdlIHsKKyAgICAgICAg
ICAgICAgICAgIG5vcm1hbDogIndpZGdldC9yYWRpby9pbWdfcmFkaW9fb2ZmX2hvdmVyLnBuZyI7
CisgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZXNjcmlwdGlv
biB7CisgICAgICAgICAgICAgICBzdGF0ZTogImZvY3VzX2NoZWNrZWQiIDAuMDsKKyAgICAgICAg
ICAgICAgIGluaGVyaXQ6ICJkZWZhdWx0IiAwLjA7CisgICAgICAgICAgICAgICBpbWFnZSB7Cisg
ICAgICAgICAgICAgICAgICBub3JtYWw6ICJ3aWRnZXQvcmFkaW8vaW1nX3JhZGlvX29uX2ZvY3Vz
LnBuZyI7CisgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZXNj
cmlwdGlvbiB7CisgICAgICAgICAgICAgICBzdGF0ZTogImZvY3VzZWQiIDAuMDsKKyAgICAgICAg
ICAgICAgIGluaGVyaXQ6ICJkZWZhdWx0IiAwLjA7CisgICAgICAgICAgICAgICBpbWFnZSB7Cisg
ICAgICAgICAgICAgICAgICBub3JtYWw6ICJ3aWRnZXQvcmFkaW8vaW1nX3JhZGlvX29mZl9mb2N1
cy5wbmciOworICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgfQorICAg
ICAgfQorCisgICAgICBwcm9ncmFtcyB7CisgICAgICAgICBwcm9ncmFtIHsKKyAgICAgICAgICAg
IG5hbWU6ICJlbmFibGVkIjsKKyAgICAgICAgICAgIHNpZ25hbDogImVuYWJsZWQiOworICAgICAg
ICAgICAgc2NyaXB0IHsKKyAgICAgICAgICAgICAgIHNldF9pbnQoaXNFbmFibGVkLCAxKTsKKyAg
ICAgICAgICAgICAgIHNob3coKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgICAg
IHByb2dyYW0geworICAgICAgICAgICAgbmFtZTogInByZXNzZWQiOworICAgICAgICAgICAgc2ln
bmFsOiAicHJlc3NlZCI7CisgICAgICAgICAgICBzY3JpcHQgeworICAgICAgICAgICAgICAgc2V0
X2ludChpc1ByZXNzZWQsIDEpOworICAgICAgICAgICAgICAgc2hvdygpOworICAgICAgICAgICAg
fQorICAgICAgICAgfQorICAgICAgICBwcm9ncmFtIHsKKyAgICAgICAgICAgIG5hbWU6ICJjaGVj
a2VkIjsKKyAgICAgICAgICAgIHNpZ25hbDogImNoZWNrZWQiOworICAgICAgICAgICAgc2NyaXB0
IHsKKyAgICAgICAgICAgICAgIHNldF9pbnQoaXNDaGVja2VkLCAxKTsKKyAgICAgICAgICAgICAg
IHNob3coKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgICAgIHByb2dyYW0gewor
ICAgICAgICAgICAgbmFtZTogImZvY3VzZWQiOworICAgICAgICAgICAgc2lnbmFsOiAiZm9jdXNl
ZCI7CisgICAgICAgICAgICBzY3JpcHQgeworICAgICAgICAgICAgICAgc2V0X2ludChpc0ZvY3Vz
ZWQsIDEpOworICAgICAgICAgICAgICAgc2hvdygpOworICAgICAgICAgICAgfQorICAgICAgICAg
fQorICAgICAgICAgIHByb2dyYW0geworICAgICAgICAgICAgbmFtZTogImhvdmVyZWQiOworICAg
ICAgICAgICAgc2lnbmFsOiAiaG92ZXJlZCI7CisgICAgICAgICAgICBzY3JpcHQgeworICAgICAg
ICAgICAgICAgc2V0X2ludChpc0hvdmVyZWQsIDEpOworICAgICAgICAgICAgICAgc2hvdygpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICAgICBwcm9ncmFtIHsKKyAgICAgICAgICAg
IG5hbWU6ICJyZXNldCI7CisgICAgICAgICAgICBzaWduYWw6ICJyZXNldCI7CisgICAgICAgICAg
ICBzY3JpcHQgeworICAgICAgICAgICAgICAgc2V0X2ludChpc0VuYWJsZWQsIDApOworICAgICAg
ICAgICAgICAgc2V0X2ludChpc1ByZXNzZWQsIDApOworICAgICAgICAgICAgICAgc2V0X2ludChp
c0NoZWNrZWQsIDApOworICAgICAgICAgICAgICAgc2V0X2ludChpc0ZvY3VzZWQsIDApOworICAg
ICAgICAgICAgICAgc2V0X2ludChpc0hvdmVyZWQsIDApOworICAgICAgICAgICAgICAgc2hvdygp
OworICAgICAgICAgICAgfSAgCisgICAgICAgICB9CisgICAgICB9CisgICB9CmRpZmYgLS1naXQg
YS9XZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvc2Nyb2xsYmFyL3Njcm9sbGJhci5lZGMg
Yi9XZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvc2Nyb2xsYmFyL3Njcm9sbGJhci5lZGMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ2MThjYQotLS0gL2Rldi9udWxs
CisrKyBiL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9zY3JvbGxiYXIvc2Nyb2xsYmFy
LmVkYwpAQCAtMCwwICsxLDMxNyBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDgsMjAwOSBJ
TmRUIC0gSW5zdGl0dXRvIE5va2lhIGRlIFRlY25vbG9naWEKKyAgICBDb3B5cmlnaHQgKEMpIDIw
MDksMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworICAgIENvcHlyaWdodCAoQykgMjAw
OSwyMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAg
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKworICAgIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisqLworCitncm91cCB7CisgICAgbmFtZTogInNjcm9sbGJhci52
ZXJ0aWNhbCI7CisKKyAgICBtaW46IDEwIDA7IC8qIGlmID4gMCwgdGhpcyBpcyB0aGUgbWluaW11
bSBzaXplIHRoYXQgd2lsbCBiZSBhbGxvY2F0ZWQuCisgICAgICAgICAgICAgICAgKiBJZiB3YW50
cyB0byBkcmF3IG9uIHRvcCwganVzdCBvdmVyZmxvdyB1c2lnbiBlZGplJ3MgcmVsMS9yZWwyCisg
ICAgICAgICAgICAgICAgKi8KKworICAgIGltYWdlcyB7CisgICAgICAgIGltYWdlOiAid2lkZ2V0
L3Njcm9sbGJhci9zY3JvbGxiYXJfdi5wbmciIENPTVA7CisgICAgICAgIGltYWdlOiAid2lkZ2V0
L3Njcm9sbGJhci9zY3JvbGxiYXJfa25vYl92LnBuZyIgQ09NUDsKKyAgICB9CisKKyAgICBzY3Jp
cHQgeworICAgICAgICBwdWJsaWMgaGlkZV90aW1lcjsKKworICAgICAgICBwdWJsaWMgaGlkZV90
aW1lcl9jYih2YWwpIHsKKyAgICAgICAgICAgIHJ1bl9wcm9ncmFtKFBST0dSQU06ImhpZGUiKTsK
KyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGhpZGVf
dGltZXJfc3RvcCgpIHsKKyAgICAgICAgICAgIG5ldyBpZCA9IGdldF9pbnQoaGlkZV90aW1lcik7
CisgICAgICAgICAgICBpZiAoaWQgPD0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgIGNhbmNlbF90aW1lcihpZCk7CisgICAgICAgICAgICBzZXRfaW50KGhpZGVfdGlt
ZXIsIDApOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGhpZGVfdGltZXJfc3RhcnQoKSB7
CisgICAgICAgICAgICBzZXRfaW50KGhpZGVfdGltZXIsIHRpbWVyKDEuMCwgImhpZGVfdGltZXJf
Y2IiLCAwKSk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgbWVzc2FnZShNc2dfVHlwZTp0
eXBlLCBpZCwgLi4uKSB7CisgICAgICAgICAgICBpZiAoKGlkID09IDApICYmICh0eXBlID09IE1T
R19GTE9BVF9TRVQpKSB7CisgICAgICAgICAgICAgICAgbmV3IEZsb2F0OnZ5LCBGbG9hdDpzeTsK
KworICAgICAgICAgICAgICAgIHZ5ID0gZ2V0ZmFyZygyKTsKKyAgICAgICAgICAgICAgICBzeSA9
IGdldGZhcmcoMyk7CisKKyAgICAgICAgICAgICAgICBpZiAodnkgPj0gMC4wKSB7CisgICAgICAg
ICAgICAgICAgICAgIHNldF9kcmFnX3NpemUoUEFSVDoiaW1nLmtub2IiLCAxLjAsIHN5KTsKKyAg
ICAgICAgICAgICAgICAgICAgc2V0X2RyYWcoUEFSVDoiaW1nLmtub2IiLCAwLjAsIHZ5KTsKKyAg
ICAgICAgICAgICAgICAgICAgcnVuX3Byb2dyYW0oUFJPR1JBTToic2hvdyIpOworICAgICAgICAg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBydW5fcHJvZ3JhbShQUk9HUkFNOiJo
aWRlIik7CisKKyAgICAgICAgICAgICAgICBoaWRlX3RpbWVyX3N0b3AoKTsKKyAgICAgICAgICAg
ICAgICBoaWRlX3RpbWVyX3N0YXJ0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICBwdWJsaWMgdXBkYXRlX2RyYWdfcG9zKCkgeworICAgICAgICAgICAgbmV3IEZsb2F0Ongs
IEZsb2F0Onk7CisgICAgICAgICAgICBnZXRfZHJhZyhQQVJUOiJpbWcua25vYiIsIHgsIHkpOwor
ICAgICAgICAgICAgc2VuZF9tZXNzYWdlKE1TR19GTE9BVCwgMCwgeSk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBwYXJ0cyB7CisgICAgICAgICBwYXJ0IHsKKyAgICAgICAgICAgIG5hbWU6ICJy
ZWN0LmJhc2UiOworICAgICAgICAgICAgdHlwZTogUkVDVDsKKyAgICAgICAgICAgIGRlc2NyaXB0
aW9uIHsKKyAgICAgICAgICAgICAgIG1pbjogMTAgMDsKKyAgICAgICAgICAgICAgIG1heDogMTAg
OTk5OTk5OworICAgICAgICAgICAgICAgc3RhdGU6ICJkZWZhdWx0IiAwLjA7CisgICAgICAgICAg
ICAgICBjb2xvcjogMjU1IDI1NSAyNTUgMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAg
ICAgICAgIHBhcnQgeworICAgICAgICAgICAgbmFtZTogInJlY3QuY2xpcHBlciI7CisgICAgICAg
ICAgICB0eXBlOiBSRUNUOworICAgICAgICAgICAgZGVzY3JpcHRpb24geworICAgICAgICAgICAg
ICAgc3RhdGU6ICJkZWZhdWx0IiAwLjA7CisgICAgICAgICAgICAgICBjb2xvcjogMjU1IDI1NSAy
NTUgMjU1OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVzY3JpcHRpb24geworICAgICAg
ICAgICAgICAgc3RhdGU6ICJoaWRkZW4iIDAuMDsKKyAgICAgICAgICAgICAgIGNvbG9yOiAyNTUg
MjU1IDI1NSAxMjg7CisgICAgICAgICAgICB9CisgICAgICAgICB9CisKKyAgICAgICAgIHBhcnQg
eworICAgICAgICAgICAgbmFtZTogImltZy5zY3JvbGxiYXIiOworICAgICAgICAgICAgdHlwZTog
SU1BR0U7CisgICAgICAgICAgICBtb3VzZV9ldmVudHM6IDA7CisgICAgICAgICAgICBjbGlwX3Rv
OiAicmVjdC5jbGlwcGVyIjsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uIHsKKyAgICAgICAgICAg
ICAgIHN0YXRlOiAiZGVmYXVsdCIgMC4wOworICAgICAgICAgICAgICAgaW1hZ2UgeworICAgICAg
ICAgICAgICAgICAgbm9ybWFsOiAid2lkZ2V0L3Njcm9sbGJhci9zY3JvbGxiYXJfdi5wbmciOwor
ICAgICAgICAgICAgICAgICAgYm9yZGVyOiAwIDAgNiA2OworICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICB9CisgICAgICAgICB9CisKKyAgICAgICAgIHBhcnQgeworICAgICAgICAgICAgbmFt
ZTogImltZy5rbm9iIjsKKyAgICAgICAgICAgIHR5cGU6IElNQUdFOworICAgICAgICAgICAgbW91
c2VfZXZlbnRzOiAxOworICAgICAgICAgICAgY2xpcF90bzogInJlY3QuY2xpcHBlciI7CisgICAg
ICAgICAgICBkcmFnYWJsZSB7CisgICAgICAgICAgICAgICAgeDogMCAwIDA7CisgICAgICAgICAg
ICAgICAgeTogMSAxIDA7CisgICAgICAgICAgICAgICAgY29uZmluZTogInJlY3QuYmFzZSI7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBkZXNjcmlwdGlvbiB7CisgICAgICAgICAgICAgICBz
dGF0ZTogImRlZmF1bHQiIDAuMDsKKyAgICAgICAgICAgICAgIG1pbjogMTAgMTA7CisgICAgICAg
ICAgICAgICBtYXg6IDEwIDk5OTk5OTsKKyAgICAgICAgICAgICAgIGltYWdlIHsKKyAgICAgICAg
ICAgICAgICAgIG5vcm1hbDogIndpZGdldC9zY3JvbGxiYXIvc2Nyb2xsYmFyX2tub2Jfdi5wbmci
OworICAgICAgICAgICAgICAgICAgYm9yZGVyOiAwIDAgNiA2OworICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgIH0KKyAgICBwcm9ncmFtcyB7CisgICAgICAg
IHByb2dyYW0geworICAgICAgICAgICBuYW1lOiAibG9hZCI7CisgICAgICAgICAgIHNpZ25hbDog
ImxvYWQiOworICAgICAgICAgICBhY3Rpb246IFNUQVRFX1NFVCAiaGlkZGVuIiAwLjA7CisgICAg
ICAgICAgIHRhcmdldDogInJlY3QuY2xpcHBlciI7CisgICAgICAgIH0KKyAgICAgICAgcHJvZ3Jh
bSB7CisgICAgICAgICAgIG5hbWU6ICJoaWRlIjsKKyAgICAgICAgICAgYWN0aW9uOiBTVEFURV9T
RVQgImhpZGRlbiIgMC4wOworICAgICAgICAgICB0cmFuc2l0aW9uOiBBQ0NFTEVSQVRFIDAuNTsK
KyAgICAgICAgICAgdGFyZ2V0OiAicmVjdC5jbGlwcGVyIjsKKyAgICAgICAgfQorCisgICAgICAg
IHByb2dyYW0geworICAgICAgICAgICBuYW1lOiAic2hvdyI7CisgICAgICAgICAgIGFjdGlvbjog
U1RBVEVfU0VUICJkZWZhdWx0IiAwLjA7CisgICAgICAgICAgIHRhcmdldDogInJlY3QuY2xpcHBl
ciI7CisgICAgICAgIH0KKworICAgICAgICBwcm9ncmFtIHsKKyAgICAgICAgICAgbmFtZTogImRy
YWdnZWQiOworICAgICAgICAgICBzaWduYWw6ICJkcmFnIjsKKyAgICAgICAgICAgc291cmNlOiAi
aW1nLmtub2IiOworICAgICAgICAgICBzY3JpcHQgeworICAgICAgICAgICAgICB1cGRhdGVfZHJh
Z19wb3MoKTsKKyAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitncm91cCB7Cisg
ICAgbmFtZTogInNjcm9sbGJhci5ob3Jpem9udGFsIjsKKworICAgIG1pbjogMCAxMDsgLyogaWYg
PiAwLCB0aGlzIGlzIHRoZSBtaW5pbXVtIHNpemUgdGhhdCB3aWxsIGJlIGFsbG9jYXRlZC4KKyAg
ICAgICAgICAgICAgICAqIElmIHdhbnRzIHRvIGRyYXcgb24gdG9wLCBqdXN0IG92ZXJmbG93IHVz
aWduIGVkamUncyByZWwxL3JlbDIKKyAgICAgICAgICAgICAgICAqLworCisgICAgaW1hZ2VzIHsK
KyAgICAgICAgaW1hZ2U6ICJ3aWRnZXQvc2Nyb2xsYmFyL3Njcm9sbGJhcl9oLnBuZyIgQ09NUDsK
KyAgICAgICAgaW1hZ2U6ICJ3aWRnZXQvc2Nyb2xsYmFyL3Njcm9sbGJhcl9rbm9iX2gucG5nIiBD
T01QOworICAgIH0KKworICAgIHNjcmlwdCB7CisgICAgICAgIHB1YmxpYyBoaWRlX3RpbWVyOwor
CisgICAgICAgIHB1YmxpYyBoaWRlX3RpbWVyX2NiKHZhbCkgeworICAgICAgICAgICAgcnVuX3By
b2dyYW0oUFJPR1JBTToiaGlkZSIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0K
KworICAgICAgICBwdWJsaWMgaGlkZV90aW1lcl9zdG9wKCkgeworICAgICAgICAgICAgbmV3IGlk
ID0gZ2V0X2ludChoaWRlX3RpbWVyKTsKKyAgICAgICAgICAgIGlmIChpZCA8PSAwKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgY2FuY2VsX3RpbWVyKGlkKTsKKyAgICAg
ICAgICAgIHNldF9pbnQoaGlkZV90aW1lciwgMCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJs
aWMgaGlkZV90aW1lcl9zdGFydCgpIHsKKyAgICAgICAgICAgIHNldF9pbnQoaGlkZV90aW1lciwg
dGltZXIoMS4wLCAiaGlkZV90aW1lcl9jYiIsIDApKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1
YmxpYyBtZXNzYWdlKE1zZ19UeXBlOnR5cGUsIGlkLCAuLi4pIHsKKyAgICAgICAgICAgIGlmICgo
aWQgPT0gMCkgJiYgKHR5cGUgPT0gTVNHX0ZMT0FUX1NFVCkpIHsKKyAgICAgICAgICAgICAgICBu
ZXcgRmxvYXQ6dngsIEZsb2F0OnN4OworCisgICAgICAgICAgICAgICAgdnggPSBnZXRmYXJnKDIp
OworICAgICAgICAgICAgICAgIHN4ID0gZ2V0ZmFyZygzKTsKKworICAgICAgICAgICAgICAgIGlm
ICh2eCA+PSAwLjApIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0X2RyYWdfc2l6ZShQQVJUOiJp
bWcua25vYiIsIHN4LCAxLjApOworICAgICAgICAgICAgICAgICAgICBzZXRfZHJhZyhQQVJUOiJp
bWcua25vYiIsIHZ4LCAwLjApOworICAgICAgICAgICAgICAgICAgICBydW5fcHJvZ3JhbShQUk9H
UkFNOiJzaG93Iik7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAg
IHJ1bl9wcm9ncmFtKFBST0dSQU06ImhpZGUiKTsKKworICAgICAgICAgICAgICAgIGhpZGVfdGlt
ZXJfc3RvcCgpOworICAgICAgICAgICAgICAgIGhpZGVfdGltZXJfc3RhcnQoKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB1cGRhdGVfZHJhZ19wb3MoKSB7Cisg
ICAgICAgICAgICBuZXcgRmxvYXQ6eCwgRmxvYXQ6eTsKKyAgICAgICAgICAgIGdldF9kcmFnKFBB
UlQ6ImltZy5rbm9iIiwgeCwgeSk7CisgICAgICAgICAgICBzZW5kX21lc3NhZ2UoTVNHX0ZMT0FU
LCAwLCB4KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHBhcnRzIHsKKyAgICAgICAgIHBhcnQg
eworICAgICAgICAgICAgbmFtZTogInJlY3QuYmFzZSI7CisgICAgICAgICAgICB0eXBlOiBSRUNU
OworICAgICAgICAgICAgZGVzY3JpcHRpb24geworICAgICAgICAgICAgICAgc3RhdGU6ICJkZWZh
dWx0IiAwLjA7CisgICAgICAgICAgICAgICBtaW46IDAgMTA7CisgICAgICAgICAgICAgICBtYXg6
IDk5OTk5OSAxMDsKKyAgICAgICAgICAgICAgIGNvbG9yOiAyNTUgMjU1IDI1NSAwOworICAgICAg
ICAgICAgfQorICAgICAgICAgfQorICAgICAgICAgcGFydCB7CisgICAgICAgICAgICBuYW1lOiAi
cmVjdC5jbGlwcGVyIjsKKyAgICAgICAgICAgIHR5cGU6IFJFQ1Q7CisgICAgICAgICAgICBkZXNj
cmlwdGlvbiB7CisgICAgICAgICAgICAgICBzdGF0ZTogImRlZmF1bHQiIDAuMDsKKyAgICAgICAg
ICAgICAgIGNvbG9yOiAyNTUgMjU1IDI1NSAyNTU7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBkZXNjcmlwdGlvbiB7CisgICAgICAgICAgICAgICBzdGF0ZTogImhpZGRlbiIgMC4wOworICAg
ICAgICAgICAgICAgY29sb3I6IDI1NSAyNTUgMjU1IDEyODsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgIH0KKworICAgICAgICAgcGFydCB7CisgICAgICAgICAgICBuYW1lOiAiaW1nLnNjcm9sbGJh
ciI7CisgICAgICAgICAgICB0eXBlOiBJTUFHRTsKKyAgICAgICAgICAgIG1vdXNlX2V2ZW50czog
MDsKKyAgICAgICAgICAgIGNsaXBfdG86ICJyZWN0LmNsaXBwZXIiOworICAgICAgICAgICAgZGVz
Y3JpcHRpb24geworICAgICAgICAgICAgICAgc3RhdGU6ICJkZWZhdWx0IiAwLjA7CisgICAgICAg
ICAgICAgICBpbWFnZSB7CisgICAgICAgICAgICAgICAgICBub3JtYWw6ICJ3aWRnZXQvc2Nyb2xs
YmFyL3Njcm9sbGJhcl9oLnBuZyI7CisgICAgICAgICAgICAgICAgICBib3JkZXI6IDYgNiAwIDA7
CisgICAgICAgICAgICAgICB9CisgICAgICAgICAgIH0KKyAgICAgICAgIH0KKworICAgICAgICAg
cGFydCB7CisgICAgICAgICAgICBuYW1lOiAiaW1nLmtub2IiOworICAgICAgICAgICAgdHlwZTog
SU1BR0U7CisgICAgICAgICAgICBtb3VzZV9ldmVudHM6IDE7CisgICAgICAgICAgICBjbGlwX3Rv
OiAicmVjdC5jbGlwcGVyIjsKKyAgICAgICAgICAgIGRyYWdhYmxlIHsKKyAgICAgICAgICAgICAg
ICB4OiAxIDEgMDsKKyAgICAgICAgICAgICAgICB5OiAwIDAgMDsKKyAgICAgICAgICAgICAgICBj
b25maW5lOiAicmVjdC5iYXNlIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlc2NyaXB0
aW9uIHsKKyAgICAgICAgICAgICAgIHN0YXRlOiAiZGVmYXVsdCIgMC4wOworICAgICAgICAgICAg
ICAgbWluOiAxMCAxMDsKKyAgICAgICAgICAgICAgIGltYWdlIHsKKyAgICAgICAgICAgICAgICAg
IG5vcm1hbDogIndpZGdldC9zY3JvbGxiYXIvc2Nyb2xsYmFyX2tub2JfaC5wbmciOworICAgICAg
ICAgICAgICAgICAgYm9yZGVyOiA2IDYgMCAwOworICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICAgfQorICAgIH0KKyAgICBwcm9ncmFtcyB7CisgICAgICAgIHByb2dyYW0g
eworICAgICAgICAgICBuYW1lOiAibG9hZCI7CisgICAgICAgICAgIHNpZ25hbDogImxvYWQiOwor
ICAgICAgICAgICBhY3Rpb246IFNUQVRFX1NFVCAiaGlkZGVuIiAwLjA7CisgICAgICAgICAgIHRh
cmdldDogInJlY3QuY2xpcHBlciI7CisgICAgICAgIH0KKyAgICAgICAgcHJvZ3JhbSB7CisgICAg
ICAgICAgIG5hbWU6ICJoaWRlIjsKKyAgICAgICAgICAgYWN0aW9uOiBTVEFURV9TRVQgImhpZGRl
biIgMC4wOworICAgICAgICAgICB0cmFuc2l0aW9uOiBBQ0NFTEVSQVRFIDAuNTsKKyAgICAgICAg
ICAgdGFyZ2V0OiAicmVjdC5jbGlwcGVyIjsKKyAgICAgICAgfQorCisgICAgICAgIHByb2dyYW0g
eworICAgICAgICAgICBuYW1lOiAic2hvdyI7CisgICAgICAgICAgIGFjdGlvbjogU1RBVEVfU0VU
ICJkZWZhdWx0IiAwLjA7CisgICAgICAgICAgIHRhcmdldDogInJlY3QuY2xpcHBlciI7CisgICAg
ICAgIH0KKworICAgICAgICBwcm9ncmFtIHsKKyAgICAgICAgICAgbmFtZTogImRyYWdnZWQiOwor
ICAgICAgICAgICBzaWduYWw6ICJkcmFnIjsKKyAgICAgICAgICAgc291cmNlOiAiaW1nLmtub2Ii
OworICAgICAgICAgICBzY3JpcHQgeworICAgICAgICAgICAgICB1cGRhdGVfZHJhZ19wb3MoKTsK
KyAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Vm
bC9EZWZhdWx0VGhlbWUvd2lkZ2V0L3Njcm9sbGJhci9zY3JvbGxiYXJfaC5wbmcgYi9XZWJLaXQv
ZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvc2Nyb2xsYmFyL3Njcm9sbGJhcl9oLnBuZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGE1ZTViCkJpbmFyeSBmaWxlcyAvZGV2L251
bGwgYW5kIGIvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L3Njcm9sbGJhci9zY3JvbGxi
YXJfaC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRn
ZXQvc2Nyb2xsYmFyL3Njcm9sbGJhcl9oaWxpZ2h0LnBuZyBiL1dlYktpdC9lZmwvRGVmYXVsdFRo
ZW1lL3dpZGdldC9zY3JvbGxiYXIvc2Nyb2xsYmFyX2hpbGlnaHQucG5nCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzODk5Y2EKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQg
Yi9XZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvc2Nyb2xsYmFyL3Njcm9sbGJhcl9oaWxp
Z2h0LnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdl
dC9zY3JvbGxiYXIvc2Nyb2xsYmFyX2tub2JfaC5wbmcgYi9XZWJLaXQvZWZsL0RlZmF1bHRUaGVt
ZS93aWRnZXQvc2Nyb2xsYmFyL3Njcm9sbGJhcl9rbm9iX2gucG5nCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmJkMDYzOTgKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9X
ZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvc2Nyb2xsYmFyL3Njcm9sbGJhcl9rbm9iX2gu
cG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L3Nj
cm9sbGJhci9zY3JvbGxiYXJfa25vYl92LnBuZyBiL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dp
ZGdldC9zY3JvbGxiYXIvc2Nyb2xsYmFyX2tub2Jfdi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uYTRjYWQ2OQpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL1dlYktp
dC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9zY3JvbGxiYXIvc2Nyb2xsYmFyX2tub2Jfdi5wbmcg
ZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvc2Nyb2xs
YmFyL3Njcm9sbGJhcl92LnBuZyBiL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9zY3Jv
bGxiYXIvc2Nyb2xsYmFyX3YucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
Ljg0MzAxZmQKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9XZWJLaXQvZWZsL0RlZmF1bHRU
aGVtZS93aWRnZXQvc2Nyb2xsYmFyL3Njcm9sbGJhcl92LnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBh
L1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9zZWFyY2gvY2FuY2VsL2NhbmNlbF9ub3Jt
YWxfYnV0dG9uLnBuZyBiL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9zZWFyY2gvY2Fu
Y2VsL2NhbmNlbF9ub3JtYWxfYnV0dG9uLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5mMjg5MTc5CkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvV2ViS2l0L2VmbC9E
ZWZhdWx0VGhlbWUvd2lkZ2V0L3NlYXJjaC9jYW5jZWwvY2FuY2VsX25vcm1hbF9idXR0b24ucG5n
IGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L3NlYXJj
aC9jYW5jZWwvY2FuY2VsX25vcm1hbF9idXR0b24yLnBuZyBiL1dlYktpdC9lZmwvRGVmYXVsdFRo
ZW1lL3dpZGdldC9zZWFyY2gvY2FuY2VsL2NhbmNlbF9ub3JtYWxfYnV0dG9uMi5wbmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZiOTI5MgpCaW5hcnkgZmlsZXMgL2Rldi9u
dWxsIGFuZCBiL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9zZWFyY2gvY2FuY2VsL2Nh
bmNlbF9ub3JtYWxfYnV0dG9uMi5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL0Rl
ZmF1bHRUaGVtZS93aWRnZXQvc2VhcmNoL2NhbmNlbC9zZWFyY2hfY2FuY2VsLmVkYyBiL1dlYktp
dC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9zZWFyY2gvY2FuY2VsL3NlYXJjaF9jYW5jZWwuZWRj
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0YTFhMjAKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvc2VhcmNoL2NhbmNlbC9zZWFy
Y2hfY2FuY2VsLmVkYwpAQCAtMCwwICsxLDEzMSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIw
MDgsMjAwOSBJTmRUIC0gSW5zdGl0dXRvIE5va2lhIGRlIFRlY25vbG9naWEKKyAgICBDb3B5cmln
aHQgKEMpIDIwMDksMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworICAgIENvcHlyaWdo
dCAoQykgMjAwOSwyMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgZmlsZSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAg
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAg
ICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAg
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCitncm91cCB7CisgICAgbmFtZTogIndl
YmtpdC93aWRnZXQvc2VhcmNoL2NhbmNlbF9idXR0b24iOworICAgIGFsaWFzOiAid2Via2l0L3dp
ZGdldC9zZWFyY2gvcmVzdWx0c19idXR0b24iOyAvLyBUT0RPCisKKyAgICBpbWFnZXMgeworICAg
ICAgICBpbWFnZTogIndpZGdldC9zZWFyY2gvY2FuY2VsL2NhbmNlbF9ub3JtYWxfYnV0dG9uMi5w
bmciIENPTVA7CisgICAgfQorCisgICAgc2NyaXB0IHsKKyAgICAgICAgcHVibGljIGlzRW5hYmxl
ZDsKKyAgICAgICAgcHVibGljIGlzUHJlc3NlZDsKKyAgICAgICAgcHVibGljIGlzQ2hlY2tlZDsK
KyAgICAgICAgcHVibGljIGlzRm9jdXNlZDsKKyAgICAgICAgcHVibGljIGlzSG92ZXJlZDsKKwor
ICAgICAgICBwdWJsaWMgc2hvdygpIHsKKyAgICAgICAgICAgaWYgKGdldF9pbnQoaXNFbmFibGVk
KSA9PSAxKSB7CisgICAgICAgICAgICAgIHNldF9zdGF0ZShQQVJUOiJjYW5jZWxfYnV0dG9uIiwg
ImRlZmF1bHQiLCAwLjApOworICAgICAgICAgICAgICBpZiAoZ2V0X2ludChpc0ZvY3VzZWQpID09
IDEpCisgICAgICAgICAgICAgICAgIHNldF9zdGF0ZShQQVJUOiJjYW5jZWxfYnV0dG9uIiwgImZv
Y3VzZWQiLCAwLjApOworICAgICAgICAgICAgICBpZiAoZ2V0X2ludChpc1ByZXNzZWQpID09IDEp
CisgICAgICAgICAgICAgICAgIHNldF9zdGF0ZShQQVJUOiJjYW5jZWxfYnV0dG9uIiwgInByZXNz
ZWQiLCAwLjApOworICAgICAgICAgICAgICBpZiAoZ2V0X2ludChpc0hvdmVyZWQpID09IDEpCisg
ICAgICAgICAgICAgICAgIHNldF9zdGF0ZShQQVJUOiJjYW5jZWxfYnV0dG9uIiwgImhvdmVyZWQi
LCAwLjApOworICAgICAgICAgICB9CisgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgc2V0
X3N0YXRlKFBBUlQ6ImNhbmNlbF9idXR0b24iLCAiZGlzYWJsZWQiLCAwLjApOworICAgICAgICB9
CisgICAgfQorCisgICAgcGFydHMgeworICAgICAgICBwYXJ0IHsKKyAgICAgICAgICAgIG5hbWU6
ICJjYW5jZWxfYnV0dG9uIjsKKyAgICAgICAgICAgIHR5cGU6IElNQUdFOworICAgICAgICAgICAg
ZGVzY3JpcHRpb24geworICAgICAgICAgICAgICAgIHN0YXRlOiAiZGVmYXVsdCIgMC4wOworICAg
ICAgICAgICAgICAgIG1pbjogMjEgMjA7CisgICAgICAgICAgICAgICAgcmVsMS5vZmZzZXQ6IDAg
LTY7CisgICAgICAgICAgICAgICAgcmVsMi5vZmZzZXQ6IC0xIDA7CisgICAgICAgICAgICAgICAg
aW1hZ2UgeworICAgICAgICAgICAgICAgICAgICBub3JtYWw6ICJ3aWRnZXQvc2VhcmNoL2NhbmNl
bC9jYW5jZWxfbm9ybWFsX2J1dHRvbjIucG5nIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBkZXNjcmlwdGlvbiB7CisgICAgICAgICAgICAgICAgc3RhdGU6
ICJkaXNhYmxlZCIgMC4wOworICAgICAgICAgICAgICAgIGluaGVyaXQ6ICJkZWZhdWx0IiAwLjA7
CisgICAgICAgICAgICAgICAgY29sb3I6IDI1NSAyNTUgMjU1IDE1MDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGRlc2NyaXB0aW9uIHsKKyAgICAgICAgICAgICAgICBzdGF0ZTogImhvdmVy
ZWQiIDAuMDsKKyAgICAgICAgICAgICAgICBpbmhlcml0OiAiZGVmYXVsdCIgMC4wOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZGVzY3JpcHRpb24geworICAgICAgICAgICAgICAgIHN0YXRl
OiAiZm9jdXNlZCIgMC4wOworICAgICAgICAgICAgICAgIGluaGVyaXQ6ICJkZWZhdWx0IiAwLjA7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZXNjcmlwdGlvbiB7CisgICAgICAgICAgICAg
ICAgc3RhdGU6ICJwcmVzc2VkIiAwLjA7CisgICAgICAgICAgICAgICAgaW5oZXJpdDogImRlZmF1
bHQiIDAuMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByb2dyYW1z
IHsKKyAgICAgICAgcHJvZ3JhbSB7CisgICAgICAgICAgICBuYW1lOiAiZW5hYmxlZCI7CisgICAg
ICAgICAgICBzaWduYWw6ICJlbmFibGVkIjsKKyAgICAgICAgICAgIHNjcmlwdCB7CisgICAgICAg
ICAgICAgICAgc2V0X2ludChpc0VuYWJsZWQsIDEpOworICAgICAgICAgICAgICAgIHNob3coKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBwcm9ncmFtIHsKKyAgICAgICAgICAg
IG5hbWU6ICJwcmVzc2VkIjsKKyAgICAgICAgICAgIHNpZ25hbDogInByZXNzZWQiOworICAgICAg
ICAgICAgc2NyaXB0IHsKKyAgICAgICAgICAgICAgICBzZXRfaW50KGlzUHJlc3NlZCwgMSk7Cisg
ICAgICAgICAgICAgICAgc2hvdygpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IHByb2dyYW0geworICAgICAgICAgICAgbmFtZTogImZvY3VzZWQiOworICAgICAgICAgICAgc2ln
bmFsOiAiZm9jdXNlZCI7CisgICAgICAgICAgICBzY3JpcHQgeworICAgICAgICAgICAgICAgIHNl
dF9pbnQoaXNGb2N1c2VkLCAxKTsKKyAgICAgICAgICAgICAgICBzaG93KCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgcHJvZ3JhbSB7CisgICAgICAgICAgICBuYW1lOiAiaG92
ZXJlZCI7CisgICAgICAgICAgICBzaWduYWw6ICJob3ZlcmVkIjsKKyAgICAgICAgICAgIHNjcmlw
dCB7CisgICAgICAgICAgICAgICAgc2V0X2ludChpc0hvdmVyZWQsIDEpOworICAgICAgICAgICAg
ICAgIHNob3coKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBwcm9ncmFtIHsK
KyAgICAgICAgICAgIG5hbWU6ICJyZXNldCI7CisgICAgICAgICAgICBzaWduYWw6ICJyZXNldCI7
CisgICAgICAgICAgICBzY3JpcHQgeworICAgICAgICAgICAgICAgIHNldF9pbnQoaXNFbmFibGVk
LCAwKTsKKyAgICAgICAgICAgICAgICBzZXRfaW50KGlzUHJlc3NlZCwgMCk7CisgICAgICAgICAg
ICAgICAgc2V0X2ludChpc0NoZWNrZWQsIDApOworICAgICAgICAgICAgICAgIHNldF9pbnQoaXNG
b2N1c2VkLCAwKTsKKyAgICAgICAgICAgICAgICBzZXRfaW50KGlzSG92ZXJlZCwgMCk7CisgICAg
ICAgICAgICAgICAgc2hvdygpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L3NlYXJjaC9kZWNvcmF0
aW9uL2RlY29yYXRpb25fbm9ybWFsX2J1dHRvbi5wbmcgYi9XZWJLaXQvZWZsL0RlZmF1bHRUaGVt
ZS93aWRnZXQvc2VhcmNoL2RlY29yYXRpb24vZGVjb3JhdGlvbl9ub3JtYWxfYnV0dG9uLnBuZwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTZjNjUwCkJpbmFyeSBmaWxlcyAv
ZGV2L251bGwgYW5kIGIvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L3NlYXJjaC9kZWNv
cmF0aW9uL2RlY29yYXRpb25fbm9ybWFsX2J1dHRvbi5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9X
ZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvc2VhcmNoL2RlY29yYXRpb24vc2VhcmNoX2Rl
Y29yYXRpb24uZWRjIGIvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L3NlYXJjaC9kZWNv
cmF0aW9uL3NlYXJjaF9kZWNvcmF0aW9uLmVkYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi40MTU5MTM4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2VmbC9EZWZhdWx0VGhl
bWUvd2lkZ2V0L3NlYXJjaC9kZWNvcmF0aW9uL3NlYXJjaF9kZWNvcmF0aW9uLmVkYwpAQCAtMCww
ICsxLDEzMiBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDgsMjAwOSBJTmRUIC0gSW5zdGl0
dXRvIE5va2lhIGRlIFRlY25vbG9naWEKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDksMjAxMCBQcm9G
VVNJT04gZW1iZWRkZWQgc3lzdGVtcworICAgIENvcHlyaWdodCAoQykgMjAwOSwyMDEwIFNhbXN1
bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKwor
ICAgIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAg
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisqLworCitncm91cCB7CisgICAgbmFtZTogIndlYmtpdC93aWRnZXQvc2VhcmNoL2Rl
Y29yYXRpb24iOworICAgIGFsaWFzOiAid2Via2l0L3dpZGdldC9zZWFyY2gvcmVzdWx0c19kZWNv
cmF0aW9uIjsgLy9UT0RPCisKKyAgICBpbWFnZXMgeworICAgICAgICBpbWFnZTogIndpZGdldC9z
ZWFyY2gvZGVjb3JhdGlvbi9kZWNvcmF0aW9uX25vcm1hbF9idXR0b24ucG5nIiBDT01QOworICAg
IH0KKworICAgIHNjcmlwdCB7CisgICAgICAgIHB1YmxpYyBpc0VuYWJsZWQ7CisgICAgICAgIHB1
YmxpYyBpc1ByZXNzZWQ7CisgICAgICAgIHB1YmxpYyBpc0NoZWNrZWQ7CisgICAgICAgIHB1Ymxp
YyBpc0ZvY3VzZWQ7CisgICAgICAgIHB1YmxpYyBpc0hvdmVyZWQ7CisKKyAgICAgICAgcHVibGlj
IHNob3coKSB7CisgICAgICAgICAgIGlmIChnZXRfaW50KGlzRW5hYmxlZCkgPT0gMSkgeworICAg
ICAgICAgICAgICBzZXRfc3RhdGUoUEFSVDoiZGVjb3JhdGlvbiIsICJkZWZhdWx0IiwgMC4wKTsK
KyAgICAgICAgICAgICAgaWYgKGdldF9pbnQoaXNGb2N1c2VkKSA9PSAxKQorICAgICAgICAgICAg
ICAgICBzZXRfc3RhdGUoUEFSVDoiZGVjb3JhdGlvbiIsICJmb2N1c2VkIiwgMC4wKTsKKyAgICAg
ICAgICAgICAgaWYgKGdldF9pbnQoaXNQcmVzc2VkKSA9PSAxKQorICAgICAgICAgICAgICAgICBz
ZXRfc3RhdGUoUEFSVDoiZGVjb3JhdGlvbiIsICJwcmVzc2VkIiwgMC4wKTsKKyAgICAgICAgICAg
ICAgaWYgKGdldF9pbnQoaXNIb3ZlcmVkKSA9PSAxKQorICAgICAgICAgICAgICAgICBzZXRfc3Rh
dGUoUEFSVDoiZGVjb3JhdGlvbiIsICJob3ZlcmVkIiwgMC4wKTsKKyAgICAgICAgICAgfQorICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgIHNldF9zdGF0ZShQQVJUOiJkZWNvcmF0aW9uIiwg
ImRpc2FibGVkIiwgMC4wKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHBhcnRzIHsKKyAgICAg
ICAgcGFydCB7CisgICAgICAgICAgICBuYW1lOiAiZGVjb3JhdGlvbiI7CisgICAgICAgICAgICB0
eXBlOiBJTUFHRTsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uIHsKKyAgICAgICAgICAgICAgICBz
dGF0ZTogImRlZmF1bHQiIDAuMDsKKyAgICAgICAgICAgICAgICBtaW46IDIwIDIwOworICAgICAg
ICAgICAgICAgIHJlbDEub2Zmc2V0OiAwIC00OworICAgICAgICAgICAgICAgIHJlbDIub2Zmc2V0
OiAtMSAwOworICAgICAgICAgICAgICAgIGltYWdlIHsKKyAgICAgICAgICAgICAgICAgICAgbm9y
bWFsOiAid2lkZ2V0L3NlYXJjaC9kZWNvcmF0aW9uL2RlY29yYXRpb25fbm9ybWFsX2J1dHRvbi5w
bmciOworICAgICAgICAgICAgICAgICAgICBib3JkZXI6IDAgMCA4IDg7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVzY3JpcHRpb24geworICAgICAgICAg
ICAgICAgIHN0YXRlOiAiZGlzYWJsZWQiIDAuMDsKKyAgICAgICAgICAgICAgICBpbmhlcml0OiAi
ZGVmYXVsdCIgMC4wOworICAgICAgICAgICAgICAgIGNvbG9yOiAyNTUgMjU1IDI1NSAxNTA7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBkZXNjcmlwdGlvbiB7CisgICAgICAgICAgICAgICAg
c3RhdGU6ICJob3ZlcmVkIiAwLjA7CisgICAgICAgICAgICAgICAgaW5oZXJpdDogImRlZmF1bHQi
IDAuMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlc2NyaXB0aW9uIHsKKyAgICAgICAg
ICAgICAgICBzdGF0ZTogImZvY3VzZWQiIDAuMDsKKyAgICAgICAgICAgICAgICBpbmhlcml0OiAi
ZGVmYXVsdCIgMC4wOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVzY3JpcHRpb24gewor
ICAgICAgICAgICAgICAgIHN0YXRlOiAicHJlc3NlZCIgMC4wOworICAgICAgICAgICAgICAgIGlu
aGVyaXQ6ICJkZWZhdWx0IiAwLjA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBwcm9ncmFtcyB7CisgICAgICAgIHByb2dyYW0geworICAgICAgICAgICAgbmFtZTogImVu
YWJsZWQiOworICAgICAgICAgICAgc2lnbmFsOiAiZW5hYmxlZCI7CisgICAgICAgICAgICBzY3Jp
cHQgeworICAgICAgICAgICAgICAgIHNldF9pbnQoaXNFbmFibGVkLCAxKTsKKyAgICAgICAgICAg
ICAgICBzaG93KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcHJvZ3JhbSB7
CisgICAgICAgICAgICBuYW1lOiAicHJlc3NlZCI7CisgICAgICAgICAgICBzaWduYWw6ICJwcmVz
c2VkIjsKKyAgICAgICAgICAgIHNjcmlwdCB7CisgICAgICAgICAgICAgICAgc2V0X2ludChpc1By
ZXNzZWQsIDEpOworICAgICAgICAgICAgICAgIHNob3coKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBwcm9ncmFtIHsKKyAgICAgICAgICAgIG5hbWU6ICJmb2N1c2VkIjsKKyAg
ICAgICAgICAgIHNpZ25hbDogImZvY3VzZWQiOworICAgICAgICAgICAgc2NyaXB0IHsKKyAgICAg
ICAgICAgICAgICBzZXRfaW50KGlzRm9jdXNlZCwgMSk7CisgICAgICAgICAgICAgICAgc2hvdygp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHByb2dyYW0geworICAgICAgICAg
ICAgbmFtZTogImhvdmVyZWQiOworICAgICAgICAgICAgc2lnbmFsOiAiaG92ZXJlZCI7CisgICAg
ICAgICAgICBzY3JpcHQgeworICAgICAgICAgICAgICAgIHNldF9pbnQoaXNIb3ZlcmVkLCAxKTsK
KyAgICAgICAgICAgICAgICBzaG93KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgcHJvZ3JhbSB7CisgICAgICAgICAgICBuYW1lOiAicmVzZXQiOworICAgICAgICAgICAgc2ln
bmFsOiAicmVzZXQiOworICAgICAgICAgICAgc2NyaXB0IHsKKyAgICAgICAgICAgICAgICBzZXRf
aW50KGlzRW5hYmxlZCwgMCk7CisgICAgICAgICAgICAgICAgc2V0X2ludChpc1ByZXNzZWQsIDAp
OworICAgICAgICAgICAgICAgIHNldF9pbnQoaXNDaGVja2VkLCAwKTsKKyAgICAgICAgICAgICAg
ICBzZXRfaW50KGlzRm9jdXNlZCwgMCk7CisgICAgICAgICAgICAgICAgc2V0X2ludChpc0hvdmVy
ZWQsIDApOworICAgICAgICAgICAgICAgIHNob3coKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KK30KZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9z
ZWFyY2gvZmllbGQvZmllbGRfZm9jdXNlZC5wbmcgYi9XZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93
aWRnZXQvc2VhcmNoL2ZpZWxkL2ZpZWxkX2ZvY3VzZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjVjMjY5MjEKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9XZWJL
aXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvc2VhcmNoL2ZpZWxkL2ZpZWxkX2ZvY3VzZWQucG5n
IGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L3NlYXJj
aC9maWVsZC9maWVsZF9ob3ZlcmVkLnBuZyBiL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdl
dC9zZWFyY2gvZmllbGQvZmllbGRfaG92ZXJlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYTU2YjgxMwpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL1dlYktpdC9l
ZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9zZWFyY2gvZmllbGQvZmllbGRfaG92ZXJlZC5wbmcgZGlm
ZmVyCmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvc2VhcmNoL2Zp
ZWxkL2ZpZWxkX25vcm1hbC5wbmcgYi9XZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvc2Vh
cmNoL2ZpZWxkL2ZpZWxkX25vcm1hbC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uOWU3ZmNmMwpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL1dlYktpdC9lZmwvRGVm
YXVsdFRoZW1lL3dpZGdldC9zZWFyY2gvZmllbGQvZmllbGRfbm9ybWFsLnBuZyBkaWZmZXIKZGlm
ZiAtLWdpdCBhL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9zZWFyY2gvZmllbGQvc2Vh
cmNoX2ZpZWxkLmVkYyBiL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9zZWFyY2gvZmll
bGQvc2VhcmNoX2ZpZWxkLmVkYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5l
OWJlMjI5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0
L3NlYXJjaC9maWVsZC9zZWFyY2hfZmllbGQuZWRjCkBAIC0wLDAgKzEsMTUxIEBACisvKgorICAg
IENvcHlyaWdodCAoQykgMjAwOCwyMDA5IElOZFQgLSBJbnN0aXR1dG8gTm9raWEgZGUgVGVjbm9s
b2dpYQorICAgIENvcHlyaWdodCAoQykgMjAwOSwyMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0
ZW1zCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LDIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcworCisg
ICAgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBmaWxlIGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKK2dyb3Vw
IHsKKyAgICAgIG5hbWU6ICJ3ZWJraXQvd2lkZ2V0L3NlYXJjaC9maWVsZCI7CisKKyAgICAgIGlt
YWdlcyB7CisgICAgICAgICBpbWFnZTogIndpZGdldC9zZWFyY2gvZmllbGQvZmllbGRfbm9ybWFs
LnBuZyIgQ09NUDsKKyAgICAgICAgIGltYWdlOiAid2lkZ2V0L3NlYXJjaC9maWVsZC9maWVsZF9m
b2N1c2VkLnBuZyIgQ09NUDsKKyAgICAgICAgIGltYWdlOiAid2lkZ2V0L3NlYXJjaC9maWVsZC9m
aWVsZF9ob3ZlcmVkLnBuZyIgQ09NUDsKKyAgICAgIH0KKworICAgICAgc2NyaXB0IHsKKyAgICAg
ICAgICBwdWJsaWMgaXNFbmFibGVkOworICAgICAgICAgIHB1YmxpYyBpc1ByZXNzZWQ7CisgICAg
ICAgICAgcHVibGljIGlzQ2hlY2tlZDsKKyAgICAgICAgICBwdWJsaWMgaXNGb2N1c2VkOworICAg
ICAgICAgIHB1YmxpYyBpc0hvdmVyZWQ7CisKKyAgICAgICAgICBwdWJsaWMgc2hvdygpIHsKKyAg
ICAgICAgICAgICAgIGlmIChnZXRfaW50KGlzRW5hYmxlZCkgPT0gMSkgeworICAgICAgICAgICAg
ICAgICAgc2V0X3N0YXRlKFBBUlQ6InNlYXJjaF9maWVsZCIsICJkZWZhdWx0IiwgMC4wKTsKKyAg
ICAgICAgICAgICAgICAgIGlmIChnZXRfaW50KGlzRm9jdXNlZCkgPT0gMSkKKyAgICAgICAgICAg
ICAgICAgICAgIHNldF9zdGF0ZShQQVJUOiJzZWFyY2hfZmllbGQiLCAiZm9jdXNlZCIsIDAuMCk7
CisgICAgICAgICAgICAgICAgICBpZiAoZ2V0X2ludChpc1ByZXNzZWQpID09IDEpCisgICAgICAg
ICAgICAgICAgICAgICBzZXRfc3RhdGUoUEFSVDoic2VhcmNoX2ZpZWxkIiwgInByZXNzZWQiLCAw
LjApOworICAgICAgICAgICAgICAgICAgaWYgKGdldF9pbnQoaXNGb2N1c2VkKSA9PSAwICYmIGdl
dF9pbnQoaXNIb3ZlcmVkKSA9PSAxKQorICAgICAgICAgICAgICAgICAgICAgIHNldF9zdGF0ZShQ
QVJUOiJzZWFyY2hfZmllbGQiLCAiaG92ZXJlZCIsIDAuMCk7CisgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICBzZXRfc3RhdGUoUEFSVDoic2Vh
cmNoX2ZpZWxkIiwgImRpc2FibGVkIiwgMC4wKTsKKyAgICAgICAgICB9CisgICAgICB9CisKKyAg
ICAgIHBhcnRzIHsKKyAgICAgICAgIHBhcnQgeworICAgICAgICAgICAgbmFtZTogInNlYXJjaF9m
aWVsZCI7CisgICAgICAgICAgICB0eXBlOiBJTUFHRTsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9u
IHsKKyAgICAgICAgICAgICAgIHN0YXRlOiAiZGVmYXVsdCIgMC4wOworICAgICAgICAgICAgICAg
bWluOiA4OSAyMDsKKyAgICAgICAgICAgICAgIGltYWdlIHsKKyAgICAgICAgICAgICAgICAgIG5v
cm1hbDogIndpZGdldC9zZWFyY2gvZmllbGQvZmllbGRfbm9ybWFsLnBuZyI7CisgICAgICAgICAg
ICAgICAgICBib3JkZXI6IDggOCA4IDg7CisgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBkZXNjcmlwdGlvbiB7CisgICAgICAgICAgICAgICBzdGF0ZTogImRpc2Fi
bGVkIiAwLjA7CisgICAgICAgICAgICAgICBpbmhlcml0OiAiZGVmYXVsdCIgMC4wOworICAgICAg
ICAgICAgICAgY29sb3I6IDI1NSAyNTUgMjU1IDE1MDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGRlc2NyaXB0aW9uIHsKKyAgICAgICAgICAgICAgIHN0YXRlOiAiZm9jdXNlZCIgMC4wOwor
ICAgICAgICAgICAgICAgaW5oZXJpdDogImRlZmF1bHQiIDAuMDsKKyAgICAgICAgICAgICAgIGlt
YWdlIHsKKyAgICAgICAgICAgICAgICAgIG5vcm1hbDogIndpZGdldC9zZWFyY2gvZmllbGQvZmll
bGRfZm9jdXNlZC5wbmciOworICAgICAgICAgICAgICAgICAgYm9yZGVyOiA4IDggOCA4OworICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVzY3JpcHRpb24gewor
ICAgICAgICAgICAgICAgc3RhdGU6ICJob3ZlcmVkIiAwLjA7CisgICAgICAgICAgICAgICBpbmhl
cml0OiAiZm9jdXNlZCIgMC4wOworICAgICAgICAgICAgICAgaW1hZ2UgeworICAgICAgICAgICAg
ICAgICAgbm9ybWFsOiAid2lkZ2V0L3NlYXJjaC9maWVsZC9maWVsZF9ob3ZlcmVkLnBuZyI7Cisg
ICAgICAgICAgICAgICAgICBib3JkZXI6IDggOCA4IDg7CisgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBkZXNjcmlwdGlvbiB7CisgICAgICAgICAgICAgICBzdGF0
ZTogInByZXNzZWQiIDAuMDsKKyAgICAgICAgICAgICAgIGluaGVyaXQ6ICJmb2N1c2VkIiAwLjA7
CisgICAgICAgICAgICB9CisgICAgICAgICB9CisKKyAgICAgICAgIHBhcnQgeworICAgICAgICAg
ICAgbmFtZTogInRleHRfY29uZmluZW1lbnQiOworICAgICAgICAgICAgdHlwZTogUkVDVDsKKyAg
ICAgICAgICAgIGRlc2NyaXB0aW9uIHsKKyAgICAgICAgICAgICAgIHN0YXRlOiAiZGVmYXVsdCIg
MC4wOworICAgICAgICAgICAgICAgY29sb3I6IDAgMCAwIDA7CisgICAgICAgICAgICAgICByZWwx
Lm9mZnNldDogNCA2OyAgIC8vIDwtIDYgYmVjYXVzZSBvZiB0aGUgYmxpbmsgY3Vyc29yCisgICAg
ICAgICAgICAgICByZWwyLm9mZnNldDogLTQgLTU7IC8vIDwtIGR1ZSB0byB0aGUgaW1hZ2UKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgIH0KKworICAgICAgfQorCisgICAgICBwcm9ncmFtcyB7Cisg
ICAgICAgICBwcm9ncmFtIHsKKyAgICAgICAgICAgIG5hbWU6ICJlbmFibGVkIjsKKyAgICAgICAg
ICAgIHNpZ25hbDogImVuYWJsZWQiOworICAgICAgICAgICAgc2NyaXB0IHsKKyAgICAgICAgICAg
ICAgIHNldF9pbnQoaXNFbmFibGVkLCAxKTsKKyAgICAgICAgICAgICAgIHNob3coKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgICAgIHByb2dyYW0geworICAgICAgICAgICAgbmFt
ZTogInByZXNzZWQiOworICAgICAgICAgICAgc2lnbmFsOiAicHJlc3NlZCI7CisgICAgICAgICAg
ICBzY3JpcHQgeworICAgICAgICAgICAgICAgc2V0X2ludChpc1ByZXNzZWQsIDEpOworICAgICAg
ICAgICAgICAgc2hvdygpOworICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICAgICAgcHJv
Z3JhbSB7CisgICAgICAgICAgICBuYW1lOiAiZm9jdXNlZCI7CisgICAgICAgICAgICBzaWduYWw6
ICJmb2N1c2VkIjsKKyAgICAgICAgICAgIHNjcmlwdCB7CisgICAgICAgICAgICAgICBzZXRfaW50
KGlzRm9jdXNlZCwgMSk7CisgICAgICAgICAgICAgICBzaG93KCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICB9CisgICAgICAgICAgcHJvZ3JhbSB7CisgICAgICAgICAgICBuYW1lOiAiaG92ZXJl
ZCI7CisgICAgICAgICAgICBzaWduYWw6ICJob3ZlcmVkIjsKKyAgICAgICAgICAgIHNjcmlwdCB7
CisgICAgICAgICAgICAgICBzZXRfaW50KGlzSG92ZXJlZCwgMSk7CisgICAgICAgICAgICAgICBz
aG93KCk7CisgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgICAgIHByb2dyYW0geworICAg
ICAgICAgICAgbmFtZTogInJlc2V0IjsKKyAgICAgICAgICAgIHNpZ25hbDogInJlc2V0IjsKKyAg
ICAgICAgICAgIHNjcmlwdCB7CisgICAgICAgICAgICAgICBzZXRfaW50KGlzRW5hYmxlZCwgMCk7
CisgICAgICAgICAgICAgICBzZXRfaW50KGlzUHJlc3NlZCwgMCk7CisgICAgICAgICAgICAgICBz
ZXRfaW50KGlzQ2hlY2tlZCwgMCk7CisgICAgICAgICAgICAgICBzZXRfaW50KGlzRm9jdXNlZCwg
MCk7CisgICAgICAgICAgICAgICBzZXRfaW50KGlzSG92ZXJlZCwgMCk7CisgICAgICAgICAgICAg
ICBzaG93KCk7CisgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgICB9CisgICB9CmRpZmYg
LS1naXQgYS9XZWJLaXQvZWZsL0VXZWJMYXVuY2hlci9NYWtlZmlsZS5hbSBiL1dlYktpdC9lZmwv
RVdlYkxhdW5jaGVyL01ha2VmaWxlLmFtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmRlYTM2NWMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvZWZsL0VXZWJMYXVuY2hlci9N
YWtlZmlsZS5hbQpAQCAtMCwwICsxLDY3IEBACitub2luc3RfUFJPR1JBTVMgKz0gXAorCVByb2dy
YW1zL0VXZWJMYXVuY2hlciBcCisJUHJvZ3JhbXMvRVdlYkJlbmNoU3RyZXNzIFwKKwlQcm9ncmFt
cy9FV2ViQmVuY2hBbmltYXRpb24KKworUHJvZ3JhbXNfRVdlYkxhdW5jaGVyX0NQUEZMQUdTID0g
XAorCS1JJCh0b3Bfc3JjZGlyKS9XZWJLaXQvZWZsIFwKKwktSSQodG9wX3NyY2RpcikvV2ViS2l0
L2VmbC9ld2sgXAorCSQoRUZMREVQU19DRkxBR1MpCisKK1Byb2dyYW1zX0VXZWJMYXVuY2hlcl9T
T1VSQ0VTID0gXAorCVdlYktpdC9lZmwvRVdlYkxhdW5jaGVyL21haW4uYworCitQcm9ncmFtc19F
V2ViTGF1bmNoZXJfQ0ZMQUdTID0gXAorCS1mbm8tc3RyaWN0LWFsaWFzaW5nIFwKKwkkKGdsb2Jh
bF9jZmxhZ3MpIFwKKwkkKEVGTERFUFNfQ0ZMQUdTKQorCitpZiBFTkFCTEVfR0xJQl9TVVBQT1JU
CitQcm9ncmFtc19FV2ViTGF1bmNoZXJfQ0ZMQUdTICs9IFwKKwktREVOQUJMRV9HTElCX1NVUFBP
UlQKK2VuZGlmCisKK1Byb2dyYW1zX0VXZWJMYXVuY2hlcl9MREFERCA9IFwKKwlsaWJld2Via2l0
LmxhIFwKKwkkKEVGTERFUFNfTElCUykKKworIyBCZW5jaG1hcmsgdG9vbHMgIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitQcm9ncmFtc19FV2Vi
QmVuY2hTdHJlc3NfQ1BQRkxBR1MgPSBcCisJLUkkKHRvcF9zcmNkaXIpL1dlYktpdC9lZmwgXAor
CS1JJCh0b3Bfc3JjZGlyKS9XZWJLaXQvZWZsL2V3ayBcCisJJChFRkxERVBTX0NGTEFHUykKKwor
UHJvZ3JhbXNfRVdlYkJlbmNoU3RyZXNzX1NPVVJDRVMgPSBcCisJV2ViS2l0L2VmbC9FV2ViTGF1
bmNoZXIvYmVuY2hfc3RyZXNzLmMKKworUHJvZ3JhbXNfRVdlYkJlbmNoU3RyZXNzX0NGTEFHUyA9
IFwKKwktZm5vLXN0cmljdC1hbGlhc2luZyBcCisJJChnbG9iYWxfY2ZsYWdzKSBcCisJJChFRkxE
RVBTX0NGTEFHUykKKworUHJvZ3JhbXNfRVdlYkJlbmNoU3RyZXNzX0xEQUREID0gXAorCWxpYmV3
ZWJraXQubGEgXAorCSQoRUZMREVQU19MSUJTKQorCitQcm9ncmFtc19FV2ViQmVuY2hBbmltYXRp
b25fQ1BQRkxBR1MgPSBcCisJLUkkKHRvcF9zcmNkaXIpL1dlYktpdC9lZmwgXAorCS1JJCh0b3Bf
c3JjZGlyKS9XZWJLaXQvZWZsL2V3ayBcCisJJChFRkxERVBTX0NGTEFHUykKKworUHJvZ3JhbXNf
RVdlYkJlbmNoQW5pbWF0aW9uX1NPVVJDRVMgPSBcCisJV2ViS2l0L2VmbC9FV2ViTGF1bmNoZXIv
YmVuY2hfYW5pbWF0aW9uLmMKKworUHJvZ3JhbXNfRVdlYkJlbmNoQW5pbWF0aW9uX0NGTEFHUyA9
IFwKKwktZm5vLXN0cmljdC1hbGlhc2luZyBcCisJJChnbG9iYWxfY2ZsYWdzKSBcCisJJChFRkxE
RVBTX0NGTEFHUykKKworUHJvZ3JhbXNfRVdlYkJlbmNoQW5pbWF0aW9uX0xEQUREID0gXAorCWxp
YmV3ZWJraXQubGEgXAorCSQoRUZMREVQU19MSUJTKQorCisjIGNsZWFuIHRhcmdldAorQ0xFQU5G
SUxFUyArPSBcCisJUHJvZ3JhbXMvRVdlYkxhdW5jaGVyIFwKKwlQcm9ncmFtcy9FV2ViQmVuY2hT
dHJlc3MgXAorCVByb2dyYW1zL0VXZWJCZW5jaEFuaW1hdGlvbgpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2VmbC9FV2ViTGF1bmNoZXIvYmVuY2hfYW5pbWF0aW9uLmMgYi9XZWJLaXQvZWZsL0VXZWJMYXVu
Y2hlci9iZW5jaF9hbmltYXRpb24uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li44OTE1ZGMzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2VmbC9FV2ViTGF1bmNoZXIvYmVu
Y2hfYW5pbWF0aW9uLmMKQEAgLTAsMCArMSw2NTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDksIDIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKKyAqIENvcHlyaWdodCAoQykgMjAw
OSwgMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiRVdlYktpdC5oIgorCisjaW5jbHVkZSA8RWNvcmUuaD4KKyNpbmNs
dWRlIDxFY29yZV9FdmFzLmg+CisjaW5jbHVkZSA8RWNvcmVfR2V0b3B0Lmg+CisjaW5jbHVkZSA8
RWRqZS5oPgorI2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorI2luY2x1
ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNp
bmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5o
PgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCitzdGF0aWMgY29uc3QgRWNvcmVfR2V0b3B0IG9wdGlv
bnMgPSB7CisgICAgIkVXZWJCZW5jaEFuaW1hdGlvbiIsCisgICAgIiVwcm9nIFtvcHRpb25zXSBb
dGVzdC1uYW1lc10iLAorICAgICIwLjEuMCIsCisgICAgIihDKTIwMDksIDIwMTAgUHJvRlVTSU9O
IGVtYmVkZGVkIHN5c3RlbXNcbiIKKyAgICAiKEMpMjAwOSwgMjAxMCBTYW1zdW5nIEVsZWN0cm9u
aWNzIiwKKyAgICAiR1BMIiwKKyAgICAiQmVuY2htYXJrIEVXZWJLaXQsIG1lYXN1cmVzIGZyYW1l
cmF0ZSBkdXJpbmcgYW5pbWF0b25zLiIsCisgICAgRUlOQV9UUlVFLAorICAgIHtFQ09SRV9HRVRP
UFRfU1RPUkVfU1RSCisgICAgICgnZScsICJlbmdpbmUiLCAiZWNvcmUtZXZhcyBlbmdpbmUgdG8g
dXNlLiIpLAorICAgICBFQ09SRV9HRVRPUFRfQ0FMTEJBQ0tfTk9BUkdTCisgICAgICgnRScsICJs
aXN0LWVuZ2luZXMiLCAibGlzdCBlY29yZS1ldmFzIGVuZ2luZXMuIiwKKyAgICAgIGVjb3JlX2dl
dG9wdF9jYWxsYmFja19lY29yZV9ldmFzX2xpc3RfZW5naW5lcywgTlVMTCksCisgICAgIEVDT1JF
X0dFVE9QVF9DSE9JQ0UKKyAgICAgKCdnJywgImdlb21ldHJ5IiwgImdlb21ldHJ5IHRvIHVzZSBp
biB4Onk6dzpoIGZvcm0uIiwgIlg6WTpXOkgiLAorICAgICAgZWNvcmVfZ2V0b3B0X2NhbGxiYWNr
X2dlb21ldHJ5X3BhcnNlLCBOVUxMKSwKKyAgICAgRUNPUkVfR0VUT1BUX1NUT1JFX1NUUgorICAg
ICAoJ3QnLCAidGhlbWUiLCAicGF0aCB0byByZWFkIHRoZSB0aGVtZSBmaWxlIGZyb20uIiksCisg
ICAgIEVDT1JFX0dFVE9QVF9TVE9SRV9TVFIKKyAgICAgKCd1JywgInVybCIsICJ1cmwgdG8gdGVz
dC4iKSwKKyAgICAgRUNPUkVfR0VUT1BUX1NUT1JFX0RFRl9JTlQKKyAgICAgKCdUJywgInRpbWUi
LCAidGltZSB0byBydW4gZWFjaCB0ZXN0LiIsIDYwKSwKKyAgICAgRUNPUkVfR0VUT1BUX0NBTExC
QUNLX0FSR1MKKyAgICAgKCdyJywgInByZS1yZW5kZXIiLCAiZ2VvbWV0cnkgdG8gcHJlLXJlbmRl
ciB4Onk6dzpoIGZvcm0uIiwgIlg6WTpXOkgiLAorICAgICAgZWNvcmVfZ2V0b3B0X2NhbGxiYWNr
X2dlb21ldHJ5X3BhcnNlLCBOVUxMKSwKKyAgICAgRUNPUkVfR0VUT1BUX1NUT1JFX0RFRl9JTlQK
KyAgICAgKCdzJywgInN0ZXAtc2Nyb2xsIiwgInN0ZXAgdG8gdXNlIGZvciBzY3JvbGwgdGVzdHMu
IiwgMSksCisgICAgIEVDT1JFX0dFVE9QVF9TVE9SRV9ERUZfRE9VQkxFCisgICAgICgneicsICJz
dGVwLXpvb20iLCAic3RlcCB0byB1c2UgZm9yIHpvb20gdGVzdHMuIiwgMC4xKSwKKyAgICAgRUNP
UkVfR0VUT1BUX1NUT1JFX0JPT0woJ1MnLCAic21vb3RoLXNjYWxlIiwgInVzZSBzbW9vdGggc2Nh
bGluZy4iKSwKKyAgICAgRUNPUkVfR0VUT1BUX1NUT1JFX0RFRl9ET1VCTEUoJ2YnLCAiZnBzIiwg
ImZyYW1lcy1wZXItc2Vjb25kIiwgMjQuMCksCisgICAgIEVDT1JFX0dFVE9QVF9TVE9SRV9UUlVF
KCd2JywgInZlcmJvc2UiLCAiYmUgdmVyYm9zZSIpLAorICAgICBFQ09SRV9HRVRPUFRfSEVMUCgn
aCcsICJoZWxwIiksCisgICAgIEVDT1JFX0dFVE9QVF9TRU5USU5FTAorICAgIH0KK307CisKK3N0
cnVjdCBjdHh0OworCitzdHJ1Y3QgdGVzdF9jYXNlIHsKKyAgICBjb25zdCBjaGFyICpuYW1lOwor
ICAgIEVpbmFfQm9vbCAoKnRlc3QpKHN0cnVjdCBjdHh0Kik7CisgICAgdm9pZCAoKnNldHVwKShz
dHJ1Y3QgY3R4dCopOworICAgIHZvaWQgKCp0ZWFyX2Rvd24pKHN0cnVjdCBjdHh0Kik7Cit9Owor
CitzdHJ1Y3QgY3R4dCB7CisgICAgRWNvcmVfRXZhcyAqZWU7CisgICAgRXZhcyAqZTsKKyAgICBF
dmFzX09iamVjdCAqYmc7CisgICAgRXZhc19PYmplY3QgKmV2ZW50YXJlYTsKKyAgICBFdmFzX09i
amVjdCAqdmlldzsKKyAgICBFdmFzX0Nvb3JkIHcsIGg7CisgICAgRWluYV9SZWN0YW5nbGUgcHJl
UmVuZGVyOworICAgIHNpemVfdCBjYWNoZVNpemU7CisgICAgdW5zaWduZWQgaW50IHN0ZXBTY3Jv
bGw7CisgICAgZmxvYXQgc3RlcFpvb207CisgICAgY29uc3QgY2hhciAqdXJsOworICAgIGNvbnN0
IGNoYXIgKnRoZW1lOworICAgIEV2YXNfT2JqZWN0ICooKnZpZXdBZGQpKEV2YXMgKmUpOworICAg
IEVpbmFfQm9vbCB2ZXJib3NlOworICAgIEVpbmFfQm9vbCBzbW9vdGhTY2FsZTsKKyAgICBkb3Vi
bGUgZnBzOworICAgIHZvaWQgKnRlc3RfZGF0YTsKKyAgICBzdHJ1Y3QgeworICAgICAgICBpbnQg
YmFzZSwgY291bnQ7CisgICAgICAgIGNoYXIgKiphcmd2OworICAgIH0gY21kX2FyZ3M7CisgICAg
c3RydWN0IHsKKyAgICAgICAgY29uc3Qgc3RydWN0IHRlc3RfY2FzZSAqY3VycmVudDsKKyAgICB9
IHRlc3RzOworICAgIHN0cnVjdCB7CisgICAgICAgIGRvdWJsZSBzdGFydCwgZW5kLCBsYXN0Owor
ICAgICAgICBkb3VibGUgZHVyYXRpb247CisgICAgfSB0aW1lOworICAgIHN0cnVjdCB7CisgICAg
ICAgIHVpbnQ2NF90IG9wZXJhdGlvbnM7CisgICAgfSBhY2NvdW50OworICAgIHN0cnVjdCB7Cisg
ICAgICAgIGRvdWJsZSB0YXJnZXQsIG1pbiwgbWF4LCBzcWRpZnN1bTsKKyAgICB9IGZyYW1ldGlt
ZTsKK307CisKKworc3RhdGljIGludCB0ZXN0UHJlcGFyZSh2b2lkICpkYXRhKTsKK3N0YXRpYyBF
aW5hX0Jvb2wgdmlld0FkZChzdHJ1Y3QgY3R4dCAqY3R4dCk7CitzdGF0aWMgdm9pZCB2aWV3RGVs
KHN0cnVjdCBjdHh0ICpjdHh0KTsKKworc3RhdGljIHZvaWQgdGVzdE5leHQoc3RydWN0IGN0eHQg
KmN0eHQpCit7CisgICAgY3R4dC0+dGVzdHMuY3VycmVudCsrOworICAgIGlmICghY3R4dC0+dGVz
dHMuY3VycmVudC0+bmFtZSkgeworICAgICAgICBpZiAoY3R4dC0+dmVyYm9zZSkKKyAgICAgICAg
ICAgIHByaW50ZigiRVdlYkJlbmNoQW5pbWF0aW9uOiBhbGwgdGVzdHMgZmluaXNoZWQuXG4iKTsK
KyAgICAgICAgZWNvcmVfbWFpbl9sb29wX3F1aXQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBlY29yZV9pZGxlX2VudGVyZXJfYWRkKHRlc3RQcmVwYXJlLCBjdHh0KTsKK30KKworc3Rh
dGljIGludCB0ZXN0UHJlcGFyZSh2b2lkICpkYXRhKQoreworICAgIHN0cnVjdCBjdHh0ICpjdHh0
ID0gZGF0YTsKKyAgICBjb25zdCBzdHJ1Y3QgdGVzdF9jYXNlICp0ZXN0ID0gY3R4dC0+dGVzdHMu
Y3VycmVudDsKKworICAgIGlmIChjdHh0LT5jbWRfYXJncy5iYXNlIDwgY3R4dC0+Y21kX2FyZ3Mu
Y291bnQpIHsKKyAgICAgICAgRWluYV9Cb29sIGluVXNlID0gRUlOQV9GQUxTRTsKKyAgICAgICAg
Y2hhciAqKmFyZ3YgPSBjdHh0LT5jbWRfYXJncy5hcmd2OworICAgICAgICBpbnQgaTsKKyAgICAg
ICAgZm9yIChpID0gY3R4dC0+Y21kX2FyZ3MuYmFzZTsgaSA8IGN0eHQtPmNtZF9hcmdzLmNvdW50
OyBpKyssIGFyZ3YrKykgeworICAgICAgICAgICAgaWYgKCFzdHJjbXAoYXJndltpXSwgdGVzdC0+
bmFtZSkpIHsKKyAgICAgICAgICAgICAgICBpblVzZSA9IEVJTkFfVFJVRTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICghaW5V
c2UpIHsKKyAgICAgICAgICAgIGlmIChjdHh0LT52ZXJib3NlKQorICAgICAgICAgICAgICAgIHBy
aW50ZigiRVdlYkJlbmNoQW5pbWF0aW9uOiB0ZXN0PSVzIGlnbm9yZWQgYnkgdXNlci5cbiIsCisg
ICAgICAgICAgICAgICAgICAgICAgIHRlc3QtPm5hbWUpOworICAgICAgICAgICAgdGVzdE5leHQo
Y3R4dCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlm
ICghdmlld0FkZChjdHh0KSkgeworICAgICAgICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOworICAg
ICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBjb250aW51ZXMgd2l0aCB2aWV3UmVhZHks
IGFkZGVkIGJ5IHZpZXdBZGQoKSAqLworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lk
IHRlc3RTaHV0ZG93bihzdHJ1Y3QgY3R4dCAqY3R4dCkKK3sKKyAgICBjb25zdCBzdHJ1Y3QgdGVz
dF9jYXNlICp0ZXN0ID0gY3R4dC0+dGVzdHMuY3VycmVudDsKKyAgICBkb3VibGUgZWxhcHNlZCwg
ZnBzLCBzdGRldjsKKworICAgIGN0eHQtPnRpbWUuZW5kID0gZWNvcmVfbG9vcF90aW1lX2dldCgp
OworICAgIGVsYXBzZWQgPSBjdHh0LT50aW1lLmVuZCAtIGN0eHQtPnRpbWUuc3RhcnQ7CisgICAg
aWYgKGVsYXBzZWQgPiAwKQorICAgICAgICBmcHMgPSAoZG91YmxlKWN0eHQtPmFjY291bnQub3Bl
cmF0aW9ucyAvIGVsYXBzZWQ7CisgICAgZWxzZQorICAgICAgICBmcHMgPSAwLjA7CisKKyAgICBp
ZiAoY3R4dC0+YWNjb3VudC5vcGVyYXRpb25zID4gMCkKKyAgICAgICAgc3RkZXYgPSBzcXJ0KGN0
eHQtPmZyYW1ldGltZS5zcWRpZnN1bSAvIChkb3VibGUpY3R4dC0+YWNjb3VudC5vcGVyYXRpb25z
KTsKKyAgICBlbHNlCisgICAgICAgIHN0ZGV2ID0gMC4wOworCisgICAgaWYgKGN0eHQtPnZlcmJv
c2UpCisgICAgICAgIHByaW50ZigiRVdlYkJlbmNoQW5pbWF0aW9uOiB0ZXN0PSVzLCAgIGVuZD0l
MC4zZlxuIiwKKyAgICAgICAgICAgICAgIHRlc3QtPm5hbWUsIGN0eHQtPnRpbWUuZW5kKTsKKwor
CisgICAgcHJpbnRmKCJFV2ViQmVuY2hBbmltYXRpb246IHRlc3Q9JXMsIFJFU1VMVDogZWxhcHNl
ZD0lMC4zZiwgIgorICAgICAgICAgICAib3BlcmF0aW9ucz0lIiBQUkl1NjQgIiwgZnBzPSUwLjNm
IChyZXE6ICUwLjNmKSwgIgorICAgICAgICAgICAiZnJhbWV0aW1lOiBtaW49JTAuNWYsIG1heD0l
MC41ZiwgdGFyZ2V0PSUwLjVmLCBzdGRldj0lMC41ZlxuIiwKKyAgICAgICAgICAgY3R4dC0+dGVz
dHMuY3VycmVudC0+bmFtZSwgZWxhcHNlZCwgY3R4dC0+YWNjb3VudC5vcGVyYXRpb25zLAorICAg
ICAgICAgICBmcHMsIGN0eHQtPmZwcywgY3R4dC0+ZnJhbWV0aW1lLm1pbiwgY3R4dC0+ZnJhbWV0
aW1lLm1heCwKKyAgICAgICAgICAgY3R4dC0+ZnJhbWV0aW1lLnRhcmdldCwgc3RkZXYpOworCisg
ICAgaWYgKHRlc3QtPnRlYXJfZG93bikKKyAgICAgICAgdGVzdC0+dGVhcl9kb3duKGN0eHQpOwor
CisgICAgdmlld0RlbChjdHh0KTsKKworICAgIHRlc3ROZXh0KGN0eHQpOworfQorCitzdGF0aWMg
aW50IHRlc3RJdGVyYXRlKHZvaWQgKmRhdGEpCit7CisgICAgc3RydWN0IGN0eHQgKmN0eHQgPSBk
YXRhOworICAgIGNvbnN0IHN0cnVjdCB0ZXN0X2Nhc2UgKnRlc3QgPSBjdHh0LT50ZXN0cy5jdXJy
ZW50OworICAgIGRvdWJsZSBub3cgPSBlY29yZV9sb29wX3RpbWVfZ2V0KCk7CisgICAgZG91Ymxl
IGZyYW1ldGltZSwgZGVsYXk7CisKKyAgICBpZiAobm93ID49IGN0eHQtPnRpbWUuZW5kKSB7Cisg
ICAgICAgIHRlc3RTaHV0ZG93bihjdHh0KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisg
ICAgaWYgKCF0ZXN0LT50ZXN0KGN0eHQpKSB7CisgICAgICAgIHRlc3RTaHV0ZG93bihjdHh0KTsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgZnJhbWV0aW1lID0gKG5vdyAtIGN0eHQt
PnRpbWUubGFzdCk7CisgICAgZGVsYXkgPSBmcmFtZXRpbWUgLSBjdHh0LT5mcmFtZXRpbWUudGFy
Z2V0OworCisgICAgaWYgKGN0eHQtPmZyYW1ldGltZS5taW4gPiBmcmFtZXRpbWUpCisgICAgICAg
IGN0eHQtPmZyYW1ldGltZS5taW4gPSBmcmFtZXRpbWU7CisgICAgaWYgKGN0eHQtPmZyYW1ldGlt
ZS5tYXggPCBmcmFtZXRpbWUpCisgICAgICAgIGN0eHQtPmZyYW1ldGltZS5tYXggPSBmcmFtZXRp
bWU7CisKKyAgICBjdHh0LT50aW1lLmxhc3QgPSBub3c7CisKKyAgICBjdHh0LT5hY2NvdW50Lm9w
ZXJhdGlvbnMrKzsKKyAgICBjdHh0LT5mcmFtZXRpbWUuc3FkaWZzdW0gKz0gZGVsYXkgKiBkZWxh
eTsgLyogdXNlZCBieSBzdGFuZGFyZCBkZXZpYXRpb24gKi8KKworICAgIHJldHVybiAxOworfQor
CitzdGF0aWMgdm9pZCB0ZXN0UnVuKHN0cnVjdCBjdHh0ICpjdHh0KQoreworICAgIGNvbnN0IHN0
cnVjdCB0ZXN0X2Nhc2UgKnRlc3QgPSBjdHh0LT50ZXN0cy5jdXJyZW50OworCisgICAgdGVzdC0+
c2V0dXAoY3R4dCk7CisgICAgY3R4dC0+dGltZS5zdGFydCA9IGVjb3JlX2xvb3BfdGltZV9nZXQo
KTsKKyAgICBjdHh0LT50aW1lLmxhc3QgPSBjdHh0LT50aW1lLnN0YXJ0OworICAgIGN0eHQtPnRp
bWUuZW5kID0gY3R4dC0+dGltZS5zdGFydCArIGN0eHQtPnRpbWUuZHVyYXRpb247CisgICAgY3R4
dC0+YWNjb3VudC5vcGVyYXRpb25zID0gMDsKKyAgICBjdHh0LT5mcmFtZXRpbWUubWluID0gOTk5
OTk5OTk5Ljk5OTsKKyAgICBjdHh0LT5mcmFtZXRpbWUubWF4ID0gLTk5OTk5OTk5OS45OTk7Cisg
ICAgY3R4dC0+ZnJhbWV0aW1lLnNxZGlmc3VtID0gMC4wOworCisgICAgaWYgKGN0eHQtPnZlcmJv
c2UpCisgICAgICAgIHByaW50ZigiRVdlYkJlbmNoQW5pbWF0aW9uOiB0ZXN0PSVzLCBzdGFydD0l
MC4zZlxuIiwKKyAgICAgICAgICAgICAgIHRlc3QtPm5hbWUsIGN0eHQtPnRpbWUuc3RhcnQpOwor
CisgICAgZWNvcmVfYW5pbWF0b3JfYWRkKHRlc3RJdGVyYXRlLCBjdHh0KTsKK30KKworc3RhdGlj
IGludCB2aWV3QWRkUHJlUmVuZGVyVGltZXIodm9pZCAqZGF0YSkKK3sKKyAgICB0ZXN0UnVuKGRh
dGEpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCB2aWV3UmVhZHkodm9pZCAqZGF0
YSwgRXZhc19PYmplY3QgKm8sIHZvaWQgKmluZm8pCit7CisgICAgc3RydWN0IGN0eHQgKmN0eHQg
PSBkYXRhOworICAgIGlmIChjdHh0LT52ZXJib3NlKQorICAgICAgICBwcmludGYoIkVXZWJCZW5j
aEFuaW1hdGlvbjogdmlldyBpcyByZWFkeS5cbiIpOworCisgICAgaWYgKGN0eHQtPnByZVJlbmRl
ci53ID4gMCAmJiBjdHh0LT5wcmVSZW5kZXIuaCA+IDApIHsKKyAgICAgICAgRXZhc19Db29yZCB4
ID0gY3R4dC0+cHJlUmVuZGVyLng7CisgICAgICAgIEV2YXNfQ29vcmQgeSA9IGN0eHQtPnByZVJl
bmRlci55OworICAgICAgICBFdmFzX0Nvb3JkIHcgPSBjdHh0LT5wcmVSZW5kZXIudzsKKyAgICAg
ICAgRXZhc19Db29yZCBoID0gY3R4dC0+cHJlUmVuZGVyLmg7CisgICAgICAgIGV3a192aWV3X3By
ZV9yZW5kZXJfcmVnaW9uKGN0eHQtPnZpZXcsIHgsIHksIHcsIGgsIDEuMCk7CisKKyAgICAgICAg
aWYgKGN0eHQtPnZlcmJvc2UpCisgICAgICAgICAgICBwcmludGYoIkVXZWJCZW5jaEFuaW1hdGlv
bjogcHJlLXJlbmRlciByZWdpb24gJWQsJWQrJWR4JWQgZm9yICIKKyAgICAgICAgICAgICAgICAg
ICAiNSBzZWNvbmRzXG4iLCB4LCB5LCB3LCBoKTsKKyAgICAgICAgZWNvcmVfdGltZXJfYWRkKDUu
MCwgdmlld0FkZFByZVJlbmRlclRpbWVyLCBjdHh0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHRlc3RSdW4oY3R4dCk7Cit9CisKK3N0YXRpYyBFaW5hX0Jvb2wgdmlld0FkZChzdHJ1
Y3QgY3R4dCAqY3R4dCkKK3sKKyAgICBjdHh0LT52aWV3ID0gY3R4dC0+dmlld0FkZChjdHh0LT5l
KTsKKyAgICBpZiAoIWN0eHQtPnZpZXcpCisgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAg
IGV2YXNfb2JqZWN0X3JhaXNlKGN0eHQtPmV2ZW50YXJlYSk7CisgICAgZXdrX3ZpZXdfem9vbV93
ZWFrX3Ntb290aF9zY2FsZV9zZXQoY3R4dC0+dmlldywgY3R4dC0+c21vb3RoU2NhbGUpOworICAg
IGV3a192aWV3X3RoZW1lX3NldChjdHh0LT52aWV3LCBjdHh0LT50aGVtZSk7CisgICAgZXZhc19v
YmplY3RfcmVzaXplKGN0eHQtPnZpZXcsIGN0eHQtPncsIGN0eHQtPmgpOworICAgIGV2YXNfb2Jq
ZWN0X3Nob3coY3R4dC0+dmlldyk7CisKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19h
ZGQKKyAgICAgICAgKGN0eHQtPnZpZXcsICJsb2FkLGZpbmlzaGVkIiwgdmlld1JlYWR5LCBjdHh0
KTsKKyAgICBpZiAoIWV3a192aWV3X3VyaV9zZXQoY3R4dC0+dmlldywgY3R4dC0+dXJsKSkgewor
ICAgICAgICBldmFzX29iamVjdF9kZWwoY3R4dC0+dmlldyk7CisgICAgICAgIGN0eHQtPnZpZXcg
PSBOVUxMOworICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICB9CisKKyAgICBpZiAoY3R4
dC0+dmVyYm9zZSkKKyAgICAgICAgcHJpbnRmKCJFV2ViQmVuY2hBbmltYXRpb246IGxvYWRpbmcg
dXJsPSVzIC4uLlxuIiwgY3R4dC0+dXJsKTsKKyAgICByZXR1cm4gRUlOQV9UUlVFOworfQorCitz
dGF0aWMgdm9pZCB2aWV3RGVsKHN0cnVjdCBjdHh0ICpjdHh0KQoreworICAgIGV2YXNfb2JqZWN0
X2RlbChjdHh0LT52aWV3KTsKKyAgICBjdHh0LT52aWV3ID0gTlVMTDsKK30KKworLyogU2Nyb2xs
IFRlc3RzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqLworc3RydWN0IHRlc3Rfc2Nyb2xsX2N0eHQgeworICAgIEV2YXNfT2JqZWN0
ICptYWluX2ZyYW1lOworICAgIEV2YXNfQ29vcmQgeCwgeSwgdywgaDsKKyAgICBpbnQgZHgsIGR5
OworfTsKKworc3RhdGljIHZvaWQgdGVzdFNjcm9sbFNldHVwKHN0cnVjdCBjdHh0ICpjdHh0KQor
eworICAgIHN0YXRpYyBzdHJ1Y3QgdGVzdF9zY3JvbGxfY3R4dCB0ZGF0YTsKKyAgICB0ZGF0YS5t
YWluX2ZyYW1lID0gZXdrX3ZpZXdfZnJhbWVfbWFpbl9nZXQoY3R4dC0+dmlldyk7CisgICAgdGRh
dGEueCA9IDA7CisgICAgdGRhdGEueSA9IDA7CisgICAgdGRhdGEuZHggPSBjdHh0LT5zdGVwU2Ny
b2xsOworICAgIHRkYXRhLmR5ID0gY3R4dC0+c3RlcFNjcm9sbDsKKyAgICBld2tfZnJhbWVfc2Ny
b2xsX3NpemVfZ2V0KHRkYXRhLm1haW5fZnJhbWUsICZ0ZGF0YS53LCAmdGRhdGEuaCk7CisgICAg
Y3R4dC0+dGVzdF9kYXRhID0gJnRkYXRhOworfQorCitzdGF0aWMgRWluYV9Cb29sIHRlc3RTY3Jv
bGxYKHN0cnVjdCBjdHh0ICpjdHh0KQoreworICAgIHN0cnVjdCB0ZXN0X3Njcm9sbF9jdHh0ICp0
ZGF0YSA9IGN0eHQtPnRlc3RfZGF0YTsKKworICAgIHRkYXRhLT54ICs9IHRkYXRhLT5keDsKKwor
ICAgIGlmICh0ZGF0YS0+eCA+PSB0ZGF0YS0+dykgeworICAgICAgICB0ZGF0YS0+eCA9IHRkYXRh
LT53IC0gMTsKKyAgICAgICAgdGRhdGEtPmR4ID0gLWN0eHQtPnN0ZXBTY3JvbGw7CisgICAgfSBl
bHNlIGlmICh0ZGF0YS0+eCA8IDApIHsKKyAgICAgICAgdGRhdGEtPnggPSAwOworICAgICAgICB0
ZGF0YS0+ZHggPSBjdHh0LT5zdGVwU2Nyb2xsOworICAgIH0KKworICAgIGV3a19mcmFtZV9zY3Jv
bGxfc2V0KHRkYXRhLT5tYWluX2ZyYW1lLCB0ZGF0YS0+eCwgdGRhdGEtPnkpOworICAgIHJldHVy
biBFSU5BX1RSVUU7Cit9CisKK3N0YXRpYyBFaW5hX0Jvb2wgdGVzdFNjcm9sbFkoc3RydWN0IGN0
eHQgKmN0eHQpCit7CisgICAgc3RydWN0IHRlc3Rfc2Nyb2xsX2N0eHQgKnRkYXRhID0gY3R4dC0+
dGVzdF9kYXRhOworCisgICAgdGRhdGEtPnkgKz0gdGRhdGEtPmR5OworCisgICAgaWYgKHRkYXRh
LT55ID49IHRkYXRhLT5oKSB7CisgICAgICAgIHRkYXRhLT55ID0gdGRhdGEtPmggLSAxOworICAg
ICAgICB0ZGF0YS0+ZHkgPSAtY3R4dC0+c3RlcFNjcm9sbDsKKyAgICB9IGVsc2UgaWYgKHRkYXRh
LT55IDwgMCkgeworICAgICAgICB0ZGF0YS0+eSA9IDA7CisgICAgICAgIHRkYXRhLT5keSA9IGN0
eHQtPnN0ZXBTY3JvbGw7CisgICAgfQorCisgICAgZXdrX2ZyYW1lX3Njcm9sbF9zZXQodGRhdGEt
Pm1haW5fZnJhbWUsIHRkYXRhLT54LCB0ZGF0YS0+eSk7CisgICAgcmV0dXJuIEVJTkFfVFJVRTsK
K30KKworc3RhdGljIEVpbmFfQm9vbCB0ZXN0U2Nyb2xsWFkoc3RydWN0IGN0eHQgKmN0eHQpCit7
CisgICAgc3RydWN0IHRlc3Rfc2Nyb2xsX2N0eHQgKnRkYXRhID0gY3R4dC0+dGVzdF9kYXRhOwor
CisgICAgdGRhdGEtPnggKz0gdGRhdGEtPmR4OworICAgIHRkYXRhLT55ICs9IHRkYXRhLT5keTsK
KworICAgIGlmICh0ZGF0YS0+eCA+PSB0ZGF0YS0+dykgeworICAgICAgICB0ZGF0YS0+eCA9IHRk
YXRhLT53IC0gMTsKKyAgICAgICAgdGRhdGEtPmR4ID0gLWN0eHQtPnN0ZXBTY3JvbGw7CisgICAg
fSBlbHNlIGlmICh0ZGF0YS0+eCA8IDApIHsKKyAgICAgICAgdGRhdGEtPnggPSAwOworICAgICAg
ICB0ZGF0YS0+ZHggPSBjdHh0LT5zdGVwU2Nyb2xsOworICAgIH0KKworICAgIGlmICh0ZGF0YS0+
eSA+PSB0ZGF0YS0+aCkgeworICAgICAgICB0ZGF0YS0+eSA9IHRkYXRhLT5oIC0gMTsKKyAgICAg
ICAgdGRhdGEtPmR5ID0gLWN0eHQtPnN0ZXBTY3JvbGw7CisgICAgfSBlbHNlIGlmICh0ZGF0YS0+
eSA8IDApIHsKKyAgICAgICAgdGRhdGEtPnkgPSAwOworICAgICAgICB0ZGF0YS0+ZHkgPSBjdHh0
LT5zdGVwU2Nyb2xsOworICAgIH0KKworICAgIGV3a19mcmFtZV9zY3JvbGxfc2V0KHRkYXRhLT5t
YWluX2ZyYW1lLCB0ZGF0YS0+eCwgdGRhdGEtPnkpOworICAgIHJldHVybiBFSU5BX1RSVUU7Cit9
CisKKy8qIFpvb20gVGVzdHMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKiovCitzdHJ1Y3QgdGVzdFpvb21DdHh0IHsKKyAgICBFdmFz
X0Nvb3JkIGN4LCBjeTsKKyAgICBmbG9hdCB6b29tOworICAgIGZsb2F0IGR6OworfTsKKworc3Rh
dGljIHZvaWQgdGVzdFpvb21TZXR1cChzdHJ1Y3QgY3R4dCAqY3R4dCkKK3sKKyAgICBzdGF0aWMg
c3RydWN0IHRlc3Rab29tQ3R4dCB0ZGF0YTsKKyAgICB0ZGF0YS5jeCA9IDA7CisgICAgdGRhdGEu
Y3kgPSAwOworICAgIHRkYXRhLnpvb20gPSAxLjA7CisgICAgdGRhdGEuZHogPSBjdHh0LT5zdGVw
Wm9vbTsKKyAgICBjdHh0LT50ZXN0X2RhdGEgPSAmdGRhdGE7Cit9CisKK3N0YXRpYyB2b2lkIHRl
c3Rab29tU2V0dXBGaXhlZChzdHJ1Y3QgY3R4dCAqY3R4dCkKK3sKKyAgICBzdGF0aWMgc3RydWN0
IHRlc3Rab29tQ3R4dCB0ZGF0YTsKKyAgICBFdmFzX0Nvb3JkIHcsIGg7CisKKyAgICB0ZGF0YS5j
eCA9IDA7CisgICAgdGRhdGEuY3kgPSAwOworICAgIHRkYXRhLnpvb20gPSAxLjA7CisgICAgdGRh
dGEuZHogPSBjdHh0LT5zdGVwWm9vbTsKKyAgICBjdHh0LT50ZXN0X2RhdGEgPSAmdGRhdGE7Cisg
ICAgZXZhc19vYmplY3RfZ2VvbWV0cnlfZ2V0KGN0eHQtPnZpZXcsIE5VTEwsIE5VTEwsICZ3LCAm
aCk7CisgICAgZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfc2V0KGN0eHQtPnZpZXcsIHcsIGgp
OworfQorCitzdGF0aWMgRWluYV9Cb29sIHRlc3Rab29tKHN0cnVjdCBjdHh0ICpjdHh0KQorewor
ICAgIHN0cnVjdCB0ZXN0Wm9vbUN0eHQgKnRkYXRhID0gY3R4dC0+dGVzdF9kYXRhOworCisgICAg
dGRhdGEtPnpvb20gKz0gdGRhdGEtPmR6OworCisgICAgaWYgKHRkYXRhLT56b29tID4gNC4wKSB7
CisgICAgICAgIHRkYXRhLT56b29tID0gNC4wOworICAgICAgICB0ZGF0YS0+ZHogPSAtY3R4dC0+
c3RlcFpvb207CisgICAgfSBlbHNlIGlmICh0ZGF0YS0+em9vbSA8IDAuMSkgeworICAgICAgICB0
ZGF0YS0+em9vbSA9IDAuMTsKKyAgICAgICAgdGRhdGEtPmR6ID0gY3R4dC0+c3RlcFpvb207Cisg
ICAgfQorCisgICAgZXdrX3ZpZXdfem9vbV9zZXQoY3R4dC0+dmlldywgdGRhdGEtPnpvb20sIHRk
YXRhLT5jeCwgdGRhdGEtPmN5KTsKKyAgICByZXR1cm4gRUlOQV9UUlVFOworfQorCitzdGF0aWMg
RWluYV9Cb29sIHRlc3Rab29tV2VhayhzdHJ1Y3QgY3R4dCAqY3R4dCkKK3sKKyAgICBzdHJ1Y3Qg
dGVzdFpvb21DdHh0ICp0ZGF0YSA9IGN0eHQtPnRlc3RfZGF0YTsKKworICAgIHRkYXRhLT56b29t
ICs9IHRkYXRhLT5kejsKKworICAgIGlmICh0ZGF0YS0+em9vbSA+IDQuMCkgeworICAgICAgICB0
ZGF0YS0+em9vbSA9IDQuMDsKKyAgICAgICAgdGRhdGEtPmR6ID0gLWN0eHQtPnN0ZXBab29tOwor
ICAgIH0gZWxzZSBpZiAodGRhdGEtPnpvb20gPCAwLjEpIHsKKyAgICAgICAgdGRhdGEtPnpvb20g
PSAwLjE7CisgICAgICAgIHRkYXRhLT5keiA9IGN0eHQtPnN0ZXBab29tOworICAgIH0KKworICAg
IGV3a192aWV3X3pvb21fd2Vha19zZXQoY3R4dC0+dmlldywgdGRhdGEtPnpvb20sIHRkYXRhLT5j
eCwgdGRhdGEtPmN5KTsKKyAgICByZXR1cm4gRUlOQV9UUlVFOworfQorCisKKy8qIG1haW4gKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqLworc3RhdGljIGludCBvbkV4aXQodm9pZCAqZGF0YSwgaW50IHR5cGUsIHZvaWQg
KmV2ZW50X2luZm8pCit7CisgICAgRWluYV9Cb29sICpwcnVuID0gZGF0YTsKKyAgICBlY29yZV9t
YWluX2xvb3BfcXVpdCgpOworICAgICpwcnVuID0gMDsKKyAgICByZXR1cm4gMTsKK30KKworaW50
IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKyAgICBFaW5hX0Jvb2wgcnVuID0gRUlO
QV9UUlVFOworICAgIHN0cnVjdCBjdHh0IGN0eHQ7CisgICAgY2hhciAqZW5naW5lID0gTlVMTDsK
KyAgICBjaGFyICp0aGVtZSA9IE5VTEw7CisgICAgY2hhciAqdXJsID0gTlVMTDsKKyAgICBFaW5h
X1JlY3RhbmdsZSBnZW8gPSB7MCwgMCwgODAwLCA2MDB9OworICAgIEVpbmFfUmVjdGFuZ2xlIHBy
ZVJlbmRlciA9IHswLCAwLCAwLCAwfTsKKyAgICB1bnNpZ25lZCBjaGFyIHF1aXRPcHRpb24gPSAw
OworICAgIHVuc2lnbmVkIGNoYXIgaGVscCA9IDA7CisgICAgdW5zaWduZWQgY2hhciB2ZXJib3Nl
ID0gMDsKKyAgICB1bnNpZ25lZCBjaGFyIHNtb290aFNjYWxlID0gMDsKKyAgICBpbnQgc2Vjb25k
cyA9IDYwOworICAgIGludCBjYWNoZVNpemUgPSAxNiA8PCAyMDsKKyAgICBpbnQgc3RlcFNjcm9s
bCA9IDE7CisgICAgZG91YmxlIHN0ZXBab29tID0gMC4xOworICAgIGRvdWJsZSBmcHMgPSAyNC4w
OworICAgIGludCBhcmdzOworICAgIEVjb3JlX0dldG9wdF9WYWx1ZSB2YWx1ZXNbXSA9IHsKKyAg
ICAgICAgRUNPUkVfR0VUT1BUX1ZBTFVFX1NUUihlbmdpbmUpLAorICAgICAgICBFQ09SRV9HRVRP
UFRfVkFMVUVfQk9PTChxdWl0T3B0aW9uKSwKKyAgICAgICAgRUNPUkVfR0VUT1BUX1ZBTFVFX1BU
Ul9DQVNUKGdlbyksCisgICAgICAgIEVDT1JFX0dFVE9QVF9WQUxVRV9TVFIodGhlbWUpLAorICAg
ICAgICBFQ09SRV9HRVRPUFRfVkFMVUVfU1RSKHVybCksCisgICAgICAgIEVDT1JFX0dFVE9QVF9W
QUxVRV9JTlQoc2Vjb25kcyksCisgICAgICAgIEVDT1JFX0dFVE9QVF9WQUxVRV9QVFJfQ0FTVChw
cmVSZW5kZXIpLAorICAgICAgICBFQ09SRV9HRVRPUFRfVkFMVUVfSU5UKGNhY2hlU2l6ZSksCisg
ICAgICAgIEVDT1JFX0dFVE9QVF9WQUxVRV9JTlQoc3RlcFNjcm9sbCksCisgICAgICAgIEVDT1JF
X0dFVE9QVF9WQUxVRV9ET1VCTEUoc3RlcFpvb20pLAorICAgICAgICBFQ09SRV9HRVRPUFRfVkFM
VUVfQk9PTChzbW9vdGhTY2FsZSksCisgICAgICAgIEVDT1JFX0dFVE9QVF9WQUxVRV9ET1VCTEUo
ZnBzKSwKKyAgICAgICAgRUNPUkVfR0VUT1BUX1ZBTFVFX0JPT0wodmVyYm9zZSksCisgICAgICAg
IEVDT1JFX0dFVE9QVF9WQUxVRV9CT09MKGhlbHApLAorICAgICAgICBFQ09SRV9HRVRPUFRfVkFM
VUVfTk9ORQorICAgIH07CisgICAgY29uc3Qgc3RydWN0IHRlc3RfY2FzZSB0ZXN0c1tdID0gewor
ICAgICAgICB7InNjcm9sbF94IiwgdGVzdFNjcm9sbFgsIHRlc3RTY3JvbGxTZXR1cCwgTlVMTH0s
CisgICAgICAgIHsic2Nyb2xsX3kiLCB0ZXN0U2Nyb2xsWSwgdGVzdFNjcm9sbFNldHVwLCBOVUxM
fSwKKyAgICAgICAgeyJzY3JvbGxfeHkiLCB0ZXN0U2Nyb2xsWFksIHRlc3RTY3JvbGxTZXR1cCwg
TlVMTH0sCisgICAgICAgIHsiem9vbSIsIHRlc3Rab29tLCB0ZXN0Wm9vbVNldHVwLCBOVUxMfSwK
KyAgICAgICAgeyJ6b29tX2ZpeGVkIiwgdGVzdFpvb20sIHRlc3Rab29tU2V0dXBGaXhlZCwgTlVM
TH0sCisgICAgICAgIHsiem9vbV93ZWFrIiwgdGVzdFpvb21XZWFrLCB0ZXN0Wm9vbVNldHVwLCBO
VUxMfSwKKyAgICAgICAge05VTEwsIE5VTEwsIE5VTEwsIE5VTEx9CisgICAgfTsKKworICAgIGVj
b3JlX2luaXQoKTsKKyAgICBlY29yZV9hcHBfYXJnc19zZXQoYXJnYywgKGNvbnN0IGNoYXIqKilh
cmd2KTsKKyAgICBhcmdzID0gZWNvcmVfZ2V0b3B0X3BhcnNlKCZvcHRpb25zLCB2YWx1ZXMsIGFy
Z2MsIGFyZ3YpOworICAgIGlmIChhcmdzIDwgMCkgeworICAgICAgICBFSU5BX0xPR19FUlIoImNv
dWxkIG5vdCBwYXJzZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzLiIpOworICAgICAgICBlY29yZV9z
aHV0ZG93bigpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChoZWxwKSB7Cisg
ICAgICAgIGNvbnN0IHN0cnVjdCB0ZXN0X2Nhc2UgKml0cjsKKyAgICAgICAgcXVpdE9wdGlvbiA9
IEVJTkFfVFJVRTsKKyAgICAgICAgcHJpbnRmKCJBdmFpbGFibGUgdGVzdHM6XG4iKTsKKyAgICAg
ICAgZm9yIChpdHIgPSB0ZXN0czsgaXRyLT5uYW1lOyBpdHIrKykKKyAgICAgICAgICAgIHByaW50
ZigiICAgJXNcbiIsIGl0ci0+bmFtZSk7CisgICAgfQorICAgIGlmIChxdWl0T3B0aW9uKSB7Cisg
ICAgICAgIGVjb3JlX3NodXRkb3duKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAg
IGlmICghdGhlbWUpCisgICAgICAgIHRoZW1lID0gKGNoYXIqKSJXZWJLaXQvZWZsL0RlZmF1bHRU
aGVtZS9kZWZhdWx0LmVkaiI7CisgICAgaWYgKCF1cmwpIHsKKyAgICAgICAgY2hhciBwd2RbUEFU
SF9NQVhdOworICAgICAgICBpZiAoIWdldGN3ZChwd2QsIHNpemVvZihwd2QpKSkKKyAgICAgICAg
ICAgIHVybCA9IE5VTEw7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY2hhciBidWZbUEFU
SF9NQVhdOworICAgICAgICAgICAgc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgImZpbGU6Ly8l
cy9XZWJLaXQvZWZsL0VXZWJMYXVuY2hlci9sb25nLXBhZ2UuaHRtbCIsIHB3ZCk7CisgICAgICAg
ICAgICB1cmwgPSBzdHJkdXAoYnVmKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoZ2VvLncg
PCAxKQorICAgICAgICBnZW8udyA9IDgwMDsKKyAgICBpZiAoZ2VvLmggPCA2MDApCisgICAgICAg
IGdlby5oID0gNjAwOworCisgICAgaWYgKHByZVJlbmRlci53IDwgMCkKKyAgICAgICAgcHJlUmVu
ZGVyLncgPSAwOworICAgIGlmIChwcmVSZW5kZXIuaCA8IDApCisgICAgICAgIHByZVJlbmRlci5o
ID0gMDsKKworICAgIGlmIChjYWNoZVNpemUgPCAwKQorICAgICAgICBjYWNoZVNpemUgPSAwOwor
CisgICAgaWYgKHN0ZXBTY3JvbGwgPCAwKQorICAgICAgICBzdGVwU2Nyb2xsID0gLXN0ZXBTY3Jv
bGw7CisgICAgZWxzZSBpZiAoIXN0ZXBTY3JvbGwpCisgICAgICAgIHN0ZXBTY3JvbGwgPSAxOwor
CisgICAgaWYgKHN0ZXBab29tIDwgMCkKKyAgICAgICAgc3RlcFpvb20gPSAwLjE7CisgICAgZWxz
ZSBpZiAoc3RlcFpvb20gPCAwLjAwMDEpCisgICAgICAgIHN0ZXBab29tID0gMC4xOworCisgICAg
aWYgKGZwcyA8IDEuMCkKKyAgICAgICAgZnBzID0gMS4wOworCisgICAgZXdrX2luaXQoKTsKKwor
ICAgIGN0eHQuZWUgPSBlY29yZV9ldmFzX25ldyhlbmdpbmUsIGdlby54LCBnZW8ueSwgZ2VvLncs
IGdlby5oLCBOVUxMKTsKKyAgICBpZiAoIWN0eHQuZWUpIHsKKyAgICAgICAgRUlOQV9MT0dfRVJS
KCJjb3VsZCBub3QgY3JlYXRlIGVjb3JlX2V2YXMgd2luZG93IHVzaW5nICIKKyAgICAgICAgICAg
ICAgICAgICAgICJlbmdpbmU9JXMgJWQsJWQrJWR4JWQuIiwKKyAgICAgICAgICAgICAgICAgICAg
IGVuZ2luZSA/IGVuZ2luZSA6ICIoYXV0bykiLCBnZW8ueCwgZ2VvLnksIGdlby53LCBnZW8uaCk7
CisgICAgICAgIGV3a19zaHV0ZG93bigpOworICAgICAgICBlY29yZV9zaHV0ZG93bigpOworICAg
ICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGN0eHQuZSA9IGVjb3JlX2V2YXNfZ2V0KGN0eHQu
ZWUpOworICAgIGN0eHQudyA9IGdlby53OworICAgIGN0eHQuaCA9IGdlby5oOworICAgIGN0eHQu
YmcgPSBldmFzX29iamVjdF9yZWN0YW5nbGVfYWRkKGN0eHQuZSk7CisgICAgZXZhc19vYmplY3Rf
cmVzaXplKGN0eHQuYmcsIGdlby53LCBnZW8uaCk7CisgICAgZXZhc19vYmplY3RfY29sb3Jfc2V0
KGN0eHQuYmcsIDAsIDAsIDAsIDI1NSk7CisgICAgZXZhc19vYmplY3Rfc2hvdyhjdHh0LmJnKTsK
KworICAgIGN0eHQuZXZlbnRhcmVhID0gZXZhc19vYmplY3RfcmVjdGFuZ2xlX2FkZChjdHh0LmUp
OworICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShjdHh0LmV2ZW50YXJlYSwgZ2VvLncsIGdlby5oKTsK
KyAgICBldmFzX29iamVjdF9jb2xvcl9zZXQoY3R4dC5ldmVudGFyZWEsIDAsIDAsIDAsIDApOwor
ICAgIGV2YXNfb2JqZWN0X3Nob3coY3R4dC5ldmVudGFyZWEpOworCisgICAgZWNvcmVfZXZhc19z
aG93KGN0eHQuZWUpOworCisgICAgY3R4dC51cmwgPSB1cmw7CisgICAgY3R4dC50aGVtZSA9IHRo
ZW1lOworICAgIGN0eHQucHJlUmVuZGVyID0gcHJlUmVuZGVyOworICAgIGN0eHQuY2FjaGVTaXpl
ID0gY2FjaGVTaXplOworICAgIGN0eHQuc3RlcFNjcm9sbCA9IHN0ZXBTY3JvbGw7CisgICAgY3R4
dC5zdGVwWm9vbSA9IHN0ZXBab29tOworICAgIGN0eHQuc21vb3RoU2NhbGUgPSBzbW9vdGhTY2Fs
ZTsKKyAgICBjdHh0LnZlcmJvc2UgPSB2ZXJib3NlOworICAgIGN0eHQudmlld0FkZCA9IGV3a192
aWV3X3NpbmdsZV9hZGQ7CisKKyAgICBlY29yZV9tYWluX2xvb3BfaXRlcmF0ZSgpOworCisgICAg
aWYgKHZlcmJvc2UpCisgICAgICAgIHByaW50ZigiRVdlYkJlbmNoQW5pbWF0aW9uOiBlbmdpbmU9
JXMsICIKKyAgICAgICAgICAgICAgICJnZW9tZXRyeT0lZDolZDolZDolZCB0aGVtZT0lcywgc21v
b3RoU2NhbGU9JWhodSwgIgorICAgICAgICAgICAgICAgInVybD0lcywgdGltZT0lZCwgZnBzPSVm
XG4iLAorICAgICAgICAgICAgICAgZW5naW5lID8gZW5naW5lIDogIihhdXRvKSIsCisgICAgICAg
ICAgICAgICBnZW8ueCwgZ2VvLnksIGdlby53LCBnZW8uaCwKKyAgICAgICAgICAgICAgIHRoZW1l
LCBzbW9vdGhTY2FsZSwgdXJsLCBzZWNvbmRzLCBmcHMpOworCisgICAgZWNvcmVfZXZlbnRfaGFu
ZGxlcl9hZGQoRUNPUkVfRVZFTlRfU0lHTkFMX0VYSVQsIG9uRXhpdCwgJnJ1bik7CisgICAgZWNv
cmVfYW5pbWF0b3JfZnJhbWV0aW1lX3NldCgxLjAgLyBmcHMpOworICAgIGN0eHQuZnBzID0gZnBz
OworICAgIGN0eHQuZnJhbWV0aW1lLnRhcmdldCA9IDEuMCAvIGZwczsKKyAgICBjdHh0LnRpbWUu
ZHVyYXRpb24gPSBzZWNvbmRzOworCisgICAgY3R4dC5jbWRfYXJncy5iYXNlID0gYXJnczsKKyAg
ICBjdHh0LmNtZF9hcmdzLmNvdW50ID0gYXJnYzsKKyAgICBjdHh0LmNtZF9hcmdzLmFyZ3YgPSBh
cmd2OworCisgICAgY3R4dC50ZXN0cy5jdXJyZW50ID0gdGVzdHM7CisgICAgZWNvcmVfdGltZXJf
YWRkKDEuMCwgdGVzdFByZXBhcmUsICZjdHh0KTsKKyAgICBlY29yZV9tYWluX2xvb3BfYmVnaW4o
KTsKKworICAgIGV3a19zaHV0ZG93bigpOworICAgIGVjb3JlX3NodXRkb3duKCk7CisgICAgcmV0
dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL0VXZWJMYXVuY2hlci9iZW5jaF9zdHJl
c3MuYyBiL1dlYktpdC9lZmwvRVdlYkxhdW5jaGVyL2JlbmNoX3N0cmVzcy5jCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiOTIxMzMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJL
aXQvZWZsL0VXZWJMYXVuY2hlci9iZW5jaF9zdHJlc3MuYwpAQCAtMCwwICsxLDU0NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwor
ICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJFV2ViS2l0LmgiCisKKyNpbmNs
dWRlIDxFY29yZS5oPgorI2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KKyNpbmNsdWRlIDxFY29yZV9H
ZXRvcHQuaD4KKyNpbmNsdWRlIDxFZGplLmg+CisjaW5jbHVkZSA8RXZhcy5oPgorI2luY2x1ZGUg
PGludHR5cGVzLmg+CisjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+Cisj
aW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcu
aD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworc3RhdGljIGNvbnN0IEVjb3JlX0dldG9wdCBvcHRp
b25zID0geworICAgICJFV2ViQmVuY2hTdHJlc3MiLAorICAgICIlcHJvZyBbb3B0aW9uc10gW3Rl
c3QtbmFtZXNdIiwKKyAgICAiMC4xLjAiLAorICAgICIoQykyMDA5LCAyMDEwIFByb0ZVU0lPTiBl
bWJlZGRlZCBzeXN0ZW1zXG4iCisgICAgIihDKTIwMDksIDIwMTAgU2Ftc3VuZyBFbGVjdHJvbmlj
cyIsCisgICAgIkdQTCIsCisgICAgIkJlbmNobWFyayBFV2ViS2l0LCBtZWFzdXJlcyBtYXhpbXVt
IG9wZXJhdGlvbnMgaW4gYSBnaXZlbiB0aW1lLiIsCisgICAgRUlOQV9UUlVFLAorICAgIHtFQ09S
RV9HRVRPUFRfU1RPUkVfU1RSCisgICAgICgnZScsICJlbmdpbmUiLCAiZWNvcmUtZXZhcyBlbmdp
bmUgdG8gdXNlLiIpLAorICAgICBFQ09SRV9HRVRPUFRfQ0FMTEJBQ0tfTk9BUkdTCisgICAgICgn
RScsICJsaXN0LWVuZ2luZXMiLCAibGlzdCBlY29yZS1ldmFzIGVuZ2luZXMuIiwKKyAgICAgIGVj
b3JlX2dldG9wdF9jYWxsYmFja19lY29yZV9ldmFzX2xpc3RfZW5naW5lcywgTlVMTCksCisgICAg
IEVDT1JFX0dFVE9QVF9DQUxMQkFDS19BUkdTCisgICAgICgnZycsICJnZW9tZXRyeSIsICJnZW9t
ZXRyeSB0byB1c2UgaW4geDp5Onc6aCBmb3JtLiIsICJYOlk6VzpIIiwKKyAgICAgIGVjb3JlX2dl
dG9wdF9jYWxsYmFja19nZW9tZXRyeV9wYXJzZSwgTlVMTCksCisgICAgIEVDT1JFX0dFVE9QVF9T
VE9SRV9TVFIKKyAgICAgKCd0JywgInRoZW1lIiwgInBhdGggdG8gcmVhZCB0aGUgdGhlbWUgZmls
ZSBmcm9tLiIpLAorICAgICBFQ09SRV9HRVRPUFRfU1RPUkVfU1RSCisgICAgICgndScsICJ1cmwi
LCAidXJsIHRvIHRlc3QuIiksCisgICAgIEVDT1JFX0dFVE9QVF9TVE9SRV9ERUZfSU5UCisgICAg
ICgnVCcsICJ0aW1lIiwgInRpbWUgdG8gcnVuIGVhY2ggdGVzdC4iLCA2MCksCisgICAgIEVDT1JF
X0dFVE9QVF9DQUxMQkFDS19BUkdTCisgICAgICgncicsICJwcmUtcmVuZGVyIiwgImdlb21ldHJ5
IHRvIHByZS1yZW5kZXIgeDp5Onc6aCBmb3JtLiIsICJYOlk6VzpIIiwKKyAgICAgIGVjb3JlX2dl
dG9wdF9jYWxsYmFja19nZW9tZXRyeV9wYXJzZSwgTlVMTCksCisgICAgIEVDT1JFX0dFVE9QVF9T
VE9SRV9ERUZfSU5UCisgICAgICgncycsICJzdGVwLXNjcm9sbCIsICJzdGVwIHRvIHVzZSBmb3Ig
c2Nyb2xsIHRlc3RzLiIsIDEpLAorICAgICBFQ09SRV9HRVRPUFRfU1RPUkVfREVGX0RPVUJMRQor
ICAgICAoJ3onLCAic3RlcC16b29tIiwgInN0ZXAgdG8gdXNlIGZvciB6b29tIHRlc3RzLiIsIDAu
MSksCisgICAgIEVDT1JFX0dFVE9QVF9TVE9SRV9CT09MKCdTJywgInNtb290aC1zY2FsZSIsICJ1
c2Ugc21vb3RoIHNjYWxpbmcuIiksCisgICAgIEVDT1JFX0dFVE9QVF9TVE9SRV9UUlVFKCd2Jywg
InZlcmJvc2UiLCAiYmUgdmVyYm9zZSIpLAorICAgICBFQ09SRV9HRVRPUFRfSEVMUCgnaCcsICJo
ZWxwIiksCisgICAgIEVDT1JFX0dFVE9QVF9TRU5USU5FTAorICAgIH0KK307CisKK3N0cnVjdCBj
dHh0IHsKKyAgICBFY29yZV9FdmFzICplZTsKKyAgICBFdmFzICplOworICAgIEV2YXNfT2JqZWN0
ICpiZzsKKyAgICBFdmFzX09iamVjdCAqZXZlbnRhcmVhOworICAgIEV2YXNfT2JqZWN0ICp2aWV3
OworICAgIEV2YXNfQ29vcmQgdywgaDsKKyAgICBFaW5hX1JlY3RhbmdsZSBwcmVSZW5kZXI7Cisg
ICAgc2l6ZV90IGNhY2hlU2l6ZTsKKyAgICB1bnNpZ25lZCBpbnQgc3RlcFNjcm9sbDsKKyAgICBm
bG9hdCBzdGVwWm9vbTsKKyAgICBjb25zdCBjaGFyICp1cmw7CisgICAgY29uc3QgY2hhciAqdGhl
bWU7CisgICAgRXZhc19PYmplY3QgKigqdmlld0FkZCkoRXZhcyAqZSk7CisgICAgRWluYV9Cb29s
IHZlcmJvc2U7CisgICAgRWluYV9Cb29sIHNtb290aFNjYWxlOworICAgIHZvaWQgKnRlc3RfZGF0
YTsKK307CisKK3N0YXRpYyB2b2lkIHZpZXdSZWFkeSh2b2lkICpkYXRhLCBFdmFzX09iamVjdCAq
bywgdm9pZCAqaW5mbykKK3sKKyAgICBzdHJ1Y3QgY3R4dCAqY3R4dCA9IGRhdGE7CisgICAgaWYg
KGN0eHQtPnZlcmJvc2UpCisgICAgICAgIHByaW50ZigiRVdlYkJlbmNoU3RyZXNzOiB2aWV3IGlz
IHJlYWR5LlxuIik7CisgICAgZWNvcmVfbWFpbl9sb29wX3F1aXQoKTsKK30KKworc3RhdGljIGlu
dCB2aWV3QWRkUHJlUmVuZGVyVGltZXIodm9pZCAqZGF0YSkKK3sKKyAgICBlY29yZV9tYWluX2xv
b3BfcXVpdCgpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgRWluYV9Cb29sIHZpZXdBZGQo
c3RydWN0IGN0eHQgKmN0eHQpCit7CisgICAgZG91YmxlIHN0YXJ0LCBlbmQsIGVsYXBzZWQ7CisK
KyAgICBjdHh0LT52aWV3ID0gY3R4dC0+dmlld0FkZChjdHh0LT5lKTsKKyAgICBpZiAoIWN0eHQt
PnZpZXcpCisgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgIGV2YXNfb2JqZWN0X3JhaXNl
KGN0eHQtPmV2ZW50YXJlYSk7CisgICAgZXdrX3ZpZXdfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9z
ZXQoY3R4dC0+dmlldywgY3R4dC0+c21vb3RoU2NhbGUpOworICAgIGV3a192aWV3X3RoZW1lX3Nl
dChjdHh0LT52aWV3LCBjdHh0LT50aGVtZSk7CisgICAgZXZhc19vYmplY3RfcmVzaXplKGN0eHQt
PnZpZXcsIGN0eHQtPncsIGN0eHQtPmgpOworICAgIGV2YXNfb2JqZWN0X3Nob3coY3R4dC0+dmll
dyk7CisKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQKKyAgICAgICAgKGN0eHQt
PnZpZXcsICJsb2FkLGZpbmlzaGVkIiwgdmlld1JlYWR5LCBjdHh0KTsKKyAgICBpZiAoIWV3a192
aWV3X3VyaV9zZXQoY3R4dC0+dmlldywgY3R4dC0+dXJsKSkgeworICAgICAgICBldmFzX29iamVj
dF9kZWwoY3R4dC0+dmlldyk7CisgICAgICAgIGN0eHQtPnZpZXcgPSBOVUxMOworICAgICAgICBy
ZXR1cm4gRUlOQV9GQUxTRTsKKyAgICB9CisKKyAgICBpZiAoY3R4dC0+dmVyYm9zZSkKKyAgICAg
ICAgcHJpbnRmKCJFV2ViQmVuY2hTdHJlc3M6IGxvYWRpbmcgdXJsPSVzIC4uLlxuIiwgY3R4dC0+
dXJsKTsKKyAgICBzdGFydCA9IGVjb3JlX3RpbWVfZ2V0KCk7CisgICAgZWNvcmVfbWFpbl9sb29w
X2JlZ2luKCk7CisgICAgZW5kID0gZWNvcmVfdGltZV9nZXQoKTsKKyAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19kZWwoY3R4dC0+dmlldywgImxvYWQsZmluaXNoZWQiLCB2aWV3UmVhZHkp
OworCisgICAgZWxhcHNlZCA9IGVuZCAtIHN0YXJ0OworICAgIGlmIChjdHh0LT52ZXJib3NlKQor
ICAgICAgICBwcmludGYoIkVXZWJCZW5jaFN0cmVzczogbG9hZGVkIGluICVmIHNlY29uZHMgdXJs
PSVzXG4iLAorICAgICAgICAgICAgICAgZWxhcHNlZCwgY3R4dC0+dXJsKTsKKworICAgIGlmIChj
dHh0LT5wcmVSZW5kZXIudyA+IDAgJiYgY3R4dC0+cHJlUmVuZGVyLmggPiAwKSB7CisgICAgICAg
IEV2YXNfQ29vcmQgeCA9IGN0eHQtPnByZVJlbmRlci54OworICAgICAgICBFdmFzX0Nvb3JkIHkg
PSBjdHh0LT5wcmVSZW5kZXIueTsKKyAgICAgICAgRXZhc19Db29yZCB3ID0gY3R4dC0+cHJlUmVu
ZGVyLnc7CisgICAgICAgIEV2YXNfQ29vcmQgaCA9IGN0eHQtPnByZVJlbmRlci5oOworICAgICAg
ICBld2tfdmlld19wcmVfcmVuZGVyX3JlZ2lvbihjdHh0LT52aWV3LCB4LCB5LCB3LCBoLCAxLjAp
OworCisgICAgICAgIGlmIChjdHh0LT52ZXJib3NlKQorICAgICAgICAgICAgcHJpbnRmKCJFV2Vi
QmVuY2hTdHJlc3M6IHByZS1yZW5kZXIgcmVnaW9uICVkLCVkKyVkeCVkIGZvciAiCisgICAgICAg
ICAgICAgICAgICAgIjUgc2Vjb25kc1xuIiwgeCwgeSwgdywgaCk7CisgICAgICAgIGVjb3JlX3Rp
bWVyX2FkZCg1LjAsIHZpZXdBZGRQcmVSZW5kZXJUaW1lciwgTlVMTCk7CisgICAgICAgIGVjb3Jl
X21haW5fbG9vcF9iZWdpbigpOworICAgIH0KKworICAgIHJldHVybiBFSU5BX1RSVUU7Cit9CisK
K3N0YXRpYyB2b2lkIHZpZXdEZWwoc3RydWN0IGN0eHQgKmN0eHQpCit7CisgICAgZXZhc19vYmpl
Y3RfZGVsKGN0eHQtPnZpZXcpOworICAgIGN0eHQtPnZpZXcgPSBOVUxMOworfQorCitzdHJ1Y3Qg
dGVzdF9jYXNlIHsKKyAgICBjb25zdCBjaGFyICpuYW1lOworICAgIEVpbmFfQm9vbCAoKnRlc3Qp
KHN0cnVjdCBjdHh0Kik7CisgICAgdm9pZCAoKnNldHVwKShzdHJ1Y3QgY3R4dCopOworICAgIHZv
aWQgKCp0ZWFyX2Rvd24pKHN0cnVjdCBjdHh0Kik7Cit9OworCisvKiBTY3JvbGwgVGVzdHMgKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KiovCitzdHJ1Y3QgdGVzdF9zY3JvbGxfY3R4dCB7CisgICAgRXZhc19PYmplY3QgKm1haW5fZnJh
bWU7CisgICAgRXZhc19Db29yZCB4LCB5LCB3LCBoOworICAgIGludCBkeCwgZHk7Cit9OworCitz
dGF0aWMgdm9pZCB0ZXN0U2Nyb2xsU2V0dXAoc3RydWN0IGN0eHQgKmN0eHQpCit7CisgICAgc3Rh
dGljIHN0cnVjdCB0ZXN0X3Njcm9sbF9jdHh0IHRkYXRhOworICAgIHRkYXRhLm1haW5fZnJhbWUg
PSBld2tfdmlld19mcmFtZV9tYWluX2dldChjdHh0LT52aWV3KTsKKyAgICB0ZGF0YS54ID0gMDsK
KyAgICB0ZGF0YS55ID0gMDsKKyAgICB0ZGF0YS5keCA9IGN0eHQtPnN0ZXBTY3JvbGw7CisgICAg
dGRhdGEuZHkgPSBjdHh0LT5zdGVwU2Nyb2xsOworICAgIGV3a19mcmFtZV9zY3JvbGxfc2l6ZV9n
ZXQodGRhdGEubWFpbl9mcmFtZSwgJnRkYXRhLncsICZ0ZGF0YS5oKTsKKyAgICBjdHh0LT50ZXN0
X2RhdGEgPSAmdGRhdGE7Cit9CisKK3N0YXRpYyBFaW5hX0Jvb2wgdGVzdFNjcm9sbFgoc3RydWN0
IGN0eHQgKmN0eHQpCit7CisgICAgc3RydWN0IHRlc3Rfc2Nyb2xsX2N0eHQgKnRkYXRhID0gY3R4
dC0+dGVzdF9kYXRhOworCisgICAgdGRhdGEtPnggKz0gdGRhdGEtPmR4OworCisgICAgaWYgKHRk
YXRhLT54ID49IHRkYXRhLT53KSB7CisgICAgICAgIHRkYXRhLT54ID0gdGRhdGEtPncgLSAxOwor
ICAgICAgICB0ZGF0YS0+ZHggPSAtY3R4dC0+c3RlcFNjcm9sbDsKKyAgICB9IGVsc2UgaWYgKHRk
YXRhLT54IDwgMCkgeworICAgICAgICB0ZGF0YS0+eCA9IDA7CisgICAgICAgIHRkYXRhLT5keCA9
IGN0eHQtPnN0ZXBTY3JvbGw7CisgICAgfQorCisgICAgZXdrX2ZyYW1lX3Njcm9sbF9zZXQodGRh
dGEtPm1haW5fZnJhbWUsIHRkYXRhLT54LCB0ZGF0YS0+eSk7CisgICAgcmV0dXJuIEVJTkFfVFJV
RTsKK30KKworc3RhdGljIEVpbmFfQm9vbCB0ZXN0U2Nyb2xsWShzdHJ1Y3QgY3R4dCAqY3R4dCkK
K3sKKyAgICBzdHJ1Y3QgdGVzdF9zY3JvbGxfY3R4dCAqdGRhdGEgPSBjdHh0LT50ZXN0X2RhdGE7
CisKKyAgICB0ZGF0YS0+eSArPSB0ZGF0YS0+ZHk7CisKKyAgICBpZiAodGRhdGEtPnkgPj0gdGRh
dGEtPmgpIHsKKyAgICAgICAgdGRhdGEtPnkgPSB0ZGF0YS0+aCAtIDE7CisgICAgICAgIHRkYXRh
LT5keSA9IC1jdHh0LT5zdGVwU2Nyb2xsOworICAgIH0gZWxzZSBpZiAodGRhdGEtPnkgPCAwKSB7
CisgICAgICAgIHRkYXRhLT55ID0gMDsKKyAgICAgICAgdGRhdGEtPmR5ID0gY3R4dC0+c3RlcFNj
cm9sbDsKKyAgICB9CisKKyAgICBld2tfZnJhbWVfc2Nyb2xsX3NldCh0ZGF0YS0+bWFpbl9mcmFt
ZSwgdGRhdGEtPngsIHRkYXRhLT55KTsKKyAgICByZXR1cm4gRUlOQV9UUlVFOworfQorCitzdGF0
aWMgRWluYV9Cb29sIHRlc3RTY3JvbGxYWShzdHJ1Y3QgY3R4dCAqY3R4dCkKK3sKKyAgICBzdHJ1
Y3QgdGVzdF9zY3JvbGxfY3R4dCAqdGRhdGEgPSBjdHh0LT50ZXN0X2RhdGE7CisKKyAgICB0ZGF0
YS0+eCArPSB0ZGF0YS0+ZHg7CisgICAgdGRhdGEtPnkgKz0gdGRhdGEtPmR5OworCisgICAgaWYg
KHRkYXRhLT54ID49IHRkYXRhLT53KSB7CisgICAgICAgIHRkYXRhLT54ID0gdGRhdGEtPncgLSAx
OworICAgICAgICB0ZGF0YS0+ZHggPSAtY3R4dC0+c3RlcFNjcm9sbDsKKyAgICB9IGVsc2UgaWYg
KHRkYXRhLT54IDwgMCkgeworICAgICAgICB0ZGF0YS0+eCA9IDA7CisgICAgICAgIHRkYXRhLT5k
eCA9IGN0eHQtPnN0ZXBTY3JvbGw7CisgICAgfQorCisgICAgaWYgKHRkYXRhLT55ID49IHRkYXRh
LT5oKSB7CisgICAgICAgIHRkYXRhLT55ID0gdGRhdGEtPmggLSAxOworICAgICAgICB0ZGF0YS0+
ZHkgPSAtY3R4dC0+c3RlcFNjcm9sbDsKKyAgICB9IGVsc2UgaWYgKHRkYXRhLT55IDwgMCkgewor
ICAgICAgICB0ZGF0YS0+eSA9IDA7CisgICAgICAgIHRkYXRhLT5keSA9IGN0eHQtPnN0ZXBTY3Jv
bGw7CisgICAgfQorCisgICAgZXdrX2ZyYW1lX3Njcm9sbF9zZXQodGRhdGEtPm1haW5fZnJhbWUs
IHRkYXRhLT54LCB0ZGF0YS0+eSk7CisgICAgcmV0dXJuIEVJTkFfVFJVRTsKK30KKworLyogWm9v
bSBUZXN0cyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKi8KK3N0cnVjdCB0ZXN0Wm9vbUN0eHQgeworICAgIEV2YXNfQ29vcmQgY3gs
IGN5OworICAgIGZsb2F0IHpvb207CisgICAgZmxvYXQgZHo7Cit9OworCitzdGF0aWMgdm9pZCB0
ZXN0Wm9vbVNldHVwKHN0cnVjdCBjdHh0ICpjdHh0KQoreworICAgIHN0YXRpYyBzdHJ1Y3QgdGVz
dFpvb21DdHh0IHRkYXRhOworICAgIHRkYXRhLmN4ID0gMDsKKyAgICB0ZGF0YS5jeSA9IDA7Cisg
ICAgdGRhdGEuem9vbSA9IDEuMDsKKyAgICB0ZGF0YS5keiA9IGN0eHQtPnN0ZXBab29tOworICAg
IGN0eHQtPnRlc3RfZGF0YSA9ICZ0ZGF0YTsKK30KKworc3RhdGljIHZvaWQgdGVzdFpvb21TZXR1
cEZpeGVkKHN0cnVjdCBjdHh0ICpjdHh0KQoreworICAgIHN0YXRpYyBzdHJ1Y3QgdGVzdFpvb21D
dHh0IHRkYXRhOworICAgIEV2YXNfQ29vcmQgdywgaDsKKworICAgIHRkYXRhLmN4ID0gMDsKKyAg
ICB0ZGF0YS5jeSA9IDA7CisgICAgdGRhdGEuem9vbSA9IDEuMDsKKyAgICB0ZGF0YS5keiA9IGN0
eHQtPnN0ZXBab29tOworICAgIGN0eHQtPnRlc3RfZGF0YSA9ICZ0ZGF0YTsKKyAgICBldmFzX29i
amVjdF9nZW9tZXRyeV9nZXQoY3R4dC0+dmlldywgTlVMTCwgTlVMTCwgJncsICZoKTsKKyAgICBl
d2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9zZXQoY3R4dC0+dmlldywgdywgaCk7Cit9CisKK3N0
YXRpYyBFaW5hX0Jvb2wgdGVzdFpvb20oc3RydWN0IGN0eHQgKmN0eHQpCit7CisgICAgc3RydWN0
IHRlc3Rab29tQ3R4dCAqdGRhdGEgPSBjdHh0LT50ZXN0X2RhdGE7CisKKyAgICB0ZGF0YS0+em9v
bSArPSB0ZGF0YS0+ZHo7CisKKyAgICBpZiAodGRhdGEtPnpvb20gPiA0LjApIHsKKyAgICAgICAg
dGRhdGEtPnpvb20gPSA0LjA7CisgICAgICAgIHRkYXRhLT5keiA9IC1jdHh0LT5zdGVwWm9vbTsK
KyAgICB9IGVsc2UgaWYgKHRkYXRhLT56b29tIDwgMC4xKSB7CisgICAgICAgIHRkYXRhLT56b29t
ID0gMC4xOworICAgICAgICB0ZGF0YS0+ZHogPSBjdHh0LT5zdGVwWm9vbTsKKyAgICB9CisKKyAg
ICBld2tfdmlld196b29tX3NldChjdHh0LT52aWV3LCB0ZGF0YS0+em9vbSwgdGRhdGEtPmN4LCB0
ZGF0YS0+Y3kpOworICAgIHJldHVybiBFSU5BX1RSVUU7Cit9CisKK3N0YXRpYyBFaW5hX0Jvb2wg
dGVzdFpvb21XZWFrKHN0cnVjdCBjdHh0ICpjdHh0KQoreworICAgIHN0cnVjdCB0ZXN0Wm9vbUN0
eHQgKnRkYXRhID0gY3R4dC0+dGVzdF9kYXRhOworCisgICAgdGRhdGEtPnpvb20gKz0gdGRhdGEt
PmR6OworCisgICAgaWYgKHRkYXRhLT56b29tID4gNC4wKSB7CisgICAgICAgIHRkYXRhLT56b29t
ID0gNC4wOworICAgICAgICB0ZGF0YS0+ZHogPSAtY3R4dC0+c3RlcFpvb207CisgICAgfSBlbHNl
IGlmICh0ZGF0YS0+em9vbSA8IDAuMSkgeworICAgICAgICB0ZGF0YS0+em9vbSA9IDAuMTsKKyAg
ICAgICAgdGRhdGEtPmR6ID0gY3R4dC0+c3RlcFpvb207CisgICAgfQorCisgICAgZXdrX3ZpZXdf
em9vbV93ZWFrX3NldChjdHh0LT52aWV3LCB0ZGF0YS0+em9vbSwgdGRhdGEtPmN4LCB0ZGF0YS0+
Y3kpOworICAgIHJldHVybiBFSU5BX1RSVUU7Cit9CisKKworLyogbWFpbiAqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov
CitzdGF0aWMgaW50IG9uRXhpdCh2b2lkICpkYXRhLCBpbnQgdHlwZSwgdm9pZCAqZXZlbnRfaW5m
bykKK3sKKyAgICBFaW5hX0Jvb2wgKnBydW4gPSBkYXRhOworICAgIGVjb3JlX21haW5fbG9vcF9x
dWl0KCk7CisgICAgKnBydW4gPSAwOworICAgIHJldHVybiAxOworfQorCitpbnQgbWFpbihpbnQg
YXJnYywgY2hhciAqYXJndltdKQoreworICAgIEVpbmFfQm9vbCBydW4gPSBFSU5BX1RSVUU7Cisg
ICAgc3RydWN0IGN0eHQgY3R4dDsKKyAgICBjaGFyICplbmdpbmUgPSBOVUxMOworICAgIGNoYXIg
KnRoZW1lID0gTlVMTDsKKyAgICBjaGFyICp1cmwgPSBOVUxMOworICAgIEVpbmFfUmVjdGFuZ2xl
IGdlbyA9IHswLCAwLCA4MDAsIDYwMH07CisgICAgRWluYV9SZWN0YW5nbGUgcHJlUmVuZGVyID0g
ezAsIDAsIDAsIDB9OworICAgIHVuc2lnbmVkIGNoYXIgcXVpdE9wdGlvbiA9IDA7CisgICAgdW5z
aWduZWQgY2hhciBoZWxwID0gMDsKKyAgICB1bnNpZ25lZCBjaGFyIHZlcmJvc2UgPSAwOworICAg
IHVuc2lnbmVkIGNoYXIgc21vb3RoU2NhbGUgPSAwOworICAgIGludCBzZWNvbmRzID0gNjA7Cisg
ICAgaW50IGNhY2hlU2l6ZSA9IDE2IDw8IDIwOworICAgIGludCBzdGVwU2Nyb2xsID0gMTsKKyAg
ICBkb3VibGUgc3RlcFpvb20gPSAwLjE7CisgICAgaW50IGFyZ3M7CisgICAgRWNvcmVfR2V0b3B0
X1ZhbHVlIHZhbHVlc1tdID0geworICAgICAgICBFQ09SRV9HRVRPUFRfVkFMVUVfU1RSKGVuZ2lu
ZSksCisgICAgICAgIEVDT1JFX0dFVE9QVF9WQUxVRV9CT09MKHF1aXRPcHRpb24pLAorICAgICAg
ICBFQ09SRV9HRVRPUFRfVkFMVUVfUFRSX0NBU1QoZ2VvKSwKKyAgICAgICAgRUNPUkVfR0VUT1BU
X1ZBTFVFX1NUUih0aGVtZSksCisgICAgICAgIEVDT1JFX0dFVE9QVF9WQUxVRV9TVFIodXJsKSwK
KyAgICAgICAgRUNPUkVfR0VUT1BUX1ZBTFVFX0lOVChzZWNvbmRzKSwKKyAgICAgICAgRUNPUkVf
R0VUT1BUX1ZBTFVFX1BUUl9DQVNUKHByZVJlbmRlciksCisgICAgICAgIEVDT1JFX0dFVE9QVF9W
QUxVRV9JTlQoY2FjaGVTaXplKSwKKyAgICAgICAgRUNPUkVfR0VUT1BUX1ZBTFVFX0lOVChzdGVw
U2Nyb2xsKSwKKyAgICAgICAgRUNPUkVfR0VUT1BUX1ZBTFVFX0RPVUJMRShzdGVwWm9vbSksCisg
ICAgICAgIEVDT1JFX0dFVE9QVF9WQUxVRV9CT09MKHNtb290aFNjYWxlKSwKKyAgICAgICAgRUNP
UkVfR0VUT1BUX1ZBTFVFX0JPT0wodmVyYm9zZSksCisgICAgICAgIEVDT1JFX0dFVE9QVF9WQUxV
RV9CT09MKGhlbHApLAorICAgICAgICBFQ09SRV9HRVRPUFRfVkFMVUVfTk9ORQorICAgIH07Cisg
ICAgY29uc3Qgc3RydWN0IHRlc3RfY2FzZSAqaXRyOworICAgIGNvbnN0IHN0cnVjdCB0ZXN0X2Nh
c2UgdGVzdHNbXSA9IHsKKyAgICAgICAgeyJzY3JvbGxfeCIsIHRlc3RTY3JvbGxYLCB0ZXN0U2Ny
b2xsU2V0dXAsIE5VTEx9LAorICAgICAgICB7InNjcm9sbF95IiwgdGVzdFNjcm9sbFksIHRlc3RT
Y3JvbGxTZXR1cCwgTlVMTH0sCisgICAgICAgIHsic2Nyb2xsX3h5IiwgdGVzdFNjcm9sbFhZLCB0
ZXN0U2Nyb2xsU2V0dXAsIE5VTEx9LAorICAgICAgICB7Inpvb20iLCB0ZXN0Wm9vbSwgdGVzdFpv
b21TZXR1cCwgTlVMTH0sCisgICAgICAgIHsiem9vbV9maXhlZCIsIHRlc3Rab29tLCB0ZXN0Wm9v
bVNldHVwRml4ZWQsIE5VTEx9LAorICAgICAgICB7Inpvb21fd2VhayIsIHRlc3Rab29tV2Vhaywg
dGVzdFpvb21TZXR1cCwgTlVMTH0sCisgICAgICAgIHtOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQor
ICAgIH07CisKKyAgICBlY29yZV9pbml0KCk7CisgICAgZWNvcmVfYXBwX2FyZ3Nfc2V0KGFyZ2Ms
IChjb25zdCBjaGFyKiopYXJndik7CisgICAgYXJncyA9IGVjb3JlX2dldG9wdF9wYXJzZSgmb3B0
aW9ucywgdmFsdWVzLCBhcmdjLCBhcmd2KTsKKyAgICBpZiAoYXJncyA8IDApIHsKKyAgICAgICAg
RUlOQV9MT0dfRVJSKCJjb3VsZCBub3QgcGFyc2UgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4iKTsK
KyAgICAgICAgZWNvcmVfc2h1dGRvd24oKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAg
ICBpZiAoaGVscCkgeworICAgICAgICBxdWl0T3B0aW9uID0gRUlOQV9UUlVFOworICAgICAgICBw
cmludGYoIkF2YWlsYWJsZSB0ZXN0czpcbiIpOworICAgICAgICBmb3IgKGl0ciA9IHRlc3RzOyBp
dHItPm5hbWU7IGl0cisrKQorICAgICAgICAgICAgcHJpbnRmKCIgICAlc1xuIiwgaXRyLT5uYW1l
KTsKKyAgICB9CisgICAgaWYgKHF1aXRPcHRpb24pIHsKKyAgICAgICAgZWNvcmVfc2h1dGRvd24o
KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKCF0aGVtZSkKKyAgICAgICAg
dGhlbWUgPSAoY2hhciopIldlYktpdC9lZmwvRGVmYXVsdFRoZW1lL2RlZmF1bHQuZWRqIjsKKyAg
ICBpZiAoIXVybCkgeworICAgICAgICBjaGFyIHB3ZFtQQVRIX01BWF07CisgICAgICAgIGlmICgh
Z2V0Y3dkKHB3ZCwgc2l6ZW9mKHB3ZCkpKQorICAgICAgICAgICAgdXJsID0gTlVMTDsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBjaGFyIGJ1ZltQQVRIX01BWF07CisgICAgICAgICAgICBz
bnByaW50ZihidWYsIHNpemVvZihidWYpLCAiZmlsZTovLyVzL1dlYktpdC9lZmwvRVdlYkxhdW5j
aGVyL2xvbmctcGFnZS5odG1sIiwgcHdkKTsKKyAgICAgICAgICAgIHVybCA9IHN0cmR1cChidWYp
OworICAgICAgICB9CisgICAgfQorICAgIGlmIChnZW8udyA8IDEpCisgICAgICAgIGdlby53ID0g
ODAwOworICAgIGlmIChnZW8uaCA8IDYwMCkKKyAgICAgICAgZ2VvLmggPSA2MDA7CisKKyAgICBp
ZiAocHJlUmVuZGVyLncgPCAwKQorICAgICAgICBwcmVSZW5kZXIudyA9IDA7CisgICAgaWYgKHBy
ZVJlbmRlci5oIDwgMCkKKyAgICAgICAgcHJlUmVuZGVyLmggPSAwOworCisgICAgaWYgKGNhY2hl
U2l6ZSA8IDApCisgICAgICAgIGNhY2hlU2l6ZSA9IDA7CisKKyAgICBpZiAoc3RlcFNjcm9sbCA8
IDApCisgICAgICAgIHN0ZXBTY3JvbGwgPSAtc3RlcFNjcm9sbDsKKyAgICBlbHNlIGlmICghc3Rl
cFNjcm9sbCkKKyAgICAgICAgc3RlcFNjcm9sbCA9IDE7CisKKyAgICBpZiAoc3RlcFpvb20gPCAw
KQorICAgICAgICBzdGVwWm9vbSA9IDAuMTsKKyAgICBlbHNlIGlmIChzdGVwWm9vbSA8IDAuMDAw
MSkKKyAgICAgICAgc3RlcFpvb20gPSAwLjE7CisKKyAgICBld2tfaW5pdCgpOworCisgICAgY3R4
dC5lZSA9IGVjb3JlX2V2YXNfbmV3KGVuZ2luZSwgZ2VvLngsIGdlby55LCBnZW8udywgZ2VvLmgs
IE5VTEwpOworICAgIGlmICghY3R4dC5lZSkgeworICAgICAgICBFSU5BX0xPR19FUlIoImNvdWxk
IG5vdCBjcmVhdGUgZWNvcmVfZXZhcyB3aW5kb3cgdXNpbmcgIgorICAgICAgICAgICAgICAgICAg
ICAgImVuZ2luZT0lcyAlZCwlZCslZHglZC4iLAorICAgICAgICAgICAgICAgICAgICAgZW5naW5l
ID8gZW5naW5lIDogIihhdXRvKSIsIGdlby54LCBnZW8ueSwgZ2VvLncsIGdlby5oKTsKKyAgICAg
ICAgZXdrX3NodXRkb3duKCk7CisgICAgICAgIGVjb3JlX3NodXRkb3duKCk7CisgICAgICAgIHJl
dHVybiAtMTsKKyAgICB9CisgICAgY3R4dC5lID0gZWNvcmVfZXZhc19nZXQoY3R4dC5lZSk7Cisg
ICAgY3R4dC53ID0gZ2VvLnc7CisgICAgY3R4dC5oID0gZ2VvLmg7CisgICAgY3R4dC5iZyA9IGV2
YXNfb2JqZWN0X3JlY3RhbmdsZV9hZGQoY3R4dC5lKTsKKyAgICBldmFzX29iamVjdF9yZXNpemUo
Y3R4dC5iZywgZ2VvLncsIGdlby5oKTsKKyAgICBldmFzX29iamVjdF9jb2xvcl9zZXQoY3R4dC5i
ZywgMCwgMCwgMCwgMjU1KTsKKyAgICBldmFzX29iamVjdF9zaG93KGN0eHQuYmcpOworCisgICAg
Y3R4dC5ldmVudGFyZWEgPSBldmFzX29iamVjdF9yZWN0YW5nbGVfYWRkKGN0eHQuZSk7CisgICAg
ZXZhc19vYmplY3RfcmVzaXplKGN0eHQuZXZlbnRhcmVhLCBnZW8udywgZ2VvLmgpOworICAgIGV2
YXNfb2JqZWN0X2NvbG9yX3NldChjdHh0LmV2ZW50YXJlYSwgMCwgMCwgMCwgMCk7CisgICAgZXZh
c19vYmplY3Rfc2hvdyhjdHh0LmV2ZW50YXJlYSk7CisKKyAgICBlY29yZV9ldmFzX3Nob3coY3R4
dC5lZSk7CisKKyAgICBjdHh0LnVybCA9IHVybDsKKyAgICBjdHh0LnRoZW1lID0gdGhlbWU7Cisg
ICAgY3R4dC5wcmVSZW5kZXIgPSBwcmVSZW5kZXI7CisgICAgY3R4dC5jYWNoZVNpemUgPSBjYWNo
ZVNpemU7CisgICAgY3R4dC5zdGVwU2Nyb2xsID0gc3RlcFNjcm9sbDsKKyAgICBjdHh0LnN0ZXBa
b29tID0gc3RlcFpvb207CisgICAgY3R4dC5zbW9vdGhTY2FsZSA9IHNtb290aFNjYWxlOworICAg
IGN0eHQudmVyYm9zZSA9IHZlcmJvc2U7CisgICAgY3R4dC52aWV3QWRkID0gZXdrX3ZpZXdfc2lu
Z2xlX2FkZDsKKworICAgIGVjb3JlX21haW5fbG9vcF9pdGVyYXRlKCk7CisKKyAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgcHJpbnRmKCJFV2ViQmVuY2hTdHJlc3M6IGVuZ2luZT0lcywgIgorICAg
ICAgICAgICAgICAgImdlb21ldHJ5PSVkOiVkOiVkOiVkIHRoZW1lPSVzLCBzbW9vdGhTY2FsZT0l
aGh1LCAiCisgICAgICAgICAgICAgICAidXJsPSVzLCB0aW1lPSVkXG4iLAorICAgICAgICAgICAg
ICAgZW5naW5lID8gZW5naW5lIDogIihhdXRvKSIsCisgICAgICAgICAgICAgICBnZW8ueCwgZ2Vv
LnksIGdlby53LCBnZW8uaCwKKyAgICAgICAgICAgICAgIHRoZW1lLCBzbW9vdGhTY2FsZSwgdXJs
LCBzZWNvbmRzKTsKKworICAgIGVjb3JlX2V2ZW50X2hhbmRsZXJfYWRkKEVDT1JFX0VWRU5UX1NJ
R05BTF9FWElULCBvbkV4aXQsICZydW4pOworCisgICAgZm9yIChpdHIgPSB0ZXN0czsgaXRyLT5u
YW1lICYmIHJ1bjsgaXRyKyspIHsKKyAgICAgICAgZG91YmxlIHN0YXJ0LCBlbmQsIGVsYXBzZWQs
IG9wczsKKyAgICAgICAgdWludDY0X3Qgb3BlcmF0aW9ucyA9IDA7CisKKyAgICAgICAgaWYgKGFy
Z3MgPCBhcmdjKSB7CisgICAgICAgICAgICBFaW5hX0Jvb2wgaW5Vc2UgPSBFSU5BX0ZBTFNFOwor
ICAgICAgICAgICAgaW50IGk7CisgICAgICAgICAgICBmb3IgKGkgPSBhcmdzOyBpIDwgYXJnYzsg
aSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKCFzdHJjbXAoYXJndltpXSwgaXRyLT5uYW1lKSkg
eworICAgICAgICAgICAgICAgICAgICBpblVzZSA9IEVJTkFfVFJVRTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKCFpblVzZSkgeworICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAg
ICAgICAgICAgICBwcmludGYoIkVXZWJCZW5jaFN0cmVzczogdGVzdD0lcyBpZ25vcmVkIGJ5IHVz
ZXIuXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRyLT5uYW1lKTsKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlm
ICghdmlld0FkZCgmY3R4dCkpIHsKKyAgICAgICAgICAgIGV3a19zaHV0ZG93bigpOworICAgICAg
ICAgICAgZWNvcmVfc2h1dGRvd24oKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChpdHItPnNldHVwKQorICAgICAgICAgICAgaXRyLT5zZXR1cCgmY3R4
dCk7CisKKyAgICAgICAgc3RhcnQgPSBlY29yZV90aW1lX2dldCgpOworICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgICAgIHByaW50ZigiRVdlYkJlbmNoU3RyZXNzOiB0ZXN0PSVzLCBzdGFy
dD0lMC4zZlxuIiwgaXRyLT5uYW1lLCBzdGFydCk7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAg
IGlmICghaXRyLT50ZXN0KCZjdHh0KSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGVjb3JlX21haW5fbG9vcF9pdGVyYXRlKCk7CisgICAgICAgICAgICBlbmQgPSBlY29yZV90
aW1lX2dldCgpOworICAgICAgICAgICAgZWxhcHNlZCA9IGVuZCAtIHN0YXJ0OworICAgICAgICAg
ICAgb3BlcmF0aW9ucysrOworICAgICAgICB9IHdoaWxlICgoaW50KWVsYXBzZWQgPCBzZWNvbmRz
ICYmIHJ1bik7CisKKyAgICAgICAgaWYgKGl0ci0+dGVhcl9kb3duKQorICAgICAgICAgICAgaXRy
LT50ZWFyX2Rvd24oJmN0eHQpOworCisgICAgICAgIGlmIChlbGFwc2VkIDw9IDAuMCkKKyAgICAg
ICAgICAgIG9wcyA9IDAuMDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgb3BzID0gKGRvdWJs
ZSlvcGVyYXRpb25zIC8gZWxhcHNlZDsKKworICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
ICAgIHByaW50ZigiRVdlYkJlbmNoU3RyZXNzOiB0ZXN0PSVzLCAgIGVuZD0lMC4zZlxuIiwgaXRy
LT5uYW1lLCBlbmQpOworCisgICAgICAgIHByaW50ZigiRVdlYkJlbmNoU3RyZXNzOiB0ZXN0PSVz
LCBSRVNVTFQ6IGVsYXBzZWQ9JTAuM2YsICIKKyAgICAgICAgICAgICAgICJvcGVyYXRpb25zPSUi
IFBSSXU2NCAiLCBvcGVyYXRpb25zL3NlY29uZD0lMC4zZlxuIiwKKyAgICAgICAgICAgICAgIGl0
ci0+bmFtZSwgZWxhcHNlZCwgb3BlcmF0aW9ucywgb3BzKTsKKworICAgICAgICB2aWV3RGVsKCZj
dHh0KTsKKyAgICB9CisKKyAgICBld2tfc2h1dGRvd24oKTsKKyAgICBlY29yZV9zaHV0ZG93bigp
OworICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9FV2ViTGF1bmNoZXIv
bG9uZy1wYWdlLWNvbXBsZXgueGh0bWwgYi9XZWJLaXQvZWZsL0VXZWJMYXVuY2hlci9sb25nLXBh
Z2UtY29tcGxleC54aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTMz
MDdhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2VmbC9FV2ViTGF1bmNoZXIvbG9uZy1wYWdl
LWNvbXBsZXgueGh0bWwKQEAgLTAsMCArMSwxNjAgQEAKKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorICA8dGl0bGU+U1ZHIGluc2lkZSB0cmFuc2Zv
cm1lZCBkaXY8L3RpdGxlPgorICA8c3R5bGU+CisgICAgYm9keSB7CisgICAgICBiYWNrZ3JvdW5k
LWNvbG9yOiB3aGl0ZTsKKyAgICB9CisgICAgLmJveCB7CisgICAgICBoZWlnaHQ6IDQwMHB4Owor
ICAgICAgd2lkdGg6IDQwMHB4OworICAgICAgbWFyZ2luOiA1MHB4OworICAgICAgYm9yZGVyOiAx
cHggc29saWQgYmxhY2s7CisgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDMwcHgs
IDMwcHgpIHJvdGF0ZSgyMGRlZyk7CisgICAgfQorCisgICAgLmJveDIgeworICAgICAgZGlzcGxh
eTogYmxvY2s7CisgICAgICBib3JkZXI6IDVweCBkYXNoZWQgIzBmMDsKKyAgICAgIC13ZWJraXQt
Ym94LXNoYWRvdzogIzMzMzMzMzMzIDIgMiA1OworICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Yw
MDsKKyAgICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwJSAw
JSwgMCUgOTUlLCBmcm9tKHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KSksIHRvKHJnYmEoMjU1LCAy
NTUsIDI1NSwgMCkpKTsKKyAgICAgIGNvbG9yOiAjMDBmOworICAgICAgcGFkZGluZzogNXB4Owor
ICAgICAgbWFyZ2luOiAxMHB4OworICAgICAgZm9udC1zaXplOiAzMnB0OworICAgICAgZm9udC1m
YW1pbHk6IHNhbnMtc2VyaWY7CisgICAgfQorCisgICAgLmJveDMgeworICAgICAgaGVpZ2h0OiA0
MDBweDsKKyAgICAgIHdpZHRoOiA0MDBweDsKKyAgICAgIG1hcmdpbjogNTBweDsKKyAgICAgIGJv
cmRlcjogMXB4IHNvbGlkIHJlZDsKKyAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUo
MzBweCwgMzBweCkgcm90YXRlKDIwZGVnKSBzY2FsZSgxLjgpOworICAgICAgLXdlYmtpdC1ib3Jk
ZXItcmFkaXVzOiA4cHg7CisgICAgfQorICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxw
PkNTUyBUcmFuc2Zvcm1lZCBIVE1MIGRpdiB3aXRoIFNWRyBpbnNpZGUgaXQuICBvYmplY3RCb3Vu
ZGluZ0JveCBwYXR0ZXJucyBvbiB0ZXh0LjwvcD4KKyAgPGRpdiBjbGFzcz0iYm94Ij4KKyAgICAg
IDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmlld0JveD0iMCAwIDQ4MCAzNjAiPgorICAgICAg
ICAgIDxwYXR0ZXJuIGlkPSJwYXQxIiB3aWR0aD0iLjA0IiBoZWlnaHQ9Ii40IiB2aWV3Qm94PSI1
IDUgMjAgMjAiPgorICAgICAgICAgICAgPHJlY3QgeD0iNSIgeT0iNSIgd2lkdGg9IjEwIiBoZWln
aHQ9IjEwIiBmaWxsPSJyZWQiIC8+CisgICAgICAgICAgICA8cmVjdCB4PSIxMCIgeT0iMTAiIHdp
ZHRoPSIxMCIgaGVpZ2h0PSIxMCIgZmlsbD0iZ3JlZW4iIC8+CisgICAgICAgICAgPC9wYXR0ZXJu
PgorICAgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIxMCIgd2lkdGg9IjQzMCIgaGVpZ2h0PSI2MCIg
c3Ryb2tlPSJibGFjayIgZmlsbD0idXJsKCNwYXQxKSIgLz4KKyAgICAgICAgICA8dGV4dCBmb250
LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTIiICB4PSIyNSIgeT0iODUiPlBhdHRlcm4gY3Jl
YXRlZCB1c2luZyByZWQgYW5kIGdyZWVuIHJlY3RhbmdsZXMgYXBwbGllZCB0byBmaWxsIG9mIHJl
Y3RhbmdsZTwvdGV4dD4KKyAgICAgICAgICA8cGF0dGVybiBpZD0icGF0MiIgd2lkdGg9Ii4wNCIg
aGVpZ2h0PSIuNCIgdmlld0JveD0iMCAwIDIwIDIwIj4KKyAgICAgICAgICAgIDxyZWN0IHg9IjAi
IHk9IjAiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCIgZmlsbD0icmVkIiAvPgorICAgICAgICAgICAg
PHJlY3QgeD0iMTAiIHk9IjAiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCIgZmlsbD0iZ3JlZW4iIC8+
CisgICAgICAgICAgICA8cmVjdCB4PSIwIiB5PSIxMCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEwIiBm
aWxsPSJibHVlIiAvPgorICAgICAgICAgICAgPHJlY3QgeD0iMTAiIHk9IjEwIiB3aWR0aD0iMTAi
IGhlaWdodD0iMTAiIGZpbGw9InllbGxvdyIgLz4KKyAgICAgICAgICA8L3BhdHRlcm4+CisgICAg
ICAgICAgPHJlY3QgeD0iMzUiIHk9IjExMCIgd2lkdGg9IjQxMCIgaGVpZ2h0PSI0MCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJ1cmwoI3BhdDIpIiBzdHJva2Utd2lkdGg9IjIwIiAvPgorICAgICAgICAg
IDx0ZXh0IGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMiIgIHg9IjI1IiB5PSIxNzUi
PlBhdHRlcm4gb2YgNCByZWN0YW5nbGVzIGFwcGxpZWQgdG8gYSBzdHJva2Ugb2YgYSByZWN0YW5n
bGUuPC90ZXh0PgorICAgICAgICAgIDxwYXR0ZXJuIGlkPSJwYXQzIiB3aWR0aD0iLjAzIiBoZWln
aHQ9Ii4zIiB2aWV3Qm94PSIwIDAgMTAgMjAiPgorICAgICAgICAgICAgPHJlY3QgeD0iMCIgeT0i
MCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEwIiBmaWxsPSJyZWQiIC8+CisgICAgICAgICAgICA8cmVj
dCB4PSIwIiB5PSIxMCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEwIiBmaWxsPSJncmVlbiIgLz4KKyAg
ICAgICAgICA8L3BhdHRlcm4+CisgICAgICAgICAgPHRleHQgZm9udC1mYW1pbHk9IkFyaWFsIiBm
b250LXNpemU9IjUwIiBmaWxsPSJ1cmwoI3BhdDMpIiAgeD0iMjUiIHk9IjIyMCI+UGF0dGVybiBv
biBmaWxsPC90ZXh0PgorICAgICAgICAgIDx0ZXh0IGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1z
aXplPSIxMiIgIHg9IjI1IiB5PSIyMzUiPlBhdHRlcm4gY29uc2lzdHMgb2YgcmVkIGFuZCBncmVl
biByb3dzPC90ZXh0PgorICAgICAgICAgIDxwYXR0ZXJuIGlkPSJwYXQ0IiB3aWR0aD0iLjA2IiBo
ZWlnaHQ9Ii4yIiB2aWV3Qm94PSIwIDAgMjAgMTAiPgorICAgICAgICAgICAgPHJlY3QgeD0iMCIg
eT0iMCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEwIiBmaWxsPSJyZWQiIC8+CisgICAgICAgICAgICA8
cmVjdCB4PSIxMCIgeT0iMCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEwIiBmaWxsPSJibHVlIiAvPgor
ICAgICAgICAgIDwvcGF0dGVybj4KKyAgICAgICAgICA8dGV4dCBmb250LWZhbWlseT0iQXJpYWwi
IGZvbnQtc2l6ZT0iNDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0idXJsKCNwYXQ0KSIgc3Ryb2tlLXdp
ZHRoPSIyIiAgeD0iMjUiIHk9IjI3NSI+UGF0dGVybiBvbiBzdHJva2U8L3RleHQ+CisgICAgICAg
ICAgPHRleHQgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEyIiAgeD0iMjUiIHk9IjI5
MCI+UGF0dGVybiBjb25zaXN0cyBvZiByZWQgYW5kIGJsdWUgY29sdW1uczwvdGV4dD4KKyAgICAg
ICAgPHRleHQgaWQ9InJldmlzaW9uIiB4PSIxMCIgeT0iMzQwIiBmb250LXNpemU9IjQwIiBzdHJv
a2U9Im5vbmUiIGZpbGw9ImJsYWNrIj4kUmV2aXNpb246IDEuNiAkPC90ZXh0PgorICAgICAgICA8
cmVjdCBpZD0idGVzdC1mcmFtZSIgeD0iMSIgeT0iMSIgd2lkdGg9IjQ3OCIgaGVpZ2h0PSIzNTgi
IGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIvPgorICAgICAgPC9zdmc+CisgIDwvZGl2Pgor
Cis8ZGl2IGNsYXNzPSJib3gyIj4KKyAgSGVsbG8gd2VpcmQgd29ybGQuCis8L2Rpdj4KKworPHRh
YmxlIGJvcmRlcj0iMSI+CisgPHRyPgorICA8dGQ+CisgICA8dGFibGUgYmdjb2xvcj0ib3Jhbmdl
IiAgd2lkdGg9IjEwMCUiPgorICAgIDx0cj4KKwkgPHRkPm5lc3RlZCBpbiBhdXRvLCB3aWR0aD0x
MDAlPC90ZD4KKwk8L3RyPgorICAgPC90YWJsZT4KKyAgPC90ZD4KKyA8L3RyPgorPC90YWJsZT4K
KzxCUi8+Cis8dGFibGUgYm9yZGVyPSIzIiB3aWR0aD0iMjAwIj4KKyA8dHI+CisgIDx0ZD4KKyAg
IDx0YWJsZSBiZ2NvbG9yPSJsaW1lIiB3aWR0aD0iMTAwJSI+CisgICAgPHRyPgorCSA8dGQ+bmVz
dGVkIGluIGZpeGVkLCB3aWR0aD0xMDAlPC90ZD4KKwk8L3RyPgorICAgPC90YWJsZT4KKyAgPC90
ZD4KKyA8L3RyPgorPC90YWJsZT4KKzxCUi8+Cis8dGFibGUgYm9yZGVyPSI1IiB3aWR0aD0iODAw
Ij4KKyA8dHI+CisgIDx0ZD4KKyAgIDx0YWJsZSBiZ2NvbG9yPSJsaW1lIiB3aWR0aD0iMTAwJSI+
CisgICAgPHRyPgorCSA8dGQ+bmVzdGVkIGluIGZpeGVkLCB3aWR0aD0xMDAlPC90ZD4KKwk8L3Ry
PgorICAgPC90YWJsZT4KKyAgPC90ZD4KKyA8L3RyPgorPC90YWJsZT4KKzxCUi8+Cis8dGFibGUg
Ym9yZGVyPSIxIj4KKyA8dHI+CisgIDx0ZD4KKyAgIDx0YWJsZSBiZ2NvbG9yPSJvcmFuZ2UiIHdp
ZHRoPSIxMDAlIj4KKyAgICA8dHI+CisJIDx0ZD5uZXN0ZWQgaW4gYXV0bywgd2lkdGg9MTAwJTwv
dGQ+CisJPC90cj4KKyAgIDwvdGFibGU+CisgIDwvdGQ+CisgIDx0ZD5hdXRvPC90ZD4KKyA8L3Ry
PgorPC90YWJsZT4KKworICA8ZGl2IGNsYXNzPSJib3gzIj4KKyAgICAgIDxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayIgdmlld0JveD0iMCAwIDQ4MCAzNjAiPgorICAgICAgICAgIDxwYXR0ZXJuIGlk
PSJwYXQxIiB3aWR0aD0iLjA0IiBoZWlnaHQ9Ii40IiB2aWV3Qm94PSI1IDUgMjAgMjAiPgorICAg
ICAgICAgICAgPHJlY3QgeD0iNSIgeT0iNSIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEwIiBmaWxsPSJy
ZWQiIC8+CisgICAgICAgICAgICA8cmVjdCB4PSIxMCIgeT0iMTAiIHdpZHRoPSIxMCIgaGVpZ2h0
PSIxMCIgZmlsbD0iZ3JlZW4iIC8+CisgICAgICAgICAgPC9wYXR0ZXJuPgorICAgICAgICAgIDxy
ZWN0IHg9IjI1IiB5PSIxMCIgd2lkdGg9IjQzMCIgaGVpZ2h0PSI2MCIgc3Ryb2tlPSJibGFjayIg
ZmlsbD0idXJsKCNwYXQxKSIgLz4KKyAgICAgICAgICA8dGV4dCBmb250LWZhbWlseT0iQXJpYWwi
IGZvbnQtc2l6ZT0iMTIiICB4PSIyNSIgeT0iODUiPlBhdHRlcm4gY3JlYXRlZCB1c2luZyByZWQg
YW5kIGdyZWVuIHJlY3RhbmdsZXMgYXBwbGllZCB0byBmaWxsIG9mIHJlY3RhbmdsZTwvdGV4dD4K
KyAgICAgICAgICA8cGF0dGVybiBpZD0icGF0MiIgd2lkdGg9Ii4wNCIgaGVpZ2h0PSIuNCIgdmll
d0JveD0iMCAwIDIwIDIwIj4KKyAgICAgICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIx
MCIgaGVpZ2h0PSIxMCIgZmlsbD0icmVkIiAvPgorICAgICAgICAgICAgPHJlY3QgeD0iMTAiIHk9
IjAiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCIgZmlsbD0iZ3JlZW4iIC8+CisgICAgICAgICAgICA8
cmVjdCB4PSIwIiB5PSIxMCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEwIiBmaWxsPSJibHVlIiAvPgor
ICAgICAgICAgICAgPHJlY3QgeD0iMTAiIHk9IjEwIiB3aWR0aD0iMTAiIGhlaWdodD0iMTAiIGZp
bGw9InllbGxvdyIgLz4KKyAgICAgICAgICA8L3BhdHRlcm4+CisgICAgICAgICAgPHJlY3QgeD0i
MzUiIHk9IjExMCIgd2lkdGg9IjQxMCIgaGVpZ2h0PSI0MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJ1
cmwoI3BhdDIpIiBzdHJva2Utd2lkdGg9IjIwIiAvPgorICAgICAgICAgIDx0ZXh0IGZvbnQtZmFt
aWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMiIgIHg9IjI1IiB5PSIxNzUiPlBhdHRlcm4gb2YgNCBy
ZWN0YW5nbGVzIGFwcGxpZWQgdG8gYSBzdHJva2Ugb2YgYSByZWN0YW5nbGUuPC90ZXh0PgorICAg
ICAgICAgIDxwYXR0ZXJuIGlkPSJwYXQzIiB3aWR0aD0iLjAzIiBoZWlnaHQ9Ii4zIiB2aWV3Qm94
PSIwIDAgMTAgMjAiPgorICAgICAgICAgICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwIiBo
ZWlnaHQ9IjEwIiBmaWxsPSJyZWQiIC8+CisgICAgICAgICAgICA8cmVjdCB4PSIwIiB5PSIxMCIg
d2lkdGg9IjEwIiBoZWlnaHQ9IjEwIiBmaWxsPSJncmVlbiIgLz4KKyAgICAgICAgICA8L3BhdHRl
cm4+CisgICAgICAgICAgPHRleHQgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjUwIiBm
aWxsPSJ1cmwoI3BhdDMpIiAgeD0iMjUiIHk9IjIyMCI+UGF0dGVybiBvbiBmaWxsPC90ZXh0Pgor
ICAgICAgICAgIDx0ZXh0IGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMiIgIHg9IjI1
IiB5PSIyMzUiPlBhdHRlcm4gY29uc2lzdHMgb2YgcmVkIGFuZCBncmVlbiByb3dzPC90ZXh0Pgor
ICAgICAgICAgIDxwYXR0ZXJuIGlkPSJwYXQ0IiB3aWR0aD0iLjA2IiBoZWlnaHQ9Ii4yIiB2aWV3
Qm94PSIwIDAgMjAgMTAiPgorICAgICAgICAgICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEw
IiBoZWlnaHQ9IjEwIiBmaWxsPSJyZWQiIC8+CisgICAgICAgICAgICA8cmVjdCB4PSIxMCIgeT0i
MCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEwIiBmaWxsPSJibHVlIiAvPgorICAgICAgICAgIDwvcGF0
dGVybj4KKyAgICAgICAgICA8dGV4dCBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iNDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0idXJsKCNwYXQ0KSIgc3Ryb2tlLXdpZHRoPSIyIiAgeD0iMjUi
IHk9IjI3NSI+UGF0dGVybiBvbiBzdHJva2U8L3RleHQ+CisgICAgICAgICAgPHRleHQgZm9udC1m
YW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEyIiAgeD0iMjUiIHk9IjI5MCI+UGF0dGVybiBjb25z
aXN0cyBvZiByZWQgYW5kIGJsdWUgY29sdW1uczwvdGV4dD4KKyAgICAgICAgPHRleHQgaWQ9InJl
dmlzaW9uIiB4PSIxMCIgeT0iMzQwIiBmb250LXNpemU9IjQwIiBzdHJva2U9Im5vbmUiIGZpbGw9
ImJsYWNrIj4kUmV2aXNpb246IDEuNiAkPC90ZXh0PgorICAgICAgICA8cmVjdCBpZD0idGVzdC1m
cmFtZSIgeD0iMSIgeT0iMSIgd2lkdGg9IjQ3OCIgaGVpZ2h0PSIzNTgiIGZpbGw9Im5vbmUiIHN0
cm9rZT0iIzAwMDAwMCIvPgorICAgICAgPC9zdmc+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9FV2ViTGF1bmNoZXIvbG9uZy1wYWdlLmh0bWwgYi9X
ZWJLaXQvZWZsL0VXZWJMYXVuY2hlci9sb25nLXBhZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi41NTIxNWNlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2VmbC9F
V2ViTGF1bmNoZXIvbG9uZy1wYWdlLmh0bWwKQEAgLTAsMCArMSwzMTkgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRw
Oi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlz
by04ODU5LTE1Ij4KKzx0aXRsZT48L3RpdGxlPgorPC9oZWFkPgorCis8Ym9keT4KKzxzbWFsbD5z
b21ldGhpbmcgbGlrZSB0aGlzIGlzIGhlcmUgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8g
cCBxIHIgcyB0IHUgdiB4IHo8L3NtYWxsPgorPHNtYWxsIHN0eWxlPSJkaXNwbGF5OiBibG9jazsg
ZmxvYXQ6IGxlZnQ7IHotaW5kZXg6IDEwOyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDEyOHB4
OyB0b3A6IDEyOHB4OyB3aWR0aDogMTI4cHg7IGhlaWdodDogMTI4cHg7IGNvbG9yOiAjMDAwOyBi
YWNrZ3JvdW5kLWNvbG9yOiAjNmY2OyI+c29tZXRoaW5nIGxpa2UgdGhpcyBpcyBoZXJlIGEgYiBj
IGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgeCB6PC9zbWFsbD4KKzxoMT5o
ZWxsbyB3b3JsZDwvaDE+CisKKzxwPmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ4ejAxMjM0NTY3ODkw
YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnh6MDEyMzQ1Njc4OTBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2
eHowMTIzNDU2Nzg5MGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ4ejAxMjM0NTY3ODkwYWJjZGVmZ2hp
amtsbW5vcHFyc3R1dnh6MDEyMzQ1Njc4OTBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2eHowMTIzNDU2
Nzg5MGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ4ejAxMjM0NTY3ODkwYWJjZGVmZ2hpamtsbW5vcHFy
c3R1dnh6MDEyMzQ1Njc4OTBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2eHowMTIzNDU2Nzg5MGFiY2Rl
ZmdoaWprbG1ub3BxcnN0dXZ4ejAxMjM0NTY3ODkwYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnh6MDEy
MzQ1Njc4OTBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2eHowMTIzNDU2Nzg5MGFiY2RlZmdoaWprbG1u
b3BxcnN0dXZ4ejAxMjM0NTY3ODkwYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnh6MDEyMzQ1Njc4OTBh
YmNkZWZnaGlqa2xtbm9wcXJzdHV2eHowMTIzNDU2Nzg5MGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ4
ejAxMjM0NTY3ODkwYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnh6MDEyMzQ1Njc4OTBhYmNkZWZnaGlq
a2xtbm9wcXJzdHV2eHowMTIzNDU2Nzg5MGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ4ejAxMjM0NTY3
ODkwYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnh6MDEyMzQ1Njc4OTBhYmNkZWZnaGlqa2xtbm9wcXJz
dHV2eHowMTIzNDU2Nzg5MGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ4ejAxMjM0NTY3ODkwPC9wPgor
Cis8b2w+CisgIDxsaT5oZWxsbyB3b3JsZDwvbGk+CisgIDxsaT5UaGlzIGlzIDA8L2xpPgorICA8
bGk+VGhpcyBpcyAxPC9saT4KKyAgPGxpPlRoaXMgaXMgMjwvbGk+CisgIDxsaT5UaGlzIGlzIDM8
L2xpPgorICA8bGk+VGhpcyBpcyA0PC9saT4KKyAgPGxpPlRoaXMgaXMgNTwvbGk+CisgIDxsaT5U
aGlzIGlzIDY8L2xpPgorICA8bGk+VGhpcyBpcyA3PC9saT4KKyAgPGxpPlRoaXMgaXMgODwvbGk+
CisgIDxsaT5UaGlzIGlzIDk8L2xpPgorICA8bGk+VGhpcyBpcyAxMDwvbGk+CisgIDxsaT5UaGlz
IGlzIDExPC9saT4KKyAgPGxpPlRoaXMgaXMgMTI8L2xpPgorICA8bGk+VGhpcyBpcyAxMzwvbGk+
CisgIDxsaT5UaGlzIGlzIDE0PC9saT4KKyAgPGxpPlRoaXMgaXMgMTU8L2xpPgorICA8bGk+VGhp
cyBpcyAxNjwvbGk+CisgIDxsaT5UaGlzIGlzIDE3PC9saT4KKyAgPGxpPlRoaXMgaXMgMTg8L2xp
PgorICA8bGk+VGhpcyBpcyAxOTwvbGk+CisgIDxsaT5UaGlzIGlzIDIwPC9saT4KKyAgPGxpPlRo
aXMgaXMgMjE8L2xpPgorICA8bGk+VGhpcyBpcyAyMjwvbGk+CisgIDxsaT5UaGlzIGlzIDIzPC9s
aT4KKyAgPGxpPlRoaXMgaXMgMjQ8L2xpPgorICA8bGk+VGhpcyBpcyAyNTwvbGk+CisgIDxsaT5U
aGlzIGlzIDI2PC9saT4KKyAgPGxpPlRoaXMgaXMgMjc8L2xpPgorICA8bGk+VGhpcyBpcyAyODwv
bGk+CisgIDxsaT5UaGlzIGlzIDI5PC9saT4KKyAgPGxpPlRoaXMgaXMgMzA8L2xpPgorICA8bGk+
VGhpcyBpcyAzMTwvbGk+CisgIDxsaT5UaGlzIGlzIDMyPC9saT4KKyAgPGxpPlRoaXMgaXMgMzM8
L2xpPgorICA8bGk+VGhpcyBpcyAzNDwvbGk+CisgIDxsaT5UaGlzIGlzIDM1PC9saT4KKyAgPGxp
PlRoaXMgaXMgMzY8L2xpPgorICA8bGk+VGhpcyBpcyAzNzwvbGk+CisgIDxsaT5UaGlzIGlzIDM4
PC9saT4KKyAgPGxpPlRoaXMgaXMgMzk8L2xpPgorICA8bGk+VGhpcyBpcyA0MDwvbGk+CisgIDxs
aT5UaGlzIGlzIDQxPC9saT4KKyAgPGxpPlRoaXMgaXMgNDI8L2xpPgorICA8bGk+VGhpcyBpcyA0
MzwvbGk+CisgIDxsaT5UaGlzIGlzIDQ0PC9saT4KKyAgPGxpPlRoaXMgaXMgNDU8L2xpPgorICA8
bGk+VGhpcyBpcyA0NjwvbGk+CisgIDxsaT5UaGlzIGlzIDQ3PC9saT4KKyAgPGxpPlRoaXMgaXMg
NDg8L2xpPgorICA8bGk+VGhpcyBpcyA0OTwvbGk+CisgIDxsaT5UaGlzIGlzIDUwPC9saT4KKyAg
PGxpPlRoaXMgaXMgNTE8L2xpPgorICA8bGk+VGhpcyBpcyA1MjwvbGk+CisgIDxsaT5UaGlzIGlz
IDUzPC9saT4KKyAgPGxpPlRoaXMgaXMgNTQ8L2xpPgorICA8bGk+VGhpcyBpcyA1NTwvbGk+Cisg
IDxsaT5UaGlzIGlzIDU2PC9saT4KKyAgPGxpPlRoaXMgaXMgNTc8L2xpPgorICA8bGk+VGhpcyBp
cyA1ODwvbGk+CisgIDxsaT5UaGlzIGlzIDU5PC9saT4KKyAgPGxpPlRoaXMgaXMgNjA8L2xpPgor
ICA8bGk+VGhpcyBpcyA2MTwvbGk+CisgIDxsaT5UaGlzIGlzIDYyPC9saT4KKyAgPGxpPlRoaXMg
aXMgNjM8L2xpPgorICA8bGk+VGhpcyBpcyA2NDwvbGk+CisgIDxsaT5UaGlzIGlzIDY1PC9saT4K
KyAgPGxpPlRoaXMgaXMgNjY8L2xpPgorICA8bGk+VGhpcyBpcyA2NzwvbGk+CisgIDxsaT5UaGlz
IGlzIDY4PC9saT4KKyAgPGxpPlRoaXMgaXMgNjk8L2xpPgorICA8bGk+VGhpcyBpcyA3MDwvbGk+
CisgIDxsaT5UaGlzIGlzIDcxPC9saT4KKyAgPGxpPlRoaXMgaXMgNzI8L2xpPgorICA8bGk+VGhp
cyBpcyA3MzwvbGk+CisgIDxsaT5UaGlzIGlzIDc0PC9saT4KKyAgPGxpPlRoaXMgaXMgNzU8L2xp
PgorICA8bGk+VGhpcyBpcyA3NjwvbGk+CisgIDxsaT5UaGlzIGlzIDc3PC9saT4KKyAgPGxpPlRo
aXMgaXMgNzg8L2xpPgorICA8bGk+VGhpcyBpcyA3OTwvbGk+CisgIDxsaT5UaGlzIGlzIDgwPC9s
aT4KKyAgPGxpPlRoaXMgaXMgODE8L2xpPgorICA8bGk+VGhpcyBpcyA4MjwvbGk+CisgIDxsaT5U
aGlzIGlzIDgzPC9saT4KKyAgPGxpPlRoaXMgaXMgODQ8L2xpPgorICA8bGk+VGhpcyBpcyA4NTwv
bGk+CisgIDxsaT5UaGlzIGlzIDg2PC9saT4KKyAgPGxpPlRoaXMgaXMgODc8L2xpPgorICA8bGk+
VGhpcyBpcyA4ODwvbGk+CisgIDxsaT5UaGlzIGlzIDg5PC9saT4KKyAgPGxpPlRoaXMgaXMgOTA8
L2xpPgorICA8bGk+VGhpcyBpcyA5MTwvbGk+CisgIDxsaT5UaGlzIGlzIDkyPC9saT4KKyAgPGxp
PlRoaXMgaXMgOTM8L2xpPgorICA8bGk+VGhpcyBpcyA5NDwvbGk+CisgIDxsaT5UaGlzIGlzIDk1
PC9saT4KKyAgPGxpPlRoaXMgaXMgOTY8L2xpPgorICA8bGk+VGhpcyBpcyA5NzwvbGk+CisgIDxs
aT5UaGlzIGlzIDk4PC9saT4KKyAgPGxpPlRoaXMgaXMgOTk8L2xpPgorICA8bGk+VGhpcyBpcyAx
MDA8L2xpPgorICA8bGk+VGhpcyBpcyAxMDE8L2xpPgorICA8bGk+VGhpcyBpcyAxMDI8L2xpPgor
ICA8bGk+VGhpcyBpcyAxMDM8L2xpPgorICA8bGk+VGhpcyBpcyAxMDQ8L2xpPgorICA8bGk+VGhp
cyBpcyAxMDU8L2xpPgorICA8bGk+VGhpcyBpcyAxMDY8L2xpPgorICA8bGk+VGhpcyBpcyAxMDc8
L2xpPgorICA8bGk+VGhpcyBpcyAxMDg8L2xpPgorICA8bGk+VGhpcyBpcyAxMDk8L2xpPgorICA8
bGk+VGhpcyBpcyAxMTA8L2xpPgorICA8bGk+VGhpcyBpcyAxMTE8L2xpPgorICA8bGk+VGhpcyBp
cyAxMTI8L2xpPgorICA8bGk+VGhpcyBpcyAxMTM8L2xpPgorICA8bGk+VGhpcyBpcyAxMTQ8L2xp
PgorICA8bGk+VGhpcyBpcyAxMTU8L2xpPgorICA8bGk+VGhpcyBpcyAxMTY8L2xpPgorICA8bGk+
VGhpcyBpcyAxMTc8L2xpPgorICA8bGk+VGhpcyBpcyAxMTg8L2xpPgorICA8bGk+VGhpcyBpcyAx
MTk8L2xpPgorICA8bGk+VGhpcyBpcyAxMjA8L2xpPgorICA8bGk+VGhpcyBpcyAxMjE8L2xpPgor
ICA8bGk+VGhpcyBpcyAxMjI8L2xpPgorICA8bGk+VGhpcyBpcyAxMjM8L2xpPgorICA8bGk+VGhp
cyBpcyAxMjQ8L2xpPgorICA8bGk+VGhpcyBpcyAxMjU8L2xpPgorICA8bGk+VGhpcyBpcyAxMjY8
L2xpPgorICA8bGk+VGhpcyBpcyAxMjc8L2xpPgorICA8bGk+VGhpcyBpcyAxMjg8L2xpPgorICA8
bGk+VGhpcyBpcyAxMjk8L2xpPgorICA8bGk+VGhpcyBpcyAxMzA8L2xpPgorICA8bGk+VGhpcyBp
cyAxMzE8L2xpPgorICA8bGk+VGhpcyBpcyAxMzI8L2xpPgorICA8bGk+VGhpcyBpcyAxMzM8L2xp
PgorICA8bGk+VGhpcyBpcyAxMzQ8L2xpPgorICA8bGk+VGhpcyBpcyAxMzU8L2xpPgorICA8bGk+
VGhpcyBpcyAxMzY8L2xpPgorICA8bGk+VGhpcyBpcyAxMzc8L2xpPgorICA8bGk+VGhpcyBpcyAx
Mzg8L2xpPgorICA8bGk+VGhpcyBpcyAxMzk8L2xpPgorICA8bGk+VGhpcyBpcyAxNDA8L2xpPgor
ICA8bGk+VGhpcyBpcyAxNDE8L2xpPgorICA8bGk+VGhpcyBpcyAxNDI8L2xpPgorICA8bGk+VGhp
cyBpcyAxNDM8L2xpPgorICA8bGk+VGhpcyBpcyAxNDQ8L2xpPgorICA8bGk+VGhpcyBpcyAxNDU8
L2xpPgorICA8bGk+VGhpcyBpcyAxNDY8L2xpPgorICA8bGk+VGhpcyBpcyAxNDc8L2xpPgorICA8
bGk+VGhpcyBpcyAxNDg8L2xpPgorICA8bGk+VGhpcyBpcyAxNDk8L2xpPgorICA8bGk+VGhpcyBp
cyAxNTA8L2xpPgorICA8bGk+VGhpcyBpcyAxNTE8L2xpPgorICA8bGk+VGhpcyBpcyAxNTI8L2xp
PgorICA8bGk+VGhpcyBpcyAxNTM8L2xpPgorICA8bGk+VGhpcyBpcyAxNTQ8L2xpPgorICA8bGk+
VGhpcyBpcyAxNTU8L2xpPgorICA8bGk+VGhpcyBpcyAxNTY8L2xpPgorICA8bGk+VGhpcyBpcyAx
NTc8L2xpPgorICA8bGk+VGhpcyBpcyAxNTg8L2xpPgorICA8bGk+VGhpcyBpcyAxNTk8L2xpPgor
ICA8bGk+VGhpcyBpcyAxNjA8L2xpPgorICA8bGk+VGhpcyBpcyAxNjE8L2xpPgorICA8bGk+VGhp
cyBpcyAxNjI8L2xpPgorICA8bGk+VGhpcyBpcyAxNjM8L2xpPgorICA8bGk+VGhpcyBpcyAxNjQ8
L2xpPgorICA8bGk+VGhpcyBpcyAxNjU8L2xpPgorICA8bGk+VGhpcyBpcyAxNjY8L2xpPgorICA8
bGk+VGhpcyBpcyAxNjc8L2xpPgorICA8bGk+VGhpcyBpcyAxNjg8L2xpPgorICA8bGk+VGhpcyBp
cyAxNjk8L2xpPgorICA8bGk+VGhpcyBpcyAxNzA8L2xpPgorICA8bGk+VGhpcyBpcyAxNzE8L2xp
PgorICA8bGk+VGhpcyBpcyAxNzI8L2xpPgorICA8bGk+VGhpcyBpcyAxNzM8L2xpPgorICA8bGk+
VGhpcyBpcyAxNzQ8L2xpPgorICA8bGk+VGhpcyBpcyAxNzU8L2xpPgorICA8bGk+VGhpcyBpcyAx
NzY8L2xpPgorICA8bGk+VGhpcyBpcyAxNzc8L2xpPgorICA8bGk+VGhpcyBpcyAxNzg8L2xpPgor
ICA8bGk+VGhpcyBpcyAxNzk8L2xpPgorICA8bGk+VGhpcyBpcyAxODA8L2xpPgorICA8bGk+VGhp
cyBpcyAxODE8L2xpPgorICA8bGk+VGhpcyBpcyAxODI8L2xpPgorICA8bGk+VGhpcyBpcyAxODM8
L2xpPgorICA8bGk+VGhpcyBpcyAxODQ8L2xpPgorICA8bGk+VGhpcyBpcyAxODU8L2xpPgorICA8
bGk+VGhpcyBpcyAxODY8L2xpPgorICA8bGk+VGhpcyBpcyAxODc8L2xpPgorICA8bGk+VGhpcyBp
cyAxODg8L2xpPgorICA8bGk+VGhpcyBpcyAxODk8L2xpPgorICA8bGk+VGhpcyBpcyAxOTA8L2xp
PgorICA8bGk+VGhpcyBpcyAxOTE8L2xpPgorICA8bGk+VGhpcyBpcyAxOTI8L2xpPgorICA8bGk+
VGhpcyBpcyAxOTM8L2xpPgorICA8bGk+VGhpcyBpcyAxOTQ8L2xpPgorICA8bGk+VGhpcyBpcyAx
OTU8L2xpPgorICA8bGk+VGhpcyBpcyAxOTY8L2xpPgorICA8bGk+VGhpcyBpcyAxOTc8L2xpPgor
ICA8bGk+VGhpcyBpcyAxOTg8L2xpPgorICA8bGk+VGhpcyBpcyAxOTk8L2xpPgorICA8bGk+VGhp
cyBpcyAyMDA8L2xpPgorICA8bGk+VGhpcyBpcyAyMDE8L2xpPgorICA8bGk+VGhpcyBpcyAyMDI8
L2xpPgorICA8bGk+VGhpcyBpcyAyMDM8L2xpPgorICA8bGk+VGhpcyBpcyAyMDQ8L2xpPgorICA8
bGk+VGhpcyBpcyAyMDU8L2xpPgorICA8bGk+VGhpcyBpcyAyMDY8L2xpPgorICA8bGk+VGhpcyBp
cyAyMDc8L2xpPgorICA8bGk+VGhpcyBpcyAyMDg8L2xpPgorICA8bGk+VGhpcyBpcyAyMDk8L2xp
PgorICA8bGk+VGhpcyBpcyAyMTA8L2xpPgorICA8bGk+VGhpcyBpcyAyMTE8L2xpPgorICA8bGk+
VGhpcyBpcyAyMTI8L2xpPgorICA8bGk+VGhpcyBpcyAyMTM8L2xpPgorICA8bGk+VGhpcyBpcyAy
MTQ8L2xpPgorICA8bGk+VGhpcyBpcyAyMTU8L2xpPgorICA8bGk+VGhpcyBpcyAyMTY8L2xpPgor
ICA8bGk+VGhpcyBpcyAyMTc8L2xpPgorICA8bGk+VGhpcyBpcyAyMTg8L2xpPgorICA8bGk+VGhp
cyBpcyAyMTk8L2xpPgorICA8bGk+VGhpcyBpcyAyMjA8L2xpPgorICA8bGk+VGhpcyBpcyAyMjE8
L2xpPgorICA8bGk+VGhpcyBpcyAyMjI8L2xpPgorICA8bGk+VGhpcyBpcyAyMjM8L2xpPgorICA8
bGk+VGhpcyBpcyAyMjQ8L2xpPgorICA8bGk+VGhpcyBpcyAyMjU8L2xpPgorICA8bGk+VGhpcyBp
cyAyMjY8L2xpPgorICA8bGk+VGhpcyBpcyAyMjc8L2xpPgorICA8bGk+VGhpcyBpcyAyMjg8L2xp
PgorICA8bGk+VGhpcyBpcyAyMjk8L2xpPgorICA8bGk+VGhpcyBpcyAyMzA8L2xpPgorICA8bGk+
VGhpcyBpcyAyMzE8L2xpPgorICA8bGk+VGhpcyBpcyAyMzI8L2xpPgorICA8bGk+VGhpcyBpcyAy
MzM8L2xpPgorICA8bGk+VGhpcyBpcyAyMzQ8L2xpPgorICA8bGk+VGhpcyBpcyAyMzU8L2xpPgor
ICA8bGk+VGhpcyBpcyAyMzY8L2xpPgorICA8bGk+VGhpcyBpcyAyMzc8L2xpPgorICA8bGk+VGhp
cyBpcyAyMzg8L2xpPgorICA8bGk+VGhpcyBpcyAyMzk8L2xpPgorICA8bGk+VGhpcyBpcyAyNDA8
L2xpPgorICA8bGk+VGhpcyBpcyAyNDE8L2xpPgorICA8bGk+VGhpcyBpcyAyNDI8L2xpPgorICA8
bGk+VGhpcyBpcyAyNDM8L2xpPgorICA8bGk+VGhpcyBpcyAyNDQ8L2xpPgorICA8bGk+VGhpcyBp
cyAyNDU8L2xpPgorICA8bGk+VGhpcyBpcyAyNDY8L2xpPgorICA8bGk+VGhpcyBpcyAyNDc8L2xp
PgorICA8bGk+VGhpcyBpcyAyNDg8L2xpPgorICA8bGk+VGhpcyBpcyAyNDk8L2xpPgorICA8bGk+
VGhpcyBpcyAyNTA8L2xpPgorICA8bGk+VGhpcyBpcyAyNTE8L2xpPgorICA8bGk+VGhpcyBpcyAy
NTI8L2xpPgorICA8bGk+VGhpcyBpcyAyNTM8L2xpPgorICA8bGk+VGhpcyBpcyAyNTQ8L2xpPgor
ICA8bGk+VGhpcyBpcyAyNTU8L2xpPgorICA8bGk+VGhpcyBpcyAyNTY8L2xpPgorICA8bGk+VGhp
cyBpcyAyNTc8L2xpPgorICA8bGk+VGhpcyBpcyAyNTg8L2xpPgorICA8bGk+VGhpcyBpcyAyNTk8
L2xpPgorICA8bGk+VGhpcyBpcyAyNjA8L2xpPgorICA8bGk+VGhpcyBpcyAyNjE8L2xpPgorICA8
bGk+VGhpcyBpcyAyNjI8L2xpPgorICA8bGk+VGhpcyBpcyAyNjM8L2xpPgorICA8bGk+VGhpcyBp
cyAyNjQ8L2xpPgorICA8bGk+VGhpcyBpcyAyNjU8L2xpPgorICA8bGk+VGhpcyBpcyAyNjY8L2xp
PgorICA8bGk+VGhpcyBpcyAyNjc8L2xpPgorICA8bGk+VGhpcyBpcyAyNjg8L2xpPgorICA8bGk+
VGhpcyBpcyAyNjk8L2xpPgorICA8bGk+VGhpcyBpcyAyNzA8L2xpPgorICA8bGk+VGhpcyBpcyAy
NzE8L2xpPgorICA8bGk+VGhpcyBpcyAyNzI8L2xpPgorICA8bGk+VGhpcyBpcyAyNzM8L2xpPgor
ICA8bGk+VGhpcyBpcyAyNzQ8L2xpPgorICA8bGk+VGhpcyBpcyAyNzU8L2xpPgorICA8bGk+VGhp
cyBpcyAyNzY8L2xpPgorICA8bGk+VGhpcyBpcyAyNzc8L2xpPgorICA8bGk+VGhpcyBpcyAyNzg8
L2xpPgorICA8bGk+VGhpcyBpcyAyNzk8L2xpPgorICA8bGk+VGhpcyBpcyAyODA8L2xpPgorICA8
bGk+VGhpcyBpcyAyODE8L2xpPgorICA8bGk+VGhpcyBpcyAyODI8L2xpPgorICA8bGk+VGhpcyBp
cyAyODM8L2xpPgorICA8bGk+VGhpcyBpcyAyODQ8L2xpPgorICA8bGk+VGhpcyBpcyAyODU8L2xp
PgorICA8bGk+VGhpcyBpcyAyODY8L2xpPgorICA8bGk+VGhpcyBpcyAyODc8L2xpPgorICA8bGk+
VGhpcyBpcyAyODg8L2xpPgorICA8bGk+VGhpcyBpcyAyODk8L2xpPgorICA8bGk+VGhpcyBpcyAy
OTA8L2xpPgorICA8bGk+VGhpcyBpcyAyOTE8L2xpPgorICA8bGk+VGhpcyBpcyAyOTI8L2xpPgor
ICA8bGk+VGhpcyBpcyAyOTM8L2xpPgorICA8bGk+VGhpcyBpcyAyOTQ8L2xpPgorICA8bGk+VGhp
cyBpcyAyOTU8L2xpPgorICA8bGk+VGhpcyBpcyAyOTY8L2xpPgorICA8bGk+VGhpcyBpcyAyOTc8
L2xpPgorICA8bGk+VGhpcyBpcyAyOTg8L2xpPgorICA8bGk+VGhpcyBpcyAyOTk8L2xpPgorPC9v
bD4KKworPC9ib2R5PiA8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL0VXZWJMYXVuY2hl
ci9tYWluLmMgYi9XZWJLaXQvZWZsL0VXZWJMYXVuY2hlci9tYWluLmMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMzhjYzA2ZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9l
ZmwvRVdlYkxhdW5jaGVyL21haW4uYwpAQCAtMCwwICsxLDY1OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOCBJTmRUIC0gSW5zdGl0dXRvIE5va2lhIGRlIFRlY25vbG9naWEKKyAqIENvcHly
aWdodCAoQykgMjAwOSwgMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworICogQ29weXJp
Z2h0IChDKSAyMDA5LCAyMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJFV2ViS2l0LmgiCisKKyNpbmNsdWRlIDxjdHlw
ZS5oPgorI2luY2x1ZGUgPEVjb3JlLmg+CisjaW5jbHVkZSA8RWNvcmVfRGF0YS5oPgorI2luY2x1
ZGUgPEVjb3JlX0V2YXMuaD4KKyNpbmNsdWRlIDxFY29yZV9GaWxlLmg+CisjaW5jbHVkZSA8RWNv
cmVfR2V0b3B0Lmg+CisjaW5jbHVkZSA8RWNvcmVfWC5oPgorI2luY2x1ZGUgPEVkamUuaD4KKyNp
bmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4K
KyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzeXMv
dHlwZXMuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworI2RlZmluZSBERUZBVUxUX1dJRFRIICAg
ICAgODAwCisjZGVmaW5lIERFRkFVTFRfSEVJR0hUICAgICA2MDAKKworI2RlZmluZSBpbmZvKGZv
cm1hdCwgYXJncy4uLikgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBpZiAodmVyYm9zZSkgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg
cHJpbnRmKGZvcm1hdCwgIyNhcmdzKTsgXAorICAgIH0gd2hpbGUgKDApCisKKyNkZWZpbmUgUkVM
X1RIRU1FX1BBVEggIi4uLy4uLy4uL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL2RlZmF1bHQuZWRq
IgorCisjZGVmaW5lIE1JTl9aT09NX0xFVkVMIDAKKyNkZWZpbmUgREVGQVVMVF9aT09NX0xFVkVM
IDUKKyNkZWZpbmUgTUFYX1pPT01fTEVWRUwgMTMKKworc3RhdGljIGludCBjdXJyZW50Wm9vbUxl
dmVsID0gREVGQVVMVF9aT09NX0xFVkVMOworCisvLyB0aGUgem9vbSB2YWx1ZXMgYXJlIGNob3Nl
biB0byBiZSBsaWtlIGluIE1vemlsbGEgRmlyZWZveCAzCitzdGF0aWMgaW50IHpvb21MZXZlbHNb
XSA9IHszMCwgNTAsIDY3LCA4MCwgOTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAw
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMCwgMTIwLCAxMzMsIDE1MCwgMTcwLCAy
MDAsIDI0MCwgMzAwfTsKKworc3RhdGljIGludCB2ZXJib3NlID0gMDsKKworc3RhdGljIEVpbmFf
TGlzdCAqd2luZG93cyA9IE5VTEw7CisKK3N0YXRpYyBjaGFyICp0aGVtZVBhdGggPSBOVUxMOwor
CitzdGF0aWMgY29uc3QgRWNvcmVfR2V0b3B0IG9wdGlvbnMgPSB7CisgICAgIkVXZWJMYXVuY2hl
ciIsCisgICAgIiVwcm9nIFtvcHRpb25zXSBbdXJsXSIsCisgICAgIjAuMC4xIiwKKyAgICAiKEMp
MjAwOCBJTmRUIChUaGUgTm9raWEgVGVjaG5vbG9neSBJbnN0aXR1dGUpXG4iCisgICAgIihDKTIw
MDksIDIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXNcbiIKKyAgICAiKEMpMjAwOSwgMjAx
MCBTYW1zdW5nIEVsZWN0cm9uaWNzIiwKKyAgICAiR1BMIiwKKyAgICAiVGVzdCBXZWIgQnJvd3Nl
ciB1c2luZyB0aGUgRW5saWdodGVubWVudCBGb3VuZGF0aW9uIExpYnJhcmllcyBvZiBXZWJLaXQi
LAorICAgIEVJTkFfVFJVRSwgeworICAgICAgICBFQ09SRV9HRVRPUFRfU1RPUkVfU1RSCisgICAg
ICAgICAgICAoJ2UnLCAiZW5naW5lIiwgImVjb3JlLWV2YXMgZW5naW5lIHRvIHVzZS4iKSwKKyAg
ICAgICAgRUNPUkVfR0VUT1BUX0NBTExCQUNLX05PQVJHUworICAgICAgICAgICAgKCdFJywgImxp
c3QtZW5naW5lcyIsICJsaXN0IGVjb3JlLWV2YXMgZW5naW5lcy4iLAorICAgICAgICAgICAgIGVj
b3JlX2dldG9wdF9jYWxsYmFja19lY29yZV9ldmFzX2xpc3RfZW5naW5lcywgTlVMTCksCisgICAg
ICAgIEVDT1JFX0dFVE9QVF9TVE9SRV9ERUZfQk9PTAorICAgICAgICAgICAgKCdGJywgImZ1bGxz
Y3JlZW4iLCAiZnVsbHNjcmVlbiBtb2RlLiIsIDApLAorICAgICAgICBFQ09SRV9HRVRPUFRfQ0FM
TEJBQ0tfQVJHUworICAgICAgICAgICAgKCdnJywgImdlb21ldHJ5IiwgImdlb21ldHJ5IHRvIHVz
ZSBpbiB4Onk6dzpoIGZvcm0uIiwgIlg6WTpXOkgiLAorICAgICAgICAgICAgIGVjb3JlX2dldG9w
dF9jYWxsYmFja19nZW9tZXRyeV9wYXJzZSwgTlVMTCksCisgICAgICAgIEVDT1JFX0dFVE9QVF9T
VE9SRV9TVFIKKyAgICAgICAgICAgICgndCcsICJ0aGVtZSIsICJwYXRoIHRvIHJlYWQgdGhlIHRo
ZW1lIGZpbGUgZnJvbS4iKSwKKyAgICAgICAgRUNPUkVfR0VUT1BUX1NUT1JFX1NUUgorICAgICAg
ICAgICAgKCdVJywgInVzZXItYWdlbnQiLCAiY3VzdG9tIHVzZXIgYWdlbnQgc3RyaW5nIHRvIHVz
ZS4iKSwKKyAgICAgICAgRUNPUkVfR0VUT1BUX1NUT1JFX0RFRl9CT09MCisgICAgICAgICAgICAo
J1MnLCAic3Vkby13b3JrYXJvdW5kIiwgIldvcmthcm91bmQgbW9kZSBmb3IgbWFraW5nIEZsYXNo
IHdvcmsgd2l0aCBzdWRvLiIsIDApLAorICAgICAgICBFQ09SRV9HRVRPUFRfQ09VTlQKKyAgICAg
ICAgICAgICgndicsICJ2ZXJib3NlIiwgImJlIG1vcmUgdmVyYm9zZS4iKSwKKyAgICAgICAgRUNP
UkVfR0VUT1BUX1ZFUlNJT04KKyAgICAgICAgICAgICgnVicsICJ2ZXJzaW9uIiksCisgICAgICAg
IEVDT1JFX0dFVE9QVF9DT1BZUklHSFQKKyAgICAgICAgICAgICgnUicsICJjb3B5cmlnaHQiKSwK
KyAgICAgICAgRUNPUkVfR0VUT1BUX0xJQ0VOU0UKKyAgICAgICAgICAgICgnTCcsICJsaWNlbnNl
IiksCisgICAgICAgIEVDT1JFX0dFVE9QVF9IRUxQCisgICAgICAgICAgICAoJ2gnLCAiaGVscCIp
LAorICAgICAgICBFQ09SRV9HRVRPUFRfU0VOVElORUwKKyAgICB9Cit9OworCit0eXBlZGVmIHN0
cnVjdCBfRUxhdW5jaGVyIHsKKyAgICBFY29yZV9FdmFzICplZTsKKyAgICBFdmFzICpldmFzOwor
ICAgIEV2YXNfT2JqZWN0ICpiZzsKKyAgICBFdmFzX09iamVjdCAqYnJvd3NlcjsKKyAgICBjb25z
dCBjaGFyICp0aGVtZTsKKyAgICBjb25zdCBjaGFyICp1c2VyQWdlbnQ7Cit9IEVMYXVuY2hlcjsK
Kwordm9pZCBicm93c2VyRGVzdHJveShFY29yZV9FdmFzICplZSk7Cit2b2lkIGNsb3NlV2luZG93
KEVjb3JlX0V2YXMgKmVlKTsKK2ludCBicm93c2VyQ3JlYXRlKGNvbnN0IGNoYXIgKnVybCwgY29u
c3QgY2hhciAqdGhlbWUsIGNvbnN0IGNoYXIgKnVzZXJBZ2VudCwgRWluYV9SZWN0YW5nbGUgZ2Vv
bWV0cnksIGNvbnN0IGNoYXIgKmVuZ2luZSwgdW5zaWduZWQgY2hhciBpc0Z1bGxzY3JlZW4pOwor
Cit2b2lkCitwcmludF9oaXN0b3J5KEVpbmFfTGlzdCAqbGlzdCkKK3sKKyAgICBFaW5hX0xpc3Qg
Kmw7CisgICAgdm9pZCAqZDsKKworICAgIGlmICghdmVyYm9zZSkKKyAgICAgICByZXR1cm47CisK
KyAgICBwcmludGYoIlNlc3Npb24gaGlzdG9yeSBjb250YWluczpcbiIpOworCisgICAgRUlOQV9M
SVNUX0ZPUkVBQ0gobGlzdCwgbCwgZCkgeworICAgICAgIEV3a19IaXN0b3J5X0l0ZW0gKml0ZW0g
PSAoRXdrX0hpc3RvcnlfSXRlbSopZDsKKyAgICAgICBjYWlyb19zdXJmYWNlX3QgKmNzID0gZXdr
X2hpc3RvcnlfaXRlbV9pY29uX3N1cmZhY2VfZ2V0KGl0ZW0pOworICAgICAgIGNoYXIgYnVmW1BB
VEhfTUFYXTsKKyAgICAgICBzc2l6ZV90IHMgPSBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAi
L3RtcC9mYXZpY29uLSVzLnBuZyIsIGV3a19oaXN0b3J5X2l0ZW1fdXJpX29yaWdpbmFsX2dldChp
dGVtKSk7CisgICAgICAgZm9yIChzLS07IHMgPj0gc2l6ZW9mKCIvdG1wL2Zhdmljb24tIik7IHMt
LSkgeworICAgICAgICAgICBpZiAoIWlzYWxudW0oYnVmW3NdKSAmJiBidWZbc10gIT0gJy4nKQor
ICAgICAgICAgICAgICAgYnVmW3NdID0gJ18nOworICAgICAgIH0KKyAgICAgICBjcyA9IGV3a19o
aXN0b3J5X2l0ZW1faWNvbl9zdXJmYWNlX2dldChpdGVtKTsKKworICAgICAgIGlmIChjcyAmJiBj
YWlyb19zdXJmYWNlX3N0YXR1cyhjcykgPT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpCisgICAgICAg
ICAgIGNhaXJvX3N1cmZhY2Vfd3JpdGVfdG9fcG5nKGNzLCBidWYpOworICAgICAgIGVsc2UKKyAg
ICAgICAgICAgYnVmWzBdID0gJ1wwJzsKKworICAgICAgIHByaW50ZigiKiAnJXMnIHRpdGxlPScl
cycgaWNvbj0nJXMnXG4iLAorICAgICAgICAgICAgICBld2tfaGlzdG9yeV9pdGVtX3VyaV9vcmln
aW5hbF9nZXQoaXRlbSksCisgICAgICAgICAgICAgIGV3a19oaXN0b3J5X2l0ZW1fdGl0bGVfZ2V0
KGl0ZW0pLCBidWYpOworICAgIH0KK30KKwordm9pZAorem9vbV9sZXZlbF9zZXQoRXZhc19PYmpl
Y3QgKndlYnZpZXcsIGludCBsZXZlbCkKK3sKKyAgICBmbG9hdCBmYWN0b3IgPSAoKGZsb2F0KSB6
b29tTGV2ZWxzW2xldmVsXSkgLyAxMDAuMDsKKyAgICBFdmFzX0Nvb3JkIG94LCBveSwgbXgsIG15
LCBjeCwgY3k7CisgICAgZXZhc19wb2ludGVyX2NhbnZhc194eV9nZXQoZXZhc19vYmplY3RfZXZh
c19nZXQod2VidmlldyksICZteCwgJm15KTsKKyAgICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQo
d2VidmlldywgJm94LCAmb3ksIE5VTEwsIE5VTEwpOworICAgIGN4ID0gbXggLSBveDsKKyAgICBj
eSA9IG15IC0gb3k7CisgICAgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9zZXQod2VidmlldywgZmFj
dG9yLCAwLjUsIGN4LCBjeSk7Cit9CisKK2NoYXIqCitqb2luX3BhdGgoY29uc3QgY2hhciAqYmFz
ZSwgY29uc3QgY2hhciAqcGF0aCkKK3sKKyAgICBjaGFyIHNlcGFyYXRvcltdID0gIi8iOworCisg
ICAgY2hhciB0bXBbUEFUSF9NQVggKyAxXTsKKyAgICBjaGFyIHJlc3VsdFtQQVRIX01BWCArIDFd
OworICAgIHJlc3VsdFswXSA9IHRtcFswXSA9ICdcMCc7CisKKyAgICBjaGFyICpzdHIgPSBzdHJk
dXAocGF0aCk7CisKKyAgICBjaGFyICp0b2tlbiA9IE5VTEw7CisgICAgdG9rZW4gPSBzdHJ0b2so
c3RyLCBzZXBhcmF0b3IpOworICAgIGludCBjb3VudCA9IDA7CisgICAgZG8geworICAgICAgICBp
ZiAoIXN0cmNtcCh0b2tlbiwgIi4uIikpCisgICAgICAgICAgICBjb3VudCsrOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBzdHJjYXQodG1wLCB0b2tlbik7CisgICAgICAgIHRva2VuID0gc3Ry
dG9rKE5VTEwsIHNlcGFyYXRvcik7CisgICAgICAgIGlmICghdG9rZW4pCisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgaWYgKHRtcFswXSkKKyAgICAgICAgICAgIHN0cmNhdCh0bXAsIHNlcGFy
YXRvcik7CisgICAgfSB3aGlsZSAoRUlOQV9UUlVFKTsKKworICAgIGZyZWUoc3RyKTsKKyAgICBz
dHIgPSBzdHJkdXAoYmFzZSk7CisKKyAgICBjaGFyICpiYXNlX3B0cjsKKyAgICB3aGlsZSAoY291
bnQtLSkgeworICAgICAgICBiYXNlX3B0ciA9IHN0cnJjaHIoc3RyLCBzZXBhcmF0b3JbMF0pOwor
ICAgICAgICBpZiAoIWJhc2VfcHRyKSB7CisgICAgICAgICAgICBmcmVlKHN0cik7CisgICAgICAg
ICAgICByZXR1cm4gTlVMTDsgLy8gY291bGRuJ3QgcmVzb2x2ZSBwYXRoCisgICAgICAgIH0KKyAg
ICAgICAgKmJhc2VfcHRyID0gJ1wwJzsKKyAgICB9CisKKyAgICBzdHJjYXQocmVzdWx0LCBzdHIp
OworICAgIHN0cmNhdChyZXN1bHQsIHNlcGFyYXRvcik7CisgICAgc3RyY2F0KHJlc3VsdCwgdG1w
KTsKKyAgICBmcmVlKHN0cik7CisKKyAgICByZXR1cm4gc3RyZHVwKHJlc3VsdCk7Cit9CisKK3N0
YXRpYyB2b2lkCitvbl9lY29yZV9ldmFzX3Jlc2l6ZShFY29yZV9FdmFzICplZSkKK3sKKyAgICBF
dmFzX09iamVjdCAqd2VidmlldzsKKyAgICBFdmFzX09iamVjdCAqYmc7CisgICAgaW50IHcsIGg7
CisKKyAgICBlY29yZV9ldmFzX2dlb21ldHJ5X2dldChlZSwgTlVMTCwgTlVMTCwgJncsICZoKTsK
KworICAgIGJnID0gZXZhc19vYmplY3RfbmFtZV9maW5kKGVjb3JlX2V2YXNfZ2V0KGVlKSwgImJn
Iik7CisgICAgZXZhc19vYmplY3RfbW92ZShiZywgMCwgMCk7CisgICAgZXZhc19vYmplY3RfcmVz
aXplKGJnLCB3LCBoKTsKKworICAgIHdlYnZpZXcgPSBldmFzX29iamVjdF9uYW1lX2ZpbmQoZWNv
cmVfZXZhc19nZXQoZWUpLCAiYnJvd3NlciIpOworICAgIGV2YXNfb2JqZWN0X21vdmUod2Vidmll
dywgMTAsIDEwKTsKKyAgICBldmFzX29iamVjdF9yZXNpemUod2VidmlldywgdyAtIDIwLCBoIC0g
MjApOworfQorCitzdGF0aWMgdm9pZAordGl0bGVfc2V0KEVjb3JlX0V2YXMgKmVlLCBjb25zdCBj
aGFyICp0aXRsZSwgaW50IHByb2dyZXNzKQoreworICAgIGNvbnN0IGNoYXIgKmFwcG5hbWUgPSAi
RUZMIFRlc3QgTGF1bmNoZXIiOworICAgIGNvbnN0IGNoYXIgKnNlcGFyYXRvciA9ICIgLSAiOwor
ICAgIGNoYXIgbGFiZWxbNDA5Nl07CisgICAgaW50IHNpemU7CisKKyAgICBpZiAoIXRpdGxlIHx8
ICFzdHJjbXAodGl0bGUsICIiKSkgeworICAgICAgICBlY29yZV9ldmFzX3RpdGxlX3NldChlZSwg
YXBwbmFtZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAocHJvZ3Jlc3MgPCAx
MDApCisgICAgICAgIHNpemUgPSBzbnByaW50ZihsYWJlbCwgc2l6ZW9mKGxhYmVsKSwgIiVzICgl
ZCUlKSVzJXMiLCB0aXRsZSwgcHJvZ3Jlc3MsIHNlcGFyYXRvciwgYXBwbmFtZSk7CisgICAgZWxz
ZQorICAgICAgICBzaXplID0gc25wcmludGYobGFiZWwsIHNpemVvZihsYWJlbCksICIlcyAlcyVz
IiwgdGl0bGUsIHNlcGFyYXRvciwgYXBwbmFtZSk7CisKKyAgICBpZiAoc2l6ZSA+PSAoaW50KXNp
emVvZihsYWJlbCkpCisgICAgICAgIHJldHVybjsKKworICAgIGVjb3JlX2V2YXNfdGl0bGVfc2V0
KGVlLCBsYWJlbCk7Cit9CisKK3N0YXRpYyB2b2lkCitvbl90aXRsZV9jaGFuZ2VkKHZvaWQgKnVz
ZXJfZGF0YSwgRXZhc19PYmplY3QgKndlYnZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCit7CisgICAg
RUxhdW5jaGVyICphcHAgPSAoRUxhdW5jaGVyICopdXNlcl9kYXRhOworICAgIGNvbnN0IGNoYXIg
KnRpdGxlID0gKGNvbnN0IGNoYXIgKilldmVudF9pbmZvOworCisgICAgdGl0bGVfc2V0KGFwcC0+
ZWUsIHRpdGxlLCAxMDApOworfQorCitzdGF0aWMgdm9pZAorb25fcHJvZ3Jlc3Modm9pZCAqdXNl
cl9kYXRhLCBFdmFzX09iamVjdCAqd2Vidmlldywgdm9pZCAqZXZlbnRfaW5mbykKK3sKKyAgICBF
TGF1bmNoZXIgKmFwcCA9IChFTGF1bmNoZXIgKil1c2VyX2RhdGE7CisgICAgZG91YmxlICpwcm9n
cmVzcyA9IChkb3VibGUgKilldmVudF9pbmZvOworCisgICAgdGl0bGVfc2V0KGFwcC0+ZWUsIGV3
a192aWV3X3RpdGxlX2dldChhcHAtPmJyb3dzZXIpLCAqcHJvZ3Jlc3MgKiAxMDApOworfQorCitz
dGF0aWMgdm9pZAorb25fbG9hZF9maW5pc2hlZCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0
ICp3ZWJ2aWV3LCB2b2lkICpldmVudF9pbmZvKQoreworICAgIGNvbnN0IEV3a19GcmFtZV9Mb2Fk
X0Vycm9yICplcnIgPSAoY29uc3QgRXdrX0ZyYW1lX0xvYWRfRXJyb3IgKilldmVudF9pbmZvOwor
CisgICAgaWYgKCFlcnIpCisgICAgICAgIGluZm8oIlN1Y2NlZWRlZCBsb2FkaW5nIHBhZ2UuXG4i
KTsKKyAgICBlbHNlIGlmIChlcnItPmlzX2NhbmNlbGxhdGlvbikKKyAgICAgICAgaW5mbygiTG9h
ZCB3YXMgY2FuY2VsbGVkLlxuIik7CisgICAgZWxzZQorICAgICAgICBpbmZvKCJGYWlsZWQgbG9h
ZGluZyBwYWdlOiAlZCAlcyBcIiVzXCIsIHVybD0lc1xuIiwKKyAgICAgICAgICAgICBlcnItPmNv
ZGUsIGVyci0+ZG9tYWluLCBlcnItPmRlc2NyaXB0aW9uLCBlcnItPmZhaWxpbmdfdXJsKTsKK30K
Kwordm9pZAorb25fbW91c2VfZG93bih2b2lkICpkYXRhLCBFdmFzICplLCBFdmFzX09iamVjdCAq
d2Vidmlldywgdm9pZCAqZXZlbnRfaW5mbykKK3sKKyAgICBFdmFzX0V2ZW50X01vdXNlX0Rvd24g
KmV2ID0gKEV2YXNfRXZlbnRfTW91c2VfRG93biopIGV2ZW50X2luZm87CisgICAgaWYgKGV2LT5i
dXR0b24gPT0gMikKKyAgICAgICAgZXZhc19vYmplY3RfZm9jdXNfc2V0KHdlYnZpZXcsICFldmFz
X29iamVjdF9mb2N1c19nZXQod2VidmlldykpOworfQorCit2b2lkCitvbl9mb2N1c19vdXQodm9p
ZCAqZGF0YSwgRXZhcyAqZSwgRXZhc19PYmplY3QgKm9iaiwgdm9pZCAqZXZlbnRfaW5mbykKK3sK
KyAgICBpbmZvKCJ0aGUgd2VidmlldyBsb3N0IGtleWJvYXJkIGZvY3VzXG4iKTsKK30KKwordm9p
ZAorb25fZm9jdXNfaW4odm9pZCAqZGF0YSwgRXZhcyAqZSwgRXZhc19PYmplY3QgKm9iaiwgdm9p
ZCAqZXZlbnRfaW5mbykKK3sKKyAgICBpbmZvKCJ0aGUgd2VidmlldyBnYWluZWQga2V5Ym9hcmQg
Zm9jdXNcbiIpOworfQorCit2b2lkCitvbl9yZXNpemVkKHZvaWQgKmRhdGEsIEV2YXMgKmUsIEV2
YXNfT2JqZWN0ICpvYmosIHZvaWQgKmV2ZW50X2luZm8pCit7CisgICAgRXZhc19Db29yZCB3LCBo
OworICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldChvYmosIE5VTEwsIE5VTEwsICZ3LCAmaCk7
CisgICAgZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfc2V0KG9iaiwgdywgaCk7Cit9CisKK3Zv
aWQKK29uX2tleV9kb3duKHZvaWQgKmRhdGEsIEV2YXMgKmUsIEV2YXNfT2JqZWN0ICpvYmosIHZv
aWQgKmV2ZW50X2luZm8pCit7CisgICAgRXZhc19FdmVudF9LZXlfRG93biAqZXYgPSAoRXZhc19F
dmVudF9LZXlfRG93biopIGV2ZW50X2luZm87CisgICAgRUxhdW5jaGVyICphcHAgPSBkYXRhOwor
CisgICAgaWYgKCFzdHJjbXAoZXYtPmtleSwgIkVzY2FwZSIpKSB7CisgICAgICAgIGNsb3NlV2lu
ZG93KGFwcC0+ZWUpOworICAgIH0gZWxzZSBpZiAoIXN0cmNtcChldi0+a2V5LCAiRjEiKSkgewor
ICAgICAgICBpbmZvKCJCYWNrIChGMSkgd2FzIHByZXNzZWRcbiIpOworICAgICAgICBpZiAoZXdr
X3ZpZXdfYmFja19wb3NzaWJsZShvYmopKSB7CisgICAgICAgICAgICBFd2tfSGlzdG9yeSAqaGlz
dG9yeSA9IGV3a192aWV3X2hpc3RvcnlfZ2V0KG9iaik7CisgICAgICAgICAgICBFaW5hX0xpc3Qg
Kmxpc3QgPSBld2tfaGlzdG9yeV9iYWNrX2xpc3RfZ2V0KGhpc3RvcnkpOworICAgICAgICAgICAg
cHJpbnRfaGlzdG9yeShsaXN0KTsKKyAgICAgICAgICAgIGV3a19oaXN0b3J5X2l0ZW1fbGlzdF9m
cmVlKGxpc3QpOworICAgICAgICAgICAgZXdrX3ZpZXdfYmFjayhvYmopOworICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIGluZm8oIkJhY2sgaWdub3JlZDogTm8gYmFjayBoaXN0b3J5XG4iKTsK
KyAgICB9IGVsc2UgaWYgKCFzdHJjbXAoZXYtPmtleSwgIkYyIikpIHsKKyAgICAgICAgaW5mbygi
Rm9yd2FyZCAoRjIpIHdhcyBwcmVzc2VkXG4iKTsKKyAgICAgICAgaWYgKGV3a192aWV3X2Zvcndh
cmRfcG9zc2libGUob2JqKSkgeworICAgICAgICAgICAgRXdrX0hpc3RvcnkgKmhpc3RvcnkgPSBl
d2tfdmlld19oaXN0b3J5X2dldChvYmopOworICAgICAgICAgICAgRWluYV9MaXN0ICpsaXN0ID0g
ZXdrX2hpc3RvcnlfZm9yd2FyZF9saXN0X2dldChoaXN0b3J5KTsKKyAgICAgICAgICAgIHByaW50
X2hpc3RvcnkobGlzdCk7CisgICAgICAgICAgICBld2tfaGlzdG9yeV9pdGVtX2xpc3RfZnJlZShs
aXN0KTsKKyAgICAgICAgICAgIGV3a192aWV3X2ZvcndhcmQob2JqKTsKKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICBpbmZvKCJGb3J3YXJkIGlnbm9yZWQ6IE5vIGZvcndhcmQgaGlzdG9yeVxu
Iik7CisgICAgfSBlbHNlIGlmICghc3RyY21wKGV2LT5rZXksICJGNCIpKSB7CisgICAgICAgIEV2
YXNfT2JqZWN0ICpmcmFtZSA9IGV3a192aWV3X2ZyYW1lX21haW5fZ2V0KG9iaik7CisgICAgICAg
IEV2YXNfQ29vcmQgeCwgeTsKKyAgICAgICAgRXdrX0hpdF9UZXN0ICpodDsKKworICAgICAgICBl
dmFzX3BvaW50ZXJfY2FudmFzX3h5X2dldChldmFzX29iamVjdF9ldmFzX2dldChvYmopLCAmeCwg
JnkpOworICAgICAgICBodCA9IGV3a19mcmFtZV9oaXRfdGVzdF9uZXcoZnJhbWUsIHgsIHkpOwor
ICAgICAgICBpZiAoIWh0KQorICAgICAgICAgICAgcHJpbnRmKCJObyBoaXQgdGVzdCByZXR1cm5l
ZCBmb3IgcG9pbnQgJWQsJWRcbiIsIHgsIHkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IHByaW50ZigiSGl0IHRlc3QgZm9yIHBvaW50ICVkLCVkXG4iCisgICAgICAgICAgICAgICAgICAg
IiAgcG9zPSUzZCwlM2RcbiIKKyAgICAgICAgICAgICAgICAgICAiICBib3VuZGluZ19ib3g9JWQs
JWQgKyAlZHglZFxuIgorICAgICAgICAgICAgICAgICAgICIgIHRpdGxlPSclcydcbiIKKyAgICAg
ICAgICAgICAgICAgICAiICBhbHRlcm5hdGVfdGV4dD0nJXMnXG4iCisgICAgICAgICAgICAgICAg
ICAgIiAgZnJhbWU9JXAgKCVzKVxuIgorICAgICAgICAgICAgICAgICAgICIgIGxpbmsge1xuIgor
ICAgICAgICAgICAgICAgICAgICIgICAgdGV4dD0nJXMnXG4iCisgICAgICAgICAgICAgICAgICAg
IiAgICB1cmw9JyVzJ1xuIgorICAgICAgICAgICAgICAgICAgICIgICAgdGl0bGU9JyVzJ1xuIgor
ICAgICAgICAgICAgICAgICAgICIgICAgdGFyZ2V0IGZyYW1lPSVwICglcylcbiIKKyAgICAgICAg
ICAgICAgICAgICAiICB9XG4iCisgICAgICAgICAgICAgICAgICAgIiAgZmxhZ3Mge1xuIgorICAg
ICAgICAgICAgICAgICAgICIgICAgZWRpdGFibGU9JWhodVxuIgorICAgICAgICAgICAgICAgICAg
ICIgICAgc2VsZWN0ZWQ9JWhodVxuIgorICAgICAgICAgICAgICAgICAgICIgIH1cbiIsCisgICAg
ICAgICAgICAgICAgICAgeCwgeSwKKyAgICAgICAgICAgICAgICAgICBodC0+eCwgaHQtPnksCisg
ICAgICAgICAgICAgICAgICAgaHQtPmJvdW5kaW5nX2JveC54LCBodC0+Ym91bmRpbmdfYm94Lnks
IGh0LT5ib3VuZGluZ19ib3gudywgaHQtPmJvdW5kaW5nX2JveC5oLAorICAgICAgICAgICAgICAg
ICAgIGh0LT50aXRsZSwKKyAgICAgICAgICAgICAgICAgICBodC0+YWx0ZXJuYXRlX3RleHQsCisg
ICAgICAgICAgICAgICAgICAgaHQtPmZyYW1lLCBldmFzX29iamVjdF9uYW1lX2dldChodC0+ZnJh
bWUpLAorICAgICAgICAgICAgICAgICAgIGh0LT5saW5rLnRleHQsCisgICAgICAgICAgICAgICAg
ICAgaHQtPmxpbmsudXJsLAorICAgICAgICAgICAgICAgICAgIGh0LT5saW5rLnRpdGxlLAorICAg
ICAgICAgICAgICAgICAgIGh0LT5saW5rLnRhcmdldF9mcmFtZSwgZXZhc19vYmplY3RfbmFtZV9n
ZXQoaHQtPmxpbmsudGFyZ2V0X2ZyYW1lKSwKKyAgICAgICAgICAgICAgICAgICBodC0+ZmxhZ3Mu
ZWRpdGFibGUsCisgICAgICAgICAgICAgICAgICAgaHQtPmZsYWdzLnNlbGVjdGVkKTsKKyAgICAg
ICAgICAgIGV3a19mcmFtZV9oaXRfdGVzdF9mcmVlKGh0KTsKKyAgICAgICAgfQorCisgICAgfSBl
bHNlIGlmICghc3RyY21wKGV2LT5rZXksICJGNSIpKSB7CisgICAgICAgIGluZm8oIlJlbG9hZCAo
RjUpIHdhcyBwcmVzc2VkLCByZWxvYWRpbmcuXG4iKTsKKyAgICAgICAgZXdrX3ZpZXdfcmVsb2Fk
KG9iaik7CisgICAgfSBlbHNlIGlmICghc3RyY21wKGV2LT5rZXksICJGNiIpKSB7CisgICAgICAg
IGluZm8oIlN0b3AgKEY2KSB3YXMgcHJlc3NlZCwgc3RvcCBsb2FkaW5nLlxuIik7CisgICAgICAg
IGV3a192aWV3X3N0b3Aob2JqKTsKKyAgICAvKiB9IEZJWE1FOiB1bmNvbW1lbnQgY29kZSBiZWxv
dyBhZnRlciBCdWcgMTg2NjIgbGFuZHMgdXBzdHJlYW0uCisgICAgZWxzZSBpZiAoIXN0cmNtcChl
di0+a2V5LCAiRjEyIikpIHsKKyAgICAgICAgYm9vbCBzdGF0dXMgPSBld2tfd2ViZnJhbWVfb2Jq
ZWN0X2tleWJvYXJkX25hdmlnYXRpb25fZ2V0KHBhZ2UpOworICAgICAgICBld2tfd2ViZnJhbWVf
b2JqZWN0X2tleWJvYXJkX25hdmlnYXRpb25fc2V0KHBhZ2UsICFzdGF0dXMpOworICAgICAgICBp
bmZvKCJDb21tYW5kOjprZXlib2FyZCBuYXZpZ2F0aW9uIHRvZ2dsZVxuIik7Ki8KKyAgICB9IGVs
c2UgaWYgKCFzdHJjbXAoZXYtPmtleSwgIkY3IikpIHsKKyAgICAgICAgaW5mbygiWm9vbSBvdXQg
KEY3KSB3YXMgcHJlc3NlZC5cbiIpOworICAgICAgICBpZiAoY3VycmVudFpvb21MZXZlbCA+IE1J
Tl9aT09NX0xFVkVMKQorICAgICAgICAgICAgem9vbV9sZXZlbF9zZXQob2JqLCAtLWN1cnJlbnRa
b29tTGV2ZWwpOworICAgIH0gZWxzZSBpZiAoIXN0cmNtcChldi0+a2V5LCAiRjgiKSkgeworICAg
ICAgICBpbmZvKCJab29tIGluIChGOCkgd2FzIHByZXNzZWQuXG4iKTsKKyAgICAgICAgaWYgKGN1
cnJlbnRab29tTGV2ZWwgPCBNQVhfWk9PTV9MRVZFTCkKKyAgICAgICAgICAgIHpvb21fbGV2ZWxf
c2V0KG9iaiwgKytjdXJyZW50Wm9vbUxldmVsKTsKKyAgICB9IGVsc2UgaWYgKCFzdHJjbXAoZXYt
PmtleSwgIkY5IikpIHsKKyAgICAgICAgaW5mbygiQ3JlYXRlIG5ldyB3aW5kb3cgKEY5KSB3YXMg
cHJlc3NlZC5cbiIpOworICAgICAgICBFaW5hX1JlY3RhbmdsZSBnZW9tZXRyeSA9IHswLCAwLCAw
LCAwfTsKKyAgICAgICAgYnJvd3NlckNyZWF0ZSgiaHR0cDovL3d3dy5nb29nbGUuY29tIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgYXBwLT50aGVtZSwgYXBwLT51c2VyQWdlbnQsIGdlb21ldHJ5
LCBOVUxMLCAwKTsKKyAgICB9IGVsc2UgaWYgKCFzdHJjbXAoZXYtPmtleSwgIkYxMCIpKSB7Cisg
ICAgICAgIEV2YXNfQ29vcmQgeCwgeSwgdywgaDsKKyAgICAgICAgRXZhc19PYmplY3QgKmZyYW1l
ID0gZXdrX3ZpZXdfZnJhbWVfbWFpbl9nZXQob2JqKTsKKyAgICAgICAgZmxvYXQgem9vbSA9IHpv
b21MZXZlbHNbY3VycmVudFpvb21MZXZlbF0gLyAxMDAuMDsKKworICAgICAgICBld2tfZnJhbWVf
dmlzaWJsZV9jb250ZW50X2dlb21ldHJ5X2dldChmcmFtZSwgRUlOQV9GQUxTRSwgJngsICZ5LCAm
dywgJmgpOworICAgICAgICB4IC09IHc7CisgICAgICAgIHkgLT0gaDsKKyAgICAgICAgdyAqPSA0
OworICAgICAgICBoICo9IDQ7CisgICAgICAgIGluZm8oIlByZS1yZW5kZXIgJWQsJWQgKyAlZHgl
ZFxuIiwgeCwgeSwgdywgaCk7CisgICAgICAgIGV3a192aWV3X3ByZV9yZW5kZXJfcmVnaW9uKG9i
aiwgeCwgeSwgdywgaCwgem9vbSk7CisgICAgfQorfQorCit2b2lkCitvbl9icm93c2VyX2RlbCh2
b2lkICpkYXRhLCBFdmFzICpldmFzLCBFdmFzX09iamVjdCAqYnJvd3Nlciwgdm9pZCAqZXZlbnQp
Cit7CisgICAgRUxhdW5jaGVyICphcHAgPSAoRUxhdW5jaGVyKikgZGF0YTsKKworICAgIGV2YXNf
b2JqZWN0X2V2ZW50X2NhbGxiYWNrX2RlbChhcHAtPmJyb3dzZXIsIEVWQVNfQ0FMTEJBQ0tfS0VZ
X0RPV04sIG9uX2tleV9kb3duKTsKKyAgICBldmFzX29iamVjdF9ldmVudF9jYWxsYmFja19kZWwo
YXBwLT5icm93c2VyLCBFVkFTX0NBTExCQUNLX01PVVNFX0RPV04sIG9uX21vdXNlX2Rvd24pOwor
ICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2RlbChhcHAtPmJyb3dzZXIsIEVWQVNfQ0FM
TEJBQ0tfRk9DVVNfSU4sIG9uX2ZvY3VzX2luKTsKKyAgICBldmFzX29iamVjdF9ldmVudF9jYWxs
YmFja19kZWwoYXBwLT5icm93c2VyLCBFVkFTX0NBTExCQUNLX0ZPQ1VTX09VVCwgb25fZm9jdXNf
b3V0KTsKKyAgICBldmFzX29iamVjdF9ldmVudF9jYWxsYmFja19kZWwoYXBwLT5icm93c2VyLCBF
VkFTX0NBTExCQUNLX0RFTCwgb25fYnJvd3Nlcl9kZWwpOworfQorCit2b2lkCitvbl9jbG9zZVdp
bmRvdyhFY29yZV9FdmFzICplZSkKK3sKKyAgICBicm93c2VyRGVzdHJveShlZSk7Cit9CisKK2lu
dAorcXVpdChFaW5hX0Jvb2wgc3VjY2VzcywgY29uc3QgY2hhciAqbXNnKQoreworICAgIGVkamVf
c2h1dGRvd24oKTsKKyAgICBlY29yZV9ldmFzX3NodXRkb3duKCk7CisKKyAgICBpZiAobXNnKQor
ICAgICAgICBmcHV0cyhtc2csIChzdWNjZXNzKSA/IHN0ZG91dCA6IHN0ZGVycik7CisKKyAgICBm
cmVlKHRoZW1lUGF0aCk7CisKKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIHJldHVybiBFWElU
X0ZBSUxVUkU7CisKKyAgICByZXR1cm4gRVhJVF9TVUNDRVNTOworfQorCitpbnQKK2Jyb3dzZXJD
cmVhdGUoY29uc3QgY2hhciAqdXJsLCBjb25zdCBjaGFyICp0aGVtZSwgY29uc3QgY2hhciAqdXNl
ckFnZW50LCBFaW5hX1JlY3RhbmdsZSBnZW9tZXRyeSwgY29uc3QgY2hhciAqZW5naW5lLCB1bnNp
Z25lZCBjaGFyIGlzRnVsbHNjcmVlbikKK3sKKyAgICBpZiAoKGdlb21ldHJ5LncgPD0gMCkgJiYg
KGdlb21ldHJ5LmggPD0gMCkpIHsKKyAgICAgICAgZ2VvbWV0cnkudyA9IERFRkFVTFRfV0lEVEg7
CisgICAgICAgIGdlb21ldHJ5LmggPSBERUZBVUxUX0hFSUdIVDsKKyAgICB9CisKKyAgICBFTGF1
bmNoZXIgKmFwcCA9IChFTGF1bmNoZXIqKSBtYWxsb2Moc2l6ZW9mKEVMYXVuY2hlcikpOworICAg
IGlmICghYXBwKQorICAgICAgICByZXR1cm4gcXVpdChFSU5BX0ZBTFNFLCAiRVJST1I6IGNvdWxk
IG5vdCBjcmVhdGUgRVdlYkxhdW5jaGVyIHdpbmRvd1xuIik7CisKKyAgICBhcHAtPmVlID0gZWNv
cmVfZXZhc19uZXcoZW5naW5lLCAwLCAwLCBnZW9tZXRyeS53LCBnZW9tZXRyeS5oLCBOVUxMKTsK
KworICAgIGlmICghYXBwLT5lZSkKKyAgICAgICAgcmV0dXJuIHF1aXQoRUlOQV9GQUxTRSwgIkVS
Uk9SOiBjb3VsZCBub3QgY29uc3RydWN0IGV2YXMtZWNvcmVcbiIpOworCisgICAgaWYgKGlzRnVs
bHNjcmVlbikKKyAgICAgICAgZWNvcmVfZXZhc19mdWxsc2NyZWVuX3NldChhcHAtPmVlLCBFSU5B
X1RSVUUpOworCisgICAgZWNvcmVfZXZhc190aXRsZV9zZXQoYXBwLT5lZSwgIkVGTCBUZXN0IExh
dW5jaGVyIik7CisgICAgZWNvcmVfZXZhc19jYWxsYmFja19yZXNpemVfc2V0KGFwcC0+ZWUsIG9u
X2Vjb3JlX2V2YXNfcmVzaXplKTsKKyAgICBlY29yZV9ldmFzX2NhbGxiYWNrX2RlbGV0ZV9yZXF1
ZXN0X3NldChhcHAtPmVlLCBjbG9zZVdpbmRvdyk7CisKKyAgICBhcHAtPmV2YXMgPSBlY29yZV9l
dmFzX2dldChhcHAtPmVlKTsKKworICAgIGlmICghYXBwLT5ldmFzKQorICAgICAgICByZXR1cm4g
cXVpdChFSU5BX0ZBTFNFLCAiRVJST1I6IGNvdWxkIG5vdCBnZXQgZXZhcyBmcm9tIGV2YXMtZWNv
cmVcbiIpOworCisgICAgaWYgKCF0aGVtZSkKKyAgICAgICAgdGhlbWUgPSB0aGVtZVBhdGg7CisK
KyAgICBhcHAtPnRoZW1lID0gdGhlbWU7CisgICAgYXBwLT51c2VyQWdlbnQgPSB1c2VyQWdlbnQ7
CisKKyAgICBhcHAtPmJnID0gZXZhc19vYmplY3RfcmVjdGFuZ2xlX2FkZChhcHAtPmV2YXMpOwor
ICAgIGV2YXNfb2JqZWN0X25hbWVfc2V0KGFwcC0+YmcsICJiZyIpOworICAgIGV2YXNfb2JqZWN0
X2NvbG9yX3NldChhcHAtPmJnLCAyNTUsIDAsIDI1NSwgMjU1KTsKKyAgICBldmFzX29iamVjdF9t
b3ZlKGFwcC0+YmcsIDAsIDApOworICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShhcHAtPmJnLCBnZW9t
ZXRyeS53LCBnZW9tZXRyeS5oKTsKKyAgICBldmFzX29iamVjdF9sYXllcl9zZXQoYXBwLT5iZywg
RVZBU19MQVlFUl9NSU4pOworICAgIGV2YXNfb2JqZWN0X3Nob3coYXBwLT5iZyk7CisgICAgYXBw
LT5icm93c2VyID0gZXdrX3ZpZXdfc2luZ2xlX2FkZChhcHAtPmV2YXMpOworCisgICAgZXdrX3Zp
ZXdfdGhlbWVfc2V0KGFwcC0+YnJvd3NlciwgdGhlbWUpOworICAgIGlmICh1c2VyQWdlbnQpCisg
ICAgICAgIGV3a192aWV3X3NldHRpbmdfdXNlcl9hZ2VudF9zZXQoYXBwLT5icm93c2VyLCB1c2Vy
QWdlbnQpOworICAgIGV2YXNfb2JqZWN0X25hbWVfc2V0KGFwcC0+YnJvd3NlciwgImJyb3dzZXIi
KTsKKworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHAtPmJyb3dzZXIsICJ0
aXRsZSxjaGFuZ2VkIiwgb25fdGl0bGVfY2hhbmdlZCwgYXBwKTsKKyAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19hZGQoYXBwLT5icm93c2VyLCAibG9hZCxwcm9ncmVzcyIsIG9uX3Byb2dy
ZXNzLCBhcHApOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHAtPmJyb3dz
ZXIsICJsb2FkLGZpbmlzaGVkIiwgb25fbG9hZF9maW5pc2hlZCwgYXBwKTsKKworICAgIGV2YXNf
b2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZChhcHAtPmJyb3dzZXIsIEVWQVNfQ0FMTEJBQ0tfUkVT
SVpFLCBvbl9yZXNpemVkLCBhcHApOworICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2Fk
ZChhcHAtPmJyb3dzZXIsIEVWQVNfQ0FMTEJBQ0tfS0VZX0RPV04sIG9uX2tleV9kb3duLCBhcHAp
OworICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZChhcHAtPmJyb3dzZXIsIEVWQVNf
Q0FMTEJBQ0tfTU9VU0VfRE9XTiwgb25fbW91c2VfZG93biwgYXBwKTsKKyAgICBldmFzX29iamVj
dF9ldmVudF9jYWxsYmFja19hZGQoYXBwLT5icm93c2VyLCBFVkFTX0NBTExCQUNLX0ZPQ1VTX0lO
LCBvbl9mb2N1c19pbiwgYXBwKTsKKyAgICBldmFzX29iamVjdF9ldmVudF9jYWxsYmFja19hZGQo
YXBwLT5icm93c2VyLCBFVkFTX0NBTExCQUNLX0ZPQ1VTX09VVCwgb25fZm9jdXNfb3V0LCBhcHAp
OworICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZChhcHAtPmJyb3dzZXIsIEVWQVNf
Q0FMTEJBQ0tfREVMLCBvbl9icm93c2VyX2RlbCwgYXBwKTsKKworICAgIGV2YXNfb2JqZWN0X21v
dmUoYXBwLT5icm93c2VyLCAxMCwgMTApOworICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShhcHAtPmJy
b3dzZXIsIGdlb21ldHJ5LncgLSAyMCwgZ2VvbWV0cnkuaCAtIDIwKTsKKworICAgIGlmICh1cmwg
JiYgKHVybFswXSAhPSAnXDAnKSkKKyAgICAgICAgZXdrX3ZpZXdfdXJpX3NldChhcHAtPmJyb3dz
ZXIsIHVybCk7CisKKyAgICBldmFzX29iamVjdF9zaG93KGFwcC0+YnJvd3Nlcik7CisgICAgZWNv
cmVfZXZhc19zaG93KGFwcC0+ZWUpOworCisgICAgZXZhc19vYmplY3RfZm9jdXNfc2V0KGFwcC0+
YnJvd3NlciwgRUlOQV9UUlVFKTsKKyAgICBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9wbHVnaW5z
X3NldChhcHAtPmJyb3dzZXIsIEVJTkFfRkFMU0UpOworCisgICAgd2luZG93cyA9IGVpbmFfbGlz
dF9hcHBlbmQod2luZG93cywgYXBwKTsKKworICAgIHJldHVybiAxOworfQorCit2b2lkCiticm93
c2VyRGVzdHJveShFY29yZV9FdmFzICplZSkKK3sKKyAgICBlY29yZV9ldmFzX2ZyZWUoZWUpOwor
ICAgIGlmICghZWluYV9saXN0X2NvdW50KHdpbmRvd3MpKQorICAgICAgICBlY29yZV9tYWluX2xv
b3BfcXVpdCgpOworfQorCit2b2lkCitjbG9zZVdpbmRvdyhFY29yZV9FdmFzICplZSkKK3sKKyAg
ICBFaW5hX0xpc3QgKmw7CisgICAgdm9pZCAqYXBwOworICAgIEVJTkFfTElTVF9GT1JFQUNIKHdp
bmRvd3MsIGwsIGFwcCkKKyAgICB7CisgICAgICAgIGlmICgoKEVMYXVuY2hlciopIGFwcCktPmVl
ID09IGVlKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHdpbmRvd3MgPSBlaW5hX2xp
c3RfcmVtb3ZlKHdpbmRvd3MsIGFwcCk7CisgICAgYnJvd3NlckRlc3Ryb3koZWUpOworICAgIGZy
ZWUoYXBwKTsKK30KKworc3RhdGljIGludAorbWFpbl9zaWduYWxfZXhpdCh2b2lkICpkYXRhLCBp
bnQgZXZfdHlwZSwgdm9pZCAqZXYpCit7CisgICAgRUxhdW5jaGVyICphcHA7CisgICAgd2hpbGUg
KHdpbmRvd3MpIHsKKyAgICAgICAgYXBwID0gKEVMYXVuY2hlciopIGVpbmFfbGlzdF9kYXRhX2dl
dCh3aW5kb3dzKTsKKyAgICAgICAgZWNvcmVfZXZhc19mcmVlKGFwcC0+ZWUpOworICAgICAgICB3
aW5kb3dzID0gZWluYV9saXN0X3JlbW92ZSh3aW5kb3dzLCBhcHApOworICAgIH0KKyAgICBpZiAo
IWVpbmFfbGlzdF9jb3VudCh3aW5kb3dzKSkKKyAgICAgICAgZWNvcmVfbWFpbl9sb29wX3F1aXQo
KTsKKyAgICByZXR1cm4gMTsKK30KKworaW50CittYWluKGludCBhcmdjLCBjaGFyICphcmd2W10p
Cit7CisgICAgY29uc3QgY2hhciAqZGVmYXVsdF91cmwgPSAiaHR0cDovL3d3dy5nb29nbGUuY29t
LyI7CisKKyAgICBFaW5hX1JlY3RhbmdsZSBnZW9tZXRyeSA9IHswLCAwLCAwLCAwfTsKKyAgICBj
aGFyICp1cmwgPSBOVUxMOworICAgIGNoYXIgKnVzZXJBZ2VudCA9IE5VTEw7CisgICAgY2hhciAq
dG1wOworICAgIGNoYXIgcGF0aFtQQVRIX01BWF07CisKKyAgICBjaGFyICplbmdpbmUgPSBOVUxM
OworICAgIGNoYXIgKnRoZW1lID0gTlVMTDsKKworICAgIHVuc2lnbmVkIGNoYXIgcXVpdE9wdGlv
biA9IDA7CisgICAgdW5zaWduZWQgY2hhciBpc0Z1bGxzY3JlZW4gPSAwOworICAgIHVuc2lnbmVk
IGNoYXIgc3Vkb1dvcmthcm91bmQgPSAwOworICAgIGludCBhcmdzOworCisgICAgRWNvcmVfR2V0
b3B0X1ZhbHVlIHZhbHVlc1tdID0geworICAgICAgICBFQ09SRV9HRVRPUFRfVkFMVUVfU1RSKGVu
Z2luZSksCisgICAgICAgIEVDT1JFX0dFVE9QVF9WQUxVRV9CT09MKHF1aXRPcHRpb24pLAorICAg
ICAgICBFQ09SRV9HRVRPUFRfVkFMVUVfQk9PTChpc0Z1bGxzY3JlZW4pLAorICAgICAgICBFQ09S
RV9HRVRPUFRfVkFMVUVfUFRSX0NBU1QoZ2VvbWV0cnkpLAorICAgICAgICBFQ09SRV9HRVRPUFRf
VkFMVUVfU1RSKHRoZW1lKSwKKyAgICAgICAgRUNPUkVfR0VUT1BUX1ZBTFVFX1NUUih1c2VyQWdl
bnQpLAorICAgICAgICBFQ09SRV9HRVRPUFRfVkFMVUVfQk9PTChzdWRvV29ya2Fyb3VuZCksCisg
ICAgICAgIEVDT1JFX0dFVE9QVF9WQUxVRV9JTlQodmVyYm9zZSksCisgICAgICAgIEVDT1JFX0dF
VE9QVF9WQUxVRV9CT09MKHF1aXRPcHRpb24pLAorICAgICAgICBFQ09SRV9HRVRPUFRfVkFMVUVf
Qk9PTChxdWl0T3B0aW9uKSwKKyAgICAgICAgRUNPUkVfR0VUT1BUX1ZBTFVFX0JPT0wocXVpdE9w
dGlvbiksCisgICAgICAgIEVDT1JFX0dFVE9QVF9WQUxVRV9CT09MKHF1aXRPcHRpb24pLAorICAg
ICAgICBFQ09SRV9HRVRPUFRfVkFMVUVfTk9ORQorICAgIH07CisKKyAgICBpZiAoIWVjb3JlX2V2
YXNfaW5pdCgpKQorICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworCisgICAgaWYgKCFlZGpl
X2luaXQoKSkgeworICAgICAgICBlY29yZV9ldmFzX3NodXRkb3duKCk7CisgICAgICAgIHJldHVy
biBFWElUX0ZBSUxVUkU7CisgICAgfQorCisgICAgZWNvcmVfYXBwX2FyZ3Nfc2V0KGFyZ2MsIChj
b25zdCBjaGFyKiopIGFyZ3YpOworICAgIGFyZ3MgPSBlY29yZV9nZXRvcHRfcGFyc2UoJm9wdGlv
bnMsIHZhbHVlcywgYXJnYywgYXJndik7CisKKyAgICBpZiAoYXJncyA8IDApCisgICAgICAgcmV0
dXJuIHF1aXQoRUlOQV9GQUxTRSwgIkVSUk9SOiBjb3VsZCBub3QgcGFyc2Ugb3B0aW9ucy5cbiIp
OworCisgICAgaWYgKHF1aXRPcHRpb24pCisgICAgICAgIHJldHVybiBxdWl0KEVJTkFfVFJVRSwg
TlVMTCk7CisKKyAgICBpZiAoYXJncyA8IGFyZ2MpCisgICAgICAgIHVybCA9IGFyZ3ZbYXJnc107
CisgICAgZWxzZQorICAgICAgICB1cmwgPSAoY2hhciopIGRlZmF1bHRfdXJsOworCisgICAgaWYg
KHN1ZG9Xb3JrYXJvdW5kKQorICAgICAgICBzdHJjYXQoZ2V0ZW52KCJIT01FIiksICJibGFoIik7
CisKKyAgICB0aGVtZVBhdGggPSBqb2luX3BhdGgoYXJndlswXSwgUkVMX1RIRU1FX1BBVEgpOwor
CisgICAgZXdrX2luaXQoKTsKKyAgICB0bXAgPSBnZXRlbnYoIlRNUERJUiIpOworICAgIGlmICgh
dG1wKQorICAgICAgICB0bXAgPSAiL3RtcCI7CisgICAgc25wcmludGYocGF0aCwgc2l6ZW9mKHBh
dGgpLCAiJXMvLmV3ZWJraXQtJXUiLCB0bXAsIGdldHVpZCgpKTsKKyAgICBlY29yZV9maWxlX21r
cGF0aChwYXRoKTsKKyAgICBld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9wYXRoX3NldChwYXRo
KTsKKworICAgIGJyb3dzZXJDcmVhdGUodXJsLCB0aGVtZSwgdXNlckFnZW50LCBnZW9tZXRyeSwg
ZW5naW5lLCBpc0Z1bGxzY3JlZW4pOworICAgIGVjb3JlX2V2ZW50X2hhbmRsZXJfYWRkKEVDT1JF
X0VWRU5UX1NJR05BTF9FWElULCBtYWluX3NpZ25hbF9leGl0LCAmd2luZG93cyk7CisKKyAgICBl
Y29yZV9tYWluX2xvb3BfYmVnaW4oKTsKKworICAgIGV3a19zaHV0ZG93bigpOworCisgICAgcmV0
dXJuIHF1aXQoRUlOQV9UUlVFLCBOVUxMKTsKK30KZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcCBiL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li45NWY3ZDYxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRFZmwuY3BwCkBAIC0wLDAgKzEsMzkzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA2IFphY2sgUnVzaW4gPHphY2tAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBB
cHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOCBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbgorICogQ29weXJpZ2h0IChDKSAyMDA4
IERpZWdvIEdvbnphbGV6CisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1i
ZWRkZWQgc3lzdGVtcworICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJv
bmljcworICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50RWZsLmgiCisKKyNpbmNsdWRlICJDU3RyaW5n
LmgiCisjaW5jbHVkZSAiRVdlYktpdC5oIgorI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCisjaW5j
bHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJG
cmFtZUxvYWRlckNsaWVudEVmbC5oIgorI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKKyNpbmNs
dWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJXaW5kb3dGZWF0
dXJlcy5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RhdGljIGlubGluZSBFdmFz
X09iamVjdCoga2l0KFdlYkNvcmU6OkZyYW1lKiBmcmFtZSkKK3sKKyAgICBpZiAoIWZyYW1lKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIEZyYW1lTG9hZGVyQ2xpZW50RWZsKiBjbGllbnQgPSBz
dGF0aWNfY2FzdDxGcmFtZUxvYWRlckNsaWVudEVmbCo+KGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50
KCkpOworICAgIHJldHVybiBjbGllbnQgPyBjbGllbnQtPndlYkZyYW1lKCkgOiAwOworfQorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0Nocm9tZUNsaWVudEVmbDo6Q2hyb21lQ2xpZW50RWZsKEV2
YXNfT2JqZWN0ICp2aWV3KQorICAgIDogbV92aWV3KHZpZXcpCit7Cit9CisKK0Nocm9tZUNsaWVu
dEVmbDo6fkNocm9tZUNsaWVudEVmbCgpCit7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50RWZsOjpj
aHJvbWVEZXN0cm95ZWQoKQoreworICAgIGRlbGV0ZSB0aGlzOworfQorCit2b2lkIENocm9tZUNs
aWVudEVmbDo6Zm9jdXNlZE5vZGVDaGFuZ2VkKE5vZGUqKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK0Zsb2F0UmVjdCBDaHJvbWVDbGllbnRFZmw6OndpbmRvd1JlY3QoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEZsb2F0UmVjdCgpOworICAgIC8vIGluIGd0
ayBpdCdzIG5vdGhpbmcgbGlrZSB0aGlzCisgICAgLy8gRXZhc19Db29yZCB4LCB5LCB3LCBoOwor
ICAgIC8vIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldChtX3ZpZXcsICZ4LCAmeSwgJncsICZoKTsK
KyAgICAvLyByZXR1cm4gRmxvYXRSZWN0KHgsIHksIHcsIGgpOworfQorCit2b2lkIENocm9tZUNs
aWVudEVmbDo6c2V0V2luZG93UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICAvLyBpbiBndGsgaXQncyBub3RoaW5nIGxpa2UgdGhpcworICAg
IC8vIGV2YXNfb2JqZWN0X21vdmUobV92aWV3LCByZWN0LngoKSwgcmVjdC55KCkpOworICAgIC8v
IGV2YXNfb2JqZWN0X3Jlc2l6ZShtX3ZpZXcsIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7
Cit9CisKK0Zsb2F0UmVjdCBDaHJvbWVDbGllbnRFZmw6OnBhZ2VSZWN0KCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBGbG9hdFJlY3QoKTsKKyAgICAvLyBpZiAoIW1fd2Vi
UGFnZSkKKyAgICAvLyAgICByZXR1cm4gRmxvYXRSZWN0KCk7CisgICAgLy8gSW50U2l6ZSBzaXpl
ID0gbV93ZWJQYWdlLT52aWV3cG9ydFNpemUoKTsKKyAgICAvLyByZXR1cm4gRmxvYXRSZWN0KDAs
IDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Cit9CisKK2Zsb2F0IENocm9tZUNsaWVu
dEVmbDo6c2NhbGVGYWN0b3IoKQoreworICAgIC8vIEZJWE1FIEVGTAorICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIDEuMDsKK30KKwordm9pZCBDaHJvbWVDbGllbnRFZmw6OmZvY3Vz
KCkKK3sKKyAgICBldmFzX29iamVjdF9mb2N1c19zZXQobV92aWV3LCBFSU5BX1RSVUUpOworfQor
Cit2b2lkIENocm9tZUNsaWVudEVmbDo6dW5mb2N1cygpCit7CisgICAgZXZhc19vYmplY3RfZm9j
dXNfc2V0KG1fdmlldywgRUlOQV9GQUxTRSk7Cit9CisKK1BhZ2UqIENocm9tZUNsaWVudEVmbDo6
Y3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50RWZsOjpzaG93KCkKK3sKKyAgICBl
d2tfdmlld19yZWFkeShtX3ZpZXcpOworfQorCitib29sIENocm9tZUNsaWVudEVmbDo6Y2FuUnVu
TW9kYWwoKQoreworICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBpbiBRdCBlaXRoZXIKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRF
Zmw6OnJ1bk1vZGFsKCkKK3sKKyAgICAvLyBOb3QgaW1wbGVtZW50ZWQgaW4gUXQgZWl0aGVyCisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRFZmw6OnNldFRvb2xi
YXJzVmlzaWJsZShib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgQ2hy
b21lQ2xpZW50RWZsOjp0b29sYmFyc1Zpc2libGUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIENocm9tZUNsaWVudEVmbDo6c2V0U3RhdHVz
YmFyVmlzaWJsZShib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgQ2hy
b21lQ2xpZW50RWZsOjpzdGF0dXNiYXJWaXNpYmxlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRFZmw6OnNldFNjcm9s
bGJhcnNWaXNpYmxlKGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBD
aHJvbWVDbGllbnRFZmw6OnNjcm9sbGJhcnNWaXNpYmxlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRFZmw6OnNldE1l
bnViYXJWaXNpYmxlKGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBD
aHJvbWVDbGllbnRFZmw6Om1lbnViYXJWaXNpYmxlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRFZmw6OnNldFJlc2l6
YWJsZShib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQ2hyb21lQ2xp
ZW50RWZsOjpjbG9zZVdpbmRvd1Nvb24oKQoreworICAgIGV3a192aWV3X3N0b3AobV92aWV3KTsK
K30KKworYm9vbCBDaHJvbWVDbGllbnRFZmw6OmNhblRha2VGb2N1cyhGb2N1c0RpcmVjdGlvbikK
K3sKKyAgICAvLyBUaGlzIGlzIGNhbGxlZCB3aGVuIGN5Y2xpbmcgdGhyb3VnaCBsaW5rcy9mb2N1
c2FibGUgb2JqZWN0cyBhbmQgd2UKKyAgICAvLyByZWFjaCB0aGUgbGFzdCBmb2N1c2FibGUgb2Jq
ZWN0LgorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRFZmw6OnRha2VG
b2N1cyhGb2N1c0RpcmVjdGlvbikKK3sKKyAgICB1bmZvY3VzKCk7Cit9CisKK2Jvb2wgQ2hyb21l
Q2xpZW50RWZsOjpjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKQoreworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIENocm9tZUNsaWVudEVmbDo6cnVuQmVmb3JlVW5sb2FkQ29uZmly
bVBhbmVsKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgV2ViQ29yZTo6RnJhbWUqIGZyYW1lKQorewor
ICAgIHJldHVybiBydW5KYXZhU2NyaXB0Q29uZmlybShmcmFtZSwgbWVzc2FnZSk7Cit9CisKK3Zv
aWQgQ2hyb21lQ2xpZW50RWZsOjphZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2UsIE1l
c3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsaW5lTnVtYmVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgQ2hyb21lQ2xpZW50RWZsOjpydW5KYXZhU2NyaXB0QWxlcnQoRnJhbWUqIGZyYW1lLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9v
bCBDaHJvbWVDbGllbnRFZmw6OnJ1bkphdmFTY3JpcHRDb25maXJtKEZyYW1lKiBmcmFtZSwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIENocm9tZUNsaWVudEVmbDo6cnVuSmF2YVNjcmlwdFByb21wdChG
cmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0
VmFsdWUsIFN0cmluZyYgcmVzdWx0KQoreworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBD
aHJvbWVDbGllbnRFZmw6OnNldFN0YXR1c2JhclRleHQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBDaHJvbWVDbGllbnRFZmw6OnNob3Vs
ZEludGVycnVwdEphdmFTY3JpcHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIENocm9tZUNsaWVudEVmbDo6dGFic1RvTGlua3MoKSBjb25z
dAoreworICAgIHJldHVybiB0cnVlOworfQorCitJbnRSZWN0IENocm9tZUNsaWVudEVmbDo6d2lu
ZG93UmVzaXplclJlY3QoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgLy8g
SW1wbGVtZW50aW5nIHRoaXMgZnVuY3Rpb24gd2lsbCBtYWtlIHJlcGFpbnQgYmVpbmcKKyAgICAv
LyBjYWxsZWQgZHVyaW5nIHJlc2l6ZSwgYnV0IGFzIHRoaXMgd2lsbCBiZSBkb25lIHdpdGgKKyAg
ICAvLyBhIG1pbm9yIGRlbGF5IGl0IGFkZHMgYSB3ZWlyZCAiZmlsbGluZyIgZWZmZWN0IGR1ZQor
ICAgIC8vIHRvIHVzIHVzaW5nIGFuIGV2YXMgaW1hZ2UgZm9yIHNob3dpbmcgdGhlIGNhaXJvCisg
ICAgLy8gY29udGV4dC4gU28gaW5zdGVhZCBvZiBpbXBsZW1lbnRpbmcgdGhpcyBmdW5jdGlvbgor
ICAgIC8vIHdlIGNhbGwgcGFpbnQgZGlyZWN0bHkgZHVyaW5nIHJlc2l6ZSB3aXRoCisgICAgLy8g
dGhlIG5ldyBvYmplY3Qgc2l6ZSBhcyBpdHMgYXJndW1lbnQuCisgICAgcmV0dXJuIEludFJlY3Qo
KTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRFZmw6OnJlcGFpbnQoY29uc3QgSW50UmVjdCYgd2lu
ZG93UmVjdCwgYm9vbCBjb250ZW50Q2hhbmdlZCwgYm9vbCBpbW1lZGlhdGUsIGJvb2wgcmVwYWlu
dENvbnRlbnRPbmx5KQoreworICAgIEV2YXNfQ29vcmQgeCwgeSwgdywgaDsKKworICAgIGlmICgh
Y29udGVudENoYW5nZWQpCisgICAgICAgIHJldHVybjsKKworICAgIHggPSB3aW5kb3dSZWN0Lngo
KTsKKyAgICB5ID0gd2luZG93UmVjdC55KCk7CisgICAgdyA9IHdpbmRvd1JlY3Qud2lkdGgoKTsK
KyAgICBoID0gd2luZG93UmVjdC5oZWlnaHQoKTsKKyAgICBld2tfdmlld19yZXBhaW50KG1fdmll
dywgeCwgeSwgdywgaCk7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50RWZsOjpjb250ZW50c1NpemVD
aGFuZ2VkKEZyYW1lKiBmcmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkgY29uc3QKK3sKKyAgICBl
d2tfZnJhbWVfY29udGVudHNfc2l6ZV9jaGFuZ2VkKGtpdChmcmFtZSksIHNpemUud2lkdGgoKSwg
c2l6ZS5oZWlnaHQoKSk7Cit9CisKK2Jvb2wgQ2hyb21lQ2xpZW50RWZsOjpzY3JvbGwoY29uc3Qg
SW50U2l6ZSYgZGVsdGEsIGNvbnN0IEludFJlY3QmIHNjcm9sbFZpZXdSZWN0LCBjb25zdCBJbnRS
ZWN0JiBjbGlwUmVjdCwgYm9vbCBjYW5CbGl0KQoreworICAgIGV3a192aWV3X3Njcm9sbChtX3Zp
ZXcsIGRlbHRhLndpZHRoKCksIGRlbHRhLmhlaWdodCgpLCBzY3JvbGxWaWV3UmVjdC54KCksIHNj
cm9sbFZpZXdSZWN0LnkoKSwgc2Nyb2xsVmlld1JlY3Qud2lkdGgoKSwgc2Nyb2xsVmlld1JlY3Qu
aGVpZ2h0KCksIGNsaXBSZWN0LngoKSwgY2xpcFJlY3QueSgpLCBjbGlwUmVjdC53aWR0aCgpLCBj
bGlwUmVjdC5oZWlnaHQoKSk7CisgICAgcmV0dXJuIGNhbkJsaXQ7Cit9CisKK3ZvaWQgQ2hyb21l
Q2xpZW50RWZsOjpzY3JvbGwoY29uc3QgSW50U2l6ZSYgZGVsdGEsIGNvbnN0IEludFJlY3QmIHNj
cm9sbFZpZXdSZWN0LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKK3sKKyAgICBld2tfdmlld19z
Y3JvbGwobV92aWV3LCBkZWx0YS53aWR0aCgpLCBkZWx0YS5oZWlnaHQoKSwgc2Nyb2xsVmlld1Jl
Y3QueCgpLCBzY3JvbGxWaWV3UmVjdC55KCksIHNjcm9sbFZpZXdSZWN0LndpZHRoKCksIHNjcm9s
bFZpZXdSZWN0LmhlaWdodCgpLCBjbGlwUmVjdC54KCksIGNsaXBSZWN0LnkoKSwgY2xpcFJlY3Qu
d2lkdGgoKSwgY2xpcFJlY3QuaGVpZ2h0KCkpOworfQorCitJbnRSZWN0IENocm9tZUNsaWVudEVm
bDo6d2luZG93VG9TY3JlZW4oY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3QKK3sKKyAgICAvLyBO
b3QgaW1wbGVtZW50ZWQgaW4gUXQgZWl0aGVyCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gcmVjdDsKK30KKworSW50UG9pbnQgQ2hyb21lQ2xpZW50RWZsOjpzY3JlZW5Ub1dpbmRv
dyhjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0Cit7CisgICAgLy8gTm90IGltcGxlbWVudGVk
IGluIFF0IGVpdGhlcgorICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHBvaW50Owor
fQorCitQbGF0Zm9ybVBhZ2VDbGllbnQgQ2hyb21lQ2xpZW50RWZsOjpwbGF0Zm9ybVBhZ2VDbGll
bnQoKSBjb25zdAoreworICAgIHJldHVybiBtX3ZpZXc7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50
RWZsOjpzY3JvbGxiYXJzTW9kZURpZENoYW5nZSgpIGNvbnN0Cit7Cit9CisKK3ZvaWQgQ2hyb21l
Q2xpZW50RWZsOjptb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiBo
aXQsIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MpCit7CisgICAgLy8gRklYTUUsIGNvbXBhcmUgd2l0
aCBvbGQgbGluaywgbG9vayBhdCBRdCBpbXBsLgorCisgICAgYm9vbCBpc0xpbmsgPSBoaXQuaXNM
aXZlTGluaygpOworICAgIGlmIChpc0xpbmspIHsKKyAgICAgICAgS1VSTCB1cmwgPSBoaXQuYWJz
b2x1dGVMaW5rVVJMKCk7CisgICAgICAgIGlmICghdXJsLmlzRW1wdHkoKSAmJiB1cmwgIT0gbV9o
b3ZlcmVkTGlua1VSTCkgeworICAgICAgICAgICAgLy8gRklYTUUgRUZMCisgICAgICAgICAgICAv
LyBDU3RyaW5nIHRpdGxlU3RyaW5nID0gaGl0LnRpdGxlKCk7CisgICAgICAgICAgICBDU3RyaW5n
IHVybFN0cmluZyA9IHVybC5wcmV0dHlVUkwoKS51dGY4KCk7CisgICAgICAgICAgICBtX2hvdmVy
ZWRMaW5rVVJMID0gdXJsOworICAgICAgICB9CisgICAgfSBlbHNlIGlmICghaXNMaW5rICYmICFt
X2hvdmVyZWRMaW5rVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgbV9ob3ZlcmVkTGlua1VSTCA9IEtV
UkwoKTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRFZmw6OnNldFRvb2xUaXAoY29uc3QgU3RyaW5n
JiB0b29sVGlwLCBUZXh0RGlyZWN0aW9uKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgQ2hyb21lQ2xpZW50RWZsOjpwcmludChGcmFtZSogZnJhbWUpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKworI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCit2
b2lkIENocm9tZUNsaWVudEVmbDo6cmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNl
TmVlZGVkKQoreworICAgIC8vIEZJWE1FOiBGcmVlIHNvbWUgc3BhY2UuCisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKyNlbmRpZgorCit2b2lkIENocm9tZUNsaWVudEVmbDo6ZXhjZWVkZWREYXRh
YmFzZVF1b3RhKEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIENocm9tZUNsaWVudEVmbDo6cnVuT3BlblBhbmVsKEZyYW1lKiwg
UGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4gcHJwRmlsZUNob29zZXIpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRFZmw6OmZvcm1TdGF0ZURpZENoYW5nZShj
b25zdCBOb2RlKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIENocm9tZUNs
aWVudEVmbDo6c2V0Q3Vyc29yKFBsYXRmb3JtQ3Vyc29ySGFuZGxlKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIENocm9tZUNsaWVudEVmbDo6
cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKEZyYW1lKiwgR2VvbG9jYXRpb24q
KQoreworICAgIC8vIFNlZSB0aGUgY29tbWVudCBpbiBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50
LmgKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9CmRpZmYgLS1naXQgYS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oIGIvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li42MWY5NGQyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRFZmwuaApAQCAtMCwwICsxLDEzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgorICogQ29weXJpZ2h0IChDKSAyMDA4IElO
ZFQgLSBJbnN0aXR1dG8gTm9raWEgZGUgVGVjbm9sb2dpYQorICogQ29weXJpZ2h0IChDKSAyMDA5
LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKKyAqIENvcHlyaWdodCAoQykgMjAwOS0y
MDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBDaHJvbWVDbGllbnRFZmxfaAorI2RlZmlu
ZSBDaHJvbWVDbGllbnRFZmxfaAorCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVk
ZSAiS1VSTC5oIgorI2luY2x1ZGUgPEV2YXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBDaHJvbWVDbGllbnRFZmwgOiBwdWJsaWMgQ2hyb21lQ2xpZW50IHsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBDaHJvbWVDbGllbnRFZmwoRXZhc19PYmplY3QgKnZpZXcpOworICAgIHZpcnR1
YWwgfkNocm9tZUNsaWVudEVmbCgpOworCisgICAgdmlydHVhbCB2b2lkIGNocm9tZURlc3Ryb3ll
ZCgpOworCisgICAgdmlydHVhbCB2b2lkIHNldFdpbmRvd1JlY3QoY29uc3QgRmxvYXRSZWN0Jik7
CisgICAgdmlydHVhbCBGbG9hdFJlY3Qgd2luZG93UmVjdCgpOworCisgICAgdmlydHVhbCBGbG9h
dFJlY3QgcGFnZVJlY3QoKTsKKworICAgIHZpcnR1YWwgZmxvYXQgc2NhbGVGYWN0b3IoKTsKKwor
ICAgIHZpcnR1YWwgdm9pZCBmb2N1cygpOworICAgIHZpcnR1YWwgdm9pZCB1bmZvY3VzKCk7CisK
KyAgICB2aXJ0dWFsIGJvb2wgY2FuVGFrZUZvY3VzKEZvY3VzRGlyZWN0aW9uKTsKKyAgICB2aXJ0
dWFsIHZvaWQgdGFrZUZvY3VzKEZvY3VzRGlyZWN0aW9uKTsKKyAgICAKKyAgICB2aXJ0dWFsIHZv
aWQgZm9jdXNlZE5vZGVDaGFuZ2VkKFdlYkNvcmU6Ok5vZGUqKTsKKworICAgIHZpcnR1YWwgUGFn
ZSogY3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdp
bmRvd0ZlYXR1cmVzJik7CisgICAgdmlydHVhbCB2b2lkIHNob3coKTsKKworICAgIHZpcnR1YWwg
Ym9vbCBjYW5SdW5Nb2RhbCgpOworICAgIHZpcnR1YWwgdm9pZCBydW5Nb2RhbCgpOworCisgICAg
dmlydHVhbCB2b2lkIHNldFRvb2xiYXJzVmlzaWJsZShib29sKTsKKyAgICB2aXJ0dWFsIGJvb2wg
dG9vbGJhcnNWaXNpYmxlKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U3RhdHVzYmFyVmlzaWJs
ZShib29sKTsKKyAgICB2aXJ0dWFsIGJvb2wgc3RhdHVzYmFyVmlzaWJsZSgpOworCisgICAgdmly
dHVhbCB2b2lkIHNldFNjcm9sbGJhcnNWaXNpYmxlKGJvb2wpOworICAgIHZpcnR1YWwgYm9vbCBz
Y3JvbGxiYXJzVmlzaWJsZSgpOworCisgICAgdmlydHVhbCB2b2lkIHNldE1lbnViYXJWaXNpYmxl
KGJvb2wpOworICAgIHZpcnR1YWwgYm9vbCBtZW51YmFyVmlzaWJsZSgpOworCisgICAgdmlydHVh
bCB2b2lkIHNldFJlc2l6YWJsZShib29sKTsKKworICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdl
VG9Db25zb2xlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCk7CisKKyAgICB2
aXJ0dWFsIGJvb2wgY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCk7CisgICAgdmlydHVh
bCBib29sIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IEZyYW1lKiBmcmFtZSk7CisKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2VXaW5kb3dTb29uKCk7CisK
KyAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KEZyYW1lKiwgY29uc3QgU3RyaW5n
Jik7CisgICAgdmlydHVhbCBib29sIHJ1bkphdmFTY3JpcHRDb25maXJtKEZyYW1lKiwgY29uc3Qg
U3RyaW5nJik7CisgICAgdmlydHVhbCBib29sIHJ1bkphdmFTY3JpcHRQcm9tcHQoRnJhbWUqLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlLCBTdHJpbmcm
IHJlc3VsdCk7CisgICAgdmlydHVhbCB2b2lkIHNldFN0YXR1c2JhclRleHQoY29uc3QgU3RyaW5n
Jik7CisgICAgdmlydHVhbCBib29sIHNob3VsZEludGVycnVwdEphdmFTY3JpcHQoKTsKKyAgICB2
aXJ0dWFsIGJvb2wgdGFic1RvTGlua3MoKSBjb25zdDsKKworICAgIHZpcnR1YWwgSW50UmVjdCB3
aW5kb3dSZXNpemVyUmVjdCgpIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lkIHJlcGFpbnQoY29u
c3QgSW50UmVjdCYsIGJvb2wgY29udGVudENoYW5nZWQsIGJvb2wgaW1tZWRpYXRlID0gZmFsc2Us
IGJvb2wgcmVwYWludENvbnRlbnRPbmx5ID0gZmFsc2UpOworICAgIHZpcnR1YWwgdm9pZCBjb250
ZW50c1NpemVDaGFuZ2VkKEZyYW1lKiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0OworICAgIHZpcnR1
YWwgYm9vbCBzY3JvbGwoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3Qm
IHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QsIGJvb2wgY2FuQmxpdCk7Cisg
ICAgdmlydHVhbCB2b2lkIHNjcm9sbChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3Qg
SW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CisgICAgdmly
dHVhbCBJbnRQb2ludCBzY3JlZW5Ub1dpbmRvdyhjb25zdCBJbnRQb2ludCYpIGNvbnN0OworICAg
IHZpcnR1YWwgSW50UmVjdCB3aW5kb3dUb1NjcmVlbihjb25zdCBJbnRSZWN0JikgY29uc3Q7Cisg
ICAgdmlydHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3Q7
CisKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsYmFyc01vZGVEaWRDaGFuZ2UoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVzdFJlc3Vs
dCYsIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MpOworCisgICAgdmlydHVhbCB2b2lkIHNldFRvb2xU
aXAoY29uc3QgU3RyaW5nJiwgVGV4dERpcmVjdGlvbik7CisKKyAgICB2aXJ0dWFsIHZvaWQgcHJp
bnQoRnJhbWUqKTsKKworI2lmIEVOQUJMRShEQVRBQkFTRSkKKyAgICB2aXJ0dWFsIHZvaWQgZXhj
ZWVkZWREYXRhYmFzZVF1b3RhKEZyYW1lKiwgY29uc3QgU3RyaW5nJik7CisjZW5kaWYKKworI2lm
IEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCisgICAgdmlydHVhbCB2b2lkIHJlYWNo
ZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCk7CisjZW5kaWYKKworICAgIHZp
cnR1YWwgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPik7
CisgICAgdmlydHVhbCB2b2lkIGZvcm1TdGF0ZURpZENoYW5nZShjb25zdCBOb2RlKik7CisKKyAg
ICB2aXJ0dWFsIFBhc3NPd25QdHI8SFRNTFBhcnNlclF1aXJrcz4gY3JlYXRlSFRNTFBhcnNlclF1
aXJrcygpIHsgcmV0dXJuIDA7IH0KKworICAgIHZpcnR1YWwgYm9vbCBzZXRDdXJzb3IoUGxhdGZv
cm1DdXJzb3JIYW5kbGUpOworCisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFJlY3RJbnRvVmlldyhj
b25zdCBJbnRSZWN0JiwgY29uc3QgU2Nyb2xsVmlldyopIGNvbnN0IHt9CisKKyAgICB2aXJ0dWFs
IHZvaWQgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKEZyYW1lKiwgR2VvbG9j
YXRpb24qKTsKKworICAgIEV2YXNfT2JqZWN0ICptX3ZpZXc7CisgICAgS1VSTCBtX2hvdmVyZWRM
aW5rVVJMOworfTsKK30KKworI2VuZGlmIC8vIENocm9tZUNsaWVudEVmbF9oCmRpZmYgLS1naXQg
YS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcCBiL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRFZmwuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhYTJhM2MKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcApAQCAtMCww
ICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEtlbm5ldGggUm9oZGUgQ2hyaXN0
aWFuc2VuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lz
dGVtcworICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcworICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkNvbnRleHRNZW51Q2xpZW50RWZs
LmgiCisKKyNpbmNsdWRlICJDb250ZXh0TWVudS5oIgorI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQu
aCIKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ29udGV4dE1l
bnVDbGllbnRFZmw6OkNvbnRleHRNZW51Q2xpZW50RWZsKEV2YXNfT2JqZWN0ICp2aWV3KQorICAg
IDogbV92aWV3KHZpZXcpCit7Cit9CisKK3ZvaWQgQ29udGV4dE1lbnVDbGllbnRFZmw6OmNvbnRl
eHRNZW51RGVzdHJveWVkKCkKK3sKKyAgICBkZWxldGUgdGhpczsKK30KKworUGxhdGZvcm1NZW51
RGVzY3JpcHRpb24gQ29udGV4dE1lbnVDbGllbnRFZmw6OmdldEN1c3RvbU1lbnVGcm9tRGVmYXVs
dEl0ZW1zKENvbnRleHRNZW51KiBtZW51KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIDA7Cit9CisKK3ZvaWQgQ29udGV4dE1lbnVDbGllbnRFZmw6OmNvbnRleHRNZW51SXRl
bVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSosIGNvbnN0IENvbnRleHRNZW51KikKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIENvbnRleHRNZW51Q2xpZW50RWZsOjpkb3dubG9h
ZFVSTChjb25zdCBLVVJMJiB1cmwpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBDb250ZXh0TWVudUNsaWVudEVmbDo6c2VhcmNoV2l0aEdvb2dsZShjb25zdCBGcmFtZSopCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBDb250ZXh0TWVudUNsaWVudEVmbDo6
bG9va1VwSW5EaWN0aW9uYXJ5KEZyYW1lKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Citib29sIENvbnRleHRNZW51Q2xpZW50RWZsOjppc1NwZWFraW5nKCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBDb250ZXh0TWVudUNsaWVu
dEVmbDo6c3BlYWsoY29uc3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIENvbnRleHRNZW51Q2xpZW50RWZsOjpzdG9wU3BlYWtpbmcoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvQ29udGV4dE1lbnVDbGllbnRFZmwuaCBiL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ29u
dGV4dE1lbnVDbGllbnRFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4y
MjcyY2JmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Db250
ZXh0TWVudUNsaWVudEVmbC5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYgWmFjayBSdXNpbiA8emFja0BrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA4IElO
ZFQgLSBJbnN0aXR1dG8gTm9raWEgZGUgVGVjbm9sb2dpYQorICogQ29weXJpZ2h0IChDKSAyMDA5
LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKKyAqIENvcHlyaWdodCAoQykgMjAwOS0y
MDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENvbnRleHRNZW51Q2xpZW50
RWZsX2gKKyNkZWZpbmUgQ29udGV4dE1lbnVDbGllbnRFZmxfaAorCisjaW5jbHVkZSAiQ29udGV4
dE1lbnVDbGllbnQuaCIKKyNpbmNsdWRlICJFV2ViS2l0LmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgQ29udGV4dE1lbnU7CisKK2NsYXNzIENvbnRleHRNZW51Q2xpZW50RWZsIDog
cHVibGljIFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50IHsKKyBwdWJsaWM6CisgICAgZXhwbGlj
aXQgQ29udGV4dE1lbnVDbGllbnRFZmwoRXZhc19PYmplY3QgKnZpZXcpOworCisgICAgdmlydHVh
bCB2b2lkIGNvbnRleHRNZW51RGVzdHJveWVkKCk7CisKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlBs
YXRmb3JtTWVudURlc2NyaXB0aW9uIGdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKFdlYkNv
cmU6OkNvbnRleHRNZW51Kik7CisgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVj
dGVkKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbSosIGNvbnN0IFdlYkNvcmU6OkNvbnRleHRNZW51
Kik7CisKKyAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYp
OworICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IFdlYkNvcmU6OkZyYW1l
Kik7CisgICAgdmlydHVhbCB2b2lkIGxvb2tVcEluRGljdGlvbmFyeShXZWJDb3JlOjpGcmFtZSop
OworICAgIHZpcnR1YWwgdm9pZCBzcGVhayhjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNTcGVha2luZygpOworICAgIHZpcnR1YWwgdm9pZCBzdG9wU3BlYWtpbmco
KTsKKworIHByaXZhdGU6CisgICAgRXZhc19PYmplY3QgKm1fdmlldzsKK307Cit9CisKKyNlbmRp
ZiAvLyBDb250ZXh0TWVudUNsaWVudEVmbF9oCmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0RyYWdDbGllbnRFZmwuY3BwIGIvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9E
cmFnQ2xpZW50RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzE5
NjBlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xp
ZW50RWZsLmNwcApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggSU5k
VCAtIEluc3RpdHV0byBOb2tpYSBkZSBUZWNub2xvZ2lhCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkt
MjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworICogQ29weXJpZ2h0IChDKSAyMDA5LTIw
MTAgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lu
Y2x1ZGUgIkRyYWdDbGllbnRFZmwuaCIKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQg
RHJhZ0NsaWVudEVmbDo6d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uLCBEcmFnRGF0YSopCit7Cit9CisKK3ZvaWQgRHJhZ0NsaWVudEVmbDo6d2ls
bFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IEludFBvaW50
JiwgQ2xpcGJvYXJkKikKK3sKK30KKworRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIERyYWdDbGllbnRF
Zmw6OmFjdGlvbk1hc2tGb3JEcmFnKERyYWdEYXRhKikKK3sKKyAgICByZXR1cm4gRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uQW55OworfQorCitEcmFnU291cmNlQWN0aW9uIERyYWdDbGllbnRFZmw6OmRy
YWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKQoreworICAgIHJldHVy
biBEcmFnU291cmNlQWN0aW9uQW55OworfQorCit2b2lkIERyYWdDbGllbnRFZmw6OnN0YXJ0RHJh
ZyhEcmFnSW1hZ2VSZWYsIGNvbnN0IEludFBvaW50JiwgY29uc3QgSW50UG9pbnQmLCBDbGlwYm9h
cmQqLCBGcmFtZSosIGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworRHJhZ0lt
YWdlUmVmIERyYWdDbGllbnRFZmw6OmNyZWF0ZURyYWdJbWFnZUZvckxpbmsoS1VSTCYsIGNvbnN0
IFN0cmluZyYgbGFiZWwsIEZyYW1lKikKK3sKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBEcmFn
Q2xpZW50RWZsOjpkcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpCit7CisgICAgZGVsZXRlIHRoaXM7
Cit9CisKK30KZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVu
dEVmbC5oIGIvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50RWZsLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBiYjZhZAotLS0gL2Rldi9udWxsCisrKyBi
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEVmbC5oCkBAIC0wLDAgKzEsNTQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgor
ICogQ29weXJpZ2h0IChDKSAyMDA4IElOZFQgLSBJbnN0aXR1dG8gTm9raWEgZGUgVGVjbm9sb2dp
YQorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMK
KyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlLCBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERyYWdDbGllbnRF
ZmxfaAorI2RlZmluZSBEcmFnQ2xpZW50RWZsX2gKKworI2luY2x1ZGUgIkRyYWdDbGllbnQuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRHJhZ0NsaWVudEVmbCA6IHB1YmxpYyBXZWJD
b3JlOjpEcmFnQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1E
cmFnRGVzdGluYXRpb25BY3Rpb24oV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBXZWJD
b3JlOjpEcmFnRGF0YSopOworICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybURyYWdTb3VyY2VB
Y3Rpb24oV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
LCBXZWJDb3JlOjpDbGlwYm9hcmQqKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkRyYWdEZXN0aW5h
dGlvbkFjdGlvbiBhY3Rpb25NYXNrRm9yRHJhZyhXZWJDb3JlOjpEcmFnRGF0YSopOworCisgICAg
dmlydHVhbCBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rpb25NYXNrRm9y
UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHdpbmRvd1BvaW50KTsKKworICAgIHZpcnR1
YWwgdm9pZCBzdGFydERyYWcoV2ViQ29yZTo6RHJhZ0ltYWdlUmVmIGRyYWdJbWFnZSwgY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIGRyYWdJbWFnZU9yaWdpbiwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIGV2ZW50UG9zLCBXZWJDb3JlOjpDbGlwYm9hcmQqLCBXZWJDb3JlOjpGcmFtZSosIGJvb2wg
bGlua0RyYWcgPSBmYWxzZSk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpEcmFnSW1hZ2VSZWYgY3Jl
YXRlRHJhZ0ltYWdlRm9yTGluayhXZWJDb3JlOjpLVVJMJiwgY29uc3QgV2ViQ29yZTo6U3RyaW5n
JiBsYWJlbCwgV2ViQ29yZTo6RnJhbWUqKTsKKworICAgIHZpcnR1YWwgdm9pZCBkcmFnQ29udHJv
bGxlckRlc3Ryb3llZCgpOworfTsKK30KKworI2VuZGlmIC8vIERyYWdDbGllbnRFZmxfaApkaWZm
IC0tZ2l0IGEvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwIGIv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0NGEwMzIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAKQEAgLTAsMCArMSw0OTMg
QEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+
CisgKiAgQ29weXJpZ2h0IChDKSAyMDA4IE51YW50aSBMdGQuCisgKiAgQ29weXJpZ2h0IChDKSAy
MDA4IElOZFQgLSBJbnN0aXR1dG8gTm9raWEgZGUgVGVjbm9sb2dpYQorICogIENvcHlyaWdodCAo
QykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCisgKiAgQ29weXJpZ2h0IChD
KSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICog
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBu
b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNB
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiRWRpdG9yQ2xpZW50RWZs
LmgiCisKKyNpbmNsdWRlICJFZGl0Q29tbWFuZC5oIgorI2luY2x1ZGUgIkVkaXRvci5oIgorI2lu
Y2x1ZGUgIkVXZWJLaXQuaCIKKyNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgIkZv
Y3VzQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiS2V5Ym9hcmRD
b2Rlcy5oIgorI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZl
bnQuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kwordm9pZCBFZGl0b3JDbGllbnRFZmw6OnNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBhY3RpdmUp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBFZGl0b3JDbGllbnRFZmw6OnNo
b3VsZERlbGV0ZVJhbmdlKFJhbmdlKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIEVkaXRvckNsaWVudEVmbDo6c2hvdWxkU2hvd0RlbGV0ZUlu
dGVyZmFjZShIVE1MRWxlbWVudCopCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEVk
aXRvckNsaWVudEVmbDo6aXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEVkaXRvckNs
aWVudEVmbDo6aXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworaW50IEVkaXRvckNsaWVudEVmbDo6c3BlbGxD
aGVja2VyRG9jdW1lbnRUYWcoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IDA7Cit9CisKK2Jvb2wgRWRpdG9yQ2xpZW50RWZsOjpzaG91bGRCZWdpbkVkaXRpbmcoUmFuZ2Uq
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
RWRpdG9yQ2xpZW50RWZsOjpzaG91bGRFbmRFZGl0aW5nKFJhbmdlKikKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEVkaXRvckNsaWVudEVmbDo6
c2hvdWxkSW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmLCBSYW5nZSosIEVkaXRvckluc2VydEFjdGlv
bikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IEVkaXRvckNsaWVudEVmbDo6c2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShSYW5nZSosIFJhbmdl
KiwgRUFmZmluaXR5LCBib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgRWRpdG9yQ2xpZW50RWZsOjpzaG91bGRBcHBseVN0eWxlKENTU1N0
eWxlRGVjbGFyYXRpb24qLCBSYW5nZSopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBFZGl0b3JDbGllbnRFZmw6OnNob3VsZE1vdmVSYW5nZUFm
dGVyRGVsZXRlKFJhbmdlKiwgUmFuZ2UqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50RWZsOjpkaWRCZWdpbkVkaXRpbmco
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50RWZsOjpy
ZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgRWRpdG9yQ2xpZW50RWZsOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEVkaXRvckNsaWVudEVmbDo6ZGlkRW5kRWRp
dGluZygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBFZGl0b3JDbGllbnRF
Zmw6OmRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIEVkaXRvckNsaWVudEVmbDo6ZGlkU2V0U2VsZWN0aW9uVHlwZXNGb3JQ
YXN0ZWJvYXJkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIEVkaXRvckNs
aWVudEVmbDo6aXNFZGl0YWJsZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50RWZsOjpyZWdpc3RlckNvbW1hbmRGb3JV
bmRvKFdURjo6UGFzc1JlZlB0cjxFZGl0Q29tbWFuZD4pCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBFZGl0b3JDbGllbnRFZmw6OnJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oV1RG
OjpQYXNzUmVmUHRyPEVkaXRDb21tYW5kPikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIEVkaXRvckNsaWVudEVmbDo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgRWRpdG9yQ2xpZW50RWZsOjpjYW5VbmRvKCkg
Y29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwor
Ym9vbCBFZGl0b3JDbGllbnRFZmw6OmNhblJlZG8oKSBjb25zdAoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEVkaXRvckNsaWVudEVmbDo6dW5k
bygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBFZGl0b3JDbGllbnRFZmw6
OnJlZG8oKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgRWRpdG9yQ2xpZW50
RWZsOjpzaG91bGRJbnNlcnROb2RlKE5vZGUqLCBSYW5nZSosIEVkaXRvckluc2VydEFjdGlvbikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEVk
aXRvckNsaWVudEVmbDo6cGFnZURlc3Ryb3llZCgpCit7CisgICAgZGVsZXRlIHRoaXM7Cit9CisK
K2Jvb2wgRWRpdG9yQ2xpZW50RWZsOjpzbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEVkaXRvckNs
aWVudEVmbDo6aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBFZGl0b3JDbGllbnRF
Zmw6OnRvZ2dsZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nKCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIEVkaXRvckNsaWVudEVmbDo6dG9nZ2xlR3JhbW1hckNoZWNraW5nKCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEVkaXRvckNsaWVudEVmbDo6aGFu
ZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKK3sKKyAgICBOb2RlKiBub2Rl
ID0gZXZlbnQtPnRhcmdldCgpLT50b05vZGUoKTsKKyAgICBBU1NFUlQobm9kZSk7CisgICAgRnJh
bWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICBBU1NFUlQoZnJhbWUp
OworCisvLyAgICAgRnJhbWUqIGZyYW1lID0gbV93ZWJQYWdlLT5kLT5wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CisvLyAgICAgaWYgKCFmcmFtZSB8fCAhZnJh
bWUtPmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCkpCisvLyAgICAgICAgIHJldHVybjsKKworICAg
IGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCoga2V2ZW50ID0gZXZlbnQtPmtleUV2ZW50KCk7
CisgICAgaWYgKCFrZXZlbnQgfHwga2V2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjpLZXlVcCkKKyAgICAgICAgcmV0dXJuOworCisgICAgTm9kZSogc3RhcnQgPSBmcmFtZS0+
c2VsZWN0aW9uKCktPnN0YXJ0KCkubm9kZSgpOworICAgIGlmICghc3RhcnQpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIEZJWE1FOiByZWZhY3RvciBhbGwgb2YgdGhpcyB0byB1c2UgQWN0aW9u
cyBvciBzb21ldGhpbmcgbGlrZSB0aGVtCisgICAgaWYgKHN0YXJ0LT5pc0NvbnRlbnRFZGl0YWJs
ZSgpKSB7CisgICAgICAgIHN3aXRjaCAoa2V2ZW50LT53aW5kb3dzVmlydHVhbEtleUNvZGUoKSkg
eworICAgICAgICBjYXNlIFZLX1JFVFVSTjoKKyAgICAgICAgICAgIGlmIChrZXZlbnQtPnNoaWZ0
S2V5KCkpCisgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJJbnNlcnRM
aW5lQnJlYWsiKS5leGVjdXRlKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJJbnNlcnROZXdsaW5lIikuZXhlY3V0ZSgpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVktfQkFDSzoKKyAgICAgICAgICAgIGZyYW1l
LT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNL
V0FSRCwKKyAgICAgICAgICAgICAgICAgICAgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0
cnVlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFZLX0RFTEVURToKKyAgICAg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250
cm9sbGVyOjpGT1JXQVJELAorICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXJHcmFudWxhcml0
eSwgZmFsc2UsIHRydWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVktfTEVG
VDoKKyAgICAgICAgICAgIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCisgICAgICAgICAgICAgICAg
aWYgKGtldmVudC0+Y3RybEtleSgpKQorICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmNvbW1hbmQoIk1vdmVXb3JkTGVmdEFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4ZWN1dGUoKTsK
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3Io
KS0+Y29tbWFuZCgiTW92ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb24iKS5leGVjdXRlKCk7CisgICAg
ICAgICAgICBlbHNlIGlmIChrZXZlbnQtPmN0cmxLZXkoKSkKKyAgICAgICAgICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVXb3JkQmFja3dhcmQiKS5leGVjdXRlKCk7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJN
b3ZlTGVmdCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFZL
X1JJR0hUOgorICAgICAgICAgICAgaWYgKGtldmVudC0+c2hpZnRLZXkoKSkKKyAgICAgICAgICAg
ICAgICBpZiAoa2V2ZW50LT5jdHJsS2V5KCkpCisgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVdvcmRSaWdodEFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4ZWN1
dGUoKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uIikuZXhlY3V0ZSgp
OworICAgICAgICAgICAgZWxzZSBpZiAoa2V2ZW50LT5jdHJsS2V5KCkpCisgICAgICAgICAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlV29yZEZvcndhcmQiKS5leGVjdXRlKCk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21t
YW5kKCJNb3ZlUmlnaHQiKS5leGVjdXRlKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBWS19VUDoKKyAgICAgICAgICAgIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCisgICAgICAg
ICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlVXBBbmRNb2RpZnlTZWxlY3Rp
b24iKS5leGVjdXRlKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZnJhbWUt
PmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlVXAiKS5leGVjdXRlKCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBWS19ET1dOOgorICAgICAgICAgICAgaWYgKGtldmVudC0+c2hpZnRL
ZXkoKSkKKyAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVEb3du
QW5kTW9kaWZ5U2VsZWN0aW9uIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZURvd24iKS5leGVjdXRlKCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBWS19QUklPUjogLy8gUGFnZVVwCisg
ICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVQYWdlVXAiKS5leGVjdXRl
KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBWS19ORVhUOiAvLyBQYWdlRG93
bgorICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlUGFnZURvd24iKS5l
eGVjdXRlKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBWS19IT01FOiAvLyBI
b21lCisgICAgICAgICAgICBpZiAoa2V2ZW50LT5jdHJsS2V5KCkpCisgICAgICAgICAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50IikuZXhl
Y3V0ZSgpOworICAgICAgICAgICAgZWxzZSBpZiAoa2V2ZW50LT5zaGlmdEtleSgpKQorICAgICAg
ICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVRvQmVnaW5uaW5nT2ZMaW5l
QW5kTW9kaWZ5U2VsZWN0aW9uIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVRvQmVnaW5uaW5nT2ZMaW5l
IikuZXhlY3V0ZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVktfRU5EOiAv
LyBFbmQKKyAgICAgICAgICAgIGlmIChrZXZlbnQtPmN0cmxLZXkoKSkKKyAgICAgICAgICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVUb0VuZE9mRG9jdW1lbnQiKS5leGVjdXRl
KCk7CisgICAgICAgICAgICBlbHNlIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCisgICAgICAgICAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlVG9FbmRPZkxpbmVBbmRNb2RpZnlT
ZWxlY3Rpb24iKS5leGVjdXRlKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICBm
cmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVUb0VuZE9mTGluZSIpLmV4ZWN1dGUoKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFZLX1RBQjoKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlmIChrZXZlbnQtPnR5cGUoKSAhPSBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleURvd24gJiYgIWtldmVudC0+Y3RybEtleSgpCisgICAg
ICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBleGNsdWRlIGNoZWNraW5nIGZvciBBbHQgYmVjYXVz
ZSBpdCBpcyBqdXN0IGEgZGlmZmVyZW50IFNoaWZ0CisgICAgICAgICAgICAgJiYgIWtldmVudC0+
YWx0S2V5KCkKKyAgICAgICAgICAgICAmJiAha2V2ZW50LT50ZXh0KCkuaXNFbXB0eSgpKQorICAg
ICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4dChrZXZlbnQtPnRleHQoKSwg
ZXZlbnQpOworICAgICAgICAgICAgZWxzZSBpZiAoa2V2ZW50LT5jdHJsS2V5KCkpIHsKKyAgICAg
ICAgICAgICAgICBzd2l0Y2ggKGtldmVudC0+d2luZG93c1ZpcnR1YWxLZXlDb2RlKCkpIHsKKyAg
ICAgICAgICAgICAgICBjYXNlIFZLX0E6CisgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0
b3IoKS0+Y29tbWFuZCgiU2VsZWN0QWxsIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFZLX0I6CisgICAgICAgICAgICAgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiVG9nZ2xlQm9sZCIpLmV4ZWN1dGUoKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBWS19DOgorICAgICAg
ICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIkNvcHkiKS5leGVjdXRlKCk7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVktfSToK
KyAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJUb2dnbGVJdGFs
aWMiKS5leGVjdXRlKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgVktfVjoKKyAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21t
YW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgY2FzZSBWS19YOgorICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmNvbW1hbmQoIkN1dCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgY2FzZSBWS19ZOgorICAgICAgICAgICAgICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPmNvbW1hbmQoIlJlZG8iKS5leGVjdXRlKCk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVktfWjoKKyAgICAgICAgICAgICAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJVbmRvIikuZXhlY3V0ZSgpOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICAvLyBjYXRjaCBjb21iaW5hdGlvbiBBbHRHcitrZXkgb3IgQ3RybCtBbHQra2V5CisgICAg
ICAgICAgICAgICAgICAgIGlmIChrZXZlbnQtPnR5cGUoKSAhPSBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQ6OktleURvd24gJiYga2V2ZW50LT5hbHRLZXkoKSAmJiAha2V2ZW50LT50ZXh0KCkuaXNFbXB0
eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmluc2VydFRl
eHQoa2V2ZW50LT50ZXh0KCksIGV2ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgc3dpdGNoIChrZXZlbnQtPndpbmRvd3NWaXJ0
dWFsS2V5Q29kZSgpKSB7CisgICAgICAgIGNhc2UgVktfVVA6CisgICAgICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVVcCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFZLX0RPV046CisgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNv
bW1hbmQoIk1vdmVEb3duIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgVktfUFJJT1I6IC8vIFBhZ2VVcAorICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5j
b21tYW5kKCJNb3ZlUGFnZVVwIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgVktfTkVYVDogLy8gUGFnZURvd24KKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3Io
KS0+Y29tbWFuZCgiTW92ZVBhZ2VEb3duIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgVktfSE9NRToKKyAgICAgICAgICAgIGlmIChrZXZlbnQtPmN0cmxLZXko
KSkKKyAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVUb0JlZ2lu
bmluZ09mRG9jdW1lbnQiKS5leGVjdXRlKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBWS19FTkQ6CisgICAgICAgICAgICBpZiAoa2V2ZW50LT5jdHJsS2V5KCkpCisgICAgICAg
ICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlVG9FbmRPZkRvY3VtZW50Iiku
ZXhlY3V0ZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBpZiAoa2V2ZW50LT5jdHJsS2V5KCkpIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGtl
dmVudC0+d2luZG93c1ZpcnR1YWxLZXlDb2RlKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFZL
X0E6CisgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiU2VsZWN0
QWxsIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIFZLX0M6IGNhc2UgVktfWDoKKyAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVk
aXRvcigpLT5jb21tYW5kKCJDb3B5IikuZXhlY3V0ZSgpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxl
ZCgpOworfQorCit2b2lkIEVkaXRvckNsaWVudEVmbDo6aGFuZGxlSW5wdXRNZXRob2RLZXlkb3du
KEtleWJvYXJkRXZlbnQqIGV2ZW50KQoreworfQorCitFZGl0b3JDbGllbnRFZmw6OkVkaXRvckNs
aWVudEVmbChFdmFzX09iamVjdCAqdmlldykKKyAgICA6IG1fdmlldyh2aWV3KQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK0VkaXRvckNsaWVudEVmbDo6fkVkaXRvckNsaWVudEVmbCgp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBFZGl0b3JDbGllbnRFZmw6OnRl
eHRGaWVsZERpZEJlZ2luRWRpdGluZyhFbGVtZW50KikKK3sKK30KKwordm9pZCBFZGl0b3JDbGll
bnRFZmw6OnRleHRGaWVsZERpZEVuZEVkaXRpbmcoRWxlbWVudCopCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBFZGl0b3JDbGllbnRFZmw6OnRleHREaWRDaGFuZ2VJblRleHRG
aWVsZChFbGVtZW50KikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIEVkaXRv
ckNsaWVudEVmbDo6ZG9UZXh0RmllbGRDb21tYW5kRnJvbUV2ZW50KEVsZW1lbnQqLCBLZXlib2Fy
ZEV2ZW50KikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50RWZs
Ojp0ZXh0V2lsbEJlRGVsZXRlZEluVGV4dEZpZWxkKEVsZW1lbnQqKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50RWZsOjp0ZXh0RGlkQ2hhbmdlSW5UZXh0
QXJlYShFbGVtZW50KikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEVkaXRv
ckNsaWVudEVmbDo6aWdub3JlV29yZEluU3BlbGxEb2N1bWVudChjb25zdCBTdHJpbmcmKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50RWZsOjpsZWFybldv
cmQoY29uc3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEVk
aXRvckNsaWVudEVmbDo6Y2hlY2tTcGVsbGluZ09mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50LCBp
bnQqLCBpbnQqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1N0cmluZyBFZGl0b3JD
bGllbnRFZmw6OmdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0
IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7
Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50RWZsOjpjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBV
Q2hhciosIGludCwgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiwgaW50KiwgaW50KikKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEVkaXRvckNsaWVudEVmbDo6dXBkYXRlU3BlbGxp
bmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IEdyYW1tYXJEZXRhaWwm
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50RWZsOjp1
cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBFZGl0b3JDbGllbnRFZmw6OnNob3dTcGVsbGlu
Z1VJKGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBFZGl0b3JDbGll
bnRFZmw6OnNwZWxsaW5nVUlJc1Nob3dpbmcoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEVkaXRvckNsaWVudEVmbDo6Z2V0R3Vlc3Nlc0Zv
cldvcmQoY29uc3QgU3RyaW5nJiwgVmVjdG9yPFN0cmluZz4mKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50RWZsLmggYi9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVm
bC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlODgwNjgKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oCkBA
IC0wLDAgKzEsMTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVy
bWFubiA8emltbWVybWFubkBrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA2IFphY2sgUnVz
aW4gPHphY2tAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwg
SW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA4IElOZFQgLSBJbnN0aXR1dG8gTm9raWEgZGUgVGVj
bm9sb2dpYQorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5
c3RlbXMKKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAq
CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRWRpdG9yQ2xpZW50RWZs
X2gKKyNkZWZpbmUgRWRpdG9yQ2xpZW50RWZsX2gKKworI2luY2x1ZGUgIkVkaXRvckNsaWVudC5o
IgorI2luY2x1ZGUgPEV2YXMuaD4KKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK2NsYXNzIFBhZ2U7CisKK2NsYXNzIEVkaXRvckNsaWVudEVmbCA6IHB1
YmxpYyBFZGl0b3JDbGllbnQgeworIHB1YmxpYzoKKyAgICBleHBsaWNpdCBFZGl0b3JDbGllbnRF
ZmwoRXZhc19PYmplY3QgKnZpZXcpOworICAgIH5FZGl0b3JDbGllbnRFZmwoKTsKKworICAgIC8v
IGZyb20gRWRpdG9yQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKTsKKwor
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGREZWxldGVSYW5nZShSYW5nZSopOworICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRTaG93RGVsZXRlSW50ZXJmYWNlKEhUTUxFbGVtZW50Kik7CisgICAgdmlydHVh
bCBib29sIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpOworICAgIHZpcnR1YWwgYm9vbCBpc1Nl
bGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDb250
aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQ29u
dGludW91c1NwZWxsQ2hlY2tpbmcoKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNHcmFtbWFyQ2hlY2tp
bmdFbmFibGVkKCk7CisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUdyYW1tYXJDaGVja2luZygpOwor
ICAgIHZpcnR1YWwgaW50IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCk7CisKKyAgICB2aXJ0dWFs
IGJvb2wgaXNFZGl0YWJsZSgpOworCisgICAgdmlydHVhbCBib29sIHNob3VsZEJlZ2luRWRpdGlu
ZyhSYW5nZSopOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFbmRFZGl0aW5nKFJhbmdlKik7Cisg
ICAgdmlydHVhbCBib29sIHNob3VsZEluc2VydE5vZGUoTm9kZSosIFJhbmdlKiwgRWRpdG9ySW5z
ZXJ0QWN0aW9uKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5zZXJ0VGV4dChjb25zdCBTdHJp
bmcmLCBSYW5nZSosIEVkaXRvckluc2VydEFjdGlvbik7CisgICAgdmlydHVhbCBib29sIHNob3Vs
ZENoYW5nZVNlbGVjdGVkUmFuZ2UoUmFuZ2UqIGZyb21SYW5nZSwgUmFuZ2UqIHRvUmFuZ2UsIEVB
ZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZyk7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
QXBwbHlTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKiwgUmFuZ2UqKTsKKworICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShSYW5nZSosIFJhbmdlKik7CisKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkQmVnaW5FZGl0aW5nKCk7CisgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRU
b0NoYW5nZWRDb250ZW50cygpOworICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkU2Vs
ZWN0aW9uKCk7CisgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkU2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQg
cmVnaXN0ZXJDb21tYW5kRm9yVW5kbyhXVEY6OlBhc3NSZWZQdHI8RWRpdENvbW1hbmQ+KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDb21tYW5kRm9yUmVkbyhXVEY6OlBhc3NSZWZQdHI8RWRp
dENvbW1hbmQ+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsK
KworICAgIHZpcnR1YWwgYm9vbCBjYW5VbmRvKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGNh
blJlZG8oKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCB1bmRvKCk7CisgICAgdmlydHVhbCB2
b2lkIHJlZG8oKTsKKworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJv
YXJkRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKEtl
eWJvYXJkRXZlbnQqKTsKKworICAgIHZpcnR1YWwgdm9pZCB0ZXh0RmllbGREaWRCZWdpbkVkaXRp
bmcoRWxlbWVudCopOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0RmllbGREaWRFbmRFZGl0aW5nKEVs
ZW1lbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dERpZENoYW5nZUluVGV4dEZpZWxkKEVsZW1l
bnQqKTsKKyAgICB2aXJ0dWFsIGJvb2wgZG9UZXh0RmllbGRDb21tYW5kRnJvbUV2ZW50KEVsZW1l
bnQqLCBLZXlib2FyZEV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIHRleHRXaWxsQmVEZWxldGVk
SW5UZXh0RmllbGQoRWxlbWVudCopOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0RGlkQ2hhbmdlSW5U
ZXh0QXJlYShFbGVtZW50Kik7CisKKyAgICB2aXJ0dWFsIHZvaWQgaWdub3JlV29yZEluU3BlbGxE
b2N1bWVudChjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGVhcm5Xb3JkKGNvbnN0
IFN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBjaGVja1NwZWxsaW5nT2ZTdHJpbmcoY29uc3Qg
VUNoYXIqLCBpbnQgbGVuZ3RoLCBpbnQqIG1pc3NwZWxsaW5nTG9jYXRpb24sIGludCogbWlzc3Bl
bGxpbmdMZW5ndGgpOworICAgIHZpcnR1YWwgU3RyaW5nIGdldEF1dG9Db3JyZWN0U3VnZ2VzdGlv
bkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYgbWlzc3BlbGxlZFdvcmQpOworICAgIHZp
cnR1YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgs
IFdURjo6VmVjdG9yPEdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGlu
dCogYmFkR3JhbW1hckxlbmd0aCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlX
aXRoR3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBHcmFtbWFyRGV0YWlsJik7Cisg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQoY29uc3Qg
U3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIHNob3dTcGVsbGluZ1VJKGJvb2wgc2hvdyk7Cisg
ICAgdmlydHVhbCBib29sIHNwZWxsaW5nVUlJc1Nob3dpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
Z2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5nJiwgV1RGOjpWZWN0b3I8U3RyaW5nPiYgZ3Vl
c3Nlcyk7CisgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVk
KTsKKworIHByaXZhdGU6CisgICAgRXZhc19PYmplY3QgKm1fdmlldzsKK307Cit9CisKKyNlbmRp
ZiAvLyBFZGl0b3JDbGllbnRFZmxfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAgYi9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi43ZDQyODkwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKQEAgLTAsMCArMSw4NjUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDYgWmFjayBSdXNpbiA8emFja0BrZGUub3JnPgorICogQ29weXJpZ2h0IChD
KSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgt
aWVzKQorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIK
KyAqIENvcHlyaWdodCAoQykgMjAwOCBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbgorICogQ29w
eXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKKyAqIENvcHly
aWdodCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkZyYW1l
TG9hZGVyQ2xpZW50RWZsLmgiCisKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiRG9j
dW1lbnRMb2FkZXIuaCIKKyNpbmNsdWRlICJFV2ViS2l0LmgiCisjaW5jbHVkZSAiZXdrX3ByaXZh
dGUuaCIKKyNpbmNsdWRlICJGb3JtU3RhdGUuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgor
I2luY2x1ZGUgIkZyYW1lVHJlZS5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUg
IkhUTUxGb3JtRWxlbWVudC5oIgorI2luY2x1ZGUgIkxhbmd1YWdlLmgiCisjaW5jbHVkZSAiTUlN
RVR5cGVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAi
UGx1Z2luRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKKyNpbmNsdWRl
ICJSZW5kZXJQYXJ0LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCisKKyNpZiBQTEFU
Rk9STShVTklYKQorICAgICNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorI2VuZGlmCisKKworI2lu
Y2x1ZGUgPEVjb3JlX0V2YXMuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworRnJhbWVMb2FkZXJDbGllbnRFZmw6OkZyYW1lTG9hZGVyQ2xpZW50
RWZsKEV2YXNfT2JqZWN0ICp2aWV3KQorICAgIDogbV92aWV3KHZpZXcpCisgICAgLCBtX2ZyYW1l
KDApCisgICAgLCBtX2ZpcnN0RGF0YShmYWxzZSkKKyAgICAsIG1fdXNlckFnZW50KCIiKQorICAg
ICwgbV9jdXN0b21Vc2VyQWdlbnQoIiIpCisgICAgLCBtX3BsdWdpblZpZXcoMCkKKyAgICAsIG1f
aGFzU2VudFJlc3BvbnNlVG9QbHVnaW4oZmFsc2UpCit7Cit9CisKK3N0YXRpYyBTdHJpbmcgYWdl
bnRQbGF0Zm9ybSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gIlVua25v
d24iOworfQorCitzdGF0aWMgU3RyaW5nIGFnZW50T1MoKQoreworI2lmIFBMQVRGT1JNKERBUldJ
TikKKyNpZiBQTEFURk9STShYODYpCisgICAgcmV0dXJuICJJbnRlbCBNYWMgT1MgWCI7CisjZWxz
ZQorICAgIHJldHVybiAiUFBDIE1hYyBPUyBYIjsKKyNlbmRpZgorI2VsaWYgUExBVEZPUk0oVU5J
WCkKKyAgICBzdHJ1Y3QgdXRzbmFtZSBuYW1lOworICAgIGlmICh1bmFtZSgmbmFtZSkgIT0gLTEp
CisgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXMgJXMiLCBuYW1lLnN5c25hbWUsIG5h
bWUubWFjaGluZSk7CisKKyAgICByZXR1cm4gIlVua25vd24iOworI2VsaWYgUExBVEZPUk0oV0lO
X09TKQorICAgIC8vIEZJWE1FOiBDb21wdXRlIHRoZSBXaW5kb3dzIHZlcnNpb24KKyAgICByZXR1
cm4gIldpbmRvd3MiOworI2Vsc2UKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAi
VW5rbm93biI7CisjZW5kaWYKK30KKworc3RhdGljIFN0cmluZyBjb21wb3NlVXNlckFnZW50KCkK
K3sKKyAgICAvLyBUaGlzIGlzIGEgbGliZXJhbCBpbnRlcnByZXRhdGlvbiBvZiBodHRwOi8vd3d3
Lm1vemlsbGEub3JnL2J1aWxkL3JldmlzZWQtdXNlci1hZ2VudC1zdHJpbmdzLmh0bWwKKyAgICAv
LyBTZWUgYWxzbyBodHRwOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9pbnRlcm5ldC9zYWZhcmkvZmFx
Lmh0bWwjYW5jaG9yMgorCisgICAgU3RyaW5nIHVhOworCisgICAgLy8gUHJvZHVjdAorICAgIHVh
ICs9ICJNb3ppbGxhLzUuMCI7CisKKyAgICAvLyBDb21tZW50CisgICAgdWEgKz0gIiAoIjsKKyAg
ICB1YSArPSBhZ2VudFBsYXRmb3JtKCk7IC8vIFBsYXRmb3JtCisgICAgdWEgKz0gIjsgVTsgIjsg
Ly8gU2VjdXJpdHkKKyAgICB1YSArPSBhZ2VudE9TKCk7IC8vIE9TLW9yLUNQVQorICAgIHVhICs9
ICI7ICI7CisgICAgdWEgKz0gZGVmYXVsdExhbmd1YWdlKCk7IC8vIExvY2FsaXphdGlvbiBpbmZv
cm1hdGlvbgorICAgIHVhICs9ICIpICI7CisKKyAgICAvLyBXZWJLaXQgUHJvZHVjdAorICAgIC8v
IEZJWE1FOiBUaGUgV2ViS2l0IHZlcnNpb24gaXMgaGFyZGNvZGVkCisgICAgc3RhdGljIGNvbnN0
IFN0cmluZyB3ZWJLaXRWZXJzaW9uID0gIjUyNS4xKyI7CisgICAgdWEgKz0gIkFwcGxlV2ViS2l0
LyIgKyB3ZWJLaXRWZXJzaW9uOworICAgIHVhICs9ICIgKEtIVE1MLCBsaWtlIEdlY2tvLCAiOwor
ICAgIC8vIFdlIG1lbnRpb24gU2FmYXJpIHNpbmNlIG1hbnkgYnJva2VuIHNpdGVzIGNoZWNrIGZv
ciBpdCAoT21uaVdlYiBkb2VzIHRoaXMgdG9vKQorICAgIC8vIFdlIHJlLXVzZSB0aGUgV2ViS2l0
IHZlcnNpb24sIHRob3VnaCBpdCBkb2Vzbid0IHNlZW0gdG8gbWF0dGVyIG11Y2ggaW4gcHJhY3Rp
Y2UKKyAgICB1YSArPSAiU2FmYXJpLyIgKyB3ZWJLaXRWZXJzaW9uOworICAgIHVhICs9ICIpICI7
CisKKyAgICAvLyBWZW5kb3IgUHJvZHVjdAorICAgIC8vIHVhICs9IGdfZ2V0X3ByZ25hbWUoKTsK
KworICAgIHJldHVybiB1YTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6c2V0Q3Vz
dG9tVXNlckFnZW50KGNvbnN0IFN0cmluZyAmYWdlbnQpCit7CisgICAgbV9jdXN0b21Vc2VyQWdl
bnQgPSBhZ2VudDsKK30KKworY29uc3QgU3RyaW5nJiBGcmFtZUxvYWRlckNsaWVudEVmbDo6Y3Vz
dG9tVXNlckFnZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jdXN0b21Vc2VyQWdlbnQ7Cit9
CisKK1N0cmluZyBGcmFtZUxvYWRlckNsaWVudEVmbDo6dXNlckFnZW50KGNvbnN0IEtVUkwmKQor
eworICAgIGlmICghbV9jdXN0b21Vc2VyQWdlbnQuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
bV9jdXN0b21Vc2VyQWdlbnQ7CisKKyAgICBpZiAobV91c2VyQWdlbnQuaXNFbXB0eSgpKQorICAg
ICAgICBtX3VzZXJBZ2VudCA9IGNvbXBvc2VVc2VyQWdlbnQoKTsKKyAgICByZXR1cm4gbV91c2Vy
QWdlbnQ7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmNhbGxQb2xpY3lGdW5jdGlv
bihGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uLCBQb2xpY3lBY3Rpb24gYWN0aW9uKQorewor
ICAgIC8vIEZJWE1FCisgICAgRnJhbWUqIGYgPSBld2tfZnJhbWVfY29yZV9nZXQobV9mcmFtZSk7
CisgICAgQVNTRVJUKGYpOworICAgIC8vKGYtPmxvYWRlcigpLT4qZnVuY3Rpb24pKFBvbGljeUFj
dGlvbihhY3Rpb24pKTsKKyAgICAoZi0+bG9hZGVyKCktPnBvbGljeUNoZWNrZXIoKS0+KmZ1bmN0
aW9uKShhY3Rpb24pOworfQorCitXVEY6OlBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IEZyYW1l
TG9hZGVyQ2xpZW50RWZsOjpjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKK3sKKyAg
ICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9IERvY3VtZW50TG9hZGVyOjpjcmVhdGUo
cmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOworICAgIGlmIChzdWJzdGl0dXRlRGF0YS5pc1ZhbGlk
KCkpCisgICAgICAgIGxvYWRlci0+c2V0RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZChmYWxzZSk7
CisgICAgcmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGll
bnRFZmw6OmRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlv
biwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+KQoreworICAgIC8vIEZJWE1FOiBUaGlzIGlzIHN1cmVs
eSB0b28gc2ltcGxlCisgICAgQVNTRVJUKGZ1bmN0aW9uKTsKKyAgICBjYWxsUG9saWN5RnVuY3Rp
b24oZnVuY3Rpb24sIFBvbGljeVVzZSk7Cit9CisKKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEVm
bDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBkYXRh
LCBpbnQgbGVuZ3RoKQoreworICAgIGlmICghbV9wbHVnaW5WaWV3KSB7CisgICAgICAgIGlmICgh
bV9mcmFtZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBGcmFtZUxvYWRlciogZmwg
PSBsb2FkZXItPmZyYW1lTG9hZGVyKCk7CisgICAgICAgIGlmIChtX2ZpcnN0RGF0YSkgeworICAg
ICAgICAgICAgZmwtPnNldEVuY29kaW5nKG1fcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpLCBm
YWxzZSk7CisgICAgICAgICAgICBtX2ZpcnN0RGF0YSA9IGZhbHNlOworICAgICAgICB9CisgICAg
ICAgIGZsLT5hZGREYXRhKGRhdGEsIGxlbmd0aCk7CisgICAgfQorCisgICAgLy8gV2UgcmUtY2hl
Y2sgaGVyZSBhcyB0aGUgcGx1Z2luIGNhbiBoYXZlIGJlZW4gY3JlYXRlZAorICAgIGlmIChtX3Bs
dWdpblZpZXcpIHsKKyAgICAgICAgaWYgKCFtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luKSB7Cisg
ICAgICAgICAgICBtX3BsdWdpblZpZXctPmRpZFJlY2VpdmVSZXNwb25zZShsb2FkZXItPnJlc3Bv
bnNlKCkpOworICAgICAgICAgICAgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbiA9IHRydWU7Cisg
ICAgICAgIH0KKyAgICAgICAgbV9wbHVnaW5WaWV3LT5kaWRSZWNlaXZlRGF0YShkYXRhLCBsZW5n
dGgpOworICAgIH0KK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRS
ZXBsYWNlU3RhdGVXaXRoaW5QYWdlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFJlbW92ZUJhY2tGb3J3YXJkSXRl
bShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRo
aW5QYWdlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50RWZsOjpkaXNwYXRjaERpZFBvcFN0YXRlV2l0aGluUGFnZSgpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRD
aGFuZ2VCYWNrRm9yd2FyZEluZGV4KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZEFkZEJhY2tGb3J3YXJk
SXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRv
d09iamVjdEluV29ybGQoRE9NV3JhcHBlcldvcmxkKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgIGlkZW50
aWZpZXIsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZENhbmNl
bEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyAg
aWRlbnRpZmllciwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoV2ls
bFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKworYm9vbCBGcmFtZUxvYWRlckNsaWVudEVmbDo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3Jh
Z2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjph
c3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpwb3N0UHJvZ3Jlc3NT
dGFydGVkTm90aWZpY2F0aW9uKCkKK3sKKyAgICBld2tfZnJhbWVfbG9hZF9zdGFydGVkKG1fZnJh
bWUpOworICAgIHBvc3RQcm9ncmVzc0VzdGltYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbigpOworfQor
Cit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpwb3N0UHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWRO
b3RpZmljYXRpb24oKQoreworICAgIGV3a19mcmFtZV9sb2FkX3Byb2dyZXNzX2NoYW5nZWQobV9m
cmFtZSk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnBvc3RQcm9ncmVzc0Zpbmlz
aGVkTm90aWZpY2F0aW9uKCkKK3sKKyAgICBpZiAobV9sb2FkRXJyb3IuaXNOdWxsKCkpCisgICAg
ICAgIGV3a19mcmFtZV9sb2FkX2ZpbmlzaGVkKG1fZnJhbWUsIDAsIDAsIDAsIDAsIDApOworICAg
IGVsc2UgeworICAgICAgICBld2tfZnJhbWVfbG9hZF9maW5pc2hlZAorICAgICAgICAgICAgKG1f
ZnJhbWUsIG1fbG9hZEVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCksCisgICAgICAgICAgICAg
bV9sb2FkRXJyb3IuZXJyb3JDb2RlKCksIG1fbG9hZEVycm9yLmlzQ2FuY2VsbGF0aW9uKCksCisg
ICAgICAgICAgICAgbV9sb2FkRXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0
YSgpLAorICAgICAgICAgICAgIG1fbG9hZEVycm9yLmZhaWxpbmdVUkwoKS51dGY4KCkuZGF0YSgp
KTsKKyAgICB9Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmZyYW1lTG9hZGVyRGVz
dHJveWVkKCkKK3sKKyAgICBpZiAobV9mcmFtZSkKKyAgICAgICAgZXdrX2ZyYW1lX2NvcmVfZ29u
ZShtX2ZyYW1lKTsKKyAgICBtX2ZyYW1lID0gMDsKKworICAgIGRlbGV0ZSB0aGlzOworfQorCit2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShEb2N1
bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQoreworICAgIG1fcmVzcG9uc2UgPSByZXNwb25zZTsKKyAgICBtX2ZpcnN0RGF0YSA9IHRy
dWU7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yTUlNRVR5cGUoRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3QgU3RyaW5nJiBN
SU1FVHlwZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikKK3sKKyAgICAvLyB3ZSBuZWVkIHRvIGNh
bGwgZGlyZWN0bHkgaGVyZSAoY3VycmVudGx5IGNhbGxQb2xpY3lGdW5jdGlvbiBkb2VzIHRoYXQh
KQorICAgIEFTU0VSVChmdW5jdGlvbik7CisgICAgaWYgKGNhblNob3dNSU1FVHlwZShNSU1FVHlw
ZSkpCisgICAgICAgIGNhbGxQb2xpY3lGdW5jdGlvbihmdW5jdGlvbiwgUG9saWN5VXNlKTsKKyAg
ICBlbHNlCisgICAgICAgIGNhbGxQb2xpY3lGdW5jdGlvbihmdW5jdGlvbiwgUG9saWN5RG93bmxv
YWQpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uLCBjb25zdCBO
YXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQ
dHI8Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5nJikKK3sKKyAgICBBU1NFUlQoZnVuY3Rpb24pOwor
ICAgIEFTU0VSVChtX2ZyYW1lKTsKKyAgICAvLyBpZiBub3QgYWNjZXB0TmF2aWdhdGlvblJlcXVl
c3QgLSBsb29rIGF0IFF0IC0+IFBvbGljeUlnbm9yZTsKKyAgICAvLyBGSVhNRTogZG8gcHJvcGVy
IGNoZWNrIGFuZCBvbmx5IHJlc2V0IGZvcm1zIHdoZW4gb24gUG9saWN5SWdub3JlCisgICAgRnJh
bWUqIGYgPSBld2tfZnJhbWVfY29yZV9nZXQobV9mcmFtZSk7CisgICAgZi0+bG9hZGVyKCktPnJl
c2V0TXVsdGlwbGVGb3JtU3VibWlzc2lvblByb3RlY3Rpb24oKTsKKyAgICBjYWxsUG9saWN5RnVu
Y3Rpb24oZnVuY3Rpb24sIFBvbGljeVVzZSk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRF
Zmw6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1
bmN0aW9uIGZ1bmN0aW9uLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pCit7
CisgICAgQVNTRVJUKGZ1bmN0aW9uKTsKKyAgICBBU1NFUlQobV9mcmFtZSk7CisgICAgLy8gaWYg
bm90IGFjY2VwdE5hdmlnYXRpb25SZXF1ZXN0IC0gbG9vayBhdCBRdCAtPiBQb2xpY3lJZ25vcmU7
CisgICAgLy8gRklYTUU6IGRvIHByb3BlciBjaGVjayBhbmQgb25seSByZXNldCBmb3JtcyB3aGVu
IG9uIFBvbGljeUlnbm9yZQorICAgIEZyYW1lKiBmID0gZXdrX2ZyYW1lX2NvcmVfZ2V0KG1fZnJh
bWUpOworICAgIGYtPmxvYWRlcigpLT5yZXNldE11bHRpcGxlRm9ybVN1Ym1pc3Npb25Qcm90ZWN0
aW9uKCk7CisgICAgY2FsbFBvbGljeUZ1bmN0aW9uKGZ1bmN0aW9uLCBQb2xpY3lVc2UpOworfQor
CitQYXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXJDbGllbnRFZmw6OmNyZWF0ZVBsdWdpbihj
b25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxv
YWRNYW51YWxseSkKK3sKKyAgICBBU1NFUlQobV9mcmFtZSk7CisgICAgQVNTRVJUKG1fdmlldyk7
CisKKyAgICByZXR1cm4gZXdrX3ZpZXdfcGx1Z2luX2NyZWF0ZQorICAgICAgICAobV92aWV3LCBt
X2ZyYW1lLCBwbHVnaW5TaXplLCBlbGVtZW50LCB1cmwsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVz
LAorICAgICAgICAgbWltZVR5cGUsIGxvYWRNYW51YWxseSk7Cit9CisKK1Bhc3NSZWZQdHI8RnJh
bWU+IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3Ry
aW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50
IG1hcmdpbkhlaWdodCkKK3sKKyAgICBBU1NFUlQobV9mcmFtZSk7CisgICAgQVNTRVJUKG1fdmll
dyk7CisKKyAgICByZXR1cm4gZXdrX3ZpZXdfZnJhbWVfY3JlYXRlCisgICAgICAgIChtX3ZpZXcs
IG1fZnJhbWUsIG5hbWUsIG93bmVyRWxlbWVudCwgdXJsLCByZWZlcnJlcik7Cit9CisKK3ZvaWQg
RnJhbWVMb2FkZXJDbGllbnRFZmw6OnJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCogcGx1Z2lu
V2lkZ2V0KQoreworICAgIEFTU0VSVCghbV9wbHVnaW5WaWV3KTsKKyAgICBtX3BsdWdpblZpZXcg
PSBzdGF0aWNfY2FzdDxQbHVnaW5WaWV3Kj4ocGx1Z2luV2lkZ2V0KTsKKyAgICBtX2hhc1NlbnRS
ZXNwb25zZVRvUGx1Z2luID0gZmFsc2U7Cit9CisKK1Bhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxv
YWRlckNsaWVudEVmbDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRN
TEFwcGxldEVsZW1lbnQqLCBjb25zdCBLVVJMJiBiYXNlVVJMLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFy
YW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK09iamVjdENvbnRlbnRUeXBlIEZyYW1l
TG9hZGVyQ2xpZW50RWZsOjpvYmplY3RDb250ZW50VHlwZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAgaWYgKHVybC5pc0VtcHR5KCkgJiYgbWltZVR5cGUu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gT2JqZWN0Q29udGVudE5vbmU7CisKKyAgICAvLyBX
ZSBkb24ndCB1c2UgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKCkgYmVjYXVz
ZSBpdCByZXR1cm5zICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iIHVwb24gZmFpbHVyZQorICAg
IFN0cmluZyB0eXBlID0gbWltZVR5cGU7CisgICAgaWYgKHR5cGUuaXNFbXB0eSgpKQorICAgICAg
ICB0eXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24odXJsLnBh
dGgoKS5zdWJzdHJpbmcodXJsLnBhdGgoKS5yZXZlcnNlRmluZCgnLicpICsgMSkpOworCisgICAg
aWYgKHR5cGUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gT2JqZWN0Q29udGVudEZyYW1lOwor
CisgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZSh0eXBl
KSkKKyAgICAgICAgcmV0dXJuIE9iamVjdENvbnRlbnRJbWFnZTsKKworICAgIGlmIChQbHVnaW5E
YXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lucygpLT5pc01JTUVUeXBlUmVnaXN0ZXJlZChtaW1lVHlw
ZSkpCisgICAgICAgIHJldHVybiBPYmplY3RDb250ZW50TmV0c2NhcGVQbHVnaW47CisKKyAgICBp
ZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlKHR5cGUpKQor
ICAgICAgICByZXR1cm4gT2JqZWN0Q29udGVudEZyYW1lOworCisgICAgaWYgKHVybC5wcm90b2Nv
bCgpID09ICJhYm91dCIpCisgICAgICAgIHJldHVybiBPYmplY3RDb250ZW50RnJhbWU7CisKKyAg
ICByZXR1cm4gT2JqZWN0Q29udGVudE5vbmU7Cit9CisKK1N0cmluZyBGcmFtZUxvYWRlckNsaWVu
dEVmbDo6b3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjp3
aW5kb3dPYmplY3RDbGVhcmVkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkb2N1bWVudEVsZW1lbnRBdmFpbGFibGUoKQoreworICAg
IHJldHVybjsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlkUGVyZm9ybUZpcnN0
TmF2aWdhdGlvbigpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBG
cmFtZUxvYWRlckNsaWVudEVmbDo6cmVnaXN0ZXJGb3JJY29uTm90aWZpY2F0aW9uKGJvb2wpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6
c2V0TWFpbkZyYW1lRG9jdW1lbnRSZWFkeShib29sKQoreworICAgIC8vIHRoaXMgaXMgb25seSBp
bnRlcmVzdGluZyBvbmNlIHdlIHByb3ZpZGUgYW4gZXh0ZXJuYWwgQVBJIGZvciB0aGUgRE9NCit9
CisKK2Jvb2wgRnJhbWVMb2FkZXJDbGllbnRFZmw6Omhhc1dlYlZpZXcoKSBjb25zdAoreworICAg
IC8vIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRnJhbWVM
b2FkZXJDbGllbnRFZmw6Omhhc0ZyYW1lVmlldygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6
ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCkKK3sKKyAgICBtX2xvYWRFcnJvciA9IFJlc291cmNlRXJy
b3IoKTsgLyogY2xlYXJzIHByZXZpb3VzIGVycm9yICovCit9CisKK3ZvaWQgRnJhbWVMb2FkZXJD
bGllbnRFZmw6OmZyYW1lTG9hZENvbXBsZXRlZCgpCit7CisgICAgLy8gTm90ZTogQ2FuIGJlIGNh
bGxlZCBtdWx0aXBsZSB0aW1lcy4KK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6c2F2
ZVZpZXdTdGF0ZVRvSXRlbShIaXN0b3J5SXRlbSopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6cmVzdG9yZVZpZXdTdGF0ZSgpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6dXBk
YXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3MoKQoreworfQorCitib29sIEZyYW1lTG9hZGVy
Q2xpZW50RWZsOjpzaG91bGRHb1RvSGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pIGNvbnN0
Cit7CisgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB2ZXJ5IHNpbXBsZSBpbXBsZW1lbnRhdGlvbi4g
TW9yZSBzb3BoaXN0aWNhdGVkCisgICAgLy8gaW1wbGVtZW50YXRpb24gd291bGQgZGVsZWdhdGUg
dGhlIGRlY2lzaW9uIHRvIGEgUG9saWN5RGVsZWdhdGUuCisgICAgLy8gU2VlIG1hYyBpbXBsZW1l
bnRhdGlvbiBmb3IgZXhhbXBsZS4KKyAgICByZXR1cm4gaXRlbTsKK30KKwordm9pZCBGcmFtZUxv
YWRlckNsaWVudEVmbDo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlkUnVuSW5zZWN1
cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjptYWtlUmVwcmVzZW50YXRpb24oRG9jdW1lbnRM
b2FkZXIqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJD
bGllbnRFZmw6OmZvcmNlTGF5b3V0KCkKK3sKKyAgICBld2tfZnJhbWVfZm9yY2VfbGF5b3V0KG1f
ZnJhbWUpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpmb3JjZUxheW91dEZvck5v
bkhUTUwoKQoreworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpzZXRDb3BpZXNPblNj
cm9sbCgpCit7CisgICAgLy8gYXBwYXJlbnRseSBtYWMgc3BlY2lmaWMgKFF0IGNvbW1lbnQpCit9
CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRldGFjaGVkRnJvbVBhcmVudDIoKQorewor
fQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkZXRhY2hlZEZyb21QYXJlbnQzKCkKK3sK
K30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6bG9hZGVkRnJvbUNhY2hlZFBhZ2UoKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6
OmRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRS
ZWRpcmVjdCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRl
ckNsaWVudEVmbDo6ZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IEtVUkwm
LCBkb3VibGUsIGRvdWJsZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEVm
bDo6ZGlzcGF0Y2hXaWxsQ2xvc2UoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKQoreworfQor
Cit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkKCkKK3sKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRSZWNl
aXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3sKKyAgICBDU3RyaW5nIGNzID0gdGl0bGUu
dXRmOCgpOworICAgIGV3a19mcmFtZV90aXRsZV9zZXQobV9mcmFtZSwgY3MuZGF0YSgpKTsKKwor
ICAgIGlmIChld2tfdmlld19mcmFtZV9tYWluX2dldChtX3ZpZXcpICE9IG1fZnJhbWUpCisgICAg
ICAgIHJldHVybjsKKyAgICBld2tfdmlld190aXRsZV9zZXQobV92aWV3LCBjcy5kYXRhKCkpOwor
fQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQor
eworICAgIGV3a19mcmFtZV91cmlfY2hhbmdlZChtX2ZyYW1lKTsKKyAgICBpZiAoZXdrX3ZpZXdf
ZnJhbWVfbWFpbl9nZXQobV92aWV3KSAhPSBtX2ZyYW1lKQorICAgICAgICByZXR1cm47CisgICAg
ZXdrX3ZpZXdfdGl0bGVfc2V0KG1fdmlldywgMCk7CisgICAgZXdrX3ZpZXdfdXJpX2NoYW5nZWQo
bV92aWV3KTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRGaW5p
c2hEb2N1bWVudExvYWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJh
bWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmlyc3RMYXlvdXQoKQoreworICAgIC8vIGVt
aXQgbV9mcmFtZS0+aW5pdGlhbExheW91dENvbXBsZXRlZCgpOworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaFNob3coKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmNhbmNlbFBvbGljeUNoZWNr
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
RWZsOjpkaXNwYXRjaERpZExvYWRNYWluUmVzb3VyY2UoRG9jdW1lbnRMb2FkZXIqKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnJldmVy
dFRvUHJvdmlzaW9uYWxTdGF0ZShEb2N1bWVudExvYWRlciopCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6d2lsbENoYW5nZVRpdGxlKERv
Y3VtZW50TG9hZGVyKikKK3sKKyAgICAvLyBubyBuZWVkIGZvciwgZGlzcGF0Y2hEaWRSZWNlaXZl
VGl0bGUgaXMgdGhlIHJpZ2h0IGNhbGxiYWNrCit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRF
Zmw6OmRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyICpsKQoreworICAgIC8vIG5vIG5lZWQg
Zm9yLCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSBpcyB0aGUgcmlnaHQgY2FsbGJhY2sKK30KKwor
Ym9vbCBGcmFtZUxvYWRlckNsaWVudEVmbDo6Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmNhblNob3dNSU1FVHlwZShjb25z
dCBTdHJpbmcmIE1JTUVUeXBlKSBjb25zdAoreworICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojpp
c1N1cHBvcnRlZEltYWdlTUlNRVR5cGUoTUlNRVR5cGUpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUo
TUlNRVR5cGUpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChQbHVnaW5EYXRhYmFz
ZTo6aW5zdGFsbGVkUGx1Z2lucygpLT5pc01JTUVUeXBlUmVnaXN0ZXJlZChNSU1FVHlwZSkpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEZyYW1l
TG9hZGVyQ2xpZW50RWZsOjpyZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZShjb25zdCBT
dHJpbmcmKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworU3RyaW5nIEZyYW1lTG9h
ZGVyQ2xpZW50RWZsOjpnZW5lcmF0ZWRNSU1FVHlwZUZvclVSTFNjaGVtZShjb25zdCBTdHJpbmcm
KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOwor
fQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRM
b2FkZXIqIGxvYWRlcikKK3sKKyAgICBpZiAoIW1fcGx1Z2luVmlldykgeworICAgICAgICBpZiAo
bV9maXJzdERhdGEpIHsKKyAgICAgICAgICAgIEZyYW1lTG9hZGVyKiBmbCA9IGxvYWRlci0+ZnJh
bWVMb2FkZXIoKTsKKyAgICAgICAgICAgIGZsLT5zZXRFbmNvZGluZyhtX3Jlc3BvbnNlLnRleHRF
bmNvZGluZ05hbWUoKSwgZmFsc2UpOworICAgICAgICAgICAgbV9maXJzdERhdGEgPSBmYWxzZTsK
KyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIG1fcGx1Z2luVmlldy0+ZGlkRmluaXNo
TG9hZGluZygpOworICAgICAgICBtX3BsdWdpblZpZXcgPSAwOworICAgICAgICBtX2hhc1NlbnRS
ZXNwb25zZVRvUGx1Z2luID0gZmFsc2U7CisgICAgfQorfQorCisKK3ZvaWQgRnJhbWVMb2FkZXJD
bGllbnRFZmw6OnByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpZEZpbmlzaExvYWQoKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnBy
ZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKQoreworICAgIC8vIE5PVEU6IHJlbW92ZWQg
dXNlbGVzcyBjYWxsIHRvIGRldGFjaENoaWxkcmVuIHdoaWNoIGlzIGNhbGxlZCBieSBGcmFtZUxv
YWRlci4KKyAgICAvLyBtX2ZyYW1lLT5sb2FkZXIoKS0+ZGV0YWNoQ2hpbGRyZW4oKTsKK30KKwor
dm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwg
Y29uc3QgS1VSTCYgdXJsKQoreworICAgIC8vIG5vIG5lZWQgZm9yLCBkaXNwYXRjaERpZFJlY2Vp
dmVUaXRsZSBpcyB0aGUgcmlnaHQgY2FsbGJhY2sKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVu
dEVmbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChEb2N1bWVudExvYWRlciosIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGxlbmd0aFJlY2VpdmVkKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlk
RmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZs
OjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpCit7CisgICAgaWYgKG1fZmly
c3REYXRhKSB7CisgICAgICAgIEZyYW1lTG9hZGVyKiBmbCA9IGxvYWRlci0+ZnJhbWVMb2FkZXIo
KTsKKyAgICAgICAgZmwtPnNldEVuY29kaW5nKG1fcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgp
LCBmYWxzZSk7CisgICAgICAgIG1fZmlyc3REYXRhID0gZmFsc2U7CisgICAgfQorCit9CisKK2Jv
b2wgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9y
eUNhY2hlKERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIGludCBsZW5ndGgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNo
RGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nLCBjb25zdCBTY3Jp
cHRTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnIpCit7CisgICAgZGlzcGF0Y2hEaWRGYWlsTG9hZChlcnIpOworfQorCit2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycikKK3sKKyAgICBtX2xvYWRFcnJvciA9IGVycjsKKyAgICBld2tfZnJhbWVfbG9h
ZF9lcnJvcgorICAgICAgICAobV9mcmFtZSwgbV9sb2FkRXJyb3IuZG9tYWluKCkudXRmOCgpLmRh
dGEoKSwKKyAgICAgICAgIG1fbG9hZEVycm9yLmVycm9yQ29kZSgpLCBtX2xvYWRFcnJvci5pc0Nh
bmNlbGxhdGlvbigpLAorICAgICAgICAgbV9sb2FkRXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24o
KS51dGY4KCkuZGF0YSgpLAorICAgICAgICAgbV9sb2FkRXJyb3IuZmFpbGluZ1VSTCgpLnV0Zjgo
KS5kYXRhKCkpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkb3dubG9hZChSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKKy8vIGNvcGllZCBmcm9tIFdlYktpdC9NaXNjL1dlYktpdEVycm9yc1tQcml2YXRlXS5oCitl
bnVtIHsKKyAgICBXZWJLaXRFcnJvckNhbm5vdFNob3dNSU1FVHlwZSA9ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxMDAsCisgICAgV2ViS2l0RXJyb3JDYW5ub3RTaG93VVJMID0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAxLAorICAgIFdlYktpdEVycm9yRnJhbWVMb2Fk
SW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSA9ICAgICAgICAgICAgIDEwMiwKKyAgICBXZWJLaXRF
cnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0ID0gICAgICAgICAgICAgICAgICAgICAgICAxMDMs
CisgICAgV2ViS2l0RXJyb3JDYW5ub3RGaW5kUGx1Z0luID0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMjAwLAorICAgIFdlYktpdEVycm9yQ2Fubm90TG9hZFBsdWdJbiA9ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDIwMSwKKyAgICBXZWJLaXRFcnJvckphdmFVbmF2YWlsYWJs
ZSA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDIsCit9OworCitSZXNvdXJjZUVy
cm9yIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpCit7CisgICAgUmVzb3VyY2VFcnJvciBlcnJvcigiRXJyb3IiLCAtOTk5
LCByZXF1ZXN0LnVybCgpLnByZXR0eVVSTCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIlJl
cXVlc3QgY2FuY2VsbGVkIik7CisgICAgZXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24odHJ1ZSk7Cisg
ICAgcmV0dXJuIGVycm9yOworfQorCitSZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50RWZs
OjpibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIHJl
dHVybiBSZXNvdXJjZUVycm9yKCJFcnJvciIsIFdlYktpdEVycm9yQ2Fubm90VXNlUmVzdHJpY3Rl
ZFBvcnQsIHJlcXVlc3QudXJsKCkucHJldHR5VVJMKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIlJlcXVlc3QgYmxvY2tlZCIpOworfQorCitSZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KQoreworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKCJFcnJvciIsIFdlYktpdEVycm9yQ2Fubm90
U2hvd1VSTCwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAiQ2Fubm90IHNob3cgVVJMIik7Cit9CisKK1Jlc291cmNlRXJyb3IgRnJhbWVMb2FkZXJDbGll
bnRFZmw6OmludGVycnVwdEZvclBvbGljeUNoYW5nZUVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKK3sKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcigiRXJyb3IiLCBXZWJLaXRF
cnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgIkZyYW1lIGxvZCBpbnRlcnJ1cGVkIGJ5
IHBvbGljeSBjaGFuZ2UiKTsKK30KKworUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlckNsaWVudEVm
bDo6Y2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCit7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoIkVycm9yIiwgV2ViS2l0RXJyb3JDYW5u
b3RTaG93TUlNRVR5cGUsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICJDYW5ub3Qgc2hvdyBtaW1ldHlwZSIpOworfQorCitSZXNvdXJjZUVycm9yIEZy
YW1lTG9hZGVyQ2xpZW50RWZsOjpmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoIkVycm9yIiwg
LTk5OCAvKiAjIyMgKi8sIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICJGaWxlIGRvZXMgbm90IGV4aXN0Iik7Cit9CisKK1Jlc291cmNlRXJyb3IgRnJh
bWVMb2FkZXJDbGllbnRFZmw6OnBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gUmVzb3Vy
Y2VFcnJvcigiRXJyb3IiLCAwLCAiIiwgIiIpOworfQorCitib29sIEZyYW1lTG9hZGVyQ2xpZW50
RWZsOjpzaG91bGRGYWxsQmFjayhjb25zdCBSZXNvdXJjZUVycm9yJikKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBGcmFtZUxvYWRlckNsaWVu
dEVmbDo6Y2FuQ2FjaGVQYWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0Zy
YW1lKiBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hDcmVhdGVQYWdlKCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KGNvbnN0IFJlc291cmNlRXJy
b3ImKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGll
bnRFZmw6OnNldE1haW5Eb2N1bWVudEVycm9yKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIGlmICghbV9wbHVnaW5WaWV3KSB7CisgICAg
ICAgIGlmIChtX2ZpcnN0RGF0YSkgeworICAgICAgICAgICAgbG9hZGVyLT5mcmFtZUxvYWRlcigp
LT5zZXRFbmNvZGluZyhtX3Jlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKSwgZmFsc2UpOworICAg
ICAgICAgICAgbV9maXJzdERhdGEgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7Cisg
ICAgICAgIG1fcGx1Z2luVmlldy0+ZGlkRmFpbChlcnJvcik7CisgICAgICAgIG1fcGx1Z2luVmll
dyA9IDA7CisgICAgICAgIG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW4gPSBmYWxzZTsKKyAgICB9
Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnN0YXJ0RG93bmxvYWQoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50RWZsOjp1cGRhdGVHbG9iYWxIaXN0b3J5KCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworLy8gICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBtX2ZyYW1lLT5sb2FkZXIo
KS0+ZG9jdW1lbnRMb2FkZXIoKTsKKy8vICAgICBFV2ViSGlzdG9yeUludGVyZmFjZSogaGlzdG9y
eUludGVyZmFjZSA9IEVXZWJIaXN0b3J5SW50ZXJmYWNlOjpkZWZhdWx0SW50ZXJmYWNlKCk7Cisv
LyAgICAgaWYgKGhpc3RvcnlJbnRlcmZhY2UgJiYgaGlzdG9yeUludGVyZmFjZS0+Y2FsbGJhY2sp
CisvLyAgICAgICAgIGhpc3RvcnlJbnRlcmZhY2UtPmNhbGxiYWNrKGxvYWRlci0+dXJsRm9ySGlz
dG9yeSgpLnByZXR0eVVSTCgpLnV0ZjgoKS5kYXRhKCkpOworfQorCit2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50RWZsOjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSopCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6
dHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikKK3sKK30K
Kwordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3
UGFnZSgpCit7CisgICAgQVNTRVJUKG1fZnJhbWUpOworICAgIEFTU0VSVChtX3ZpZXcpOworICAg
IGV3a19mcmFtZV92aWV3X2NyZWF0ZV9mb3JfdmlldyhtX2ZyYW1lLCBtX3ZpZXcpOworfQorCit9
CmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
RWZsLmggYi9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmMyMmQ4YwotLS0gL2Rldi9udWxs
CisrKyBiL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaApA
QCAtMCwwICsxLDIxNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2luIDx6
YWNrQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0
ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBJTmRUIC0gSW5z
dGl0dXRvIE5va2lhIGRlIFRlY25vbG9naWEKKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFBy
b0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1z
dW5nIEVsZWN0cm9uaWNzCisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEZyYW1lTG9hZGVyQ2xpZW50RWZsX2gKKyNkZWZpbmUgRnJhbWVMb2FkZXJDbGllbnRFZmxf
aAorCisjaW5jbHVkZSAiRVdlYktpdC5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50Lmgi
CisjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGb3JtU3RhdGU7CisKK2NsYXNzIEZyYW1l
TG9hZGVyQ2xpZW50RWZsIDogcHVibGljIEZyYW1lTG9hZGVyQ2xpZW50IHsKKyBwdWJsaWM6Cisg
ICAgZXhwbGljaXQgRnJhbWVMb2FkZXJDbGllbnRFZmwoRXZhc19PYmplY3QgKnZpZXcpOworICAg
IHZpcnR1YWwgfkZyYW1lTG9hZGVyQ2xpZW50RWZsKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGZy
YW1lTG9hZGVyRGVzdHJveWVkKCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0V2ViRnJhbWUoRXZh
c19PYmplY3QgKmZyYW1lKSB7IG1fZnJhbWUgPSBmcmFtZTsgfQorICAgIEV2YXNfT2JqZWN0KiB3
ZWJGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KKyAgICBFdmFzX09iamVjdCogd2Vi
VmlldygpIGNvbnN0IHsgcmV0dXJuIG1fdmlldzsgfQorCisgICAgdm9pZCBzZXRDdXN0b21Vc2Vy
QWdlbnQoY29uc3QgU3RyaW5nICZhZ2VudCk7CisgICAgY29uc3QgU3RyaW5nJiBjdXN0b21Vc2Vy
QWdlbnQoKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBoYXNXZWJWaWV3KCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBib29sIGhhc0ZyYW1lVmlldygpIGNvbnN0OworCisgICAgdm9pZCBjYWxsUG9s
aWN5RnVuY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgUG9saWN5QWN0aW9uIGFj
dGlvbik7CisKKyAgICB2aXJ0dWFsIHZvaWQgbWFrZVJlcHJlc2VudGF0aW9uKERvY3VtZW50TG9h
ZGVyKik7CisgICAgdmlydHVhbCB2b2lkIGZvcmNlTGF5b3V0KCk7CisgICAgdmlydHVhbCB2b2lk
IGZvcmNlTGF5b3V0Rm9yTm9uSFRNTCgpOworCisgICAgdmlydHVhbCB2b2lkIHNldENvcGllc09u
U2Nyb2xsKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoZWRGcm9tUGFyZW50MigpOworICAg
IHZpcnR1YWwgdm9pZCBkZXRhY2hlZEZyb21QYXJlbnQzKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQg
bG9hZGVkRnJvbUNhY2hlZFBhZ2UoKTsKKworICAgIHZpcnR1YWwgdm9pZCBhc3NpZ25JZGVudGlm
aWVyVG9Jbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9h
ZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hXaWxsU2VuZFJlcXVlc3QoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nICBpZGVudGlm
aWVyLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJl
c3BvbnNlKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoRG9j
dW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOworICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb2N1bWVudExvYWRl
ciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmKTsKKworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFB1c2hTdGF0ZVdpdGhpblBhZ2Uo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRQb3BTdGF0ZVdpdGhpblBhZ2UoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlKCk7CisgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQWRkQmFja0ZvcndhcmRJdGVtKFdlYkNvcmU6Okhpc3Rv
cnlJdGVtKikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVtb3ZlQmFja0Zv
cndhcmRJdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ2hhbmdlQmFja0ZvcndhcmRJbmRleCgpIGNvbnN0OworICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChXZWJDb3JlOjpET01XcmFw
cGVyV29ybGQqKTsKKworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENhbmNlbEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyAgaWRlbnRpZmll
ciwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nICBp
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGludCBsZW5ndGhSZWNlaXZlZCk7CisgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgIGlk
ZW50aWZpZXIpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERvY3Vt
ZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyAgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJv
ciYpOworICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlD
YWNoZShEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBpbnQgbGVuZ3RoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRM
b2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6U2NyaXB0U3RyaW5nJiBzb3VyY2VTdHJpbmcpOworCisgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCk7CisgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCk7CisgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IEtVUkwmLCBk
b3VibGUsIGRvdWJsZSk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRp
b25XaXRoaW5QYWdlKCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCk7Cisg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOworICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFp
bFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOworICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpOworICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZEZpbmlzaExvYWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJz
dExheW91dCgpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dCgpOworCisgICAgdmlydHVhbCBGcmFtZSogZGlzcGF0Y2hDcmVhdGVQYWdlKCk7
CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoU2hvdygpOworCisgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUoRnJhbWVQb2xpY3lGdW5jdGlvbiwgY29uc3Qg
U3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lUG9saWN5RnVu
Y3Rpb24sIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBX
VEY6OlBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUpOworICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oRnJh
bWVQb2xpY3lGdW5jdGlvbiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIFdURjo6UGFzc1JlZlB0cjxGb3JtU3RhdGU+KTsKKyAgICB2aXJ0dWFsIHZvaWQg
Y2FuY2VsUG9saWN5Q2hlY2soKTsKKworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFVuYWJsZVRv
SW1wbGVtZW50UG9saWN5KGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKworICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKEZyYW1lUG9saWN5RnVuY3Rpb24sIFdURjo6UGFzc1Jl
ZlB0cjxGb3JtU3RhdGU+KTsKKworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZExvYWRNYWlu
UmVzb3VyY2UoRG9jdW1lbnRMb2FkZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmV2ZXJ0VG9Qcm92
aXNpb25hbFN0YXRlKERvY3VtZW50TG9hZGVyKik7CisgICAgdmlydHVhbCB2b2lkIHNldE1haW5E
b2N1bWVudEVycm9yKERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOworCisg
ICAgdmlydHVhbCB2b2lkIHBvc3RQcm9ncmVzc1N0YXJ0ZWROb3RpZmljYXRpb24oKTsKKyAgICB2
aXJ0dWFsIHZvaWQgcG9zdFByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkTm90aWZpY2F0aW9uKCk7Cisg
ICAgdmlydHVhbCB2b2lkIHBvc3RQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9uKCk7CisKKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBi
b29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsK
KyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6
ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFdURjo6VmVjdG9yPFN0
cmluZz4mLCBjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCk7
CisgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCogcGx1Z2luV2lk
Z2V0KTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lk
Z2V0KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IEtVUkwmIGJhc2VV
UkwsIGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVj
dG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBvdmVycmlkZU1l
ZGlhVHlwZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dPYmplY3RDbGVhcmVkKCk7
CisgICAgdmlydHVhbCB2b2lkIGRvY3VtZW50RWxlbWVudEF2YWlsYWJsZSgpOworCisgICAgdmly
dHVhbCB2b2lkIGRpZFBlcmZvcm1GaXJzdE5hdmlnYXRpb24oKSBjb25zdDsKKworICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RlckZvckljb25Ob3RpZmljYXRpb24oYm9vbCk7CisKKyAgICB2aXJ0dWFs
IE9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TWFpbkZyYW1lRG9j
dW1lbnRSZWFkeShib29sKTsKKworICAgIHZpcnR1YWwgdm9pZCBzdGFydERvd25sb2FkKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpOworCisgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VUaXRsZShE
b2N1bWVudExvYWRlciopOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VUaXRsZShEb2N1bWVu
dExvYWRlciopOworCisgICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2Fk
ZXIqLCBjb25zdCBjaGFyKiwgaW50KTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2FkaW5n
KERvY3VtZW50TG9hZGVyKik7CisKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9y
eSgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcygp
OworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRHb1RvSGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qKSBj
b25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpOworICAg
IHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qKTsKKwor
ICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKTsKKyAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpOworICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJM
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdmlydHVhbCBSZXNvdXJjZUVycm9y
IGludGVycnVwdEZvclBvbGljeUNoYW5nZUVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwor
CisgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgZmlsZURvZXNO
b3RFeGlzdEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2aXJ0dWFsIFJlc291
cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRmFsbEJhY2soY29uc3QgUmVzb3VyY2VFcnJv
ciYpOworCisgICAgdmlydHVhbCBib29sIGNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGNhblNob3dNSU1FVHlwZShjb25zdCBT
dHJpbmcmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVwcmVzZW50YXRpb25FeGlzdHNGb3JV
UkxTY2hlbWUoY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgZ2VuZXJh
dGVkTUlNRVR5cGVGb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJikgY29uc3Q7CisKKyAgICB2aXJ0
dWFsIHZvaWQgZnJhbWVMb2FkQ29tcGxldGVkKCk7CisgICAgdmlydHVhbCB2b2lkIHNhdmVWaWV3
U3RhdGVUb0l0ZW0oSGlzdG9yeUl0ZW0qKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZVZpZXdT
dGF0ZSgpOworICAgIHZpcnR1YWwgdm9pZCBwcm92aXNpb25hbExvYWRTdGFydGVkKCk7CisgICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZv
ckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpOworCisgICAgdmlydHVhbCBXVEY6OlBhc3NSZWZQdHI8
RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CisgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNv
bnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEtVUkwmKTsKKworICAgIHZpcnR1YWwgU3RyaW5nIHVz
ZXJBZ2VudChjb25zdCBLVVJMJik7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZVBsYXRmb3JtRGF0
YVRvQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlv
blRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKENhY2hlZEZyYW1lKik7CisgICAgdmlydHVhbCB2
b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKTsKKworICAgIHZpcnR1YWwgYm9v
bCBjYW5DYWNoZVBhZ2UoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWQoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgcHJpdmF0ZToKKyAgICBFdmFzX09iamVjdCAq
bV92aWV3OworICAgIEV2YXNfT2JqZWN0ICptX2ZyYW1lOworCisgICAgUmVzb3VyY2VSZXNwb25z
ZSBtX3Jlc3BvbnNlOworICAgIGJvb2wgbV9maXJzdERhdGE7CisgICAgU3RyaW5nIG1fdXNlckFn
ZW50OworICAgIFN0cmluZyBtX2N1c3RvbVVzZXJBZ2VudDsKKworICAgIFJlc291cmNlRXJyb3Ig
bV9sb2FkRXJyb3I7CisKKyAgICAvLyBQbHVnaW4gdmlldyB0byByZWRpcmVjdCBkYXRhIHRvCisg
ICAgUGx1Z2luVmlldyogbV9wbHVnaW5WaWV3OworICAgIGJvb2wgbV9oYXNTZW50UmVzcG9uc2VU
b1BsdWdpbjsKK307CisKK30KKworI2VuZGlmIC8vIEZyYW1lTG9hZGVyQ2xpZW50RWZsX2gKZGlm
ZiAtLWdpdCBhL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmNw
cCBiL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44M2M3ZDhlCi0tLSAvZGV2L251bGwKKysr
IGIvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwCkBAIC0w
LDAgKzEsMTE0IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAwOCBJTmRUIC0gSW5zdGl0dXRv
IE5va2lhIGRlIFRlY25vbG9naWEKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJ
T04gZW1iZWRkZWQgc3lzdGVtcworICogIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFNhbXN1bmcg
RWxlY3Ryb25pY3MKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAg
TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl
ZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnRFZmwuaCIKKworI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBJbnNwZWN0b3JD
bGllbnRFZmw6Omluc3BlY3RvckRlc3Ryb3llZCgpCit7CisgICAgZGVsZXRlIHRoaXM7Cit9CisK
K1BhZ2UqIEluc3BlY3RvckNsaWVudEVmbDo6Y3JlYXRlUGFnZSgpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworU3RyaW5nIEluc3BlY3RvckNsaWVudEVmbDo6
bG9jYWxpemVkU3RyaW5nc1VSTCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBJbnNwZWN0b3JDbGllbnRFZmw6OmhpZGRlblBhbmVs
cygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisK
K3ZvaWQgSW5zcGVjdG9yQ2xpZW50RWZsOjpzaG93V2luZG93KCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIEluc3BlY3RvckNsaWVudEVmbDo6Y2xvc2VXaW5kb3coKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ2xpZW50RWZsOjphdHRh
Y2hXaW5kb3coKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9y
Q2xpZW50RWZsOjpkZXRhY2hXaW5kb3coKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgSW5zcGVjdG9yQ2xpZW50RWZsOjpzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25l
ZCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEluc3BlY3RvckNsaWVudEVm
bDo6aGlnaGxpZ2h0KE5vZGUqIG5vZGUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBJbnNwZWN0b3JDbGllbnRFZmw6OmhpZGVIaWdobGlnaHQoKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ2xpZW50RWZsOjppbnNwZWN0ZWRVUkxDaGFu
Z2VkKGNvbnN0IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBJ
bnNwZWN0b3JDbGllbnRFZmw6Omluc3BlY3RvcldpbmRvd09iamVjdENsZWFyZWQoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ2xpZW50RWZsOjpwb3B1bGF0
ZVNldHRpbmcoY29uc3QgU3RyaW5nJiwgU3RyaW5nKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIEluc3BlY3RvckNsaWVudEVmbDo6c3RvcmVTZXR0aW5nKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBJ
bnNwZWN0b3JDbGllbnRFZmw6OnJlbW92ZVNldHRpbmcoY29uc3QgU3RyaW5nJikKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit9CmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5oIGIvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44
NTNlN2JkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JDbGllbnRFZmwuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDggSU5kVCAtIEluc3RpdHV0byBOb2tpYSBkZSBUZWNub2xvZ2lhCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworICogQ29weXJpZ2h0IChDKSAy
MDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5zcGVjdG9yQ2xpZW50RWZsX2gK
KyNkZWZpbmUgSW5zcGVjdG9yQ2xpZW50RWZsX2gKKworI2luY2x1ZGUgIkluc3BlY3RvckNsaWVu
dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBOb2RlOworY2xhc3MgUGFnZTsKK2Ns
YXNzIFN0cmluZzsKKworY2xhc3MgSW5zcGVjdG9yQ2xpZW50RWZsIDogcHVibGljIFdlYkNvcmU6
Okluc3BlY3RvckNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRl
c3Ryb3llZCgpOworCisgICAgdmlydHVhbCBXZWJDb3JlOjpQYWdlKiBjcmVhdGVQYWdlKCk7CisK
KyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBsb2NhbGl6ZWRTdHJpbmdzVVJMKCk7CisKKyAg
ICB2aXJ0dWFsIFN0cmluZyBoaWRkZW5QYW5lbHMoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzaG93
V2luZG93KCk7CisgICAgdmlydHVhbCB2b2lkIGNsb3NlV2luZG93KCk7CisKKyAgICB2aXJ0dWFs
IHZvaWQgYXR0YWNoV2luZG93KCk7CisgICAgdmlydHVhbCB2b2lkIGRldGFjaFdpbmRvdygpOwor
CisgICAgdmlydHVhbCB2b2lkIHNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdo
dCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0KFdlYkNvcmU6Ok5vZGUqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodCgpOworICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0ZWRV
UkxDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgbmV3VVJMKTsKKworICAgIHZpcnR1YWwg
dm9pZCBpbnNwZWN0b3JXaW5kb3dPYmplY3RDbGVhcmVkKCk7CisgICAgdmlydHVhbCB2b2lkIHBv
cHVsYXRlU2V0dGluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGtleSwgV2ViQ29yZTo6U3RyaW5n
Kik7CisgICAgdmlydHVhbCB2b2lkIHN0b3JlU2V0dGluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcm
IGtleSwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVNl
dHRpbmcoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBrZXkpOworfTsKK30KKworI2VuZGlmIC8vIElu
c3BlY3RvckNsaWVudEVmbF9oCmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL2V3ZWJraXQucGMuaW4g
Yi9XZWJLaXQvZWZsL2V3ZWJraXQucGMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMjRmNjZlOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9lZmwvZXdlYmtpdC5wYy5p
bgpAQCAtMCwwICsxLDExIEBACitwcmVmaXg9QHByZWZpeEAKK2V4ZWNfcHJlZml4PUBleGVjX3By
ZWZpeEAKK2xpYmRpcj1AbGliZGlyQAoraW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKworTmFtZTog
V2ViS2l0LUVGTAorRGVzY3JpcHRpb246IFdlYiBjb250ZW50IGVuZ2luZSBmb3IgRUZMIGFwcGxp
Y2F0aW9ucworVmVyc2lvbjogQFZFUlNJT05ACitSZXF1aXJlczogY2Fpcm8gZXZhcyBlY29yZQor
TGliczogLUwke2xpYmRpcn0gLWxld2Via2l0CitDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfS9FV2Vi
S2l0CmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL2V3ay9FV2ViS2l0LmggYi9XZWJLaXQvZWZsL2V3
ay9FV2ViS2l0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDg3ZDIwNAot
LS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9lZmwvZXdrL0VXZWJLaXQuaApAQCAtMCwwICsxLDM0
IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOC0yMDA5IElOZFQgLSBJbnN0aXR1dG8gTm9r
aWEgZGUgVGVjbm9sb2dpYQorICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBl
bWJlZGRlZCBzeXN0ZW1zCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVj
dHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAg
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyovCisKKyNpZm5kZWYgRVdlYktpdF9oCisjZGVmaW5lIEVXZWJLaXRfaAorCisjaW5j
bHVkZSAiZXdrX2VhcGkuaCIKKyNpbmNsdWRlICJld2tfZnJhbWUuaCIKKyNpbmNsdWRlICJld2tf
aGlzdG9yeS5oIgorI2luY2x1ZGUgImV3a19tYWluLmgiCisjaW5jbHVkZSAiZXdrX3NldHRpbmdz
LmgiCisjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKKworI2luY2x1ZGUgPEV2YXMuaD4KKworI2VuZGlm
IC8vIEVXZWJLaXRfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9ld2svZXdrX2VhcGkuaCBiL1dl
YktpdC9lZmwvZXdrL2V3a19lYXBpLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYWRiOGQ3YgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9lZmwvZXdrL2V3a19lYXBpLmgK
QEAgLTAsMCArMSw1MCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJ
T04gZW1iZWRkZWQgc3lzdGVtcworICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFNhbXN1bmcg
RWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisqLworCisjaWZuZGVmIGV3a19lYXBpX2gKKyNkZWZpbmUgZXdrX2VhcGlfaAor
CisjaWZkZWYgRUFQSQorIyB1bmRlZiBFQVBJCisjZW5kaWYKKworI2lmZGVmIF9XSU4zMgorIyBp
ZmRlZiBCVUlMRElOR19XRUJLSVQKKyMgIGlmZGVmIERMTF9FWFBPUlQKKyMgICBkZWZpbmUgRUFQ
SSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKKyMgIGVsc2UKKyMgICBkZWZpbmUgRUFQSQorIyAgZW5k
aWYgLyogISBETExfRVhQT1JUICovCisjIGVsc2UKKyMgIGRlZmluZSBFQVBJIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQorIyBlbmRpZiAvKiAhIEVGTF9FSU5BX0JVSUxEICovCisjZWxzZQorIyBpZmRl
ZiBfX0dOVUNfXworIyAgaWYgX19HTlVDX18gPj0gNAorIyAgIGRlZmluZSBFQVBJIF9fYXR0cmli
dXRlX18gKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKQorIyAgZWxzZQorIyAgIGRlZmluZSBFQVBJ
CisjICBlbmRpZgorIyBlbHNlCisjICBkZWZpbmUgRUFQSQorIyBlbmRpZgorI2VuZGlmCisKKyNl
bmRpZiAvLyBld2tfZWFwaV9oCmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUu
Y3BwIGIvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi43ZWE1OTNlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2VmbC9ld2sv
ZXdrX2ZyYW1lLmNwcApAQCAtMCwwICsxLDE4MzggQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAy
MDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKKyAgICBDb3B5cmlnaHQgKEMpIDIw
MDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworLy8gVW5jb21tZW50IHRvIHZpZXcgZnJh
bWUgcmVnaW9ucyBhbmQgZGVidWcgbWVzc2FnZXMKKy8vICNkZWZpbmUgRVdLX0ZSQU1FX0RFQlVH
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfZnJhbWUuaCIKKworI2luY2x1
ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKKyNpbmNsdWRlICJFV2Vi
S2l0LmgiCisjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJGb2N1c0NvbnRyb2xs
ZXIuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudEVmbC5oIgorI2luY2x1ZGUgIkZyYW1l
VHJlZS5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQu
aCIKKyNpbmNsdWRlICJIVE1MUGx1Z0luRWxlbWVudC5oIgorI2luY2x1ZGUgIktleWJvYXJkQ29k
ZXMuaCIKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50
LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1X
aGVlbEV2ZW50LmgiCisjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCisjaW5jbHVkZSAiUmVm
UHRyLmgiCisjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlcXVl
c3QuaCIKKyNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgorI2luY2x1ZGUgIlN1YnN0aXR1dGVEYXRhLmgiCisKKyNpbmNsdWRlIDxFaW5hLmg+CisjaW5j
bHVkZSA8ZWluYV9zYWZldHlfY2hlY2tzLmg+CisjaW5jbHVkZSA8RXZhcy5oPgorCitzdGF0aWMg
Y29uc3QgY2hhciBFV0tfRlJBTUVfVFlQRV9TVFJbXSA9ICJFV0tfRnJhbWUiOworCitzdHJ1Y3Qg
RXdrX0ZyYW1lX1NtYXJ0X0RhdGEgeworICAgIEV2YXNfT2JqZWN0X1NtYXJ0X0NsaXBwZWRfRGF0
YSBiYXNlOworICAgIEV2YXNfT2JqZWN0KiBzZWxmOworICAgIEV2YXNfT2JqZWN0KiB2aWV3Owor
I2lmZGVmIEVXS19GUkFNRV9ERUJVRworICAgIEV2YXNfT2JqZWN0KiByZWdpb247CisjZW5kaWYK
KyAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWU7CisgICAgY29uc3QgY2hhciogdGhlbWU7CisgICAg
Y29uc3QgY2hhciogdGl0bGU7CisgICAgY29uc3QgY2hhciogdXJpOworICAgIGNvbnN0IGNoYXIq
IG5hbWU7CisgICAgc3RydWN0IHsKKyAgICAgICAgRXZhc19Db29yZCB3LCBoOworICAgIH0gY29u
dGVudHNfc2l6ZTsKKyAgICBFaW5hX0Jvb2wgem9vbV90ZXh0X29ubHk6MTsKKyAgICBFaW5hX0Jv
b2wgZWRpdGFibGU6MTsKK307CisKK3N0cnVjdCBFaW5hX0l0ZXJhdG9yX0V3a19GcmFtZSB7Cisg
ICAgRWluYV9JdGVyYXRvciBiYXNlOworICAgIEV2YXNfT2JqZWN0KiBvYmo7CisgICAgV2ViQ29y
ZTo6RnJhbWUqIGxhc3Q7Cit9OworCisjaWZuZGVmIEVXS19UWVBFX0NIRUNLCisjZGVmaW5lIEVX
S19GUkFNRV9UWVBFX0NIRUNLKG8sIC4uLikgZG8geyB9IHdoaWxlICgwKQorI2Vsc2UKKyNkZWZp
bmUgRVdLX0ZSQU1FX1RZUEVfQ0hFQ0sobywgLi4uKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY29uc3QgY2hhciogX3RtcF9v
dHlwZSA9IGV2YXNfb2JqZWN0X3R5cGVfZ2V0KG8pOyAgICAgICAgICAgICAgIFwKKyAgICAgICAg
aWYgKEVJTkFfVU5MSUtFTFkoX3RtcF9vdHlwZSAhPSBFV0tfRlJBTUVfVFlQRV9TVFIpKSB7ICAg
ICAgICAgIFwKKyAgICAgICAgICAgIEVJTkFfTE9HX0NSSVQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAoIiVwICglcykgaXMg
bm90IG9mIGFuIGV3a19mcmFtZSEiLCBvLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAg
ICAgICAgX3RtcF9vdHlwZSA/IF90bXBfb3R5cGUgOiAiKG51bGwpIik7ICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlICgw
KQorI2VuZGlmCisKKyNkZWZpbmUgRVdLX0ZSQU1FX1NEX0dFVChvLCBwdHIpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgRXdrX0ZyYW1lX1NtYXJ0X0RhdGEqIHB0ciA9IChF
d2tfRnJhbWVfU21hcnRfRGF0YSopZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQobykKKworI2Rl
ZmluZSBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBwdHIsIC4uLikgICAgICAgICBcCisg
ICAgRVdLX0ZSQU1FX1RZUEVfQ0hFQ0sobywgX19WQV9BUkdTX18pOyAgICAgICAgICAgICAgIFwK
KyAgICBFV0tfRlJBTUVfU0RfR0VUKG8sIHB0cik7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIGlmICghcHRyKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIENSSVRJQ0FMKCJubyBzbWFydCBkYXRhIGZvciBvYmplY3QgJXAgKCVzKSIs
ICAgIFwKKyAgICAgICAgICAgICAgICAgbywgZXZhc19vYmplY3RfdHlwZV9nZXQobykpOyAgICAg
ICAgICAgXAorICAgICAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgfQorCitzdGF0aWMgRXZhc19TbWFydF9DbGFzcyBfcGFyZW50X3NjID0g
RVZBU19TTUFSVF9DTEFTU19JTklUX05VTEw7CisKKyNpZmRlZiBFV0tfRlJBTUVfREVCVUcKK3N0
YXRpYyBpbmxpbmUgdm9pZCBfZXdrX2ZyYW1lX2RlYnVnKEV2YXNfT2JqZWN0KiBvKQoreworICAg
IEV2YXNfT2JqZWN0KiBjbGlwLCAqcGFyZW50OworICAgIEV2YXNfQ29vcmQgeCwgeSwgdywgaCwg
Y3gsIGN5LCBjdywgY2g7CisgICAgaW50IHIsIGcsIGIsIGEsIGNyLCBjZywgY2IsIGNhOworCisg
ICAgZXZhc19vYmplY3RfY29sb3JfZ2V0KG8sICZyLCAmZywgJmIsICZhKTsKKyAgICBldmFzX29i
amVjdF9nZW9tZXRyeV9nZXQobywgJngsICZ5LCAmdywgJmgpOworCisgICAgY2xpcCA9IGV2YXNf
b2JqZWN0X2NsaXBfZ2V0KG8pOworICAgIGV2YXNfb2JqZWN0X2NvbG9yX2dldChjbGlwLCAmY3Is
ICZjZywgJmNiLCAmY2EpOworICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldChjbGlwLCAmY3gs
ICZjeSwgJmN3LCAmY2gpOworCisgICAgZnByaW50ZihzdGRlcnIsICIlcDogdHlwZT0lcyBuYW1l
PSVzLCB2aXNpYmxlPSVkLCBjb2xvcj0lMDJ4JTAyeCUwMnglMDJ4LCAlZCwlZCslZHglZCwgY2xp
cHBlcj0lcCAoJWQsICUwMnglMDJ4JTAyeCUwMngsICVkLCVkKyVkeCVkKVxuIiwKKyAgICAgICAg
ICAgIG8sIGV2YXNfb2JqZWN0X3R5cGVfZ2V0KG8pLCBldmFzX29iamVjdF9uYW1lX2dldChvKSwg
ZXZhc19vYmplY3RfdmlzaWJsZV9nZXQobyksCisgICAgICAgICAgICByLCBnLCBiLCBhLCB4LCB5
LCB3LCBoLAorICAgICAgICAgICAgY2xpcCwgZXZhc19vYmplY3RfdmlzaWJsZV9nZXQoY2xpcCks
IGNyLCBjZywgY2IsIGNhLCBjeCwgY3ksIGN3LCBjaCk7CisgICAgcGFyZW50ID0gZXZhc19vYmpl
Y3Rfc21hcnRfcGFyZW50X2dldChvKTsKKyAgICBpZiAoIXBhcmVudCkKKyAgICAgICAgZnByaW50
ZihzdGRlcnIsICJcbiIpOworICAgIGVsc2UKKyAgICAgICAgX2V3a19mcmFtZV9kZWJ1ZyhwYXJl
bnQpOworfQorI2VuZGlmCisKK3N0YXRpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbCog
X2V3a19mcmFtZV9sb2FkZXJfZWZsX2dldChXZWJDb3JlOjpGcmFtZSogZnJhbWUpCit7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsKj4oZnJhbWUt
PmxvYWRlcigpLT5jbGllbnQoKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgRXZhc19PYmplY3QqIGtp
dChXZWJDb3JlOjpGcmFtZSogZnJhbWUpCit7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwqIGZsID0gX2V3a19mcmFt
ZV9sb2FkZXJfZWZsX2dldChmcmFtZSk7CisgICAgaWYgKCFmbCkKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIGZsLT53ZWJGcmFtZSgpOworfQorCitzdGF0aWMgRWluYV9Cb29sIF9ld2tf
ZnJhbWVfY2hpbGRyZW5faXRlcmF0b3JfbmV4dChFaW5hX0l0ZXJhdG9yX0V3a19GcmFtZSogaXQs
IEV2YXNfT2JqZWN0KiogZGF0YSkKK3sKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihp
dC0+b2JqLCBzZCwgRUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CisKKyAgICBXZWJDb3JlOjpGcmFtZVRyZWUqIHRy
ZWUgPSBzZC0+ZnJhbWUtPnRyZWUoKTsgLy8gY2hlY2sgaWYgaXQncyBzdGlsbCB2YWxpZAorICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh0cmVlLCBFSU5BX0ZBTFNFKTsKKworICAg
IFdlYkNvcmU6OkZyYW1lKiBmcmFtZTsKKyAgICBpZiAoaXQtPmxhc3QpCisgICAgICAgIGZyYW1l
ID0gaXQtPmxhc3QtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKTsKKyAgICBlbHNlCisgICAgICAgIGZy
YW1lID0gdHJlZS0+Zmlyc3RDaGlsZCgpOworCisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0
dXJuIEVJTkFfRkFMU0U7CisKKyAgICAqZGF0YSA9IGtpdChmcmFtZSk7CisgICAgcmV0dXJuIEVJ
TkFfVFJVRTsKK30KKworc3RhdGljIEV2YXNfT2JqZWN0KiBfZXdrX2ZyYW1lX2NoaWxkcmVuX2l0
ZXJhdG9yX2dldF9jb250YWluZXIoRWluYV9JdGVyYXRvcl9Fd2tfRnJhbWUqIGl0KQoreworICAg
IHJldHVybiBpdC0+b2JqOworfQorCitzdGF0aWMgdm9pZCBfZXdrX2ZyYW1lX3NtYXJ0X2FkZChF
dmFzX09iamVjdCogbykKK3sKKyAgICBFV0tfRlJBTUVfU0RfR0VUKG8sIHNkKTsKKworICAgIGlm
ICghc2QpIHsKKyAgICAgICAgc2QgPSAoRXdrX0ZyYW1lX1NtYXJ0X0RhdGEqKWNhbGxvYygxLCBz
aXplb2YoRXdrX0ZyYW1lX1NtYXJ0X0RhdGEpKTsKKyAgICAgICAgaWYgKCFzZCkKKyAgICAgICAg
ICAgIENSSVRJQ0FMKCJjb3VsZCBub3QgYWxsb2NhdGUgRXdrX0ZyYW1lX1NtYXJ0X0RhdGEiKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfZGF0YV9zZXQobywg
c2QpOworICAgIH0KKworICAgIHNkLT5zZWxmID0gbzsKKworICAgIF9wYXJlbnRfc2MuYWRkKG8p
OworICAgIGV2YXNfb2JqZWN0X21vdmUoc2QtPmJhc2UuY2xpcHBlciwgMCwgMCk7CisgICAgZXZh
c19vYmplY3RfcmVzaXplKHNkLT5iYXNlLmNsaXBwZXIsIDAsIDApOworCisjaWZkZWYgRVdLX0ZS
QU1FX0RFQlVHCisgICAgc2QtPnJlZ2lvbiA9IGV2YXNfb2JqZWN0X3JlY3RhbmdsZV9hZGQoc2Qt
PmJhc2UuZXZhcyk7CisgICAgc3RhdGljIGludCBpID0gMDsKKyAgICBzd2l0Y2ggKGkpIHsKKyAg
ICBjYXNlIDA6CisgICAgICAgIGV2YXNfb2JqZWN0X2NvbG9yX3NldChzZC0+cmVnaW9uLCAxMjgs
IDAsIDAsIDEyOCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMToKKyAgICAgICAgZXZhc19v
YmplY3RfY29sb3Jfc2V0KHNkLT5yZWdpb24sIDAsIDEyOCwgMCwgMTI4KTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSAyOgorICAgICAgICBldmFzX29iamVjdF9jb2xvcl9zZXQoc2QtPnJlZ2lv
biwgMCwgMCwgMTI4LCAxMjgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDM6CisgICAgICAg
IGV2YXNfb2JqZWN0X2NvbG9yX3NldChzZC0+cmVnaW9uLCAxMjgsIDAsIDAsIDEyOCk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgNDoKKyAgICAgICAgZXZhc19vYmplY3RfY29sb3Jfc2V0KHNk
LT5yZWdpb24sIDEyOCwgMTI4LCAwLCAxMjgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDU6
CisgICAgICAgIGV2YXNfb2JqZWN0X2NvbG9yX3NldChzZC0+cmVnaW9uLCAxMjgsIDAsIDEyOCwg
MTI4KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA2OgorICAgICAgICBldmFzX29iamVjdF9j
b2xvcl9zZXQoc2QtPnJlZ2lvbiwgMCwgMTI4LCAxMjgsIDEyOCk7CisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpKys7CisgICAgaWYgKGkg
PiA2KQorICAgICAgICBpID0gMDsKKworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X21lbWJlcl9hZGQo
c2QtPnJlZ2lvbiwgbyk7CisgICAgZXZhc19vYmplY3RfaGlkZShzZC0+cmVnaW9uKTsKKyNlbmRp
ZgorfQorCitzdGF0aWMgdm9pZCBfZXdrX2ZyYW1lX3NtYXJ0X2RlbChFdmFzX09iamVjdCogbykK
K3sKKyAgICBXUk4oIm89JXAiLCBvKTsgLy8gWFhYIFJFTU9WRSBNRSBMQVRFUgorICAgIEVXS19G
UkFNRV9TRF9HRVQobywgc2QpOworCisgICAgaWYgKHNkKSB7CisgICAgICAgIGlmIChzZC0+ZnJh
bWUpIHsKKyAgICAgICAgICAgIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsKiBmbGMgPSBf
ZXdrX2ZyYW1lX2xvYWRlcl9lZmxfZ2V0KHNkLT5mcmFtZSk7CisgICAgICAgICAgICBmbGMtPnNl
dFdlYkZyYW1lKDApOworICAgICAgICAgICAgc2QtPmZyYW1lLT5sb2FkZXIoKS0+Y2FuY2VsQW5k
Q2xlYXIoKTsKKyAgICAgICAgICAgIHNkLT5mcmFtZSA9IDA7CisgICAgICAgIH0KKworICAgICAg
ICBlaW5hX3N0cmluZ3NoYXJlX2RlbChzZC0+dGl0bGUpOworICAgICAgICBlaW5hX3N0cmluZ3No
YXJlX2RlbChzZC0+dXJpKTsKKyAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwoc2QtPm5hbWUp
OworICAgIH0KKworICAgIF9wYXJlbnRfc2MuZGVsKG8pOworfQorCitzdGF0aWMgdm9pZCBfZXdr
X2ZyYW1lX3NtYXJ0X3Jlc2l6ZShFdmFzX09iamVjdCogbywgRXZhc19Db29yZCB3LCBFdmFzX0Nv
b3JkIGgpCit7CisgICAgRVdLX0ZSQU1FX1NEX0dFVChvLCBzZCk7CisgICAgZXZhc19vYmplY3Rf
cmVzaXplKHNkLT5iYXNlLmNsaXBwZXIsIHcsIGgpOworCisjaWZkZWYgRVdLX0ZSQU1FX0RFQlVH
CisgICAgZXZhc19vYmplY3RfcmVzaXplKHNkLT5yZWdpb24sIHcsIGgpOworICAgIEV2YXNfQ29v
cmQgeCwgeTsKKyAgICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQoc2QtPnJlZ2lvbiwgJngsICZ5
LCAmdywgJmgpOworICAgIElORigicmVnaW9uPSVwLCB2aXNpYmxlPSVkLCBnZW89JWQsJWQgKyAl
ZHglZCIsCisgICAgICAgIHNkLT5yZWdpb24sIGV2YXNfb2JqZWN0X3Zpc2libGVfZ2V0KHNkLT5y
ZWdpb24pLCB4LCB5LCB3LCBoKTsKKyAgICBfZXdrX2ZyYW1lX2RlYnVnKG8pOworI2VuZGlmCit9
CisKK3N0YXRpYyB2b2lkIF9ld2tfZnJhbWVfc21hcnRfc2V0KEV2YXNfU21hcnRfQ2xhc3MqIGFw
aSkKK3sKKyAgICBldmFzX29iamVjdF9zbWFydF9jbGlwcGVkX3NtYXJ0X3NldChhcGkpOworICAg
IGFwaS0+YWRkID0gX2V3a19mcmFtZV9zbWFydF9hZGQ7CisgICAgYXBpLT5kZWwgPSBfZXdrX2Zy
YW1lX3NtYXJ0X2RlbDsKKyAgICBhcGktPnJlc2l6ZSA9IF9ld2tfZnJhbWVfc21hcnRfcmVzaXpl
OworfQorCitzdGF0aWMgaW5saW5lIEV2YXNfU21hcnQqIF9ld2tfZnJhbWVfc21hcnRfY2xhc3Nf
bmV3KHZvaWQpCit7CisgICAgc3RhdGljIEV2YXNfU21hcnRfQ2xhc3Mgc2MgPSBFVkFTX1NNQVJU
X0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OKEVXS19GUkFNRV9UWVBFX1NUUik7CisgICAgc3RhdGlj
IEV2YXNfU21hcnQqIHNtYXJ0ID0gMDsKKworICAgIGlmIChFSU5BX1VOTElLRUxZKCFzbWFydCkp
IHsKKyAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfY2xpcHBlZF9zbWFydF9zZXQoJl9wYXJlbnRf
c2MpOworICAgICAgICBfZXdrX2ZyYW1lX3NtYXJ0X3NldCgmc2MpOworICAgICAgICBzbWFydCA9
IGV2YXNfc21hcnRfY2xhc3NfbmV3KCZzYyk7CisgICAgfQorCisgICAgcmV0dXJuIHNtYXJ0Owor
fQorCisvKioKKyAqIEBpbnRlcm5hbAorICoKKyAqIENyZWF0ZXMgYSBuZXcgRUZMIFdlYktpdCBG
cmFtZSBvYmplY3QuCisgKgorICogRnJhbWVzIGFyZSBsb3cgbGV2ZWwgZW50cmllcyBjb250YWlu
ZWQgaW4gYSBwYWdlIHRoYXQgaXMgY29udGFpbmVkCisgKiBieSBhIHZpZXcuIFVzdWFsbHkgb25l
IG9wZXJhdGVzIG9uIHRoZSB2aWV3IGFuZCBub3QgZGlyZWN0bHkgb24gdGhlCisgKiBmcmFtZS4K
KyAqCisgKiBAcGFyYW0gZSBjYW52YXMgd2hlcmUgdG8gY3JlYXRlIHRoZSBmcmFtZSBvYmplY3Qu
CisgKgorICogQHJldHVybiBmcmFtZSBvYmplY3Qgb3IgQGMgTlVMTCBpZiBlcnJvcnMuCisgKi8K
K0V2YXNfT2JqZWN0KiBld2tfZnJhbWVfYWRkKEV2YXMqIGUpCit7CisgICAgcmV0dXJuIGV2YXNf
b2JqZWN0X3NtYXJ0X2FkZChlLCBfZXdrX2ZyYW1lX3NtYXJ0X2NsYXNzX25ldygpKTsKK30KKwor
LyoqCisgKiBSZXRyaWV2ZXMgdGhlIGV3a192aWV3IG9iamVjdCB0aGF0IG93bnMgdGhpcyBmcmFt
ZS4KKyAqCisgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gZ2V0IHZpZXcgZnJvbS4KKyAqCisg
KiBAcmV0dXJuIHZpZXcgb2JqZWN0IG9yIEBjIE5VTEwgaWYgZXJyb3JzLgorICovCitFdmFzX09i
amVjdCogZXdrX2ZyYW1lX3ZpZXdfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVX
S19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKKyAgICByZXR1cm4gc2QtPnZpZXc7
Cit9CisKKy8qKgorICogU2V0IHRoZSB0aGVtZSBwYXRoIHRvIGJlIHVzZWQgYnkgdGhpcyBmcmFt
ZS4KKyAqCisgKiBGcmFtZXMgaW5oZXJpdCB0aGVtZSBmcm9tIHRoZWlyIHBhcmVudCwgdGhpcyB3
aWxsIGhhdmUgYWxsIGZyYW1lcworICogd2l0aCB1bnNldCB0aGVtZSB0byB1c2UgdGhpcyBvbmUu
CisgKgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGNoYW5nZSB0aGVtZS4KKyAqIEBwYXJh
bSB0aGVtZSBwYXRoLCBtYXkgYmUgQGMgTlVMTCB0byByZXNldCB0byBkZWZhdWx0IG9yIGluaGVy
aXQgcGFyZW50LgorICovCit2b2lkIGV3a19mcmFtZV90aGVtZV9zZXQoRXZhc19PYmplY3QqIG8s
IGNvbnN0IGNoYXIqIHBhdGgpCit7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywg
c2QpOworICAgIGlmICghZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZzZC0+dGhlbWUsIHBhdGgp
KQorICAgICAgICByZXR1cm47CisgICAgaWYgKHNkLT5mcmFtZSAmJiBzZC0+ZnJhbWUtPnZpZXco
KSkgeworICAgICAgICBzZC0+ZnJhbWUtPnZpZXcoKS0+c2V0RWRqZVRoZW1lKFdlYkNvcmU6OlN0
cmluZyhwYXRoKSk7CisgICAgICAgIHNkLT5mcmFtZS0+cGFnZSgpLT50aGVtZSgpLT50aGVtZUNo
YW5nZWQoKTsKKyAgICB9Cit9CisKKy8qKgorICogR2V0cyB0aGUgaW1tZWRpYXRlIHRoZW1lIHNl
dCBvbiB0aGlzIGZyYW1lLgorICoKKyAqIFRoaXMgcmV0dXJucyB0aGUgdmFsdWUgc2V0IGJ5IGV3
a19mcmFtZV90aGVtZV9zZXQoKS4gTm90ZSB0aGF0IGlmCisgKiBpdCBpcyBAYyBOVUxMLCB0aGUg
ZnJhbWUgd2lsbCBpbmhlcml0IHBhcmVudCdzIHRoZW1lLgorICoKKyAqIEBwYXJhbSBvIGZyYW1l
IG9iamVjdCB0byBnZXQgdGhlbWUgcGF0aC4KKyAqCisgKiBAcmV0dXJuIHRoZW1lIHBhdGgsIG1h
eSBiZSBAYyBOVUxMIGlmIG5vdCBzZXQuCisgKi8KK2NvbnN0IGNoYXIqIGV3a19mcmFtZV90aGVt
ZV9nZXQoRXZhc19PYmplY3QqIG8pCit7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4o
bywgc2QsIDApOworICAgIHJldHVybiBzZC0+dGhlbWU7Cit9CisKKy8qKgorICogUmV0dXJucyBh
IG5ldyBpdGVyYXRvciBvdmVyIGFsbCBkaXJlY3QgY2hpbGRyZW4gZnJhbWVzLgorICoKKyAqIEtl
ZXAgZnJhbWUgb2JqZWN0IGludGFjdCB3aGlsZSBpdGVyYXRpb24gaGFwcGVucyBvdGhlcndpc2Ug
ZnJhbWUKKyAqIG1heSBiZSBkZXN0cm95ZWQgd2hpbGUgaXRlcmF0ZWQuCisgKgorICogSXRlcmF0
aW9uIHJlc3VsdHMgYXJlIEV2YXNfT2JqZWN0Kiwgc28gZ2l2ZSBlaW5hX2l0ZXJhdG9yX25leHQo
KSBhCisgKiBwb2ludGVyIHRvIGl0LgorICoKKyAqIEByZXR1cm4gYSBuZXdseSBhbGxvY2F0ZWQg
aXRlcmF0b3IsIGZyZWUgdXNpbmcKKyAqICAgICAgICAgZWluYV9pdGVyYXRvcl9mcmVlKCkuIElm
IG5vdCBwb3NzaWJsZSB0byBjcmVhdGUgdGhlCisgKiAgICAgICAgIGl0ZXJhdG9yLCBAYyBOVUxM
IGlzIHJldHVybmVkLgorICovCitFaW5hX0l0ZXJhdG9yKiBld2tfZnJhbWVfY2hpbGRyZW5faXRl
cmF0b3JfbmV3KEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVU
VVJOKG8sIHNkLCAwKTsKKyAgICBFaW5hX0l0ZXJhdG9yX0V3a19GcmFtZSogaXQgPSAoRWluYV9J
dGVyYXRvcl9Fd2tfRnJhbWUqKQorICAgICAgICBjYWxsb2MoMSwgc2l6ZW9mKEVpbmFfSXRlcmF0
b3JfRXdrX0ZyYW1lKSk7CisgICAgaWYgKCFpdCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBF
SU5BX01BR0lDX1NFVCgmaXQtPmJhc2UsIEVJTkFfTUFHSUNfSVRFUkFUT1IpOworICAgIGl0LT5i
YXNlLm5leHQgPSBGVU5DX0lURVJBVE9SX05FWFQoX2V3a19mcmFtZV9jaGlsZHJlbl9pdGVyYXRv
cl9uZXh0KTsKKyAgICBpdC0+YmFzZS5nZXRfY29udGFpbmVyID0gRlVOQ19JVEVSQVRPUl9HRVRf
Q09OVEFJTkVSKF9ld2tfZnJhbWVfY2hpbGRyZW5faXRlcmF0b3JfZ2V0X2NvbnRhaW5lcik7Cisg
ICAgaXQtPmJhc2UuZnJlZSA9IEZVTkNfSVRFUkFUT1JfRlJFRShmcmVlKTsKKyAgICBpdC0+b2Jq
ID0gbzsKKyAgICByZXR1cm4gJml0LT5iYXNlOworfQorCisvKioKKyAqIEZpbmRzIGEgY2hpbGQg
ZnJhbWUgYnkgaXRzIG5hbWUsIHJlY3Vyc2l2ZWx5LgorICoKKyAqIEZvciBwcmUtZGVmaW5lZCBu
YW1lcywgcmV0dXJucyBAYSBvIGlmIEBhIG5hbWUgaXMgIl9zZWxmIiBvcgorICogIl9jdXJyZW50
IiwgcmV0dXJucyBAYSBvJ3MgcGFyZW50IGZyYW1lIGlmIEBhIG5hbWUgaXMgIl9wYXJlbnQiLAor
ICogYW5kIHJldHVybnMgdGhlIG1haW4gZnJhbWUgaWYgQGEgbmFtZSBpcyAiX3RvcCIuIEFsc28g
cmV0dXJucyBAYSBvCisgKiBpZiBpdCBpcyB0aGUgbWFpbiBmcmFtZSBhbmQgQGEgbmFtZSBpcyBl
aXRoZXIgIl9wYXJlbnQiIG9yCisgKiAiX3RvcCIuIEZvciBvdGhlciBuYW1lcywgdGhpcyBmdW5j
dGlvbiByZXR1cm5zIHRoZSBmaXJzdCBmcmFtZSB0aGF0CisgKiBtYXRjaGVzIEBhIG5hbWUuIFRo
aXMgZnVuY3Rpb24gc2VhcmNoZXMgQGEgbyBhbmQgaXRzIGRlc2NlbmRlbnRzCisgKiBmaXJzdCwg
dGhlbiBAYSBvJ3MgcGFyZW50IGFuZCBpdHMgY2hpbGRyZW4gbW92aW5nIHVwIHRoZSBoaWVyYXJj
aHkKKyAqIHVudGlsIGEgbWF0Y2ggaXMgZm91bmQuIElmIG5vIG1hdGNoIGlzIGZvdW5kIGluIEBh
IG8ncyBoaWVyYXJjaHksCisgKiB0aGlzIGZ1bmN0aW9uIHdpbGwgc2VhcmNoIGZvciBhIG1hdGNo
aW5nIGZyYW1lIGluIG90aGVyIG1haW4gZnJhbWUKKyAqIGhpZXJhcmNoaWVzLgorICoKKyAqIEBy
ZXR1cm4gb2JqZWN0IGlmIGZvdW5kLCBAYyBOVUxMIGlmIG5vdGhpbmcgd2l0aCB0aGF0IG5hbWUu
CisgKi8KK0V2YXNfT2JqZWN0KiBld2tfZnJhbWVfY2hpbGRfZmluZChFdmFzX09iamVjdCogbywg
Y29uc3QgY2hhciogbmFtZSkKK3sKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBz
ZCwgMCk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG5hbWUsIDApOworICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIDApOworICAgIFdlYkNv
cmU6OlN0cmluZyBzID0gV2ViQ29yZTo6U3RyaW5nOjpmcm9tVVRGOChuYW1lKTsKKyAgICByZXR1
cm4ga2l0KHNkLT5mcmFtZS0+dHJlZSgpLT5maW5kKFdlYkNvcmU6OkF0b21pY1N0cmluZyhzKSkp
OworfQorCisvKioKKyAqIEFzayBtYWluIGZyYW1lIHRvIGxvYWQgdGhlIGdpdmVuIFVSSS4KKyAq
CisgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gbG9hZCB1cmkuCisgKiBAcGFyYW0gdXJpIHVu
aWZvcm0gcmVzb3VyY2UgaWRlbnRpZmllciB0byBsb2FkLgorICovCitFaW5hX0Jvb2wgZXdrX2Zy
YW1lX3VyaV9zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHVyaSkKK3sKKyAgICBFV0tf
RlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CisgICAgV2ViQ29yZTo6
S1VSTCBrdXJsKFdlYkNvcmU6OktVUkwoKSwgV2ViQ29yZTo6U3RyaW5nOjpmcm9tVVRGOCh1cmkp
KTsKKyAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxKGt1cmwpOworICAgIFdlYkNvcmU6
OkZyYW1lTG9hZGVyKiBsb2FkZXIgPSBzZC0+ZnJhbWUtPmxvYWRlcigpOworICAgIGxvYWRlci0+
bG9hZChyZXEsIGZhbHNlKTsKKyAgICByZXR1cm4gRUlOQV9UUlVFOworfQorCisvKioKKyAqIEdl
dHMgdGhlIHVyaSBvZiB0aGlzIGZyYW1lLgorICoKKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0
byBnZXQgdXJpLgorICoKKyAqIEByZXR1cm4gZnJhbWUgdXJpIG9yIEBjIE5VTEwuIEl0J3MgYSBp
bnRlcm5hbCBzdHJpbmcgYW5kIHNob3VsZAorICogICAgICAgICBub3QgYmUgbW9kaWZpZWQuIFRo
ZSBzdHJpbmcgaXMgZ3VhcmFudGVlZCB0byBiZSBzdHJpbmdzaGFyZWQuCisgKi8KK2NvbnN0IGNo
YXIqIGV3a19mcmFtZV91cmlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19G
UkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKKyAgICByZXR1cm4gc2QtPnVyaTsKK30K
KworLyoqCisgKiBHZXRzIHRoZSB0aXRsZSBvZiB0aGlzIGZyYW1lLgorICoKKyAqIEBwYXJhbSBv
IGZyYW1lIG9iamVjdCB0byBnZXQgdGl0bGUuCisgKgorICogQHJldHVybiBmcmFtZSB0aXRsZSBv
ciBAYyBOVUxMLiBJdCdzIGEgaW50ZXJuYWwgc3RyaW5nIGFuZCBzaG91bGQKKyAqICAgICAgICAg
bm90IGJlIG1vZGlmaWVkLiBUaGUgc3RyaW5nIGlzIGd1YXJhbnRlZWQgdG8gYmUgc3RyaW5nc2hh
cmVkLgorICovCitjb25zdCBjaGFyKiBld2tfZnJhbWVfdGl0bGVfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0KiBvKQoreworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKKyAg
ICByZXR1cm4gc2QtPnRpdGxlOworfQorCisvKioKKyAqIEdldHMgdGhlIG5hbWUgb2YgdGhpcyBm
cmFtZS4KKyAqCisgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gZ2V0IG5hbWUuCisgKgorICog
QHJldHVybiBmcmFtZSBuYW1lIG9yIEBjIE5VTEwuIEl0J3MgYSBpbnRlcm5hbCBzdHJpbmcgYW5k
IHNob3VsZAorICogICAgICAgICBub3QgYmUgbW9kaWZpZWQuIFRoZSBzdHJpbmcgaXMgZ3VhcmFu
dGVlZCB0byBiZSBzdHJpbmdzaGFyZWQuCisgKi8KK2NvbnN0IGNoYXIqIGV3a19mcmFtZV9uYW1l
X2dldChjb25zdCBFdmFzX09iamVjdCogbykKK3sKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCwgMCk7CisKKyAgICBpZiAoc2QtPm5hbWUpCisgICAgICAgIHJldHVybiBzZC0+
bmFtZTsKKworICAgIGlmICghc2QtPmZyYW1lKSB7CisgICAgICAgIEVSUigiY291bGQgbm90IGdl
dCBuYW1lIG9mIHVuaW5pdGlhbGl6ZWQgZnJhbWUuIik7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KKworICAgIFdlYkNvcmU6OlN0cmluZyBzID0gc2QtPmZyYW1lLT50cmVlKCktPm5hbWUoKTsK
KyAgICBXZWJDb3JlOjpDU3RyaW5nIGNzID0gcy51dGY4KCk7CisgICAgc2QtPm5hbWUgPSBlaW5h
X3N0cmluZ3NoYXJlX2FkZF9sZW5ndGgoY3MuZGF0YSgpLCBjcy5sZW5ndGgoKSk7CisgICAgcmV0
dXJuIHNkLT5uYW1lOworfQorCisvKioKKyAqIEdldCBsYXN0IGtub3duIGNvbnRlbnRzIHNpemUu
CisgKgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGdldCBjb250ZW50cyBzaXplLgorICog
QHBhcmFtIHcgd2hlcmUgdG8gc3RvcmUgY29udGVudHMgc2l6ZSB3aWR0aC4gTWF5IGJlIEBjIE5V
TEwuCisgKiBAcGFyYW0gaCB3aGVyZSB0byBzdG9yZSBjb250ZW50cyBzaXplIGhlaWdodC4gTWF5
IGJlIEBjIE5VTEwuCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBA
YyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUgYW5kCisgKiAgICAgICAgIEBhIHcgYW5kIEBhIGggd2ls
bCBiZSB6ZXJvZWQuCisgKi8KK0VpbmFfQm9vbCBld2tfZnJhbWVfY29udGVudHNfc2l6ZV9nZXQo
Y29uc3QgRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQqIHcsIEV2YXNfQ29vcmQqIGgpCit7Cisg
ICAgaWYgKHcpCisgICAgICAgICp3ID0gMDsKKyAgICBpZiAoaCkKKyAgICAgICAgKmggPSAwOwor
ICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAgICBp
ZiAodykKKyAgICAgICAgKncgPSBzZC0+Y29udGVudHNfc2l6ZS53OworICAgIGlmIChoKQorICAg
ICAgICAqaCA9IHNkLT5jb250ZW50c19zaXplLmg7CisgICAgcmV0dXJuIEVJTkFfVFJVRTsKK30K
Kworc3RhdGljIEVpbmFfQm9vbCBfZXdrX2ZyYW1lX2NvbnRlbnRzX3NldF9pbnRlcm5hbChFd2tf
RnJhbWVfU21hcnRfRGF0YSAqc2QsIGNvbnN0IGNoYXIqIGNvbnRlbnRzLCBzaXplX3QgY29udGVu
dHNfc2l6ZSwgY29uc3QgY2hhciogbWltZV90eXBlLCBjb25zdCBjaGFyKiBlbmNvZGluZywgY29u
c3QgY2hhciogYmFzZV91cmksIGNvbnN0IGNoYXIqIHVucmVhY2hhYmxlX3VyaSkKK3sKKyAgICBp
ZiAoY29udGVudHNfc2l6ZSA8IDEpCisgICAgICAgIGNvbnRlbnRzX3NpemUgPSBzdHJsZW4oY29u
dGVudHMpOworICAgIGlmICghbWltZV90eXBlKQorICAgICAgICBtaW1lX3R5cGUgPSAidGV4dC9o
dG1sIjsKKyAgICBpZiAoIWVuY29kaW5nKQorICAgICAgICBlbmNvZGluZyA9ICJVVEYtOCI7Cisg
ICAgaWYgKCFiYXNlX3VyaSkKKyAgICAgICAgYmFzZV91cmkgPSAiYWJvdXQ6YmxhbmsiOworCisg
ICAgV2ViQ29yZTo6S1VSTCBiYXNlS1VSTChXZWJDb3JlOjpLVVJMKCksIFdlYkNvcmU6OlN0cmlu
Zzo6ZnJvbVVURjgoYmFzZV91cmkpKTsKKyAgICBXZWJDb3JlOjpLVVJMIHVucmVhY2hhYmxlS1VS
TDsKKyAgICBpZiAodW5yZWFjaGFibGVfdXJpKQorICAgICAgICB1bnJlYWNoYWJsZUtVUkwgPSBX
ZWJDb3JlOjpLVVJMKFdlYkNvcmU6OktVUkwoKSwgV2ViQ29yZTo6U3RyaW5nOjpmcm9tVVRGOCh1
bnJlYWNoYWJsZV91cmkpKTsKKyAgICBlbHNlCisgICAgICAgIHVucmVhY2hhYmxlS1VSTCA9IFdl
YkNvcmU6OktVUkwoKTsKKworICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudHMsIGNvbnRlbnRz
X3NpemUpOworICAgIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhCisgICAg
ICAgIChidWZmZXIucmVsZWFzZSgpLAorICAgICAgICAgV2ViQ29yZTo6U3RyaW5nOjpmcm9tVVRG
OChtaW1lX3R5cGUpLAorICAgICAgICAgV2ViQ29yZTo6U3RyaW5nOjpmcm9tVVRGOChlbmNvZGlu
ZyksCisgICAgICAgICBiYXNlS1VSTCwgdW5yZWFjaGFibGVLVVJMKTsKKyAgICBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChiYXNlS1VSTCk7CisKKyAgICBzZC0+ZnJhbWUtPmxvYWRl
cigpLT5sb2FkKHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhLCBmYWxzZSk7CisgICAgcmV0dXJuIEVJ
TkFfVFJVRTsKK30KKworLyoqCisgKiBSZXF1ZXN0cyBsb2FkaW5nIHRoZSBnaXZlbiBjb250ZW50
cyBpbiB0aGlzIGZyYW1lLgorICoKKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBsb2FkIGRv
Y3VtZW50LgorICogQHBhcmFtIGNvbnRlbnRzIHdoYXQgdG8gbG9hZCBpbnRvIGZyYW1lLiBNdXN0
IG5vdCBiZSBAYyBOVUxMLgorICogQHBhcmFtIGNvbnRlbnRzX3NpemUgYnl0ZSBzaXplIG9mIGRh
dGEgaW4gQGEgY29udGVudHMuCisgKiAgICAgICAgSWYgemVybywgc3RybGVuKCkgaXMgdXNlZC4K
KyAqIEBwYXJhbSBtaW1lX3R5cGUgdHlwZSBvZiBAYSBjb250ZW50cyBkYXRhLiBJZiBAYyBOVUxM
ICJ0ZXh0L2h0bWwiIGlzIGFzc3VtZWQuCisgKiBAcGFyYW0gZW5jb2RpbmcgdXNlZCBmb3IgQGEg
Y29udGVudHMgZGF0YS4gSWYgQGMgTlVMTCAiVVRGLTgiIGlzIGFzc3VtZWQuCisgKiBAcGFyYW0g
YmFzZSB1cmkgdG8gdXNlIGZvciByZWxhdGl2ZSByZXNvdXJjZXMuIE1heSBiZSBAYyBOVUxMLgor
ICogICAgICAgIElmIHByb3ZpZGVkIG11c3QgYmUgYW4gYWJzb2x1dGUgdXJpLgorICoKKyAqIEBy
ZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3NmdWwgcmVxdWVzdCwgQGMgRUlOQV9GQUxTRSBv
biBlcnJvcnMuCisgKi8KK0VpbmFfQm9vbCBld2tfZnJhbWVfY29udGVudHNfc2V0KEV2YXNfT2Jq
ZWN0KiBvLCBjb25zdCBjaGFyKiBjb250ZW50cywgc2l6ZV90IGNvbnRlbnRzX3NpemUsIGNvbnN0
IGNoYXIqIG1pbWVfdHlwZSwgY29uc3QgY2hhciogZW5jb2RpbmcsIGNvbnN0IGNoYXIqIGJhc2Vf
dXJpKQoreworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNF
KTsKKyAgICBFSU5BX1NBRkVUWV9PTl9GQUxTRV9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9G
QUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNvbnRlbnRzLCBFSU5B
X0ZBTFNFKTsKKyAgICByZXR1cm4gX2V3a19mcmFtZV9jb250ZW50c19zZXRfaW50ZXJuYWwKKyAg
ICAgICAgKHNkLCBjb250ZW50cywgY29udGVudHNfc2l6ZSwgbWltZV90eXBlLCBlbmNvZGluZywg
YmFzZV91cmksIDApOworfQorCisvKioKKyAqIFJlcXVlc3RzIGxvYWRpbmcgYWx0ZXJuYXRpdmUg
Y29udGVudHMgZm9yIHVucmVhY2hhYmxlIFVSSSBpbiB0aGlzIGZyYW1lLgorICoKKyAqIFRoaXMg
aXMgc2ltaWxhciB0byBld2tfZnJhbWVfY29udGVudHNfc2V0KCksIGJ1dCBpcyB1c2VkIHdoZW4g
c29tZQorICogVVJJIGZhaWxlZCB0byBsb2FkLCB1c2luZyB0aGUgcHJvdmlkZWQgY29udGVudCBp
bnN0ZWFkLiBUaGUgbWFpbgorICogZGlmZmVyZW5jZSBpcyB0aGF0IGJhY2stZm9yd2FyZCBuYXZp
Z2F0aW9uIGxpc3QgaXMgbm90IGNoYW5nZWQuCisgKgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0
IHRvIGxvYWQgZG9jdW1lbnQuCisgKiBAcGFyYW0gY29udGVudHMgd2hhdCB0byBsb2FkIGludG8g
ZnJhbWUuIE11c3Qgbm90IGJlIEBjIE5VTEwuCisgKiBAcGFyYW0gY29udGVudHNfc2l6ZSBieXRl
IHNpemUgb2YgZGF0YSBpbiBAYSBjb250ZW50cy4KKyAqICAgICAgICBJZiB6ZXJvLCBzdHJsZW4o
KSBpcyB1c2VkLgorICogQHBhcmFtIG1pbWVfdHlwZSB0eXBlIG9mIEBhIGNvbnRlbnRzIGRhdGEu
IElmIEBjIE5VTEwgInRleHQvaHRtbCIgaXMgYXNzdW1lZC4KKyAqIEBwYXJhbSBlbmNvZGluZyB1
c2VkIGZvciBAYSBjb250ZW50cyBkYXRhLiBJZiBAYyBOVUxMICJVVEYtOCIgaXMgYXNzdW1lZC4K
KyAqIEBwYXJhbSBiYXNlIHVyaSB0byB1c2UgZm9yIHJlbGF0aXZlIHJlc291cmNlcy4gTWF5IGJl
IEBjIE5VTEwuCisgKiAgICAgICAgSWYgcHJvdmlkZWQgbXVzdCBiZSBhbiBhYnNvbHV0ZSB1cmku
CisgKiBAcGFyYW0gdW5yZWFjaGFibGVfdXJpIHRoZSBVUkkgdGhhdCBmYWlsZWQgdG8gbG9hZCBh
bmQgaXMgZ2V0dGluZyB0aGUKKyAqICAgICAgICBhbHRlcm5hdGl2ZSByZXByZXNlbnRhdGlvbi4K
KyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzZnVsIHJlcXVlc3QsIEBjIEVJ
TkFfRkFMU0Ugb24gZXJyb3JzLgorICovCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX2NvbnRlbnRzX2Fs
dGVybmF0ZV9zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIGNvbnRlbnRzLCBzaXplX3Qg
Y29udGVudHNfc2l6ZSwgY29uc3QgY2hhciogbWltZV90eXBlLCBjb25zdCBjaGFyKiBlbmNvZGlu
ZywgY29uc3QgY2hhciogYmFzZV91cmksIGNvbnN0IGNoYXIqIHVucmVhY2hhYmxlX3VyaSkKK3sK
KyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CisgICAg
RUlOQV9TQUZFVFlfT05fRkFMU0VfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOwor
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjb250ZW50cywgRUlOQV9GQUxTRSk7
CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHVucmVhY2hhYmxlX3VyaSwgRUlO
QV9GQUxTRSk7CisgICAgcmV0dXJuIF9ld2tfZnJhbWVfY29udGVudHNfc2V0X2ludGVybmFsCisg
ICAgICAgIChzZCwgY29udGVudHMsIGNvbnRlbnRzX3NpemUsIG1pbWVfdHlwZSwgZW5jb2Rpbmcs
IGJhc2VfdXJpLAorICAgICAgICAgdW5yZWFjaGFibGVfdXJpKTsKK30KKworLyoqCisgKiBSZXF1
ZXN0cyBleGVjdXRpb24gb2YgZ2l2ZW4gc2NyaXB0LgorICoKKyAqIEBwYXJhbSBvIGZyYW1lIG9i
amVjdCB0byBleGVjdXRlIHNjcmlwdC4KKyAqIEBwYXJhbSBzY3JpcHQgamF2YSBzY3JpcHQgdG8g
ZXhlY3V0ZS4KKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiByZXF1ZXN0IHdhcyBkb25l
LCBAYyBFSU5BX0ZBTFNFIG9uIGVycm9ycy4KKyAqLworRWluYV9Cb29sIGV3a19mcmFtZV9zY3Jp
cHRfZXhlY3V0ZShFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogc2NyaXB0KQoreworICAgIEVX
S19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAgICBFSU5BX1NB
RkVUWV9PTl9GQUxTRV9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNjcmlwdCwgRUlOQV9GQUxTRSk7CisgICAgc2Qt
PmZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChXZWJDb3JlOjpTdHJpbmc6OmZyb21VVEY4
KHNjcmlwdCksIHRydWUpOworICAgIHJldHVybiBFSU5BX1RSVUU7Cit9CisKKy8qKgorICogR2V0
cyBpZiBmcmFtZSBpcyBlZGl0YWJsZS4KKyAqCisgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8g
Z2V0IGVkaXRhYmxlIHN0YXRlLgorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIGVkaXRh
YmxlLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqLworRWluYV9Cb29sIGV3a19mcmFtZV9l
ZGl0YWJsZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCit7CisgICAgRVdLX0ZSQU1FX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOworICAgIHJldHVybiBzZC0+ZWRpdGFi
bGU7Cit9CisKKy8qKgorICogU2V0cyBpZiBmcmFtZSBpcyBlZGl0YWJsZS4KKyAqCisgKiBAcGFy
YW0gbyBmcmFtZSBvYmplY3QgdG8gc2V0IGVkaXRhYmxlIHN0YXRlLgorICogQHBhcmFtIGVkaXRh
YmxlIG5ldyBzdGF0ZS4KKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBA
YyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqLworRWluYV9Cb29sIGV3a19mcmFtZV9lZGl0YWJs
ZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBlZGl0YWJsZSkKK3sKKyAgICBFV0tfRlJB
TUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CisgICAgZWRpdGFibGUg
PSAhIWVkaXRhYmxlOworICAgIGlmIChzZC0+ZWRpdGFibGUgPT0gZWRpdGFibGUpCisgICAgICAg
IHJldHVybiBFSU5BX1RSVUU7CisgICAgaWYgKGVkaXRhYmxlKQorICAgICAgICBzZC0+ZnJhbWUt
PmFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVudCgpOworICAgIGVsc2UKKyAgICAgICAgc2Qt
PmZyYW1lLT5yZW1vdmVFZGl0aW5nU3R5bGVGcm9tQm9keUVsZW1lbnQoKTsKKyAgICByZXR1cm4g
RUlOQV9UUlVFOworfQorCisvKioKKyAqIEdldCB0aGUgY29weSBvZiB0aGUgc2VsZWN0aW9uIHRl
eHQuCisgKgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGdldCBzZWxlY3Rpb24gdGV4dC4K
KyAqCisgKiBAcmV0dXJuIG5ld2x5IGFsbG9jYXRlZCBzdHJpbmcgb3IgQGMgTlVMTCBpZiBub3Ro
aW5nIGlzIHNlbGVjdGVkIG9yIGZhaWx1cmUuCisgKi8KK2NoYXIqIGV3a19mcmFtZV9zZWxlY3Rp
b25fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19GUkFNRV9TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCAwKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2Qt
PmZyYW1lLCAwKTsKKyAgICBXZWJDb3JlOjpDU3RyaW5nIHMgPSBzZC0+ZnJhbWUtPnNlbGVjdGVk
VGV4dCgpLnV0ZjgoKTsKKyAgICBpZiAocy5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgcmV0dXJuIHN0cmR1cChzLmRhdGEoKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgRWluYV9Cb29s
IF9ld2tfZnJhbWVfZWRpdG9yX2NvbW1hbmQoRXdrX0ZyYW1lX1NtYXJ0X0RhdGEqIHNkLCBjb25z
dCBjaGFyKiBjb21tYW5kKQoreworICAgIHJldHVybiBzZC0+ZnJhbWUtPmVkaXRvcigpLT5jb21t
YW5kKFdlYkNvcmU6OlN0cmluZzo6ZnJvbVVURjgoY29tbWFuZCkpLmV4ZWN1dGUoKTsKK30KKwor
LyoqCisgKiBVbnNlbGVjdHMgd2hhdGV2ZXIgd2FzIHNlbGVjdGVkLgorICoKKyAqIEByZXR1cm4g
QGMgRUlOQV9UUlVFIGlmIG9wZXJhdGlvbiB3YXMgZXhlY3V0ZWQsIEBjIEVJTkFfRkFMU0Ugb3Ro
ZXJ3aXNlLgorICovCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX3NlbGVjdF9ub25lKEV2YXNfT2JqZWN0
KiBvKQoreworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNF
KTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZB
TFNFKTsKKyAgICByZXR1cm4gX2V3a19mcmFtZV9lZGl0b3JfY29tbWFuZChzZCwgIlVuc2VsZWN0
Iik7Cit9CisKKy8qKgorICogU2VsZWN0cyBldmVyeXRoaW5nLgorICoKKyAqIEByZXR1cm4gQGMg
RUlOQV9UUlVFIGlmIG9wZXJhdGlvbiB3YXMgZXhlY3V0ZWQsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3
aXNlLgorICovCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX3NlbGVjdF9hbGwoRXZhc19PYmplY3QqIG8p
Cit7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwor
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0Up
OworICAgIHJldHVybiBfZXdrX2ZyYW1lX2VkaXRvcl9jb21tYW5kKHNkLCAiU2VsZWN0QWxsIik7
Cit9CisKKy8qKgorICogU2VsZWN0cyB0aGUgY3VycmVudCBwYXJhZ3JhaC4KKyAqCisgKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBpZiBvcGVyYXRpb24gd2FzIGV4ZWN1dGVkLCBAYyBFSU5BX0ZBTFNF
IG90aGVyd2lzZS4KKyAqLworRWluYV9Cb29sIGV3a19mcmFtZV9zZWxlY3RfcGFyYWdyYXBoKEV2
YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBF
SU5BX0ZBTFNFKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1l
LCBFSU5BX0ZBTFNFKTsKKyAgICByZXR1cm4gX2V3a19mcmFtZV9lZGl0b3JfY29tbWFuZChzZCwg
IlNlbGVjdFBhcmFncmFwaCIpOworfQorCisvKioKKyAqIFNlbGVjdHMgdGhlIGN1cnJlbnQgc2Vu
dGVuY2UuCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgb3BlcmF0aW9uIHdhcyBleGVj
dXRlZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKi8KK0VpbmFfQm9vbCBld2tfZnJhbWVf
c2VsZWN0X3NlbnRlbmNlKEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19GUkFNRV9TRF9HRVRf
T1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKKyAgICByZXR1cm4gX2V3a19mcmFtZV9l
ZGl0b3JfY29tbWFuZChzZCwgIlNlbGVjdFNlbnRlbmNlIik7Cit9CisKKy8qKgorICogU2VsZWN0
cyB0aGUgY3VycmVudCBsaW5lLgorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIG9wZXJh
dGlvbiB3YXMgZXhlY3V0ZWQsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICovCitFaW5hX0Jv
b2wgZXdrX2ZyYW1lX3NlbGVjdF9saW5lKEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19GUkFN
RV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKKyAgICByZXR1cm4gX2V3
a19mcmFtZV9lZGl0b3JfY29tbWFuZChzZCwgIlNlbGVjdExpbmUiKTsKK30KKworLyoqCisgKiBT
ZWxlY3RzIHRoZSBjdXJyZW50IHdvcmQuCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYg
b3BlcmF0aW9uIHdhcyBleGVjdXRlZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKi8KK0Vp
bmFfQm9vbCBld2tfZnJhbWVfc2VsZWN0X3dvcmQoRXZhc19PYmplY3QqIG8pCit7CisgICAgRVdL
X0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOworICAgIHJldHVy
biBfZXdrX2ZyYW1lX2VkaXRvcl9jb21tYW5kKHNkLCAiU2VsZWN0V29yZCIpOworfQorCisvKioK
KyAqIFNlYXJjaCB0aGUgZ2l2ZW4gdGV4dCBzdHJpbmcgaW4gZG9jdW1lbnQuCisgKgorICogQHBh
cmFtIG8gZnJhbWUgb2JqZWN0IHdoZXJlIHRvIHNlYXJjaCB0ZXh0LgorICogQHBhcmFtIHN0cmlu
ZyByZWZlcmVuY2Ugc3RyaW5nIHRvIHNlYXJjaC4KKyAqIEBwYXJhbSBjYXNlX3NlbnNpdGl2ZSBp
ZiBzZWFyY2ggc2hvdWxkIGJlIGNhc2Ugc2Vuc2l0aXZlIG9yIG5vdC4KKyAqIEBwYXJhbSBmb3J3
YXJkIGlmIHNlYXJjaCBpcyBmcm9tIGN1cnNvciBhbmQgb24gb3IgYmFja3dhcmRzLgorICogQHBh
cmFtIHdyYXAgaWYgc2VhcmNoIHNob3VsZCB3cmFwIGF0IGVuZC4KKyAqCisgKiBAcmV0dXJuIEBj
IEVJTkFfVFJVRSBpZiBmb3VuZCwgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3IgZmFpbHVyZS4KKyAq
LworRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X3NlYXJjaChjb25zdCBFdmFzX09iamVjdCogbywg
Y29uc3QgY2hhciogc3RyaW5nLCBFaW5hX0Jvb2wgY2FzZV9zZW5zaXRpdmUsIEVpbmFfQm9vbCBm
b3J3YXJkLCBFaW5hX0Jvb2wgd3JhcCkKK3sKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVS
TihvLCBzZCwgRUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHN0cmluZywgRUlOQV9GQUxTRSk7CisKKyAgICByZXR1cm4gc2QtPmZyYW1lLT5maW5kU3Ry
aW5nKFdlYkNvcmU6OlN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSwgZm9yd2FyZCwgY2FzZV9zZW5z
aXRpdmUsIHdyYXAsIHRydWUpOworfQorCisvKioKKyAqIE1hcmsgbWF0Y2hlcyB0aGUgZ2l2ZW4g
dGV4dCBzdHJpbmcgaW4gZG9jdW1lbnQuCisgKgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHdo
ZXJlIHRvIHNlYXJjaCB0ZXh0LgorICogQHBhcmFtIHN0cmluZyByZWZlcmVuY2Ugc3RyaW5nIHRv
IG1hdGNoLgorICogQHBhcmFtIGNhc2Vfc2Vuc2l0aXZlIGlmIG1hdGNoIHNob3VsZCBiZSBjYXNl
IHNlbnNpdGl2ZSBvciBub3QuCisgKiBAcGFyYW0gaGlnaGxpZ2h0IGlmIG1hdGNoZXMgc2hvdWxk
IGJlIGhpZ2hsaWdodGVkLgorICogQHBhcmFtIGxpbWl0IG1heGltdW0gYW1vdW50IG9mIG1hdGNo
ZXMsIG9yIHplcm8gdG8gdW5saW1pdGVkLgorICoKKyAqIEByZXR1cm4gbnVtYmVyIG9mIG1hdGNo
ZXMuCisgKi8KK3Vuc2lnbmVkIGludCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX21hcmsoRXZhc19P
YmplY3QqIG8sIGNvbnN0IGNoYXIqIHN0cmluZywgRWluYV9Cb29sIGNhc2Vfc2Vuc2l0aXZlLCBF
aW5hX0Jvb2wgaGlnaGxpZ2h0LCB1bnNpZ25lZCBpbnQgbGltaXQpCit7CisgICAgRVdLX0ZSQU1F
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOX1ZBTChzdHJpbmcsIDApOworCisgICAgc2QtPmZyYW1lLT5zZXRNYXJrZWRUZXh0TWF0
Y2hlc0FyZUhpZ2hsaWdodGVkKGhpZ2hsaWdodCk7CisgICAgcmV0dXJuIHNkLT5mcmFtZS0+bWFy
a0FsbE1hdGNoZXNGb3JUZXh0KFdlYkNvcmU6OlN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSwgY2Fz
ZV9zZW5zaXRpdmUsIGxpbWl0KTsKK30KKworLyoqCisgKiBSZXZlcnNlcyB0aGUgZWZmZWN0IG9m
IGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbWFyaygpCisgKgorICogQHBhcmFtIG8gZnJhbWUgb2Jq
ZWN0IHdoZXJlIHRvIHNlYXJjaCB0ZXh0LgorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9u
IHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0UgZm9yIGZhaWx1cmUuCisgKi8KK0VpbmFfQm9vbCBld2tf
ZnJhbWVfdGV4dF9tYXRjaGVzX3VubWFya19hbGwoRXZhc19PYmplY3QqIG8pCit7CisgICAgRVdL
X0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOworCisgICAgc2Qt
PmZyYW1lLT5kb2N1bWVudCgpLT5yZW1vdmVNYXJrZXJzKFdlYkNvcmU6OkRvY3VtZW50TWFya2Vy
OjpUZXh0TWF0Y2gpOworICAgIHJldHVybiBFSU5BX1RSVUU7Cit9CisKKy8qKgorICogU2V0IGlm
IHNob3VsZCBoaWdobGlnaHQgbWF0Y2hlcyBtYXJrZWQgd2l0aCBld2tfZnJhbWVfdGV4dF9tYXRj
aGVzX21hcmsoKS4KKyAqCisgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3Qgd2hlcmUgdG8gc2V0IGlm
IG1hdGNoZXMgYXJlIGhpZ2hsaWdodGVkIG9yIG5vdC4KKyAqIEBwYXJhbSBoaWdobGlnaHQgaWYg
QGMgRUlOQV9UUlVFLCBtYXRjaGVzIHdpbGwgYmUgaGlnaGxpZ2h0ZWQuCisgKgorICogQHJldHVy
biBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBmb3IgZmFpbHVyZS4KKyAq
LworRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X3NldChFdmFzX09i
amVjdCogbywgRWluYV9Cb29sIGhpZ2hsaWdodCkKK3sKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09S
X1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CisgICAgc2QtPmZyYW1lLT5zZXRNYXJrZWRU
ZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKGhpZ2hsaWdodCk7CisgICAgcmV0dXJuIEVJTkFfVFJV
RTsKK30KKworLyoqCisgKiBHZXQgaWYgc2hvdWxkIGhpZ2hsaWdodCBtYXRjaGVzIG1hcmtlZCB3
aXRoIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbWFyaygpLgorICoKKyAqIEBwYXJhbSBvIGZyYW1l
IG9iamVjdCB0byBxdWVyeSBpZiBtYXRjaGVzIGFyZSBoaWdobGlnaHRlZCBvciBub3QuCisgKgor
ICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhleSBhcmUgaGlnaGxpZ2h0ZWQsIEBjIEVJTkFf
RkFMU0Ugb3RoZXJ3aXNlLgorICovCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19o
aWdobGlnaHRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19GUkFNRV9TRF9H
RVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKKyAgICByZXR1cm4gc2QtPmZyYW1l
LT5tYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKCk7Cit9CisKKy8qKgorICogQXNrIGZy
YW1lIHRvIHN0b3AgbG9hZGluZy4KKyAqCisgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gc3Rv
cCBsb2FkaW5nLgorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJ
TkFfRkFMU0Ugb3RoZXJ3aXNlLgorICovCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX3N0b3AoRXZhc19P
YmplY3QqIG8pCit7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFf
RkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJ
TkFfRkFMU0UpOworICAgIHNkLT5mcmFtZS0+bG9hZGVyKCktPnN0b3BBbGxMb2FkZXJzKCk7Cisg
ICAgcmV0dXJuIEVJTkFfVFJVRTsKK30KKworLyoqCisgKiBBc2sgZnJhbWUgdG8gcmVsb2FkIGN1
cnJlbnQgZG9jdW1lbnQuCisgKgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIHJlbG9hZC4K
KyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG90
aGVyd2lzZS4KKyAqCisgKiBAc2VlIGV3a19mcmFtZV9yZWxvYWRfZnVsbCgpCisgKi8KK0VpbmFf
Qm9vbCBld2tfZnJhbWVfcmVsb2FkKEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19GUkFNRV9T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKKyAgICBzZC0+ZnJhbWUtPmxv
YWRlcigpLT5yZWxvYWQoKTsKKyAgICByZXR1cm4gRUlOQV9UUlVFOworfQorCisvKioKKyAqIEFz
ayBmcmFtZSB0byBmdWxseSByZWxvYWQgY3VycmVudCBkb2N1bWVudCwgdXNpbmcgbm8gcHJldmlv
dXMgY2FjaGVzLgorICoKKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byByZWxvYWQuCisgKgor
ICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndp
c2UuCisgKi8KK0VpbmFfQm9vbCBld2tfZnJhbWVfcmVsb2FkX2Z1bGwoRXZhc19PYmplY3QqIG8p
Cit7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwor
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0Up
OworICAgIHNkLT5mcmFtZS0+bG9hZGVyKCktPnJlbG9hZCh0cnVlKTsKKyAgICByZXR1cm4gRUlO
QV9UUlVFOworfQorCisvKioKKyAqIEFzayBmcmFtZSB0byBuYXZpZ2F0ZSBiYWNrIGluIGhpc3Rv
cnkuCisgKgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIG5hdmlnYXRlIGJhY2suCisgKgor
ICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndp
c2UuCisgKgorICogQHNlZSBld2tfZnJhbWVfbmF2aWdhdGUoKQorICovCitFaW5hX0Jvb2wgZXdr
X2ZyYW1lX2JhY2soRXZhc19PYmplY3QqIG8pCit7CisgICAgcmV0dXJuIGV3a19mcmFtZV9uYXZp
Z2F0ZShvLCAtMSk7Cit9CisKKy8qKgorICogQXNrIGZyYW1lIHRvIG5hdmlnYXRlIGZvcndhcmQg
aW4gaGlzdG9yeS4KKyAqCisgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gbmF2aWdhdGUgZm9y
d2FyZC4KKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZB
TFNFIG90aGVyd2lzZS4KKyAqCisgKiBAc2VlIGV3a19mcmFtZV9uYXZpZ2F0ZSgpCisgKi8KK0Vp
bmFfQm9vbCBld2tfZnJhbWVfZm9yd2FyZChFdmFzX09iamVjdCogbykKK3sKKyAgICByZXR1cm4g
ZXdrX2ZyYW1lX25hdmlnYXRlKG8sIDEpOworfQorCisvKioKKyAqIE5hdmlnYXRlIGJhY2sgb3Ig
Zm9yd2FyZCBpbiBoaXN0b3J5LgorICoKKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBuYXZp
Z2F0ZS4KKyAqIEBwYXJhbSBzdGVwcyBpZiBwb3NpdGl2ZSBuYXZpZ2F0ZXMgdGhhdCBhbW91bnQg
Zm9yd2FyZHMsIGlmIG5lZ2F0aXZlCisgKiAgICAgICAgZG9lcyBiYWNrd2FyZHMuCisgKgorICog
QHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2Uu
CisgKi8KK0VpbmFfQm9vbCBld2tfZnJhbWVfbmF2aWdhdGUoRXZhc19PYmplY3QqIG8sIGludCBz
dGVwcykKK3sKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxT
RSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9G
QUxTRSk7CisgICAgV2ViQ29yZTo6UGFnZSogcGFnZSA9IHNkLT5mcmFtZS0+cGFnZSgpOworICAg
IGlmICghcGFnZS0+Y2FuR29CYWNrT3JGb3J3YXJkKHN0ZXBzKSkKKyAgICAgICAgcmV0dXJuIEVJ
TkFfRkFMU0U7CisgICAgcGFnZS0+Z29CYWNrT3JGb3J3YXJkKHN0ZXBzKTsKKyAgICByZXR1cm4g
RUlOQV9UUlVFOworfQorCisvKioKKyAqIENoZWNrIGlmIGl0IGlzIHBvc3NpYmxlIHRvIG5hdmln
YXRlIGJhY2t3YXJkcyBvbmUgaXRlbSBpbiBoaXN0b3J5LgorICoKKyAqIEBwYXJhbSBvIGZyYW1l
IG9iamVjdCB0byBjaGVjayBpZiBiYWNrd2FyZCBuYXZpZ2F0aW9uIGlzIHBvc3NpYmxlLgorICoK
KyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHBvc3NpYmxlLCBAYyBFSU5BX0ZBTFNFIG90aGVy
d2lzZS4KKyAqCisgKiBAc2VlIGV3a19mcmFtZV9uYXZpZ2F0ZV9wb3NzaWJsZSgpCisgKi8KK0Vp
bmFfQm9vbCBld2tfZnJhbWVfYmFja19wb3NzaWJsZShFdmFzX09iamVjdCogbykKK3sKKyAgICBy
ZXR1cm4gZXdrX2ZyYW1lX25hdmlnYXRlX3Bvc3NpYmxlKG8sIC0xKTsKK30KKworLyoqCisgKiBD
aGVjayBpZiBpdCBpcyBwb3NzaWJsZSB0byBuYXZpZ2F0ZSBmb3J3YXJkcyBvbmUgaXRlbSBpbiBo
aXN0b3J5LgorICoKKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBjaGVjayBpZiBmb3J3YXJk
IG5hdmlnYXRpb24gaXMgcG9zc2libGUuCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYg
cG9zc2libGUsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICoKKyAqIEBzZWUgZXdrX2ZyYW1l
X25hdmlnYXRlX3Bvc3NpYmxlKCkKKyAqLworRWluYV9Cb29sIGV3a19mcmFtZV9mb3J3YXJkX3Bv
c3NpYmxlKEV2YXNfT2JqZWN0KiBvKQoreworICAgIHJldHVybiBld2tfZnJhbWVfbmF2aWdhdGVf
cG9zc2libGUobywgMSk7Cit9CisKKy8qKgorICogQ2hlY2sgaWYgaXQgaXMgcG9zc2libGUgdG8g
bmF2aWdhdGUgZ2l2ZW4gQGEgc3RlcHMgaW4gaGlzdG9yeS4KKyAqCisgKiBAcGFyYW0gbyBmcmFt
ZSBvYmplY3QgdG8gbmF2aWdhdGUuCisgKiBAcGFyYW0gc3RlcHMgaWYgcG9zaXRpdmUgbmF2aWdh
dGVzIHRoYXQgYW1vdW50IGZvcndhcmRzLCBpZiBuZWdhdGl2ZQorICogICAgICAgIGRvZXMgYmFj
a3dhcmRzLgorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHBvc3NpYmxlLCBAYyBFSU5B
X0ZBTFNFIG90aGVyd2lzZS4KKyAqLworRWluYV9Cb29sIGV3a19mcmFtZV9uYXZpZ2F0ZV9wb3Nz
aWJsZShFdmFzX09iamVjdCogbywgaW50IHN0ZXBzKQoreworICAgIEVXS19GUkFNRV9TRF9HRVRf
T1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKKyAgICBXZWJDb3JlOjpQYWdlKiBwYWdl
ID0gc2QtPmZyYW1lLT5wYWdlKCk7CisgICAgcmV0dXJuIHBhZ2UtPmNhbkdvQmFja09yRm9yd2Fy
ZChzdGVwcyk7Cit9CisKKy8qKgorICogR2V0IGN1cnJlbnQgem9vbSBsZXZlbCB1c2VkIGJ5IHRo
aXMgZnJhbWUuCisgKgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIHF1ZXJ5IHpvb20gbGV2
ZWwuCisgKgorICogQHJldHVybiB6b29tIGxldmVsIG9yIC0xLjAgb24gZmFpbHVyZS4KKyAqLwor
ZmxvYXQgZXdrX2ZyYW1lX3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVX
S19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAtMS4wKTsKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCAtMS4wKTsKKyAgICByZXR1cm4gc2QtPmZyYW1l
LT56b29tRmFjdG9yKCk7Cit9CisKKy8qKgorICogU2V0IGN1cnJlbnQgem9vbSBsZXZlbCB1c2Vk
IGJ5IHRoaXMgZnJhbWUuCisgKgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGNoYW5nZSB6
b29tIGxldmVsLgorICogQHBhcmFtIHpvb20gbmV3IGxldmVsLgorICoKKyAqIEByZXR1cm4gQGMg
RUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlLgorICoKKyAq
IEBzZWUgZXdrX2ZyYW1lX3pvb21fdGV4dF9vbmx5X3NldCgpCisgKi8KK0VpbmFfQm9vbCBld2tf
ZnJhbWVfem9vbV9zZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0IHpvb20pCit7CisgICAgRVdLX0ZS
QU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOworICAgIHNkLT5mcmFt
ZS0+c2V0Wm9vbUZhY3Rvcih6b29tLCBzZC0+em9vbV90ZXh0X29ubHkpOworICAgIHJldHVybiBF
SU5BX1RSVUU7Cit9CisKKy8qKgorICogUXVlcnkgaWYgem9vbSBsZXZlbCBqdXN0IGFwcGxpZXMg
dG8gdGV4dCBhbmQgbm90IG90aGVyIGVsZW1lbnRzLgorICoKKyAqIEBwYXJhbSBvIGZyYW1lIHRv
IHF1ZXJ5IHNldHRpbmcuCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYganVzdCB0ZXh0
IGFyZSBzY2FsZWQsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICovCitFaW5hX0Jvb2wgZXdr
X2ZyYW1lX3pvb21fdGV4dF9vbmx5X2dldChjb25zdCBFdmFzX09iamVjdCogbykKK3sKKyAgICBF
V0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CisgICAgcmV0dXJu
IHNkLT56b29tX3RleHRfb25seTsKK30KKworLyoqCisgKiBTZXQgaWYgem9vbSBsZXZlbCBqdXN0
IGFwcGxpZXMgdG8gdGV4dCBhbmQgbm90IG90aGVyIGVsZW1lbnRzLgorICoKKyAqIEBwYXJhbSBv
IGZyYW1lIHRvIGNoYW5nZSBzZXR0aW5nLgorICogQHBhcmFtIHNldHRpbmcgQGMgRUlOQV9UUlVF
IGlmIHpvb20gc2hvdWxkIGp1c3QgYmUgYXBwbGllZCB0byB0ZXh0LgorICoKKyAqIEByZXR1cm4g
QGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICovCitF
aW5hX0Jvb2wgZXdrX2ZyYW1lX3pvb21fdGV4dF9vbmx5X3NldChFdmFzX09iamVjdCogbywgRWlu
YV9Cb29sIHNldHRpbmcpCit7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2Qs
IEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJh
bWUsIEVJTkFfRkFMU0UpOworICAgIHNldHRpbmcgPSAhIXNldHRpbmc7CisgICAgaWYgKHNkLT56
b29tX3RleHRfb25seSA9PSBzZXR0aW5nKQorICAgICAgICByZXR1cm4gRUlOQV9UUlVFOworCisg
ICAgc2QtPnpvb21fdGV4dF9vbmx5ID0gc2V0dGluZzsKKyAgICBzZC0+ZnJhbWUtPnNldFpvb21G
YWN0b3Ioc2QtPmZyYW1lLT56b29tRmFjdG9yKCksIHNldHRpbmcpOworICAgIHJldHVybiBFSU5B
X1RSVUU7Cit9CisKKy8qKgorICogRnJlZSBoaXQgdGVzdCBjcmVhdGVkIHdpdGggZXdrX2ZyYW1l
X2hpdF90ZXN0X25ldygpLgorICoKKyAqIEBwYXJhbSBoaXRfdGVzdCBpbnN0YW5jZS4gTXVzdCBA
YiBub3QgYmUgQGMgTlVMTC4KKyAqLwordm9pZCBld2tfZnJhbWVfaGl0X3Rlc3RfZnJlZShFd2tf
SGl0X1Rlc3QqIGhpdF90ZXN0KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGhp
dF90ZXN0KTsKKyAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChoaXRfdGVzdC0+dGl0bGUpOworICAg
IGVpbmFfc3RyaW5nc2hhcmVfZGVsKGhpdF90ZXN0LT5hbHRlcm5hdGVfdGV4dCk7CisgICAgZWlu
YV9zdHJpbmdzaGFyZV9kZWwoaGl0X3Rlc3QtPmxpbmsudGV4dCk7CisgICAgZWluYV9zdHJpbmdz
aGFyZV9kZWwoaGl0X3Rlc3QtPmxpbmsudXJsKTsKKyAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbCho
aXRfdGVzdC0+bGluay50aXRsZSk7CisgICAgZnJlZShoaXRfdGVzdCk7Cit9CisKKy8qKgorICog
Q3JlYXRlcyBhIG5ldyBoaXQgdGVzdCBmb3IgZ2l2ZW4gZnJhbWUgYW5kIHBvaW50LgorICoKKyAq
IEBwYXJhbSBvIGZyYW1lIHRvIGRvIGhpdCB0ZXN0IG9uLgorICogQHBhcmFtIHggaG9yaXpvbnRh
bCBwb3NpdGlvbiB0byBxdWVyeS4KKyAqIEBwYXJhbSB5IHZlcnRpY2FsIHBvc2l0aW9uIHRvIHF1
ZXJ5LgorICoKKyAqIEByZXR1cm4gYSBuZXdseSBhbGxvY2F0ZWQgaGl0IHRlc3Qgb24gc3VjY2Vz
cywgQGMgTlVMTCBvdGhlcndpc2UuCisgKiAgICAgICAgIEZyZWUgbWVtb3J5IHdpdGggZXdrX2Zy
YW1lX2hpdF90ZXN0X2ZyZWUoKQorICovCitFd2tfSGl0X1Rlc3QqIGV3a19mcmFtZV9oaXRfdGVz
dF9uZXcoY29uc3QgRXZhc19PYmplY3QqIG8sIGludCB4LCBpbnQgeSkKK3sKKyAgICBFV0tfRlJB
TUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHNkLT5mcmFtZSwgMCk7CisKKyAgICBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcg
PSBzZC0+ZnJhbWUtPnZpZXcoKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
dmlldywgMCk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZS0+
Y29udGVudFJlbmRlcmVyKCksIDApOworCisgICAgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCByZXN1
bHQgPSBzZC0+ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludAorICAg
ICAgICAodmlldy0+d2luZG93VG9Db250ZW50cyhXZWJDb3JlOjpJbnRQb2ludCh4LCB5KSksCisg
ICAgICAgICAvKmFsbG93U2hhZG93Q29udGVudCovIGZhbHNlLCAvKmlnbm9yZUNsaXBwaW5nKi8g
dHJ1ZSk7CisKKyAgICBpZiAocmVzdWx0LnNjcm9sbGJhcigpKQorICAgICAgICByZXR1cm4gMDsK
KyAgICBpZiAoIXJlc3VsdC5pbm5lck5vZGUoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBF
d2tfSGl0X1Rlc3QqIGhpdF90ZXN0ID0gKEV3a19IaXRfVGVzdCogKWNhbGxvYygxLCBzaXplb2Yo
RXdrX0hpdF9UZXN0KSk7CisgICAgaWYgKCFoaXRfdGVzdCkgeworICAgICAgICBDUklUSUNBTCgi
Q291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgaGl0IHRlc3QuIik7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKworICAgIGhpdF90ZXN0LT54ID0gcmVzdWx0LnBvaW50KCkueCgpOworICAg
IGhpdF90ZXN0LT55ID0gcmVzdWx0LnBvaW50KCkueSgpOworI2lmIDAKKyAgICAvLyBGSVhNRQor
ICAgIGhpdF90ZXN0LT5ib3VuZGluZ19ib3gueCA9IHJlc3VsdC5ib3VuZGluZ0JveCgpLngoKTsK
KyAgICBoaXRfdGVzdC0+Ym91bmRpbmdfYm94LnkgPSByZXN1bHQuYm91bmRpbmdCb3goKS55KCk7
CisgICAgaGl0X3Rlc3QtPmJvdW5kaW5nX2JveC53ID0gcmVzdWx0LmJvdW5kaW5nQm94KCkud2lk
dGgoKTsKKyAgICBoaXRfdGVzdC0+Ym91bmRpbmdfYm94LmggPSByZXN1bHQuYm91bmRpbmdCb3go
KS5oZWlnaHQoKTsKKyNlbHNlCisgICAgaGl0X3Rlc3QtPmJvdW5kaW5nX2JveC54ID0gMDsKKyAg
ICBoaXRfdGVzdC0+Ym91bmRpbmdfYm94LnkgPSAwOworICAgIGhpdF90ZXN0LT5ib3VuZGluZ19i
b3gudyA9IDA7CisgICAgaGl0X3Rlc3QtPmJvdW5kaW5nX2JveC5oID0gMDsKKyNlbmRpZgorCisg
ICAgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiBkaXI7CisgICAgaGl0X3Rlc3QtPnRpdGxlID0gZWlu
YV9zdHJpbmdzaGFyZV9hZGQocmVzdWx0LnRpdGxlKGRpcikudXRmOCgpLmRhdGEoKSk7CisgICAg
aGl0X3Rlc3QtPmFsdGVybmF0ZV90ZXh0ID0gZWluYV9zdHJpbmdzaGFyZV9hZGQocmVzdWx0LmFs
dERpc3BsYXlTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAocmVzdWx0LmlubmVyTm9u
U2hhcmVkTm9kZSgpICYmIHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKS0+ZG9jdW1lbnQoKQor
ICAgICAgICAmJiByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCktPmRvY3VtZW50KCktPmZyYW1l
KCkpCisgICAgICAgIGhpdF90ZXN0LT5mcmFtZSA9IGtpdChyZXN1bHQuaW5uZXJOb25TaGFyZWRO
b2RlKCktPmRvY3VtZW50KCktPmZyYW1lKCkpOworCisgICAgaGl0X3Rlc3QtPmxpbmsudGV4dCA9
IGVpbmFfc3RyaW5nc2hhcmVfYWRkKHJlc3VsdC50ZXh0Q29udGVudCgpLnV0ZjgoKS5kYXRhKCkp
OworICAgIGhpdF90ZXN0LT5saW5rLnVybCA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKHJlc3VsdC5h
YnNvbHV0ZUxpbmtVUkwoKS5wcmV0dHlVUkwoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBoaXRfdGVz
dC0+bGluay50aXRsZSA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKHJlc3VsdC50aXRsZURpc3BsYXlT
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBoaXRfdGVzdC0+bGluay50YXJnZXRfZnJhbWUg
PSBraXQocmVzdWx0LnRhcmdldEZyYW1lKCkpOworCisgICAgaGl0X3Rlc3QtPmZsYWdzLmVkaXRh
YmxlID0gcmVzdWx0LmlzQ29udGVudEVkaXRhYmxlKCk7CisgICAgaGl0X3Rlc3QtPmZsYWdzLnNl
bGVjdGVkID0gcmVzdWx0LmlzU2VsZWN0ZWQoKTsKKworICAgIHJldHVybiBoaXRfdGVzdDsKK30K
KworLyoqCisgKiBSZWxhdGl2ZSBzY3JvbGwgb2YgZ2l2ZW4gZnJhbWUuCisgKgorICogQHBhcmFt
IG8gZnJhbWUgb2JqZWN0IHRvIHNjcm9sbC4KKyAqIEBwYXJhbSBkeCBob3Jpem9udGFsIG9mZnNl
dCB0byBzY3JvbGwuCisgKiBAcGFyYW0gZHkgdmVydGljYWwgb2Zmc2V0IHRvIHNjcm9sbC4KKyAq
CisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBwb3NzaWJsZSwgQGMgRUlOQV9GQUxTRSBvdGhl
cndpc2UuCisgKi8KK0VpbmFfQm9vbAorZXdrX2ZyYW1lX3Njcm9sbF9hZGQoRXZhc19PYmplY3Qq
IG8sIGludCBkeCwgaW50IGR5KQoreworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkLCBFSU5BX0ZBTFNFKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2Qt
PmZyYW1lLCBFSU5BX0ZBTFNFKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
c2QtPmZyYW1lLT52aWV3KCksIEVJTkFfRkFMU0UpOworICAgIHNkLT5mcmFtZS0+dmlldygpLT5z
Y3JvbGxCeShJbnRTaXplKGR4LCBkeSkpOworICAgIHJldHVybiBFSU5BX1RSVUU7Cit9CisKKy8q
KgorICogU2V0IGFic29sdXRlIHNjcm9sbCBvZiBnaXZlbiBmcmFtZS4KKyAqCisgKiBCb3RoIHZh
bHVlcyBhcmUgZnJvbSB6ZXJvIHRvIHRoZSBjb250ZW50cyBzaXplIG1pbnVzIHRoZSB2aWV3cG9y
dAorICogc2l6ZS4gU2VlIGV3a19mcmFtZV9zY3JvbGxfc2l6ZV9nZXQoKS4KKyAqCisgKiBAcGFy
YW0gbyBmcmFtZSBvYmplY3QgdG8gc2Nyb2xsLgorICogQHBhcmFtIHggaG9yaXpvbnRhbCBwb3Np
dGlvbiB0byBzY3JvbGwuCisgKiBAcGFyYW0geSB2ZXJ0aWNhbCBwb3NpdGlvbiB0byBzY3JvbGwu
CisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgcG9zc2libGUsIEBjIEVJTkFfRkFMU0Ug
b3RoZXJ3aXNlLgorICovCitFaW5hX0Jvb2wKK2V3a19mcmFtZV9zY3JvbGxfc2V0KEV2YXNfT2Jq
ZWN0KiBvLCBpbnQgeCwgaW50IHkpCit7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4o
bywgc2QsIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChz
ZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChzZC0+ZnJhbWUtPnZpZXcoKSwgRUlOQV9GQUxTRSk7CisgICAgc2QtPmZyYW1lLT52aWV3KCkt
PnNldFNjcm9sbFBvc2l0aW9uKFdlYkNvcmU6OkludFBvaW50KHgsIHkpKTsKKyAgICByZXR1cm4g
RUlOQV9UUlVFOworfQorCisvKioKKyAqIEdldCB0aGUgcG9zc2libGUgc2Nyb2xsIHNpemUgb2Yg
Z2l2ZW4gZnJhbWUuCisgKgorICogUG9zc2libGUgc2Nyb2xsIHNpemUgaXMgY29udGVudHMgc2l6
ZSBtaW51cyB0aGUgdmlld3BvcnQKKyAqIHNpemUuIEl0J3MgdGhlIGxhc3QgYWxsb3dlZCB2YWx1
ZSBmb3IgZXdrX2ZyYW1lX3Njcm9sbF9zZXQoKQorICoKKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVj
dCB0byBzY3JvbGwuCisgKiBAcGFyYW0gdyB3aGVyZSB0byByZXR1cm4gaG9yaXpvbnRhbCBzaXpl
IHRoYXQgaXMgcG9zc2libGUgdG8KKyAqICAgICAgICBzY3JvbGwuIE1heSBiZSBAYyBOVUxMLgor
ICogQHBhcmFtIGggd2hlcmUgdG8gcmV0dXJuIHZlcnRpY2FsIHNpemUgdGhhdCBpcyBwb3NzaWJs
ZSB0byBzY3JvbGwuCisgKiAgICAgICAgTWF5IGJlIEBjIE5VTEwuCisgKgorICogQHJldHVybiBA
YyBFSU5BX1RSVUUgaWYgcG9zc2libGUsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlIGFuZAorICog
ICAgICAgICB2YWx1ZXMgYXJlIHplcm9lZC4KKyAqLworRWluYV9Cb29sCitld2tfZnJhbWVfc2Ny
b2xsX3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvLCBpbnQqIHcsIGludCogaCkKK3sKKyAg
ICBpZiAodykKKyAgICAgICAgKncgPSAwOworICAgIGlmIChoKQorICAgICAgICAqaCA9IDA7Cisg
ICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOworICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOworICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUtPnZpZXcoKSwgRUlOQV9G
QUxTRSk7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQgPSBzZC0+ZnJhbWUtPnZpZXcoKS0+
bWF4aW11bVNjcm9sbFBvc2l0aW9uKCk7CisgICAgaWYgKHcpCisgICAgICAgICp3ID0gcG9pbnQu
eCgpOworICAgIGlmIChoKQorICAgICAgICAqaCA9IHBvaW50LnkoKTsKKyAgICByZXR1cm4gRUlO
QV9UUlVFOworfQorCisvKioKKyAqIEdldCB0aGUgY3VycmVudCBzY3JvbGwgcG9zaXRpb24gb2Yg
Z2l2ZW4gZnJhbWUuCisgKgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIHNjcm9sbC4KKyAq
IEBwYXJhbSB4IHdoZXJlIHRvIHJldHVybiBob3Jpem9udGFsIHBvc2l0aW9uLiBNYXkgYmUgQGMg
TlVMTC4KKyAqIEBwYXJhbSB5IHdoZXJlIHRvIHJldHVybiB2ZXJ0aWNhbCBwb3NpdGlvbi4gTWF5
IGJlIEBjIE5VTEwuCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgcG9zc2libGUsIEBj
IEVJTkFfRkFMU0Ugb3RoZXJ3aXNlIGFuZAorICogICAgICAgICB2YWx1ZXMgYXJlIHplcm9lZC4K
KyAqLworRWluYV9Cb29sCitld2tfZnJhbWVfc2Nyb2xsX3Bvc19nZXQoY29uc3QgRXZhc19PYmpl
Y3QqIG8sIGludCogeCwgaW50KiB5KQoreworICAgIGlmICh4KQorICAgICAgICAqeCA9IDA7Cisg
ICAgaWYgKHkpCisgICAgICAgICp5ID0gMDsKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVS
TihvLCBzZCwgRUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHNkLT5mcmFtZS0+dmlldygpLCBFSU5BX0ZBTFNFKTsKKyAgICBXZWJDb3JlOjpJbnRQb2lu
dCBwb3MgPSBzZC0+ZnJhbWUtPnZpZXcoKS0+c2Nyb2xsUG9zaXRpb24oKTsKKyAgICBpZiAoeCkK
KyAgICAgICAgKnggPSBwb3MueCgpOworICAgIGlmICh5KQorICAgICAgICAqeSA9IHBvcy55KCk7
CisgICAgcmV0dXJuIEVJTkFfVFJVRTsKK30KKworLyoqCisgKiBHZXQgdGhlIGN1cnJlbnQgZnJh
bWUgdmlzaWJsZSBjb250ZW50IGdlb21ldHJ5LgorICoKKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVj
dCB0byBxdWVyeSB2aXNpYmxlIGNvbnRlbnQgZ2VvbWV0cnkuCisgKiBAcGFyYW0gaW5jbHVkZV9z
Y3JvbGxiYXJzIHdoZW5ldmVyIHRvIGluY2x1ZGUgc2Nyb2xsYmFycyBzaXplLgorICogQHBhcmFt
IHggaG9yaXpvbnRhbCBwb3NpdGlvbi4gTWF5IGJlIEBjIE5VTEwuCisgKiBAcGFyYW0geSB2ZXJ0
aWNhbCBwb3NpdGlvbi4gTWF5IGJlIEBjIE5VTEwuCisgKiBAcGFyYW0gdyB3aWR0aC4gTWF5IGJl
IEBjIE5VTEwuCisgKiBAcGFyYW0gaCBoZWlnaHQuIE1heSBiZSBAYyBOVUxMLgorICoKKyAqIEBy
ZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHBvc3NpYmxlLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZSBh
bmQKKyAqICAgICAgICAgdmFsdWVzIGFyZSB6ZXJvZWQuCisgKi8KK0VpbmFfQm9vbCBld2tfZnJh
bWVfdmlzaWJsZV9jb250ZW50X2dlb21ldHJ5X2dldChjb25zdCBFdmFzX09iamVjdCogbywgRWlu
YV9Cb29sIGluY2x1ZGVfc2Nyb2xsYmFycywgaW50KiB4LCBpbnQqIHksIGludCogdywgaW50KiBo
KQoreworICAgIGlmICh4KQorICAgICAgICAqeCA9IDA7CisgICAgaWYgKHkpCisgICAgICAgICp5
ID0gMDsKKyAgICBpZiAodykKKyAgICAgICAgKncgPSAwOworICAgIGlmIChoKQorICAgICAgICAq
aCA9IDA7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0Up
OworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFM
U0UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUtPnZpZXco
KSwgRUlOQV9GQUxTRSk7CisgICAgV2ViQ29yZTo6SW50UmVjdCByZWN0ID0gc2QtPmZyYW1lLT52
aWV3KCktPnZpc2libGVDb250ZW50UmVjdChpbmNsdWRlX3Njcm9sbGJhcnMpOworICAgIGlmICh4
KQorICAgICAgICAqeCA9IHJlY3QueCgpOworICAgIGlmICh5KQorICAgICAgICAqeSA9IHJlY3Qu
eSgpOworICAgIGlmICh3KQorICAgICAgICAqdyA9IHJlY3Qud2lkdGgoKTsKKyAgICBpZiAoaCkK
KyAgICAgICAgKmggPSByZWN0LmhlaWdodCgpOworICAgIHJldHVybiBFSU5BX1RSVUU7Cit9CisK
Ky8qKgorICogR2V0IHRoZSBjdXJyZW50IHBhaW50c0VudGlyZUNvbnRlbnRzIGZsYWcuCisgKgor
ICogVGhpcyBmbGFnIHRlbGxzIGlmIGRpcnR5IGFyZWFzIHNob3VsZCBiZSByZXBhaW50ZWQgZXZl
biBpZiB0aGV5IGFyZQorICogb3V0IG9mIHRoZSBzY3JlZW4uCisgKgorICogQHBhcmFtIG8gZnJh
bWUgb2JqZWN0IHRvIHF1ZXJ5IHBhaW50c0VudGlyZUNvbnRlbnRzIGZsYWcuCisgKgorICogQHJl
dHVybiBAYyBFSU5BX1RSVUUgaWYgcmVwYWludGluZyBhbnkgZGlydHkgYXJlYSwgQGMgRUlOQV9G
QUxTRQorICogICAgICAgICBvdGhlcndpc2UuCisgKi8KK0VpbmFfQm9vbCBld2tfZnJhbWVfcGFp
bnRfZnVsbF9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCit7CisgICAgRVdLX0ZSQU1FX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUtPnZpZXcoKSwgRUlOQV9GQUxTRSk7CisgICAgcmV0dXJu
IHNkLT5mcmFtZS0+dmlldygpLT5wYWludHNFbnRpcmVDb250ZW50cygpOworfQorCisvKioKKyAq
IFNldCB0aGUgY3VycmVudCBwYWludHNFbnRpcmVDb250ZW50cyBmbGFnLgorICoKKyAqIFRoaXMg
ZmxhZyB0ZWxscyBpZiBkaXJ0eSBhcmVhcyBzaG91bGQgYmUgcmVwYWludGVkIGV2ZW4gaWYgdGhl
eSBhcmUKKyAqIG91dCBvZiB0aGUgc2NyZWVuLgorICoKKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVj
dCB0byBzZXQgcGFpbnRzRW50aXJlQ29udGVudHMgZmxhZy4KKyAqIEBwYXJhbSBmbGFnIEBjIEVJ
TkFfVFJVRSBpZiB3YW50IHRvIGFsd2F5cyByZXBhaW50IGFueSBkaXJ0eSBhcmVhLAorICogICAg
ICAgICAgICAgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKi8KK3ZvaWQgZXdrX2ZyYW1lX3Bh
aW50X2Z1bGxfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZmxhZykKK3sKKyAgICBFV0tf
RlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk4oc2QtPmZyYW1lKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+ZnJh
bWUtPnZpZXcoKSk7CisgICAgc2QtPmZyYW1lLT52aWV3KCktPnNldFBhaW50c0VudGlyZUNvbnRl
bnRzKGZsYWcpOworfQorCisvKioKKyAqIEZlZWQgdGhlIGZvY3VzIGluIHNpZ25hbCB0byB0aGlz
IGZyYW1lLgorICoKKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBmb2N1cy4KKyAqCisgKiBA
cmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBpdCB3YXMgaGFuZGxlZCwgQGMgRUlOQV9GQUxTRSBvdGhl
cndpc2UuCisgKi8KK0VpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9mb2N1c19pbihFdmFzX09iamVj
dCogbykKK3sKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxT
RSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9G
QUxTRSk7CisgICAgV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyKiBjID0gc2QtPmZyYW1lLT5wYWdl
KCktPmZvY3VzQ29udHJvbGxlcigpOworICAgIGMtPnNldEZvY3VzZWRGcmFtZShzZC0+ZnJhbWUp
OworICAgIHJldHVybiBFSU5BX1RSVUU7Cit9CisKKy8qKgorICogRmVlZCB0aGUgZm9jdXMgb3V0
IHNpZ25hbCB0byB0aGlzIGZyYW1lLgorICoKKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBy
ZW1vdmUgZm9jdXMuCisgKi8KK0VpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9mb2N1c19vdXQoRXZh
c19PYmplY3QqIG8pCit7CisgICAgLy8gVE9ETzogd2hhdCB0byBkbyBvbiBmb2N1cyBvdXQ/Cisg
ICAgRVJSKCJ3aGF0IHRvIGRvPyIpOworICAgIHJldHVybiBFSU5BX0ZBTFNFOworfQorCisvKioK
KyAqIEZlZWQgdGhlIG1vdXNlIHdoZWVsIGV2ZW50IHRvIHRoZSBmcmFtZS4KKyAqCisgKiBAcGFy
YW0gbyBmcmFtZSBvYmplY3QgdG8gZmVlZCBldmVudC4KKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFf
VFJVRSBpZiBpdCB3YXMgaGFuZGxlZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKi8KK0Vp
bmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV93aGVlbChFdmFzX09iamVjdCogbywgY29uc3Qg
RXZhc19FdmVudF9Nb3VzZV9XaGVlbCogZXYpCit7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChldiwgRUlOQV9GQUxTRSk7CisKKyAgICBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcg
PSBzZC0+ZnJhbWUtPnZpZXcoKTsKKyAgICBEQkcoIm89JXAsIHZpZXc9JXAsIGRpcmVjdGlvbj0l
ZCwgej0lZCwgcG9zPSVkLCVkIiwKKyAgICAgICAgbywgdmlldywgZXYtPmRpcmVjdGlvbiwgZXYt
PnosIGV2LT5jYW52YXMueCwgZXYtPmNhbnZhcy55KTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwodmlldywgRUlOQV9GQUxTRSk7CisKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybVdo
ZWVsRXZlbnQgZXZlbnQoZXYpOworICAgIHJldHVybiBzZC0+ZnJhbWUtPmV2ZW50SGFuZGxlcigp
LT5oYW5kbGVXaGVlbEV2ZW50KGV2ZW50KTsKK30KKworLyoqCisgKiBGZWVkIHRoZSBtb3VzZSBk
b3duIGV2ZW50IHRvIHRoZSBmcmFtZS4KKyAqCisgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8g
ZmVlZCBldmVudC4KKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBpdCB3YXMgaGFuZGxl
ZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKi8KK0VpbmFfQm9vbCBld2tfZnJhbWVfZmVl
ZF9tb3VzZV9kb3duKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24q
IGV2KQoreworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNF
KTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZB
TFNFKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZXYsIEVJTkFfRkFMU0Up
OworCisgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gc2QtPmZyYW1lLT52aWV3KCk7Cisg
ICAgREJHKCJvPSVwLCB2aWV3PSVwLCBidXR0b249JWQsIHBvcz0lZCwlZCIsCisgICAgICAgIG8s
IHZpZXcsIGV2LT5idXR0b24sIGV2LT5jYW52YXMueCwgZXYtPmNhbnZhcy55KTsKKyAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodmlldywgRUlOQV9GQUxTRSk7CisKKyAgICBFdmFz
X0Nvb3JkIHgsIHk7CisgICAgZXZhc19vYmplY3RfZ2VvbWV0cnlfZ2V0KHNkLT52aWV3LCAmeCwg
JnksIDAsIDApOworCisgICAgV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50KGV2LCBX
ZWJDb3JlOjpJbnRQb2ludCh4LCB5KSk7CisgICAgcmV0dXJuIHNkLT5mcmFtZS0+ZXZlbnRIYW5k
bGVyKCktPmhhbmRsZU1vdXNlUHJlc3NFdmVudChldmVudCk7Cit9CisKKy8qKgorICogRmVlZCB0
aGUgbW91c2UgdXAgZXZlbnQgdG8gdGhlIGZyYW1lLgorICoKKyAqIEBwYXJhbSBvIGZyYW1lIG9i
amVjdCB0byBmZWVkIGV2ZW50LgorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIGl0IHdh
cyBoYW5kbGVkLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqLworRWluYV9Cb29sIGV3a19m
cmFtZV9mZWVkX21vdXNlX3VwKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBFdmFzX0V2ZW50X01vdXNl
X1VwKiBldikKK3sKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9G
QUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlO
QV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGV2LCBFSU5BX0ZB
TFNFKTsKKworICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9IHNkLT5mcmFtZS0+dmlldygp
OworICAgIERCRygibz0lcCwgdmlldz0lcCwgYnV0dG9uPSVkLCBwb3M9JWQsJWQiLAorICAgICAg
ICBvLCB2aWV3LCBldi0+YnV0dG9uLCBldi0+Y2FudmFzLngsIGV2LT5jYW52YXMueSk7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHZpZXcsIEVJTkFfRkFMU0UpOworCisgICAg
RXZhc19Db29yZCB4LCB5OworICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldChzZC0+dmlldywg
JngsICZ5LCAwLCAwKTsKKworICAgIFdlYkNvcmU6OlBsYXRmb3JtTW91c2VFdmVudCBldmVudChl
diwgV2ViQ29yZTo6SW50UG9pbnQoeCwgeSkpOworICAgIHJldHVybiBzZC0+ZnJhbWUtPmV2ZW50
SGFuZGxlcigpLT5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChldmVudCk7Cit9CisKKy8qKgorICog
RmVlZCB0aGUgbW91c2UgbW92ZSBldmVudCB0byB0aGUgZnJhbWUuCisgKgorICogQHBhcmFtIG8g
ZnJhbWUgb2JqZWN0IHRvIGZlZWQgZXZlbnQuCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUg
aWYgaXQgd2FzIGhhbmRsZWQsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICovCitFaW5hX0Jv
b2wgZXdrX2ZyYW1lX2ZlZWRfbW91c2VfbW92ZShFdmFzX09iamVjdCogbywgY29uc3QgRXZhc19F
dmVudF9Nb3VzZV9Nb3ZlKiBldikKK3sKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCwgRUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNk
LT5mcmFtZSwgRUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KGV2LCBFSU5BX0ZBTFNFKTsKKworICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9IHNkLT5m
cmFtZS0+dmlldygpOworICAgIERCRygibz0lcCwgdmlldz0lcCwgcG9zOiBvbGQ9JWQsJWQsIG5l
dz0lZCwlZCwgYnV0dG9ucz0lZCIsCisgICAgICAgIG8sIHZpZXcsIGV2LT5jdXIuY2FudmFzLngs
IGV2LT5jdXIuY2FudmFzLnksCisgICAgICAgIGV2LT5wcmV2LmNhbnZhcy54LCBldi0+cHJldi5j
YW52YXMueSwgZXYtPmJ1dHRvbnMpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TCh2aWV3LCBFSU5BX0ZBTFNFKTsKKworICAgIEV2YXNfQ29vcmQgeCwgeTsKKyAgICBldmFzX29i
amVjdF9nZW9tZXRyeV9nZXQoc2QtPnZpZXcsICZ4LCAmeSwgMCwgMCk7CisKKyAgICBXZWJDb3Jl
OjpQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQoZXYsIFdlYkNvcmU6OkludFBvaW50KHgsIHkpKTsK
KyAgICByZXR1cm4gc2QtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+bW91c2VNb3ZlZChldmVudCk7
Cit9CisKK3N0YXRpYyBpbmxpbmUgRWluYV9Cb29sIF9ld2tfZnJhbWVfaGFuZGxlX2tleV9zY3Jv
bGxpbmcoV2ViQ29yZTo6RnJhbWUqIGZyYW1lLCBjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybUtleWJv
YXJkRXZlbnQgJmV2ZW50KQoreworICAgIFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiBkaXJlY3Rp
b247CisgICAgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHk7CisKKyAgICBp
bnQga2V5Q29kZSA9IGV2ZW50LndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgpOworCisgICAgc3dpdGNo
IChrZXlDb2RlKSB7CisgICAgY2FzZSBXZWJDb3JlOjpWS19TUEFDRToKKyAgICAgICAgZ3JhbnVs
YXJpdHkgPSBXZWJDb3JlOjpTY3JvbGxCeVBhZ2U7CisgICAgICAgIGlmIChldmVudC5zaGlmdEtl
eSgpKQorICAgICAgICAgICAgZGlyZWN0aW9uID0gV2ViQ29yZTo6U2Nyb2xsVXA7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGRpcmVjdGlvbiA9IFdlYkNvcmU6OlNjcm9sbERvd247CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgV2ViQ29yZTo6VktfTkVYVDoKKyAgICAgICAgZ3JhbnVsYXJp
dHkgPSBXZWJDb3JlOjpTY3JvbGxCeVBhZ2U7CisgICAgICAgIGRpcmVjdGlvbiA9IFdlYkNvcmU6
OlNjcm9sbERvd247CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViQ29yZTo6VktfUFJJT1I6
CisgICAgICAgIGdyYW51bGFyaXR5ID0gV2ViQ29yZTo6U2Nyb2xsQnlQYWdlOworICAgICAgICBk
aXJlY3Rpb24gPSBXZWJDb3JlOjpTY3JvbGxVcDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBX
ZWJDb3JlOjpWS19IT01FOgorICAgICAgICBncmFudWxhcml0eSA9IFdlYkNvcmU6OlNjcm9sbEJ5
RG9jdW1lbnQ7CisgICAgICAgIGRpcmVjdGlvbiA9IFdlYkNvcmU6OlNjcm9sbFVwOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFdlYkNvcmU6OlZLX0VORDoKKyAgICAgICAgZ3JhbnVsYXJpdHkg
PSBXZWJDb3JlOjpTY3JvbGxCeURvY3VtZW50OworICAgICAgICBkaXJlY3Rpb24gPSBXZWJDb3Jl
OjpTY3JvbGxEb3duOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYkNvcmU6OlZLX0xFRlQ6
CisgICAgICAgIGdyYW51bGFyaXR5ID0gV2ViQ29yZTo6U2Nyb2xsQnlMaW5lOworICAgICAgICBk
aXJlY3Rpb24gPSBXZWJDb3JlOjpTY3JvbGxMZWZ0OworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFdlYkNvcmU6OlZLX1JJR0hUOgorICAgICAgICBncmFudWxhcml0eSA9IFdlYkNvcmU6OlNjcm9s
bEJ5TGluZTsKKyAgICAgICAgZGlyZWN0aW9uID0gV2ViQ29yZTo6U2Nyb2xsUmlnaHQ7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgV2ViQ29yZTo6VktfVVA6CisgICAgICAgIGRpcmVjdGlvbiA9
IFdlYkNvcmU6OlNjcm9sbFVwOworICAgICAgICBpZiAoZXZlbnQuY3RybEtleSgpKQorICAgICAg
ICAgICAgZ3JhbnVsYXJpdHkgPSBXZWJDb3JlOjpTY3JvbGxCeURvY3VtZW50OworICAgICAgICBl
bHNlCisgICAgICAgICAgICBncmFudWxhcml0eSA9IFdlYkNvcmU6OlNjcm9sbEJ5TGluZTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpWS19ET1dOOgorICAgICAgICBkaXJlY3Rp
b24gPSBXZWJDb3JlOjpTY3JvbGxEb3duOworICAgICAgICAgaWYgKGV2ZW50LmN0cmxLZXkoKSkK
KyAgICAgICAgICAgIGdyYW51bGFyaXR5ID0gV2ViQ29yZTo6U2Nyb2xsQnlEb2N1bWVudDsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgZ3JhbnVsYXJpdHkgPSBXZWJDb3JlOjpTY3JvbGxCeUxp
bmU7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBFSU5BX0ZB
TFNFOworICAgIH0KKworICAgIGlmIChmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNjcm9sbE92ZXJm
bG93KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpKQorICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsK
KworICAgIGZyYW1lLT52aWV3KCktPnNjcm9sbChkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKKyAg
ICByZXR1cm4gRUlOQV9UUlVFOworfQorCisvKioKKyAqIEZlZWQgdGhlIGtleWJvYXJkIGtleSBk
b3duIGV2ZW50IHRvIHRoZSBmcmFtZS4KKyAqCisgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8g
ZmVlZCBldmVudC4KKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBpdCB3YXMgaGFuZGxl
ZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKi8KK0VpbmFfQm9vbCBld2tfZnJhbWVfZmVl
ZF9rZXlfZG93bihFdmFzX09iamVjdCogbywgY29uc3QgRXZhc19FdmVudF9LZXlfRG93biogZXYp
Cit7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwor
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0Up
OworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChldiwgRUlOQV9GQUxTRSk7CisK
KyAgICBEQkcoIm89JXAga2V5bmFtZT0lcyAoa2V5PSVzLCBzdHJpbmc9JXMpIiwKKyAgICAgICAg
bywgZXYtPmtleW5hbWUsIGV2LT5rZXkgPyBldi0+a2V5IDogIiIsIGV2LT5zdHJpbmcgPyBldi0+
c3RyaW5nIDogIiIpOworCisgICAgV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50IGV2ZW50
KGV2KTsKKyAgICBpZiAoc2QtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+a2V5RXZlbnQoZXZlbnQp
KQorICAgICAgICByZXR1cm4gRUlOQV9UUlVFOworCisgICAgcmV0dXJuIF9ld2tfZnJhbWVfaGFu
ZGxlX2tleV9zY3JvbGxpbmcoc2QtPmZyYW1lLCBldmVudCk7Cit9CisKKy8qKgorICogRmVlZCB0
aGUga2V5Ym9hcmQga2V5IHVwIGV2ZW50IHRvIHRoZSBmcmFtZS4KKyAqCisgKiBAcGFyYW0gbyBm
cmFtZSBvYmplY3QgdG8gZmVlZCBldmVudC4KKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBp
ZiBpdCB3YXMgaGFuZGxlZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKi8KK0VpbmFfQm9v
bCBld2tfZnJhbWVfZmVlZF9rZXlfdXAoRXZhc19PYmplY3QqIG8sIGNvbnN0IEV2YXNfRXZlbnRf
S2V5X1VwKiBldikKK3sKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlO
QV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwg
RUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGV2LCBFSU5B
X0ZBTFNFKTsKKworICAgIERCRygibz0lcCBrZXluYW1lPSVzIChrZXk9JXMsIHN0cmluZz0lcyki
LAorICAgICAgICBvLCBldi0+a2V5bmFtZSwgZXYtPmtleSA/IGV2LT5rZXkgOiAiIiwgZXYtPnN0
cmluZyA/IGV2LT5zdHJpbmcgOiAiIik7CisKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJk
RXZlbnQgZXZlbnQoZXYpOworICAgIHJldHVybiBzZC0+ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5r
ZXlFdmVudChldmVudCk7Cit9CisKKy8qIGludGVybmFsIG1ldGhvZHMgKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqCisgKiBAaW50ZXJu
YWwKKyAqCisgKiBJbml0aWFsaXplIGZyYW1lIGJhc2VkIG9uIGFjdHVhbCBXZWJLaXQgZnJhbWUu
CisgKgorICogVGhpcyBpcyBpbnRlcm5hbCBhbmQgc2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBieSBl
eHRlcm5hbCB1c2Vycy4KKyAqLworRWluYV9Cb29sIGV3a19mcmFtZV9pbml0KEV2YXNfT2JqZWN0
KiBvLCBFdmFzX09iamVjdCogdmlldywgV2ViQ29yZTo6RnJhbWUqIGZyYW1lKQoreworICAgIEVX
S19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAgICBpZiAoIXNk
LT5mcmFtZSkgeworICAgICAgICBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbCogZmxjID0g
X2V3a19mcmFtZV9sb2FkZXJfZWZsX2dldChmcmFtZSk7CisgICAgICAgIGZsYy0+c2V0V2ViRnJh
bWUobyk7CisgICAgICAgIHNkLT5mcmFtZSA9IGZyYW1lOworICAgICAgICBzZC0+dmlldyA9IHZp
ZXc7CisgICAgICAgIGZyYW1lLT5pbml0KCk7CisgICAgICAgIHJldHVybiBFSU5BX1RSVUU7Cisg
ICAgfQorCisgICAgRVJSKCJmcmFtZSAlcCBhbHJlYWR5IHNldCBmb3IgJXAsIGlnbm9yZWQgbmV3
ICVwIiwKKyAgICAgICAgc2QtPmZyYW1lLCBvLCBmcmFtZSk7CisgICAgcmV0dXJuIEVJTkFfRkFM
U0U7Cit9CisKK0V2YXNfT2JqZWN0KiBld2tfZnJhbWVfY2hpbGRfYWRkKEV2YXNfT2JqZWN0KiBv
LCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNoaWxkLCBjb25zdCBXZWJDb3JlOjpT
dHJpbmcmIG5hbWUsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6U3Ry
aW5nJiByZWZlcnJlcikKK3sKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwg
MCk7CisgICAgY2hhciBidWZbMjU2XTsKKyAgICBFdmFzX09iamVjdCogZnJhbWU7CisgICAgV2Vi
Q29yZTo6RnJhbWUqIGNmOworCisgICAgZnJhbWUgPSBld2tfZnJhbWVfYWRkKHNkLT5iYXNlLmV2
YXMpOworICAgIGlmICghZnJhbWUpIHsKKyAgICAgICAgRVJSKCJDb3VsZCBub3QgY3JlYXRlIGV3
a19mcmFtZSBvYmplY3QuIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGNmID0g
Y2hpbGQuZ2V0KCk7CisgICAgc2QtPmZyYW1lLT50cmVlKCktPmFwcGVuZENoaWxkKGNoaWxkKTsK
KyAgICBpZiAoY2YtPnRyZWUoKSkKKyAgICAgICAgY2YtPnRyZWUoKS0+c2V0TmFtZShuYW1lKTsK
KyAgICBlbHNlCisgICAgICAgIEVSUigibm8gdHJlZSBmb3IgY2hpbGQgb2JqZWN0Iik7CisKKyAg
ICBpZiAoIWV3a19mcmFtZV9pbml0KGZyYW1lLCBzZC0+dmlldywgY2YpKSB7CisgICAgICAgIGV2
YXNfb2JqZWN0X2RlbChmcmFtZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBzbnBy
aW50ZihidWYsIHNpemVvZihidWYpLCAiRVdLX0ZyYW1lOmNoaWxkLyVzIiwgbmFtZS51dGY4KCku
ZGF0YSgpKTsKKyAgICBldmFzX29iamVjdF9uYW1lX3NldChmcmFtZSwgYnVmKTsKKyAgICBldmFz
X29iamVjdF9zbWFydF9tZW1iZXJfYWRkKGZyYW1lLCBvKTsKKyAgICBldmFzX29iamVjdF9zaG93
KGZyYW1lKTsKKworICAgIGlmICghY2YtPnBhZ2UoKSkKKyAgICAgICAgZ290byBkaWVkOworCisg
ICAgY2YtPmxvYWRlcigpLT5sb2FkVVJMSW50b0NoaWxkRnJhbWUodXJsLCByZWZlcnJlciwgY2Yp
OworICAgIGlmICghY2YtPnRyZWUoKS0+cGFyZW50KCkpCisgICAgICAgIGdvdG8gZGllZDsKKwor
ICAgIC8vIFRPRE86IGFubm91bmNlIGZyYW1lIHdhcyBjcmVhdGVkPworICAgIHJldHVybiBmcmFt
ZTsKKworZGllZDoKKyAgICBDUklUSUNBTCgiZG9lcyB0aGlzIHdvcms6IEJFR0lOIik7CisgICAg
ZXdrX2ZyYW1lX2NvcmVfZ29uZShmcmFtZSk7IC8vIENPTkZJUk0KKyAgICBldmFzX29iamVjdF9k
ZWwoZnJhbWUpOyAvLyBDT05GSVJNCisgICAgQ1JJVElDQUwoImRvZXMgdGhpcyB3b3JrOiBFTkQi
KTsKKyAgICByZXR1cm4gMDsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIEZyYW1lIHdhcyBk
ZXN0cm95ZWQgYnkgbG9hZGVyLCByZW1vdmUgaW50ZXJuYWwgcmVmZXJlbmNlLgorICovCit2b2lk
IGV3a19mcmFtZV9jb3JlX2dvbmUoRXZhc19PYmplY3QqIG8pCit7CisgICAgREJHKCJvPSVwIiwg
byk7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOworICAgIHNkLT5mcmFt
ZSA9IDA7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBSZXRyaWV2ZSBXZWJDb3JlOjpGcmFt
ZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBvYmplY3QuCisgKgorICogQXZvaWQgdXNpbmcgdGhpcyBj
YWxsIGZyb20gb3V0c2lkZSwgYWRkIHNwZWNpZmljIGV3a19mcmFtZV8qCisgKiBhY3Rpb25zIGlu
c3RlYWQuCisgKi8KK1dlYkNvcmU6OkZyYW1lKiBld2tfZnJhbWVfY29yZV9nZXQoY29uc3QgRXZh
c19PYmplY3QqIG8pCit7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDAp
OworICAgIHJldHVybiBzZC0+ZnJhbWU7Cit9CisKKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIFJl
cG9ydHMgdGhlIGZyYW1lIHN0YXJ0ZWQgbG9hZGluZyBzb21ldGhpbmcuCisgKgorICogRW1pdHMg
c2lnbmFsOiAibG9hZCxzdGFydGVkIiB3aXRoIG5vIHBhcmFtZXRlcnMuCisgKi8KK3ZvaWQgZXdr
X2ZyYW1lX2xvYWRfc3RhcnRlZChFdmFzX09iamVjdCogbykKK3sKKyAgICBFdmFzX09iamVjdCog
bWFpbl9mcmFtZTsKKyAgICBEQkcoIm89JXAiLCBvKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9j
YWxsYmFja19jYWxsKG8sICJsb2FkLHN0YXJ0ZWQiLCAwKTsKKyAgICBFV0tfRlJBTUVfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCk7CisgICAgZXdrX3ZpZXdfbG9hZF9zdGFydGVkKHNkLT52aWV3KTsK
KworICAgIG1haW5fZnJhbWUgPSBld2tfdmlld19mcmFtZV9tYWluX2dldChzZC0+dmlldyk7Cisg
ICAgaWYgKG1haW5fZnJhbWUgPT0gbykKKyAgICAgICAgZXdrX3ZpZXdfZnJhbWVfbWFpbl9sb2Fk
X3N0YXJ0ZWQoc2QtPnZpZXcpOworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICogUmVwb3J0cyBs
b2FkIGZpbmlzaGVkLCBvcHRpb25hbGx5IHdpdGggZXJyb3IgaW5mb3JtYXRpb24uCisgKgorICog
RW1pdHMgc2lnbmFsOiAibG9hZCxmaW5pc2hlZCIgd2l0aCBwb2ludGVyIHRvIEV3a19GcmFtZV9M
b2FkX0Vycm9yCisgKiBpZiBhbnkgZXJyb3IsIG9yIEBjIE5VTEwgaWYgc3VjY2Vzc2Z1bCBsb2Fk
LgorICoKKyAqIEBub3RlIHRoZXJlIHNob3VsZCBub3RiZSBhbnkgZXJyb3Igc3R1ZmYgaGVyZSwg
YnV0IHRyeWluZyB0byBiZQorICogICAgICAgY29tcGF0aWJsZSB3aXRoIHByZXZpb3VzIFdlYktp
dC4KKyAqLwordm9pZCBld2tfZnJhbWVfbG9hZF9maW5pc2hlZChFdmFzX09iamVjdCogbywgY29u
c3QgY2hhciogZXJyb3JfZG9tYWluLCBpbnQgZXJyb3JfY29kZSwgRWluYV9Cb29sIGlzX2NhbmNl
bGxhdGlvbiwgY29uc3QgY2hhciogZXJyb3JfZGVzY3JpcHRpb24sIGNvbnN0IGNoYXIqIGZhaWxp
bmdfdXJsKQoreworICAgIEV3a19GcmFtZV9Mb2FkX0Vycm9yIGJ1ZiwgKmVycm9yOworICAgIGlm
ICghZXJyb3JfZG9tYWluKSB7CisgICAgICAgIERCRygibz0lcCwgc3VjY2Vzcy4iLCBvKTsKKyAg
ICAgICAgZXJyb3IgPSAwOworICAgIH0gZWxzZSB7CisgICAgICAgIERCRygibz0lcCwgZXJyb3I9
JXMgKCVkLCBjYW5jZWxsYXRpb249JWhodSkgXCIlc1wiLCB1cmw9JXMiLAorICAgICAgICAgICAg
bywgZXJyb3JfZG9tYWluLCBlcnJvcl9jb2RlLCBpc19jYW5jZWxsYXRpb24sCisgICAgICAgICAg
ICBlcnJvcl9kZXNjcmlwdGlvbiwgZmFpbGluZ191cmwpOworCisgICAgICAgIGJ1Zi5kb21haW4g
PSBlcnJvcl9kb21haW47CisgICAgICAgIGJ1Zi5jb2RlID0gZXJyb3JfY29kZTsKKyAgICAgICAg
YnVmLmlzX2NhbmNlbGxhdGlvbiA9IGlzX2NhbmNlbGxhdGlvbjsKKyAgICAgICAgYnVmLmRlc2Ny
aXB0aW9uID0gZXJyb3JfZGVzY3JpcHRpb247CisgICAgICAgIGJ1Zi5mYWlsaW5nX3VybCA9IGZh
aWxpbmdfdXJsOworICAgICAgICBidWYuZnJhbWUgPSBvOworICAgICAgICBlcnJvciA9ICZidWY7
CisgICAgfQorICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgImxvYWQsZmlu
aXNoZWQiLCBlcnJvcik7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwor
ICAgIGV3a192aWV3X2xvYWRfZmluaXNoZWQoc2QtPnZpZXcsIGVycm9yKTsKK30KKworLyoqCisg
KiBAaW50ZXJuYWwKKyAqIFJlcG9ydHMgbG9hZCBmYWlsZWQgd2l0aCBlcnJvciBpbmZvcm1hdGlv
bi4KKyAqCisgKiBFbWl0cyBzaWduYWw6ICJsb2FkLGVycm9yIiB3aXRoIHBvaW50ZXIgdG8gRXdr
X0ZyYW1lX0xvYWRfRXJyb3IuCisgKi8KK3ZvaWQgZXdrX2ZyYW1lX2xvYWRfZXJyb3IoRXZhc19P
YmplY3QqIG8sIGNvbnN0IGNoYXIqIGVycm9yX2RvbWFpbiwgaW50IGVycm9yX2NvZGUsIEVpbmFf
Qm9vbCBpc19jYW5jZWxsYXRpb24sIGNvbnN0IGNoYXIqIGVycm9yX2Rlc2NyaXB0aW9uLCBjb25z
dCBjaGFyKiBmYWlsaW5nX3VybCkKK3sKKyAgICBFd2tfRnJhbWVfTG9hZF9FcnJvciBlcnJvcjsK
KworICAgIERCRygibz0lcCwgZXJyb3I9JXMgKCVkLCBjYW5jZWxsYXRpb249JWhodSkgXCIlc1wi
LCB1cmw9JXMiLAorICAgICAgICBvLCBlcnJvcl9kb21haW4sIGVycm9yX2NvZGUsIGlzX2NhbmNl
bGxhdGlvbiwKKyAgICAgICAgZXJyb3JfZGVzY3JpcHRpb24sIGZhaWxpbmdfdXJsKTsKKworICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGVycm9yX2RvbWFpbik7CisKKyAgICBlcnJvci5j
b2RlID0gZXJyb3JfY29kZTsKKyAgICBlcnJvci5pc19jYW5jZWxsYXRpb24gPSBpc19jYW5jZWxs
YXRpb247CisgICAgZXJyb3IuZG9tYWluID0gZXJyb3JfZG9tYWluOworICAgIGVycm9yLmRlc2Ny
aXB0aW9uID0gZXJyb3JfZGVzY3JpcHRpb247CisgICAgZXJyb3IuZmFpbGluZ191cmwgPSBmYWls
aW5nX3VybDsKKyAgICBlcnJvci5mcmFtZSA9IG87CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2Fs
bGJhY2tfY2FsbChvLCAibG9hZCxlcnJvciIsICZlcnJvcik7CisgICAgRVdLX0ZSQU1FX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QpOworICAgIGV3a192aWV3X2xvYWRfZXJyb3Ioc2QtPnZpZXcsICZl
cnJvcik7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBSZXBvcnRzIGxvYWQgcHJvZ3Jlc3Mg
Y2hhbmdlZC4KKyAqCisgKiBFbWl0cyBzaWduYWw6ICJsb2FkLHByb2dyZXNzIiB3aXRoIHBvaW50
ZXIgdG8gYSBkb3VibGUgZnJvbSAwLjAgdG8gMS4wLgorICovCit2b2lkIGV3a19mcmFtZV9sb2Fk
X3Byb2dyZXNzX2NoYW5nZWQoRXZhc19PYmplY3QqIG8pCit7CisgICAgRVdLX0ZSQU1FX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5m
cmFtZSk7CisKKyAgICAvLyBUT0RPOiB0aGlzIGlzIHBlciBwYWdlLCB0aGVyZSBzaG91bGQgYmUg
YSB3YXkgdG8gaGF2ZSBwZXItZnJhbWUuCisgICAgZG91YmxlIHByb2dyZXNzID0gc2QtPmZyYW1l
LT5wYWdlKCktPnByb2dyZXNzKCktPmVzdGltYXRlZFByb2dyZXNzKCk7CisKKyAgICBEQkcoIm89
JXAgKHA9JTAuM2YpIiwgbywgcHJvZ3Jlc3MpOworCisgICAgZXZhc19vYmplY3Rfc21hcnRfY2Fs
bGJhY2tfY2FsbChvLCAibG9hZCxwcm9ncmVzcyIsICZwcm9ncmVzcyk7CisgICAgZXdrX3ZpZXdf
bG9hZF9wcm9ncmVzc19jaGFuZ2VkKHNkLT52aWV3KTsKK30KKworCisvKioKKyAqIEBpbnRlcm5h
bAorICoKKyAqIFJlcG9ydHMgY29udGVudHMgc2l6ZSBjaGFuZ2VkLgorICovCit2b2lkIGV3a19m
cmFtZV9jb250ZW50c19zaXplX2NoYW5nZWQoRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQgdywg
RXZhc19Db29yZCBoKQoreworICAgIERCRygibz0lcDogJWR4JWQiLCBvLCB3LCBoKTsKKyAgICBF
V0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CisgICAgaWYgKHNkLT5jb250ZW50c19z
aXplLncgPT0gdyAmJiBzZC0+Y29udGVudHNfc2l6ZS5oID09IGgpCisgICAgICAgIHJldHVybjsK
KyAgICBzZC0+Y29udGVudHNfc2l6ZS53ID0gdzsKKyAgICBzZC0+Y29udGVudHNfc2l6ZS5oID0g
aDsKKyAgICAvLyBUT0RPOiB1cGRhdGUgc29tZXRoaW5nIGVsc2UgaW50ZXJuYWxseT8KKworICAg
IEV2YXNfQ29vcmQgc2l6ZVsyXSA9IHt3LCBofTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19jYWxsKG8sICJjb250ZW50cyxzaXplLGNoYW5nZWQiLCBzaXplKTsKK30KKworLyoqCisg
KiBAaW50ZXJuYWwKKyAqCisgKiBSZXBvcnRzIHRpdGxlIGNoYW5nZWQuCisgKi8KK3ZvaWQgZXdr
X2ZyYW1lX3RpdGxlX3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogdGl0bGUpCit7Cisg
ICAgREJHKCJvPSVwLCB0aXRsZT0lcyIsIG8sIHRpdGxlID8gdGl0bGUgOiAiKG51bGwpIik7Cisg
ICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOworICAgIGlmICghZWluYV9zdHJp
bmdzaGFyZV9yZXBsYWNlKCZzZC0+dGl0bGUsIHRpdGxlKSkKKyAgICAgICAgcmV0dXJuOworICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgInRpdGxlLGNoYW5nZWQiLCAodm9p
ZCopc2QtPnRpdGxlKTsKK30KKwordm9pZCBld2tfZnJhbWVfdmlld19jcmVhdGVfZm9yX3ZpZXco
RXZhc19PYmplY3QqIG8sIEV2YXNfT2JqZWN0KiB2aWV3KQoreworICAgIERCRygibz0lcCwgdmll
dz0lcCIsIG8sIHZpZXcpOworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsK
KyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+ZnJhbWUpOworICAgIEV2YXNfQ29v
cmQgdywgaDsKKworICAgIGlmIChzZC0+ZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZXZhc19vYmplY3RfZ2VvbWV0cnlfZ2V0KHZpZXcsIDAsIDAsICZ3LCAmaCk7CisKKyAg
ICBXZWJDb3JlOjpJbnRTaXplIHNpemUodywgaCk7CisgICAgaW50IHIsIGcsIGIsIGE7CisgICAg
V2ViQ29yZTo6Q29sb3IgYmc7CisKKyAgICBld2tfdmlld19iZ19jb2xvcl9nZXQodmlldywgJnIs
ICZnLCAmYiwgJmEpOworICAgIGlmICghYSkKKyAgICAgICAgYmcgPSBXZWJDb3JlOjpDb2xvcigw
LCAwLCAwLCAwKTsKKyAgICBlbHNlIGlmIChhID09IDI1NSkKKyAgICAgICAgYmcgPSBXZWJDb3Jl
OjpDb2xvcihyLCBnLCBiLCBhKTsKKyAgICBlbHNlCisgICAgICAgIGJnID0gV2ViQ29yZTo6Q29s
b3IociAqIDI1NSAvIGEsIGcgKiAyNTUgLyBhLCBiICogMjU1IC8gYSwgYSk7CisKKyAgICBzZC0+
ZnJhbWUtPmNyZWF0ZVZpZXcoc2l6ZSwgYmcsICFhLCBXZWJDb3JlOjpJbnRTaXplKCksIGZhbHNl
KTsKKyAgICBpZiAoIXNkLT5mcmFtZS0+dmlldygpKQorICAgICAgICByZXR1cm47CisgICAgc2Qt
PmZyYW1lLT52aWV3KCktPnNldEVkamVUaGVtZShzZC0+dGhlbWUpOworICAgIHNkLT5mcmFtZS0+
dmlldygpLT5zZXRFdmFzT2JqZWN0KG8pOworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICogUmVw
b3J0cyB1cmkgY2hhbmdlZCBhbmQgc3dhcCBpbnRlcm5hbCBzdHJpbmcgcmVmZXJlbmNlLgorICoK
KyAqIEVtaXRzIHNpZ25hbDogInVyaSxjaGFuZ2VkIiB3aXRoIG5ldyB1cmkgYXMgcGFyYW1ldGVy
LgorICovCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX3VyaV9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBvKQor
eworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZBTFNFKTsK
KyAgICBXZWJDb3JlOjpDU3RyaW5nIHVyaShzZC0+ZnJhbWUtPmxvYWRlcigpLT51cmwoKS5wcmV0
dHlVUkwoKS51dGY4KCkpOworCisgICAgSU5GKCJ1cmk9JXMiLCB1cmkuZGF0YSgpKTsKKyAgICBp
ZiAoIXVyaS5kYXRhKCkpIHsKKyAgICAgICAgRVJSKCJubyB1cmkiKTsKKyAgICAgICAgcmV0dXJu
IEVJTkFfRkFMU0U7CisgICAgfQorCisgICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZzZC0+
dXJpLCB1cmkuZGF0YSgpKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8s
ICJ1cmksY2hhbmdlZCIsICh2b2lkKilzZC0+dXJpKTsKKyAgICByZXR1cm4gRUlOQV9UUlVFOwor
fQorCit2b2lkIGV3a19mcmFtZV9mb3JjZV9sYXlvdXQoRXZhc19PYmplY3QqIG8pCit7CisgICAg
REJHKCJvPSVwIiwgbyk7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwor
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5mcmFtZSk7CisgICAgV2ViQ29yZTo6
RnJhbWVWaWV3KiB2aWV3ID0gc2QtPmZyYW1lLT52aWV3KCk7CisgICAgaWYgKHZpZXcpCisgICAg
ICAgIHZpZXctPmZvcmNlTGF5b3V0KHRydWUpOworfQorCitXVEY6OlBhc3NSZWZQdHI8V2ViQ29y
ZTo6V2lkZ2V0PiBld2tfZnJhbWVfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogbywgY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQq
IGVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpWZWN0b3I8V2Vi
Q29yZTo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgV1RGOjpWZWN0b3I8V2ViQ29yZTo6U3Ry
aW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgbWltZVR5cGUsIGJvb2wg
bG9hZE1hbnVhbGx5KQoreworICAgIERCRygibz0lcCwgc2l6ZT0lZHglZCwgZWxlbWVudD0lcCwg
dXJsPSVzLCBtaW1lVHlwZT0lcyIsCisgICAgICAgIG8sIHBsdWdpblNpemUud2lkdGgoKSwgcGx1
Z2luU2l6ZS5oZWlnaHQoKSwgZWxlbWVudCwKKyAgICAgICAgdXJsLnByZXR0eVVSTCgpLnV0Zjgo
KS5kYXRhKCksIG1pbWVUeXBlLnV0ZjgoKS5kYXRhKCkpOworCisgICAgRVdLX0ZSQU1FX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QsIDApOworCisgICAgLy8gVE9ETzogZW1pdCBzaWduYWwgYW5kIGFz
ayB3ZWJraXQgdXNlcnMgaWYgc29tZXRoaW5nIGVsc2Ugc2hvdWxkIGJlIGRvbmUuCisgICAgLy8g
bGlrZSBjcmVhdGluZyBhbm90aGVyIHggd2luZG93IChzZWUgZ3RrLCBpdCBhbGxvd3MgdXNlcnMg
dG8gY3JlYXRlCisgICAgLy8gR3RrUGx1Z2luV2lkZ2V0LgorCisgICAgV1RGOjpSZWZQdHI8V2Vi
Q29yZTo6UGx1Z2luVmlldz4gcGx1Z2luVmlldyA9IFdlYkNvcmU6OlBsdWdpblZpZXc6OmNyZWF0
ZQorICAgICAgICAoc2QtPmZyYW1lLCBwbHVnaW5TaXplLCBlbGVtZW50LCB1cmwsIHBhcmFtTmFt
ZXMsIHBhcmFtVmFsdWVzLAorICAgICAgICAgbWltZVR5cGUsIGxvYWRNYW51YWxseSk7CisKKyAg
ICBpZiAocGx1Z2luVmlldy0+c3RhdHVzKCkgPT0gV2ViQ29yZTo6UGx1Z2luU3RhdHVzTG9hZGVk
U3VjY2Vzc2Z1bGx5KQorICAgICAgICByZXR1cm4gcGx1Z2luVmlldzsKKworICAgIHJldHVybiAw
OworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmggYi9XZWJLaXQvZWZs
L2V3ay9ld2tfZnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNmJh
NWFjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmgKQEAgLTAs
MCArMSwxODIgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVt
YmVkZGVkIHN5c3RlbXMKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0
cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorKi8KKworI2lmbmRlZiBld2tfZnJhbWVfaAorI2RlZmluZSBld2tfZnJhbWVfaAorCisj
aW5jbHVkZSAiZXdrX2VhcGkuaCIKKyNpbmNsdWRlIDxFdmFzLmg+CisKKyNpZmRlZiBfX2NwbHVz
cGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqCisgKiBAZmlsZSBXZWJLaXQgZnJhbWUg
c21hcnQgb2JqZWN0LgorICoKKyAqIFRoaXMgb2JqZWN0IGlzIHRoZSBsb3cgbGV2ZWwgYWNjZXNz
IHRvIFdlYktpdC1FRkwgYnJvd3NlcgorICogY29tcG9uZW50LiBJdCByZXByZXNlbnRzIGJvdGgg
dGhlIG1haW4gYW5kIGludGVybmFsIGZyYW1lcyB0aGF0CisgKiBIVE1MIHBhZ2VzIGNvbnRhaW4u
CisgKgorICogRXZlcnkgZXdrX3ZpZXcgaGFzIGF0IGxlYXN0IG9uZSBmcmFtZSwgY2FsbGVkICJt
YWluIGZyYW1lIiBhbmQKKyAqIHJldHJpZXZlZCB3aXRoIGV3a192aWV3X2ZyYW1lX21haW5fZ2V0
KCkuIE9uZSBjYW4gcmV0cmlldmUgZnJhbWUncworICogb3duZXIgdmlldyB3aXRoIGV3a19mcmFt
ZV92aWV3X2dldCgpLiBQYXJlbnQgZnJhbWUgY2FuIGJlIHJldHJpZXZlZAorICogd2l0aCBzdGFu
ZGFyZCBzbWFydCBvYmplY3QncyBldmFzX29iamVjdF9zbWFydF9wYXJlbnRfZ2V0KCkuCisgKiBD
aGlsZHJlbiBjYW4gYmUgYWNjZXNzZWQgd2l0aCBld2tfZnJhbWVfY2hpbGRyZW5faXRlcmF0b3Jf
bmV3KCkgb3IKKyAqIGV3a19mcmFtZV9jaGlsZF9maW5kKCkuCisgKgorICogVGhlIGZvbGxvd2lu
ZyBzaWduYWxzIChzZWUgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKCkpIGFyZSBlbWl0
dGVkOgorICoKKyAqICAtICJ0aXRsZSxjaGFuZ2VkIiwgY29uc3QgY2hhcio6IHRpdGxlIG9mIHRo
ZSBtYWluIGZyYW1lIGNoYW5nZWQuCisgKiAgLSAidXJpLGNoYW5nZWQiLCBjb25zdCBjaGFyKjog
dXJpIG9mIHRoZSBtYWluIGZyYW1lIGNoYW5nZWQuCisgKiAgLSAibG9hZCxzdGFydGVkIiwgdm9p
ZDogZnJhbWUgc3RhcnRlZCBsb2FkaW5nLgorICogIC0gImxvYWQscHJvZ3Jlc3MiLCBkb3VibGUq
OiBsb2FkIHByb2dyZXNzIGNoYW5nZWQgKG92ZXJhbGwgdmFsdWUKKyAqICAgIGZyb20gMC4wIHRv
IDEuMCwgY29ubmVjdCB0byBpbmRpdmlkdWFsIGZyYW1lcyBmb3IgZmluZSBncmFpbmVkKS4KKyAq
ICAtICJsb2FkLGZpbmlzaGVkIiwgY29uc3QgRXdrX0ZyYW1lX0xvYWRfRXJyb3IqOiByZXBvcnRz
IGxvYWQKKyAqICAgIGZpbmlzaGVkIGFuZCBhcyBhcmd1bWVudCBAYyBOVUxMIGlmIHN1Y2Nlc3Nm
dWxseSBvciBwb2ludGVyIHRvCisgKiAgICBzdHJ1Y3R1cmUgZGVmaW5pbmcgdGhlIGVycm9yLgor
ICogIC0gImxvYWQsZXJyb3IiLCBjb25zdCBFd2tfRnJhbWVfTG9hZF9FcnJvcio6IHJlcG9ydHMg
bG9hZCBmYWlsZWQKKyAqICAgIGFuZCBhcyBhcmd1bWVudCBhIHBvaW50ZXIgdG8gc3RydWN0dXJl
IGRlZmluaW5nIHRoZSBlcnJvci4KKyAqICAtICJjb250ZW50cyxzaXplLGNoYW5nZWQiLCBFdmFz
X0Nvb3JkWzJdOiByZXBvcnRzIGNvbnRlbnRzIHNpemUKKyAqICAgIGNoYW5nZWQgZHVlIG5ldyBs
YXlvdXQsIHNjcmlwdCBhY3Rpb25zIG9yIGFueSBvdGhlciBldmVudHMuCisgKi8KKworCisvKioK
KyAqIFN0cnVjdHVyZSB1c2VkIHRvIHJlcG9ydCBsb2FkIGVycm9ycy4KKyAqCisgKiBMb2FkIGVy
cm9ycyBhcmUgcmVwb3J0ZWQgYXMgc2lnbmFsIGJ5IGV3a192aWV3LiBBbGwgdGhlIHN0cmluZ3Mg
YXJlCisgKiB0ZW1wb3JhcnkgcmVmZXJlbmNlcyBhbmQgc2hvdWxkIEBiIG5vdCBiZSB1c2VkIGFm
dGVyIHRoZSBzaWduYWwKKyAqIGNhbGxiYWNrIHJldHVybnMuIElmIHJlcXVpcmVkLCBtYWtlIGNv
cGllcyB3aXRoIHN0cmR1cCgpIG9yCisgKiBlaW5hX3N0cmluZ3NoYXJlX2FkZCgpICh0aGV5IGFy
ZSBub3QgZXZlbiBndWFyYW50ZWVkIHRvIGJlCisgKiBzdHJpbmdzaGFyZWQsIHNvIG11c3QgdXNl
IGVpbmFfc3RyaW5nc2hhcmVfYWRkKCkgYW5kIG5vdAorICogZWluYV9zdHJpbmdzaGFyZV9yZWYo
KSkuCisgKi8KK3R5cGVkZWYgc3RydWN0IF9Fd2tfRnJhbWVfTG9hZF9FcnJvciBFd2tfRnJhbWVf
TG9hZF9FcnJvcjsKK3N0cnVjdCBfRXdrX0ZyYW1lX0xvYWRfRXJyb3IgeworICAgIGludCBjb2Rl
OyAvKio8IG51bWVyaWMgZXJyb3IgY29kZSAqLworICAgIEVpbmFfQm9vbCBpc19jYW5jZWxsYXRp
b247IC8qKjwgaWYgbG9hZCBmYWlsZWQgYmVjYXVzZSBpdCB3YXMgY2FuY2VsZWQgKi8KKyAgICBj
b25zdCBjaGFyICpkb21haW47IC8qKjwgZXJyb3IgZG9tYWluIG5hbWUgKi8KKyAgICBjb25zdCBj
aGFyICpkZXNjcmlwdGlvbjsgLyoqPCBlcnJvciBkZXNjcmlwdGlvbiBhbHJlYWR5IGxvY2FsaXpl
ZCAqLworICAgIGNvbnN0IGNoYXIgKmZhaWxpbmdfdXJsOyAvKio8IHRoZSB1cmwgdGhhdCBmYWls
ZWQgdG8gbG9hZCAqLworICAgIEV2YXNfT2JqZWN0ICpmcmFtZTsgLyoqPCBmcmFtZSB3aGVyZSB0
aGUgZmFpbHVyZSBoYXBwZW5lZCAqLworfTsKKworLyoqCisgKiBTdHJ1Y3R1cmUgdXNlZCB0byBy
ZXBvcnQgaGl0IHRlc3QgcmVzdWx0cy4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgX0V3a19IaXRfVGVz
dCBFd2tfSGl0X1Rlc3Q7CitzdHJ1Y3QgX0V3a19IaXRfVGVzdCB7CisgICAgaW50IHgsIHk7Cisg
ICAgc3RydWN0IHsKKyAgICAgICAgaW50IHgsIHksIHcsIGg7CisgICAgfSBib3VuZGluZ19ib3g7
CisgICAgY29uc3QgY2hhciAqdGl0bGU7CisgICAgY29uc3QgY2hhciAqYWx0ZXJuYXRlX3RleHQ7
IC8qKjwgZm9yIGltYWdlLCBhcmVhLCBpbnB1dCBhbmQgYXBwbGV0ICovCisgICAgRXZhc19PYmpl
Y3QgKmZyYW1lOworICAgIHN0cnVjdCB7CisgICAgICAgIGNvbnN0IGNoYXIgKnRleHQ7CisgICAg
ICAgIGNvbnN0IGNoYXIgKnVybDsKKyAgICAgICAgY29uc3QgY2hhciAqdGl0bGU7CisgICAgICAg
IEV2YXNfT2JqZWN0ICp0YXJnZXRfZnJhbWU7CisgICAgfSBsaW5rOworICAgIHN0cnVjdCB7Cisg
ICAgICAgIEVpbmFfQm9vbCBlZGl0YWJsZToxOworICAgICAgICBFaW5hX0Jvb2wgc2VsZWN0ZWQ6
MTsKKyAgICB9IGZsYWdzOworfTsKKworCitFQVBJIEV2YXNfT2JqZWN0ICpld2tfZnJhbWVfdmll
d19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOworRUFQSSB2b2lkICAgICAgICAgZXdrX2ZyYW1l
X3RoZW1lX3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqcGF0aCk7CitFQVBJIGNvbnN0
IGNoYXIgICpld2tfZnJhbWVfdGhlbWVfZ2V0KEV2YXNfT2JqZWN0ICpvKTsKKworRUFQSSBFaW5h
X0l0ZXJhdG9yICpld2tfZnJhbWVfY2hpbGRyZW5faXRlcmF0b3JfbmV3KEV2YXNfT2JqZWN0ICpv
KTsKK0VBUEkgRXZhc19PYmplY3QgICAqZXdrX2ZyYW1lX2NoaWxkX2ZpbmQoRXZhc19PYmplY3Qg
Km8sIGNvbnN0IGNoYXIgKm5hbWUpOworCitFQVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVfdXJp
X3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqdXJpKTsKK0VBUEkgY29uc3QgY2hhciAg
KmV3a19mcmFtZV91cmlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKK0VBUEkgY29uc3QgY2hh
ciAgKmV3a19mcmFtZV90aXRsZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOworRUFQSSBjb25z
dCBjaGFyICAqZXdrX2ZyYW1lX25hbWVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKK0VBUEkg
RWluYV9Cb29sICAgIGV3a19mcmFtZV9jb250ZW50c19zaXplX2dldChjb25zdCBFdmFzX09iamVj
dCAqbywgRXZhc19Db29yZCAqdywgRXZhc19Db29yZCAqaCk7CisKK0VBUEkgRWluYV9Cb29sICAg
IGV3a19mcmFtZV9jb250ZW50c19zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmNvbnRl
bnRzLCBzaXplX3QgY29udGVudHNfc2l6ZSwgY29uc3QgY2hhciAqbWltZV90eXBlLCBjb25zdCBj
aGFyICplbmNvZGluZywgY29uc3QgY2hhciAqYmFzZV91cmkpOworRUFQSSBFaW5hX0Jvb2wgICAg
ZXdrX2ZyYW1lX2NvbnRlbnRzX2FsdGVybmF0ZV9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNo
YXIgKmNvbnRlbnRzLCBzaXplX3QgY29udGVudHNfc2l6ZSwgY29uc3QgY2hhciAqbWltZV90eXBl
LCBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqYmFzZV91cmksIGNvbnN0IGNoYXIg
KnVucmVhY2hhYmxlX3VyaSk7CisKK0VBUEkgRWluYV9Cb29sICAgIGV3a19mcmFtZV9zY3JpcHRf
ZXhlY3V0ZShFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqc2NyaXB0KTsKKworRUFQSSBFaW5h
X0Jvb2wgICAgZXdrX2ZyYW1lX2VkaXRhYmxlX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CitF
QVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVfZWRpdGFibGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBF
aW5hX0Jvb2wgZWRpdGFibGUpOworCitFQVBJIGNoYXIgICAgICAgICpld2tfZnJhbWVfc2VsZWN0
aW9uX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CisKK0VBUEkgRWluYV9Cb29sICAgIGV3a19m
cmFtZV90ZXh0X3NlYXJjaChjb25zdCBFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqc3RyaW5n
LCBFaW5hX0Jvb2wgY2FzZV9zZW5zaXRpdmUsIEVpbmFfQm9vbCBmb3J3YXJkLCBFaW5hX0Jvb2wg
d3JhcCk7CisKK0VBUEkgdW5zaWduZWQgaW50IGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbWFyayhF
dmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqc3RyaW5nLCBFaW5hX0Jvb2wgY2FzZV9zZW5zaXRp
dmUsIEVpbmFfQm9vbCBoaWdobGlnaHQsIHVuc2lnbmVkIGludCBsaW1pdCk7CitFQVBJIEVpbmFf
Qm9vbCAgICBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX3VubWFya19hbGwoRXZhc19PYmplY3QgKm8p
OworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19oaWdobGlnaHRfc2V0
KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgaGlnaGxpZ2h0KTsKK0VBUEkgRWluYV9Cb29sICAg
IGV3a19mcmFtZV90ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X2dldChjb25zdCBFdmFzX09iamVjdCAq
byk7CisKK0VBUEkgRWluYV9Cb29sICAgIGV3a19mcmFtZV9zdG9wKEV2YXNfT2JqZWN0ICpvKTsK
K0VBUEkgRWluYV9Cb29sICAgIGV3a19mcmFtZV9yZWxvYWQoRXZhc19PYmplY3QgKm8pOworRUFQ
SSBFaW5hX0Jvb2wgICAgZXdrX2ZyYW1lX3JlbG9hZF9mdWxsKEV2YXNfT2JqZWN0ICpvKTsKKwor
RUFQSSBFaW5hX0Jvb2wgICAgZXdrX2ZyYW1lX2JhY2soRXZhc19PYmplY3QgKm8pOworRUFQSSBF
aW5hX0Jvb2wgICAgZXdrX2ZyYW1lX2ZvcndhcmQoRXZhc19PYmplY3QgKm8pOworRUFQSSBFaW5h
X0Jvb2wgICAgZXdrX2ZyYW1lX25hdmlnYXRlKEV2YXNfT2JqZWN0ICpvLCBpbnQgc3RlcHMpOwor
CitFQVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVfYmFja19wb3NzaWJsZShFdmFzX09iamVjdCAq
byk7CitFQVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVfZm9yd2FyZF9wb3NzaWJsZShFdmFzX09i
amVjdCAqbyk7CitFQVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVfbmF2aWdhdGVfcG9zc2libGUo
RXZhc19PYmplY3QgKm8sIGludCBzdGVwcyk7CisKK0VBUEkgZmxvYXQgICAgICAgIGV3a19mcmFt
ZV96b29tX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CitFQVBJIEVpbmFfQm9vbCAgICBld2tf
ZnJhbWVfem9vbV9zZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHpvb20pOworRUFQSSBFaW5hX0Jv
b2wgICAgZXdrX2ZyYW1lX3pvb21fdGV4dF9vbmx5X2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7
CitFQVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVfem9vbV90ZXh0X29ubHlfc2V0KEV2YXNfT2Jq
ZWN0ICpvLCBFaW5hX0Jvb2wgc2V0dGluZyk7CisKK0VBUEkgdm9pZCAgICAgICAgICBld2tfZnJh
bWVfaGl0X3Rlc3RfZnJlZShFd2tfSGl0X1Rlc3QgKmhpdF90ZXN0KTsKK0VBUEkgRXdrX0hpdF9U
ZXN0ICpld2tfZnJhbWVfaGl0X3Rlc3RfbmV3KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBpbnQgeCwg
aW50IHkpOworCitFQVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVfc2Nyb2xsX2FkZChFdmFzX09i
amVjdCAqbywgaW50IGR4LCBpbnQgZHkpOworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX2ZyYW1lX3Nj
cm9sbF9zZXQoRXZhc19PYmplY3QgKm8sIGludCB4LCBpbnQgeSk7CisKK0VBUEkgRWluYV9Cb29s
ICAgIGV3a19mcmFtZV9zY3JvbGxfc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8sIGludCAq
dywgaW50ICpoKTsKK0VBUEkgRWluYV9Cb29sICAgIGV3a19mcmFtZV9zY3JvbGxfcG9zX2dldChj
b25zdCBFdmFzX09iamVjdCAqbywgaW50ICp4LCBpbnQgKnkpOworCitFQVBJIEVpbmFfQm9vbCAg
ICBld2tfZnJhbWVfdmlzaWJsZV9jb250ZW50X2dlb21ldHJ5X2dldChjb25zdCBFdmFzX09iamVj
dCAqbywgRWluYV9Cb29sIGluY2x1ZGVfc2Nyb2xsYmFycywgaW50ICp4LCBpbnQgKnksIGludCAq
dywgaW50ICpoKTsKKworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX2ZyYW1lX3BhaW50X2Z1bGxfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKK0VBUEkgdm9pZCAgICAgICAgIGV3a19mcmFtZV9wYWlu
dF9mdWxsX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGZsYWcpOworCitFQVBJIEVpbmFf
Qm9vbCAgICBld2tfZnJhbWVfZmVlZF9mb2N1c19pbihFdmFzX09iamVjdCAqbyk7CitFQVBJIEVp
bmFfQm9vbCAgICBld2tfZnJhbWVfZmVlZF9mb2N1c19vdXQoRXZhc19PYmplY3QgKm8pOworCitF
QVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVfZmVlZF9tb3VzZV93aGVlbChFdmFzX09iamVjdCAq
bywgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCAqZXYpOworRUFQSSBFaW5hX0Jvb2wgICAg
ZXdrX2ZyYW1lX2ZlZWRfbW91c2VfZG93bihFdmFzX09iamVjdCAqbywgY29uc3QgRXZhc19FdmVu
dF9Nb3VzZV9Eb3duICpldik7CitFQVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVfZmVlZF9tb3Vz
ZV91cChFdmFzX09iamVjdCAqbywgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9VcCAqZXYpOworRUFQ
SSBFaW5hX0Jvb2wgICAgZXdrX2ZyYW1lX2ZlZWRfbW91c2VfbW92ZShFdmFzX09iamVjdCAqbywg
Y29uc3QgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlICpldik7CitFQVBJIEVpbmFfQm9vbCAgICBld2tf
ZnJhbWVfZmVlZF9rZXlfZG93bihFdmFzX09iamVjdCAqbywgY29uc3QgRXZhc19FdmVudF9LZXlf
RG93biAqZXYpOworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX2ZyYW1lX2ZlZWRfa2V5X3VwKEV2YXNf
T2JqZWN0ICpvLCBjb25zdCBFdmFzX0V2ZW50X0tleV9VcCAqZXYpOworCisKKyNpZmRlZiBfX2Nw
bHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLy8gZXdrX2ZyYW1lX2gKZGlmZiAtLWdpdCBhL1dl
YktpdC9lZmwvZXdrL2V3a19oaXN0b3J5LmNwcCBiL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0b3J5
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzU0NTFhCi0tLSAvZGV2
L251bGwKKysrIGIvV2ViS2l0L2VmbC9ld2svZXdrX2hpc3RvcnkuY3BwCkBAIC0wLDAgKzEsNzAy
IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBz
eXN0ZW1zCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcwor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfaGlzdG9yeS5oIgorCisjaW5j
bHVkZSAiQmFja0ZvcndhcmRMaXN0LmgiCisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUg
IkVXZWJLaXQuaCIKKyNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgIkhpc3RvcnlJ
dGVtLmgiCisjaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlIDxFaW5hLmg+CisjaW5jbHVkZSA8
ZWluYV9zYWZldHlfY2hlY2tzLmg+CisKK3N0cnVjdCBfRXdrX0hpc3RvcnkgeworICAgIFdlYkNv
cmU6OkJhY2tGb3J3YXJkTGlzdCAqY29yZTsKK307CisKKyNkZWZpbmUgRVdLX0hJU1RPUllfQ09S
RV9HRVRfT1JfUkVUVVJOKGhpc3RvcnksIGNvcmVfLCAuLi4pICAgICAgXAorICAgIGlmICghKGhp
c3RvcnkpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIENSSVRJQ0FMKCJoaXN0b3J5IGlzIE5VTEwuIik7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCEoaGlzdG9yeSktPmNvcmUp
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgQ1JJVElD
QUwoImhpc3RvcnktPmNvcmUgaXMgTlVMTC4iKTsgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIShoaXN0b3J5KS0+Y29yZS0+ZW5hYmxlZCgpKSB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFUlIoImhpc3RvcnktPmNvcmUg
aXMgZGlzYWJsZWQhLiIpOyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBf
X1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdCAqY29yZV8gPSAoaGlzdG9yeSktPmNv
cmUKKworCitzdHJ1Y3QgX0V3a19IaXN0b3J5X0l0ZW0geworICAgIFdlYkNvcmU6Okhpc3RvcnlJ
dGVtICpjb3JlOworCisgICAgY29uc3QgY2hhciAqdGl0bGU7CisgICAgY29uc3QgY2hhciAqYWx0
ZXJuYXRlX3RpdGxlOworICAgIGNvbnN0IGNoYXIgKnVyaTsKKyAgICBjb25zdCBjaGFyICpvcmln
aW5hbF91cmk7Cit9OworCisjZGVmaW5lIEVXS19ISVNUT1JZX0lURU1fQ09SRV9HRVRfT1JfUkVU
VVJOKGl0ZW0sIGNvcmVfLCAuLi4pIFwKKyAgICBpZiAoIShpdGVtKSkgeyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBDUklUSUNBTCgiaXRlbSBp
cyBOVUxMLiIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBf
X1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIGlmICghKGl0ZW0pLT5jb3JlKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIENSSVRJQ0FMKCJpdGVtLT5jb3JlIGlzIE5VTEwuIik7ICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0g
KmNvcmVfID0gKGl0ZW0pLT5jb3JlCisKKworc3RhdGljIGlubGluZSBFd2tfSGlzdG9yeV9JdGVt
ICpfZXdrX2hpc3RvcnlfaXRlbV9uZXcoV2ViQ29yZTo6SGlzdG9yeUl0ZW0gKmNvcmUpCit7Cisg
ICAgRXdrX0hpc3RvcnlfSXRlbSogaXRlbTsKKworICAgIGlmICghY29yZSkgeworICAgICAgICBF
UlIoIldlYkNvcmU6Okhpc3RvcnlJdGVtIGlzIE5VTEwuIik7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKworICAgIGl0ZW0gPSAoRXdrX0hpc3RvcnlfSXRlbSAqKWNhbGxvYygxLCBzaXplb2Yo
RXdrX0hpc3RvcnlfSXRlbSkpOworICAgIGlmICghaXRlbSkgeworICAgICAgICBDUklUSUNBTCgi
Q291bGQgbm90IGFsbG9jYXRlIGl0ZW0gbWVtb3J5LiIpOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CisKKyAgICBjb3JlLT5yZWYoKTsKKyAgICBpdGVtLT5jb3JlID0gY29yZTsKKworICAgIHJl
dHVybiBpdGVtOworfQorCitzdGF0aWMgaW5saW5lIEVpbmFfTGlzdCAqX2V3a19oaXN0b3J5X2l0
ZW1fbGlzdF9nZXQoY29uc3QgV2ViQ29yZTo6SGlzdG9yeUl0ZW1WZWN0b3IgJmNvcmVfaXRlbXMp
Cit7CisgICAgRWluYV9MaXN0KiByZXQgPSAwOworICAgIHVuc2lnbmVkIGludCBpLCBzaXplOwor
CisgICAgc2l6ZSA9IGNvcmVfaXRlbXMuc2l6ZSgpOworICAgIGZvciAoaSA9IDA7IGkgPCBzaXpl
OyBpKyspIHsKKyAgICAgICAgRXdrX0hpc3RvcnlfSXRlbSogaXRlbSA9IF9ld2tfaGlzdG9yeV9p
dGVtX25ldyhjb3JlX2l0ZW1zW2ldLmdldCgpKTsKKyAgICAgICAgaWYgKGl0ZW0pCisgICAgICAg
ICAgICByZXQgPSBlaW5hX2xpc3RfYXBwZW5kKHJldCwgaXRlbSk7CisgICAgfQorCisgICAgcmV0
dXJuIHJldDsKK30KKworLyoqCisgKiBHbyBmb3J3YXJkIGluIGhpc3Rvcnkgb25lIGl0ZW0sIGlm
IHBvc3NpYmxlLgorICoKKyAqIEBwYXJhbSBoaXN0b3J5IHdoaWNoIGhpc3RvcnkgaW5zdGFuY2Ug
dG8gbW9kaWZ5LgorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJ
TkFfRkFMU0Ugb24gZmFpbHVyZS4KKyAqLworRWluYV9Cb29sIGV3a19oaXN0b3J5X2ZvcndhcmQo
RXdrX0hpc3RvcnkqIGhpc3RvcnkpCit7CisgICAgRVdLX0hJU1RPUllfQ09SRV9HRVRfT1JfUkVU
VVJOKGhpc3RvcnksIGNvcmUsIEVJTkFfRkFMU0UpOworICAgIGlmIChjb3JlLT5mb3J3YXJkTGlz
dENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICBjb3JlLT5nb0Zv
cndhcmQoKTsKKyAgICByZXR1cm4gRUlOQV9UUlVFOworfQorCisvKioKKyAqIEdvIGJhY2sgaW4g
aGlzdG9yeSBvbmUgaXRlbSwgaWYgcG9zc2libGUuCisgKgorICogQHBhcmFtIGhpc3Rvcnkgd2hp
Y2ggaGlzdG9yeSBpbnN0YW5jZSB0byBtb2RpZnkuCisgKgorICogQHJldHVybiBAYyBFSU5BX1RS
VUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlLgorICovCitFaW5hX0Jvb2wg
ZXdrX2hpc3RvcnlfYmFjayhFd2tfSGlzdG9yeSogaGlzdG9yeSkKK3sKKyAgICBFV0tfSElTVE9S
WV9DT1JFX0dFVF9PUl9SRVRVUk4oaGlzdG9yeSwgY29yZSwgRUlOQV9GQUxTRSk7CisgICAgaWYg
KGNvcmUtPmJhY2tMaXN0Q291bnQoKSA8IDEpCisgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwor
ICAgIGNvcmUtPmdvQmFjaygpOworICAgIHJldHVybiBFSU5BX1RSVUU7Cit9CisKKy8qKgorICog
QWRkcyB0aGUgZ2l2ZW4gaXRlbSB0byBoaXN0b3J5LgorICoKKyAqIE1lbW9yeSBoYW5kbGluZzog
VGhpcyB3aWxsIG5vdCBtb2RpZnkgb3IgZXZlbiB0YWtlIHJlZmVyZW5jZXMgdG8KKyAqIGdpdmVu
IGl0ZW0gKEV3a19IaXN0b3J5X0l0ZW0pLCBzbyB5b3Ugc2hvdWxkIHN0aWxsIGhhbmRsZSBpdCB3
aXRoCisgKiBld2tfaGlzdG9yeV9pdGVtX2ZyZWUoKS4KKyAqCisgKiBAcGFyYW0gaGlzdG9yeSB3
aGljaCBoaXN0b3J5IGluc3RhbmNlIHRvIG1vZGlmeS4KKyAqIEBwYXJhbSBpdGVtIHJlZmVyZW5j
ZSB0byBhZGQgdG8gaGlzdG9yeS4gVW5tb2RpZmllZC4gTXVzdCBAYiBub3QgYmUgQGMgTlVMTC4K
KyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG9u
IGZhaWx1cmUuCisgKi8KK0VpbmFfQm9vbCBld2tfaGlzdG9yeV9oaXN0b3J5X2l0ZW1fYWRkKEV3
a19IaXN0b3J5KiBoaXN0b3J5LCBjb25zdCBFd2tfSGlzdG9yeV9JdGVtKiBpdGVtKQoreworICAg
IEVXS19ISVNUT1JZX0NPUkVfR0VUX09SX1JFVFVSTihoaXN0b3J5LCBoaXN0b3J5X2NvcmUsIEVJ
TkFfRkFMU0UpOworICAgIEVXS19ISVNUT1JZX0lURU1fQ09SRV9HRVRfT1JfUkVUVVJOKGl0ZW0s
IGl0ZW1fY29yZSwgRUlOQV9GQUxTRSk7CisgICAgaGlzdG9yeV9jb3JlLT5hZGRJdGVtKGl0ZW1f
Y29yZSk7CisgICAgcmV0dXJuIEVJTkFfVFJVRTsKK30KKworLyoqCisgKiBTZXRzIHRoZSBnaXZl
biBpdGVtIGFzIGN1cnJlbnQgaW4gaGlzdG9yeSAoZ28gdG8gaXRlbSkuCisgKgorICogTWVtb3J5
IGhhbmRsaW5nOiBUaGlzIHdpbGwgbm90IG1vZGlmeSBvciBldmVuIHRha2UgcmVmZXJlbmNlcyB0
bworICogZ2l2ZW4gaXRlbSAoRXdrX0hpc3RvcnlfSXRlbSksIHNvIHlvdSBzaG91bGQgc3RpbGwg
aGFuZGxlIGl0IHdpdGgKKyAqIGV3a19oaXN0b3J5X2l0ZW1fZnJlZSgpLgorICoKKyAqIEBwYXJh
bSBoaXN0b3J5IHdoaWNoIGhpc3RvcnkgaW5zdGFuY2UgdG8gbW9kaWZ5LgorICogQHBhcmFtIGl0
ZW0gcmVmZXJlbmNlIHRvIGdvIHRvIGhpc3RvcnkuIFVubW9kaWZpZWQuIE11c3QgQGIgbm90IGJl
IEBjIE5VTEwuCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlO
QV9GQUxTRSBvbiBmYWlsdXJlLgorICovCitFaW5hX0Jvb2wgZXdrX2hpc3RvcnlfaGlzdG9yeV9p
dGVtX3NldChFd2tfSGlzdG9yeSogaGlzdG9yeSwgY29uc3QgRXdrX0hpc3RvcnlfSXRlbSogaXRl
bSkKK3sKKyAgICBFV0tfSElTVE9SWV9DT1JFX0dFVF9PUl9SRVRVUk4oaGlzdG9yeSwgaGlzdG9y
eV9jb3JlLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfSElTVE9SWV9JVEVNX0NPUkVfR0VUX09SX1JF
VFVSTihpdGVtLCBpdGVtX2NvcmUsIEVJTkFfRkFMU0UpOworICAgIGhpc3RvcnlfY29yZS0+Z29U
b0l0ZW0oaXRlbV9jb3JlKTsKKyAgICByZXR1cm4gRUlOQV9UUlVFOworfQorCisvKioKKyAqIEdl
dCB0aGUgZmlyc3QgaXRlbSBmcm9tIGJhY2sgbGlzdCwgaWYgYW55LgorICoKKyAqIEBwYXJhbSBo
aXN0b3J5IHdoaWNoIGhpc3RvcnkgaW5zdGFuY2UgdG8gcXVlcnkuCisgKgorICogQHJldHVybiB0
aGUgQGIgbmV3bHkgYWxsb2NhdGVkIGl0ZW0gaW5zdGFuY2UuIFRoaXMgbWVtb3J5IG11c3QgYmUK
KyAqICAgICAgICAgcmVsZWFzZWQgd2l0aCBld2tfaGlzdG9yeV9pdGVtX2ZyZWUoKSBhZnRlciB1
c2UuCisgKi8KK0V3a19IaXN0b3J5X0l0ZW0qIGV3a19oaXN0b3J5X2hpc3RvcnlfaXRlbV9iYWNr
X2dldChjb25zdCBFd2tfSGlzdG9yeSogaGlzdG9yeSkKK3sKKyAgICBFV0tfSElTVE9SWV9DT1JF
X0dFVF9PUl9SRVRVUk4oaGlzdG9yeSwgY29yZSwgMCk7CisgICAgcmV0dXJuIF9ld2tfaGlzdG9y
eV9pdGVtX25ldyhjb3JlLT5iYWNrSXRlbSgpKTsKK30KKworLyoqCisgKiBHZXQgdGhlIGN1cnJl
bnQgaXRlbSBpbiBoaXN0b3J5LCBpZiBhbnkuCisgKgorICogQHBhcmFtIGhpc3Rvcnkgd2hpY2gg
aGlzdG9yeSBpbnN0YW5jZSB0byBxdWVyeS4KKyAqCisgKiBAcmV0dXJuIHRoZSBAYiBuZXdseSBh
bGxvY2F0ZWQgaXRlbSBpbnN0YW5jZS4gVGhpcyBtZW1vcnkgbXVzdCBiZQorICogICAgICAgICBy
ZWxlYXNlZCB3aXRoIGV3a19oaXN0b3J5X2l0ZW1fZnJlZSgpIGFmdGVyIHVzZS4KKyAqLworRXdr
X0hpc3RvcnlfSXRlbSogZXdrX2hpc3RvcnlfaGlzdG9yeV9pdGVtX2N1cnJlbnRfZ2V0KGNvbnN0
IEV3a19IaXN0b3J5KiBoaXN0b3J5KQoreworICAgIEVXS19ISVNUT1JZX0NPUkVfR0VUX09SX1JF
VFVSTihoaXN0b3J5LCBjb3JlLCAwKTsKKyAgICByZXR1cm4gX2V3a19oaXN0b3J5X2l0ZW1fbmV3
KGNvcmUtPmN1cnJlbnRJdGVtKCkpOworfQorCisvKioKKyAqIEdldCB0aGUgZmlyc3QgaXRlbSBm
cm9tIGZvcndhcmQgbGlzdCwgaWYgYW55LgorICoKKyAqIEBwYXJhbSBoaXN0b3J5IHdoaWNoIGhp
c3RvcnkgaW5zdGFuY2UgdG8gcXVlcnkuCisgKgorICogQHJldHVybiB0aGUgQGIgbmV3bHkgYWxs
b2NhdGVkIGl0ZW0gaW5zdGFuY2UuIFRoaXMgbWVtb3J5IG11c3QgYmUKKyAqICAgICAgICAgcmVs
ZWFzZWQgd2l0aCBld2tfaGlzdG9yeV9pdGVtX2ZyZWUoKSBhZnRlciB1c2UuCisgKi8KK0V3a19I
aXN0b3J5X0l0ZW0qIGV3a19oaXN0b3J5X2hpc3RvcnlfaXRlbV9mb3J3YXJkX2dldChjb25zdCBF
d2tfSGlzdG9yeSogaGlzdG9yeSkKK3sKKyAgICBFV0tfSElTVE9SWV9DT1JFX0dFVF9PUl9SRVRV
Uk4oaGlzdG9yeSwgY29yZSwgMCk7CisgICAgcmV0dXJuIF9ld2tfaGlzdG9yeV9pdGVtX25ldyhj
b3JlLT5mb3J3YXJkSXRlbSgpKTsKK30KKworLyoqCisgKiBHZXQgaXRlbSBhdCBnaXZlbiBwb3Np
dGlvbiwgaWYgYW55IGF0IHRoYXQgaW5kZXguCisgKgorICogQHBhcmFtIGhpc3Rvcnkgd2hpY2gg
aGlzdG9yeSBpbnN0YW5jZSB0byBxdWVyeS4KKyAqCisgKiBAcmV0dXJuIHRoZSBAYiBuZXdseSBh
bGxvY2F0ZWQgaXRlbSBpbnN0YW5jZS4gVGhpcyBtZW1vcnkgbXVzdCBiZQorICogICAgICAgICBy
ZWxlYXNlZCB3aXRoIGV3a19oaXN0b3J5X2l0ZW1fZnJlZSgpIGFmdGVyIHVzZS4KKyAqLworRXdr
X0hpc3RvcnlfSXRlbSogZXdrX2hpc3RvcnlfaGlzdG9yeV9pdGVtX250aF9nZXQoY29uc3QgRXdr
X0hpc3RvcnkqIGhpc3RvcnksIGludCBpbmRleCkKK3sKKyAgICBFV0tfSElTVE9SWV9DT1JFX0dF
VF9PUl9SRVRVUk4oaGlzdG9yeSwgY29yZSwgMCk7CisgICAgcmV0dXJuIF9ld2tfaGlzdG9yeV9p
dGVtX25ldyhjb3JlLT5pdGVtQXRJbmRleChpbmRleCkpOworfQorCisvKioKKyAqIFF1ZXJpZXMg
aWYgZ2l2ZW4gaXRlbSBpcyBpbiBoaXN0b3J5LgorICoKKyAqIE1lbW9yeSBoYW5kbGluZzogVGhp
cyB3aWxsIG5vdCBtb2RpZnkgb3IgZXZlbiB0YWtlIHJlZmVyZW5jZXMgdG8KKyAqIGdpdmVuIGl0
ZW0gKEV3a19IaXN0b3J5X0l0ZW0pLCBzbyB5b3Ugc2hvdWxkIHN0aWxsIGhhbmRsZSBpdCB3aXRo
CisgKiBld2tfaGlzdG9yeV9pdGVtX2ZyZWUoKS4KKyAqCisgKiBAcGFyYW0gaGlzdG9yeSB3aGlj
aCBoaXN0b3J5IGluc3RhbmNlIHRvIG1vZGlmeS4KKyAqIEBwYXJhbSBpdGVtIHJlZmVyZW5jZSB0
byBjaGVjayBpbiBoaXN0b3J5LiBNdXN0IEBiIG5vdCBiZSBAYyBOVUxMLgorICoKKyAqIEByZXR1
cm4gQGMgRUlOQV9UUlVFIGlmIGluIGhpc3RvcnksIEBjIEVJTkFfRkFMU0UgaWYgbm90IG9yIGZh
aWx1cmUuCisgKi8KK0VpbmFfQm9vbCBld2tfaGlzdG9yeV9oaXN0b3J5X2l0ZW1fY29udGFpbnMo
Y29uc3QgRXdrX0hpc3RvcnkqIGhpc3RvcnksIGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0p
Cit7CisgICAgRVdLX0hJU1RPUllfQ09SRV9HRVRfT1JfUkVUVVJOKGhpc3RvcnksIGhpc3Rvcnlf
Y29yZSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX0hJU1RPUllfSVRFTV9DT1JFX0dFVF9PUl9SRVRV
Uk4oaXRlbSwgaXRlbV9jb3JlLCBFSU5BX0ZBTFNFKTsKKyAgICByZXR1cm4gaGlzdG9yeV9jb3Jl
LT5jb250YWluc0l0ZW0oaXRlbV9jb3JlKTsKK30KKworLyoqCisgKiBHZXQgdGhlIHdob2xlIGZv
cndhcmQgbGlzdC4KKyAqCisgKiBAcGFyYW0gaGlzdG9yeSB3aGljaCBoaXN0b3J5IGluc3RhbmNl
IHRvIHF1ZXJ5LgorICoKKyAqIEByZXR1cm4gYSBuZXdseSBhbGxvY2F0ZWQgbGlzdCBvZiBAYiBu
ZXdseSBhbGxvY2F0ZWQgaXRlbQorICogICAgICAgICBpbnN0YW5jZS4gVGhpcyBtZW1vcnkgb2Yg
ZWFjaCBpdGVtIG11c3QgYmUgcmVsZWFzZWQgd2l0aAorICogICAgICAgICBld2tfaGlzdG9yeV9p
dGVtX2ZyZWUoKSBhZnRlciB1c2UuIHVzZQorICogICAgICAgICBld2tfaGlzdG9yeV9pdGVtX2xp
c3RfZnJlZSgpIGZvciBjb252ZW5pZW5jZS4KKyAqCisgKiBAc2VlIGV3a19oaXN0b3J5X2l0ZW1f
bGlzdF9mcmVlKCkKKyAqIEBzZWUgZXdrX2hpc3RvcnlfZm9yd2FyZF9saXN0X2dldF93aXRoX2xp
bWl0KCkKKyAqLworRWluYV9MaXN0KiBld2tfaGlzdG9yeV9mb3J3YXJkX2xpc3RfZ2V0KGNvbnN0
IEV3a19IaXN0b3J5KiBoaXN0b3J5KQoreworICAgIEVXS19ISVNUT1JZX0NPUkVfR0VUX09SX1JF
VFVSTihoaXN0b3J5LCBjb3JlLCAwKTsKKyAgICBXZWJDb3JlOjpIaXN0b3J5SXRlbVZlY3RvciBp
dGVtczsKKyAgICBpbnQgbGltaXQgPSBjb3JlLT5mb3J3YXJkTGlzdENvdW50KCk7CisgICAgY29y
ZS0+Zm9yd2FyZExpc3RXaXRoTGltaXQobGltaXQsIGl0ZW1zKTsKKyAgICByZXR1cm4gX2V3a19o
aXN0b3J5X2l0ZW1fbGlzdF9nZXQoaXRlbXMpOworfQorCisvKioKKyAqIEdldCB0aGUgZm9yd2Fy
ZCBsaXN0IHdpdGhpbiB0aGUgZ2l2ZW4gbGltaXQuCisgKgorICogQHBhcmFtIGhpc3Rvcnkgd2hp
Y2ggaGlzdG9yeSBpbnN0YW5jZSB0byBxdWVyeS4KKyAqIEBwYXJhbSBsaW1pdCB0aGUgbWF4aW11
bSBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuLgorICoKKyAqIEByZXR1cm4gYSBuZXdseSBhbGxv
Y2F0ZWQgbGlzdCBvZiBAYiBuZXdseSBhbGxvY2F0ZWQgaXRlbQorICogICAgICAgICBpbnN0YW5j
ZS4gVGhpcyBtZW1vcnkgb2YgZWFjaCBpdGVtIG11c3QgYmUgcmVsZWFzZWQgd2l0aAorICogICAg
ICAgICBld2tfaGlzdG9yeV9pdGVtX2ZyZWUoKSBhZnRlciB1c2UuIHVzZQorICogICAgICAgICBl
d2tfaGlzdG9yeV9pdGVtX2xpc3RfZnJlZSgpIGZvciBjb252ZW5pZW5jZS4KKyAqCisgKiBAc2Vl
IGV3a19oaXN0b3J5X2l0ZW1fbGlzdF9mcmVlKCkKKyAqIEBzZWUgZXdrX2hpc3RvcnlfZm9yd2Fy
ZF9saXN0X2xlbmd0aCgpCisgKiBAc2VlIGV3a19oaXN0b3J5X2ZvcndhcmRfbGlzdF9nZXQoKQor
ICovCitFaW5hX0xpc3QqIGV3a19oaXN0b3J5X2ZvcndhcmRfbGlzdF9nZXRfd2l0aF9saW1pdChj
b25zdCBFd2tfSGlzdG9yeSogaGlzdG9yeSwgaW50IGxpbWl0KQoreworICAgIEVXS19ISVNUT1JZ
X0NPUkVfR0VUX09SX1JFVFVSTihoaXN0b3J5LCBjb3JlLCAwKTsKKyAgICBXZWJDb3JlOjpIaXN0
b3J5SXRlbVZlY3RvciBpdGVtczsKKyAgICBjb3JlLT5mb3J3YXJkTGlzdFdpdGhMaW1pdChsaW1p
dCwgaXRlbXMpOworICAgIHJldHVybiBfZXdrX2hpc3RvcnlfaXRlbV9saXN0X2dldChpdGVtcyk7
Cit9CisKKy8qKgorICogR2V0IHRoZSB3aG9sZSBzaXplIG9mIGZvcndhcmQgbGlzdC4KKyAqCisg
KiBAcGFyYW0gaGlzdG9yeSB3aGljaCBoaXN0b3J5IGluc3RhbmNlIHRvIHF1ZXJ5LgorICoKKyAq
IEByZXR1cm4gbnVtYmVyIG9mIGVsZW1lbnRzIGluIHdob2xlIGxpc3QuCisgKgorICogQHNlZSBl
d2tfaGlzdG9yeV9mb3J3YXJkX2xpc3RfZ2V0X3dpdGhfbGltaXQoKQorICovCitpbnQgZXdrX2hp
c3RvcnlfZm9yd2FyZF9saXN0X2xlbmd0aChjb25zdCBFd2tfSGlzdG9yeSogaGlzdG9yeSkKK3sK
KyAgICBFV0tfSElTVE9SWV9DT1JFX0dFVF9PUl9SRVRVUk4oaGlzdG9yeSwgY29yZSwgMCk7Cisg
ICAgcmV0dXJuIGNvcmUtPmZvcndhcmRMaXN0Q291bnQoKTsKK30KKworLyoqCisgKiBHZXQgdGhl
IHdob2xlIGJhY2sgbGlzdC4KKyAqCisgKiBAcGFyYW0gaGlzdG9yeSB3aGljaCBoaXN0b3J5IGlu
c3RhbmNlIHRvIHF1ZXJ5LgorICoKKyAqIEByZXR1cm4gYSBuZXdseSBhbGxvY2F0ZWQgbGlzdCBv
ZiBAYiBuZXdseSBhbGxvY2F0ZWQgaXRlbQorICogICAgICAgICBpbnN0YW5jZS4gVGhpcyBtZW1v
cnkgb2YgZWFjaCBpdGVtIG11c3QgYmUgcmVsZWFzZWQgd2l0aAorICogICAgICAgICBld2tfaGlz
dG9yeV9pdGVtX2ZyZWUoKSBhZnRlciB1c2UuIHVzZQorICogICAgICAgICBld2tfaGlzdG9yeV9p
dGVtX2xpc3RfZnJlZSgpIGZvciBjb252ZW5pZW5jZS4KKyAqCisgKiBAc2VlIGV3a19oaXN0b3J5
X2l0ZW1fbGlzdF9mcmVlKCkKKyAqIEBzZWUgZXdrX2hpc3RvcnlfYmFja19saXN0X2dldF93aXRo
X2xpbWl0KCkKKyAqLworRWluYV9MaXN0KiBld2tfaGlzdG9yeV9iYWNrX2xpc3RfZ2V0KGNvbnN0
IEV3a19IaXN0b3J5KiBoaXN0b3J5KQoreworICAgIEVXS19ISVNUT1JZX0NPUkVfR0VUX09SX1JF
VFVSTihoaXN0b3J5LCBjb3JlLCAwKTsKKyAgICBXZWJDb3JlOjpIaXN0b3J5SXRlbVZlY3RvciBp
dGVtczsKKyAgICBpbnQgbGltaXQgPSBjb3JlLT5iYWNrTGlzdENvdW50KCk7CisgICAgY29yZS0+
YmFja0xpc3RXaXRoTGltaXQobGltaXQsIGl0ZW1zKTsKKyAgICByZXR1cm4gX2V3a19oaXN0b3J5
X2l0ZW1fbGlzdF9nZXQoaXRlbXMpOworfQorCisvKioKKyAqIEdldCB0aGUgYmFjayBsaXN0IHdp
dGhpbiB0aGUgZ2l2ZW4gbGltaXQuCisgKgorICogQHBhcmFtIGhpc3Rvcnkgd2hpY2ggaGlzdG9y
eSBpbnN0YW5jZSB0byBxdWVyeS4KKyAqIEBwYXJhbSBsaW1pdCB0aGUgbWF4aW11bSBudW1iZXIg
b2YgaXRlbXMgdG8gcmV0dXJuLgorICoKKyAqIEByZXR1cm4gYSBuZXdseSBhbGxvY2F0ZWQgbGlz
dCBvZiBAYiBuZXdseSBhbGxvY2F0ZWQgaXRlbQorICogICAgICAgICBpbnN0YW5jZS4gVGhpcyBt
ZW1vcnkgb2YgZWFjaCBpdGVtIG11c3QgYmUgcmVsZWFzZWQgd2l0aAorICogICAgICAgICBld2tf
aGlzdG9yeV9pdGVtX2ZyZWUoKSBhZnRlciB1c2UuIHVzZQorICogICAgICAgICBld2tfaGlzdG9y
eV9pdGVtX2xpc3RfZnJlZSgpIGZvciBjb252ZW5pZW5jZS4KKyAqCisgKiBAc2VlIGV3a19oaXN0
b3J5X2l0ZW1fbGlzdF9mcmVlKCkKKyAqIEBzZWUgZXdrX2hpc3RvcnlfYmFja19saXN0X2xlbmd0
aCgpCisgKiBAc2VlIGV3a19oaXN0b3J5X2JhY2tfbGlzdF9nZXQoKQorICovCitFaW5hX0xpc3Qq
IGV3a19oaXN0b3J5X2JhY2tfbGlzdF9nZXRfd2l0aF9saW1pdChjb25zdCBFd2tfSGlzdG9yeSog
aGlzdG9yeSwgaW50IGxpbWl0KQoreworICAgIEVXS19ISVNUT1JZX0NPUkVfR0VUX09SX1JFVFVS
TihoaXN0b3J5LCBjb3JlLCAwKTsKKyAgICBXZWJDb3JlOjpIaXN0b3J5SXRlbVZlY3RvciBpdGVt
czsKKyAgICBjb3JlLT5iYWNrTGlzdFdpdGhMaW1pdChsaW1pdCwgaXRlbXMpOworICAgIHJldHVy
biBfZXdrX2hpc3RvcnlfaXRlbV9saXN0X2dldChpdGVtcyk7Cit9CisKKy8qKgorICogR2V0IHRo
ZSB3aG9sZSBzaXplIG9mIGJhY2sgbGlzdC4KKyAqCisgKiBAcGFyYW0gaGlzdG9yeSB3aGljaCBo
aXN0b3J5IGluc3RhbmNlIHRvIHF1ZXJ5LgorICoKKyAqIEByZXR1cm4gbnVtYmVyIG9mIGVsZW1l
bnRzIGluIHdob2xlIGxpc3QuCisgKgorICogQHNlZSBld2tfaGlzdG9yeV9iYWNrX2xpc3RfZ2V0
X3dpdGhfbGltaXQoKQorICovCitpbnQgZXdrX2hpc3RvcnlfYmFja19saXN0X2xlbmd0aChjb25z
dCBFd2tfSGlzdG9yeSogaGlzdG9yeSkKK3sKKyAgICBFV0tfSElTVE9SWV9DT1JFX0dFVF9PUl9S
RVRVUk4oaGlzdG9yeSwgY29yZSwgMCk7CisgICAgcmV0dXJuIGNvcmUtPmJhY2tMaXN0Q291bnQo
KTsKK30KKworLyoqCisgKiBHZXQgbWF4aW11bSBjYXBhY2l0eSBvZiBnaXZlbiBoaXN0b3J5Lgor
ICoKKyAqIEBwYXJhbSBoaXN0b3J5IHdoaWNoIGhpc3RvcnkgaW5zdGFuY2UgdG8gcXVlcnkuCisg
KgorICogQHJldHVybiBtYXhpbXVtIG51bWJlciBvZiBlbnRyaWVzIHRoaXMgaGlzdG9yeSB3aWxs
IGhvbGQuCisgKi8KK2ludCBld2tfaGlzdG9yeV9saW1pdF9nZXQoRXdrX0hpc3RvcnkqIGhpc3Rv
cnkpCit7CisgICAgRVdLX0hJU1RPUllfQ09SRV9HRVRfT1JfUkVUVVJOKGhpc3RvcnksIGNvcmUs
IDApOworICAgIHJldHVybiBjb3JlLT5jYXBhY2l0eSgpOworfQorCisvKioKKyAqIFNldCBtYXhp
bXVtIGNhcGFjaXR5IG9mIGdpdmVuIGhpc3RvcnkuCisgKgorICogQHBhcmFtIGhpc3Rvcnkgd2hp
Y2ggaGlzdG9yeSBpbnN0YW5jZSB0byBtb2RpZnkuCisgKiBAcGFyYW0gbGltaXQgbWF4aW11bSBz
aXplIHRvIGFsbG93LgorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBj
IEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICovCitFaW5hX0Jvb2wgZXdrX2hpc3RvcnlfbGltaXRf
c2V0KGNvbnN0IEV3a19IaXN0b3J5KiBoaXN0b3J5LCBpbnQgbGltaXQpCit7CisgICAgRVdLX0hJ
U1RPUllfQ09SRV9HRVRfT1JfUkVUVVJOKGhpc3RvcnksIGNvcmUsIEVJTkFfRkFMU0UpOworICAg
IGNvcmUtPnNldENhcGFjaXR5KGxpbWl0KTsKKyAgICByZXR1cm4gRUlOQV9UUlVFOworfQorCisv
KioKKyAqIENyZWF0ZSBhIG5ldyBoaXN0b3J5IGl0ZW0gd2l0aCBnaXZlbiBVUkkgYW5kIHRpdGxl
LgorICoKKyAqIEBwYXJhbSB1cmkgd2hlcmUgdGhpcyByZXNvdXJjZSBpcyBsb2NhdGVkLgorICog
QHBhcmFtIHRpdGxlIHJlc291cmNlIHRpdGxlLgorICoKKyAqIEByZXR1cm4gbmV3bHkgYWxsb2Nh
dGVkIGhpc3RvcnkgaXRlbSBvciBAYyBOVUxMIG9uIGVycm9ycy4gWW91IG11c3QKKyAqICAgICAg
ICAgZnJlZSB0aGlzIGl0ZW0gd2l0aCBld2tfaGlzdG9yeV9pdGVtX2ZyZWUoKS4KKyAqLworRXdr
X0hpc3RvcnlfSXRlbSogZXdrX2hpc3RvcnlfaXRlbV9uZXcoY29uc3QgY2hhciogdXJpLCBjb25z
dCBjaGFyKiB0aXRsZSkKK3sKKyAgICBXZWJDb3JlOjpTdHJpbmcgdSA9IFdlYkNvcmU6OlN0cmlu
Zzo6ZnJvbVVURjgodXJpKTsKKyAgICBXZWJDb3JlOjpTdHJpbmcgdCA9IFdlYkNvcmU6OlN0cmlu
Zzo6ZnJvbVVURjgodGl0bGUpOworICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVt
PiBjb3JlID0gV2ViQ29yZTo6SGlzdG9yeUl0ZW06OmNyZWF0ZSh1LCB0LCAwKTsKKyAgICBFd2tf
SGlzdG9yeV9JdGVtKiBpdGVtID0gX2V3a19oaXN0b3J5X2l0ZW1fbmV3KGNvcmUucmVsZWFzZSgp
LnJlbGVhc2VSZWYoKSk7CisgICAgcmV0dXJuIGl0ZW07Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9p
ZCBfZXdrX2hpc3RvcnlfaXRlbV9mcmVlKEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0sIFdlYkNvcmU6
Okhpc3RvcnlJdGVtKiBjb3JlKQoreworICAgIGNvcmUtPmRlcmVmKCk7CisgICAgZnJlZShpdGVt
KTsKK30KKworLyoqCisgKiBGcmVlIGdpdmVuIGhpc3RvcnkgaXRlbSBpbnN0YW5jZS4KKyAqCisg
KiBAcGFyYW0gaXRlbSB3aGF0IHRvIGZyZWUuCisgKi8KK3ZvaWQgZXdrX2hpc3RvcnlfaXRlbV9m
cmVlKEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0pCit7CisgICAgRVdLX0hJU1RPUllfSVRFTV9DT1JF
X0dFVF9PUl9SRVRVUk4oaXRlbSwgY29yZSk7CisgICAgX2V3a19oaXN0b3J5X2l0ZW1fZnJlZShp
dGVtLCBjb3JlKTsKK30KKworLyoqCisgKiBGcmVlIGdpdmVuIGxpc3QgYW5kIGFzc29jaWF0ZWQg
aGlzdG9yeSBpdGVtcyBpbnN0YW5jZXMuCisgKgorICogQHBhcmFtIGhpc3RvcnlfaXRlbXMgbGlz
dCBvZiBpdGVtcyB0byBmcmVlIChib3RoIGxpc3Qgbm9kZXMgYW5kCisgKiAgICAgICAgaXRlbSBp
bnN0YW5jZXMpLgorICovCit2b2lkIGV3a19oaXN0b3J5X2l0ZW1fbGlzdF9mcmVlKEVpbmFfTGlz
dCogaGlzdG9yeV9pdGVtcykKK3sKKyAgICB2b2lkKiBkOworICAgIEVJTkFfTElTVF9GUkVFKGhp
c3RvcnlfaXRlbXMsIGQpIHsKKyAgICAgICAgRXdrX0hpc3RvcnlfSXRlbSogaXRlbSA9IChFd2tf
SGlzdG9yeV9JdGVtKilkOworICAgICAgICBfZXdrX2hpc3RvcnlfaXRlbV9mcmVlKGl0ZW0sIGl0
ZW0tPmNvcmUpOworICAgIH0KK30KKworLyoqCisgKiBRdWVyeSB0aXRsZSBmb3IgZ2l2ZW4gaGlz
dG9yeSBpdGVtLgorICoKKyAqIEBwYXJhbSBpdGVtIGhpc3RvcnkgaXRlbSB0byBxdWVyeS4KKyAq
CisgKiBAcmV0dXJuIHRoZSB0aXRsZSBwb2ludGVyLCB0aGF0IG1heSBiZSBAYyBOVUxMLiBUaGlz
IHBvaW50ZXIgaXMKKyAqICAgICAgICAgZ3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJl
LCBzbyB3aGVuZXZlciBwb3NzaWJsZQorICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1
IGN5Y2xlcyBhbmQgdXNlCisgKiAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVh
ZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2FkZCgpIG9yCisgKiAgICAgICAgIHN0cmR1cCgpLgorICov
Citjb25zdCBjaGFyKiBld2tfaGlzdG9yeV9pdGVtX3RpdGxlX2dldChjb25zdCBFd2tfSGlzdG9y
eV9JdGVtKiBpdGVtKQoreworICAgIEVXS19ISVNUT1JZX0lURU1fQ09SRV9HRVRfT1JfUkVUVVJO
KGl0ZW0sIGNvcmUsIDApOworICAgIC8vIGhpZGUgdGhlIGZvbGxvd2luZyBvcHRpbXphdGlvbiBm
cm9tIG91dHNpZGUKKyAgICBFd2tfSGlzdG9yeV9JdGVtKiBpID0gKEV3a19IaXN0b3J5X0l0ZW0q
KWl0ZW07CisgICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZpLT50aXRsZSwgY29yZS0+dGl0
bGUoKS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gaS0+dGl0bGU7Cit9CisKKy8qKgorICog
UXVlcnkgYWx0ZXJuYXRlIHRpdGxlIGZvciBnaXZlbiBoaXN0b3J5IGl0ZW0uCisgKgorICogQHBh
cmFtIGl0ZW0gaGlzdG9yeSBpdGVtIHRvIHF1ZXJ5LgorICoKKyAqIEByZXR1cm4gdGhlIGFsdGVy
bmF0ZSB0aXRsZSBwb2ludGVyLCB0aGF0IG1heSBiZSBAYyBOVUxMLiBUaGlzCisgKiAgICAgICAg
IHBvaW50ZXIgaXMgZ3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZl
cgorICogICAgICAgICBwb3NzaWJsZSBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQg
dXNlCisgKiAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0
cmluZ3NoYXJlX2FkZCgpIG9yCisgKiAgICAgICAgIHN0cmR1cCgpLgorICovCitjb25zdCBjaGFy
KiBld2tfaGlzdG9yeV9pdGVtX3RpdGxlX2FsdGVybmF0ZV9nZXQoY29uc3QgRXdrX0hpc3Rvcnlf
SXRlbSogaXRlbSkKK3sKKyAgICBFV0tfSElTVE9SWV9JVEVNX0NPUkVfR0VUX09SX1JFVFVSTihp
dGVtLCBjb3JlLCAwKTsKKyAgICAvLyBoaWRlIHRoZSBmb2xsb3dpbmcgb3B0aW16YXRpb24gZnJv
bSBvdXRzaWRlCisgICAgRXdrX0hpc3RvcnlfSXRlbSogaSA9IChFd2tfSGlzdG9yeV9JdGVtKilp
dGVtOworICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmaS0+YWx0ZXJuYXRlX3RpdGxlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlLT5hbHRlcm5hdGVUaXRsZSgpLnV0Zjgo
KS5kYXRhKCkpOworICAgIHJldHVybiBpLT5hbHRlcm5hdGVfdGl0bGU7Cit9CisKKy8qKgorICog
U2V0IGFsdGVybmF0ZSB0aXRsZSBmb3IgZ2l2ZW4gaGlzdG9yeSBpdGVtLgorICoKKyAqIEBwYXJh
bSBpdGVtIGhpc3RvcnkgaXRlbSB0byBxdWVyeS4KKyAqIEBwYXJhbSB0aXRsZSBuZXcgYWx0ZXJu
YXRlIHRpdGxlIHRvIHVzZSBmb3IgZ2l2ZW4gaXRlbS4gTm8KKyAqICAgICAgICByZWZlcmVuY2Vz
IGFyZSBrZXB0IGFmdGVyIHRoaXMgZnVuY3Rpb24gcmV0dXJucy4KKyAqLwordm9pZCBld2tfaGlz
dG9yeV9pdGVtX3RpdGxlX2FsdGVybmF0ZV9zZXQoRXdrX0hpc3RvcnlfSXRlbSogaXRlbSwgY29u
c3QgY2hhciogdGl0bGUpCit7CisgICAgRVdLX0hJU1RPUllfSVRFTV9DT1JFX0dFVF9PUl9SRVRV
Uk4oaXRlbSwgY29yZSk7CisgICAgaWYgKCFlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJml0ZW0t
PmFsdGVybmF0ZV90aXRsZSwgdGl0bGUpKQorICAgICAgICByZXR1cm47CisgICAgY29yZS0+c2V0
QWx0ZXJuYXRlVGl0bGUoV2ViQ29yZTo6U3RyaW5nOjpmcm9tVVRGOCh0aXRsZSkpOworfQorCisv
KioKKyAqIFF1ZXJ5IFVSSSBmb3IgZ2l2ZW4gaGlzdG9yeSBpdGVtLgorICoKKyAqIEBwYXJhbSBp
dGVtIGhpc3RvcnkgaXRlbSB0byBxdWVyeS4KKyAqCisgKiBAcmV0dXJuIHRoZSBVUkkgcG9pbnRl
ciwgdGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhpcyBwb2ludGVyIGlzCisgKiAgICAgICAgIGd1YXJh
bnRlZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9zc2libGUKKyAqICAg
ICAgICAgc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQorICogICAgICAgICBl
aW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBv
cgorICogICAgICAgICBzdHJkdXAoKS4KKyAqLworY29uc3QgY2hhciogZXdrX2hpc3RvcnlfaXRl
bV91cmlfZ2V0KGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0pCit7CisgICAgRVdLX0hJU1RP
UllfSVRFTV9DT1JFX0dFVF9PUl9SRVRVUk4oaXRlbSwgY29yZSwgMCk7CisgICAgLy8gaGlkZSB0
aGUgZm9sbG93aW5nIG9wdGltemF0aW9uIGZyb20gb3V0c2lkZQorICAgIEV3a19IaXN0b3J5X0l0
ZW0qIGkgPSAoRXdrX0hpc3RvcnlfSXRlbSopaXRlbTsKKyAgICBlaW5hX3N0cmluZ3NoYXJlX3Jl
cGxhY2UoJmktPnVyaSwgY29yZS0+dXJsU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0
dXJuIGktPnVyaTsKK30KKworLyoqCisgKiBRdWVyeSBvcmlnaW5hbCBVUkkgZm9yIGdpdmVuIGhp
c3RvcnkgaXRlbS4KKyAqCisgKiBAcGFyYW0gaXRlbSBoaXN0b3J5IGl0ZW0gdG8gcXVlcnkuCisg
KgorICogQHJldHVybiB0aGUgb3JpZ2luYWwgVVJJIHBvaW50ZXIsIHRoYXQgbWF5IGJlIEBjIE5V
TEwuIFRoaXMgcG9pbnRlcgorICogICAgICAgICBpcyBndWFyYW50ZWVkIHRvIGJlIGVpbmFfc3Ry
aW5nc2hhcmUsIHNvIHdoZW5ldmVyIHBvc3NpYmxlCisgKiAgICAgICAgIHNhdmUgeW91cnNlbGYg
c29tZSBjcHUgY3ljbGVzIGFuZCB1c2UKKyAqICAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9yZWYo
KSBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVfYWRkKCkgb3IKKyAqICAgICAgICAgc3RyZHVw
KCkuCisgKi8KK2NvbnN0IGNoYXIqIGV3a19oaXN0b3J5X2l0ZW1fdXJpX29yaWdpbmFsX2dldChj
b25zdCBFd2tfSGlzdG9yeV9JdGVtKiBpdGVtKQoreworICAgIEVXS19ISVNUT1JZX0lURU1fQ09S
RV9HRVRfT1JfUkVUVVJOKGl0ZW0sIGNvcmUsIDApOworICAgIC8vIGhpZGUgdGhlIGZvbGxvd2lu
ZyBvcHRpbXphdGlvbiBmcm9tIG91dHNpZGUKKyAgICBFd2tfSGlzdG9yeV9JdGVtKiBpID0gKEV3
a19IaXN0b3J5X0l0ZW0qKWl0ZW07CisgICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZpLT5v
cmlnaW5hbF91cmksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmUtPm9yaWdpbmFs
VVJMU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIGktPm9yaWdpbmFsX3VyaTsK
K30KKworLyoqCisgKiBRdWVyeSBsYXN0IHZpc2l0ZWQgdGltZSBmb3IgZ2l2ZW4gaGlzdG9yeSBp
dGVtLgorICoKKyAqIEBwYXJhbSBpdGVtIGhpc3RvcnkgaXRlbSB0byBxdWVyeS4KKyAqCisgKiBA
cmV0dXJuIHRoZSB0aW1lIGluIHNlY29uZHMgdGhpcyBpdGVtIHdhcyB2aXNpdGVkLgorICovCitk
b3VibGUgZXdrX2hpc3RvcnlfaXRlbV90aW1lX2xhc3RfdmlzaXRlZF9nZXQoY29uc3QgRXdrX0hp
c3RvcnlfSXRlbSogaXRlbSkKK3sKKyAgICBFV0tfSElTVE9SWV9JVEVNX0NPUkVfR0VUX09SX1JF
VFVSTihpdGVtLCBjb3JlLCAwLjApOworICAgIHJldHVybiBjb3JlLT5sYXN0VmlzaXRlZFRpbWUo
KTsKK30KKworLyoqCisgKiBHZXQgdGhlIGljb24gKGFrYSBmYXZpY29uKSBhc3NvY2lhdGVkIHdp
dGggdGhpcyBoaXN0b3J5IGl0ZW0uCisgKgorICogQG5vdGUgaW4gb3JkZXIgdG8gaGF2ZSB0aGlz
IHdvcmtpbmcsIG9uZSBtdXN0IG9wZW4gaWNvbiBkYXRhYmFzZQorICogICAgICAgd2l0aCBld2tf
c2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9wYXRoX3NldCgpLgorICoKKyAqIEBwYXJhbSBpdGVtIGhp
c3RvcnkgaXRlbSB0byBxdWVyeS4KKyAqCisgKiBAcmV0dXJuIHRoZSBzdXJmYWNlIHJlZmVyZW5j
ZSBvciBAYyBOVUxMIG9uIGVycm9ycy4gTm90ZSB0aGF0IHRoZQorICogICAgICAgICByZWZlcmVu
Y2UgbWF5IGJlIHRvIGEgc3RhbmRhcmQgZmFsbGJhY2sgaWNvbi4KKyAqLworY2Fpcm9fc3VyZmFj
ZV90KiBld2tfaGlzdG9yeV9pdGVtX2ljb25fc3VyZmFjZV9nZXQoY29uc3QgRXdrX0hpc3Rvcnlf
SXRlbSogaXRlbSkKK3sKKyAgICBFV0tfSElTVE9SWV9JVEVNX0NPUkVfR0VUX09SX1JFVFVSTihp
dGVtLCBjb3JlLCAwKTsKKyAgICBXZWJDb3JlOjpJbWFnZSogaWNvbiA9IGNvcmUtPmljb24oKTsK
KyAgICBpZiAoIWljb24pIHsKKyAgICAgICAgRVJSKCJpY29uIGlzIE5VTEwuIik7CisgICAgICAg
IHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gaWNvbi0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKTsKK30KKworLyoqCisgKiBBZGQgYW4gRXZhc19PYmplY3Qgb2YgdHlwZSAnaW1hZ2Un
IHRvIGdpdmVuIGNhbnZhcyB3aXRoIGhpc3RvcnkgaXRlbSBpY29uLgorICoKKyAqIFRoaXMgaXMg
YW4gdXRpbGl0eSBmdW5jdGlvbiB0aGF0IGNyZWF0ZXMgYW4gRXZhc19PYmplY3Qgb2YgdHlwZQor
ICogaW1hZ2Ugc2V0IHRvIGhhdmUgZmlsbCBhbHdheXMgbWF0Y2ggb2JqZWN0IHNpemUKKyAqIChl
dmFzX29iamVjdF9pbWFnZV9maWxsZWRfYWRkKCkpLCBzYXZpbmcgc29tZSBjb2RlIHRvIHVzZSBp
dCBmcm9tIEV2YXMuCisgKgorICogQG5vdGUgaW4gb3JkZXIgdG8gaGF2ZSB0aGlzIHdvcmtpbmcs
IG9uZSBtdXN0IG9wZW4gaWNvbiBkYXRhYmFzZQorICogICAgICAgd2l0aCBld2tfc2V0dGluZ3Nf
aWNvbl9kYXRhYmFzZV9wYXRoX3NldCgpLgorICoKKyAqIEBwYXJhbSBpdGVtIGhpc3RvcnkgaXRl
bSB0byBxdWVyeS4KKyAqIEBwYXJhbSBjYW52YXMgZXZhcyBpbnN0YW5jZSB3aGVyZSB0byBhZGQg
cmVzdWx0aW5nIG9iamVjdC4KKyAqCisgKiBAcmV0dXJuIG5ld2x5IGFsbG9jYXRlZCBFdmFzX09i
amVjdCBpbnN0YW5jZSBvciBAYyBOVUxMIG9uCisgKiAgICAgICAgIGVycm9ycy4gRGVsZXRlIHRo
ZSBvYmplY3Qgd2l0aCBldmFzX29iamVjdF9kZWwoKS4KKyAqLworRXZhc19PYmplY3QqIGV3a19o
aXN0b3J5X2l0ZW1faWNvbl9vYmplY3RfYWRkKGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0s
IEV2YXMqIGNhbnZhcykKK3sKKyAgICBFV0tfSElTVE9SWV9JVEVNX0NPUkVfR0VUX09SX1JFVFVS
TihpdGVtLCBjb3JlLCAwKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY2Fu
dmFzLCAwKTsKKyAgICBXZWJDb3JlOjpJbWFnZSogaWNvbiA9IGNvcmUtPmljb24oKTsKKyAgICBj
YWlyb19zdXJmYWNlX3QqIHN1cmZhY2U7CisKKyAgICBpZiAoIWljb24pIHsKKyAgICAgICAgRVJS
KCJpY29uIGlzIE5VTEwuIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHN1cmZh
Y2UgPSBpY29uLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIHJldHVybiBld2tf
dXRpbF9pbWFnZV9mcm9tX2NhaXJvX3N1cmZhY2VfYWRkKGNhbnZhcywgc3VyZmFjZSk7Cit9CisK
Ky8qKgorICogUXVlcnkgaWYgZ2l2ZW4gaXRlbSBpcyBzdGlsbCBpbiBwYWdlIGNhY2hlLgorICoK
KyAqIEBwYXJhbSBpdGVtIGhpc3RvcnkgaXRlbSB0byBxdWVyeS4KKyAqCisgKiBAcmV0dXJuIEBj
IEVJTkFfVFJVRSBpZiBpbiBjYWNoZSwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKi8KK0Vp
bmFfQm9vbCBld2tfaGlzdG9yeV9pdGVtX3BhZ2VfY2FjaGVfZXhpc3RzKGNvbnN0IEV3a19IaXN0
b3J5X0l0ZW0qIGl0ZW0pCit7CisgICAgRVdLX0hJU1RPUllfSVRFTV9DT1JFX0dFVF9PUl9SRVRV
Uk4oaXRlbSwgY29yZSwgRUlOQV9GQUxTRSk7CisgICAgcmV0dXJuIGNvcmUtPmlzSW5QYWdlQ2Fj
aGUoKTsKK30KKworLyoqCisgKiBRdWVyeSBudW1iZXIgb2YgdGltZXMgaXRlbSB3YXMgdmlzaXRl
ZC4KKyAqCisgKiBAcGFyYW0gaXRlbSBoaXN0b3J5IGl0ZW0gdG8gcXVlcnkuCisgKgorICogQHJl
dHVybiBudW1iZXIgb2YgdmlzaXRzLgorICovCitpbnQgZXdrX2hpc3RvcnlfaXRlbV92aXNpdF9j
b3VudChjb25zdCBFd2tfSGlzdG9yeV9JdGVtKiBpdGVtKQoreworICAgIEVXS19ISVNUT1JZX0lU
RU1fQ09SRV9HRVRfT1JfUkVUVVJOKGl0ZW0sIGNvcmUsIDApOworICAgIHJldHVybiBjb3JlLT52
aXNpdENvdW50KCk7Cit9CisKKy8qKgorICogUXVlcnkgaWYgbGFzdCB2aXNpdCB0byBpdGVtIHdh
cyBmYWlsdXJlIG9yIG5vdC4KKyAqCisgKiBAcGFyYW0gaXRlbSBoaXN0b3J5IGl0ZW0gdG8gcXVl
cnkuCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgbGFzdCB2aXNpdCB3YXMgZmFpbHVy
ZSwgQGMgRUlOQV9GQUxTRSBpZiBpdAorICogICAgICAgICB3YXMgZmluZS4KKyAqLworRWluYV9C
b29sIGV3a19oaXN0b3J5X2l0ZW1fdmlzaXRfbGFzdF9mYWlsZWQoY29uc3QgRXdrX0hpc3Rvcnlf
SXRlbSogaXRlbSkKK3sKKyAgICBFV0tfSElTVE9SWV9JVEVNX0NPUkVfR0VUX09SX1JFVFVSTihp
dGVtLCBjb3JlLCBFSU5BX1RSVUUpOworICAgIHJldHVybiBjb3JlLT5sYXN0VmlzaXRXYXNGYWls
dXJlKCk7Cit9CisKKworLyogaW50ZXJuYWwgbWV0aG9kcyAqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqCisgKiBAaW50ZXJuYWwKKyAqCisg
KiBDcmVhdGVzIGhpc3RvcnkgZm9yIGdpdmVuIHZpZXcuIENhbGxlZCBpbnRlcm5hbGx5IGJ5IGV3
a192aWV3IGFuZAorICogc2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBmcm9tIG91dHNpZGUuCisgKgor
ICogQHBhcmFtIGNvcmUgV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0IGluc3RhbmNlIHRvIHVzZSBp
bnRlcm5hbGx5LgorICoKKyAqIEByZXR1cm4gbmV3bHkgYWxsb2NhdGVkIGhpc3RvcnkgaW5zdGFu
Y2Ugb3IgQGMgTlVMTCBvbiBlcnJvcnMuCisgKi8KK0V3a19IaXN0b3J5KiBld2tfaGlzdG9yeV9u
ZXcoV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0KiBjb3JlKQoreworICAgIEV3a19IaXN0b3J5KiBo
aXN0b3J5OworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjb3JlLCAwKTsKKyAg
ICBEQkcoImNvcmU9JXAiLCBjb3JlKTsKKworICAgIGhpc3RvcnkgPSAoRXdrX0hpc3RvcnkqKW1h
bGxvYyhzaXplb2YoRXdrX0hpc3RvcnkpKTsKKyAgICBpZiAoIWhpc3RvcnkpIHsKKyAgICAgICAg
Q1JJVElDQUwoIkNvdWxkIG5vdCBhbGxvY2F0ZSBoaXN0b3J5IG1lbW9yeS4iKTsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorCisgICAgY29yZS0+cmVmKCk7CisgICAgaGlzdG9yeS0+Y29yZSA9
IGNvcmU7CisKKyAgICByZXR1cm4gaGlzdG9yeTsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAq
CisgKiBEZXN0cm95cyBwcmV2aW91c2x5IGFsbG9jYXRlZCBoaXN0b3J5IGluc3RhbmNlLiBUaGlz
IGlzIGNhbGxlZAorICogYXV0b21hdGljYWxseSBieSBld2tfdmlldyBhbmQgc2hvdWxkIG5ldmVy
IGJlIGNhbGxlZCBmcm9tIG91dHNpZGUuCisgKgorICogQHBhcmFtIGhpc3RvcnkgaW5zdGFuY2Ug
dG8gZnJlZQorICovCit2b2lkIGV3a19oaXN0b3J5X2ZyZWUoRXdrX0hpc3RvcnkqIGhpc3Rvcnkp
Cit7CisgICAgREJHKCJoaXN0b3J5PSVwIiwgaGlzdG9yeSk7CisgICAgaGlzdG9yeS0+Y29yZS0+
ZGVyZWYoKTsKKyAgICBmcmVlKGhpc3RvcnkpOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9l
d2svZXdrX2hpc3RvcnkuaCBiL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0b3J5LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzgzZDFmOAotLS0gL2Rldi9udWxsCisrKyBiL1dl
YktpdC9lZmwvZXdrL2V3a19oaXN0b3J5LmgKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAgICBDb3B5
cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworICAgIENvcHly
aWdodCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIGV3a19o
aXN0b3J5X2gKKyNkZWZpbmUgZXdrX2hpc3RvcnlfaAorCisjaW5jbHVkZSAiZXdrX2VhcGkuaCIK
KworI2luY2x1ZGUgPGNhaXJvLmg+CisjaW5jbHVkZSA8RWluYS5oPgorI2luY2x1ZGUgPEV2YXMu
aD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKioKKyAq
IFRoZSBoaXN0b3J5IChiYWNrLWZvcndhcmQgbGlzdCkgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4g
ZXdrX3ZpZXcuCisgKgorICogQ2hhbmdpbmcgdGhlIGhpc3RvcnkgYWZmZWN0cyBpbW1lZGlhdGVs
eSB0aGUgdmlldywgY2hhbmdpbmcgdGhlCisgKiBjdXJyZW50IHVyaSwgZm9yIGV4YW1wbGUuCisg
KgorICogV2hlbiBld2tfdmlldyBpcyBuYXZpZ2F0ZWQgb3IgdXJpcyBhcmUgc2V0LCBoaXN0b3J5
IGF1dG9tYXRpY2FsbHkKKyAqIHVwZGF0ZXMuIFRoYXQncyB3aHkgbm8gZGlyZWN0IGFjY2VzcyB0
byBoaXN0b3J5IHN0cnVjdHVyZSBpcworICogYWxsb3dlZC4KKyAqLwordHlwZWRlZiBzdHJ1Y3Qg
X0V3a19IaXN0b3J5ICAgICAgICAgRXdrX0hpc3Rvcnk7CisKKy8qKgorICogUmVwcmVzZW50cyBv
bmUgaXRlbSBmcm9tIEV3a19IaXN0b3J5LgorICovCit0eXBlZGVmIHN0cnVjdCBfRXdrX0hpc3Rv
cnlfSXRlbSAgICBFd2tfSGlzdG9yeV9JdGVtOworCisKKworRUFQSSBFaW5hX0Jvb2wgICAgICAg
ICBld2tfaGlzdG9yeV9mb3J3YXJkKEV3a19IaXN0b3J5ICpoaXN0b3J5KTsKK0VBUEkgRWluYV9C
b29sICAgICAgICAgZXdrX2hpc3RvcnlfYmFjayhFd2tfSGlzdG9yeSAqaGlzdG9yeSk7CisKK0VB
UEkgRWluYV9Cb29sICAgICAgICAgZXdrX2hpc3RvcnlfaGlzdG9yeV9pdGVtX2FkZChFd2tfSGlz
dG9yeSAqaGlzdG9yeSwgY29uc3QgRXdrX0hpc3RvcnlfSXRlbSAqaXRlbSk7CitFQVBJIEVpbmFf
Qm9vbCAgICAgICAgIGV3a19oaXN0b3J5X2hpc3RvcnlfaXRlbV9zZXQoRXdrX0hpc3RvcnkgKmhp
c3RvcnksICBjb25zdCBFd2tfSGlzdG9yeV9JdGVtICppdGVtKTsKK0VBUEkgRXdrX0hpc3Rvcnlf
SXRlbSAqZXdrX2hpc3RvcnlfaGlzdG9yeV9pdGVtX2JhY2tfZ2V0KGNvbnN0IEV3a19IaXN0b3J5
ICpoaXN0b3J5KTsKK0VBUEkgRXdrX0hpc3RvcnlfSXRlbSAqZXdrX2hpc3RvcnlfaGlzdG9yeV9p
dGVtX2N1cnJlbnRfZ2V0KGNvbnN0IEV3a19IaXN0b3J5ICpoaXN0b3J5KTsKK0VBUEkgRXdrX0hp
c3RvcnlfSXRlbSAqZXdrX2hpc3RvcnlfaGlzdG9yeV9pdGVtX2ZvcndhcmRfZ2V0KGNvbnN0IEV3
a19IaXN0b3J5ICpoaXN0b3J5KTsKK0VBUEkgRXdrX0hpc3RvcnlfSXRlbSAqZXdrX2hpc3Rvcnlf
aGlzdG9yeV9pdGVtX250aF9nZXQoY29uc3QgRXdrX0hpc3RvcnkgKmhpc3RvcnksIGludCBpbmRl
eCk7CitFQVBJIEVpbmFfQm9vbCAgICAgICAgIGV3a19oaXN0b3J5X2hpc3RvcnlfaXRlbV9jb250
YWlucyhjb25zdCBFd2tfSGlzdG9yeSAqaGlzdG9yeSwgY29uc3QgRXdrX0hpc3RvcnlfSXRlbSAq
aXRlbSk7CisKK0VBUEkgRWluYV9MaXN0ICAgICAgICAqZXdrX2hpc3RvcnlfZm9yd2FyZF9saXN0
X2dldChjb25zdCBFd2tfSGlzdG9yeSAqaGlzdG9yeSk7CitFQVBJIEVpbmFfTGlzdCAgICAgICAg
KmV3a19oaXN0b3J5X2ZvcndhcmRfbGlzdF9nZXRfd2l0aF9saW1pdChjb25zdCBFd2tfSGlzdG9y
eSAqaGlzdG9yeSwgaW50IGxpbWl0KTsKK0VBUEkgaW50ICAgICAgICAgICAgICAgZXdrX2hpc3Rv
cnlfZm9yd2FyZF9saXN0X2xlbmd0aChjb25zdCBFd2tfSGlzdG9yeSAqaGlzdG9yeSk7CisKK0VB
UEkgRWluYV9MaXN0ICAgICAgICAqZXdrX2hpc3RvcnlfYmFja19saXN0X2dldChjb25zdCBFd2tf
SGlzdG9yeSAqaGlzdG9yeSk7CitFQVBJIEVpbmFfTGlzdCAgICAgICAgKmV3a19oaXN0b3J5X2Jh
Y2tfbGlzdF9nZXRfd2l0aF9saW1pdChjb25zdCBFd2tfSGlzdG9yeSAqaGlzdG9yeSwgaW50IGxp
bWl0KTsKK0VBUEkgaW50ICAgICAgICAgICAgICAgZXdrX2hpc3RvcnlfYmFja19saXN0X2xlbmd0
aChjb25zdCBFd2tfSGlzdG9yeSAqaGlzdG9yeSk7CisKK0VBUEkgaW50ICAgICAgICAgICAgICAg
ZXdrX2hpc3RvcnlfbGltaXRfZ2V0KEV3a19IaXN0b3J5ICpoaXN0b3J5KTsKK0VBUEkgRWluYV9C
b29sICAgICAgICAgZXdrX2hpc3RvcnlfbGltaXRfc2V0KGNvbnN0IEV3a19IaXN0b3J5ICpoaXN0
b3J5LCBpbnQgbGltaXQpOworCitFQVBJIEV3a19IaXN0b3J5X0l0ZW0gKmV3a19oaXN0b3J5X2l0
ZW1fbmV3KGNvbnN0IGNoYXIgKnVyaSwgY29uc3QgY2hhciAqdGl0bGUpOworRUFQSSB2b2lkICAg
ICAgICAgICAgICBld2tfaGlzdG9yeV9pdGVtX2ZyZWUoRXdrX0hpc3RvcnlfSXRlbSAqaXRlbSk7
CitFQVBJIHZvaWQgICAgICAgICAgICAgIGV3a19oaXN0b3J5X2l0ZW1fbGlzdF9mcmVlKEVpbmFf
TGlzdCAqaGlzdG9yeV9pdGVtcyk7CisKK0VBUEkgY29uc3QgY2hhciAgICAgICAqZXdrX2hpc3Rv
cnlfaXRlbV90aXRsZV9nZXQoY29uc3QgRXdrX0hpc3RvcnlfSXRlbSAqaXRlbSk7CitFQVBJIGNv
bnN0IGNoYXIgICAgICAgKmV3a19oaXN0b3J5X2l0ZW1fdGl0bGVfYWx0ZXJuYXRlX2dldChjb25z
dCBFd2tfSGlzdG9yeV9JdGVtICppdGVtKTsKK0VBUEkgdm9pZCAgICAgICAgICAgICAgZXdrX2hp
c3RvcnlfaXRlbV90aXRsZV9hbHRlcm5hdGVfc2V0KEV3a19IaXN0b3J5X0l0ZW0gKml0ZW0sIGNv
bnN0IGNoYXIgKnRpdGxlKTsKK0VBUEkgY29uc3QgY2hhciAgICAgICAqZXdrX2hpc3RvcnlfaXRl
bV91cmlfZ2V0KGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0gKml0ZW0pOworRUFQSSBjb25zdCBjaGFy
ICAgICAgICpld2tfaGlzdG9yeV9pdGVtX3VyaV9vcmlnaW5hbF9nZXQoY29uc3QgRXdrX0hpc3Rv
cnlfSXRlbSAqaXRlbSk7CitFQVBJIGRvdWJsZSAgICAgICAgICAgIGV3a19oaXN0b3J5X2l0ZW1f
dGltZV9sYXN0X3Zpc2l0ZWRfZ2V0KGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0gKml0ZW0pOworCitF
QVBJIGNhaXJvX3N1cmZhY2VfdCAgKmV3a19oaXN0b3J5X2l0ZW1faWNvbl9zdXJmYWNlX2dldChj
b25zdCBFd2tfSGlzdG9yeV9JdGVtICppdGVtKTsKK0VBUEkgRXZhc19PYmplY3QgICAgICAqZXdr
X2hpc3RvcnlfaXRlbV9pY29uX29iamVjdF9hZGQoY29uc3QgRXdrX0hpc3RvcnlfSXRlbSAqaXRl
bSwgRXZhcyAqY2FudmFzKTsKKworRUFQSSBFaW5hX0Jvb2wgICAgICAgICBld2tfaGlzdG9yeV9p
dGVtX3BhZ2VfY2FjaGVfZXhpc3RzKGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0gKml0ZW0pOworRUFQ
SSBpbnQgICAgICAgICAgICAgICBld2tfaGlzdG9yeV9pdGVtX3Zpc2l0X2NvdW50KGNvbnN0IEV3
a19IaXN0b3J5X0l0ZW0gKml0ZW0pOworRUFQSSBFaW5hX0Jvb2wgICAgICAgICBld2tfaGlzdG9y
eV9pdGVtX3Zpc2l0X2xhc3RfZmFpbGVkKGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0gKml0ZW0pOwor
CisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmIC8vIGV3a19oaXN0b3J5X2gK
ZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwvZXdrL2V3a19sb2dnaW5nLmggYi9XZWJLaXQvZWZsL2V3
ay9ld2tfbG9nZ2luZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0NWJk
OWMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvZWZsL2V3ay9ld2tfbG9nZ2luZy5oCkBAIC0w
LDAgKzEsMzEgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVt
YmVkZGVkIHN5c3RlbXMKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0
cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorKi8KKworI2lmbmRlZiBld2tfbG9nZ2luZ19oCisjZGVmaW5lIGV3a19sb2dnaW5nX2gK
KworZXh0ZXJuIGludCBfZXdrX2xvZ19kb207CisjZGVmaW5lIENSSVRJQ0FMKC4uLikgRUlOQV9M
T0dfRE9NX0NSSVQoX2V3a19sb2dfZG9tLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgRVJSKC4uLikg
RUlOQV9MT0dfRE9NX0VSUihfZXdrX2xvZ19kb20sIF9fVkFfQVJHU19fKQorI2RlZmluZSBXUk4o
Li4uKSBFSU5BX0xPR19ET01fV0FSTihfZXdrX2xvZ19kb20sIF9fVkFfQVJHU19fKQorI2RlZmlu
ZSBJTkYoLi4uKSBFSU5BX0xPR19ET01fSU5GTyhfZXdrX2xvZ19kb20sIF9fVkFfQVJHU19fKQor
I2RlZmluZSBEQkcoLi4uKSBFSU5BX0xPR19ET01fREJHKF9ld2tfbG9nX2RvbSwgX19WQV9BUkdT
X18pCisKKyNlbmRpZiAvLyBld2tfbG9nZ2luZ19oCmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL2V3
ay9ld2tfbWFpbi5jcHAgYi9XZWJLaXQvZWZsL2V3ay9ld2tfbWFpbi5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2MyZDkyOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktp
dC9lZmwvZXdrL2V3a19tYWluLmNwcApAQCAtMCwwICsxLDE1MiBAQAorLyoKKyAgICBDb3B5cmln
aHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworICAgIENvcHlyaWdo
dCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiZXdrX21haW4uaCIKKworI2luY2x1ZGUgIkVXZWJLaXQuaCIKKyNpbmNs
dWRlICJld2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJQYWdl
Q2FjaGUuaCIKKyNpbmNsdWRlICJQYWdlR3JvdXAuaCIKKyNpbmNsdWRlICJydW50aW1lL0luaXRp
YWxpemVUaHJlYWRpbmcuaCIKKworI2luY2x1ZGUgPEVjb3JlLmg+CisjaW5jbHVkZSA8RWNvcmVf
RXZhcy5oPgorI2luY2x1ZGUgPEVkamUuaD4KKyNpbmNsdWRlIDxFaW5hLmg+CisjaW5jbHVkZSA8
RXZhcy5oPgorCisjaWZkZWYgRU5BQkxFX0dMSUJfU1VQUE9SVAorI2luY2x1ZGUgPGdsaWItb2Jq
ZWN0Lmg+CisjaW5jbHVkZSA8Z2xpYi5oPgorCisjaWZkZWYgRU5BQkxFX0dUS19QTFVHSU5TX1NV
UFBPUlQKKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjZW5kaWYKKworI2VuZGlmCisKKy8vIFJFTU9W
RS1NRTogc2VlIHRvZG8gYmVsb3cKKyNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1
ZGUgPGxpYnNvdXAvc291cC5oPgorCitzdGF0aWMgaW50IF9ld2tfaW5pdF9jb3VudCA9IDA7Citp
bnQgX2V3a19sb2dfZG9tID0gLTE7CisKK2ludCBld2tfaW5pdCh2b2lkKQoreworICAgIGlmIChf
ZXdrX2luaXRfY291bnQpCisgICAgICAgIHJldHVybiArK19ld2tfaW5pdF9jb3VudDsKKworICAg
IGlmICghZWluYV9pbml0KCkpCisgICAgICAgIGdvdG8gZXJyb3JfZWluYTsKKworICAgIF9ld2tf
bG9nX2RvbSA9IGVpbmFfbG9nX2RvbWFpbl9yZWdpc3RlcigiZXdlYmtpdCIsIEVJTkFfQ09MT1Jf
T1JBTkdFKTsKKyAgICBpZiAoX2V3a19sb2dfZG9tIDwgMCkgeworICAgICAgICBFSU5BX0xPR19D
UklUKCJjb3VsZCBub3QgcmVnaXN0ZXIgbG9nIGRvbWFpbiAnZXdlYmtpdCciKTsKKyAgICAgICAg
Z290byBlcnJvcl9sb2dfZG9tYWluOworICAgIH0KKworICAgIGlmICghZXZhc19pbml0KCkpIHsK
KyAgICAgICAgQ1JJVElDQUwoImNvdWxkIG5vdCBpbml0IGV2YXMuIik7CisgICAgICAgIGdvdG8g
ZXJyb3JfZXZhczsKKyAgICB9CisKKyAgICBpZiAoIWVjb3JlX2luaXQoKSkgeworICAgICAgICBD
UklUSUNBTCgiY291bGQgbm90IGluaXQgZWNvcmUuIik7CisgICAgICAgIGdvdG8gZXJyb3JfZWNv
cmU7CisgICAgfQorCisgICAgaWYgKCFlY29yZV9ldmFzX2luaXQoKSkgeworICAgICAgICBDUklU
SUNBTCgiY291bGQgbm90IGluaXQgZWNvcmVfZXZhcy4iKTsKKyAgICAgICAgZ290byBlcnJvcl9l
Y29yZV9ldmFzOworICAgIH0KKworICAgIGlmICghZWRqZV9pbml0KCkpIHsKKyAgICAgICAgQ1JJ
VElDQUwoImNvdWxkIG5vdCBpbml0IGVkamUuIik7CisgICAgICAgIGdvdG8gZXJyb3JfZWRqZTsK
KyAgICB9CisKKyNpZmRlZiBFTkFCTEVfR0xJQl9TVVBQT1JUCisgICAgZ190eXBlX2luaXQoKTsK
KworICAgIGlmICghZ190aHJlYWRfc3VwcG9ydGVkKCkpCisgICAgICAgIGdfdGhyZWFkX2luaXQo
MCk7CisKKyNpZmRlZiBFTkFCTEVfR1RLX1BMVUdJTlNfU1VQUE9SVAorICAgIGdka190aHJlYWRz
X2luaXQoKTsKKyAgICBpZiAoIWd0a19pbml0X2NoZWNrKDAsIDApKQorICAgICAgICBXUk4oIkNv
dWxkIG5vdCBpbml0aWFsaXplIEdUSyBzdXBwb3J0LiIpOworI2VuZGlmCisKKyAgICBpZiAoIWVj
b3JlX21haW5fbG9vcF9nbGliX2ludGVncmF0ZSgpKQorICAgICAgICBXUk4oIkVjb3JlIHdhcyBu
b3QgY29tcGlsZWQgd2l0aCBHTGliIHN1cHBvcnQsIHNvbWUgcGx1Z2lucyB3aWxsIG5vdCAiCisg
ICAgICAgICAgICAid29yayAoaWU6IEFkb2JlIEZsYXNoKSIpOworI2VuZGlmCisKKyAgICBKU0M6
OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKKyAgICBXZWJDb3JlOjpJbml0aWFsaXplTG9nZ2luZ0No
YW5uZWxzSWZOZWNlc3NhcnkoKTsKKworICAgIC8vIFBhZ2UgY2FjaGUgY2FwYWNpdHkgKGluIHBh
Z2VzKS4gQ29tbWVudCBmcm9tIE1hYyBwb3J0OgorICAgIC8vIChSZXNlYXJjaCBpbmRpY2F0ZXMg
dGhhdCB2YWx1ZSAvIHBhZ2UgZHJvcHMgc3Vic3RhbnRpYWxseSBhZnRlciAzIHBhZ2VzLikKKyAg
ICAvLyBGSVhNRTogRXhwb3NlIHRoaXMgd2l0aCBhbiBBUEkgYW5kL29yIGNhbGN1bGF0ZSBiYXNl
ZCBvbiBhdmFpbGFibGUgcmVzb3VyY2VzCisgICAgV2ViQ29yZTo6cGFnZUNhY2hlKCktPnNldENh
cGFjaXR5KDMpOworICAgIFdlYkNvcmU6OlBhZ2VHcm91cDo6c2V0U2hvdWxkVHJhY2tWaXNpdGVk
TGlua3ModHJ1ZSk7CisKKyAgICAvLyBUT0RPOiB0aGlzIHNob3VsZCBtb3ZlIHRvIFdlYkNvcmUs
IGFscmVhZHkgcmVwb3J0ZWQgdG8gd2Via2l0LWd0ayBmb2xrczoKKyAgICBpZiAoMSkgeworICAg
ICAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbiA9IFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkZWZh
dWx0U2Vzc2lvbigpOworICAgICAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmVfYnlfdHlwZShz
ZXNzaW9uLCBTT1VQX1RZUEVfQ09OVEVOVF9TTklGRkVSKTsKKyAgICB9CisKKyAgICByZXR1cm4g
KytfZXdrX2luaXRfY291bnQ7CisKK2Vycm9yX2VkamU6CisgICAgZWNvcmVfZXZhc19zaHV0ZG93
bigpOworZXJyb3JfZWNvcmVfZXZhczoKKyAgICBlY29yZV9zaHV0ZG93bigpOworZXJyb3JfZWNv
cmU6CisgICAgZXZhc19zaHV0ZG93bigpOworZXJyb3JfZXZhczoKKyAgICBlaW5hX2xvZ19kb21h
aW5fdW5yZWdpc3RlcihfZXdrX2xvZ19kb20pOworICAgIF9ld2tfbG9nX2RvbSA9IC0xOworZXJy
b3JfbG9nX2RvbWFpbjoKKyAgICBlaW5hX3NodXRkb3duKCk7CitlcnJvcl9laW5hOgorICAgIHJl
dHVybiAwOworfQorCitpbnQgZXdrX3NodXRkb3duKHZvaWQpCit7CisgICAgX2V3a19pbml0X2Nv
dW50LS07CisgICAgaWYgKF9ld2tfaW5pdF9jb3VudCkKKyAgICAgICAgcmV0dXJuIF9ld2tfaW5p
dF9jb3VudDsKKworICAgIGVjb3JlX2V2YXNfc2h1dGRvd24oKTsKKyAgICBlY29yZV9zaHV0ZG93
bigpOworICAgIGV2YXNfc2h1dGRvd24oKTsKKyAgICBlaW5hX2xvZ19kb21haW5fdW5yZWdpc3Rl
cihfZXdrX2xvZ19kb20pOworICAgIF9ld2tfbG9nX2RvbSA9IC0xOworICAgIGVpbmFfc2h1dGRv
d24oKTsKKworICAgIHJldHVybiAwOworfQorCmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL2V3ay9l
d2tfbWFpbi5oIGIvV2ViS2l0L2VmbC9ld2svZXdrX21haW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4zNzMwZTg4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2VmbC9l
d2svZXdrX21haW4uaApAQCAtMCwwICsxLDM2IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAw
OS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCisgICAgQ29weXJpZ2h0IChDKSAyMDA5
LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
ICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgZXdrX21haW5faAorI2RlZmlu
ZSBld2tfbWFpbl9oCisKKyNpbmNsdWRlICJld2tfZWFwaS5oIgorCisjaWZkZWYgX19jcGx1c3Bs
dXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK0VBUEkgaW50IGV3a19pbml0KHZvaWQpOworRUFQ
SSBpbnQgZXdrX3NodXRkb3duKHZvaWQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRp
ZgorI2VuZGlmIC8vIGV3a19tYWluX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwvZXdrL2V3a19w
YWdlLmNwcCBiL1dlYktpdC9lZmwvZXdrL2V3a19wYWdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4xYjk4MTAxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2VmbC9l
d2svZXdrX3BhZ2UuY3BwCkBAIC0wLDAgKzEsMjAgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAy
MDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKKyAgICBDb3B5cmlnaHQgKEMpIDIw
MDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9l
d2svZXdrX3ByaXZhdGUuaCBiL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkyZjY1NwotLS0gL2Rldi9udWxsCisrKyBiL1dl
YktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAgICBDb3B5
cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworICAgIENvcHly
aWdodCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIGV3a19w
cml2YXRlX2gKKyNkZWZpbmUgZXdrX3ByaXZhdGVfaAorCisjaW5jbHVkZSAiQmFja0ZvcndhcmRM
aXN0LmgiCisjaW5jbHVkZSAiRVdlYktpdC5oIgorI2luY2x1ZGUgImV3a19sb2dnaW5nLmgiCisj
aW5jbHVkZSAiZXdrX3V0aWwuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlBhZ2Uu
aCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIldpZGdldC5oIgorCisjaW5jbHVk
ZSA8Y2Fpcm8uaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisv
LyBJZiBkZWZpbmVkLCBld2sgd2lsbCBkbyB0eXBlIGNoZWNraW5nIHRvIGVuc3VyZSBvYmplY3Rz
IGFyZSBvZiBjb3JyZWN0IHR5cGUKKyNkZWZpbmUgRVdLX1RZUEVfQ0hFQ0sgMQorCit2b2lkICAg
ICAgICAgICAgIGV3a192aWV3X3JlYWR5KEV2YXNfT2JqZWN0ICpvKTsKK3ZvaWQgICAgICAgICAg
ICAgZXdrX3ZpZXdfdGl0bGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICp0aXRsZSk7
Cit2b2lkICAgICAgICAgICAgIGV3a192aWV3X3VyaV9jaGFuZ2VkKEV2YXNfT2JqZWN0ICpvKTsK
K3ZvaWQgICAgICAgICAgICAgZXdrX3ZpZXdfbG9hZF9zdGFydGVkKEV2YXNfT2JqZWN0ICpvKTsK
K3ZvaWQgICAgICAgICAgICAgZXdrX3ZpZXdfZnJhbWVfbWFpbl9sb2FkX3N0YXJ0ZWQoRXZhc19P
YmplY3QgKm8pOwordm9pZCAgICAgICAgICAgICBld2tfdmlld19sb2FkX2ZpbmlzaGVkKEV2YXNf
T2JqZWN0ICpvLCBjb25zdCBFd2tfRnJhbWVfTG9hZF9FcnJvciAqZXJyb3IpOwordm9pZCAgICAg
ICAgICAgICBld2tfdmlld19sb2FkX2Vycm9yKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFd2tfRnJh
bWVfTG9hZF9FcnJvciAqZXJyb3IpOwordm9pZCAgICAgICAgICAgICBld2tfdmlld19sb2FkX3By
b2dyZXNzX2NoYW5nZWQoRXZhc19PYmplY3QgKm8pOwordm9pZCAgICAgICAgICAgICBld2tfdmll
d19yZXBhaW50KEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZh
c19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpOwordm9pZCAgICAgICAgICAgICBld2tfdmlld19zY3Jv
bGwoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgZHgsIEV2YXNfQ29vcmQgZHksIEV2YXNfQ29v
cmQgc3gsIEV2YXNfQ29vcmQgc3ksIEV2YXNfQ29vcmQgc3csIEV2YXNfQ29vcmQgc2gsIEV2YXNf
Q29vcmQgY3gsIEV2YXNfQ29vcmQgY3ksIEV2YXNfQ29vcmQgY3csIEV2YXNfQ29vcmQgY2gpOwor
V2ViQ29yZTo6UGFnZSAgICpld2tfdmlld19jb3JlX3BhZ2VfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
ICpvKTsKKworV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBld2tfdmlld19mcmFtZV9j
cmVhdGUoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFtZSwgY29uc3QgV2ViQ29yZTo6
U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVu
dCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHJlZmVy
cmVyKTsKKworV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX3ZpZXdfcGx1Z2lu
X2NyZWF0ZShFdmFzX09iamVjdCogbywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBwbHVnaW5TaXplLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVu
dCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpT
dHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpTdHJpbmc+JiBw
YXJhbVZhbHVlcywgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFu
dWFsbHkpOworCitFd2tfSGlzdG9yeSAgICAgICpld2tfaGlzdG9yeV9uZXcoV2ViQ29yZTo6QmFj
a0ZvcndhcmRMaXN0ICpoaXN0b3J5KTsKK3ZvaWQgICAgICAgICAgICAgIGV3a19oaXN0b3J5X2Zy
ZWUoRXdrX0hpc3RvcnkgKmhpc3RvcnkpOworCitFdmFzX09iamVjdCAgICAgICpld2tfZnJhbWVf
YWRkKEV2YXMgKmUpOworRWluYV9Cb29sICAgICAgICAgZXdrX2ZyYW1lX2luaXQoRXZhc19PYmpl
Y3QgKm8sIEV2YXNfT2JqZWN0ICp2aWV3LCBXZWJDb3JlOjpGcmFtZSAqZnJhbWUpOworRXZhc19P
YmplY3QgICAgICAqZXdrX2ZyYW1lX2NoaWxkX2FkZChFdmFzX09iamVjdCAqbywgV1RGOjpQYXNz
UmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjaGlsZCwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBuYW1l
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgcmVmZXJy
ZXIpOworCitXZWJDb3JlOjpGcmFtZSAgICpld2tfZnJhbWVfY29yZV9nZXQoY29uc3QgRXZhc19P
YmplY3QgKm8pOwordm9pZCAgICAgICAgICAgICAgZXdrX2ZyYW1lX2NvcmVfZ29uZShFdmFzX09i
amVjdCAqbyk7CisKK3ZvaWQgICAgICAgICAgICAgIGV3a19mcmFtZV9sb2FkX3N0YXJ0ZWQoRXZh
c19PYmplY3QgKm8pOwordm9pZCAgICAgICAgICAgICAgZXdrX2ZyYW1lX2xvYWRfZmluaXNoZWQo
RXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmVycm9yX2RvbWFpbiwgaW50IGVycm9yX2NvZGUs
IEVpbmFfQm9vbCBpc19jYW5jZWxsYXRpb24sIGNvbnN0IGNoYXIgKmVycm9yX2Rlc2NyaXB0aW9u
LCBjb25zdCBjaGFyICpmYWlsaW5nX3VybCk7Cit2b2lkICAgICAgICAgICAgICBld2tfZnJhbWVf
bG9hZF9lcnJvcihFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqZXJyb3JfZG9tYWluLCBpbnQg
ZXJyb3JfY29kZSwgRWluYV9Cb29sIGlzX2NhbmNlbGxhdGlvbiwgY29uc3QgY2hhciAqZXJyb3Jf
ZGVzY3JpcHRpb24sIGNvbnN0IGNoYXIgKmZhaWxpbmdfdXJsKTsKK3ZvaWQgICAgICAgICAgICAg
IGV3a19mcmFtZV9sb2FkX3Byb2dyZXNzX2NoYW5nZWQoRXZhc19PYmplY3QgKm8pOworCit2b2lk
ICAgICAgICAgICAgICBld2tfZnJhbWVfY29udGVudHNfc2l6ZV9jaGFuZ2VkKEV2YXNfT2JqZWN0
ICpvLCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCk7Cit2b2lkICAgICAgICAgICAgICBld2tf
ZnJhbWVfdGl0bGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICp0aXRsZSk7CisKK3Zv
aWQgICAgICAgICAgICAgIGV3a19mcmFtZV92aWV3X2NyZWF0ZV9mb3JfdmlldyhFdmFzX09iamVj
dCAqbywgRXZhc19PYmplY3QgKnZpZXcpOworRWluYV9Cb29sICAgICAgICAgZXdrX2ZyYW1lX3Vy
aV9jaGFuZ2VkKEV2YXNfT2JqZWN0ICpvKTsKK3ZvaWQgICAgICAgICAgICAgIGV3a19mcmFtZV9m
b3JjZV9sYXlvdXQoRXZhc19PYmplY3QgKm8pOworCitXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6
V2lkZ2V0PiBld2tfZnJhbWVfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogbywgY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIGVs
ZW1lbnQsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpWZWN0b3I8V2ViQ29y
ZTo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgV1RGOjpWZWN0b3I8V2ViQ29yZTo6U3RyaW5n
PiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9h
ZE1hbnVhbGx5KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCisKK30KKyNlbmRpZgorI2VuZGlmIC8v
IGV3a19wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwvZXdrL2V3a19zZXR0aW5ncy5j
cHAgYi9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjI5YWY3OWUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvZWZsL2V3
ay9ld2tfc2V0dGluZ3MuY3BwCkBAIC0wLDAgKzEsMTc3IEBACisvKgorICAgIENvcHlyaWdodCAo
QykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCisgICAgQ29weXJpZ2h0IChD
KSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisg
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAg
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJld2tfc2V0dGluZ3MuaCIKKworI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNs
dWRlICJFV2ViS2l0LmgiCisjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJJY29u
RGF0YWJhc2UuaCIKKyNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNp
bmNsdWRlICJLVVJMLmgiCisKKyNpbmNsdWRlIDxlaW5hX3NhZmV0eV9jaGVja3MuaD4KKyNpbmNs
dWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+
CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKy8qKgorICog
U2V0cyBkaXJlY3Rvcnkgd2hlcmUgdG8gc3RvcmUgaWNvbiBkYXRhYmFzZSwgb3BlbmluZyBkYXRh
YmFzZS4KKyAqCisgKiBAcGFyYW0gZGlyZWN0b3J5IHdoZXJlIHRvIHN0b3JlIGljb24gZGF0YWJh
c2UsIG11c3QgYmUKKyAqICAgICAgICB3cml0ZS1hYmxlLiBJZiBAYyBOVUxMIGlzIGdpdmVuLCB0
aGVuIGRhdGFiYXNlIGlzIGNsb3NlZC4KKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBz
dWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG9uIGVycm9ycy4KKyAqLworRWluYV9Cb29sIGV3a19zZXR0
aW5nc19pY29uX2RhdGFiYXNlX3BhdGhfc2V0KGNvbnN0IGNoYXIgKmRpcmVjdG9yeSkKK3sKKyAg
ICBXZWJDb3JlOjppY29uRGF0YWJhc2UoKS0+ZGVsYXlEYXRhYmFzZUNsZWFudXAoKTsKKworICAg
IGlmIChkaXJlY3RvcnkpIHsKKyAgICAgICAgc3RydWN0IHN0YXQgc3Q7CisKKyAgICAgICAgaWYg
KHN0YXQoZGlyZWN0b3J5LCAmc3QpKSB7CisgICAgICAgICAgICBFUlIoImNvdWxkIG5vdCBzdGF0
KCVzKTogJXMiLCBkaXJlY3RvcnksIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgICAgICByZXR1
cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghU19JU0RJUihzdC5zdF9t
b2RlKSkgeworICAgICAgICAgICAgRVJSKCJub3QgYSBkaXJlY3Rvcnk6ICVzIiwgZGlyZWN0b3J5
KTsKKyAgICAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKGFjY2VzcyhkaXJlY3RvcnksIFJfT0sgfCBXX09LKSkgeworICAgICAgICAgICAgRVJSKCJj
b3VsZCBub3QgYWNjZXNzIGRpcmVjdG9yeSAnJXMnIGZvciByZWFkIGFuZCB3cml0ZTogJXMiLAor
ICAgICAgICAgICAgICAgIGRpcmVjdG9yeSwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgICAg
IHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgV2ViQ29yZTo6aWNvbkRh
dGFiYXNlKCktPnNldEVuYWJsZWQodHJ1ZSk7CisgICAgICAgIFdlYkNvcmU6Omljb25EYXRhYmFz
ZSgpLT5vcGVuKFdlYkNvcmU6OlN0cmluZzo6ZnJvbVVURjgoZGlyZWN0b3J5KSk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCktPnNldEVuYWJsZWQoZmFsc2Up
OworICAgICAgICBXZWJDb3JlOjppY29uRGF0YWJhc2UoKS0+Y2xvc2UoKTsKKyAgICB9CisgICAg
cmV0dXJuIEVJTkFfVFJVRTsKK30KKworLyoqCisgKiBSZXR1cm4gZGlyZWN0b3J5IHBhdGggd2hl
cmUgaWNvbiBkYXRhYmFzZSBpcyBzdG9yZWQuCisgKgorICogQHJldHVybiBuZXdseSBhbGxvY2F0
ZWQgc3RyaW5nIHdpdGggZGF0YWJhc2UgcGF0aCBvciBAYyBOVUxMIGlmCisgKiAgICAgICAgIG5v
bmUgaXMgc2V0IG9yIGRhdGFiYXNlIGlzIGNsb3NlZC4gTm90ZSB0aGF0IHJldHVybiBtdXN0IGJl
CisgKiAgICAgICAgIGZyZWVkIHdpdGggZnJlZSgpIGFzIGl0J3MgYSBzdHJkdXAoKWVkIGNvcHkg
b2YgdGhlIHN0cmluZworICogICAgICAgICBkdWUgcmVmZXJlbmNlIGNvdW50aW5nLgorICovCitj
aGFyKiBld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9wYXRoX2dldCh2b2lkKQoreworICAgIGlm
ICghV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCktPmlzRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4g
MDsKKyAgICBpZiAoIVdlYkNvcmU6Omljb25EYXRhYmFzZSgpLT5pc09wZW4oKSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICBXZWJDb3JlOjpTdHJpbmcgcGF0aCA9IFdlYkNvcmU6Omljb25EYXRh
YmFzZSgpLT5kYXRhYmFzZVBhdGgoKTsKKyAgICBpZiAocGF0aC5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiAwOworICAgIHJldHVybiBzdHJkdXAocGF0aC51dGY4KCkuZGF0YSgpKTsKK30KKwor
LyoqCisgKiBSZW1vdmUgYWxsIGtub3duIGljb25zIGZyb20gZGF0YWJhc2UuCisgKgorICogRGF0
YWJhc2UgbXVzdCBiZSBvcGVuZWQgd2l0aCBld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9wYXRo
X3NldCgpCisgKiBpbiBvcmRlciB0byB3b3JrLgorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVF
IG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UsIGxpa2UKKyAqICAgICAgICAg
Y2xvc2VkIGRhdGFiYXNlLgorICovCitFaW5hX0Jvb2wgZXdrX3NldHRpbmdzX2ljb25fZGF0YWJh
c2VfY2xlYXIodm9pZCkKK3sKKyAgICBpZiAoIVdlYkNvcmU6Omljb25EYXRhYmFzZSgpLT5pc0Vu
YWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgaWYgKCFXZWJDb3JlOjpp
Y29uRGF0YWJhc2UoKS0+aXNPcGVuKCkpCisgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworCisg
ICAgV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCktPnJlbW92ZUFsbEljb25zKCk7CisgICAgcmV0dXJu
IEVJTkFfVFJVRTsKK30KKworLyoqCisgKiBRdWVyeSBpY29uIGZvciBnaXZlbiBVUkwsIHJldHVy
bmluZyBhc3NvY2lhdGVkIGNhaXJvIHN1cmZhY2UuCisgKgorICogQG5vdGUgaW4gb3JkZXIgdG8g
aGF2ZSB0aGlzIHdvcmtpbmcsIG9uZSBtdXN0IG9wZW4gaWNvbiBkYXRhYmFzZQorICogICAgICAg
d2l0aCBld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9wYXRoX3NldCgpLgorICoKKyAqIEBwYXJh
bSB1cmwgd2hpY2ggdXJsIHRvIHF1ZXJ5IGljb24uCisgKgorICogQHJldHVybiBjYWlybyBzdXJm
YWNlIGlmIGFueSwgb3IgTlVMTCBvbiBmYWlsdXJlLgorICovCitjYWlyb19zdXJmYWNlX3QqIGV3
a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX2ljb25fc3VyZmFjZV9nZXQoY29uc3QgY2hhciAqdXJs
KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh1cmwsIDApOworCisgICAg
V2ViQ29yZTo6S1VSTCBrdXJsKFdlYkNvcmU6OktVUkwoKSwgV2ViQ29yZTo6U3RyaW5nOjpmcm9t
VVRGOCh1cmwpKTsKKyAgICBXZWJDb3JlOjpJbWFnZSAqaWNvbiA9IFdlYkNvcmU6Omljb25EYXRh
YmFzZSgpLT5pY29uRm9yUGFnZVVSTChrdXJsLnN0cmluZygpLCBXZWJDb3JlOjpJbnRTaXplKDE2
LCAxNikpOworCisgICAgaWYgKCFpY29uKSB7CisgICAgICAgIEVSUigibm8gaWNvbiBmb3IgdXJs
ICVzIiwgdXJsKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIGljb24t
Pm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Cit9CisKKy8qKgorICogQ3JlYXRlIEV2YXNf
T2JqZWN0IG9mIHR5cGUgaW1hZ2UgcmVwcmVzZW50aW5nIHRoZSBnaXZlbiBVUkwuCisgKgorICog
VGhpcyBpcyBhbiB1dGlsaXR5IGZ1bmN0aW9uIHRoYXQgY3JlYXRlcyBhbiBFdmFzX09iamVjdCBv
ZiB0eXBlCisgKiBpbWFnZSBzZXQgdG8gaGF2ZSBmaWxsIGFsd2F5cyBtYXRjaCBvYmplY3Qgc2l6
ZQorICogKGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxlZF9hZGQoKSksIHNhdmluZyBzb21lIGNvZGUg
dG8gdXNlIGl0IGZyb20gRXZhcy4KKyAqCisgKiBAbm90ZSBpbiBvcmRlciB0byBoYXZlIHRoaXMg
d29ya2luZywgb25lIG11c3Qgb3BlbiBpY29uIGRhdGFiYXNlCisgKiAgICAgICB3aXRoIGV3a19z
ZXR0aW5nc19pY29uX2RhdGFiYXNlX3BhdGhfc2V0KCkuCisgKgorICogQHBhcmFtIHVybCB3aGlj
aCB1cmwgdG8gcXVlcnkgaWNvbi4KKyAqIEBwYXJhbSBjYW52YXMgZXZhcyBpbnN0YW5jZSB3aGVy
ZSB0byBhZGQgcmVzdWx0aW5nIG9iamVjdC4KKyAqCisgKiBAcmV0dXJuIG5ld2x5IGFsbG9jYXRl
ZCBFdmFzX09iamVjdCBpbnN0YW5jZSBvciBAYyBOVUxMIG9uCisgKiAgICAgICAgIGVycm9ycy4g
RGVsZXRlIHRoZSBvYmplY3Qgd2l0aCBldmFzX29iamVjdF9kZWwoKS4KKyAqLworRXZhc19PYmpl
Y3QqIGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX2ljb25fb2JqZWN0X2FkZChjb25zdCBjaGFy
KiB1cmwsIEV2YXMqIGNhbnZhcykKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwodXJsLCAwKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY2FudmFzLCAw
KTsKKworICAgIFdlYkNvcmU6OktVUkwga3VybChXZWJDb3JlOjpLVVJMKCksIFdlYkNvcmU6OlN0
cmluZzo6ZnJvbVVURjgodXJsKSk7CisgICAgV2ViQ29yZTo6SW1hZ2UqIGljb24gPSBXZWJDb3Jl
OjppY29uRGF0YWJhc2UoKS0+aWNvbkZvclBhZ2VVUkwoa3VybC5zdHJpbmcoKSwgV2ViQ29yZTo6
SW50U2l6ZSgxNiwgMTYpKTsKKyAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2U7CisKKyAgICBp
ZiAoIWljb24pIHsKKyAgICAgICAgRVJSKCJubyBpY29uIGZvciB1cmwgJXMiLCB1cmwpOworICAg
ICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBzdXJmYWNlID0gaWNvbi0+bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKTsKKyAgICByZXR1cm4gZXdrX3V0aWxfaW1hZ2VfZnJvbV9jYWlyb19z
dXJmYWNlX2FkZChjYW52YXMsIHN1cmZhY2UpOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9l
d2svZXdrX3NldHRpbmdzLmggYi9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3MuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODI1NTAyCi0tLSAvZGV2L251bGwKKysrIGIv
V2ViS2l0L2VmbC9ld2svZXdrX3NldHRpbmdzLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAgICBD
b3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworICAgIENv
cHlyaWdodCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIGV3
a19zZXR0aW5nc19oCisjZGVmaW5lIGV3a19zZXR0aW5nc19oCisKKyNpbmNsdWRlICJld2tfZWFw
aS5oIgorCisjaW5jbHVkZSA8Y2Fpcm8uaD4KKyNpbmNsdWRlIDxFaW5hLmg+CisjaW5jbHVkZSA8
RXZhcy5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8q
KgorICogQGZpbGUgZ2VuZXJhbCBwdXJwb3NlIHNldHRpbmdzLCBub3QgdGllZCB0byBhbnkgdmll
dyBvYmplY3QuCisgKi8KKworCitFQVBJIEVpbmFfQm9vbCAgICAgICAgZXdrX3NldHRpbmdzX2lj
b25fZGF0YWJhc2VfcGF0aF9zZXQoY29uc3QgY2hhciAqcGF0aCk7CitFQVBJIGNoYXIgICAgICAg
ICAgICAqZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfcGF0aF9nZXQodm9pZCk7CitFQVBJIEVp
bmFfQm9vbCAgICAgICAgZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfY2xlYXIodm9pZCk7CisK
K0VBUEkgY2Fpcm9fc3VyZmFjZV90ICpld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9pY29uX3N1
cmZhY2VfZ2V0KGNvbnN0IGNoYXIgKnVybCk7CitFQVBJIEV2YXNfT2JqZWN0ICAgICAqZXdrX3Nl
dHRpbmdzX2ljb25fZGF0YWJhc2VfaWNvbl9vYmplY3RfYWRkKGNvbnN0IGNoYXIgKnVybCwgRXZh
cyAqY2FudmFzKTsKKworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmIC8v
IGV3a19zZXR0aW5nc19oCmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL2V3ay9ld2tfdXRpbC5jcHAg
Yi9XZWJLaXQvZWZsL2V3ay9ld2tfdXRpbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYmY4MjY5NQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9lZmwvZXdrL2V3a191
dGlsLmNwcApAQCAtMCwwICsxLDk4IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEw
IFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAg
U2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJl
d2tfdXRpbC5oIgorCisjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRlIDxlaW5hX3Nh
ZmV0eV9jaGVja3MuaD4KKworRXZhc19PYmplY3QqIGV3a191dGlsX2ltYWdlX2Zyb21fY2Fpcm9f
c3VyZmFjZV9hZGQoRXZhcyogY2FudmFzLCBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UpCit7Cisg
ICAgY2Fpcm9fc3RhdHVzX3Qgc3RhdHVzOworICAgIGNhaXJvX3N1cmZhY2VfdHlwZV90IHR5cGU7
CisgICAgY2Fpcm9fZm9ybWF0X3QgZm9ybWF0OworICAgIGludCB3LCBoLCBzdHJpZGU7CisgICAg
RXZhc19PYmplY3QqIGltYWdlOworICAgIGNvbnN0IHZvaWQqIHNyYzsKKyAgICB2b2lkKiBkc3Q7
CisKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY2FudmFzLCAwKTsKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc3VyZmFjZSwgMCk7CisKKyAgICBzdGF0dXMg
PSBjYWlyb19zdXJmYWNlX3N0YXR1cyhzdXJmYWNlKTsKKyAgICBpZiAoc3RhdHVzICE9IENBSVJP
X1NUQVRVU19TVUNDRVNTKSB7CisgICAgICAgIEVSUigiY2Fpcm8gc3VyZmFjZSBpcyBpbnZhbGlk
OiAlcyIsIGNhaXJvX3N0YXR1c190b19zdHJpbmcoc3RhdHVzKSk7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKworICAgIHR5cGUgPSBjYWlyb19zdXJmYWNlX2dldF90eXBlKHN1cmZhY2UpOwor
ICAgIGlmICh0eXBlICE9IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkgeworICAgICAgICBFUlIo
InVua25vd24gc3VyZmFjZSB0eXBlICVkLCByZXF1aXJlZCAlZCAoQ0FJUk9fU1VSRkFDRV9UWVBF
X0lNQUdFKS4iLAorICAgICAgICAgICAgdHlwZSwgQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKTsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgZm9ybWF0ID0gY2Fpcm9faW1hZ2Vfc3Vy
ZmFjZV9nZXRfZm9ybWF0KHN1cmZhY2UpOworICAgIGlmIChmb3JtYXQgIT0gQ0FJUk9fRk9STUFU
X0FSR0IzMiAmJiBmb3JtYXQgIT0gQ0FJUk9fRk9STUFUX1JHQjI0KSB7CisgICAgICAgIEVSUigi
dW5rbm93biBzdXJmYWNlIGZvcm1hdCAlZCwgZXhwZWN0ZWQgJWQgb3IgJWQuIiwKKyAgICAgICAg
ICAgIGZvcm1hdCwgQ0FJUk9fRk9STUFUX0FSR0IzMiwgQ0FJUk9fRk9STUFUX1JHQjI0KTsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgdyA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0
X3dpZHRoKHN1cmZhY2UpOworICAgIGggPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQo
c3VyZmFjZSk7CisgICAgc3RyaWRlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1
cmZhY2UpOworICAgIGlmICh3IDw9IDAgfHwgaCA8PSAwIHx8IHN0cmlkZSA8PSAwKSB7CisgICAg
ICAgIEVSUigiaW52YWxpZCBpbWFnZSBzaXplICVkeCVkLCBzdHJpZGU9JWQiLCB3LCBoLCBzdHJp
ZGUpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBzcmMgPSBjYWlyb19pbWFnZV9z
dXJmYWNlX2dldF9kYXRhKHN1cmZhY2UpOworICAgIGlmICghc3JjKSB7CisgICAgICAgIEVSUigi
Y291bGQgbm90IGdldCBzb3VyY2UgZGF0YS4iKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
CisgICAgaW1hZ2UgPSBldmFzX29iamVjdF9pbWFnZV9maWxsZWRfYWRkKGNhbnZhcyk7CisgICAg
aWYgKCFpbWFnZSkgeworICAgICAgICBFUlIoImNvdWxkIG5vdCBhZGQgaW1hZ2UgdG8gY2FudmFz
LiIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBldmFzX29iamVjdF9pbWFnZV9j
b2xvcnNwYWNlX3NldChpbWFnZSwgRVZBU19DT0xPUlNQQUNFX0FSR0I4ODg4KTsKKyAgICBldmFz
X29iamVjdF9pbWFnZV9zaXplX3NldChpbWFnZSwgdywgaCk7CisgICAgZXZhc19vYmplY3RfaW1h
Z2VfYWxwaGFfc2V0KGltYWdlLCBmb3JtYXQgPT0gQ0FJUk9fRk9STUFUX0FSR0IzMik7CisKKyAg
ICBpZiAoZXZhc19vYmplY3RfaW1hZ2Vfc3RyaWRlX2dldChpbWFnZSkgKiA0ICE9IHN0cmlkZSkg
eworICAgICAgICBFUlIoImV2YXMnIHN0cmlkZSAlZCBkaXZlcmdlcyBmcm9tIGNhaXJvJ3MgJWQu
IiwKKyAgICAgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX3N0cmlkZV9nZXQoaW1hZ2UpICogNCwg
c3RyaWRlKTsKKyAgICAgICAgZXZhc19vYmplY3RfZGVsKGltYWdlKTsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQorCisgICAgZHN0ID0gZXZhc19vYmplY3RfaW1hZ2VfZGF0YV9nZXQoaW1hZ2Us
IEVJTkFfVFJVRSk7CisgICAgbWVtY3B5KGRzdCwgc3JjLCBoICogc3RyaWRlKTsKKyAgICBldmFz
X29iamVjdF9pbWFnZV9kYXRhX3NldChpbWFnZSwgZHN0KTsKKworICAgIGV2YXNfb2JqZWN0X3Jl
c2l6ZShpbWFnZSwgdywgaCk7IC8vIGhlbHBmdWwgYnV0IG5vdCByZWFsbHkgcmVxdWlyZWQKKwor
ICAgIHJldHVybiBpbWFnZTsKK30KZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwvZXdrL2V3a191dGls
LmggYi9XZWJLaXQvZWZsL2V3ay9ld2tfdXRpbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjA4YzhkYmQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvZWZsL2V3ay9ld2tf
dXRpbC5oCkBAIC0wLDAgKzEsMjkgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAg
UHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBT
YW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBld2tfdXRpbF9oCisjZGVmaW5lIGV3a191
dGlsX2gKKworI2luY2x1ZGUgPGNhaXJvLmg+CisjaW5jbHVkZSA8RXZhcy5oPgorCitFdmFzX09i
amVjdCogZXdrX3V0aWxfaW1hZ2VfZnJvbV9jYWlyb19zdXJmYWNlX2FkZChFdmFzKiBjYW52YXMs
IGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSk7CisKKyNlbmRpZiAvLyBld2tfdXRpbF9oCmRpZmYg
LS1naXQgYS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9XZWJLaXQvZWZsL2V3ay9ld2tf
dmlldy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjUzMWEyMQotLS0g
L2Rldi9udWxsCisrKyBiL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApAQCAtMCwwICsxLDMw
MTIgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVk
IHN5c3RlbXMKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNz
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a192aWV3LmgiCisKKyNpbmNs
dWRlICJDaHJvbWVDbGllbnRFZmwuaCIKKyNpbmNsdWRlICJDb250ZXh0TWVudUNsaWVudEVmbC5o
IgorI2luY2x1ZGUgIkRyYWdDbGllbnRFZmwuaCIKKyNpbmNsdWRlICJFZGl0b3JDbGllbnRFZmwu
aCIKKyNpbmNsdWRlICJFV2ViS2l0LmgiCisjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKKyNpbmNs
dWRlICJGb2N1c0NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudEVmbC5o
IgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgor
I2luY2x1ZGUgIkluc3BlY3RvckNsaWVudEVmbC5oIgorI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tl
ci5oIgorCisjaW5jbHVkZSA8RWNvcmUuaD4KKyNpbmNsdWRlIDxFaW5hLmg+CisjaW5jbHVkZSA8
ZWluYV9zYWZldHlfY2hlY2tzLmg+CisjaW5jbHVkZSA8RXZhcy5oPgorI2luY2x1ZGUgPHN5cy90
aW1lLmg+CisKKyNkZWZpbmUgWk9PTV9NSU4gKDAuMDUpCisjZGVmaW5lIFpPT01fTUFYICg0LjAp
CisKK3N0YXRpYyBjb25zdCBjaGFyIEVXS19WSUVXX1RZUEVfU1RSW10gPSAiRVdLX1ZpZXciOwor
CitzdGF0aWMgY29uc3Qgc2l6ZV90IEVXS19WSUVXX1JFUEFJTlRTX1NJWkVfSU5JVElBTCA9IDMy
Oworc3RhdGljIGNvbnN0IHNpemVfdCBFV0tfVklFV19SRVBBSU5UU19TSVpFX1NURVAgPSA4Owor
c3RhdGljIGNvbnN0IHNpemVfdCBFV0tfVklFV19SRVBBSU5UU19TSVpFX01BWF9GUkVFID0gNjQ7
CisKK3N0YXRpYyBjb25zdCBzaXplX3QgRVdLX1ZJRVdfU0NST0xMU19TSVpFX0lOSVRJQUwgPSA4
Oworc3RhdGljIGNvbnN0IHNpemVfdCBFV0tfVklFV19TQ1JPTExTX1NJWkVfU1RFUCA9IDI7Citz
dGF0aWMgY29uc3Qgc2l6ZV90IEVXS19WSUVXX1NDUk9MTFNfU0laRV9NQVhfRlJFRSA9IDMyOwor
CitzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CisgICAgV2ViQ29yZTo6UGFnZSogcGFn
ZTsKKyAgICBXZWJDb3JlOjpTZXR0aW5ncyogcGFnZV9zZXR0aW5nczsKKyAgICBXZWJDb3JlOjpG
cmFtZSogbWFpbl9mcmFtZTsKKyAgICBFd2tfSGlzdG9yeSogaGlzdG9yeTsKKyAgICBzdHJ1Y3Qg
eworICAgICAgICBFaW5hX1JlY3RhbmdsZSogYXJyYXk7CisgICAgICAgIHNpemVfdCBjb3VudDsK
KyAgICAgICAgc2l6ZV90IGFsbG9jYXRlZDsKKyAgICB9IHJlcGFpbnRzOworICAgIHN0cnVjdCB7
CisgICAgICAgIEV3a19TY3JvbGxfUmVxdWVzdCogYXJyYXk7CisgICAgICAgIHNpemVfdCBjb3Vu
dDsKKyAgICAgICAgc2l6ZV90IGFsbG9jYXRlZDsKKyAgICB9IHNjcm9sbHM7CisgICAgc3RydWN0
IHsKKyAgICAgICAgY29uc3QgY2hhciogdXNlcl9hZ2VudDsKKyAgICAgICAgY29uc3QgY2hhciog
dXNlcl9zdHlsZXNoZWV0OworICAgICAgICBjb25zdCBjaGFyKiBlbmNvZGluZ19kZWZhdWx0Owor
ICAgICAgICBpbnQgZm9udF9taW5pbXVtX3NpemU7CisgICAgICAgIGludCBmb250X21pbmltdW1f
bG9naWNhbF9zaXplOworICAgICAgICBpbnQgZm9udF9kZWZhdWx0X3NpemU7CisgICAgICAgIGlu
dCBmb250X21vbm9zcGFjZV9zaXplOworICAgICAgICBjb25zdCBjaGFyKiBmb250X3N0YW5kYXJk
OworICAgICAgICBjb25zdCBjaGFyKiBmb250X2N1cnNpdmU7CisgICAgICAgIGNvbnN0IGNoYXIq
IGZvbnRfbW9ub3NwYWNlOworICAgICAgICBjb25zdCBjaGFyKiBmb250X2ZhbnRhc3k7CisgICAg
ICAgIGNvbnN0IGNoYXIqIGZvbnRfc2VyaWY7CisgICAgICAgIGNvbnN0IGNoYXIqIGZvbnRfc2Fu
c19zZXJpZjsKKyAgICAgICAgRWluYV9Cb29sIGF1dG9fbG9hZF9pbWFnZXM6MTsKKyAgICAgICAg
RWluYV9Cb29sIGF1dG9fc2hyaW5rX2ltYWdlczoxOworICAgICAgICBFaW5hX0Jvb2wgZW5hYmxl
X3NjcmlwdHM6MTsKKyAgICAgICAgRWluYV9Cb29sIGVuYWJsZV9wbHVnaW5zOjE7CisgICAgICAg
IEVpbmFfQm9vbCBzY3JpcHRzX3dpbmRvd19vcGVuOjE7CisgICAgICAgIEVpbmFfQm9vbCByZXNp
emFibGVfdGV4dGFyZWFzOjE7CisgICAgICAgIEVpbmFfQm9vbCBwcml2YXRlX2Jyb3dzaW5nOjE7
CisgICAgICAgIEVpbmFfQm9vbCBjYXJldF9icm93c2luZzoxOworICAgIH0gc2V0dGluZ3M7Cisg
ICAgc3RydWN0IHsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGRvdWJsZSBzdGFydDsK
KyAgICAgICAgICAgIGRvdWJsZSBlbmQ7CisgICAgICAgICAgICBkb3VibGUgZHVyYXRpb247Cisg
ICAgICAgIH0gdGltZTsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGZsb2F0IHN0YXJ0
OworICAgICAgICAgICAgZmxvYXQgZW5kOworICAgICAgICAgICAgZmxvYXQgcmFuZ2U7CisgICAg
ICAgIH0gem9vbTsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIEV2YXNfQ29vcmQgeCwg
eTsKKyAgICAgICAgfSBjZW50ZXI7CisgICAgICAgIEVjb3JlX0FuaW1hdG9yKiBhbmltYXRvcjsK
KyAgICB9IGFuaW1hdGVkX3pvb207CisgICAgc3RydWN0IHsKKyAgICAgICAgRXZhc19Db29yZCB3
LCBoOworICAgICAgICBFaW5hX0Jvb2wgdXNlOjE7CisgICAgfSBmaXhlZF9sYXlvdXQ7Cit9Owor
CisjaWZuZGVmIEVXS19UWVBFX0NIRUNLCisjZGVmaW5lIEVXS19WSUVXX1RZUEVfQ0hFQ0sobywg
Li4uKSBkbyB7IH0gd2hpbGUgKDApCisjZWxzZQorI2RlZmluZSBFV0tfVklFV19UWVBFX0NIRUNL
KG8sIC4uLikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBjb25zdCBjaGFyKiBfdG1wX290eXBlID0gZXZhc19vYmplY3RfdHlw
ZV9nZXQobyk7ICAgICAgICAgICAgICAgXAorICAgICAgICBjb25zdCBFdmFzX1NtYXJ0KiBfdG1w
X3MgPSBldmFzX29iamVjdF9zbWFydF9zbWFydF9nZXQobyk7ICAgICAgXAorICAgICAgICBpZiAo
RUlOQV9VTkxJS0VMWSghX3RtcF9zKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgRUlOQV9MT0dfQ1JJVCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICgiJXAgKCVzKSBpcyBub3Qg
YSBzbWFydCBvYmplY3QhIiwgbywgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAg
ICBfdG1wX290eXBlID8gX3RtcF9vdHlwZSA6ICIobnVsbCkiKTsgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBjb25zdCBFdmFz
X1NtYXJ0X0NsYXNzKiBfdG1wX3NjID0gZXZhc19zbWFydF9jbGFzc19nZXQoX3RtcF9zKTsgXAor
ICAgICAgICBpZiAoRUlOQV9VTkxJS0VMWSghX3RtcF9zYykpIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRUlOQV9MT0dfQ1JJVCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICgiJXAg
KCVzKSBpcyBub3QgYSBzbWFydCBvYmplY3QhIiwgbywgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICAgICAgICAgICBfdG1wX290eXBlID8gX3RtcF9vdHlwZSA6ICIobnVsbCkiKTsgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBpZiAoRUlOQV9VTkxJS0VMWShfdG1wX3NjLT5kYXRhICE9IEVXS19WSUVXX1RZUEVfU1RSKSkg
eyAgICAgICAgXAorICAgICAgICAgICAgRUlOQV9MT0dfQ1JJVCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICgiJXAgKCVzKSBp
cyBub3Qgb2YgYW4gZXdrX3ZpZXcgKG5lZWQgJXAsIGdvdCAlcCkhIiwgICAgXAorICAgICAgICAg
ICAgICAgICBvLCBfdG1wX290eXBlID8gX3RtcF9vdHlwZSA6ICIobnVsbCkiLCAgICAgICAgICAg
ICAgICAgXAorICAgICAgICAgICAgICAgICBFV0tfVklFV19UWVBFX1NUUiwgX3RtcF9zYy0+ZGF0
YSk7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19f
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIH0gd2hpbGUgKDApCisjZW5kaWYKKworI2RlZmluZSBFV0tfVklFV19TRF9HRVQo
bywgcHRyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBFd2tfVmlld19T
bWFydF9EYXRhKiBwdHIgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZXZhc19vYmplY3Rfc21hcnRf
ZGF0YV9nZXQobykKKworI2RlZmluZSBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHB0ciwg
Li4uKSAgICAgICAgICBcCisgICAgRVdLX1ZJRVdfVFlQRV9DSEVDSyhvLCBfX1ZBX0FSR1NfXyk7
ICAgICAgICAgICAgICAgIFwKKyAgICBFV0tfVklFV19TRF9HRVQobywgcHRyKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghcHRyKSB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIENSSVRJQ0FMKCJubyBzbWFydCBkYXRhIGZv
ciBvYmplY3QgJXAgKCVzKSIsICAgIFwKKyAgICAgICAgICAgICAgICAgbywgZXZhc19vYmplY3Rf
dHlwZV9nZXQobykpOyAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gX19WQV9BUkdTX187ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisjZGVmaW5lIEVXS19WSUVXX1BS
SVZfR0VUKHNkLCBwdHIpICAgICAgICAgICAgICBcCisgICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRh
KiBwdHIgPSBzZC0+X3ByaXYKKworI2RlZmluZSBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c2QsIHB0ciwgLi4uKSAgICAgICAgICAgICAgIFwKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwg
cHRyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCFwdHIpIHsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBDUklUSUNBTCgibm8gcHJpdmF0ZSBkYXRhIGZvciBvYmplY3QgJXAgKCVzKSIsICAgICAgICAg
IFwKKyAgICAgICAgICAgICAgICAgc2QtPnNlbGYsIGV2YXNfb2JqZWN0X3R5cGVfZ2V0KHNkLT5z
ZWxmKSk7ICAgICBcCisgICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KKworc3RhdGljIGlubGluZSB2b2lkIF9ld2tf
dmlld19zbWFydF9jaGFuZ2VkKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQoreworICAgIGlmIChz
ZC0+Y2hhbmdlZC5hbnkpCisgICAgICAgIHJldHVybjsKKyAgICBzZC0+Y2hhbmdlZC5hbnkgPSBF
SU5BX1RSVUU7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2hhbmdlZChzZC0+c2VsZik7Cit9CisK
K3N0YXRpYyBpbmxpbmUgRWluYV9Cb29sIF9ld2tfdmlld19yZXBhaW50c19yZXNpemUoRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBzaXplX3Qgc2l6ZSkKK3sKKyAgICB2b2lkKiB0bXAgPSBy
ZWFsbG9jKHByaXYtPnJlcGFpbnRzLmFycmF5LCBzaXplICogc2l6ZW9mKEVpbmFfUmVjdGFuZ2xl
KSk7CisgICAgaWYgKCF0bXApIHsKKyAgICAgICAgQ1JJVElDQUwoImNvdWxkIG5vdCByZWFsbG9j
IHJlcGFpbnRzIGFycmF5IHRvICV6dSBlbGVtZW50cy4iLCBzaXplKTsKKyAgICAgICAgcmV0dXJu
IEVJTkFfRkFMU0U7CisgICAgfQorICAgIHByaXYtPnJlcGFpbnRzLmFsbG9jYXRlZCA9IHNpemU7
CisgICAgcHJpdi0+cmVwYWludHMuYXJyYXkgPSAoRWluYV9SZWN0YW5nbGUqKXRtcDsKKyAgICBy
ZXR1cm4gRUlOQV9UUlVFOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3X3JlcGFp
bnRfYWRkKEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgRXZhc19Db29yZCB4LCBFdmFzX0Nv
b3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKQoreworICAgIEVpbmFfUmVjdGFuZ2xl
KiByOworCisgICAgLy8gZnByaW50ZihzdGRlcnIsICI+Pj4gcmVwYWludCByZXF1ZXN0ZWQ6ICVk
LCVkKyVkeCVkXG4iLCB4LCB5LCB3LCBoKTsKKyAgICBpZiAocHJpdi0+cmVwYWludHMuYWxsb2Nh
dGVkID09IHByaXYtPnJlcGFpbnRzLmNvdW50KSB7CisgICAgICAgIHNpemVfdCBzaXplOworICAg
ICAgICBpZiAoIXByaXYtPnJlcGFpbnRzLmFsbG9jYXRlZCkKKyAgICAgICAgICAgIHNpemUgPSBF
V0tfVklFV19SRVBBSU5UU19TSVpFX0lOSVRJQUw7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHNpemUgPSBwcml2LT5yZXBhaW50cy5hbGxvY2F0ZWQgKyBFV0tfVklFV19SRVBBSU5UU19TSVpF
X1NURVA7CisgICAgICAgIGlmICghX2V3a192aWV3X3JlcGFpbnRzX3Jlc2l6ZShwcml2LCBzaXpl
KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICByID0gcHJpdi0+cmVwYWludHMu
YXJyYXkgKyBwcml2LT5yZXBhaW50cy5jb3VudDsKKyAgICBwcml2LT5yZXBhaW50cy5jb3VudCsr
OworCisgICAgci0+eCA9IHg7CisgICAgci0+eSA9IHk7CisgICAgci0+dyA9IHc7CisgICAgci0+
aCA9IGg7CisKKyAgICBEQkcoImFkZCByZXBhaW50ICVkLCVkKyVkeCVkIiwgeCwgeSwgdywgaCk7
Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfcmVwYWludHNfZmx1c2goRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhKiBwcml2KQoreworICAgIHByaXYtPnJlcGFpbnRzLmNvdW50ID0gMDsK
KyAgICBpZiAocHJpdi0+cmVwYWludHMuYWxsb2NhdGVkIDw9IEVXS19WSUVXX1JFUEFJTlRTX1NJ
WkVfTUFYX0ZSRUUpCisgICAgICAgIHJldHVybjsKKyAgICBfZXdrX3ZpZXdfcmVwYWludHNfcmVz
aXplKHByaXYsIEVXS19WSUVXX1JFUEFJTlRTX1NJWkVfTUFYX0ZSRUUpOworfQorCitzdGF0aWMg
aW5saW5lIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2Nyb2xsc19yZXNpemUoRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhKiBwcml2LCBzaXplX3Qgc2l6ZSkKK3sKKyAgICB2b2lkKiB0bXAgPSByZWFsbG9jKHBy
aXYtPnNjcm9sbHMuYXJyYXksIHNpemUgKiBzaXplb2YoRXdrX1Njcm9sbF9SZXF1ZXN0KSk7Cisg
ICAgaWYgKCF0bXApIHsKKyAgICAgICAgQ1JJVElDQUwoImNvdWxkIG5vdCByZWFsbG9jIHNjcm9s
bHMgYXJyYXkgdG8gJXp1IGVsZW1lbnRzLiIsIHNpemUpOworICAgICAgICByZXR1cm4gRUlOQV9G
QUxTRTsKKyAgICB9CisgICAgcHJpdi0+c2Nyb2xscy5hbGxvY2F0ZWQgPSBzaXplOworICAgIHBy
aXYtPnNjcm9sbHMuYXJyYXkgPSAoRXdrX1Njcm9sbF9SZXF1ZXN0Kil0bXA7CisgICAgcmV0dXJu
IEVJTkFfVFJVRTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld19zY3JvbGxfYWRk
KEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgRXZhc19Db29yZCBkeCwgRXZhc19Db29yZCBk
eSwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBo
KQoreworICAgIEV3a19TY3JvbGxfUmVxdWVzdCogcjsKKyAgICBFd2tfU2Nyb2xsX1JlcXVlc3Qq
IHJfZW5kOworICAgIEV2YXNfQ29vcmQgeDIgPSB4ICsgdywgeTIgPSB5ICsgaDsKKworICAgIHIg
PSBwcml2LT5zY3JvbGxzLmFycmF5OworICAgIHJfZW5kID0gciArIHByaXYtPnNjcm9sbHMuY291
bnQ7CisgICAgZm9yICg7IHIgPCByX2VuZDsgcisrKSB7CisgICAgICAgIGlmIChyLT54ID09IHgg
JiYgci0+eSA9PSB5ICYmIHItPncgPT0gdyAmJiByLT5oID09IGgpIHsKKyAgICAgICAgICAgIERC
RygicmVnaW9uIGFscmVhZHkgc2Nyb2xsZWQgJWQsJWQrJWR4JWQgJSswM2QsJSswM2QgYWRkICIK
KyAgICAgICAgICAgICAgICAiJSswM2QsJSswM2QiLAorICAgICAgICAgICAgICAgIHItPngsIHIt
PnksIHItPncsIHItPmgsIHItPmR4LCByLT5keSwgZHgsIGR5KTsKKyAgICAgICAgICAgIHItPmR4
ICs9IGR4OworICAgICAgICAgICAgci0+ZHkgKz0gZHk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKCh4IDw9IHItPnggJiYgeDIgPj0gci0+eDIpICYmICh5IDw9
IHItPnkgJiYgeTIgPj0gci0+eTIpKSB7CisgICAgICAgICAgICBEQkcoIm9sZCB2aWV3cG9ydCAo
JWQsJWQrJWR4JWQgJSswM2QsJSswM2QpIHdhcyBzY3JvbGxlZCBpdHNlbGYsICIKKyAgICAgICAg
ICAgICAgICAiYWRkICUrMDNkLCUrMDNkIiwKKyAgICAgICAgICAgICAgICByLT54LCByLT55LCBy
LT53LCByLT5oLCByLT5keCwgci0+ZHksIGR4LCBkeSk7CisgICAgICAgICAgICByLT54ICs9IGR4
OworICAgICAgICAgICAgci0+eSArPSBkeTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChw
cml2LT5zY3JvbGxzLmFsbG9jYXRlZCA9PSBwcml2LT5zY3JvbGxzLmNvdW50KSB7CisgICAgICAg
IHNpemVfdCBzaXplOworICAgICAgICBpZiAoIXByaXYtPnNjcm9sbHMuYWxsb2NhdGVkKQorICAg
ICAgICAgICAgc2l6ZSA9IEVXS19WSUVXX1NDUk9MTFNfU0laRV9JTklUSUFMOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBzaXplID0gcHJpdi0+c2Nyb2xscy5hbGxvY2F0ZWQgKyBFV0tfVklF
V19TQ1JPTExTX1NJWkVfU1RFUDsKKyAgICAgICAgaWYgKCFfZXdrX3ZpZXdfc2Nyb2xsc19yZXNp
emUocHJpdiwgc2l6ZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgciA9IHBy
aXYtPnNjcm9sbHMuYXJyYXkgKyBwcml2LT5zY3JvbGxzLmNvdW50OworICAgIHByaXYtPnNjcm9s
bHMuY291bnQrKzsKKworICAgIHItPnggPSB4OworICAgIHItPnkgPSB5OworICAgIHItPncgPSB3
OworICAgIHItPmggPSBoOworICAgIHItPngyID0geDI7CisgICAgci0+eTIgPSB5MjsKKyAgICBy
LT5keCA9IGR4OworICAgIHItPmR5ID0gZHk7CisgICAgREJHKCJhZGQgc2Nyb2xsIGluIHJlZ2lv
bjogJWQsJWQrJWR4JWQgJSswM2QsJSswM2QiLCB4LCB5LCB3LCBoLCBkeCwgZHkpOworCisgICAg
RWluYV9SZWN0YW5nbGUqIHByOworICAgIEVpbmFfUmVjdGFuZ2xlKiBwcl9lbmQ7CisgICAgc2l6
ZV90IGNvdW50OworICAgIHByID0gcHJpdi0+cmVwYWludHMuYXJyYXk7CisgICAgY291bnQgPSBw
cml2LT5yZXBhaW50cy5jb3VudDsKKyAgICBwcl9lbmQgPSBwciArIGNvdW50OworICAgIGZvciAo
OyBwciA8IHByX2VuZDsgcHIrKykgeworICAgICAgICBwci0+eCArPSBkeDsKKyAgICAgICAgcHIt
PnkgKz0gZHk7CisgICAgfQorfQorCitzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3X3Njcm9s
bHNfZmx1c2goRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KQoreworICAgIHByaXYtPnNjcm9s
bHMuY291bnQgPSAwOworICAgIGlmIChwcml2LT5zY3JvbGxzLmFsbG9jYXRlZCA8PSBFV0tfVklF
V19TQ1JPTExTX1NJWkVfTUFYX0ZSRUUpCisgICAgICAgIHJldHVybjsKKyAgICBfZXdrX3ZpZXdf
c2Nyb2xsc19yZXNpemUocHJpdiwgRVdLX1ZJRVdfU0NST0xMU19TSVpFX01BWF9GUkVFKTsKK30K
KworLy8gRGVmYXVsdCBFdmVudCBIYW5kbGluZyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9mb2N1
c19pbihFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKK3sKKyAgICBFV0tfVklFV19QUklWX0dFVChz
ZCwgcHJpdik7CisgICAgV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyKiBmYyA9IHByaXYtPnBhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpOworICAgIERCRygibz0lcCwgZmM9JXAiLCBzZC0+c2VsZiwgZmMp
OworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChmYywgRUlOQV9GQUxTRSk7CisK
KyAgICBmYy0+c2V0QWN0aXZlKHRydWUpOworICAgIGZjLT5zZXRGb2N1c2VkKHRydWUpOworICAg
IHJldHVybiBFSU5BX1RSVUU7Cit9CisKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0
X2ZvY3VzX291dChFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKK3sKKyAgICBFV0tfVklFV19QUklW
X0dFVChzZCwgcHJpdik7CisgICAgV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyKiBmYyA9IHByaXYt
PnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpOworICAgIERCRygibz0lcCwgZmM9JXAiLCBzZC0+c2Vs
ZiwgZmMpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChmYywgRUlOQV9GQUxT
RSk7CisKKyAgICBmYy0+c2V0QWN0aXZlKGZhbHNlKTsKKyAgICBmYy0+c2V0Rm9jdXNlZChmYWxz
ZSk7CisgICAgcmV0dXJuIEVJTkFfVFJVRTsKK30KKworc3RhdGljIEVpbmFfQm9vbCBfZXdrX3Zp
ZXdfc21hcnRfbW91c2Vfd2hlZWwoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGNvbnN0IEV2YXNf
RXZlbnRfTW91c2VfV2hlZWwqIGV2KQoreworICAgIHJldHVybiBld2tfZnJhbWVfZmVlZF9tb3Vz
ZV93aGVlbChzZC0+bWFpbl9mcmFtZSwgZXYpOworfQorCitzdGF0aWMgRWluYV9Cb29sIF9ld2tf
dmlld19zbWFydF9tb3VzZV9kb3duKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBjb25zdCBFdmFz
X0V2ZW50X01vdXNlX0Rvd24qIGV2KQoreworICAgIHJldHVybiBld2tfZnJhbWVfZmVlZF9tb3Vz
ZV9kb3duKHNkLT5tYWluX2ZyYW1lLCBldik7Cit9CisKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192
aWV3X3NtYXJ0X21vdXNlX3VwKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBjb25zdCBFdmFzX0V2
ZW50X01vdXNlX1VwKiBldikKK3sKKyAgICByZXR1cm4gZXdrX2ZyYW1lX2ZlZWRfbW91c2VfdXAo
c2QtPm1haW5fZnJhbWUsIGV2KTsKK30KKworc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21h
cnRfbW91c2VfbW92ZShFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgY29uc3QgRXZhc19FdmVudF9N
b3VzZV9Nb3ZlKiBldikKK3sKKyAgICByZXR1cm4gZXdrX2ZyYW1lX2ZlZWRfbW91c2VfbW92ZShz
ZC0+bWFpbl9mcmFtZSwgZXYpOworfQorCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFy
dF9rZXlfZG93bihFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgY29uc3QgRXZhc19FdmVudF9LZXlf
RG93biAqZXYpCit7CisgICAgRXZhc19PYmplY3QqIGZyYW1lID0gZXdrX3ZpZXdfZnJhbWVfZm9j
dXNlZF9nZXQoc2QtPnNlbGYpOworCisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgZnJhbWUgPSBz
ZC0+bWFpbl9mcmFtZTsKKworICAgIHJldHVybiBld2tfZnJhbWVfZmVlZF9rZXlfZG93bihmcmFt
ZSwgZXYpOworfQorCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9rZXlfdXAoRXdr
X1ZpZXdfU21hcnRfRGF0YSogc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X1VwKiBldikKK3sKKyAg
ICBFdmFzX09iamVjdCogZnJhbWUgPSBld2tfdmlld19mcmFtZV9mb2N1c2VkX2dldChzZC0+c2Vs
Zik7CisKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICBmcmFtZSA9IHNkLT5tYWluX2ZyYW1lOwor
CisgICAgcmV0dXJuIGV3a19mcmFtZV9mZWVkX2tleV91cChmcmFtZSwgZXYpOworfQorCisvLyBF
dmVudCBIYW5kbGluZyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8KK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9mb2N1c19pbih2b2lkKiBkYXRh
LCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBFd2tf
Vmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOKHNkLT5hcGktPmZvY3VzX2luKTsKKyAgICBzZC0+YXBpLT5mb2N1c19pbihzZCk7
Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9mb2N1c19vdXQodm9pZCogZGF0YSwgRXZh
cyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCit7CisgICAgRXdrX1ZpZXdf
U21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTihzZC0+YXBpLT5mb2N1c19vdXQpOworICAgIHNkLT5hcGktPmZvY3VzX291dChzZCk7Cit9
CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV93aGVlbCh2b2lkKiBkYXRhLCBFdmFz
KiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBFdmFzX0V2ZW50
X01vdXNlX1doZWVsKiBldiA9IChFdmFzX0V2ZW50X01vdXNlX1doZWVsKilldmVudF9pbmZvOwor
ICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7
CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2Vfd2hlZWwpOworICAgIHNkLT5hcGktPm1v
dXNlX3doZWVsKHNkLCBldik7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV9k
b3duKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZv
KQoreworICAgIEV2YXNfRXZlbnRfTW91c2VfRG93biogZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9E
b3duKilldmVudF9pbmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3
X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFw
aSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2VfZG93bik7
CisgICAgc2QtPmFwaS0+bW91c2VfZG93bihzZCwgZXYpOworfQorCitzdGF0aWMgdm9pZCBfZXdr
X3ZpZXdfb25fbW91c2VfdXAodm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZv
aWQqIGV2ZW50X2luZm8pCit7CisgICAgRXZhc19FdmVudF9Nb3VzZV9VcCogZXYgPSAoRXZhc19F
dmVudF9Nb3VzZV9VcCopZXZlbnRfaW5mbzsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9
IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOKHNkLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPm1v
dXNlX3VwKTsKKyAgICBzZC0+YXBpLT5tb3VzZV91cChzZCwgZXYpOworfQorCitzdGF0aWMgdm9p
ZCBfZXdrX3ZpZXdfb25fbW91c2VfbW92ZSh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVj
dCogbywgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBFdmFzX0V2ZW50X01vdXNlX01vdmUqIGV2
ID0gKEV2YXNfRXZlbnRfTW91c2VfTW92ZSopZXZlbnRfaW5mbzsKKyAgICBFd2tfVmlld19TbWFy
dF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOKHNkLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
KHNkLT5hcGktPm1vdXNlX21vdmUpOworICAgIHNkLT5hcGktPm1vdXNlX21vdmUoc2QsIGV2KTsK
K30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2tleV9kb3duKHZvaWQqIGRhdGEsIEV2YXMq
IGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQoreworICAgIEV2YXNfRXZlbnRf
S2V5X0Rvd24qIGV2ID0gKEV2YXNfRXZlbnRfS2V5X0Rvd24qKWV2ZW50X2luZm87CisgICAgRXdr
X1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTihzZC0+YXBpLT5rZXlfZG93bik7CisgICAgc2QtPmFwaS0+a2V5X2Rvd24oc2Qs
IGV2KTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2tleV91cCh2b2lkKiBkYXRhLCBF
dmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBFdmFzX0V2
ZW50X0tleV9VcCogZXYgPSAoRXZhc19FdmVudF9LZXlfVXAqKWV2ZW50X2luZm87CisgICAgRXdr
X1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTihzZC0+YXBpLT5rZXlfdXApOworICAgIHNkLT5hcGktPmtleV91cChzZCwgZXYp
OworfQorCitzdGF0aWMgaW5saW5lIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gX2V3
a192aWV3X2NvcmVfZnJhbWVfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBFd2tfVmlld19Q
cml2YXRlX0RhdGEqIHByaXYsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXIp
Cit7CisgICAgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwqIGZsYyA9CisgICAgICAgIG5l
dyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbChzZC0+c2VsZik7CisgICAgaWYgKCFmbGMp
IHsKKyAgICAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBjcmVhdGUgZnJhbWUgbG9hZGVyIGNsaWVu
dC4iKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGZsYy0+c2V0Q3VzdG9tVXNlckFn
ZW50KFdlYkNvcmU6OlN0cmluZzo6ZnJvbVVURjgocHJpdi0+c2V0dGluZ3MudXNlcl9hZ2VudCkp
OworCisgICAgcmV0dXJuIFdlYkNvcmU6OkZyYW1lOjpjcmVhdGUocHJpdi0+cGFnZSwgb3duZXIs
IGZsYykuZ2V0KCk7Cit9CisKK3N0YXRpYyBFdmFzX1NtYXJ0X0NsYXNzIF9wYXJlbnRfc2MgPSBF
VkFTX1NNQVJUX0NMQVNTX0lOSVRfTlVMTDsKKworc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0
YSogX2V3a192aWV3X3ByaXZfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQoreworICAgIEV3
a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiA9CisgICAgICAgIChFd2tfVmlld19Qcml2YXRlX0Rh
dGEqKWNhbGxvYygxLCBzaXplb2YoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKSk7CisgICAgV2ViQ29y
ZTo6QXRvbWljU3RyaW5nIHM7CisgICAgV2ViQ29yZTo6S1VSTCB1cmw7CisKKyAgICBpZiAoIXBy
aXYpIHsKKyAgICAgICAgQ1JJVElDQUwoImNvdWxkIG5vdCBhbGxvY2F0ZSBFd2tfVmlld19Qcml2
YXRlX0RhdGEiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHByaXYtPnBhZ2UgPSBu
ZXcgV2ViQ29yZTo6UGFnZSgKKyAgICAgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q2hyb21lQ2xp
ZW50Kj4obmV3IFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbChzZC0+c2VsZikpLAorICAgICAgICBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudCo+KG5ldyBXZWJDb3JlOjpDb250
ZXh0TWVudUNsaWVudEVmbChzZC0+c2VsZikpLAorICAgICAgICBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpFZGl0b3JDbGllbnQqPihuZXcgV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsKHNkLT5zZWxmKSks
CisgICAgICAgIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdDbGllbnQqPihuZXcgV2ViQ29yZTo6
RHJhZ0NsaWVudEVmbCksCisgICAgICAgIHN0YXRpY19jYXN0PFdlYkNvcmU6Okluc3BlY3RvckNs
aWVudCo+KG5ldyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRFZmwpLAorICAgICAgICAwLAorICAg
ICAgICAwKTsKKyAgICBpZiAoIXByaXYtPnBhZ2UpIHsKKyAgICAgICAgQ1JJVElDQUwoIkNvdWxk
IG5vdCBjcmVhdGUgV2ViS2l0IFBhZ2UiKTsKKyAgICAgICAgZ290byBlcnJvcl9wYWdlOworICAg
IH0KKworICAgIHByaXYtPnBhZ2Vfc2V0dGluZ3MgPSBwcml2LT5wYWdlLT5zZXR0aW5ncygpOwor
ICAgIGlmICghcHJpdi0+cGFnZV9zZXR0aW5ncykgeworICAgICAgICBDUklUSUNBTCgiQ291bGQg
bm90IGdldCBwYWdlIHNldHRpbmdzLiIpOworICAgICAgICBnb3RvIGVycm9yX3NldHRpbmdzOwor
ICAgIH0KKworICAgIHByaXYtPnBhZ2Vfc2V0dGluZ3MtPnNldExvYWRzSW1hZ2VzQXV0b21hdGlj
YWxseSh0cnVlKTsKKyAgICBwcml2LT5wYWdlX3NldHRpbmdzLT5zZXREZWZhdWx0Rml4ZWRGb250
U2l6ZSgxMik7CisgICAgcHJpdi0+cGFnZV9zZXR0aW5ncy0+c2V0RGVmYXVsdEZvbnRTaXplKDE2
KTsKKyAgICBwcml2LT5wYWdlX3NldHRpbmdzLT5zZXRTZXJpZkZvbnRGYW1pbHkoInNlcmlmIik7
CisgICAgcHJpdi0+cGFnZV9zZXR0aW5ncy0+c2V0Rml4ZWRGb250RmFtaWx5KCJtb25vdHlwZSIp
OworICAgIHByaXYtPnBhZ2Vfc2V0dGluZ3MtPnNldFNhbnNTZXJpZkZvbnRGYW1pbHkoInNhbnMi
KTsKKyAgICBwcml2LT5wYWdlX3NldHRpbmdzLT5zZXRTdGFuZGFyZEZvbnRGYW1pbHkoInNhbnMi
KTsKKyAgICBwcml2LT5wYWdlX3NldHRpbmdzLT5zZXRKYXZhU2NyaXB0RW5hYmxlZCh0cnVlKTsK
KyAgICBwcml2LT5wYWdlX3NldHRpbmdzLT5zZXRQbHVnaW5zRW5hYmxlZCh0cnVlKTsKKworICAg
IHVybCA9IHByaXYtPnBhZ2Vfc2V0dGluZ3MtPnVzZXJTdHlsZVNoZWV0TG9jYXRpb24oKTsKKyAg
ICBwcml2LT5zZXR0aW5ncy51c2VyX3N0eWxlc2hlZXQgPSBlaW5hX3N0cmluZ3NoYXJlX2FkZCh1
cmwucHJldHR5VVJMKCkudXRmOCgpLmRhdGEoKSk7CisKKyAgICBwcml2LT5zZXR0aW5ncy5lbmNv
ZGluZ19kZWZhdWx0ID0gZWluYV9zdHJpbmdzaGFyZV9hZGQKKyAgICAgICAgKHByaXYtPnBhZ2Vf
c2V0dGluZ3MtPmRlZmF1bHRUZXh0RW5jb2RpbmdOYW1lKCkudXRmOCgpLmRhdGEoKSk7CisKKyAg
ICBwcml2LT5zZXR0aW5ncy5mb250X21pbmltdW1fc2l6ZSA9IHByaXYtPnBhZ2Vfc2V0dGluZ3Mt
Pm1pbmltdW1Gb250U2l6ZSgpOworICAgIHByaXYtPnNldHRpbmdzLmZvbnRfbWluaW11bV9sb2dp
Y2FsX3NpemUgPSBwcml2LT5wYWdlX3NldHRpbmdzLT5taW5pbXVtTG9naWNhbEZvbnRTaXplKCk7
CisgICAgcHJpdi0+c2V0dGluZ3MuZm9udF9kZWZhdWx0X3NpemUgPSBwcml2LT5wYWdlX3NldHRp
bmdzLT5kZWZhdWx0Rm9udFNpemUoKTsKKyAgICBwcml2LT5zZXR0aW5ncy5mb250X21vbm9zcGFj
ZV9zaXplID0gcHJpdi0+cGFnZV9zZXR0aW5ncy0+ZGVmYXVsdEZpeGVkRm9udFNpemUoKTsKKwor
ICAgIHMgPSBwcml2LT5wYWdlX3NldHRpbmdzLT5zdGFuZGFyZEZvbnRGYW1pbHkoKTsKKyAgICBw
cml2LT5zZXR0aW5ncy5mb250X3N0YW5kYXJkID0gZWluYV9zdHJpbmdzaGFyZV9hZGQocy5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzID0gcHJpdi0+cGFnZV9zZXR0aW5ncy0+Y3Vyc2l2
ZUZvbnRGYW1pbHkoKTsKKyAgICBwcml2LT5zZXR0aW5ncy5mb250X2N1cnNpdmUgPSBlaW5hX3N0
cmluZ3NoYXJlX2FkZChzLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIHMgPSBwcml2LT5w
YWdlX3NldHRpbmdzLT5maXhlZEZvbnRGYW1pbHkoKTsKKyAgICBwcml2LT5zZXR0aW5ncy5mb250
X21vbm9zcGFjZSA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKHMuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgcyA9IHByaXYtPnBhZ2Vfc2V0dGluZ3MtPmZhbnRhc3lGb250RmFtaWx5KCk7Cisg
ICAgcHJpdi0+c2V0dGluZ3MuZm9udF9mYW50YXN5ID0gZWluYV9zdHJpbmdzaGFyZV9hZGQocy5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzID0gcHJpdi0+cGFnZV9zZXR0aW5ncy0+c2Vy
aWZGb250RmFtaWx5KCk7CisgICAgcHJpdi0+c2V0dGluZ3MuZm9udF9zZXJpZiA9IGVpbmFfc3Ry
aW5nc2hhcmVfYWRkKHMuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgcyA9IHByaXYtPnBh
Z2Vfc2V0dGluZ3MtPnNhbnNTZXJpZkZvbnRGYW1pbHkoKTsKKyAgICBwcml2LT5zZXR0aW5ncy5m
b250X3NhbnNfc2VyaWYgPSBlaW5hX3N0cmluZ3NoYXJlX2FkZChzLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOworCisgICAgcHJpdi0+c2V0dGluZ3MuYXV0b19sb2FkX2ltYWdlcyA9IHByaXYtPnBh
Z2Vfc2V0dGluZ3MtPmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSgpOworICAgIHByaXYtPnNldHRp
bmdzLmF1dG9fc2hyaW5rX2ltYWdlcyA9IHByaXYtPnBhZ2Vfc2V0dGluZ3MtPnNocmlua3NTdGFu
ZGFsb25lSW1hZ2VzVG9GaXQoKTsKKyAgICBwcml2LT5zZXR0aW5ncy5lbmFibGVfc2NyaXB0cyA9
IHByaXYtPnBhZ2Vfc2V0dGluZ3MtPmlzSmF2YVNjcmlwdEVuYWJsZWQoKTsKKyAgICBwcml2LT5z
ZXR0aW5ncy5lbmFibGVfcGx1Z2lucyA9IHByaXYtPnBhZ2Vfc2V0dGluZ3MtPmFyZVBsdWdpbnNF
bmFibGVkKCk7CisgICAgcHJpdi0+c2V0dGluZ3Muc2NyaXB0c193aW5kb3dfb3BlbiA9IHByaXYt
PnBhZ2Vfc2V0dGluZ3MtPmFsbG93U2NyaXB0c1RvQ2xvc2VXaW5kb3dzKCk7CisgICAgcHJpdi0+
c2V0dGluZ3MucmVzaXphYmxlX3RleHRhcmVhcyA9IHByaXYtPnBhZ2Vfc2V0dGluZ3MtPnRleHRB
cmVhc0FyZVJlc2l6YWJsZSgpOworICAgIHByaXYtPnNldHRpbmdzLnByaXZhdGVfYnJvd3Npbmcg
PSBwcml2LT5wYWdlX3NldHRpbmdzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgcHJp
di0+c2V0dGluZ3MuY2FyZXRfYnJvd3NpbmcgPSBwcml2LT5wYWdlX3NldHRpbmdzLT5jYXJldEJy
b3dzaW5nRW5hYmxlZCgpOworCisKKyAgICBwcml2LT5tYWluX2ZyYW1lID0gX2V3a192aWV3X2Nv
cmVfZnJhbWVfbmV3KHNkLCBwcml2LCAwKS5nZXQoKTsKKyAgICBpZiAoIXByaXYtPm1haW5fZnJh
bWUpIHsKKyAgICAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBjcmVhdGUgbWFpbiBmcmFtZS4iKTsK
KyAgICAgICAgZ290byBlcnJvcl9tYWluX2ZyYW1lOworICAgIH0KKworICAgIHByaXYtPmhpc3Rv
cnkgPSBld2tfaGlzdG9yeV9uZXcocHJpdi0+cGFnZS0+YmFja0ZvcndhcmRMaXN0KCkpOworICAg
IGlmICghcHJpdi0+aGlzdG9yeSkgeworICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90IGNyZWF0
ZSBoaXN0b3J5IGluc3RhbmNlIGZvciB2aWV3LiIpOworICAgICAgICBnb3RvIGVycm9yX2hpc3Rv
cnk7CisgICAgfQorCisgICAgcmV0dXJuIHByaXY7CisKK2Vycm9yX2hpc3Rvcnk6CisgICAgLy8g
ZGVsZXRlIHByaXYtPm1haW5fZnJhbWU7IC8qIGRvIG5vdCBkZWxldGUgcHJpdi0+bWFpbl9mcmFt
ZSAqLworZXJyb3JfbWFpbl9mcmFtZToKK2Vycm9yX3NldHRpbmdzOgorICAgIGRlbGV0ZSBwcml2
LT5wYWdlOworZXJyb3JfcGFnZToKKyAgICBmcmVlKHByaXYpOworICAgIHJldHVybiAwOworfQor
CitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfcHJpdl9kZWwoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBw
cml2KQoreworICAgIGlmICghcHJpdikKKyAgICAgICAgcmV0dXJuOworCisgICAgLyogZG8gbm90
IGRlbGV0ZSBwcml2LT5tYWluX2ZyYW1lICovCisKKyAgICBmcmVlKHByaXYtPnJlcGFpbnRzLmFy
cmF5KTsKKyAgICBmcmVlKHByaXYtPnNjcm9sbHMuYXJyYXkpOworCisgICAgZWluYV9zdHJpbmdz
aGFyZV9kZWwocHJpdi0+c2V0dGluZ3MudXNlcl9hZ2VudCk7CisgICAgZWluYV9zdHJpbmdzaGFy
ZV9kZWwocHJpdi0+c2V0dGluZ3MudXNlcl9zdHlsZXNoZWV0KTsKKyAgICBlaW5hX3N0cmluZ3No
YXJlX2RlbChwcml2LT5zZXR0aW5ncy5lbmNvZGluZ19kZWZhdWx0KTsKKyAgICBlaW5hX3N0cmlu
Z3NoYXJlX2RlbChwcml2LT5zZXR0aW5ncy5mb250X3N0YW5kYXJkKTsKKyAgICBlaW5hX3N0cmlu
Z3NoYXJlX2RlbChwcml2LT5zZXR0aW5ncy5mb250X2N1cnNpdmUpOworICAgIGVpbmFfc3RyaW5n
c2hhcmVfZGVsKHByaXYtPnNldHRpbmdzLmZvbnRfbW9ub3NwYWNlKTsKKyAgICBlaW5hX3N0cmlu
Z3NoYXJlX2RlbChwcml2LT5zZXR0aW5ncy5mb250X2ZhbnRhc3kpOworICAgIGVpbmFfc3RyaW5n
c2hhcmVfZGVsKHByaXYtPnNldHRpbmdzLmZvbnRfc2VyaWYpOworICAgIGVpbmFfc3RyaW5nc2hh
cmVfZGVsKHByaXYtPnNldHRpbmdzLmZvbnRfc2Fuc19zZXJpZik7CisKKyAgICBpZiAocHJpdi0+
YW5pbWF0ZWRfem9vbS5hbmltYXRvcikKKyAgICAgICAgZWNvcmVfYW5pbWF0b3JfZGVsKHByaXYt
PmFuaW1hdGVkX3pvb20uYW5pbWF0b3IpOworCisgICAgZXdrX2hpc3RvcnlfZnJlZShwcml2LT5o
aXN0b3J5KTsKKworICAgIGRlbGV0ZSBwcml2LT5wYWdlOworICAgIGZyZWUocHJpdik7Cit9CisK
K3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9hZGQoRXZhc19PYmplY3QqIG8pCit7CisgICAg
Y29uc3QgRXZhc19TbWFydCogc21hcnQgPSBldmFzX29iamVjdF9zbWFydF9zbWFydF9nZXQobyk7
CisgICAgY29uc3QgRXZhc19TbWFydF9DbGFzcyogc2MgPSBldmFzX3NtYXJ0X2NsYXNzX2dldChz
bWFydCk7CisgICAgY29uc3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSA9IChjb25zdCBFd2tf
Vmlld19TbWFydF9DbGFzcyopc2M7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oYXBp
LT5iYWNraW5nX3N0b3JlX2FkZCk7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKworICAg
IGlmICghc2QpIHsKKyAgICAgICAgc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopY2FsbG9jKDEs
IHNpemVvZihFd2tfVmlld19TbWFydF9EYXRhKSk7CisgICAgICAgIGlmICghc2QpCisgICAgICAg
ICAgICBDUklUSUNBTCgiY291bGQgbm90IGFsbG9jYXRlIEV3a19WaWV3X1NtYXJ0X0RhdGEiKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfZGF0YV9zZXQobywg
c2QpOworICAgIH0KKworICAgIHNkLT5iZ19jb2xvci5yID0gMjU1OworICAgIHNkLT5iZ19jb2xv
ci5nID0gMjU1OworICAgIHNkLT5iZ19jb2xvci5iID0gMjU1OworICAgIHNkLT5iZ19jb2xvci5h
ID0gMjU1OworCisgICAgc2QtPnNlbGYgPSBvOworICAgIHNkLT5fcHJpdiA9IF9ld2tfdmlld19w
cml2X25ldyhzZCk7CisgICAgc2QtPmFwaSA9IGFwaTsKKworICAgIF9wYXJlbnRfc2MuYWRkKG8p
OworCisgICAgaWYgKCFzZC0+X3ByaXYpCisgICAgICAgIHJldHVybjsKKworICAgIEVXS19WSUVX
X1BSSVZfR0VUKHNkLCBwcml2KTsKKworICAgIHNkLT5iYWNraW5nX3N0b3JlID0gYXBpLT5iYWNr
aW5nX3N0b3JlX2FkZChzZCk7CisgICAgaWYgKCFzZC0+YmFja2luZ19zdG9yZSkgeworICAgICAg
ICBFUlIoIkNvdWxkIG5vdCBjcmVhdGUgYmFja2luZyBzdG9yZSBvYmplY3QuIik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBldmFzX29iamVjdF9zbWFydF9tZW1iZXJfYWRkKHNkLT5i
YWNraW5nX3N0b3JlLCBvKTsKKyAgICBldmFzX29iamVjdF9zaG93KHNkLT5iYWNraW5nX3N0b3Jl
KTsKKworICAgIHNkLT5tYWluX2ZyYW1lID0gZXdrX2ZyYW1lX2FkZChzZC0+YmFzZS5ldmFzKTsK
KyAgICBpZiAoIXNkLT5tYWluX2ZyYW1lKSB7CisgICAgICAgIEVSUigiQ291bGQgbm90IGNyZWF0
ZSBtYWluIGZyYW1lIG9iamVjdC4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
ICghZXdrX2ZyYW1lX2luaXQoc2QtPm1haW5fZnJhbWUsIG8sIHByaXYtPm1haW5fZnJhbWUpKSB7
CisgICAgICAgIEVSUigiQ291bGQgbm90IGluaXRpYWxpemUgbWFpbiBmcm1lIG9iamVjdC4iKTsK
KyAgICAgICAgZXZhc19vYmplY3RfZGVsKHNkLT5tYWluX2ZyYW1lKTsKKyAgICAgICAgc2QtPm1h
aW5fZnJhbWUgPSAwOworCisgICAgICAgIGRlbGV0ZSBwcml2LT5tYWluX2ZyYW1lOworICAgICAg
ICBwcml2LT5tYWluX2ZyYW1lID0gMDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGV2
YXNfb2JqZWN0X25hbWVfc2V0KHNkLT5tYWluX2ZyYW1lLCAiRVdLX0ZyYW1lOm1haW4iKTsKKyAg
ICBldmFzX29iamVjdF9zbWFydF9tZW1iZXJfYWRkKHNkLT5tYWluX2ZyYW1lLCBvKTsKKyAgICBl
dmFzX29iamVjdF9zaG93KHNkLT5tYWluX2ZyYW1lKTsKKworI2RlZmluZSBDT05ORUNUKHMsIGMp
IGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZChvLCBzLCBjLCBzZCkKKyAgICBDT05ORUNU
KEVWQVNfQ0FMTEJBQ0tfRk9DVVNfSU4sIF9ld2tfdmlld19vbl9mb2N1c19pbik7CisgICAgQ09O
TkVDVChFVkFTX0NBTExCQUNLX0ZPQ1VTX09VVCwgX2V3a192aWV3X29uX2ZvY3VzX291dCk7Cisg
ICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX01PVVNFX1dIRUVMLCBfZXdrX3ZpZXdfb25fbW91c2Vf
d2hlZWwpOworICAgIENPTk5FQ1QoRVZBU19DQUxMQkFDS19NT1VTRV9ET1dOLCBfZXdrX3ZpZXdf
b25fbW91c2VfZG93bik7CisgICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX01PVVNFX1VQLCBfZXdr
X3ZpZXdfb25fbW91c2VfdXApOworICAgIENPTk5FQ1QoRVZBU19DQUxMQkFDS19NT1VTRV9NT1ZF
LCBfZXdrX3ZpZXdfb25fbW91c2VfbW92ZSk7CisgICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX0tF
WV9ET1dOLCBfZXdrX3ZpZXdfb25fa2V5X2Rvd24pOworICAgIENPTk5FQ1QoRVZBU19DQUxMQkFD
S19LRVlfVVAsIF9ld2tfdmlld19vbl9rZXlfdXApOworI3VuZGVmIENPTk5FQ1QKK30KKworc3Rh
dGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2RlbChFdmFzX09iamVjdCogbykKK3sKKyAgICBFV0tf
VklFV19TRF9HRVQobywgc2QpOworICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiA9IHNk
ID8gc2QtPl9wcml2IDogMDsKKworICAgIF9wYXJlbnRfc2MuZGVsKG8pOworICAgIF9ld2tfdmll
d19wcml2X2RlbChwcml2KTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3Jlc2l6
ZShFdmFzX09iamVjdCogbywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCit7CisgICAgRVdL
X1ZJRVdfU0RfR0VUKG8sIHNkKTsKKworICAgIC8vIHRoZXNlIHNob3VsZCBiZSBxdWV1ZWQgYW5k
IHByb2Nlc3NlZCBpbiBjYWxjdWxhdGUgYXMgd2VsbCEKKyAgICBldmFzX29iamVjdF9yZXNpemUo
c2QtPmJhY2tpbmdfc3RvcmUsIHcsIGgpOworCisgICAgc2QtPmNoYW5nZWQuc2l6ZSA9IEVJTkFf
VFJVRTsKKyAgICBfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZChzZCk7Cit9CisKK3N0YXRpYyB2b2lk
IF9ld2tfdmlld19zbWFydF9tb3ZlKEV2YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkIHgsIEV2YXNf
Q29vcmQgeSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOworICAgIHNkLT5jaGFuZ2Vk
LnBvc2l0aW9uID0gRUlOQV9UUlVFOworICAgIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKHNkKTsK
K30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0ZShFdmFzX09iamVjdCog
bykKK3sKKyAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOworICAgIEVXS19WSUVXX1BSSVZfR0VU
KHNkLCBwcml2KTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5jb250
ZW50c19yZXNpemUpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPnNj
cm9sbHNfcHJvY2Vzcyk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+
cmVwYWludHNfcHJvY2Vzcyk7CisgICAgRXZhc19Db29yZCB4LCB5LCB3LCBoOworCisgICAgc2Qt
PmNoYW5nZWQuYW55ID0gRUlOQV9GQUxTRTsKKworICAgIGlmICghc2QtPm1haW5fZnJhbWUgfHwg
IXByaXYtPm1haW5fZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIGV2YXNfb2JqZWN0X2dl
b21ldHJ5X2dldChvLCAmeCwgJnksICZ3LCAmaCk7CisKKyAgICBEQkcoIm89JXAgZ2VvPVslZCwg
JWQgKyAlZHglZF0sIGNoYW5nZWQ6IHNpemU9JWhodSwgIgorICAgICAgICAic2Nyb2xscz0lenUs
IHJlcGFpbnRzPSV6dSIsCisgICAgICAgIG8sIHgsIHksIHcsIGgsIHNkLT5jaGFuZ2VkLnNpemUs
CisgICAgICAgIHByaXYtPnNjcm9sbHMuY291bnQsIHByaXYtPnJlcGFpbnRzLmNvdW50KTsKKwor
ICAgIGlmIChzZC0+Y2hhbmdlZC5zaXplICYmICgodyAhPSBzZC0+dmlldy53KSB8fCAoaCAhPSBz
ZC0+dmlldy5oKSkpIHsKKyAgICAgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gcHJpdi0+
bWFpbl9mcmFtZS0+dmlldygpOworICAgICAgICBpZiAodmlldykgeworICAgICAgICAgICAgdmll
dy0+cmVzaXplKHcsIGgpOworICAgICAgICAgICAgdmlldy0+Zm9yY2VMYXlvdXQoKTsKKyAgICAg
ICAgICAgIHZpZXctPmFkanVzdFZpZXdTaXplKCk7CisgICAgICAgICAgICBJbnRTaXplIHNpemUg
PSB2aWV3LT5jb250ZW50c1NpemUoKTsKKyAgICAgICAgICAgIGlmICghc2QtPmFwaS0+Y29udGVu
dHNfcmVzaXplKHNkLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKQorICAgICAgICAgICAg
ICAgIEVSUigiZmFpbGVkIHRvIHJlc2l6ZSBjb250ZW50cyB0byAlZHglZCIsCisgICAgICAgICAg
ICAgICAgICAgIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIH0KKyAgICAg
ICAgZXZhc19vYmplY3RfcmVzaXplKHNkLT5tYWluX2ZyYW1lLCB3LCBoKTsKKyAgICAgICAgc2Qt
PmNoYW5nZWQuZnJhbWVfcmVjdCA9IEVJTkFfVFJVRTsKKyAgICAgICAgc2QtPnZpZXcudyA9IHc7
CisgICAgICAgIHNkLT52aWV3LmggPSBoOworICAgIH0KKyAgICBzZC0+Y2hhbmdlZC5zaXplID0g
RUlOQV9GQUxTRTsKKworICAgIGlmIChzZC0+Y2hhbmdlZC5wb3NpdGlvbiAmJiAoKHggIT0gc2Qt
PnZpZXcueCkgfHwgKHkgIT0gc2QtPnZpZXcueSkpKSB7CisgICAgICAgIGV2YXNfb2JqZWN0X21v
dmUoc2QtPm1haW5fZnJhbWUsIHgsIHkpOworICAgICAgICBldmFzX29iamVjdF9tb3ZlKHNkLT5i
YWNraW5nX3N0b3JlLCB4LCB5KTsKKyAgICAgICAgc2QtPmNoYW5nZWQuZnJhbWVfcmVjdCA9IEVJ
TkFfVFJVRTsKKyAgICAgICAgc2QtPnZpZXcueCA9IHg7CisgICAgICAgIHNkLT52aWV3LnkgPSB5
OworICAgIH0KKyAgICBzZC0+Y2hhbmdlZC5wb3NpdGlvbiA9IEVJTkFfRkFMU0U7CisKKyAgICBl
d2tfdmlld19sYXlvdXRfaWZfbmVlZGVkX3JlY3Vyc2l2ZShzZC0+X3ByaXYpOworCisgICAgaWYg
KCFzZC0+YXBpLT5zY3JvbGxzX3Byb2Nlc3Moc2QpKQorICAgICAgICBFUlIoImZhaWxlZCB0byBw
cm9jZXNzIHNjcm9sbHMuIik7CisgICAgX2V3a192aWV3X3Njcm9sbHNfZmx1c2gocHJpdik7CisK
KyAgICBpZiAoIXNkLT5hcGktPnJlcGFpbnRzX3Byb2Nlc3Moc2QpKQorICAgICAgICBFUlIoImZh
aWxlZCB0byBwcm9jZXNzIHJlcGFpbnRzLiIpOworICAgIF9ld2tfdmlld19yZXBhaW50c19mbHVz
aChwcml2KTsKKworICAgIGlmIChzZC0+Y2hhbmdlZC5mcmFtZV9yZWN0KSB7CisgICAgICAgIFdl
YkNvcmU6OkZyYW1lVmlldyogdmlldyA9IHByaXYtPm1haW5fZnJhbWUtPnZpZXcoKTsKKyAgICAg
ICAgdmlldy0+ZnJhbWVSZWN0c0NoYW5nZWQoKTsgLyogZm9yY2UgdHJlZSB0byBnZXQgcG9zaXRp
b24gZnJvbSByb290ICovCisgICAgICAgIHNkLT5jaGFuZ2VkLmZyYW1lX3JlY3QgPSBFSU5BX0ZB
TFNFOworICAgIH0KK30KKworc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfY29udGVu
dHNfcmVzaXplKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBpbnQgdywgaW50IGgpCit7CisgICAg
cmV0dXJuIEVJTkFfVFJVRTsKK30KKworc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRf
em9vbV9zZXQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQg
Y3gsIEV2YXNfQ29vcmQgY3kpCit7CisgICAgZG91YmxlIHB4LCBweTsKKyAgICBFdmFzX0Nvb3Jk
IHgsIHksIHcsIGg7CisgICAgRWluYV9Cb29sIHJldDsKKworICAgIGV3a19mcmFtZV9zY3JvbGxf
c2l6ZV9nZXQoc2QtPm1haW5fZnJhbWUsICZ3LCAmaCk7CisgICAgZXdrX2ZyYW1lX3Njcm9sbF9w
b3NfZ2V0KHNkLT5tYWluX2ZyYW1lLCAmeCwgJnkpOworCisgICAgaWYgKHcgKyBzZC0+dmlldy53
ID4gMCkKKyAgICAgICAgcHggPSAoZG91YmxlKSh4ICsgY3gpIC8gKHcgKyBzZC0+dmlldy53KTsK
KyAgICBlbHNlCisgICAgICAgIHB4ID0gMC4wOworCisgICAgaWYgKGggKyBzZC0+dmlldy5oID4g
MCkKKyAgICAgICAgcHkgPSAoZG91YmxlKSh5ICsgY3kpIC8gKGggKyBzZC0+dmlldy5oKTsKKyAg
ICBlbHNlCisgICAgICAgIHB5ID0gMC4wOworCisgICAgcmV0ID0gZXdrX2ZyYW1lX3pvb21fc2V0
KHNkLT5tYWluX2ZyYW1lLCB6b29tKTsKKworICAgIGV3a19mcmFtZV9zY3JvbGxfc2l6ZV9nZXQo
c2QtPm1haW5fZnJhbWUsICZ3LCAmaCk7CisgICAgeCA9ICh3ICsgc2QtPnZpZXcudykgKiBweCAt
IGN4OworICAgIHkgPSAoaCArIHNkLT52aWV3LmgpICogcHkgLSBjeTsKKyAgICBld2tfZnJhbWVf
c2Nyb2xsX3NldChzZC0+bWFpbl9mcmFtZSwgeCwgeSk7CisgICAgcmV0dXJuIHJldDsKK30KKwor
c3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2ZsdXNoKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNk
KQoreworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdik7CisgICAgX2V3
a192aWV3X3JlcGFpbnRzX2ZsdXNoKHByaXYpOworICAgIF9ld2tfdmlld19zY3JvbGxzX2ZsdXNo
KHByaXYpOworfQorCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVy
X3JlZ2lvbihFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3Jk
IHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoLCBmbG9hdCB6b29tKQoreworICAgIFdSTigi
bm90IHN1cHBvcnRlZCBieSBlbmdpbmUuIHNkPSVwIGFyZWE9JWQsJWQrJWR4JWQsIHpvb209JWYi
LAorICAgICAgICBzZCwgeCwgeSwgdywgaCwgem9vbSk7CisgICAgcmV0dXJuIEVJTkFfRkFMU0U7
Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX2NhbmNlbChFd2tf
Vmlld19TbWFydF9EYXRhICpzZCkKK3sKKyAgICBXUk4oIm5vdCBzdXBwb3J0ZWQgYnkgZW5naW5l
LiBzZD0lcCIsIHNkKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld196b29tX2Fu
aW1hdGVkX21hcmtfc3RvcChFd2tfVmlld19TbWFydF9EYXRhICpzZCkKK3sKKyAgICBzZC0+YW5p
bWF0ZWRfem9vbS56b29tLnN0YXJ0ID0gMC4wOworICAgIHNkLT5hbmltYXRlZF96b29tLnpvb20u
ZW5kID0gMC4wOworICAgIHNkLT5hbmltYXRlZF96b29tLnpvb20uY3VycmVudCA9IDAuMDsKK30K
Kworc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld196b29tX2FuaW1hdGVkX2ZpbmlzaChFd2tf
Vmlld19TbWFydF9EYXRhICpzZCkKK3sKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7
CisgICAgZWNvcmVfYW5pbWF0b3JfZGVsKHByaXYtPmFuaW1hdGVkX3pvb20uYW5pbWF0b3IpOwor
ICAgIHByaXYtPmFuaW1hdGVkX3pvb20uYW5pbWF0b3IgPSAwOworICAgIF9ld2tfdmlld196b29t
X2FuaW1hdGVkX21hcmtfc3RvcChzZCk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tf
Y2FsbChzZC0+c2VsZiwgInpvb20sYW5pbWF0ZWQsZW5kIiwgMCk7Cit9CisKK3N0YXRpYyBpbmxp
bmUgZmxvYXQgX2V3a192aWV3X3pvb21fYW5pbWF0ZWRfY3VycmVudChFd2tfVmlld19Qcml2YXRl
X0RhdGEgKnByaXYpCit7CisgICAgZG91YmxlIG5vdyA9IGVjb3JlX2xvb3BfdGltZV9nZXQoKTsK
KyAgICBkb3VibGUgZGVsdGEgPSBub3cgLSBwcml2LT5hbmltYXRlZF96b29tLnRpbWUuc3RhcnQ7
CisKKyAgICBpZiAoZGVsdGEgPiBwcml2LT5hbmltYXRlZF96b29tLnRpbWUuZHVyYXRpb24pCisg
ICAgICAgIGRlbHRhID0gcHJpdi0+YW5pbWF0ZWRfem9vbS50aW1lLmR1cmF0aW9uOworICAgIGlm
IChkZWx0YSA8IDAuMCkgLy8gdGltZSB3ZW50IGJhY2ssIGNsb2NrIGFkanVzdGVkPworICAgICAg
ICBkZWx0YSA9IDAuMDsKKworICAgIGRlbHRhIC89IHByaXYtPmFuaW1hdGVkX3pvb20udGltZS5k
dXJhdGlvbjsKKworICAgIHJldHVybiAoKHByaXYtPmFuaW1hdGVkX3pvb20uem9vbS5yYW5nZSAq
IGRlbHRhKQorICAgICAgICAgICAgKyBwcml2LT5hbmltYXRlZF96b29tLnpvb20uc3RhcnQpOwor
fQorCitzdGF0aWMgaW50IF9ld2tfdmlld196b29tX2FuaW1hdG9yX2NiKHZvaWQgKmRhdGEpCit7
CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0
YTsKKyAgICBFdmFzX0Nvb3JkIGN4LCBjeTsKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJp
dik7CisgICAgZG91YmxlIG5vdyA9IGVjb3JlX2xvb3BfdGltZV9nZXQoKTsKKworICAgIGN4ID0g
cHJpdi0+YW5pbWF0ZWRfem9vbS5jZW50ZXIueDsKKyAgICBjeSA9IHByaXYtPmFuaW1hdGVkX3pv
b20uY2VudGVyLnk7CisKKyAgICAvLyBUT0RPOiBwcm9ncmVzc2l2ZWx5IGNlbnRlciAoY3gsIGN5
KSAtPiAodmlldy54ICsgdmlldy5oLzIsIHZpZXcueSArIHZpZXcuaC8yKQorICAgIGlmIChjeCA+
PSBzZC0+dmlldy53KQorICAgICAgICBjeCA9IHNkLT52aWV3LncgLSAxOworICAgIGlmIChjeSA+
PSBzZC0+dmlldy5oKQorICAgICAgICBjeSA9IHNkLT52aWV3LmggLSAxOworCisgICAgaWYgKChu
b3cgPj0gcHJpdi0+YW5pbWF0ZWRfem9vbS50aW1lLmVuZCkKKyAgICAgICAgfHwgKG5vdyA8IHBy
aXYtPmFuaW1hdGVkX3pvb20udGltZS5zdGFydCkpIHsKKyAgICAgICAgX2V3a192aWV3X3pvb21f
YW5pbWF0ZWRfZmluaXNoKHNkKTsKKyAgICAgICAgZXdrX3ZpZXdfem9vbV9zZXQoc2QtPnNlbGYs
IHByaXYtPmFuaW1hdGVkX3pvb20uem9vbS5lbmQsIGN4LCBjeSk7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKworICAgIHNkLT5hbmltYXRlZF96b29tLnpvb20uY3VycmVudCA9IF9ld2tfdmll
d196b29tX2FuaW1hdGVkX2N1cnJlbnQocHJpdik7CisgICAgc2QtPmFwaS0+em9vbV93ZWFrX3Nl
dChzZCwgc2QtPmFuaW1hdGVkX3pvb20uem9vbS5jdXJyZW50LCBjeCwgY3kpOworICAgIHJldHVy
biAxOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3X3pvb21fYW5pbWF0aW9uX3N0
YXJ0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQoreworICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzZCwgcHJpdik7CisgICAgaWYgKHByaXYtPmFuaW1hdGVkX3pvb20uYW5pbWF0b3Ip
CisgICAgICAgIHJldHVybjsKKyAgICBwcml2LT5hbmltYXRlZF96b29tLmFuaW1hdG9yID0gZWNv
cmVfYW5pbWF0b3JfYWRkCisgICAgICAgIChfZXdrX3ZpZXdfem9vbV9hbmltYXRvcl9jYiwgc2Qp
OworfQorCisvKioKKyAqIFNldHMgdGhlIHNtYXJ0IGNsYXNzIGFwaSB3aXRob3V0IGFueSBiYWNr
aW5nIHN0b3JlLCBlbmFibGluZyB2aWV3CisgKiB0byBiZSBpbmhlcml0ZWQuCisgKgorICogQHBh
cmFtIGFwaSBjbGFzcyBkZWZpbml0aW9uIHRvIGJlIHNldCwgYWxsIG1lbWJlcnMgd2l0aCB0aGUK
KyAqICAgICAgICBleGNlcHRpb24gb2YgRXZhc19TbWFydF9DbGFzcy0+ZGF0YSBtYXkgYmUgb3Zl
cnJpZGRlbi4gTXVzdAorICogICAgICAgIEBiIG5vdCBiZSBAYyBOVUxMLgorICoKKyAqIEBub3Rl
IEV2YXNfU21hcnRfQ2xhc3MtPmRhdGEgaXMgdXNlZCB0byBpbXBsZW1lbnQgdHlwZSBjaGVja2lu
ZyBhbmQKKyAqICAgICAgIGlzIG5vdCBzdXBwb3NlZCB0byBiZSBjaGFuZ2VkL292ZXJyaWRkZW4u
IElmIHlvdSBuZWVkIGV4dHJhCisgKiAgICAgICBkYXRhIGZvciB5b3VyIHNtYXJ0IGNsYXNzIHRv
IHdvcmssIGp1c3QgZXh0ZW5kCisgKiAgICAgICBFd2tfVmlld19TbWFydF9DbGFzcyBpbnN0ZWFk
LgorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ug
b24gZmFpbHVyZSAocHJvYmFibHkKKyAqICAgICAgICAgdmVyc2lvbiBtaXNtYXRjaCkuCisgKgor
ICogQHNlZSBld2tfdmlld19zaW5nbGVfc21hcnRfc2V0KCkKKyAqLworRWluYV9Cb29sIGV3a192
aWV3X2Jhc2Vfc21hcnRfc2V0KEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGkpCit7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGFwaSwgRUlOQV9GQUxTRSk7CisKKyAgICBpZiAo
YXBpLT52ZXJzaW9uICE9IEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04pIHsKKyAgICAgICAg
RUlOQV9MT0dfQ1JJVAorICAgICAgICAgICAgKCJFd2tfVmlld19TbWFydF9DbGFzcyAlcCBpcyB2
ZXJzaW9uICVsdSB3aGlsZSAlbHUgd2FzIGV4cGVjdGVkLiIsCisgICAgICAgICAgICAgYXBpLCBh
cGktPnZlcnNpb24sIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04pOworICAgICAgICByZXR1
cm4gRUlOQV9GQUxTRTsKKyAgICB9CisKKyAgICBpZiAoRUlOQV9VTkxJS0VMWSghX3BhcmVudF9z
Yy5hZGQpKQorICAgICAgICBldmFzX29iamVjdF9zbWFydF9jbGlwcGVkX3NtYXJ0X3NldCgmX3Bh
cmVudF9zYyk7CisKKyAgICBldmFzX29iamVjdF9zbWFydF9jbGlwcGVkX3NtYXJ0X3NldCgmYXBp
LT5zYyk7CisgICAgYXBpLT5zYy5hZGQgPSBfZXdrX3ZpZXdfc21hcnRfYWRkOworICAgIGFwaS0+
c2MuZGVsID0gX2V3a192aWV3X3NtYXJ0X2RlbDsKKyAgICBhcGktPnNjLnJlc2l6ZSA9IF9ld2tf
dmlld19zbWFydF9yZXNpemU7CisgICAgYXBpLT5zYy5tb3ZlID0gX2V3a192aWV3X3NtYXJ0X21v
dmU7CisgICAgYXBpLT5zYy5jYWxjdWxhdGUgPSBfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlOwor
ICAgIGFwaS0+c2MuZGF0YSA9IEVXS19WSUVXX1RZUEVfU1RSOyAvKiB1c2VkIGJ5IHR5cGUgY2hl
Y2tpbmcgKi8KKworICAgIGFwaS0+Y29udGVudHNfcmVzaXplID0gX2V3a192aWV3X3NtYXJ0X2Nv
bnRlbnRzX3Jlc2l6ZTsKKyAgICBhcGktPnpvb21fc2V0ID0gX2V3a192aWV3X3NtYXJ0X3pvb21f
c2V0OworICAgIGFwaS0+Zmx1c2ggPSBfZXdrX3ZpZXdfc21hcnRfZmx1c2g7CisgICAgYXBpLT5w
cmVfcmVuZGVyX3JlZ2lvbiA9IF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX3JlZ2lvbjsKKyAg
ICBhcGktPnByZV9yZW5kZXJfY2FuY2VsID0gX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfY2Fu
Y2VsOworCisgICAgYXBpLT5mb2N1c19pbiA9IF9ld2tfdmlld19zbWFydF9mb2N1c19pbjsKKyAg
ICBhcGktPmZvY3VzX291dCA9IF9ld2tfdmlld19zbWFydF9mb2N1c19vdXQ7CisgICAgYXBpLT5t
b3VzZV93aGVlbCA9IF9ld2tfdmlld19zbWFydF9tb3VzZV93aGVlbDsKKyAgICBhcGktPm1vdXNl
X2Rvd24gPSBfZXdrX3ZpZXdfc21hcnRfbW91c2VfZG93bjsKKyAgICBhcGktPm1vdXNlX3VwID0g
X2V3a192aWV3X3NtYXJ0X21vdXNlX3VwOworICAgIGFwaS0+bW91c2VfbW92ZSA9IF9ld2tfdmll
d19zbWFydF9tb3VzZV9tb3ZlOworICAgIGFwaS0+a2V5X2Rvd24gPSBfZXdrX3ZpZXdfc21hcnRf
a2V5X2Rvd247CisgICAgYXBpLT5rZXlfdXAgPSBfZXdrX3ZpZXdfc21hcnRfa2V5X3VwOworCisg
ICAgcmV0dXJuIEVJTkFfVFJVRTsKK30KKworLyoqCisgKiBTZXQgYSBmaXhlZCBsYXlvdXQgc2l6
ZSB0byBiZSB1c2VkLCBkaXNzb2NpYXRpbmcgaXQgZnJvbSB2aWV3cG9ydCBzaXplLgorICoKKyAq
IFNldHRpbmcgYSB3aWR0aCBkaWZmZXJlbnQgdGhhbiB6ZXJvIGVuYWJsZXMgZml4ZWQgbGF5b3V0
IG9uIHRoYXQKKyAqIHNpemUuIEl0J3MgYXV0b21hdGljYWxseSBzY2FsZWQgYmFzZWQgb24gem9v
bSwgYnV0IHdpbGwgbm90IGNoYW5nZQorICogaWYgdmlld3BvcnQgY2hhbmdlcy4KKyAqCisgKiBT
ZXR0aW5nIGJvdGggQGEgdyBhbmQgQGEgaCB0byB6ZXJvIHdpbGwgZGlzYWJsZSBmaXhlZCBsYXlv
dXQuCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gY2hhbmdlIGZpeGVkIGxheW91dC4K
KyAqIEBwYXJhbSB3IGZpeGVkIHdpZHRoIHRvIHVzZS4gVGhpcyBzaXplIHdpbGwgYmUgYXV0b21h
dGljYWxseSBzY2FsZWQKKyAqICAgICAgICBiYXNlZCBvbiB6b29tIGxldmVsLgorICogQHBhcmFt
IGggZml4ZWQgaGVpZ2h0IHRvIHVzZS4gVGhpcyBzaXplIHdpbGwgYmUgYXV0b21hdGljYWxseSBz
Y2FsZWQKKyAqICAgICAgICBiYXNlZCBvbiB6b29tIGxldmVsLgorICovCit2b2lkIGV3a192aWV3
X2ZpeGVkX2xheW91dF9zaXplX3NldChFdmFzX09iamVjdCogbywgRXZhc19Db29yZCB3LCBFdmFz
X0Nvb3JkIGgpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CisgICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KTsKKyAgICBXZWJDb3JlOjpGcmFt
ZVZpZXcqIHZpZXcgPSBzZC0+X3ByaXYtPm1haW5fZnJhbWUtPnZpZXcoKTsKKyAgICBpZiAodyA8
PSAwICYmIGggPD0gMCkgeworICAgICAgICBpZiAoIXByaXYtPmZpeGVkX2xheW91dC51c2UpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIHByaXYtPmZpeGVkX2xheW91dC53ID0gMDsKKyAg
ICAgICAgcHJpdi0+Zml4ZWRfbGF5b3V0LmggPSAwOworICAgICAgICBwcml2LT5maXhlZF9sYXlv
dXQudXNlID0gRUlOQV9GQUxTRTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAocHJpdi0+Zml4
ZWRfbGF5b3V0LnVzZQorICAgICAgICAgICAgJiYgcHJpdi0+Zml4ZWRfbGF5b3V0LncgPT0gdyAm
JiBwcml2LT5maXhlZF9sYXlvdXQuaCA9PSBoKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBwcml2LT5maXhlZF9sYXlvdXQudyA9IHc7CisgICAgICAgIHByaXYtPmZpeGVkX2xheW91dC5o
ID0gaDsKKyAgICAgICAgcHJpdi0+Zml4ZWRfbGF5b3V0LnVzZSA9IEVJTkFfVFJVRTsKKworICAg
ICAgICBpZiAodmlldykKKyAgICAgICAgICAgIHZpZXctPnNldEZpeGVkTGF5b3V0U2l6ZShXZWJD
b3JlOjpJbnRTaXplKHcsIGgpKTsKKyAgICB9CisKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJl
dHVybjsKKyAgICB2aWV3LT5zZXRVc2VGaXhlZExheW91dChwcml2LT5maXhlZF9sYXlvdXQudXNl
KTsKKyAgICB2aWV3LT5mb3JjZUxheW91dCgpOworfQorCisvKioKKyAqIEdldCBmaXhlZCBsYXlv
dXQgc2l6ZSBpbiB1c2UuCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gcXVlcnkgZml4
ZWQgbGF5b3V0IHNpemUuCisgKiBAcGFyYW0gdyB3aGVyZSB0byByZXR1cm4gd2lkdGguIFJldHVy
bnMgMCBvbiBlcnJvciBvciBpZiBubyBmaXhlZAorICogICAgICAgIGxheW91dCBpbiB1c2UuCisg
KiBAcGFyYW0gaCB3aGVyZSB0byByZXR1cm4gaGVpZ2h0LiBSZXR1cm5zIDAgb24gZXJyb3Igb3Ig
aWYgbm8gZml4ZWQKKyAqICAgICAgICBsYXlvdXQgaW4gdXNlLgorICovCit2b2lkIGV3a192aWV3
X2ZpeGVkX2xheW91dF9zaXplX2dldChFdmFzX09iamVjdCogbywgRXZhc19Db29yZCogdywgRXZh
c19Db29yZCogaCkKK3sKKyAgICBpZiAodykKKyAgICAgICAgKncgPSAwOworICAgIGlmIChoKQor
ICAgICAgICAqaCA9IDA7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7Cisg
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KTsKKyAgICBpZiAocHJpdi0+
Zml4ZWRfbGF5b3V0LnVzZSkgeworICAgICAgICBpZiAodykKKyAgICAgICAgICAgICp3ID0gcHJp
di0+Zml4ZWRfbGF5b3V0Lnc7CisgICAgICAgIGlmIChoKQorICAgICAgICAgICAgKmggPSBwcml2
LT5maXhlZF9sYXlvdXQuaDsKKyAgICB9Cit9CisKKy8qKgorICogU2V0IHRoZSB0aGVtZSBwYXRo
IHRvIGJlIHVzZWQgYnkgdGhpcyB2aWV3LgorICoKKyAqIFRoaXMgYWxzbyBzZXRzIHRoZSB0aGVt
ZSBvbiB0aGUgbWFpbiBmcmFtZS4gQXMgZnJhbWVzIGluaGVyaXQgdGhlbWUKKyAqIGZyb20gdGhl
aXIgcGFyZW50LCB0aGlzIHdpbGwgaGF2ZSBhbGwgZnJhbWVzIHdpdGggdW5zZXQgdGhlbWUgdG8K
KyAqIHVzZSB0aGlzIG9uZS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBjaGFuZ2Ug
dGhlbWUuCisgKiBAcGFyYW0gdGhlbWUgcGF0aCwgbWF5IGJlIEBjIE5VTEwgdG8gcmVzZXQgdG8g
ZGVmYXVsdC4KKyAqLwordm9pZCBld2tfdmlld190aGVtZV9zZXQoRXZhc19PYmplY3QqIG8sIGNv
bnN0IGNoYXIqIHBhdGgpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7
CisgICAgZXdrX2ZyYW1lX3RoZW1lX3NldChzZC0+bWFpbl9mcmFtZSwgcGF0aCk7Cit9CisKKy8q
KgorICogR2V0cyB0aGUgdGhlbWUgc2V0IG9uIHRoaXMgZnJhbWUuCisgKgorICogVGhpcyByZXR1
cm5zIHRoZSB2YWx1ZSBzZXQgYnkgZXdrX3ZpZXdfdGhlbWVfc2V0KCkuCisgKgorICogQHBhcmFt
IG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZW1lIHBhdGguCisgKgorICogQHJldHVybiB0aGVtZSBw
YXRoLCBtYXkgYmUgQGMgTlVMTCBpZiBub3Qgc2V0LgorICovCitjb25zdCBjaGFyKiBld2tfdmll
d190aGVtZV9nZXQoRXZhc19PYmplY3QqIG8pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCwgMCk7CisgICAgcmV0dXJuIGV3a19mcmFtZV90aGVtZV9nZXQoc2QtPm1haW5f
ZnJhbWUpOworfQorCisvKioKKyAqIEdldCB0aGUgb2JqZWN0IHRoYXQgcmVwcmVzZW50cyB0aGUg
bWFpbiBmcmFtZS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgbWFpbiBmcmFt
ZS4KKyAqCisgKiBAcmV0dXJuIGV3a19mcmFtZSBvYmplY3Qgb3IgQGMgTlVMTCBpZiBub25lIHll
dC4KKyAqLworRXZhc19PYmplY3QqIGV3a192aWV3X2ZyYW1lX21haW5fZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBvKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwor
ICAgIHJldHVybiBzZC0+bWFpbl9mcmFtZTsKK30KKworLyoqCisgKiBHZXQgdGhlIGN1cnJlbnRs
eSBmb2N1c2VkIGZyYW1lIG9iamVjdC4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBn
ZXQgZm9jdXNlZCBmcmFtZS4KKyAqCisgKiBAcmV0dXJuIGV3a19mcmFtZSBvYmplY3Qgb3IgQGMg
TlVMTCBpZiBub25lIHlldC4KKyAqLworRXZhc19PYmplY3QqIGV3a192aWV3X2ZyYW1lX2ZvY3Vz
ZWRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QsIDApOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJp
diwgMCk7CisKKyAgICBXZWJDb3JlOjpGcmFtZSogY29yZSA9IHByaXYtPnBhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLT5mb2N1c2VkRnJhbWUoKTsKKyAgICBpZiAoIWNvcmUpCisgICAgICAgIHJldHVy
biAwOworCisgICAgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwqIGNsaWVudCA9IHN0YXRp
Y19jYXN0PFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsKj4oY29yZS0+bG9hZGVyKCktPmNs
aWVudCgpKTsKKyAgICBpZiAoIWNsaWVudCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJu
IGNsaWVudC0+d2ViRnJhbWUoKTsKK30KKworLyoqCisgKiBBc2sgbWFpbiBmcmFtZSB0byBsb2Fk
IHRoZSBnaXZlbiBVUkkuCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gbG9hZCB1cmku
CisgKiBAcGFyYW0gdXJpIHVuaWZvcm0gcmVzb3VyY2UgaWRlbnRpZmllciB0byBsb2FkLgorICoK
KyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3NmdWwgcmVxdWVzdCwgQGMgRUlOQV9G
QUxTRSBvbiBmYWlsdXJlLgorICogICAgICAgICBOb3RlIHRoYXQgaXQgbWVhbnMgdGhlIHJlcXVl
c3Qgd2FzIGRvbmUsIG5vdCB0aGF0IGl0IHdhcworICogICAgICAgICBzYXRpc2ZpZWQuCisgKi8K
K0VpbmFfQm9vbCBld2tfdmlld191cmlfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiB1
cmkpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7
CisgICAgcmV0dXJuIGV3a19mcmFtZV91cmlfc2V0KHNkLT5tYWluX2ZyYW1lLCB1cmkpOworfQor
CisvKioKKyAqIEdldCB0aGUgY3VycmVudCB1cmkgbG9hZGVkIGJ5IG1haW4gZnJhbWUuCisgKgor
ICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IGN1cnJlbnQgdXJpLgorICoKKyAqIEByZXR1
cm4gY3VycmVudCB1cmkgcmVmZXJlbmNlIG9yIEBjIE5VTEwuIEl0J3MgaW50ZXJuYWwsIGRvbid0
IGNoYW5nZS4KKyAqLworY29uc3QgY2hhciogZXdrX3ZpZXdfdXJpX2dldChjb25zdCBFdmFzX09i
amVjdCogbykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKKyAg
ICByZXR1cm4gZXdrX2ZyYW1lX3VyaV9nZXQoc2QtPm1haW5fZnJhbWUpOworfQorCisvKioKKyAq
IEdldCB0aGUgY3VycmVudCB0aXRsZSBvZiBtYWluIGZyYW1lLgorICoKKyAqIEBwYXJhbSBvIHZp
ZXcgb2JqZWN0IHRvIGdldCBjdXJyZW50IHRpdGxlLgorICoKKyAqIEByZXR1cm4gY3VycmVudCB0
aXRsZSByZWZlcmVuY2Ugb3IgQGMgTlVMTC4gSXQncyBpbnRlcm5hbCwgZG9uJ3QgY2hhbmdlLgor
ICovCitjb25zdCBjaGFyKiBld2tfdmlld190aXRsZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8p
Cit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CisgICAgcmV0dXJu
IGV3a19mcmFtZV90aXRsZV9nZXQoc2QtPm1haW5fZnJhbWUpOworfQorCisvKioKKyAqIEdldHMg
aWYgbWFpbiBmcmFtZSBpcyBlZGl0YWJsZS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0
byBnZXQgZWRpdGFibGUgc3RhdGUuCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgZWRp
dGFibGUsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICovCitFaW5hX0Jvb2wgZXdrX3ZpZXdf
ZWRpdGFibGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOworICAgIHJldHVybiBld2tfZnJhbWVfZWRp
dGFibGVfZ2V0KHNkLT5tYWluX2ZyYW1lKTsKK30KKworLyoqCisgKiBTZXQgaWYgdmlldyBiYWNr
Z3JvdW5kIGNvbG9yCisgKgorICogSnVzdCBhcyBpbiBFdmFzLCBjb2xvcnMgYXJlIHByZS1tdWx0
aXBsaWVkLCBzbyA1MCUgcmVkIGlzCisgKiAoMTI4LCAwLCAwLCAxMjgpIGFuZCBub3QgKDI1NSwg
MCwgMCwgMTI4KSEKKyAqCisgKiBAd2FybmluZyBXYXRjaCBvdXQgcGVyZm9ybWFuY2UgaXNzdWVz
IHdpdGggdHJhbnNwYXJlbmN5ISBPYmplY3QKKyAqICAgICAgICAgIHdpbGwgYmUgaGFuZGxlZCBh
cyB0cmFuc3BhcmVudCBpbWFnZSBieSBldmFzIGV2ZW4gaWYgdGhlCisgKiAgICAgICAgICB3ZWJw
YWdlIHNwZWNpZmllcyBhIGJhY2tncm91bmQgY29sb3IuIFRoYXQgbWVhbiB5b3UnbGwgcGF5Cisg
KiAgICAgICAgICBhIHByaWNlIGV2ZW4gaWYgaXQncyBub3QgcmVhbGx5IHRyYW5zcGFyZW50LCB0
aHVzCisgKiAgICAgICAgICBzY3JvbGxpbmcvcGFubmluZyBhbmQgem9vbWluZyB3aWxsIGJlIGxp
a2VseSBzbG93ZXIgdGhhbgorICogICAgICAgICAgaWYgdHJhbnNwYXJlbmN5IGlzIG9mZi4KKyAq
CisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBjaGFuZ2UuCisgKiBAcGFyYW0gZW5hYmxlIGlm
IEBjIEVJTkFfVFJVRSwgYmFja2dyb3VuZCB3aWxsIGRlZmF1bHQgdG8gdHJhbnNwYXJlbnQuCisg
Ki8KK3ZvaWQgZXdrX3ZpZXdfYmdfY29sb3Jfc2V0KEV2YXNfT2JqZWN0KiBvLCBpbnQgciwgaW50
IGcsIGludCBiLCBpbnQgYSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
KTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5iZ19jb2xvcl9zZXQpOworCisgICAgaWYgKGEg
PCAwKSB7CisgICAgICAgIFdSTigiQWxwaGEgbGVzcyB0aGFuIHplcm8gKCVkKS4iLCBhKTsKKyAg
ICAgICAgYSA9IDA7CisgICAgfSBlbHNlIGlmIChhID4gMjU1KSB7CisgICAgICAgIFdSTigiQWxw
aGEgaXMgbGFyZ2VyIHRoYW4gMjU1ICglZCkuIiwgYSk7CisgICAgICAgIGEgPSAyNTU7CisgICAg
fQorCisjZGVmaW5lIENIRUNLX1BSRU1VTF9DT0xPUihjLCBhKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKGMgPCAwKSB7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFdSTigiQ29s
b3IgY29tcG9uZW50ICIjYyIgaXMgbGVzcyB0aGFuIHplcm8gKCVkKS4iLCBjKTsgICAgICAgICBc
CisgICAgICAgIGMgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgfSBlbHNlIGlmIChjID4gYSkgeyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFdSTigiQ29sb3Ig
Y29tcG9uZW50ICIjYyIgaXMgZ3JlYXRlciB0aGFuIGFscGhhICglZCwgYWxwaGE9JWQpLiIsIFwK
KyAgICAgICAgICAgIGMsIGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgYyA9IGE7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9CisgICAgQ0hFQ0tfUFJF
TVVMX0NPTE9SKHIsIGEpOworICAgIENIRUNLX1BSRU1VTF9DT0xPUihnLCBhKTsKKyAgICBDSEVD
S19QUkVNVUxfQ09MT1IoYiwgYSk7CisjdW5kZWYgQ0hFQ0tfUFJFTVVMX0NPTE9SCisKKyAgICBz
ZC0+YmdfY29sb3IuciA9IHI7CisgICAgc2QtPmJnX2NvbG9yLmcgPSBnOworICAgIHNkLT5iZ19j
b2xvci5iID0gYjsKKyAgICBzZC0+YmdfY29sb3IuYSA9IGE7CisKKyAgICBzZC0+YXBpLT5iZ19j
b2xvcl9zZXQoc2QsIHIsIGcsIGIsIGEpOworCisgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3
ID0gc2QtPl9wcml2LT5tYWluX2ZyYW1lLT52aWV3KCk7CisgICAgaWYgKHZpZXcpIHsKKyAgICAg
ICAgV2ViQ29yZTo6Q29sb3IgY29sb3I7CisKKyAgICAgICAgaWYgKCFhKQorICAgICAgICAgICAg
Y29sb3IgPSBXZWJDb3JlOjpDb2xvcigwLCAwLCAwLCAwKTsKKyAgICAgICAgZWxzZSBpZiAoYSA9
PSAyNTUpCisgICAgICAgICAgICBjb2xvciA9IFdlYkNvcmU6OkNvbG9yKHIsIGcsIGIsIGEpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBjb2xvciA9IFdlYkNvcmU6OkNvbG9yKHIgKiAyNTUg
LyBhLCBnICogMjU1IC8gYSwgYiAqIDI1NSAvIGEsIGEpOworCisgICAgICAgIHZpZXctPnVwZGF0
ZUJhY2tncm91bmRSZWN1cnNpdmVseShjb2xvciwgIWEpOworICAgIH0KK30KKworLyoqCisgKiBR
dWVyeSBpZiB2aWV3IG9iamVjdCBiYWNrZ3JvdW5kIGNvbG9yLgorICoKKyAqIEp1c3QgYXMgaW4g
RXZhcywgY29sb3JzIGFyZSBwcmUtbXVsdGlwbGllZCwgc28gNTAlIHJlZCBpcworICogKDEyOCwg
MCwgMCwgMTI4KSBhbmQgbm90ICgyNTUsIDAsIDAsIDEyOCkhCisgKgorICogQHBhcmFtIG8gdmll
dyBvYmplY3QgdG8gcXVlcnkuCisgKiBAcGFyYW0gciB3aGVyZSB0byByZXR1cm4gcmVkIGNvbG9y
IGNvbXBvbmVudC4KKyAqIEBwYXJhbSBnIHdoZXJlIHRvIHJldHVybiBncmVlbiBjb2xvciBjb21w
b25lbnQuCisgKiBAcGFyYW0gYiB3aGVyZSB0byByZXR1cm4gYmx1ZSBjb2xvciBjb21wb25lbnQu
CisgKiBAcGFyYW0gYSB3aGVyZSB0byByZXR1cm4gYWxwaGEgdmFsdWUuCisgKi8KK3ZvaWQgZXdr
X3ZpZXdfYmdfY29sb3JfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvLCBpbnQqIHIsIGludCogZywg
aW50KiBiLCBpbnQqIGEpCit7CisgICAgaWYgKHIpCisgICAgICAgICpyID0gMDsKKyAgICBpZiAo
ZykKKyAgICAgICAgKmcgPSAwOworICAgIGlmIChiKQorICAgICAgICAqYiA9IDA7CisgICAgaWYg
KGEpCisgICAgICAgICphID0gMDsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
KTsKKyAgICBpZiAocikKKyAgICAgICAgKnIgPSBzZC0+YmdfY29sb3IucjsKKyAgICBpZiAoZykK
KyAgICAgICAgKmcgPSBzZC0+YmdfY29sb3IuZzsKKyAgICBpZiAoYikKKyAgICAgICAgKmIgPSBz
ZC0+YmdfY29sb3IuYjsKKyAgICBpZiAoYSkKKyAgICAgICAgKmEgPSBzZC0+YmdfY29sb3IuYTsK
K30KKworLyoqCisgKiBTZWFyY2ggdGhlIGdpdmVuIHRleHQgc3RyaW5nIGluIGRvY3VtZW50Lgor
ICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHdoZXJlIHRvIHNlYXJjaCB0ZXh0LgorICogQHBh
cmFtIHN0cmluZyByZWZlcmVuY2Ugc3RyaW5nIHRvIHNlYXJjaC4KKyAqIEBwYXJhbSBjYXNlX3Nl
bnNpdGl2ZSBpZiBzZWFyY2ggc2hvdWxkIGJlIGNhc2Ugc2Vuc2l0aXZlIG9yIG5vdC4KKyAqIEBw
YXJhbSBmb3J3YXJkIGlmIHNlYXJjaCBpcyBmcm9tIGN1cnNvciBhbmQgb24gb3IgYmFja3dhcmRz
LgorICogQHBhcmFtIHdyYXAgaWYgc2VhcmNoIHNob3VsZCB3cmFwIGF0IGVuZC4KKyAqCisgKiBA
cmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBmb3VuZCwgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3IgZmFp
bHVyZS4KKyAqLworRWluYV9Cb29sIGV3a192aWV3X3RleHRfc2VhcmNoKGNvbnN0IEV2YXNfT2Jq
ZWN0KiBvLCBjb25zdCBjaGFyKiBzdHJpbmcsIEVpbmFfQm9vbCBjYXNlX3NlbnNpdGl2ZSwgRWlu
YV9Cb29sIGZvcndhcmQsIEVpbmFfQm9vbCB3cmFwKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JF
VFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHN0cmluZywgRUlOQV9GQUxTRSk7CisgICAgV2ViQ29yZTo6VGV4dENhc2VTZW5zaXRp
dml0eSBzZW5zaXRpdmU7CisgICAgV2ViQ29yZTo6RmluZERpcmVjdGlvbiBkaXJlY3Rpb247CisK
KyAgICBpZiAoY2FzZV9zZW5zaXRpdmUpCisgICAgICAgIHNlbnNpdGl2ZSA9IFdlYkNvcmU6OlRl
eHRDYXNlU2Vuc2l0aXZlOworICAgIGVsc2UKKyAgICAgICAgc2Vuc2l0aXZlID0gV2ViQ29yZTo6
VGV4dENhc2VJbnNlbnNpdGl2ZTsKKworICAgIGlmIChmb3J3YXJkKQorICAgICAgICBkaXJlY3Rp
b24gPSBXZWJDb3JlOjpGaW5kRGlyZWN0aW9uRm9yd2FyZDsKKyAgICBlbHNlCisgICAgICAgIGRp
cmVjdGlvbiA9IFdlYkNvcmU6OkZpbmREaXJlY3Rpb25CYWNrd2FyZDsKKworICAgIHJldHVybiBw
cml2LT5wYWdlLT5maW5kU3RyaW5nKFdlYkNvcmU6OlN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSwg
c2Vuc2l0aXZlLCBkaXJlY3Rpb24sIHdyYXApOworfQorCisvKioKKyAqIE1hcmsgbWF0Y2hlcyB0
aGUgZ2l2ZW4gdGV4dCBzdHJpbmcgaW4gZG9jdW1lbnQuCisgKgorICogQHBhcmFtIG8gdmlldyBv
YmplY3Qgd2hlcmUgdG8gc2VhcmNoIHRleHQuCisgKiBAcGFyYW0gc3RyaW5nIHJlZmVyZW5jZSBz
dHJpbmcgdG8gbWF0Y2guCisgKiBAcGFyYW0gY2FzZV9zZW5zaXRpdmUgaWYgbWF0Y2ggc2hvdWxk
IGJlIGNhc2Ugc2Vuc2l0aXZlIG9yIG5vdC4KKyAqIEBwYXJhbSBoaWdobGlnaHQgaWYgbWF0Y2hl
cyBzaG91bGQgYmUgaGlnaGxpZ2h0ZWQuCisgKiBAcGFyYW0gbGltaXQgbWF4aW11bSBhbW91bnQg
b2YgbWF0Y2hlcywgb3IgemVybyB0byB1bmxpbWl0ZWQuCisgKgorICogQHJldHVybiBudW1iZXIg
b2YgbWF0Y2hlcy4KKyAqLwordW5zaWduZWQgaW50IGV3a192aWV3X3RleHRfbWF0Y2hlc19tYXJr
KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBzdHJpbmcsIEVpbmFfQm9vbCBjYXNlX3NlbnNp
dGl2ZSwgRWluYV9Cb29sIGhpZ2hsaWdodCwgdW5zaWduZWQgaW50IGxpbWl0KQoreworICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOworICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHN0cmluZywgMCk7CisgICAgV2ViQ29yZTo6VGV4dENhc2VTZW5zaXRpdml0eSBzZW5zaXRp
dmU7CisKKyAgICBpZiAoY2FzZV9zZW5zaXRpdmUpCisgICAgICAgIHNlbnNpdGl2ZSA9IFdlYkNv
cmU6OlRleHRDYXNlU2Vuc2l0aXZlOworICAgIGVsc2UKKyAgICAgICAgc2Vuc2l0aXZlID0gV2Vi
Q29yZTo6VGV4dENhc2VJbnNlbnNpdGl2ZTsKKworICAgIHJldHVybiBwcml2LT5wYWdlLT5tYXJr
QWxsTWF0Y2hlc0ZvclRleHQoV2ViQ29yZTo6U3RyaW5nOjpmcm9tVVRGOChzdHJpbmcpLCBzZW5z
aXRpdmUsIGhpZ2hsaWdodCwgbGltaXQpOworfQorCisvKioKKyAqIFJldmVyc2VzIHRoZSBlZmZl
Y3Qgb2YgZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX21hcmsoKQorICoKKyAqIEBwYXJhbSBvIHZpZXcg
b2JqZWN0IHdoZXJlIHRvIHNlYXJjaCB0ZXh0LgorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVF
IG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0UgZm9yIGZhaWx1cmUuCisgKi8KK0VpbmFfQm9vbCBl
d2tfdmlld190ZXh0X21hdGNoZXNfdW5tYXJrX2FsbChFdmFzX09iamVjdCogbykKK3sKKyAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIHByaXYtPnBh
Z2UtPnVubWFya0FsbFRleHRNYXRjaGVzKCk7CisgICAgcmV0dXJuIEVJTkFfVFJVRTsKK30KKwor
LyoqCisgKiBTZXQgaWYgc2hvdWxkIGhpZ2hsaWdodCBtYXRjaGVzIG1hcmtlZCB3aXRoIGV3a192
aWV3X3RleHRfbWF0Y2hlc19tYXJrKCkuCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3Qgd2hl
cmUgdG8gc2V0IGlmIG1hdGNoZXMgYXJlIGhpZ2hsaWdodGVkIG9yIG5vdC4KKyAqIEBwYXJhbSBo
aWdobGlnaHQgaWYgQGMgRUlOQV9UUlVFLCBtYXRjaGVzIHdpbGwgYmUgaGlnaGxpZ2h0ZWQuCisg
KgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBmb3Ig
ZmFpbHVyZS4KKyAqLworRWluYV9Cb29sIGV3a192aWV3X3RleHRfbWF0Y2hlc19oaWdobGlnaHRf
c2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgaGlnaGxpZ2h0KQoreworICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOworICAgIHJldHVybiBld2tfZnJh
bWVfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9zZXQoc2QtPm1haW5fZnJhbWUsIGhpZ2hsaWdodCk7
Cit9CisKKy8qKgorICogR2V0IGlmIHNob3VsZCBoaWdobGlnaHQgbWF0Y2hlcyBtYXJrZWQgd2l0
aCBld2tfdmlld190ZXh0X21hdGNoZXNfbWFyaygpLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2Jq
ZWN0IHRvIHF1ZXJ5IGlmIG1hdGNoZXMgYXJlIGhpZ2hsaWdodGVkIG9yIG5vdC4KKyAqCisgKiBA
cmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGV5IGFyZSBoaWdobGlnaHRlZCwgQGMgRUlOQV9GQUxT
RSBvdGhlcndpc2UuCisgKi8KK0VpbmFfQm9vbCBld2tfdmlld190ZXh0X21hdGNoZXNfaGlnaGxp
Z2h0X2dldChjb25zdCBFdmFzX09iamVjdCogbykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAgICByZXR1cm4gZXdrX2ZyYW1lX3RleHRfbWF0
Y2hlc19oaWdobGlnaHRfZ2V0KHNkLT5tYWluX2ZyYW1lKTsKK30KKworLyoqCisgKiBTZXRzIGlm
IG1haW4gZnJhbWUgaXMgZWRpdGFibGUuCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8g
c2V0IGVkaXRhYmxlIHN0YXRlLgorICogQHBhcmFtIGVkaXRhYmxlIG5ldyBzdGF0ZS4KKyAqCisg
KiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lz
ZS4KKyAqLworRWluYV9Cb29sIGV3a192aWV3X2VkaXRhYmxlX3NldChFdmFzX09iamVjdCogbywg
RWluYV9Cb29sIGVkaXRhYmxlKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywg
c2QsIEVJTkFfRkFMU0UpOworICAgIHJldHVybiBld2tfZnJhbWVfZWRpdGFibGVfc2V0KHNkLT5t
YWluX2ZyYW1lLCBlZGl0YWJsZSk7Cit9CisKKy8qKgorICogR2V0IHRoZSBjb3B5IG9mIHRoZSBz
ZWxlY3Rpb24gdGV4dC4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgc2VsZWN0
aW9uIHRleHQuCisgKgorICogQHJldHVybiBuZXdseSBhbGxvY2F0ZWQgc3RyaW5nIG9yIEBjIE5V
TEwgaWYgbm90aGluZyBpcyBzZWxlY3RlZCBvciBmYWlsdXJlLgorICovCitjaGFyKiBld2tfdmll
d19zZWxlY3Rpb25fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4obywgc2QsIDApOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzZCwgcHJpdiwgMCk7CisgICAgV2ViQ29yZTo6Q1N0cmluZyBzID0gcHJpdi0+cGFnZS0+Zm9j
dXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5zZWxlY3RlZFRleHQoKS51dGY4
KCk7CisgICAgaWYgKHMuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBz
dHJkdXAocy5kYXRhKCkpOworfQorCitzdGF0aWMgaW5saW5lIEVpbmFfQm9vbCBfZXdrX3ZpZXdf
ZWRpdG9yX2NvbW1hbmQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBjb25zdCBjaGFyKiBj
b21tYW5kKQoreworICAgIHJldHVybiBwcml2LT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9j
dXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5jb21tYW5kKFdlYkNvcmU6OlN0cmluZzo6ZnJv
bVVURjgoY29tbWFuZCkpLmV4ZWN1dGUoKTsKK30KKworLyoqCisgKiBVbnNlbGVjdHMgd2hhdGV2
ZXIgd2FzIHNlbGVjdGVkLgorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIG9wZXJhdGlv
biB3YXMgZXhlY3V0ZWQsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICovCitFaW5hX0Jvb2wg
ZXdrX3ZpZXdfc2VsZWN0X25vbmUoRXZhc19PYmplY3QqIG8pCit7CisgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICByZXR1cm4gX2V3a192aWV3X2Vk
aXRvcl9jb21tYW5kKHByaXYsICJVbnNlbGVjdCIpOworfQorCisvKioKKyAqIFNlbGVjdHMgZXZl
cnl0aGluZy4KKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBvcGVyYXRpb24gd2FzIGV4
ZWN1dGVkLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqLworRWluYV9Cb29sIGV3a192aWV3
X3NlbGVjdF9hbGwoRXZhc19PYmplY3QqIG8pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICByZXR1cm4gX2V3a192aWV3X2VkaXRvcl9jb21t
YW5kKHByaXYsICJTZWxlY3RBbGwiKTsKK30KKworLyoqCisgKiBTZWxlY3RzIHRoZSBjdXJyZW50
IHBhcmFncmFoLgorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIG9wZXJhdGlvbiB3YXMg
ZXhlY3V0ZWQsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICovCitFaW5hX0Jvb2wgZXdrX3Zp
ZXdfc2VsZWN0X3BhcmFncmFwaChFdmFzX09iamVjdCogbykKK3sKKyAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIHJldHVybiBfZXdrX3ZpZXdfZWRp
dG9yX2NvbW1hbmQocHJpdiwgIlNlbGVjdFBhcmFncmFwaCIpOworfQorCisvKioKKyAqIFNlbGVj
dHMgdGhlIGN1cnJlbnQgc2VudGVuY2UuCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYg
b3BlcmF0aW9uIHdhcyBleGVjdXRlZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKi8KK0Vp
bmFfQm9vbCBld2tfdmlld19zZWxlY3Rfc2VudGVuY2UoRXZhc19PYmplY3QqIG8pCit7CisgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICByZXR1cm4g
X2V3a192aWV3X2VkaXRvcl9jb21tYW5kKHByaXYsICJTZWxlY3RTZW50ZW5jZSIpOworfQorCisv
KioKKyAqIFNlbGVjdHMgdGhlIGN1cnJlbnQgbGluZS4KKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFf
VFJVRSBpZiBvcGVyYXRpb24gd2FzIGV4ZWN1dGVkLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4K
KyAqLworRWluYV9Cb29sIGV3a192aWV3X3NlbGVjdF9saW5lKEV2YXNfT2JqZWN0KiBvKQorewor
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOworICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAgcmV0
dXJuIF9ld2tfdmlld19lZGl0b3JfY29tbWFuZChwcml2LCAiU2VsZWN0TGluZSIpOworfQorCisv
KioKKyAqIFNlbGVjdHMgdGhlIGN1cnJlbnQgd29yZC4KKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFf
VFJVRSBpZiBvcGVyYXRpb24gd2FzIGV4ZWN1dGVkLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4K
KyAqLworRWluYV9Cb29sIGV3a192aWV3X3NlbGVjdF93b3JkKEV2YXNfT2JqZWN0KiBvKQorewor
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOworICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAgcmV0
dXJuIF9ld2tfdmlld19lZGl0b3JfY29tbWFuZChwcml2LCAiU2VsZWN0V29yZCIpOworfQorCisv
KioKKyAqIEdldCBjdXJyZW50IGxvYWQgcHJvZ3Jlc3MgZXN0aW1hdGUgZnJvbSAwLjAgdG8gMS4w
LgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCBjdXJyZW50IHByb2dyZXNzLgor
ICoKKyAqIEByZXR1cm4gcHJvZ3JlcyB2YWx1ZSBmcm9tIDAuMCB0byAxLjAgb3IgLTEuMCBvbiBl
cnJvci4KKyAqLworZG91YmxlIGV3a192aWV3X2xvYWRfcHJvZ3Jlc3NfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBvKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIC0xLjAp
OworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgLTEuMCk7CisgICAg
cmV0dXJuIHByaXYtPnBhZ2UtPnByb2dyZXNzKCktPmVzdGltYXRlZFByb2dyZXNzKCk7Cit9CisK
Ky8qKgorICogQXNrIG1haW4gZnJhbWUgdG8gc3RvcCBsb2FkaW5nLgorICoKKyAqIEBwYXJhbSBv
IHZpZXcgb2JqZWN0IHRvIHN0b3AgbG9hZGluZy4KKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJV
RSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqCisgKiBAc2VlIGV3a19m
cmFtZV9zdG9wKCkKKyAqLworRWluYV9Cb29sIGV3a192aWV3X3N0b3AoRXZhc19PYmplY3QqIG8p
Cit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7Cisg
ICAgcmV0dXJuIGV3a19mcmFtZV9zdG9wKHNkLT5tYWluX2ZyYW1lKTsKK30KKworLyoqCisgKiBB
c2sgbWFpbiBmcmFtZSB0byByZWxvYWQgY3VycmVudCBkb2N1bWVudC4KKyAqCisgKiBAcGFyYW0g
byB2aWV3IG9iamVjdCB0byByZWxvYWQuCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24g
c3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKgorICogQHNlZSBld2tfZnJhbWVf
cmVsb2FkKCkKKyAqLworRWluYV9Cb29sIGV3a192aWV3X3JlbG9hZChFdmFzX09iamVjdCogbykK
K3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAg
ICByZXR1cm4gZXdrX2ZyYW1lX3JlbG9hZChzZC0+bWFpbl9mcmFtZSk7Cit9CisKKy8qKgorICog
QXNrIG1haW4gZnJhbWUgdG8gZnVsbHkgcmVsb2FkIGN1cnJlbnQgZG9jdW1lbnQsIHVzaW5nIG5v
IGNhY2hlcy4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byByZWxvYWQuCisgKgorICog
QHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2Uu
CisgKgorICogQHNlZSBld2tfZnJhbWVfcmVsb2FkX2Z1bGwoKQorICovCitFaW5hX0Jvb2wgZXdr
X3ZpZXdfcmVsb2FkX2Z1bGwoRXZhc19PYmplY3QqIG8pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CisgICAgcmV0dXJuIGV3a19mcmFtZV9yZWxv
YWRfZnVsbChzZC0+bWFpbl9mcmFtZSk7Cit9CisKKy8qKgorICogQXNrIG1haW4gZnJhbWUgdG8g
bmF2aWdhdGUgYmFjayBpbiBoaXN0b3J5LgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRv
IG5hdmlnYXRlIGJhY2suCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vzcywg
QGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKgorICogQHNlZSBld2tfZnJhbWVfYmFjaygpCisg
Ki8KK0VpbmFfQm9vbCBld2tfdmlld19iYWNrKEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOworICAgIHJldHVybiBld2tf
ZnJhbWVfYmFjayhzZC0+bWFpbl9mcmFtZSk7Cit9CisKKy8qKgorICogQXNrIG1haW4gZnJhbWUg
dG8gbmF2aWdhdGUgZm9yd2FyZCBpbiBoaXN0b3J5LgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2Jq
ZWN0IHRvIG5hdmlnYXRlIGZvcndhcmQuCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24g
c3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKgorICogQHNlZSBld2tfZnJhbWVf
Zm9yd2FyZCgpCisgKi8KK0VpbmFfQm9vbCBld2tfdmlld19mb3J3YXJkKEV2YXNfT2JqZWN0KiBv
KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwor
ICAgIHJldHVybiBld2tfZnJhbWVfZm9yd2FyZChzZC0+bWFpbl9mcmFtZSk7Cit9CisKKy8qKgor
ICogTmF2aWdhdGUgYmFjayBvciBmb3J3YXJkIGluIGhpc3RvcnkuCisgKgorICogQHBhcmFtIG8g
dmlldyBvYmplY3QgdG8gbmF2aWdhdGUuCisgKiBAcGFyYW0gc3RlcHMgaWYgcG9zaXRpdmUgbmF2
aWdhdGVzIHRoYXQgYW1vdW50IGZvcndhcmRzLCBpZiBuZWdhdGl2ZQorICogICAgICAgIGRvZXMg
YmFja3dhcmRzLgorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJ
TkFfRkFMU0Ugb3RoZXJ3aXNlLgorICoKKyAqIEBzZWUgZXdrX2ZyYW1lX25hdmlnYXRlKCkKKyAq
LworRWluYV9Cb29sIGV3a192aWV3X25hdmlnYXRlKEV2YXNfT2JqZWN0KiBvLCBpbnQgc3RlcHMp
Cit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7Cisg
ICAgcmV0dXJuIGV3a19mcmFtZV9uYXZpZ2F0ZShzZC0+bWFpbl9mcmFtZSwgc3RlcHMpOworfQor
CisvKioKKyAqIENoZWNrIGlmIGl0IGlzIHBvc3NpYmxlIHRvIG5hdmlnYXRlIGJhY2t3YXJkcyBv
bmUgaXRlbSBpbiBoaXN0b3J5LgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGNoZWNr
IGlmIGJhY2t3YXJkIG5hdmlnYXRpb24gaXMgcG9zc2libGUuCisgKgorICogQHJldHVybiBAYyBF
SU5BX1RSVUUgaWYgcG9zc2libGUsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICoKKyAqIEBz
ZWUgZXdrX3ZpZXdfbmF2aWdhdGVfcG9zc2libGUoKQorICovCitFaW5hX0Jvb2wgZXdrX3ZpZXdf
YmFja19wb3NzaWJsZShFdmFzX09iamVjdCogbykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAgICByZXR1cm4gZXdrX2ZyYW1lX2JhY2tfcG9z
c2libGUoc2QtPm1haW5fZnJhbWUpOworfQorCisvKioKKyAqIENoZWNrIGlmIGl0IGlzIHBvc3Np
YmxlIHRvIG5hdmlnYXRlIGZvcndhcmRzIG9uZSBpdGVtIGluIGhpc3RvcnkuCisgKgorICogQHBh
cmFtIG8gdmlldyBvYmplY3QgdG8gY2hlY2sgaWYgZm9yd2FyZCBuYXZpZ2F0aW9uIGlzIHBvc3Np
YmxlLgorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHBvc3NpYmxlLCBAYyBFSU5BX0ZB
TFNFIG90aGVyd2lzZS4KKyAqCisgKiBAc2VlIGV3a192aWV3X25hdmlnYXRlX3Bvc3NpYmxlKCkK
KyAqLworRWluYV9Cb29sIGV3a192aWV3X2ZvcndhcmRfcG9zc2libGUoRXZhc19PYmplY3QqIG8p
Cit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7Cisg
ICAgcmV0dXJuIGV3a19mcmFtZV9mb3J3YXJkX3Bvc3NpYmxlKHNkLT5tYWluX2ZyYW1lKTsKK30K
KworLyoqCisgKiBDaGVjayBpZiBpdCBpcyBwb3NzaWJsZSB0byBuYXZpZ2F0ZSBnaXZlbiBAYSBz
dGVwcyBpbiBoaXN0b3J5LgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIG5hdmlnYXRl
LgorICogQHBhcmFtIHN0ZXBzIGlmIHBvc2l0aXZlIG5hdmlnYXRlcyB0aGF0IGFtb3VudCBmb3J3
YXJkcywgaWYgbmVnYXRpdmUKKyAqICAgICAgICBkb2VzIGJhY2t3YXJkcy4KKyAqCisgKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBpZiBwb3NzaWJsZSwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisg
Ki8KK0VpbmFfQm9vbCBld2tfdmlld19uYXZpZ2F0ZV9wb3NzaWJsZShFdmFzX09iamVjdCogbywg
aW50IHN0ZXBzKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFf
RkFMU0UpOworICAgIHJldHVybiBld2tfZnJhbWVfbmF2aWdhdGVfcG9zc2libGUoc2QtPm1haW5f
ZnJhbWUsIHN0ZXBzKTsKK30KKworLyoqCisgKiBDaGVjayBpZiBuYXZpZ2F0aW9uIGhpc3Rvcnkg
KGJhY2stZm9yd2FyZCBsaXN0cykgaXMgZW5hYmxlZC4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9i
amVjdCB0byBjaGVjayBpZiBuYXZpZ2F0aW9uIGhpc3RvcnkgaXMgZW5hYmxlZC4KKyAqCisgKiBA
cmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB2aWV3IGtlZXBzIGhpc3RvcnksIEBjIEVJTkFfRkFMU0Ug
b3RoZXJ3aXNlLgorICovCitFaW5hX0Jvb2wgZXdrX3ZpZXdfaGlzdG9yeV9lbmFibGVfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywg
c2QsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJp
diwgRUlOQV9GQUxTRSk7CisgICAgcmV0dXJuIHByaXYtPnBhZ2UtPmJhY2tGb3J3YXJkTGlzdCgp
LT5lbmFibGVkKCk7Cit9CisKKy8qKgorICogU2V0cyBpZiBuYXZpZ2F0aW9uIGhpc3RvcnkgKGJh
Y2stZm9yd2FyZCBsaXN0cykgaXMgZW5hYmxlZC4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVj
dCB0byBzZXQgaWYgbmF2aWdhdGlvbiBoaXN0b3J5IGlzIGVuYWJsZWQuCisgKgorICogQHJldHVy
biBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKi8K
K0VpbmFfQm9vbCBld2tfdmlld19oaXN0b3J5X2VuYWJsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVp
bmFfQm9vbCBlbmFibGUpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwg
RUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBF
SU5BX0ZBTFNFKTsKKyAgICBwcml2LT5wYWdlLT5iYWNrRm9yd2FyZExpc3QoKS0+c2V0RW5hYmxl
ZChlbmFibGUpOworICAgIHJldHVybiBFSU5BX1RSVUU7Cit9CisKKy8qKgorICogR2V0cyB0aGUg
aGlzdG9yeSAoYmFjay1mb3J3YXJkIGxpc3QpIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHZpZXcuCisg
KgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IG5hdmlnYXRpb24gaGlzdG9yeSBmcm9t
LgorICoKKyAqIEByZXR1cm4gcmV0dXJucyB0aGUgaGlzdG9yeSBpbnN0YW5jZSBoYW5kbGUgYXNz
b2NpYXRlZCB3aXRoIHRoaXMKKyAqICAgICAgICAgdmlldyBvciBAYyBOVUxMIG9uIGVycm9ycyAo
aW5jbHVkaW5nIHdoZW4gaGlzdG9yeSBpcyBub3QKKyAqICAgICAgICAgZW5hYmxlZCB3aXRoIGV3
a192aWV3X2hpc3RvcnlfZW5hYmxlX3NldCgpKS4gVGhpcyBpbnN0YW5jZQorICogICAgICAgICBp
cyB1bmlxdWUgZm9yIHRoaXMgdmlldyBhbmQgdGh1cyBtdWx0aXBsZSBjYWxscyB0byB0aGlzCisg
KiAgICAgICAgIGZ1bmN0aW9uIHdpdGggdGhlIHNhbWUgdmlldyBhcyBwYXJhbWV0ZXIgcmV0dXJu
cyB0aGUgc2FtZQorICogICAgICAgICBoYW5kbGUuIFRoaXMgaGFuZGxlIGlzIGFsaXZlIHdoaWxl
IHZpZXcgaXMgYWxpdmUsIHRodXMgb25lCisgKiAgICAgICAgIG1pZ2h0IHdhbnQgdG8gbGlzdGVu
IGZvciBFVkFTX0NBTExCQUNLX0RFTCBvbiBnaXZlbiB2aWV3CisgKiAgICAgICAgIChAYSBvKSB0
byBrbm93IHdoZW4gdG8gc3RvcCB1c2luZyByZXR1cm5lZCBoYW5kbGUuCisgKgorICogQHNlZSBl
d2tfdmlld19oaXN0b3J5X2VuYWJsZV9zZXQoKQorICovCitFd2tfSGlzdG9yeSogZXdrX3ZpZXdf
aGlzdG9yeV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCwgMCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNk
LCBwcml2LCAwKTsKKyAgICBpZiAoIXByaXYtPnBhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpLT5lbmFi
bGVkKCkpIHsKKyAgICAgICAgRVJSKCJhc2tlZCBoaXN0b3J5LCBidXQgaXQncyBkaXNhYmxlZCEg
UmV0dXJuaW5nIE5VTEwhIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4g
cHJpdi0+aGlzdG9yeTsKK30KKworLyoqCisgKiBHZXQgdGhlIGN1cnJlbnQgem9vbSBsZXZlbCBv
ZiBtYWluIGZyYW1lLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHF1ZXJ5IHpvb20g
bGV2ZWwuCisgKgorICogQHJldHVybiBjdXJyZW50IHpvb20gbGV2ZWwgaW4gdXNlIG9yIC0xLjAg
b24gZXJyb3IuCisgKi8KK2Zsb2F0IGV3a192aWV3X3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
KiBvKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIC0xLjApOworICAg
IHJldHVybiBld2tfZnJhbWVfem9vbV9nZXQoc2QtPm1haW5fZnJhbWUpOworfQorCisvKioKKyAq
IFNldCB0aGUgY3VycmVudCB6b29tIGxldmVsIG9mIG1haW4gZnJhbWUuCisgKgorICogQHBhcmFt
IG8gdmlldyBvYmplY3QgdG8gc2V0IHpvb20gbGV2ZWwuCisgKiBAcGFyYW0gem9vbSBuZXcgbGV2
ZWwgdG8gdXNlLgorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJ
TkFfRkFMU0Ugb3RoZXJ3aXNlLgorICovCitFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9zZXQoRXZh
c19PYmplY3QqIG8sIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpCit7
CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5hcGksIEVJTkFfRkFMU0UpOworICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+YXBpLT56b29tX3NldCwgRUlOQV9G
QUxTRSk7CisgICAgaWYgKHpvb20gPCBaT09NX01JTikgeworICAgICAgICBXUk4oInpvb20gbGV2
ZWwgaXMgPCAlZiA6ICVmIiwgKGRvdWJsZSlaT09NX01JTiwgKGRvdWJsZSl6b29tKTsKKyAgICAg
ICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgfQorICAgIGlmICh6b29tID4gWk9PTV9NQVgpIHsK
KyAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYgOiAlZiIsIChkb3VibGUpWk9PTV9NQVgs
IChkb3VibGUpem9vbSk7CisgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgIH0KKworICAg
IGlmIChjeCA+PSBzZC0+dmlldy53KQorICAgICAgICBjeCA9IHNkLT52aWV3LncgLSAxOworICAg
IGlmIChjeSA+PSBzZC0+dmlldy5oKQorICAgICAgICBjeSA9IHNkLT52aWV3LmggLSAxOworICAg
IGlmIChjeCA8IDApCisgICAgICAgIGN4ID0gMDsKKyAgICBpZiAoY3kgPCAwKQorICAgICAgICBj
eSA9IDA7CisgICAgX2V3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19zdG9wKHNkKTsKKyAgICBy
ZXR1cm4gc2QtPmFwaS0+em9vbV9zZXQoc2QsIHpvb20sIGN4LCBjeSk7Cit9CisKK0VpbmFfQm9v
bCBld2tfdmlld196b29tX3dlYWtfc21vb3RoX3NjYWxlX2dldChjb25zdCBFdmFzX09iamVjdCog
bykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsK
KyAgICByZXR1cm4gc2QtPnpvb21fd2Vha19zbW9vdGhfc2NhbGU7Cit9CisKK3ZvaWQgZXdrX3Zp
ZXdfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBz
bW9vdGhfc2NhbGUpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7Cisg
ICAgc21vb3RoX3NjYWxlID0gISFzbW9vdGhfc2NhbGU7CisgICAgaWYgKHNkLT56b29tX3dlYWtf
c21vb3RoX3NjYWxlID09IHNtb290aF9zY2FsZSkKKyAgICAgICAgcmV0dXJuOworICAgIHNkLT56
b29tX3dlYWtfc21vb3RoX3NjYWxlID0gc21vb3RoX3NjYWxlOworICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOKHNkLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNk
LT5hcGktPnpvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0KTsKKyAgICBzZC0+YXBpLT56b29tX3dl
YWtfc21vb3RoX3NjYWxlX3NldChzZCwgc21vb3RoX3NjYWxlKTsKK30KKworLyoqCisgKiBTZXQg
dGhlIGN1cnJlbnQgem9vbSBsZXZlbCBvZiBiYWNraW5nIHN0b3JlLCBjZW50ZXJlZCBhdCBnaXZl
biBwb2ludC4KKyAqCisgKiBVbmxpa2UgZXdrX3ZpZXdfem9vbV9zZXQoKSwgdGhpcyBjYWxsIGRv
IG5vdCBhc2sgV2ViS2l0IHRvIHJlbmRlcgorICogYXQgbmV3IHNpemUsIGJ1dCBzY2FsZSB3aGF0
IGlzIGFscmVhZHkgcmVuZGVyZWQsIGJlaW5nIG11Y2ggZmFzdGVyCisgKiBidXQgd29yc2UgcXVh
bGl0eS4KKyAqCisgKiBPZnRlbiBvbmUgc2hvdWxkIHVzZSBld2tfdmlld196b29tX2FuaW1hdGVk
X3NldCgpLCBpdCB3aWxsIGNhbGwgdGhlCisgKiBzYW1lIG1hY2hpbmVyeSBpbnRlcm5hbGx5Lgor
ICoKKyAqIEBub3RlIHRoaXMgd2lsbCBzZXQgdmFyaWFibGVzIHVzZWQgYnkgZXdrX3ZpZXdfem9v
bV9hbmltYXRlZF9zZXQoKQorICogICAgICAgc28gc3ViLWNsYXNzZXMgd2lsbCBub3QgcmVzZXQg
aW50ZXJuYWwgc3RhdGUgb24gdGhlaXIKKyAqICAgICAgICJjYWxjdWxhdGUiIHBoYXNlLiBUbyB1
bnNldCB0aG9zZSBhbmQgZW5hYmxlIHN1Yi1jbGFzc2VzIHRvCisgKiAgICAgICByZXNldCB0aGVp
ciBpbnRlcm5hbCBzdGF0ZSwgY2FsbAorICogICAgICAgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9t
YXJrX3N0b3AoKS4gTmFtZWx5LCB0aGlzIGNhbGwgd2lsbAorICogICAgICAgc2V0IGV3a192aWV3
X3pvb21fYW5pbWF0ZWRfbWFya19zdGFydCgpIHRvIGFjdHVhbCB3ZWJraXQgem9vbQorICogICAg
ICAgbGV2ZWwsIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19lbmQoKSBhbmQKKyAqICAgICAg
IGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19jdXJyZW50KCkgdG8gZ2l2ZW4gem9vbSBsZXZl
bC4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgd2VhayB6b29tIGxldmVsLgor
ICogQHBhcmFtIHpvb20gbGV2ZWwgdG8gc2NhbGUgYmFja2luZyBzdG9yZS4KKyAqIEBwYXJhbSBj
eCBob3Jpem9udGFsIGNlbnRlciBvZmZzZXQsIHJlbGF0aXZlIHRvIG9iamVjdCAody8yIGlzIG1p
ZGRsZSkuCisgKiBAcGFyYW0gY3kgdmVydGljYWwgY2VudGVyIG9mZnNldCwgcmVsYXRpdmUgdG8g
b2JqZWN0IChoLzIgaXMgbWlkZGxlKS4KKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBz
dWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqLworRWluYV9Cb29sIGV3a192aWV3
X3pvb21fd2Vha19zZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gs
IEV2YXNfQ29vcmQgY3kpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwg
RUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5hcGks
IEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+YXBp
LT56b29tX3dlYWtfc2V0LCBFSU5BX0ZBTFNFKTsKKyAgICBpZiAoem9vbSA8IFpPT01fTUlOKSB7
CisgICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYiLCAoZG91YmxlKVpPT01fTUlO
LCAoZG91YmxlKXpvb20pOworICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICB9CisgICAg
aWYgKHpvb20gPiBaT09NX01BWCkgeworICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6
ICVmIiwgKGRvdWJsZSlaT09NX01BWCwgKGRvdWJsZSl6b29tKTsKKyAgICAgICAgcmV0dXJuIEVJ
TkFfRkFMU0U7CisgICAgfQorCisgICAgaWYgKGN4ID49IHNkLT52aWV3LncpCisgICAgICAgIGN4
ID0gc2QtPnZpZXcudyAtIDE7CisgICAgaWYgKGN5ID49IHNkLT52aWV3LmgpCisgICAgICAgIGN5
ID0gc2QtPnZpZXcuaCAtIDE7CisgICAgaWYgKGN4IDwgMCkKKyAgICAgICAgY3ggPSAwOworICAg
IGlmIChjeSA8IDApCisgICAgICAgIGN5ID0gMDsKKworICAgIHNkLT5hbmltYXRlZF96b29tLnpv
b20uc3RhcnQgPSBld2tfZnJhbWVfem9vbV9nZXQoc2QtPm1haW5fZnJhbWUpOworICAgIHNkLT5h
bmltYXRlZF96b29tLnpvb20uZW5kID0gem9vbTsKKyAgICBzZC0+YW5pbWF0ZWRfem9vbS56b29t
LmN1cnJlbnQgPSB6b29tOworICAgIHJldHVybiBzZC0+YXBpLT56b29tX3dlYWtfc2V0KHNkLCB6
b29tLCBjeCwgY3kpOworfQorCisvKioKKyAqIE1hcmsgaW50ZXJuYWwgem9vbSBhbmltYXRpb24g
c3RhdGUgdG8gZ2l2ZW4gem9vbS4KKyAqCisgKiBUaGlzIGRvZXMgbm90IG1vZGlmeSBhbnkgYWN0
dWFsIHpvb20gaW4gV2ViS2l0IG9yIGJhY2tpbmcgc3RvcmUsCisgKiBqdXN0IHNldCB0aGUgRXdr
X1ZpZXdfU21hcnRfRGF0YS0+YW5pbWF0ZWRfem9vbS56b29tLnN0YXJ0IHNvCisgKiBzdWItY2xh
c3NlcyB3aWxsIGtub3cgdGhleSBzaG91bGQgbm90IHJlc2V0IHRoZWlyIGludGVybmFsIHN0YXRl
LgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGNoYW5nZSB2YWx1ZS4KKyAqIEBwYXJh
bSB6b29tIG5ldyBzdGFydCB2YWx1ZS4KKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBz
dWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqCisgKiBAc2VlIGV3a192aWV3X3pv
b21fYW5pbWF0ZWRfc2V0KCkKKyAqIEBzZWUgZXdrX3ZpZXdfem9vbV93ZWFrX3NldCgpCisgKiBA
c2VlIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19zdG9wKCkKKyAqIEBzZWUgZXdrX3ZpZXdf
em9vbV9hbmltYXRlZF9tYXJrX2VuZCgpCisgKiBAc2VlIGV3a192aWV3X3pvb21fYW5pbWF0ZWRf
bWFya19jdXJyZW50KCkKKyAqLworRWluYV9Cb29sIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFy
a19zdGFydChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSkKK3sKKyAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAgICBzZC0+YW5pbWF0ZWRfem9vbS56
b29tLnN0YXJ0ID0gem9vbTsKKyAgICByZXR1cm4gRUlOQV9UUlVFOworfQorCisvKioKKyAqIE1h
cmsgaW50ZXJuYWwgem9vbSBhbmltYXRpb24gc3RhdGUgdG8gZ2l2ZW4gem9vbS4KKyAqCisgKiBU
aGlzIGRvZXMgbm90IG1vZGlmeSBhbnkgYWN0dWFsIHpvb20gaW4gV2ViS2l0IG9yIGJhY2tpbmcg
c3RvcmUsCisgKiBqdXN0IHNldCB0aGUgRXdrX1ZpZXdfU21hcnRfRGF0YS0+YW5pbWF0ZWRfem9v
bS56b29tLmVuZCBzbworICogc3ViLWNsYXNzZXMgd2lsbCBrbm93IHRoZXkgc2hvdWxkIG5vdCBy
ZXNldCB0aGVpciBpbnRlcm5hbCBzdGF0ZS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0
byBjaGFuZ2UgdmFsdWUuCisgKiBAcGFyYW0gem9vbSBuZXcgZW5kIHZhbHVlLgorICoKKyAqIEBy
ZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgor
ICoKKyAqIEBzZWUgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9zZXQoKQorICogQHNlZSBld2tfdmll
d196b29tX3dlYWtfc2V0KCkKKyAqIEBzZWUgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0
b3AoKQorICogQHNlZSBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfc3RhcnQoKQorICogQHNl
ZSBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfY3VycmVudCgpCisgKi8KK0VpbmFfQm9vbCBl
d2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfZW5kKEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29t
KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwor
ICAgIHNkLT5hbmltYXRlZF96b29tLnpvb20uZW5kID0gem9vbTsKKyAgICByZXR1cm4gRUlOQV9U
UlVFOworfQorCisvKioKKyAqIE1hcmsgaW50ZXJuYWwgem9vbSBhbmltYXRpb24gc3RhdGUgdG8g
Z2l2ZW4gem9vbS4KKyAqCisgKiBUaGlzIGRvZXMgbm90IG1vZGlmeSBhbnkgYWN0dWFsIHpvb20g
aW4gV2ViS2l0IG9yIGJhY2tpbmcgc3RvcmUsCisgKiBqdXN0IHNldCB0aGUgRXdrX1ZpZXdfU21h
cnRfRGF0YS0+YW5pbWF0ZWRfem9vbS56b29tLmN1cnJlbnQgc28KKyAqIHN1Yi1jbGFzc2VzIHdp
bGwga25vdyB0aGV5IHNob3VsZCBub3QgcmVzZXQgdGhlaXIgaW50ZXJuYWwgc3RhdGUuCisgKgor
ICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gY2hhbmdlIHZhbHVlLgorICogQHBhcmFtIHpvb20g
bmV3IGN1cnJlbnQgdmFsdWUuCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vz
cywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKgorICogQHNlZSBld2tfdmlld196b29tX2Fu
aW1hdGVkX3NldCgpCisgKiBAc2VlIGV3a192aWV3X3pvb21fd2Vha19zZXQoKQorICogQHNlZSBl
d2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfc3RvcCgpCisgKiBAc2VlIGV3a192aWV3X3pvb21f
YW5pbWF0ZWRfbWFya19zdGFydCgpCisgKiBAc2VlIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFy
a19lbmQoKQorICovCitFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX2N1cnJl
bnQoRXZhc19PYmplY3QqIG8sIGZsb2F0IHpvb20pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CisgICAgc2QtPmFuaW1hdGVkX3pvb20uem9vbS5j
dXJyZW50ID0gem9vbTsKKyAgICByZXR1cm4gRUlOQV9UUlVFOworfQorCisvKioKKyAqIFVubWFy
ayBpbnRlcm5hbCB6b29tIGFuaW1hdGlvbiBzdGF0ZS4KKyAqCisgKiBUaGlzIHplcm8gYWxsIHN0
YXJ0LCBlbmQgYW5kIGN1cnJlbnQgdmFsdWVzLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0
IHRvIG1hcmsgYXMgYW5pbWF0ZWQgaXMgc3RvcHBlZC4KKyAqCisgKiBAc2VlIGV3a192aWV3X3pv
b21fYW5pbWF0ZWRfbWFya19zdGFydCgpCisgKiBAc2VlIGV3a192aWV3X3pvb21fYW5pbWF0ZWRf
bWFya19lbmQoKQorICogQHNlZSBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfY3VycmVudCgp
CisgKiBAc2VlIGV3a192aWV3X3pvb21fd2Vha19zZXQoKQorICovCitFaW5hX0Jvb2wgZXdrX3Zp
ZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0b3AoRXZhc19PYmplY3QqIG8pCit7CisgICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CisgICAgX2V3a192aWV3X3pv
b21fYW5pbWF0ZWRfbWFya19zdG9wKHNkKTsKKyAgICByZXR1cm4gRUlOQV9UUlVFOworfQorCisv
KioKKyAqIFNldCB0aGUgY3VycmVudCB6b29tIGxldmVsIHdoaWxlIGFuaW1hdGluZy4KKyAqCisg
KiBJZiB0aGUgdmlldyB3YXMgYWxyZWFkeSBhbmltYXRpbmcgdG8gYW5vdGhlciB6b29tLCBpdCB3
aWxsIHN0YXJ0CisgKiBmcm9tIGN1cnJlbnQgcG9pbnQgdG8gdGhlIG5leHQgcHJvdmlkZWQgem9v
bSAoQGEgem9vbSBwYXJhbWV0ZXIpCisgKiBhbmQgZHVyYXRpb24gKEBhIGR1cmF0aW9uIHBhcmFt
ZXRlcikuCisgKgorICogVGhpcyBpcyB0aGUgcmVjb21tZW5kZWQgd2F5IHRvIGRvIHRyYW5zaXRp
b25zIGZyb20gb25lIGxldmVsIHRvCisgKiBhbm90aGVyLiBIb3dldmVyLCBvbmUgbWF5IHdpc2gg
dG8gZG8gdGhvc2UgZnJvbSBvdXRzaWRlLCBpbiB0aGF0CisgKiBjYXNlIHVzZSBld2tfdmlld196
b29tX3dlYWtfc2V0KCkgYW5kIGxhdGVyIGNvbnRyb2wgaW50ZXJtZWRpYXRlCisgKiBzdGF0ZXMg
d2l0aCBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfY3VycmVudCgpLAorICogZXdrX3ZpZXdf
em9vbV9hbmltYXRlZF9tYXJrX2VuZCgpIGFuZAorICogZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9t
YXJrX3N0b3AoKS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBhbmltYXRlLgorICog
QHBhcmFtIHpvb20gZmluYWwgem9vbSBsZXZlbCB0byB1c2UuCisgKiBAcGFyYW0gZHVyYXRpb24g
dGltZSBpbiBzZWNvbmRzIHRoZSBhbmltYXRpb24gc2hvdWxkIHRha2UuCisgKiBAcGFyYW0gY3gg
b2Zmc2V0IGluc2lkZSBvYmplY3QgdGhhdCBkZWZpbmVzIHpvb20gY2VudGVyLiAwIGlzIGxlZnQg
c2lkZS4KKyAqIEBwYXJhbSBjeSBvZmZzZXQgaW5zaWRlIG9iamVjdCB0aGF0IGRlZmluZXMgem9v
bSBjZW50ZXIuIDAgaXMgdG9wIHNpZGUuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBhbmlt
YXRpb24gd2lsbCBiZSBzdGFydGVkLCBAYyBFSU5BX0ZBTFNFIGlmIG5vdAorICogICAgICAgICAg
ICBiZWNhdXNlIHpvb20gaXMgdG9vIHNtYWxsL2JpZy4KKyAqLworRWluYV9Cb29sIGV3a192aWV3
X3pvb21fYW5pbWF0ZWRfc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tLCBmbG9hdCBkdXJh
dGlvbiwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSkKK3sKKyAgICBkb3VibGUgbm93Owor
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOworICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5hcGksIEVJTkFfRkFMU0UpOworICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+YXBpLT56b29tX3dlYWtfc2V0LCBFSU5B
X0ZBTFNFKTsKKworICAgIGlmICh6b29tIDwgWk9PTV9NSU4pIHsKKyAgICAgICAgV1JOKCJ6b29t
IGxldmVsIGlzIDwgJWYgOiAlZiIsIChkb3VibGUpWk9PTV9NSU4sIChkb3VibGUpem9vbSk7Cisg
ICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgIH0KKyAgICBpZiAoem9vbSA+IFpPT01fTUFY
KSB7CisgICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCAoZG91YmxlKVpPT01f
TUFYLCAoZG91YmxlKXpvb20pOworICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICB9CisK
KyAgICBpZiAocHJpdi0+YW5pbWF0ZWRfem9vbS5hbmltYXRvcikKKyAgICAgICAgcHJpdi0+YW5p
bWF0ZWRfem9vbS56b29tLnN0YXJ0ID0gX2V3a192aWV3X3pvb21fYW5pbWF0ZWRfY3VycmVudChw
cml2KTsKKyAgICBlbHNlIHsKKyAgICAgICAgcHJpdi0+YW5pbWF0ZWRfem9vbS56b29tLnN0YXJ0
ID0gZXdrX2ZyYW1lX3pvb21fZ2V0KHNkLT5tYWluX2ZyYW1lKTsKKyAgICAgICAgX2V3a192aWV3
X3pvb21fYW5pbWF0aW9uX3N0YXJ0KHNkKTsKKyAgICB9CisKKyAgICBpZiAoY3ggPCAwKQorICAg
ICAgICBjeCA9IDA7CisgICAgaWYgKGN5IDwgMCkKKyAgICAgICAgY3kgPSAwOworCisgICAgbm93
ID0gZWNvcmVfbG9vcF90aW1lX2dldCgpOworICAgIHByaXYtPmFuaW1hdGVkX3pvb20udGltZS5z
dGFydCA9IG5vdzsKKyAgICBwcml2LT5hbmltYXRlZF96b29tLnRpbWUuZW5kID0gbm93ICsgZHVy
YXRpb247CisgICAgcHJpdi0+YW5pbWF0ZWRfem9vbS50aW1lLmR1cmF0aW9uID0gZHVyYXRpb247
CisgICAgcHJpdi0+YW5pbWF0ZWRfem9vbS56b29tLmVuZCA9IHpvb207CisgICAgcHJpdi0+YW5p
bWF0ZWRfem9vbS56b29tLnJhbmdlID0gKHByaXYtPmFuaW1hdGVkX3pvb20uem9vbS5lbmQgLSBw
cml2LT5hbmltYXRlZF96b29tLnpvb20uc3RhcnQpOworICAgIHByaXYtPmFuaW1hdGVkX3pvb20u
Y2VudGVyLnggPSBjeDsKKyAgICBwcml2LT5hbmltYXRlZF96b29tLmNlbnRlci55ID0gY3k7Cisg
ICAgc2QtPmFuaW1hdGVkX3pvb20uem9vbS5jdXJyZW50ID0gcHJpdi0+YW5pbWF0ZWRfem9vbS56
b29tLnN0YXJ0OworICAgIHNkLT5hbmltYXRlZF96b29tLnpvb20uc3RhcnQgPSBwcml2LT5hbmlt
YXRlZF96b29tLnpvb20uc3RhcnQ7CisgICAgc2QtPmFuaW1hdGVkX3pvb20uem9vbS5lbmQgPSBw
cml2LT5hbmltYXRlZF96b29tLnpvb20uZW5kOworCisgICAgcmV0dXJuIEVJTkFfVFJVRTsKK30K
KworLyoqCisgKiBRdWVyeSBpZiB6b29tIGxldmVsIGp1c3QgYXBwbGllcyB0byB0ZXh0IGFuZCBu
b3Qgb3RoZXIgZWxlbWVudHMuCisgKgorICogQHBhcmFtIG8gdmlldyB0byBxdWVyeSBzZXR0aW5n
LgorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIGp1c3QgdGV4dCBhcmUgc2NhbGVkLCBA
YyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqLworRWluYV9Cb29sIGV3a192aWV3X3pvb21fdGV4
dF9vbmx5X2dldChjb25zdCBFdmFzX09iamVjdCogbykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAgICByZXR1cm4gZXdrX2ZyYW1lX3pvb21f
dGV4dF9vbmx5X2dldChzZC0+bWFpbl9mcmFtZSk7Cit9CisKKy8qKgorICogU2V0IGlmIHpvb20g
bGV2ZWwganVzdCBhcHBsaWVzIHRvIHRleHQgYW5kIG5vdCBvdGhlciBlbGVtZW50cy4KKyAqCisg
KiBAcGFyYW0gbyB2aWV3IHRvIGNoYW5nZSBzZXR0aW5nLgorICogQHBhcmFtIHNldHRpbmcgQGMg
RUlOQV9UUlVFIGlmIHpvb20gc2hvdWxkIGp1c3QgYmUgYXBwbGllZCB0byB0ZXh0LgorICoKKyAq
IEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNl
LgorICovCitFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV90ZXh0X29ubHlfc2V0KEV2YXNfT2JqZWN0
KiBvLCBFaW5hX0Jvb2wgc2V0dGluZykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAgICByZXR1cm4gZXdrX2ZyYW1lX3pvb21fdGV4dF9vbmx5
X3NldChzZC0+bWFpbl9mcmFtZSwgc2V0dGluZyk7Cit9CisKKy8qKgorICogSGludCBlbmdpbmUg
dG8gcHJlLXJlbmRlciByZWdpb24uCisgKgorICogRW5naW5lcyBhbmQgYmFja2luZyBzdG9yZSBt
aWdodCBiZSBhYmxlIHRvIHByZS1yZW5kZXIgcmVnaW9ucyBpbgorICogb3JkZXIgdG8gc3BlZWQg
dXAgem9vbWluZyBvciBzY3JvbGxpbmcgdG8gdGhhdCByZWdpb24uIE5vdCBhbGwKKyAqIGVuZ2lu
ZXMgbWlnaHQgaW1wbGVtZW50IHRoYXQgYW5kIHRoZXkgd2lsbCByZXR1cm4gQGMgRUlOQV9GQUxT
RQorICogaW4gdGhhdCBjYXNlLgorICoKKyAqIFRoZSBnaXZlbiByZWdpb24gaXMgYSBoaW50LiBF
bmdpbmVzIG1pZ2h0IGRvIGJpZ2dlciBvciBzbWFsbGVyIGFyZWEKKyAqIHRoYXQgY292ZXJzIHRo
YXQgcmVnaW9uLiBQcmUtcmVuZGVyIG1pZ2h0IG5vdCBiZSBpbW1lZGlhdGUsIGl0IG1heQorICog
YmUgcG9zdHBvbmVkIHRvIGEgdGhyZWFkLCBvcGVyYXRlZCBjb29wZXJhdGl2ZWx5IGluIHRoZSBt
YWluIGxvb3AKKyAqIGFuZCBtYXkgYmUgZXZlbiBpZ25vcmVkIG9yIGNhbmNlbGxlZCBhZnRlcndh
cmRzLgorICoKKyAqIE11bHRpcGxlIHJlcXVlc3RzIG1pZ2h0IGJlIHF1ZXVlZCBieSBlbmdpbmVz
LiBPbmUgY2FuIGNsZWFyL2ZvcmdldAorICogYWJvdXQgdGhlbSB3aXRoIGV3a192aWV3X3ByZV9y
ZW5kZXJfY2FuY2VsKCkuCisgKgorICogQHBhcmFtIG8gdmlldyB0byBhc2sgcHJlLXJlbmRlciBv
ZiBnaXZlbiByZWdpb24uCisgKiBAcGFyYW0geCBhYnNvbHV0ZSBjb29yZGluYXRlICgwPWxlZnQp
IHRvIHByZS1yZW5kZXIgYXQgem9vbS4KKyAqIEBwYXJhbSB5IGFic29sdXRlIGNvb3JkaW5hdGUg
KDA9dG9wKSB0byBwcmUtcmVuZGVyIGF0IHpvb20uCisgKiBAcGFyYW0gdyB3aWR0aCB0byBwcmUt
cmVuZGVyIHN0YXJ0aW5nIGZyb20gQGEgeCBhdCB6b29tLgorICogQHBhcmFtIGggaGVpZ2h0IHRv
IHByZS1yZW5kZXIgc3RhcnRpbmcgZnJvbSBAYSB5IGF0IHpvb20uCisgKiBAcGFyYW0gem9vbSBk
ZXNpcmVkIHpvb20uCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgcmVxdWVzdCB3YXMg
YWNjZXB0ZWQsIEBjIEVJTkFfRkFMU0UKKyAqICAgICAgICAgb3RoZXJ3aXNlIChlcnJvcnMsIHBy
ZS1yZW5kZXIgbm90IHN1cHBvcnRlZCwgZXRjKS4KKyAqCisgKiBAc2VlIGV3a192aWV3X3ByZV9y
ZW5kZXJfY2FuY2VsKCkKKyAqLworRWluYV9Cb29sIGV3a192aWV3X3ByZV9yZW5kZXJfcmVnaW9u
KEV2YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3
LCBFdmFzX0Nvb3JkIGgsIGZsb2F0IHpvb20pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHNkLT5hcGktPnByZV9yZW5kZXJfcmVnaW9uLCBFSU5BX0ZBTFNFKTsKKyAgICBmbG9hdCBj
dXJfem9vbSA9IGV3a19mcmFtZV96b29tX2dldChzZC0+bWFpbl9mcmFtZSk7CisgICAgRXZhc19D
b29yZCBjdywgY2g7CisKKyAgICBpZiAoY3VyX3pvb20gPCAwLjAwMDAxKQorICAgICAgICByZXR1
cm4gRUlOQV9GQUxTRTsKKyAgICBpZiAoIWV3a19mcmFtZV9jb250ZW50c19zaXplX2dldChzZC0+
bWFpbl9mcmFtZSwgJmN3LCAmY2gpKQorICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKworICAg
IGN3ICo9IHpvb20gLyBjdXJfem9vbTsKKyAgICBjaCAqPSB6b29tIC8gY3VyX3pvb207CisgICAg
REJHKCJyZWdpb24gJWQsJWQrJWR4JWQgQCAlZiBjb250ZW50cz0lZHglZCIsIHgsIHksIHcsIGgs
IHpvb20sIGN3LCBjaCk7CisKKyAgICBpZiAoeCArIHcgPiBjdykKKyAgICAgICAgdyA9IGN3IC0g
eDsKKworICAgIGlmICh5ICsgaCA+IGNoKQorICAgICAgICBoID0gY2ggLSB5OworCisgICAgaWYg
KHggPCAwKSB7CisgICAgICAgIHcgKz0geDsKKyAgICAgICAgeCA9IDA7CisgICAgfQorICAgIGlm
ICh5IDwgMCkgeworICAgICAgICBoICs9IHk7CisgICAgICAgIHkgPSAwOworICAgIH0KKworICAg
IHJldHVybiBzZC0+YXBpLT5wcmVfcmVuZGVyX3JlZ2lvbihzZCwgeCwgeSwgdywgaCwgem9vbSk7
Cit9CisKKy8qKgorICogQ2FuY2VsIChjbGVhcikgcHJldmlvdXMgcHJlLXJlbmRlciByZXF1ZXN0
cy4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IHRvIGNsZWFyIHByZS1yZW5kZXIgcmVxdWVzdHMuCisg
Ki8KK3ZvaWQgZXdrX3ZpZXdfcHJlX3JlbmRlcl9jYW5jZWwoRXZhc19PYmplY3QqIG8pCit7Cisg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk4oc2QtPmFwaS0+cHJlX3JlbmRlcl9jYW5jZWwpOworICAgIHNkLT5hcGktPnBy
ZV9yZW5kZXJfY2FuY2VsKHNkKTsKK30KKworY29uc3QgY2hhciogZXdrX3ZpZXdfc2V0dGluZ191
c2VyX2FnZW50X2dldChjb25zdCBFdmFzX09iamVjdCogbykKK3sKKyAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c2QsIHByaXYsIDApOworICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy51c2VyX2FnZW50OworfQor
CitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ191c2VyX2FnZW50X3NldChFdmFzX09iamVjdCog
bywgY29uc3QgY2hhciogdXNlcl9hZ2VudCkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c2QsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIGlmIChlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2Uo
JnByaXYtPnNldHRpbmdzLnVzZXJfYWdlbnQsIHVzZXJfYWdlbnQpKSB7CisgICAgICAgIFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsKiBjbGllbnQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudEVmbCo+KHByaXYtPm1haW5fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQo
KSk7CisgICAgICAgIGNsaWVudC0+c2V0Q3VzdG9tVXNlckFnZW50KFdlYkNvcmU6OlN0cmluZzo6
ZnJvbVVURjgodXNlcl9hZ2VudCkpOworICAgIH0KKyAgICByZXR1cm4gRUlOQV9UUlVFOworfQor
Citjb25zdCBjaGFyKiBld2tfdmlld19zZXR0aW5nX3VzZXJfc3R5bGVzaGVldF9nZXQoY29uc3Qg
RXZhc19PYmplY3QqIG8pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwg
MCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsKKyAgICBy
ZXR1cm4gcHJpdi0+c2V0dGluZ3MudXNlcl9zdHlsZXNoZWV0OworfQorCitFaW5hX0Jvb2wgZXdr
X3ZpZXdfc2V0dGluZ191c2VyX3N0eWxlc2hlZXRfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBj
aGFyKiB1cmkpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9G
QUxTRSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZB
TFNFKTsKKyAgICBpZiAoZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZwcml2LT5zZXR0aW5ncy51
c2VyX3N0eWxlc2hlZXQsIHVyaSkpIHsKKyAgICAgICAgV2ViQ29yZTo6S1VSTCBrdXJsKFdlYkNv
cmU6OktVUkwoKSwgV2ViQ29yZTo6U3RyaW5nOjpmcm9tVVRGOCh1cmkpKTsKKyAgICAgICAgcHJp
di0+cGFnZV9zZXR0aW5ncy0+c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihrdXJsKTsKKyAgICB9
CisgICAgcmV0dXJuIEVJTkFfVFJVRTsKK30KKworRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
YXV0b19sb2FkX2ltYWdlc19nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCit7CisgICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICByZXR1cm4gcHJpdi0+
c2V0dGluZ3MuYXV0b19sb2FkX2ltYWdlczsKK30KKworRWluYV9Cb29sIGV3a192aWV3X3NldHRp
bmdfYXV0b19sb2FkX2ltYWdlc19zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBhdXRvbWF0
aWMpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7
CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsK
KyAgICBhdXRvbWF0aWMgPSAhIWF1dG9tYXRpYzsKKyAgICBpZiAocHJpdi0+c2V0dGluZ3MuYXV0
b19sb2FkX2ltYWdlcyAhPSBhdXRvbWF0aWMpIHsKKyAgICAgICAgcHJpdi0+cGFnZV9zZXR0aW5n
cy0+c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KGF1dG9tYXRpYyk7CisgICAgICAgIHByaXYt
PnNldHRpbmdzLmF1dG9fbG9hZF9pbWFnZXMgPSBhdXRvbWF0aWM7CisgICAgfQorICAgIHJldHVy
biBFSU5BX1RSVUU7Cit9CisKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2F1dG9fc2hyaW5r
X2ltYWdlc19nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3Mu
YXV0b19zaHJpbmtfaW1hZ2VzOworfQorCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19hdXRv
X3Nocmlua19pbWFnZXNfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgYXV0b21hdGljKQor
eworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOworICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAg
YXV0b21hdGljID0gISFhdXRvbWF0aWM7CisgICAgaWYgKHByaXYtPnNldHRpbmdzLmF1dG9fc2hy
aW5rX2ltYWdlcyAhPSBhdXRvbWF0aWMpIHsKKyAgICAgICAgcHJpdi0+cGFnZV9zZXR0aW5ncy0+
c2V0U2hyaW5rc1N0YW5kYWxvbmVJbWFnZXNUb0ZpdChhdXRvbWF0aWMpOworICAgICAgICBwcml2
LT5zZXR0aW5ncy5hdXRvX3Nocmlua19pbWFnZXMgPSBhdXRvbWF0aWM7CisgICAgfQorICAgIHJl
dHVybiBFSU5BX1RSVUU7Cit9CisKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9z
Y3JpcHRzX2dldChjb25zdCBFdmFzX09iamVjdCogbykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9S
RVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5l
bmFibGVfc2NyaXB0czsKK30KKworRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3Nj
cmlwdHNfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZW5hYmxlKQoreworICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAgZW5hYmxlID0gISFl
bmFibGU7CisgICAgaWYgKHByaXYtPnNldHRpbmdzLmVuYWJsZV9zY3JpcHRzICE9IGVuYWJsZSkg
eworICAgICAgICBwcml2LT5wYWdlX3NldHRpbmdzLT5zZXRKYXZhU2NyaXB0RW5hYmxlZChlbmFi
bGUpOworICAgICAgICBwcml2LT5zZXR0aW5ncy5lbmFibGVfc2NyaXB0cyA9IGVuYWJsZTsKKyAg
ICB9CisgICAgcmV0dXJuIEVJTkFfVFJVRTsKK30KKworRWluYV9Cb29sIGV3a192aWV3X3NldHRp
bmdfZW5hYmxlX3BsdWdpbnNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAgcmV0dXJuIHByaXYt
PnNldHRpbmdzLmVuYWJsZV9wbHVnaW5zOworfQorCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGlu
Z19lbmFibGVfcGx1Z2luc19zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBlbmFibGUpCit7
CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CisgICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBl
bmFibGUgPSAhIWVuYWJsZTsKKyAgICBpZiAocHJpdi0+c2V0dGluZ3MuZW5hYmxlX3BsdWdpbnMg
IT0gZW5hYmxlKSB7CisgICAgICAgIHByaXYtPnBhZ2Vfc2V0dGluZ3MtPnNldFBsdWdpbnNFbmFi
bGVkKGVuYWJsZSk7CisgICAgICAgIHByaXYtPnNldHRpbmdzLmVuYWJsZV9wbHVnaW5zID0gZW5h
YmxlOworICAgIH0KKyAgICByZXR1cm4gRUlOQV9UUlVFOworfQorCitFaW5hX0Jvb2wgZXdrX3Zp
ZXdfc2V0dGluZ19zY3JpcHRzX3dpbmRvd19vcGVuX2dldChjb25zdCBFdmFzX09iamVjdCogbykK
K3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAg
ICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOworICAg
IHJldHVybiBwcml2LT5zZXR0aW5ncy5zY3JpcHRzX3dpbmRvd19vcGVuOworfQorCitFaW5hX0Jv
b2wgZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX3dpbmRvd19vcGVuX3NldChFdmFzX09iamVjdCog
bywgRWluYV9Cb29sIGFsbG93KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywg
c2QsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJp
diwgRUlOQV9GQUxTRSk7CisgICAgYWxsb3cgPSAhIWFsbG93OworICAgIGlmIChwcml2LT5zZXR0
aW5ncy5zY3JpcHRzX3dpbmRvd19vcGVuICE9IGFsbG93KSB7CisgICAgICAgIHByaXYtPnBhZ2Vf
c2V0dGluZ3MtPnNldEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkoYWxsb3cp
OworICAgICAgICBwcml2LT5zZXR0aW5ncy5zY3JpcHRzX3dpbmRvd19vcGVuID0gYWxsb3c7Cisg
ICAgfQorICAgIHJldHVybiBFSU5BX1RSVUU7Cit9CisKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0
aW5nX3Jlc2l6YWJsZV90ZXh0YXJlYXNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQoreworICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOworICAgIEVXS19W
SUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAgcmV0dXJu
IHByaXYtPnNldHRpbmdzLnJlc2l6YWJsZV90ZXh0YXJlYXM7Cit9CisKK0VpbmFfQm9vbCBld2tf
dmlld19zZXR0aW5nX3Jlc2l6YWJsZV90ZXh0YXJlYXNfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5h
X0Jvb2wgZW5hYmxlKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJ
TkFfRkFMU0UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlO
QV9GQUxTRSk7CisgICAgZW5hYmxlID0gISFlbmFibGU7CisgICAgaWYgKHByaXYtPnNldHRpbmdz
LnJlc2l6YWJsZV90ZXh0YXJlYXMgIT0gZW5hYmxlKSB7CisgICAgICAgIHByaXYtPnBhZ2Vfc2V0
dGluZ3MtPnNldFRleHRBcmVhc0FyZVJlc2l6YWJsZShlbmFibGUpOworICAgICAgICBwcml2LT5z
ZXR0aW5ncy5yZXNpemFibGVfdGV4dGFyZWFzID0gZW5hYmxlOworICAgIH0KKyAgICByZXR1cm4g
RUlOQV9UUlVFOworfQorCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19wcml2YXRlX2Jyb3dz
aW5nX2dldChjb25zdCBFdmFzX09iamVjdCogbykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5wcml2
YXRlX2Jyb3dzaW5nOworfQorCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19wcml2YXRlX2Jy
b3dzaW5nX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGVuYWJsZSkKK3sKKyAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIGVuYWJsZSA9ICEh
ZW5hYmxlOworICAgIGlmIChwcml2LT5zZXR0aW5ncy5wcml2YXRlX2Jyb3dzaW5nICE9IGVuYWJs
ZSkgeworICAgICAgICBwcml2LT5wYWdlX3NldHRpbmdzLT5zZXRQcml2YXRlQnJvd3NpbmdFbmFi
bGVkKGVuYWJsZSk7CisgICAgICAgIHByaXYtPnNldHRpbmdzLnByaXZhdGVfYnJvd3NpbmcgPSBl
bmFibGU7CisgICAgfQorICAgIHJldHVybiBFSU5BX1RSVUU7Cit9CisKK0VpbmFfQm9vbCBld2tf
dmlld19zZXR0aW5nX2NhcmV0X2Jyb3dzaW5nX2dldChjb25zdCBFdmFzX09iamVjdCogbykKK3sK
KyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAgICBF
V0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIHJl
dHVybiBwcml2LT5zZXR0aW5ncy5jYXJldF9icm93c2luZzsKK30KKworRWluYV9Cb29sIGV3a192
aWV3X3NldHRpbmdfY2FyZXRfYnJvd3Npbmdfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wg
ZW5hYmxlKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFM
U0UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxT
RSk7CisgICAgZW5hYmxlID0gISFlbmFibGU7CisgICAgaWYgKHByaXYtPnNldHRpbmdzLmNhcmV0
X2Jyb3dzaW5nICE9IGVuYWJsZSkgeworICAgICAgICBwcml2LT5wYWdlX3NldHRpbmdzLT5zZXRD
YXJldEJyb3dzaW5nRW5hYmxlZChlbmFibGUpOworICAgICAgICBwcml2LT5zZXR0aW5ncy5jYXJl
dF9icm93c2luZyA9IGVuYWJsZTsKKyAgICB9CisgICAgcmV0dXJuIEVJTkFfVFJVRTsKK30KKwor
Y29uc3QgY2hhciogZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19kZWZhdWx0X2dldChjb25zdCBF
dmFzX09iamVjdCogbykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAw
KTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOworICAgIHJl
dHVybiBwcml2LT5zZXR0aW5ncy5lbmNvZGluZ19kZWZhdWx0OworfQorCitFaW5hX0Jvb2wgZXdr
X3ZpZXdfc2V0dGluZ19lbmNvZGluZ19kZWZhdWx0X3NldChFdmFzX09iamVjdCogbywgY29uc3Qg
Y2hhciogZW5jb2RpbmcpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwg
RUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBF
SU5BX0ZBTFNFKTsKKyAgICBpZiAoZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZwcml2LT5zZXR0
aW5ncy5lbmNvZGluZ19kZWZhdWx0LCBlbmNvZGluZykpCisgICAgICAgIHByaXYtPnBhZ2Vfc2V0
dGluZ3MtPnNldERlZmF1bHRUZXh0RW5jb2RpbmdOYW1lKFdlYkNvcmU6OlN0cmluZzo6ZnJvbVVU
RjgoZW5jb2RpbmcpKTsKKyAgICByZXR1cm4gRUlOQV9UUlVFOworfQorCitpbnQgZXdrX3ZpZXdf
c2V0dGluZ19mb250X21pbmltdW1fc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCit7Cisg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CisgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsKKyAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3Mu
Zm9udF9taW5pbXVtX3NpemU7Cit9CisKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRf
bWluaW11bV9zaXplX3NldChFdmFzX09iamVjdCogbywgaW50IHNpemUpCit7CisgICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBpZiAocHJpdi0+c2V0
dGluZ3MuZm9udF9taW5pbXVtX3NpemUgIT0gc2l6ZSkgeworICAgICAgICBwcml2LT5wYWdlX3Nl
dHRpbmdzLT5zZXRNaW5pbXVtRm9udFNpemUoc2l6ZSk7CisgICAgICAgIHByaXYtPnNldHRpbmdz
LmZvbnRfbWluaW11bV9zaXplID0gc2l6ZTsKKyAgICB9CisgICAgcmV0dXJuIEVJTkFfVFJVRTsK
K30KKworaW50IGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX2xvZ2ljYWxfc2l6ZV9nZXQo
Y29uc3QgRXZhc19PYmplY3QqIG8pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCwgMCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsK
KyAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udF9taW5pbXVtX2xvZ2ljYWxfc2l6ZTsKK30K
KworRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX2xvZ2ljYWxfc2l6ZV9z
ZXQoRXZhc19PYmplY3QqIG8sIGludCBzaXplKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAgaWYgKHByaXYtPnNldHRpbmdzLmZvbnRfbWlu
aW11bV9sb2dpY2FsX3NpemUgIT0gc2l6ZSkgeworICAgICAgICBwcml2LT5wYWdlX3NldHRpbmdz
LT5zZXRNaW5pbXVtTG9naWNhbEZvbnRTaXplKHNpemUpOworICAgICAgICBwcml2LT5zZXR0aW5n
cy5mb250X21pbmltdW1fbG9naWNhbF9zaXplID0gc2l6ZTsKKyAgICB9CisgICAgcmV0dXJuIEVJ
TkFfVFJVRTsKK30KKworaW50IGV3a192aWV3X3NldHRpbmdfZm9udF9kZWZhdWx0X3NpemVfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
bywgc2QsIDApOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7
CisgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmZvbnRfZGVmYXVsdF9zaXplOworfQorCitFaW5h
X0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X2RlZmF1bHRfc2l6ZV9zZXQoRXZhc19PYmplY3Qq
IG8sIGludCBzaXplKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJ
TkFfRkFMU0UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlO
QV9GQUxTRSk7CisgICAgaWYgKHByaXYtPnNldHRpbmdzLmZvbnRfZGVmYXVsdF9zaXplICE9IHNp
emUpIHsKKyAgICAgICAgcHJpdi0+cGFnZV9zZXR0aW5ncy0+c2V0RGVmYXVsdEZvbnRTaXplKHNp
emUpOworICAgICAgICBwcml2LT5zZXR0aW5ncy5mb250X2RlZmF1bHRfc2l6ZSA9IHNpemU7Cisg
ICAgfQorICAgIHJldHVybiBFSU5BX1RSVUU7Cit9CisKK2ludCBld2tfdmlld19zZXR0aW5nX2Zv
bnRfbW9ub3NwYWNlX3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzZCwgcHJpdiwgMCk7CisgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmZvbnRfbW9u
b3NwYWNlX3NpemU7Cit9CisKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRfbW9ub3Nw
YWNlX3NpemVfc2V0KEV2YXNfT2JqZWN0KiBvLCBpbnQgc2l6ZSkKK3sKKyAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIGlmIChwcml2LT5zZXR0aW5n
cy5mb250X21vbm9zcGFjZV9zaXplICE9IHNpemUpIHsKKyAgICAgICAgcHJpdi0+cGFnZV9zZXR0
aW5ncy0+c2V0RGVmYXVsdEZpeGVkRm9udFNpemUoc2l6ZSk7CisgICAgICAgIHByaXYtPnNldHRp
bmdzLmZvbnRfbW9ub3NwYWNlX3NpemUgPSBzaXplOworICAgIH0KKyAgICByZXR1cm4gRUlOQV9U
UlVFOworfQorCitjb25zdCBjaGFyKiBld2tfdmlld19zZXR0aW5nX2ZvbnRfc3RhbmRhcmRfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
bywgc2QsIDApOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7
CisgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmZvbnRfc3RhbmRhcmQ7Cit9CisKK0VpbmFfQm9v
bCBld2tfdmlld19zZXR0aW5nX2ZvbnRfc3RhbmRhcmRfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25z
dCBjaGFyKiBmYW1pbHkpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwg
RUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBF
SU5BX0ZBTFNFKTsKKyAgICBpZiAoZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZwcml2LT5zZXR0
aW5ncy5mb250X3N0YW5kYXJkLCBmYW1pbHkpKSB7CisgICAgICAgIFdlYkNvcmU6OkF0b21pY1N0
cmluZyBzID0gV2ViQ29yZTo6U3RyaW5nOjpmcm9tVVRGOChmYW1pbHkpOworICAgICAgICBwcml2
LT5wYWdlX3NldHRpbmdzLT5zZXRTdGFuZGFyZEZvbnRGYW1pbHkocyk7CisgICAgfQorICAgIHJl
dHVybiBFSU5BX1RSVUU7Cit9CisKK2NvbnN0IGNoYXIqIGV3a192aWV3X3NldHRpbmdfZm9udF9j
dXJzaXZlX2dldChjb25zdCBFdmFzX09iamVjdCogbykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKG8sIHNkLCAwKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2Qs
IHByaXYsIDApOworICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5mb250X2N1cnNpdmU7Cit9CisK
K0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRfY3Vyc2l2ZV9zZXQoRXZhc19PYmplY3Qq
IG8sIGNvbnN0IGNoYXIqIGZhbWlseSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2Qs
IHByaXYsIEVJTkFfRkFMU0UpOworICAgIGlmIChlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnBy
aXYtPnNldHRpbmdzLmZvbnRfY3Vyc2l2ZSwgZmFtaWx5KSkgeworICAgICAgICBXZWJDb3JlOjpB
dG9taWNTdHJpbmcgcyA9IFdlYkNvcmU6OlN0cmluZzo6ZnJvbVVURjgoZmFtaWx5KTsKKyAgICAg
ICAgcHJpdi0+cGFnZV9zZXR0aW5ncy0+c2V0Q3Vyc2l2ZUZvbnRGYW1pbHkocyk7CisgICAgfQor
ICAgIHJldHVybiBFSU5BX1RSVUU7Cit9CisKK2NvbnN0IGNoYXIqIGV3a192aWV3X3NldHRpbmdf
Zm9udF9mYW50YXN5X2dldChjb25zdCBFdmFzX09iamVjdCogbykKK3sKKyAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc2QsIHByaXYsIDApOworICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5mb250X2ZhbnRhc3k7
Cit9CisKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRfZmFudGFzeV9zZXQoRXZhc19P
YmplY3QqIG8sIGNvbnN0IGNoYXIqIGZhbWlseSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIGlmIChlaW5hX3N0cmluZ3NoYXJlX3JlcGxh
Y2UoJnByaXYtPnNldHRpbmdzLmZvbnRfZmFudGFzeSwgZmFtaWx5KSkgeworICAgICAgICBXZWJD
b3JlOjpBdG9taWNTdHJpbmcgcyA9IFdlYkNvcmU6OlN0cmluZzo6ZnJvbVVURjgoZmFtaWx5KTsK
KyAgICAgICAgcHJpdi0+cGFnZV9zZXR0aW5ncy0+c2V0RmFudGFzeUZvbnRGYW1pbHkocyk7Cisg
ICAgfQorICAgIHJldHVybiBFSU5BX1RSVUU7Cit9CisKK2NvbnN0IGNoYXIqIGV3a192aWV3X3Nl
dHRpbmdfZm9udF9tb25vc3BhY2VfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOworICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CisgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmZvbnRf
bW9ub3NwYWNlOworfQorCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X21vbm9zcGFj
ZV9zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIGZhbWlseSkKK3sKKyAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIGlmIChlaW5hX3N0cmlu
Z3NoYXJlX3JlcGxhY2UoJnByaXYtPnNldHRpbmdzLmZvbnRfbW9ub3NwYWNlLCBmYW1pbHkpKSB7
CisgICAgICAgIFdlYkNvcmU6OkF0b21pY1N0cmluZyBzID0gV2ViQ29yZTo6U3RyaW5nOjpmcm9t
VVRGOChmYW1pbHkpOworICAgICAgICBwcml2LT5wYWdlX3NldHRpbmdzLT5zZXRGaXhlZEZvbnRG
YW1pbHkocyk7CisgICAgfQorICAgIHJldHVybiBFSU5BX1RSVUU7Cit9CisKK2NvbnN0IGNoYXIq
IGV3a192aWV3X3NldHRpbmdfZm9udF9zZXJpZl9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCit7
CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CisgICAgRVdLX1ZJRVdf
UFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsKKyAgICByZXR1cm4gcHJpdi0+c2V0dGlu
Z3MuZm9udF9zZXJpZjsKK30KKworRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZm9udF9zZXJp
Zl9zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIGZhbWlseSkKK3sKKyAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIGlmIChlaW5hX3N0cmlu
Z3NoYXJlX3JlcGxhY2UoJnByaXYtPnNldHRpbmdzLmZvbnRfc2VyaWYsIGZhbWlseSkpIHsKKyAg
ICAgICAgV2ViQ29yZTo6QXRvbWljU3RyaW5nIHMgPSBXZWJDb3JlOjpTdHJpbmc6OmZyb21VVEY4
KGZhbWlseSk7CisgICAgICAgIHByaXYtPnBhZ2Vfc2V0dGluZ3MtPnNldFNlcmlmRm9udEZhbWls
eShzKTsKKyAgICB9CisgICAgcmV0dXJuIEVJTkFfVFJVRTsKK30KKworY29uc3QgY2hhciogZXdr
X3ZpZXdfc2V0dGluZ19mb250X3NhbnNfc2VyaWZfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQor
eworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOworICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CisgICAgcmV0dXJuIHByaXYtPnNldHRp
bmdzLmZvbnRfc2Fuc19zZXJpZjsKK30KKworRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZm9u
dF9zYW5zX3NlcmlmX3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogZmFtaWx5KQorewor
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOworICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAgaWYg
KGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmcHJpdi0+c2V0dGluZ3MuZm9udF9zYW5zX3Nlcmlm
LCBmYW1pbHkpKSB7CisgICAgICAgIFdlYkNvcmU6OkF0b21pY1N0cmluZyBzID0gV2ViQ29yZTo6
U3RyaW5nOjpmcm9tVVRGOChmYW1pbHkpOworICAgICAgICBwcml2LT5wYWdlX3NldHRpbmdzLT5z
ZXRTYW5zU2VyaWZGb250RmFtaWx5KHMpOworICAgIH0KKyAgICByZXR1cm4gRUlOQV9UUlVFOwor
fQorCisvKioKKyAqIFNpbWlsYXIgdG8gZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQoKSwgYnV0
IGRvZXMgdHlwZSBjaGVja2luZy4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBxdWVy
eSBpbnRlcm5hbCBkYXRhLgorICogQHJldHVybiBpbnRlcm5hbCBkYXRhIG9yIEBjIE5VTEwgb24g
ZXJyb3JzIChpZTogaW5jb3JyZWN0IHR5cGUgb2YgQGEgbykuCisgKi8KK0V3a19WaWV3X1NtYXJ0
X0RhdGEqIGV3a192aWV3X3NtYXJ0X2RhdGFfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQorewor
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOworICAgIHJldHVybiBzZDsK
K30KKworLyoqCisgKiBHZXRzIHRoZSBpbnRlcm5hbCBhcnJheSBvZiByZXBhaW50IHJlcXVlc3Rz
LgorICoKKyAqIFRoaXMgYXJyYXkgc2hvdWxkIG5vdCBiZSBtb2RpZmllZCBhbnlob3cuIEl0IHNo
b3VsZCBiZSBwcm9jZXNzZWQKKyAqIGltbWVkaWF0ZWx5IGFzIGFueSBmdXJ0aGVyIGV3a192aWV3
IGNhbGwgbWlnaHQgY2hhbmdlIGl0LCBsaWtlCisgKiB0aG9zZSB0aGF0IGFkZCByZXBhaW50cyBv
ciBmbHVzaCB0aGVtLCBzbyBiZSBzdXJlIHRoYXQgeW91ciBjb2RlCisgKiBkb2VzIG5vdCBjYWxs
IGFueSBvZiB0aG9zZSB3aGlsZSB5b3UgcHJvY2VzcyB0aGUgcmVwYWludHMsCisgKiBvdGhlcndp
c2UgY29weSB0aGUgYXJyYXkuCisgKgorICogQHBhcmFtIHByaXYgcHJpdmF0ZSBoYW5kbGUgcG9p
bnRlciBvZiB0aGUgdmlldyB0byBnZXQgcmVwYWludHMuCisgKiBAcGFyYW0gY291bnQgd2hlcmUg
dG8gcmV0dXJuIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgb2YgcmV0dXJuZWQgYXJyYXkuCisgKgor
ICogQHJldHVybiByZWZlcmVuY2UgdG8gYXJyYXkgb2YgcmVxdWVzdGVkIHJlcGFpbnRzLgorICoK
KyAqIEBub3RlIHRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xh
c3NlcyB0aGF0IHdhbnQKKyAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9y
ZS4KKyAqLworY29uc3QgRWluYV9SZWN0YW5nbGUqIGV3a192aWV3X3JlcGFpbnRzX2dldChjb25z
dCBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIHNpemVfdCogY291bnQpCit7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNvdW50LCAwKTsKKyAgICBpZiAoY291bnQpCisg
ICAgICAgICpjb3VudCA9IDA7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHBy
aXYsIDApOworICAgIGlmIChjb3VudCkKKyAgICAgICAgKmNvdW50ID0gcHJpdi0+cmVwYWludHMu
Y291bnQ7CisgICAgcmV0dXJuIHByaXYtPnJlcGFpbnRzLmFycmF5OworfQorCisvKioKKyAqIEdl
dHMgdGhlIGludGVybmFsIGFycmF5IG9mIHNjcm9sbCByZXF1ZXN0cy4KKyAqCisgKiBUaGlzIGFy
cmF5IHNob3VsZCBub3QgYmUgbW9kaWZpZWQgYW55aG93LiBJdCBzaG91bGQgYmUgcHJvY2Vzc2Vk
CisgKiBpbW1lZGlhdGVseSBhcyBhbnkgZnVydGhlciBld2tfdmlldyBjYWxsIG1pZ2h0IGNoYW5n
ZSBpdCwgbGlrZQorICogdGhvc2UgdGhhdCBhZGQgc2Nyb2xscyBvciBmbHVzaCB0aGVtLCBzbyBi
ZSBzdXJlIHRoYXQgeW91ciBjb2RlCisgKiBkb2VzIG5vdCBjYWxsIGFueSBvZiB0aG9zZSB3aGls
ZSB5b3UgcHJvY2VzcyB0aGUgc2Nyb2xscywKKyAqIG90aGVyd2lzZSBjb3B5IHRoZSBhcnJheS4K
KyAqCisgKiBAcGFyYW0gcHJpdiBwcml2YXRlIGhhbmRsZSBwb2ludGVyIG9mIHRoZSB2aWV3IHRv
IGdldCBzY3JvbGxzLgorICogQHBhcmFtIGNvdW50IHdoZXJlIHRvIHJldHVybiB0aGUgbnVtYmVy
IG9mIGVsZW1lbnRzIG9mIHJldHVybmVkIGFycmF5LgorICoKKyAqIEByZXR1cm4gcmVmZXJlbmNl
IHRvIGFycmF5IG9mIHJlcXVlc3RlZCBzY3JvbGxzLgorICoKKyAqIEBub3RlIHRoaXMgaXMgbm90
IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKKyAqICAg
ICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KKyAqLworY29uc3QgRXdrX1Nj
cm9sbF9SZXF1ZXN0KiBld2tfdmlld19zY3JvbGxfcmVxdWVzdHNfZ2V0KGNvbnN0IEV3a19WaWV3
X1ByaXZhdGVfRGF0YSogcHJpdiwgc2l6ZV90KiBjb3VudCkKK3sKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoY291bnQsIDApOworICAgIGlmIChjb3VudCkKKyAgICAgICAgKmNv
dW50ID0gMDsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocHJpdiwgMCk7Cisg
ICAgaWYgKGNvdW50KQorICAgICAgICAqY291bnQgPSBwcml2LT5zY3JvbGxzLmNvdW50OworICAg
IHJldHVybiBwcml2LT5zY3JvbGxzLmFycmF5OworfQorCisvKioKKyAqIEFkZCBhIG5ldyByZXBh
aW50IHJlcXVlc3QgdG8gcXVldWUuCisgKgorICogVGhlIHJlcGFpbnRzIGFyZSBhc3N1bWVkIHRv
IGJlIHJlbGF0aXZlIHRvIGN1cnJlbnQgdmlld3BvcnQuCisgKgorICogQHBhcmFtIHByaXYgcHJp
dmF0ZSBoYW5kbGUgcG9pbnRlciBvZiB0aGUgdmlldyB0byBhZGQgcmVwYWludCByZXF1ZXN0Lgor
ICogQHBhcmFtIHggaG9yaXpvbnRhbCBwb3NpdGlvbiByZWxhdGl2ZSB0byBjdXJyZW50IHZpZXcg
cG9ydCAoc2Nyb2xsZWQpLgorICogQHBhcmFtIHkgdmVydGljYWwgcG9zaXRpb24gcmVsYXRpdmUg
dG8gY3VycmVudCB2aWV3IHBvcnQgKHNjcm9sbGVkKS4KKyAqIEBwYXJhbSB3IHdpZHRoIG9mIGFy
ZWEgdG8gYmUgcmVwYWludGVkCisgKiBAcGFyYW0gaCBoZWlnaHQgb2YgYXJlYSB0byBiZSByZXBh
aW50ZWQKKyAqCisgKiBAbm90ZSB0aGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3Qg
Zm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CisgKiAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGJh
Y2tpbmcgc3RvcmUuCisgKi8KK3ZvaWQgZXdrX3ZpZXdfcmVwYWludF9hZGQoRXdrX1ZpZXdfUHJp
dmF0ZV9EYXRhKiBwcml2LCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3
LCBFdmFzX0Nvb3JkIGgpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4ocHJpdik7
CisgICAgX2V3a192aWV3X3JlcGFpbnRfYWRkKHByaXYsIHgsIHksIHcsIGgpOworfQorCisvKioK
KyAqIERvIGxheW91dCBpZiByZXF1aXJlZCwgYXBwbGllZCByZWN1cnNpdmVseS4KKyAqCisgKiBA
cGFyYW0gcHJpdiBwcml2YXRlIGhhbmRsZSBwb2ludGVyIG9mIHRoZSB2aWV3IHRvIGxheW91dC4K
KyAqCisgKiBAbm90ZSB0aGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1
YmNsYXNzZXMgdGhhdCB3YW50CisgKiAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcg
c3RvcmUuCisgKi8KK3ZvaWQgZXdrX3ZpZXdfbGF5b3V0X2lmX25lZWRlZF9yZWN1cnNpdmUoRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOKHByaXYpOworCisgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2ID0gcHJpdi0+bWFpbl9mcmFt
ZS0+dmlldygpOworICAgIGlmICghdikgeworICAgICAgICBFUlIoIm5vIG1haW4gZnJhbWUgdmll
dyIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHYtPmxheW91dElmTmVlZGVkUmVjdXJz
aXZlKCk7Cit9CisKK3ZvaWQgZXdrX3ZpZXdfc2Nyb2xsc19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHNkKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkKTsKKyAgICBF
V0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpOworICAgIGlmICghc2QtPmFwaS0+
c2Nyb2xsc19wcm9jZXNzKHNkKSkKKyAgICAgICAgRVJSKCJmYWlsZWQgdG8gcHJvY2VzcyBzY3Jv
bGxzLiIpOworICAgIF9ld2tfdmlld19zY3JvbGxzX2ZsdXNoKHByaXYpOworfQorCitzdHJ1Y3Qg
X0V3a19WaWV3X1BhaW50X0NvbnRleHQgeworICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCog
Z2M7CisgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3OworICAgIGNhaXJvX3QqIGNyOworfTsK
KworLyoqCisgKiBDcmVhdGUgYSBuZXcgcGFpbnQgY29udGV4dCB1c2luZyB0aGUgdmlldyBhcyBz
b3VyY2UgYW5kIGNhaXJvIGFzIG91dHB1dC4KKyAqCisgKiBAcGFyYW0gcHJpdiBwcml2YXRlIGhh
bmRsZSBwb2ludGVyIG9mIHRoZSB2aWV3IHRvIHVzZSBhcyBwYWludCBzb3VyY2UuCisgKiBAcGFy
YW0gY3IgY2Fpcm8gY29udGV4dCB0byB1c2UgYXMgcGFpbnQgZGVzdGluYXRpb24uIEEgbmV3Cisg
KiAgICAgICAgcmVmZXJlbmNlIGlzIHRha2VuLCBzbyBpdCdzIHNhZmUgdG8gY2FsbCBjYWlyb19k
ZXN0cm95KCkKKyAqICAgICAgICBhZnRlciB0aGlzIGZ1bmN0aW9uIHJldHVybnMuCisgKgorICog
QHJldHVybiBuZXdseSBhbGxvY2F0ZWQgaW5zdGFuY2Ugb3IgQGMgTlVMTCBvbiBlcnJvcnMuCisg
KgorICogQG5vdGUgdGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJj
bGFzc2VzIHRoYXQgd2FudAorICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNraW5nIHN0
b3JlLgorICovCitFd2tfVmlld19QYWludF9Db250ZXh0KiBld2tfdmlld19wYWludF9jb250ZXh0
X25ldyhFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIGNhaXJvX3QqIGNyKQoreworICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChwcml2LCAwKTsKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoY3IsIDApOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChwcml2LT5tYWluX2ZyYW1lLCAwKTsKKyAgICBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcg
PSBwcml2LT5tYWluX2ZyYW1lLT52aWV3KCk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHZpZXcsIDApOworICAgIEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGN0eHQgPSAoRXdr
X1ZpZXdfUGFpbnRfQ29udGV4dCopbWFsbG9jKHNpemVvZigqY3R4dCkpOworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChjdHh0LCAwKTsKKworICAgIGN0eHQtPmdjID0gbmV3IFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dChjcik7CisgICAgaWYgKCFjdHh0LT5nYykgeworICAgICAg
ICBmcmVlKGN0eHQpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgY3R4dC0+dmlldyA9
IHZpZXc7CisgICAgY3R4dC0+Y3IgPSBjYWlyb19yZWZlcmVuY2UoY3IpOworICAgIHJldHVybiBj
dHh0OworfQorCisvKioKKyAqIERlc3Ryb3kgcHJldmlvdXNseSBjcmVhdGVkIHBhaW50IGNvbnRl
eHQuCisgKgorICogQHBhcmFtIGN0eHQgcGFpbnQgY29udGV4dCB0byBkZXN0cm95LiBNdXN0IEBi
IG5vdCBiZSBAYyBOVUxMLgorICoKKyAqIEBub3RlIHRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVz
ZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKKyAqICAgICAgIHRvIGRlZmluZSB0
aGVpciBvd24gYmFja2luZyBzdG9yZS4KKyAqLwordm9pZCBld2tfdmlld19wYWludF9jb250ZXh0
X2ZyZWUoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogY3R4dCkKK3sKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTihjdHh0KTsKKyAgICBkZWxldGUgY3R4dC0+Z2M7CisgICAgY2Fpcm9fZGVz
dHJveShjdHh0LT5jcik7CisgICAgZnJlZShjdHh0KTsKK30KKworLyoqCisgKiBTYXZlIChwdXNo
IHRvIHN0YWNrKSBwYWludCBjb250ZXh0IHN0YXR1cy4KKyAqCisgKiBAcGFyYW0gY3R4dCBwYWlu
dCBjb250ZXh0IHRvIHNhdmUuIE11c3QgQGIgbm90IGJlIEBjIE5VTEwuCisgKgorICogQHNlZSBl
d2tfdmlld19wYWludF9jb250ZXh0X3Jlc3RvcmUoKQorICoKKyAqIEBub3RlIHRoaXMgaXMgbm90
IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKKyAqICAg
ICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KKyAqLwordm9pZCBld2tfdmll
d19wYWludF9jb250ZXh0X3NhdmUoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogY3R4dCkKK3sKKyAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjdHh0KTsKKyAgICBjYWlyb19zYXZlKGN0eHQt
PmNyKTsKKyAgICBjdHh0LT5nYy0+c2F2ZSgpOworfQorCisvKioKKyAqIFJlc3RvcmUgKHBvcCBm
cm9tIHN0YWNrKSBwYWludCBjb250ZXh0IHN0YXR1cy4KKyAqCisgKiBAcGFyYW0gY3R4dCBwYWlu
dCBjb250ZXh0IHRvIHJlc3RvcmUuIE11c3QgQGIgbm90IGJlIEBjIE5VTEwuCisgKgorICogQHNl
ZSBld2tfdmlld19wYWludF9jb250ZXh0X3NhdmUoKQorICoKKyAqIEBub3RlIHRoaXMgaXMgbm90
IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKKyAqICAg
ICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KKyAqLwordm9pZCBld2tfdmll
d19wYWludF9jb250ZXh0X3Jlc3RvcmUoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogY3R4dCkKK3sK
KyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjdHh0KTsKKyAgICBjdHh0LT5nYy0+cmVz
dG9yZSgpOworICAgIGNhaXJvX3Jlc3RvcmUoY3R4dC0+Y3IpOworfQorCisvKioKKyAqIENsaXAg
cGFpbnQgY29udGV4dCBkcmF3aW5ncyB0byBnaXZlbiBhcmVhLgorICoKKyAqIEBwYXJhbSBjdHh0
IHBhaW50IGNvbnRleHQgdG8gY2xpcC4gTXVzdCBAYiBub3QgYmUgQGMgTlVMTC4KKyAqIEBwYXJh
bSBhcmVhIGNsaXAgYXJlYSB0byB1c2UuCisgKgorICogQHNlZSBld2tfdmlld19wYWludF9jb250
ZXh0X3NhdmUoKQorICogQHNlZSBld2tfdmlld19wYWludF9jb250ZXh0X3Jlc3RvcmUoKQorICoK
KyAqIEBub3RlIHRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xh
c3NlcyB0aGF0IHdhbnQKKyAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9y
ZS4KKyAqLwordm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X2NsaXAoRXdrX1ZpZXdfUGFpbnRf
Q29udGV4dCogY3R4dCwgY29uc3QgRWluYV9SZWN0YW5nbGUqIGFyZWEpCit7CisgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk4oY3R4dCk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk4oYXJlYSk7CisgICAgY3R4dC0+Z2MtPmNsaXAoV2ViQ29yZTo6SW50UmVjdChhcmVhLT54LCBh
cmVhLT55LCBhcmVhLT53LCBhcmVhLT5oKSk7Cit9CisKKy8qKgorICogUGFpbnQgdXNpbmcgY29u
dGV4dCB1c2luZyBnaXZlbiBhcmVhLgorICoKKyAqIEBwYXJhbSBjdHh0IHBhaW50IGNvbnRleHQg
dG8gcGFpbnQuIE11c3QgQGIgbm90IGJlIEBjIE5VTEwuCisgKiBAcGFyYW0gYXJlYSBwYWludCBh
cmVhIHRvIHVzZS4gQ29vcmRpbmF0ZXMgYXJlIHJlbGF0aXZlIHRvIGN1cnJlbnQgdmlld3BvcnQs
CisgKiAgICAgICAgdGh1cyAic2Nyb2xsZWQiLgorICoKKyAqIEBub3RlIG9uZSBtYXkgdXNlIGNh
aXJvIGZ1bmN0aW9ucyBvbiB0aGUgY2Fpcm8gY29udGV4dCB0bworICogICAgICAgdHJhbnNsYXRl
LCBzY2FsZSBvciBhbnkgbW9kaWZpY2F0aW9uIHRoYXQgbWF5IGZpdCBoaXMgZGVzaXJlcy4KKyAq
CisgKiBAc2VlIGV3a192aWV3X3BhaW50X2NvbnRleHRfY2xpcCgpCisgKiBAc2VlIGV3a192aWV3
X3BhaW50X2NvbnRleHRfcGFpbnRfY29udGVudHMoKQorICoKKyAqIEBub3RlIHRoaXMgaXMgbm90
IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKKyAqICAg
ICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KKyAqLwordm9pZCBld2tfdmll
d19wYWludF9jb250ZXh0X3BhaW50KEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGN0eHQsIGNvbnN0
IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
KGN0eHQpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGFyZWEpOworCisgICAgV2Vi
Q29yZTo6SW50UmVjdCByZWN0KGFyZWEtPngsIGFyZWEtPnksIGFyZWEtPncsIGFyZWEtPmgpOwor
CisgICAgaWYgKGN0eHQtPnZpZXctPmlzVHJhbnNwYXJlbnQoKSkKKyAgICAgICAgY3R4dC0+Z2Mt
PmNsZWFyUmVjdChyZWN0KTsKKyAgICBjdHh0LT52aWV3LT5wYWludChjdHh0LT5nYywgcmVjdCk7
Cit9CisKKy8qKgorICogUGFpbnQganVzdCBjb250ZW50cyB1c2luZyBjb250ZXh0IHVzaW5nIGdp
dmVuIGFyZWEuCisgKgorICogVW5saWtlIGV3a192aWV3X3BhaW50X2NvbnRleHRfcGFpbnQoKSwg
dGhpcyBmdW5jdGlvbiBwYWludCBqdXN0CisgKiBiYXJlIGNvbnRlbnRzIGFuZCBpZ25vcmVzIGFu
eSBzY3JvbGxpbmcsIHNjcm9sbGJhcnMgYW5kIGV4dHJhcy4gSXQKKyAqIHdpbGwgd2FsayB0aGUg
cmVuZGVyaW5nIHRyZWUgYW5kIHBhaW50IGNvbnRlbnRzIGluc2lkZSB0aGUgZ2l2ZW4KKyAqIGFy
ZWEgdG8gdGhlIGNhaXJvIGNvbnRleHQgc3BlY2lmaWVkIGluIEBhIGN0eHQuCisgKgorICogQHBh
cmFtIGN0eHQgcGFpbnQgY29udGV4dCB0byBwYWludC4gTXVzdCBAYiBub3QgYmUgQGMgTlVMTC4K
KyAqIEBwYXJhbSBhcmVhIHBhaW50IGFyZWEgdG8gdXNlLiBDb29yZGluYXRlcyBhcmUgYWJzb2x1
dGUgdG8gcGFnZS4KKyAqCisgKiBAbm90ZSBvbmUgbWF5IHVzZSBjYWlybyBmdW5jdGlvbnMgb24g
dGhlIGNhaXJvIGNvbnRleHQgdG8KKyAqICAgICAgIHRyYW5zbGF0ZSwgc2NhbGUgb3IgYW55IG1v
ZGlmaWNhdGlvbiB0aGF0IG1heSBmaXQgaGlzIGRlc2lyZXMuCisgKgorICogQHNlZSBld2tfdmll
d19wYWludF9jb250ZXh0X2NsaXAoKQorICogQHNlZSBld2tfdmlld19wYWludF9jb250ZXh0X3Bh
aW50KCkKKyAqCisgKiBAbm90ZSB0aGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3Qg
Zm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CisgKiAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGJh
Y2tpbmcgc3RvcmUuCisgKi8KK3ZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9wYWludF9jb250
ZW50cyhFd2tfVmlld19QYWludF9Db250ZXh0KiBjdHh0LCBjb25zdCBFaW5hX1JlY3RhbmdsZSog
YXJlYSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjdHh0KTsKKyAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTihhcmVhKTsKKworICAgIFdlYkNvcmU6OkludFJlY3QgcmVj
dChhcmVhLT54LCBhcmVhLT55LCBhcmVhLT53LCBhcmVhLT5oKTsKKworICAgIGlmIChjdHh0LT52
aWV3LT5pc1RyYW5zcGFyZW50KCkpCisgICAgICAgIGN0eHQtPmdjLT5jbGVhclJlY3QocmVjdCk7
CisKKyAgICBjdHh0LT52aWV3LT5wYWludENvbnRlbnRzKGN0eHQtPmdjLCByZWN0KTsKK30KKwor
LyoqCisgKiBTY2FsZSB0aGUgY29udGVudHMgYnkgdGhlIGdpdmVuIGZhY3RvcnMuCisgKgorICog
VGhpcyBmdW5jdGlvbiBhcHBsaWVzIGEgc2NhbGluZyB0cmFuc2Zvcm1hdGlvbiB1c2luZyBDYWly
by4KKyAqCisgKiBAcGFyYW0gY3R4dCAgICBwYWludCBjb250ZXh0IHRvIHBhaW50LiBNdXN0IEBi
IG5vdCBiZSBAYyBOVUxMLgorICogQHBhcmFtIHNjYWxlX3ggc2NhbGUgZmFjdG9yIGZvciB0aGUg
WCBkaW1lbnNpb24uCisgKiBAcGFyYW0gc2NhbGVfeSBzY2FsZSBmYWN0b3IgZm9yIHRoZSBZIGRp
bWVuc2lvbi4KKyAqLwordm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3NjYWxlKEV3a19WaWV3
X1BhaW50X0NvbnRleHQqIGN0eHQsIGZsb2F0IHNjYWxlX3gsIGZsb2F0IHNjYWxlX3kpCit7Cisg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY3R4dCk7CisKKyAgICBjdHh0LT5nYy0+c2Nh
bGUoV2ViQ29yZTo6RmxvYXRTaXplKHNjYWxlX3gsIHNjYWxlX3kpKTsKK30KKworLyoqCisgKiBQ
ZXJmb3JtcyBhIHRyYW5zbGF0aW9uIG9mIHRoZSBvcmlnaW4gY29vcmRpbmF0ZXMuCisgKgorICog
VGhpcyBmdW5jdGlvbiBtb3ZlcyB0aGUgb3JpZ2luIGNvb3JkaW5hdGVzIGJ5IEBwIHggYW5kIEBw
IHkgcGl4ZWxzLgorICoKKyAqIEBwYXJhbSBjdHh0IHBhaW50IGNvbnRleHQgdG8gcGFpbnQuIE11
c3QgQGIgbm90IGJlIEBjIE5VTEwuCisgKiBAcGFyYW0geCAgICBhbW91bnQgb2YgcGl4ZWxzIHRv
IHRyYW5zbGF0ZSBpbiB0aGUgWCBkaW1lbnNpb24uCisgKiBAcGFyYW0geSAgICBhbW91bnQgb2Yg
cGl4ZWxzIHRvIHRyYW5zbGF0ZSBpbiB0aGUgWSBkaW1lbnNpb24uCisgKi8KK3ZvaWQgZXdrX3Zp
ZXdfcGFpbnRfY29udGV4dF90cmFuc2xhdGUoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogY3R4dCwg
ZmxvYXQgeCwgZmxvYXQgeSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjdHh0
KTsKKworICAgIGN0eHQtPmdjLT50cmFuc2xhdGUoeCwgeSk7Cit9CisKKy8qKgorICogUGFpbnQg
dXNpbmcgZ2l2ZW4gZ3JhcGhpY3MgY29udGV4dCB0aGUgZ2l2ZW4gYXJlYS4KKyAqCisgKiBUaGlz
IHVzZXMgdmlld3BvcnQgcmVsYXRpdmUgYXJlYSBhbmQgd2lsbCBhbHNvIGhhbmRsZSBzY3JvbGxi
YXJzCisgKiBhbmQgb3RoZXIgZXh0cmEgZWxlbWVudHMuIFNlZSBld2tfdmlld19wYWludF9jb250
ZW50cygpIGZvciB0aGUKKyAqIGFsdGVybmF0aXZlIGZ1bmN0aW9uLgorICoKKyAqIEBwYXJhbSBw
cml2IHByaXZhdGUgaGFuZGxlIHBvaW50ZXIgb2YgdmlldyB0byB1c2UgYXMgcGFpbnQgc291cmNl
LgorICogQHBhcmFtIGNyIGNhaXJvIGNvbnRleHQgdG8gdXNlIGFzIHBhaW50IGRlc3RpbmF0aW9u
LiBJdHMgc3RhdGUgd2lsbAorICogICAgICAgIGJlIHNhdmVkIGJlZm9yZSBvcGVyYXRpb24gYW5k
IHJlc3RvcmVkIGFmdGVyd2FyZHMuCisgKiBAcGFyYW0gYXJlYSB2aWV3cG9ydCByZWxhdGl2ZSBn
ZW9tZXRyeSB0byBwYWludC4KKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNz
IGFuZCBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUsIGxpa2UKKyAqICAgICAgICAgaW5jb3JyZWN0
IHBhcmFtZXRlcnMuCisgKgorICogQG5vdGUgdGhpcyBpcyBhbiBlYXN5IHRvIHVzZSB2ZXJzaW9u
LCBidXQgaW50ZXJuYWwgc3RydWN0dXJlcyBhcmUKKyAqICAgICAgIGFsd2F5cyBjcmVhdGVkLCB0
aGVuIGdyYXBoaWNzIGNvbnRleHQgaXMgY2xpcHBlZCwgdGhlbgorICogICAgICAgcGFpbnRlZCwg
cmVzdG9yZWQgYW5kIGRlc3Ryb3llZC4gVGhpcyBtaWdodCBub3QgYmUgb3B0aW11bSwKKyAqICAg
ICAgIHNvIHVzaW5nICNFd2tfVmlld19QYWludF9Db250ZXh0IG1heSBiZSBhIGJldHRlciBzb2x1
dGlvbnMKKyAqICAgICAgIGZvciBsYXJnZSBudW1iZXIgb2Ygb3BlcmF0aW9ucy4KKyAqCisgKiBA
c2VlIGV3a192aWV3X3BhaW50X2NvbnRlbnRzKCkKKyAqIEBzZWUgZXdrX3ZpZXdfcGFpbnRfY29u
dGV4dF9wYWludCgpCisgKgorICogQG5vdGUgdGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1
dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAorICogICAgICAgdG8gZGVmaW5lIHRoZWly
IG93biBiYWNraW5nIHN0b3JlLgorICovCitFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnQoRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBjYWlyb190KiBjciwgY29uc3QgRWluYV9SZWN0YW5nbGUq
IGFyZWEpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHByaXYsIEVJTkFf
RkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjciwgRUlOQV9GQUxT
RSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGFyZWEsIEVJTkFfRkFMU0Up
OworICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9IHByaXYtPm1haW5fZnJhbWUtPnZpZXco
KTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodmlldywgRUlOQV9GQUxTRSk7
CisKKyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQgZ2MoY3IpOworICAgIFdlYkNvcmU6Oklu
dFJlY3QgcmVjdChhcmVhLT54LCBhcmVhLT55LCBhcmVhLT53LCBhcmVhLT5oKTsKKworICAgIGNh
aXJvX3NhdmUoY3IpOworICAgIGdjLnNhdmUoKTsKKyAgICBnYy5jbGlwKHJlY3QpOworICAgIGlm
ICh2aWV3LT5pc1RyYW5zcGFyZW50KCkpCisgICAgICAgIGdjLmNsZWFyUmVjdChyZWN0KTsKKyAg
ICB2aWV3LT5wYWludCgmZ2MsICByZWN0KTsKKyAgICBnYy5yZXN0b3JlKCk7CisgICAgY2Fpcm9f
cmVzdG9yZShjcik7CisKKyAgICByZXR1cm4gRUlOQV9UUlVFOworfQorCisvKioKKyAqIFBhaW50
IGp1c3QgY29udGVudHMgdXNpbmcgZ2l2ZW4gZ3JhcGhpY3MgY29udGV4dCB0aGUgZ2l2ZW4gYXJl
YS4KKyAqCisgKiBUaGlzIHVzZXMgYWJzb2x1dGUgY29vcmRpbmF0ZXMgZm9yIGFyZWEgYW5kIHdp
bGwganVzdCBoYW5kbGUKKyAqIGNvbnRlbnRzLCBubyBzY3JvbGxiYXJzIG9yIGV4dHJhcy4gU2Vl
IGV3a192aWV3X3BhaW50KCkgZm9yIHRoZQorICogYWx0ZXJuYXRpdmUgc29sdXRpb24uCisgKgor
ICogQHBhcmFtIHByaXYgcHJpdmF0ZSBoYW5kbGUgcG9pbnRlciBvZiB2aWV3IHRvIHVzZSBhcyBw
YWludCBzb3VyY2UuCisgKiBAcGFyYW0gY3IgY2Fpcm8gY29udGV4dCB0byB1c2UgYXMgcGFpbnQg
ZGVzdGluYXRpb24uIEl0cyBzdGF0ZSB3aWxsCisgKiAgICAgICAgYmUgc2F2ZWQgYmVmb3JlIG9w
ZXJhdGlvbiBhbmQgcmVzdG9yZWQgYWZ0ZXJ3YXJkcy4KKyAqIEBwYXJhbSBhcmVhIGFic29sdXRl
IGdlb21ldHJ5IHRvIHBhaW50LgorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nl
c3MgYW5kIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZSwgbGlrZQorICogICAgICAgICBpbmNvcnJl
Y3QgcGFyYW1ldGVycy4KKyAqCisgKiBAbm90ZSB0aGlzIGlzIGFuIGVhc3kgdG8gdXNlIHZlcnNp
b24sIGJ1dCBpbnRlcm5hbCBzdHJ1Y3R1cmVzIGFyZQorICogICAgICAgYWx3YXlzIGNyZWF0ZWQs
IHRoZW4gZ3JhcGhpY3MgY29udGV4dCBpcyBjbGlwcGVkLCB0aGVuCisgKiAgICAgICBwYWludGVk
LCByZXN0b3JlZCBhbmQgZGVzdHJveWVkLiBUaGlzIG1pZ2h0IG5vdCBiZSBvcHRpbXVtLAorICog
ICAgICAgc28gdXNpbmcgI0V3a19WaWV3X1BhaW50X0NvbnRleHQgbWF5IGJlIGEgYmV0dGVyIHNv
bHV0aW9ucworICogICAgICAgZm9yIGxhcmdlIG51bWJlciBvZiBvcGVyYXRpb25zLgorICoKKyAq
IEBzZWUgZXdrX3ZpZXdfcGFpbnQoKQorICogQHNlZSBld2tfdmlld19wYWludF9jb250ZXh0X3Bh
aW50X2NvbnRlbnRzKCkKKyAqCisgKiBAbm90ZSB0aGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2Ug
YnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CisgKiAgICAgICB0byBkZWZpbmUgdGhl
aXIgb3duIGJhY2tpbmcgc3RvcmUuCisgKi8KK0VpbmFfQm9vbCBld2tfdmlld19wYWludF9jb250
ZW50cyhFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIGNhaXJvX3QqIGNyLCBjb25zdCBFaW5h
X1JlY3RhbmdsZSogYXJlYSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
cHJpdiwgRUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNy
LCBFSU5BX0ZBTFNFKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoYXJlYSwg
RUlOQV9GQUxTRSk7CisgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gcHJpdi0+bWFpbl9m
cmFtZS0+dmlldygpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh2aWV3LCBF
SU5BX0ZBTFNFKTsKKworICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCBnYyhjcik7CisgICAg
V2ViQ29yZTo6SW50UmVjdCByZWN0KGFyZWEtPngsIGFyZWEtPnksIGFyZWEtPncsIGFyZWEtPmgp
OworCisgICAgY2Fpcm9fc2F2ZShjcik7CisgICAgZ2Muc2F2ZSgpOworICAgIGdjLmNsaXAocmVj
dCk7CisgICAgaWYgKHZpZXctPmlzVHJhbnNwYXJlbnQoKSkKKyAgICAgICAgZ2MuY2xlYXJSZWN0
KHJlY3QpOworICAgIHZpZXctPnBhaW50Q29udGVudHMoJmdjLCAgcmVjdCk7CisgICAgZ2MucmVz
dG9yZSgpOworICAgIGNhaXJvX3Jlc3RvcmUoY3IpOworCisgICAgcmV0dXJuIEVJTkFfVFJVRTsK
K30KKworCisvKiBpbnRlcm5hbCBtZXRob2RzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKiovCisvKioKKyAqIEBpbnRlcm5hbAorICogUmVwb3J0cyB0
aGUgdmlldyBpcyByZWFkeSB0byBiZSBkaXNwbGF5ZWQgYXMgYWxsIGVsZW1lbnRzIGFyZSBhcmVh
ZHkuCisgKgorICogRW1pdHMgc2lnbmFsOiAicmVhZHkiIHdpdGggbm8gcGFyYW1ldGVycy4KKyAq
Lwordm9pZCBld2tfdmlld19yZWFkeShFdmFzX09iamVjdCogbykKK3sKKyAgICBEQkcoIm89JXAi
LCBvKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJyZWFkeSIsIDAp
OworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICogVGhlIHZpZXcgdGl0bGUgd2FzIGNoYW5nZWQg
YnkgdGhlIGZyYW1lIGxvYWRlci4KKyAqCisgKiBFbWl0cyBzaWduYWw6ICJ0aXRsZSxjaGFuZ2Vk
IiB3aXRoIHBvaW50ZXIgdG8gbmV3IHRpdGxlIHN0cmluZy4KKyAqLwordm9pZCBld2tfdmlld190
aXRsZV9zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHRpdGxlKQoreworICAgIERCRygi
bz0lcCwgdGl0bGU9JXMiLCBvLCB0aXRsZSA/IHRpdGxlIDogIihudWxsKSIpOworICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgInRpdGxlLGNoYW5nZWQiLCAodm9pZCopdGl0
bGUpOworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICogUmVwb3J0cyB0aGF0IG1haW4gZnJhbWUn
cyB1cmkgY2hhbmdlZC4KKyAqCisgKiBFbWl0cyBzaWduYWw6ICJ1cmksY2hhbmdlZCIgd2l0aCBw
b2ludGVyIHRvIHRoZSBuZXcgdXJpIHN0cmluZy4KKyAqLwordm9pZCBld2tfdmlld191cmlfY2hh
bmdlZChFdmFzX09iamVjdCogbykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkKTsKKyAgICBjb25zdCBjaGFyKiB1cmkgPSBld2tfZnJhbWVfdXJpX2dldChzZC0+bWFpbl9m
cmFtZSk7CisgICAgREJHKCJvPSVwLCB1cmk9JXMiLCBvLCB1cmkgPyB1cmkgOiAiKG51bGwpIik7
CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAidXJpLGNoYW5nZWQiLCAo
dm9pZCopdXJpKTsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIFJlcG9ydHMgdGhlIHZpZXcg
c3RhcnRlZCBsb2FkaW5nIHNvbWV0aGluZy4KKyAqCisgKiBFbWl0cyBzaWduYWw6ICJsb2FkLHN0
YXJ0ZWQiIHdpdGggbm8gcGFyYW1ldGVycy4KKyAqLwordm9pZCBld2tfdmlld19sb2FkX3N0YXJ0
ZWQoRXZhc19PYmplY3QqIG8pCit7CisgICAgREJHKCJvPSVwIiwgbyk7CisgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4o
c2QtPmFwaS0+Zmx1c2gpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywg
ImxvYWQsc3RhcnRlZCIsIDApOworfQorCit2b2lkIGV3a192aWV3X2ZyYW1lX21haW5fbG9hZF9z
dGFydGVkKEV2YXNfT2JqZWN0KiBvKQoreworICAgIERCRygibz0lcCIsIG8pOworICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOKHNkLT5hcGktPmZsdXNoKTsKKyAgICBzZC0+YXBpLT5mbHVzaChzZCk7Cit9CisKKy8qKgor
ICogQGludGVybmFsCisgKiBSZXBvcnRzIGxvYWQgZmluaXNoZWQsIG9wdGlvbmFsbHkgd2l0aCBl
cnJvciBpbmZvcm1hdGlvbi4KKyAqCisgKiBFbWl0cyBzaWduYWw6ICJsb2FkLGZpbmlzaGVkIiB3
aXRoIHBvaW50ZXIgdG8gI0V3a19GcmFtZV9Mb2FkX0Vycm9yCisgKiBpZiBhbnkgZXJyb3IsIG9y
IEBjIE5VTEwgaWYgc3VjY2Vzc2Z1bCBsb2FkLgorICoKKyAqIEBub3RlIHRoZXJlIHNob3VsZCBu
b3QgYmUgYW55IGVycm9yIHN0dWZmIGhlcmUsIGJ1dCB0cnlpbmcgdG8gYmUKKyAqICAgICAgIGNv
bXBhdGlibGUgd2l0aCBwcmV2aW91cyBXZWJLaXQuCisgKi8KK3ZvaWQgZXdrX3ZpZXdfbG9hZF9m
aW5pc2hlZChFdmFzX09iamVjdCogbywgY29uc3QgRXdrX0ZyYW1lX0xvYWRfRXJyb3IqIGVycm9y
KQoreworICAgIERCRygibz0lcCwgZXJyb3I9JXAiLCBvLCBlcnJvcik7CisgICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAibG9hZCxmaW5pc2hlZCIsICh2b2lkKillcnJvcik7
Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBSZXBvcnRzIGxvYWQgZmFpbGVkIHdpdGggZXJy
b3IgaW5mb3JtYXRpb24uCisgKgorICogRW1pdHMgc2lnbmFsOiAibG9hZCxlcnJvciIgd2l0aCBw
b2ludGVyIHRvIEV3a19GcmFtZV9Mb2FkX0Vycm9yLgorICovCit2b2lkIGV3a192aWV3X2xvYWRf
ZXJyb3IoRXZhc19PYmplY3QqIG8sIGNvbnN0IEV3a19GcmFtZV9Mb2FkX0Vycm9yKiBlcnJvcikK
K3sKKyAgICBEQkcoIm89JXAsIGVycm9yPSVwIiwgbywgZXJyb3IpOworICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgImxvYWQsZXJyb3IiLCAodm9pZCopZXJyb3IpOworfQor
CisvKioKKyAqIEBpbnRlcm5hbAorICogUmVwb3J0cyBsb2FkIHByb2dyZXNzIGNoYW5nZWQuCisg
KgorICogRW1pdHMgc2lnbmFsOiAibG9hZCxwcm9ncmVzcyIgd2l0aCBwb2ludGVyIHRvIGEgZG91
YmxlIGZyb20gMC4wIHRvIDEuMC4KKyAqLwordm9pZCBld2tfdmlld19sb2FkX3Byb2dyZXNzX2No
YW5nZWQoRXZhc19PYmplY3QqIG8pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KTsKKworICAg
IC8vIEV2YXNfQ29vcmQgdywgaDsKKyAgICBkb3VibGUgcHJvZ3Jlc3MgPSBwcml2LT5wYWdlLT5w
cm9ncmVzcygpLT5lc3RpbWF0ZWRQcm9ncmVzcygpOworCisgICAgREJHKCJvPSVwIChwPSUwLjNm
KSIsIG8sIHByb2dyZXNzKTsKKworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwo
bywgImxvYWQscHJvZ3Jlc3MiLCAmcHJvZ3Jlc3MpOworfQorCit2b2lkIGV3a192aWV3X3JlcGFp
bnQoRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3Jk
IHcsIEV2YXNfQ29vcmQgaCkKK3sKKyAgICBEQkcoIm89JXAsIHJlZ2lvbj0lZCwlZCArICVkeCVk
IiwgbywgeCwgeSwgdywgaCk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7
CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KTsKKworICAgIGlmICgh
cHJpdi0+bWFpbl9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCkpIHsKKyAgICAgICAgRVJSKCJubyBt
YWluIGZyYW1lIGNvbnRlbnQgcmVuZGVyZXIuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBfZXdrX3ZpZXdfcmVwYWludF9hZGQocHJpdiwgeCwgeSwgdywgaCk7CisgICAgX2V3a192
aWV3X3NtYXJ0X2NoYW5nZWQoc2QpOworfQorCit2b2lkIGV3a192aWV3X3Njcm9sbChFdmFzX09i
amVjdCogbywgRXZhc19Db29yZCBkeCwgRXZhc19Db29yZCBkeSwgRXZhc19Db29yZCBzeCwgRXZh
c19Db29yZCBzeSwgRXZhc19Db29yZCBzdywgRXZhc19Db29yZCBzaCwgRXZhc19Db29yZCBjeCwg
RXZhc19Db29yZCBjeSwgRXZhc19Db29yZCBjdywgRXZhc19Db29yZCBjaCkKK3sKKyAgICBEQkco
Im89JXAsIGRlbHRhOiAlZCwlZCwgc2Nyb2xsOiAlZCwlZCslZHglZCwgY2xpcDogJWQsJWQrJWR4
JWQiLAorICAgICAgICBvLCBkeCwgZHksIHN4LCBzeSwgc3csIHNoLCBjeCwgY3ksIGN3LCBjaCk7
CisKKyAgICBpZiAoKHN4ICE9IGN4KSB8fCAoc3kgIT0gY3kpIHx8IChzdyAhPSBjdykgfHwgKHNo
ICE9IGNoKSkKKyAgICAgICAgV1JOKCJzY3JvbGwgcmVnaW9uIGFuZCBjbGlwIGFyZSBkaWZmZXJl
bnQhICVkLCVkKyVkeCVkIGFuZCAlZCwlZCslZHglZCIsCisgICAgICAgICAgICBzeCwgc3ksIHN3
LCBzaCwgY3gsIGN5LCBjdywgY2gpOworCisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KTsKKyAgICBF
SU5BX1NBRkVUWV9PTl9UUlVFX1JFVFVSTighZHggJiYgIWR5KTsKKworICAgIF9ld2tfdmlld19z
Y3JvbGxfYWRkKHByaXYsIGR4LCBkeSwgc3gsIHN5LCBzdywgc2gpOworICAgIF9ld2tfdmlld19z
bWFydF9jaGFuZ2VkKHNkKTsKK30KKworV2ViQ29yZTo6UGFnZSogZXdrX3ZpZXdfY29yZV9wYWdl
X2dldChjb25zdCBFdmFzX09iamVjdCogbykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKG8sIHNkLCAwKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYs
IDApOworICAgIHJldHVybiBwcml2LT5wYWdlOworfQorCisvKioKKyAqIENyZWF0ZXMgYSBuZXcg
ZnJhbWUgZm9yIGdpdmVuIHVybCBhbmQgb3duZXIgZWxlbWVudC4KKyAqCisgKiBFbWl0cyAiZnJh
bWUsY3JlYXRlZCIgd2l0aCB0aGUgbmV3IGZyYW1lIG9iamVjdCBvbiBzdWNjZXNzLgorICovCitX
VEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGV3a192aWV3X2ZyYW1lX2NyZWF0ZShFdmFz
X09iamVjdCogbywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIG5h
bWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgcmVmZXJyZXIpCit7Cisg
ICAgREJHKCJvPSVwLCBmcmFtZT0lcCwgbmFtZT0lcywgb3duZXJFbGVtZW50PSVwLCB1cmw9JXMs
IHJlZmVycmVyPSVzIiwKKyAgICAgICAgbywgZnJhbWUsIG5hbWUudXRmOCgpLmRhdGEoKSwgb3du
ZXJFbGVtZW50LAorICAgICAgICB1cmwucHJldHR5VVJMKCkudXRmOCgpLmRhdGEoKSwgcmVmZXJy
ZXIudXRmOCgpLmRhdGEoKSk7CisKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
LCAwKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOworCisg
ICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNmID0gX2V3a192aWV3X2NvcmVfZnJhbWVf
bmV3CisgICAgICAgIChzZCwgcHJpdiwgb3duZXJFbGVtZW50KTsKKyAgICBpZiAoIWNmKSB7Cisg
ICAgICAgIEVSUigiQ291bGQgbm90IGNyZWF0ZSBjaGlsZCBjb3JlIGZyYW1lICclcyciLCBuYW1l
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoIWV3
a19mcmFtZV9jaGlsZF9hZGQoZnJhbWUsIGNmLCBuYW1lLCB1cmwsIHJlZmVycmVyKSkgeworICAg
ICAgICBFUlIoIkNvdWxkIG5vdCBjcmVhdGUgY2hpbGQgZnJhbWUgb2JqZWN0ICclcyciLCBuYW1l
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvLyBUaGUg
Y3JlYXRpb24gb2YgdGhlIGZyYW1lIG1heSBoYXZlIHJlbW92ZWQgaXRzZWxmIGFscmVhZHkuCisg
ICAgaWYgKCFjZi0+cGFnZSgpIHx8ICFjZi0+dHJlZSgpIHx8ICFjZi0+dHJlZSgpLT5wYXJlbnQo
KSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBzZC0+Y2hhbmdlZC5mcmFtZV9yZWN0ID0gRUlO
QV9UUlVFOworICAgIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKHNkKTsKKworICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgImZyYW1lLGNyZWF0ZWQiLCBmcmFtZSk7CisgICAg
cmV0dXJuIGNmLnJlbGVhc2UoKTsKK30KKworV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdl
dD4gZXdrX3ZpZXdfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogbywgRXZhc19PYmplY3QqIGZy
YW1lLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBXZWJDb3JlOjpIVE1MUGx1
Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6
OlZlY3RvcjxXZWJDb3JlOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxX
ZWJDb3JlOjpTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBtaW1l
VHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCit7CisgICAgREJHKCJvPSVwLCBmcmFtZT0lcCwgc2l6
ZT0lZHglZCwgZWxlbWVudD0lcCwgdXJsPSVzLCBtaW1lVHlwZT0lcyIsCisgICAgICAgIG8sIGZy
YW1lLCBwbHVnaW5TaXplLndpZHRoKCksIHBsdWdpblNpemUuaGVpZ2h0KCksIGVsZW1lbnQsCisg
ICAgICAgIHVybC5wcmV0dHlVUkwoKS51dGY4KCkuZGF0YSgpLCBtaW1lVHlwZS51dGY4KCkuZGF0
YSgpKTsKKworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOworICAgIHNk
LT5jaGFuZ2VkLmZyYW1lX3JlY3QgPSBFSU5BX1RSVUU7CisgICAgX2V3a192aWV3X3NtYXJ0X2No
YW5nZWQoc2QpOworCisgICAgcmV0dXJuIGV3a19mcmFtZV9wbHVnaW5fY3JlYXRlCisgICAgICAg
IChmcmFtZSwgcGx1Z2luU2l6ZSwgZWxlbWVudCwgdXJsLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVl
cywKKyAgICAgICAgIG1pbWVUeXBlLCBsb2FkTWFudWFsbHkpOworfQorCmRpZmYgLS1naXQgYS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oIGIvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODNhYjAxCi0tLSAvZGV2L251bGwKKysr
IGIvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaApAQCAtMCwwICsxLDM3NSBAQAorLyoKKyAgICBD
b3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworICAgIENv
cHlyaWdodCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIGV3
a192aWV3X2gKKyNkZWZpbmUgZXdrX3ZpZXdfaAorCisjaW5jbHVkZSA8Y2Fpcm8uaD4KKyNpbmNs
dWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8ZXdrX2hpc3RvcnkuaD4KKworI2lmZGVmIF9fY3BsdXNw
bHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKioKKyAqIEBicmllZiBXZWJLaXQgbWFpbiBz
bWFydCBvYmplY3QuCisgKgorICogVGhpcyBvYmplY3QgaXMgdGhlIGhpZ2ggbGV2ZWwgYWNjZXNz
IHRvIFdlYktpdC1FRkwgYnJvd3NlcgorICogY29tcG9uZW50LiBJdCBpcyByZXNwb25zaWJsZSBm
b3IgbWFuYWdpbmcgdGhlIG1haW4gZnJhbWUgYW5kIG90aGVyCisgKiBjcml0aWNhbCByZXNvdXJj
ZXMuCisgKgorICogRXZlcnkgZXdrX3ZpZXcgaGFzIGF0IGxlYXN0IG9uZSBmcmFtZSwgY2FsbGVk
ICJtYWluIGZyYW1lIiBhbmQKKyAqIHJldHJpZXZlZCB3aXRoIGV3a192aWV3X2ZyYW1lX21haW5f
Z2V0KCkuIERpcmVjdCBmcmFtZSBhY2Nlc3MgaXMKKyAqIG9mdGVuIGRpc2NvdXJhZ2VkLCBpdCBp
cyByZWNvbW1lbmRlZCB0byB1c2UgZXdrX3ZpZXcgZnVuY3Rpb25zCisgKiBpbnN0ZWFkLgorICoK
KyAqIFRoZSBmb2xsb3dpbmcgc2lnbmFscyAoc2VlIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2FkZCgpKSBhcmUgZW1pdHRlZDoKKyAqCisgKiAgLSAicmVhZHkiLCB2b2lkOiBwYWdlIGlzIGZ1
bGx5IGxvYWRlZC4KKyAqICAtICJ0aXRsZSxjaGFuZ2VkIiwgY29uc3QgY2hhcio6IHRpdGxlIG9m
IHRoZSBtYWluIGZyYW1lIGNoYW5nZWQuCisgKiAgLSAidXJpLGNoYW5nZWQiLCBjb25zdCBjaGFy
KjogdXJpIG9mIHRoZSBtYWluIGZyYW1lIGNoYW5nZWQuCisgKiAgLSAibG9hZCxzdGFydGVkIiwg
dm9pZDogZnJhbWUgc3RhcnRlZCBsb2FkaW5nLgorICogIC0gImxvYWQscHJvZ3Jlc3MiLCBkb3Vi
bGUqOiBsb2FkIHByb2dyZXNzIGNoYW5nZWQgKG92ZXJhbGwgdmFsdWUKKyAqICAgIGZyb20gMC4w
IHRvIDEuMCwgY29ubmVjdCB0byBpbmRpdmlkdWFsIGZyYW1lcyBmb3IgZmluZSBncmFpbmVkKS4K
KyAqICAtICJsb2FkLGZpbmlzaGVkIiwgY29uc3QgRXdrX0ZyYW1lX0xvYWRfRXJyb3IqOiByZXBv
cnRzIGxvYWQKKyAqICAgIGZpbmlzaGVkIGFuZCBhcyBhcmd1bWVudCBAYyBOVUxMIGlmIHN1Y2Nl
c3NmdWxseSBvciBwb2ludGVyIHRvCisgKiAgICBzdHJ1Y3R1cmUgZGVmaW5pbmcgdGhlIGVycm9y
LgorICogIC0gImxvYWQsZXJyb3IiLCBjb25zdCBFd2tfRnJhbWVfTG9hZF9FcnJvcio6IHJlcG9y
dHMgbG9hZCBmYWlsZWQKKyAqICAgIGFuZCBhcyBhcmd1bWVudCBhIHBvaW50ZXIgdG8gc3RydWN0
dXJlIGRlZmluaW5nIHRoZSBlcnJvci4KKyAqICAtICJmcmFtZSxjcmVhdGVkIiwgRXZhc19PYmpl
Y3QqOiB3aGVuIGZyYW1lcyBhcmUgY3JlYXRlZCwgdGhleSBhcmUKKyAqICAgIGVtaXR0ZWQgaW4g
dGhpcyBzaWduYWwuCisgKiAgLSAiem9vbSxhbmltYXRlZCxlbmQiLCB2b2lkOiByZXF1ZXN0ZWQg
YW5pbWF0ZWQgem9vbSBpcyBmaW5pc2hlZC4KKyAqLworCit0eXBlZGVmIHN0cnVjdCBfRXdrX1Zp
ZXdfU21hcnRfRGF0YSBFd2tfVmlld19TbWFydF9EYXRhOworCisvKioKKyAqIEV3ayB2aWV3J3Mg
Y2xhc3MsIHRvIGJlIG92ZXJyaWRkZW4gYnkgc3ViLWNsYXNzZXMuCisgKi8KK3R5cGVkZWYgc3Ry
dWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyBFd2tfVmlld19TbWFydF9DbGFzczsKK3N0cnVjdCBf
RXdrX1ZpZXdfU21hcnRfQ2xhc3MgeworICAgIEV2YXNfU21hcnRfQ2xhc3Mgc2M7IC8qKjwgYWxs
IGJ1dCAnZGF0YScgaXMgZnJlZSB0byBiZSBjaGFuZ2VkLiAqLworICAgIHVuc2lnbmVkIGxvbmcg
dmVyc2lvbjsKKyAgICAvLyBob29rcyB0byBhbGxvdyBkaWZmZXJlbnQgYmFja2luZyBzdG9yZXMK
KyAgICBFdmFzX09iamVjdCAqKCpiYWNraW5nX3N0b3JlX2FkZCkoRXdrX1ZpZXdfU21hcnRfRGF0
YSAqc2QpOyAvKio8IG11c3QgYmUgZGVmaW5lZCAqLworICAgIEVpbmFfQm9vbCAoKnNjcm9sbHNf
cHJvY2VzcykoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpOyAvKio8IG11c3QgYmUgZGVmaW5lZCAq
LworICAgIEVpbmFfQm9vbCAoKnJlcGFpbnRzX3Byb2Nlc3MpKEV3a19WaWV3X1NtYXJ0X0RhdGEg
KnNkKTsgLyoqPCBtdXN0IGJlIGRlZmluZWQgKi8KKyAgICBFaW5hX0Jvb2wgKCpjb250ZW50c19y
ZXNpemUpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBpbnQgdywgaW50IGgpOworICAgIEVpbmFf
Qm9vbCAoKnpvb21fc2V0KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgZmxvYXQgem9vbSwgRXZh
c19Db29yZCBjeCwgRXZhc19Db29yZCBjeSk7CisgICAgRWluYV9Cb29sICgqem9vbV93ZWFrX3Nl
dCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2
YXNfQ29vcmQgY3kpOworICAgIHZvaWQgKCp6b29tX3dlYWtfc21vb3RoX3NjYWxlX3NldCkoRXdr
X1ZpZXdfU21hcnRfRGF0YSAqc2QsIEVpbmFfQm9vbCBzbW9vdGhfc2NhbGUpOworICAgIHZvaWQg
KCpiZ19jb2xvcl9zZXQpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCB1bnNpZ25lZCBjaGFyIHIs
IHVuc2lnbmVkIGNoYXIgZywgdW5zaWduZWQgY2hhciBiLCB1bnNpZ25lZCBjaGFyIGEpOworICAg
IHZvaWQgKCpmbHVzaCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpOworICAgIEVpbmFfQm9vbCAo
KnByZV9yZW5kZXJfcmVnaW9uKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXZhc19Db29yZCB4
LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoLCBmbG9hdCB6b29tKTsK
KyAgICB2b2lkICgqcHJlX3JlbmRlcl9jYW5jZWwpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsK
KyAgICAvLyBldmVudCBoYW5kbGluZzoKKyAgICAvLyAgLSByZXR1cm5zIHRydWUgaWYgaGFuZGxl
ZAorICAgIC8vICAtIGlmIG92ZXJyaWRkZW4sIGhhdmUgdG8gY2FsbCBwYXJlbnQgbWV0aG9kIGlm
IGRlc2lyZWQKKyAgICBFaW5hX0Jvb2wgKCpmb2N1c19pbikoRXdrX1ZpZXdfU21hcnRfRGF0YSAq
c2QpOworICAgIEVpbmFfQm9vbCAoKmZvY3VzX291dCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2Qp
OworICAgIEVpbmFfQm9vbCAoKm1vdXNlX3doZWVsKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwg
Y29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCAqZXYpOworICAgIEVpbmFfQm9vbCAoKm1vdXNl
X2Rvd24pKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rv
d24gKmV2KTsKKyAgICBFaW5hX0Jvb2wgKCptb3VzZV91cCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAq
c2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfVXAgKmV2KTsKKyAgICBFaW5hX0Jvb2wgKCptb3Vz
ZV9tb3ZlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9N
b3ZlICpldik7CisgICAgRWluYV9Cb29sICgqa2V5X2Rvd24pKEV3a19WaWV3X1NtYXJ0X0RhdGEg
KnNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3duICpldik7CisgICAgRWluYV9Cb29sICgqa2V5
X3VwKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9LZXlfVXAgKmV2
KTsKKworfTsKKworI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OIDFVTCAvKiog
dGhlIHZlcnNpb24geW91IGhhdmUgdG8gcHV0IGludG8gdGhlIHZlcnNpb24gZmllbGQgaW4gdGhl
IEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZSAqLworCisvKioKKyAqIEluaXRpYWxpemVy
IGZvciB3aG9sZSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUuCisgKgorICogQHBhcmFt
IHNtYXJ0X2NsYXNzX2luaXQgaW5pdGlhbGl6ZXIgdG8gdXNlIGZvciB0aGUgImJhc2UiIGZpZWxk
CisgKiAoRXZhc19TbWFydF9DbGFzcykuCisgKgorICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFT
U19JTklUX05VTEwKKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9OCisg
KiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OCisgKi8KKyNkZWZp
bmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21hcnRfY2xh
c3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KKworLyoqCisgKiBJbml0aWFs
aXplciB0byB6ZXJvIGEgd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgorICoK
KyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9OCisgKiBAc2VlIEVXS19W
SUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OCisgKiBAc2VlIEVXS19WSUVXX1NNQVJU
X0NMQVNTX0lOSVQKKyAqLworI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05VTEwg
RVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChFVkFTX1NNQVJUX0NMQVNTX0lOSVRfTlVMTCkKKwor
LyoqCisgKiBJbml0aWFsaXplciB0byB6ZXJvIGEgd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mg
c3RydWN0dXJlIGFuZCBzZXQgdmVyc2lvbi4KKyAqCisgKiBTaW1pbGFyIHRvIEVXS19WSUVXX1NN
QVJUX0NMQVNTX0lOSVRfTlVMTCwgYnV0IHdpbGwgc2V0IHZlcnNpb24gZmllbGQgb2YKKyAqIEV2
YXNfU21hcnRfQ2xhc3MgKGJhc2UgZmllbGQpIHRvIGxhdGVzdCBFVkFTX1NNQVJUX0NMQVNTX1ZF
UlNJT04KKyAqCisgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTlVMTAorICogQHNl
ZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTgorICogQHNlZSBFV0tfVklF
V19TTUFSVF9DTEFTU19JTklUCisgKi8KKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5J
VF9WRVJTSU9OIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoRVZBU19TTUFSVF9DTEFTU19JTklU
X1ZFUlNJT04pCisKKy8qKgorICogSW5pdGlhbGl6ZXIgdG8gemVybyBhIHdob2xlIEV3a19WaWV3
X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZSBhbmQgc2V0CisgKiBuYW1lIGFuZCB2ZXJzaW9uLgorICoK
KyAqIFNpbWlsYXIgdG8gRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OVUxMLCBidXQgd2lsbCBz
ZXQgdmVyc2lvbiBmaWVsZCBvZgorICogRXZhc19TbWFydF9DbGFzcyAoYmFzZSBmaWVsZCkgdG8g
bGF0ZXN0IEVWQVNfU01BUlRfQ0xBU1NfVkVSU0lPTiBhbmQgbmFtZQorICogdG8gdGhlIHNwZWNp
ZmljIHZhbHVlLgorICoKKyAqIEl0IHdpbGwga2VlcCBhIHJlZmVyZW5jZSB0byBuYW1lIGZpZWxk
IGFzIGEgImNvbnN0IGNoYXIgKiIsIHRoYXQgaXMsCisgKiBuYW1lIG11c3QgYmUgYXZhaWxhYmxl
IHdoaWxlIHRoZSBzdHJ1Y3R1cmUgaXMgdXNlZCAoaGludDogc3RhdGljIG9yIGdsb2JhbCEpCisg
KiBhbmQgd2lsbCBub3QgYmUgbW9kaWZpZWQuCisgKgorICogQHNlZSBFV0tfVklFV19TTUFSVF9D
TEFTU19JTklUX05VTEwKKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9O
CisgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQKKyAqLworI2RlZmluZSBFV0tfVklF
V19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTihuYW1lKSBFV0tfVklFV19TTUFSVF9DTEFT
U19JTklUKEVWQVNfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04obmFtZSkpCisKKy8qKgor
ICogQGludGVybmFsCisgKgorICogcHJpdmF0ZSBkYXRhIHRoYXQgaXMgdXNlZCBpbnRlcm5hbGx5
IGJ5IEVGTCBXZWJLaXQgYW5kIHNob3VsZCBuZXZlcgorICogYmUgbW9kaWZpZWQgZnJvbSBvdXRz
aWRlLgorICovCit0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIEV3a19WaWV3
X1ByaXZhdGVfRGF0YTsKKworLyoqCisgKiBTY3JvbGwgcmVxdWVzdCB0aGF0IHNob3VsZCBiZSBw
cm9jZXNzZWQgYnkgc3ViY2xhc3MgaW1wbGVtZW50YXRpb25zLgorICovCit0eXBlZGVmIHN0cnVj
dCBfRXdrX1Njcm9sbF9SZXF1ZXN0IEV3a19TY3JvbGxfUmVxdWVzdDsKK3N0cnVjdCBfRXdrX1Nj
cm9sbF9SZXF1ZXN0IHsKKyAgICBFdmFzX0Nvb3JkIGR4LCBkeTsKKyAgICBFdmFzX0Nvb3JkIHgs
IHksIHcsIGgsIHgyLCB5MjsKK307CisKKy8qKgorICogU3RydWN0dXJlIHRvIGNvbnRhaW4gaW50
ZXJuYWwgVmlldyBkYXRhLCBpdCBpcyB0byBiZSBjb25zaWRlcmVkCisgKiBwcml2YXRlIGJ5IHVz
ZXJzLCBidXQgbWF5IGJlIGV4dGVuZGVkIG9yIGNoYW5nZWQgYnkgc3ViLWNsYXNzZXMKKyAqICh0
aGF0J3Mgd2h5IGl0J3MgaW4gcHVibGljIGhlYWRlciBmaWxlKS4KKyAqLworc3RydWN0IF9Fd2tf
Vmlld19TbWFydF9EYXRhIHsKKyAgICBFdmFzX09iamVjdF9TbWFydF9DbGlwcGVkX0RhdGEgYmFz
ZTsKKyAgICBjb25zdCBFd2tfVmlld19TbWFydF9DbGFzcyAqYXBpOyAvKio8IHJlZmVyZW5jZSB0
byBjYXN0ZWQgY2xhc3MgaW5zdGFuY2UgKi8KKyAgICBFdmFzX09iamVjdCAqc2VsZjsgLyoqPCBy
ZWZlcmVuY2UgdG8gb3duZXIgb2JqZWN0ICovCisgICAgRXZhc19PYmplY3QgKm1haW5fZnJhbWU7
IC8qKjwgcmVmZXJlbmNlIHRvIG1haW4gZnJhbWUgb2JqZWN0ICovCisgICAgRXZhc19PYmplY3Qg
KmJhY2tpbmdfc3RvcmU7IC8qKjwgcmVmZXJlbmNlIHRvIGJhY2tpbmcgc3RvcmUgKi8KKyAgICBF
d2tfVmlld19Qcml2YXRlX0RhdGEgKl9wcml2OyAvKio8IHNob3VsZCBuZXZlciBiZSBhY2Nlc3Nl
ZCwgYysrIHN0dWZmICovCisgICAgc3RydWN0IHsKKyAgICAgICAgRXZhc19Db29yZCB4LCB5LCB3
LCBoOyAvKio8IGxhc3QgdXNlZCB2aWV3cG9ydCAqLworICAgIH0gdmlldzsKKyAgICBzdHJ1Y3Qg
eworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgZmxvYXQgc3RhcnQ7CisgICAgICAgICAg
ICBmbG9hdCBlbmQ7CisgICAgICAgICAgICBmbG9hdCBjdXJyZW50OyAvKio8IGlmID4gMC4wLCB0
aGVuIGRvaW5nIGFuaW1hdGVkIHpvb20uICovCisgICAgICAgIH0gem9vbTsKKyAgICB9IGFuaW1h
dGVkX3pvb207CisgICAgc3RydWN0IHsKKyAgICAgICAgdW5zaWduZWQgY2hhciByLCBnLCBiLCBh
OworICAgIH0gYmdfY29sb3I7CisgICAgRWluYV9Cb29sIHpvb21fd2Vha19zbW9vdGhfc2NhbGU6
MTsKKyAgICBzdHJ1Y3QgeyAvKio8IHdoYXQgY2hhbmdlZCBzaW5jZSBsYXN0IHNtYXJ0X2NhbGN1
bGF0ZSAqLworICAgICAgICBFaW5hX0Jvb2wgYW55OjE7CisgICAgICAgIEVpbmFfQm9vbCBzaXpl
OjE7CisgICAgICAgIEVpbmFfQm9vbCBwb3NpdGlvbjoxOworICAgICAgICBFaW5hX0Jvb2wgZnJh
bWVfcmVjdDoxOworICAgIH0gY2hhbmdlZDsKK307CisKK0VBUEkgRWluYV9Cb29sICAgIGV3a192
aWV3X2Jhc2Vfc21hcnRfc2V0KEV3a19WaWV3X1NtYXJ0X0NsYXNzICphcGkpOworRUFQSSBFaW5h
X0Jvb2wgICAgZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3NldChFd2tfVmlld19TbWFydF9DbGFzcyAq
YXBpKTsKKworRUFQSSBFdmFzX09iamVjdCAqZXdrX3ZpZXdfc2luZ2xlX2FkZChFdmFzICplKTsK
KworRUFQSSB2b2lkICAgICAgICAgZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfc2V0KEV2YXNf
T2JqZWN0ICpvLCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCk7CitFQVBJIHZvaWQgICAgICAg
ICBld2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9nZXQoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29v
cmQgKncsIEV2YXNfQ29vcmQgKmgpOworCitFQVBJIHZvaWQgICAgICAgICBld2tfdmlld190aGVt
ZV9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnBhdGgpOworRUFQSSBjb25zdCBjaGFy
ICAqZXdrX3ZpZXdfdGhlbWVfZ2V0KEV2YXNfT2JqZWN0ICpvKTsKKworRUFQSSBFdmFzX09iamVj
dCAqZXdrX3ZpZXdfZnJhbWVfbWFpbl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOworRUFQSSBF
dmFzX09iamVjdCAqZXdrX3ZpZXdfZnJhbWVfZm9jdXNlZF9nZXQoY29uc3QgRXZhc19PYmplY3Qg
Km8pOworCitFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld191cmlfc2V0KEV2YXNfT2JqZWN0ICpv
LCBjb25zdCBjaGFyICp1cmkpOworRUFQSSBjb25zdCBjaGFyICAqZXdrX3ZpZXdfdXJpX2dldChj
b25zdCBFdmFzX09iamVjdCAqbyk7CitFQVBJIGNvbnN0IGNoYXIgICpld2tfdmlld190aXRsZV9n
ZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOworCitFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19l
ZGl0YWJsZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOworRUFQSSBFaW5hX0Jvb2wgICAgZXdr
X3ZpZXdfZWRpdGFibGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZWRpdGFibGUpOwor
CitFQVBJIHZvaWQgICAgICAgICBld2tfdmlld19iZ19jb2xvcl9zZXQoRXZhc19PYmplY3QgKm8s
IGludCByLCBpbnQgZywgaW50IGIsIGludCBhKTsKK0VBUEkgdm9pZCAgICAgICAgIGV3a192aWV3
X2JnX2NvbG9yX2dldChjb25zdCBFdmFzX09iamVjdCAqbywgaW50ICpyLCBpbnQgKmcsIGludCAq
YiwgaW50ICphKTsKKworRUFQSSBjaGFyICAgICAgICAqZXdrX3ZpZXdfc2VsZWN0aW9uX2dldChj
b25zdCBFdmFzX09iamVjdCAqbyk7CitFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZWxlY3Rf
bm9uZShFdmFzX09iamVjdCAqbyk7CitFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZWxlY3Rf
YWxsKEV2YXNfT2JqZWN0ICpvKTsKK0VBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NlbGVjdF9w
YXJhZ3JhcGgoRXZhc19PYmplY3QgKm8pOworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2Vs
ZWN0X3NlbnRlbmNlKEV2YXNfT2JqZWN0ICpvKTsKK0VBUEkgRWluYV9Cb29sICAgIGV3a192aWV3
X3NlbGVjdF9saW5lKEV2YXNfT2JqZWN0ICpvKTsKK0VBUEkgRWluYV9Cb29sICAgIGV3a192aWV3
X3NlbGVjdF93b3JkKEV2YXNfT2JqZWN0ICpvKTsKKworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3Zp
ZXdfdGV4dF9zZWFyY2goY29uc3QgRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnN0cmluZywg
RWluYV9Cb29sIGNhc2Vfc2Vuc2l0aXZlLCBFaW5hX0Jvb2wgZm9yd2FyZCwgRWluYV9Cb29sIHdy
YXApOworCitFQVBJIHVuc2lnbmVkIGludCBld2tfdmlld190ZXh0X21hdGNoZXNfbWFyayhFdmFz
X09iamVjdCAqbywgY29uc3QgY2hhciAqc3RyaW5nLCBFaW5hX0Jvb2wgY2FzZV9zZW5zaXRpdmUs
IEVpbmFfQm9vbCBoaWdobGlnaHQsIHVuc2lnbmVkIGludCBsaW1pdCk7CitFQVBJIEVpbmFfQm9v
bCAgICBld2tfdmlld190ZXh0X21hdGNoZXNfdW5tYXJrX2FsbChFdmFzX09iamVjdCAqbyk7CitF
QVBJIEVpbmFfQm9vbCAgICBld2tfdmlld190ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X3NldChFdmFz
X09iamVjdCAqbywgRWluYV9Cb29sIGhpZ2hsaWdodCk7CitFQVBJIEVpbmFfQm9vbCAgICBld2tf
dmlld190ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CisK
K0VBUEkgZG91YmxlICAgICAgIGV3a192aWV3X2xvYWRfcHJvZ3Jlc3NfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0ICpvKTsKKworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc3RvcChFdmFzX09iamVj
dCAqbyk7CitFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19yZWxvYWQoRXZhc19PYmplY3QgKm8p
OworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfcmVsb2FkX2Z1bGwoRXZhc19PYmplY3QgKm8p
OworCitFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19iYWNrKEV2YXNfT2JqZWN0ICpvKTsKK0VB
UEkgRWluYV9Cb29sICAgIGV3a192aWV3X2ZvcndhcmQoRXZhc19PYmplY3QgKm8pOworRUFQSSBF
aW5hX0Jvb2wgICAgZXdrX3ZpZXdfbmF2aWdhdGUoRXZhc19PYmplY3QgKm8sIGludCBzdGVwcyk7
CisKK0VBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X2JhY2tfcG9zc2libGUoRXZhc19PYmplY3Qg
Km8pOworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfZm9yd2FyZF9wb3NzaWJsZShFdmFzX09i
amVjdCAqbyk7CitFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19uYXZpZ2F0ZV9wb3NzaWJsZShF
dmFzX09iamVjdCAqbywgaW50IHN0ZXBzKTsKKworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdf
aGlzdG9yeV9lbmFibGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKK0VBUEkgRWluYV9Cb29s
ICAgIGV3a192aWV3X2hpc3RvcnlfZW5hYmxlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29s
IGVuYWJsZSk7CitFQVBJIEV3a19IaXN0b3J5ICpld2tfdmlld19oaXN0b3J5X2dldChjb25zdCBF
dmFzX09iamVjdCAqbyk7CisKK0VBUEkgZmxvYXQgICAgICAgIGV3a192aWV3X3pvb21fZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0ICpvKTsKK0VBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3pvb21fc2V0
KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5
KTsKKworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9n
ZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOworRUFQSSB2b2lkICAgICAgICAgZXdrX3ZpZXdfem9v
bV93ZWFrX3Ntb290aF9zY2FsZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBzbW9vdGhf
c2NhbGUpOworCitFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld196b29tX3dlYWtfc2V0KEV2YXNf
T2JqZWN0ICpvLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KTsKK0VB
UEkgRWluYV9Cb29sICAgIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19zdGFydChFdmFzX09i
amVjdCAqbywgZmxvYXQgem9vbSk7CitFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld196b29tX2Fu
aW1hdGVkX21hcmtfZW5kKEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB6b29tKTsKK0VBUEkgRWluYV9C
b29sICAgIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19jdXJyZW50KEV2YXNfT2JqZWN0ICpv
LCBmbG9hdCB6b29tKTsKK0VBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3pvb21fYW5pbWF0ZWRf
bWFya19zdG9wKEV2YXNfT2JqZWN0ICpvKTsKKworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdf
em9vbV9hbmltYXRlZF9zZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHpvb20sIGZsb2F0IGR1cmF0
aW9uLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KTsKK0VBUEkgRWluYV9Cb29sICAgIGV3
a192aWV3X3pvb21fdGV4dF9vbmx5X2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CitFQVBJIEVp
bmFfQm9vbCAgICBld2tfdmlld196b29tX3RleHRfb25seV9zZXQoRXZhc19PYmplY3QgKm8sIEVp
bmFfQm9vbCBzZXR0aW5nKTsKKworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfcHJlX3JlbmRl
cl9yZWdpb24oRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFz
X0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCwgZmxvYXQgem9vbSk7CitFQVBJIHZvaWQgICAgICAgICBl
d2tfdmlld19wcmVfcmVuZGVyX2NhbmNlbChFdmFzX09iamVjdCAqbyk7CisKKy8qIHNldHRpbmdz
ICovCitFQVBJIGNvbnN0IGNoYXIgICpld2tfdmlld19zZXR0aW5nX3VzZXJfYWdlbnRfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0ICpvKTsKK0VBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdf
dXNlcl9hZ2VudF9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnVzZXJfYWdlbnQpOwor
CitFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX2F1dG9fbG9hZF9pbWFnZXNfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKK0VBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRp
bmdfYXV0b19sb2FkX2ltYWdlc19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBhdXRvbWF0
aWMpOworCitFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX2F1dG9fc2hyaW5rX2lt
YWdlc19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3Zp
ZXdfc2V0dGluZ19hdXRvX3Nocmlua19pbWFnZXNfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jv
b2wgYXV0b21hdGljKTsKKworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19lbmFi
bGVfc2NyaXB0c19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOworRUFQSSBFaW5hX0Jvb2wgICAg
ZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfc2NyaXB0c19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFf
Qm9vbCBlbmFibGUpOworCitFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX2VuYWJs
ZV9wbHVnaW5zX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CitFQVBJIEVpbmFfQm9vbCAgICBl
d2tfdmlld19zZXR0aW5nX2VuYWJsZV9wbHVnaW5zX3NldChFdmFzX09iamVjdCAqbywgRWluYV9C
b29sIGVuYWJsZSk7CisKK0VBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfc2NyaXB0
c193aW5kb3dfb3Blbl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOworRUFQSSBFaW5hX0Jvb2wg
ICAgZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX3dpbmRvd19vcGVuX3NldChFdmFzX09iamVjdCAq
bywgRWluYV9Cb29sIGFsbG93KTsKKworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGlu
Z19yZXNpemFibGVfdGV4dGFyZWFzX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CitFQVBJIEVp
bmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX3Jlc2l6YWJsZV90ZXh0YXJlYXNfc2V0KEV2YXNf
T2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKTsKKworRUFQSSBjb25zdCBjaGFyICAqZXdrX3Zp
ZXdfc2V0dGluZ191c2VyX3N0eWxlc2hlZXRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKK0VB
UEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfdXNlcl9zdHlsZXNoZWV0X3NldChFdmFz
X09iamVjdCAqbywgY29uc3QgY2hhciAqdXJpKTsKKworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3Zp
ZXdfc2V0dGluZ19wcml2YXRlX2Jyb3dzaW5nX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CitF
QVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX3ByaXZhdGVfYnJvd3Npbmdfc2V0KEV2
YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKTsKKworRUFQSSBFaW5hX0Jvb2wgICAgZXdr
X3ZpZXdfc2V0dGluZ19jYXJldF9icm93c2luZ19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwor
RUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19jYXJldF9icm93c2luZ19zZXQoRXZh
c19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpOworCitFQVBJIGNvbnN0IGNoYXIgICpld2tf
dmlld19zZXR0aW5nX2VuY29kaW5nX2RlZmF1bHRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsK
K0VBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfZGVmYXVsdF9zZXQo
RXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmVuY29kaW5nKTsKKworRUFQSSBpbnQgICAgICAg
ICAgZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmltdW1fc2l6ZV9nZXQoY29uc3QgRXZhc19PYmpl
Y3QgKm8pOworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmltdW1f
c2l6ZV9zZXQoRXZhc19PYmplY3QgKm8sIGludCBzaXplKTsKK0VBUEkgaW50ICAgICAgICAgIGV3
a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX2xvZ2ljYWxfc2l6ZV9nZXQoY29uc3QgRXZhc19P
YmplY3QgKm8pOworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmlt
dW1fbG9naWNhbF9zaXplX3NldChFdmFzX09iamVjdCAqbywgaW50IHNpemUpOworRUFQSSBpbnQg
ICAgICAgICAgZXdrX3ZpZXdfc2V0dGluZ19mb250X2RlZmF1bHRfc2l6ZV9nZXQoY29uc3QgRXZh
c19PYmplY3QgKm8pOworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19mb250X2Rl
ZmF1bHRfc2l6ZV9zZXQoRXZhc19PYmplY3QgKm8sIGludCBzaXplKTsKK0VBUEkgaW50ICAgICAg
ICAgIGV3a192aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2Vfc2l6ZV9nZXQoY29uc3QgRXZhc19P
YmplY3QgKm8pOworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19mb250X21vbm9z
cGFjZV9zaXplX3NldChFdmFzX09iamVjdCAqbywgaW50IHNpemUpOworCitFQVBJIGNvbnN0IGNo
YXIgICpld2tfdmlld19zZXR0aW5nX2ZvbnRfc3RhbmRhcmRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
ICpvKTsKK0VBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZm9udF9zdGFuZGFyZF9z
ZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmZhbWlseSk7CisKK0VBUEkgY29uc3QgY2hh
ciAgKmV3a192aWV3X3NldHRpbmdfZm9udF9jdXJzaXZlX2dldChjb25zdCBFdmFzX09iamVjdCAq
byk7CitFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX2ZvbnRfY3Vyc2l2ZV9zZXQo
RXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmZhbWlseSk7CisKK0VBUEkgY29uc3QgY2hhciAg
KmV3a192aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2VfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpv
KTsKK0VBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2Vfc2V0
KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpmYW1pbHkpOworCitFQVBJIGNvbnN0IGNoYXIg
ICpld2tfdmlld19zZXR0aW5nX2ZvbnRfZmFudGFzeV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8p
OworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19mb250X2ZhbnRhc3lfc2V0KEV2
YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpmYW1pbHkpOworCitFQVBJIGNvbnN0IGNoYXIgICpl
d2tfdmlld19zZXR0aW5nX2ZvbnRfc2VyaWZfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKK0VB
UEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZm9udF9zZXJpZl9zZXQoRXZhc19PYmpl
Y3QgKm8sIGNvbnN0IGNoYXIgKmZhbWlseSk7CisKK0VBUEkgY29uc3QgY2hhciAgKmV3a192aWV3
X3NldHRpbmdfZm9udF9zYW5zX3NlcmlmX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CitFQVBJ
IEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX2ZvbnRfc2Fuc19zZXJpZl9zZXQoRXZhc19P
YmplY3QgKm8sIGNvbnN0IGNoYXIgKmZhbWlseSk7CisKKy8qIHRvIGJlIHVzZWQgYnkgc3ViY2xh
c3MgaW1wbGVtZW50YXRpb25zICovCitFQVBJIEV3a19WaWV3X1NtYXJ0X0RhdGEgKmV3a192aWV3
X3NtYXJ0X2RhdGFfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKKworRUFQSSBjb25zdCBFaW5h
X1JlY3RhbmdsZSAqZXdrX3ZpZXdfcmVwYWludHNfZ2V0KGNvbnN0IEV3a19WaWV3X1ByaXZhdGVf
RGF0YSAqcHJpdiwgc2l6ZV90ICpjb3VudCk7CitFQVBJIGNvbnN0IEV3a19TY3JvbGxfUmVxdWVz
dCAqZXdrX3ZpZXdfc2Nyb2xsX3JlcXVlc3RzX2dldChjb25zdCBFd2tfVmlld19Qcml2YXRlX0Rh
dGEgKnByaXYsIHNpemVfdCAqY291bnQpOworCitFQVBJIHZvaWQgZXdrX3ZpZXdfcmVwYWludF9h
ZGQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQg
eSwgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpOworCitFQVBJIHZvaWQgZXdrX3ZpZXdfbGF5
b3V0X2lmX25lZWRlZF9yZWN1cnNpdmUoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2KTsKKwor
RUFQSSB2b2lkIGV3a192aWV3X3Njcm9sbHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhICpz
ZCk7CisKKy8qKgorICogU3RydWN0dXJlIHRoYXQga2VlcHMgcGFpbnQgY29udGV4dC4KKyAqCisg
KiBAbm90ZSB0aGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNz
ZXMgdGhhdCB3YW50CisgKiAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUu
CisgKi8KK3R5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19QYWludF9Db250ZXh0IEV3a19WaWV3X1Bh
aW50X0NvbnRleHQ7CisKK0VBUEkgRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqZXdrX3ZpZXdfcGFp
bnRfY29udGV4dF9uZXcoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBjYWlyb190ICpjcik7
CitFQVBJIHZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9mcmVlKEV3a19WaWV3X1BhaW50X0Nv
bnRleHQgKmN0eHQpOworCitFQVBJIHZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9zYXZlKEV3
a19WaWV3X1BhaW50X0NvbnRleHQgKmN0eHQpOworRUFQSSB2b2lkIGV3a192aWV3X3BhaW50X2Nv
bnRleHRfcmVzdG9yZShFd2tfVmlld19QYWludF9Db250ZXh0ICpjdHh0KTsKK0VBUEkgdm9pZCBl
d2tfdmlld19wYWludF9jb250ZXh0X2NsaXAoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqY3R4dCwg
Y29uc3QgRWluYV9SZWN0YW5nbGUgKmFyZWEpOworRUFQSSB2b2lkIGV3a192aWV3X3BhaW50X2Nv
bnRleHRfcGFpbnQoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqY3R4dCwgY29uc3QgRWluYV9SZWN0
YW5nbGUgKmFyZWEpOworRUFQSSB2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfcGFpbnRfY29u
dGVudHMoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqY3R4dCwgY29uc3QgRWluYV9SZWN0YW5nbGUg
KmFyZWEpOworRUFQSSB2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfc2NhbGUoRXdrX1ZpZXdf
UGFpbnRfQ29udGV4dCAqY3R4dCwgZmxvYXQgc2NhbGVfeCwgZmxvYXQgc2NhbGVfeSk7CitFQVBJ
IHZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF90cmFuc2xhdGUoRXdrX1ZpZXdfUGFpbnRfQ29u
dGV4dCAqY3R4dCwgZmxvYXQgeCwgZmxvYXQgeSk7CisKK0VBUEkgRWluYV9Cb29sIGV3a192aWV3
X3BhaW50KEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgY2Fpcm9fdCAqY3IsIGNvbnN0IEVp
bmFfUmVjdGFuZ2xlICphcmVhKTsKK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X3BhaW50X2NvbnRl
bnRzKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgY2Fpcm9fdCAqY3IsIGNvbnN0IEVpbmFf
UmVjdGFuZ2xlICphcmVhKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRp
ZiAvLyBld2tfdmlld19oCmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19zaW5n
bGUuYyBiL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjFiMGU1ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvZWZs
L2V3ay9ld2tfdmlld19zaW5nbGUuYwpAQCAtMCwwICsxLDU4MiBAQAorLyoKKyAgICBDb3B5cmln
aHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworICAgIENvcHlyaWdo
dCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKKworI2luY2x1ZGUgImV3a19sb2dnaW5nLmgiCisK
KyNpbmNsdWRlIDxlaW5hX3NhZmV0eV9jaGVja3MuaD4KKyNpbmNsdWRlIDxFdmFzLmg+CisjaW5j
bHVkZSA8c3RyaW5nLmg+CisKK3N0YXRpYyBFd2tfVmlld19TbWFydF9DbGFzcyBfcGFyZW50X3Nj
ID0gRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OVUxMOworCitzdGF0aWMgdm9pZCBfZXdrX3Zp
ZXdfc2luZ2xlX29uX2RlbCh2b2lkICpkYXRhLCBFdmFzICplLCBFdmFzX09iamVjdCAqbywgdm9p
ZCAqZXZlbnRfaW5mbykKK3sKKyAgICBFdmFzX09iamVjdCAqY2xpcCA9IChFdmFzX09iamVjdCop
ZGF0YTsKKyAgICBldmFzX29iamVjdF9kZWwoY2xpcCk7Cit9CisKK3N0YXRpYyBFdmFzX09iamVj
dCAqX2V3a192aWV3X3NpbmdsZV9zbWFydF9iYWNraW5nX3N0b3JlX2FkZChFd2tfVmlld19TbWFy
dF9EYXRhICpzZCkKK3sKKyAgICBFdmFzX09iamVjdCAqYnMgPSBldmFzX29iamVjdF9pbWFnZV9h
ZGQoc2QtPmJhc2UuZXZhcyk7CisgICAgRXZhc19PYmplY3QgKmNsaXAgPSBldmFzX29iamVjdF9y
ZWN0YW5nbGVfYWRkKHNkLT5iYXNlLmV2YXMpOworICAgIGV2YXNfb2JqZWN0X2ltYWdlX2FscGhh
X3NldChicywgRUlOQV9GQUxTRSk7CisgICAgZXZhc19vYmplY3RfaW1hZ2Vfc21vb3RoX3NjYWxl
X3NldChicywgc2QtPnpvb21fd2Vha19zbW9vdGhfc2NhbGUpOworICAgIGV2YXNfb2JqZWN0X2Ns
aXBfc2V0KGJzLCBjbGlwKTsKKyAgICBldmFzX29iamVjdF9zaG93KGNsaXApOworCisgICAgZXZh
c19vYmplY3RfZXZlbnRfY2FsbGJhY2tfYWRkCisgICAgICAgIChicywgRVZBU19DQUxMQkFDS19E
RUwsIF9ld2tfdmlld19zaW5nbGVfb25fZGVsLCBjbGlwKTsKKworICAgIHJldHVybiBiczsKK30K
Kworc3RhdGljIHZvaWQgX2V3a192aWV3X3NpbmdsZV9zbWFydF9yZXNpemUoRXZhc19PYmplY3Qg
Km8sIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKQoreworICAgIEV3a19WaWV3X1NtYXJ0X0Rh
dGEgKnNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0
KG8pOworICAgIF9wYXJlbnRfc2Muc2MucmVzaXplKG8sIHcsIGgpOworCisgICAgLy8gdGhlc2Ug
c2hvdWxkIGJlIHF1ZXVlZCBhbmQgcHJvY2Vzc2VkIGluIGNhbGN1bGF0ZSBhcyB3ZWxsIQorICAg
IGV2YXNfb2JqZWN0X2ltYWdlX3NpemVfc2V0KHNkLT5iYWNraW5nX3N0b3JlLCB3LCBoKTsKKyAg
ICBpZiAoc2QtPmFuaW1hdGVkX3pvb20uem9vbS5jdXJyZW50IDwgMC4wMDAwMSkgeworICAgICAg
ICBFdmFzX09iamVjdCAqY2xpcCA9IGV2YXNfb2JqZWN0X2NsaXBfZ2V0KHNkLT5iYWNraW5nX3N0
b3JlKTsKKyAgICAgICAgRXZhc19Db29yZCB4LCB5LCBjdywgY2g7CisgICAgICAgIGV2YXNfb2Jq
ZWN0X2ltYWdlX2ZpbGxfc2V0KHNkLT5iYWNraW5nX3N0b3JlLCAwLCAwLCB3LCBoKTsKKyAgICAg
ICAgZXZhc19vYmplY3RfZ2VvbWV0cnlfZ2V0KHNkLT5iYWNraW5nX3N0b3JlLCAmeCwgJnksIDAs
IDApOworICAgICAgICBldmFzX29iamVjdF9tb3ZlKGNsaXAsIHgsIHkpOworICAgICAgICBld2tf
ZnJhbWVfY29udGVudHNfc2l6ZV9nZXQoc2QtPm1haW5fZnJhbWUsICZjdywgJmNoKTsKKyAgICAg
ICAgaWYgKHcgPiBjdykKKyAgICAgICAgICAgIHcgPSBjdzsKKyAgICAgICAgaWYgKGggPiBjaCkK
KyAgICAgICAgICAgIGggPSBjaDsKKyAgICAgICAgZXZhc19vYmplY3RfcmVzaXplKGNsaXAsIHcs
IGgpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgaW5saW5lIF9ld2tfdmlld180Yl9tb3ZlX3Jl
Z2lvbl91cCh1aW50MzJfdCAqaW1hZ2UsIHNpemVfdCByb3dzLCBzaXplX3QgeCwgc2l6ZV90IHks
IHNpemVfdCB3LCBzaXplX3QgaCwgc2l6ZV90IHJvd3NpemUpCit7CisgICAgdWludDMyX3QgKnNy
YzsKKyAgICB1aW50MzJfdCAqZHN0OworCisgICAgZHN0ID0gaW1hZ2UgKyB4ICsgeSAqIHJvd3Np
emU7CisgICAgc3JjID0gZHN0ICsgcm93cyAqIHJvd3NpemU7CisgICAgaCAtPSByb3dzOworCisg
ICAgZm9yICg7IGggPiAwOyBoLS0sIGRzdCArPSByb3dzaXplLCBzcmMgKz0gcm93c2l6ZSkKKyAg
ICAgICAgbWVtY3B5KGRzdCwgc3JjLCB3ICogNCk7Cit9CisKK3N0YXRpYyB2b2lkIGlubGluZSBf
ZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb25fZG93bih1aW50MzJfdCAqaW1hZ2UsIHNpemVfdCByb3dz
LCBzaXplX3QgeCwgc2l6ZV90IHksIHNpemVfdCB3LCBzaXplX3QgaCwgc2l6ZV90IHJvd3NpemUp
Cit7CisgICAgdWludDMyX3QgKnNyYzsKKyAgICB1aW50MzJfdCAqZHN0OworCisgICAgaCAtPSBy
b3dzOworICAgIHNyYyA9IGltYWdlICsgeCArICh5ICsgaCAtIDEpICogcm93c2l6ZTsKKyAgICBk
c3QgPSBzcmMgKyByb3dzICogcm93c2l6ZTsKKworICAgIGZvciAoOyBoID4gMDsgaC0tLCBkc3Qg
LT0gcm93c2l6ZSwgc3JjIC09IHJvd3NpemUpCisgICAgICAgIG1lbWNweShkc3QsIHNyYywgdyAq
IDQpOworfQorCitzdGF0aWMgdm9pZCBpbmxpbmUgX2V3a192aWV3XzRiX21vdmVfbGluZV9sZWZ0
KHVpbnQzMl90ICpkc3QsIGNvbnN0IHVpbnQzMl90ICpzcmMsIHNpemVfdCBjb3VudCkKK3sKKyAg
ICB1aW50MzJfdCAqZHN0X2VuZCA9IGRzdCArIGNvdW50OworICAgIC8qIG5vIG1lbWNweSgpIGFz
IGl0IGRvZXMgbm90IGFsbG93IG92ZXJsYXBwaW5nIHJlZ2lvbnMgKi8KKyAgICAvKiBubyBtZW1t
b3ZlKCkgYXMgaXQgd2lsbCBjb3B5IHRvIGEgdGVtcG9yYXJ5IGJ1ZmZlciAqLworICAgIC8qIFRP
RE86IGxvb3AgdW5yb2xsaW5nLCBjb3B5aW5nIHVwIHRvIHF1YWQtd29yZHMgd291bGQgaGVscCAq
LworICAgIGZvciAoOyBkc3QgPCBkc3RfZW5kOyBkc3QrKywgc3JjKyspCisgICAgICAgICpkc3Qg
PSAqc3JjOworfQorCitzdGF0aWMgdm9pZCBpbmxpbmUgX2V3a192aWV3XzRiX21vdmVfbGluZV9y
aWdodCh1aW50MzJfdCAqZHN0LCB1aW50MzJfdCAqc3JjLCBzaXplX3QgY291bnQpCit7CisgICAg
dWludDMyX3QgKmRzdF9lbmQgPSBkc3QgLSBjb3VudDsKKyAgICAvKiBubyBtZW1jcHkoKSBhcyBp
dCBkb2VzIG5vdCBhbGxvdyBvdmVybGFwcGluZyByZWdpb25zICovCisgICAgLyogbm8gbWVtbW92
ZSgpIGFzIGl0IHdpbGwgY29weSB0byBhIHRlbXBvcmFyeSBidWZmZXIgKi8KKyAgICAvKiBUT0RP
OiBsb29wIHVucm9sbGluZywgY29weWluZyB1cCB0byBxdWFkLXdvcmRzIHdvdWxkIGhlbHAgKi8K
KyAgICBmb3IgKDsgZHN0ID4gZHN0X2VuZDsgZHN0LS0sIHNyYy0tKQorICAgICAgICAqZHN0ID0g
KnNyYzsKK30KKworc3RhdGljIHZvaWQgaW5saW5lIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl9s
ZWZ0KHVpbnQzMl90ICppbWFnZSwgc2l6ZV90IGNvbHMsIHNpemVfdCB4LCBzaXplX3QgeSwgc2l6
ZV90IHcsIHNpemVfdCBoLCBzaXplX3Qgcm93c2l6ZSkKK3sKKyAgICB1aW50MzJfdCAqc3JjOwor
ICAgIHVpbnQzMl90ICpkc3Q7CisKKyAgICBkc3QgPSBpbWFnZSArIHggKyB5ICogcm93c2l6ZTsK
KyAgICBzcmMgPSBkc3QgKyBjb2xzOworICAgIHcgLT0gY29sczsKKworICAgIGZvciAoOyBoID4g
MDsgaC0tLCBkc3QgKz0gcm93c2l6ZSwgc3JjICs9IHJvd3NpemUpCisgICAgICAgIF9ld2tfdmll
d180Yl9tb3ZlX2xpbmVfbGVmdChkc3QsIHNyYywgdyk7Cit9CisKK3N0YXRpYyB2b2lkIGlubGlu
ZSBfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb25fcmlnaHQodWludDMyX3QgKmltYWdlLCBzaXplX3Qg
Y29scywgc2l6ZV90IHgsIHNpemVfdCB5LCBzaXplX3Qgdywgc2l6ZV90IGgsIHNpemVfdCByb3dz
aXplKQoreworICAgIHVpbnQzMl90ICpzcmM7CisgICAgdWludDMyX3QgKmRzdDsKKworICAgIHcg
LT0gY29sczsKKyAgICBzcmMgPSBpbWFnZSArICh4ICsgdyAtIDEpICsgeSAqIHJvd3NpemU7Cisg
ICAgZHN0ID0gc3JjICsgY29sczsKKworICAgIGZvciAoOyBoID4gMDsgaC0tLCBkc3QgKz0gcm93
c2l6ZSwgc3JjICs9IHJvd3NpemUpCisgICAgICAgIF9ld2tfdmlld180Yl9tb3ZlX2xpbmVfcmln
aHQoZHN0LCBzcmMsIHcpOworfQorCisvKiBjYXRjaC1hbGwgZnVuY3Rpb24sIG5vdCBhcyBvcHRp
bWl6ZWQgYXMgdGhlIG90aGVycywgYnV0IGRvZXMgdGhlIHdvcmsuICovCitzdGF0aWMgdm9pZCBp
bmxpbmUgX2V3a192aWV3XzRiX21vdmVfcmVnaW9uKHVpbnQzMl90ICppbWFnZSwgaW50IGR4LCBp
bnQgZHksIHNpemVfdCB4LCBzaXplX3QgeSwgc2l6ZV90IHcsIHNpemVfdCBoLCBzaXplX3Qgcm93
c2l6ZSkKK3sKKyAgICB1aW50MzJfdCAqc3JjOworICAgIHVpbnQzMl90ICpkc3Q7CisKKyAgICBp
ZiAoZHkgPCAwKSB7CisgICAgICAgIGggKz0gZHk7CisgICAgICAgIGRzdCA9IGltYWdlICsgeCAr
IHkgKiByb3dzaXplOworICAgICAgICBzcmMgPSBkc3QgLSBkeSAqIHJvd3NpemU7CisgICAgICAg
IGlmIChkeCA8PSAwKSB7CisgICAgICAgICAgICB3ICs9IGR4OworICAgICAgICAgICAgc3JjIC09
IGR4OworICAgICAgICAgICAgZm9yICg7IGggPiAwOyBoLS0sIGRzdCArPSByb3dzaXplLCBzcmMg
Kz0gcm93c2l6ZSkKKyAgICAgICAgICAgICAgICBfZXdrX3ZpZXdfNGJfbW92ZV9saW5lX2xlZnQo
ZHN0LCBzcmMsIHcpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdyAtPSBkeDsKKyAg
ICAgICAgICAgIHNyYyArPSB3IC0gMTsKKyAgICAgICAgICAgIGRzdCArPSB3ICsgZHggLTE7Cisg
ICAgICAgICAgICBmb3IgKDsgaCA+IDA7IGgtLSwgZHN0ICs9IHJvd3NpemUsIHNyYyArPSByb3dz
aXplKQorICAgICAgICAgICAgICAgIF9ld2tfdmlld180Yl9tb3ZlX2xpbmVfcmlnaHQoZHN0LCBz
cmMsIHcpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaCAtPSBkeTsKKyAgICAg
ICAgc3JjID0gaW1hZ2UgKyB4ICsgKHkgKyBoIC0gMSkgKiByb3dzaXplOworICAgICAgICBkc3Qg
PSBzcmMgKyBkeSAqIHJvd3NpemU7CisgICAgICAgIGlmIChkeCA8PSAwKSB7CisgICAgICAgICAg
ICB3ICs9IGR4OworICAgICAgICAgICAgc3JjIC09IGR4OworICAgICAgICAgICAgZm9yICg7IGgg
PiAwOyBoLS0sIGRzdCAtPSByb3dzaXplLCBzcmMgLT0gcm93c2l6ZSkKKyAgICAgICAgICAgICAg
ICBfZXdrX3ZpZXdfNGJfbW92ZV9saW5lX2xlZnQoZHN0LCBzcmMsIHcpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgdyAtPSBkeDsKKyAgICAgICAgICAgIHNyYyArPSB3IC0gMTsKKyAg
ICAgICAgICAgIGRzdCArPSB3ICsgZHggLSAxOworICAgICAgICAgICAgZm9yICg7IGggPiAwOyBo
LS0sIGRzdCAtPSByb3dzaXplLCBzcmMgLT0gcm93c2l6ZSkKKyAgICAgICAgICAgICAgICBfZXdr
X3ZpZXdfNGJfbW92ZV9saW5lX3JpZ2h0KGRzdCwgc3JjLCB3KTsKKyAgICAgICAgfQorICAgIH0K
K30KKworc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nf
c2luZ2xlKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCB2b2lkICpwaXhlbHMsIEV2YXNfQ29vcmQg
b3csIEV2YXNfQ29vcmQgb2gsIGNvbnN0IEV3a19TY3JvbGxfUmVxdWVzdCAqc3IpCit7CisgICAg
RXZhc19Db29yZCBzeCwgc3ksIHN3LCBzaDsKKworICAgIERCRygiJWQsJWQgKyAlZCwlZCAlKzAz
ZCwlKzAzZCwgc3RvcmU6ICVwICVkeCVkIiwKKyAgICAgICAgc3ItPngsIHNyLT55LCBzci0+dywg
c3ItPmgsIHNyLT5keCwgc3ItPmR5LCBwaXhlbHMsIG93LCBvaCk7CisKKyAgICBzeCA9IHNyLT54
OworICAgIHN5ID0gc3ItPnk7CisgICAgc3cgPSBzci0+dzsKKyAgICBzaCA9IHNyLT5oOworCisg
ICAgaWYgKGFicyhzci0+ZHgpID49IHN3IHx8IGFicyhzci0+ZHkpID49IHNoKSB7CisgICAgICAg
IC8qIGRvdWJ0IHdlYmtpdCB3b3VsZCBiZSBzbyBzdHVwaWQuLi4gKi8KKyAgICAgICAgREJHKCJm
dWxsIHBhZ2Ugc2Nyb2xsICUrMDNkLCUrMDNkLiBjb252ZXJ0IHRvIHJlcGFpbnQgJWQsJWQgKyAl
ZHglZCIsCisgICAgICAgICAgICBzci0+ZHgsIHNyLT5keSwgc3gsIHN5LCBzdywgc2gpOworICAg
ICAgICBld2tfdmlld19yZXBhaW50X2FkZChzZC0+X3ByaXYsIHN4LCBzeSwgc3csIHNoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChzeCA8IDApIHsKKyAgICAgICAgc3cgKz0g
c3g7CisgICAgICAgIHN4ID0gMDsKKyAgICB9CisgICAgaWYgKHN5IDwgMCkgeworICAgICAgICBz
aCArPSBzeTsKKyAgICAgICAgc3kgPSAwOworICAgIH0KKworICAgIGlmIChzeCArIHN3ID4gb3cp
CisgICAgICAgIHN3ID0gb3cgLSBzeDsKKyAgICBpZiAoc3kgKyBzaCA+IG9oKQorICAgICAgICBz
aCA9IG9oIC0gc3k7CisKKyAgICBpZiAoc3cgPCAwKQorICAgICAgICBzdyA9IDA7CisgICAgaWYg
KHNoIDwgMCkKKyAgICAgICAgc2ggPSAwOworCisgICAgRUlOQV9TQUZFVFlfT05fVFJVRV9SRVRV
Uk4oIXN3IHx8ICFzaCk7CisgICAgaWYgKCFzci0+ZHgpIHsKKyAgICAgICAgaWYgKHNyLT5keSA8
IDApIHsKKyAgICAgICAgICAgIERCRygic2Nyb2xsIHVwOiAlKzAzZCwlKzAzZCB1cGRhdGU9JWQs
JWQrJWR4JWQsICIKKyAgICAgICAgICAgICAgICAicmVwYWludD0lZCwlZCslZHglZCIsCisgICAg
ICAgICAgICAgICAgc3ItPmR4LCBzci0+ZHksIHN4LCBzeSwgc3csIHNoICsgc3ItPmR5LAorICAg
ICAgICAgICAgICAgIHN4LCBzeSArIHNoICsgc3ItPmR5LCBzdywgLXNyLT5keSk7CisKKyAgICAg
ICAgICAgIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl91cAorICAgICAgICAgICAgICAgICgodWlu
dDMyX3QqKXBpeGVscywgLXNyLT5keSwgc3gsIHN5LCBzdywgc2gsIG93KTsKKyAgICAgICAgICAg
IGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2FkZAorICAgICAgICAgICAgICAgIChzZC0+
YmFja2luZ19zdG9yZSwgc3gsIHN5LCBzdywgc2ggKyBzci0+ZHkpOworCisgICAgICAgICAgICBl
d2tfdmlld19yZXBhaW50X2FkZChzZC0+X3ByaXYsIHN4LCBzeSArIHNoICsgc3ItPmR5LCBzdywg
LXNyLT5keSk7CisgICAgICAgIH0gZWxzZSBpZiAoc3ItPmR5ID4gMCkgeworICAgICAgICAgICAg
REJHKCJzY3JvbGwgZG93bjogJSswM2QsJSswM2QgdXBkYXRlPSVkLCVkKyVkeCVkLCAiCisgICAg
ICAgICAgICAgICAgInJlcGFpbnQ9JWQsJWQrJWR4JWQiLAorICAgICAgICAgICAgICAgIHNyLT5k
eCwgc3ItPmR5LCBzeCwgc3kgKyBzci0+ZHksIHN3LCBzaCAtIHNyLT5keSwKKyAgICAgICAgICAg
ICAgICBzeCwgc3ksIHN3LCBzci0+ZHkpOworCisgICAgICAgICAgICBfZXdrX3ZpZXdfNGJfbW92
ZV9yZWdpb25fZG93bgorICAgICAgICAgICAgICAgICgodWludDMyX3QqKXBpeGVscywgc3ItPmR5
LCBzeCwgc3ksIHN3LCBzaCwgb3cpOworICAgICAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0
YV91cGRhdGVfYWRkCisgICAgICAgICAgICAgICAgKHNkLT5iYWNraW5nX3N0b3JlLCBzeCwgc3kg
KyBzci0+ZHksIHN3LCBzaCAtIHNyLT5keSk7CisKKyAgICAgICAgICAgIGV3a192aWV3X3JlcGFp
bnRfYWRkKHNkLT5fcHJpdiwgc3gsIHN5LCBzdywgc3ItPmR5KTsKKyAgICAgICAgfQorICAgIH0g
ZWxzZSBpZiAoIXNyLT5keSkgeworICAgICAgICBpZiAoc3ItPmR4IDwgMCkgeworICAgICAgICAg
ICAgREJHKCJzY3JvbGwgbGVmdDogJSswM2QsJSswM2QgdXBkYXRlPSVkLCVkKyVkeCVkLCAiCisg
ICAgICAgICAgICAgICAgInJlcGFpbnQ9JWQsJWQrJWR4JWQiLAorICAgICAgICAgICAgICAgIHNy
LT5keCwgc3ItPmR5LCBzeCwgc3ksIHN3ICsgc3ItPmR4LCBzaCwKKyAgICAgICAgICAgICAgICBz
eCArIHN3ICsgc3ItPmR4LCBzeSwgLXNyLT5keCwgc2gpOworCisgICAgICAgICAgICBfZXdrX3Zp
ZXdfNGJfbW92ZV9yZWdpb25fbGVmdAorICAgICAgICAgICAgICAgICgodWludDMyX3QqKXBpeGVs
cywgLXNyLT5keCwgc3gsIHN5LCBzdywgc2gsIG93KTsKKyAgICAgICAgICAgIGV2YXNfb2JqZWN0
X2ltYWdlX2RhdGFfdXBkYXRlX2FkZAorICAgICAgICAgICAgICAgIChzZC0+YmFja2luZ19zdG9y
ZSwgc3gsIHN5LCBzdyArIHNyLT5keCwgc2gpOworCisgICAgICAgICAgICBld2tfdmlld19yZXBh
aW50X2FkZChzZC0+X3ByaXYsIHN4ICsgc3cgKyBzci0+ZHgsIHN5LCAtc3ItPmR4LCBzaCk7Cisg
ICAgICAgIH0gZWxzZSBpZiAoc3ItPmR4ID4gMCkgeworICAgICAgICAgICAgREJHKCJzY3JvbGwg
dXA6ICUrMDNkLCUrMDNkIHVwZGF0ZT0lZCwlZCslZHglZCwgIgorICAgICAgICAgICAgICAgICJy
ZXBhaW50PSVkLCVkKyVkeCVkIiwKKyAgICAgICAgICAgICAgICBzci0+ZHgsIHNyLT5keSwgc3gg
KyBzci0+ZHgsIHN5LCBzdyAtIHNyLT5keCwgc2gsCisgICAgICAgICAgICAgICAgc3gsIHN5LCBz
ci0+ZHgsIHNoKTsKKworICAgICAgICAgICAgX2V3a192aWV3XzRiX21vdmVfcmVnaW9uX3JpZ2h0
CisgICAgICAgICAgICAgICAgKCh1aW50MzJfdCopcGl4ZWxzLCBzci0+ZHgsIHN4LCBzeSwgc3cs
IHNoLCBvdyk7CisgICAgICAgICAgICBldmFzX29iamVjdF9pbWFnZV9kYXRhX3VwZGF0ZV9hZGQK
KyAgICAgICAgICAgICAgICAoc2QtPmJhY2tpbmdfc3RvcmUsIHN4ICsgc3ItPmR4LCBzeSwgc3cg
LSBzci0+ZHgsIHNoKTsKKworICAgICAgICAgICAgZXdrX3ZpZXdfcmVwYWludF9hZGQoc2QtPl9w
cml2LCBzeCwgc3ksIHNyLT5keCwgc2gpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgRXZhc19Db29yZCBteCwgbXksIG13LCBtaCwgYXgsIGF5LCBhdywgYWgsIGJ4LCBieSwgYncs
IGJoOworCisgICAgICAgIGlmIChzci0+ZHggPCAwKSB7CisgICAgICAgICAgICBteCA9IHN4Owor
ICAgICAgICAgICAgbXcgPSBzdyArIHNyLT5keDsKKyAgICAgICAgICAgIGF4ID0gbXggKyBtdzsK
KyAgICAgICAgICAgIGF3ID0gLXNyLT5keDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IGF4ID0gc3g7CisgICAgICAgICAgICBhdyA9IHNyLT5keDsKKyAgICAgICAgICAgIG14ID0gYXgg
KyBhdzsKKyAgICAgICAgICAgIG13ID0gc3cgLSBzci0+ZHg7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoc3ItPmR5IDwgMCkgeworICAgICAgICAgICAgbXkgPSBzeTsKKyAgICAgICAgICAgIG1o
ID0gc2ggKyBzci0+ZHk7CisgICAgICAgICAgICBieSA9IG15ICsgbWg7CisgICAgICAgICAgICBi
aCA9IC1zci0+ZHk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBieSA9IHN5OworICAg
ICAgICAgICAgYmggPSBzci0+ZHk7CisgICAgICAgICAgICBteSA9IGJ5ICsgYmg7CisgICAgICAg
ICAgICBtaCA9IHNoIC0gc3ItPmR5OworICAgICAgICB9CisKKyAgICAgICAgYXkgPSBteTsKKyAg
ICAgICAgYWggPSBtaDsKKyAgICAgICAgYnggPSBzeDsKKyAgICAgICAgYncgPSBzdzsKKworICAg
ICAgICBEQkcoInNjcm9sbCBkaWFnb25hbDogJSswM2QsJSswM2QgdXBkYXRlPSVkLCVkKyVkeCVk
LCAiCisgICAgICAgICAgICAicmVwYWludHM6IGg9JWQsJWQrJWR4JWQgdj0lZCwlZCslZHglZCIs
CisgICAgICAgICAgICBzci0+ZHgsIHNyLT5keSwgbXgsIG15LCBtdywgbWgsIGF4LCBheSwgYXcs
IGFoLCBieCwgYnksIGJ3LCBiaCk7CisKKyAgICAgICAgX2V3a192aWV3XzRiX21vdmVfcmVnaW9u
CisgICAgICAgICAgICAoKHVpbnQzMl90KilwaXhlbHMsIHNyLT5keCwgc3ItPmR5LCBzeCwgc3ks
IHN3LCBzaCwgb3cpOworCisgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2Fk
ZChzZC0+YmFja2luZ19zdG9yZSwgbXgsIG15LCBtdywgbWgpOworICAgICAgICBld2tfdmlld19y
ZXBhaW50X2FkZChzZC0+X3ByaXYsIGF4LCBheSwgYXcsIGFoKTsKKyAgICAgICAgZXdrX3ZpZXdf
cmVwYWludF9hZGQoc2QtPl9wcml2LCBieCwgYnksIGJ3LCBiaCk7CisgICAgfQorfQorCitzdGF0
aWMgRWluYV9Cb29sIF9ld2tfdmlld19zaW5nbGVfc21hcnRfc2Nyb2xsc19wcm9jZXNzKEV3a19W
aWV3X1NtYXJ0X0RhdGEgKnNkKQoreworICAgIGNvbnN0IEV3a19TY3JvbGxfUmVxdWVzdCAqc3I7
CisgICAgY29uc3QgRXdrX1Njcm9sbF9SZXF1ZXN0ICpzcl9lbmQ7CisgICAgRXZhc19Db29yZCBv
dywgb2g7CisgICAgc2l6ZV90IGNvdW50OworICAgIHZvaWQgKnBpeGVscyA9IGV2YXNfb2JqZWN0
X2ltYWdlX2RhdGFfZ2V0KHNkLT5iYWNraW5nX3N0b3JlLCAxKTsKKyAgICBldmFzX29iamVjdF9p
bWFnZV9zaXplX2dldChzZC0+YmFja2luZ19zdG9yZSwgJm93LCAmb2gpOworCisgICAgc3IgPSBl
d2tfdmlld19zY3JvbGxfcmVxdWVzdHNfZ2V0KHNkLT5fcHJpdiwgJmNvdW50KTsKKyAgICBzcl9l
bmQgPSBzciArIGNvdW50OworICAgIGZvciAoOyBzciA8IHNyX2VuZDsgc3IrKykKKyAgICAgICAg
X2V3a192aWV3X3NpbmdsZV9zY3JvbGxfcHJvY2Vzc19zaW5nbGUoc2QsIHBpeGVscywgb3csIG9o
LCBzcik7CisKKyAgICByZXR1cm4gRUlOQV9UUlVFOworfQorCitzdGF0aWMgRWluYV9Cb29sIF9l
d2tfdmlld19zaW5nbGVfc21hcnRfcmVwYWludHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRh
ICpzZCkKK3sKKyAgICBFd2tfVmlld19QYWludF9Db250ZXh0ICpjdHh0OworICAgIEV2YXNfQ29v
cmQgb3csIG9oOworICAgIHZvaWQgKnBpeGVsczsKKyAgICBFaW5hX1JlY3RhbmdsZSByID0gezAs
IDAsIDAsIDB9OworICAgIGNvbnN0IEVpbmFfUmVjdGFuZ2xlICpwcjsKKyAgICBjb25zdCBFaW5h
X1JlY3RhbmdsZSAqcHJfZW5kOworICAgIEVpbmFfVGlsZXIgKnRpbGVyOworICAgIEVpbmFfSXRl
cmF0b3IgKml0cjsKKyAgICBjYWlyb19zdGF0dXNfdCBzdGF0dXM7CisgICAgY2Fpcm9fc3VyZmFj
ZV90ICpzdXJmYWNlOworICAgIGNhaXJvX2Zvcm1hdF90IGZvcm1hdDsKKyAgICBjYWlyb190ICpj
YWlybzsKKyAgICBzaXplX3QgY291bnQ7CisgICAgRWluYV9Cb29sIHJldCA9IEVJTkFfVFJVRTsK
KworICAgIGlmIChzZC0+YW5pbWF0ZWRfem9vbS56b29tLmN1cnJlbnQgPCAwLjAwMDAxKSB7Cisg
ICAgICAgIEV2YXNfT2JqZWN0ICpjbGlwID0gZXZhc19vYmplY3RfY2xpcF9nZXQoc2QtPmJhY2tp
bmdfc3RvcmUpOworICAgICAgICBFdmFzX0Nvb3JkIHcsIGgsIGN3LCBjaDsKKyAgICAgICAgLy8g
cmVzZXQgZWZmZWN0cyBvZiB6b29tX3dlYWtfc2V0KCkKKyAgICAgICAgZXZhc19vYmplY3RfaW1h
Z2VfZmlsbF9zZXQKKyAgICAgICAgICAgIChzZC0+YmFja2luZ19zdG9yZSwgMCwgMCwgc2QtPnZp
ZXcudywgc2QtPnZpZXcuaCk7CisgICAgICAgIGV2YXNfb2JqZWN0X21vdmUoY2xpcCwgc2QtPnZp
ZXcueCwgc2QtPnZpZXcueSk7CisKKyAgICAgICAgdyA9IHNkLT52aWV3Lnc7CisgICAgICAgIGgg
PSBzZC0+dmlldy5oOworCisgICAgICAgIGV3a19mcmFtZV9jb250ZW50c19zaXplX2dldChzZC0+
bWFpbl9mcmFtZSwgJmN3LCAmY2gpOworICAgICAgICBpZiAodyA+IGN3KQorICAgICAgICAgICAg
dyA9IGN3OworICAgICAgICBpZiAoaCA+IGNoKQorICAgICAgICAgICAgaCA9IGNoOworICAgICAg
ICBldmFzX29iamVjdF9yZXNpemUoY2xpcCwgdywgaCk7CisgICAgfQorCisgICAgcGl4ZWxzID0g
ZXZhc19vYmplY3RfaW1hZ2VfZGF0YV9nZXQoc2QtPmJhY2tpbmdfc3RvcmUsIDEpOworICAgIGV2
YXNfb2JqZWN0X2ltYWdlX3NpemVfZ2V0KHNkLT5iYWNraW5nX3N0b3JlLCAmb3csICZvaCk7CisK
KyAgICBpZiAoc2QtPmJnX2NvbG9yLmEgPCAyNTUpCisgICAgICAgIGZvcm1hdCA9IENBSVJPX0ZP
Uk1BVF9BUkdCMzI7CisgICAgZWxzZQorICAgICAgICBmb3JtYXQgPSBDQUlST19GT1JNQVRfUkdC
MjQ7CisKKyAgICBzdXJmYWNlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEK
KyAgICAgICAgKCh1bnNpZ25lZCBjaGFyKilwaXhlbHMsIGZvcm1hdCwgb3csIG9oLCBvdyAqIDQp
OworICAgIHN0YXR1cyA9IGNhaXJvX3N1cmZhY2Vfc3RhdHVzKHN1cmZhY2UpOworICAgIGlmIChz
dGF0dXMgIT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpIHsKKyAgICAgICAgRVJSKCJjb3VsZCBub3Qg
Y3JlYXRlIHN1cmZhY2UgZnJvbSBkYXRhICVkeCVkOiAlcyIsCisgICAgICAgICAgICBvdywgb2gs
IGNhaXJvX3N0YXR1c190b19zdHJpbmcoc3RhdHVzKSk7CisgICAgICAgIHJldCA9IEVJTkFfRkFM
U0U7CisgICAgICAgIGdvdG8gZXJyb3JfY2Fpcm9fc3VyZmFjZTsKKyAgICB9CisgICAgY2Fpcm8g
PSBjYWlyb19jcmVhdGUoc3VyZmFjZSk7CisgICAgc3RhdHVzID0gY2Fpcm9fc3RhdHVzKGNhaXJv
KTsKKyAgICBpZiAoc3RhdHVzICE9IENBSVJPX1NUQVRVU19TVUNDRVNTKSB7CisgICAgICAgIEVS
UigiY291bGQgbm90IGNyZWF0ZSBjYWlybyBmcm9tIHN1cmZhY2UgJWR4JWQ6ICVzIiwKKyAgICAg
ICAgICAgIG93LCBvaCwgY2Fpcm9fc3RhdHVzX3RvX3N0cmluZyhzdGF0dXMpKTsKKyAgICAgICAg
cmV0ID0gRUlOQV9GQUxTRTsKKyAgICAgICAgZ290byBlcnJvcl9jYWlybzsKKyAgICB9CisKKyAg
ICBjdHh0ID0gZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9uZXcoc2QtPl9wcml2LCBjYWlybyk7Cisg
ICAgaWYgKCFjdHh0KSB7CisgICAgICAgIEVSUigiY291bGQgbm90IGNyZWF0ZSBwYWludCBjb250
ZXh0Iik7CisgICAgICAgIHJldCA9IEVJTkFfRkFMU0U7CisgICAgICAgIGdvdG8gZXJyb3JfcGFp
bnRfY29udGV4dDsKKyAgICB9CisKKyAgICB0aWxlciA9IGVpbmFfdGlsZXJfbmV3KG93LCBvaCk7
CisgICAgaWYgKCF0aWxlcikgeworICAgICAgICBFUlIoImNvdWxkIG5vdCBjcmVhdGUgdGlsZXIg
JWR4JWQiLCBvdywgb2gpOworICAgICAgICByZXQgPSBFSU5BX0ZBTFNFOworICAgICAgICBnb3Rv
IGVycm9yX3RpbGVyOworICAgIH0KKworICAgIHByID0gZXdrX3ZpZXdfcmVwYWludHNfZ2V0KHNk
LT5fcHJpdiwgJmNvdW50KTsKKyAgICBwcl9lbmQgPSBwciArIGNvdW50OworICAgIGZvciAoOyBw
ciA8IHByX2VuZDsgcHIrKykKKyAgICAgICAgZWluYV90aWxlcl9yZWN0X2FkZCh0aWxlciwgcHIp
OworCisgICAgaXRyID0gZWluYV90aWxlcl9pdGVyYXRvcl9uZXcodGlsZXIpOworICAgIGlmICgh
aXRyKSB7CisgICAgICAgIEVSUigiY291bGQgbm90IGdldCBpdGVyYXRvciBmb3IgdGlsZXIiKTsK
KyAgICAgICAgcmV0ID0gRUlOQV9GQUxTRTsKKyAgICAgICAgZ290byBlcnJvcl9pdGVyYXRvcjsK
KyAgICB9CisKKyAgICBpbnQgc3gsIHN5OworICAgIGV3a19mcmFtZV9zY3JvbGxfcG9zX2dldChz
ZC0+bWFpbl9mcmFtZSwgJnN4LCAmc3kpOworCisgICAgRUlOQV9JVEVSQVRPUl9GT1JFQUNIKGl0
ciwgcikgeworICAgICAgICBFaW5hX1JlY3RhbmdsZSBzY3JvbGxlZF9yZWN0OworICAgICAgICBF
SU5BX1JFQ1RBTkdMRV9TRVQoJnNjcm9sbGVkX3JlY3QsIHIueCArIHN4LCByLnkgKyBzeSwgci53
LCByLmgpOworCisgICAgICAgIGV3a192aWV3X3BhaW50X2NvbnRleHRfc2F2ZShjdHh0KTsKKwor
ICAgICAgICBpZiAoKHN4KSB8fCAoc3kpKQorICAgICAgICAgICAgZXdrX3ZpZXdfcGFpbnRfY29u
dGV4dF90cmFuc2xhdGUoY3R4dCwgLXN4LCAtc3kpOworCisgICAgICAgIGV3a192aWV3X3BhaW50
X2NvbnRleHRfY2xpcChjdHh0LCAmc2Nyb2xsZWRfcmVjdCk7CisgICAgICAgIGV3a192aWV3X3Bh
aW50X2NvbnRleHRfcGFpbnRfY29udGVudHMoY3R4dCwgJnNjcm9sbGVkX3JlY3QpOworCisgICAg
ICAgIGV3a192aWV3X3BhaW50X2NvbnRleHRfcmVzdG9yZShjdHh0KTsKKyAgICAgICAgZXZhc19v
YmplY3RfaW1hZ2VfZGF0YV91cGRhdGVfYWRkCisgICAgICAgICAgICAoc2QtPmJhY2tpbmdfc3Rv
cmUsIHIueCwgci55LCByLncsIHIuaCk7CisgICAgfQorICAgIGVpbmFfaXRlcmF0b3JfZnJlZShp
dHIpOworCitlcnJvcl9pdGVyYXRvcjoKKyAgICBlaW5hX3RpbGVyX2ZyZWUodGlsZXIpOworZXJy
b3JfdGlsZXI6CisgICAgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9mcmVlKGN0eHQpOworZXJyb3Jf
cGFpbnRfY29udGV4dDoKKyAgICBjYWlyb19kZXN0cm95KGNhaXJvKTsKK2Vycm9yX2NhaXJvOgor
ICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShzdXJmYWNlKTsKK2Vycm9yX2NhaXJvX3N1cmZhY2U6
CisgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV9zZXQoc2QtPmJhY2tpbmdfc3RvcmUsIHBpeGVs
cyk7IC8qIGRlYyByZWZjb3VudCAqLworCisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIEVp
bmFfQm9vbCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3pvb21fd2Vha19zZXQoRXdrX1ZpZXdfU21h
cnRfRGF0YSAqc2QsIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpCit7
CisgICAgLy8gVE9ETzogcmV2aWV3CisgICAgZmxvYXQgc2NhbGUgPSB6b29tIC8gc2QtPmFuaW1h
dGVkX3pvb20uem9vbS5zdGFydDsKKyAgICBFdmFzX0Nvb3JkIHcgPSBzZC0+dmlldy53ICogc2Nh
bGU7CisgICAgRXZhc19Db29yZCBoID0gc2QtPnZpZXcuaCAqIHNjYWxlOworICAgIEV2YXNfQ29v
cmQgZHgsIGR5LCBjdywgY2g7CisgICAgRXZhc19PYmplY3QgKmNsaXAgPSBldmFzX29iamVjdF9j
bGlwX2dldChzZC0+YmFja2luZ19zdG9yZSk7CisKKyAgICBld2tfZnJhbWVfY29udGVudHNfc2l6
ZV9nZXQoc2QtPm1haW5fZnJhbWUsICZjdywgJmNoKTsKKyAgICBpZiAoc2QtPnZpZXcudyA+IDAg
JiYgc2QtPnZpZXcuaCA+IDApIHsKKyAgICAgICAgZHggPSAodyAqIChzZC0+dmlldy53IC0gY3gp
KSAvIHNkLT52aWV3Lnc7CisgICAgICAgIGR5ID0gKGggKiAoc2QtPnZpZXcuaCAtIGN5KSkgLyBz
ZC0+dmlldy5oOworICAgIH0gZWxzZSB7CisgICAgICAgIGR4ID0gMDsKKyAgICAgICAgZHkgPSAw
OworICAgIH0KKworICAgIGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxfc2V0KHNkLT5iYWNraW5nX3N0
b3JlLCBjeCArIGR4LCBjeSArIGR5LCB3LCBoKTsKKworICAgIGlmIChzZC0+dmlldy53ID4gMCAm
JiBzZC0+dmlldy5oID4gMCkgeworICAgICAgICBkeCA9ICgoc2QtPnZpZXcudyAtIHcpICogY3gp
IC8gc2QtPnZpZXcudzsKKyAgICAgICAgZHkgPSAoKHNkLT52aWV3LmggLSBoKSAqIGN5KSAvIHNk
LT52aWV3Lmg7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZHggPSAwOworICAgICAgICBkeSA9IDA7
CisgICAgfQorICAgIGV2YXNfb2JqZWN0X21vdmUoY2xpcCwgc2QtPnZpZXcueCArIGR4LCBzZC0+
dmlldy55ICsgZHkpOworCisgICAgaWYgKGN3IDwgc2QtPnZpZXcudykKKyAgICAgICAgdyA9IGN3
ICogc2NhbGU7CisgICAgaWYgKGNoIDwgc2QtPnZpZXcuaCkKKyAgICAgICAgaCA9IGNoICogc2Nh
bGU7CisgICAgZXZhc19vYmplY3RfcmVzaXplKGNsaXAsIHcsIGgpOworICAgIHJldHVybiBFSU5B
X1RSVUU7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zaW5nbGVfc21hcnRfem9vbV93ZWFr
X3Ntb290aF9zY2FsZV9zZXQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIEVpbmFfQm9vbCBzbW9v
dGhfc2NhbGUpCit7CisgICAgZXZhc19vYmplY3RfaW1hZ2Vfc21vb3RoX3NjYWxlX3NldChzZC0+
YmFja2luZ19zdG9yZSwgc21vb3RoX3NjYWxlKTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3
X3NpbmdsZV9zbWFydF9iZ19jb2xvcl9zZXQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIHVuc2ln
bmVkIGNoYXIgciwgdW5zaWduZWQgY2hhciBnLCB1bnNpZ25lZCBjaGFyIGIsIHVuc2lnbmVkIGNo
YXIgYSkKK3sKKyAgICBldmFzX29iamVjdF9pbWFnZV9hbHBoYV9zZXQoc2QtPmJhY2tpbmdfc3Rv
cmUsIGEgPCAyNTUpOworfQorCisvKioKKyAqIFNldHMgdGhlIHNtYXJ0IGNsYXNzIGFwaSB1c2lu
ZyBzaW5nbGUgYmFja2luZyBzdG9yZSwgZW5hYmxpbmcgdmlldworICogdG8gYmUgaW5oZXJpdGVk
LgorICoKKyAqIEBwYXJhbSBhcGkgY2xhc3MgZGVmaW5pdGlvbiB0byBiZSBzZXQsIGFsbCBtZW1i
ZXJzIHdpdGggdGhlCisgKiAgICAgICAgZXhjZXB0aW9uIG9mIEV2YXNfU21hcnRfQ2xhc3MtPmRh
dGEgbWF5IGJlIG92ZXJyaWRkZW4uIE11c3QKKyAqICAgICAgICBAYiBub3QgYmUgQGMgTlVMTC4K
KyAqCisgKiBAbm90ZSBFdmFzX1NtYXJ0X0NsYXNzLT5kYXRhIGlzIHVzZWQgdG8gaW1wbGVtZW50
IHR5cGUgY2hlY2tpbmcgYW5kCisgKiAgICAgICBpcyBub3Qgc3VwcG9zZWQgdG8gYmUgY2hhbmdl
ZC9vdmVycmlkZGVuLiBJZiB5b3UgbmVlZCBleHRyYQorICogICAgICAgZGF0YSBmb3IgeW91ciBz
bWFydCBjbGFzcyB0byB3b3JrLCBqdXN0IGV4dGVuZAorICogICAgICAgRXdrX1ZpZXdfU21hcnRf
Q2xhc3MgaW5zdGVhZC4KKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBA
YyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUgKHByb2JhYmx5CisgKiAgICAgICAgIHZlcnNpb24gbWlz
bWF0Y2gpLgorICoKKyAqIEBzZWUgZXdrX3ZpZXdfYmFzZV9zbWFydF9zZXQoKQorICovCitFaW5h
X0Jvb2wgZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3NldChFd2tfVmlld19TbWFydF9DbGFzcyAqYXBp
KQoreworICAgIGlmICghZXdrX3ZpZXdfYmFzZV9zbWFydF9zZXQoYXBpKSkKKyAgICAgICAgcmV0
dXJuIEVJTkFfRkFMU0U7CisKKyAgICBpZiAoRUlOQV9VTkxJS0VMWSghX3BhcmVudF9zYy5zYy5h
ZGQpKQorICAgICAgICBld2tfdmlld19iYXNlX3NtYXJ0X3NldCgmX3BhcmVudF9zYyk7CisKKyAg
ICBhcGktPnNjLnJlc2l6ZSA9IF9ld2tfdmlld19zaW5nbGVfc21hcnRfcmVzaXplOworCisgICAg
YXBpLT5iYWNraW5nX3N0b3JlX2FkZCA9IF9ld2tfdmlld19zaW5nbGVfc21hcnRfYmFja2luZ19z
dG9yZV9hZGQ7CisgICAgYXBpLT5zY3JvbGxzX3Byb2Nlc3MgPSBfZXdrX3ZpZXdfc2luZ2xlX3Nt
YXJ0X3Njcm9sbHNfcHJvY2VzczsKKyAgICBhcGktPnJlcGFpbnRzX3Byb2Nlc3MgPSBfZXdrX3Zp
ZXdfc2luZ2xlX3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3M7CisgICAgYXBpLT56b29tX3dlYWtfc2V0
ID0gX2V3a192aWV3X3NpbmdsZV9zbWFydF96b29tX3dlYWtfc2V0OworICAgIGFwaS0+em9vbV93
ZWFrX3Ntb290aF9zY2FsZV9zZXQgPSBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3pvb21fd2Vha19z
bW9vdGhfc2NhbGVfc2V0OworICAgIGFwaS0+YmdfY29sb3Jfc2V0ID0gX2V3a192aWV3X3Npbmds
ZV9zbWFydF9iZ19jb2xvcl9zZXQ7CisKKyAgICByZXR1cm4gRUlOQV9UUlVFOworfQorCitzdGF0
aWMgaW5saW5lIEV2YXNfU21hcnQgKl9ld2tfdmlld19zaW5nbGVfc21hcnRfY2xhc3NfbmV3KHZv
aWQpCit7CisgICAgc3RhdGljIEV3a19WaWV3X1NtYXJ0X0NsYXNzIGFwaSA9IEVXS19WSUVXX1NN
QVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OKCJFd2tfVmlld19TaW5nbGUiKTsKKyAgICBzdGF0
aWMgRXZhc19TbWFydCAqc21hcnQgPSAwOworCisgICAgaWYgKEVJTkFfVU5MSUtFTFkoIXNtYXJ0
KSkgeworICAgICAgICBld2tfdmlld19zaW5nbGVfc21hcnRfc2V0KCZhcGkpOworICAgICAgICBz
bWFydCA9IGV2YXNfc21hcnRfY2xhc3NfbmV3KCZhcGkuc2MpOworICAgIH0KKworICAgIHJldHVy
biBzbWFydDsKK30KKworLyoqCisgKiBDcmVhdGVzIGEgbmV3IEVGTCBXZWJLaXQgVmlldyBvYmpl
Y3QuCisgKgorICogVmlldyBvYmplY3RzIGFyZSB0aGUgcmVjb21tZW5kZWQgd2F5IHRvIGRlYWwg
d2l0aCBFRkwgV2ViS2l0IGFzIGl0CisgKiBhYnN0cmFjdHMgdGhlIGNvbXBsZXggcGllY2VzIG9m
IHRoZSBwcm9jZXNzLgorICoKKyAqIEVhY2ggdmlldyBpcyBjb21wb3NlZCBieSBhIHNldCBvZiBm
cmFtZXMuIFRoZSBzZXQgaGFzIGF0IGxlYXN0IG9uZQorICogZnJhbWUsIGNhbGxlZCAnbWFpbl9m
cmFtZScuIFNlZSBld2tfdmlld19mcmFtZV9tYWluX2dldCgpIGFuZAorICogZXdrX3ZpZXdfZnJh
bWVfZm9jdXNlZF9nZXQoKS4KKyAqCisgKiBAcGFyYW0gZSBjYW52YXMgd2hlcmUgdG8gY3JlYXRl
IHRoZSB2aWV3IG9iamVjdC4KKyAqCisgKiBAcmV0dXJuIHZpZXcgb2JqZWN0IG9yIEBjIE5VTEwg
aWYgZXJyb3JzLgorICoKKyAqIEBzZWUgZXdrX3ZpZXdfdXJpX3NldCgpCisgKi8KK0V2YXNfT2Jq
ZWN0ICpld2tfdmlld19zaW5nbGVfYWRkKEV2YXMgKmUpCit7CisgICAgcmV0dXJuIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2FkZChlLCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X2NsYXNzX25ldygpKTsKK30K
</data>
<flag name="review"
          id="31738"
          type_id="1"
          status="-"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>48941</attachid>
            <date>2010-02-17 14:46:28 -0800</date>
            <delta_ts>2010-02-17 14:46:28 -0800</delta_ts>
            <desc>Image files needed by the EFL port</desc>
            <filename>webkit-efl-port-webkit_efl.tar</filename>
            <type>application/octet-stream</type>
            <size>184320</size>
            <attacher name="Leandro Pereira">leandro</attacher>
            
              <data encoding="base64">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
Hr7JeDMxXvRW++3Bd9x3He+j3w9P5Hwgfyj/aPmx9VPQp/uTGZOT/wQDmPP8YzMt2wAAACBjSFJN
AAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABaElEQVR42oySPYobQRCFX1fV
qLs19DA96h8Mjgz6MTjzAXyGjeYIOooCHcZKBU58CoMYnGwkEMhYAi9eiXHk9f54tfvgUdHHqyqe
AlADeAegwuv0E8B3Kcvyw/l8fnM6nd73fV9fIpRSP0TkGzMPpaoqs9/vP87n86vpdDqx1kJrDWZ+
AnZdt1ksFp+rqvoi3ns6HA5mNptNQggYjUYoyxJFUUAp9QAcj8eT5XJpvPckIQTebrc0HA4RQkDO
Gc45MPMTsO97aK0phMASY2StNRlj4JxDXddwzoGI/nun1ppijCwpJTHGUFEUGAwGKIoCIvLsg4wx
lFISSSmzMYaUUiCiO18GM0vOia21d+Df+ZystZRz+rfq/bSXE5NIjPFB4kugtZZijEwhBG6a5na3
210DwOPk++667rppmtsQAov3/qZt281qtaL1ej24VDlr7e+2bTfe+xt1PB7fAvgEwL6y5L8AfP0z
ADkoR/XvXrwNAAAAAElFTkSuQmCCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
8b1sNaSnR9Os3yu89yzOuYsnk92DF2/fmGJRdq8yptuxxePJ7oFz7oLm8/k2gLsAumsaWwB492sA
mz17vZtHH74AAAAASUVORK5CYIIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAABXZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvY2hlY2svaW1nX2NoZWNrX29m
Zl9ob3Zlci5wbmcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0
NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDYwNTYAMTEzMzQ3NzY1MzIAMDI0MjUwACAwAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAbGVhbmRybwAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABsZWFuZHJvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
76PfD0/kfCB/KP9o+bH1U9Cn+5MZk5P/BAOY8/xjMy3bAAAAIGNIUk0AAHolAACAgwAA+f8AAIDp
AAB1MAAA6mAAADqYAAAXb5JfxUYAAAFZSURBVHjalNExjhNBEAXQ312/Z5jxqExL3T2WRbSBI4I5
AIgD7C0m9SnsayA58E0QwSaOfADsCBGME2TJG4zUBN4ELRhT+VP9qm8AvAXwAEBx3/wE8I2TyeT9
OI4P4zh+zDnPbgljzA+SX0nWVNU3wzA8LpfLD13Xzeu6RlmWEJFXcL/ff1+tVqqqn+m9t6fTqem6
bh5jRAgBTdPAOQdjzG9wsVjM1+t14723DCHI8Xg0dV0jxojZbAZVhYi8gjlnkDQhBGGMUUiasizR
NA2m0ylUFdbaP95J0sQYxaaUSNKKCEhCRP6KXqBNKdGm1ArpzMvX/tkF6UxKrdi2TeIczZ0dwjma
tk3XqEVR2HthURTXqDFGcc79x0Z3fU4IQVT1cjgchpzzTbTb7QZVvYQQhN77577vn7bbrd1sNtUt
WFXVpe/7J+/9szmfz+8AfAJQ3Zn2AuDLrwEA9KFICixY9OEAAAAASUVORK5CYIIAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
GEFa69coil6WyyWfz+eFt16uUChcoyh60Vq/sjRNPwOoASi888mvADa/BwC1ToBbAbu12QAAAABJ
RU5ErkJgggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUv
d2lkZ2V0L2NvbWJvL2NvbWJvX2ZvY3VzLnBuZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDA2MjA0ADEx
MzM0Nzc2NTMyADAyMjYxNQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAB1c3RhciAgAGxlYW5kcm8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbGVhbmRybwAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
U9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwk
BtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZL
TepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxu
hVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wu
w+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb
00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nyme
WTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLe
WV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5
QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR
3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH
4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI
2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2
Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyz
ytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0m
ek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z
3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJ
zs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4
lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ
3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna
6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86
X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+
cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uG
DYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bC
xh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hS
TQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAXtJREFUeNrs2TFLXEEUxfHf
yNuXbDSJsBHbpLKwsZBIqnwGSS2kTGNhndYPINikC0k6wcovkFRJwMIuBAJuJZhXqGSF9SmOhU9Z
Jdsl7Dx8t5lmisP/3nMG7oTJrcNFo6+IEkf4jQI9nEGGTwkIPK9EdfENX7CDfZyE56vv44e3r0eO
8jxyUEYff/Vt7JbbWMdn7I1JpMYCnXvBymzb2sL4PJYxh4nswcDFmRhH2vMeihAsTGVePc3nN7vl
S/xIhmTAQzypQL2ZuQ8vMJ2MyKt6VJ3jrQDP8DgbbHAcYbtvYg1CpRV5ciT/MgUyA/SSIXlLZOok
Xb04KZOsj8h6tDs2JP/VTKYdQY1x7mBO1sHdtTBOM5NNBDXubt7uxjhNTv73inUgGZOOoErJMcrk
SPbz/FLdaYRdHCUVQSd57rjdBu9+9uEr9rPTVuv6UtHpJEHze3Fms1tuu1xLF1kqbR6yjt5BL0xu
HfYS8EjEH0MW+xmWEjHz0C+SiwEAVWuwMP8+x3oAAAAASUVORK5CYIIAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAABXZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvY29tYm8vY29t
Ym9faG92ZXIucG5nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAMDAwMDY0NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDYxMTcAMTEzMzQ3NzY1MzIAMDIyNjI0
ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAbGVh
bmRybwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsZWFuZHJvAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAIlQTkcNChoKAAAADUlIRFIAAADrAAAAKAgGAAAAH3YNzwAAAAlwSFlz
AAALEwAACxMBAJqcGAAACk9pQ0NQUGhvdG9zaG9wIElDQyBwcm9maWxlAAB42p1TZ1RT6RY99970
QkuIgJRLb1IVCCBSQouAFJEmKiEJEEqIIaHZFVHBEUVFBBvIoIgDjo6AjBVRLAyKCtgH5CGijoOj
iIrK++F7o2vWvPfmzf611z7nrPOds88HwAgMlkgzUTWADKlCHhHgg8fExuHkLkCBCiRwABAIs2Qh
c/0jAQD4fjw8KyLAB74AAXjTCwgAwE2bwDAch/8P6kKZXAGAhAHAdJE4SwiAFABAeo5CpgBARgGA
nZgmUwCgBABgy2Ni4wBQLQBgJ3/m0wCAnfiZewEAW5QhFQGgkQAgE2WIRABoOwCsz1aKRQBYMAAU
ZkvEOQDYLQAwSVdmSACwtwDAzhALsgAIDAAwUYiFKQAEewBgyCMjeACEmQAURvJXPPErrhDnKgAA
eJmyPLkkOUWBWwgtcQdXVy4eKM5JFysUNmECYZpALsJ5mRkygTQP4PPMAACgkRUR4IPz/XjODq7O
zjaOtg5fLeq/Bv8iYmLj/uXPq3BAAADhdH7R/iwvsxqAOwaAbf6iJe4EaF4LoHX3i2ayD0C1AKDp
2lfzcPh+PDxFoZC52dnl5OTYSsRCW2HKV33+Z8JfwFf9bPl+PPz39eC+4iSBMl2BRwT44MLM9Eyl
HM+SCYRi3OaPR/y3C//8HdMixEliuVgqFONREnGORJqM8zKlIolCkinFJdL/ZOLfLPsDPt81ALBq
PgF7kS2oXWMD9ksnEFh0wOL3AADyu2/B1CgIA4Bog+HPd//vP/1HoCUAgGZJknEAAF5EJC5UyrM/
xwgAAESggSqwQRv0wRgswAYcwQXcwQv8YDaEQiTEwkIQQgpkgBxyYCmsgkIohs2wHSpgL9RAHTTA
UWiGk3AOLsJVuA49cA/6YQiewSi8gQkEQcgIE2Eh2ogBYopYI44IF5mF+CHBSAQSiyQgyYgUUSJL
kTVIMVKKVCBVSB3yPXICOYdcRrqRO8gAMoL8hrxHMZSBslE91Ay1Q7moNxqERqIL0GR0MZqPFqCb
0HK0Gj2MNqHn0KtoD9qPPkPHMMDoGAczxGwwLsbDQrE4LAmTY8uxIqwMq8YasFasA7uJ9WPPsXcE
EoFFwAk2BHdCIGEeQUhYTFhO2EioIBwkNBHaCTcJA4RRwicik6hLtCa6EfnEGGIyMYdYSCwj1hKP
Ey8Qe4hDxDckEolDMie5kAJJsaRU0hLSRtJuUiPpLKmbNEgaI5PJ2mRrsgc5lCwgK8iF5J3kw+Qz
5BvkIfJbCp1iQHGk+FPiKFLKakoZ5RDlNOUGZZgyQVWjmlLdqKFUETWPWkKtobZSr1GHqBM0dZo5
zYMWSUulraKV0xpoF2j3aa/odLoR3ZUeTpfQV9LL6Ufol+gD9HcMDYYVg8eIZygZmxgHGGcZdxiv
mEymGdOLGcdUMDcx65jnmQ+Zb1VYKrYqfBWRygqVSpUmlRsqL1Spqqaq3qoLVfNVy1SPqV5Tfa5G
VTNT46kJ1JarVaqdUOtTG1NnqTuoh6pnqG9UP6R+Wf2JBlnDTMNPQ6RRoLFf47zGIAtjGbN4LCFr
DauGdYE1xCaxzdl8diq7mP0du4s9qqmhOUMzSjNXs1LzlGY/B+OYcficdE4J5yinl/N+it4U7yni
KRumNEy5MWVca6qWl5ZYq0irUatH6702ru2nnaa9RbtZ+4EOQcdKJ1wnR2ePzgWd51PZU92nCqcW
TT069a4uqmulG6G7RHe/bqfumJ6+XoCeTG+n3nm95/ocfS/9VP1t+qf1RwxYBrMMJAbbDM4YPMU1
cW88HS/H2/FRQ13DQEOlYZVhl+GEkbnRPKPVRo1GD4xpxlzjJONtxm3GoyYGJiEmS03qTe6aUk25
pimmO0w7TMfNzM2izdaZNZs9Mdcy55vnm9eb37dgWnhaLLaotrhlSbLkWqZZ7ra8boVaOVmlWFVa
XbNGrZ2tJda7rbunEae5TpNOq57WZ8Ow8bbJtqm3GbDl2AbbrrZttn1hZ2IXZ7fFrsPuk72Tfbp9
jf09Bw2H2Q6rHVodfnO0chQ6Vjrems6c7j99xfSW6S9nWM8Qz9gz47YTyynEaZ1Tm9NHZxdnuXOD
84iLiUuCyy6XPi6bG8bdyL3kSnT1cV3hetL1nZuzm8LtqNuv7jbuae6H3J/MNJ8pnlkzc9DDyEPg
UeXRPwuflTBr36x+T0NPgWe15yMvYy+RV63XsLeld6r3Ye8XPvY+cp/jPuM8N94y3llfzDfAt8i3
y0/Db55fhd9DfyP/ZP96/9EAp4AlAWcDiYFBgVsC+/h6fCG/jj8622X2stntQYyguUEVQY+CrYLl
wa0haMjskK0h9+eYzpHOaQ6FUH7o1tAHYeZhi8N+DCeFh4VXhj+OcIhYGtExlzV30dxDc99E+kSW
RN6bZzFPOa8tSjUqPqouajzaN7o0uj/GLmZZzNVYnVhJbEscOS4qrjZubL7f/O3zh+Kd4gvjexeY
L8hdcHmhzsL0hacWqS4SLDqWQEyITjiU8EEQKqgWjCXyE3cljgp5wh3CZyIv0TbRiNhDXCoeTvJI
Kk16kuyRvDV5JMUzpSzluYQnqZC8TA1M3Zs6nhaadiBtMj06vTGDkpGQcUKqIU2TtmfqZ+Zmdsus
ZYWy/sVui7cvHpUHyWuzkKwFWS0KtkKm6FRaKNcqB7JnZVdmv82JyjmWq54rze3Ms8rbkDec75//
7RLCEuGStqWGS1ctHVjmvaxqObI8cXnbCuMVBSuGVgasPLiKtipt1U+r7VeXrn69JnpNa4FewcqC
wbUBa+sLVQrlhX3r3NftXU9YL1nftWH6hp0bPhWJiq4U2xeXFX/YKNx45RuHb8q/mdyUtKmrxLlk
z2bSZunm3i2eWw6Wqpfmlw5uDdnatA3fVrTt9fZF2y+XzSjbu4O2Q7mjvzy4vGWnyc7NOz9UpFT0
VPpUNu7S3bVh1/hu0e4be7z2NOzV21u89/0+yb7bVQFVTdVm1WX7Sfuz9z+uiarp+Jb7bV2tTm1x
7ccD0gP9ByMOtte51NUd0j1UUo/WK+tHDscfvv6d73ctDTYNVY2cxuIjcER55On3Cd/3Hg062naM
e6zhB9Mfdh1nHS9qQprymkabU5r7W2Jbuk/MPtHW6t56/EfbHw+cNDxZeUrzVMlp2umC05Nn8s+M
nZWdfX4u+dxg26K2e+djzt9qD2/vuhB04dJF/4vnO7w7zlzyuHTystvlE1e4V5qvOl9t6nTqPP6T
00/Hu5y7mq65XGu57nq9tXtm9+kbnjfO3fS9efEW/9bVnjk93b3zem/3xff13xbdfnIn/c7Lu9l3
J+6tvE+8X/RA7UHZQ92H1T9b/tzY79x/asB3oPPR3Ef3BoWDz/6R9Y8PQwWPmY/Lhg2G6544Pjk5
4j9y/en8p0PPZM8mnhf+ov7LrhcWL3741evXztGY0aGX8peTv218pf3qwOsZr9vGwsYevsl4MzFe
9Fb77cF33Hcd76PfD0/kfCB/KP9o+bH1U9Cn+5MZk5P/BAOY8/xjMy3bAAAAIGNIUk0AAHolAACA
gwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAF6SURBVHja7N1BasJAAEbhN4lmdBHSIlIX
7QXEhWAruCpI6aJH6Kp4oOw9lVfpolQiNXZhpPQEncL7IBcY+HmTbBL40QNKYAxMgAqIQEDSn7sM
MXYDXQBroO/RSGnpdc8EeAKWdV3PNpvNvCzLYZZlVlVKaKwlcA8sd7vdy3w+v/VYpDTHegOs67qe
XYZ6Op08GSnBd9ZH4HW/378NBoPCoUppyoArgBhj4XFIaV+DC4AQzt+SLKuUblkl/ZOy/mJZJcsq
ybJKjlWS12BJllWyrJIsqyTHKnkNlmRZJTlWybFK8p1VsqyWVXKskrwGS5bVskqWVZJllRyrJK/B
kiyrZFkl/WlZD5eihhAsq5RwWd8BmqY5ABSFv7yRUpQDQ+BhNBq1q9XqLs9z2rbleDx6OlJCAnAN
rIFnf6YspV3WL+ADiNvt9rOqqmY6nY5ijL1w+bWcpCTKChCBCbDoKtv3aKQ0xwrnL8MlMO6GW3Uj
tq5SAr4BAAD//wMA2mVllhStkjYAAAAASUVORK5CYIIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L2NvbWJvL2NvbWJvX2hvdmVy
X2J1dHRvbi5wbmcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2
NDQAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDA1Nzc2ADExMzM0Nzc2NTMyADAyNDIzMQAgMAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGxlYW5kcm8AAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAbGVhbmRybwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAACJUE5HDQoaCgAAAA1JSERSAAAAKQAAACgIBgAAAGM801MAAAAJcEhZcwAACxMAAAsT
AQCanBgAAApPaUNDUFBob3Rvc2hvcCBJQ0MgcHJvZmlsZQAAeNqdU2dUU+kWPffe9EJLiICUS29S
FQggUkKLgBSRJiohCRBKiCGh2RVRwRFFRQQbyKCIA46OgIwVUSwMigrYB+Qhoo6Do4iKyvvhe6Nr
1rz35s3+tdc+56zznbPPB8AIDJZIM1E1gAypQh4R4IPHxMbh5C5AgQokcAAQCLNkIXP9IwEA+H48
PCsiwAe+AAF40wsIAMBNm8AwHIf/D+pCmVwBgIQBwHSROEsIgBQAQHqOQqYAQEYBgJ2YJlMAoAQA
YMtjYuMAUC0AYCd/5tMAgJ34mXsBAFuUIRUBoJEAIBNliEQAaDsArM9WikUAWDAAFGZLxDkA2C0A
MElXZkgAsLcAwM4QC7IACAwAMFGIhSkABHsAYMgjI3gAhJkAFEbyVzzxK64Q5yoAAHiZsjy5JDlF
gVsILXEHV1cuHijOSRcrFDZhAmGaQC7CeZkZMoE0D+DzzAAAoJEVEeCD8/14zg6uzs42jrYOXy3q
vwb/ImJi4/7lz6twQAAA4XR+0f4sL7MagDsGgG3+oiXuBGheC6B194tmsg9AtQCg6dpX83D4fjw8
RaGQudnZ5eTk2ErEQlthyld9/mfCX8BX/Wz5fjz89/XgvuIkgTJdgUcE+ODCzPRMpRzPkgmEYtzm
j0f8twv//B3TIsRJYrlYKhTjURJxjkSajPMypSKJQpIpxSXS/2Ti3yz7Az7fNQCwaj4Be5EtqF1j
A/ZLJxBYdMDi9wAA8rtvwdQoCAOAaIPhz3f/7z/9R6AlAIBmSZJxAABeRCQuVMqzP8cIAABEoIEq
sEEb9MEYLMAGHMEF3MEL/GA2hEIkxMJCEEIKZIAccmAprIJCKIbNsB0qYC/UQB00wFFohpNwDi7C
VbgOPXAP+mEInsEovIEJBEHICBNhIdqIAWKKWCOOCBeZhfghwUgEEoskIMmIFFEiS5E1SDFSilQg
VUgd8j1yAjmHXEa6kTvIADKC/Ia8RzGUgbJRPdQMtUO5qDcahEaiC9BkdDGajxagm9BytBo9jDah
59CraA/ajz5DxzDA6BgHM8RsMC7Gw0KxOCwJk2PLsSKsDKvGGrBWrAO7ifVjz7F3BBKBRcAJNgR3
QiBhHkFIWExYTthIqCAcJDQR2gk3CQOEUcInIpOoS7QmuhH5xBhiMjGHWEgsI9YSjxMvEHuIQ8Q3
JBKJQzInuZACSbGkVNIS0kbSblIj6SypmzRIGiOTydpka7IHOZQsICvIheSd5MPkM+Qb5CHyWwqd
YkBxpPhT4ihSympKGeUQ5TTlBmWYMkFVo5pS3aihVBE1j1pCraG2Uq9Rh6gTNHWaOc2DFklLpa2i
ldMaaBdo92mv6HS6Ed2VHk6X0FfSy+lH6JfoA/R3DA2GFYPHiGcoGZsYBxhnGXcYr5hMphnTixnH
VDA3MeuY55kPmW9VWCq2KnwVkcoKlUqVJpUbKi9Uqaqmqt6qC1XzVctUj6leU32uRlUzU+OpCdSW
q1WqnVDrUxtTZ6k7qIeqZ6hvVD+kfln9iQZZw0zDT0OkUaCxX+O8xiALYxmzeCwhaw2rhnWBNcQm
sc3ZfHYqu5j9HbuLPaqpoTlDM0ozV7NS85RmPwfjmHH4nHROCecop5fzforeFO8p4ikbpjRMuTFl
XGuqlpeWWKtIq1GrR+u9Nq7tp52mvUW7WfuBDkHHSidcJ0dnj84FnedT2VPdpwqnFk09OvWuLqpr
pRuhu0R3v26n7pievl6Ankxvp955vef6HH0v/VT9bfqn9UcMWAazDCQG2wzOGDzFNXFvPB0vx9vx
UUNdw0BDpWGVYZfhhJG50Tyj1UaNRg+MacZc4yTjbcZtxqMmBiYhJktN6k3umlJNuaYppjtMO0zH
zczNos3WmTWbPTHXMueb55vXm9+3YFp4Wiy2qLa4ZUmy5FqmWe62vG6FWjlZpVhVWl2zRq2drSXW
u627pxGnuU6TTque1mfDsPG2ybaptxmw5dgG2662bbZ9YWdiF2e3xa7D7pO9k326fY39PQcNh9kO
qx1aHX5ztHIUOlY63prOnO4/fcX0lukvZ1jPEM/YM+O2E8spxGmdU5vTR2cXZ7lzg/OIi4lLgssu
lz4umxvG3ci95Ep09XFd4XrS9Z2bs5vC7ajbr+427mnuh9yfzDSfKZ5ZM3PQw8hD4FHl0T8Ln5Uw
a9+sfk9DT4FntecjL2MvkVet17C3pXeq92HvFz72PnKf4z7jPDfeMt5ZX8w3wLfIt8tPw2+eX4Xf
Q38j/2T/ev/RAKeAJQFnA4mBQYFbAvv4enwhv44/Ottl9rLZ7UGMoLlBFUGPgq2C5cGtIWjI7JCt
IffnmM6RzmkOhVB+6NbQB2HmYYvDfgwnhYeFV4Y/jnCIWBrRMZc1d9HcQ3PfRPpElkTem2cxTzmv
LUo1Kj6qLmo82je6NLo/xi5mWczVWJ1YSWxLHDkuKq42bmy+3/zt84fineIL43sXmC/IXXB5oc7C
9IWnFqkuEiw6lkBMiE44lPBBECqoFowl8hN3JY4KecIdwmciL9E20YjYQ1wqHk7ySCpNepLskbw1
eSTFM6Us5bmEJ6mQvEwNTN2bOp4WmnYgbTI9Or0xg5KRkHFCqiFNk7Zn6mfmZnbLrGWFsv7Fbou3
Lx6VB8lrs5CsBVktCrZCpuhUWijXKgeyZ2VXZr/Nico5lqueK83tzLPK25A3nO+f/+0SwhLhkral
hktXLR1Y5r2sajmyPHF52wrjFQUrhlYGrDy4irYqbdVPq+1Xl65+vSZ6TWuBXsHKgsG1AWvrC1UK
5YV969zX7V1PWC9Z37Vh+oadGz4ViYquFNsXlxV/2CjceOUbh2/Kv5nclLSpq8S5ZM9m0mbp5t4t
nlsOlqqX5pcObg3Z2rQN31a07fX2Rdsvl80o27uDtkO5o788uLxlp8nOzTs/VKRU9FT6VDbu0t21
Ydf4btHuG3u89jTs1dtbvPf9Psm+21UBVU3VZtVl+0n7s/c/romq6fiW+21drU5tce3HA9ID/Qcj
DrbXudTVHdI9VFKP1ivrRw7HH77+ne93LQ02DVWNnMbiI3BEeeTp9wnf9x4NOtp2jHus4QfTH3Yd
Zx0vakKa8ppGm1Oa+1tiW7pPzD7R1ureevxH2x8PnDQ8WXlK81TJadrpgtOTZ/LPjJ2VnX1+Lvnc
YNuitnvnY87fag9v77oQdOHSRf+L5zu8O85c8rh08rLb5RNXuFearzpfbep06jz+k9NPx7ucu5qu
uVxrue56vbV7ZvfpG543zt30vXnxFv/W1Z45Pd2983pv98X39d8W3X5yJ/3Oy7vZdyfurbxPvF/0
QO1B2UPdh9U/W/7c2O/cf2rAd6Dz0dxH9waFg8/+kfWPD0MFj5mPy4YNhuueOD45OeI/cv3p/KdD
z2TPJp4X/qL+y64XFi9++NXr187RmNGhl/KXk79tfKX96sDrGa/bxsLGHr7JeDMxXvRW++3Bd9x3
He+j3w9P5Hwgfyj/aPmx9VPQp/uTGZOT/wQDmPP8YzMt2wAAACBjSFJNAAB6JQAAgIMAAPn/AACA
6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABKUlEQVR42uyZsUqGYBSGn+/Hvvi2WmoJ2pt0aZboCoJu
oNFbEXQTupGmn7aCgvAiWooW5afEyr4GNYyiKfBE5wHBz+n1Pe85wtEAx8yPB1qgBu6AB2AFvAIE
wCGyeAHOgZtBcEscx14CXde9VVX1mGXZBXAKnAC7QCBG5JSyLG8HoUfA5uJTMLyf/QIIw3AnTdM9
4ADYWgjL44fQJEn2gTVgW5zIEeecHW43glH59C3mxhiDMWY8rot1ckrwXR6koU5qucU5KXEEaeNo
42i5/0t3ayZ1BGm59dutmdTGUSd1BP0KEy2tOCet7VdATdM8D48qUZm01uKcA6Aoimv6re/931ui
zpxBX9f1U57nl1EUnQFX9HvzlRkUS+LLYj8AlhKM5IdfJO8DAF/EnomoX5hWAAAAAElFTkSuQmCC
AABXZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvY29tYm8vY29tYm9fbm9ybWFsLnBuZwAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAx
NzUwADAwMDE3NTAAMDAwMDAwMDYxMDUAMTEzMzQ3NzY1MzIAMDIyNzY2ACAwAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAbGVhbmRybwAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABsZWFuZHJvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AIlQTkcNChoKAAAADUlIRFIAAADrAAAAKAgGAAAAH3YNzwAAAAlwSFlzAAALEwAACxMBAJqcGAAA
Ck9pQ0NQUGhvdG9zaG9wIElDQyBwcm9maWxlAAB42p1TZ1RT6RY99970QkuIgJRLb1IVCCBSQouA
FJEmKiEJEEqIIaHZFVHBEUVFBBvIoIgDjo6AjBVRLAyKCtgH5CGijoOjiIrK++F7o2vWvPfmzf61
1z7nrPOds88HwAgMlkgzUTWADKlCHhHgg8fExuHkLkCBCiRwABAIs2Qhc/0jAQD4fjw8KyLAB74A
AXjTCwgAwE2bwDAch/8P6kKZXAGAhAHAdJE4SwiAFABAeo5CpgBARgGAnZgmUwCgBABgy2Ni4wBQ
LQBgJ3/m0wCAnfiZewEAW5QhFQGgkQAgE2WIRABoOwCsz1aKRQBYMAAUZkvEOQDYLQAwSVdmSACw
twDAzhALsgAIDAAwUYiFKQAEewBgyCMjeACEmQAURvJXPPErrhDnKgAAeJmyPLkkOUWBWwgtcQdX
Vy4eKM5JFysUNmECYZpALsJ5mRkygTQP4PPMAACgkRUR4IPz/XjODq7OzjaOtg5fLeq/Bv8iYmLj
/uXPq3BAAADhdH7R/iwvsxqAOwaAbf6iJe4EaF4LoHX3i2ayD0C1AKDp2lfzcPh+PDxFoZC52dnl
5OTYSsRCW2HKV33+Z8JfwFf9bPl+PPz39eC+4iSBMl2BRwT44MLM9EylHM+SCYRi3OaPR/y3C//8
HdMixEliuVgqFONREnGORJqM8zKlIolCkinFJdL/ZOLfLPsDPt81ALBqPgF7kS2oXWMD9ksnEFh0
wOL3AADyu2/B1CgIA4Bog+HPd//vP/1HoCUAgGZJknEAAF5EJC5UyrM/xwgAAESggSqwQRv0wRgs
wAYcwQXcwQv8YDaEQiTEwkIQQgpkgBxyYCmsgkIohs2wHSpgL9RAHTTAUWiGk3AOLsJVuA49cA/6
YQiewSi8gQkEQcgIE2Eh2ogBYopYI44IF5mF+CHBSAQSiyQgyYgUUSJLkTVIMVKKVCBVSB3yPXIC
OYdcRrqRO8gAMoL8hrxHMZSBslE91Ay1Q7moNxqERqIL0GR0MZqPFqCb0HK0Gj2MNqHn0KtoD9qP
PkPHMMDoGAczxGwwLsbDQrE4LAmTY8uxIqwMq8YasFasA7uJ9WPPsXcEEoFFwAk2BHdCIGEeQUhY
TFhO2EioIBwkNBHaCTcJA4RRwicik6hLtCa6EfnEGGIyMYdYSCwj1hKPEy8Qe4hDxDckEolDMie5
kAJJsaRU0hLSRtJuUiPpLKmbNEgaI5PJ2mRrsgc5lCwgK8iF5J3kw+Qz5BvkIfJbCp1iQHGk+FPi
KFLKakoZ5RDlNOUGZZgyQVWjmlLdqKFUETWPWkKtobZSr1GHqBM0dZo5zYMWSUulraKV0xpoF2j3
aa/odLoR3ZUeTpfQV9LL6Ufol+gD9HcMDYYVg8eIZygZmxgHGGcZdxivmEymGdOLGcdUMDcx65jn
mQ+Zb1VYKrYqfBWRygqVSpUmlRsqL1Spqqaq3qoLVfNVy1SPqV5Tfa5GVTNT46kJ1JarVaqdUOtT
G1NnqTuoh6pnqG9UP6R+Wf2JBlnDTMNPQ6RRoLFf47zGIAtjGbN4LCFrDauGdYE1xCaxzdl8diq7
mP0du4s9qqmhOUMzSjNXs1LzlGY/B+OYcficdE4J5yinl/N+it4U7yniKRumNEy5MWVca6qWl5ZY
q0irUatH6702ru2nnaa9RbtZ+4EOQcdKJ1wnR2ePzgWd51PZU92nCqcWTT069a4uqmulG6G7RHe/
bqfumJ6+XoCeTG+n3nm95/ocfS/9VP1t+qf1RwxYBrMMJAbbDM4YPMU1cW88HS/H2/FRQ13DQEOl
YZVhl+GEkbnRPKPVRo1GD4xpxlzjJONtxm3GoyYGJiEmS03qTe6aUk25pimmO0w7TMfNzM2izdaZ
NZs9Mdcy55vnm9eb37dgWnhaLLaotrhlSbLkWqZZ7ra8boVaOVmlWFVaXbNGrZ2tJda7rbunEae5
TpNOq57WZ8Ow8bbJtqm3GbDl2AbbrrZttn1hZ2IXZ7fFrsPuk72Tfbp9jf09Bw2H2Q6rHVodfnO0
chQ6Vjrems6c7j99xfSW6S9nWM8Qz9gz47YTyynEaZ1Tm9NHZxdnuXOD84iLiUuCyy6XPi6bG8bd
yL3kSnT1cV3hetL1nZuzm8LtqNuv7jbuae6H3J/MNJ8pnlkzc9DDyEPgUeXRPwuflTBr36x+T0NP
gWe15yMvYy+RV63XsLeld6r3Ye8XPvY+cp/jPuM8N94y3llfzDfAt8i3y0/Db55fhd9DfyP/ZP96
/9EAp4AlAWcDiYFBgVsC+/h6fCG/jj8622X2stntQYyguUEVQY+CrYLlwa0haMjskK0h9+eYzpHO
aQ6FUH7o1tAHYeZhi8N+DCeFh4VXhj+OcIhYGtExlzV30dxDc99E+kSWRN6bZzFPOa8tSjUqPqou
ajzaN7o0uj/GLmZZzNVYnVhJbEscOS4qrjZubL7f/O3zh+Kd4gvjexeYL8hdcHmhzsL0hacWqS4S
LDqWQEyITjiU8EEQKqgWjCXyE3cljgp5wh3CZyIv0TbRiNhDXCoeTvJIKk16kuyRvDV5JMUzpSzl
uYQnqZC8TA1M3Zs6nhaadiBtMj06vTGDkpGQcUKqIU2TtmfqZ+ZmdsusZYWy/sVui7cvHpUHyWuz
kKwFWS0KtkKm6FRaKNcqB7JnZVdmv82JyjmWq54rze3Ms8rbkDec75//7RLCEuGStqWGS1ctHVjm
vaxqObI8cXnbCuMVBSuGVgasPLiKtipt1U+r7VeXrn69JnpNa4FewcqCwbUBa+sLVQrlhX3r3Nft
XU9YL1nftWH6hp0bPhWJiq4U2xeXFX/YKNx45RuHb8q/mdyUtKmrxLlkz2bSZunm3i2eWw6Wqpfm
lw5uDdnatA3fVrTt9fZF2y+XzSjbu4O2Q7mjvzy4vGWnyc7NOz9UpFT0VPpUNu7S3bVh1/hu0e4b
e7z2NOzV21u89/0+yb7bVQFVTdVm1WX7Sfuz9z+uiarp+Jb7bV2tTm1x7ccD0gP9ByMOtte51NUd
0j1UUo/WK+tHDscfvv6d73ctDTYNVY2cxuIjcER55On3Cd/3Hg062naMe6zhB9Mfdh1nHS9qQpry
mkabU5r7W2Jbuk/MPtHW6t56/EfbHw+cNDxZeUrzVMlp2umC05Nn8s+MnZWdfX4u+dxg26K2e+dj
zt9qD2/vuhB04dJF/4vnO7w7zlzyuHTystvlE1e4V5qvOl9t6nTqPP6T00/Hu5y7mq65XGu57nq9
tXtm9+kbnjfO3fS9efEW/9bVnjk93b3zem/3xff13xbdfnIn/c7Lu9l3J+6tvE+8X/RA7UHZQ92H
1T9b/tzY79x/asB3oPPR3Ef3BoWDz/6R9Y8PQwWPmY/Lhg2G6544Pjk54j9y/en8p0PPZM8mnhf+
ov7LrhcWL3741evXztGY0aGX8peTv218pf3qwOsZr9vGwsYevsl4MzFe9Fb77cF33Hcd76PfD0/k
fCB/KP9o+bH1U9Cn+5MZk5P/BAOY8/xjMy3bAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA
6mAAADqYAAAXb5JfxUYAAAFwSURBVHja7N0xTsMwAEbh59YpTZaylFRQVm7A0Gt05R4cgpWZY7Cn
Q+9SGFgjmqphqCNgZMKV3rdms/T0y8rgwLcRUAAlUAETYJy+BST9qyHCcQp0DixTuJIyElOYVYq0
bppmvVqtHoqiuAwhGK2UUawFcAXUu93uqa7re49FyjPWCrhpmmY9hNr3vScjZXhnvQbuuq57jTFW
hirlu6wXADHG0lWV8o519GNljVXK1Aj/oUpns6y/uKySsUoyVslYJRmrJGOVjFWSsUoyVslYJRmr
JGOVjFWSsUrGaqySsUoyVslYjVUyVknGKhmrJGOV9Cc+PCWd0bL2Lqt0HrEeh06BYKxSvrF+AhwO
hzbGWE2nU9q29WSkDO+sLXDcbrcvALPZjLIsPRkpM4HTK3JL4NbHlKW8l7UD3oG3xWLxuNlsnvf7
/Ufv5VXKblkBxpxeQJ+nlfWXjpRprMPKFkCZwp2kiH0SUsrAFwAAAP//AwAmvIaEHW05EAAAAABJ
RU5ErkJgggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAV2ViS2l0
L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L2NvbWJvL2NvbWJvX25vcm1hbF9idXR0b24ucG5nAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMTc1MAAwMDAx
NzUwADAwMDAwMDA1NzY2ADExMzM0Nzc2NTMyADAyNDM3NQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGxlYW5kcm8AAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAbGVhbmRybwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJUE5HDQoa
CgAAAA1JSERSAAAAKQAAACgIBgAAAGM801MAAAAJcEhZcwAACxMAAAsTAQCanBgAAApPaUNDUFBo
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
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFdlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdl
dC9jb21iby9pY29uLnBuZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwNTQyMwAxMTMzNDc3
NjUzMgAwMjEyNTEAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
dXN0YXIgIABsZWFuZHJvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGxlYW5kcm8AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiVBORw0KGgoAAAANSUhEUgAAABUAAAANCAYAAABG
kiVgAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHja
nVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEs
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
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L2VudHJ5L2ltZ19ob3Zl
cmVkLnBuZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAw
MDA2NDQAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDA2NzU2ADExMzM0Nzc2NTMyADAyMjY2NQAgMAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGxlYW5kcm8A
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbGVhbmRybwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAACJUE5HDQoaCgAAAA1JSERSAAABFAAAACgIBgAAAD+/BRsAAAAJcEhZcwAACxMA
AAsTAQCanBgAAApPaUNDUFBob3Rvc2hvcCBJQ0MgcHJvZmlsZQAAeNqdU2dUU+kWPffe9EJLiICU
S29SFQggUkKLgBSRJiohCRBKiCGh2RVRwRFFRQQbyKCIA46OgIwVUSwMigrYB+Qhoo6Do4iKyvvh
e6Nr1rz35s3+tdc+56zznbPPB8AIDJZIM1E1gAypQh4R4IPHxMbh5C5AgQokcAAQCLNkIXP9IwEA
+H48PCsiwAe+AAF40wsIAMBNm8AwHIf/D+pCmVwBgIQBwHSROEsIgBQAQHqOQqYAQEYBgJ2YJlMA
oAQAYMtjYuMAUC0AYCd/5tMAgJ34mXsBAFuUIRUBoJEAIBNliEQAaDsArM9WikUAWDAAFGZLxDkA
2C0AMElXZkgAsLcAwM4QC7IACAwAMFGIhSkABHsAYMgjI3gAhJkAFEbyVzzxK64Q5yoAAHiZsjy5
JDlFgVsILXEHV1cuHijOSRcrFDZhAmGaQC7CeZkZMoE0D+DzzAAAoJEVEeCD8/14zg6uzs42jrYO
Xy3qvwb/ImJi4/7lz6twQAAA4XR+0f4sL7MagDsGgG3+oiXuBGheC6B194tmsg9AtQCg6dpX83D4
fjw8RaGQudnZ5eTk2ErEQlthyld9/mfCX8BX/Wz5fjz89/XgvuIkgTJdgUcE+ODCzPRMpRzPkgmE
Ytzmj0f8twv//B3TIsRJYrlYKhTjURJxjkSajPMypSKJQpIpxSXS/2Ti3yz7Az7fNQCwaj4Be5Et
qF1jA/ZLJxBYdMDi9wAA8rtvwdQoCAOAaIPhz3f/7z/9R6AlAIBmSZJxAABeRCQuVMqzP8cIAABE
oIEqsEEb9MEYLMAGHMEF3MEL/GA2hEIkxMJCEEIKZIAccmAprIJCKIbNsB0qYC/UQB00wFFohpNw
Di7CVbgOPXAP+mEInsEovIEJBEHICBNhIdqIAWKKWCOOCBeZhfghwUgEEoskIMmIFFEiS5E1SDFS
ilQgVUgd8j1yAjmHXEa6kTvIADKC/Ia8RzGUgbJRPdQMtUO5qDcahEaiC9BkdDGajxagm9BytBo9
jDah59CraA/ajz5DxzDA6BgHM8RsMC7Gw0KxOCwJk2PLsSKsDKvGGrBWrAO7ifVjz7F3BBKBRcAJ
NgR3QiBhHkFIWExYTthIqCAcJDQR2gk3CQOEUcInIpOoS7QmuhH5xBhiMjGHWEgsI9YSjxMvEHuI
Q8Q3JBKJQzInuZACSbGkVNIS0kbSblIj6SypmzRIGiOTydpka7IHOZQsICvIheSd5MPkM+Qb5CHy
WwqdYkBxpPhT4ihSympKGeUQ5TTlBmWYMkFVo5pS3aihVBE1j1pCraG2Uq9Rh6gTNHWaOc2DFklL
pa2ildMaaBdo92mv6HS6Ed2VHk6X0FfSy+lH6JfoA/R3DA2GFYPHiGcoGZsYBxhnGXcYr5hMphnT
ixnHVDA3MeuY55kPmW9VWCq2KnwVkcoKlUqVJpUbKi9Uqaqmqt6qC1XzVctUj6leU32uRlUzU+Op
CdSWq1WqnVDrUxtTZ6k7qIeqZ6hvVD+kfln9iQZZw0zDT0OkUaCxX+O8xiALYxmzeCwhaw2rhnWB
NcQmsc3ZfHYqu5j9HbuLPaqpoTlDM0ozV7NS85RmPwfjmHH4nHROCecop5fzforeFO8p4ikbpjRM
uTFlXGuqlpeWWKtIq1GrR+u9Nq7tp52mvUW7WfuBDkHHSidcJ0dnj84FnedT2VPdpwqnFk09OvWu
LqprpRuhu0R3v26n7pievl6Ankxvp955vef6HH0v/VT9bfqn9UcMWAazDCQG2wzOGDzFNXFvPB0v
x9vxUUNdw0BDpWGVYZfhhJG50Tyj1UaNRg+MacZc4yTjbcZtxqMmBiYhJktN6k3umlJNuaYppjtM
O0zHzczNos3WmTWbPTHXMueb55vXm9+3YFp4Wiy2qLa4ZUmy5FqmWe62vG6FWjlZpVhVWl2zRq2d
rSXWu627pxGnuU6TTque1mfDsPG2ybaptxmw5dgG2662bbZ9YWdiF2e3xa7D7pO9k326fY39PQcN
h9kOqx1aHX5ztHIUOlY63prOnO4/fcX0lukvZ1jPEM/YM+O2E8spxGmdU5vTR2cXZ7lzg/OIi4lL
gssulz4umxvG3ci95Ep09XFd4XrS9Z2bs5vC7ajbr+427mnuh9yfzDSfKZ5ZM3PQw8hD4FHl0T8L
n5Uwa9+sfk9DT4FntecjL2MvkVet17C3pXeq92HvFz72PnKf4z7jPDfeMt5ZX8w3wLfIt8tPw2+e
X4XfQ38j/2T/ev/RAKeAJQFnA4mBQYFbAvv4enwhv44/Ottl9rLZ7UGMoLlBFUGPgq2C5cGtIWjI
7JCtIffnmM6RzmkOhVB+6NbQB2HmYYvDfgwnhYeFV4Y/jnCIWBrRMZc1d9HcQ3PfRPpElkTem2cx
TzmvLUo1Kj6qLmo82je6NLo/xi5mWczVWJ1YSWxLHDkuKq42bmy+3/zt84fineIL43sXmC/IXXB5
oc7C9IWnFqkuEiw6lkBMiE44lPBBECqoFowl8hN3JY4KecIdwmciL9E20YjYQ1wqHk7ySCpNepLs
kbw1eSTFM6Us5bmEJ6mQvEwNTN2bOp4WmnYgbTI9Or0xg5KRkHFCqiFNk7Zn6mfmZnbLrGWFsv7F
bou3Lx6VB8lrs5CsBVktCrZCpuhUWijXKgeyZ2VXZr/Nico5lqueK83tzLPK25A3nO+f/+0SwhLh
kralhktXLR1Y5r2sajmyPHF52wrjFQUrhlYGrDy4irYqbdVPq+1Xl65+vSZ6TWuBXsHKgsG1AWvr
C1UK5YV969zX7V1PWC9Z37Vh+oadGz4ViYquFNsXlxV/2CjceOUbh2/Kv5nclLSpq8S5ZM9m0mbp
5t4tnlsOlqqX5pcObg3Z2rQN31a07fX2Rdsvl80o27uDtkO5o788uLxlp8nOzTs/VKRU9FT6VDbu
0t21Ydf4btHuG3u89jTs1dtbvPf9Psm+21UBVU3VZtVl+0n7s/c/romq6fiW+21drU5tce3HA9ID
/QcjDrbXudTVHdI9VFKP1ivrRw7HH77+ne93LQ02DVWNnMbiI3BEeeTp9wnf9x4NOtp2jHus4QfT
H3YdZx0vakKa8ppGm1Oa+1tiW7pPzD7R1ureevxH2x8PnDQ8WXlK81TJadrpgtOTZ/LPjJ2VnX1+
LvncYNuitnvnY87fag9v77oQdOHSRf+L5zu8O85c8rh08rLb5RNXuFearzpfbep06jz+k9NPx7uc
u5quuVxrue56vbV7ZvfpG543zt30vXnxFv/W1Z45Pd2983pv98X39d8W3X5yJ/3Oy7vZdyfurbxP
vF/0QO1B2UPdh9U/W/7c2O/cf2rAd6Dz0dxH9waFg8/+kfWPD0MFj5mPy4YNhuueOD45OeI/cv3p
/KdDz2TPJp4X/qL+y64XFi9++NXr187RmNGhl/KXk79tfKX96sDrGa/bxsLGHr7JeDMxXvRW++3B
d9x3He+j3w9P5Hwgfyj/aPmx9VPQp/uTGZOT/wQDmPP8YzMt2wAAACBjSFJNAAB6JQAAgIMAAPn/
AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADGUlEQVR42uzdv2vjZhzH8fcjPY+kSCq1bOfHiUI5
ewyFLiVz17b0L2iXg/sXkn+oW+lS7ubOoRkK3TQUCiGJE4ecsXxxI8XqcHEOJ+kdF3sox+c1Cezp
O7z5Skg8hrdawGfAJ0CIiMi7/QOMgcOmaV4BGN/3AT4HepqPiDzSX3Vd/22ttS3gKcDW1tYP7Xb7
+1ar1Y2iCM/zMMZoVCKyoKoqLi4uhufn578eHh7+BDyNouiVdc71AK/dbn/X6/We9ft9ut0uaZoS
BAE3G4zCIiILQRmNRt2iKJ75vj86Ojp6AfSttTYF6HQ6z/v9Ptvb2+R5TpZlxHGMc04xEZEFs9mM
sizZ3NxkMpk8Pz09fQGk1jnnAFqtVtrtdsnz/DYoaZpirVVQROSeuq6p65qiKNKDgwMDOBsEgQGI
oog0TcmyjCzL6HQ6JEmCtVaTE5EHDYdDsixj3pHboHieRxAExHFMmqYkSUKSJBhjtKGIyD1N07C2
tkYYhveDYozB932cc1hrb291FBMReci8DzfLyGJQ7v5pfi0i8q6oAG+DEoahufujiMiHmHdkISgi
IgqKiCgoIvKRBSWKIgNvXqUVEXmMeUduNxQFRURWtqGUZampiMhyG8r8QkRkFUHxNA4RWTIonjYU
EVnthhKGCoqILGfeERtFeg9FRJbdUEI9lBWRFd/y6KGsiKwgKHooKyKr31AUFBFZTVD0caCILOve
q/ciItpQROT/s6EoKCKioIiIgiIiH3FQ7h6jISLyof7zXB4RkaWDUlUVVVUxm800HRF5r+vra66u
rri8vFwISgUEk8nk9Wg0isuypK5r4M3ZpTr8S0Qeisl4PGYwGDAYDKY3Qamsc+4C2NrZ2fmlKIof
NzY2qOuas7Mz4jjW+cYisqBpGqqq4uTkhP39fXq93s/OOQOcm/F4/AT4BjB7e3vfHh8ff53n+adZ
lhGGIZ6nj5FFZDEo0+mU4XA4Wl9f/213d/cl0AAvzXQ6BfgS+EqjEpFH+j0Mwz/M/HkJ8AT4AlgH
Ys1HRN7jNXAG/On7/jHAvwAAAP//AwCPuskwOTk53wAAAABJRU5ErkJgggAAAAAAAAAAAAAAAAAA
AAAAAFdlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9lbnRyeS9pbWdfbm9ybWFsLnBuZwAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAw
MDE3NTAAMDAwMTc1MAAwMDAwMDAwNzA1MgAxMTMzNDc3NjUzMgAwMjI1MDcAIDAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABsZWFuZHJvAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAGxlYW5kcm8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAiVBORw0KGgoAAAANSUhEUgAAARQAAAAoCAYAAAA/vwUbAAAACXBIWXMAAAsTAAALEwEAmpwY
AAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJC
i4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN
/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAH
vgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2Lj
AFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZI
ALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1x
B1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJi
YuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ
2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL
//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQ
WHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TB
GCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1w
D/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9
cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP
2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5B
SFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMy
J7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4
U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgX
aPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHr
mOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q
61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2
KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaX
llirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtE
d79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNA
Q6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN
1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cR
p7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+
c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsb
xt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5P
Q0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k
/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jO
kc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+
qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxap
LhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOl
LOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJ
a7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0d
WOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc
1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaq
l+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R
7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU
1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pC
mvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ7
52PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nu
er21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD
3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyae
F/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98P
T+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUw
AADqYAAAOpgAABdvkl/FRgAAA1VJREFUeNrs3b1u21YYh/HnkDw8pODqk4EdoP5Iansr4KUX0LUt
egXJEiC+Fd9It6JLkcy9gA4u0MGDgMoFCnSQ7EqyJcsgJWaJFMiS7Ejs+P8BAgSNZ3jwvhRBGj6p
Al8CXwAOEZHH3QM3wD95nncBjO/7APvAS52PiGzoryzL/g6CIKgCLwAODw9fJUnyY61WS8IwxPd9
jDE6KhGZyfOcLMvodruddrv968XFxU/AiyiKuoG19iXg7e7u/nB0dPRmf3+fRqNBHMdYa/E8T1ER
kbmgjMdj+v1+0mq13hhjes1m8x3wVRAEwRbA9vb224ODA46Pj0mShHK5TBRFeJ6H53k6RRGZmUwm
DIdDGo0Gd3d3b1ut1jtgK7DWWoBqtbpVr9dJkmQuKFp7RGSZLMtI05TLy8sta60BbBCGoQEIw5BS
qUSlUqFcLlOpVIjjWNOJiKzU6/Uol8tMOzILiu/7BEGAc444jonjGOecgiIiK4VhiHNuMSie582i
EgQBvu/z8S9lEZGlfN/H87zFoAAYYzSRiMhajDGfguKcmwvKw4+IyGMxAZh2ZC4oIiKbWAjKtDSa
UERknQnFGLM8KMuiIiLy2UGJokjVEJFCph3RRVkRKTShAIsTyng81umISLEJZfplMBgsnVJERB6b
UIwxc0HxFBQRKTiheHMTiohI4ZXHucgsm0w0oYjI5648044EUeQUFBEpFJRpR+ZWHt3YJiLrBmVu
5ZleTBER2dTKi7JaeURk/ZUnWr7yKCgisvHKo8cXiEhRC7feP5xKNKGIyNorjyYUEfnfJhQ9YElE
ik4oKx8BqaCISOEJRUSkcFAevkbj4ZQiIvLUyrPwXp48z3U6IrK2PM8Xg5KmKePxmDzPNaGIyJMm
kwlZljEajeaCkgLhcDgc9vv90mAwmIVFRGRVTG5vb7m6uqLT6Yw+BiUNrLX/ATsnJye/NJvN1/V6
nTRNqdVqRFGkV5OKyMKKk2UZnU6H8/Nz9vb2frbWGuDK3NzcPAe+A8zZ2dn37Xb7252dnUq1WsU5
p9VHRBamk/v7e66vr3v1ev2309PT90AOvDej0QjgBPhGRyUiG/rdOfeHybJs+sNz4GvgGVDS+YjI
E4ZAG/jT9/1/AT4AAAD//wMAM07Nni75hrsAAAAASUVORK5CYIIAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFdlYktp
dC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9maWxlL2ZpbGVfZm9jdXMucG5nAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDE3NTAAMDAw
MTc1MAAwMDAwMDAxMDU0NAAxMTMzNDc3NjUzMgAwMjIyNTcAIDAAAAAAAAAAAAAAAAAAAAAAAAAA
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
1MqlEkKs0L9N0/yPkjYPKwO+A7yAS66PEGIJk8D/gOeapn0E+HkASZBkCQzVd7YAAAAASUVORK5C
YIIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L3JhZGlvL2ltZ19yYWRp
b19vZmYucG5nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAw
MDA2NDQAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDA2NjQzADExMzM0Nzc2NTMyADAyMzExMQAgMAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGxlYW5kcm8A
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbGVhbmRybwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAACJUE5HDQoaCgAAAA1JSERSAAAAEAAAABAIBgAAAB/z/2EAAAAJcEhZcwAACxMA
AAsTAQCanBgAAApPaUNDUFBob3Rvc2hvcCBJQ0MgcHJvZmlsZQAAeNqdU2dUU+kWPffe9EJLiICU
S29SFQggUkKLgBSRJiohCRBKiCGh2RVRwRFFRQQbyKCIA46OgIwVUSwMigrYB+Qhoo6Do4iKyvvh
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
xGFxHH8AlwFAWZZ4nqdUREQcdryKBMAyz/Nmu922ikVExF3W2ibwHAAP1tqJMWYThqGO3CIibm7b
obX2HLj98w7YarUWjUbj3fd9vQOKiDigqip/u92e5Xne5fgO+KuA0+OngJOiAo6IiCs+gdfD0H4E
+AZAl3O3WVv7hgAAAABJRU5ErkJgggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAFdlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9zY3JvbGxiYXIvc2Ny
b2xsYmFyX2hpbGlnaHQucG5nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAw
MDAwNjQ0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDQzNQAxMTMzNDc3NjUzMgAwMjQ2NzYAIDAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABsZWFuZHJv
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGxlYW5kcm8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAiVBORw0KGgoAAAANSUhEUgAAAA0AAAAMCAYAAAC5tzfZAAAAAXNSR0IArs4c
6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9gIEgk2LTvLFrgAAAAZdEVYdENvbW1lbnQA
Q3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAiklEQVQoz73QwQnCQBAAwDlQUPBlA2InwUr8WJU1pAVJ
EdbhI4kSED0/CcRwieLDe+3t7sDu8q8XuqAoijX22GDe67njjDzLsssbijEesMOqn0dEjVMI4Qiz
XnGLB8rERLGtG6KmBWFklSaFKiwnUJ1CNRYTR6tSqBz8v0LXD2h0vPALek6gWxe8AFEYIL2Cf86a
AAAAAElFTkSuQmCCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAABXZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvc2Nyb2xsYmFyL3Njcm9s
bGJhcl9rbm9iX2gucG5nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAw
MDY0NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDU3MTAAMTEzMzQ3NzY1MzIAMDI0NTA3ACAwAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAbGVhbmRybwAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsZWFuZHJvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAIlQTkcNChoKAAAADUlIRFIAAAAgAAAACggGAAAA1U1cpAAACk9pQ0NQUGhvdG9z
aG9wIElDQyBwcm9maWxlAAB42p1TZ1RT6RY99970QkuIgJRLb1IVCCBSQouAFJEmKiEJEEqIIaHZ
FVHBEUVFBBvIoIgDjo6AjBVRLAyKCtgH5CGijoOjiIrK++F7o2vWvPfmzf611z7nrPOds88HwAgM
lkgzUTWADKlCHhHgg8fExuHkLkCBCiRwABAIs2Qhc/0jAQD4fjw8KyLAB74AAXjTCwgAwE2bwDAc
h/8P6kKZXAGAhAHAdJE4SwiAFABAeo5CpgBARgGAnZgmUwCgBABgy2Ni4wBQLQBgJ3/m0wCAnfiZ
ewEAW5QhFQGgkQAgE2WIRABoOwCsz1aKRQBYMAAUZkvEOQDYLQAwSVdmSACwtwDAzhALsgAIDAAw
UYiFKQAEewBgyCMjeACEmQAURvJXPPErrhDnKgAAeJmyPLkkOUWBWwgtcQdXVy4eKM5JFysUNmEC
YZpALsJ5mRkygTQP4PPMAACgkRUR4IPz/XjODq7OzjaOtg5fLeq/Bv8iYmLj/uXPq3BAAADhdH7R
/iwvsxqAOwaAbf6iJe4EaF4LoHX3i2ayD0C1AKDp2lfzcPh+PDxFoZC52dnl5OTYSsRCW2HKV33+
Z8JfwFf9bPl+PPz39eC+4iSBMl2BRwT44MLM9EylHM+SCYRi3OaPR/y3C//8HdMixEliuVgqFONR
EnGORJqM8zKlIolCkinFJdL/ZOLfLPsDPt81ALBqPgF7kS2oXWMD9ksnEFh0wOL3AADyu2/B1CgI
A4Bog+HPd//vP/1HoCUAgGZJknEAAF5EJC5UyrM/xwgAAESggSqwQRv0wRgswAYcwQXcwQv8YDaE
QiTEwkIQQgpkgBxyYCmsgkIohs2wHSpgL9RAHTTAUWiGk3AOLsJVuA49cA/6YQiewSi8gQkEQcgI
E2Eh2ogBYopYI44IF5mF+CHBSAQSiyQgyYgUUSJLkTVIMVKKVCBVSB3yPXICOYdcRrqRO8gAMoL8
hrxHMZSBslE91Ay1Q7moNxqERqIL0GR0MZqPFqCb0HK0Gj2MNqHn0KtoD9qPPkPHMMDoGAczxGww
LsbDQrE4LAmTY8uxIqwMq8YasFasA7uJ9WPPsXcEEoFFwAk2BHdCIGEeQUhYTFhO2EioIBwkNBHa
CTcJA4RRwicik6hLtCa6EfnEGGIyMYdYSCwj1hKPEy8Qe4hDxDckEolDMie5kAJJsaRU0hLSRtJu
UiPpLKmbNEgaI5PJ2mRrsgc5lCwgK8iF5J3kw+Qz5BvkIfJbCp1iQHGk+FPiKFLKakoZ5RDlNOUG
ZZgyQVWjmlLdqKFUETWPWkKtobZSr1GHqBM0dZo5zYMWSUulraKV0xpoF2j3aa/odLoR3ZUeTpfQ
V9LL6Ufol+gD9HcMDYYVg8eIZygZmxgHGGcZdxivmEymGdOLGcdUMDcx65jnmQ+Zb1VYKrYqfBWR
ygqVSpUmlRsqL1Spqqaq3qoLVfNVy1SPqV5Tfa5GVTNT46kJ1JarVaqdUOtTG1NnqTuoh6pnqG9U
P6R+Wf2JBlnDTMNPQ6RRoLFf47zGIAtjGbN4LCFrDauGdYE1xCaxzdl8diq7mP0du4s9qqmhOUMz
SjNXs1LzlGY/B+OYcficdE4J5yinl/N+it4U7yniKRumNEy5MWVca6qWl5ZYq0irUatH6702ru2n
naa9RbtZ+4EOQcdKJ1wnR2ePzgWd51PZU92nCqcWTT069a4uqmulG6G7RHe/bqfumJ6+XoCeTG+n
3nm95/ocfS/9VP1t+qf1RwxYBrMMJAbbDM4YPMU1cW88HS/H2/FRQ13DQEOlYZVhl+GEkbnRPKPV
Ro1GD4xpxlzjJONtxm3GoyYGJiEmS03qTe6aUk25pimmO0w7TMfNzM2izdaZNZs9Mdcy55vnm9eb
37dgWnhaLLaotrhlSbLkWqZZ7ra8boVaOVmlWFVaXbNGrZ2tJda7rbunEae5TpNOq57WZ8Ow8bbJ
tqm3GbDl2AbbrrZttn1hZ2IXZ7fFrsPuk72Tfbp9jf09Bw2H2Q6rHVodfnO0chQ6Vjrems6c7j99
xfSW6S9nWM8Qz9gz47YTyynEaZ1Tm9NHZxdnuXOD84iLiUuCyy6XPi6bG8bdyL3kSnT1cV3hetL1
nZuzm8LtqNuv7jbuae6H3J/MNJ8pnlkzc9DDyEPgUeXRPwuflTBr36x+T0NPgWe15yMvYy+RV63X
sLeld6r3Ye8XPvY+cp/jPuM8N94y3llfzDfAt8i3y0/Db55fhd9DfyP/ZP96/9EAp4AlAWcDiYFB
gVsC+/h6fCG/jj8622X2stntQYyguUEVQY+CrYLlwa0haMjskK0h9+eYzpHOaQ6FUH7o1tAHYeZh
i8N+DCeFh4VXhj+OcIhYGtExlzV30dxDc99E+kSWRN6bZzFPOa8tSjUqPqouajzaN7o0uj/GLmZZ
zNVYnVhJbEscOS4qrjZubL7f/O3zh+Kd4gvjexeYL8hdcHmhzsL0hacWqS4SLDqWQEyITjiU8EEQ
KqgWjCXyE3cljgp5wh3CZyIv0TbRiNhDXCoeTvJIKk16kuyRvDV5JMUzpSzluYQnqZC8TA1M3Zs6
nhaadiBtMj06vTGDkpGQcUKqIU2TtmfqZ+ZmdsusZYWy/sVui7cvHpUHyWuzkKwFWS0KtkKm6FRa
KNcqB7JnZVdmv82JyjmWq54rze3Ms8rbkDec75//7RLCEuGStqWGS1ctHVjmvaxqObI8cXnbCuMV
BSuGVgasPLiKtipt1U+r7VeXrn69JnpNa4FewcqCwbUBa+sLVQrlhX3r3NftXU9YL1nftWH6hp0b
PhWJiq4U2xeXFX/YKNx45RuHb8q/mdyUtKmrxLlkz2bSZunm3i2eWw6Wqpfmlw5uDdnatA3fVrTt
9fZF2y+XzSjbu4O2Q7mjvzy4vGWnyc7NOz9UpFT0VPpUNu7S3bVh1/hu0e4be7z2NOzV21u89/0+
yb7bVQFVTdVm1WX7Sfuz9z+uiarp+Jb7bV2tTm1x7ccD0gP9ByMOtte51NUd0j1UUo/WK+tHDscf
vv6d73ctDTYNVY2cxuIjcER55On3Cd/3Hg062naMe6zhB9Mfdh1nHS9qQprymkabU5r7W2Jbuk/M
PtHW6t56/EfbHw+cNDxZeUrzVMlp2umC05Nn8s+MnZWdfX4u+dxg26K2e+djzt9qD2/vuhB04dJF
/4vnO7w7zlzyuHTystvlE1e4V5qvOl9t6nTqPP6T00/Hu5y7mq65XGu57nq9tXtm9+kbnjfO3fS9
efEW/9bVnjk93b3zem/3xff13xbdfnIn/c7Lu9l3J+6tvE+8X/RA7UHZQ92H1T9b/tzY79x/asB3
oPPR3Ef3BoWDz/6R9Y8PQwWPmY/Lhg2G6544Pjk54j9y/en8p0PPZM8mnhf+ov7LrhcWL3741evX
ztGY0aGX8peTv218pf3qwOsZr9vGwsYevsl4MzFe9Fb77cF33Hcd76PfD0/kfCB/KP9o+bH1U9Cn
+5MZk5P/BAOY8/xjMy3bAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA
B3RJTUUH2QMEFRkMuXyOaAAAAPpJREFUOMvFlDFKxEAYhb9xM6wwVVIkCN4gTWA7C1tvINjYW+Qq
OcP2Ia2IJCBYL4iXkC2STLYQnOTfsXD3CIkfvOov3nv88BR/KCAA1oAGLpiHI+BOmgB/Pqyrqrrt
+/5VRA5+JkTk0LbtS1mWN6eyAARFUWTOOSsifgk552xRFBkQKMDs9/sqiqI7FqTruuckSe4DQBtj
NiKypD/GmA2gAwARQSm1aIBz4QAYrbW7MAwXfYG1dgeMK8DHcfyZZdkDcOm9Z25N0zRst9vHpmm+
VsCxaZo+TdP3OI6vtdZXgJ7DWES+h2F4q+v6Kc/zD2BU/zBEI/BzHqJfPYer00q2sIAAAAAASUVO
RK5CYIIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAFdlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9zY3JvbGxiYXIvc2Nyb2xsYmFyX2tu
b2Jfdi5wbmcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAw
MDE3NTAAMDAwMTc1MAAwMDAwMDAwNTY3NQAxMTMzNDc3NjUzMgAwMjQ1MzcAIDAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABsZWFuZHJvAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAGxlYW5kcm8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAiVBORw0KGgoAAAANSUhEUgAAAAoAAAAgCAYAAAArBentAAAACXBIWXMAAAsTAAALEwEAmpwY
AAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJC
i4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN
/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAH
vgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2Lj
AFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZI
ALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1x
B1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJi
YuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ
2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL
//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQ
WHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TB
GCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1w
D/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9
cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP
2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5B
SFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMy
J7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4
U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgX
aPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHr
mOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q
61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2
KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaX
llirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtE
d79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNA
Q6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN
1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cR
p7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+
c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsb
xt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5P
Q0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k
/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jO
kc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+
qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxap
LhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOl
LOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJ
a7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0d
WOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc
1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaq
l+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R
7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU
1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pC
mvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ7
52PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nu
er21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD
3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyae
F/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98P
T+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUw
AADqYAAAOpgAABdvkl/FRgAAAOhJREFUeNrs1L9qg1AYhvHHj9pAW8FLyZxCri44eg/OzgHp4CKF
XoXgFolijn+K0Z5jF0PbgJDuebcDv4+zPRY/ewBWgD2/R+AMfF2ABax831/neb5v2/aglDpkWbb3
PG89H1sAdhiGm2EYTuM4Tn3fT13XTXVdT0VRnIIg2F5+eS7LMtJaT9ewqqopTdM34EWAR9d1NyzM
cZxXwBZARMRZgiLyBIhw4+7wDu/w/9AYY5olYIz5BIwAY13XH0uwaZp3YBTgHMfxTmutrpHWWiVJ
sptj9SdSUdu2R6XUMcuy6HekrFuz9z0AXNuHN2+fahEAAAAASUVORK5CYIIAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAV2Vi
S2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L3Njcm9sbGJhci9zY3JvbGxiYXJfdi5wbmcAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMTc1MAAw
MDAxNzUwADAwMDAwMDA2MDQ2ADExMzM0Nzc2NTMyADAyMzUxNwAgMAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGxlYW5kcm8AAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAbGVhbmRybwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJUE5H
DQoaCgAAAA1JSERSAAAACgAAAW4IBgAAALggiUUAAAAJcEhZcwAACxMAAAsTAQCanBgAAApPaUND
UFBob3Rvc2hvcCBJQ0MgcHJvZmlsZQAAeNqdU2dUU+kWPffe9EJLiICUS29SFQggUkKLgBSRJioh
CRBKiCGh2RVRwRFFRQQbyKCIA46OgIwVUSwMigrYB+Qhoo6Do4iKyvvhe6Nr1rz35s3+tdc+56zz
nbPPB8AIDJZIM1E1gAypQh4R4IPHxMbh5C5AgQokcAAQCLNkIXP9IwEA+H48PCsiwAe+AAF40wsI
AMBNm8AwHIf/D+pCmVwBgIQBwHSROEsIgBQAQHqOQqYAQEYBgJ2YJlMAoAQAYMtjYuMAUC0AYCd/
5tMAgJ34mXsBAFuUIRUBoJEAIBNliEQAaDsArM9WikUAWDAAFGZLxDkA2C0AMElXZkgAsLcAwM4Q
C7IACAwAMFGIhSkABHsAYMgjI3gAhJkAFEbyVzzxK64Q5yoAAHiZsjy5JDlFgVsILXEHV1cuHijO
SRcrFDZhAmGaQC7CeZkZMoE0D+DzzAAAoJEVEeCD8/14zg6uzs42jrYOXy3qvwb/ImJi4/7lz6tw
QAAA4XR+0f4sL7MagDsGgG3+oiXuBGheC6B194tmsg9AtQCg6dpX83D4fjw8RaGQudnZ5eTk2ErE
Qlthyld9/mfCX8BX/Wz5fjz89/XgvuIkgTJdgUcE+ODCzPRMpRzPkgmEYtzmj0f8twv//B3TIsRJ
YrlYKhTjURJxjkSajPMypSKJQpIpxSXS/2Ti3yz7Az7fNQCwaj4Be5EtqF1jA/ZLJxBYdMDi9wAA
8rtvwdQoCAOAaIPhz3f/7z/9R6AlAIBmSZJxAABeRCQuVMqzP8cIAABEoIEqsEEb9MEYLMAGHMEF
3MEL/GA2hEIkxMJCEEIKZIAccmAprIJCKIbNsB0qYC/UQB00wFFohpNwDi7CVbgOPXAP+mEInsEo
vIEJBEHICBNhIdqIAWKKWCOOCBeZhfghwUgEEoskIMmIFFEiS5E1SDFSilQgVUgd8j1yAjmHXEa6
kTvIADKC/Ia8RzGUgbJRPdQMtUO5qDcahEaiC9BkdDGajxagm9BytBo9jDah59CraA/ajz5DxzDA
6BgHM8RsMC7Gw0KxOCwJk2PLsSKsDKvGGrBWrAO7ifVjz7F3BBKBRcAJNgR3QiBhHkFIWExYTthI
qCAcJDQR2gk3CQOEUcInIpOoS7QmuhH5xBhiMjGHWEgsI9YSjxMvEHuIQ8Q3JBKJQzInuZACSbGk
VNIS0kbSblIj6SypmzRIGiOTydpka7IHOZQsICvIheSd5MPkM+Qb5CHyWwqdYkBxpPhT4ihSympK
GeUQ5TTlBmWYMkFVo5pS3aihVBE1j1pCraG2Uq9Rh6gTNHWaOc2DFklLpa2ildMaaBdo92mv6HS6
Ed2VHk6X0FfSy+lH6JfoA/R3DA2GFYPHiGcoGZsYBxhnGXcYr5hMphnTixnHVDA3MeuY55kPmW9V
WCq2KnwVkcoKlUqVJpUbKi9Uqaqmqt6qC1XzVctUj6leU32uRlUzU+OpCdSWq1WqnVDrUxtTZ6k7
qIeqZ6hvVD+kfln9iQZZw0zDT0OkUaCxX+O8xiALYxmzeCwhaw2rhnWBNcQmsc3ZfHYqu5j9HbuL
PaqpoTlDM0ozV7NS85RmPwfjmHH4nHROCecop5fzforeFO8p4ikbpjRMuTFlXGuqlpeWWKtIq1Gr
R+u9Nq7tp52mvUW7WfuBDkHHSidcJ0dnj84FnedT2VPdpwqnFk09OvWuLqprpRuhu0R3v26n7pie
vl6Ankxvp955vef6HH0v/VT9bfqn9UcMWAazDCQG2wzOGDzFNXFvPB0vx9vxUUNdw0BDpWGVYZfh
hJG50Tyj1UaNRg+MacZc4yTjbcZtxqMmBiYhJktN6k3umlJNuaYppjtMO0zHzczNos3WmTWbPTHX
Mueb55vXm9+3YFp4Wiy2qLa4ZUmy5FqmWe62vG6FWjlZpVhVWl2zRq2drSXWu627pxGnuU6TTque
1mfDsPG2ybaptxmw5dgG2662bbZ9YWdiF2e3xa7D7pO9k326fY39PQcNh9kOqx1aHX5ztHIUOlY6
3prOnO4/fcX0lukvZ1jPEM/YM+O2E8spxGmdU5vTR2cXZ7lzg/OIi4lLgssulz4umxvG3ci95Ep0
9XFd4XrS9Z2bs5vC7ajbr+427mnuh9yfzDSfKZ5ZM3PQw8hD4FHl0T8Ln5Uwa9+sfk9DT4Fntecj
L2MvkVet17C3pXeq92HvFz72PnKf4z7jPDfeMt5ZX8w3wLfIt8tPw2+eX4XfQ38j/2T/ev/RAKeA
JQFnA4mBQYFbAvv4enwhv44/Ottl9rLZ7UGMoLlBFUGPgq2C5cGtIWjI7JCtIffnmM6RzmkOhVB+
6NbQB2HmYYvDfgwnhYeFV4Y/jnCIWBrRMZc1d9HcQ3PfRPpElkTem2cxTzmvLUo1Kj6qLmo82je6
NLo/xi5mWczVWJ1YSWxLHDkuKq42bmy+3/zt84fineIL43sXmC/IXXB5oc7C9IWnFqkuEiw6lkBM
iE44lPBBECqoFowl8hN3JY4KecIdwmciL9E20YjYQ1wqHk7ySCpNepLskbw1eSTFM6Us5bmEJ6mQ
vEwNTN2bOp4WmnYgbTI9Or0xg5KRkHFCqiFNk7Zn6mfmZnbLrGWFsv7Fbou3Lx6VB8lrs5CsBVkt
CrZCpuhUWijXKgeyZ2VXZr/Nico5lqueK83tzLPK25A3nO+f/+0SwhLhkralhktXLR1Y5r2sajmy
PHF52wrjFQUrhlYGrDy4irYqbdVPq+1Xl65+vSZ6TWuBXsHKgsG1AWvrC1UK5YV969zX7V1PWC9Z
37Vh+oadGz4ViYquFNsXlxV/2CjceOUbh2/Kv5nclLSpq8S5ZM9m0mbp5t4tnlsOlqqX5pcObg3Z
2rQN31a07fX2Rdsvl80o27uDtkO5o788uLxlp8nOzTs/VKRU9FT6VDbu0t21Ydf4btHuG3u89jTs
1dtbvPf9Psm+21UBVU3VZtVl+0n7s/c/romq6fiW+21drU5tce3HA9ID/QcjDrbXudTVHdI9VFKP
1ivrRw7HH77+ne93LQ02DVWNnMbiI3BEeeTp9wnf9x4NOtp2jHus4QfTH3YdZx0vakKa8ppGm1Oa
+1tiW7pPzD7R1ureevxH2x8PnDQ8WXlK81TJadrpgtOTZ/LPjJ2VnX1+LvncYNuitnvnY87fag9v
77oQdOHSRf+L5zu8O85c8rh08rLb5RNXuFearzpfbep06jz+k9NPx7ucu5quuVxrue56vbV7Zvfp
G543zt30vXnxFv/W1Z45Pd2983pv98X39d8W3X5yJ/3Oy7vZdyfurbxPvF/0QO1B2UPdh9U/W/7c
2O/cf2rAd6Dz0dxH9waFg8/+kfWPD0MFj5mPy4YNhuueOD45OeI/cv3p/KdDz2TPJp4X/qL+y64X
Fi9++NXr187RmNGhl/KXk79tfKX96sDrGa/bxsLGHr7JeDMxXvRW++3Bd9x3He+j3w9P5Hwgfyj/
aPmx9VPQp/uTGZOT/wQDmPP8YzMt2wAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6
mAAAF2+SX8VGAAABUUlEQVR42uzbsUpCYRyG8cdz4K+p1HFoOoa1hBCeoWtwaPNaupBmr8Ophi5A
Gj8IpMUEGzQEC4/ZdzqdhhoiEhoa32f+8d7BWyqKAoAkSY6BLtDiswlw7Zy7AygVRUGSJGdm1m00
Go9RFK3MjDRN6/P5fH+1Wl07565KnU7nGDhvNpu39XrdmxnlcplKpUKWZTYcDk+AiwDoRVF0b2ae
H9VqNd9utydALwDiarX6zJbiOH4CDgJgJwzDfBs0sxzYCfhjgoKCgoKCgoKCgoKCgoKCgoKCgoKC
goKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoL/A1/yPA+3gSzLAuA1AB7W6/XuNjid
TiNgEgCD5XJ56L23nyhNUxuNRi1gEM5ms0W/3883m80p8G5mb0CwWCz2xuNx7L2/dM7dlH45nR59
DY75djr9GAClRm+BoQvRrwAAAABJRU5ErkJgggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFdlYktpdC9lZmwv
RGVmYXVsdFRoZW1lL3dpZGdldC9zZWFyY2gvY2FuY2VsL2NhbmNlbF9ub3JtYWxfYnV0dG9uLnBu
ZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDE3NTAAMDAwMTc1MAAw
MDAwMDAwNjMwNQAxMTMzNDc3NjUzMgAwMjYxMDQAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABsZWFuZHJvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AGxlYW5kcm8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiVBORw0KGgoAAAAN
SUhEUgAAACkAAAAoCAYAAABjPNNTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3No
b3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkV
UcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyW
SDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH
/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7
AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBR
iIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJh
mkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+
LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5n
wl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41ES
cY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgD
gGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRC
JMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgT
YSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyG
vEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAu
xsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJ
NwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5S
I+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZl
mDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX
0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHK
CpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/
pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNK
M1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aed
pr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6fe
eb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VG
jUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vf
t2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2
qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F
9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWd
m7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdew
t6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGB
WwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGL
w34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM
1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAq
qBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqe
Fpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo
1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUF
K4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+
FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO31
9kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7J
vttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++
/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+
0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/
i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L15
8Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg
89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO
0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7
kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/F
RgAAAfBJREFUeNrsmL1q40AQx2cX4bQHgXsAE44QDpMinUGFEdeYQFApEKsnWAjC4GJLF25EQA+w
jUClmsOFgnCTNkUIR0gR8gAHByljJ7tzlUAIJw62FTuwAwsL/2XmJ80HKxFEhF03YiANpIE0kDsO
SQjZB4AjAPi24fhPAHCHiP82AfkLAPYaelEzRLx87wD9oKO9BrO51DeFL2AGcmcgh8PhjzzPzzjn
7brGOW/neX4mhDhcKwgiLl0AcLpoCSEGWmuFiKiUepFSjktNSjlWSr0gImqtlRBi8JafZfGtdR7Q
cZwOIYQCAFBKrSAIBq1WywIA8DzvvNQIIdRxnM5oNLpfJc5akFmWXdu27VVhPM87L/eVbOksy663
UpNxHD8mSRIhoq4MfloHTJIkiuP4cWuNwxi7StP0ogpaBUzT9IIxdrX1EaSU0qtonwYppez6vh9W
U1xNve/7oZSyuzVIznmbMRbWa7Beo4yxcNEc/RRI13VPKKVWvQbrNUoptVzXPVk1zlojqCiKW9u2
NSGEll1cNsl8Pn8NgmBQakVR3DZ96T19SxNCHPZ6vZ+TyeQmiqKHqhaG4UG/3z+eTqd/3hvkiPi7
UchN2DJIc1UzkAvsuUGG501193cAOG7gg2wGADeI+Nf8wTCQBtJAGsjV7f8Ax4VJPPPPCBYAAAAA
SUVORK5CYIIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXZWJLaXQvZWZsL0RlZmF1bHRU
aGVtZS93aWRnZXQvc2VhcmNoL2NhbmNlbC9jYW5jZWxfbm9ybWFsX2J1dHRvbjIucG5nAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDYz
NTYAMTEzMzQ3NzY1MzIAMDI2MTc0ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAHVzdGFyICAAbGVhbmRybwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsZWFuZHJv
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIlQTkcNChoKAAAADUlIRFIAAAAp
AAAAKAgGAAAAYzzTUwAACk9pQ0NQUGhvdG9zaG9wIElDQyBwcm9maWxlAAB42p1TZ1RT6RY99970
QkuIgJRLb1IVCCBSQouAFJEmKiEJEEqIIaHZFVHBEUVFBBvIoIgDjo6AjBVRLAyKCtgH5CGijoOj
iIrK++F7o2vWvPfmzf611z7nrPOds88HwAgMlkgzUTWADKlCHhHgg8fExuHkLkCBCiRwABAIs2Qh
c/0jAQD4fjw8KyLAB74AAXjTCwgAwE2bwDAch/8P6kKZXAGAhAHAdJE4SwiAFABAeo5CpgBARgGA
nZgmUwCgBABgy2Ni4wBQLQBgJ3/m0wCAnfiZewEAW5QhFQGgkQAgE2WIRABoOwCsz1aKRQBYMAAU
ZkvEOQDYLQAwSVdmSACwtwDAzhALsgAIDAAwUYiFKQAEewBgyCMjeACEmQAURvJXPPErrhDnKgAA
eJmyPLkkOUWBWwgtcQdXVy4eKM5JFysUNmECYZpALsJ5mRkygTQP4PPMAACgkRUR4IPz/XjODq7O
zjaOtg5fLeq/Bv8iYmLj/uXPq3BAAADhdH7R/iwvsxqAOwaAbf6iJe4EaF4LoHX3i2ayD0C1AKDp
2lfzcPh+PDxFoZC52dnl5OTYSsRCW2HKV33+Z8JfwFf9bPl+PPz39eC+4iSBMl2BRwT44MLM9Eyl
HM+SCYRi3OaPR/y3C//8HdMixEliuVgqFONREnGORJqM8zKlIolCkinFJdL/ZOLfLPsDPt81ALBq
PgF7kS2oXWMD9ksnEFh0wOL3AADyu2/B1CgIA4Bog+HPd//vP/1HoCUAgGZJknEAAF5EJC5UyrM/
xwgAAESggSqwQRv0wRgswAYcwQXcwQv8YDaEQiTEwkIQQgpkgBxyYCmsgkIohs2wHSpgL9RAHTTA
UWiGk3AOLsJVuA49cA/6YQiewSi8gQkEQcgIE2Eh2ogBYopYI44IF5mF+CHBSAQSiyQgyYgUUSJL
kTVIMVKKVCBVSB3yPXICOYdcRrqRO8gAMoL8hrxHMZSBslE91Ay1Q7moNxqERqIL0GR0MZqPFqCb
0HK0Gj2MNqHn0KtoD9qPPkPHMMDoGAczxGwwLsbDQrE4LAmTY8uxIqwMq8YasFasA7uJ9WPPsXcE
EoFFwAk2BHdCIGEeQUhYTFhO2EioIBwkNBHaCTcJA4RRwicik6hLtCa6EfnEGGIyMYdYSCwj1hKP
Ey8Qe4hDxDckEolDMie5kAJJsaRU0hLSRtJuUiPpLKmbNEgaI5PJ2mRrsgc5lCwgK8iF5J3kw+Qz
5BvkIfJbCp1iQHGk+FPiKFLKakoZ5RDlNOUGZZgyQVWjmlLdqKFUETWPWkKtobZSr1GHqBM0dZo5
zYMWSUulraKV0xpoF2j3aa/odLoR3ZUeTpfQV9LL6Ufol+gD9HcMDYYVg8eIZygZmxgHGGcZdxiv
mEymGdOLGcdUMDcx65jnmQ+Zb1VYKrYqfBWRygqVSpUmlRsqL1Spqqaq3qoLVfNVy1SPqV5Tfa5G
VTNT46kJ1JarVaqdUOtTG1NnqTuoh6pnqG9UP6R+Wf2JBlnDTMNPQ6RRoLFf47zGIAtjGbN4LCFr
DauGdYE1xCaxzdl8diq7mP0du4s9qqmhOUMzSjNXs1LzlGY/B+OYcficdE4J5yinl/N+it4U7yni
KRumNEy5MWVca6qWl5ZYq0irUatH6702ru2nnaa9RbtZ+4EOQcdKJ1wnR2ePzgWd51PZU92nCqcW
TT069a4uqmulG6G7RHe/bqfumJ6+XoCeTG+n3nm95/ocfS/9VP1t+qf1RwxYBrMMJAbbDM4YPMU1
cW88HS/H2/FRQ13DQEOlYZVhl+GEkbnRPKPVRo1GD4xpxlzjJONtxm3GoyYGJiEmS03qTe6aUk25
pimmO0w7TMfNzM2izdaZNZs9Mdcy55vnm9eb37dgWnhaLLaotrhlSbLkWqZZ7ra8boVaOVmlWFVa
XbNGrZ2tJda7rbunEae5TpNOq57WZ8Ow8bbJtqm3GbDl2AbbrrZttn1hZ2IXZ7fFrsPuk72Tfbp9
jf09Bw2H2Q6rHVodfnO0chQ6Vjrems6c7j99xfSW6S9nWM8Qz9gz47YTyynEaZ1Tm9NHZxdnuXOD
84iLiUuCyy6XPi6bG8bdyL3kSnT1cV3hetL1nZuzm8LtqNuv7jbuae6H3J/MNJ8pnlkzc9DDyEPg
UeXRPwuflTBr36x+T0NPgWe15yMvYy+RV63XsLeld6r3Ye8XPvY+cp/jPuM8N94y3llfzDfAt8i3
y0/Db55fhd9DfyP/ZP96/9EAp4AlAWcDiYFBgVsC+/h6fCG/jj8622X2stntQYyguUEVQY+CrYLl
wa0haMjskK0h9+eYzpHOaQ6FUH7o1tAHYeZhi8N+DCeFh4VXhj+OcIhYGtExlzV30dxDc99E+kSW
RN6bZzFPOa8tSjUqPqouajzaN7o0uj/GLmZZzNVYnVhJbEscOS4qrjZubL7f/O3zh+Kd4gvjexeY
L8hdcHmhzsL0hacWqS4SLDqWQEyITjiU8EEQKqgWjCXyE3cljgp5wh3CZyIv0TbRiNhDXCoeTvJI
Kk16kuyRvDV5JMUzpSzluYQnqZC8TA1M3Zs6nhaadiBtMj06vTGDkpGQcUKqIU2TtmfqZ+Zmdsus
ZYWy/sVui7cvHpUHyWuzkKwFWS0KtkKm6FRaKNcqB7JnZVdmv82JyjmWq54rze3Ms8rbkDec75//
7RLCEuGStqWGS1ctHVjmvaxqObI8cXnbCuMVBSuGVgasPLiKtipt1U+r7VeXrn69JnpNa4FewcqC
wbUBa+sLVQrlhX3r3NftXU9YL1nftWH6hp0bPhWJiq4U2xeXFX/YKNx45RuHb8q/mdyUtKmrxLlk
z2bSZunm3i2eWw6Wqpfmlw5uDdnatA3fVrTt9fZF2y+XzSjbu4O2Q7mjvzy4vGWnyc7NOz9UpFT0
VPpUNu7S3bVh1/hu0e4be7z2NOzV21u89/0+yb7bVQFVTdVm1WX7Sfuz9z+uiarp+Jb7bV2tTm1x
7ccD0gP9ByMOtte51NUd0j1UUo/WK+tHDscfvv6d73ctDTYNVY2cxuIjcER55On3Cd/3Hg062naM
e6zhB9Mfdh1nHS9qQprymkabU5r7W2Jbuk/MPtHW6t56/EfbHw+cNDxZeUrzVMlp2umC05Nn8s+M
nZWdfX4u+dxg26K2e+djzt9qD2/vuhB04dJF/4vnO7w7zlzyuHTystvlE1e4V5qvOl9t6nTqPP6T
00/Hu5y7mq65XGu57nq9tXtm9+kbnjfO3fS9efEW/9bVnjk93b3zem/3xff13xbdfnIn/c7Lu9l3
J+6tvE+8X/RA7UHZQ92H1T9b/tzY79x/asB3oPPR3Ef3BoWDz/6R9Y8PQwWPmY/Lhg2G6544Pjk5
4j9y/en8p0PPZM8mnhf+ov7LrhcWL3741evXztGY0aGX8peTv218pf3qwOsZr9vGwsYevsl4MzFe
9Fb77cF33Hcd76PfD0/kfCB/KP9o+bH1U9Cn+5MZk5P/BAOY8/xjMy3bAAAABmJLR0QA/wD/AP+g
vaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2QMEFh8Rjmb7bgAAAiBJREFUWMPtmLFr
21AQxr/3YjtroXQ2CNyWguUhGRIKmrQGgkYNlv4CQaC2Y9DQwUOWksnrG2rQKCw6CTS5k6mHJEMp
HmtKKLTEgwup06fXxSomuLFrW3aH94HgoTvufuLuHYcAKSkpKSkpKak1iyzo9xjACwCP1px/COAj
gO8POdEFg+2lAIhJzL15TotC7qZYzd11QW5VEvK/gTw9PX0ahuGx4zjKfZvjOEoYhseu6z7fxMcc
zXpc163EccyFEIJzfscYO0tsjLEzzvmdEELEccxd1638Lc685JlVyHVdVwkhFAAopRnbtiu5XC4D
AKZpniQ2QgjVdV1tNBqflsmzEqTv+z1N08xpGNM0T5Jz4ieEiH3f7y2bZ2dBv2ezXna73RtFUb6o
qnpICCETOJKcE8BWq/WmXq9fPhC/nxokALTb7c+FQuG6WCweTMMlgJ7nnZfL5c6c+P3URxDnPF7G
tpFyAwBj7KVlWa+me/DP9kIIUVX1MJ/PD4IgGGyl3I7jKLVa7TWldGe6xADEdI+WSqWD4XD4odvt
3my83IZh7FNKM/d70PO88wkskvFkGMb+snlWGkFRFF1pmhYTQmhyiy3Leg8A4/H4l23blcQWRdHV
Vnqy0+l845xfEEKum83m22q1epHYgiAYjEajXjab/coY8+YM8v46NvMjpKt3cguSkP8IeZsiw+26
bvcIwJNVR9YM/QRwCeCH/LsgNdFvuizQ9bTemTkAAAAASUVORK5CYIIAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lk
Z2V0L3NlYXJjaC9kZWNvcmF0aW9uL2RlY29yYXRpb25fbm9ybWFsX2J1dHRvbi5wbmcAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDA1NjExADExMzM1
MjMzNTc2ADAyNzcwNAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAB1c3RhciAgAGxlYW5kcm8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbGVhbmRybwAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJUE5HDQoaCgAAAA1JSERSAAAAFAAAABQIBgAA
AI2JHQ0AAApPaUNDUFBob3Rvc2hvcCBJQ0MgcHJvZmlsZQAAeNqdU2dUU+kWPffe9EJLiICUS29S
FQggUkKLgBSRJiohCRBKiCGh2RVRwRFFRQQbyKCIA46OgIwVUSwMigrYB+Qhoo6Do4iKyvvhe6Nr
1rz35s3+tdc+56zznbPPB8AIDJZIM1E1gAypQh4R4IPHxMbh5C5AgQokcAAQCLNkIXP9IwEA+H48
PCsiwAe+AAF40wsIAMBNm8AwHIf/D+pCmVwBgIQBwHSROEsIgBQAQHqOQqYAQEYBgJ2YJlMAoAQA
YMtjYuMAUC0AYCd/5tMAgJ34mXsBAFuUIRUBoJEAIBNliEQAaDsArM9WikUAWDAAFGZLxDkA2C0A
MElXZkgAsLcAwM4QC7IACAwAMFGIhSkABHsAYMgjI3gAhJkAFEbyVzzxK64Q5yoAAHiZsjy5JDlF
gVsILXEHV1cuHijOSRcrFDZhAmGaQC7CeZkZMoE0D+DzzAAAoJEVEeCD8/14zg6uzs42jrYOXy3q
vwb/ImJi4/7lz6twQAAA4XR+0f4sL7MagDsGgG3+oiXuBGheC6B194tmsg9AtQCg6dpX83D4fjw8
RaGQudnZ5eTk2ErEQlthyld9/mfCX8BX/Wz5fjz89/XgvuIkgTJdgUcE+ODCzPRMpRzPkgmEYtzm
j0f8twv//B3TIsRJYrlYKhTjURJxjkSajPMypSKJQpIpxSXS/2Ti3yz7Az7fNQCwaj4Be5EtqF1j
A/ZLJxBYdMDi9wAA8rtvwdQoCAOAaIPhz3f/7z/9R6AlAIBmSZJxAABeRCQuVMqzP8cIAABEoIEq
sEEb9MEYLMAGHMEF3MEL/GA2hEIkxMJCEEIKZIAccmAprIJCKIbNsB0qYC/UQB00wFFohpNwDi7C
VbgOPXAP+mEInsEovIEJBEHICBNhIdqIAWKKWCOOCBeZhfghwUgEEoskIMmIFFEiS5E1SDFSilQg
VUgd8j1yAjmHXEa6kTvIADKC/Ia8RzGUgbJRPdQMtUO5qDcahEaiC9BkdDGajxagm9BytBo9jDah
59CraA/ajz5DxzDA6BgHM8RsMC7Gw0KxOCwJk2PLsSKsDKvGGrBWrAO7ifVjz7F3BBKBRcAJNgR3
QiBhHkFIWExYTthIqCAcJDQR2gk3CQOEUcInIpOoS7QmuhH5xBhiMjGHWEgsI9YSjxMvEHuIQ8Q3
JBKJQzInuZACSbGkVNIS0kbSblIj6SypmzRIGiOTydpka7IHOZQsICvIheSd5MPkM+Qb5CHyWwqd
YkBxpPhT4ihSympKGeUQ5TTlBmWYMkFVo5pS3aihVBE1j1pCraG2Uq9Rh6gTNHWaOc2DFklLpa2i
ldMaaBdo92mv6HS6Ed2VHk6X0FfSy+lH6JfoA/R3DA2GFYPHiGcoGZsYBxhnGXcYr5hMphnTixnH
VDA3MeuY55kPmW9VWCq2KnwVkcoKlUqVJpUbKi9Uqaqmqt6qC1XzVctUj6leU32uRlUzU+OpCdSW
q1WqnVDrUxtTZ6k7qIeqZ6hvVD+kfln9iQZZw0zDT0OkUaCxX+O8xiALYxmzeCwhaw2rhnWBNcQm
sc3ZfHYqu5j9HbuLPaqpoTlDM0ozV7NS85RmPwfjmHH4nHROCecop5fzforeFO8p4ikbpjRMuTFl
XGuqlpeWWKtIq1GrR+u9Nq7tp52mvUW7WfuBDkHHSidcJ0dnj84FnedT2VPdpwqnFk09OvWuLqpr
pRuhu0R3v26n7pievl6Ankxvp955vef6HH0v/VT9bfqn9UcMWAazDCQG2wzOGDzFNXFvPB0vx9vx
UUNdw0BDpWGVYZfhhJG50Tyj1UaNRg+MacZc4yTjbcZtxqMmBiYhJktN6k3umlJNuaYppjtMO0zH
zczNos3WmTWbPTHXMueb55vXm9+3YFp4Wiy2qLa4ZUmy5FqmWe62vG6FWjlZpVhVWl2zRq2drSXW
u627pxGnuU6TTque1mfDsPG2ybaptxmw5dgG2662bbZ9YWdiF2e3xa7D7pO9k326fY39PQcNh9kO
qx1aHX5ztHIUOlY63prOnO4/fcX0lukvZ1jPEM/YM+O2E8spxGmdU5vTR2cXZ7lzg/OIi4lLgssu
lz4umxvG3ci95Ep09XFd4XrS9Z2bs5vC7ajbr+427mnuh9yfzDSfKZ5ZM3PQw8hD4FHl0T8Ln5Uw
a9+sfk9DT4FntecjL2MvkVet17C3pXeq92HvFz72PnKf4z7jPDfeMt5ZX8w3wLfIt8tPw2+eX4Xf
Q38j/2T/ev/RAKeAJQFnA4mBQYFbAvv4enwhv44/Ottl9rLZ7UGMoLlBFUGPgq2C5cGtIWjI7JCt
IffnmM6RzmkOhVB+6NbQB2HmYYvDfgwnhYeFV4Y/jnCIWBrRMZc1d9HcQ3PfRPpElkTem2cxTzmv
LUo1Kj6qLmo82je6NLo/xi5mWczVWJ1YSWxLHDkuKq42bmy+3/zt84fineIL43sXmC/IXXB5oc7C
9IWnFqkuEiw6lkBMiE44lPBBECqoFowl8hN3JY4KecIdwmciL9E20YjYQ1wqHk7ySCpNepLskbw1
eSTFM6Us5bmEJ6mQvEwNTN2bOp4WmnYgbTI9Or0xg5KRkHFCqiFNk7Zn6mfmZnbLrGWFsv7Fbou3
Lx6VB8lrs5CsBVktCrZCpuhUWijXKgeyZ2VXZr/Nico5lqueK83tzLPK25A3nO+f/+0SwhLhkral
hktXLR1Y5r2sajmyPHF52wrjFQUrhlYGrDy4irYqbdVPq+1Xl65+vSZ6TWuBXsHKgsG1AWvrC1UK
5YV969zX7V1PWC9Z37Vh+oadGz4ViYquFNsXlxV/2CjceOUbh2/Kv5nclLSpq8S5ZM9m0mbp5t4t
nlsOlqqX5pcObg3Z2rQN31a07fX2Rdsvl80o27uDtkO5o788uLxlp8nOzTs/VKRU9FT6VDbu0t21
Ydf4btHuG3u89jTs1dtbvPf9Psm+21UBVU3VZtVl+0n7s/c/romq6fiW+21drU5tce3HA9ID/Qcj
DrbXudTVHdI9VFKP1ivrRw7HH77+ne93LQ02DVWNnMbiI3BEeeTp9wnf9x4NOtp2jHus4QfTH3Yd
Zx0vakKa8ppGm1Oa+1tiW7pPzD7R1ureevxH2x8PnDQ8WXlK81TJadrpgtOTZ/LPjJ2VnX1+Lvnc
YNuitnvnY87fag9v77oQdOHSRf+L5zu8O85c8rh08rLb5RNXuFearzpfbep06jz+k9NPx7ucu5qu
uVxrue56vbV7ZvfpG543zt30vXnxFv/W1Z45Pd2983pv98X39d8W3X5yJ/3Oy7vZdyfurbxPvF/0
QO1B2UPdh9U/W/7c2O/cf2rAd6Dz0dxH9waFg8/+kfWPD0MFj5mPy4YNhuueOD45OeI/cv3p/KdD
z2TPJp4X/qL+y64XFi9++NXr187RmNGhl/KXk79tfKX96sDrGa/bxsLGHr7JeDMxXvRW++3Bd9x3
He+j3w9P5Hwgfyj/aPmx9VPQp/uTGZOT/wQDmPP8YzMt2wAAAAZiS0dEAP8A/wD/oL2nkwAAAAlw
SFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kDBRIVJnOBeVIAAAC7SURBVDjL7ZIxCsIwGEafvYGD
Y+ghMgmOQicnp14gc67gLbyE0K108gQuXsGtl9DlK8RgY8SM/eCn9O/jNZAPlvybVfRugCPQAFa7
GzAAF+Dxi3wLdMBzZjoxWTGB7Ao4oNY47SapyRH6QGY/fLeB1OcIe8EuwTgxfY5wFFwnmFrMmBJV
pWtTBdVAdZlLE7FJ4aBnm7iUNmKL1WYHrEsVew+cgTuwyT2pVzVGTa+dAQ7BD7Kl33JapG/SF08M
SHxahQegAAAAAElFTkSuQmCCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvc2Vh
cmNoL2ZpZWxkL2ZpZWxkX2ZvY3VzZWQucG5nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAMDAwMDY0NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDcxMjQAMTEzMzQ3NzY1MzIA
MDI0MzQ1ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFy
ICAAbGVhbmRybwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsZWFuZHJvAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIlQTkcNChoKAAAADUlIRFIAAAEUAAAAKAgGAAAAP78FGwAA
AAlwSFlzAAALEwAACxMBAJqcGAAACk9pQ0NQUGhvdG9zaG9wIElDQyBwcm9maWxlAAB42p1TZ1RT
6RY99970QkuIgJRLb1IVCCBSQouAFJEmKiEJEEqIIaHZFVHBEUVFBBvIoIgDjo6AjBVRLAyKCtgH
5CGijoOjiIrK++F7o2vWvPfmzf611z7nrPOds88HwAgMlkgzUTWADKlCHhHgg8fExuHkLkCBCiRw
ABAIs2Qhc/0jAQD4fjw8KyLAB74AAXjTCwgAwE2bwDAch/8P6kKZXAGAhAHAdJE4SwiAFABAeo5C
pgBARgGAnZgmUwCgBABgy2Ni4wBQLQBgJ3/m0wCAnfiZewEAW5QhFQGgkQAgE2WIRABoOwCsz1aK
RQBYMAAUZkvEOQDYLQAwSVdmSACwtwDAzhALsgAIDAAwUYiFKQAEewBgyCMjeACEmQAURvJXPPEr
rhDnKgAAeJmyPLkkOUWBWwgtcQdXVy4eKM5JFysUNmECYZpALsJ5mRkygTQP4PPMAACgkRUR4IPz
/XjODq7OzjaOtg5fLeq/Bv8iYmLj/uXPq3BAAADhdH7R/iwvsxqAOwaAbf6iJe4EaF4LoHX3i2ay
D0C1AKDp2lfzcPh+PDxFoZC52dnl5OTYSsRCW2HKV33+Z8JfwFf9bPl+PPz39eC+4iSBMl2BRwT4
4MLM9EylHM+SCYRi3OaPR/y3C//8HdMixEliuVgqFONREnGORJqM8zKlIolCkinFJdL/ZOLfLPsD
Pt81ALBqPgF7kS2oXWMD9ksnEFh0wOL3AADyu2/B1CgIA4Bog+HPd//vP/1HoCUAgGZJknEAAF5E
JC5UyrM/xwgAAESggSqwQRv0wRgswAYcwQXcwQv8YDaEQiTEwkIQQgpkgBxyYCmsgkIohs2wHSpg
L9RAHTTAUWiGk3AOLsJVuA49cA/6YQiewSi8gQkEQcgIE2Eh2ogBYopYI44IF5mF+CHBSAQSiyQg
yYgUUSJLkTVIMVKKVCBVSB3yPXICOYdcRrqRO8gAMoL8hrxHMZSBslE91Ay1Q7moNxqERqIL0GR0
MZqPFqCb0HK0Gj2MNqHn0KtoD9qPPkPHMMDoGAczxGwwLsbDQrE4LAmTY8uxIqwMq8YasFasA7uJ
9WPPsXcEEoFFwAk2BHdCIGEeQUhYTFhO2EioIBwkNBHaCTcJA4RRwicik6hLtCa6EfnEGGIyMYdY
SCwj1hKPEy8Qe4hDxDckEolDMie5kAJJsaRU0hLSRtJuUiPpLKmbNEgaI5PJ2mRrsgc5lCwgK8iF
5J3kw+Qz5BvkIfJbCp1iQHGk+FPiKFLKakoZ5RDlNOUGZZgyQVWjmlLdqKFUETWPWkKtobZSr1GH
qBM0dZo5zYMWSUulraKV0xpoF2j3aa/odLoR3ZUeTpfQV9LL6Ufol+gD9HcMDYYVg8eIZygZmxgH
GGcZdxivmEymGdOLGcdUMDcx65jnmQ+Zb1VYKrYqfBWRygqVSpUmlRsqL1Spqqaq3qoLVfNVy1SP
qV5Tfa5GVTNT46kJ1JarVaqdUOtTG1NnqTuoh6pnqG9UP6R+Wf2JBlnDTMNPQ6RRoLFf47zGIAtj
GbN4LCFrDauGdYE1xCaxzdl8diq7mP0du4s9qqmhOUMzSjNXs1LzlGY/B+OYcficdE4J5yinl/N+
it4U7yniKRumNEy5MWVca6qWl5ZYq0irUatH6702ru2nnaa9RbtZ+4EOQcdKJ1wnR2ePzgWd51PZ
U92nCqcWTT069a4uqmulG6G7RHe/bqfumJ6+XoCeTG+n3nm95/ocfS/9VP1t+qf1RwxYBrMMJAbb
DM4YPMU1cW88HS/H2/FRQ13DQEOlYZVhl+GEkbnRPKPVRo1GD4xpxlzjJONtxm3GoyYGJiEmS03q
Te6aUk25pimmO0w7TMfNzM2izdaZNZs9Mdcy55vnm9eb37dgWnhaLLaotrhlSbLkWqZZ7ra8boVa
OVmlWFVaXbNGrZ2tJda7rbunEae5TpNOq57WZ8Ow8bbJtqm3GbDl2AbbrrZttn1hZ2IXZ7fFrsPu
k72Tfbp9jf09Bw2H2Q6rHVodfnO0chQ6Vjrems6c7j99xfSW6S9nWM8Qz9gz47YTyynEaZ1Tm9NH
ZxdnuXOD84iLiUuCyy6XPi6bG8bdyL3kSnT1cV3hetL1nZuzm8LtqNuv7jbuae6H3J/MNJ8pnlkz
c9DDyEPgUeXRPwuflTBr36x+T0NPgWe15yMvYy+RV63XsLeld6r3Ye8XPvY+cp/jPuM8N94y3llf
zDfAt8i3y0/Db55fhd9DfyP/ZP96/9EAp4AlAWcDiYFBgVsC+/h6fCG/jj8622X2stntQYyguUEV
QY+CrYLlwa0haMjskK0h9+eYzpHOaQ6FUH7o1tAHYeZhi8N+DCeFh4VXhj+OcIhYGtExlzV30dxD
c99E+kSWRN6bZzFPOa8tSjUqPqouajzaN7o0uj/GLmZZzNVYnVhJbEscOS4qrjZubL7f/O3zh+Kd
4gvjexeYL8hdcHmhzsL0hacWqS4SLDqWQEyITjiU8EEQKqgWjCXyE3cljgp5wh3CZyIv0TbRiNhD
XCoeTvJIKk16kuyRvDV5JMUzpSzluYQnqZC8TA1M3Zs6nhaadiBtMj06vTGDkpGQcUKqIU2Ttmfq
Z+ZmdsusZYWy/sVui7cvHpUHyWuzkKwFWS0KtkKm6FRaKNcqB7JnZVdmv82JyjmWq54rze3Ms8rb
kDec75//7RLCEuGStqWGS1ctHVjmvaxqObI8cXnbCuMVBSuGVgasPLiKtipt1U+r7VeXrn69JnpN
a4FewcqCwbUBa+sLVQrlhX3r3NftXU9YL1nftWH6hp0bPhWJiq4U2xeXFX/YKNx45RuHb8q/mdyU
tKmrxLlkz2bSZunm3i2eWw6Wqpfmlw5uDdnatA3fVrTt9fZF2y+XzSjbu4O2Q7mjvzy4vGWnyc7N
Oz9UpFT0VPpUNu7S3bVh1/hu0e4be7z2NOzV21u89/0+yb7bVQFVTdVm1WX7Sfuz9z+uiarp+Jb7
bV2tTm1x7ccD0gP9ByMOtte51NUd0j1UUo/WK+tHDscfvv6d73ctDTYNVY2cxuIjcER55On3Cd/3
Hg062naMe6zhB9Mfdh1nHS9qQprymkabU5r7W2Jbuk/MPtHW6t56/EfbHw+cNDxZeUrzVMlp2umC
05Nn8s+MnZWdfX4u+dxg26K2e+djzt9qD2/vuhB04dJF/4vnO7w7zlzyuHTystvlE1e4V5qvOl9t
6nTqPP6T00/Hu5y7mq65XGu57nq9tXtm9+kbnjfO3fS9efEW/9bVnjk93b3zem/3xff13xbdfnIn
/c7Lu9l3J+6tvE+8X/RA7UHZQ92H1T9b/tzY79x/asB3oPPR3Ef3BoWDz/6R9Y8PQwWPmY/Lhg2G
6544Pjk54j9y/en8p0PPZM8mnhf+ov7LrhcWL3741evXztGY0aGX8peTv218pf3qwOsZr9vGwsYe
vsl4MzFe9Fb77cF33Hcd76PfD0/kfCB/KP9o+bH1U9Cn+5MZk5P/BAOY8/xjMy3bAAAAIGNIUk0A
AHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAN/SURBVHja7N2xbxtlGMfx7/Pc
vXdnY5oKFIVE0KatBAKpdYWEKqKqC1MZYGZBXfoPdGXmr8jCP1GYWBhAFQKVFBUhBAqiaoVQlBa7
thOf72WInbiNk8oXxt9nsjw+w0+/97mzX+PAaeB14GUgR0TkeDtAB3gQY3wMYEmSAJwFzms+IlLT
H2VZ/pmmaXoaOAdQvvH+larxahtPWpqPiByrGnW9v/VT+td3d4BzRVE8TkMI5wHfXbp8qbp+45N4
5YM3abaK4NBww01zE5FxhkToV5FhBfS6g+rO1+/EL8tB9vfdDeBCmqZpC6DXWr4a22urby8tFDdX
M1YKJ3MwBYqIjMUIuxU8HFSsbybFL+211fKb21ebWz9vAK00hBAAzL3glcVTN1czPj2TsRCMVGEi
Is8pIzwZRgBudRZPmXsRQjAgpFmWGYCZERxWCleYiMiRUoOFYKwUTnCIZkxyZDpQrJkYeYLCRERe
GCp5As3E6JnZrEBBOSIi87BxdswMFBGRuUNlOlDyPB8HigqKiNQJFGySIweBUromIyI1AsU5FCg+
0plHRObnZjMaSl95IiJ1GoodNJSiKLSUFZETBcokRw6OPK5EEZEaRx6fOvKooYjI/9ZQJh/cS6s0
GxGZu6G4FUW2Hyi+lzJPNRkRqdtQ/LmG0reRZiMitRrK/lJWOxQROVlDmeRIWhR6yiMiJ2koZpMc
OTjymF69F5EagWL+zFMen5yDNBoRmb+huB1aymqHIiJ1zHwPJUnUUERkfknyzFOeXA1FRE7UUA69
eu+upayIzM/dZ/w40HTkEZEagWI+4/9QlCciUufI43b4H9sSPTYWkRoSn9VQtJQVkToNZXopO32N
RtRsRGQOkSPu5XF3640iO6O9u0t1e6CIHGUUYWcEvVHE3WffHDgc36r+ZBh1v7GIzFRG+HcYeTio
GFaHG8oQyBpZGObd7e76ZtKCvUvTMwetVkRk/4gTYXdcPNY3d8m7290iC+U4UIZpCGEbeO2ja+0f
H2zeP/tbePfMrU4jDw4NN/TsR0Qmqgj9KjKsIN3p7yxt3n/08bX2DyEEA7as0+ksAx8C9vkXX138
duP3t54OdhsanYgc56Ui669duvDrZzeu32NvP3vbBoMBwGXgPY1IRGr6Ps/zu1aW5eSLZeAisAg0
NR8ReYEe8A9wL0mSRwD/AQAA//8DAKw8x28iKs0eAAAAAElFTkSuQmCCAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABXZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvc2VhcmNoL2ZpZWxk
L2ZpZWxkX2hvdmVyZWQucG5nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
MDAwMDY0NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDY3NTYAMTEzMzQ3NzY1MzIAMDI0MzYzACAw
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAbGVhbmRy
bwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsZWFuZHJvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAIlQTkcNChoKAAAADUlIRFIAAAEUAAAAKAgGAAAAP78FGwAAAAlwSFlzAAAL
EwAACxMBAJqcGAAACk9pQ0NQUGhvdG9zaG9wIElDQyBwcm9maWxlAAB42p1TZ1RT6RY99970QkuI
gJRLb1IVCCBSQouAFJEmKiEJEEqIIaHZFVHBEUVFBBvIoIgDjo6AjBVRLAyKCtgH5CGijoOjiIrK
++F7o2vWvPfmzf611z7nrPOds88HwAgMlkgzUTWADKlCHhHgg8fExuHkLkCBCiRwABAIs2Qhc/0j
AQD4fjw8KyLAB74AAXjTCwgAwE2bwDAch/8P6kKZXAGAhAHAdJE4SwiAFABAeo5CpgBARgGAnZgm
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
9XqdNE2p1WpEUaRXk4rIwoqTZRmdTofz83P29vZ+ttYa4Mrc3Nw8B74DzNnZ2fftdvvbnZ2dSrVa
xTmn1UdEFqaT+/t7rq+ve/V6/bfT09P3QA68N6PRCOAE+EZHJSIb+t0594fJsmz6w3Pga+AZUNL5
iMgThkAb+NP3/X8BPgAAAP//AwAzTs2eLvmGuwAAAABJRU5ErkJgggAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</data>

          </attachment>
      

    </bug>

</bugzilla>