<?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>74666</bug_id>
          
          <creation_ts>2011-12-15 16:45:26 -0800</creation_ts>
          <short_desc>[chromium] FileSystem bridge needs threadsafe fixes and other clean-up.</short_desc>
          <delta_ts>2012-01-05 04:04:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>74969</dependson>
    
    <dependson>74975</dependson>
    
    <dependson>75494</dependson>
    
    <dependson>75573</dependson>
    
    <dependson>75579</dependson>
    
    <dependson>75614</dependson>
          <blocked>67942</blocked>
    
    <blocked>74746</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Levin">levin</reporter>
          <assigned_to name="David Levin">levin</assigned_to>
          <cc>dimich</cc>
    
    <cc>dslomov</cc>
    
    <cc>kinuko</cc>
    
    <cc>levin+threading</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>522333</commentid>
    <comment_count>0</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-12-15 16:45:26 -0800</bug_when>
    <thetext>See summary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522605</commentid>
    <comment_count>1</comment_count>
      <attachid>119580</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-12-16 00:32:56 -0800</bug_when>
    <thetext>Created attachment 119580
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522606</commentid>
    <comment_count>2</comment_count>
      <attachid>119580</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-12-16 00:35:14 -0800</bug_when>
    <thetext>Comment on attachment 119580
WIP

Not completely ready for review but almost....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523145</commentid>
    <comment_count>3</comment_count>
      <attachid>119580</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-12-16 16:22:05 -0800</bug_when>
    <thetext>Comment on attachment 119580
WIP

