<?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>39324</bug_id>
          
          <creation_ts>2010-05-18 15:27:01 -0700</creation_ts>
          <short_desc>AX: WebKit doesn&apos;t call [super -accessibilityAttributeValue:attribute forParameter:] when it encounters a parameterized attribute that it doesn&apos;t handle.</short_desc>
          <delta_ts>2010-06-01 12:10:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>abarth</cc>
    
    <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>227520</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-05-18 15:27:01 -0700</bug_when>
    <thetext>WebKit doesn&apos;t call [super -accessibilityAttributeValue:attribute forParameter:] when it encounters a parameterized attribute that it doesn&apos;t handle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227527</commentid>
    <comment_count>1</comment_count>
      <attachid>56417</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-05-18 15:46:02 -0700</bug_when>
    <thetext>Created attachment 56417
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227534</commentid>
    <comment_count>2</comment_count>
      <attachid>56417</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-18 16:02:15 -0700</bug_when>
    <thetext>Comment on attachment 56417
patch

&gt; -        // got a parameter of a type we never use
&gt; -        // NOTE: No ASSERT_NOT_REACHED because this can happen accidentally
&gt; -        // while using accesstool (e.g.), forcing you to start over
&gt; -        return nil;
&gt; +        // Default to super if the parameter type is unknown.
&gt; +        return [super accessibilityAttributeValue:attribute forParameter:parameter];

Is this right? It&apos;s a parameter we support, but a type we don&apos;t. I don&apos;t think calling super makes a lot of sense in this case, but I guess it&apos;s harmless.

&gt; -    return nil;
&gt; +    // Default to super if parameter is not supported.
&gt; +    return [super accessibilityAttributeValue:attribute forParameter:parameter];

This seems clearly right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227535</commentid>
    <comment_count>3</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-05-18 16:04:34 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 56417 [details])
&gt; &gt; -        // got a parameter of a type we never use
&gt; &gt; -        // NOTE: No ASSERT_NOT_REACHED because this can happen accidentally
&gt; &gt; -        // while using accesstool (e.g.), forcing you to start over
&gt; &gt; -        return nil;
&gt; &gt; +        // Default to super if the parameter type is unknown.
&gt; &gt; +        return [super accessibilityAttributeValue:attribute forParameter:parameter];
&gt; 
&gt; Is this right? It&apos;s a parameter we support, but a type we don&apos;t. I don&apos;t think calling super makes a lot of sense in this case, but I guess it&apos;s harmless.

At this point, it&apos;s still not clear if its a parameter we support. its only clear that its an unsupported type (but it might be an type supported by super)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228891</commentid>
    <comment_count>4</comment_count>
      <attachid>56417</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-21 07:10:25 -0700</bug_when>
    <thetext>Comment on attachment 56417
patch

