<?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>149923</bug_id>
          
          <creation_ts>2015-10-08 05:42:19 -0700</creation_ts>
          <short_desc>Rationalize JSXXConstructor class definition generated from WebIDL</short_desc>
          <delta_ts>2015-10-09 08:47:10 -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>WebCore JavaScript</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>149956</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1131611</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-08 05:42:19 -0700</bug_when>
    <thetext>Depending on the WebIDL and options, the JSXXConstructor generated class declaration is changing.
It may be useful to rationalize this so that it can be later templated, which would simplify the binding generator work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131616</commentid>
    <comment_count>1</comment_count>
      <attachid>262693</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-08 07:16:46 -0700</bug_when>
    <thetext>Created attachment 262693
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131627</commentid>
    <comment_count>2</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-08 08:13:49 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created attachment 262693 [details]
&gt; Patch

mac-wk2 compilation is failing for an unrelated reason, see bug 149751.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131642</commentid>
    <comment_count>3</comment_count>
      <attachid>262693</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-10-08 08:38:49 -0700</bug_when>
    <thetext>Comment on attachment 262693
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:4836
&gt; +                my $overloadedIndexString .= $function-&gt;{overloadedIndex};

I don’t understand the use of &quot;.=&quot; instead of &quot;=&quot; here.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:5021
&gt; +                push(@$outputArray, &quot;#endif // $conditionalString\n&quot;);

I don’t think comments like this one are useful when the entire body of #if/#else/#endif is only 6 lines long. Especially in generated code that people should typically not be reading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131644</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-08 08:57:40 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 262693 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=262693&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:4836
&gt; &gt; +                my $overloadedIndexString .= $function-&gt;{overloadedIndex};
&gt; 
&gt; I don’t understand the use of &quot;.=&quot; instead of &quot;=&quot; here.

Right.
Let&apos;s also remove $overloadedIndexString at the same time.

&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:5021
&gt; &gt; +                push(@$outputArray, &quot;#endif // $conditionalString\n&quot;);
&gt; 
&gt; I don’t think comments like this one are useful when the entire body of
&gt; #if/#else/#endif is only 6 lines long. Especially in generated code that
&gt; people should typically not be reading.

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131891</commentid>
    <comment_count>5</comment_count>
      <attachid>262764</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-09 05:59:44 -0700</bug_when>
    <thetext>Created attachment 262764
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131897</commentid>
    <comment_count>6</comment_count>
      <attachid>262764</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-09 06:45:15 -0700</bug_when>
    <thetext>Comment on attachment 262764
Patch for landing

Clearing flags on attachment: 262764

Committed r190785: &lt;http://trac.webkit.org/changeset/190785&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131898</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-09 06:45:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131918</commentid>
    <comment_count>8</comment_count>
      <attachid>262764</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-10-09 08:45:29 -0700</bug_when>
    <thetext>Comment on attachment 262764
Patch for landing

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:5020
&gt; -            push(@$outputArray, &quot;#if $conditionalString\n&quot;) if $conditionalString;
&gt;              push(@$outputArray, &quot;ConstructType ${constructorClassName}::getConstructData(JSCell*, ConstructData&amp; constructData)\n&quot;);
&gt;              push(@$outputArray, &quot;{\n&quot;);
&gt; -            push(@$outputArray, &quot;    constructData.native.function = construct${className};\n&quot;);
&gt; -            push(@$outputArray, &quot;    return ConstructTypeHost;\n&quot;);
&gt; +            if ($conditionalString) {
&gt; +                push(@$outputArray, &quot;#if $conditionalString\n&quot;);
&gt; +                push(@$outputArray, &quot;    constructData.native.function = construct;\n&quot;);
&gt; +                push(@$outputArray, &quot;    return ConstructTypeHost;\n&quot;);
&gt; +                push(@$outputArray, &quot;#else\n&quot;);
&gt; +                push(@$outputArray, &quot;    return Base::getConstructData(cell, constructData);\n&quot;);
&gt; +                push(@$outputArray, &quot;#endif\n&quot;);

The #else case causes build failure, because there is no cell named variable/argument here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131920</commentid>
    <comment_count>9</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-10-09 08:47:10 -0700</bug_when>
    <thetext>I&apos;m going to fix this in bug149956.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262693</attachid>
            <date>2015-10-08 07:16:46 -0700</date>
            <delta_ts>2015-10-09 05:59:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149923-20151008161613.patch</filename>
            <type>text/plain</type>
            <size>30947</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwNzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmRmNzIxYTFjZDYzYjYy
NjhhNGZiNTkwM2FlYWMyNmRiNDQ4ZjE3My4uZDdlYWZjNzhhMWU5ZTkyMDliZDY1MWU3MmI2ODkx
ZjNkN2ZjOThlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYzIEBACiAyMDE1LTEwLTA4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAKKyAgICAgICAgUmF0aW9u
YWxpemUgSlNYWENvbnN0cnVjdG9yIGNsYXNzIGRlZmluaXRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTkyMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERlY2xhcmF0aW9uIG9mIEpTWFhDb25zdHJ1
Y3Rvcjo6Y29uc3RydWN0IGFuZCBKU1hYQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEKKyAg
ICAgICAgYXMgbG9uZyBhcyBKU1hYIGlzIGNvbnN0cnVjdGFibGUgZnJvbSBKYXZhU2NyaXB0Lgor
CisgICAgICAgIFByZXZpb3VzbHksIEpTWFhDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0IHdhcyBub3Qg
Z2VuZXJhdGVkIGluIGNhc2Ugb2YgQ3VzdG9tQ29uc3RydWN0b3IuCisgICAgICAgIEl0IGlzIG5v
dyBnZW5lcmF0ZWQgYW5kIGRpcmVjdGx5IGNhbGxzIHRoZSBjdXN0b20gY29uc3RydWN0b3IgZnVu
Y3Rpb24uCisKKyAgICAgICAgZ2V0Q29uc3RydWN0RGF0YSB3YXMgZGVjbGFyZWQgY29uZGl0aW9u
YWxseSB3aXRoICNpZiBpbiBjYXNlIG9mIENvbnN0cnVjdG9yQ29uZGl0aW9uYWwuCisgICAgICAg
IFRoZSAjaWYgYXJlIG5vdyB3aXRoaW4gZ2V0Q29uc3RydWN0RGF0YSBib2R5LgorCisgICAgICAg
IENvdmVyZWQgYnkgYmluZGluZyB0ZXN0cy4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0
aW9uKToKKyAgICAgICAgKEdlbmVyYXRlT3ZlcmxvYWRlZENvbnN0cnVjdG9yRGVmaW5pdGlvbik6
CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbik6CisgICAgICAgIChHZW5l
cmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcyk6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVj
dG9yRGVmaW5pdGlvbnMpOi4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDb25z
dHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEN1c3RvbUNvbnN0
cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZh
Y2VPYmplY3RDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOi4KKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmdldENv
bnN0cnVjdERhdGEpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0
b3I6OmNvbnN0cnVjdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1
Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpnZXRDb25z
dHJ1Y3REYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZENvbnN0cnVj
dG9yTmFtZWRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3ROb2RlQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3ROb2RlQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0T2JqQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczEp
OgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
czIpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yczMpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yczQpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEp
OgorCisyMDE1LTEwLTA4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24u
ZnI+CisKICAgICAgICAgQmluZGluZyBnZW5lcmF0ZWQgSlMgY29uc3RydWN0b3JzIHNob3VsZCB1
c2UgR2xvYmFsT2JqZWN0IHJlZmVyZW5jZXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0OTg3MgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDBhOWI1ZTc2MTgwZDU2MzgzN2Jj
N2JlMTU0MmUwMzliMDFlOGMyYTAuLjllN2RmM2Q1NDQxM2QyNDg0ZmUzM2NhMGI3M2Y0NjhjYjlh
ZjcwODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCkBAIC00NjI2LDIyICs0NjI2LDkgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0
b3JEZWNsYXJhdGlvbgogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKTsKIAogICAg
IGlmIChJc0NvbnN0cnVjdGFibGUoJGludGVyZmFjZSkgJiYgISRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJOYW1lZENvbnN0cnVjdG9yIn0pIHsKLSAgICAgICAgaWYgKCFIYXNDdXN0
b21Db25zdHJ1Y3RvcigkaW50ZXJmYWNlKSkgewotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAicHJvdGVjdGVkOlxuIik7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3Qke2Ns
YXNzTmFtZX0oSlNDOjpFeGVjU3RhdGUqKTtcbiIpOwotICAgICAgICAgICAgbXkgQGNvbnN0cnVj
dG9ycyA9IEB7JGludGVyZmFjZS0+Y29uc3RydWN0b3JzfTsKLSAgICAgICAgICAgIGlmIChAY29u
c3RydWN0b3JzID4gMSkgewotICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGNvbnN0cnVjdG9y
IChAY29uc3RydWN0b3JzKSB7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRvdmVybG9hZGVkSW5k
ZXggPSAiIiAuICRjb25zdHJ1Y3Rvci0+e292ZXJsb2FkZWRJbmRleH07Ci0gICAgICAgICAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdCR7Y2xhc3NOYW1lfSR7b3ZlcmxvYWRlZEluZGV4fShK
U0M6OkV4ZWNTdGF0ZSopO1xuIik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0KLSAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0
b3ItPkdlbmVyYXRlQ29uc3RydWN0b3JDb25kaXRpb25hbFN0cmluZygkaW50ZXJmYWNlKTsKLSAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiI2lmICRjb25kaXRpb25hbFN0cmluZ1xuIikgaWYg
JGNvbmRpdGlvbmFsU3RyaW5nOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJwcm90ZWN0
ZWQ6XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyBKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0KEpTQzo6RXhlY1N0YXRlKik7XG4i
KTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyBKU0M6OkNvbnN0cnVj
dFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6Q29uc3RydWN0RGF0YSYp
O1xuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiNlbmRpZiAvLyAkY29uZGl0aW9u
YWxTdHJpbmdcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICB9CiAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAifTtcblxuIik7CiAKQEAgLTQ2NjcsNyArNDY1NCw3IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICBKUyR7aW50ZXJmYWNlTmFtZX1OYW1lZENvbnN0cnVjdG9yKEpTQzo6U3Ry
dWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmKTsKLSAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTJHtpbnRlcmZhY2VOYW1lfShKU0M6OkV4ZWNT
dGF0ZSopOworICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0KEpTQzo6RXhlY1N0YXRlKik7CiAgICAgc3RhdGljIEpTQzo6Q29uc3RydWN0VHlwZSBn
ZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDb25zdHJ1Y3REYXRhJik7CiAgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKIH07CkBA
IC00NzA5LDEzICs0Njk2LDExIEBAIHN1YiBHZW5lcmF0ZU92ZXJsb2FkZWRDb25zdHJ1Y3RvckRl
ZmluaXRpb24KICAgICBteSAkY2xhc3NOYW1lID0gc2hpZnQ7CiAgICAgbXkgJGludGVyZmFjZSA9
IHNoaWZ0OwogCi0gICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICIke2NsYXNzTmFtZX1Db25zdHJ1Y3Rv
cjo6Y29uc3RydWN0JHtjbGFzc05hbWV9IjsKLQogICAgICMgRklYTUU6IEltcGxlbWVudCBzdXBw
b3J0IGZvciBvdmVybG9hZGVkIGNvbnN0cnVjdG9ycyB3aXRoIHZhcmlhZGljIGFyZ3VtZW50cy4K
ICAgICBteSAkbGVuZ3RoT2ZMb25nZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yUGFyYW1ldGVyTGlz
dCA9IExlbmd0aE9mTG9uZ2VzdEZ1bmN0aW9uUGFyYW1ldGVyTGlzdCgkaW50ZXJmYWNlLT5jb25z
dHJ1Y3RvcnMpOwogCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCA8PEVORCk7Ci1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMICR7ZnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcjo6Y29uc3Ry
dWN0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0ZDo6bWlu
PHNpemVfdD4oJGxlbmd0aE9mTG9uZ2VzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvclBhcmFtZXRlckxp
c3QsIHN0YXRlLT5hcmd1bWVudENvdW50KCkpOwogRU5ECkBAIC00NzI1LDYgKzQ3MTAsNyBAQCBF
TkQKIAogICAgIG15IEBjb25zdHJ1Y3RvcnMgPSBAeyRpbnRlcmZhY2UtPmNvbnN0cnVjdG9yc307
CiAgICAgZm9yZWFjaCBteSAkb3ZlcmxvYWQgKEBjb25zdHJ1Y3RvcnMpIHsKKyAgICAgICAgbXkg
JGZ1bmN0aW9uTmFtZSA9ICJjb25zdHJ1Y3Qke2NsYXNzTmFtZX0iOwogICAgICAgICBteSAoJG51
bU1hbmRhdG9yeVBhcmFtcywgJHBhcmFtZXRlcnNDaGVjaywgQG5lZWRlZEFyZ3VtZW50cykgPSBH
ZW5lcmF0ZUZ1bmN0aW9uUGFyYW1ldGVyc0NoZWNrKCRvdmVybG9hZCk7CiAgICAgICAgICRsZWFz
dE51bU1hbmRhdG9yeVBhcmFtcyA9ICRudW1NYW5kYXRvcnlQYXJhbXMgaWYgKCRudW1NYW5kYXRv
cnlQYXJhbXMgPCAkbGVhc3ROdW1NYW5kYXRvcnlQYXJhbXMpOwogCkBAIC00NzY4LDcgKzQ3NTQs
NyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24KICAgICAgICAgICAgICRpbXBs
SW5jbHVkZXN7IjxydW50aW1lL0Vycm9yLmg+In0gPSAxOwogCiAgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksIDw8RU5EKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtjb25z
dHJ1Y3RvckNsYXNzTmFtZX06OmNvbnN0cnVjdCR7Y2xhc3NOYW1lfShFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6
Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgYXV0byoganNDb25zdHJ1Y3RvciA9
IGpzQ2FzdDwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSo+KHN0YXRlLT5jYWxsZWUoKSk7CiAKQEAg
LTQ4MzIsOCArNDgxOCwxMyBAQCBFTkQKIH0KIAogRU5ECi0gICAgICAgIH0gZWxzaWYgKCRpbnRl
cmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0J1aWx0aW5Db25zdHJ1Y3RvciJ9KSB7Ci0g
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmNvbnN0cnVjdCR7Y2xhc3NOYW1lfShK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUpXG4iKTsKKyAgICAgICAgIH0gZWxzaWYgKCRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Db25zdHJ1Y3RvciJ9KSB7CisgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICJKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmNvbnN0cnVjdChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUp
XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOworICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBjb25zdHJ1Y3Qke2NsYXNzTmFtZX0o
c3RhdGUpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOwor
ICAgICAgICAgfSBlbHNpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQnVp
bHRpbkNvbnN0cnVjdG9yIn0pIHsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIkpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6
Y29uc3RydWN0KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSlcbiIpOwogICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAie1xuIik7CiAKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9Kj4o
c3RhdGUtPmNhbGxlZSgpKTtcbiIpOwpAQCAtNDg0MSwxMiArNDgzMiwxNCBAQCBFTkQKIAogICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKICAgICAgICAgfSBlbHNpZiAo
IUhhc0N1c3RvbUNvbnN0cnVjdG9yKCRpbnRlcmZhY2UpICYmICghJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Ik5hbWVkQ29uc3RydWN0b3IifSB8fCAkZ2VuZXJhdGluZ05hbWVkQ29u
c3RydWN0b3IpKSB7Ci0gICAgICAgICAgICBteSAkb3ZlcmxvYWRlZEluZGV4U3RyaW5nID0gIiI7
CiAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT57b3ZlcmxvYWRlZEluZGV4fSAmJiAkZnVuY3Rp
b24tPntvdmVybG9hZGVkSW5kZXh9ID4gMCkgewotICAgICAgICAgICAgICAgICRvdmVybG9hZGVk
SW5kZXhTdHJpbmcgLj0gJGZ1bmN0aW9uLT57b3ZlcmxvYWRlZEluZGV4fTsKKyAgICAgICAgICAg
ICAgICBteSAkb3ZlcmxvYWRlZEluZGV4U3RyaW5nIC49ICRmdW5jdGlvbi0+e292ZXJsb2FkZWRJ
bmRleH07CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAic3RhdGljIGlubGlu
ZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3Qke2NsYXNzTmFtZX0ke292ZXJsb2FkZWRJbmRleFN0
cmluZ30oRXhlY1N0YXRlKiBzdGF0ZSlcbiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Y29uc3RydWN0KEV4ZWNT
dGF0ZSogc3RhdGUpXG4iKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2NvbnN0cnVjdG9yQ2xh
c3NOYW1lfTo6Y29uc3RydWN0JHtjbGFzc05hbWV9JHtvdmVybG9hZGVkSW5kZXhTdHJpbmd9KEV4
ZWNTdGF0ZSogc3RhdGUpXG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntc
biIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8qIGNhc3RlZFRo
aXMgPSBqc0Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0qPihzdGF0ZS0+Y2FsbGVlKCkpO1xu
Iik7CiAKQEAgLTUwMTcsMTMgKzUwMTAsMjAgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JIZWxw
ZXJNZXRob2RzCiAgICAgaWYgKElzQ29uc3RydWN0YWJsZSgkaW50ZXJmYWNlKSkgewogICAgICAg
ICBpZiAoISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOYW1lZENvbnN0cnVjdG9y
In0gfHwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yKSB7CiAgICAgICAgICAgICBteSAkY29u
ZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25zdHJ1Y3RvckNvbmRp
dGlvbmFsU3RyaW5nKCRpbnRlcmZhY2UpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiI2lmICRjb25kaXRpb25hbFN0cmluZ1xuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiQ29uc3RydWN0VHlwZSAke2NvbnN0cnVjdG9y
Q2xhc3NOYW1lfTo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25z
dHJ1Y3REYXRhKVxuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsK
LSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBjb25zdHJ1Y3REYXRhLm5hdGl2
ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdCR7Y2xhc3NOYW1lfTtcbiIpOwotICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDtcbiIpOworICAg
ICAgICAgICAgaWYgKCRjb25kaXRpb25hbFN0cmluZykgeworICAgICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiNpZiAkY29uZGl0aW9uYWxTdHJpbmdcbiIpOworICAgICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlv
biA9IGNvbnN0cnVjdDtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIjZWxzZVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIHJldHVybiBCYXNlOjpnZXRDb25zdHJ1Y3REYXRhKGNlbGwsIGNvbnN0cnVj
dERhdGEpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiI2VuZGlm
IC8vICRjb25kaXRpb25hbFN0cmluZ1xuIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5m
dW5jdGlvbiA9IGNvbnN0cnVjdDtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7XG4iKTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cbiIpOwotICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiI2VuZGlmIC8vICRjb25kaXRpb25hbFN0cmluZ1xuIikgaWYgJGNv
bmRpdGlvbmFsU3RyaW5nOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiXG4iKTsK
ICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3Vz
dG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCmluZGV4IDdhYzQyZTczODJl
NDExNjAxMzE4NzA3NWY5OTNlOGFlZWJiYzU0NWIuLmMyNjcwMjNiNWE2ZDEyN2Q1MzA5ODJjMTg2
NGZhYzI4YjA3MGE1MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1
c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcApAQCAtNzYsOSArNzYsMTYg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUo
dm0sICZnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9Citwcm90ZWN0ZWQ6CisgICAgc3Rh
dGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3QoSlNDOjpFeGVj
U3RhdGUqKTsKICAgICBzdGF0aWMgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEo
SlNDOjpKU0NlbGwqLCBKU0M6OkNvbnN0cnVjdERhdGEmKTsKIH07CiAKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFj
ZU9iamVjdENvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoSlNDOjpFeGVjU3RhdGUqIHN0YXRlKQorewor
ICAgIHJldHVybiBjb25zdHJ1Y3RKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFj
ZU9iamVjdChzdGF0ZSk7Cit9CisKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDdXN0b21Db25zdHJ1
Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0Q3Vz
dG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3RvciIsICZCYXNlOjpz
X2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRo
Tm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3RvcikgfTsKIAogSlNUZXN0Q3VzdG9tQ29uc3RydWN0
b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3Rvcjo6SlNUZXN0Q3VzdG9tQ29uc3RydWN0
b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKQEAgLTk3LDcgKzEwNCw3IEBAIHZvaWQg
SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24oVk0mCiAKIENvbnN0cnVjdFR5cGUgSlNUZXN0Q3VzdG9tQ29uc3RydWN0
b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0Nl
bGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQogewotICAgIGNvbnN0cnVjdERhdGEu
bmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9J
bnRlcmZhY2VPYmplY3Q7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25z
dHJ1Y3Q7CiAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RXZlbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMTQ2ZGU2OWVkNjgyOWE2Yjc5NDI2Y2IyYjM5ZmM1
NDhmOThhZWU2Ni4uYWM4ZWVlZDkwZDNkYTVjYTc2MWQ5MTRkMjBlMGZkZTA3NDc2N2MwMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcApAQCAtODMsMTEgKzgzLDExIEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sICZnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiBwcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIEpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1Rlc3RFdmVudENvbnN0cnVjdG9y
KEpTQzo6RXhlY1N0YXRlKik7CisgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3QoSlNDOjpFeGVjU3RhdGUqKTsKICAgICBzdGF0aWMgSlNDOjpDb25z
dHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNvbnN0cnVjdERh
dGEmKTsKIH07CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0RXZlbnRDb25z
dHJ1Y3RvckNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RFdmVudENvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdEV2ZW50Q29u
c3RydWN0b3JDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAg
YXV0byoganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3Ry
dWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOwogCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBKU1Rl
c3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNE
T01HbG9iYWxPYmplY3QKIAogQ29uc3RydWN0VHlwZSBKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29u
c3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3Ry
dWN0RGF0YSkKIHsKLSAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVj
dEpTVGVzdEV2ZW50Q29uc3RydWN0b3I7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rp
b24gPSBjb25zdHJ1Y3Q7CiAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50
ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbnRlcmZhY2UuY3BwCmluZGV4IDI5NjBmNzIwNGU1MGU2MDA5NWUwYWJlZjk5MTNiYjBmMjYz
MmE0OGEuLmRiZjc3OWYxNWFiNWM5ZmU5OGI0OTk5MjdmOTMwM2ViMzBlMDU1NzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZh
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbnRlcmZhY2UuY3BwCkBAIC0xNjMsMTAgKzE2Myw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
SlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
ICAgICB9CiBwcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RKU1Rlc3RJbnRlcmZhY2UoSlNDOjpFeGVjU3RhdGUqKTsKLSNpZiBF
TkFCTEUoVEVTVF9JTlRFUkZBQ0UpCisgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3QoSlNDOjpFeGVjU3RhdGUqKTsKICAgICBzdGF0aWMgSlNDOjpD
b25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNvbnN0cnVj
dERhdGEmKTsKLSNlbmRpZiAvLyBFTkFCTEUoVEVTVF9JTlRFUkZBQ0UpCiB9OwogCiAvKiBIYXNo
IHRhYmxlICovCkBAIC0yNjQsNyArMjYyLDcgQEAgQ09NUElMRV9BU1NFUlQoMSA9PSBUZXN0U3Vw
cGxlbWVudGFsOjpTVVBQTEVNRU5UQUxDT05TVEFOVDEsIFRlc3RJbnRlcmZhY2VFbnVtU1UKIENP
TVBJTEVfQVNTRVJUKDIgPT0gVGVzdFN1cHBsZW1lbnRhbDo6Q09OU1RfSU1QTCwgVGVzdEludGVy
ZmFjZUVudW1DT05TVF9JTVBMSXNXcm9uZ1VzZURvTm90Q2hlY2tDb25zdGFudHMpOwogI2VuZGlm
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0
b3I6OmNvbnN0cnVjdEpTVGVzdEludGVyZmFjZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0
KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rl
c3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKQEAgLTMwNCwxMyArMzAyLDE1IEBAIHZv
aWQgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhCiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rl
c3RJbnRlcmZhY2VDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAqdGhpcyk7CiB9CiAKLSNpZiBFTkFC
TEUoVEVTVF9JTlRFUkZBQ0UpCiBDb25zdHJ1Y3RUeXBlIEpTVGVzdEludGVyZmFjZUNvbnN0cnVj
dG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERh
dGEpCiB7Ci0gICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RKU1Rl
c3RJbnRlcmZhY2U7CisjaWYgRU5BQkxFKFRFU1RfSU5URVJGQUNFKQorICAgIGNvbnN0cnVjdERh
dGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0OwogICAgIHJldHVybiBDb25zdHJ1Y3RUeXBl
SG9zdDsKLX0KKyNlbHNlCisgICAgcmV0dXJuIEJhc2U6OmdldENvbnN0cnVjdERhdGEoY2VsbCwg
Y29uc3RydWN0RGF0YSk7CiAjZW5kaWYgLy8gRU5BQkxFKFRFU1RfSU5URVJGQUNFKQorfQogCiAv
KiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3Rvci5jcHAKaW5kZXggNDY2M2IwYjY2ZWYzZjJhMWQxMDdlMzY3ZjZmY2VkMzJk
NTc2Y2Q2Ni4uYWFmNjhkN2I2YTY0YjJiYWFlZTRmMDc1ZTMyNGJiZjNlZmYyY2MzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCkBAIC03OCwxMSArNzgsMTEg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgJmds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKik7CisgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3QoSlNDOjpFeGVjU3RhdGUqKTsKICAgICBzdGF0aWMg
SlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNv
bnN0cnVjdERhdGEmKTsKIH07CiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBK
U1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RKU0J1
aWx0aW5Db25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCitKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6
Y29uc3RydWN0KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBhdXRvKiBjYXN0ZWRUaGlz
ID0ganNDYXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IqPihzdGF0ZS0+
Y2FsbGVlKCkpOwogICAgIHJldHVybiBjcmVhdGVKU0J1aWx0aW48SlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3I+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmluaXRpYWxpemVGdW5jdGlvbigpLCAqY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgSlNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBK
U0RPTUdsb2JhbE9iCiAKIENvbnN0cnVjdFR5cGUgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JD
b25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25z
dHJ1Y3REYXRhKQogewotICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3Ry
dWN0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUu
ZnVuY3Rpb24gPSBjb25zdHJ1Y3Q7CiAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZGM5NTIxMWE0NDQxYTVm
YjUyMzhlYmZlY2YyOTUyZjhiMGE0ZjA4ZS4uOTJlYjEzMTg2N2I5ZWUzZTY1Yjc1NGQ1OTExNjRm
YzVlNTlmZjcxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApAQCAtMTAx
LDcgKzEwMSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBKU1Rlc3ROYW1lZENvbnN0cnVj
dG9yTmFtZWRDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Jik7
Ci0gICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RK
U1Rlc3ROYW1lZENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKik7CisgICAgc3RhdGljIEpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3QoSlNDOjpFeGVjU3RhdGUqKTsK
ICAgICBzdGF0aWMgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpKU0Nl
bGwqLCBKU0M6OkNvbnN0cnVjdERhdGEmKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6
Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogfTsKQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIEpT
VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBK
U0RPTUdsb2JhbE9iamVjdAogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoLCBqc051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3I6
OmNvbnN0cnVjdEpTVGVzdE5hbWVkQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3Ry
dWN0b3I6OmNvbnN0cnVjdChFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIGF1dG8qIGNhc3RlZFRo
aXMgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3IqPihzdGF0
ZS0+Y2FsbGVlKCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwg
MSkpCkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRD
b25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0RPTUdsb2JhbE8KIAogQ29uc3Ry
dWN0VHlwZSBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3Ry
dWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQogewotICAgIGNv
bnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SlNUZXN0TmFtZWRDb25zdHJ1
Y3RvcjsKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdDsKICAg
ICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAppbmRleCAwZGZlZmJk
NjQ3ZDY4Nzk5YjUxMDA5YTdkMzEzOTA3YmI5NjY3ZmUxLi5mZjdiYzRkNjIxNDliZjllNWUxOWZj
NTI4Y2U3YjlhM2JhMGY3YTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCkBAIC04MywxMSArODMsMTEgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTVGVzdE5vZGUoSlNDOjpFeGVjU3Rh
dGUqKTsKKyAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdChKU0M6OkV4ZWNTdGF0ZSopOwogICAgIHN0YXRpYyBKU0M6OkNvbnN0cnVjdFR5cGUgZ2V0
Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6Q29uc3RydWN0RGF0YSYpOwogfTsKIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3ROb2RlQ29uc3RydWN0b3I6OmNvbnN0
cnVjdEpTVGVzdE5vZGUoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSlNUZXN0Tm9kZUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcio+
KHN0YXRlLT5jYWxsZWUoKSk7CiAgICAgUmVmUHRyPFRlc3ROb2RlPiBvYmplY3QgPSBUZXN0Tm9k
ZTo6Y3JlYXRlKCk7CkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBKU1Rlc3ROb2RlQ29uc3RydWN0
b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamUK
IAogQ29uc3RydWN0VHlwZSBKU1Rlc3ROb2RlQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEo
SlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKIHsKLSAgICBjb25zdHJ1Y3RE
YXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEpTVGVzdE5vZGU7CisgICAgY29uc3RydWN0
RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3Q7CiAgICAgcmV0dXJuIENvbnN0cnVjdFR5
cGVIb3N0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IDQxNWIyZGQ4ZGZmMWVhOTgwODk2MjExNDNlOGMy
MjBkMDEwNjMwNTcuLmJlMjAzNzgxYThkM2UyMjcwYzUxOTEwNDYwZGM0ZDVkMTIzNWI0YWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCkBAIC0zNjUsNyArMzY1LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSlND
OjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5
cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0K
IHByb3RlY3RlZDoKLSAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnN0cnVjdEpTVGVzdE9iaihKU0M6OkV4ZWNTdGF0ZSopOworICAgIHN0YXRpYyBKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0KEpTQzo6RXhlY1N0YXRlKik7CiAg
ICAgc3RhdGljIEpTQzo6Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxs
KiwgSlNDOjpDb25zdHJ1Y3REYXRhJik7CiB9OwogCkBAIC00NjgsNyArNDY4LDcgQEAgQ09NUElM
RV9BU1NFUlQoMHgxYWJjID09IFRlc3RPYmo6OkNPTlNUX1ZBTFVFXzE0LCBUZXN0T2JqRW51bUNP
TlNUX1ZBTFVFXzE0SXNXcm8KIENPTVBJTEVfQVNTRVJUKDE1ID09IFRlc3RPYmo6OkNPTlNUX0lN
UEwsIFRlc3RPYmpFbnVtQ09OU1RfSU1QTElzV3JvbmdVc2VEb05vdENoZWNrQ29uc3RhbnRzKTsK
IENPTVBJTEVfQVNTRVJUKDAgPT0gVGVzdE9iajo6cmVhZG9ubHksIFRlc3RPYmpFbnVtcmVhZG9u
bHlJc1dyb25nVXNlRG9Ob3RDaGVja0NvbnN0YW50cyk7CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSlNUZXN0T2JqQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdE9iaihFeGVjU3Rh
dGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPYmpDb25zdHJ1
Y3Rvcjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgYXV0byogY2FzdGVkVGhp
cyA9IGpzQ2FzdDxKU1Rlc3RPYmpDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKQEAgLTUwMiw3ICs1MDIs
NyBAQCB2b2lkIEpTVGVzdE9iakNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplYwogCiBDb25zdHJ1Y3RUeXBlIEpTVGVzdE9iakNv
bnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0
cnVjdERhdGEpCiB7Ci0gICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1
Y3RKU1Rlc3RPYmo7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1
Y3Q7CiAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggNmFjNWZhM2U5NTEzOGNkOGVmZGVk
YWY1ZjI4ODc1NDY3ZGU0MmRkNS4uMTY3ZTQ3NWVmNjI0ZDU3NmU5ODUyYzllYzg1Mjc2M2FmNDNi
MzZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApA
QCAtODAsMTYgKzgwLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJl
OjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6
Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiBwcm90ZWN0ZWQ6
Ci0gICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKEpTQzo6RXhlY1N0YXRlKik7Ci0gICAgc3RhdGlj
IEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzMShKU0M6OkV4ZWNTdGF0ZSopOwotICAgIHN0YXRpYyBKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yczIoSlNDOjpFeGVjU3RhdGUqKTsKLSAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMzKEpTQzo6
RXhlY1N0YXRlKik7Ci0gICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNChKU0M6OkV4ZWNTdGF0ZSop
OwotICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczUoSlNDOjpFeGVjU3RhdGUqKTsKKyAgICBzdGF0
aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdChKU0M6OkV4ZWNT
dGF0ZSopOwogICAgIHN0YXRpYyBKU0M6OkNvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShK
U0M6OkpTQ2VsbCosIEpTQzo6Q29uc3RydWN0RGF0YSYpOwogfTsKIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNv
bnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMxKEV4ZWNTdGF0ZSogc3RhdGUpCitz
dGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMxKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpz
Q2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqPihzdGF0ZS0+Y2Fs
bGVlKCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCkBA
IC0xMDEsNyArOTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SgogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCksIG9iamVjdC5nZXQoKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMyKEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMyKEV4ZWNT
dGF0ZSogc3RhdGUpCiB7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCkBAIC0xMTMsNyArMTA4LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdEoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFz
T2JqZWN0KHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBvYmplY3QuZ2V0
KCkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzMyhFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBj
b25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMyhFeGVjU3RhdGUqIHN0YXRlKQog
ewogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc0NvbnN0cnVjdG9yKj4oc3RhdGUtPmNhbGxlZSgpKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQpAQCAtMTI1LDcgKzEyMCw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9y
Ojpjb25zdHJ1Y3RKCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pTKHN0
YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgb2JqZWN0LmdldCgpKSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnND
b25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczQoRXhlY1N0
YXRlKiBzdGF0ZSkKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yczQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBhdXRvKiBj
YXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rv
cio+KHN0YXRlLT5jYWxsZWUoKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENv
dW50KCkgPCAxKSkKQEAgLTEzNyw3ICsxMzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0Sgog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhzdGF0ZSwgY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIG9iamVjdC5nZXQoKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNv
bnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM1KEV4ZWNTdGF0ZSogc3RhdGUpCitz
dGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnM1KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpz
Q2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqPihzdGF0ZS0+Y2Fs
bGVlKCkpOwogICAgIFZlY3RvcjxpbnQ+IGxvbmdBcmdzID0gdG9OYXRpdmVBcmd1bWVudHM8aW50
PihzdGF0ZSwgMCk7CkBAIC0xNDcsMjAgKzE0MiwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0
SgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhzdGF0ZSwgY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCksIG9iamVjdC5nZXQoKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6
OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBzaXplX3Qg
YXJnc0NvdW50ID0gc3RkOjptaW48c2l6ZV90PigxLCBzdGF0ZS0+YXJndW1lbnRDb3VudCgpKTsK
ICAgICBKU1ZhbHVlIGFyZzAoc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoKGFyZ3NDb3Vu
dCA9PSAxICYmICgoYXJnMC5pc09iamVjdCgpICYmIGFzT2JqZWN0KGFyZzApLT5pbmhlcml0cyhK
U0FycmF5QnVmZmVyOjppbmZvKCkpKSkpKQotICAgICAgICByZXR1cm4gSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzMShzdGF0ZSk7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzMShzdGF0ZSk7CiAgICAgaWYgKChhcmdzQ291bnQgPT0gMSAmJiAoKGFyZzAu
aXNPYmplY3QoKSAmJiBhc09iamVjdChhcmcwKS0+aW5oZXJpdHMoSlNBcnJheUJ1ZmZlclZpZXc6
OmluZm8oKSkpKSkpCi0gICAgICAgIHJldHVybiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMyKHN0YXRl
KTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMy
KHN0YXRlKTsKICAgICBpZiAoKGFyZ3NDb3VudCA9PSAxICYmICgoYXJnMC5pc09iamVjdCgpICYm
IGFzT2JqZWN0KGFyZzApLT5pbmhlcml0cyhKU0Jsb2I6OmluZm8oKSkpKSkpCi0gICAgICAgIHJl
dHVybiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMzKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0
cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMzKHN0YXRlKTsKICAgICBpZiAoYXJnc0Nv
dW50ID09IDEpCi0gICAgICAgIHJldHVybiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29u
c3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM0KHN0YXRlKTsK
KyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM0KHN0
YXRlKTsKICAgICBpZiAoKQotICAgICAgICByZXR1cm4gSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNShz
dGF0ZSk7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzNShzdGF0ZSk7CiAgICAgaWYgKGFyZ3NDb3VudCA8IDEpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwpAQCAtMTg0LDcgKzE3OSw3IEBAIHZv
aWQgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIEpTRE9NR2xvYmFsCiAKIENvbnN0cnVjdFR5cGUgSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVj
dERhdGEmIGNvbnN0cnVjdERhdGEpCiB7Ci0gICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rp
b24gPSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOworICAgIGNvbnN0cnVj
dERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0OwogICAgIHJldHVybiBDb25zdHJ1Y3RU
eXBlSG9zdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKaW5kZXggZGM0NTlmOWU0MDkxM2I3Mzgy
N2RiNGQ3NGZmMmE1MTRjNzhkNGE5MS4uYmNiOTlkOWRjMjJjZTBiMDExZmZhNjc1MGFjMGRiYmY0
OTE1MmQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpOwogICAgIH0KIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTVGVzdFR5cGVkZWZzKEpTQzo6RXhlY1N0
YXRlKik7CisgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3QoSlNDOjpFeGVjU3RhdGUqKTsKICAgICBzdGF0aWMgSlNDOjpDb25zdHJ1Y3RUeXBlIGdl
dENvbnN0cnVjdERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNvbnN0cnVjdERhdGEmKTsKIH07CiAK
QEAgLTE0Miw3ICsxNDIsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0VHlw
ZWRlZnNDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQogICAgIHsgIlRlc3RTdWJPYmoiLCBEb250
RGVsZXRlIHwgUmVhZE9ubHksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvclRlc3RT
dWJPYmopLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPigwKSB9IH0sCiB9OwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdFR5
cGVkZWZzQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdFR5cGVkZWZzKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0
b3I6OmNvbnN0cnVjdChFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIGF1dG8qIGNhc3RlZFRoaXMg
PSBqc0Nhc3Q8SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKQEAgLTE3Niw3ICsx
NzYsNyBAQCB2b2lkIEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbAogCiBDb25zdHJ1Y3RUeXBlIEpTVGVzdFR5
cGVkZWZzQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0
YSYgY29uc3RydWN0RGF0YSkKIHsKLSAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9
IGNvbnN0cnVjdEpTVGVzdFR5cGVkZWZzOworICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0
aW9uID0gY29uc3RydWN0OwogICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262764</attachid>
            <date>2015-10-09 05:59:44 -0700</date>
            <delta_ts>2015-10-09 06:45:15 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-149923-20151009095910.patch</filename>
            <type>text/plain</type>
            <size>30779</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwNzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjk2NGZmNGE3OWFmYTc5
MWU3NmMzMGY0YTU0YWI1MzViN2RhYWFjNy4uNGFmMWFiZTlhNzg5ODI3YmViOGVjNGFhNDJlYzIy
ZTYzMWY1NGE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE1LTEwLTA5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgUmF0aW9u
YWxpemUgSlNYWENvbnN0cnVjdG9yIGNsYXNzIGRlZmluaXRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTkyMworCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIERlY2xhcmF0aW9uIG9mIEpTWFhDb25zdHJ1Y3Rv
cjo6Y29uc3RydWN0IGFuZCBKU1hYQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEKKyAgICAg
ICAgYXMgbG9uZyBhcyBKU1hYIGlzIGNvbnN0cnVjdGFibGUgZnJvbSBKYXZhU2NyaXB0LgorCisg
ICAgICAgIFByZXZpb3VzbHksIEpTWFhDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0IHdhcyBub3QgZ2Vu
ZXJhdGVkIGluIGNhc2Ugb2YgQ3VzdG9tQ29uc3RydWN0b3IuCisgICAgICAgIEl0IGlzIG5vdyBn
ZW5lcmF0ZWQgYW5kIGRpcmVjdGx5IGNhbGxzIHRoZSBjdXN0b20gY29uc3RydWN0b3IgZnVuY3Rp
b24uCisKKyAgICAgICAgZ2V0Q29uc3RydWN0RGF0YSB3YXMgZGVjbGFyZWQgY29uZGl0aW9uYWxs
eSB3aXRoICNpZiBpbiBjYXNlIG9mIENvbnN0cnVjdG9yQ29uZGl0aW9uYWwuCisgICAgICAgIFRo
ZSAjaWYgYXJlIG5vdyB3aXRoaW4gZ2V0Q29uc3RydWN0RGF0YSBib2R5LgorCisgICAgICAgIENv
dmVyZWQgYnkgYmluZGluZyB0ZXN0cy4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9u
KToKKyAgICAgICAgKEdlbmVyYXRlT3ZlcmxvYWRlZENvbnN0cnVjdG9yRGVmaW5pdGlvbik6Cisg
ICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbik6CisgICAgICAgIChHZW5lcmF0
ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcyk6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9y
RGVmaW5pdGlvbnMpOi4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1
Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEN1c3RvbUNvbnN0cnVj
dG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VP
YmplY3RDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOi4KKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmdldENvbnN0
cnVjdERhdGEpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRl
cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I6
OmNvbnN0cnVjdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rv
cjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1
Y3REYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZENvbnN0cnVjdG9y
TmFtZWRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5h
bWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3ROb2RlQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3ROb2RlQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0T2JqQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczEpOgor
ICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczIp
OgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
czMpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yczQpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yczUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEpOgor
CiAyMDE1LTEwLTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgYnVpbGQgZml4IGZvciBFTkFCTEUoTUVESUFfU0VTU0lPTikgYWZ0ZXIgcjE5
MDAzMC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KaW5kZXggMGE5YjVlNzYxODBkNTYzODM3YmM3YmUxNTQyZTAzOWIwMWU4YzJhMC4u
NWYwYjE1MTM0NDIwMzc5MDBjN2RmYjEyNTM2ZmMwN2Q1YmZjMmE1MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTQ2MjYs
MjIgKzQ2MjYsOSBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uCiAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIpOwogCiAgICAgaWYgKElzQ29uc3RydWN0YWJsZSgk
aW50ZXJmYWNlKSAmJiAhJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5hbWVkQ29u
c3RydWN0b3IifSkgewotICAgICAgICBpZiAoIUhhc0N1c3RvbUNvbnN0cnVjdG9yKCRpbnRlcmZh
Y2UpKSB7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJwcm90ZWN0ZWQ6XG4iKTsK
LSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdCR7Y2xhc3NOYW1lfShKU0M6OkV4ZWNTdGF0
ZSopO1xuIik7Ci0gICAgICAgICAgICBteSBAY29uc3RydWN0b3JzID0gQHskaW50ZXJmYWNlLT5j
b25zdHJ1Y3RvcnN9OwotICAgICAgICAgICAgaWYgKEBjb25zdHJ1Y3RvcnMgPiAxKSB7Ci0gICAg
ICAgICAgICAgICAgZm9yZWFjaCBteSAkY29uc3RydWN0b3IgKEBjb25zdHJ1Y3RvcnMpIHsKLSAg
ICAgICAgICAgICAgICAgICAgbXkgJG92ZXJsb2FkZWRJbmRleCA9ICIiIC4gJGNvbnN0cnVjdG9y
LT57b3ZlcmxvYWRlZEluZGV4fTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3Ry
dWN0JHtjbGFzc05hbWV9JHtvdmVybG9hZGVkSW5kZXh9KEpTQzo6RXhlY1N0YXRlKik7XG4iKTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBt
eSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25zdHJ1Y3Rv
ckNvbmRpdGlvbmFsU3RyaW5nKCRpbnRlcmZhY2UpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIjaWYgJGNvbmRpdGlvbmFsU3RyaW5nXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Cisg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInByb3RlY3RlZDpcbiIpOworICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3QoSlNDOjpFeGVjU3RhdGUqKTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgc3RhdGljIEpTQzo6Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRh
KEpTQzo6SlNDZWxsKiwgSlNDOjpDb25zdHJ1Y3REYXRhJik7XG4iKTsKLSAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiI2VuZGlmIC8vICRjb25kaXRpb25hbFN0cmluZ1xuIikgaWYgJGNvbmRp
dGlvbmFsU3RyaW5nOwogICAgIH0KICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9O1xuXG4iKTsK
IApAQCAtNDY2Nyw3ICs0NjU0LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEpTJHtpbnRl
cmZhY2VOYW1lfU5hbWVkQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9i
amVjdCYpOwotICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0SlMke2ludGVyZmFjZU5hbWV9KEpTQzo6RXhlY1N0YXRlKik7CisgICAgc3RhdGljIEpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3QoSlNDOjpFeGVjU3RhdGUq
KTsKICAgICBzdGF0aWMgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpK
U0NlbGwqLCBKU0M6OkNvbnN0cnVjdERhdGEmKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpT
Qzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogfTsKQEAgLTQ3MDksMTMgKzQ2OTYsMTEgQEAg
c3ViIEdlbmVyYXRlT3ZlcmxvYWRlZENvbnN0cnVjdG9yRGVmaW5pdGlvbgogICAgIG15ICRjbGFz
c05hbWUgPSBzaGlmdDsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CiAKLSAgICBteSAkZnVu
Y3Rpb25OYW1lID0gIiR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3Qke2NsYXNzTmFt
ZX0iOwotCiAgICAgIyBGSVhNRTogSW1wbGVtZW50IHN1cHBvcnQgZm9yIG92ZXJsb2FkZWQgY29u
c3RydWN0b3JzIHdpdGggdmFyaWFkaWMgYXJndW1lbnRzLgogICAgIG15ICRsZW5ndGhPZkxvbmdl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JQYXJhbWV0ZXJMaXN0ID0gTGVuZ3RoT2ZMb25nZXN0RnVu
Y3Rpb25QYXJhbWV0ZXJMaXN0KCRpbnRlcmZhY2UtPmNvbnN0cnVjdG9ycyk7CiAKICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksIDw8RU5EKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtm
dW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMICR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKICAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RkOjptaW48c2l6ZV90PigkbGVuZ3RoT2ZMb25n
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yUGFyYW1ldGVyTGlzdCwgc3RhdGUtPmFyZ3VtZW50Q291
bnQoKSk7CiBFTkQKQEAgLTQ3MjUsNiArNDcxMCw3IEBAIEVORAogCiAgICAgbXkgQGNvbnN0cnVj
dG9ycyA9IEB7JGludGVyZmFjZS0+Y29uc3RydWN0b3JzfTsKICAgICBmb3JlYWNoIG15ICRvdmVy
bG9hZCAoQGNvbnN0cnVjdG9ycykgeworICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gImNvbnN0
cnVjdCR7Y2xhc3NOYW1lfSI7CiAgICAgICAgIG15ICgkbnVtTWFuZGF0b3J5UGFyYW1zLCAkcGFy
YW1ldGVyc0NoZWNrLCBAbmVlZGVkQXJndW1lbnRzKSA9IEdlbmVyYXRlRnVuY3Rpb25QYXJhbWV0
ZXJzQ2hlY2soJG92ZXJsb2FkKTsKICAgICAgICAgJGxlYXN0TnVtTWFuZGF0b3J5UGFyYW1zID0g
JG51bU1hbmRhdG9yeVBhcmFtcyBpZiAoJG51bU1hbmRhdG9yeVBhcmFtcyA8ICRsZWFzdE51bU1h
bmRhdG9yeVBhcmFtcyk7CiAKQEAgLTQ3NjgsNyArNDc1NCw3IEBAIHN1YiBHZW5lcmF0ZUNvbnN0
cnVjdG9yRGVmaW5pdGlvbgogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siPHJ1bnRpbWUvRXJy
b3IuaD4ifSA9IDE7CiAKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgPDxFTkQpOwot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Y29u
c3RydWN0JHtjbGFzc05hbWV9KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMICR7Y29uc3RydWN0b3JDbGFzc05hbWV9Ojpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBz
dGF0ZSkKIHsKICAgICBhdXRvKiBqc0NvbnN0cnVjdG9yID0ganNDYXN0PCR7Y29uc3RydWN0b3JD
bGFzc05hbWV9Kj4oc3RhdGUtPmNhbGxlZSgpKTsKIApAQCAtNDgzMiw4ICs0ODE4LDEzIEBAIEVO
RAogfQogCiBFTkQKLSAgICAgICAgfSBlbHNpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkpTQnVpbHRpbkNvbnN0cnVjdG9yIn0pIHsKLSAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIkpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2NvbnN0cnVjdG9y
Q2xhc3NOYW1lfTo6Y29uc3RydWN0JHtjbGFzc05hbWV9KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSlc
biIpOworICAgICAgICAgfSBlbHNpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkN1c3RvbUNvbnN0cnVjdG9yIn0pIHsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IkpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1l
fTo6Y29uc3RydWN0KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSlcbiIpOworICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAie1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgcmV0dXJuIGNvbnN0cnVjdCR7Y2xhc3NOYW1lfShzdGF0ZSk7XG4iKTsKKyAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7CisgICAgICAgICB9IGVsc2lmICgkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNCdWlsdGluQ29uc3RydWN0b3IifSkgewor
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMICR7Y29uc3RydWN0b3JDbGFzc05hbWV9Ojpjb25zdHJ1Y3QoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlKVxuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsK
IAogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8qIGNhc3RlZFRoaXMg
PSBqc0Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0qPihzdGF0ZS0+Y2FsbGVlKCkpO1xuIik7
CkBAIC00ODQxLDEyICs0ODMyLDEzIEBAIEVORAogCiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICJ9XG5cbiIpOwogICAgICAgICB9IGVsc2lmICghSGFzQ3VzdG9tQ29uc3RydWN0b3Io
JGludGVyZmFjZSkgJiYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmFtZWRD
b25zdHJ1Y3RvciJ9IHx8ICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvcikpIHsKLSAgICAgICAg
ICAgIG15ICRvdmVybG9hZGVkSW5kZXhTdHJpbmcgPSAiIjsKICAgICAgICAgICAgIGlmICgkZnVu
Y3Rpb24tPntvdmVybG9hZGVkSW5kZXh9ICYmICRmdW5jdGlvbi0+e292ZXJsb2FkZWRJbmRleH0g
PiAwKSB7Ci0gICAgICAgICAgICAgICAgJG92ZXJsb2FkZWRJbmRleFN0cmluZyAuPSAkZnVuY3Rp
b24tPntvdmVybG9hZGVkSW5kZXh9OworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgInN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0JHtjbGFzc05hbWV9JGZ1
bmN0aW9uLT57b3ZlcmxvYWRlZEluZGV4fShFeGVjU3RhdGUqIHN0YXRlKVxuIik7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICJFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7Y29uc3RydWN0b3JDbGFzc05h
bWV9Ojpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSlcbiIpOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMICR7Y29uc3RydWN0b3JDbGFzc05hbWV9Ojpjb25zdHJ1Y3Qke2NsYXNzTmFtZX0ke292ZXJs
b2FkZWRJbmRleFN0cmluZ30oRXhlY1N0YXRlKiBzdGF0ZSlcbiIpOwogICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAie1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSo+
KHN0YXRlLT5jYWxsZWUoKSk7XG4iKTsKIApAQCAtNTAxNywxMyArNTAwOSwyMCBAQCBzdWIgR2Vu
ZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKICAgICBpZiAoSXNDb25zdHJ1Y3RhYmxlKCRp
bnRlcmZhY2UpKSB7CiAgICAgICAgIGlmICghJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Ik5hbWVkQ29uc3RydWN0b3IifSB8fCAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IpIHsK
ICAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5l
cmF0ZUNvbnN0cnVjdG9yQ29uZGl0aW9uYWxTdHJpbmcoJGludGVyZmFjZSk7Ci0gICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIjaWYgJGNvbmRpdGlvbmFsU3RyaW5nXG4iKSBpZiAkY29u
ZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJDb25zdHJ1
Y3RUeXBlICR7Y29uc3RydWN0b3JDbGFzc05hbWV9OjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCos
IENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpXG4iKTsKICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIntcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0JHtjbGFzc05hbWV9O1xu
Iik7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIENvbnN0cnVj
dFR5cGVIb3N0O1xuIik7CisgICAgICAgICAgICBpZiAoJGNvbmRpdGlvbmFsU3RyaW5nKSB7Cisg
ICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiI2lmICRjb25kaXRpb25hbFN0cmlu
Z1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGNvbnN0cnVj
dERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0O1xuIik7CisgICAgICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDtcbiIpOwor
ICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiNlbHNlXG4iKTsKKyAgICAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIEJhc2U6OmdldENvbnN0cnVj
dERhdGEoY2VsbCwgY29uc3RydWN0RGF0YSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIjZW5kaWZcbiIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVu
Y3Rpb24gPSBjb25zdHJ1Y3Q7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0O1xuIik7CisgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG4iKTsKLSAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiNlbmRpZiAvLyAkY29uZGl0aW9uYWxTdHJpbmdcbiIpIGlmICRjb25k
aXRpb25hbFN0cmluZzsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIlxuIik7CiAg
ICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3Rv
bUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcAppbmRleCA3YWM0MmU3MzgyZTQx
MTYwMTMxODcwNzVmOTkzZThhZWViYmM1NDViLi5jMjY3MDIzYjVhNmQxMjdkNTMwOTgyYzE4NjRm
YWMyOGIwNzBhNTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0
b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHAKQEAgLTc2LDkgKzc2LDE2IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCAmZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQorcHJvdGVjdGVkOgorICAgIHN0YXRp
YyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0KEpTQzo6RXhlY1N0
YXRlKik7CiAgICAgc3RhdGljIEpTQzo6Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpT
Qzo6SlNDZWxsKiwgSlNDOjpDb25zdHJ1Y3REYXRhJik7CiB9OwogCitKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VP
YmplY3RDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAg
ICByZXR1cm4gY29uc3RydWN0SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VP
YmplY3Qoc3RhdGUpOworfQorCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q3VzdG9tQ29uc3RydWN0
b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEN1c3Rv
bUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3IiLCAmQmFzZTo6c19p
bmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5v
SW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3IpIH07CiAKIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9y
V2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3I6OkpTVGVzdEN1c3RvbUNvbnN0cnVjdG9y
V2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCkBAIC05Nyw3ICsxMDQsNyBAQCB2b2lkIEpT
VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3I6OmZp
bmlzaENyZWF0aW9uKFZNJgogCiBDb25zdHJ1Y3RUeXBlIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9y
V2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxs
KiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKIHsKLSAgICBjb25zdHJ1Y3REYXRhLm5h
dGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50
ZXJmYWNlT2JqZWN0OworICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3Ry
dWN0OwogICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IDE0NmRlNjllZDY4MjlhNmI3OTQyNmNiMmIzOWZjNTQ4
Zjk4YWVlNjYuLmFjOGVlZWQ5MGQzZGE1Y2E3NjFkOTE0ZDIwZTBmZGUwNzQ3NjdjMDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVu
dENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTgzLDExICs4MywxMSBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7CiAgICAgfQogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNUZXN0RXZlbnRDb25zdHJ1Y3RvcihK
U0M6OkV4ZWNTdGF0ZSopOworICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0KEpTQzo6RXhlY1N0YXRlKik7CiAgICAgc3RhdGljIEpTQzo6Q29uc3Ry
dWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDb25zdHJ1Y3REYXRh
Jik7CiB9OwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3JDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0RXZlbnRDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RFdmVudENvbnN0
cnVjdG9yQ29uc3RydWN0b3I6OmNvbnN0cnVjdChFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIGF1
dG8qIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVj
dG9yKj4oc3RhdGUtPmNhbGxlZSgpKTsKIApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgSlNUZXN0
RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0CiAKIENvbnN0cnVjdFR5cGUgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0
cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVj
dERhdGEpCiB7Ci0gICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RK
U1Rlc3RFdmVudENvbnN0cnVjdG9yOworICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9u
ID0gY29uc3RydWN0OwogICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVy
ZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW50ZXJmYWNlLmNwcAppbmRleCAyOTYwZjcyMDRlNTBlNjAwOTVlMGFiZWY5OTEzYmIwZjI2MzJh
NDhhLi4xYTBlYjE1YTgxZGFjZjQ4ZDA1ZGVkMGY3MWE1OGU5NjJkZTFiZTQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW50ZXJmYWNlLmNwcApAQCAtMTYzLDEwICsxNjMsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpT
Qzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAg
ICAgfQogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0SlNUZXN0SW50ZXJmYWNlKEpTQzo6RXhlY1N0YXRlKik7Ci0jaWYgRU5B
QkxFKFRFU1RfSU5URVJGQUNFKQorICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0KEpTQzo6RXhlY1N0YXRlKik7CiAgICAgc3RhdGljIEpTQzo6Q29u
c3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDb25zdHJ1Y3RE
YXRhJik7Ci0jZW5kaWYgLy8gRU5BQkxFKFRFU1RfSU5URVJGQUNFKQogfTsKIAogLyogSGFzaCB0
YWJsZSAqLwpAQCAtMjY0LDcgKzI2Miw3IEBAIENPTVBJTEVfQVNTRVJUKDEgPT0gVGVzdFN1cHBs
ZW1lbnRhbDo6U1VQUExFTUVOVEFMQ09OU1RBTlQxLCBUZXN0SW50ZXJmYWNlRW51bVNVCiBDT01Q
SUxFX0FTU0VSVCgyID09IFRlc3RTdXBwbGVtZW50YWw6OkNPTlNUX0lNUEwsIFRlc3RJbnRlcmZh
Y2VFbnVtQ09OU1RfSU1QTElzV3JvbmdVc2VEb05vdENoZWNrQ29uc3RhbnRzKTsKICNlbmRpZgog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9y
Ojpjb25zdHJ1Y3RKU1Rlc3RJbnRlcmZhY2UoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I6OmNvbnN0cnVjdChF
eGVjU3RhdGUqIHN0YXRlKQogewogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0
SW50ZXJmYWNlQ29uc3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCkBAIC0zMDQsMTMgKzMwMiwxNSBAQCB2b2lk
IEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYQogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0
SW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZVZhbHVlcywgKnRoaXMpOwogfQogCi0jaWYgRU5BQkxF
KFRFU1RfSU5URVJGQUNFKQogQ29uc3RydWN0VHlwZSBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rv
cjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRh
KQogewotICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SlNUZXN0
SW50ZXJmYWNlOworI2lmIEVOQUJMRShURVNUX0lOVEVSRkFDRSkKKyAgICBjb25zdHJ1Y3REYXRh
Lm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdDsKICAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhv
c3Q7CisjZWxzZQorICAgIHJldHVybiBCYXNlOjpnZXRDb25zdHJ1Y3REYXRhKGNlbGwsIGNvbnN0
cnVjdERhdGEpOworI2VuZGlmCiB9Ci0jZW5kaWYgLy8gRU5BQkxFKFRFU1RfSU5URVJGQUNFKQog
CiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1
aWx0aW5Db25zdHJ1Y3Rvci5jcHAKaW5kZXggNDY2M2IwYjY2ZWYzZjJhMWQxMDdlMzY3ZjZmY2Vk
MzJkNTc2Y2Q2Ni4uYWFmNjhkN2I2YTY0YjJiYWFlZTRmMDc1ZTMyNGJiZjNlZmYyY2MzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCkBAIC03OCwxMSArNzgs
MTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Jmdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIHByb3RlY3RlZDoKLSAgICBzdGF0aWMg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKik7CisgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3QoSlNDOjpFeGVjU3RhdGUqKTsKICAgICBzdGF0
aWMgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6
OkNvbnN0cnVjdERhdGEmKTsKIH07CiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCitKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rv
cjo6Y29uc3RydWN0KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBhdXRvKiBjYXN0ZWRU
aGlzID0ganNDYXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IqPihzdGF0
ZS0+Y2FsbGVlKCkpOwogICAgIHJldHVybiBjcmVhdGVKU0J1aWx0aW48SlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3I+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmluaXRpYWxpemVGdW5jdGlvbigpLCAq
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgSlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU0RPTUdsb2JhbE9iCiAKIENvbnN0cnVjdFR5cGUgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3JDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBj
b25zdHJ1Y3REYXRhKQogewotICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29u
c3RydWN0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I7CisgICAgY29uc3RydWN0RGF0YS5uYXRp
dmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3Q7CiAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0Owog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZGM5NTIxMWE0NDQx
YTVmYjUyMzhlYmZlY2YyOTUyZjhiMGE0ZjA4ZS4uOTJlYjEzMTg2N2I5ZWUzZTY1Yjc1NGQ1OTEx
NjRmYzVlNTlmZjcxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApAQCAt
MTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yTmFtZWRDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0
Jik7Ci0gICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3RKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKik7CisgICAgc3RhdGljIEpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3QoSlNDOjpFeGVjU3RhdGUq
KTsKICAgICBzdGF0aWMgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpK
U0NlbGwqLCBKU0M6OkNvbnN0cnVjdERhdGEmKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpT
Qzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogfTsKQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lk
IEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdAogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bGVuZ3RoLCBqc051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0
b3I6OmNvbnN0cnVjdEpTVGVzdE5hbWVkQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29u
c3RydWN0b3I6OmNvbnN0cnVjdChFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIGF1dG8qIGNhc3Rl
ZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3IqPihz
dGF0ZS0+Y2FsbGVlKCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgp
IDwgMSkpCkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFt
ZWRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0RPTUdsb2JhbE8KIAogQ29u
c3RydWN0VHlwZSBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6Z2V0Q29u
c3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQogewotICAg
IGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SlNUZXN0TmFtZWRDb25z
dHJ1Y3RvcjsKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdDsK
ICAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAppbmRleCAwZGZl
ZmJkNjQ3ZDY4Nzk5YjUxMDA5YTdkMzEzOTA3YmI5NjY3ZmUxLi5mZjdiYzRkNjIxNDliZjllNWUx
OWZjNTI4Y2U3YjlhM2JhMGY3YTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCkBAIC04MywxMSArODMsMTEgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgJmdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTVGVzdE5vZGUoSlNDOjpFeGVj
U3RhdGUqKTsKKyAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnN0cnVjdChKU0M6OkV4ZWNTdGF0ZSopOwogICAgIHN0YXRpYyBKU0M6OkNvbnN0cnVjdFR5cGUg
Z2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6Q29uc3RydWN0RGF0YSYpOwogfTsK
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3ROb2RlQ29uc3RydWN0b3I6OmNv
bnN0cnVjdEpTVGVzdE5vZGUoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSlNUZXN0Tm9kZUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE5vZGVDb25zdHJ1Y3Rv
cio+KHN0YXRlLT5jYWxsZWUoKSk7CiAgICAgUmVmUHRyPFRlc3ROb2RlPiBvYmplY3QgPSBUZXN0
Tm9kZTo6Y3JlYXRlKCk7CkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBKU1Rlc3ROb2RlQ29uc3Ry
dWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amUKIAogQ29uc3RydWN0VHlwZSBKU1Rlc3ROb2RlQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERh
dGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKIHsKLSAgICBjb25zdHJ1
Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEpTVGVzdE5vZGU7CisgICAgY29uc3Ry
dWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3Q7CiAgICAgcmV0dXJuIENvbnN0cnVj
dFR5cGVIb3N0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IDQxNWIyZGQ4ZGZmMWVhOTgwODk2MjExNDNl
OGMyMjBkMDEwNjMwNTcuLmJlMjAzNzgxYThkM2UyMjcwYzUxOTEwNDYwZGM0ZDVkMTIzNWI0YWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouY3BwCkBAIC0zNjUsNyArMzY1LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
SlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6
OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAg
IH0KIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdEpTVGVzdE9iaihKU0M6OkV4ZWNTdGF0ZSopOworICAgIHN0YXRpYyBKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0KEpTQzo6RXhlY1N0YXRlKik7
CiAgICAgc3RhdGljIEpTQzo6Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlND
ZWxsKiwgSlNDOjpDb25zdHJ1Y3REYXRhJik7CiB9OwogCkBAIC00NjgsNyArNDY4LDcgQEAgQ09N
UElMRV9BU1NFUlQoMHgxYWJjID09IFRlc3RPYmo6OkNPTlNUX1ZBTFVFXzE0LCBUZXN0T2JqRW51
bUNPTlNUX1ZBTFVFXzE0SXNXcm8KIENPTVBJTEVfQVNTRVJUKDE1ID09IFRlc3RPYmo6OkNPTlNU
X0lNUEwsIFRlc3RPYmpFbnVtQ09OU1RfSU1QTElzV3JvbmdVc2VEb05vdENoZWNrQ29uc3RhbnRz
KTsKIENPTVBJTEVfQVNTRVJUKDAgPT0gVGVzdE9iajo6cmVhZG9ubHksIFRlc3RPYmpFbnVtcmVh
ZG9ubHlJc1dyb25nVXNlRG9Ob3RDaGVja0NvbnN0YW50cyk7CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSlNUZXN0T2JqQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdE9iaihFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPYmpDb25z
dHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgYXV0byogY2FzdGVk
VGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmpDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKQEAgLTUwMiw3ICs1
MDIsNyBAQCB2b2lkIEpTVGVzdE9iakNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplYwogCiBDb25zdHJ1Y3RUeXBlIEpTVGVzdE9i
akNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNv
bnN0cnVjdERhdGEpCiB7Ci0gICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25z
dHJ1Y3RKU1Rlc3RPYmo7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25z
dHJ1Y3Q7CiAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggNmFjNWZhM2U5NTEzOGNkOGVm
ZGVkYWY1ZjI4ODc1NDY3ZGU0MmRkNS4uMTY3ZTQ3NWVmNjI0ZDU3NmU5ODUyYzllYzg1Mjc2M2Fm
NDNiMzZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNw
cApAQCAtODAsMTYgKzgwLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0
dXJlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhK
U0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiBwcm90ZWN0
ZWQ6Ci0gICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKEpTQzo6RXhlY1N0YXRlKik7Ci0gICAgc3Rh
dGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzMShKU0M6OkV4ZWNTdGF0ZSopOwotICAgIHN0YXRpYyBKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yczIoSlNDOjpFeGVjU3RhdGUqKTsKLSAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMzKEpT
Qzo6RXhlY1N0YXRlKik7Ci0gICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNChKU0M6OkV4ZWNTdGF0
ZSopOwotICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3Ry
dWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczUoSlNDOjpFeGVjU3RhdGUqKTsKKyAgICBz
dGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdChKU0M6OkV4
ZWNTdGF0ZSopOwogICAgIHN0YXRpYyBKU0M6OkNvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0
YShKU0M6OkpTQ2VsbCosIEpTQzo6Q29uc3RydWN0RGF0YSYpOwogfTsKIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6
OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMxKEV4ZWNTdGF0ZSogc3RhdGUp
CitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMxKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9
IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqPihzdGF0ZS0+
Y2FsbGVlKCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkp
CkBAIC0xMDEsNyArOTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SgogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCksIG9iamVjdC5nZXQoKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMyKEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgaW5saW5l
IEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMyKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCkBAIC0xMTMsNyArMTA4
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdEoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGFzT2JqZWN0KHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBvYmplY3Qu
Z2V0KCkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzMyhFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1
ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMyhFeGVjU3RhdGUqIHN0YXRl
KQogewogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc0NvbnN0cnVjdG9yKj4oc3RhdGUtPmNhbGxlZSgpKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQpAQCAtMTI1LDcgKzEyMCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVj
dG9yOjpjb25zdHJ1Y3RKCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pT
KHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgb2JqZWN0LmdldCgpKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczQoRXhl
Y1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBhdXRv
KiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1
Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVu
dENvdW50KCkgPCAxKSkKQEAgLTEzNyw3ICsxMzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0
SgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhzdGF0ZSwgY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCksIG9iamVjdC5nZXQoKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6
OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM1KEV4ZWNTdGF0ZSogc3RhdGUp
CitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM1KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9
IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqPihzdGF0ZS0+
Y2FsbGVlKCkpOwogICAgIFZlY3RvcjxpbnQ+IGxvbmdBcmdzID0gdG9OYXRpdmVBcmd1bWVudHM8
aW50PihzdGF0ZSwgMCk7CkBAIC0xNDcsMjAgKzE0MiwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Y29uc3Ry
dWN0SgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhzdGF0ZSwgY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIG9iamVjdC5nZXQoKSkpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0
b3I6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoRXhlY1N0YXRlKiBzdGF0
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBzaXpl
X3QgYXJnc0NvdW50ID0gc3RkOjptaW48c2l6ZV90PigxLCBzdGF0ZS0+YXJndW1lbnRDb3VudCgp
KTsKICAgICBKU1ZhbHVlIGFyZzAoc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoKGFyZ3ND
b3VudCA9PSAxICYmICgoYXJnMC5pc09iamVjdCgpICYmIGFzT2JqZWN0KGFyZzApLT5pbmhlcml0
cyhKU0FycmF5QnVmZmVyOjppbmZvKCkpKSkpKQotICAgICAgICByZXR1cm4gSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzMShzdGF0ZSk7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzMShzdGF0ZSk7CiAgICAgaWYgKChhcmdzQ291bnQgPT0gMSAmJiAoKGFy
ZzAuaXNPYmplY3QoKSAmJiBhc09iamVjdChhcmcwKS0+aW5oZXJpdHMoSlNBcnJheUJ1ZmZlclZp
ZXc6OmluZm8oKSkpKSkpCi0gICAgICAgIHJldHVybiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMyKHN0
YXRlKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMyKHN0YXRlKTsKICAgICBpZiAoKGFyZ3NDb3VudCA9PSAxICYmICgoYXJnMC5pc09iamVjdCgp
ICYmIGFzT2JqZWN0KGFyZzApLT5pbmhlcml0cyhKU0Jsb2I6OmluZm8oKSkpKSkpCi0gICAgICAg
IHJldHVybiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVj
dEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMzKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIGNv
bnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMzKHN0YXRlKTsKICAgICBpZiAoYXJn
c0NvdW50ID09IDEpCi0gICAgICAgIHJldHVybiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM0KHN0YXRl
KTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM0
KHN0YXRlKTsKICAgICBpZiAoKQotICAgICAgICByZXR1cm4gSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
NShzdGF0ZSk7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzNShzdGF0ZSk7CiAgICAgaWYgKGFyZ3NDb3VudCA8IDEpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CiAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwpAQCAtMTg0LDcgKzE3OSw3IEBA
IHZvaWQgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEpTRE9NR2xvYmFsCiAKIENvbnN0cnVjdFR5cGUgSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0
cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCiB7Ci0gICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVu
Y3Rpb24gPSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOworICAgIGNvbnN0
cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0OwogICAgIHJldHVybiBDb25zdHJ1
Y3RUeXBlSG9zdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKaW5kZXggZGM0NTlmOWU0MDkxM2I3
MzgyN2RiNGQ3NGZmMmE1MTRjNzhkNGE5MS4uYmNiOTlkOWRjMjJjZTBiMDExZmZhNjc1MGFjMGRi
YmY0OTE1MmQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTVGVzdFR5cGVkZWZzKEpTQzo6RXhl
Y1N0YXRlKik7CisgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3QoSlNDOjpFeGVjU3RhdGUqKTsKICAgICBzdGF0aWMgSlNDOjpDb25zdHJ1Y3RUeXBl
IGdldENvbnN0cnVjdERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNvbnN0cnVjdERhdGEmKTsKIH07
CiAKQEAgLTE0Miw3ICsxNDIsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0
VHlwZWRlZnNDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQogICAgIHsgIlRlc3RTdWJPYmoiLCBE
b250RGVsZXRlIHwgUmVhZE9ubHksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvclRl
c3RTdWJPYmopLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPigwKSB9IH0sCiB9OwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVz
dFR5cGVkZWZzQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdFR5cGVkZWZzKEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdFR5cGVkZWZzQ29uc3Ry
dWN0b3I6OmNvbnN0cnVjdChFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIGF1dG8qIGNhc3RlZFRo
aXMgPSBqc0Nhc3Q8SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKQEAgLTE3Niw3
ICsxNzYsNyBAQCB2b2lkIEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbAogCiBDb25zdHJ1Y3RUeXBlIEpTVGVz
dFR5cGVkZWZzQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0
RGF0YSYgY29uc3RydWN0RGF0YSkKIHsKLSAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlv
biA9IGNvbnN0cnVjdEpTVGVzdFR5cGVkZWZzOworICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1
bmN0aW9uID0gY29uc3RydWN0OwogICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>