The change looks good so far, the only issue I have is that it is hard to understand :) Maybe you could put more comments in the change log, regarding:
1) why m_mode fields are removed
2) the lifetime of WorkerFileSystemObserver and why the bridge is no longer an Observer
3) Some sort of &quot;proof&quot; that m_workerContextObserver only gets deleted on worker thread (ASSERTs, even?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524427</commentid>
    <comment_count>4</comment_count>
      <attachid>119580</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2011-12-19 21:42:55 -0800</bug_when>
    <thetext>Comment on attachment 119580
WIP

View in context: https://bugs.webkit.org/attachment.cgi?id=119580&amp;action=review

Awesome, it&apos;s really great to see the tests for this complex worker termination sequence.  The code looks good to me (as far as I understand).

&gt; LayoutTests/http/tests/workers/terminate-during-sync-operation.html:39
&gt; +function waitForAllWorkersToStart()

This name may sound a bit confusing as its main purpose is to start sync ops after making sure everyone is started?
How about startAfterAllWorkersStarted or something?  (I&apos;m not good at naming though)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529206</commentid>
    <comment_count>5</comment_count>
      <attachid>121027</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2012-01-03 17:42:52 -0800</bug_when>
    <thetext>Created attachment 121027
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529215</commentid>
    <comment_count>6</comment_count>
      <attachid>121027</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2012-01-03 17:53:39 -0800</bug_when>
    <thetext>Comment on attachment 121027
Patch

I need to address the feedback already given.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529754</commentid>
    <comment_count>7</comment_count>
      <attachid>121153</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2012-01-04 14:21:27 -0800</bug_when>
    <thetext>Created attachment 121153
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529755</commentid>
    <comment_count>8</comment_count>
      <attachid>121153</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2012-01-04 14:22:18 -0800</bug_when>
    <thetext>Comment on attachment 121153
Patch

Wrong bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529824</commentid>
    <comment_count>9</comment_count>
      <attachid>121174</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2012-01-04 15:27:43 -0800</bug_when>
    <thetext>Created attachment 121174
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529875</commentid>
    <comment_count>10</comment_count>
      <attachid>121174</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2012-01-04 16:33:29 -0800</bug_when>
    <thetext>Comment on attachment 121174
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=121174&amp;action=review

r+ with couple nits.

&gt; LayoutTests/http/tests/workers/resources/sync-operations.js:22
&gt; +	for (var i = 0; i &lt; 10; ++i) {

Indenting.

&gt; LayoutTests/http/tests/workers/resources/sync-operations.js:69
&gt; +	return;

This needs comment on why it is needed and why it is ok to just return.

&gt; LayoutTests/http/tests/workers/terminate-during-sync-operation.html:78
&gt; +&lt;div id=&apos;result&apos;&gt;

It&apos;d be nice to add a sentence here describing what this test is testing and what is expected PASS or FAIL results. So the people can figure the purpose of the test w/o looking at the several related bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529950</commentid>
    <comment_count>11</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2012-01-04 19:10:28 -0800</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/104113</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119580</attachid>
            <date>2011-12-16 00:32:56 -0800</date>
            <delta_ts>2012-01-03 17:42:48 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-74666-20111216003254.patch</filename>
            <type>text/plain</type>
            <size>43073</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyOTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDllNDBkNmQ0NTI4MzhiNDRkODFjMGQ2YzExODM2ODQxYmJlYjQ0YmIuLmVmZDFlYTBjNTYyY2Y0
NmM2YzAxYzY2MjE3ZTZhMmQ2MjYxNzA4MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTEtMTItMTUgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRmlsZVN5c3RlbSBicmlkZ2UgbmVlZHMgdGhyZWFk
c2FmZSBmaXhlcyBhbmQgb3RoZXIgY2xlYW4tdXAuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDY2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgZXNzZW50aWFsbHkgdGhlIHNhbWUgZml4IGFz
IHdoYXQgd2FzIGRvbmUgaW4gcjEwMjg5NC4KKworICAgICAgICBUaGUgaW1wb3J0YW50IHBhcnQg
b2YgdGhpcyBmaXggaXMgdGhlIHJlbW92YWwgb2YgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyBzbwor
ICAgICAgICB0aGF0IHJlZiBjb3VudGluZyBoYXBwZW5zIGFwcHJvcHJpYXRlbHkuCisKKyAgICAg
ICAgTWlub3IgY2xlYW4gdXAgdGhyb3VnaG91dDogUmVtb3ZlZCB1bm5lY2Vzc2FyeSBXVEYgcHJl
Zml4IGluIG1hbnkKKyAgICAgICAgb2YgdGhlc2UgcGxhY2VzIGFuZCB1bm5lY2Vzc2FyeSBTdHJp
bmcoKS4KKworICAgICAgICAqIHNyYy9Mb2NhbEZpbGVTeXN0ZW1DaHJvbWl1bS5jcHA6IFNlZSBy
MTAyODk0IHNpbmNlIHRoaXMKKyAgICAgICAgaXMgYmFzaWNhbGx5IHRoZSBzYW1lIHRoaW5nLgor
CiAyMDExLTEyLTE1ICBTdGVwaGVuIFdoaXRlICA8c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIEVuYWJsZSBDU1NfRklMVEVSUyBpbiBDaHJvbWl1bS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0xvY2FsRmlsZVN5c3RlbUNocm9taXVtLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0xvY2FsRmlsZVN5c3RlbUNocm9taXVtLmNwcAppbmRl
eCA3NTdlZjgyNTNlMmY5ZmFkMmY0MzU4OTIxMGJiOThjZGM0YTQzMzNlLi4yNDdmNjRlMjM5OTk5
NDUzOTg2OWY3MGQyNzg0MGU0NDRiYTU2Nzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9Mb2NhbEZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvTG9jYWxGaWxlU3lzdGVtQ2hyb21pdW0uY3BwCkBAIC03OSw3ICs3OSw3
IEBAIHN0YXRpYyBjb25zdCBjaGFyIG9wZW5GaWxlU3lzdGVtTW9kZVtdID0gIm9wZW5GaWxlU3lz
dGVtTW9kZSI7CiAvLyBjYWxsIGJhY2sgdG8gdGhlIHdvcmtlciBjb250ZXh0LgogY2xhc3MgQWxs
b3dGaWxlU3lzdGVtTWFpblRocmVhZEJyaWRnZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxBbGxvd0ZpbGVTeXN0ZW1NYWluVGhyZWFkQnJpZGdlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8QWxsb3dGaWxlU3lzdGVtTWFpblRocmVhZEJyaWRnZT4gY3JlYXRlKFdlYkNv
cmU6OldvcmtlckxvYWRlclByb3h5KiB3b3JrZXJMb2FkZXJQcm94eSwgY29uc3QgV1RGOjpTdHJp
bmcmIG1vZGUsIE5ld1dlYkNvbW1vbldvcmtlckNsaWVudCogY29tbW9uQ2xpZW50KQorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEFsbG93RmlsZVN5c3RlbU1haW5UaHJlYWRCcmlkZ2U+IGNyZWF0ZShX
ZWJDb3JlOjpXb3JrZXJMb2FkZXJQcm94eSogd29ya2VyTG9hZGVyUHJveHksIGNvbnN0IFN0cmlu
ZyYgbW9kZSwgTmV3V2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21tb25DbGllbnQpCiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFsbG93RmlsZVN5c3RlbU1haW5UaHJlYWRCcmlk
Z2Uod29ya2VyTG9hZGVyUHJveHksIG1vZGUsIGNvbW1vbkNsaWVudCkpOwogICAgIH0KQEAgLTk3
LDMwICs5NywyNSBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gVGhpcyBtZXRob2QgaXMgaW52
b2tlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCi0gICAgdm9pZCBzaWduYWxDb21wbGV0ZWQoYm9vbCBy
ZXN1bHQpCisgICAgdm9pZCBzaWduYWxDb21wbGV0ZWQoY29uc3QgU3RyaW5nJiBtb2RlLCBib29s
IHJlc3VsdCkKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKLSAg
ICAgICAgaWYgKG1fd29ya2VyTG9hZGVyUHJveHkpCi0gICAgICAgICAgICBtX3dvcmtlckxvYWRl
clByb3h5LT5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoCi0gICAgICAgICAgICAgICAg
Y3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRDb21wbGV0ZSwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0
aGlzKSwgcmVzdWx0KSwgbV9tb2RlKTsKKyAgICAgICAgaWYgKCFtX3dvcmtlckxvYWRlclByb3h5
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3dvcmtlckxvYWRlclByb3h5LT5wb3N0
VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRDb21wbGV0
ZSwgdGhpcywgcmVzdWx0KSwgbW9kZSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIEFsbG93Rmls
ZVN5c3RlbU1haW5UaHJlYWRCcmlkZ2UoV2ViQ29yZTo6V29ya2VyTG9hZGVyUHJveHkqIHdvcmtl
ckxvYWRlclByb3h5LCBjb25zdCBXVEY6OlN0cmluZyYgbW9kZSwgTmV3V2ViQ29tbW9uV29ya2Vy
Q2xpZW50KiBjb21tb25DbGllbnQpCisgICAgQWxsb3dGaWxlU3lzdGVtTWFpblRocmVhZEJyaWRn
ZShXZWJDb3JlOjpXb3JrZXJMb2FkZXJQcm94eSogd29ya2VyTG9hZGVyUHJveHksIGNvbnN0IFN0
cmluZyYgbW9kZSwgTmV3V2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21tb25DbGllbnQpCiAgICAg
ICAgIDogbV93b3JrZXJMb2FkZXJQcm94eSh3b3JrZXJMb2FkZXJQcm94eSkKLSAgICAgICAgLCBt
X21vZGUobW9kZSkKICAgICB7Ci0gICAgICAgIFdlYldvcmtlckJhc2U6OmRpc3BhdGNoVGFza1Rv
TWFpblRocmVhZCgKLSAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmYWxsb3dGaWxlU3lz
dGVtVGFzaywgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyhjb21tb25DbGllbnQpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcykpKTsKKyAg
ICAgICAgV2ViV29ya2VyQmFzZTo6ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxi
YWNrVGFzaygmYWxsb3dGaWxlU3lzdGVtVGFzaywgbW9kZSwgQWxsb3dDcm9zc1RocmVhZEFjY2Vz
cyhjb21tb25DbGllbnQpLCB0aGlzKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgYWxsb3dG
aWxlU3lzdGVtVGFzayhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBO
ZXdXZWJDb21tb25Xb3JrZXJDbGllbnQqIGNvbW1vbkNsaWVudCwgUGFzc1JlZlB0cjxBbGxvd0Zp
bGVTeXN0ZW1NYWluVGhyZWFkQnJpZGdlPiBicmlkZ2UpCisgICAgc3RhdGljIHZvaWQgYWxsb3dG
aWxlU3lzdGVtVGFzayhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBT
dHJpbmcgbW9kZSwgTmV3V2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21tb25DbGllbnQsIFBhc3NS
ZWZQdHI8QWxsb3dGaWxlU3lzdGVtTWFpblRocmVhZEJyaWRnZT4gYnJpZGdlKQogICAgIHsKLSAg
ICAgICAgaWYgKGNvbW1vbkNsaWVudCkKLSAgICAgICAgICAgIGJyaWRnZS0+c2lnbmFsQ29tcGxl
dGVkKGNvbW1vbkNsaWVudC0+YWxsb3dGaWxlU3lzdGVtKCkpOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBicmlkZ2UtPnNpZ25hbENvbXBsZXRlZChmYWxzZSk7CisgICAgICAgIGJvb2wgYWxs
b3dGaWxlU3lzdGVtID0gY29tbW9uQ2xpZW50ID8gY29tbW9uQ2xpZW50LT5hbGxvd0ZpbGVTeXN0
ZW0oKSA6IGZhbHNlOworICAgICAgICBicmlkZ2UtPnNpZ25hbENvbXBsZXRlZChtb2RlLCBhbGxv
d0ZpbGVTeXN0ZW0pOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIGRpZENvbXBsZXRlKFdlYkNv
cmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8QWxsb3dGaWxl
U3lzdGVtTWFpblRocmVhZEJyaWRnZT4gYnJpZGdlLCBib29sIHJlc3VsdCkKQEAgLTEzMSw3ICsx
MjYsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9yZXN1bHQ7CiAgICAgTXV0ZXggbV9tdXRleDsK
ICAgICBXZWJDb3JlOjpXb3JrZXJMb2FkZXJQcm94eSogbV93b3JrZXJMb2FkZXJQcm94eTsKLSAg
ICBXVEY6OlN0cmluZyBtX21vZGU7CiB9OwogCiBib29sIGFsbG93RmlsZVN5c3RlbUZvcldvcmtl
cihOZXdXZWJDb21tb25Xb3JrZXJDbGllbnQqIGNvbW1vbkNsaWVudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNr
c0JyaWRnZS5jcHAKaW5kZXggNTIzZWY3NWFmZTJjODVlYTZkMDhlNzhiZjQ4NTY4YjE2MmNkMjA4
Mi4uNmJlZmNlMTRlMWFkZWYxMDE5NjMxMDQ0ZWI5M2RjMjc5MTMzYWEzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVN5c3RlbUNh
bGxiYWNrc0JyaWRnZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAsIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTkwLDcgKzkwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiBjbGFzcyBNYWluVGhyZWFkRmlsZVN5c3RlbUNhbGxiYWNrcyA6IHB1YmxpYyBXZWJGaWxlU3lz
dGVtQ2FsbGJhY2tzIHsKIHB1YmxpYzoKICAgICAvLyBDYWxsYmFja3MgYXJlIHNlbGYtZGVzdHJ1
Y3RlZCBhbmQgd2UgYWx3YXlzIHJldHVybiBsZWFrZWQgcG9pbnRlciBoZXJlLgotICAgIHN0YXRp
YyBNYWluVGhyZWFkRmlsZVN5c3RlbUNhbGxiYWNrcyogY3JlYXRlTGVha2VkUHRyKFdvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqIGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQorICAg
IHN0YXRpYyBNYWluVGhyZWFkRmlsZVN5c3RlbUNhbGxiYWNrcyogY3JlYXRlTGVha2VkUHRyKFBh
c3NSZWZQdHI8V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4gYnJpZGdlLCBjb25zdCBT
dHJpbmcmIG1vZGUpCiAgICAgewogICAgICAgICBPd25QdHI8TWFpblRocmVhZEZpbGVTeXN0ZW1D
YWxsYmFja3M+IGNhbGxiYWNrcyA9IGFkb3B0UHRyKG5ldyBNYWluVGhyZWFkRmlsZVN5c3RlbUNh
bGxiYWNrcyhicmlkZ2UsIG1vZGUpKTsKICAgICAgICAgcmV0dXJuIGNhbGxiYWNrcy5sZWFrUHRy
KCk7CkBAIC0xMzEsNyArMTMxLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBN
YWluVGhyZWFkRmlsZVN5c3RlbUNhbGxiYWNrcyhXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJp
ZGdlKiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9kZSkKKyAgICBNYWluVGhyZWFkRmlsZVN5c3Rl
bUNhbGxiYWNrcyhQYXNzUmVmUHRyPFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+IGJy
aWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQogICAgICAgICA6IG1fYnJpZGdlKGJyaWRnZSkKICAg
ICAgICAgLCBtX21vZGUobW9kZSkKICAgICB7CkBAIC0xNDAsMTYgKzE0MCw0OCBAQCBwcml2YXRl
OgogCiAgICAgZnJpZW5kIGNsYXNzIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U7CiAg
ICAgLy8gVGhlIGJyaWRnZSBwb2ludGVyIGlzIGtlcHQgYnkgdGhlIGJyaWRnZSBpdHNlbGYgb24g
dGhlIFdvcmtlclRocmVhZC4KLSAgICBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiBt
X2JyaWRnZTsKKyAgICBQYXNzUmVmUHRyPFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+
IG1fYnJpZGdlOwogICAgIGNvbnN0IFN0cmluZyBtX21vZGU7CiB9OwogCisvLyBPYnNlcnZlcyB0
aGUgd29ya2VyIGNvbnRleHQuIEJ5IGtlZXBpbmcgdGhpcyBzZXBhcmF0ZSwgaXQgaXMgZWFzaWVy
IHRvIHZlcmlmeQorLy8gdGhhdCBpdCBvbmx5IGdldHMgZGVsZXRlZCBvbiB0aGUgd29ya2VyIGNv
bnRleHQgdGhyZWFkIHdoaWNoIGlzIHZlcmlmaWVkIGJ5IH5PYnNlcnZlci4KK2NsYXNzIFdvcmtl
ckZpbGVTeXN0ZW1Db250ZXh0T2JzZXJ2ZXIgOiBwdWJsaWMgV2ViQ29yZTo6V29ya2VyQ29udGV4
dDo6T2JzZXJ2ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFdvcmtlckZpbGVT
eXN0ZW1Db250ZXh0T2JzZXJ2ZXI+IGNyZWF0ZShXb3JrZXJDb250ZXh0KiBjb250ZXh0LCBXb3Jr
ZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiBicmlkZ2UpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IFdvcmtlckZpbGVTeXN0ZW1Db250ZXh0T2JzZXJ2ZXIoY29udGV4dCwg
YnJpZGdlKSk7CisgICAgfQorCisgICAgLy8gV29ya2VyQ29udGV4dDo6T2JzZXJ2ZXIgbWV0aG9k
LgorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlTdG9wKCkKKyAgICB7CisgICAgICAgIG1fYnJpZGdl
LT5zdG9wKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFdvcmtlckZpbGVTeXN0ZW1Db250ZXh0
T2JzZXJ2ZXIoV29ya2VyQ29udGV4dCogY29udGV4dCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNr
c0JyaWRnZSogYnJpZGdlKQorICAgICAgICA6IFdlYkNvcmU6OldvcmtlckNvbnRleHQ6Ok9ic2Vy
dmVyKGNvbnRleHQpCisgICAgICAgICwgbV9icmlkZ2UoYnJpZGdlKQorICAgIHsKKyAgICB9CisK
KyAgICAvLyBBbHRob3VnaCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlIG1hbmFnZXMg
dGhlIGxpZmV0aW1lIG9mIHRoaXMgY2xhc3MsCisgICAgLy8gc28gV29ya2VyRmlsZVN5c3RlbUNh
bGxiYWNrc0JyaWRnZSB3aWxsIGJlIHZhbGlkIHdoaWxlIHRoaXMgY2xhc3MgaXMgYXJvdW5kLgor
ICAgIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqIG1fYnJpZGdlOworfTsKKwogdm9p
ZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpzdG9wKCkKIHsKICAgICBBU1NFUlQo
bV93b3JrZXJDb250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7CiAgICAgTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fbXV0ZXgpOwogICAgIG1fd29ya2VyTG9hZGVyUHJveHkgPSAwOwogCisgICAgaWYgKG1f
d29ya2VyQ29udGV4dE9ic2VydmVyKSB7CisgICAgICAgIGRlbGV0ZSBtX3dvcmtlckNvbnRleHRP
YnNlcnZlcjsKKyAgICAgICAgbV93b3JrZXJDb250ZXh0T2JzZXJ2ZXIgPSAwOworICAgIH0KKwog
ICAgIGlmIChtX2NhbGxiYWNrc09uV29ya2VyVGhyZWFkKSB7CiAgICAgICAgIG1fY2FsbGJhY2tz
T25Xb3JrZXJUaHJlYWQtPmRpZEZhaWwoV2ViRmlsZUVycm9yQWJvcnQpOwogICAgICAgICBtX2Nh
bGxiYWNrc09uV29ya2VyVGhyZWFkID0gMDsKQEAgLTE2MSw3ICsxOTMsNyBAQCB2b2lkIFdvcmtl
ckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RPcGVuRmlsZVN5c3RlbVRvTWFpblRocmVh
ZChOZXdXZWJDb21tbwogICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZCgKICAgICAgICAgY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZvcGVuRmlsZVN5c3RlbU9uTWFpblRocmVhZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoY29tbW9uQ2xpZW50KSwgdHlw
ZSwgc2l6ZSwgY3JlYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1Ro
cmVhZEFjY2Vzcyh0aGlzKSwgbW9kZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cywgbW9kZSkpOwogfQogCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBv
c3RNb3ZlVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IEtVUkwm
IHNvdXJjZVBhdGgsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwgY29uc3QgU3RyaW5nJiBt
b2RlKQpAQCAtMTY5LDcgKzIwMSw3IEBAIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0Jy
aWRnZTo6cG9zdE1vdmVUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5CiAgICAgZGlz
cGF0Y2hUYXNrVG9NYWluVGhyZWFkKAogICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJm1vdmVP
bk1haW5UaHJlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFk
QWNjZXNzKGZpbGVTeXN0ZW0pLCBzb3VyY2VQYXRoLCBkZXN0aW5hdGlvblBhdGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBtb2RlKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLCBtb2RlKSk7CiB9CiAKIHZvaWQgV29y
a2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdENvcHlUb01haW5UaHJlYWQoV2ViRmls
ZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgc291cmNlUGF0aCwgY29uc3QgS1VSTCYg
ZGVzdGluYXRpb25QYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpCkBAIC0xNzcsNyArMjA5LDcgQEAg
dm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0Q29weVRvTWFpblRocmVh
ZChXZWJGaWxlU3lzdGVtKiBmaWxlU3kKICAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoCiAg
ICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmY29weU9uTWFpblRocmVhZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoZmlsZVN5c3RlbSksIHNvdXJj
ZVBhdGgsIGRlc3RpbmF0aW9uUGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93
Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRoaXMsIG1vZGUpKTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJp
ZGdlOjpwb3N0UmVtb3ZlVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNv
bnN0IEtVUkwmIHBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSkKQEAgLTE4Niw3ICsyMTgsNyBAQCB2
b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RSZW1vdmVUb01haW5UaHJl
YWQoV2ViRmlsZVN5c3RlbSogZmlsZQogICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZCgKICAg
ICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZyZW1vdmVPbk1haW5UaHJlYWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKGZpbGVTeXN0ZW0pLCBwYXRo
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlz
KSwgbW9kZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywgbW9kZSkpOwogfQog
CiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RSZW1vdmVSZWN1cnNp
dmVseVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBLVVJMJiBw
YXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpCkBAIC0xOTUsNyArMjI3LDcgQEAgdm9pZCBXb3JrZXJG
aWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0UmVtb3ZlUmVjdXJzaXZlbHlUb01haW5UaHJl
YWQoV2ViRmlsZVMKICAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoCiAgICAgICAgIGNyZWF0
ZUNhbGxiYWNrVGFzaygmcmVtb3ZlUmVjdXJzaXZlbHlPbk1haW5UaHJlYWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKGZpbGVTeXN0ZW0pLCBwYXRo
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlz
KSwgbW9kZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywgbW9kZSkpOwogfQog
CiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RSZWFkTWV0YWRhdGFU
b01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwg
Y29uc3QgU3RyaW5nJiBtb2RlKQpAQCAtMjA0LDcgKzIzNiw3IEBAIHZvaWQgV29ya2VyRmlsZVN5
c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdFJlYWRNZXRhZGF0YVRvTWFpblRocmVhZChXZWJGaWxl
U3lzdGVtCiAgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKAogICAgICAgICBjcmVhdGVDYWxs
YmFja1Rhc2soJnJlYWRNZXRhZGF0YU9uTWFpblRocmVhZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoZmlsZVN5c3RlbSksIHBhdGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBtb2RlKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLCBtb2RlKSk7CiB9CiAKIHZvaWQgV29y
a2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdENyZWF0ZUZpbGVUb01haW5UaHJlYWQo
V2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNp
dmUsIGNvbnN0IFN0cmluZyYgbW9kZSkKQEAgLTIxMiw3ICsyNDQsNyBAQCB2b2lkIFdvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RDcmVhdGVGaWxlVG9NYWluVGhyZWFkKFdlYkZp
bGVTeXN0ZW0qCiAgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKAogICAgICAgICBjcmVhdGVD
YWxsYmFja1Rhc2soJmNyZWF0ZUZpbGVPbk1haW5UaHJlYWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKGZpbGVTeXN0ZW0pLCBwYXRoLCBleGNsdXNp
dmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRo
aXMpLCBtb2RlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLCBtb2RlKSk7CiB9
CiAKIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdENyZWF0ZURpcmVj
dG9yeVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBLVVJMJiBw
YXRoLCBib29sIGV4Y2x1c2l2ZSwgY29uc3QgU3RyaW5nJiBtb2RlKQpAQCAtMjIxLDcgKzI1Myw3
IEBAIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdENyZWF0ZURpcmVj
dG9yeVRvTWFpblRocmVhZChXZWJGaWxlU3lzCiAgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFk
KAogICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmNyZWF0ZURpcmVjdG9yeU9uTWFpblRocmVh
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoZmls
ZVN5c3RlbSksIHBhdGgsIGV4Y2x1c2l2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEFs
bG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMsIG1vZGUpKTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tz
QnJpZGdlOjpwb3N0RmlsZUV4aXN0c1RvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiBmaWxlU3lz
dGVtLCBjb25zdCBLVVJMJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpCkBAIC0yMzAsNyArMjYy
LDcgQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0RmlsZUV4aXN0
c1RvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKgogICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVh
ZCgKICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZmaWxlRXhpc3RzT25NYWluVGhyZWFkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhmaWxlU3lz
dGVtKSwgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRB
Y2Nlc3ModGhpcyksIG1vZGUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsIG1v
ZGUpKTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0RGly
ZWN0b3J5RXhpc3RzVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0
IEtVUkwmIHBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSkKQEAgLTIzOSw3ICsyNzEsNyBAQCB2b2lk
IFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3REaXJlY3RvcnlFeGlzdHNUb01h
aW5UaHJlYWQoV2ViRmlsZVN5cwogICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZCgKICAgICAg
ICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaXJlY3RvcnlFeGlzdHNPbk1haW5UaHJlYWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKGZpbGVTeXN0ZW0p
LCBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vz
cyh0aGlzKSwgbW9kZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywgbW9kZSkp
OwogfQogCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RSZWFkRGly
ZWN0b3J5VG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IEtVUkwm
IHBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSkKQEAgLTI0OCwxMCArMjgwLDEwIEBAIHZvaWQgV29y
a2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdFJlYWREaXJlY3RvcnlUb01haW5UaHJl
YWQoV2ViRmlsZVN5c3RlCiAgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKAogICAgICAgICBj
cmVhdGVDYWxsYmFja1Rhc2soJnJlYWREaXJlY3RvcnlPbk1haW5UaHJlYWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKGZpbGVTeXN0ZW0pLCBwYXRo
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlz
KSwgbW9kZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywgbW9kZSkpOwogfQog
Ci12b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6Om9wZW5GaWxlU3lzdGVtT25N
YWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBOZXdXZWJDb21tb25Xb3JrZXJDbGll
bnQqIGNvbW1vbkNsaWVudCwgV2ViRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBsb25nIGxvbmcgc2l6
ZSwgYm9vbCBjcmVhdGUsIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqIGJyaWRnZSwg
Y29uc3QgU3RyaW5nJiBtb2RlKQordm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdl
OjpvcGVuRmlsZVN5c3RlbU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTmV3
V2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21tb25DbGllbnQsIFdlYkZpbGVTeXN0ZW06OlR5cGUg
dHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBQYXNzUmVmUHRyPFdvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2U+IGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAg
IGlmICghY29tbW9uQ2xpZW50KQogICAgICAgICBicmlkZ2UtPmRpZEZhaWxPbk1haW5UaHJlYWQo
V2ViRmlsZUVycm9yQWJvcnQsIG1vZGUpOwpAQCAtMjYwLDg4ICsyOTIsODggQEAgdm9pZCBXb3Jr
ZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpvcGVuRmlsZVN5c3RlbU9uTWFpblRocmVhZChT
Y3JpcHRFeGVjdXRpb24KICAgICB9CiB9CiAKLXZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNr
c0JyaWRnZTo6bW92ZU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgc291cmNlUGF0aCwgY29u
c3QgS1VSTCYgZGVzdGluYXRpb25QYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdl
KiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9kZSkKK3ZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxi
YWNrc0JyaWRnZTo6bW92ZU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgc291cmNlUGF0aCwg
Y29uc3QgS1VSTCYgZGVzdGluYXRpb25QYXRoLCBQYXNzUmVmUHRyPFdvcmtlckZpbGVTeXN0ZW1D
YWxsYmFja3NCcmlkZ2U+IGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIGZpbGVT
eXN0ZW0tPm1vdmUoc291cmNlUGF0aCwgZGVzdGluYXRpb25QYXRoLCBNYWluVGhyZWFkRmlsZVN5
c3RlbUNhbGxiYWNrczo6Y3JlYXRlTGVha2VkUHRyKGJyaWRnZSwgbW9kZSkpOwogfQogCi12b2lk
IFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmNvcHlPbk1haW5UaHJlYWQoV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNv
bnN0IEtVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwgV29ya2Vy
RmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSogYnJpZGdlLCBjb25zdCBTdHJpbmcmIG1vZGUpCit2
b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmNvcHlPbk1haW5UaHJlYWQoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0s
IGNvbnN0IEtVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFz
c1JlZlB0cjxXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiBicmlkZ2UsIGNvbnN0IFN0
cmluZyYgbW9kZSkKIHsKICAgICBmaWxlU3lzdGVtLT5jb3B5KHNvdXJjZVBhdGgsIGRlc3RpbmF0
aW9uUGF0aCwgTWFpblRocmVhZEZpbGVTeXN0ZW1DYWxsYmFja3M6OmNyZWF0ZUxlYWtlZFB0cihi
cmlkZ2UsIG1vZGUpKTsKIH0KIAotdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdl
OjpyZW1vdmVPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdl
YkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtlckZpbGVTeXN0
ZW1DYWxsYmFja3NCcmlkZ2UqIGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQordm9pZCBXb3Jr
ZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpyZW1vdmVPbk1haW5UaHJlYWQoV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0
IEtVUkwmIHBhdGgsIFBhc3NSZWZQdHI8V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4g
YnJpZGdlLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgZmlsZVN5c3RlbS0+cmVtb3ZlKHBh
dGgsIE1haW5UaHJlYWRGaWxlU3lzdGVtQ2FsbGJhY2tzOjpjcmVhdGVMZWFrZWRQdHIoYnJpZGdl
LCBtb2RlKSk7CiB9CiAKLXZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cmVt
b3ZlUmVjdXJzaXZlbHlPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqIGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQordm9p
ZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpyZW1vdmVSZWN1cnNpdmVseU9uTWFp
blRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSog
ZmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgUGFzc1JlZlB0cjxXb3JrZXJGaWxlU3lzdGVt
Q2FsbGJhY2tzQnJpZGdlPiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBmaWxl
U3lzdGVtLT5yZW1vdmVSZWN1cnNpdmVseShwYXRoLCBNYWluVGhyZWFkRmlsZVN5c3RlbUNhbGxi
YWNrczo6Y3JlYXRlTGVha2VkUHRyKGJyaWRnZSwgbW9kZSkpOwogfQogCi12b2lkIFdvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnJlYWRNZXRhZGF0YU9uTWFpblRocmVhZChXZWJDb3Jl
OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29u
c3QgS1VSTCYgcGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSogYnJpZGdlLCBj
b25zdCBTdHJpbmcmIG1vZGUpCit2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6
OnJlYWRNZXRhZGF0YU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgUGFzc1JlZlB0
cjxXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiBicmlkZ2UsIGNvbnN0IFN0cmluZyYg
bW9kZSkKIHsKICAgICBmaWxlU3lzdGVtLT5yZWFkTWV0YWRhdGEocGF0aCwgTWFpblRocmVhZEZp
bGVTeXN0ZW1DYWxsYmFja3M6OmNyZWF0ZUxlYWtlZFB0cihicmlkZ2UsIG1vZGUpKTsKIH0KIAot
dm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpjcmVhdGVGaWxlT25NYWluVGhy
ZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBmaWxl
U3lzdGVtLCBjb25zdCBLVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgV29ya2VyRmlsZVN5c3Rl
bUNhbGxiYWNrc0JyaWRnZSogYnJpZGdlLCBjb25zdCBTdHJpbmcmIG1vZGUpCit2b2lkIFdvcmtl
ckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmNyZWF0ZUZpbGVPbk1haW5UaHJlYWQoV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNv
bnN0IEtVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzUmVmUHRyPFdvcmtlckZpbGVTeXN0
ZW1DYWxsYmFja3NCcmlkZ2U+IGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIGZp
bGVTeXN0ZW0tPmNyZWF0ZUZpbGUocGF0aCwgZXhjbHVzaXZlLCBNYWluVGhyZWFkRmlsZVN5c3Rl
bUNhbGxiYWNrczo6Y3JlYXRlTGVha2VkUHRyKGJyaWRnZSwgbW9kZSkpOwogfQogCi12b2lkIFdv
cmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmNyZWF0ZURpcmVjdG9yeU9uTWFpblRocmVh
ZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogZmlsZVN5
c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFdvcmtlckZpbGVTeXN0ZW1D
YWxsYmFja3NCcmlkZ2UqIGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQordm9pZCBXb3JrZXJG
aWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpjcmVhdGVEaXJlY3RvcnlPbk1haW5UaHJlYWQoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0s
IGNvbnN0IEtVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzUmVmUHRyPFdvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2U+IGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAg
IGZpbGVTeXN0ZW0tPmNyZWF0ZURpcmVjdG9yeShwYXRoLCBleGNsdXNpdmUsIE1haW5UaHJlYWRG
aWxlU3lzdGVtQ2FsbGJhY2tzOjpjcmVhdGVMZWFrZWRQdHIoYnJpZGdlLCBtb2RlKSk7CiB9CiAK
LXZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZmlsZUV4aXN0c09uTWFpblRo
cmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogZmls
ZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRn
ZSogYnJpZGdlLCBjb25zdCBTdHJpbmcmIG1vZGUpCit2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2U6OmZpbGVFeGlzdHNPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IEtVUkwmIHBhdGgs
IFBhc3NSZWZQdHI8V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4gYnJpZGdlLCBjb25z
dCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgZmlsZVN5c3RlbS0+ZmlsZUV4aXN0cyhwYXRoLCBNYWlu
VGhyZWFkRmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlTGVha2VkUHRyKGJyaWRnZSwgbW9kZSkp
OwogfQogCi12b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpcmVjdG9yeUV4
aXN0c09uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmls
ZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgV29ya2VyRmlsZVN5c3RlbUNh
bGxiYWNrc0JyaWRnZSogYnJpZGdlLCBjb25zdCBTdHJpbmcmIG1vZGUpCit2b2lkIFdvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpcmVjdG9yeUV4aXN0c09uTWFpblRocmVhZChXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwg
Y29uc3QgS1VSTCYgcGF0aCwgUGFzc1JlZlB0cjxXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJp
ZGdlPiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBmaWxlU3lzdGVtLT5kaXJl
Y3RvcnlFeGlzdHMocGF0aCwgTWFpblRocmVhZEZpbGVTeXN0ZW1DYWxsYmFja3M6OmNyZWF0ZUxl
YWtlZFB0cihicmlkZ2UsIG1vZGUpKTsKIH0KIAotdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJh
Y2tzQnJpZGdlOjpyZWFkRGlyZWN0b3J5T25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBLVVJMJiBwYXRo
LCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiBicmlkZ2UsIGNvbnN0IFN0cmluZyYg
bW9kZSkKK3ZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cmVhZERpcmVjdG9y
eU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5
c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgUGFzc1JlZlB0cjxXb3JrZXJGaWxl
U3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAg
ICBmaWxlU3lzdGVtLT5yZWFkRGlyZWN0b3J5KHBhdGgsIE1haW5UaHJlYWRGaWxlU3lzdGVtQ2Fs
bGJhY2tzOjpjcmVhdGVMZWFrZWRQdHIoYnJpZGdlLCBtb2RlKSk7CiB9CiAKIHZvaWQgV29ya2Vy
RmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlkRmFpbE9uTWFpblRocmVhZChXZWJGaWxlRXJy
b3IgZXJyb3IsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKLSAgICBtYXlQb3N0VGFza1RvV29ya2Vy
KGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkRmFpbE9uV29ya2VyVGhyZWFkLCBBbGxvd0Nyb3NzVGhy
ZWFkQWNjZXNzKHRoaXMpLCBlcnJvciksIG1vZGUpOworICAgIG1heVBvc3RUYXNrVG9Xb3JrZXIo
Y3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRGYWlsT25Xb3JrZXJUaHJlYWQsIHRoaXMsIGVycm9yKSwg
bW9kZSk7CiB9CiAKIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlkT3Bl
bkZpbGVTeXN0ZW1Pbk1haW5UaHJlYWQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBLVVJMJiBy
b290VVJMLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgbWF5UG9zdFRhc2tUb1dvcmtlcihj
cmVhdGVDYWxsYmFja1Rhc2soJmRpZE9wZW5GaWxlU3lzdGVtT25Xb3JrZXJUaHJlYWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFj
Y2Vzcyh0aGlzKSwgbmFtZSwgcm9vdFVSTCksIG1vZGUpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMsIG5hbWUsIHJvb3RVUkwpLCBtb2RlKTsKIH0KIAog
dm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpkaWRTdWNjZWVkT25NYWluVGhy
ZWFkKGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKLSAgICBtYXlQb3N0VGFza1RvV29ya2VyKGNyZWF0
ZUNhbGxiYWNrVGFzaygmZGlkU3VjY2VlZE9uV29ya2VyVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFk
QWNjZXNzKHRoaXMpKSwgbW9kZSk7CisgICAgbWF5UG9zdFRhc2tUb1dvcmtlcihjcmVhdGVDYWxs
YmFja1Rhc2soJmRpZFN1Y2NlZWRPbldvcmtlclRocmVhZCwgdGhpcyksIG1vZGUpOwogfQogCiB2
b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpZFJlYWRNZXRhZGF0YU9uTWFp
blRocmVhZChjb25zdCBXZWJGaWxlSW5mbyYgaW5mbywgY29uc3QgU3RyaW5nJiBtb2RlKQogewot
ICAgIG1heVBvc3RUYXNrVG9Xb3JrZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRSZWFkTWV0YWRh
dGFPbldvcmtlclRocmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgaW5mbyksIG1v
ZGUpOworICAgIG1heVBvc3RUYXNrVG9Xb3JrZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRSZWFk
TWV0YWRhdGFPbldvcmtlclRocmVhZCwgdGhpcywgaW5mbyksIG1vZGUpOwogfQogCiB2b2lkIFdv
cmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpZFJlYWREaXJlY3RvcnlPbk1haW5UaHJl
YWQoY29uc3QgV2ViVmVjdG9yPFdlYkZpbGVTeXN0ZW1FbnRyeT4mIGVudHJpZXMsIGJvb2wgaGFz
TW9yZSwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIG1heVBvc3RUYXNrVG9Xb3JrZXIoCiAg
ICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkUmVhZERpcmVjdG9yeU9uV29ya2VyVGhyZWFk
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlz
KSwgZW50cmllcywgaGFzTW9yZSksIG1vZGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGhpcywgZW50cmllcywgaGFzTW9yZSksIG1vZGUpOwogfQogCiBXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlOjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKFdlYkNvcmU6Oldv
cmtlckxvYWRlclByb3h5KiB3b3JrZXJMb2FkZXJQcm94eSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJh
Y2tzKQotICAgIDogV29ya2VyQ29udGV4dDo6T2JzZXJ2ZXIoc3RhdGljX2Nhc3Q8V29ya2VyQ29u
dGV4dCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKQotICAgICwgbV93b3JrZXJMb2FkZXJQcm94
eSh3b3JrZXJMb2FkZXJQcm94eSkKKyAgICA6IG1fd29ya2VyTG9hZGVyUHJveHkod29ya2VyTG9h
ZGVyUHJveHkpCiAgICAgLCBtX3dvcmtlckNvbnRleHQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkK
KyAgICAsIG1fd29ya2VyQ29udGV4dE9ic2VydmVyKFdvcmtlckZpbGVTeXN0ZW1Db250ZXh0T2Jz
ZXJ2ZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxXb3JrZXJDb250ZXh0Kj4obV93b3JrZXJDb250ZXh0
KSwgdGhpcykubGVha1B0cigpKQogICAgICwgbV9jYWxsYmFja3NPbldvcmtlclRocmVhZChjYWxs
YmFja3MpCiB7CiAgICAgQVNTRVJUKG1fd29ya2VyQ29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkp
OwpAQCAtMzUwLDI5ICszODIsMzAgQEAgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6
V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShXZWJDb3JlOjpXb3JrZXIKIFdvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6On5Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdl
KCkKIHsKICAgICBBU1NFUlQoIW1fY2FsbGJhY2tzT25Xb3JrZXJUaHJlYWQpOworICAgIEFTU0VS
VCghbV93b3JrZXJDb250ZXh0T2JzZXJ2ZXIpOwogfQogCi12b2lkIFdvcmtlckZpbGVTeXN0ZW1D
YWxsYmFja3NCcmlkZ2U6OmRpZEZhaWxPbldvcmtlclRocmVhZChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSogYnJpZGdlLCBXZWJGaWxlRXJy
b3IgZXJyb3IpCit2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpZEZhaWxP
bldvcmtlclRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxXb3JrZXJG
aWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiBicmlkZ2UsIFdlYkZpbGVFcnJvciBlcnJvcikKIHsK
ICAgICBicmlkZ2UtPm1fY2FsbGJhY2tzT25Xb3JrZXJUaHJlYWQtPmRpZEZhaWwoZXJyb3IpOwog
fQogCi12b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpZE9wZW5GaWxlU3lz
dGVtT25Xb3JrZXJUaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlckZpbGVTeXN0
ZW1DYWxsYmFja3NCcmlkZ2UqIGJyaWRnZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBLVVJM
JiByb290VVJMKQordm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpkaWRPcGVu
RmlsZVN5c3RlbU9uV29ya2VyVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVm
UHRyPFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+IGJyaWRnZSwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBLVVJMJiByb290VVJMKQogewogICAgIGJyaWRnZS0+bV9jYWxsYmFja3NP
bldvcmtlclRocmVhZC0+ZGlkT3BlbkZpbGVTeXN0ZW0obmFtZSwgcm9vdFVSTCk7CiB9CiAKLXZv
aWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlkU3VjY2VlZE9uV29ya2VyVGhy
ZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJp
ZGdlKiBicmlkZ2UpCit2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpZFN1
Y2NlZWRPbldvcmtlclRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxX
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiBicmlkZ2UpCiB7CiAgICAgYnJpZGdlLT5t
X2NhbGxiYWNrc09uV29ya2VyVGhyZWFkLT5kaWRTdWNjZWVkKCk7CiB9CiAKLXZvaWQgV29ya2Vy
RmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlkUmVhZE1ldGFkYXRhT25Xb3JrZXJUaHJlYWQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2Uq
IGJyaWRnZSwgY29uc3QgV2ViRmlsZUluZm8mIGluZm8pCit2b2lkIFdvcmtlckZpbGVTeXN0ZW1D
YWxsYmFja3NCcmlkZ2U6OmRpZFJlYWRNZXRhZGF0YU9uV29ya2VyVGhyZWFkKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+
IGJyaWRnZSwgY29uc3QgV2ViRmlsZUluZm8mIGluZm8pCiB7CiAgICAgYnJpZGdlLT5tX2NhbGxi
YWNrc09uV29ya2VyVGhyZWFkLT5kaWRSZWFkTWV0YWRhdGEoaW5mbyk7CiB9CiAKLXZvaWQgV29y
a2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlkUmVhZERpcmVjdG9yeU9uV29ya2VyVGhy
ZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJp
ZGdlKiBicmlkZ2UsIGNvbnN0IFdlYlZlY3RvcjxXZWJGaWxlU3lzdGVtRW50cnk+JiBlbnRyaWVz
LCBib29sIGhhc01vcmUpCit2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRp
ZFJlYWREaXJlY3RvcnlPbldvcmtlclRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFz
c1JlZlB0cjxXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiBicmlkZ2UsIGNvbnN0IFdl
YlZlY3RvcjxXZWJGaWxlU3lzdGVtRW50cnk+JiBlbnRyaWVzLCBib29sIGhhc01vcmUpCiB7CiAg
ICAgYnJpZGdlLT5tX2NhbGxiYWNrc09uV29ya2VyVGhyZWFkLT5kaWRSZWFkRGlyZWN0b3J5KGVu
dHJpZXMsIGhhc01vcmUpOwogfQpAQCAtMzkzLDkgKzQyNiwxNiBAQCB2b2lkIFdvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnJ1blRhc2tPbldvcmtlclRocmVhZChXZWJDb3JlOjpTY3Jp
cHRFeGVjdQogICAgIGlmICghYnJpZGdlLT5tX2NhbGxiYWNrc09uV29ya2VyVGhyZWFkKQogICAg
ICAgICByZXR1cm47CiAgICAgQVNTRVJUKGJyaWRnZS0+bV93b3JrZXJDb250ZXh0LT5pc0NvbnRl
eHRUaHJlYWQoKSk7CisKICAgICB0YXNrVG9SdW4tPnBlcmZvcm1UYXNrKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpOwogICAgIGJyaWRnZS0+bV9jYWxsYmFja3NPbldvcmtlclRocmVhZCA9IDA7Ci0g
ICAgYnJpZGdlLT5zdG9wT2JzZXJ2aW5nKCk7CisKKyAgICBpZiAoYnJpZGdlLT5tX3dvcmtlckNv
bnRleHRPYnNlcnZlcikgeworICAgICAgICBkZWxldGUgYnJpZGdlLT5tX3dvcmtlckNvbnRleHRP
YnNlcnZlcjsKKyAgICAgICAgYnJpZGdlLT5tX3dvcmtlckNvbnRleHRPYnNlcnZlciA9IDA7Cisg
ICAgfQorCisgICAgLy8gV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSBtYXkgYmUgZGVs
ZXRlIGhlcmUgYXMgYnJpZGdlIGdvZXMgb3V0IG9mIHNjb3BlLgogfQogCiB2b2lkIFdvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpc3BhdGNoVGFza1RvTWFpblRocmVhZChQYXNzT3du
UHRyPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2spCkBAIC00MTYs
OCArNDU2LDkgQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjptYXlQb3N0
VGFza1RvV29ya2VyKFBhc3NPd25QdHI8U2NyaXB0RXhlY3UKICAgICBNdXRleExvY2tlciBsb2Nr
ZXIobV9tdXRleCk7CiAgICAgaWYgKG1fd29ya2VyTG9hZGVyUHJveHkpCiAgICAgICAgIG1fd29y
a2VyTG9hZGVyUHJveHktPnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxs
YmFja1Rhc2soJnJ1blRhc2tPbldvcmtlclRocmVhZCwgYnJpZGdlLCB0YXNrKSwgbW9kZSk7Ci19
CiAKKyAgICAvLyBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlIG1heSBiZSBkZWxldGUg
aGVyZSBhcyBicmlkZ2UgZ29lcyBvdXQgb2Ygc2NvcGUuCit9CiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdl
LmgKaW5kZXggOGFlN2ViMzQ5NTEwZjQ5ZjAyOTZkNWJkNDkyNDA1NTI3NzRhMDNlNC4uMjIwNzJl
ZWI1NWFhZmM4ODk5ZGUyYzY3ZDk1NTA1MTdhZjYwMTA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlk
Z2UuaApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIldlYkZpbGVFcnJvci5oIgogI2luY2x1
ZGUgInBsYXRmb3JtL1dlYkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0
b3IuaCIKLSNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRp
bmcuaD4KQEAgLTU0LDEwICs1MywxMSBAQCBjbGFzcyBNYWluVGhyZWFkRmlsZVN5c3RlbUNhbGxi
YWNrczsKIGNsYXNzIE5ld1dlYkNvbW1vbldvcmtlckNsaWVudDsKIGNsYXNzIFRocmVhZGFibGVD
YWxsYmFja3NCcmlkZ2VXcmFwcGVyOwogY2xhc3MgV2ViRmlsZVN5c3RlbUNhbGxiYWNrczsKK2Ns
YXNzIFdvcmtlckZpbGVTeXN0ZW1Db250ZXh0T2JzZXJ2ZXI7CiBzdHJ1Y3QgV2ViRmlsZUluZm87
CiBzdHJ1Y3QgV2ViRmlsZVN5c3RlbUVudHJ5OwogCi0vLyBUaGlzIGNsYXNzIGlzIHVzZWQgdG8g
cG9zdCBhIG9wZW5GaWxlU3lzdGVtIHJlcXVlc3QgdG8gdGhlIG1haW4gdGhyZWFkIGFuZCBnZXQg
Y2FsbGVkIGJhY2sgZm9yIHRoZSByZXF1ZXN0LiBUaGlzIG11c3QgYmUgZGVzdHJ1Y3RlZCBvbiB0
aGUgd29ya2VyIHRocmVhZC4KKy8vIFVzZWQgdG8gcG9zdCBhIG9wZW5GaWxlU3lzdGVtIHJlcXVl
c3QgdG8gdGhlIG1haW4gdGhyZWFkIGFuZCBnZXQgY2FsbGVkIGJhY2sgZm9yIHRoZSByZXF1ZXN0
LgogLy8KIC8vIEEgdHlwaWNhbCBmbG93IGZvciBvcGVuRmlsZVN5c3RlbSB3b3VsZCBsb29rIGxp
a2UgdGhpczoKIC8vIEJyaWRnZTo6cG9zdE9wZW5GaWxlU3lzdGVtVG9NYWluVGhyZWFkKCkgb24g
V29ya2VyVGhyZWFkCkBAIC02OSwxNiArNjksMTEgQEAgc3RydWN0IFdlYkZpbGVTeXN0ZW1FbnRy
eTsKIC8vICAtLT4gQnJpZGdlOjpkaWRYeHhPbldvcmtlclRocmVhZCBpcyBjYWxsZWQgb24gV29y
a2VyVGhyZWFkCiAvLyAgICAgIFRoaXMgY2FsbHMgdGhlIG9yaWdpbmFsIGNhbGxiYWNrcyAobV9j
YWxsYmFja3NPbldvcmtlclRocmVhZCkgYW5kCiAvLyAgICAgIHJlbGVhc2VzIGEgc2VsZi1yZWZl
cmVuY2UgdG8gdGhlIGJyaWRnZS4KLWNsYXNzIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlk
Z2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNr
c0JyaWRnZT4sIHB1YmxpYyBXZWJDb3JlOjpXb3JrZXJDb250ZXh0OjpPYnNlcnZlciB7CisvLwor
Ly8gRWl0aGVyIG1heVBvc3RUYXNrVG9Xb3JrZXIgb3IgZGlkWHh4T25Xb3JrZXJUaHJlYWQgbWF5
IGRvIHRoZSBmaW5hbCByZWxlYXN0IG9uIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UK
Ky8vIGRlcGVuZGluZyBvbiB0aW1pbmcuCitjbGFzcyBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tz
QnJpZGdlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2U+IHsKIHB1YmxpYzoKLSAgICB+V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0Jy
aWRnZSgpOwotCi0gICAgLy8gV29ya2VyQ29udGV4dDo6T2JzZXJ2ZXIgbWV0aG9kLgotICAgIHZp
cnR1YWwgdm9pZCBub3RpZnlTdG9wKCkKLSAgICB7Ci0gICAgICAgIHN0b3AoKTsKLSAgICB9Ci0K
ICAgICB2b2lkIHN0b3AoKTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdvcmtlckZpbGVTeXN0
ZW1DYWxsYmFja3NCcmlkZ2U+IGNyZWF0ZShXZWJDb3JlOjpXb3JrZXJMb2FkZXJQcm94eSogd29y
a2VyTG9hZGVyUHJveHksIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHdvcmtlckNv
bnRleHQsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKQEAgLTEwNywyOSArMTAy
LDMyIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlYWREaXJlY3RvcnlPbk1haW5UaHJlYWQoY29u
c3QgV2ViVmVjdG9yPFdlYkZpbGVTeXN0ZW1FbnRyeT4mLCBib29sIGhhc01vcmUsIGNvbnN0IFN0
cmluZyYgbW9kZSk7CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFRocmVhZFNhZmVSZWZD
b3VudGVkPFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+OworCiAgICAgV29ya2VyRmls
ZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShXZWJDb3JlOjpXb3JrZXJMb2FkZXJQcm94eSosIFdlYkNv
cmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKik7Cisg
ICAgfldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UoKTsKIAogICAgIC8vIE1ldGhvZHMg
dGhhdCBhcmUgdG8gYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KLSAgICBzdGF0aWMgdm9p
ZCBvcGVuRmlsZVN5c3RlbU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgTmV3V2ViQ29tbW9uV29ya2VyQ2xpZW50KiwgV2ViRmlsZVN5c3RlbTo6VHlwZSwgbG9u
ZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdl
KiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKLSAgICBzdGF0aWMgdm9pZCBtb3ZlT25NYWluVGhyZWFk
KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgc3JjUGF0aCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZGVzdFBhdGgsIFdv
cmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqLCBjb25zdCBTdHJpbmcmIG1vZGUpOwotICAg
IHN0YXRpYyB2b2lkIGNvcHlPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBzcmNQYXRoLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiBkZXN0UGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRn
ZSosIGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAgc3RhdGljIHZvaWQgcmVtb3ZlT25NYWluVGhy
ZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgcGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSos
IGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAgc3RhdGljIHZvaWQgcmVtb3ZlUmVjdXJzaXZlbHlP
bk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0
ZW0qLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBwYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tz
QnJpZGdlKiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKLSAgICBzdGF0aWMgdm9pZCByZWFkTWV0YWRh
dGFPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVT
eXN0ZW0qLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBwYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJh
Y2tzQnJpZGdlKiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKLSAgICBzdGF0aWMgdm9pZCBjcmVhdGVG
aWxlT25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxl
U3lzdGVtKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFdvcmtl
ckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqLCBjb25zdCBTdHJpbmcmIG1vZGUpOwotICAgIHN0
YXRpYyB2b2lkIGNyZWF0ZURpcmVjdG9yeU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSosIGNvbnN0IFdlYkNvcmU6OktVUkwmIHBhdGgs
IGJvb2wgZXhjbHVzaXZlLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiwgY29uc3Qg
U3RyaW5nJiBtb2RlKTsKLSAgICBzdGF0aWMgdm9pZCBmaWxlRXhpc3RzT25NYWluVGhyZWFkKFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYgcGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSosIGNvbnN0
IFN0cmluZyYgbW9kZSk7Ci0gICAgc3RhdGljIHZvaWQgZGlyZWN0b3J5RXhpc3RzT25NYWluVGhy
ZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgcGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSos
IGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAgc3RhdGljIHZvaWQgcmVhZERpcmVjdG9yeU9uTWFp
blRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSos
IGNvbnN0IFdlYkNvcmU6OktVUkwmIHBhdGgsIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlk
Z2UqLCBjb25zdCBTdHJpbmcmIG1vZGUpOworICAgIHN0YXRpYyB2b2lkIG9wZW5GaWxlU3lzdGVt
T25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBOZXdXZWJDb21t
b25Xb3JrZXJDbGllbnQqLCBXZWJGaWxlU3lzdGVtOjpUeXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9v
bCBjcmVhdGUsIFBhc3NSZWZQdHI8V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4sIGNv
bnN0IFN0cmluZyYgbW9kZSk7CisgICAgc3RhdGljIHZvaWQgbW92ZU9uTWFpblRocmVhZChXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSosIGNvbnN0IFdlYkNv
cmU6OktVUkwmIHNyY1BhdGgsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGRlc3RQYXRoLCBQYXNzUmVm
UHRyPFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+LCBjb25zdCBTdHJpbmcmIG1vZGUp
OworICAgIHN0YXRpYyB2b2lkIGNvcHlPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBzcmNQYXRo
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBkZXN0UGF0aCwgUGFzc1JlZlB0cjxXb3JrZXJGaWxlU3lz
dGVtQ2FsbGJhY2tzQnJpZGdlPiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKKyAgICBzdGF0aWMgdm9p
ZCByZW1vdmVPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdl
YkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBwYXRoLCBQYXNzUmVmUHRyPFdvcmtl
ckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+LCBjb25zdCBTdHJpbmcmIG1vZGUpOworICAgIHN0
YXRpYyB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5T25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgcGF0
aCwgUGFzc1JlZlB0cjxXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiwgY29uc3QgU3Ry
aW5nJiBtb2RlKTsKKyAgICBzdGF0aWMgdm9pZCByZWFkTWV0YWRhdGFPbk1haW5UaHJlYWQoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBwYXRoLCBQYXNzUmVmUHRyPFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlk
Z2U+LCBjb25zdCBTdHJpbmcmIG1vZGUpOworICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUZpbGVPbk1h
aW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0q
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc1JlZlB0cjxX
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKKyAg
ICBzdGF0aWMgdm9pZCBjcmVhdGVEaXJlY3RvcnlPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBw
YXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc1JlZlB0cjxXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tz
QnJpZGdlPiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKKyAgICBzdGF0aWMgdm9pZCBmaWxlRXhpc3Rz
T25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lz
dGVtKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgcGF0aCwgUGFzc1JlZlB0cjxXb3JrZXJGaWxlU3lz
dGVtQ2FsbGJhY2tzQnJpZGdlPiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKKyAgICBzdGF0aWMgdm9p
ZCBkaXJlY3RvcnlFeGlzdHNPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBwYXRoLCBQYXNzUmVm
UHRyPFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+LCBjb25zdCBTdHJpbmcmIG1vZGUp
OworICAgIHN0YXRpYyB2b2lkIHJlYWREaXJlY3RvcnlPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiBwYXRoLCBQYXNzUmVmUHRyPFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+LCBjb25z
dCBTdHJpbmcmIG1vZGUpOwogCiAgICAgZnJpZW5kIGNsYXNzIE1haW5UaHJlYWRGaWxlU3lzdGVt
Q2FsbGJhY2tzOwogCiAgICAgLy8gTWV0aG9kcyB0aGF0IGRpc3BhdGNoIFdlYkZpbGVTeXN0ZW1D
YWxsYmFja3Mgb24gdGhlIHdvcmtlciB0aHJlYWRzLgotICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxP
bldvcmtlclRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29ya2VyRmls
ZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSosIFdlYkZpbGVFcnJvcik7Ci0gICAgc3RhdGljIHZvaWQg
ZGlkT3BlbkZpbGVTeXN0ZW1PbldvcmtlclRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSosIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgV2ViQ29yZTo6S1VSTCYgcm9vdFBhdGgpOwotICAgIHN0YXRpYyB2b2lkIGRp
ZFN1Y2NlZWRPbldvcmtlclRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSopOwotICAgIHN0YXRpYyB2b2lkIGRpZFJl
YWRNZXRhZGF0YU9uV29ya2VyVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiwgY29uc3QgV2ViRmlsZUluZm8mKTsK
LSAgICBzdGF0aWMgdm9pZCBkaWRSZWFkRGlyZWN0b3J5T25Xb3JrZXJUaHJlYWQoV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2Uq
LCBjb25zdCBXZWJWZWN0b3I8V2ViRmlsZVN5c3RlbUVudHJ5PiYsIGJvb2wgaGFzTW9yZSk7Cisg
ICAgc3RhdGljIHZvaWQgZGlkRmFpbE9uV29ya2VyVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+
LCBXZWJGaWxlRXJyb3IpOworICAgIHN0YXRpYyB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtT25Xb3Jr
ZXJUaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8V29y
a2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgcm9vdFBhdGgpOworICAgIHN0YXRpYyB2b2lkIGRpZFN1Y2NlZWRPbldv
cmtlclRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxX
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPik7CisgICAgc3RhdGljIHZvaWQgZGlkUmVh
ZE1ldGFkYXRhT25Xb3JrZXJUaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFBhc3NSZWZQdHI8V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4sIGNvbnN0IFdlYkZp
bGVJbmZvJik7CisgICAgc3RhdGljIHZvaWQgZGlkUmVhZERpcmVjdG9yeU9uV29ya2VyVGhyZWFk
KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFdvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2U+LCBjb25zdCBXZWJWZWN0b3I8V2ViRmlsZVN5c3RlbUVudHJ5
PiYsIGJvb2wgaGFzTW9yZSk7CiAKICAgICBzdGF0aWMgdm9pZCBydW5UYXNrT25NYWluVGhyZWFk
KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFdvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2U+LCBQYXNzT3duUHRyPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2s+KTsKICAgICBzdGF0aWMgdm9pZCBydW5UYXNrT25Xb3JrZXJUaHJlYWQo
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8V29ya2VyRmlsZVN5
c3RlbUNhbGxiYWNrc0JyaWRnZT4sIFBhc3NPd25QdHI8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzaz4pOwpAQCAtMTQxLDYgKzEzOSw5IEBAIHByaXZhdGU6CiAgICAgV2ViQ29y
ZTo6V29ya2VyTG9hZGVyUHJveHkqIG1fd29ya2VyTG9hZGVyUHJveHk7CiAgICAgV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV93b3JrZXJDb250ZXh0OwogCisgICAgLy8gTXVzdCBi
ZSBkZWxldGVkIG9uIHRoZSBXb3JrZXJDb250ZXh0IHRocmVhZC4KKyAgICBXb3JrZXJGaWxlU3lz
dGVtQ29udGV4dE9ic2VydmVyKiBtX3dvcmtlckNvbnRleHRPYnNlcnZlcjsKKwogICAgIC8vIFRo
aXMgaXMgc2VsZi1kZXN0cnVjdGVkIGFuZCBtdXN0IGJlIGZpcmVkIG9uIHRoZSB3b3JrZXIgdGhy
ZWFkLgogICAgIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqIG1fY2FsbGJhY2tzT25Xb3JrZXJUaHJl
YWQ7CiB9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGVmYjRmMGZlMTAzMzY0ZDIzNDU4YzgzNmNhOWNkYjA3ODRlNzI3MGYu
LjgzNWI4MDkxNzA4MDRlOTVkZTg0YmFhYmI3ZjRiNDAwNzdkNjU3MmUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOCBAQAorMjAxMS0xMi0xNSAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgW2Nocm9taXVtXSBGaWxlU3lzdGVtIGJyaWRnZSBuZWVkcyB0aHJlYWRzYWZlIGZp
eGVzIGFuZCBvdGhlciBjbGVhbi11cC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc0NjY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRXhwYW5kIHRoZSB0ZXN0cyBwcmV2aW91c2x5IGFkZGVkIGluIHIxMDI4
OTQgZm9yIGEgc2ltaWxhciBzaXR1YXRpb24uCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtl
cnMvcmVzb3VyY2VzL29wZW4tZGF0YWJhc2Utc3luYy5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3dvcmtlcnMvcmVzb3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qczogQWRkZWQuCisg
ICAgICAgIChyZW1vdmVBbGxJbkRpcmVjdG9yeVN5bmMpOgorICAgICAgICAob25tZXNzYWdlKToK
KyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvdGVybWluYXRlLWR1cmluZy1zeW5jLW9wZXJh
dGlvbi5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL2lu
dGVycnVwdC1kYXRhYmFzZS1zeW5jLW9wZW4tY3Jhc2guaHRtbC4KKwogMjAxMS0xMi0xNSAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjEwMjgyOS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29y
a2Vycy9pbnRlcnJ1cHQtZGF0YWJhc2Utc3luYy1vcGVuLWNyYXNoLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dvcmtlcnMvaW50ZXJydXB0LWRhdGFiYXNlLXN5bmMtb3Blbi1jcmFzaC5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTU1NzI2NzJiOWI3ODFmYTM1ZDQ0
ZGFiYTZmZjExMGE3ZjdmMDdmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9pbnRlcnJ1cHQtZGF0YWJh
c2Utc3luYy1vcGVuLWNyYXNoLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi08
aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9J3Jlc291cmNlcy93b3JrZXItdXRpbC5qcyc+PC9z
Y3JpcHQ+Ci08c2NyaXB0PgotdmFyIHdvcmtlcnNTdGFydGVkOwotdmFyIHdvcmtlcnNDbG9zZWQ7
Ci0KLS8vIERvIHRoZSB0ZXN0IDEwIHRpbWVzIGJlY2F1c2UgdGhlIGNyYXNoIGRpZG4ndCBoYXBw
ZW4gZXZlcnkgdGltZSwgYnV0Ci0vLyBpdCBoYXBwZW4gd2l0aCBhIGhpZ2ggZGVncmVlIG9mIGNv
bmZpZGVuY2UgaW4gMTAgaXRlcmF0aW9ucy4KLXZhciByZW1haW5pbmdJdGVyYXRpb25zID0gMTA7
Ci0vLyAzMCB3b3JrZXJzIHNlZW1lZCB0byBjYXVzZSB0aGUgY3Jhc2ggdG8gaGFwcGVuIGZyZXF1
ZW50bHkuCi12YXIgd29ya2VycyA9IG5ldyBBcnJheSgzMCk7Ci0KLWZ1bmN0aW9uIG5leHRJdGVy
YXRpb24oKQotewotICAgIGxvZygnUmVtYWluaW5nIGl0ZXJhdGlvbnM6ICcgKyAgcmVtYWluaW5n
SXRlcmF0aW9ucyk7Ci0gICAgd2FpdFVudGlsV29ya2VyVGhyZWFkc0V4aXQoc3RhcnRXb3JrZXJz
KQotfQotCi1mdW5jdGlvbiBzdGFydFdvcmtlcnMoKQotewotICAgIGlmICghcmVtYWluaW5nSXRl
cmF0aW9ucykgewotICAgICAgICBkb25lKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
cmVtYWluaW5nSXRlcmF0aW9ucy0tOwotCi0gICAgd29ya2Vyc1N0YXJ0ZWQgPSAwOwotICAgIHdv
cmtlcnNDbG9zZWQgPSAwOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgd29ya2Vycy5sZW5ndGg7
ICsraSkgewotICAgICAgICB3b3JrZXJzW2ldID0gbmV3IFdvcmtlcigncmVzb3VyY2VzL29wZW4t
ZGF0YWJhc2Utc3luYy5qcz9hcmc9JyArIGkpCi0gICAgICAgIHdvcmtlcnNbaV0ub25tZXNzYWdl
ID0gd2FpdEZvckFsbFdvcmtlcnNUb1N0YXJ0OwotICAgIH0KLX0KLQotLy8gRG8gb3VyIGJlc3Qg
dG8gdHJ5IHRvIGludGVycnVwdCB0aGUgZGF0YWJzZSBvcGVuCi0vLyBjYWxsIGJ5IHdhaXRpbmcg
Zm9yIHRoZSB3b3JrZXIgdG8gc3RhcnQgYW5kIHRoZW4KLS8vIHRlbGxpbmcgaXQgdG8gZG8gdGhl
IG9wZW4gZGF0YWJhc2UgY2FsbCAoYW5kCi0vLyB0aGVuIHRlcm1pbmF0ZSB0aGUgd29ya2VyKS4K
LWZ1bmN0aW9uIHdhaXRGb3JBbGxXb3JrZXJzVG9TdGFydCgpCi17Ci0gICAgd29ya2Vyc1N0YXJ0
ZWQrKzsKLSAgICBpZiAod29ya2Vyc1N0YXJ0ZWQgPCB3b3JrZXJzLmxlbmd0aCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB3b3JrZXJzLmxlbmd0aDsgKytpKQot
ICAgICAgICB3b3JrZXJzW2ldLnBvc3RNZXNzYWdlKCdvcGVuRGF0YWJhc2VTeW5jJyk7Ci0KLSAg
ICBzZXRUaW1lb3V0KCdjbG9zZVdvcmtlcigpJywgMCk7Ci19Ci0KLWZ1bmN0aW9uIGNsb3NlV29y
a2VyKCkKLXsKLSAgICB3b3JrZXJzW3dvcmtlcnNDbG9zZWRdLnRlcm1pbmF0ZSgpOwotICAgIHdv
cmtlcnNDbG9zZWQrKzsKLSAgICBpZiAod29ya2Vyc0Nsb3NlZCA8IHdvcmtlcnMubGVuZ3RoKQot
ICAgICAgICBzZXRUaW1lb3V0KCdjbG9zZVdvcmtlcigpJywgMyk7Ci0gICAgZWxzZQotICAgICAg
ICBuZXh0SXRlcmF0aW9uKCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3QoKQotewotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7Ci0gICAgfQotICAgIG5leHRJdGVyYXRpb24oKTsKLX0KLTwvc2NyaXB0PgotPC9oZWFk
PgotPGJvZHkgb25sb2FkPSdydW5UZXN0KCknPgotPGRpdiBpZD0ncmVzdWx0Jz4KLTwvZGl2Pgot
PC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3Jr
ZXJzL3Jlc291cmNlcy9vcGVuLWRhdGFiYXNlLXN5bmMuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dvcmtlcnMvcmVzb3VyY2VzL29wZW4tZGF0YWJhc2Utc3luYy5qcwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMWU3YmU5NDFiZTk0MzIwYTZmM2E5ZjczYzcyMjIwMzYwYzY2NjU1
ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvcmVzb3VyY2VzL29wZW4tZGF0YWJhc2Utc3luYy5qcwor
KysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotcG9zdE1lc3NhZ2UoJ3N0YXJ0ZWQnKTsKLQot
b25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KQotewotICAgIGlmIChldnQuZGF0YSA9PSAnb3BlbkRh
dGFiYXNlU3luYycpCi0gICAgICAgIG9wZW5EYXRhYmFzZVN5bmMoJycsICcnLCAnJywgMSk7Ci19
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvcmVzb3VyY2VzL3N5
bmMtb3BlcmF0aW9ucy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9yZXNvdXJj
ZXMvc3luYy1vcGVyYXRpb25zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkNjRmZmM5ZTE5YjBjNWVlNDhhMWY0
MGU1NWI2YmIzNmM2ZDg4Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dvcmtlcnMvcmVzb3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qcwpAQCAtMCwwICsxLDcxIEBA
CitmdW5jdGlvbiByZW1vdmVBbGxJbkRpcmVjdG9yeVN5bmMoZGlyZWN0b3J5KQoreworICAgIGlm
ICghZGlyZWN0b3J5KQorICAgICAgICByZXR1cm47CisgICAgdmFyIHJlYWRlciA9IGRpcmVjdG9y
eS5jcmVhdGVSZWFkZXIoKTsKKyAgICBkbyB7CisgICAgICAgIHZhciBlbnRyaWVzID0gcmVhZGVy
LnJlYWRFbnRyaWVzKCk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW50cmllcy5sZW5n
dGg7ICsraSkgeworICAgICAgICAgICAgaWYgKGVudHJpZXNbaV0uaXNEaXJlY3RvcnkpCisgICAg
ICAgICAgICAgICAgZW50cmllc1tpXS5yZW1vdmVSZWN1cnNpdmVseSgpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIGVudHJpZXNbaV0ucmVtb3ZlKCk7CisgICAgICAgIH0KKyAg
ICB9IHdoaWxlIChlbnRyaWVzLmxlbmd0aCk7Cit9CisKK29ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2
dCkKK3sKKyAgICAvLyBJbmNyZWFzZSB0aGUgY2hhbmdlIG9mIGdldHRpbmcgY2F1Z2h0IGRvaW5n
IGEgc3luYyBvcGVyYXRpb24KKyAgICAvLyBieSByZXBlYXRpbmcgdGhlIG9wcmF0aW9uIG11bHRp
cGxlIHRpbWVzLgorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsraSkgeworICAgICAgICBp
ZiAoZXZ0LmRhdGEgPT0gJ29wZW5EYXRhYmFzZVN5bmMnKQorICAgICAgICAgICAgb3BlbkRhdGFi
YXNlU3luYygnJywgJycsICcnLCAxKTsKKyAgICAgICAgZWxzZSBpZiAoZXZ0LmRhdGEgPT0gJ3Jl
cXVlc3RGaWxlU3lzdGVtU3luYycpCisgICAgICAgICAgICB3ZWJraXRSZXF1ZXN0RmlsZVN5c3Rl
bVN5bmModGhpcy5URU1QT1JBUlksIDEwMCk7CisJZWxzZSBpZiAoZXZ0LmRhdGEgPT0gJ2ZpbGVT
eW5jT3BlcmF0aW9ucycpIHsKKwkgICAgaWYgKCF0aGlzLndlYmtpdFJlcXVlc3RGaWxlU3lzdGVt
U3luYykKKwkJcmV0dXJuOworCSAgICB0cnkgeworCQkvLyBEbyBtYW55IGRpZmZlcmVudCBzeW5j
IGZpbGVzeXN0ZW0gb3BlcmF0aW9ucy4gSWYgdGhpcyBzdGFydHMgY3Jhc2hpbmcsCisJCS8vIHRo
ZW4gYSBzaW1wbGUgaW52ZXN0aWdhdGlvbiB3b3VsZCBiZSB0byBpc29sYXRlIHRoZXNlIGNvbW1h
bmRzLgorCQl2YXIgZmlsZVN5c3RlbSA9IHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyh0aGlz
LlRFTVBPUkFSWSwgMTAwKTsKKworCQlyZW1vdmVBbGxJbkRpcmVjdG9yeVN5bmMoZmlsZVN5c3Rl
bS5yb290KTsKKworCQkvLyBTdGFnZSAxIChwcmVwYXJlKQorCQl2YXIgYSA9IGZpbGVTeXN0ZW0u
cm9vdC5nZXRGaWxlKCdhJywge2NyZWF0ZTp0cnVlfSk7CisJCXZhciBiID0gZmlsZVN5c3RlbS5y
b290LmdldERpcmVjdG9yeSgnYicsIHtjcmVhdGU6dHJ1ZX0pOworCQl2YXIgYyA9IGZpbGVTeXN0
ZW0ucm9vdC5nZXREaXJlY3RvcnkoJ2MnLCB7Y3JlYXRlOnRydWV9KTsKKwkJdmFyIGQgPSBmaWxl
U3lzdGVtLnJvb3QuZ2V0RmlsZSgnZCcsIHtjcmVhdGU6dHJ1ZX0pOworCisJCS8vIFN0YWdlIDIg
KHRlc3QpCisJCXZhciBhX2NvcHkgPSBhLmNvcHlUbyhiLCAndG1wJyk7CisJCXZhciBtZXRhZGF0
YSA9IGEuZ2V0TWV0YWRhdGEoKTsKKwkJdmFyIGJfcGFyZW50ID0gYi5nZXRQYXJlbnQoKTsKKwkJ
dmFyIGNfY29weSA9IGMuY29weVRvKGZpbGVTeXN0ZW0ucm9vdCwgJ2YnKTsKKwkJdmFyIGRfbmV3
ID0gZC5tb3ZlVG8oZmlsZVN5c3RlbS5yb290LCAnZDInKTsKKwkJdmFyIGUgPSBmaWxlU3lzdGVt
LnJvb3QuZ2V0RmlsZSgnZScsIHtjcmVhdGU6dHJ1ZX0pOworCisJCS8vIFZlcmlmeQorCQl2YXIg
cmVhZGVyID0gZmlsZVN5c3RlbS5yb290LmNyZWF0ZVJlYWRlcigpOworCQl2YXIgZGlyc0NvdW50
ID0gMDsKKwkJdmFyIHBhdGhzID0gW107CisJCWRvIHsKKwkJICAgIHZhciBlbnRyaWVzID0gcmVh
ZGVyLnJlYWRFbnRyaWVzKCk7CisJCSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJpZXMubGVu
Z3RoOyArK2kpIHsKKwkJCXBhdGhzLnB1c2goZW50cmllc1tpXS5mdWxsUGF0aCk7CisJCQlpZiAo
ZW50cmllc1tpXS5pc0RpcmVjdG9yeSkKKwkJCSAgICBkaXJzQ291bnQrKzsKKwkJICAgIH0KKwkJ
fSB3aGlsZSAoZW50cmllcy5sZW5ndGgpOworCisJCXJlbW92ZUFsbEluRGlyZWN0b3J5U3luYyhm
aWxlU3lzdGVtLnJvb3QpOworCSAgICB9IGNhdGNoIChlKSB7CisJCXJldHVybjsKKwkgICAgfQor
CX0KKyAgICB9Cit9CisKK3Bvc3RNZXNzYWdlKCdzdGFydGVkJyk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvdGVybWluYXRlLWR1cmluZy1zeW5jLW9wZXJhdGlv
bi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3Rlcm1pbmF0ZS1kdXJpbmct
c3luYy1vcGVyYXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTAzYzdiZGU3YmQ4ZjEzMTc2NDEyMzA2
ZTMxZGZhNDk0NTMwYWZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93b3JrZXJzL3Rlcm1pbmF0ZS1kdXJpbmctc3luYy1vcGVyYXRpb24uaHRtbApAQCAtMCwwICsx
LDc1IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9J3Jlc291cmNlcy93b3JrZXItdXRp
bC5qcyc+PC9zY3JpcHQ+Cis8c2NyaXB0PgordmFyIHdvcmtlcnNTdGFydGVkOwordmFyIHdvcmtl
cnNDbG9zZWQ7CisKK3ZhciB0ZXN0TnVtYmVyID0gLTE7Cit2YXIgc3luY09wZXJhdGlvblRlc3Rz
ID0gbmV3IEFycmF5KCdvcGVuRGF0YWJhc2VTeW5jJywgJ3JlcXVlc3RGaWxlU3lzdGVtU3luYycs
ICdmaWxlU3luY09wZXJhdGlvbnMnKTsKKworLy8gMzAgd29ya2VycyBzZWVtZWQgdG8gY2F1c2Ug
dGhlIGNyYXNoIHRvIGhhcHBlbiBmcmVxdWVudGx5LgordmFyIHdvcmtlcnMgPSBuZXcgQXJyYXko
MzApOworCitmdW5jdGlvbiBzdGFydE5leHRUZXN0KCkKK3sKKyAgICB0ZXN0TnVtYmVyKys7Cisg
ICAgaWYgKHRlc3ROdW1iZXIgPj0gc3luY09wZXJhdGlvblRlc3RzLmxlbmd0aCkgeworICAgICAg
ICB3YWl0VW50aWxXb3JrZXJUaHJlYWRzRXhpdChkb25lKQorICAgICAgICByZXR1cm47CisgICAg
fQorICAgIGxvZygnVGVzdGluZyBpbnRlcnJ1cHRpbmc6ICcgKyAgc3luY09wZXJhdGlvblRlc3Rz
W3Rlc3ROdW1iZXJdKTsKKyAgICB3YWl0VW50aWxXb3JrZXJUaHJlYWRzRXhpdChzdGFydFdvcmtl
cnMpCit9CisKK2Z1bmN0aW9uIHN0YXJ0V29ya2VycygpCit7CisgICAgd29ya2Vyc1N0YXJ0ZWQg
PSAwOworICAgIHdvcmtlcnNDbG9zZWQgPSAwOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgd29y
a2Vycy5sZW5ndGg7ICsraSkgeworICAgICAgICB3b3JrZXJzW2ldID0gbmV3IFdvcmtlcigncmVz
b3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qcz9hcmc9JyArIGkpCisgICAgICAgIHdvcmtlcnNbaV0u
b25tZXNzYWdlID0gd2FpdEZvckFsbFdvcmtlcnNUb1N0YXJ0OworICAgIH0KK30KKworLy8gRG8g
b3VyIGJlc3QgdG8gdHJ5IHRvIGludGVycnVwdCB0aGUgZGF0YWJzZSBvcGVuCisvLyBjYWxsIGJ5
IHdhaXRpbmcgZm9yIHRoZSB3b3JrZXIgdG8gc3RhcnQgYW5kIHRoZW4KKy8vIHRlbGxpbmcgaXQg
dG8gZG8gdGhlIG9wZW4gZGF0YWJhc2UgY2FsbCAoYW5kCisvLyB0aGVuIHRlcm1pbmF0ZSB0aGUg
d29ya2VyKS4KK2Z1bmN0aW9uIHdhaXRGb3JBbGxXb3JrZXJzVG9TdGFydCgpCit7CisgICAgd29y
a2Vyc1N0YXJ0ZWQrKzsKKyAgICBpZiAod29ya2Vyc1N0YXJ0ZWQgPCB3b3JrZXJzLmxlbmd0aCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB3b3JrZXJzLmxlbmd0
aDsgKytpKQorICAgICAgICB3b3JrZXJzW2ldLnBvc3RNZXNzYWdlKHN5bmNPcGVyYXRpb25UZXN0
c1t0ZXN0TnVtYmVyXSk7CisKKyAgICBzZXRUaW1lb3V0KCdjbG9zZVdvcmtlcigpJywgMCk7Cit9
CisKK2Z1bmN0aW9uIGNsb3NlV29ya2VyKCkKK3sKKyAgICB3b3JrZXJzW3dvcmtlcnNDbG9zZWRd
LnRlcm1pbmF0ZSgpOworICAgIHdvcmtlcnNDbG9zZWQrKzsKKyAgICBpZiAod29ya2Vyc0Nsb3Nl
ZCA8IHdvcmtlcnMubGVuZ3RoKQorICAgICAgICBzZXRUaW1lb3V0KCdjbG9zZVdvcmtlcigpJywg
Myk7CisgICAgZWxzZQorICAgICAgICBzdGFydE5leHRUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHJ1
blRlc3QoKQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgfQorICAgIHN0YXJ0TmV4dFRlc3QoKTsK
K30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSdydW5UZXN0KCknPgorPGRpdiBp
ZD0ncmVzdWx0Jz4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121027</attachid>
            <date>2012-01-03 17:42:52 -0800</date>
            <delta_ts>2012-01-03 17:53:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74666-20120103174251.patch</filename>
            <type>text/plain</type>
            <size>49687</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzOTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDMyNzNkMGE1NWU3ZDY2ODA1ZjIxZjMyZDhhODgwMDdmZGMzYmIzYjkuLjVkMmRkNWZkNDgwOWQ4
NmZhOTA3YTM1YzgxOTIxNjA4YWFhNmQ4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDUgKzEsNjAgQEAKIDIwMTItMDEtMDMgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0u
b3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0gRmlsZVN5c3RlbSBicmlkZ2UgbmVlZHMgdGhyZWFk
c2FmZSBmaXhlcyBhbmQgb3RoZXIgY2xlYW4tdXAuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDY2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlk
Z2UuY3BwOgorICAgICAgICBBY3R1YWxseSByZWYgY291bnQgV29ya2VyRmlsZVN5c3RlbUNhbGxi
YWNrc0JyaWRnZS4KKyAgICAgICAgKFdlYktpdDo6TWFpblRocmVhZEZpbGVTeXN0ZW1DYWxsYmFj
a3M6OmNyZWF0ZUxlYWtlZFB0cik6IFJlZiBjb3VudGluZy4KKyAgICAgICAgKFdlYktpdDo6TWFp
blRocmVhZEZpbGVTeXN0ZW1DYWxsYmFja3M6Ok1haW5UaHJlYWRGaWxlU3lzdGVtQ2FsbGJhY2tz
KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1Db250ZXh0T2JzZXJ2
ZXI6OmNyZWF0ZSk6IE1vdmVkIHRoZSB3b3JrZXIgY29udGV4dAorICAgICAgICBvYnNlcnZlciBp
bnRvIGl0cyBvd24gY2xhc3MuCisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1Db250
ZXh0T2JzZXJ2ZXI6Om5vdGlmeVN0b3ApOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V29ya2Vy
RmlsZVN5c3RlbUNvbnRleHRPYnNlcnZlcjo6V29ya2VyRmlsZVN5c3RlbUNvbnRleHRPYnNlcnZl
cik6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJp
ZGdlOjpzdG9wKTogRGVsZXRlIHRoZSBvYnNlcnZlciBvbiB0aGUgd29ya2VyCisgICAgICAgIGNv
bnRleHQgdGhyZWFkIHdoZW4gdGhlIGJyaWRnZSBpcyBzdG9wcGVkLgorICAgICAgICAoV2ViS2l0
OjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0T3BlbkZpbGVTeXN0ZW1Ub01h
aW5UaHJlYWQpOiBSZWYgY291bnRpbmcuCisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVTeXN0
ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RNb3ZlVG9NYWluVGhyZWFkKTogRGl0dG8uCisgICAgICAg
IChXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RDb3B5VG9NYWlu
VGhyZWFkKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFj
a3NCcmlkZ2U6OnBvc3RSZW1vdmVUb01haW5UaHJlYWQpOiBEaXR0by4KKyAgICAgICAgKFdlYktp
dDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdFJlbW92ZVJlY3Vyc2l2ZWx5
VG9NYWluVGhyZWFkKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1D
YWxsYmFja3NCcmlkZ2U6OnBvc3RSZWFkTWV0YWRhdGFUb01haW5UaHJlYWQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdENyZWF0
ZUZpbGVUb01haW5UaHJlYWQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5
c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdENyZWF0ZURpcmVjdG9yeVRvTWFpblRocmVhZCk6IERp
dHRvLgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpw
b3N0RmlsZUV4aXN0c1RvTWFpblRocmVhZCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXb3Jr
ZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0RGlyZWN0b3J5RXhpc3RzVG9NYWluVGhy
ZWFkKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NC
cmlkZ2U6OnBvc3RSZWFkRGlyZWN0b3J5VG9NYWluVGhyZWFkKTogRGl0dG8uCisgICAgICAgIChX
ZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6Om9wZW5GaWxlU3lzdGVtT25N
YWluVGhyZWFkKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2U6Om1vdmVPbk1haW5UaHJlYWQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6
V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6Y29weU9uTWFpblRocmVhZCk6IERpdHRv
LgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpyZW1v
dmVPbk1haW5UaHJlYWQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3Rl
bUNhbGxiYWNrc0JyaWRnZTo6cmVtb3ZlUmVjdXJzaXZlbHlPbk1haW5UaHJlYWQpOiBEaXR0by4K
KyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cmVhZE1l
dGFkYXRhT25NYWluVGhyZWFkKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmNyZWF0ZUZpbGVPbk1haW5UaHJlYWQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6Y3JlYXRlRGly
ZWN0b3J5T25NYWluVGhyZWFkKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmZpbGVFeGlzdHNPbk1haW5UaHJlYWQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlyZWN0b3J5
RXhpc3RzT25NYWluVGhyZWFkKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnJlYWREaXJlY3RvcnlPbk1haW5UaHJlYWQpOiBEaXR0by4K
KyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlkRmFp
bE9uTWFpblRocmVhZCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVt
Q2FsbGJhY2tzQnJpZGdlOjpkaWRPcGVuRmlsZVN5c3RlbU9uTWFpblRocmVhZCk6IERpdHRvLgor
ICAgICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpkaWRTdWNj
ZWVkT25NYWluVGhyZWFkKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVTeXN0
ZW1DYWxsYmFja3NCcmlkZ2U6OmRpZFJlYWRNZXRhZGF0YU9uTWFpblRocmVhZCk6IERpdHRvLgor
ICAgICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpkaWRSZWFk
RGlyZWN0b3J5T25NYWluVGhyZWFkKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2Up
OiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRn
ZTo6fldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UpOiBEaXR0by4KKyAgICAgICAgKFdl
YktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlkRmFpbE9uV29ya2VyVGhy
ZWFkKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NC
cmlkZ2U6OmRpZE9wZW5GaWxlU3lzdGVtT25Xb3JrZXJUaHJlYWQpOiBEaXR0by4KKyAgICAgICAg
KFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlkU3VjY2VlZE9uV29y
a2VyVGhyZWFkKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2U6OmRpZFJlYWRNZXRhZGF0YU9uV29ya2VyVGhyZWFkKTogRGl0dG8uCisgICAg
ICAgIChXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpZFJlYWREaXJl
Y3RvcnlPbldvcmtlclRocmVhZCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJGaWxl
U3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpydW5UYXNrT25Xb3JrZXJUaHJlYWQpOiBEZWxldGUgdGhl
IG9ic2VydmVyIG9uIHRoZSB3b3JrZXIKKyAgICAgICAgY29udGV4dCB0aHJlYWQgYWZ0ZXIgdGhl
IHRhc2sgaGFzIHJ1bi4KKyAgICAgICAgKiBzcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0Jy
aWRnZS5oOgorCisyMDEyLTAxLTAzICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4K
KwogICAgICAgICBbY2hyb21pdW1dIExvY2FsRmlsZVN5c3RlbUNocm9taXVtIG5lZWRzIHNvbWUg
dGhyZWFkIHNhZmV0eSBmaXhlcy4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc1NDk0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5jcHAKaW5kZXggOGNl
NWU2OTc2YmIwOTE5M2QzYTc0MDlhNWExY2Y3OGZjNGMwNTU3MS4uN2Y5MzA1YjQ3YjZmOGYwNzU3
NjAwYzlmZjQ2ZjcyYTIzNTExOGU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
QEAgLTkwLDcgKzkwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBNYWluVGhyZWFkRmls
ZVN5c3RlbUNhbGxiYWNrcyA6IHB1YmxpYyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzIHsKIHB1Ymxp
YzoKICAgICAvLyBDYWxsYmFja3MgYXJlIHNlbGYtZGVzdHJ1Y3RlZCBhbmQgd2UgYWx3YXlzIHJl
dHVybiBsZWFrZWQgcG9pbnRlciBoZXJlLgotICAgIHN0YXRpYyBNYWluVGhyZWFkRmlsZVN5c3Rl
bUNhbGxiYWNrcyogY3JlYXRlTGVha2VkUHRyKFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlk
Z2UqIGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQorICAgIHN0YXRpYyBNYWluVGhyZWFkRmls
ZVN5c3RlbUNhbGxiYWNrcyogY3JlYXRlTGVha2VkUHRyKFBhc3NSZWZQdHI8V29ya2VyRmlsZVN5
c3RlbUNhbGxiYWNrc0JyaWRnZT4gYnJpZGdlLCBjb25zdCBTdHJpbmcmIG1vZGUpCiAgICAgewog
ICAgICAgICBPd25QdHI8TWFpblRocmVhZEZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcyA9
IGFkb3B0UHRyKG5ldyBNYWluVGhyZWFkRmlsZVN5c3RlbUNhbGxiYWNrcyhicmlkZ2UsIG1vZGUp
KTsKICAgICAgICAgcmV0dXJuIGNhbGxiYWNrcy5sZWFrUHRyKCk7CkBAIC0xMzEsNyArMTMxLDcg
QEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBNYWluVGhyZWFkRmlsZVN5c3RlbUNh
bGxiYWNrcyhXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiBicmlkZ2UsIGNvbnN0IFN0
cmluZyYgbW9kZSkKKyAgICBNYWluVGhyZWFkRmlsZVN5c3RlbUNhbGxiYWNrcyhQYXNzUmVmUHRy
PFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+IGJyaWRnZSwgY29uc3QgU3RyaW5nJiBt
b2RlKQogICAgICAgICA6IG1fYnJpZGdlKGJyaWRnZSkKICAgICAgICAgLCBtX21vZGUobW9kZSkK
ICAgICB7CkBAIC0xNDAsMTAgKzE0MCwzNyBAQCBwcml2YXRlOgogCiAgICAgZnJpZW5kIGNsYXNz
IFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U7CiAgICAgLy8gVGhlIGJyaWRnZSBwb2lu
dGVyIGlzIGtlcHQgYnkgdGhlIGJyaWRnZSBpdHNlbGYgb24gdGhlIFdvcmtlclRocmVhZC4KLSAg
ICBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiBtX2JyaWRnZTsKKyAgICBSZWZQdHI8
V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4gbV9icmlkZ2U7CiAgICAgY29uc3QgU3Ry
aW5nIG1fbW9kZTsKIH07CiAKKy8vIE9ic2VydmVzIHRoZSB3b3JrZXIgY29udGV4dC4gQnkga2Vl
cGluZyB0aGlzIHNlcGFyYXRlLCBpdCBpcyBlYXNpZXIgdG8gdmVyaWZ5CisvLyB0aGF0IGl0IG9u
bHkgZ2V0cyBkZWxldGVkIG9uIHRoZSB3b3JrZXIgY29udGV4dCB0aHJlYWQgd2hpY2ggaXMgdmVy
aWZpZWQgYnkgfk9ic2VydmVyLgorY2xhc3MgV29ya2VyRmlsZVN5c3RlbUNvbnRleHRPYnNlcnZl
ciA6IHB1YmxpYyBXZWJDb3JlOjpXb3JrZXJDb250ZXh0OjpPYnNlcnZlciB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NPd25QdHI8V29ya2VyRmlsZVN5c3RlbUNvbnRleHRPYnNlcnZlcj4gY3Jl
YXRlKFdvcmtlckNvbnRleHQqIGNvbnRleHQsIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlk
Z2UqIGJyaWRnZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgV29ya2VyRmls
ZVN5c3RlbUNvbnRleHRPYnNlcnZlcihjb250ZXh0LCBicmlkZ2UpKTsKKyAgICB9CisKKyAgICAv
LyBXb3JrZXJDb250ZXh0OjpPYnNlcnZlciBtZXRob2QuCisgICAgdmlydHVhbCB2b2lkIG5vdGlm
eVN0b3AoKQorICAgIHsKKyAgICAgICAgbV9icmlkZ2UtPnN0b3AoKTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgV29ya2VyRmlsZVN5c3RlbUNvbnRleHRPYnNlcnZlcihXb3JrZXJDb250ZXh0KiBj
b250ZXh0LCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiBicmlkZ2UpCisgICAgICAg
IDogV2ViQ29yZTo6V29ya2VyQ29udGV4dDo6T2JzZXJ2ZXIoY29udGV4dCkKKyAgICAgICAgLCBt
X2JyaWRnZShicmlkZ2UpCisgICAgeworICAgIH0KKworICAgIC8vIEFsdGhvdWdoIFdvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UgbWFuYWdlcyB0aGUgbGlmZXRpbWUgb2YgdGhpcyBjbGFz
cywKKyAgICAvLyBzbyBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlIHdpbGwgYmUgdmFs
aWQgd2hpbGUgdGhpcyBjbGFzcyBpcyBhcm91bmQuCisgICAgV29ya2VyRmlsZVN5c3RlbUNhbGxi
YWNrc0JyaWRnZSogbV9icmlkZ2U7Cit9OworCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFj
a3NCcmlkZ2U6OnN0b3AoKQogewogICAgIEFTU0VSVChtX3dvcmtlckNvbnRleHQtPmlzQ29udGV4
dFRocmVhZCgpKTsKQEAgLTE1NCw2ICsxODEsMTAgQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlOjpzdG9wKCkKICAgICAgICAgbV9jYWxsYmFja3NPbldvcmtlclRocmVhZC0+
ZGlkRmFpbChXZWJGaWxlRXJyb3JBYm9ydCk7CiAgICAgICAgIG1fY2FsbGJhY2tzT25Xb3JrZXJU
aHJlYWQgPSAwOwogICAgIH0KKyAgICBpZiAobV93b3JrZXJDb250ZXh0T2JzZXJ2ZXIpIHsKKyAg
ICAgICAgZGVsZXRlIG1fd29ya2VyQ29udGV4dE9ic2VydmVyOworICAgICAgICBtX3dvcmtlckNv
bnRleHRPYnNlcnZlciA9IDA7CisgICAgfQogfQogCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2U6OnBvc3RPcGVuRmlsZVN5c3RlbVRvTWFpblRocmVhZChXZWJDb21tb25Xb3Jr
ZXJDbGllbnQqIGNvbW1vbkNsaWVudCwgV2ViRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBsb25nIGxv
bmcgc2l6ZSwgYm9vbCBjcmVhdGUsIGNvbnN0IFN0cmluZyYgbW9kZSkKQEAgLTE2MSw3ICsxOTIs
NyBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RPcGVuRmlsZVN5
c3RlbVRvTWFpblRocmVhZChXZWJDb21tb25XbwogICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVh
ZCgKICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZvcGVuRmlsZVN5c3RlbU9uTWFpblRocmVh
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoY29t
bW9uQ2xpZW50KSwgdHlwZSwgc2l6ZSwgY3JlYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgbW9kZSkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcywgbW9kZSkpOwogfQogCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2U6OnBvc3RNb3ZlVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0
ZW0sIGNvbnN0IEtVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwg
Y29uc3QgU3RyaW5nJiBtb2RlKQpAQCAtMTY5LDcgKzIwMCw3IEBAIHZvaWQgV29ya2VyRmlsZVN5
c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdE1vdmVUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSog
ZmlsZVN5CiAgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKAogICAgICAgICBjcmVhdGVDYWxs
YmFja1Rhc2soJm1vdmVPbk1haW5UaHJlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
bGxvd0Nyb3NzVGhyZWFkQWNjZXNzKGZpbGVTeXN0ZW0pLCBzb3VyY2VQYXRoLCBkZXN0aW5hdGlv
blBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNz
KHRoaXMpLCBtb2RlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLCBtb2RlKSk7
CiB9CiAKIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdENvcHlUb01h
aW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgc291cmNlUGF0
aCwgY29uc3QgS1VSTCYgZGVzdGluYXRpb25QYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpCkBAIC0x
NzcsNyArMjA4LDcgQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0
Q29weVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiBmaWxlU3kKICAgICBkaXNwYXRjaFRhc2tU
b01haW5UaHJlYWQoCiAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmY29weU9uTWFpblRocmVh
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoZmls
ZVN5c3RlbSksIHNvdXJjZVBhdGgsIGRlc3RpbmF0aW9uUGF0aCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMsIG1vZGUpKTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlU3lz
dGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0UmVtb3ZlVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0q
IGZpbGVTeXN0ZW0sIGNvbnN0IEtVUkwmIHBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSkKQEAgLTE4
Niw3ICsyMTcsNyBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RS
ZW1vdmVUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZQogICAgIGRpc3BhdGNoVGFza1Rv
TWFpblRocmVhZCgKICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZyZW1vdmVPbk1haW5UaHJl
YWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKGZp
bGVTeXN0ZW0pLCBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1Ro
cmVhZEFjY2Vzcyh0aGlzKSwgbW9kZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cywgbW9kZSkpOwogfQogCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBv
c3RSZW1vdmVSZWN1cnNpdmVseVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVt
LCBjb25zdCBLVVJMJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpCkBAIC0xOTUsNyArMjI2LDcg
QEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0UmVtb3ZlUmVjdXJz
aXZlbHlUb01haW5UaHJlYWQoV2ViRmlsZVMKICAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQo
CiAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmcmVtb3ZlUmVjdXJzaXZlbHlPbk1haW5UaHJl
YWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKGZp
bGVTeXN0ZW0pLCBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1Ro
cmVhZEFjY2Vzcyh0aGlzKSwgbW9kZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cywgbW9kZSkpOwogfQogCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBv
c3RSZWFkTWV0YWRhdGFUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29u
c3QgS1VSTCYgcGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKQpAQCAtMjA0LDcgKzIzNSw3IEBAIHZv
aWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdFJlYWRNZXRhZGF0YVRvTWFp
blRocmVhZChXZWJGaWxlU3lzdGVtCiAgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKAogICAg
ICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJnJlYWRNZXRhZGF0YU9uTWFpblRocmVhZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoZmlsZVN5c3RlbSks
IHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNz
KHRoaXMpLCBtb2RlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLCBtb2RlKSk7
CiB9CiAKIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdENyZWF0ZUZp
bGVUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0
aCwgYm9vbCBleGNsdXNpdmUsIGNvbnN0IFN0cmluZyYgbW9kZSkKQEAgLTIxMiw3ICsyNDMsNyBA
QCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RDcmVhdGVGaWxlVG9N
YWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qCiAgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKAog
ICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmNyZWF0ZUZpbGVPbk1haW5UaHJlYWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKGZpbGVTeXN0ZW0p
LCBwYXRoLCBleGNsdXNpdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3Nz
VGhyZWFkQWNjZXNzKHRoaXMpLCBtb2RlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICB0
aGlzLCBtb2RlKSk7CiB9CiAKIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6
cG9zdENyZWF0ZURpcmVjdG9yeVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVt
LCBjb25zdCBLVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgY29uc3QgU3RyaW5nJiBtb2RlKQpA
QCAtMjIxLDcgKzI1Miw3IEBAIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6
cG9zdENyZWF0ZURpcmVjdG9yeVRvTWFpblRocmVhZChXZWJGaWxlU3lzCiAgICAgZGlzcGF0Y2hU
YXNrVG9NYWluVGhyZWFkKAogICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmNyZWF0ZURpcmVj
dG9yeU9uTWFpblRocmVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NU
aHJlYWRBY2Nlc3MoZmlsZVN5c3RlbSksIHBhdGgsIGV4Y2x1c2l2ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMsIG1vZGUpKTsKIH0KIAogdm9pZCBXb3JrZXJGaWxl
U3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0RmlsZUV4aXN0c1RvTWFpblRocmVhZChXZWJGaWxl
U3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBLVVJMJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUp
CkBAIC0yMzAsNyArMjYxLDcgQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdl
Ojpwb3N0RmlsZUV4aXN0c1RvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKgogICAgIGRpc3BhdGNo
VGFza1RvTWFpblRocmVhZCgKICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZmaWxlRXhpc3Rz
T25NYWluVGhyZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVh
ZEFjY2VzcyhmaWxlU3lzdGVtKSwgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEFs
bG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMsIG1vZGUpKTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tz
QnJpZGdlOjpwb3N0RGlyZWN0b3J5RXhpc3RzVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZp
bGVTeXN0ZW0sIGNvbnN0IEtVUkwmIHBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSkKQEAgLTIzOSw3
ICsyNzAsNyBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3REaXJl
Y3RvcnlFeGlzdHNUb01haW5UaHJlYWQoV2ViRmlsZVN5cwogICAgIGRpc3BhdGNoVGFza1RvTWFp
blRocmVhZCgKICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaXJlY3RvcnlFeGlzdHNPbk1h
aW5UaHJlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNj
ZXNzKGZpbGVTeXN0ZW0pLCBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dD
cm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgbW9kZSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGhpcywgbW9kZSkpOwogfQogCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlk
Z2U6OnBvc3RSZWFkRGlyZWN0b3J5VG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0
ZW0sIGNvbnN0IEtVUkwmIHBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSkKQEAgLTI0OCwxMCArMjc5
LDEwIEBAIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdFJlYWREaXJl
Y3RvcnlUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlCiAgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhy
ZWFkKAogICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJnJlYWREaXJlY3RvcnlPbk1haW5UaHJl
YWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKGZp
bGVTeXN0ZW0pLCBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1Ro
cmVhZEFjY2Vzcyh0aGlzKSwgbW9kZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cywgbW9kZSkpOwogfQogCi12b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6Om9w
ZW5GaWxlU3lzdGVtT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJDb21t
b25Xb3JrZXJDbGllbnQqIGNvbW1vbkNsaWVudCwgV2ViRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBs
b25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlk
Z2UqIGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQordm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlOjpvcGVuRmlsZVN5c3RlbU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgV2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21tb25DbGllbnQsIFdlYkZpbGVTeXN0
ZW06OlR5cGUgdHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBQYXNzUmVmUHRyPFdv
cmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+IGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2Rl
KQogewogICAgIGlmICghY29tbW9uQ2xpZW50KQogICAgICAgICBicmlkZ2UtPmRpZEZhaWxPbk1h
aW5UaHJlYWQoV2ViRmlsZUVycm9yQWJvcnQsIG1vZGUpOwpAQCAtMjYwLDg4ICsyOTEsODggQEAg
dm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpvcGVuRmlsZVN5c3RlbU9uTWFp
blRocmVhZChTY3JpcHRFeGVjdXRpb24KICAgICB9CiB9CiAKLXZvaWQgV29ya2VyRmlsZVN5c3Rl
bUNhbGxiYWNrc0JyaWRnZTo6bW92ZU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgc291cmNl
UGF0aCwgY29uc3QgS1VSTCYgZGVzdGluYXRpb25QYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJh
Y2tzQnJpZGdlKiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9kZSkKK3ZvaWQgV29ya2VyRmlsZVN5
c3RlbUNhbGxiYWNrc0JyaWRnZTo6bW92ZU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgc291
cmNlUGF0aCwgY29uc3QgS1VSTCYgZGVzdGluYXRpb25QYXRoLCBQYXNzUmVmUHRyPFdvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+IGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQogewog
ICAgIGZpbGVTeXN0ZW0tPm1vdmUoc291cmNlUGF0aCwgZGVzdGluYXRpb25QYXRoLCBNYWluVGhy
ZWFkRmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlTGVha2VkUHRyKGJyaWRnZSwgbW9kZSkpOwog
fQogCi12b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmNvcHlPbk1haW5UaHJl
YWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIGZpbGVT
eXN0ZW0sIGNvbnN0IEtVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uUGF0
aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSogYnJpZGdlLCBjb25zdCBTdHJpbmcm
IG1vZGUpCit2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmNvcHlPbk1haW5U
aHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIGZp
bGVTeXN0ZW0sIGNvbnN0IEtVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9u
UGF0aCwgUGFzc1JlZlB0cjxXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiBicmlkZ2Us
IGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBmaWxlU3lzdGVtLT5jb3B5KHNvdXJjZVBhdGgs
IGRlc3RpbmF0aW9uUGF0aCwgTWFpblRocmVhZEZpbGVTeXN0ZW1DYWxsYmFja3M6OmNyZWF0ZUxl
YWtlZFB0cihicmlkZ2UsIG1vZGUpKTsKIH0KIAotdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJh
Y2tzQnJpZGdlOjpyZW1vdmVPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtl
ckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqIGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQor
dm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpyZW1vdmVPbk1haW5UaHJlYWQo
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0
ZW0sIGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NSZWZQdHI8V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNr
c0JyaWRnZT4gYnJpZGdlLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgZmlsZVN5c3RlbS0+
cmVtb3ZlKHBhdGgsIE1haW5UaHJlYWRGaWxlU3lzdGVtQ2FsbGJhY2tzOjpjcmVhdGVMZWFrZWRQ
dHIoYnJpZGdlLCBtb2RlKSk7CiB9CiAKLXZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0Jy
aWRnZTo6cmVtb3ZlUmVjdXJzaXZlbHlPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IEtVUkwmIHBhdGgs
IFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqIGJyaWRnZSwgY29uc3QgU3RyaW5nJiBt
b2RlKQordm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpyZW1vdmVSZWN1cnNp
dmVseU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmls
ZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgUGFzc1JlZlB0cjxXb3JrZXJG
aWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsK
ICAgICBmaWxlU3lzdGVtLT5yZW1vdmVSZWN1cnNpdmVseShwYXRoLCBNYWluVGhyZWFkRmlsZVN5
c3RlbUNhbGxiYWNrczo6Y3JlYXRlTGVha2VkUHRyKGJyaWRnZSwgbW9kZSkpOwogfQogCi12b2lk
IFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnJlYWRNZXRhZGF0YU9uTWFpblRocmVh
ZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogZmlsZVN5
c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSog
YnJpZGdlLCBjb25zdCBTdHJpbmcmIG1vZGUpCit2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFj
a3NCcmlkZ2U6OnJlYWRNZXRhZGF0YU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwg
UGFzc1JlZlB0cjxXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiBicmlkZ2UsIGNvbnN0
IFN0cmluZyYgbW9kZSkKIHsKICAgICBmaWxlU3lzdGVtLT5yZWFkTWV0YWRhdGEocGF0aCwgTWFp
blRocmVhZEZpbGVTeXN0ZW1DYWxsYmFja3M6OmNyZWF0ZUxlYWtlZFB0cihicmlkZ2UsIG1vZGUp
KTsKIH0KIAotdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpjcmVhdGVGaWxl
T25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lz
dGVtKiBmaWxlU3lzdGVtLCBjb25zdCBLVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgV29ya2Vy
RmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSogYnJpZGdlLCBjb25zdCBTdHJpbmcmIG1vZGUpCit2
b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmNyZWF0ZUZpbGVPbk1haW5UaHJl
YWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIGZpbGVT
eXN0ZW0sIGNvbnN0IEtVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzUmVmUHRyPFdvcmtl
ckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+IGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQog
ewogICAgIGZpbGVTeXN0ZW0tPmNyZWF0ZUZpbGUocGF0aCwgZXhjbHVzaXZlLCBNYWluVGhyZWFk
RmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlTGVha2VkUHRyKGJyaWRnZSwgbW9kZSkpOwogfQog
Ci12b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmNyZWF0ZURpcmVjdG9yeU9u
TWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3Rl
bSogZmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFdvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqIGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQordm9p
ZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpjcmVhdGVEaXJlY3RvcnlPbk1haW5U
aHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIGZp
bGVTeXN0ZW0sIGNvbnN0IEtVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzUmVmUHRyPFdv
cmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+IGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2Rl
KQogewogICAgIGZpbGVTeXN0ZW0tPmNyZWF0ZURpcmVjdG9yeShwYXRoLCBleGNsdXNpdmUsIE1h
aW5UaHJlYWRGaWxlU3lzdGVtQ2FsbGJhY2tzOjpjcmVhdGVMZWFrZWRQdHIoYnJpZGdlLCBtb2Rl
KSk7CiB9CiAKLXZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZmlsZUV4aXN0
c09uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5
c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxi
YWNrc0JyaWRnZSogYnJpZGdlLCBjb25zdCBTdHJpbmcmIG1vZGUpCit2b2lkIFdvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmZpbGVFeGlzdHNPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IEtV
UkwmIHBhdGgsIFBhc3NSZWZQdHI8V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4gYnJp
ZGdlLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgZmlsZVN5c3RlbS0+ZmlsZUV4aXN0cyhw
YXRoLCBNYWluVGhyZWFkRmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlTGVha2VkUHRyKGJyaWRn
ZSwgbW9kZSkpOwogfQogCi12b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRp
cmVjdG9yeUV4aXN0c09uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgV29ya2VyRmls
ZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSogYnJpZGdlLCBjb25zdCBTdHJpbmcmIG1vZGUpCit2b2lk
IFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpcmVjdG9yeUV4aXN0c09uTWFpblRo
cmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogZmls
ZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgUGFzc1JlZlB0cjxXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlPiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBmaWxlU3lz
dGVtLT5kaXJlY3RvcnlFeGlzdHMocGF0aCwgTWFpblRocmVhZEZpbGVTeXN0ZW1DYWxsYmFja3M6
OmNyZWF0ZUxlYWtlZFB0cihicmlkZ2UsIG1vZGUpKTsKIH0KIAotdm9pZCBXb3JrZXJGaWxlU3lz
dGVtQ2FsbGJhY2tzQnJpZGdlOjpyZWFkRGlyZWN0b3J5T25NYWluVGhyZWFkKFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBL
VVJMJiBwYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiBicmlkZ2UsIGNvbnN0
IFN0cmluZyYgbW9kZSkKK3ZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cmVh
ZERpcmVjdG9yeU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
V2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgUGFzc1JlZlB0cjxX
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9k
ZSkKIHsKICAgICBmaWxlU3lzdGVtLT5yZWFkRGlyZWN0b3J5KHBhdGgsIE1haW5UaHJlYWRGaWxl
U3lzdGVtQ2FsbGJhY2tzOjpjcmVhdGVMZWFrZWRQdHIoYnJpZGdlLCBtb2RlKSk7CiB9CiAKIHZv
aWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlkRmFpbE9uTWFpblRocmVhZChX
ZWJGaWxlRXJyb3IgZXJyb3IsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKLSAgICBtYXlQb3N0VGFz
a1RvV29ya2VyKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkRmFpbE9uV29ya2VyVGhyZWFkLCBBbGxv
d0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBlcnJvciksIG1vZGUpOworICAgIG1heVBvc3RUYXNr
VG9Xb3JrZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRGYWlsT25Xb3JrZXJUaHJlYWQsIHRoaXMs
IGVycm9yKSwgbW9kZSk7CiB9CiAKIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRn
ZTo6ZGlkT3BlbkZpbGVTeXN0ZW1Pbk1haW5UaHJlYWQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBLVVJMJiByb290VVJMLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgbWF5UG9zdFRhc2tU
b1dvcmtlcihjcmVhdGVDYWxsYmFja1Rhc2soJmRpZE9wZW5GaWxlU3lzdGVtT25Xb3JrZXJUaHJl
YWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9z
c1RocmVhZEFjY2Vzcyh0aGlzKSwgbmFtZSwgcm9vdFVSTCksIG1vZGUpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsIG5hbWUsIHJvb3RVUkwpLCBtb2Rl
KTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpkaWRTdWNjZWVk
T25NYWluVGhyZWFkKGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKLSAgICBtYXlQb3N0VGFza1RvV29y
a2VyKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkU3VjY2VlZE9uV29ya2VyVGhyZWFkLCBBbGxvd0Ny
b3NzVGhyZWFkQWNjZXNzKHRoaXMpKSwgbW9kZSk7CisgICAgbWF5UG9zdFRhc2tUb1dvcmtlcihj
cmVhdGVDYWxsYmFja1Rhc2soJmRpZFN1Y2NlZWRPbldvcmtlclRocmVhZCwgdGhpcyksIG1vZGUp
OwogfQogCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpZFJlYWRNZXRh
ZGF0YU9uTWFpblRocmVhZChjb25zdCBXZWJGaWxlSW5mbyYgaW5mbywgY29uc3QgU3RyaW5nJiBt
b2RlKQogewotICAgIG1heVBvc3RUYXNrVG9Xb3JrZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRS
ZWFkTWV0YWRhdGFPbldvcmtlclRocmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwg
aW5mbyksIG1vZGUpOworICAgIG1heVBvc3RUYXNrVG9Xb3JrZXIoY3JlYXRlQ2FsbGJhY2tUYXNr
KCZkaWRSZWFkTWV0YWRhdGFPbldvcmtlclRocmVhZCwgdGhpcywgaW5mbyksIG1vZGUpOwogfQog
CiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpZFJlYWREaXJlY3RvcnlP
bk1haW5UaHJlYWQoY29uc3QgV2ViVmVjdG9yPFdlYkZpbGVTeXN0ZW1FbnRyeT4mIGVudHJpZXMs
IGJvb2wgaGFzTW9yZSwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIG1heVBvc3RUYXNrVG9X
b3JrZXIoCiAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkUmVhZERpcmVjdG9yeU9uV29y
a2VyVGhyZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFj
Y2Vzcyh0aGlzKSwgZW50cmllcywgaGFzTW9yZSksIG1vZGUpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcywgZW50cmllcywgaGFzTW9yZSksIG1vZGUpOwogfQogCiBXb3JrZXJGaWxl
U3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKFdl
YkNvcmU6OldvcmtlckxvYWRlclByb3h5KiB3b3JrZXJMb2FkZXJQcm94eSwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgV2ViRmlsZVN5c3RlbUNhbGxiYWNr
cyogY2FsbGJhY2tzKQotICAgIDogV29ya2VyQ29udGV4dDo6T2JzZXJ2ZXIoc3RhdGljX2Nhc3Q8
V29ya2VyQ29udGV4dCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKQotICAgICwgbV93b3JrZXJM
b2FkZXJQcm94eSh3b3JrZXJMb2FkZXJQcm94eSkKKyAgICA6IG1fd29ya2VyTG9hZGVyUHJveHko
d29ya2VyTG9hZGVyUHJveHkpCiAgICAgLCBtX3dvcmtlckNvbnRleHQoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkKKyAgICAsIG1fd29ya2VyQ29udGV4dE9ic2VydmVyKFdvcmtlckZpbGVTeXN0ZW1D
b250ZXh0T2JzZXJ2ZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxXb3JrZXJDb250ZXh0Kj4obV93b3Jr
ZXJDb250ZXh0KSwgdGhpcykubGVha1B0cigpKQogICAgICwgbV9jYWxsYmFja3NPbldvcmtlclRo
cmVhZChjYWxsYmFja3MpCiB7CiAgICAgQVNTRVJUKG1fd29ya2VyQ29udGV4dC0+aXNDb250ZXh0
VGhyZWFkKCkpOwpAQCAtMzUwLDI5ICszODEsMzAgQEAgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNr
c0JyaWRnZTo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShXZWJDb3JlOjpXb3JrZXIK
IFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6On5Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJh
Y2tzQnJpZGdlKCkKIHsKICAgICBBU1NFUlQoIW1fY2FsbGJhY2tzT25Xb3JrZXJUaHJlYWQpOwor
ICAgIEFTU0VSVCghbV93b3JrZXJDb250ZXh0T2JzZXJ2ZXIpOwogfQogCi12b2lkIFdvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpZEZhaWxPbldvcmtlclRocmVhZChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSogYnJpZGdlLCBX
ZWJGaWxlRXJyb3IgZXJyb3IpCit2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6
OmRpZEZhaWxPbldvcmtlclRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0
cjxXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiBicmlkZ2UsIFdlYkZpbGVFcnJvciBl
cnJvcikKIHsKICAgICBicmlkZ2UtPm1fY2FsbGJhY2tzT25Xb3JrZXJUaHJlYWQtPmRpZEZhaWwo
ZXJyb3IpOwogfQogCi12b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpZE9w
ZW5GaWxlU3lzdGVtT25Xb3JrZXJUaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtl
ckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqIGJyaWRnZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBLVVJMJiByb290VVJMKQordm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdl
OjpkaWRPcGVuRmlsZVN5c3RlbU9uV29ya2VyVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+IGJyaWRnZSwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBLVVJMJiByb290VVJMKQogewogICAgIGJyaWRnZS0+bV9j
YWxsYmFja3NPbldvcmtlclRocmVhZC0+ZGlkT3BlbkZpbGVTeXN0ZW0obmFtZSwgcm9vdFVSTCk7
CiB9CiAKLXZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlkU3VjY2VlZE9u
V29ya2VyVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlKiBicmlkZ2UpCit2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlk
Z2U6OmRpZFN1Y2NlZWRPbldvcmtlclRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFz
c1JlZlB0cjxXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiBicmlkZ2UpCiB7CiAgICAg
YnJpZGdlLT5tX2NhbGxiYWNrc09uV29ya2VyVGhyZWFkLT5kaWRTdWNjZWVkKCk7CiB9CiAKLXZv
aWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlkUmVhZE1ldGFkYXRhT25Xb3Jr
ZXJUaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFj
a3NCcmlkZ2UqIGJyaWRnZSwgY29uc3QgV2ViRmlsZUluZm8mIGluZm8pCit2b2lkIFdvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpZFJlYWRNZXRhZGF0YU9uV29ya2VyVGhyZWFkKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFj
a3NCcmlkZ2U+IGJyaWRnZSwgY29uc3QgV2ViRmlsZUluZm8mIGluZm8pCiB7CiAgICAgYnJpZGdl
LT5tX2NhbGxiYWNrc09uV29ya2VyVGhyZWFkLT5kaWRSZWFkTWV0YWRhdGEoaW5mbyk7CiB9CiAK
LXZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlkUmVhZERpcmVjdG9yeU9u
V29ya2VyVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlKiBicmlkZ2UsIGNvbnN0IFdlYlZlY3RvcjxXZWJGaWxlU3lzdGVtRW50cnk+
JiBlbnRyaWVzLCBib29sIGhhc01vcmUpCit2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NC
cmlkZ2U6OmRpZFJlYWREaXJlY3RvcnlPbldvcmtlclRocmVhZChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzc1JlZlB0cjxXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiBicmlkZ2Us
IGNvbnN0IFdlYlZlY3RvcjxXZWJGaWxlU3lzdGVtRW50cnk+JiBlbnRyaWVzLCBib29sIGhhc01v
cmUpCiB7CiAgICAgYnJpZGdlLT5tX2NhbGxiYWNrc09uV29ya2VyVGhyZWFkLT5kaWRSZWFkRGly
ZWN0b3J5KGVudHJpZXMsIGhhc01vcmUpOwogfQpAQCAtMzkzLDkgKzQyNSwxNCBAQCB2b2lkIFdv
cmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnJ1blRhc2tPbldvcmtlclRocmVhZChXZWJD
b3JlOjpTY3JpcHRFeGVjdQogICAgIGlmICghYnJpZGdlLT5tX2NhbGxiYWNrc09uV29ya2VyVGhy
ZWFkKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKGJyaWRnZS0+bV93b3JrZXJDb250ZXh0
LT5pc0NvbnRleHRUaHJlYWQoKSk7CisKICAgICB0YXNrVG9SdW4tPnBlcmZvcm1UYXNrKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQpOwogICAgIGJyaWRnZS0+bV9jYWxsYmFja3NPbldvcmtlclRocmVh
ZCA9IDA7Ci0gICAgYnJpZGdlLT5zdG9wT2JzZXJ2aW5nKCk7CisgICAgaWYgKGJyaWRnZS0+bV93
b3JrZXJDb250ZXh0T2JzZXJ2ZXIpIHsKKyAgICAgICAgZGVsZXRlIGJyaWRnZS0+bV93b3JrZXJD
b250ZXh0T2JzZXJ2ZXI7CisgICAgICAgIGJyaWRnZS0+bV93b3JrZXJDb250ZXh0T2JzZXJ2ZXIg
PSAwOworICAgIH0KKyAgICAvLyBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlIG1heSBi
ZSBkZWxldGUgaGVyZSBhcyBicmlkZ2UgZ29lcyBvdXQgb2Ygc2NvcGUuCiB9CiAKIHZvaWQgV29y
a2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKFBh
c3NPd25QdHI8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2UuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVTeXN0
ZW1DYWxsYmFja3NCcmlkZ2UuaAppbmRleCA5YzQ0Y2IxYTk3NmU4ZDY1MmUwNjA0ZmM2MWU3MGE5
MmUzYTJlZGU5Li5lYzAyZmNkZDAyMjBkYzJkYjI2NDI0NzU5N2FhNmUyNTA3OTVjYzI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJh
Y2tzQnJpZGdlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVN5
c3RlbUNhbGxiYWNrc0JyaWRnZS5oCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiV2ViRmls
ZUVycm9yLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUg
InBsYXRmb3JtL1dlYlZlY3Rvci5oIgotI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKICNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1RocmVhZGluZy5oPgpAQCAtNTQsMTAgKzUzLDExIEBAIGNsYXNzIE1haW5UaHJl
YWRGaWxlU3lzdGVtQ2FsbGJhY2tzOwogY2xhc3MgV2ViQ29tbW9uV29ya2VyQ2xpZW50OwogY2xh
c3MgVGhyZWFkYWJsZUNhbGxiYWNrc0JyaWRnZVdyYXBwZXI7CiBjbGFzcyBXZWJGaWxlU3lzdGVt
Q2FsbGJhY2tzOworY2xhc3MgV29ya2VyRmlsZVN5c3RlbUNvbnRleHRPYnNlcnZlcjsKIHN0cnVj
dCBXZWJGaWxlSW5mbzsKIHN0cnVjdCBXZWJGaWxlU3lzdGVtRW50cnk7CiAKLS8vIFRoaXMgY2xh
c3MgaXMgdXNlZCB0byBwb3N0IGEgb3BlbkZpbGVTeXN0ZW0gcmVxdWVzdCB0byB0aGUgbWFpbiB0
aHJlYWQgYW5kIGdldCBjYWxsZWQgYmFjayBmb3IgdGhlIHJlcXVlc3QuIFRoaXMgbXVzdCBiZSBk
ZXN0cnVjdGVkIG9uIHRoZSB3b3JrZXIgdGhyZWFkLgorLy8gVXNlZCB0byBwb3N0IGEgb3BlbkZp
bGVTeXN0ZW0gcmVxdWVzdCB0byB0aGUgbWFpbiB0aHJlYWQgYW5kIGdldCBjYWxsZWQgYmFjayBm
b3IgdGhlIHJlcXVlc3QuCiAvLwogLy8gQSB0eXBpY2FsIGZsb3cgZm9yIG9wZW5GaWxlU3lzdGVt
IHdvdWxkIGxvb2sgbGlrZSB0aGlzOgogLy8gQnJpZGdlOjpwb3N0T3BlbkZpbGVTeXN0ZW1Ub01h
aW5UaHJlYWQoKSBvbiBXb3JrZXJUaHJlYWQKQEAgLTY5LDE2ICs2OSwxMSBAQCBzdHJ1Y3QgV2Vi
RmlsZVN5c3RlbUVudHJ5OwogLy8gIC0tPiBCcmlkZ2U6OmRpZFh4eE9uV29ya2VyVGhyZWFkIGlz
IGNhbGxlZCBvbiBXb3JrZXJUaHJlYWQKIC8vICAgICAgVGhpcyBjYWxscyB0aGUgb3JpZ2luYWwg
Y2FsbGJhY2tzIChtX2NhbGxiYWNrc09uV29ya2VyVGhyZWFkKSBhbmQKIC8vICAgICAgcmVsZWFz
ZXMgYSBzZWxmLXJlZmVyZW5jZSB0byB0aGUgYnJpZGdlLgotY2xhc3MgV29ya2VyRmlsZVN5c3Rl
bUNhbGxiYWNrc0JyaWRnZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXb3JrZXJGaWxl
U3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiwgcHVibGljIFdlYkNvcmU6OldvcmtlckNvbnRleHQ6Ok9i
c2VydmVyIHsKKy8vCisvLyBFaXRoZXIgbWF5UG9zdFRhc2tUb1dvcmtlciBvciBkaWRYeHhPbldv
cmtlclRocmVhZCBtYXkgZG8gdGhlIGZpbmFsIHJlbGVhc3Qgb24gV29ya2VyRmlsZVN5c3RlbUNh
bGxiYWNrc0JyaWRnZQorLy8gZGVwZW5kaW5nIG9uIHRpbWluZy4KK2NsYXNzIFdvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V29ya2Vy
RmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4gewogcHVibGljOgotICAgIH5Xb3JrZXJGaWxlU3lz
dGVtQ2FsbGJhY2tzQnJpZGdlKCk7Ci0KLSAgICAvLyBXb3JrZXJDb250ZXh0OjpPYnNlcnZlciBt
ZXRob2QuCi0gICAgdmlydHVhbCB2b2lkIG5vdGlmeVN0b3AoKQotICAgIHsKLSAgICAgICAgc3Rv
cCgpOwotICAgIH0KLQogICAgIHZvaWQgc3RvcCgpOwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4gY3JlYXRlKFdlYkNvcmU6Oldvcmtlckxv
YWRlclByb3h5KiB3b3JrZXJMb2FkZXJQcm94eSwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogd29ya2VyQ29udGV4dCwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQpA
QCAtMTA3LDI5ICsxMDIsMzIgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVhZERpcmVjdG9yeU9u
TWFpblRocmVhZChjb25zdCBXZWJWZWN0b3I8V2ViRmlsZVN5c3RlbUVudHJ5PiYsIGJvb2wgaGFz
TW9yZSwgY29uc3QgU3RyaW5nJiBtb2RlKTsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3Mg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT47CisK
ICAgICBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKFdlYkNvcmU6OldvcmtlckxvYWRl
clByb3h5KiwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW1D
YWxsYmFja3MqKTsKKyAgICB+V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSgpOwogCiAg
ICAgLy8gTWV0aG9kcyB0aGF0IGFyZSB0byBiZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgot
ICAgIHN0YXRpYyB2b2lkIG9wZW5GaWxlU3lzdGVtT25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJDb21tb25Xb3JrZXJDbGllbnQqLCBXZWJGaWxlU3lzdGVt
OjpUeXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIFdvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2UqLCBjb25zdCBTdHJpbmcmIG1vZGUpOwotICAgIHN0YXRpYyB2b2lkIG1vdmVP
bk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0
ZW0qLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBzcmNQYXRoLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBk
ZXN0UGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSosIGNvbnN0IFN0cmluZyYg
bW9kZSk7Ci0gICAgc3RhdGljIHZvaWQgY29weU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSosIGNvbnN0IFdlYkNvcmU6OktVUkwmIHNy
Y1BhdGgsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGRlc3RQYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlKiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKLSAgICBzdGF0aWMgdm9pZCByZW1v
dmVPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVT
eXN0ZW0qLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBwYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJh
Y2tzQnJpZGdlKiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKLSAgICBzdGF0aWMgdm9pZCByZW1vdmVS
ZWN1cnNpdmVseU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
V2ViRmlsZVN5c3RlbSosIGNvbnN0IFdlYkNvcmU6OktVUkwmIHBhdGgsIFdvcmtlckZpbGVTeXN0
ZW1DYWxsYmFja3NCcmlkZ2UqLCBjb25zdCBTdHJpbmcmIG1vZGUpOwotICAgIHN0YXRpYyB2b2lk
IHJlYWRNZXRhZGF0YU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgV2ViRmlsZVN5c3RlbSosIGNvbnN0IFdlYkNvcmU6OktVUkwmIHBhdGgsIFdvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2UqLCBjb25zdCBTdHJpbmcmIG1vZGUpOwotICAgIHN0YXRpYyB2
b2lkIGNyZWF0ZUZpbGVPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBwYXRoLCBib29sIGV4Y2x1
c2l2ZSwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSosIGNvbnN0IFN0cmluZyYgbW9k
ZSk7Ci0gICAgc3RhdGljIHZvaWQgY3JlYXRlRGlyZWN0b3J5T25NYWluVGhyZWFkKFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiwgY29uc3QgV2ViQ29yZTo6
S1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlk
Z2UqLCBjb25zdCBTdHJpbmcmIG1vZGUpOwotICAgIHN0YXRpYyB2b2lkIGZpbGVFeGlzdHNPbk1h
aW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0q
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBwYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJp
ZGdlKiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKLSAgICBzdGF0aWMgdm9pZCBkaXJlY3RvcnlFeGlz
dHNPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVT
eXN0ZW0qLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBwYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJh
Y2tzQnJpZGdlKiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKLSAgICBzdGF0aWMgdm9pZCByZWFkRGly
ZWN0b3J5T25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJG
aWxlU3lzdGVtKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgcGF0aCwgV29ya2VyRmlsZVN5c3RlbUNh
bGxiYWNrc0JyaWRnZSosIGNvbnN0IFN0cmluZyYgbW9kZSk7CisgICAgc3RhdGljIHZvaWQgb3Bl
bkZpbGVTeXN0ZW1Pbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFdlYkNvbW1vbldvcmtlckNsaWVudCosIFdlYkZpbGVTeXN0ZW06OlR5cGUsIGxvbmcgbG9uZyBz
aXplLCBib29sIGNyZWF0ZSwgUGFzc1JlZlB0cjxXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJp
ZGdlPiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKKyAgICBzdGF0aWMgdm9pZCBtb3ZlT25NYWluVGhy
ZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgc3JjUGF0aCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZGVzdFBhdGgs
IFBhc3NSZWZQdHI8V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4sIGNvbnN0IFN0cmlu
ZyYgbW9kZSk7CisgICAgc3RhdGljIHZvaWQgY29weU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSosIGNvbnN0IFdlYkNvcmU6OktVUkwm
IHNyY1BhdGgsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGRlc3RQYXRoLCBQYXNzUmVmUHRyPFdvcmtl
ckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+LCBjb25zdCBTdHJpbmcmIG1vZGUpOworICAgIHN0
YXRpYyB2b2lkIHJlbW92ZU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgV2ViRmlsZVN5c3RlbSosIGNvbnN0IFdlYkNvcmU6OktVUkwmIHBhdGgsIFBhc3NSZWZQ
dHI8V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4sIGNvbnN0IFN0cmluZyYgbW9kZSk7
CisgICAgc3RhdGljIHZvaWQgcmVtb3ZlUmVjdXJzaXZlbHlPbk1haW5UaHJlYWQoV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiBwYXRoLCBQYXNzUmVmUHRyPFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+LCBj
b25zdCBTdHJpbmcmIG1vZGUpOworICAgIHN0YXRpYyB2b2lkIHJlYWRNZXRhZGF0YU9uTWFpblRo
cmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSosIGNv
bnN0IFdlYkNvcmU6OktVUkwmIHBhdGgsIFBhc3NSZWZQdHI8V29ya2VyRmlsZVN5c3RlbUNhbGxi
YWNrc0JyaWRnZT4sIGNvbnN0IFN0cmluZyYgbW9kZSk7CisgICAgc3RhdGljIHZvaWQgY3JlYXRl
RmlsZU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmls
ZVN5c3RlbSosIGNvbnN0IFdlYkNvcmU6OktVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNz
UmVmUHRyPFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+LCBjb25zdCBTdHJpbmcmIG1v
ZGUpOworICAgIHN0YXRpYyB2b2lkIGNyZWF0ZURpcmVjdG9yeU9uTWFpblRocmVhZChXZWJDb3Jl
OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSosIGNvbnN0IFdlYkNvcmU6
OktVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzUmVmUHRyPFdvcmtlckZpbGVTeXN0ZW1D
YWxsYmFja3NCcmlkZ2U+LCBjb25zdCBTdHJpbmcmIG1vZGUpOworICAgIHN0YXRpYyB2b2lkIGZp
bGVFeGlzdHNPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdl
YkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBwYXRoLCBQYXNzUmVmUHRyPFdvcmtl
ckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+LCBjb25zdCBTdHJpbmcmIG1vZGUpOworICAgIHN0
YXRpYyB2b2lkIGRpcmVjdG9yeUV4aXN0c09uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSosIGNvbnN0IFdlYkNvcmU6OktVUkwmIHBhdGgs
IFBhc3NSZWZQdHI8V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4sIGNvbnN0IFN0cmlu
ZyYgbW9kZSk7CisgICAgc3RhdGljIHZvaWQgcmVhZERpcmVjdG9yeU9uTWFpblRocmVhZChXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSosIGNvbnN0IFdlYkNv
cmU6OktVUkwmIHBhdGgsIFBhc3NSZWZQdHI8V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRn
ZT4sIGNvbnN0IFN0cmluZyYgbW9kZSk7CiAKICAgICBmcmllbmQgY2xhc3MgTWFpblRocmVhZEZp
bGVTeXN0ZW1DYWxsYmFja3M7CiAKICAgICAvLyBNZXRob2RzIHRoYXQgZGlzcGF0Y2ggV2ViRmls
ZVN5c3RlbUNhbGxiYWNrcyBvbiB0aGUgd29ya2VyIHRocmVhZHMuCi0gICAgc3RhdGljIHZvaWQg
ZGlkRmFpbE9uV29ya2VyVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBX
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiwgV2ViRmlsZUVycm9yKTsKLSAgICBzdGF0
aWMgdm9pZCBkaWRPcGVuRmlsZVN5c3RlbU9uV29ya2VyVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBXZWJDb3JlOjpLVVJMJiByb290UGF0aCk7Ci0gICAgc3RhdGlj
IHZvaWQgZGlkU3VjY2VlZE9uV29ya2VyVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKik7Ci0gICAgc3RhdGljIHZv
aWQgZGlkUmVhZE1ldGFkYXRhT25Xb3JrZXJUaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqLCBjb25zdCBXZWJGaWxl
SW5mbyYpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlYWREaXJlY3RvcnlPbldvcmtlclRocmVhZChX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNr
c0JyaWRnZSosIGNvbnN0IFdlYlZlY3RvcjxXZWJGaWxlU3lzdGVtRW50cnk+JiwgYm9vbCBoYXNN
b3JlKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGYWlsT25Xb3JrZXJUaHJlYWQoV2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNr
c0JyaWRnZT4sIFdlYkZpbGVFcnJvcik7CisgICAgc3RhdGljIHZvaWQgZGlkT3BlbkZpbGVTeXN0
ZW1PbldvcmtlclRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cjxXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiByb290UGF0aCk7CisgICAgc3RhdGljIHZvaWQgZGlkU3Vj
Y2VlZE9uV29ya2VyVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNz
UmVmUHRyPFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+KTsKKyAgICBzdGF0aWMgdm9p
ZCBkaWRSZWFkTWV0YWRhdGFPbldvcmtlclRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgUGFzc1JlZlB0cjxXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiwgY29u
c3QgV2ViRmlsZUluZm8mKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWFkRGlyZWN0b3J5T25Xb3Jr
ZXJUaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8V29y
a2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4sIGNvbnN0IFdlYlZlY3RvcjxXZWJGaWxlU3lz
dGVtRW50cnk+JiwgYm9vbCBoYXNNb3JlKTsKIAogICAgIHN0YXRpYyB2b2lkIHJ1blRhc2tPbk1h
aW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8V29y
a2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4sIFBhc3NPd25QdHI8V2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pOwogICAgIHN0YXRpYyB2b2lkIHJ1blRhc2tPbldvcmtl
clRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxXb3Jr
ZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiwgUGFzc093blB0cjxXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrPik7CkBAIC0xNDEsNiArMTM5LDkgQEAgcHJpdmF0ZToKICAg
ICBXZWJDb3JlOjpXb3JrZXJMb2FkZXJQcm94eSogbV93b3JrZXJMb2FkZXJQcm94eTsKICAgICBX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3dvcmtlckNvbnRleHQ7CiAKKyAgICAv
LyBNdXN0IGJlIGRlbGV0ZWQgb24gdGhlIFdvcmtlckNvbnRleHQgdGhyZWFkLgorICAgIFdvcmtl
ckZpbGVTeXN0ZW1Db250ZXh0T2JzZXJ2ZXIqIG1fd29ya2VyQ29udGV4dE9ic2VydmVyOworCiAg
ICAgLy8gVGhpcyBpcyBzZWxmLWRlc3RydWN0ZWQgYW5kIG11c3QgYmUgZmlyZWQgb24gdGhlIHdv
cmtlciB0aHJlYWQuCiAgICAgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyogbV9jYWxsYmFja3NPbldv
cmtlclRocmVhZDsKIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMGI2YjA1OGY0Y2Y0YzliNGVjYmJiNjU0OTFhYzE3ZTBm
Zjc1M2VkZi4uODQyMmUyYzM3NmQ4OTNiMmY1YjFiZDRmNzdhNGUwNmQzY2UzNDExNCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIwIEBACisyMDEyLTAxLTAzICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEZpbGVTeXN0ZW0gYnJpZGdlIG5lZWRzIHRocmVh
ZHNhZmUgZml4ZXMgYW5kIG90aGVyIGNsZWFuLXVwLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ2NjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBFeHBhbmQgdGhlIHRlc3RzIHByZXZpb3VzbHkgYWRkZWQg
aW4gcjEwMjg5NCBmb3IgYSBzaW1pbGFyIHNpdHVhdGlvbi4KKworICAgICAgICAqIGh0dHAvdGVz
dHMvd29ya2Vycy9yZXNvdXJjZXMvb3Blbi1kYXRhYmFzZS1zeW5jLmpzOiBSZW1vdmVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9yZXNvdXJjZXMvc3luYy1vcGVyYXRpb25zLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHJlbW92ZUFsbEluRGlyZWN0b3J5U3luYyk6CisgICAgICAgIChvbm1l
c3NhZ2UpOgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy90ZXJtaW5hdGUtZHVyaW5nLXN5
bmMtb3BlcmF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93
b3JrZXJzL3Rlcm1pbmF0ZS1kdXJpbmctc3luYy1vcGVyYXRpb24uaHRtbDogUmVuYW1lZCBmcm9t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9pbnRlcnJ1cHQtZGF0YWJhc2Utc3luYy1v
cGVuLWNyYXNoLmh0bWwtc2tpcHBlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0
X2V4cGVjdGF0aW9ucy50eHQ6IFNraXBwZWQgdGhlIG5ldyB0ZXN0IGR1ZSB0byBhbiB1bmltcGxl
bWVudGVkIGxheW91dCB0ZXN0IGNvbnRyb2xsZXIgbWV0aG9kLgorCiAyMDEyLTAxLTAzICBGaWxp
cCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjk4MTk2
LTk4MjM2KTogSW5jb3JyZWN0IGxheW91dCBvZiBpR29vZ2xlIHdpdGggUlNTIGZlZWRzCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvaW50ZXJydXB0LWRhdGFiYXNl
LXN5bmMtb3Blbi1jcmFzaC5odG1sLXNraXBwZWQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dv
cmtlcnMvaW50ZXJydXB0LWRhdGFiYXNlLXN5bmMtb3Blbi1jcmFzaC5odG1sLXNraXBwZWQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlNTU3MjY3MmI5Yjc4MWZhMzVkNDRkYWJhNmZm
MTEwYTdmN2YwN2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL2ludGVycnVwdC1kYXRhYmFzZS1zeW5j
LW9wZW4tY3Jhc2guaHRtbC1za2lwcGVkCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAot
PGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSdyZXNvdXJjZXMvd29ya2VyLXV0aWwuanMnPjwv
c2NyaXB0PgotPHNjcmlwdD4KLXZhciB3b3JrZXJzU3RhcnRlZDsKLXZhciB3b3JrZXJzQ2xvc2Vk
OwotCi0vLyBEbyB0aGUgdGVzdCAxMCB0aW1lcyBiZWNhdXNlIHRoZSBjcmFzaCBkaWRuJ3QgaGFw
cGVuIGV2ZXJ5IHRpbWUsIGJ1dAotLy8gaXQgaGFwcGVuIHdpdGggYSBoaWdoIGRlZ3JlZSBvZiBj
b25maWRlbmNlIGluIDEwIGl0ZXJhdGlvbnMuCi12YXIgcmVtYWluaW5nSXRlcmF0aW9ucyA9IDEw
OwotLy8gMzAgd29ya2VycyBzZWVtZWQgdG8gY2F1c2UgdGhlIGNyYXNoIHRvIGhhcHBlbiBmcmVx
dWVudGx5LgotdmFyIHdvcmtlcnMgPSBuZXcgQXJyYXkoMzApOwotCi1mdW5jdGlvbiBuZXh0SXRl
cmF0aW9uKCkKLXsKLSAgICBsb2coJ1JlbWFpbmluZyBpdGVyYXRpb25zOiAnICsgIHJlbWFpbmlu
Z0l0ZXJhdGlvbnMpOwotICAgIHdhaXRVbnRpbFdvcmtlclRocmVhZHNFeGl0KHN0YXJ0V29ya2Vy
cykKLX0KLQotZnVuY3Rpb24gc3RhcnRXb3JrZXJzKCkKLXsKLSAgICBpZiAoIXJlbWFpbmluZ0l0
ZXJhdGlvbnMpIHsKLSAgICAgICAgZG9uZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IHJlbWFpbmluZ0l0ZXJhdGlvbnMtLTsKLQotICAgIHdvcmtlcnNTdGFydGVkID0gMDsKLSAgICB3
b3JrZXJzQ2xvc2VkID0gMDsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHdvcmtlcnMubGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgd29ya2Vyc1tpXSA9IG5ldyBXb3JrZXIoJ3Jlc291cmNlcy9vcGVu
LWRhdGFiYXNlLXN5bmMuanM/YXJnPScgKyBpKQotICAgICAgICB3b3JrZXJzW2ldLm9ubWVzc2Fn
ZSA9IHdhaXRGb3JBbGxXb3JrZXJzVG9TdGFydDsKLSAgICB9Ci19Ci0KLS8vIERvIG91ciBiZXN0
IHRvIHRyeSB0byBpbnRlcnJ1cHQgdGhlIGRhdGFic2Ugb3BlbgotLy8gY2FsbCBieSB3YWl0aW5n
IGZvciB0aGUgd29ya2VyIHRvIHN0YXJ0IGFuZCB0aGVuCi0vLyB0ZWxsaW5nIGl0IHRvIGRvIHRo
ZSBvcGVuIGRhdGFiYXNlIGNhbGwgKGFuZAotLy8gdGhlbiB0ZXJtaW5hdGUgdGhlIHdvcmtlciku
Ci1mdW5jdGlvbiB3YWl0Rm9yQWxsV29ya2Vyc1RvU3RhcnQoKQotewotICAgIHdvcmtlcnNTdGFy
dGVkKys7Ci0gICAgaWYgKHdvcmtlcnNTdGFydGVkIDwgd29ya2Vycy5sZW5ndGgpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgd29ya2Vycy5sZW5ndGg7ICsraSkK
LSAgICAgICAgd29ya2Vyc1tpXS5wb3N0TWVzc2FnZSgnb3BlbkRhdGFiYXNlU3luYycpOwotCi0g
ICAgc2V0VGltZW91dCgnY2xvc2VXb3JrZXIoKScsIDApOwotfQotCi1mdW5jdGlvbiBjbG9zZVdv
cmtlcigpCi17Ci0gICAgd29ya2Vyc1t3b3JrZXJzQ2xvc2VkXS50ZXJtaW5hdGUoKTsKLSAgICB3
b3JrZXJzQ2xvc2VkKys7Ci0gICAgaWYgKHdvcmtlcnNDbG9zZWQgPCB3b3JrZXJzLmxlbmd0aCkK
LSAgICAgICAgc2V0VGltZW91dCgnY2xvc2VXb3JrZXIoKScsIDMpOwotICAgIGVsc2UKLSAgICAg
ICAgbmV4dEl0ZXJhdGlvbigpOwotfQotCi1mdW5jdGlvbiBydW5UZXN0KCkKLXsKLSAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOwotICAgIH0KLSAgICBuZXh0SXRlcmF0aW9uKCk7Ci19Ci08L3NjcmlwdD4KLTwvaGVh
ZD4KLTxib2R5IG9ubG9hZD0ncnVuVGVzdCgpJz4KLTxkaXYgaWQ9J3Jlc3VsdCc+Ci08L2Rpdj4K
LTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29y
a2Vycy9yZXNvdXJjZXMvb3Blbi1kYXRhYmFzZS1zeW5jLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93b3JrZXJzL3Jlc291cmNlcy9vcGVuLWRhdGFiYXNlLXN5bmMuanMKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDFlN2JlOTQxYmU5NDMyMGE2ZjNhOWY3M2M3MjIyMDM2MGM2NjY1
NWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3Jlc291cmNlcy9vcGVuLWRhdGFiYXNlLXN5bmMuanMK
KysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLXBvc3RNZXNzYWdlKCdzdGFydGVkJyk7Ci0K
LW9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkKLXsKLSAgICBpZiAoZXZ0LmRhdGEgPT0gJ29wZW5E
YXRhYmFzZVN5bmMnKQotICAgICAgICBvcGVuRGF0YWJhc2VTeW5jKCcnLCAnJywgJycsIDEpOwot
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3Jlc291cmNlcy9z
eW5jLW9wZXJhdGlvbnMuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvcmVzb3Vy
Y2VzL3N5bmMtb3BlcmF0aW9ucy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTk0MjNkNmI0YjJhNmYzODA4MDIw
MTBlMGI5ODc4ZWY3ZjNkMmQyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93b3JrZXJzL3Jlc291cmNlcy9zeW5jLW9wZXJhdGlvbnMuanMKQEAgLTAsMCArMSw3MyBA
QAorZnVuY3Rpb24gcmVtb3ZlQWxsSW5EaXJlY3RvcnlTeW5jKGRpcmVjdG9yeSkKK3sKKyAgICBp
ZiAoIWRpcmVjdG9yeSkKKyAgICAgICAgcmV0dXJuOworICAgIHZhciByZWFkZXIgPSBkaXJlY3Rv
cnkuY3JlYXRlUmVhZGVyKCk7CisgICAgZG8geworICAgICAgICB2YXIgZW50cmllcyA9IHJlYWRl
ci5yZWFkRW50cmllcygpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJpZXMubGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChlbnRyaWVzW2ldLmlzRGlyZWN0b3J5KQorICAg
ICAgICAgICAgICAgIGVudHJpZXNbaV0ucmVtb3ZlUmVjdXJzaXZlbHkoKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBlbnRyaWVzW2ldLnJlbW92ZSgpOworICAgICAgICB9Cisg
ICAgfSB3aGlsZSAoZW50cmllcy5sZW5ndGgpOworfQorCitvbm1lc3NhZ2UgPSBmdW5jdGlvbihl
dnQpCit7CisgICAgdHJ5IHsKKwkvLyBJbmNyZWFzZSB0aGUgY2hhbmdlIG9mIGdldHRpbmcgY2F1
Z2h0IGRvaW5nIGEgc3luYyBvcGVyYXRpb24KKwkvLyBieSByZXBlYXRpbmcgdGhlIG9wcmF0aW9u
IG11bHRpcGxlIHRpbWVzLgorCWZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsraSkgeworICAgICAg
ICAgICAgaWYgKGV2dC5kYXRhID09ICdvcGVuRGF0YWJhc2VTeW5jJykKKwkJb3BlbkRhdGFiYXNl
U3luYygnJywgJycsICcnLCAxKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGV2dC5kYXRhID09ICdy
ZXF1ZXN0RmlsZVN5c3RlbVN5bmMnKSB7CisJCWlmICghdGhpcy53ZWJraXRSZXF1ZXN0RmlsZVN5
c3RlbVN5bmMpCisJCSAgICByZXR1cm47CisJCXdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyh0
aGlzLlRFTVBPUkFSWSwgMTAwKTsKKwkgICAgfSBlbHNlIGlmIChldnQuZGF0YSA9PSAnZmlsZVN5
bmNPcGVyYXRpb25zJykgeworCQlpZiAoIXRoaXMud2Via2l0UmVxdWVzdEZpbGVTeXN0ZW1TeW5j
KQorCQkgICAgcmV0dXJuOworCQkvLyBEbyBtYW55IGRpZmZlcmVudCBzeW5jIGZpbGVzeXN0ZW0g
b3BlcmF0aW9ucy4gSWYgdGhpcyBzdGFydHMgY3Jhc2hpbmcsCisJCS8vIHRoZW4gYSBzaW1wbGUg
aW52ZXN0aWdhdGlvbiB3b3VsZCBiZSB0byBpc29sYXRlIHRoZXNlIGNvbW1hbmRzLgorCQl2YXIg
ZmlsZVN5c3RlbSA9IHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyh0aGlzLlRFTVBPUkFSWSwg
MTAwKTsKKworCQlyZW1vdmVBbGxJbkRpcmVjdG9yeVN5bmMoZmlsZVN5c3RlbS5yb290KTsKKwor
CQkvLyBTdGFnZSAxIChwcmVwYXJlKQorCQl2YXIgYSA9IGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxl
KCdhJywge2NyZWF0ZTp0cnVlfSk7CisJCXZhciBiID0gZmlsZVN5c3RlbS5yb290LmdldERpcmVj
dG9yeSgnYicsIHtjcmVhdGU6dHJ1ZX0pOworCQl2YXIgYyA9IGZpbGVTeXN0ZW0ucm9vdC5nZXRE
aXJlY3RvcnkoJ2MnLCB7Y3JlYXRlOnRydWV9KTsKKwkJdmFyIGQgPSBmaWxlU3lzdGVtLnJvb3Qu
Z2V0RmlsZSgnZCcsIHtjcmVhdGU6dHJ1ZX0pOworCisJCS8vIFN0YWdlIDIgKHRlc3QpCisJCXZh
ciBhX2NvcHkgPSBhLmNvcHlUbyhiLCAndG1wJyk7CisJCXZhciBtZXRhZGF0YSA9IGEuZ2V0TWV0
YWRhdGEoKTsKKwkJdmFyIGJfcGFyZW50ID0gYi5nZXRQYXJlbnQoKTsKKwkJdmFyIGNfY29weSA9
IGMuY29weVRvKGZpbGVTeXN0ZW0ucm9vdCwgJ2YnKTsKKwkJdmFyIGRfbmV3ID0gZC5tb3ZlVG8o
ZmlsZVN5c3RlbS5yb290LCAnZDInKTsKKwkJdmFyIGUgPSBmaWxlU3lzdGVtLnJvb3QuZ2V0Rmls
ZSgnZScsIHtjcmVhdGU6dHJ1ZX0pOworCisJCS8vIFZlcmlmeQorCQl2YXIgcmVhZGVyID0gZmls
ZVN5c3RlbS5yb290LmNyZWF0ZVJlYWRlcigpOworCQl2YXIgZGlyc0NvdW50ID0gMDsKKwkJdmFy
IHBhdGhzID0gW107CisJCWRvIHsKKwkJICAgIHZhciBlbnRyaWVzID0gcmVhZGVyLnJlYWRFbnRy
aWVzKCk7CisJCSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJpZXMubGVuZ3RoOyArK2kpIHsK
KwkJCXBhdGhzLnB1c2goZW50cmllc1tpXS5mdWxsUGF0aCk7CisJCQlpZiAoZW50cmllc1tpXS5p
c0RpcmVjdG9yeSkKKwkJCSAgICBkaXJzQ291bnQrKzsKKwkJICAgIH0KKwkJfSB3aGlsZSAoZW50
cmllcy5sZW5ndGgpOworCisJCXJlbW92ZUFsbEluRGlyZWN0b3J5U3luYyhmaWxlU3lzdGVtLnJv
b3QpOworCSAgICB9CisJfQorICAgIH0gY2F0Y2ggKGUpIHsKKwlyZXR1cm47CisgICAgfQorfQor
Citwb3N0TWVzc2FnZSgnc3RhcnRlZCcpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93b3JrZXJzL3Rlcm1pbmF0ZS1kdXJpbmctc3luYy1vcGVyYXRpb24tZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3Rlcm1pbmF0ZS1kdXJpbmctc3luYy1v
cGVyYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxMmJkMmE0MGQwOWJmM2M0YzJmZjk0
NmNlNzZiZjkyNWZjYmExMDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dvcmtlcnMvdGVybWluYXRlLWR1cmluZy1zeW5jLW9wZXJhdGlvbi1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxOTYgQEAKK1N0YXJ0aW5nIHRlc3QgcnVuLgorV2FpdGluZyBmb3IgYWxsIHdv
cmtlcnMgdG8gZXhpdC4KK1Rlc3RpbmcgaW50ZXJydXB0aW5nOiBvcGVuRGF0YWJhc2VTeW5jCitT
dGFydGluZyB3b3JrZXJzLgorU3RhcnRlZCB3b3JrZXIgY291bnQ6IDEKK1N0YXJ0ZWQgd29ya2Vy
IGNvdW50OiAyCitTdGFydGVkIHdvcmtlciBjb3VudDogMworU3RhcnRlZCB3b3JrZXIgY291bnQ6
IDQKK1N0YXJ0ZWQgd29ya2VyIGNvdW50OiA1CitTdGFydGVkIHdvcmtlciBjb3VudDogNgorU3Rh
cnRlZCB3b3JrZXIgY291bnQ6IDcKK1N0YXJ0ZWQgd29ya2VyIGNvdW50OiA4CitTdGFydGVkIHdv
cmtlciBjb3VudDogOQorU3RhcnRlZCB3b3JrZXIgY291bnQ6IDEwCitTdGFydGVkIHdvcmtlciBj
b3VudDogMTEKK1N0YXJ0ZWQgd29ya2VyIGNvdW50OiAxMgorU3RhcnRlZCB3b3JrZXIgY291bnQ6
IDEzCitTdGFydGVkIHdvcmtlciBjb3VudDogMTQKK1N0YXJ0ZWQgd29ya2VyIGNvdW50OiAxNQor
U3RhcnRlZCB3b3JrZXIgY291bnQ6IDE2CitTdGFydGVkIHdvcmtlciBjb3VudDogMTcKK1N0YXJ0
ZWQgd29ya2VyIGNvdW50OiAxOAorU3RhcnRlZCB3b3JrZXIgY291bnQ6IDE5CitTdGFydGVkIHdv
cmtlciBjb3VudDogMjAKK1N0YXJ0ZWQgd29ya2VyIGNvdW50OiAyMQorU3RhcnRlZCB3b3JrZXIg
Y291bnQ6IDIyCitTdGFydGVkIHdvcmtlciBjb3VudDogMjMKK1N0YXJ0ZWQgd29ya2VyIGNvdW50
OiAyNAorU3RhcnRlZCB3b3JrZXIgY291bnQ6IDI1CitTdGFydGVkIHdvcmtlciBjb3VudDogMjYK
K1N0YXJ0ZWQgd29ya2VyIGNvdW50OiAyNworU3RhcnRlZCB3b3JrZXIgY291bnQ6IDI4CitTdGFy
dGVkIHdvcmtlciBjb3VudDogMjkKK1N0YXJ0ZWQgd29ya2VyIGNvdW50OiAzMAorUnVubmluZyBv
cGVyYXRpb24uCitDbG9zZWQgd29ya2VyIGNvdW50OiAxCitDbG9zZWQgd29ya2VyIGNvdW50OiAy
CitDbG9zZWQgd29ya2VyIGNvdW50OiAzCitDbG9zZWQgd29ya2VyIGNvdW50OiA0CitDbG9zZWQg
d29ya2VyIGNvdW50OiA1CitDbG9zZWQgd29ya2VyIGNvdW50OiA2CitDbG9zZWQgd29ya2VyIGNv
dW50OiA3CitDbG9zZWQgd29ya2VyIGNvdW50OiA4CitDbG9zZWQgd29ya2VyIGNvdW50OiA5CitD
bG9zZWQgd29ya2VyIGNvdW50OiAxMAorQ2xvc2VkIHdvcmtlciBjb3VudDogMTEKK0Nsb3NlZCB3
b3JrZXIgY291bnQ6IDEyCitDbG9zZWQgd29ya2VyIGNvdW50OiAxMworQ2xvc2VkIHdvcmtlciBj
b3VudDogMTQKK0Nsb3NlZCB3b3JrZXIgY291bnQ6IDE1CitDbG9zZWQgd29ya2VyIGNvdW50OiAx
NgorQ2xvc2VkIHdvcmtlciBjb3VudDogMTcKK0Nsb3NlZCB3b3JrZXIgY291bnQ6IDE4CitDbG9z
ZWQgd29ya2VyIGNvdW50OiAxOQorQ2xvc2VkIHdvcmtlciBjb3VudDogMjAKK0Nsb3NlZCB3b3Jr
ZXIgY291bnQ6IDIxCitDbG9zZWQgd29ya2VyIGNvdW50OiAyMgorQ2xvc2VkIHdvcmtlciBjb3Vu
dDogMjMKK0Nsb3NlZCB3b3JrZXIgY291bnQ6IDI0CitDbG9zZWQgd29ya2VyIGNvdW50OiAyNQor
Q2xvc2VkIHdvcmtlciBjb3VudDogMjYKK0Nsb3NlZCB3b3JrZXIgY291bnQ6IDI3CitDbG9zZWQg
d29ya2VyIGNvdW50OiAyOAorQ2xvc2VkIHdvcmtlciBjb3VudDogMjkKK0Nsb3NlZCB3b3JrZXIg
Y291bnQ6IDMwCitXYWl0aW5nIGZvciBhbGwgd29ya2VycyB0byBleGl0LgorVGVzdGluZyBpbnRl
cnJ1cHRpbmc6IHJlcXVlc3RGaWxlU3lzdGVtU3luYworU3RhcnRpbmcgd29ya2Vycy4KK1N0YXJ0
ZWQgd29ya2VyIGNvdW50OiAxCitTdGFydGVkIHdvcmtlciBjb3VudDogMgorU3RhcnRlZCB3b3Jr
ZXIgY291bnQ6IDMKK1N0YXJ0ZWQgd29ya2VyIGNvdW50OiA0CitTdGFydGVkIHdvcmtlciBjb3Vu
dDogNQorU3RhcnRlZCB3b3JrZXIgY291bnQ6IDYKK1N0YXJ0ZWQgd29ya2VyIGNvdW50OiA3CitT
dGFydGVkIHdvcmtlciBjb3VudDogOAorU3RhcnRlZCB3b3JrZXIgY291bnQ6IDkKK1N0YXJ0ZWQg
d29ya2VyIGNvdW50OiAxMAorU3RhcnRlZCB3b3JrZXIgY291bnQ6IDExCitTdGFydGVkIHdvcmtl
ciBjb3VudDogMTIKK1N0YXJ0ZWQgd29ya2VyIGNvdW50OiAxMworU3RhcnRlZCB3b3JrZXIgY291
bnQ6IDE0CitTdGFydGVkIHdvcmtlciBjb3VudDogMTUKK1N0YXJ0ZWQgd29ya2VyIGNvdW50OiAx
NgorU3RhcnRlZCB3b3JrZXIgY291bnQ6IDE3CitTdGFydGVkIHdvcmtlciBjb3VudDogMTgKK1N0
YXJ0ZWQgd29ya2VyIGNvdW50OiAxOQorU3RhcnRlZCB3b3JrZXIgY291bnQ6IDIwCitTdGFydGVk
IHdvcmtlciBjb3VudDogMjEKK1N0YXJ0ZWQgd29ya2VyIGNvdW50OiAyMgorU3RhcnRlZCB3b3Jr
ZXIgY291bnQ6IDIzCitTdGFydGVkIHdvcmtlciBjb3VudDogMjQKK1N0YXJ0ZWQgd29ya2VyIGNv
dW50OiAyNQorU3RhcnRlZCB3b3JrZXIgY291bnQ6IDI2CitTdGFydGVkIHdvcmtlciBjb3VudDog
MjcKK1N0YXJ0ZWQgd29ya2VyIGNvdW50OiAyOAorU3RhcnRlZCB3b3JrZXIgY291bnQ6IDI5CitT
dGFydGVkIHdvcmtlciBjb3VudDogMzAKK1J1bm5pbmcgb3BlcmF0aW9uLgorQ2xvc2VkIHdvcmtl
ciBjb3VudDogMQorQ2xvc2VkIHdvcmtlciBjb3VudDogMgorQ2xvc2VkIHdvcmtlciBjb3VudDog
MworQ2xvc2VkIHdvcmtlciBjb3VudDogNAorQ2xvc2VkIHdvcmtlciBjb3VudDogNQorQ2xvc2Vk
IHdvcmtlciBjb3VudDogNgorQ2xvc2VkIHdvcmtlciBjb3VudDogNworQ2xvc2VkIHdvcmtlciBj
b3VudDogOAorQ2xvc2VkIHdvcmtlciBjb3VudDogOQorQ2xvc2VkIHdvcmtlciBjb3VudDogMTAK
K0Nsb3NlZCB3b3JrZXIgY291bnQ6IDExCitDbG9zZWQgd29ya2VyIGNvdW50OiAxMgorQ2xvc2Vk
IHdvcmtlciBjb3VudDogMTMKK0Nsb3NlZCB3b3JrZXIgY291bnQ6IDE0CitDbG9zZWQgd29ya2Vy
IGNvdW50OiAxNQorQ2xvc2VkIHdvcmtlciBjb3VudDogMTYKK0Nsb3NlZCB3b3JrZXIgY291bnQ6
IDE3CitDbG9zZWQgd29ya2VyIGNvdW50OiAxOAorQ2xvc2VkIHdvcmtlciBjb3VudDogMTkKK0Ns
b3NlZCB3b3JrZXIgY291bnQ6IDIwCitDbG9zZWQgd29ya2VyIGNvdW50OiAyMQorQ2xvc2VkIHdv
cmtlciBjb3VudDogMjIKK0Nsb3NlZCB3b3JrZXIgY291bnQ6IDIzCitDbG9zZWQgd29ya2VyIGNv
dW50OiAyNAorQ2xvc2VkIHdvcmtlciBjb3VudDogMjUKK0Nsb3NlZCB3b3JrZXIgY291bnQ6IDI2
CitDbG9zZWQgd29ya2VyIGNvdW50OiAyNworQ2xvc2VkIHdvcmtlciBjb3VudDogMjgKK0Nsb3Nl
ZCB3b3JrZXIgY291bnQ6IDI5CitDbG9zZWQgd29ya2VyIGNvdW50OiAzMAorV2FpdGluZyBmb3Ig
YWxsIHdvcmtlcnMgdG8gZXhpdC4KK1Rlc3RpbmcgaW50ZXJydXB0aW5nOiBmaWxlU3luY09wZXJh
dGlvbnMKK1N0YXJ0aW5nIHdvcmtlcnMuCitTdGFydGVkIHdvcmtlciBjb3VudDogMQorU3RhcnRl
ZCB3b3JrZXIgY291bnQ6IDIKK1N0YXJ0ZWQgd29ya2VyIGNvdW50OiAzCitTdGFydGVkIHdvcmtl
ciBjb3VudDogNAorU3RhcnRlZCB3b3JrZXIgY291bnQ6IDUKK1N0YXJ0ZWQgd29ya2VyIGNvdW50
OiA2CitTdGFydGVkIHdvcmtlciBjb3VudDogNworU3RhcnRlZCB3b3JrZXIgY291bnQ6IDgKK1N0
YXJ0ZWQgd29ya2VyIGNvdW50OiA5CitTdGFydGVkIHdvcmtlciBjb3VudDogMTAKK1N0YXJ0ZWQg
d29ya2VyIGNvdW50OiAxMQorU3RhcnRlZCB3b3JrZXIgY291bnQ6IDEyCitTdGFydGVkIHdvcmtl
ciBjb3VudDogMTMKK1N0YXJ0ZWQgd29ya2VyIGNvdW50OiAxNAorU3RhcnRlZCB3b3JrZXIgY291
bnQ6IDE1CitTdGFydGVkIHdvcmtlciBjb3VudDogMTYKK1N0YXJ0ZWQgd29ya2VyIGNvdW50OiAx
NworU3RhcnRlZCB3b3JrZXIgY291bnQ6IDE4CitTdGFydGVkIHdvcmtlciBjb3VudDogMTkKK1N0
YXJ0ZWQgd29ya2VyIGNvdW50OiAyMAorU3RhcnRlZCB3b3JrZXIgY291bnQ6IDIxCitTdGFydGVk
IHdvcmtlciBjb3VudDogMjIKK1N0YXJ0ZWQgd29ya2VyIGNvdW50OiAyMworU3RhcnRlZCB3b3Jr
ZXIgY291bnQ6IDI0CitTdGFydGVkIHdvcmtlciBjb3VudDogMjUKK1N0YXJ0ZWQgd29ya2VyIGNv
dW50OiAyNgorU3RhcnRlZCB3b3JrZXIgY291bnQ6IDI3CitTdGFydGVkIHdvcmtlciBjb3VudDog
MjgKK1N0YXJ0ZWQgd29ya2VyIGNvdW50OiAyOQorU3RhcnRlZCB3b3JrZXIgY291bnQ6IDMwCitS
dW5uaW5nIG9wZXJhdGlvbi4KK0Nsb3NlZCB3b3JrZXIgY291bnQ6IDEKK0Nsb3NlZCB3b3JrZXIg
Y291bnQ6IDIKK0Nsb3NlZCB3b3JrZXIgY291bnQ6IDMKK0Nsb3NlZCB3b3JrZXIgY291bnQ6IDQK
K0Nsb3NlZCB3b3JrZXIgY291bnQ6IDUKK0Nsb3NlZCB3b3JrZXIgY291bnQ6IDYKK0Nsb3NlZCB3
b3JrZXIgY291bnQ6IDcKK0Nsb3NlZCB3b3JrZXIgY291bnQ6IDgKK0Nsb3NlZCB3b3JrZXIgY291
bnQ6IDkKK0Nsb3NlZCB3b3JrZXIgY291bnQ6IDEwCitDbG9zZWQgd29ya2VyIGNvdW50OiAxMQor
Q2xvc2VkIHdvcmtlciBjb3VudDogMTIKK0Nsb3NlZCB3b3JrZXIgY291bnQ6IDEzCitDbG9zZWQg
d29ya2VyIGNvdW50OiAxNAorQ2xvc2VkIHdvcmtlciBjb3VudDogMTUKK0Nsb3NlZCB3b3JrZXIg
Y291bnQ6IDE2CitDbG9zZWQgd29ya2VyIGNvdW50OiAxNworQ2xvc2VkIHdvcmtlciBjb3VudDog
MTgKK0Nsb3NlZCB3b3JrZXIgY291bnQ6IDE5CitDbG9zZWQgd29ya2VyIGNvdW50OiAyMAorQ2xv
c2VkIHdvcmtlciBjb3VudDogMjEKK0Nsb3NlZCB3b3JrZXIgY291bnQ6IDIyCitDbG9zZWQgd29y
a2VyIGNvdW50OiAyMworQ2xvc2VkIHdvcmtlciBjb3VudDogMjQKK0Nsb3NlZCB3b3JrZXIgY291
bnQ6IDI1CitDbG9zZWQgd29ya2VyIGNvdW50OiAyNgorQ2xvc2VkIHdvcmtlciBjb3VudDogMjcK
K0Nsb3NlZCB3b3JrZXIgY291bnQ6IDI4CitDbG9zZWQgd29ya2VyIGNvdW50OiAyOQorQ2xvc2Vk
IHdvcmtlciBjb3VudDogMzAKK1dhaXRpbmcgZm9yIGFsbCB3b3JrZXJzIHRvIGV4aXQuCitET05F
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy90ZXJtaW5hdGUt
ZHVyaW5nLXN5bmMtb3BlcmF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtl
cnMvdGVybWluYXRlLWR1cmluZy1zeW5jLW9wZXJhdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5Y2Q1
OTMzN2RmODg1NTNhMzNlMDkzYTExOGZjMmNkYmRjNDZjN2EKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvdGVybWluYXRlLWR1cmluZy1zeW5jLW9wZXJh
dGlvbi5odG1sCkBAIC0wLDAgKzEsODEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0n
cmVzb3VyY2VzL3dvcmtlci11dGlsLmpzJz48L3NjcmlwdD4KKzxzY3JpcHQ+Cit2YXIgd29ya2Vy
c1N0YXJ0ZWQ7Cit2YXIgd29ya2Vyc0Nsb3NlZDsKKwordmFyIHRlc3ROdW1iZXIgPSAtMTsKK3Zh
ciBzeW5jT3BlcmF0aW9uVGVzdHMgPSBuZXcgQXJyYXkoJ29wZW5EYXRhYmFzZVN5bmMnLCAncmVx
dWVzdEZpbGVTeXN0ZW1TeW5jJywgJ2ZpbGVTeW5jT3BlcmF0aW9ucycpOworCisvLyAzMCB3b3Jr
ZXJzIHNlZW1lZCB0byBjYXVzZSB0aGUgY3Jhc2ggdG8gaGFwcGVuIGZyZXF1ZW50bHkuCit2YXIg
d29ya2VycyA9IG5ldyBBcnJheSgzMCk7CisKK2Z1bmN0aW9uIHN0YXJ0TmV4dFRlc3QoKQorewor
ICAgIHRlc3ROdW1iZXIrKzsKKyAgICBsb2coJ1dhaXRpbmcgZm9yIGFsbCB3b3JrZXJzIHRvIGV4
aXQuJyk7CisgICAgaWYgKHRlc3ROdW1iZXIgPj0gc3luY09wZXJhdGlvblRlc3RzLmxlbmd0aCkg
eworICAgICAgICB3YWl0VW50aWxXb3JrZXJUaHJlYWRzRXhpdChkb25lKQorICAgICAgICByZXR1
cm47CisgICAgfQorICAgIHdhaXRVbnRpbFdvcmtlclRocmVhZHNFeGl0KHN0YXJ0V29ya2VycykK
K30KKworZnVuY3Rpb24gc3RhcnRXb3JrZXJzKCkKK3sKKyAgICBsb2coJ1Rlc3RpbmcgaW50ZXJy
dXB0aW5nOiAnICsgIHN5bmNPcGVyYXRpb25UZXN0c1t0ZXN0TnVtYmVyXSk7CisgICAgbG9nKCdT
dGFydGluZyB3b3JrZXJzLicpOworICAgIHdvcmtlcnNTdGFydGVkID0gMDsKKyAgICB3b3JrZXJz
Q2xvc2VkID0gMDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHdvcmtlcnMubGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgd29ya2Vyc1tpXSA9IG5ldyBXb3JrZXIoJ3Jlc291cmNlcy9zeW5jLW9wZXJh
dGlvbnMuanM/YXJnPScgKyBpKQorICAgICAgICB3b3JrZXJzW2ldLm9ubWVzc2FnZSA9IHdhaXRG
b3JBbGxXb3JrZXJzVG9TdGFydDsKKyAgICB9Cit9CisKKy8vIERvIG91ciBiZXN0IHRvIHRyeSB0
byBpbnRlcnJ1cHQgdGhlIGRhdGFic2Ugb3BlbgorLy8gY2FsbCBieSB3YWl0aW5nIGZvciB0aGUg
d29ya2VyIHRvIHN0YXJ0IGFuZCB0aGVuCisvLyB0ZWxsaW5nIGl0IHRvIGRvIHRoZSBvcGVuIGRh
dGFiYXNlIGNhbGwgKGFuZAorLy8gdGhlbiB0ZXJtaW5hdGUgdGhlIHdvcmtlcikuCitmdW5jdGlv
biB3YWl0Rm9yQWxsV29ya2Vyc1RvU3RhcnQoKQoreworICAgIHdvcmtlcnNTdGFydGVkKys7Cisg
ICAgbG9nKCdTdGFydGVkIHdvcmtlciBjb3VudDogJyArIHdvcmtlcnNTdGFydGVkKTsKKyAgICBp
ZiAod29ya2Vyc1N0YXJ0ZWQgPCB3b3JrZXJzLmxlbmd0aCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbG9nKCdSdW5uaW5nIG9wZXJhdGlvbi4nKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHdv
cmtlcnMubGVuZ3RoOyArK2kpCisgICAgICAgIHdvcmtlcnNbaV0ucG9zdE1lc3NhZ2Uoc3luY09w
ZXJhdGlvblRlc3RzW3Rlc3ROdW1iZXJdKTsKKworICAgIHNldFRpbWVvdXQoJ2Nsb3NlV29ya2Vy
KCknLCAwKTsKK30KKworZnVuY3Rpb24gY2xvc2VXb3JrZXIoKQoreworICAgIHdvcmtlcnNbd29y
a2Vyc0Nsb3NlZF0udGVybWluYXRlKCk7CisgICAgd29ya2Vyc0Nsb3NlZCsrOworICAgIGxvZygn
Q2xvc2VkIHdvcmtlciBjb3VudDogJyArIHdvcmtlcnNDbG9zZWQpOworICAgIGlmICh3b3JrZXJz
Q2xvc2VkIDwgd29ya2Vycy5sZW5ndGgpCisgICAgICAgIHNldFRpbWVvdXQoJ2Nsb3NlV29ya2Vy
KCknLCAzKTsKKyAgICBlbHNlCisgICAgICAgIHN0YXJ0TmV4dFRlc3QoKTsKK30KKworZnVuY3Rp
b24gcnVuVGVzdCgpCit7CisgICAgbG9nKCdTdGFydGluZyB0ZXN0IHJ1bi4nKTsKKyAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworICAgIH0KKyAgICBzdGFydE5leHRUZXN0KCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0ncnVuVGVzdCgpJz4KKzxkaXYgaWQ9J3Jlc3VsdCc+Cis8L2Rpdj4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCAxZTMwMWJmNGE2MzAyOTg2MzM2ODM5MTVlYWM2
NWQ2ODExYzU4OWEyLi5iYTg1ZWQ5OWMxZDVkZmNkYzE4ZmMyYTgzMjQ3MmY3MGFmNjMwYWVlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9u
cy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlv
bnMudHh0CkBAIC0xODksNyArMTg5LDcgQEAgQlVHV0s3NDQ2NiA6IGZhc3Qvd29ya2Vycy93b3Jr
ZXItc2NyaXB0LWVycm9yLmh0bWwgPSBQQVNTIFRJTUVPVVQgRkFJTAogCiAvLyBUZXN0cyB0aW1p
bmcgb3V0IGJlY2F1c2UgbGF5b3V0VGVzdENvbnRyb2xsZXIud29ya2VyVGhyZWFkQ291bnQgaXMg
bm90IGltcGxlbWVudGVkIGluIERSVAogQlVHV0s3NDY1MyBTS0lQIDogaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC93b3JrZXJzL2Fib3J0LWV4Y2VwdGlvbi1hc3NlcnQuaHRtbCA9IFRJTUVPVVQK
LS8vQlVHV0s3NDY1MyBTS0lQIDogaHR0cC90ZXN0cy93b3JrZXJzL2ludGVycnVwdC1kYXRhYmFz
ZS1zeW5jLW9wZW4tY3Jhc2guaHRtbCA9IFRJTUVPVVQKK0JVR1dLNzQ2NTMgU0tJUCA6IGh0dHAv
dGVzdHMvd29ya2Vycy90ZXJtaW5hdGUtZHVyaW5nLXN5bmMtb3BlcmF0aW9uLmh0bWwgPSBUSU1F
T1VUCiBCVUdXSzc0NjUzIFNLSVAgOiBmYXN0L3dvcmtlcnMvc3RvcmFnZS9pbnRlcnJ1cHQtZGF0
YWJhc2UuaHRtbCA9IFRJTUVPVVQKIAogQlVHV0s3MTk2OCA6IGZhc3QvZmlsZXMvd29ya2Vycy93
b3JrZXItYXBwbHktYmxvYi11cmwtdG8teGhyLmh0bWwgPSBURVhUCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>121153</attachid>
            <date>2012-01-04 14:21:27 -0800</date>
            <delta_ts>2012-01-04 14:22:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74666-20120104142125.patch</filename>
            <type>text/plain</type>
            <size>9089</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0MDYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDA5ZGQyZTY2MzU2ZWI0NzAyZTUzMGU2ZTViZTMxMjllMjc3YWQ0NDAuLjZkMTRhYzc2N2Y3OTYx
NjFmMmUwMzBjYmJhOTUyYjJlNDVjNWVhYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTItMDEtMDQgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFrZSBpdCBzYWZlIHRvIGRlbGV0ZSBXb3JrZXJG
aWxlU3lzdGVtQ29udGV4dE9ic2VydmVyIG9uIGFueSB0aHJlYWQuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDY2NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVtQ29udGV4
dE9ic2VydmVyKTogTW92ZSB0aGUgV29ya2VyQ29udGV4dE9ic2VydmVyCisgICAgICAgIG91dCBv
ZiB0aGUgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSBzaW5jZSBhbiBvYnNlcnZlciBz
aG91bGQgYmUKKyAgICAgICAgZGVzdHJveWVkIG9uIHRoZSBXb3JrZXJDb250ZXh0IHRocmVhZC4g
KEFjdHVhbGx5LCBpdCBjb3VsZCBiZSBkZXN0cm95ZWQgb24gZWl0aGVyCisgICAgICAgIHRocmVh
ZCBpZiB5b3UgYXJlIGNhcmVmdWwgdG8gbWFrZSBhIGNlcnRhaW4gbWV0aG9kIGNhbGwgb24gaXQg
d2hpbGUgb24gdGhlIFdvcmtlckNvbnRleHQKKyAgICAgICAgdGhyZWFkIGJ1dCB0cnlpbmcgdGhh
dCBpcyBhIG1vcmUgZnJhZ2lsZSBwYXR0ZXJuLikKKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmls
ZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6c3RvcCk6IEZhY3RvciBvdXQgdGhlIGNsZWFuIHVwIGFu
ZCBtYWtlIGl0CisgICAgICAgIGNsZWFyIHdoYXQgdGhlIG11dGV4IGlzIGd1YXJkaW5nLgorICAg
ICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpjbGVhblVwQWZ0
ZXJDYWxsYmFjayk6IERlbGV0ZQorICAgICAgICB0aGUgb2JzZXJ2ZXIuIER1ZSB0byB3aGVyZSB0
aGlzIGlzIGNhbGxlZCBmcm9tLCBpdCBpcyBhbHdheXMgY2FsbGVkIG9uIHRoZSBXb3JrZXJDb250
ZXh0IHRocmVhZC4KKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0Jy
aWRnZTo6cnVuVGFza09uV29ya2VyVGhyZWFkKTogUmVwbGFjZSBzb21lIGNvZGUgd2l0aAorICAg
ICAgICB0aGUgY2xlYW5VcEFmdGVyQ2FsbGJhY2sgY2FsbC4KKyAgICAgICAgKFdlYktpdDo6V29y
a2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6bWF5UG9zdFRhc2tUb1dvcmtlcik6CisgICAg
ICAgICogc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuaDogSW4gYWRkaXRpb24g
dG8gc29tZSBjb21tZW50IGNsZWFuIHVwcyBhbmQgY29kZSBmYWN0b3JpbmcsCisgICAgICAgIEkg
bWFkZSB0aGUgZGVzY3RydWN0b3IgcHJpdmF0ZSBzaW5jZSBubyBvbmUgc2hvdWxkIGNhbGwgaXQg
ZGlyZWN0bHkuCisKIDIwMTItMDEtMDQgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNv
bT4KIAogICAgICAgICBbY2hyb21pdW1dIENyZWF0ZSB1bml0IHRlc3RzIGZvciBDQ1RpbGVkTGF5
ZXJJbXBsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxl
U3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dv
cmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3BwCmluZGV4IDhjZTVlNjk3NmJiMDkxOTNk
M2E3NDA5YTVhMWNmNzhmYzRjMDU1NzEuLjZjMTY2ZjQyNDkzYmZlYWMxMmJiNmVlZjcwYjk2MGNi
NmYxNDNlOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3BwCkBAIC0xNDQsMTUgKzE0NCw1
NSBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyBtX21vZGU7CiB9OwogCisvLyBPYnNlcnZl
cyB0aGUgd29ya2VyIGNvbnRleHQuIEJ5IGtlZXBpbmcgdGhpcyBzZXBhcmF0ZSwgaXQgaXMgZWFz
aWVyIHRvIHZlcmlmeQorLy8gdGhhdCBpdCBvbmx5IGdldHMgZGVsZXRlZCBvbiB0aGUgd29ya2Vy
IGNvbnRleHQgdGhyZWFkIHdoaWNoIGlzIHZlcmlmaWVkIGJ5IH5PYnNlcnZlci4KK2NsYXNzIFdv
cmtlckZpbGVTeXN0ZW1Db250ZXh0T2JzZXJ2ZXIgOiBwdWJsaWMgV2ViQ29yZTo6V29ya2VyQ29u
dGV4dDo6T2JzZXJ2ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFdvcmtlckZp
bGVTeXN0ZW1Db250ZXh0T2JzZXJ2ZXI+IGNyZWF0ZShXb3JrZXJDb250ZXh0KiBjb250ZXh0LCBX
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiBicmlkZ2UpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IFdvcmtlckZpbGVTeXN0ZW1Db250ZXh0T2JzZXJ2ZXIoY29udGV4
dCwgYnJpZGdlKSk7CisgICAgfQorCisgICAgLy8gV29ya2VyQ29udGV4dDo6T2JzZXJ2ZXIgbWV0
aG9kLgorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlTdG9wKCkKKyAgICB7CisgICAgICAgIG1fYnJp
ZGdlLT5zdG9wKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFdvcmtlckZpbGVTeXN0ZW1Db250
ZXh0T2JzZXJ2ZXIoV29ya2VyQ29udGV4dCogY29udGV4dCwgV29ya2VyRmlsZVN5c3RlbUNhbGxi
YWNrc0JyaWRnZSogYnJpZGdlKQorICAgICAgICA6IFdlYkNvcmU6OldvcmtlckNvbnRleHQ6Ok9i
c2VydmVyKGNvbnRleHQpCisgICAgICAgICwgbV9icmlkZ2UoYnJpZGdlKQorICAgIHsKKyAgICB9
CisKKyAgICAvLyBBbHRob3VnaCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlIG1hbmFn
ZXMgdGhlIGxpZmV0aW1lIG9mIHRoaXMgY2xhc3MsCisgICAgLy8gc28gV29ya2VyRmlsZVN5c3Rl
bUNhbGxiYWNrc0JyaWRnZSB3aWxsIGJlIHZhbGlkIHdoaWxlIHRoaXMgY2xhc3MgaXMgYXJvdW5k
LgorICAgIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqIG1fYnJpZGdlOworfTsKKwog
dm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpzdG9wKCkKIHsKICAgICBBU1NF
UlQobV93b3JrZXJDb250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7Ci0gICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fbXV0ZXgpOwotICAgIG1fd29ya2VyTG9hZGVyUHJveHkgPSAwOworICAgIHsKKyAg
ICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9hZGVyUHJveHlNdXRleCk7CisgICAgICAgIG1f
d29ya2VyTG9hZGVyUHJveHkgPSAwOworICAgIH0KIAotICAgIGlmIChtX2NhbGxiYWNrc09uV29y
a2VyVGhyZWFkKSB7CisgICAgaWYgKG1fY2FsbGJhY2tzT25Xb3JrZXJUaHJlYWQpCiAgICAgICAg
IG1fY2FsbGJhY2tzT25Xb3JrZXJUaHJlYWQtPmRpZEZhaWwoV2ViRmlsZUVycm9yQWJvcnQpOwot
ICAgICAgICBtX2NhbGxiYWNrc09uV29ya2VyVGhyZWFkID0gMDsKKworICAgIGNsZWFuVXBBZnRl
ckNhbGxiYWNrKCk7Cit9CisKK3ZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6
Y2xlYW5VcEFmdGVyQ2FsbGJhY2soKQoreworICAgIEFTU0VSVChtX3dvcmtlckNvbnRleHQtPmlz
Q29udGV4dFRocmVhZCgpKTsKKworICAgIG1fY2FsbGJhY2tzT25Xb3JrZXJUaHJlYWQgPSAwOwor
ICAgIGlmIChtX3dvcmtlckNvbnRleHRPYnNlcnZlcikgeworICAgICAgICBkZWxldGUgbV93b3Jr
ZXJDb250ZXh0T2JzZXJ2ZXI7CisgICAgICAgIG1fd29ya2VyQ29udGV4dE9ic2VydmVyID0gMDsK
ICAgICB9CiB9CiAKQEAgLTM5NCw4ICs0MzQsMTEgQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlOjpydW5UYXNrT25Xb3JrZXJUaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3UK
ICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVChicmlkZ2UtPm1fd29ya2VyQ29udGV4dC0+aXND
b250ZXh0VGhyZWFkKCkpOwogICAgIHRhc2tUb1J1bi0+cGVyZm9ybVRhc2soc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCk7Ci0gICAgYnJpZGdlLT5tX2NhbGxiYWNrc09uV29ya2VyVGhyZWFkID0gMDsK
LSAgICBicmlkZ2UtPnN0b3BPYnNlcnZpbmcoKTsKKworICAgIC8vIHRhc2tUb1J1biBkb2VzIHRo
ZSBjYWxsYmFjay4KKyAgICBicmlkZ2UtPmNsZWFuVXBBZnRlckNhbGxiYWNrKCk7CisKKyAgICAv
LyBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlIG1heSBiZSBkZWxldGVkIGhlcmUgd2hl
biBicmlkZ2UgZ29lcyBvdXQgb2Ygc2NvcGUuCiB9CiAKIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNh
bGxiYWNrc0JyaWRnZTo6ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKFBhc3NPd25QdHI8V2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaykKQEAgLTQxMyw5ICs0NTYsMTEg
QEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjptYXlQb3N0VGFza1RvV29y
a2VyKFBhc3NPd25QdHI8U2NyaXB0RXhlY3UKICAgICAvLyBpbiB0aGUgZGVzdHJ1Y3Rpb24gb2Yg
V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSwgdGhlIG9yZGVyaW5nIG9mIHRoZSBSZWZQ
dHIgYW5kIHRoZSBNdXRleExvY2tlcgogICAgIC8vIGlzIHZlcnkgaW1wb3J0YW50LCB0byBlbnN1
cmUgdGhhdCB0aGUgbV9tdXRleCBpcyBzdGlsbCB2YWxpZCB3aGVuIGl0IGdldHMgdW5sb2NrZWQu
KQogICAgIFJlZlB0cjxXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiBicmlkZ2UgPSBh
ZG9wdFJlZih0aGlzKTsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7CisgICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fbG9hZGVyUHJveHlNdXRleCk7CiAgICAgaWYgKG1fd29ya2VyTG9h
ZGVyUHJveHkpCiAgICAgICAgIG1fd29ya2VyTG9hZGVyUHJveHktPnBvc3RUYXNrRm9yTW9kZVRv
V29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJnJ1blRhc2tPbldvcmtlclRocmVhZCwg
YnJpZGdlLCB0YXNrKSwgbW9kZSk7CisKKyAgICAvLyBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tz
QnJpZGdlIG1heSBiZSBkZWxldGVkIGhlcmUgd2hlbiBicmlkZ2UgZ29lcyBvdXQgb2Ygc2NvcGUu
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuaAppbmRl
eCA5YzQ0Y2IxYTk3NmU4ZDY1MmUwNjA0ZmM2MWU3MGE5MmUzYTJlZGU5Li5hMTcyNWQwN2JmNTQ4
NDdhZDVkMzJiNmM2ZTY2YmQ0YjcwNmFjM2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiV2ViRmlsZUVycm9yLmgiCiAjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZlY3Rvci5o
IgotI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5o
PgpAQCAtNTQsMTAgKzUzLDExIEBAIGNsYXNzIE1haW5UaHJlYWRGaWxlU3lzdGVtQ2FsbGJhY2tz
OwogY2xhc3MgV2ViQ29tbW9uV29ya2VyQ2xpZW50OwogY2xhc3MgVGhyZWFkYWJsZUNhbGxiYWNr
c0JyaWRnZVdyYXBwZXI7CiBjbGFzcyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOworY2xhc3MgV29y
a2VyRmlsZVN5c3RlbUNvbnRleHRPYnNlcnZlcjsKIHN0cnVjdCBXZWJGaWxlSW5mbzsKIHN0cnVj
dCBXZWJGaWxlU3lzdGVtRW50cnk7CiAKLS8vIFRoaXMgY2xhc3MgaXMgdXNlZCB0byBwb3N0IGEg
b3BlbkZpbGVTeXN0ZW0gcmVxdWVzdCB0byB0aGUgbWFpbiB0aHJlYWQgYW5kIGdldCBjYWxsZWQg
YmFjayBmb3IgdGhlIHJlcXVlc3QuIFRoaXMgbXVzdCBiZSBkZXN0cnVjdGVkIG9uIHRoZSB3b3Jr
ZXIgdGhyZWFkLgorLy8gVXNlZCB0byBwb3N0IGEgb3BlbkZpbGVTeXN0ZW0gcmVxdWVzdCB0byB0
aGUgbWFpbiB0aHJlYWQgYW5kIGdldCBjYWxsZWQgYmFjayBmb3IgdGhlIHJlcXVlc3QuCiAvLwog
Ly8gQSB0eXBpY2FsIGZsb3cgZm9yIG9wZW5GaWxlU3lzdGVtIHdvdWxkIGxvb2sgbGlrZSB0aGlz
OgogLy8gQnJpZGdlOjpwb3N0T3BlbkZpbGVTeXN0ZW1Ub01haW5UaHJlYWQoKSBvbiBXb3JrZXJU
aHJlYWQKQEAgLTY5LDE2ICs2OSw4IEBAIHN0cnVjdCBXZWJGaWxlU3lzdGVtRW50cnk7CiAvLyAg
LS0+IEJyaWRnZTo6ZGlkWHh4T25Xb3JrZXJUaHJlYWQgaXMgY2FsbGVkIG9uIFdvcmtlclRocmVh
ZAogLy8gICAgICBUaGlzIGNhbGxzIHRoZSBvcmlnaW5hbCBjYWxsYmFja3MgKG1fY2FsbGJhY2tz
T25Xb3JrZXJUaHJlYWQpIGFuZAogLy8gICAgICByZWxlYXNlcyBhIHNlbGYtcmVmZXJlbmNlIHRv
IHRoZSBicmlkZ2UuCi1jbGFzcyBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+
LCBwdWJsaWMgV2ViQ29yZTo6V29ya2VyQ29udGV4dDo6T2JzZXJ2ZXIgeworY2xhc3MgV29ya2Vy
RmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxX
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiB7CiBwdWJsaWM6Ci0gICAgfldvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UoKTsKLQotICAgIC8vIFdvcmtlckNvbnRleHQ6Ok9ic2Vy
dmVyIG1ldGhvZC4KLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5U3RvcCgpCi0gICAgewotICAgICAg
ICBzdG9wKCk7Ci0gICAgfQotCiAgICAgdm9pZCBzdG9wKCk7CiAKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiBjcmVhdGUoV2ViQ29yZTo6V29y
a2VyTG9hZGVyUHJveHkqIHdvcmtlckxvYWRlclByb3h5LCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiB3b3JrZXJDb250ZXh0LCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFj
a3MpCkBAIC0xMDcsNyArOTksMTAgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVhZERpcmVjdG9y
eU9uTWFpblRocmVhZChjb25zdCBXZWJWZWN0b3I8V2ViRmlsZVN5c3RlbUVudHJ5PiYsIGJvb2wg
aGFzTW9yZSwgY29uc3QgU3RyaW5nJiBtb2RlKTsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xh
c3MgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT47
CisKICAgICBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKFdlYkNvcmU6Oldvcmtlckxv
YWRlclByb3h5KiwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0
ZW1DYWxsYmFja3MqKTsKKyAgICB+V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSgpOwog
CiAgICAgLy8gTWV0aG9kcyB0aGF0IGFyZSB0byBiZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFk
LgogICAgIHN0YXRpYyB2b2lkIG9wZW5GaWxlU3lzdGVtT25NYWluVGhyZWFkKFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJDb21tb25Xb3JrZXJDbGllbnQqLCBXZWJGaWxlU3lz
dGVtOjpUeXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIFdvcmtlckZpbGVTeXN0ZW1D
YWxsYmFja3NCcmlkZ2UqLCBjb25zdCBTdHJpbmcmIG1vZGUpOwpAQCAtMTM3LDEwICsxMzIsMTYg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChQYXNzT3duUHRy
PFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KTsKICAgICB2b2lkIG1heVBv
c3RUYXNrVG9Xb3JrZXIoUGFzc093blB0cjxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrPiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKIAotICAgIE11dGV4IG1fbXV0ZXg7CisgICAg
dm9pZCBjbGVhblVwQWZ0ZXJDYWxsYmFjaygpOworCisgICAgTXV0ZXggbV9sb2FkZXJQcm94eU11
dGV4OwogICAgIFdlYkNvcmU6OldvcmtlckxvYWRlclByb3h5KiBtX3dvcmtlckxvYWRlclByb3h5
OworCiAgICAgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV93b3JrZXJDb250ZXh0
OwogCisgICAgLy8gTXVzdCBiZSBkZWxldGVkIG9uIHRoZSBXb3JrZXJDb250ZXh0IHRocmVhZC4K
KyAgICBXb3JrZXJGaWxlU3lzdGVtQ29udGV4dE9ic2VydmVyKiBtX3dvcmtlckNvbnRleHRPYnNl
cnZlcjsKKwogICAgIC8vIFRoaXMgaXMgc2VsZi1kZXN0cnVjdGVkIGFuZCBtdXN0IGJlIGZpcmVk
IG9uIHRoZSB3b3JrZXIgdGhyZWFkLgogICAgIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqIG1fY2Fs
bGJhY2tzT25Xb3JrZXJUaHJlYWQ7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121174</attachid>
            <date>2012-01-04 15:27:43 -0800</date>
            <delta_ts>2012-01-04 16:33:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74666-20120104152742.patch</filename>
            <type>text/plain</type>
            <size>15196</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0MDYwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTUyODE2NzRlNjE2OGQ0MDRjMmU5
OTBkYTYwN2IyNjQ5NTA3NmNiMi4uZTA5ZjJjNmUwYWVjZGEyMmI4ZDliZWZkYzliMzExMzkwODEw
ODllOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAxLTA0ICBEYXZpZCBMZXZpbiAgPGxl
dmluQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEZpbGVTeXN0ZW0gYnJpZGdl
IG5lZWRzIHRocmVhZHNhZmUgZml4ZXMgYW5kIG90aGVyIGNsZWFuLXVwLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ2NjYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVzZSBhcmUgdGhlIHRlc3RzIGZv
ciBhbGwgb2YgdGhlIGZpeGVzIGRvbmUuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMv
cmVzb3VyY2VzL29wZW4tZGF0YWJhc2Utc3luYy5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3dvcmtlcnMvcmVzb3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qczogQWRkZWQuCisgICAg
ICAgIChyZW1vdmVBbGxJbkRpcmVjdG9yeVN5bmMpOgorICAgICAgICAob25tZXNzYWdlKToKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvdGVybWluYXRlLWR1cmluZy1zeW5jLW9wZXJhdGlv
bi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy90ZXJt
aW5hdGUtZHVyaW5nLXN5bmMtb3BlcmF0aW9uLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dvcmtlcnMvaW50ZXJydXB0LWRhdGFiYXNlLXN5bmMtb3Blbi1jcmFzaC5o
dG1sLXNraXBwZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlv
bnMudHh0OgorCiAyMDEyLTAxLTA0ICBBbHBoYSBMYW0gIDxoY2xhbUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgTm90IHJldmlld2VkLiBVcGRhdGUgQ2hyb21pdW0gcG9ydCB0ZXN0IGV4cGVjdGF0
aW9ucy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9pbnRlcnJ1
cHQtZGF0YWJhc2Utc3luYy1vcGVuLWNyYXNoLmh0bWwtc2tpcHBlZCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd29ya2Vycy9pbnRlcnJ1cHQtZGF0YWJhc2Utc3luYy1vcGVuLWNyYXNoLmh0bWwt
c2tpcHBlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU1NTcyNjcyYjliNzgxZmEz
NWQ0NGRhYmE2ZmYxMTBhN2Y3ZjA3Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvaW50ZXJydXB0LWRh
dGFiYXNlLXN5bmMtb3Blbi1jcmFzaC5odG1sLXNraXBwZWQKKysrIC9kZXYvbnVsbApAQCAtMSw3
NiArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9J3Jlc291cmNlcy93b3JrZXIt
dXRpbC5qcyc+PC9zY3JpcHQ+Ci08c2NyaXB0PgotdmFyIHdvcmtlcnNTdGFydGVkOwotdmFyIHdv
cmtlcnNDbG9zZWQ7Ci0KLS8vIERvIHRoZSB0ZXN0IDEwIHRpbWVzIGJlY2F1c2UgdGhlIGNyYXNo
IGRpZG4ndCBoYXBwZW4gZXZlcnkgdGltZSwgYnV0Ci0vLyBpdCBoYXBwZW4gd2l0aCBhIGhpZ2gg
ZGVncmVlIG9mIGNvbmZpZGVuY2UgaW4gMTAgaXRlcmF0aW9ucy4KLXZhciByZW1haW5pbmdJdGVy
YXRpb25zID0gMTA7Ci0vLyAzMCB3b3JrZXJzIHNlZW1lZCB0byBjYXVzZSB0aGUgY3Jhc2ggdG8g
aGFwcGVuIGZyZXF1ZW50bHkuCi12YXIgd29ya2VycyA9IG5ldyBBcnJheSgzMCk7Ci0KLWZ1bmN0
aW9uIG5leHRJdGVyYXRpb24oKQotewotICAgIGxvZygnUmVtYWluaW5nIGl0ZXJhdGlvbnM6ICcg
KyAgcmVtYWluaW5nSXRlcmF0aW9ucyk7Ci0gICAgd2FpdFVudGlsV29ya2VyVGhyZWFkc0V4aXQo
c3RhcnRXb3JrZXJzKQotfQotCi1mdW5jdGlvbiBzdGFydFdvcmtlcnMoKQotewotICAgIGlmICgh
cmVtYWluaW5nSXRlcmF0aW9ucykgewotICAgICAgICBkb25lKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgcmVtYWluaW5nSXRlcmF0aW9ucy0tOwotCi0gICAgd29ya2Vyc1N0YXJ0ZWQg
PSAwOwotICAgIHdvcmtlcnNDbG9zZWQgPSAwOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgd29y
a2Vycy5sZW5ndGg7ICsraSkgewotICAgICAgICB3b3JrZXJzW2ldID0gbmV3IFdvcmtlcigncmVz
b3VyY2VzL29wZW4tZGF0YWJhc2Utc3luYy5qcz9hcmc9JyArIGkpCi0gICAgICAgIHdvcmtlcnNb
aV0ub25tZXNzYWdlID0gd2FpdEZvckFsbFdvcmtlcnNUb1N0YXJ0OwotICAgIH0KLX0KLQotLy8g
RG8gb3VyIGJlc3QgdG8gdHJ5IHRvIGludGVycnVwdCB0aGUgZGF0YWJzZSBvcGVuCi0vLyBjYWxs
IGJ5IHdhaXRpbmcgZm9yIHRoZSB3b3JrZXIgdG8gc3RhcnQgYW5kIHRoZW4KLS8vIHRlbGxpbmcg
aXQgdG8gZG8gdGhlIG9wZW4gZGF0YWJhc2UgY2FsbCAoYW5kCi0vLyB0aGVuIHRlcm1pbmF0ZSB0
aGUgd29ya2VyKS4KLWZ1bmN0aW9uIHdhaXRGb3JBbGxXb3JrZXJzVG9TdGFydCgpCi17Ci0gICAg
d29ya2Vyc1N0YXJ0ZWQrKzsKLSAgICBpZiAod29ya2Vyc1N0YXJ0ZWQgPCB3b3JrZXJzLmxlbmd0
aCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB3b3JrZXJzLmxl
bmd0aDsgKytpKQotICAgICAgICB3b3JrZXJzW2ldLnBvc3RNZXNzYWdlKCdvcGVuRGF0YWJhc2VT
eW5jJyk7Ci0KLSAgICBzZXRUaW1lb3V0KCdjbG9zZVdvcmtlcigpJywgMCk7Ci19Ci0KLWZ1bmN0
aW9uIGNsb3NlV29ya2VyKCkKLXsKLSAgICB3b3JrZXJzW3dvcmtlcnNDbG9zZWRdLnRlcm1pbmF0
ZSgpOwotICAgIHdvcmtlcnNDbG9zZWQrKzsKLSAgICBpZiAod29ya2Vyc0Nsb3NlZCA8IHdvcmtl
cnMubGVuZ3RoKQotICAgICAgICBzZXRUaW1lb3V0KCdjbG9zZVdvcmtlcigpJywgMyk7Ci0gICAg
ZWxzZQotICAgICAgICBuZXh0SXRlcmF0aW9uKCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3QoKQot
ewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7Ci0gICAgfQotICAgIG5leHRJdGVyYXRpb24oKTsKLX0KLTwvc2Ny
aXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSdydW5UZXN0KCknPgotPGRpdiBpZD0ncmVzdWx0
Jz4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93b3JrZXJzL3Jlc291cmNlcy9vcGVuLWRhdGFiYXNlLXN5bmMuanMgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvcmVzb3VyY2VzL29wZW4tZGF0YWJhc2Utc3luYy5qcwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWU3YmU5NDFiZTk0MzIwYTZmM2E5ZjczYzcy
MjIwMzYwYzY2NjU1ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvcmVzb3VyY2VzL29wZW4tZGF0YWJh
c2Utc3luYy5qcworKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotcG9zdE1lc3NhZ2UoJ3N0
YXJ0ZWQnKTsKLQotb25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KQotewotICAgIGlmIChldnQuZGF0
YSA9PSAnb3BlbkRhdGFiYXNlU3luYycpCi0gICAgICAgIG9wZW5EYXRhYmFzZVN5bmMoJycsICcn
LCAnJywgMSk7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMv
cmVzb3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29y
a2Vycy9yZXNvdXJjZXMvc3luYy1vcGVyYXRpb25zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1OTQyM2Q2YjRi
MmE2ZjM4MDgwMjAxMGUwYjk4NzhlZjdmM2QyZDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvcmVzb3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qcwpAQCAt
MCwwICsxLDczIEBACitmdW5jdGlvbiByZW1vdmVBbGxJbkRpcmVjdG9yeVN5bmMoZGlyZWN0b3J5
KQoreworICAgIGlmICghZGlyZWN0b3J5KQorICAgICAgICByZXR1cm47CisgICAgdmFyIHJlYWRl
ciA9IGRpcmVjdG9yeS5jcmVhdGVSZWFkZXIoKTsKKyAgICBkbyB7CisgICAgICAgIHZhciBlbnRy
aWVzID0gcmVhZGVyLnJlYWRFbnRyaWVzKCk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
ZW50cmllcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKGVudHJpZXNbaV0uaXNEaXJl
Y3RvcnkpCisgICAgICAgICAgICAgICAgZW50cmllc1tpXS5yZW1vdmVSZWN1cnNpdmVseSgpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGVudHJpZXNbaV0ucmVtb3ZlKCk7Cisg
ICAgICAgIH0KKyAgICB9IHdoaWxlIChlbnRyaWVzLmxlbmd0aCk7Cit9CisKK29ubWVzc2FnZSA9
IGZ1bmN0aW9uKGV2dCkKK3sKKyAgICB0cnkgeworCS8vIEluY3JlYXNlIHRoZSBjaGFuZ2Ugb2Yg
Z2V0dGluZyBjYXVnaHQgZG9pbmcgYSBzeW5jIG9wZXJhdGlvbgorCS8vIGJ5IHJlcGVhdGluZyB0
aGUgb3ByYXRpb24gbXVsdGlwbGUgdGltZXMuCisJZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgKytp
KSB7CisgICAgICAgICAgICBpZiAoZXZ0LmRhdGEgPT0gJ29wZW5EYXRhYmFzZVN5bmMnKQorCQlv
cGVuRGF0YWJhc2VTeW5jKCcnLCAnJywgJycsIDEpOworICAgICAgICAgICAgZWxzZSBpZiAoZXZ0
LmRhdGEgPT0gJ3JlcXVlc3RGaWxlU3lzdGVtU3luYycpIHsKKwkJaWYgKCF0aGlzLndlYmtpdFJl
cXVlc3RGaWxlU3lzdGVtU3luYykKKwkJICAgIHJldHVybjsKKwkJd2Via2l0UmVxdWVzdEZpbGVT
eXN0ZW1TeW5jKHRoaXMuVEVNUE9SQVJZLCAxMDApOworCSAgICB9IGVsc2UgaWYgKGV2dC5kYXRh
ID09ICdmaWxlU3luY09wZXJhdGlvbnMnKSB7CisJCWlmICghdGhpcy53ZWJraXRSZXF1ZXN0Rmls
ZVN5c3RlbVN5bmMpCisJCSAgICByZXR1cm47CisJCS8vIERvIG1hbnkgZGlmZmVyZW50IHN5bmMg
ZmlsZXN5c3RlbSBvcGVyYXRpb25zLiBJZiB0aGlzIHN0YXJ0cyBjcmFzaGluZywKKwkJLy8gdGhl
biBhIHNpbXBsZSBpbnZlc3RpZ2F0aW9uIHdvdWxkIGJlIHRvIGlzb2xhdGUgdGhlc2UgY29tbWFu
ZHMuCisJCXZhciBmaWxlU3lzdGVtID0gd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW1TeW5jKHRoaXMu
VEVNUE9SQVJZLCAxMDApOworCisJCXJlbW92ZUFsbEluRGlyZWN0b3J5U3luYyhmaWxlU3lzdGVt
LnJvb3QpOworCisJCS8vIFN0YWdlIDEgKHByZXBhcmUpCisJCXZhciBhID0gZmlsZVN5c3RlbS5y
b290LmdldEZpbGUoJ2EnLCB7Y3JlYXRlOnRydWV9KTsKKwkJdmFyIGIgPSBmaWxlU3lzdGVtLnJv
b3QuZ2V0RGlyZWN0b3J5KCdiJywge2NyZWF0ZTp0cnVlfSk7CisJCXZhciBjID0gZmlsZVN5c3Rl
bS5yb290LmdldERpcmVjdG9yeSgnYycsIHtjcmVhdGU6dHJ1ZX0pOworCQl2YXIgZCA9IGZpbGVT
eXN0ZW0ucm9vdC5nZXRGaWxlKCdkJywge2NyZWF0ZTp0cnVlfSk7CisKKwkJLy8gU3RhZ2UgMiAo
dGVzdCkKKwkJdmFyIGFfY29weSA9IGEuY29weVRvKGIsICd0bXAnKTsKKwkJdmFyIG1ldGFkYXRh
ID0gYS5nZXRNZXRhZGF0YSgpOworCQl2YXIgYl9wYXJlbnQgPSBiLmdldFBhcmVudCgpOworCQl2
YXIgY19jb3B5ID0gYy5jb3B5VG8oZmlsZVN5c3RlbS5yb290LCAnZicpOworCQl2YXIgZF9uZXcg
PSBkLm1vdmVUbyhmaWxlU3lzdGVtLnJvb3QsICdkMicpOworCQl2YXIgZSA9IGZpbGVTeXN0ZW0u
cm9vdC5nZXRGaWxlKCdlJywge2NyZWF0ZTp0cnVlfSk7CisKKwkJLy8gVmVyaWZ5CisJCXZhciBy
ZWFkZXIgPSBmaWxlU3lzdGVtLnJvb3QuY3JlYXRlUmVhZGVyKCk7CisJCXZhciBkaXJzQ291bnQg
PSAwOworCQl2YXIgcGF0aHMgPSBbXTsKKwkJZG8geworCQkgICAgdmFyIGVudHJpZXMgPSByZWFk
ZXIucmVhZEVudHJpZXMoKTsKKwkJICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW50cmllcy5sZW5n
dGg7ICsraSkgeworCQkJcGF0aHMucHVzaChlbnRyaWVzW2ldLmZ1bGxQYXRoKTsKKwkJCWlmIChl
bnRyaWVzW2ldLmlzRGlyZWN0b3J5KQorCQkJICAgIGRpcnNDb3VudCsrOworCQkgICAgfQorCQl9
IHdoaWxlIChlbnRyaWVzLmxlbmd0aCk7CisKKwkJcmVtb3ZlQWxsSW5EaXJlY3RvcnlTeW5jKGZp
bGVTeXN0ZW0ucm9vdCk7CisJICAgIH0KKwl9CisgICAgfSBjYXRjaCAoZSkgeworCXJldHVybjsK
KyAgICB9Cit9CisKK3Bvc3RNZXNzYWdlKCdzdGFydGVkJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvdGVybWluYXRlLWR1cmluZy1zeW5jLW9wZXJhdGlvbi1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvdGVybWluYXRlLWR1
cmluZy1zeW5jLW9wZXJhdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTEyYmQyYTQwZDA5
YmYzYzRjMmZmOTQ2Y2U3NmJmOTI1ZmNiYTEwOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd29ya2Vycy90ZXJtaW5hdGUtZHVyaW5nLXN5bmMtb3BlcmF0aW9uLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5NiBAQAorU3RhcnRpbmcgdGVzdCBydW4uCitXYWl0aW5n
IGZvciBhbGwgd29ya2VycyB0byBleGl0LgorVGVzdGluZyBpbnRlcnJ1cHRpbmc6IG9wZW5EYXRh
YmFzZVN5bmMKK1N0YXJ0aW5nIHdvcmtlcnMuCitTdGFydGVkIHdvcmtlciBjb3VudDogMQorU3Rh
cnRlZCB3b3JrZXIgY291bnQ6IDIKK1N0YXJ0ZWQgd29ya2VyIGNvdW50OiAzCitTdGFydGVkIHdv
cmtlciBjb3VudDogNAorU3RhcnRlZCB3b3JrZXIgY291bnQ6IDUKK1N0YXJ0ZWQgd29ya2VyIGNv
dW50OiA2CitTdGFydGVkIHdvcmtlciBjb3VudDogNworU3RhcnRlZCB3b3JrZXIgY291bnQ6IDgK
K1N0YXJ0ZWQgd29ya2VyIGNvdW50OiA5CitTdGFydGVkIHdvcmtlciBjb3VudDogMTAKK1N0YXJ0
ZWQgd29ya2VyIGNvdW50OiAxMQorU3RhcnRlZCB3b3JrZXIgY291bnQ6IDEyCitTdGFydGVkIHdv
cmtlciBjb3VudDogMTMKK1N0YXJ0ZWQgd29ya2VyIGNvdW50OiAxNAorU3RhcnRlZCB3b3JrZXIg
Y291bnQ6IDE1CitTdGFydGVkIHdvcmtlciBjb3VudDogMTYKK1N0YXJ0ZWQgd29ya2VyIGNvdW50
OiAxNworU3RhcnRlZCB3b3JrZXIgY291bnQ6IDE4CitTdGFydGVkIHdvcmtlciBjb3VudDogMTkK
K1N0YXJ0ZWQgd29ya2VyIGNvdW50OiAyMAorU3RhcnRlZCB3b3JrZXIgY291bnQ6IDIxCitTdGFy
dGVkIHdvcmtlciBjb3VudDogMjIKK1N0YXJ0ZWQgd29ya2VyIGNvdW50OiAyMworU3RhcnRlZCB3
b3JrZXIgY291bnQ6IDI0CitTdGFydGVkIHdvcmtlciBjb3VudDogMjUKK1N0YXJ0ZWQgd29ya2Vy
IGNvdW50OiAyNgorU3RhcnRlZCB3b3JrZXIgY291bnQ6IDI3CitTdGFydGVkIHdvcmtlciBjb3Vu
dDogMjgKK1N0YXJ0ZWQgd29ya2VyIGNvdW50OiAyOQorU3RhcnRlZCB3b3JrZXIgY291bnQ6IDMw
CitSdW5uaW5nIG9wZXJhdGlvbi4KK0Nsb3NlZCB3b3JrZXIgY291bnQ6IDEKK0Nsb3NlZCB3b3Jr
ZXIgY291bnQ6IDIKK0Nsb3NlZCB3b3JrZXIgY291bnQ6IDMKK0Nsb3NlZCB3b3JrZXIgY291bnQ6
IDQKK0Nsb3NlZCB3b3JrZXIgY291bnQ6IDUKK0Nsb3NlZCB3b3JrZXIgY291bnQ6IDYKK0Nsb3Nl
ZCB3b3JrZXIgY291bnQ6IDcKK0Nsb3NlZCB3b3JrZXIgY291bnQ6IDgKK0Nsb3NlZCB3b3JrZXIg
Y291bnQ6IDkKK0Nsb3NlZCB3b3JrZXIgY291bnQ6IDEwCitDbG9zZWQgd29ya2VyIGNvdW50OiAx
MQorQ2xvc2VkIHdvcmtlciBjb3VudDogMTIKK0Nsb3NlZCB3b3JrZXIgY291bnQ6IDEzCitDbG9z
ZWQgd29ya2VyIGNvdW50OiAxNAorQ2xvc2VkIHdvcmtlciBjb3VudDogMTUKK0Nsb3NlZCB3b3Jr
ZXIgY291bnQ6IDE2CitDbG9zZWQgd29ya2VyIGNvdW50OiAxNworQ2xvc2VkIHdvcmtlciBjb3Vu
dDogMTgKK0Nsb3NlZCB3b3JrZXIgY291bnQ6IDE5CitDbG9zZWQgd29ya2VyIGNvdW50OiAyMAor
Q2xvc2VkIHdvcmtlciBjb3VudDogMjEKK0Nsb3NlZCB3b3JrZXIgY291bnQ6IDIyCitDbG9zZWQg
d29ya2VyIGNvdW50OiAyMworQ2xvc2VkIHdvcmtlciBjb3VudDogMjQKK0Nsb3NlZCB3b3JrZXIg
Y291bnQ6IDI1CitDbG9zZWQgd29ya2VyIGNvdW50OiAyNgorQ2xvc2VkIHdvcmtlciBjb3VudDog
MjcKK0Nsb3NlZCB3b3JrZXIgY291bnQ6IDI4CitDbG9zZWQgd29ya2VyIGNvdW50OiAyOQorQ2xv
c2VkIHdvcmtlciBjb3VudDogMzAKK1dhaXRpbmcgZm9yIGFsbCB3b3JrZXJzIHRvIGV4aXQuCitU
ZXN0aW5nIGludGVycnVwdGluZzogcmVxdWVzdEZpbGVTeXN0ZW1TeW5jCitTdGFydGluZyB3b3Jr
ZXJzLgorU3RhcnRlZCB3b3JrZXIgY291bnQ6IDEKK1N0YXJ0ZWQgd29ya2VyIGNvdW50OiAyCitT
dGFydGVkIHdvcmtlciBjb3VudDogMworU3RhcnRlZCB3b3JrZXIgY291bnQ6IDQKK1N0YXJ0ZWQg
d29ya2VyIGNvdW50OiA1CitTdGFydGVkIHdvcmtlciBjb3VudDogNgorU3RhcnRlZCB3b3JrZXIg
Y291bnQ6IDcKK1N0YXJ0ZWQgd29ya2VyIGNvdW50OiA4CitTdGFydGVkIHdvcmtlciBjb3VudDog
OQorU3RhcnRlZCB3b3JrZXIgY291bnQ6IDEwCitTdGFydGVkIHdvcmtlciBjb3VudDogMTEKK1N0
YXJ0ZWQgd29ya2VyIGNvdW50OiAxMgorU3RhcnRlZCB3b3JrZXIgY291bnQ6IDEzCitTdGFydGVk
IHdvcmtlciBjb3VudDogMTQKK1N0YXJ0ZWQgd29ya2VyIGNvdW50OiAxNQorU3RhcnRlZCB3b3Jr
ZXIgY291bnQ6IDE2CitTdGFydGVkIHdvcmtlciBjb3VudDogMTcKK1N0YXJ0ZWQgd29ya2VyIGNv
dW50OiAxOAorU3RhcnRlZCB3b3JrZXIgY291bnQ6IDE5CitTdGFydGVkIHdvcmtlciBjb3VudDog
MjAKK1N0YXJ0ZWQgd29ya2VyIGNvdW50OiAyMQorU3RhcnRlZCB3b3JrZXIgY291bnQ6IDIyCitT
dGFydGVkIHdvcmtlciBjb3VudDogMjMKK1N0YXJ0ZWQgd29ya2VyIGNvdW50OiAyNAorU3RhcnRl
ZCB3b3JrZXIgY291bnQ6IDI1CitTdGFydGVkIHdvcmtlciBjb3VudDogMjYKK1N0YXJ0ZWQgd29y
a2VyIGNvdW50OiAyNworU3RhcnRlZCB3b3JrZXIgY291bnQ6IDI4CitTdGFydGVkIHdvcmtlciBj
b3VudDogMjkKK1N0YXJ0ZWQgd29ya2VyIGNvdW50OiAzMAorUnVubmluZyBvcGVyYXRpb24uCitD
bG9zZWQgd29ya2VyIGNvdW50OiAxCitDbG9zZWQgd29ya2VyIGNvdW50OiAyCitDbG9zZWQgd29y
a2VyIGNvdW50OiAzCitDbG9zZWQgd29ya2VyIGNvdW50OiA0CitDbG9zZWQgd29ya2VyIGNvdW50
OiA1CitDbG9zZWQgd29ya2VyIGNvdW50OiA2CitDbG9zZWQgd29ya2VyIGNvdW50OiA3CitDbG9z
ZWQgd29ya2VyIGNvdW50OiA4CitDbG9zZWQgd29ya2VyIGNvdW50OiA5CitDbG9zZWQgd29ya2Vy
IGNvdW50OiAxMAorQ2xvc2VkIHdvcmtlciBjb3VudDogMTEKK0Nsb3NlZCB3b3JrZXIgY291bnQ6
IDEyCitDbG9zZWQgd29ya2VyIGNvdW50OiAxMworQ2xvc2VkIHdvcmtlciBjb3VudDogMTQKK0Ns
b3NlZCB3b3JrZXIgY291bnQ6IDE1CitDbG9zZWQgd29ya2VyIGNvdW50OiAxNgorQ2xvc2VkIHdv
cmtlciBjb3VudDogMTcKK0Nsb3NlZCB3b3JrZXIgY291bnQ6IDE4CitDbG9zZWQgd29ya2VyIGNv
dW50OiAxOQorQ2xvc2VkIHdvcmtlciBjb3VudDogMjAKK0Nsb3NlZCB3b3JrZXIgY291bnQ6IDIx
CitDbG9zZWQgd29ya2VyIGNvdW50OiAyMgorQ2xvc2VkIHdvcmtlciBjb3VudDogMjMKK0Nsb3Nl
ZCB3b3JrZXIgY291bnQ6IDI0CitDbG9zZWQgd29ya2VyIGNvdW50OiAyNQorQ2xvc2VkIHdvcmtl
ciBjb3VudDogMjYKK0Nsb3NlZCB3b3JrZXIgY291bnQ6IDI3CitDbG9zZWQgd29ya2VyIGNvdW50
OiAyOAorQ2xvc2VkIHdvcmtlciBjb3VudDogMjkKK0Nsb3NlZCB3b3JrZXIgY291bnQ6IDMwCitX
YWl0aW5nIGZvciBhbGwgd29ya2VycyB0byBleGl0LgorVGVzdGluZyBpbnRlcnJ1cHRpbmc6IGZp
bGVTeW5jT3BlcmF0aW9ucworU3RhcnRpbmcgd29ya2Vycy4KK1N0YXJ0ZWQgd29ya2VyIGNvdW50
OiAxCitTdGFydGVkIHdvcmtlciBjb3VudDogMgorU3RhcnRlZCB3b3JrZXIgY291bnQ6IDMKK1N0
YXJ0ZWQgd29ya2VyIGNvdW50OiA0CitTdGFydGVkIHdvcmtlciBjb3VudDogNQorU3RhcnRlZCB3
b3JrZXIgY291bnQ6IDYKK1N0YXJ0ZWQgd29ya2VyIGNvdW50OiA3CitTdGFydGVkIHdvcmtlciBj
b3VudDogOAorU3RhcnRlZCB3b3JrZXIgY291bnQ6IDkKK1N0YXJ0ZWQgd29ya2VyIGNvdW50OiAx
MAorU3RhcnRlZCB3b3JrZXIgY291bnQ6IDExCitTdGFydGVkIHdvcmtlciBjb3VudDogMTIKK1N0
YXJ0ZWQgd29ya2VyIGNvdW50OiAxMworU3RhcnRlZCB3b3JrZXIgY291bnQ6IDE0CitTdGFydGVk
IHdvcmtlciBjb3VudDogMTUKK1N0YXJ0ZWQgd29ya2VyIGNvdW50OiAxNgorU3RhcnRlZCB3b3Jr
ZXIgY291bnQ6IDE3CitTdGFydGVkIHdvcmtlciBjb3VudDogMTgKK1N0YXJ0ZWQgd29ya2VyIGNv
dW50OiAxOQorU3RhcnRlZCB3b3JrZXIgY291bnQ6IDIwCitTdGFydGVkIHdvcmtlciBjb3VudDog
MjEKK1N0YXJ0ZWQgd29ya2VyIGNvdW50OiAyMgorU3RhcnRlZCB3b3JrZXIgY291bnQ6IDIzCitT
dGFydGVkIHdvcmtlciBjb3VudDogMjQKK1N0YXJ0ZWQgd29ya2VyIGNvdW50OiAyNQorU3RhcnRl
ZCB3b3JrZXIgY291bnQ6IDI2CitTdGFydGVkIHdvcmtlciBjb3VudDogMjcKK1N0YXJ0ZWQgd29y
a2VyIGNvdW50OiAyOAorU3RhcnRlZCB3b3JrZXIgY291bnQ6IDI5CitTdGFydGVkIHdvcmtlciBj
b3VudDogMzAKK1J1bm5pbmcgb3BlcmF0aW9uLgorQ2xvc2VkIHdvcmtlciBjb3VudDogMQorQ2xv
c2VkIHdvcmtlciBjb3VudDogMgorQ2xvc2VkIHdvcmtlciBjb3VudDogMworQ2xvc2VkIHdvcmtl
ciBjb3VudDogNAorQ2xvc2VkIHdvcmtlciBjb3VudDogNQorQ2xvc2VkIHdvcmtlciBjb3VudDog
NgorQ2xvc2VkIHdvcmtlciBjb3VudDogNworQ2xvc2VkIHdvcmtlciBjb3VudDogOAorQ2xvc2Vk
IHdvcmtlciBjb3VudDogOQorQ2xvc2VkIHdvcmtlciBjb3VudDogMTAKK0Nsb3NlZCB3b3JrZXIg
Y291bnQ6IDExCitDbG9zZWQgd29ya2VyIGNvdW50OiAxMgorQ2xvc2VkIHdvcmtlciBjb3VudDog
MTMKK0Nsb3NlZCB3b3JrZXIgY291bnQ6IDE0CitDbG9zZWQgd29ya2VyIGNvdW50OiAxNQorQ2xv
c2VkIHdvcmtlciBjb3VudDogMTYKK0Nsb3NlZCB3b3JrZXIgY291bnQ6IDE3CitDbG9zZWQgd29y
a2VyIGNvdW50OiAxOAorQ2xvc2VkIHdvcmtlciBjb3VudDogMTkKK0Nsb3NlZCB3b3JrZXIgY291
bnQ6IDIwCitDbG9zZWQgd29ya2VyIGNvdW50OiAyMQorQ2xvc2VkIHdvcmtlciBjb3VudDogMjIK
K0Nsb3NlZCB3b3JrZXIgY291bnQ6IDIzCitDbG9zZWQgd29ya2VyIGNvdW50OiAyNAorQ2xvc2Vk
IHdvcmtlciBjb3VudDogMjUKK0Nsb3NlZCB3b3JrZXIgY291bnQ6IDI2CitDbG9zZWQgd29ya2Vy
IGNvdW50OiAyNworQ2xvc2VkIHdvcmtlciBjb3VudDogMjgKK0Nsb3NlZCB3b3JrZXIgY291bnQ6
IDI5CitDbG9zZWQgd29ya2VyIGNvdW50OiAzMAorV2FpdGluZyBmb3IgYWxsIHdvcmtlcnMgdG8g
ZXhpdC4KK0RPTkUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJz
L3Rlcm1pbmF0ZS1kdXJpbmctc3luYy1vcGVyYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd29ya2Vycy90ZXJtaW5hdGUtZHVyaW5nLXN5bmMtb3BlcmF0aW9uLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNWM3YjdkOWVjMTczMTkyNmZmMzE1Y2NiMTMxZjRhZjIzM2E4NGI1OAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy90ZXJtaW5hdGUtZHVyaW5n
LXN5bmMtb3BlcmF0aW9uLmh0bWwKQEAgLTAsMCArMSw4MSBAQAorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSdyZXNvdXJjZXMvd29ya2VyLXV0aWwuanMnPjwvc2NyaXB0PgorPHNjcmlwdD4K
K3ZhciB3b3JrZXJzU3RhcnRlZDsKK3ZhciB3b3JrZXJzQ2xvc2VkOworCit2YXIgdGVzdE51bWJl
ciA9IC0xOwordmFyIHN5bmNPcGVyYXRpb25UZXN0cyA9IG5ldyBBcnJheSgnb3BlbkRhdGFiYXNl
U3luYycsICdyZXF1ZXN0RmlsZVN5c3RlbVN5bmMnLCAnZmlsZVN5bmNPcGVyYXRpb25zJyk7CisK
Ky8vIDMwIHdvcmtlcnMgc2VlbWVkIHRvIGNhdXNlIHRoZSBjcmFzaCB0byBoYXBwZW4gZnJlcXVl
bnRseS4KK3ZhciB3b3JrZXJzID0gbmV3IEFycmF5KDMwKTsKKworZnVuY3Rpb24gc3RhcnROZXh0
VGVzdCgpCit7CisgICAgdGVzdE51bWJlcisrOworICAgIGxvZygnV2FpdGluZyBmb3IgYWxsIHdv
cmtlcnMgdG8gZXhpdC4nKTsKKyAgICBpZiAodGVzdE51bWJlciA+PSBzeW5jT3BlcmF0aW9uVGVz
dHMubGVuZ3RoKSB7CisgICAgICAgIHdhaXRVbnRpbFdvcmtlclRocmVhZHNFeGl0KGRvbmUpCisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgd2FpdFVudGlsV29ya2VyVGhyZWFkc0V4aXQoc3Rh
cnRXb3JrZXJzKQorfQorCitmdW5jdGlvbiBzdGFydFdvcmtlcnMoKQoreworICAgIGxvZygnVGVz
dGluZyBpbnRlcnJ1cHRpbmc6ICcgKyAgc3luY09wZXJhdGlvblRlc3RzW3Rlc3ROdW1iZXJdKTsK
KyAgICBsb2coJ1N0YXJ0aW5nIHdvcmtlcnMuJyk7CisgICAgd29ya2Vyc1N0YXJ0ZWQgPSAwOwor
ICAgIHdvcmtlcnNDbG9zZWQgPSAwOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgd29ya2Vycy5s
ZW5ndGg7ICsraSkgeworICAgICAgICB3b3JrZXJzW2ldID0gbmV3IFdvcmtlcigncmVzb3VyY2Vz
L3N5bmMtb3BlcmF0aW9ucy5qcz9hcmc9JyArIGkpCisgICAgICAgIHdvcmtlcnNbaV0ub25tZXNz
YWdlID0gb25Xb3JrZXJTdGFydGVkOworICAgIH0KK30KKworLy8gRG8gb3VyIGJlc3QgdG8gdHJ5
IHRvIGludGVycnVwdCB0aGUgZGF0YWJhc2Ugb3BlbgorLy8gY2FsbCBieSB3YWl0aW5nIGZvciB0
aGUgd29ya2VyIHRvIHN0YXJ0IGFuZCB0aGVuCisvLyB0ZWxsaW5nIGl0IHRvIGRvIHRoZSBvcGVu
IGRhdGFiYXNlIGNhbGwgKGFuZAorLy8gdGhlbiB0ZXJtaW5hdGUgdGhlIHdvcmtlcikuCitmdW5j
dGlvbiBvbldvcmtlclN0YXJ0ZWQoKQoreworICAgIHdvcmtlcnNTdGFydGVkKys7CisgICAgbG9n
KCdTdGFydGVkIHdvcmtlciBjb3VudDogJyArIHdvcmtlcnNTdGFydGVkKTsKKyAgICBpZiAod29y
a2Vyc1N0YXJ0ZWQgPCB3b3JrZXJzLmxlbmd0aCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbG9n
KCdSdW5uaW5nIG9wZXJhdGlvbi4nKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHdvcmtlcnMu
bGVuZ3RoOyArK2kpCisgICAgICAgIHdvcmtlcnNbaV0ucG9zdE1lc3NhZ2Uoc3luY09wZXJhdGlv
blRlc3RzW3Rlc3ROdW1iZXJdKTsKKworICAgIHNldFRpbWVvdXQoJ2Nsb3NlV29ya2VyKCknLCAw
KTsKK30KKworZnVuY3Rpb24gY2xvc2VXb3JrZXIoKQoreworICAgIHdvcmtlcnNbd29ya2Vyc0Ns
b3NlZF0udGVybWluYXRlKCk7CisgICAgd29ya2Vyc0Nsb3NlZCsrOworICAgIGxvZygnQ2xvc2Vk
IHdvcmtlciBjb3VudDogJyArIHdvcmtlcnNDbG9zZWQpOworICAgIGlmICh3b3JrZXJzQ2xvc2Vk
IDwgd29ya2Vycy5sZW5ndGgpCisgICAgICAgIHNldFRpbWVvdXQoJ2Nsb3NlV29ya2VyKCknLCAz
KTsKKyAgICBlbHNlCisgICAgICAgIHN0YXJ0TmV4dFRlc3QoKTsKK30KKworZnVuY3Rpb24gcnVu
VGVzdCgpCit7CisgICAgbG9nKCdTdGFydGluZyB0ZXN0IHJ1bi4nKTsKKyAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworICAgIH0KKyAgICBzdGFydE5leHRUZXN0KCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0ncnVuVGVzdCgpJz4KKzxkaXYgaWQ9J3Jlc3VsdCc+Cis8L2Rpdj4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rl
c3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3Rf
ZXhwZWN0YXRpb25zLnR4dAppbmRleCA3OGI5NzZiNmE3NGRlMGM2NzQ0MzkyOTg4YzgwZDQ5ZWNi
NjAyZDQyLi4xMmVmN2VhYzFmOWExYzNkODY5YTc5NmEzNzZiZGQzZWU0YzQzYjhlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0
CkBAIC0xODksNyArMTg5LDcgQEAgQlVHV0s3NDQ2NiA6IGZhc3Qvd29ya2Vycy93b3JrZXItc2Ny
aXB0LWVycm9yLmh0bWwgPSBQQVNTIFRJTUVPVVQgRkFJTAogCiAvLyBUZXN0cyB0aW1pbmcgb3V0
IGJlY2F1c2UgbGF5b3V0VGVzdENvbnRyb2xsZXIud29ya2VyVGhyZWFkQ291bnQgaXMgbm90IGlt
cGxlbWVudGVkIGluIERSVAogQlVHV0s3NDY1MyBTS0lQIDogaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC93b3JrZXJzL2Fib3J0LWV4Y2VwdGlvbi1hc3NlcnQuaHRtbCA9IFRJTUVPVVQKLS8vQlVH
V0s3NDY1MyBTS0lQIDogaHR0cC90ZXN0cy93b3JrZXJzL2ludGVycnVwdC1kYXRhYmFzZS1zeW5j
LW9wZW4tY3Jhc2guaHRtbCA9IFRJTUVPVVQKK0JVR1dLNzQ2NTMgU0tJUCA6IGh0dHAvdGVzdHMv
d29ya2Vycy90ZXJtaW5hdGUtZHVyaW5nLXN5bmMtb3BlcmF0aW9uLmh0bWwgPSBUSU1FT1VUCiBC
VUdXSzc0NjUzIFNLSVAgOiBmYXN0L3dvcmtlcnMvc3RvcmFnZS9pbnRlcnJ1cHQtZGF0YWJhc2Uu
aHRtbCA9IFRJTUVPVVQKIAogQlVHV0s3MTk2OCA6IGZhc3QvZmlsZXMvd29ya2Vycy93b3JrZXIt
YXBwbHktYmxvYi11cmwtdG8teGhyLmh0bWwgPSBURVhUCg==
</data>
<flag name="review"
          id="121590"
          type_id="1"
          status="+"
          setter="dimich"
    />
          </attachment>
      

    </bug>

</bugzilla>