Rejecting patch 56417 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--exit-after-n-failures=1&apos;, &apos;--ignore-tests&apos;, &apos;compositing/iframes&apos;, &apos;--quiet&apos;]&quot; exit_code: 1
Running build-dumprendertree
Compiling Java tests
make: Nothing to be done for `default&apos;.
Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
Skipped list contained &apos;compositing/iframes/composited-iframe.html&apos;, but no file of that name could be found
Testing 18369 test cases.
accessibility/aria-tables.html -&gt; crashed

Exiting early after 1 failures. 20 tests run.
171.06s total testing time

19 test cases (95%) succeeded
1 test case (5%) crashed

Full output: http://webkit-commit-queue.appspot.com/results/2276405</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231329</commentid>
    <comment_count>5</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-05-27 09:22:27 -0700</bug_when>
    <thetext>If this causes failure on leopard, I&apos;ll have to see whats the backtrace. 
http://trac.webkit.org/changeset/60307</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231334</commentid>
    <comment_count>6</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-05-27 09:45:17 -0700</bug_when>
    <thetext>it looks like on tiger this idiom doesn&apos;t work as documented</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231335</commentid>
    <comment_count>7</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-05-27 09:46:32 -0700</bug_when>
    <thetext>and on leopard it looks like it crashes. whereas on tiger it times out a few tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231336</commentid>
    <comment_count>8</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-05-27 09:54:09 -0700</bug_when>
    <thetext>working on fix for tiger and leopard...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231340</commentid>
    <comment_count>9</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-05-27 10:00:19 -0700</bug_when>
    <thetext>conferring with appkit that this should not work in leopard and before, but will work going forward</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231349</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-27 10:25:14 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/60307 might have broken Tiger Intel Release
The following changes are on the blame list:
http://trac.webkit.org/changeset/60305
http://trac.webkit.org/changeset/60306
http://trac.webkit.org/changeset/60307
http://trac.webkit.org/changeset/60308</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231351</commentid>
    <comment_count>11</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-05-27 10:26:49 -0700</bug_when>
    <thetext>rolling out
http://trac.webkit.org/changeset/60310
until i have a better fix (which required more code than i thought, so i will open for review again)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231419</commentid>
    <comment_count>12</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-05-27 12:19:23 -0700</bug_when>
    <thetext>here&apos;s the deal

 we want to pass unknown attributes to super. 

However, if an unsupported attribute is passed in it raises an accessibility exception. Normally those are caught by the AX runtime so that it can inform the AX client (like VoiceOver). However, for these failing tests, DRT is the AX client, but its not catching those innocuous errors. 

DRT needs to catch those errors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231495</commentid>
    <comment_count>13</comment_count>
      <attachid>57279</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-05-27 16:05:02 -0700</bug_when>
    <thetext>Created attachment 57279
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231743</commentid>
    <comment_count>14</comment_count>
      <attachid>57279</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-05-28 09:22:10 -0700</bug_when>
    <thetext>Comment on attachment 57279
Patch

i&apos;ll break this up into smaller patches</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231800</commentid>
    <comment_count>15</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-05-28 11:12:33 -0700</bug_when>
    <thetext>with 
https://bugs.webkit.org/show_bug.cgi?id=39880
and
https://bugs.webkit.org/show_bug.cgi?id=39881

fixed, this patch should work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231803</commentid>
    <comment_count>16</comment_count>
      <attachid>57347</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-05-28 11:16:04 -0700</bug_when>
    <thetext>Created attachment 57347
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232860</commentid>
    <comment_count>17</comment_count>
      <attachid>57347</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2010-06-01 11:25:30 -0700</bug_when>
    <thetext>Comment on attachment 57347
Patch

I am going to r+ this, but do you think there is any particular reason why this should be a goto instead of a regular function call? I shy away from using gotos since there aren&apos;t a lot of them in the code, but since we don&apos;t have an official policy, r+ anyway. I would like it if you would answer my question though ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232865</commentid>
    <comment_count>18</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-06-01 11:27:45 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 57347 [details])
&gt; I am going to r+ this, but do you think there is any particular reason why this should be a goto instead of a regular function call? I shy away from using gotos since there aren&apos;t a lot of them in the code, but since we don&apos;t have an official policy, r+ anyway. I would like it if you would answer my question though ;-)

using the goto allowed be to consolidate the comment. i saw a few other uses of goto, so i figured it was acceptable. i&apos;m generally against them as well, but it looked ok here. what do you think about the comment... is it ok just having it at the bottom, despite [super] being called in two places?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232870</commentid>
    <comment_count>19</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2010-06-01 11:32:41 -0700</bug_when>
    <thetext>I think the comment is fine in one place :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232872</commentid>
    <comment_count>20</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-06-01 11:34:17 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; I think the comment is fine in one place :-)

thanx. will make the change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232893</commentid>
    <comment_count>21</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-06-01 12:10:27 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/60496</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56417</attachid>
            <date>2010-05-18 15:46:02 -0700</date>
            <delta_ts>2010-05-27 16:04:57 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>2009</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1OTcxNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMDUtMTggIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBWDogV2ViS2l0IGRvZXNuJ3QgY2FsbCBbc3VwZXIgLWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTphdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOl0gd2hlbiBpdCBlbmNvdW50ZXJzIGEgcGFyYW1l
dGVyaXplZCBhdHRyaWJ1dGUgdGhhdCBpdCBkb2Vzbid0IGhhbmRsZS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5MzI0CisKKyAgICAgICAgTWFrZSBz
dXJlIHRoYXQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOmZvclBhcmFtZXRlcjogd2lsbCBk
ZWZhdWx0IHRvIGl0cyBzdXBlcidzIGltcGxlbWVudGF0aW9uLiBUaGlzIGlzIGhvdyBBcHBLaXQg
ZXhwZWN0cyBvYmplY3RzIHRvIGJlaGF2ZS4gICAgICAgIAorCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW06CisgICAgICAgICgtW0FjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpmb3JQYXJh
bWV0ZXI6XSk6CisKIDIwMTAtMDUtMTggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCkluZGV4OiBXZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0J
KHJldmlzaW9uIDU5NzE2KQorKysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjMyOSwxMCArMjM0NCw4IEBA
IC0gKGlkKWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTooTlNTdHIKICAgICAgICAgcmFuZ2Ug
PSBbKE5TVmFsdWUqKXBhcmFtZXRlciByYW5nZVZhbHVlXTsKIAogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIC8vIGdvdCBhIHBhcmFtZXRlciBvZiBhIHR5cGUgd2UgbmV2ZXIgdXNlCi0gICAgICAgIC8v
IE5PVEU6IE5vIEFTU0VSVF9OT1RfUkVBQ0hFRCBiZWNhdXNlIHRoaXMgY2FuIGhhcHBlbiBhY2Np
ZGVudGFsbHkKLSAgICAgICAgLy8gd2hpbGUgdXNpbmcgYWNjZXNzdG9vbCAoZS5nLiksIGZvcmNp
bmcgeW91IHRvIHN0YXJ0IG92ZXIKLSAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgLy8gRGVm
YXVsdCB0byBzdXBlciBpZiB0aGUgcGFyYW1ldGVyIHR5cGUgaXMgdW5rbm93bi4KKyAgICAgICAg
cmV0dXJuIFtzdXBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6YXR0cmlidXRlIGZvclBh
cmFtZXRlcjpwYXJhbWV0ZXJdOwogICAgIH0KICAgICAKICAgICAvLyBDb252ZXJ0IHZhbHVlcyB0
byBXZWJDb3JlIHR5cGVzCkBAIC0yNTQ0LDcgKzI1NTcsOCBAQCAtIChpZClhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6KE5TU3RyCiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gbmls
OworICAgIC8vIERlZmF1bHQgdG8gc3VwZXIgaWYgcGFyYW1ldGVyIGlzIG5vdCBzdXBwb3J0ZWQu
CisgICAgcmV0dXJuIFtzdXBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6YXR0cmlidXRl
IGZvclBhcmFtZXRlcjpwYXJhbWV0ZXJdOwogfQogCiAtIChCT09MKWFjY2Vzc2liaWxpdHlTaG91
bGRVc2VVbmlxdWVJZAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57279</attachid>
            <date>2010-05-27 16:05:02 -0700</date>
            <delta_ts>2010-05-28 10:48:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39324-20100527160500.patch</filename>
            <type>text/plain</type>
            <size>47872</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDMyNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMDUtMjcgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBWDogV2ViS2l0IGRvZXNuJ3QgY2FsbCBbc3VwZXIgLWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTphdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOl0gd2hlbiBpdCBlbmNvdW50ZXJzIGEgcGFyYW1l
dGVyaXplZCBhdHRyaWJ1dGUgdGhhdCBpdCBkb2Vzbid0IGhhbmRsZS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5MzI0CisKKyAgICAgICAgVGVzdDog
cGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdW5zdXBwb3J0ZWQtYXR0cmlidXRlLWRvZXMtbm90
LWNyYXNoLmh0bWwKKworICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBuZWVkcyB0
byBjYWxsIHN1cGVyIHdoZW4gaXQgcmVjZWl2ZXMgYSBwYXJhbWV0ZXJpemVkIGF0dHJpYnV0ZSBp
dCBkb2Vzbid0IHN1cHBvcnQuIFNpbmNlIHRoZXJlIHdlcmUgdHdvIHBsYWNlcworICAgICAgICBp
biBjb2RlIHRoYXQgbmVlZGVkIHRvIGRvIHRoaXMsIEkgY29uc29saWRhdGVkIHRob3NlIHBsYWNl
cyBhbmQgZml4ZWQgYSBGSVhNRS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyLm1tOgorICAgICAgICAodmlzaWJsZVBvc2l0aW9uRm9yVGV4
dE1hcmtlcik6CisgICAgICAgICgtW0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHZpc2libGVQ
b3NpdGlvblJhbmdlRm9yVGV4dE1hcmtlclJhbmdlOl0pOgorICAgICAgICAoLVtBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6Zm9yUGFyYW1ldGVy
Ol0pOgorCiAyMDEwLTA1LTI3ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCkluZGV4OiBXZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIubW0JKHJldmlzaW9uIDYwMzI2KQorKysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjIwLDYgKzIyMCw5
IEBAIHN0YXRpYyBXZWJDb3JlVGV4dE1hcmtlciogdGV4dE1hcmtlckZvclYKIAogc3RhdGljIFZp
c2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyKFdlYkNvcmVUZXh0TWFy
a2VyKiB0ZXh0TWFya2VyKQogeworICAgIGlmICghdGV4dE1hcmtlcikKKyAgICAgICAgcmV0dXJu
IFZpc2libGVQb3NpdGlvbigpOworICAgIAogICAgIFRleHRNYXJrZXJEYXRhIHRleHRNYXJrZXJE
YXRhOwogICAgIGlmICghW1tXZWJDb3JlVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gZ2V0Qnl0
ZXM6JnRleHRNYXJrZXJEYXRhIGZyb21UZXh0TWFya2VyOnRleHRNYXJrZXIgbGVuZ3RoOnNpemVv
Zih0ZXh0TWFya2VyRGF0YSldKQogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CkBA
IC05NzgsNiArOTgxLDggQEAgLSAoTlNBcnJheSopYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVz
CiAKIC0gKFZpc2libGVQb3NpdGlvblJhbmdlKXZpc2libGVQb3NpdGlvblJhbmdlRm9yVGV4dE1h
cmtlclJhbmdlOihXZWJDb3JlVGV4dE1hcmtlclJhbmdlKikgdGV4dE1hcmtlclJhbmdlCiB7Cisg
ICAgaWYgKCF0ZXh0TWFya2VyUmFuZ2UpCisgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb25S
YW5nZSgpOwogICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSh2aXNpYmxlUG9zaXRpb25G
b3JTdGFydE9mVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSksIHZpc2libGVQb3NpdGlv
bkZvckVuZE9mVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSkpOwogfQogCkBAIC0yMzI3
LDUyICsyMzMyLDQyIEBAIC0gKGlkKWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTooTlNTdHIK
ICAgICB9IGVsc2UgaWYgKFtwYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNWYWx1ZSBzZWxmXV0g
JiYgc3RyY21wKFsoTlNWYWx1ZSopcGFyYW1ldGVyIG9iakNUeXBlXSwgQGVuY29kZShOU1Jhbmdl
KSkgPT0gMCkgewogICAgICAgICByYW5nZVNldCA9IHRydWU7CiAgICAgICAgIHJhbmdlID0gWyhO
U1ZhbHVlKilwYXJhbWV0ZXIgcmFuZ2VWYWx1ZV07Ci0KLSAgICB9IGVsc2UgewotICAgICAgICAv
LyBnb3QgYSBwYXJhbWV0ZXIgb2YgYSB0eXBlIHdlIG5ldmVyIHVzZQotICAgICAgICAvLyBOT1RF
OiBObyBBU1NFUlRfTk9UX1JFQUNIRUQgYmVjYXVzZSB0aGlzIGNhbiBoYXBwZW4gYWNjaWRlbnRh
bGx5Ci0gICAgICAgIC8vIHdoaWxlIHVzaW5nIGFjY2Vzc3Rvb2wgKGUuZy4pLCBmb3JjaW5nIHlv
dSB0byBzdGFydCBvdmVyCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQorICAgIH0gZWxzZQor
ICAgICAgICBnb3RvIGhhbmRsZVVuc3VwcG9ydGVkQXR0cmlidXRlOwogICAgIAotICAgIC8vIENv
bnZlcnQgdmFsdWVzIHRvIFdlYkNvcmUgdHlwZXMKLSAgICAvLyBGSVhNRTogcHJlcHBpbmcgYWxs
IG9mIHRoZXNlIHZhbHVlcyBhcyBXZWJDb3JlIHR5cGVzIGlzIHVubmVjZXNzYXJ5IGluIG1hbnkg
Ci0gICAgLy8gY2FzZXMuIFJlLW9yZ2FuaXphdGlvbiBvZiB0aGlzIGZ1bmN0aW9uIG9yIHBlcmZv
cm1pbmcgdGhlIGNvbnZlcnNpb24gb24gYSAKLSAgICAvLyBuZWVkIGJhc2lzIGFyZSBwb3NzaWJs
ZSBpbXByb3ZlbWVudHMuIAotICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zOwotICAgIGlm
ICh0ZXh0TWFya2VyKQotICAgICAgICB2aXNpYmxlUG9zID0gdmlzaWJsZVBvc2l0aW9uRm9yVGV4
dE1hcmtlcih0ZXh0TWFya2VyKTsKLSAgICBpbnQgaW50TnVtYmVyID0gW251bWJlciBpbnRWYWx1
ZV07Ci0gICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc1JhbmdlOwotICAgIGlmICh0
ZXh0TWFya2VyUmFuZ2UpCi0gICAgICAgIHZpc2libGVQb3NSYW5nZSA9IFtzZWxmIHZpc2libGVQ
b3NpdGlvblJhbmdlRm9yVGV4dE1hcmtlclJhbmdlOnRleHRNYXJrZXJSYW5nZV07Ci0gICAgSW50
UG9pbnQgd2ViQ29yZVBvaW50ID0gSW50UG9pbnQocG9pbnQpOwotICAgIFBsYWluVGV4dFJhbmdl
IHBsYWluVGV4dFJhbmdlID0gUGxhaW5UZXh0UmFuZ2UocmFuZ2UubG9jYXRpb24sIHJhbmdlLmxl
bmd0aCk7Ci0KICAgICAvLyBkaXNwYXRjaAotICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0
cmluZzogQCJBWFVJRWxlbWVudEZvclRleHRNYXJrZXIiXSkKKyAgICBpZiAoW2F0dHJpYnV0ZSBp
c0VxdWFsVG9TdHJpbmc6IEAiQVhVSUVsZW1lbnRGb3JUZXh0TWFya2VyIl0pIHsKKyAgICAgICAg
VmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2Vy
KHRleHRNYXJrZXIpOwogICAgICAgICByZXR1cm4gbV9vYmplY3QtPmFjY2Vzc2liaWxpdHlPYmpl
Y3RGb3JQb3NpdGlvbih2aXNpYmxlUG9zKS0+d3JhcHBlcigpOworICAgIH0KIAogICAgIGlmIChb
YXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzogQCJBWFRleHRNYXJrZXJSYW5nZUZvclVJRWxlbWVu
dCJdKSB7CiAgICAgICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZwUmFuZ2UgPSB1aUVsZW1lbnQu
Z2V0KCktPnZpc2libGVQb3NpdGlvblJhbmdlKCk7CiAgICAgICAgIHJldHVybiAoaWQpdGV4dE1h
cmtlclJhbmdlRnJvbVZpc2libGVQb3NpdGlvbnModnBSYW5nZS5zdGFydCwgdnBSYW5nZS5lbmQp
OwogICAgIH0KIAotICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzogQCJBWExpbmVG
b3JUZXh0TWFya2VyIl0pCisgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOiBAIkFY
TGluZUZvclRleHRNYXJrZXIiXSkgeworICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBv
cyA9IHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXIodGV4dE1hcmtlcik7CiAgICAgICAgIHJl
dHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50Om1fb2JqZWN0LT5saW5lRm9yUG9z
aXRpb24odmlzaWJsZVBvcyldOworICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxU
b1N0cmluZzogQCJBWFRleHRNYXJrZXJSYW5nZUZvckxpbmUiXSkgewotICAgICAgICBWaXNpYmxl
UG9zaXRpb25SYW5nZSB2cFJhbmdlID0gbV9vYmplY3QtPnZpc2libGVQb3NpdGlvblJhbmdlRm9y
TGluZShpbnROdW1iZXIpOworICAgICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2cFJhbmdlID0g
bV9vYmplY3QtPnZpc2libGVQb3NpdGlvblJhbmdlRm9yTGluZShbbnVtYmVyIGludFZhbHVlXSk7
CiAgICAgICAgIHJldHVybiAoaWQpdGV4dE1hcmtlclJhbmdlRnJvbVZpc2libGVQb3NpdGlvbnMo
dnBSYW5nZS5zdGFydCwgdnBSYW5nZS5lbmQpOwogICAgIH0KIAotICAgIGlmIChbYXR0cmlidXRl
IGlzRXF1YWxUb1N0cmluZzogQCJBWFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSJdKQorICAgIGlm
IChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzogQCJBWFN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZSJdKSB7CisgICAgICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NSYW5nZSA9IFtz
ZWxmIHZpc2libGVQb3NpdGlvblJhbmdlRm9yVGV4dE1hcmtlclJhbmdlOnRleHRNYXJrZXJSYW5n
ZV07CiAgICAgICAgIHJldHVybiBtX29iamVjdC0+c3RyaW5nRm9yVmlzaWJsZVBvc2l0aW9uUmFu
Z2UodmlzaWJsZVBvc1JhbmdlKTsKKyAgICB9CiAKLSAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFs
VG9TdHJpbmc6IEAiQVhUZXh0TWFya2VyRm9yUG9zaXRpb24iXSkKKyAgICBpZiAoW2F0dHJpYnV0
ZSBpc0VxdWFsVG9TdHJpbmc6IEAiQVhUZXh0TWFya2VyRm9yUG9zaXRpb24iXSkgeworICAgICAg
ICBJbnRQb2ludCB3ZWJDb3JlUG9pbnQgPSBJbnRQb2ludChwb2ludCk7CiAgICAgICAgIHJldHVy
biBwb2ludFNldCA/IHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb24obV9vYmplY3QtPnZpc2li
bGVQb3NpdGlvbkZvclBvaW50KHdlYkNvcmVQb2ludCkpIDogbmlsOworICAgIH0KIAogICAgIGlm
IChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzogQCJBWEJvdW5kc0ZvclRleHRNYXJrZXJSYW5n
ZSJdKSB7CisgICAgICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NSYW5nZSA9IFtz
ZWxmIHZpc2libGVQb3NpdGlvblJhbmdlRm9yVGV4dE1hcmtlclJhbmdlOnRleHRNYXJrZXJSYW5n
ZV07CiAgICAgICAgIE5TUmVjdCByZWN0ID0gbV9vYmplY3QtPmJvdW5kc0ZvclZpc2libGVQb3Np
dGlvblJhbmdlKHZpc2libGVQb3NSYW5nZSk7CiAgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1
ZVdpdGhSZWN0OnJlY3RdOwogICAgIH0KQEAgLTI0MTMsNzIgKzI0MDgsMTAwIEBAIC0gKGlkKWFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTooTlNTdHIKICAgICAgICAgcmV0dXJuIChpZCl0ZXh0
TWFya2VyUmFuZ2VGcm9tVmlzaWJsZVBvc2l0aW9ucyh2cFJhbmdlLnN0YXJ0LCB2cFJhbmdlLmVu
ZCk7CiAgICAgfQogCi0gICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOiBAIkFYTmV4
dFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIl0pCisgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRv
U3RyaW5nOiBAIkFYTmV4dFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIl0pIHsKKyAgICAgICAgVmlz
aWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyKHRl
eHRNYXJrZXIpOwogICAgICAgICByZXR1cm4gdGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbiht
X29iamVjdC0+bmV4dFZpc2libGVQb3NpdGlvbih2aXNpYmxlUG9zKSk7CisgICAgfQogCi0gICAg
aWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOiBAIkFYUHJldmlvdXNUZXh0TWFya2VyRm9y
VGV4dE1hcmtlciJdKQorICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzogQCJBWFBy
ZXZpb3VzVGV4dE1hcmtlckZvclRleHRNYXJrZXIiXSkgeworICAgICAgICBWaXNpYmxlUG9zaXRp
b24gdmlzaWJsZVBvcyA9IHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXIodGV4dE1hcmtlcik7
CiAgICAgICAgIHJldHVybiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uKG1fb2JqZWN0LT5w
cmV2aW91c1Zpc2libGVQb3NpdGlvbih2aXNpYmxlUG9zKSk7CisgICAgfQogCiAgICAgaWYgKFth
dHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOiBAIkFYTGVmdFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JU
ZXh0TWFya2VyIl0pIHsKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSB2aXNp
YmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyKHRleHRNYXJrZXIpOwogICAgICAgICBWaXNpYmxlUG9z
aXRpb25SYW5nZSB2cFJhbmdlID0gbV9vYmplY3QtPnBvc2l0aW9uT2ZMZWZ0V29yZCh2aXNpYmxl
UG9zKTsKICAgICAgICAgcmV0dXJuIChpZCl0ZXh0TWFya2VyUmFuZ2VGcm9tVmlzaWJsZVBvc2l0
aW9ucyh2cFJhbmdlLnN0YXJ0LCB2cFJhbmdlLmVuZCk7CiAgICAgfQogCiAgICAgaWYgKFthdHRy
aWJ1dGUgaXNFcXVhbFRvU3RyaW5nOiBAIkFYUmlnaHRXb3JkVGV4dE1hcmtlclJhbmdlRm9yVGV4
dE1hcmtlciJdKSB7CisgICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zID0gdmlzaWJs
ZVBvc2l0aW9uRm9yVGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKICAgICAgICAgVmlzaWJsZVBvc2l0
aW9uUmFuZ2UgdnBSYW5nZSA9IG1fb2JqZWN0LT5wb3NpdGlvbk9mUmlnaHRXb3JkKHZpc2libGVQ
b3MpOwogICAgICAgICByZXR1cm4gKGlkKXRleHRNYXJrZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRp
b25zKHZwUmFuZ2Uuc3RhcnQsIHZwUmFuZ2UuZW5kKTsKICAgICB9CiAKICAgICBpZiAoW2F0dHJp
YnV0ZSBpc0VxdWFsVG9TdHJpbmc6IEAiQVhMZWZ0TGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRN
YXJrZXIiXSkgeworICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IHZpc2libGVQ
b3NpdGlvbkZvclRleHRNYXJrZXIodGV4dE1hcmtlcik7CiAgICAgICAgIFZpc2libGVQb3NpdGlv
blJhbmdlIHZwUmFuZ2UgPSBtX29iamVjdC0+bGVmdExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZSh2
aXNpYmxlUG9zKTsKICAgICAgICAgcmV0dXJuIChpZCl0ZXh0TWFya2VyUmFuZ2VGcm9tVmlzaWJs
ZVBvc2l0aW9ucyh2cFJhbmdlLnN0YXJ0LCB2cFJhbmdlLmVuZCk7CiAgICAgfQogCiAgICAgaWYg
KFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOiBAIkFYUmlnaHRMaW5lVGV4dE1hcmtlclJhbmdl
Rm9yVGV4dE1hcmtlciJdKSB7CisgICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zID0g
dmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKICAgICAgICAgVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UgdnBSYW5nZSA9IG1fb2JqZWN0LT5yaWdodExpbmVWaXNpYmxlUG9zaXRp
b25SYW5nZSh2aXNpYmxlUG9zKTsKICAgICAgICAgcmV0dXJuIChpZCl0ZXh0TWFya2VyUmFuZ2VG
cm9tVmlzaWJsZVBvc2l0aW9ucyh2cFJhbmdlLnN0YXJ0LCB2cFJhbmdlLmVuZCk7CiAgICAgfQog
CiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOiBAIkFYU2VudGVuY2VUZXh0TWFy
a2VyUmFuZ2VGb3JUZXh0TWFya2VyIl0pIHsKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2li
bGVQb3MgPSB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyKHRleHRNYXJrZXIpOwogICAgICAg
ICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2cFJhbmdlID0gbV9vYmplY3QtPnNlbnRlbmNlRm9yUG9z
aXRpb24odmlzaWJsZVBvcyk7CiAgICAgICAgIHJldHVybiAoaWQpdGV4dE1hcmtlclJhbmdlRnJv
bVZpc2libGVQb3NpdGlvbnModnBSYW5nZS5zdGFydCwgdnBSYW5nZS5lbmQpOwogICAgIH0KIAog
ICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzogQCJBWFBhcmFncmFwaFRleHRNYXJr
ZXJSYW5nZUZvclRleHRNYXJrZXIiXSkgeworICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJs
ZVBvcyA9IHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXIodGV4dE1hcmtlcik7CiAgICAgICAg
IFZpc2libGVQb3NpdGlvblJhbmdlIHZwUmFuZ2UgPSBtX29iamVjdC0+cGFyYWdyYXBoRm9yUG9z
aXRpb24odmlzaWJsZVBvcyk7CiAgICAgICAgIHJldHVybiAoaWQpdGV4dE1hcmtlclJhbmdlRnJv
bVZpc2libGVQb3NpdGlvbnModnBSYW5nZS5zdGFydCwgdnBSYW5nZS5lbmQpOwogICAgIH0KIAot
ICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzogQCJBWE5leHRXb3JkRW5kVGV4dE1h
cmtlckZvclRleHRNYXJrZXIiXSkKKyAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6
IEAiQVhOZXh0V29yZEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIl0pIHsKKyAgICAgICAgVmlz
aWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyKHRl
eHRNYXJrZXIpOwogICAgICAgICByZXR1cm4gdGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbiht
X29iamVjdC0+bmV4dFdvcmRFbmQodmlzaWJsZVBvcykpOwotCi0gICAgaWYgKFthdHRyaWJ1dGUg
aXNFcXVhbFRvU3RyaW5nOiBAIkFYUHJldmlvdXNXb3JkU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1h
cmtlciJdKQorICAgIH0KKyAgICAKKyAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6
IEAiQVhQcmV2aW91c1dvcmRTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIl0pIHsKKyAgICAg
ICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFy
a2VyKHRleHRNYXJrZXIpOwogICAgICAgICByZXR1cm4gdGV4dE1hcmtlckZvclZpc2libGVQb3Np
dGlvbihtX29iamVjdC0+cHJldmlvdXNXb3JkU3RhcnQodmlzaWJsZVBvcykpOworICAgIH0KIAot
ICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzogQCJBWE5leHRMaW5lRW5kVGV4dE1h
cmtlckZvclRleHRNYXJrZXIiXSkKKyAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6
IEAiQVhOZXh0TGluZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIl0pIHsKKyAgICAgICAgVmlz
aWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyKHRl
eHRNYXJrZXIpOwogICAgICAgICByZXR1cm4gdGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbiht
X29iamVjdC0+bmV4dExpbmVFbmRQb3NpdGlvbih2aXNpYmxlUG9zKSk7CisgICAgfQogCi0gICAg
aWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOiBAIkFYUHJldmlvdXNMaW5lU3RhcnRUZXh0
TWFya2VyRm9yVGV4dE1hcmtlciJdKQorICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmlu
ZzogQCJBWFByZXZpb3VzTGluZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiXSkgeworICAg
ICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IHZpc2libGVQb3NpdGlvbkZvclRleHRN
YXJrZXIodGV4dE1hcmtlcik7CiAgICAgICAgIHJldHVybiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBv
c2l0aW9uKG1fb2JqZWN0LT5wcmV2aW91c0xpbmVTdGFydFBvc2l0aW9uKHZpc2libGVQb3MpKTsK
KyAgICB9CiAKLSAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6IEAiQVhOZXh0U2Vu
dGVuY2VFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciJdKQorICAgIGlmIChbYXR0cmlidXRlIGlz
RXF1YWxUb1N0cmluZzogQCJBWE5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2Vy
Il0pIHsKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSB2aXNpYmxlUG9zaXRp
b25Gb3JUZXh0TWFya2VyKHRleHRNYXJrZXIpOwogICAgICAgICByZXR1cm4gdGV4dE1hcmtlckZv
clZpc2libGVQb3NpdGlvbihtX29iamVjdC0+bmV4dFNlbnRlbmNlRW5kUG9zaXRpb24odmlzaWJs
ZVBvcykpOworICAgIH0KIAotICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzogQCJB
WFByZXZpb3VzU2VudGVuY2VTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIl0pCisgICAgaWYg
KFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOiBAIkFYUHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4
dE1hcmtlckZvclRleHRNYXJrZXIiXSkgeworICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJs
ZVBvcyA9IHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXIodGV4dE1hcmtlcik7CiAgICAgICAg
IHJldHVybiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uKG1fb2JqZWN0LT5wcmV2aW91c1Nl
bnRlbmNlU3RhcnRQb3NpdGlvbih2aXNpYmxlUG9zKSk7CisgICAgfQogCi0gICAgaWYgKFthdHRy
aWJ1dGUgaXNFcXVhbFRvU3RyaW5nOiBAIkFYTmV4dFBhcmFncmFwaEVuZFRleHRNYXJrZXJGb3JU
ZXh0TWFya2VyIl0pCisgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOiBAIkFYTmV4
dFBhcmFncmFwaEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIl0pIHsKKyAgICAgICAgVmlzaWJs
ZVBvc2l0aW9uIHZpc2libGVQb3MgPSB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyKHRleHRN
YXJrZXIpOwogICAgICAgICByZXR1cm4gdGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbihtX29i
amVjdC0+bmV4dFBhcmFncmFwaEVuZFBvc2l0aW9uKHZpc2libGVQb3MpKTsKKyAgICB9CiAKLSAg
ICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6IEAiQVhQcmV2aW91c1BhcmFncmFwaFN0
YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiXSkKKyAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFs
VG9TdHJpbmc6IEAiQVhQcmV2aW91c1BhcmFncmFwaFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJr
ZXIiXSkgeworICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IHZpc2libGVQb3Np
dGlvbkZvclRleHRNYXJrZXIodGV4dE1hcmtlcik7CiAgICAgICAgIHJldHVybiB0ZXh0TWFya2Vy
Rm9yVmlzaWJsZVBvc2l0aW9uKG1fb2JqZWN0LT5wcmV2aW91c1BhcmFncmFwaFN0YXJ0UG9zaXRp
b24odmlzaWJsZVBvcykpOworICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0
cmluZzogQCJBWFN0eWxlVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlciJdKSB7CisgICAgICAg
IFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zID0gdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtl
cih0ZXh0TWFya2VyKTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdnBSYW5nZSA9IG1f
b2JqZWN0LT5zdHlsZVJhbmdlRm9yUG9zaXRpb24odmlzaWJsZVBvcyk7CiAgICAgICAgIHJldHVy
biAoaWQpdGV4dE1hcmtlclJhbmdlRnJvbVZpc2libGVQb3NpdGlvbnModnBSYW5nZS5zdGFydCwg
dnBSYW5nZS5lbmQpOwogICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmlu
ZzogQCJBWExlbmd0aEZvclRleHRNYXJrZXJSYW5nZSJdKSB7CisgICAgICAgIFZpc2libGVQb3Np
dGlvblJhbmdlIHZpc2libGVQb3NSYW5nZSA9IFtzZWxmIHZpc2libGVQb3NpdGlvblJhbmdlRm9y
VGV4dE1hcmtlclJhbmdlOnRleHRNYXJrZXJSYW5nZV07CiAgICAgICAgIGludCBsZW5ndGggPSBt
X29iamVjdC0+bGVuZ3RoRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UodmlzaWJsZVBvc1JhbmdlKTsK
ICAgICAgICAgaWYgKGxlbmd0aCA8IDApCiAgICAgICAgICAgICByZXR1cm4gbmlsOwpAQCAtMjQ5
OSwzNSArMjUyMiwzOSBAQCAtIChpZClhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6KE5TU3Ry
CiAKICAgICBpZiAobV9vYmplY3QtPmlzVGV4dENvbnRyb2woKSkgewogICAgICAgICBpZiAoW2F0
dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6IChOU1N0cmluZyAqKWtBWExpbmVGb3JJbmRleFBhcmFt
ZXRlcml6ZWRBdHRyaWJ1dGVdKSB7Ci0gICAgICAgICAgICBpbnQgbGluZU51bWJlciA9IG1fb2Jq
ZWN0LT5kb0FYTGluZUZvckluZGV4KGludE51bWJlcik7CisgICAgICAgICAgICBpbnQgbGluZU51
bWJlciA9IG1fb2JqZWN0LT5kb0FYTGluZUZvckluZGV4KFtudW1iZXIgaW50VmFsdWVdKTsKICAg
ICAgICAgICAgIGlmIChsaW5lTnVtYmVyIDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm4gbmls
OwogICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6bGlu
ZU51bWJlcl07CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9T
dHJpbmc6IChOU1N0cmluZyAqKWtBWFJhbmdlRm9yTGluZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVd
KSB7Ci0gICAgICAgICAgICBQbGFpblRleHRSYW5nZSB0ZXh0UmFuZ2UgPSBtX29iamVjdC0+ZG9B
WFJhbmdlRm9yTGluZShpbnROdW1iZXIpOworICAgICAgICAgICAgUGxhaW5UZXh0UmFuZ2UgdGV4
dFJhbmdlID0gbV9vYmplY3QtPmRvQVhSYW5nZUZvckxpbmUoW251bWJlciBpbnRWYWx1ZV0pOwog
ICAgICAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOiBOU01ha2VSYW5nZSh0
ZXh0UmFuZ2Uuc3RhcnQsIHRleHRSYW5nZS5sZW5ndGgpXTsKICAgICAgICAgfQogCi0gICAgICAg
IGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzogKE5TU3RyaW5nKilrQVhTdHJpbmdGb3JS
YW5nZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdKQorICAgICAgICBpZiAoW2F0dHJpYnV0ZSBpc0Vx
dWFsVG9TdHJpbmc6IChOU1N0cmluZyopa0FYU3RyaW5nRm9yUmFuZ2VQYXJhbWV0ZXJpemVkQXR0
cmlidXRlXSkgeworICAgICAgICAgICAgUGxhaW5UZXh0UmFuZ2UgcGxhaW5UZXh0UmFuZ2UgPSBQ
bGFpblRleHRSYW5nZShyYW5nZS5sb2NhdGlvbiwgcmFuZ2UubGVuZ3RoKTsKICAgICAgICAgICAg
IHJldHVybiByYW5nZVNldCA/IChpZCkobV9vYmplY3QtPmRvQVhTdHJpbmdGb3JSYW5nZShwbGFp
blRleHRSYW5nZSkpIDogbmlsOworICAgICAgICB9CiAKICAgICAgICAgaWYgKFthdHRyaWJ1dGUg
aXNFcXVhbFRvU3RyaW5nOiAoTlNTdHJpbmcqKWtBWFJhbmdlRm9yUG9zaXRpb25QYXJhbWV0ZXJp
emVkQXR0cmlidXRlXSkgewogICAgICAgICAgICAgaWYgKCFwb2ludFNldCkKICAgICAgICAgICAg
ICAgICByZXR1cm4gbmlsOworICAgICAgICAgICAgSW50UG9pbnQgd2ViQ29yZVBvaW50ID0gSW50
UG9pbnQocG9pbnQpOwogICAgICAgICAgICAgUGxhaW5UZXh0UmFuZ2UgdGV4dFJhbmdlID0gbV9v
YmplY3QtPmRvQVhSYW5nZUZvclBvc2l0aW9uKHdlYkNvcmVQb2ludCk7CiAgICAgICAgICAgICBy
ZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6IE5TTWFrZVJhbmdlKHRleHRSYW5nZS5zdGFy
dCwgdGV4dFJhbmdlLmxlbmd0aCldOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKFthdHRyaWJ1
dGUgaXNFcXVhbFRvU3RyaW5nOiAoTlNTdHJpbmcqKWtBWFJhbmdlRm9ySW5kZXhQYXJhbWV0ZXJp
emVkQXR0cmlidXRlXSkgewotICAgICAgICAgICAgUGxhaW5UZXh0UmFuZ2UgdGV4dFJhbmdlID0g
bV9vYmplY3QtPmRvQVhSYW5nZUZvckluZGV4KGludE51bWJlcik7CisgICAgICAgICAgICBQbGFp
blRleHRSYW5nZSB0ZXh0UmFuZ2UgPSBtX29iamVjdC0+ZG9BWFJhbmdlRm9ySW5kZXgoW251bWJl
ciBpbnRWYWx1ZV0pOwogICAgICAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdl
OiBOU01ha2VSYW5nZSh0ZXh0UmFuZ2Uuc3RhcnQsIHRleHRSYW5nZS5sZW5ndGgpXTsKICAgICAg
ICAgfQogCiAgICAgICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzogKE5TU3RyaW5n
KilrQVhCb3VuZHNGb3JSYW5nZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdKSB7CiAgICAgICAgICAg
ICBpZiAoIXJhbmdlU2V0KQogICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CisgICAgICAgICAg
ICBQbGFpblRleHRSYW5nZSBwbGFpblRleHRSYW5nZSA9IFBsYWluVGV4dFJhbmdlKHJhbmdlLmxv
Y2F0aW9uLCByYW5nZS5sZW5ndGgpOwogICAgICAgICAgICAgTlNSZWN0IHJlY3QgPSBtX29iamVj
dC0+ZG9BWEJvdW5kc0ZvclJhbmdlKHBsYWluVGV4dFJhbmdlKTsKICAgICAgICAgICAgIHJldHVy
biBbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0OnJlY3RdOwogICAgICAgICB9CkBAIC0yNTM5LDEyICsy
NTY2LDE1IEBAIC0gKGlkKWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTooTlNTdHIKICAgICAg
ICAgICAgIHJldHVybiByYW5nZVNldCA/IFtzZWxmIGRvQVhBdHRyaWJ1dGVkU3RyaW5nRm9yUmFu
Z2U6cmFuZ2VdIDogbmlsOwogCiAgICAgICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmlu
ZzogKE5TU3RyaW5nKilrQVhTdHlsZVJhbmdlRm9ySW5kZXhQYXJhbWV0ZXJpemVkQXR0cmlidXRl
XSkgewotICAgICAgICAgICAgUGxhaW5UZXh0UmFuZ2UgdGV4dFJhbmdlID0gbV9vYmplY3QtPmRv
QVhTdHlsZVJhbmdlRm9ySW5kZXgoaW50TnVtYmVyKTsKKyAgICAgICAgICAgIFBsYWluVGV4dFJh
bmdlIHRleHRSYW5nZSA9IG1fb2JqZWN0LT5kb0FYU3R5bGVSYW5nZUZvckluZGV4KFtudW1iZXIg
aW50VmFsdWVdKTsKICAgICAgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTog
TlNNYWtlUmFuZ2UodGV4dFJhbmdlLnN0YXJ0LCB0ZXh0UmFuZ2UubGVuZ3RoKV07CiAgICAgICAg
IH0KICAgICB9CiAKLSAgICByZXR1cm4gbmlsOworaGFuZGxlVW5zdXBwb3J0ZWRBdHRyaWJ1dGU6
CisgICAgLy8gVGhlcmUgYXJlIHNvbWUgcGFyYW1ldGVycyB0aGF0IHN1cGVyIGhhbmRsZXMgdGhh
dCBhcmUgbm90IGV4cGxpY2l0bHkgcmV0dXJuZWQgYnkgdGhlIGxpc3Qgb2YgdGhlIGVsZW1lbnQn
cyBhdHRyaWJ1dGVzLgorICAgIC8vIEluIHRoYXQgY2FzZSBpdCBtdXN0IGJlIHBhc3NlZCB0byBz
dXBlci4gCisgICAgcmV0dXJuIFtzdXBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6YXR0
cmlidXRlIGZvclBhcmFtZXRlcjpwYXJhbWV0ZXJdOwogfQogCiAtIChCT09MKWFjY2Vzc2liaWxp
dHlTaG91bGRVc2VVbmlxdWVJZApJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNjAzMjcpCisrKyBXZWJLaXRU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw4MiBAQAorMjAxMC0wNS0y
NyAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFYOiBXZWJLaXQgZG9lc24ndCBjYWxs
IFtzdXBlciAtYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOmF0dHJpYnV0ZSBmb3JQYXJhbWV0
ZXI6XSB3aGVuIGl0IGVuY291bnRlcnMgYSBwYXJhbWV0ZXJpemVkIGF0dHJpYnV0ZSB0aGF0IGl0
IGRvZXNuJ3QgaGFuZGxlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzkzMjQKKworICAgICAgICBXaGVuIG1ha2luZyBhbiBhY2Nlc3NpYmlsaXR5IGNh
bGwsIGl0J3MgcGVyZmVjdGx5IGFjY2VwdGFibGUgZm9yIEFwcEtpdCB0byB0aHJvdyBhIE5TQWNj
ZXNzaWJpbGl0eUV4Y2VwdGlvbi4gVGhlc2UgYXJlIHVzZWQgYnkgdGhlIHJ1biB0aW1lIHRvCisg
ICAgICAgIHRvIHNlbmQgZXJyb3IgY29kZXMgYmFjayB0byBjbGllbnRzLiBIb3dldmVyLCBEUlQg
YWN0cyBsaWtlIGFuIGFjY2Vzc2liaWxpdHkgY2xpZW50LiBUaGF0IG1lYW5zIGl0IG5lZWRzIHRv
IGNhdGNoIHRob3NlIGV4Y2VwdGlvbnMgaWYgdGhyb3duIGFuZCBpZ25vcmUgdGhlbS4KKworICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgor
ICAgICAgICAoYXR0cmlidXRlc09mRWxlbWVudCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpnZXRMaW5rZWRVSUVsZW1lbnRzKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmdldERvY3VtZW50TGlua3MpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6Z2V0Q2hpbGRyZW4pOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hp
bGRyZW5XaXRoUmFuZ2UpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYU93
bnNFbGVtZW50QXRJbmRleCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojphcmlh
Rmxvd1RvRWxlbWVudEF0SW5kZXgpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
ZGlzY2xvc2VkUm93QXRJbmRleCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpz
ZWxlY3RlZFJvd0F0SW5kZXgpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0
bGVVSUVsZW1lbnQpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyZW50RWxl
bWVudCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRCeVJvdyk6
CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdBdHRyaWJ1dGVWYWx1ZSk6
CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUpOgor
ICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1dGVTZXR0YWJsZSk6Cisg
ICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0ZVN1cHBvcnRlZCk6Cisg
ICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlKToKKyAgICAgICAgKEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnN1YnJvbGUpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cm9sZURlc2NyaXB0aW9uKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRp
dGxlKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlc2NyaXB0aW9uKToKKyAg
ICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om9yaWVudGF0aW9uKToKKyAgICAgICAgKEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ1ZhbHVlKToKKyAgICAgICAgKEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Omxhbmd1YWdlKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmhlbHBUZXh0KToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OngpOgorICAgICAg
ICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6eSk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp3aWR0aCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWlnaHQp
OgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2xpY2tQb2ludFgpOgorICAgICAg
ICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2xpY2tQb2ludFkpOgorICAgICAgICAoQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aW50VmFsdWUpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6bWluVmFsdWUpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF4VmFs
dWUpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmFsdWVEZXNjcmlwdGlvbik6
CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnNlcnRpb25Qb2ludExpbmVOdW1i
ZXIpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBY3Rpb25TdXBwb3J0ZWQp
OgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFbmFibGVkKToKKyAgICAgICAg
KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzUmVxdWlyZWQpOgorICAgICAgICAoQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aXNTZWxlY3RlZCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojppc0V4cGFuZGVkKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhpZXJh
cmNoaWNhbExldmVsKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFJc0dy
YWJiZWQpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYURyb3BFZmZlY3Rz
KToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVGb3JJbmRleCk6CisgICAg
ICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib3VuZHNGb3JSYW5nZSk6CisgICAgICAgIChB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JSYW5nZSk6CisgICAgICAgIChBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKToKKyAgICAgICAgKEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlJvd0hlYWRlcnMpOgorICAgICAgICAo
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1ucyk6CisgICAgICAgIChB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZSb3dzKToKKyAgICAgICAgKEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlZpc2libGVDZWxscyk6CisgICAgICAgIChB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZIZWFkZXIpOgorICAgICAgICAoQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93Q291bnQpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Y29sdW1uQ291bnQpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aW5kZXhJblRhYmxlKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0luZGV4
UmFuZ2UpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uSW5kZXhSYW5n
ZSk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjZWxsRm9yQ29sdW1uQW5kUm93
KToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkVGV4dFJhbmdlKToK
KyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkVGV4dFJhbmdlKToK
KyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluY3JlbWVudCk6CisgICAgICAgIChB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZWNyZW1lbnQpOgorICAgICAgICAoQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c2hvd01lbnUpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cHJlc3MpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dXJsKToKKyAgICAgICAg
KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhhc1BvcHVwKToKKwogMjAxMC0wNS0yNyAgUGhpbGlw
cGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
U2hpbmljaGlybyBIYW1hamkuCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQkocmV2aXNpb24g
NjAzMjYpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsMTIgQEAKICNkZWZpbmUg
TlNBY2Nlc3NpYmlsaXR5RHJvcEVmZmVjdHNBdHRyaWJ1dGUgQCJBWERyb3BFZmZlY3RzIgogI2Vu
ZGlmCiAKKy8vIElmIGFuIHVuc3VwcG9ydGVkIGF0dHJpYnV0ZSBpcyBwYXNzZWQgaW4sIGl0IHdp
bGwgcmFpc2UgYW4gYWNjZXNzaWJpbGl0eSBleGNlcHRpb24uIFRoZXNlIGFyZSB1c3VhbGx5IGNh
dWdodCBieSB0aGUgQWNjZXNzaWJpbGl0eSBSdW50aW1lIHRvIGluZm9ybQorLy8gdGhlIEFYIGNs
aWVudCBhcHAgb2YgdGhlIGVycm9yLiBIb3dldmVyLCBEUlQgaXMgdGhlIEFYIGNsaWVudCBhcHAs
IHNvIGl0IG11c3QgY2F0Y2ggdGhlc2UgZXhjZXB0aW9ucy4KKyNkZWZpbmUgQkVHSU5fQVhfT0JK
Q19FWENFUFRJT05TIEB0cnkgeworI2RlZmluZSBFTkRfQVhfT0JKQ19FWENFUFRJT05TIH0gQGNh
dGNoKE5TRXhjZXB0aW9uICplKSB7IGlmICghW1tlIG5hbWVdIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlFeGNlcHRpb25dKSBAdGhyb3c7IH0KKworCiB0eXBlZGVmIHZvaWQgKCpBWFBv
c3RlZE5vdGlmaWNhdGlvbkNhbGxiYWNrKShpZCBlbGVtZW50LCBOU1N0cmluZyogbm90aWZpY2F0
aW9uLCB2b2lkKiBjb250ZXh0KTsKIAogQGludGVyZmFjZSBOU09iamVjdCAoV2ViS2l0QWNjZXNz
aWJpbGl0eUFkZGl0aW9ucykKQEAgLTIyNCwxMSArMjMwLDExIEBAIHN0YXRpYyBOU1N0cmluZyog
YXR0cmlidXRlc09mRWxlbWVudChpZCAKICAgICAgICAgCiAgICAgICAgIC8vIGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTogY2FuIHRocm93IGFuIGlmIGFuIGF0dHJpYnV0ZSBpcyBub3QgcmV0
dXJuZWQuCiAgICAgICAgIC8vIEZvciBEdW1wUmVuZGVyVHJlZSdzIHB1cnBvc2UsIHdlIHNob3Vs
ZCBpZ25vcmUgdGhvc2UgZXhjZXB0aW9ucwotICAgICAgICBAdHJ5IHsKLSAgICAgICAgICAgIGlk
IHZhbHVlT2JqZWN0ID0gW2FjY2Vzc2liaWxpdHlPYmplY3QgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOmF0dHJpYnV0ZV07Ci0gICAgICAgICAgICBOU1N0cmluZyogdmFsdWUgPSBkZXNjcmlw
dGlvbk9mVmFsdWUodmFsdWVPYmplY3QsIGFjY2Vzc2liaWxpdHlPYmplY3QpOwotICAgICAgICAg
ICAgW2F0dHJpYnV0ZXNTdHJpbmcgYXBwZW5kRm9ybWF0OkAiJUA6ICVAXG4iLCBhdHRyaWJ1dGUs
IHZhbHVlXTsKLSAgICAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uKiBlKSB7IH0KKyAgICAgICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgICAgIGlkIHZhbHVlT2JqZWN0ID0gW2FjY2Vz
c2liaWxpdHlPYmplY3QgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOmF0dHJpYnV0ZV07Cisg
ICAgICAgIE5TU3RyaW5nKiB2YWx1ZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZSh2YWx1ZU9iamVjdCwg
YWNjZXNzaWJpbGl0eU9iamVjdCk7CisgICAgICAgIFthdHRyaWJ1dGVzU3RyaW5nIGFwcGVuZEZv
cm1hdDpAIiVAOiAlQFxuIiwgYXR0cmlidXRlLCB2YWx1ZV07CisgICAgICAgIEVORF9BWF9PQkpD
X0VYQ0VQVElPTlMKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIGF0dHJpYnV0ZXNTdHJpbmc7CkBA
IC0yNjksMjYgKzI3NSwzNCBAQCBzdGF0aWMgSlNTdHJpbmdSZWYgZGVzY3JpcHRpb25PZkVsZW1l
bnRzCiAKIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0TGlua2VkVUlFbGVtZW50cyhW
ZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4mIGVsZW1lbnRWZWN0b3IpCiB7CisgICAgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJheSogbGlua2VkRWxlbWVudHMgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlMaW5rZWRV
SUVsZW1lbnRzQXR0cmlidXRlXTsKICAgICBjb252ZXJ0TlNBcnJheVRvVmVjdG9yKGxpbmtlZEVs
ZW1lbnRzLCBlbGVtZW50VmVjdG9yKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiB9CiAK
IHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0RG9jdW1lbnRMaW5rcyhWZWN0b3I8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4mIGVsZW1lbnRWZWN0b3IpCiB7CisgICAgQkVHSU5fQVhfT0JK
Q19FWENFUFRJT05TCiAgICAgTlNBcnJheSogbGlua0VsZW1lbnRzID0gW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExpbmtVSUVsZW1lbnRzIl07CiAgICAgY29udmVy
dE5TQXJyYXlUb1ZlY3RvcihsaW5rRWxlbWVudHMsIGVsZW1lbnRWZWN0b3IpOworICAgIEVORF9B
WF9PQkpDX0VYQ0VQVElPTlMKIH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRD
aGlsZHJlbihWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4mIGVsZW1lbnRWZWN0b3IpCiB7
CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJheSogY2hpbGRyZW4gPSBb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlDaGls
ZHJlbkF0dHJpYnV0ZV07CiAgICAgY29udmVydE5TQXJyYXlUb1ZlY3RvcihjaGlsZHJlbiwgZWxl
bWVudFZlY3Rvcik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogfQogCiB2b2lkIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuV2l0aFJhbmdlKFZlY3RvcjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiYgZWxlbWVudFZlY3RvciwgdW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVk
IGxlbmd0aCkKIHsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0FycmF5KiBj
aGlsZHJlbiA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlVmFsdWVzOk5T
QWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlIGluZGV4OmxvY2F0aW9uIG1heENvdW50Omxl
bmd0aF07CiAgICAgY29udmVydE5TQXJyYXlUb1ZlY3RvcihjaGlsZHJlbiwgZWxlbWVudFZlY3Rv
cik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogfQogCiBpbnQgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Y2hpbGRyZW5Db3VudCgpCkBAIC0zMjUsNjMgKzMzOSw3NyBAQCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlVSUVsCiAKIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYU93bnNFbGVtZW50QXRJbmRleCh1bnNpZ25lZCBp
bmRleCkKIHsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0FycmF5KiBvYmpl
Y3RzID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmls
aXR5T3duc0F0dHJpYnV0ZV07CiAgICAgaWYgKGluZGV4IDwgW29iamVjdHMgY291bnRdKQogICAg
ICAgICByZXR1cm4gW29iamVjdHMgb2JqZWN0QXRJbmRleDppbmRleF07CisgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiAwOwogfQogCiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFGbG93VG9FbGVtZW50QXRJbmRleCh1
bnNpZ25lZCBpbmRleCkKIHsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0Fy
cmF5KiBvYmplY3RzID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNB
Y2Nlc3NpYmlsaXR5TGlua2VkVUlFbGVtZW50c0F0dHJpYnV0ZV07CiAgICAgaWYgKGluZGV4IDwg
W29iamVjdHMgY291bnRdKQogICAgICAgICByZXR1cm4gW29iamVjdHMgb2JqZWN0QXRJbmRleDpp
bmRleF07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiAwOwog
fQogCiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRpc2Ns
b3NlZFJvd0F0SW5kZXgodW5zaWduZWQgaW5kZXgpCiB7CisgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCiAgICAgTlNBcnJheSogcm93cyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eURpc2Nsb3NlZFJvd3NBdHRyaWJ1dGVdOwogICAgIGlm
IChpbmRleCA8IFtyb3dzIGNvdW50XSkKICAgICAgICAgcmV0dXJuIFtyb3dzIG9iamVjdEF0SW5k
ZXg6aW5kZXhdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiAwOwog
fQogCiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVj
dGVkUm93QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQ
VElPTlMKICAgICBOU0FycmF5KiByb3dzID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRSb3dzQXR0cmlidXRlXTsKICAgICBpZiAo
aW5kZXggPCBbcm93cyBjb3VudF0pCiAgICAgICAgIHJldHVybiBbcm93cyBvYmplY3RBdEluZGV4
OmluZGV4XTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIDA7
CiB9CiAKIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0
bGVVSUVsZW1lbnQoKQogeworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlkIGFj
Y2Vzc2liaWxpdHlPYmplY3QgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07CiAgICAgaWYgKGFjY2Vz
c2liaWxpdHlPYmplY3QpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGFj
Y2Vzc2liaWxpdHlPYmplY3QpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAg
ICByZXR1cm4gMDsKIH0KIAogQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpwYXJlbnRFbGVtZW50KCkKIHsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
ICAgICBpZCBhY2Nlc3NpYmlsaXR5T2JqZWN0ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5UGFyZW50QXR0cmlidXRlXTsKICAgICBpZiAoYWNj
ZXNzaWJpbGl0eU9iamVjdCkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQo
YWNjZXNzaWJpbGl0eU9iamVjdCk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAog
ICAgIHJldHVybiAwOwogfQogCiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmRpc2Nsb3NlZEJ5Um93KCkKIHsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKICAgICBpZCBhY2Nlc3NpYmlsaXR5T2JqZWN0ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5RGlzY2xvc2VkQnlSb3dBdHRyaWJ1dGVdOwog
ICAgIGlmIChhY2Nlc3NpYmlsaXR5T2JqZWN0KQogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudChhY2Nlc3NpYmlsaXR5T2JqZWN0KTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCiAgICAgCiAgICAgcmV0dXJuIDA7CiB9CkBAIC00MTUsMjkgKzQ0Myw0MiBAQCBKU1N0cmlu
Z1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphbGxBCiAKIEpTU3RyaW5nUmVmIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0
ZSkKIHsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCB2YWx1ZSA9IFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOltOU1N0cmluZyBzdHJpbmdXaXRoSlNT
dHJpbmdSZWY6YXR0cmlidXRlXV07Ci0gICAgaWYgKCFbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNT
dHJpbmcgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFt2YWx1ZSBj
cmVhdGVKU1N0cmluZ1JlZl07CisgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU1N0cmlu
ZyBjbGFzc11dKQorICAgICAgICByZXR1cm4gW3ZhbHVlIGNyZWF0ZUpTU3RyaW5nUmVmXTsKKyAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisKKyAgICByZXR1cm4gMDsKIH0KIAogYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmli
dXRlKQogeworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlkIHZhbHVlID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6W05TU3RyaW5nIHN0cmluZ1dpdGhK
U1N0cmluZ1JlZjphdHRyaWJ1dGVdXTsKLSAgICBpZiAoIVt2YWx1ZSBpc0tpbmRPZkNsYXNzOltO
U051bWJlciBjbGFzc11dKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoW3ZhbHVlIGlz
S2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbdmFsdWUgYm9v
bFZhbHVlXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCi0gICAgcmV0dXJuIFt2
YWx1ZSBib29sVmFsdWVdOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0ZVNldHRhYmxlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkK
IHsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICByZXR1cm4gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5SXNBdHRyaWJ1dGVTZXR0YWJsZTpbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3Ry
aW5nUmVmOmF0dHJpYnV0ZV1dOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRy
aWJ1dGVTdXBwb3J0ZWQoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQogeworICAgIEJFR0lOX0FYX09C
SkNfRVhDRVBUSU9OUwogICAgIHJldHVybiBbW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlTmFtZXNdIGNvbnRhaW5zT2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6
YXR0cmlidXRlXV07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVy
biBmYWxzZTsKIH0KIAogSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyYW1l
dGVyaXplZEF0dHJpYnV0ZU5hbWVzKCkKQEAgLTQ1NCwxNjkgKzQ5NSwyNjAgQEAgSlNTdHJpbmdS
ZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyYQogCiBKU1N0cmluZ1JlZiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojpyb2xlKCkKIHsKLSAgICBOU1N0cmluZyogcm9sZSA9IGRlc2NyaXB0aW9u
T2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2li
aWxpdHlSb2xlQXR0cmlidXRlXSwgbV9lbGVtZW50KTsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQ
VElPTlMKKyAgICBOU1N0cmluZyAqcm9sZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRl
XSwgbV9lbGVtZW50KTsKICAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShA
IkFYUm9sZSIsIHJvbGUpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICBy
ZXR1cm4gMDsKIH0KIAogSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3Vicm9s
ZSgpCiB7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNTdHJpbmcqIHJvbGUg
PSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6TlNBY2Nlc3NpYmlsaXR5U3Vicm9sZUF0dHJpYnV0ZV0sIG1fZWxlbWVudCk7CiAgICAgcmV0
dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWFN1YnJvbGUiLCByb2xlKTsKKyAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisKKyAgICByZXR1cm4gMDsKIH0KIAogSlNTdHJpbmdS
ZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZURlc2NyaXB0aW9uKCkKIHsKKyAgICBCRUdJ
Tl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU1N0cmluZyogcm9sZSA9IGRlc2NyaXB0aW9uT2ZW
YWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxp
dHlSb2xlRGVzY3JpcHRpb25BdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOwogICAgIHJldHVybiBjb25j
YXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhSb2xlRGVzY3JpcHRpb24iLCByb2xlKTsKKyAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7CiB9CiAKIEpTU3Ry
aW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlKCkKIHsKKyAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKICAgICBOU1N0cmluZyogdGl0bGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUo
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5VGl0
bGVBdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOwogICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0
ZUFuZFZhbHVlKEAiQVhUaXRsZSIsIHRpdGxlKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
CisKKyAgICByZXR1cm4gMDsKIH0KIAogSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6ZGVzY3JpcHRpb24oKQogeworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlk
IGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uQXR0cmlidXRlXSwgbV9l
bGVtZW50KTsKICAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYRGVz
Y3JpcHRpb24iLCBkZXNjcmlwdGlvbik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworCisg
ICAgcmV0dXJuIDA7CiB9CiAKIEpTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om9y
aWVudGF0aW9uKCkgY29uc3QKIHsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBp
ZCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV0sIG1f
ZWxlbWVudCk7CiAgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWE9y
aWVudGF0aW9uIiwgZGVzY3JpcHRpb24pOyAgICAKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
CisKKyAgICByZXR1cm4gMDsKIH0KIAogSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c3RyaW5nVmFsdWUoKQogeworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlk
IGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlXSwgbV9lbGVtZW50
KTsKICAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYVmFsdWUiLCBk
ZXNjcmlwdGlvbik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworCisgICAgcmV0dXJuIDA7
CiB9CiAKIEpTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1YWdlKCkKIHsK
KyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCBkZXNjcmlwdGlvbiA9IGRlc2Ny
aXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFY
TGFuZ3VhZ2UiXSwgbV9lbGVtZW50KTsKICAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVB
bmRWYWx1ZShAIkFYTGFuZ3VhZ2UiLCBkZXNjcmlwdGlvbik7CisgICAgRU5EX0FYX09CSkNfRVhD
RVBUSU9OUworCisgICAgcmV0dXJuIDA7CiB9CiAKIEpTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmhlbHBUZXh0KCkgY29uc3QKIHsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKICAgICBpZCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlIZWxwQXR0cmlidXRlXSwg
bV9lbGVtZW50KTsKICAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFY
SGVscCIsIGRlc2NyaXB0aW9uKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisg
ICAgcmV0dXJuIDA7CiB9CiAKIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp4KCkKIHsK
KyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU1ZhbHVlKiBwb3NpdGlvblZhbHVl
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5
UG9zaXRpb25BdHRyaWJ1dGVdOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KFtwb3Np
dGlvblZhbHVlIHBvaW50VmFsdWVdLngpOyAgICAKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
CisgICAgCisgICAgcmV0dXJuIDAuMGY7CiB9CiAKIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojp5KCkKIHsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU1ZhbHVlKiBw
b3NpdGlvblZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNB
Y2Nlc3NpYmlsaXR5UG9zaXRpb25BdHRyaWJ1dGVdOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxk
b3VibGU+KFtwb3NpdGlvblZhbHVlIHBvaW50VmFsdWVdLnkpOyAgICAKKyAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDAuMGY7CiB9CiAKIGRvdWJsZSBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojp3aWR0aCgpCiB7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
CiAgICAgTlNWYWx1ZSogc2l6ZVZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U2l6ZUF0dHJpYnV0ZV07CiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGRvdWJsZT4oW3NpemVWYWx1ZSBzaXplVmFsdWVdLndpZHRoKTsKKyAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDAuMGY7CiB9CiAKIGRvdWJsZSBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpoZWlnaHQoKQogeworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBU
SU9OUwogICAgIE5TVmFsdWUqIHNpemVWYWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVNpemVBdHRyaWJ1dGVdOwogICAgIHJldHVybiBz
dGF0aWNfY2FzdDxkb3VibGU+KFtzaXplVmFsdWUgc2l6ZVZhbHVlXS5oZWlnaHQpOworICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMC4wZjsKIH0KIAogZG91Ymxl
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNsaWNrUG9pbnRYKCkKIHsKKyAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKICAgICBOU1ZhbHVlKiBwb3NpdGlvblZhbHVlID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWENsaWNrUG9pbnQiXTsKICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8ZG91YmxlPihbcG9zaXRpb25WYWx1ZSBwb2ludFZhbHVlXS54KTsgICAgICAg
IAorICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMC4wZjsKIH0K
IAogZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNsaWNrUG9pbnRZKCkKIHsKKyAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU1ZhbHVlKiBwb3NpdGlvblZhbHVlID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWENsaWNrUG9pbnQiXTsKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihbcG9zaXRpb25WYWx1ZSBwb2ludFZhbHVlXS55
KTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDAuMGY7CiB9
CiAKIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnRWYWx1ZSgpIGNvbnN0CiB7Cisg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlWYWx1ZUF0dHJpYnV0ZV07
CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQogICAgICAg
ICByZXR1cm4gWyhOU051bWJlciopdmFsdWUgZG91YmxlVmFsdWVdOyAKKyAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCisKICAgICByZXR1cm4gMC4wZjsKIH0KIAogZG91YmxlIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Om1pblZhbHVlKCkKIHsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
ICAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5T
QWNjZXNzaWJpbGl0eU1pblZhbHVlQXR0cmlidXRlXTsKICAgICBpZiAoW3ZhbHVlIGlzS2luZE9m
Q2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBbKE5TTnVtYmVyKil2YWx1
ZSBkb3VibGVWYWx1ZV07IAorICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKwogICAgIHJldHVy
biAwLjBmOwogfQogCiBkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF4VmFsdWUoKQog
eworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlkIHZhbHVlID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5TWF4VmFsdWVBdHRy
aWJ1dGVdOwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkK
ICAgICAgICAgcmV0dXJuIFsoTlNOdW1iZXIqKXZhbHVlIGRvdWJsZVZhbHVlXTsgCisgICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUworCiAgICAgcmV0dXJuIDAuMDsKIH0KIAogSlNTdHJpbmdSZWYg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmFsdWVEZXNjcmlwdGlvbigpCiB7CisgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNTdHJpbmcqIHZhbHVlRGVzY3JpcHRpb24gPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlWYWx1ZURl
c2NyaXB0aW9uQXR0cmlidXRlXTsKICAgICBpZiAoW3ZhbHVlRGVzY3JpcHRpb24gaXNLaW5kT2ZD
bGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKICAgICAgICAgIHJldHVybiBbdmFsdWVEZXNjcmlwdGlv
biBjcmVhdGVKU1N0cmluZ1JlZl07CisKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAg
cmV0dXJuIDA7CiB9CiAKIGludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnNlcnRpb25Qb2lu
dExpbmVOdW1iZXIoKQogeworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlkIHZh
bHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmls
aXR5SW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyQXR0cmlidXRlXTsKICAgICBpZiAoW3ZhbHVlIGlz
S2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBbKE5TTnVtYmVy
ICopdmFsdWUgaW50VmFsdWVdOyAKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCiAg
ICAgcmV0dXJuIC0xOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQWN0aW9u
U3VwcG9ydGVkKEpTU3RyaW5nUmVmIGFjdGlvbikKIHsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQ
VElPTlMKICAgICBOU0FycmF5KiBhY3Rpb25zID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QWN0
aW9uTmFtZXNdOwogICAgIHJldHVybiBbYWN0aW9ucyBjb250YWluc09iamVjdDpbTlNTdHJpbmcg
c3RyaW5nV2l0aEpTU3RyaW5nUmVmOmFjdGlvbl1dOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICAKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aXNFbmFibGVkKCkKIHsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBp
ZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNz
aWJpbGl0eUVuYWJsZWRBdHRyaWJ1dGVdOwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpb
TlNOdW1iZXIgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIFt2YWx1ZSBib29sVmFsdWVdOworICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNSZXF1aXJlZCgpIGNvbnN0CiB7CisgICAgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUmVxdWlyZWQiXTsKICAgICBpZiAoW3ZhbHVlIGlzS2lu
ZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBbdmFsdWUgYm9vbFZh
bHVlXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0ZWQoKSBjb25zdAog
eworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlkIHZhbHVlID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRBdHRy
aWJ1dGVdOwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkK
ICAgICAgICAgcmV0dXJuIFt2YWx1ZSBib29sVmFsdWVdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKKyAgICAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aXNFeHBhbmRlZCgpIGNvbnN0CiB7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCiAgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpOU0FjY2Vzc2liaWxpdHlFeHBhbmRlZEF0dHJpYnV0ZV07CiAgICAgaWYgKFt2YWx1ZSBpc0tp
bmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQogICAgICAgICByZXR1cm4gW3ZhbHVlIGJvb2xW
YWx1ZV07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIApAQCAtNjI4LDIyICs3NjAsMjkgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojppc0NoZWNrZWQoKQogCiBpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGllcmFyY2hpY2Fs
TGV2ZWwoKSBjb25zdAogeworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlkIHZh
bHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmls
aXR5RGlzY2xvc3VyZUxldmVsQXR0cmlidXRlXTsKICAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xh
c3M6W05TTnVtYmVyIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBbdmFsdWUgaW50VmFsdWVdOwor
ICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKwogICAgIHJldHVybiAwOwogfQogCiBib29sIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFJc0dyYWJiZWQoKSBjb25zdAogeworICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5R3JhYmJlZEF0dHJpYnV0ZV07CiAgICAg
aWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQogICAgICAgICByZXR1
cm4gW3ZhbHVlIGJvb2xWYWx1ZV07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCiBKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
cmlhRHJvcEVmZmVjdHMoKSBjb25zdAogeworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwog
ICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNB
Y2Nlc3NpYmlsaXR5RHJvcEVmZmVjdHNBdHRyaWJ1dGVdOwogICAgIGlmICghW3ZhbHVlIGlzS2lu
ZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC02NTcsMjAg
Kzc5NiwyNyBAQCBKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhCiAgICAg
fQogICAgIAogICAgIHJldHVybiBbZHJvcEVmZmVjdHMgY3JlYXRlSlNTdHJpbmdSZWZdOworICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKIH0KIAogLy8gcGFy
YW1ldGVyaXplZCBhdHRyaWJ1dGVzCiBpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZUZv
ckluZGV4KGludCBpbmRleCkKIHsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBp
ZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNz
aWJpbGl0eUxpbmVGb3JJbmRleFBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOltO
U051bWJlciBudW1iZXJXaXRoSW50OmluZGV4XV07CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNs
YXNzOltOU051bWJlciBjbGFzc11dKQogICAgICAgICByZXR1cm4gWyhOU051bWJlciAqKXZhbHVl
IGludFZhbHVlXTsgCisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworCiAgICAgcmV0dXJuIC0x
OwogfQogCiBKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib3VuZHNGb3JSYW5n
ZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIE5TUmFuZ2UgcmFu
Z2UgPSBOU01ha2VSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKTsKKyAgICBCRUdJTl9BWF9PQkpDX0VY
Q0VQVElPTlMKICAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUJvdW5kc0ZvclJhbmdlUGFyYW1ldGVyaXplZEF0dHJpYnV0
ZSBmb3JQYXJhbWV0ZXI6W05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6cmFuZ2VdXTsKICAgICBOU1Jl
Y3QgcmVjdCA9IE5TTWFrZVJlY3QoMCwwLDAsMCk7CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNs
YXNzOltOU1ZhbHVlIGNsYXNzXV0pCkBAIC02NzksNjEgKzgyNSw4OSBAQCBKU1N0cmluZ1JlZiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib3VuCiAgICAgLy8gZG9uJ3QgcmV0dXJuIHBvc2l0aW9u
IGluZm9ybWF0aW9uIGJlY2F1c2UgaXQgaXMgcGxhdGZvcm0gZGVwZW5kZW50CiAgICAgTlNNdXRh
YmxlU3RyaW5nKiBib3VuZHNEZXNjcmlwdGlvbiA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAInt7JWYsICVmfSwgeyVmLCAlZn19IiwtMS4wZiwtMS4wZixyZWN0LnNpemUud2lk
dGgscmVjdC5zaXplLmhlaWdodF07CiAgICAgcmV0dXJuIFtib3VuZHNEZXNjcmlwdGlvbiBjcmVh
dGVKU1N0cmluZ1JlZl07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJl
dHVybiAwOwogfQogCiBKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdG
b3JSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIE5TUmFu
Z2UgcmFuZ2UgPSBOU01ha2VSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKTsKKyAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKICAgICBpZCBzdHJpbmcgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTdHJpbmdGb3JSYW5nZVBhcmFtZXRlcml6ZWRB
dHRyaWJ1dGUgZm9yUGFyYW1ldGVyOltOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOnJhbmdlXV07CiAg
ICAgaWYgKCFbc3RyaW5nIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCiAgICAgICAg
IHJldHVybiAwOwogICAgIAogICAgIHJldHVybiBbc3RyaW5nIGNyZWF0ZUpTU3RyaW5nUmVmXTsK
KyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7CiB9CiAKIEpT
U3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNvbHVtbkhlYWRl
cnMoKQogewogICAgIC8vIG5vdCB5ZXQgZGVmaW5lZCBpbiBBcHBLaXQuLi4gb2RkCisgICAgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJheSogY29sdW1uSGVhZGVyc0FycmF5ID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWENvbHVtbkhlYWRlclVJ
RWxlbWVudHMiXTsKICAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gY29sdW1uSGVh
ZGVyc1ZlY3RvcjsKICAgICBjb252ZXJ0TlNBcnJheVRvVmVjdG9yKGNvbHVtbkhlYWRlcnNBcnJh
eSwgY29sdW1uSGVhZGVyc1ZlY3Rvcik7CiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50
cyhjb2x1bW5IZWFkZXJzVmVjdG9yKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAg
CisgICAgcmV0dXJuIDA7CiB9CiAKIEpTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmF0dHJpYnV0ZXNPZlJvd0hlYWRlcnMoKQogeworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UwogICAgIE5TQXJyYXkqIHJvd0hlYWRlcnNBcnJheSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOkAiQVhSb3dIZWFkZXJVSUVsZW1lbnRzIl07CiAgICAgVmVjdG9yPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+IHJvd0hlYWRlcnNWZWN0b3I7CiAgICAgY29udmVydE5TQXJy
YXlUb1ZlY3Rvcihyb3dIZWFkZXJzQXJyYXksIHJvd0hlYWRlcnNWZWN0b3IpOwogICAgIHJldHVy
biBkZXNjcmlwdGlvbk9mRWxlbWVudHMocm93SGVhZGVyc1ZlY3Rvcik7CisgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOwogfQogCiBKU1N0cmluZ1JlZiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5zKCkKIHsKKyAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0FycmF5KiBjb2x1bW5zQXJyYXkgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlDb2x1bW5zQXR0cmli
dXRlXTsKICAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gY29sdW1uc1ZlY3RvcjsK
ICAgICBjb252ZXJ0TlNBcnJheVRvVmVjdG9yKGNvbHVtbnNBcnJheSwgY29sdW1uc1ZlY3Rvcik7
CiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhjb2x1bW5zVmVjdG9yKTsKKyAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7CiB9CiAKIEpTU3RyaW5n
UmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlJvd3MoKQogeworICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5TQXJyYXkqIHJvd3NBcnJheSA9IFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvd3NBdHRyaWJ1
dGVdOwogICAgIFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiByb3dzVmVjdG9yOwogICAg
IGNvbnZlcnROU0FycmF5VG9WZWN0b3Iocm93c0FycmF5LCByb3dzVmVjdG9yKTsKICAgICByZXR1
cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKHJvd3NWZWN0b3IpOworICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKIH0KIAogSlNTdHJpbmdSZWYgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mVmlzaWJsZUNlbGxzKCkKIHsKKyAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0FycmF5KiBjZWxsc0FycmF5ID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFZpc2libGVDZWxscyJdOwogICAgIFZlY3Rv
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBjZWxsc1ZlY3RvcjsKICAgICBjb252ZXJ0TlNBcnJh
eVRvVmVjdG9yKGNlbGxzQXJyYXksIGNlbGxzVmVjdG9yKTsKICAgICByZXR1cm4gZGVzY3JpcHRp
b25PZkVsZW1lbnRzKGNlbGxzVmVjdG9yKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisg
ICAgCisgICAgcmV0dXJuIDA7CiB9CiAKIEpTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmF0dHJpYnV0ZXNPZkhlYWRlcigpCiB7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
CiAgICAgaWQgaGVhZGVyT2JqZWN0ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6TlNBY2Nlc3NpYmlsaXR5SGVhZGVyQXR0cmlidXRlXTsKICAgICBpZiAoIWhlYWRlck9i
amVjdCkKICAgICAgICAgcmV0dXJuIFtAIiIgY3JlYXRlSlNTdHJpbmdSZWZdOwpAQCAtNzQxLDgx
ICs5MTUsMTIxIEBAIEpTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHIKICAg
ICBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gaGVhZGVyVmVjdG9yOwogICAgIGhlYWRl
clZlY3Rvci5hcHBlbmQoaGVhZGVyT2JqZWN0KTsKICAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVs
ZW1lbnRzKGhlYWRlclZlY3Rvcik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAor
ICAgIHJldHVybiAwOwogfQogCiBpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93Q291bnQo
KQogeworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIHJldHVybiBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50Ok5TQWNjZXNzaWJpbGl0eVJvd3NBdHRy
aWJ1dGVdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsK
IH0KIAogaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbHVtbkNvdW50KCkKIHsKKyAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICByZXR1cm4gW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXJyYXlBdHRyaWJ1dGVDb3VudDpOU0FjY2Vzc2liaWxpdHlDb2x1bW5zQXR0cmlidXRlXTsK
KyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7CiB9CiAKIGlu
dCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmRleEluVGFibGUoKQogeworICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUwogICAgIE5TTnVtYmVyKiBpbmRleE51bWJlciA9IFttX2VsZW1lbnQg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUluZGV4QXR0cmlidXRl
XTsKLSAgICBpZiAoIWluZGV4TnVtYmVyKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgcmV0dXJu
IFtpbmRleE51bWJlciBpbnRWYWx1ZV07CisgICAgaWYgKGluZGV4TnVtYmVyKQorICAgICAgICBy
ZXR1cm4gW2luZGV4TnVtYmVyIGludFZhbHVlXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
CisKKyAgICByZXR1cm4gLTE7CiB9CiAKIEpTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnJvd0luZGV4UmFuZ2UoKQogeworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAg
IE5TVmFsdWUqIGluZGV4UmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpAIkFYUm93SW5kZXhSYW5nZSJdOwogICAgIE5TUmFuZ2UgcmFuZ2UgPSBpbmRleFJhbmdl
ID8gW2luZGV4UmFuZ2UgcmFuZ2VWYWx1ZV0gOiBOU01ha2VSYW5nZSgwLDApOwogICAgIE5TTXV0
YWJsZVN0cmluZyogcmFuZ2VEZXNjcmlwdGlvbiA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAInslZCwgJWR9IixyYW5nZS5sb2NhdGlvbiwgcmFuZ2UubGVuZ3RoXTsKICAgICBy
ZXR1cm4gW3JhbmdlRGVzY3JpcHRpb24gY3JlYXRlSlNTdHJpbmdSZWZdOworICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKIH0KIAogSlNTdHJpbmdSZWYgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uSW5kZXhSYW5nZSgpCiB7CisgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCiAgICAgTlNOdW1iZXIqIGluZGV4UmFuZ2UgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYQ29sdW1uSW5kZXhSYW5nZSJdOwogICAgIE5T
UmFuZ2UgcmFuZ2UgPSBpbmRleFJhbmdlID8gW2luZGV4UmFuZ2UgcmFuZ2VWYWx1ZV0gOiBOU01h
a2VSYW5nZSgwLDApOwogICAgIE5TTXV0YWJsZVN0cmluZyogcmFuZ2VEZXNjcmlwdGlvbiA9IFtO
U011dGFibGVTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAInslZCwgJWR9IixyYW5nZS5sb2NhdGlv
biwgcmFuZ2UubGVuZ3RoXTsKICAgICByZXR1cm4gW3JhbmdlRGVzY3JpcHRpb24gY3JlYXRlSlNT
dHJpbmdSZWZdOyAgICAKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0
dXJuIDA7CiB9CiAKIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6Y2VsbEZvckNvbHVtbkFuZFJvdyh1bnNpZ25lZCBjb2wsIHVuc2lnbmVkIHJvdykKIHsKICAg
ICBOU0FycmF5ICpjb2xSb3dBcnJheSA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6W05TTnVt
YmVyIG51bWJlcldpdGhVbnNpZ25lZEludDpjb2xdLCBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2ln
bmVkSW50OnJvd10sIG5pbF07CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgcmV0
dXJuIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhDZWxsRm9yQ29s
dW1uQW5kUm93IiBmb3JQYXJhbWV0ZXI6Y29sUm93QXJyYXldOworICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMgICAgCisKKyAgICByZXR1cm4gMDsKIH0KIAogSlNTdHJpbmdSZWYgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRUZXh0UmFuZ2UoKQogeworICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUwogICAgIE5TTnVtYmVyICppbmRleFJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0UmFuZ2VBdHRy
aWJ1dGVdOwogICAgIE5TUmFuZ2UgcmFuZ2UgPSBpbmRleFJhbmdlID8gW2luZGV4UmFuZ2UgcmFu
Z2VWYWx1ZV0gOiBOU01ha2VSYW5nZSgwLDApOwogICAgIE5TTXV0YWJsZVN0cmluZyAqcmFuZ2VE
ZXNjcmlwdGlvbiA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAInslZCwgJWR9
IixyYW5nZS5sb2NhdGlvbiwgcmFuZ2UubGVuZ3RoXTsKICAgICByZXR1cm4gW3JhbmdlRGVzY3Jp
cHRpb24gY3JlYXRlSlNTdHJpbmdSZWZdOyAgICAKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
CisgICAgCisgICAgcmV0dXJuIDA7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
c2V0U2VsZWN0ZWRUZXh0UmFuZ2UodW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCkK
IHsKICAgICBOU1JhbmdlIHRleHRSYW5nZSA9IE5TTWFrZVJhbmdlKGxvY2F0aW9uLCBsZW5ndGgp
OwogICAgIE5TVmFsdWUgKnRleHRSYW5nZVZhbHVlID0gW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6
dGV4dFJhbmdlXTsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlTZXRWYWx1ZTp0ZXh0UmFuZ2VWYWx1ZSBmb3JBdHRyaWJ1dGU6TlNBY2Nl
c3NpYmlsaXR5U2VsZWN0ZWRUZXh0UmFuZ2VBdHRyaWJ1dGVdOworICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMKIH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmNyZW1lbnQoKQog
eworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eVBlcmZvcm1BY3Rpb246TlNBY2Nlc3NpYmlsaXR5SW5jcmVtZW50QWN0aW9uXTsKKyAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
ZGVjcmVtZW50KCkKIHsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlQZXJmb3JtQWN0aW9uOk5TQWNjZXNzaWJpbGl0eURlY3JlbWVudEFj
dGlvbl07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogfQogCiB2b2lkIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnNob3dNZW51KCkKIHsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
ICAgICBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlQZXJmb3JtQWN0aW9uOk5TQWNjZXNzaWJpbGl0
eVNob3dNZW51QWN0aW9uXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiB9CiAKIHZvaWQg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJlc3MoKQogeworICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUwogICAgIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eVBlcmZvcm1BY3Rpb246TlNBY2Nl
c3NpYmlsaXR5UHJlc3NBY3Rpb25dOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KIAog
SlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0eVZhbHVlKCkg
Y29uc3QKQEAgLTgzNiw4ICsxMDUwLDEyIEBAIEpTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmRvY3UKIAogSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dXJsKCkK
IHsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU1VSTCAqdXJsID0gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5VVJMQXR0cmli
dXRlXTsKICAgICByZXR1cm4gW1t1cmwgYWJzb2x1dGVTdHJpbmddIGNyZWF0ZUpTU3RyaW5nUmVm
XTsgICAgCisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiBuaWw7
CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkTm90aWZpY2F0aW9uTGlzdGVu
ZXIoSlNPYmplY3RSZWYgZnVuY3Rpb25DYWxsYmFjaykKQEAgLTg5Niw5ICsxMTE0LDEyIEBAIGJv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNDb2xsYXBzZWQKIAogYm9vbCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpoYXNQb3B1cCgpIGNvbnN0CiB7CisgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCiAgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpAIkFYSGFzUG9wdXAiXTsKICAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVt
YmVyIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBbdmFsdWUgYm9vbFZhbHVlXTsKKyAgICBFTkRf
QVhfT0JKQ19FWENFUFRJT05TCisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDYwMzI3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTAtMDUtMjcgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBWDogV2ViS2l0IGRvZXNuJ3QgY2FsbCBbc3VwZXIgLWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTphdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOl0gd2hlbiBpdCBlbmNvdW50ZXJzIGEgcGFyYW1l
dGVyaXplZCBhdHRyaWJ1dGUgdGhhdCBpdCBkb2Vzbid0IGhhbmRsZS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5MzI0CisKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS91bnN1cHBvcnRlZC1hdHRyaWJ1dGUtZG9lcy1ub3QtY3Jh
c2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJp
bGl0eS91bnN1cHBvcnRlZC1hdHRyaWJ1dGUtZG9lcy1ub3QtY3Jhc2guaHRtbDogQWRkZWQuCisK
IDIwMTAtMDUtMjcgIEp1bGllIFBhcmVudCAgPGpwYXJlbnRAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQuCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJp
bGl0eS91bnN1cHBvcnRlZC1hdHRyaWJ1dGUtZG9lcy1ub3QtY3Jhc2gtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3Vuc3Vw
cG9ydGVkLWF0dHJpYnV0ZS1kb2VzLW5vdC1jcmFzaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS91bnN1cHBvcnRlZC1h
dHRyaWJ1dGUtZG9lcy1ub3QtY3Jhc2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDEwIEBACitsaW5rCitUaGlzIHRlc3RzIHRoYXQgYXJpYS1sYWJlbCB3b3JrcyBvbiBhcmVh
IGVsZW1lbnRzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3Vuc3VwcG9ydGVkLWF0dHJpYnV0ZS1kb2VzLW5v
dC1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nl
c3NpYmlsaXR5L3Vuc3VwcG9ydGVkLWF0dHJpYnV0ZS1kb2VzLW5vdC1jcmFzaC5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdW5zdXBw
b3J0ZWQtYXR0cmlidXRlLWRvZXMtbm90LWNyYXNoLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMzQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQ+Cit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gZmFsc2U7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eSBpZD0iYm9keSI+CisKKzxhIGhyZWY9Imh0dHA6Ly93d3cud2Via2l0Lm9yZyIgaWQ9Imxpbmsi
Pmxpbms8L2E+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+CisKKzxzY3JpcHQ+CisKKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IGFy
aWEtbGFiZWwgd29ya3Mgb24gYXJlYSBlbGVtZW50cy4iKTsKKworICAgIGlmICh3aW5kb3cuYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgibGluayIpLmZvY3VzKCk7CisKKyAgICAgICAgLy8gVGhpcyBzaG91bGQgbm90IGNyYXNoIERS
VCBldmVuIHRob3VnaCBpdCBpcyBhbiB1bnN1cHBvcnRlZCBhdHRyaWJ1dGUgZm9yIHRoZSBlbGVt
ZW50LgorICAgICAgICBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jZWxs
Rm9yQ29sdW1uQW5kUm93KDEsIDEpOworICAgIH0KKworICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="41833"
          type_id="1"
          status="-"
          setter="cfleizach"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57347</attachid>
            <date>2010-05-28 11:16:04 -0700</date>
            <delta_ts>2010-06-01 11:25:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39324-20100528111603.patch</filename>
            <type>text/plain</type>
            <size>2277</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDM2OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTAtMDUtMjggIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBWDogV2ViS2l0IGRvZXNuJ3QgY2FsbCBbc3VwZXIgLWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTphdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOl0gd2hlbiBpdCBlbmNvdW50ZXJzIGEgcGFyYW1l
dGVyaXplZCBhdHRyaWJ1dGUgdGhhdCBpdCBkb2Vzbid0IGhhbmRsZS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5MzI0CisgCisgICAgICAgIFRoZXJl
IGFyZSBzb21lIHBhcmFtZXRlcnMgdGhhdCBzdXBlciBoYW5kbGVzIHRoYXQgYXJlIG5vdCBleHBs
aWNpdGx5IHJldHVybmVkIGJ5IHRoZSBsaXN0IG9mIHRoZSBlbGVtZW50J3MgYXR0cmlidXRlcy4K
KyAgICAgICAgSW4gdGhvc2UgY2FzZXMsIHN1cGVyIHNob3VsZCBoYW5kbGUuCisKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbToKKyAgICAg
ICAgKC1bQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOmZvclBhcmFtZXRlcjpdKToKKwogMjAxMC0wNS0yOCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxl
aXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEJldGggRGFraW4uCkluZGV4
OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIubW0JKHJldmlzaW9uIDYwMzY4KQorKysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjMz
MSwxMyArMjMzMSw4IEBAIC0gKGlkKWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTooTlNTdHIK
ICAgICB9IGVsc2UgaWYgKFtwYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNWYWx1ZSBzZWxmXV0g
JiYgc3RyY21wKFsoTlNWYWx1ZSopcGFyYW1ldGVyIG9iakNUeXBlXSwgQGVuY29kZShOU1Jhbmdl
KSkgPT0gMCkgewogICAgICAgICByYW5nZVNldCA9IHRydWU7CiAgICAgICAgIHJhbmdlID0gWyhO
U1ZhbHVlKilwYXJhbWV0ZXIgcmFuZ2VWYWx1ZV07Ci0KLSAgICB9IGVsc2UgewotICAgICAgICAv
LyBnb3QgYSBwYXJhbWV0ZXIgb2YgYSB0eXBlIHdlIG5ldmVyIHVzZQotICAgICAgICAvLyBOT1RF
OiBObyBBU1NFUlRfTk9UX1JFQUNIRUQgYmVjYXVzZSB0aGlzIGNhbiBoYXBwZW4gYWNjaWRlbnRh
bGx5Ci0gICAgICAgIC8vIHdoaWxlIHVzaW5nIGFjY2Vzc3Rvb2wgKGUuZy4pLCBmb3JjaW5nIHlv
dSB0byBzdGFydCBvdmVyCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQorICAgIH0gZWxzZQor
ICAgICAgICBnb3RvIGhhbmRsZVVuc3VwcG9ydGVkQXR0cmlidXRlOwogICAgIAogICAgIC8vIGRp
c3BhdGNoCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOiBAIkFYVUlFbGVtZW50
Rm9yVGV4dE1hcmtlciJdKSB7CkBAIC0yNTc1LDcgKzI1NzAsMTAgQEAgLSAoaWQpYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOihOU1N0cgogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJu
IG5pbDsKK2hhbmRsZVVuc3VwcG9ydGVkQXR0cmlidXRlOgorICAgIC8vIFRoZXJlIGFyZSBzb21l
IHBhcmFtZXRlcnMgdGhhdCBzdXBlciBoYW5kbGVzIHRoYXQgYXJlIG5vdCBleHBsaWNpdGx5IHJl
dHVybmVkIGJ5IHRoZSBsaXN0IG9mIHRoZSBlbGVtZW50J3MgYXR0cmlidXRlcy4KKyAgICAvLyBJ
biB0aGF0IGNhc2UgaXQgbXVzdCBiZSBwYXNzZWQgdG8gc3VwZXIuIAorICAgIHJldHVybiBbc3Vw
ZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOmF0dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6cGFy
YW1ldGVyXTsKIH0KIAogLSAoQk9PTClhY2Nlc3NpYmlsaXR5U2hvdWxkVXNlVW5pcXVlSWQK
</data>
<flag name="review"
          id="41913"
          type_id="1"
          status="+"
          setter="bdakin"
    />
          </attachment>
      

    </bug>

</bugzilla>