<?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>154413</bug_id>
          
          <creation_ts>2016-02-18 13:56:31 -0800</creation_ts>
          <short_desc>Binding generator should support key value iterable</short_desc>
          <delta_ts>2016-02-23 01:55:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <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>mmaxfield</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1166172</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-02-18 13:56:31 -0800</bug_when>
    <thetext>WebIDL iterable keyword should be supported by binding generator.
It may be good to start with Key Value iterables.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166182</commentid>
    <comment_count>1</comment_count>
      <attachid>271694</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-02-18 14:19:31 -0800</bug_when>
    <thetext>Created attachment 271694
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166412</commentid>
    <comment_count>2</comment_count>
      <attachid>271753</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-02-19 07:30:00 -0800</bug_when>
    <thetext>Created attachment 271753
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166717</commentid>
    <comment_count>3</comment_count>
      <attachid>271857</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-02-20 03:40:42 -0800</bug_when>
    <thetext>Created attachment 271857
Throwing in case of bad forEach argument</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166905</commentid>
    <comment_count>4</comment_count>
      <attachid>271857</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-02-21 17:41:38 -0800</bug_when>
    <thetext>Comment on attachment 271857
Throwing in case of bad forEach argument

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

&gt; Source/WebCore/Modules/fetch/FetchHeaders.h:68
&gt;          bool next(String&amp; nextKey, String&amp; nextValue);

The interface we have chosen for next is really strange. I think we could come up with something much cleaner. Does this interface come from some standard or is it entirely an internal WebKit thing? Here’s what I find strange:

1) The boolean that returns true only if there is no “next”. That seems really peculiar.
2) The use of two out arguments for the key/value pair.

I think that instead we should just use Optional&lt;std::tuple&lt;A, B&gt;&gt; as the return value and not have out arguments at all.

&gt; Source/WebCore/bindings/js/JSKeyValueIterator.h:137
&gt; +        JSC::MarkedArgumentBuffer arguments;
&gt; +        arguments.append(toJS(&amp;state, wrapper-&gt;globalObject(), nextValue));
&gt; +        arguments.append(toJS(&amp;state, wrapper-&gt;globalObject(), nextKey));
&gt; +        arguments.append(wrapper);
&gt; +        JSC::call(&amp;state, state.argument(0), callType, callData, wrapper, arguments);

Loop needs an exit if there’s an exception, right? Can we add a test that covers that case, please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166956</commentid>
    <comment_count>5</comment_count>
      <attachid>271908</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-02-21 23:29:14 -0800</bug_when>
    <thetext>Created attachment 271908
Patch for landing - Fixing callback throwing exception</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166959</commentid>
    <comment_count>6</comment_count>
      <attachid>271909</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-02-21 23:30:42 -0800</bug_when>
    <thetext>Created attachment 271909
Patch for landing - Fixing callback throwing exception</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166963</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-02-21 23:34:25 -0800</bug_when>
    <thetext>Thanks for the review.

(In reply to comment #4)
&gt; Comment on attachment 271857 [details]
&gt; Throwing in case of bad forEach argument
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=271857&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/fetch/FetchHeaders.h:68
&gt; &gt;          bool next(String&amp; nextKey, String&amp; nextValue);
&gt; 
&gt; The interface we have chosen for next is really strange. I think we could
&gt; come up with something much cleaner. Does this interface come from some
&gt; standard or is it entirely an internal WebKit thing? Here’s what I find
&gt; strange:
&gt; 
&gt; 1) The boolean that returns true only if there is no “next”. That seems
&gt; really peculiar.

This mimics &quot;done&quot; JS iterator
JSMapIterator has a next() method returning true.

&gt; 2) The use of two out arguments for the key/value pair.
&gt; 
&gt; I think that instead we should just use Optional&lt;std::tuple&lt;A, B&gt;&gt; as the
&gt; return value and not have out arguments at all.

JSMapIterator uses WTF::KeyValuePair as an out parameter.
I will tackle this issue as a follow-up bug.

&gt; &gt; Source/WebCore/bindings/js/JSKeyValueIterator.h:137
&gt; &gt; +        JSC::MarkedArgumentBuffer arguments;
&gt; &gt; +        arguments.append(toJS(&amp;state, wrapper-&gt;globalObject(), nextValue));
&gt; &gt; +        arguments.append(toJS(&amp;state, wrapper-&gt;globalObject(), nextKey));
&gt; &gt; +        arguments.append(wrapper);
&gt; &gt; +        JSC::call(&amp;state, state.argument(0), callType, callData, wrapper, arguments);
&gt; 
&gt; Loop needs an exit if there’s an exception, right? Can we add a test that
&gt; covers that case, please?

Right.
This is fixed in the current patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166966</commentid>
    <comment_count>8</comment_count>
      <attachid>271909</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-22 00:31:12 -0800</bug_when>
    <thetext>Comment on attachment 271909
Patch for landing - Fixing callback throwing exception

Clearing flags on attachment: 271909

Committed r196900: &lt;http://trac.webkit.org/changeset/196900&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166967</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-22 00:31:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167131</commentid>
    <comment_count>10</comment_count>
      <attachid>271909</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-02-22 12:08:55 -0800</bug_when>
    <thetext>Comment on attachment 271909
Patch for landing - Fixing callback throwing exception

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1062
&gt; +            push(@headerContent, &quot;    using IteratorKey = $keyType;\n&quot;);

This isn&apos;t going to work for the CSS Font Loading spec. FontFaceSet&apos;s iterator needs to be able to return new objects, but the $keyType is a raw pointer. It needs to be able to retain the object returned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167132</commentid>
    <comment_count>11</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-02-22 12:10:55 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Comment on attachment 271909 [details]
&gt; Patch for landing - Fixing callback throwing exception
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=271909&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1062
&gt; &gt; +            push(@headerContent, &quot;    using IteratorKey = $keyType;\n&quot;);
&gt; 
&gt; This isn&apos;t going to work for the CSS Font Loading spec. FontFaceSet&apos;s
&gt; iterator needs to be able to return new objects, but the $keyType is a raw
&gt; pointer. It needs to be able to retain the object returned.

It looks like there is a special exception for DOMStringList in GetNativeType(). I guess I&apos;ll add another exception for FontFace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167142</commentid>
    <comment_count>12</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-02-22 12:29:38 -0800</bug_when>
    <thetext>Thank you very much for implementing this!!! 👍👍👍👍👍</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167150</commentid>
    <comment_count>13</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-02-22 12:43:33 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Thank you very much for implementing this!!! 👍👍👍👍👍

You &apos;re welcome ;)

(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; Comment on attachment 271909 [details]
&gt; &gt; Patch for landing - Fixing callback throwing exception
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=271909&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1062
&gt; &gt; &gt; +            push(@headerContent, &quot;    using IteratorKey = $keyType;\n&quot;);
&gt; &gt; 
&gt; &gt; This isn&apos;t going to work for the CSS Font Loading spec. FontFaceSet&apos;s
&gt; &gt; iterator needs to be able to return new objects, but the $keyType is a raw
&gt; &gt; pointer. It needs to be able to retain the object returned.
&gt; 
&gt; It looks like there is a special exception for DOMStringList in
&gt; GetNativeType(). I guess I&apos;ll add another exception for FontFace.

I don&apos;t know. Maybe it is better to add a new GetXXType routine that takes care of new objets. cdumez, wdyt ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167340</commentid>
    <comment_count>14</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-02-23 01:55:58 -0800</bug_when>
    <thetext>Patch from bug 154531 removes the need to tweak the binding generator.
See bug 154577 as a follow-up.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271694</attachid>
            <date>2016-02-18 14:19:31 -0800</date>
            <delta_ts>2016-02-19 07:29:54 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-154413-20160218231910.patch</filename>
            <type>text/plain</type>
            <size>41229</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2NzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODBiNWUyMzNkNzM3YmI4
NTcxMWIyZDRhNGMyY2EwMTg4YzFjODM2Mi4uMThhMDE4MWM0MmNkYmViZTYyMmU0MThhNjMzMjYw
MTNiMmFkYjM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE2LTAyLTE4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgQmluZGlu
ZyBnZW5lcmF0b3Igc2hvdWxkIHN1cHBvcnQga2V5IHZhbHVlIGl0ZXJhYmxlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ0MTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGFkZGVkIGxh
eW91dCBhbmQgYmluZGluZyB0ZXN0cy4KKworICAgICAgICBpdGVyYWJsZTxrZXksIHZhbHVlPiBp
biBhIElETCBmaWxlIHdpbGwgdHJpZ2dlciB0aGUgZ2VuZXJhdGlvbiBvZiBlbnRyaWVzLCBrZXlz
LCB2YWx1ZXMsIFtTeW1ib2wuaXRlcmF0b3JdIGFuZCBmb3JFYWNoIG1ldGhvZHMgdG8gdGhlIHBy
b3RvdHlwZS4KKyAgICAgICAgVXBkYXRlZCBGZXRjaEhlYWRlcnMgYW5kIEZvbnRGYWNlU2V0IHRv
IHVzZSBpdC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIE1vZHVsZXMv
ZmV0Y2gvRmV0Y2hIZWFkZXJzLmlkbDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNw
cDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0ZldGNoSGVhZGVyc0N1c3RvbS5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNGb250RmFjZVNldEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0ZvbnRGYWNlU2V0OjpyZWFkeSk6IERlbGV0ZWQuCisgICAgICAgICog
YmluZGluZ3MvanMvSlNLZXlWYWx1ZUl0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVLZXlWYWx1ZUl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmtleVZhbHVlSXRlcmF0b3JG
b3JFYWNoKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToK
KyAgICAgICAgKEdldEZ1bmN0aW9uTmFtZSk6CisgICAgICAgIChQcm90b3R5cGVGdW5jdGlvbkNv
dW50KToKKyAgICAgICAgKFByb3RvdHlwZVByb3BlcnR5Q291bnQpOgorICAgICAgICAoR2VuZXJh
dGVQcm9wZXJ0aWVzSGFzaFRhYmxlKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24p
OgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2FsbCk6CisgICAgICAg
IChHZW5lcmF0ZUltcGxlbWVudGF0aW9uSXRlcmFibGVGdW5jdGlvbnMpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQ6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy9JRExQYXJzZXIucG06CisgICAgICAgIChwYXJzZU9wZXJhdGlvbk9ySXRlcmF0b3IpOgor
ICAgICAgICAocGFyc2VPcGVyYXRpb25Pckl0ZXJhdG9yUmVzdCk6CisgICAgICAgIChwYXJzZUl0
ZXJhYmxlUmVzdCk6CisgICAgICAgIChwYXJzZU9wdGlvbmFsSXRlcmFibGVJbnRlcmZhY2UpOgor
ICAgICAgICAoYXBwbHlNZW1iZXJMaXN0KToKKyAgICAgICAgKHBhcnNlU3BlY2lhbCk6IERlbGV0
ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmpQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3ltYm9sSXRlcmF0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uS2V5cyk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhbHVlcyk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkZvckVhY2gpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAgICAgICAgKiBjc3MvRm9udEZh
Y2VTZXQuaWRsOgorCiAyMDE2LTAyLTE3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBh
cHBsZS5jb20+CiAKICAgICAgICAgW0ZvbnQgTG9hZGluZ10gSW1wbGVtZW50IEZvbnRGYWNlU2V0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDEwMGFiNGQwOTJkNThhY2QwNTYwMTQ5MzZhMGY0YjRi
MDYzMjQzZWEuLmNiMTNlMDNkYjdlNWU2ZjI1NTQ5MTMwOGY4MDBkOTRiZmVhZTExNDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CkBAIC0xMTYwLDcgKzExNjAsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VT
CiAgICAgYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAogICAgIGJpbmRpbmdzL2pzL0pT
RXZlbnRUYXJnZXRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNFeGNlcHRpb25CYXNlLmNw
cAotICAgIGJpbmRpbmdzL2pzL0pTRmV0Y2hIZWFkZXJzQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdz
L2pzL0pTRmlsZVJlYWRlckN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9u
Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5pZGwKaW5kZXgg
ZjYzMzM5NzU5OGUxMGRhOWZiOGYzZGRjNmZmZmE3MDc5YTIwZWZjNi4uZjIzN2E3ODRjN2E1MWQw
ZGRkYTFkZTEwNWYzYzczNDViZjhhNzA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hIZWFkZXJzLmlkbApAQCAtNDAsMTEgKzQwLDcgQEAgaW50ZXJmYWNlIEZldGNo
SGVhZGVycyB7CiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gYm9vbGVhbiBoYXMoRE9NU3RyaW5nIG5h
bWUpOwogICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQgc2V0KERPTVN0cmluZyBuYW1lLCBET01T
dHJpbmcgdmFsdWUpOwogCi0gICAgLy8gRklYTUU6IFN1cHBvcnQgaXRlcmFibGUgd2l0aGluIGJp
bmRpbmcgZ2VuZXJhdG9yLgotICAgIC8vaXRlcmFibGU8RE9NU3RyaW5nLCBET01TdHJpbmc+Owot
ICAgIFtDdXN0b21dIGFueSBlbnRyaWVzKCk7Ci0gICAgW0N1c3RvbV0gYW55IGtleXMoKTsKLSAg
ICBbQ3VzdG9tXSBhbnkgdmFsdWVzKCk7CisgICAgaXRlcmFibGU8RE9NU3RyaW5nLCBET01TdHJp
bmc+OwogCiAgICAgW1ByaXZhdGUsIFJhaXNlc0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1hcHBl
bmRdIHZvaWQgYXBwZW5kRnJvbUpTKERPTVN0cmluZyBuYW1lLCBET01TdHJpbmcgdmFsdWUpOwog
ICAgIFtQcml2YXRlLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgaW5pdGlhbGl6ZVdpdGgoRmV0Y2hI
ZWFkZXJzIGhlYWRlcnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDlkZmQ3ODE0N2QxZjA4NTRjZmVjN2Q3NDNjMzhhYmIwZGM2
NjAzNTYuLmUwYTkyNzY4YzlkNDE1MThiMjdhODc3YTEzMWE4YWRjOGExZjM2NGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE1
NDksNyArMTU0OSw2IEBACiAJCTQxRDAxNUNCMEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlw
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQw
MTVDOTBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuY3BwICovOyB9OwogCQk0MUUxQjFE
MDBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMUIxQ0EwRkY1OTg2OTAwNTc2QjNCIC8q
IEFic3RyYWN0V29ya2VyLmNwcCAqLzsgfTsKIAkJNDFFMUIxRDEwRkY1OTg2OTAwNTc2QjNCIC8q
IEFic3RyYWN0V29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUUxQjFDQjBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCAqLzsg
fTsKLQkJNDFFOTEwQTcxQzYwRkQ2QzAwN0E0NTNGIC8qIEpTRmV0Y2hIZWFkZXJzQ3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTkxMEE2
MUM2MEZENkMwMDdBNDUzRiAvKiBKU0ZldGNoSGVhZGVyc0N1c3RvbS5jcHAgKi87IH07CiAJCTQx
RjA2MjE0MEY1RjE5MjYwMEEwN0VBQyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjIxMjBGNUYx
OTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oICovOyB9OwogCQk0MUYw
NjIxNTBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjIxMzBGNUYx
OTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgKi87IH07CiAJCTQx
RjA2NkU0MEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRHbG9iYWxPYmplY3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjA2NkUyMEY2NEJDRjYwMEEw
N0VBQyAvKiBTY3JpcHRHbG9iYWxPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTAyMSw3ICs5MDIwLDYgQEAKIAkJNDFFMUIxQ0EwRkY1
OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEFic3RyYWN0V29ya2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDFFMUIxQ0IwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0V29ya2VyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRTFCMUNDMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFj
dFdvcmtlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQWJzdHJhY3RXb3JrZXIuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MUU5MTBBNjFDNjBGRDZDMDA3QTQ1M0YgLyog
SlNGZXRjaEhlYWRlcnNDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNGZXRjaEhlYWRlcnNDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MUYwNjIxMjBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJj
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JEYXRhYmFzZVJl
c291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRjA2MjEzMEY1RjE5MjYw
MEEwN0VBQyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUYwNjZFMjBGNjRCQ0Y2MDBBMDdFQUMgLyogU2Ny
aXB0R2xvYmFsT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlw
dEdsb2JhbE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjI0MDQsNyAr
MjI0MDIsNiBAQAogCQkJCUJDMkVENTU0MEM2QjlCRDMwMDkyMEJGRiAvKiBKU0VsZW1lbnRDdXN0
b20uY3BwICovLAogCQkJCUFERUM3OEY3MThFRTUzMDgwMDEzMTVDMiAvKiBKU0VsZW1lbnRDdXN0
b20uaCAqLywKIAkJCQlCQ0VGQUY0RDBDMzE3RTY5MDBGQTgxRjYgLyogSlNFdmVudEN1c3RvbS5j
cHAgKi8sCi0JCQkJNDFFOTEwQTYxQzYwRkQ2QzAwN0E0NTNGIC8qIEpTRmV0Y2hIZWFkZXJzQ3Vz
dG9tLmNwcCAqLywKIAkJCQkyRTc1ODJFRDEyNzY0RjI2MDA2MjYyOEIgLyogSlNGaWxlUmVhZGVy
Q3VzdG9tLmNwcCAqLywKIAkJCQlGRTgwRDdBNjBFOUMxRUQyMDAwRDZGNzUgLyogSlNHZW9sb2Nh
dGlvbkN1c3RvbS5jcHAgKi8sCiAJCQkJQkNFN0IxOTIwRDRFODY5NjAwNzVBNTM5IC8qIEpTSGlz
dG9yeUN1c3RvbS5jcHAgKi8sCkBAIC0yOTU1Nyw3ICsyOTU1NCw2IEBACiAJCQkJOTdCMzhFMjgx
NTFDNDI3MzAwNDYyMkU5IC8qIERPTVdpbmRvd05vdGlmaWNhdGlvbnMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTdEMkFEMDMxNEI4MjNBNjAwOTNERjMyIC8qIERPTVdpbmRvd1Byb3BlcnR5LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUFBMkE1QUQ3MTZBNDg2MUEwMDk3NUEyNSAvKiBET01XaW5k
b3dTcGVlY2hTeW50aGVzaXMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDFFOTEwQTcxQzYwRkQ2
QzAwN0E0NTNGIC8qIEpTRmV0Y2hIZWFkZXJzQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE4Q0NCQjQ4MTUxRjgzMTYwMEFCN0NFOSAvKiBET01XaW5kb3dXZWJEYXRhYmFzZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQzUzREE0ODExNDMxMzREMDAwRDgxN0UgLyogRE9NV3JhcHBlcldv
cmxkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMUQxMzgxMEE1MzI1NTIwMDY0QkY1RiAvKiBE
T01YUGF0aC5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5kZXggN2UyM2YwNThiNGIwNDI3N2Y5MWRmMTMz
M2I2MWUxMzU1ZGNlMDkwZi4uZGQ0NzkwMWNkNTk3YjAzNWQ5ZjZiNTFkNWM4YjAyMzY0ZTVkYjJl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbElu
T25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5P
bmUuY3BwCkBAIC03Nyw3ICs3Nyw2IEBACiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmNwcCIK
ICNpbmNsdWRlICJKU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0V4Y2VwdGlv
bkJhc2UuY3BwIgotI2luY2x1ZGUgIkpTRmV0Y2hIZWFkZXJzQ3VzdG9tLmNwcCIKICNpbmNsdWRl
ICJKU0ZpbGVSZWFkZXJDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTR2VvbG9jYXRpb25DdXN0b20u
Y3BwIgogI2luY2x1ZGUgIkpTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGZXRjaEhlYWRlcnNDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGZXRjaEhlYWRlcnNDdXN0b20uY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTgyY2JmZjg1OGViYzRmMjIwYTNlYmZjOTI3NWQx
NDJiMTlkNDc2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmV0Y2hIZWFkZXJzQ3VzdG9tLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQ2Fu
b24gSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
LCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIHJlcXVpcmVk
IHRvIGJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIENhbm9uIEluYy4gbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5P
TiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAq
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNGZXRjaEhlYWRl
cnMuaCIKLQotI2lmIEVOQUJMRShGRVRDSF9BUEkpCi0KLSNpbmNsdWRlICJKU0tleVZhbHVlSXRl
cmF0b3IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBGSVhNRTogTW92ZSB0aGlzIGNv
ZGUgdG8gSlNGZXRjaEhlYWRlcnMuCi11c2luZyBGZXRjaEhlYWRlcnNJdGVyYXRvciA9IEpTS2V5
VmFsdWVJdGVyYXRvcjxKU0ZldGNoSGVhZGVycz47Ci11c2luZyBGZXRjaEhlYWRlcnNJdGVyYXRv
clByb3RvdHlwZSA9IEpTS2V5VmFsdWVJdGVyYXRvclByb3RvdHlwZTxKU0ZldGNoSGVhZGVycz47
Ci0KLXRlbXBsYXRlPD4KLWNvbnN0IEpTQzo6Q2xhc3NJbmZvIEZldGNoSGVhZGVyc0l0ZXJhdG9y
OjpzX2luZm8gPSB7ICJIZWFkZXJzIEl0ZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRF
X01FVEhPRF9UQUJMRShGZXRjaEhlYWRlcnNJdGVyYXRvcikgfTsKLQotdGVtcGxhdGU8PgotY29u
c3QgSlNDOjpDbGFzc0luZm8gRmV0Y2hIZWFkZXJzSXRlcmF0b3JQcm90b3R5cGU6OnNfaW5mbyA9
IHsgIkhlYWRlcnMgSXRlcmF0b3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEZldGNoSGVhZGVyc0l0ZXJhdG9yUHJvdG90eXBlKSB9OwotCi1KU0M6OkpTVmFsdWUgSlNG
ZXRjaEhlYWRlcnM6OmVudHJpZXMoSlNDOjpFeGVjU3RhdGUmKQotewotICAgIHJldHVybiBjcmVh
dGVJdGVyYXRvcjxKU0ZldGNoSGVhZGVycz4oKmdsb2JhbE9iamVjdCgpLCAqdGhpcywgSXRlcmF0
aW9uS2luZDo6S2V5VmFsdWUpOwotfQotCi1KU0M6OkpTVmFsdWUgSlNGZXRjaEhlYWRlcnM6Omtl
eXMoSlNDOjpFeGVjU3RhdGUmKQotewotICAgIHJldHVybiBjcmVhdGVJdGVyYXRvcjxKU0ZldGNo
SGVhZGVycz4oKmdsb2JhbE9iamVjdCgpLCAqdGhpcywgSXRlcmF0aW9uS2luZDo6S2V5KTsKLX0K
LQotSlNDOjpKU1ZhbHVlIEpTRmV0Y2hIZWFkZXJzOjp2YWx1ZXMoSlNDOjpFeGVjU3RhdGUmKQot
ewotICAgIHJldHVybiBjcmVhdGVJdGVyYXRvcjxKU0ZldGNoSGVhZGVycz4oKmdsb2JhbE9iamVj
dCgpLCAqdGhpcywgSXRlcmF0aW9uS2luZDo6VmFsdWUpOwotfQotCi19Ci0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGb250RmFjZVNldEN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZvbnRGYWNlU2V0Q3VzdG9tLmNwcApp
bmRleCBjZDg0OTg1NmNkOTY4Y2IxZDZlM2RmNzVkNjdiZDQ4YmY5MDE3YmQ2Li45YTNhZDMwZDg2
YmNmMGY0ZGI4ZjVhYTAzMGYzYTI5ZGE5ZGUwZjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0ZvbnRGYWNlU2V0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0ZvbnRGYWNlU2V0Q3VzdG9tLmNwcApAQCAtMzIsMzQgKzMyLDEwIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdXNpbmcgRm9udEZhY2VTZXRJdGVyYXRvciA9IEpT
S2V5VmFsdWVJdGVyYXRvcjxKU0ZvbnRGYWNlU2V0PjsKLXVzaW5nIEZvbnRGYWNlU2V0SXRlcmF0
b3JQcm90b3R5cGUgPSBKU0tleVZhbHVlSXRlcmF0b3JQcm90b3R5cGU8SlNGb250RmFjZVNldD47
Ci0KLXRlbXBsYXRlPD4KLWNvbnN0IEpTQzo6Q2xhc3NJbmZvIEZvbnRGYWNlU2V0SXRlcmF0b3I6
OnNfaW5mbyA9IHsgIkZvbnQgRmFjZSBTZXQgSXRlcmF0b3IiLCAmQmFzZTo6c19pbmZvLCAwLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEZvbnRGYWNlU2V0SXRlcmF0b3IpIH07Ci0KLXRlbXBsYXRlPD4K
LWNvbnN0IEpTQzo6Q2xhc3NJbmZvIEZvbnRGYWNlU2V0SXRlcmF0b3JQcm90b3R5cGU6OnNfaW5m
byA9IHsgIkZvbnQgRmFjZSBTZXQgSXRlcmF0b3IgUHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShGb250RmFjZVNldEl0ZXJhdG9yUHJvdG90eXBlKSB9Owot
CiBKU0M6OkpTVmFsdWUgSlNGb250RmFjZVNldDo6cmVhZHkoSlNDOjpFeGVjU3RhdGUmIGV4ZWNT
dGF0ZSkgY29uc3QKIHsKICAgICBhdXRvJiBwcm9taXNlID0gd3JhcHBlZCgpLnByb21pc2UoZXhl
Y1N0YXRlKTsKICAgICByZXR1cm4gcHJvbWlzZS5kZWZlcnJlZCgpLnByb21pc2UoKTsKIH0KIAot
SlNDOjpKU1ZhbHVlIEpTRm9udEZhY2VTZXQ6OmVudHJpZXMoSlNDOjpFeGVjU3RhdGUmKQotewot
ICAgIHJldHVybiBjcmVhdGVJdGVyYXRvcjxKU0ZvbnRGYWNlU2V0PigqZ2xvYmFsT2JqZWN0KCks
ICp0aGlzLCBJdGVyYXRpb25LaW5kOjpLZXlWYWx1ZSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSBKU0Zv
bnRGYWNlU2V0OjprZXlzKEpTQzo6RXhlY1N0YXRlJikKLXsKLSAgICByZXR1cm4gY3JlYXRlSXRl
cmF0b3I8SlNGb250RmFjZVNldD4oKmdsb2JhbE9iamVjdCgpLCAqdGhpcywgSXRlcmF0aW9uS2lu
ZDo6S2V5KTsKLX0KLQotSlNDOjpKU1ZhbHVlIEpTRm9udEZhY2VTZXQ6OnZhbHVlcyhKU0M6OkV4
ZWNTdGF0ZSYpCi17Ci0gICAgcmV0dXJuIGNyZWF0ZUl0ZXJhdG9yPEpTRm9udEZhY2VTZXQ+KCpn
bG9iYWxPYmplY3QoKSwgKnRoaXMsIEl0ZXJhdGlvbktpbmQ6OlZhbHVlKTsKLX0KLQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNLZXlWYWx1ZUl0ZXJhdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0tleVZhbHVlSXRlcmF0b3IuaAppbmRleCBm
YmJmZmQwYzU3YmIwYWVlMDkyYmJiM2JmNDhjYzkyZTgwNzk4YzlkLi43MmI0Y2U1NTUxZGEyMDQ0
NDQ2YzNlNTVkODhlMDA1OTJkYzc0YmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0tleVZhbHVlSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0tleVZhbHVlSXRlcmF0b3IuaApAQCAtMTA1LDkgKzEwNSwzOCBAQCBwcml2YXRlOgog
fTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSlNXcmFwcGVyPgotSlNLZXlWYWx1ZUl0ZXJhdG9yPEpT
V3JhcHBlcj4qIGNyZWF0ZUl0ZXJhdG9yKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qs
IEpTV3JhcHBlciYgd3JhcHBlciwgSXRlcmF0aW9uS2luZCBraW5kKQorSlNDOjpFbmNvZGVkSlNW
YWx1ZSBjcmVhdGVLZXlWYWx1ZUl0ZXJhdG9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSXRlcmF0
aW9uS2luZCBraW5kLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUpCiB7Ci0gICAgcmV0dXJuIEpT
S2V5VmFsdWVJdGVyYXRvcjxKU1dyYXBwZXI+OjpjcmVhdGUoZ2xvYmFsT2JqZWN0LnZtKCksIGdl
dERPTVN0cnVjdHVyZTxKU0tleVZhbHVlSXRlcmF0b3I8SlNXcmFwcGVyPj4oZ2xvYmFsT2JqZWN0
LnZtKCksIGdsb2JhbE9iamVjdCksIHdyYXBwZXIsIGtpbmQpOworICAgIGF1dG8gd3JhcHBlciA9
IEpTQzo6anNEeW5hbWljQ2FzdDxKU1dyYXBwZXIqPihzdGF0ZS50aGlzVmFsdWUoKSk7CisgICAg
aWYgKFVOTElLRUxZKCF3cmFwcGVyKSkKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cihzdGF0ZSwgSlNXcmFwcGVyOjppbmZvKCktPmNsYXNzTmFtZSwgZnVuY3Rpb25OYW1lKTsKKyAg
ICBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0ID0gKndyYXBwZXItPmdsb2JhbE9iamVj
dCgpOworICAgIHJldHVybiBKU0M6OkpTVmFsdWU6OmVuY29kZShKU0tleVZhbHVlSXRlcmF0b3I8
SlNXcmFwcGVyPjo6Y3JlYXRlKGdsb2JhbE9iamVjdC52bSgpLCBnZXRET01TdHJ1Y3R1cmU8SlNL
ZXlWYWx1ZUl0ZXJhdG9yPEpTV3JhcHBlcj4+KGdsb2JhbE9iamVjdC52bSgpLCBnbG9iYWxPYmpl
Y3QpLCAqd3JhcHBlciwga2luZCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBKU1dyYXBwZXI+
CitKU0M6OkVuY29kZWRKU1ZhbHVlIGtleVZhbHVlSXRlcmF0b3JGb3JFYWNoKEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lKQoreworICAgIGF1dG8gd3JhcHBl
ciA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU1dyYXBwZXIqPihzdGF0ZS50aGlzVmFsdWUoKSk7Cisg
ICAgaWYgKFVOTElLRUxZKCF3cmFwcGVyKSkKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcihzdGF0ZSwgSlNXcmFwcGVyOjppbmZvKCktPmNsYXNzTmFtZSwgZnVuY3Rpb25OYW1lKTsK
KworICAgIEpTQzo6Q2FsbERhdGEgY2FsbERhdGE7CisgICAgSlNDOjpDYWxsVHlwZSBjYWxsVHlw
ZSA9IEpTQzo6Z2V0Q2FsbERhdGEoc3RhdGUuYXJndW1lbnQoMCksIGNhbGxEYXRhKTsKKyAgICBB
U1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsKKworICAgIHVzaW5nIERPTVdyYXBwZWQg
PSB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8ZGVjbHR5cGUoc3RkOjpkZWNsdmFsPEpT
V3JhcHBlcj4oKS53cmFwcGVkKCkpPjo6dHlwZTsKKyAgICB0eXBlbmFtZSBET01XcmFwcGVkOjpJ
dGVyYXRvcjo6S2V5IG5leHRLZXk7CisgICAgdHlwZW5hbWUgRE9NV3JhcHBlZDo6SXRlcmF0b3I6
OlZhbHVlIG5leHRWYWx1ZTsKKyAgICBhdXRvIGl0ZXJhdG9yID0gd3JhcHBlci0+d3JhcHBlZCgp
LmNyZWF0ZUl0ZXJhdG9yKCk7CisgICAgd2hpbGUgKCFpdGVyYXRvci5uZXh0KG5leHRLZXksIG5l
eHRWYWx1ZSkpIHsKKyAgICAgICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7
CisgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQodG9KUygmc3RhdGUsIHdyYXBwZXItPmdsb2JhbE9i
amVjdCgpLCBuZXh0VmFsdWUpKTsKKyAgICAgICAgYXJndW1lbnRzLmFwcGVuZCh0b0pTKCZzdGF0
ZSwgd3JhcHBlci0+Z2xvYmFsT2JqZWN0KCksIG5leHRLZXkpKTsKKyAgICAgICAgYXJndW1lbnRz
LmFwcGVuZCh3cmFwcGVyKTsKKyAgICAgICAgSlNDOjpjYWxsKCZzdGF0ZSwgc3RhdGUuYXJndW1l
bnQoMCksIGNhbGxUeXBlLCBjYWxsRGF0YSwgd3JhcHBlciwgYXJndW1lbnRzKTsKKyAgICB9IAor
ICAgIHJldHVybiBKU0M6OkpTVmFsdWU6OmVuY29kZShKU0M6OmpzVW5kZWZpbmVkKCkpOwogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBKU1dyYXBwZXI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDBhODhlYTIzNTU4ZTdhYmRk
YzNmMWU1MDdmODVmNDEwNWU1ZWRiNjAuLjRmMmM5MzYwOWQ3ZWVkZDQ4Njk0ZDFiMzcxNDNlNmEy
MmZmYWY0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCkBAIC02MDUsOCArNjA1LDExIEBAIHN1YiBHZXRGdW5jdGlvbk5hbWUK
ICAgICAgICAgcmV0dXJuIEdldEpTQnVpbHRpbkZ1bmN0aW9uTmFtZSgkY2xhc3NOYW1lLCAkZnVu
Y3Rpb24pOwogICAgIH0KIAorICAgIG15ICRmdW5jdGlvbk5hbWUgPSAkZnVuY3Rpb24tPnNpZ25h
dHVyZS0+bmFtZTsKKyAgICAkZnVuY3Rpb25OYW1lID0gIlN5bWJvbEl0ZXJhdG9yIiBpZiAkZnVu
Y3Rpb25OYW1lIGVxICJbU3ltYm9sLkl0ZXJhdG9yXSI7CisKICAgICBteSAka2luZCA9ICRmdW5j
dGlvbi0+aXNTdGF0aWMgPyAiQ29uc3RydWN0b3IiIDogKE9wZXJhdGlvblNob3VsZEJlT25JbnN0
YW5jZSgkaW50ZXJmYWNlLCAkZnVuY3Rpb24pID8gIkluc3RhbmNlIiA6ICJQcm90b3R5cGUiKTsK
LSAgICByZXR1cm4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGNsYXNzTmFtZSkgLiAka2lu
ZCAuICJGdW5jdGlvbiIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rpb24tPnNp
Z25hdHVyZS0+bmFtZSk7CisgICAgcmV0dXJuICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRj
bGFzc05hbWUpIC4gJGtpbmQgLiAiRnVuY3Rpb24iIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmly
c3QoJGZ1bmN0aW9uTmFtZSk7CiB9CiAKIHN1YiBHZXRTcGVjaWFsQWNjZXNzb3JGdW5jdGlvbkZv
clR5cGUKQEAgLTc2OSw2ICs3NzIsOCBAQCBzdWIgUHJvdG90eXBlRnVuY3Rpb25Db3VudAogICAg
ICAgICAkY291bnQrKyBpZiAhJGZ1bmN0aW9uLT5pc1N0YXRpYyAmJiAhT3BlcmF0aW9uU2hvdWxk
QmVPbkluc3RhbmNlKCRpbnRlcmZhY2UsICRmdW5jdGlvbik7CiAgICAgfQogCisgICAgJGNvdW50
ICs9IHNjYWxhciBAeyRpbnRlcmZhY2UtPml0ZXJhYmxlLT5mdW5jdGlvbnN9IGlmICRpbnRlcmZh
Y2UtPml0ZXJhYmxlOworCiAgICAgcmV0dXJuICRjb3VudDsKIH0KIApAQCAtMTQyNSwxMSArMTQz
MCwxNSBAQCBzdWIgR2VuZXJhdGVQcm9wZXJ0aWVzSGFzaFRhYmxlCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9KSB7
CisgICAgbXkgQGZ1bmN0aW9ucyA9IEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfTsKKyAgICBwdXNo
KEBmdW5jdGlvbnMsIEB7JGludGVyZmFjZS0+aXRlcmFibGUtPmZ1bmN0aW9uc30pIGlmICRpbnRl
cmZhY2UtPml0ZXJhYmxlOworICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAZnVuY3Rpb25zKSB7
CiAgICAgICAgIG5leHQgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiUHJpdmF0ZSJ9KTsKICAgICAgICAgbmV4dCBpZiAoJGZ1bmN0aW9uLT5pc1N0YXRpYyk7
CiAgICAgICAgIG5leHQgaWYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gJiYgJGZ1bmN0aW9u
LT57b3ZlcmxvYWRJbmRleH0gPiAxOwogICAgICAgICBuZXh0IGlmIE9wZXJhdGlvblNob3VsZEJl
T25JbnN0YW5jZSgkaW50ZXJmYWNlLCAkZnVuY3Rpb24pICE9ICRpc0luc3RhbmNlOworICAgICAg
ICBuZXh0IGlmICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lIGVxICJbU3ltYm9sLkl0ZXJhdG9y
XSI7CisKICAgICAgICAgbXkgJG5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKICAg
ICAgICAgcHVzaChAJGhhc2hLZXlzLCAkbmFtZSk7CiAKQEAgLTE4MzUsMTQgKzE4NDQsMTcgQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxudXNp
bmcgbmFtZXNwYWNlIEpTQztcblxuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJuYW1lc3Bh
Y2UgV2ViQ29yZSB7XG5cbiIpOwogCisgICAgbXkgQGZ1bmN0aW9ucyA9IEB7JGludGVyZmFjZS0+
ZnVuY3Rpb25zfTsKKyAgICBwdXNoKEBmdW5jdGlvbnMsIEB7JGludGVyZmFjZS0+aXRlcmFibGUt
PmZ1bmN0aW9uc30pIGlmICRpbnRlcmZhY2UtPml0ZXJhYmxlOworCiAgICAgbXkgJG51bUNvbnN0
YW50cyA9IEB7JGludGVyZmFjZS0+Y29uc3RhbnRzfTsKLSAgICBteSAkbnVtRnVuY3Rpb25zID0g
QHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9OworICAgIG15ICRudW1GdW5jdGlvbnMgPSBAZnVuY3Rp
b25zOwogICAgIG15ICRudW1BdHRyaWJ1dGVzID0gQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfTsK
IAogICAgIGlmICgkbnVtRnVuY3Rpb25zID4gMCkgewogICAgICAgICBteSAkaW5BcHBsZUNvcHly
aWdodCA9IDA7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCIvLyBGdW5jdGlvbnNcblxuIik7
Ci0gICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRpbnRlcmZhY2UtPmZ1bmN0aW9uc30p
IHsKKyAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEBmdW5jdGlvbnMpIHsKICAgICAgICAg
ICAgIG5leHQgaWYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gJiYgJGZ1bmN0aW9uLT57b3Zl
cmxvYWRJbmRleH0gPiAxOwogICAgICAgICAgICAgbmV4dCBpZiAkZnVuY3Rpb24tPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkZvcndhcmREZWNsYXJlSW5IZWFkZXIifTsKICAgICAg
ICAgICAgIG5leHQgaWYgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDdXN0b21CaW5kaW5nIn07CkBAIC0yMTIzLDYgKzIxMzUsMTEgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBwdXRE
aXJlY3Qodm0sIGNsaWVudERhdGEuYnVpbHRpbk5hbWVzKCkuIiAuICRmdW5jdGlvbi0+c2lnbmF0
dXJlLT5uYW1lIC4gIlByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0KCksIDAsIFN0cmluZygpLCAiIC4gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2UsICRj
bGFzc05hbWUsICRmdW5jdGlvbikgLiAiKSwgUmVhZE9ubHkgfCBEb250RW51bSk7XG4iKTsKICAg
ICAgICAgICAgIH0KIAorICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPml0ZXJhYmxlKSB7Cisg
ICAgICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJm
YWNlLCAkY2xhc3NOYW1lLCBAeyRpbnRlcmZhY2UtPml0ZXJhYmxlLT5mdW5jdGlvbnN9WzBdKTsK
KyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCgpLCAwLCBBU0NJSUxpdGVyYWwoXCJbU3ltYm9sLkl0ZXJhdG9yXVwiKSwgJGZ1
bmN0aW9uTmFtZSksIFJlYWRPbmx5IHwgRG9udEVudW0pO1xuIik7CisgICAgICAgICAgICB9CisK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX1Qcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSlcbiIpOwpAQCAtMjk5MCw2ICszMDA3LDEwIEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICB9CiAKKyAgICBpZiAoJGludGVyZmFj
ZS0+aXRlcmFibGUpIHsKKyAgICAgICAgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkl0ZXJhYmxlRnVu
Y3Rpb25zKCRpbnRlcmZhY2UpOworICAgIH0KKwogICAgIGlmICgkbmVlZHNWaXNpdENoaWxkcmVu
KSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX06OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcilcbiIpOwogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwpAQCAtMzkyMiw2ICszOTQzLDU5IEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKCkKICAgICB9CiB9CiAKK3N1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uSXRlcmFibGVGdW5jdGlvbnMKK3sKKyAgICBteSAkaW50ZXJmYWNl
ID0gc2hpZnQ7CisKKyAgICBpZiAobm90ICRpbnRlcmZhY2UtPml0ZXJhYmxlLT5pc01hcCkgewor
ICAgICAgICBkaWUgIk5vIHN1cHBvcnQgeWV0IGZvciBzZXQgaXRlcmF0b3JzIjsKKyAgICB9CisK
KyAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPm5hbWU7CisgICAgbXkgJGNsYXNz
TmFtZSA9ICJKUyRpbnRlcmZhY2VOYW1lIjsKKyAgICBteSAkdmlzaWJsZUludGVyZmFjZU5hbWUg
PSAkY29kZUdlbmVyYXRvci0+R2V0VmlzaWJsZUludGVyZmFjZU5hbWUoJGludGVyZmFjZSk7CisK
KyAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNLZXlWYWx1ZUl0ZXJhdG9yLmgiKTsKKworICAgIHB1
c2goQGltcGxDb250ZW50LCAgPDxFTkQpOwordXNpbmcgJHtpbnRlcmZhY2VOYW1lfUl0ZXJhdG9y
ID0gSlNLZXlWYWx1ZUl0ZXJhdG9yPCR7Y2xhc3NOYW1lfT47Cit1c2luZyAke2ludGVyZmFjZU5h
bWV9SXRlcmF0b3JQcm90b3R5cGUgPSBKU0tleVZhbHVlSXRlcmF0b3JQcm90b3R5cGU8JHtjbGFz
c05hbWV9PjsKKwordGVtcGxhdGU8PgorY29uc3QgSlNDOjpDbGFzc0luZm8gJHtpbnRlcmZhY2VO
YW1lfUl0ZXJhdG9yOjpzX2luZm8gPSB7ICIke3Zpc2libGVJbnRlcmZhY2VOYW1lfSBJdGVyYXRv
ciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoJHtpbnRlcmZhY2VOYW1l
fUl0ZXJhdG9yKSB9OworCit0ZW1wbGF0ZTw+Citjb25zdCBKU0M6OkNsYXNzSW5mbyAke2ludGVy
ZmFjZU5hbWV9SXRlcmF0b3JQcm90b3R5cGU6OnNfaW5mbyA9IHsgIiR7dmlzaWJsZUludGVyZmFj
ZU5hbWV9IEl0ZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRSgk
e2ludGVyZmFjZU5hbWV9SXRlcmF0b3JQcm90b3R5cGUpIH07CisKK0VORAorCisgICAgZm9yZWFj
aCBteSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+aXRlcmFibGUtPmZ1bmN0aW9uc30pIHsKKyAg
ICAgICAgbXkgJHByb3BlcnR5TmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOworICAg
ICAgICBteSAkZnVuY3Rpb25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2UsICRjbGFz
c05hbWUsICRmdW5jdGlvbik7CisKKyAgICAgICAgaWYgKG5vdCAkcHJvcGVydHlOYW1lIGVxICJm
b3JFYWNoIikgeworICAgICAgICAgICAgbXkgJGl0ZXJhdGlvbktpbmQgPSAiS2V5VmFsdWUiOwor
ICAgICAgICAgICAgJGl0ZXJhdGlvbktpbmQgPSAiS2V5IiBpZiAkcHJvcGVydHlOYW1lIGVxICJr
ZXlzIjsKKyAgICAgICAgICAgICRpdGVyYXRpb25LaW5kID0gIlZhbHVlIiBpZiAkcHJvcGVydHlO
YW1lIGVxICJ2YWx1ZXMiOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICA8PEVORCk7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtmdW5jdGlvbk5hbWV9KEpTQzo6
RXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gY3JlYXRlS2V5VmFsdWVJdGVyYXRvcjwk
e2NsYXNzTmFtZX0+KCpzdGF0ZSwgSXRlcmF0aW9uS2luZDo6JHtpdGVyYXRpb25LaW5kfSwgIiR7
cHJvcGVydHlOYW1lfSIpOworfQorCitFTkQKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAgPDxFTkQpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMICR7ZnVuY3Rpb25OYW1lfShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0
dXJuIGtleVZhbHVlSXRlcmF0b3JGb3JFYWNoPCR7Y2xhc3NOYW1lfT4oKnN0YXRlLCAiJHtwcm9w
ZXJ0eU5hbWV9Iik7Cit9CisKK0VORAorICAgICAgICB9CisgICAgfQorfQorCiBzdWIgR2V0TmF0
aXZlVHlwZUZyb21TaWduYXR1cmUKIHsKICAgICBteSAkc2lnbmF0dXJlID0gc2hpZnQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAppbmRl
eCBjMDc1NWRiOGJjM2Q1NjJiNjM2ZWIwYjVjMjM5YjQ0YzZkYTRiYTEyLi5kNzNiNzljZTJlZGE2
NzQzNjRjMGNjNDhhOWJhMzNjY2E0NTZjMGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQKQEAgLTc0LDYgKzc0LDcgQEAgSW1wbGlj
aXRUaGlzCiBJbml0aWFsaXplZEJ5RXZlbnRDb25zdHJ1Y3RvcgogSW50ZXJmYWNlTmFtZT0qCiBJ
c1dlYWtDYWxsYmFjaworSXRlcmFibGUKIEpTQnVpbHRpbgogSlNCdWlsdGluQ29uc3RydWN0b3IK
IEpTQ3VzdG9tRGVmaW5lT3duUHJvcGVydHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9JRExQYXJzZXIucG0KaW5kZXggNDcyN2NmN2JmMzVmYjE3NWRkNzhmNjc4Mzk3MTQzZmIx
OGYwYmQwNi4uNmJhNzQ5ZjljODI0OGNiYjFjZDdmNThjYWZlMjZmNmRmMTdkOTNkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KQEAgLTU1LDYgKzU1
LDcgQEAgc3RydWN0KCBkb21JbnRlcmZhY2UgPT4gewogICAgIGlzRXhjZXB0aW9uID0+ICckJywg
IyBVc2VkIGZvciBleGNlcHRpb24gaW50ZXJmYWNlcwogICAgIGlzQ2FsbGJhY2sgPT4gJyQnLCAj
IFVzZWQgZm9yIGNhbGxiYWNrIGludGVyZmFjZXMKICAgICBpc1BhcnRpYWwgPT4gJyQnLCAjIFVz
ZWQgZm9yIHBhcnRpYWwgaW50ZXJmYWNlcworICAgIGl0ZXJhYmxlID0+ICckJywgIyBVc2VkIGZv
ciBpdGVyYWJsZSBpbnRlcmZhY2VzCiB9KTsKIAogIyBVc2VkIHRvIHJlcHJlc2VudCBkb21JbnRl
cmZhY2UgY29udGVudHMgKG5hbWUgb2YgbWV0aG9kLCBzaWduYXR1cmUpCkBAIC04NSw2ICs4Niwx
NSBAQCBzdHJ1Y3QoIGRvbVNpZ25hdHVyZSA9PiB7CiAgICAgZGVmYXVsdCA9PiAnJCcsICMgRGVm
YXVsdCB2YWx1ZSBmb3IgcGFyYW1ldGVycwogfSk7CiAKKyMgVXNlZCB0byByZXByZXNlbnQgSXRl
cmFibGUgaW50ZXJmYWNlcworc3RydWN0KCBkb21JdGVyYWJsZSA9PiB7CisgICAgaXNNYXAgPT4g
JyQnLCAgICAgIyBJcyBtYXAgaXRlcmFibGUgb3Igc2V0IGl0ZXJhYmxlCisgICAga2V5VHlwZSA9
PiAnJCcsICAgIyBLZXkgdHlwZSBmb3IgbWFwIGl0ZXJhYmxlcworICAgIHZhbHVlVHlwZSA9PiAn
JCcsICMgVmFsdWUgdHlwZSBmb3IgbWFwIG9yIHNldCBpdGVyYWJsZXMKKyAgICBmdW5jdGlvbnMg
PT4gJ0AnLCAjIEl0ZXJhYmxlIGZ1bmN0aW9ucyAoZW50aXJlcywga2V5cywgdmFsdWVzLCBbU3lt
Ym9sLkl0ZXJhdG9yXSBjb250YWluaW5nIGV4dGVuZGVkIGF0dHJpYnV0ZXMKK30pOworCisKICMg
VXNlZCB0byByZXByZXNlbnQgc3RyaW5nIGNvbnN0YW50cwogc3RydWN0KCBkb21Db25zdGFudCA9
PiB7CiAgICAgbmFtZSA9PiAnJCcsICAgICAgIyBET00gQ29uc3RhbnQgaWRlbnRpZmllcgpAQCAt
MzI1LDkgKzMzNSw4IEBAIG15ICRuZXh0UHJpbWl0aXZlVHlwZV8yID0gJ14oZG91YmxlfGZsb2F0
fHVucmVzdHJpY3RlZCkkJzsKIG15ICRuZXh0QXJndW1lbnRMaXN0XzEgPSAnXihcKHw6OnxCeXRl
U3RyaW5nfERPTVN0cmluZ3xEYXRlfFxbfGFueXxib29sZWFufGJ5dGV8ZG91YmxlfGZsb2F0fGlu
fGludHxsb25nfG9iamVjdHxvY3RldHxvcHRpb25hbHxzZXF1ZW5jZXxzaG9ydHx1bnJlc3RyaWN0
ZWR8dW5zaWduZWQpJCc7CiBteSAkbmV4dE5vbkFueVR5cGVfMSA9ICdeKGJvb2xlYW58Ynl0ZXxk
b3VibGV8ZmxvYXR8aW50fGxvbmd8b2N0ZXR8c2hvcnR8dW5yZXN0cmljdGVkfHVuc2lnbmVkKSQn
OwogbXkgJG5leHRJbnRlcmZhY2VNZW1iZXJfMSA9ICdeKFwofDo6fEJ5dGVTdHJpbmd8RE9NU3Ry
aW5nfERhdGV8YW55fGF0dHJpYnV0ZXxib29sZWFufGJ5dGV8Y3JlYXRvcnxkZWxldGVyfGRvdWJs
ZXxmbG9hdHxnZXR0ZXJ8aW5oZXJpdHxpbnR8bGVnYWN5Y2FsbGVyfGxvbmd8b2JqZWN0fG9jdGV0
fHJlYWRvbmx5fHNlcXVlbmNlfHNlcmlhbGl6ZXJ8c2V0dGVyfHNob3J0fHN0YXRpY3xzdHJpbmdp
Zmllcnx1bnJlc3RyaWN0ZWR8dW5zaWduZWR8dm9pZCkkJzsKLW15ICRuZXh0T3B0aW9uYWxJdGVy
YXRvckludGVyZmFjZU9yT2JqZWN0XzEgPSAnXig7fD0pJCc7Ci1teSAkbmV4dEF0dHJpYnV0ZU9y
T3BlcmF0aW9uT3JJdGVyYXRvcl8xID0gJ14oc3RhdGljfHN0cmluZ2lmaWVyKSQnOwotbXkgJG5l
eHRBdHRyaWJ1dGVPck9wZXJhdGlvbk9ySXRlcmF0b3JfMiA9ICdeKFwofDo6fEJ5dGVTdHJpbmd8
RE9NU3RyaW5nfERhdGV8YW55fGJvb2xlYW58Ynl0ZXxjcmVhdG9yfGRlbGV0ZXJ8ZG91YmxlfGZs
b2F0fGdldHRlcnxpbnR8bGVnYWN5Y2FsbGVyfGxvbmd8b2JqZWN0fG9jdGV0fHNlcXVlbmNlfHNl
dHRlcnxzaG9ydHx1bnJlc3RyaWN0ZWR8dW5zaWduZWR8dm9pZCkkJzsKK215ICRuZXh0QXR0cmli
dXRlT3JPcGVyYXRpb25fMSA9ICdeKHN0YXRpY3xzdHJpbmdpZmllcikkJzsKK215ICRuZXh0QXR0
cmlidXRlT3JPcGVyYXRpb25fMiA9ICdeKFwofDo6fEJ5dGVTdHJpbmd8RE9NU3RyaW5nfERhdGV8
YW55fGJvb2xlYW58Ynl0ZXxjcmVhdG9yfGRlbGV0ZXJ8ZG91YmxlfGZsb2F0fGdldHRlcnxpbnR8
bGVnYWN5Y2FsbGVyfGxvbmd8b2JqZWN0fG9jdGV0fHNlcXVlbmNlfHNldHRlcnxzaG9ydHx1bnJl
c3RyaWN0ZWR8dW5zaWduZWR8dm9pZCkkJzsKIG15ICRuZXh0VW5yZXN0cmljdGVkRmxvYXRUeXBl
XzEgPSAnXihkb3VibGV8ZmxvYXQpJCc7CiBteSAkbmV4dEV4dGVuZGVkQXR0cmlidXRlUmVzdDNf
MSA9ICdeKFwsfDo6fFxdKSQnOwogbXkgJG5leHRFeGNlcHRpb25GaWVsZF8xID0gJ14oXCh8Ojp8
Qnl0ZVN0cmluZ3xET01TdHJpbmd8RGF0ZXxhbnl8Ym9vbGVhbnxieXRlfGRvdWJsZXxmbG9hdHxp
bnR8bG9uZ3xvYmplY3R8b2N0ZXR8c2VxdWVuY2V8c2hvcnR8dW5yZXN0cmljdGVkfHVuc2lnbmVk
KSQnOwpAQCAtOTYxLDcgKzk3MCw3IEBAIHN1YiBwYXJzZUF0dHJpYnV0ZU9yT3BlcmF0aW9uT3JJ
dGVyYXRvcgogICAgIGlmICgkbmV4dC0+dmFsdWUoKSBlcSAic2VyaWFsaXplciIpIHsKICAgICAg
ICAgcmV0dXJuICRzZWxmLT5wYXJzZVNlcmlhbGl6ZXIoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7
CiAgICAgfQotICAgIGlmICgkbmV4dC0+dmFsdWUoKSA9fiAvJG5leHRBdHRyaWJ1dGVPck9wZXJh
dGlvbk9ySXRlcmF0b3JfMS8pIHsKKyAgICBpZiAoJG5leHQtPnZhbHVlKCkgPX4gLyRuZXh0QXR0
cmlidXRlT3JPcGVyYXRpb25fMS8pIHsKICAgICAgICAgbXkgJHF1YWxpZmllciA9ICRzZWxmLT5w
YXJzZVF1YWxpZmllcigpOwogICAgICAgICBteSAkbmV3RGF0YU5vZGUgPSAkc2VsZi0+cGFyc2VB
dHRyaWJ1dGVPck9wZXJhdGlvblJlc3QoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CiAgICAgICAg
IGlmIChkZWZpbmVkKCRuZXdEYXRhTm9kZSkgJiYgJHF1YWxpZmllciBlcSAic3RhdGljIikgewpA
QCAtOTcyLDcgKzk4MSw3IEBAIHN1YiBwYXJzZUF0dHJpYnV0ZU9yT3BlcmF0aW9uT3JJdGVyYXRv
cgogICAgIGlmICgkbmV4dC0+dmFsdWUoKSA9fiAvJG5leHRBdHRyaWJ1dGVfMS8pIHsKICAgICAg
ICAgcmV0dXJuICRzZWxmLT5wYXJzZUF0dHJpYnV0ZSgkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsK
ICAgICB9Ci0gICAgaWYgKCRuZXh0LT50eXBlKCkgPT0gSWRlbnRpZmllclRva2VuIHx8ICRuZXh0
LT52YWx1ZSgpID1+IC8kbmV4dEF0dHJpYnV0ZU9yT3BlcmF0aW9uT3JJdGVyYXRvcl8yLykgewor
ICAgIGlmICgkbmV4dC0+dHlwZSgpID09IElkZW50aWZpZXJUb2tlbiB8fCAkbmV4dC0+dmFsdWUo
KSA9fiAvJG5leHRBdHRyaWJ1dGVPck9wZXJhdGlvbl8yLykgewogICAgICAgICByZXR1cm4gJHNl
bGYtPnBhcnNlT3BlcmF0aW9uT3JJdGVyYXRvcigkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKICAg
ICB9CiAgICAgJHNlbGYtPmFzc2VydFVuZXhwZWN0ZWRUb2tlbigkbmV4dC0+dmFsdWUoKSwgX19M
SU5FX18pOwpAQCAtMTIwNiwxMyArMTIxNSwxNyBAQCBzdWIgcGFyc2VPcGVyYXRpb25Pckl0ZXJh
dG9yCiAgICAgaWYgKCRuZXh0LT52YWx1ZSgpID1+IC8kbmV4dFNwZWNpYWxzXzEvKSB7CiAgICAg
ICAgIHJldHVybiAkc2VsZi0+cGFyc2VTcGVjaWFsT3BlcmF0aW9uKCRleHRlbmRlZEF0dHJpYnV0
ZUxpc3QpOwogICAgIH0KKyAgICBpZiAoJG5leHQtPnZhbHVlKCkgZXEgIml0ZXJhYmxlIikgewor
ICAgICAgICByZXR1cm4gJHNlbGYtPnBhcnNlSXRlcmFibGVSZXN0KCRleHRlbmRlZEF0dHJpYnV0
ZUxpc3QpOworICAgIH0KICAgICBpZiAoJG5leHQtPnR5cGUoKSA9PSBJZGVudGlmaWVyVG9rZW4g
fHwgJG5leHQtPnZhbHVlKCkgPX4gLyRuZXh0QXR0cmlidXRlT3JPcGVyYXRpb25SZXN0XzEvKSB7
CiAgICAgICAgIG15ICRyZXR1cm5UeXBlID0gJHNlbGYtPnBhcnNlUmV0dXJuVHlwZSgpOwotICAg
ICAgICBteSAkaW50ZXJmYWNlID0gJHNlbGYtPnBhcnNlT3BlcmF0aW9uT3JJdGVyYXRvclJlc3Qo
JGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7Ci0gICAgICAgIGlmIChkZWZpbmVkICgkaW50ZXJmYWNl
KSkgewotICAgICAgICAgICAgJGludGVyZmFjZS0+c2lnbmF0dXJlLT50eXBlKCRyZXR1cm5UeXBl
KTsKKyAgICAgICAgbXkgJG5leHQgPSAkc2VsZi0+bmV4dFRva2VuKCk7CisgICAgICAgIGlmICgk
bmV4dC0+dHlwZSgpID09IElkZW50aWZpZXJUb2tlbiB8fCAkbmV4dC0+dmFsdWUoKSBlcSAiKCIp
IHsKKyAgICAgICAgICAgIG15ICRvcGVyYXRpb24gPSAkc2VsZi0+cGFyc2VPcGVyYXRpb25SZXN0
KCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOworICAgICAgICAgICAgJG9wZXJhdGlvbi0+c2lnbmF0
dXJlLT50eXBlKCRyZXR1cm5UeXBlKTsKKyAgICAgICAgICAgIHJldHVybiAkb3BlcmF0aW9uOwog
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiAkaW50ZXJmYWNlOwogICAgIH0KICAgICAkc2VsZi0+
YXNzZXJ0VW5leHBlY3RlZFRva2VuKCRuZXh0LT52YWx1ZSgpLCBfX0xJTkVfXyk7CiB9CkBAIC0x
MjgwLDYyICsxMjkzLDcyIEBAIHN1YiBwYXJzZVNwZWNpYWwKICAgICAkc2VsZi0+YXNzZXJ0VW5l
eHBlY3RlZFRva2VuKCRuZXh0LT52YWx1ZSgpLCBfX0xJTkVfXyk7CiB9CiAKLXN1YiBwYXJzZU9w
ZXJhdGlvbk9ySXRlcmF0b3JSZXN0CitzdWIgcGFyc2VJdGVyYWJsZVJlc3QKIHsKICAgICBteSAk
c2VsZiA9IHNoaWZ0OwogICAgIG15ICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QgPSBzaGlmdDsKIAog
ICAgIG15ICRuZXh0ID0gJHNlbGYtPm5leHRUb2tlbigpOwotICAgIGlmICgkbmV4dC0+dmFsdWUo
KSBlcSAiaXRlcmF0b3IiKSB7Ci0gICAgICAgIHJldHVybiAkc2VsZi0+cGFyc2VJdGVyYXRvclJl
c3QoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7Ci0gICAgfQotICAgIGlmICgkbmV4dC0+dHlwZSgp
ID09IElkZW50aWZpZXJUb2tlbiB8fCAkbmV4dC0+dmFsdWUoKSBlcSAiKCIpIHsKLSAgICAgICAg
cmV0dXJuICRzZWxmLT5wYXJzZU9wZXJhdGlvblJlc3QoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7
Ci0gICAgfQotICAgICRzZWxmLT5hc3NlcnRVbmV4cGVjdGVkVG9rZW4oJG5leHQtPnZhbHVlKCks
IF9fTElORV9fKTsKLX0KLQotc3ViIHBhcnNlSXRlcmF0b3JSZXN0Ci17Ci0gICAgbXkgJHNlbGYg
PSBzaGlmdDsKLSAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0ID0gc2hpZnQ7Ci0KLSAgICBt
eSAkbmV4dCA9ICRzZWxmLT5uZXh0VG9rZW4oKTsKLSAgICBpZiAoJG5leHQtPnZhbHVlKCkgZXEg
Iml0ZXJhdG9yIikgewotICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0
VG9rZW4oKSwgIml0ZXJhdG9yIiwgX19MSU5FX18pOwotICAgICAgICAkc2VsZi0+cGFyc2VPcHRp
b25hbEl0ZXJhdG9ySW50ZXJmYWNlT3JPYmplY3QoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7Cisg
ICAgaWYgKCRuZXh0LT52YWx1ZSgpIGVxICJpdGVyYWJsZSIpIHsKKyAgICAgICAgJHNlbGYtPmFz
c2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICJpdGVyYWJsZSIsIF9fTElORV9fKTsK
KyAgICAgICAgbXkgJGl0ZXJhYmxlTm9kZSA9ICRzZWxmLT5wYXJzZU9wdGlvbmFsSXRlcmFibGVJ
bnRlcmZhY2UoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CiAgICAgICAgICRzZWxmLT5hc3NlcnRU
b2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiOyIsIF9fTElORV9fKTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gJGl0ZXJhYmxlTm9kZTsKICAgICB9CiAgICAgJHNlbGYtPmFz
c2VydFVuZXhwZWN0ZWRUb2tlbigkbmV4dC0+dmFsdWUoKSwgX19MSU5FX18pOwogfQogCi1zdWIg
cGFyc2VPcHRpb25hbEl0ZXJhdG9ySW50ZXJmYWNlT3JPYmplY3QKK3N1YiBwYXJzZU9wdGlvbmFs
SXRlcmFibGVJbnRlcmZhY2UKIHsKICAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgIG15ICRleHRl
bmRlZEF0dHJpYnV0ZUxpc3QgPSBzaGlmdDsKIAotICAgIG15ICRuZXh0ID0gJHNlbGYtPm5leHRU
b2tlbigpOwotICAgIGlmICgkbmV4dC0+dmFsdWUoKSA9fiAvJG5leHRPcHRpb25hbEl0ZXJhdG9y
SW50ZXJmYWNlT3JPYmplY3RfMS8pIHsKLSAgICAgICAgcmV0dXJuICRzZWxmLT5wYXJzZU9wdGlv
bmFsSXRlcmF0b3JJbnRlcmZhY2UoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7Ci0gICAgfQotICAg
IGlmICgkbmV4dC0+dmFsdWUoKSBlcSAib2JqZWN0IikgewotICAgICAgICAkc2VsZi0+YXNzZXJ0
VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIm9iamVjdCIsIF9fTElORV9fKTsKLSAgICAg
ICAgcmV0dXJuOworICAgIG15ICRzeW1ib2xJdGVyYXRvckZ1bmN0aW9uID0gZG9tRnVuY3Rpb24t
Pm5ldygpOworICAgICRzeW1ib2xJdGVyYXRvckZ1bmN0aW9uLT5zaWduYXR1cmUoZG9tU2lnbmF0
dXJlLT5uZXcoKSk7CisgICAgJHN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOworICAgICRzeW1ib2xJdGVy
YXRvckZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUoIltTeW1ib2wuSXRlcmF0b3JdIik7CisKKyAg
ICBteSAkZW50cmllc0Z1bmN0aW9uID0gZG9tRnVuY3Rpb24tPm5ldygpOworICAgICRlbnRyaWVz
RnVuY3Rpb24tPnNpZ25hdHVyZShkb21TaWduYXR1cmUtPm5ldygpKTsKKyAgICAkZW50cmllc0Z1
bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVM
aXN0KTsKKyAgICAkZW50cmllc0Z1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUoImVudHJpZXMiKTsK
KworICAgIG15ICRrZXlzRnVuY3Rpb24gPSBkb21GdW5jdGlvbi0+bmV3KCk7CisgICAgJGtleXNG
dW5jdGlvbi0+c2lnbmF0dXJlKGRvbVNpZ25hdHVyZS0+bmV3KCkpOworICAgICRrZXlzRnVuY3Rp
b24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3Qp
OworICAgICRrZXlzRnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSgia2V5cyIpOworCisgICAgbXkg
JHZhbHVlc0Z1bmN0aW9uID0gZG9tRnVuY3Rpb24tPm5ldygpOworICAgICR2YWx1ZXNGdW5jdGlv
bi0+c2lnbmF0dXJlKGRvbVNpZ25hdHVyZS0+bmV3KCkpOworICAgICR2YWx1ZXNGdW5jdGlvbi0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7Cisg
ICAgJHZhbHVlc0Z1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUoInZhbHVlcyIpOworCisgICAgbXkg
JGZvckVhY2hGdW5jdGlvbiA9IGRvbUZ1bmN0aW9uLT5uZXcoKTsKKyAgICAkZm9yRWFjaEZ1bmN0
aW9uLT5zaWduYXR1cmUoZG9tU2lnbmF0dXJlLT5uZXcoKSk7CisgICAgJGZvckVhY2hGdW5jdGlv
bi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7
CisgICAgJGZvckVhY2hGdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lKCJmb3JFYWNoIik7CisKKyAg
ICBteSAkbmV3RGF0YU5vZGUgPSBkb21JdGVyYWJsZS0+bmV3KCk7CisgICAgcHVzaChAeyRuZXdE
YXRhTm9kZS0+ZnVuY3Rpb25zfSwgJHN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24pOworICAgIHB1c2go
QHskbmV3RGF0YU5vZGUtPmZ1bmN0aW9uc30sICRlbnRyaWVzRnVuY3Rpb24pOworICAgIHB1c2go
QHskbmV3RGF0YU5vZGUtPmZ1bmN0aW9uc30sICRrZXlzRnVuY3Rpb24pOworICAgIHB1c2goQHsk
bmV3RGF0YU5vZGUtPmZ1bmN0aW9uc30sICR2YWx1ZXNGdW5jdGlvbik7CisgICAgcHVzaChAeyRu
ZXdEYXRhTm9kZS0+ZnVuY3Rpb25zfSwgJGZvckVhY2hGdW5jdGlvbik7CisKKyAgICAkc2VsZi0+
YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIjwiLCBfX0xJTkVfXyk7CisgICAg
bXkgJHR5cGUxID0gJHNlbGYtPmdldFRva2VuKCktPnZhbHVlKCk7CisgICAgaWYgKCRzZWxmLT5u
ZXh0VG9rZW4oKS0+dmFsdWUoKSBlcSAiLCIpIHsKKyAgICAgICAgJHNlbGYtPmFzc2VydFRva2Vu
VmFsdWUoJHNlbGYtPmdldFRva2VuKCksICIsIiwgX19MSU5FX18pOworICAgICAgICAkbmV3RGF0
YU5vZGUtPmlzTWFwKDEpOworICAgICAgICAkbmV3RGF0YU5vZGUtPmtleVR5cGUoJHR5cGUxKTsK
KyAgICAgICAgJG5ld0RhdGFOb2RlLT52YWx1ZVR5cGUoJHNlbGYtPmdldFRva2VuKCktPnZhbHVl
KCkpOworICAgIH0gZWxzZSB7CisgICAgICAgICRuZXdEYXRhTm9kZS0+aXNNYXAoMCk7CisgICAg
ICAgICRuZXdEYXRhTm9kZS0+dmFsdWVUeXBlKCR0eXBlMSk7CiAgICAgfQotICAgICRzZWxmLT5h
c3NlcnRVbmV4cGVjdGVkVG9rZW4oJG5leHQtPnZhbHVlKCksIF9fTElORV9fKTsKLX0KLQotc3Vi
IHBhcnNlT3B0aW9uYWxJdGVyYXRvckludGVyZmFjZQotewotICAgIG15ICRzZWxmID0gc2hpZnQ7
Ci0gICAgbXkgJGV4dGVuZGVkQXR0cmlidXRlTGlzdCA9IHNoaWZ0OworICAgICRzZWxmLT5hc3Nl
cnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiPiIsIF9fTElORV9fKTsKIAotICAgIG15
ICRuZXh0ID0gJHNlbGYtPm5leHRUb2tlbigpOwotICAgIGlmICgkbmV4dC0+dmFsdWUoKSBlcSAi
PSIpIHsKLSAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCks
ICI9IiwgX19MSU5FX18pOwotICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5UeXBlKCRzZWxmLT5n
ZXRUb2tlbigpLCBJZGVudGlmaWVyVG9rZW4pOwotICAgIH0KKyAgICByZXR1cm4gJG5ld0RhdGFO
b2RlOwogfQogCiBzdWIgcGFyc2VPcGVyYXRpb25SZXN0CkBAIC0yMTc3LDYgKzIyMDAsMTAgQEAg
c3ViIGFwcGx5TWVtYmVyTGlzdAogICAgICAgICAgICAgcHVzaChAeyRpbnRlcmZhY2UtPmNvbnN0
YW50c30sICRpdGVtKTsKICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgIH0KKyAgICAgICAgaWYg
KHJlZigkaXRlbSkgZXEgImRvbUl0ZXJhYmxlIikgeworICAgICAgICAgICAgJGludGVyZmFjZS0+
aXRlcmFibGUoJGl0ZW0pOworICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgfQogICAgICAgICBp
ZiAocmVmKCRpdGVtKSBlcSAiZG9tRnVuY3Rpb24iKSB7CiAgICAgICAgICAgICBpZiAoJGl0ZW0t
PnNpZ25hdHVyZS0+bmFtZSBlcSAiIikgewogICAgICAgICAgICAgICAgIHB1c2goQHskaW50ZXJm
YWNlLT5hbm9ueW1vdXNGdW5jdGlvbnN9LCAkaXRlbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IDRmY2EzNjk1
ZTlkMzI4MzczOTJlYWJkY2FhZjdhNDI0YWUwOTg1N2EuLjRiMjFjODNjZGQxOGMzNzgxOGMzMzc2
MzcyOTg1ZmI3OTM0MGVmNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVk
ZSAiSlNET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiSlNEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkpTRXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIkpTS2V5VmFsdWVJdGVyYXRvci5oIgogI2lu
Y2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIkpTU1ZHRG9jdW1lbnQuaCIKICNpbmNsdWRlICJK
U1NWR1BvaW50LmgiCkBAIC0xNzgsNiArMTc5LDExIEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb24o
CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQoSlNDOjpFeGVjU3RhdGUq
KTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKik7
CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnQoSlNDOjpFeGVj
U3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblN5bWJvbEl0ZXJhdG9yKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVz
KEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25LZXlzKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMo
SlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkZvckVhY2goSlNDOjpFeGVjU3RhdGUqKTsKIAogLy8gQXR0
cmlidXRlcwogCkBAIC02ODgsNiArNjk0LDEwIEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1
ZSBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KICAgICB7ICJ0ZXN0UHJvbWlzZUZ1
bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50KSwgKGludHB0cl90KSAo
MSkgfSB9LAogICAgIHsgInRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uIiwgSlNDOjpG
dW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0
aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhj
ZXB0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgInRlc3RQcm9taXNlRnVuY3Rpb25X
aXRoT3B0aW9uYWxJbnRBcmd1bWVudCIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnQpLCAoaW50cHRy
X3QpICgwKSB9IH0sCisgICAgeyAiZW50cmllcyIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25FbnRyaWVzKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgImtleXMiLCBK
U0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZl
RnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uS2V5cyksIChpbnRwdHJfdCkgKDAp
IH0gfSwKKyAgICB7ICJ2YWx1ZXMiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVmFsdWVzKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgImZvckVhY2giLCBKU0M6OkZ1
bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaCksIChpbnRwdHJfdCkgKDApIH0g
fSwKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKICAgICB7ICJDT05ESVRJT05BTF9DT05TVCIsIERv
bnREZWxldGUgfCBSZWFkT25seSB8IENvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxv
bmcgbG9uZykoMCkgfSB9LAogI2Vsc2UKQEAgLTcxNSw2ICs3MjUsNyBAQCB2b2lkIEpTVGVzdE9i
alByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIHJlaWZ5U3RhdGljUHJvcGVy
dGllcyh2bSwgSlNUZXN0T2JqUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKICAgICBKU1ZN
Q2xpZW50RGF0YSYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZt
LmNsaWVudERhdGEpOwogICAgIHB1dERpcmVjdCh2bSwgY2xpZW50RGF0YS5idWlsdGluTmFtZXMo
KS5wcml2YXRlTWV0aG9kUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QoKSwgMCwgU3RyaW5nKCksIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUHJpdmF0
ZU1ldGhvZCksIFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0KCksIDAsIEFTQ0lJTGl0ZXJhbCgiW1N5bWJvbC5JdGVyYXRvcl0iKSwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25TeW1ib2xJdGVyYXRvciksIFJlYWRPbmx5IHwgRG9udEVudW0pOwog
fQogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0T2JqOjpzX2luZm8gPSB7ICJUZXN0T2JqZWN0Iiwg
JkJhc2U6OnNfaW5mbywgJkpTVGVzdE9ialRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dE9iaikgfTsKQEAgLTQ4MjAsNiArNDgzMSw0MCBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhPcAog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKK3VzaW5nIFRl
c3RPYmpJdGVyYXRvciA9IEpTS2V5VmFsdWVJdGVyYXRvcjxKU1Rlc3RPYmo+OwordXNpbmcgVGVz
dE9iakl0ZXJhdG9yUHJvdG90eXBlID0gSlNLZXlWYWx1ZUl0ZXJhdG9yUHJvdG90eXBlPEpTVGVz
dE9iaj47CisKK3RlbXBsYXRlPD4KK2NvbnN0IEpTQzo6Q2xhc3NJbmZvIFRlc3RPYmpJdGVyYXRv
cjo6c19pbmZvID0geyAiVGVzdE9iamVjdCBJdGVyYXRvciIsICZCYXNlOjpzX2luZm8sIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoVGVzdE9iakl0ZXJhdG9yKSB9OworCit0ZW1wbGF0ZTw+Citjb25z
dCBKU0M6OkNsYXNzSW5mbyBUZXN0T2JqSXRlcmF0b3JQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRl
c3RPYmplY3QgSXRlcmF0b3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KFRlc3RPYmpJdGVyYXRvclByb3RvdHlwZSkgfTsKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3ltYm9sSXRlcmF0b3IoSlNDOjpF
eGVjU3RhdGUqIHN0YXRlKQoreworICAgIHJldHVybiBjcmVhdGVLZXlWYWx1ZUl0ZXJhdG9yPEpT
VGVzdE9iaj4oKnN0YXRlLCBJdGVyYXRpb25LaW5kOjpLZXlWYWx1ZSwgIltTeW1ib2wuSXRlcmF0
b3JdIik7Cit9CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkVudHJpZXMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIHJl
dHVybiBjcmVhdGVLZXlWYWx1ZUl0ZXJhdG9yPEpTVGVzdE9iaj4oKnN0YXRlLCBJdGVyYXRpb25L
aW5kOjpLZXlWYWx1ZSwgImVudHJpZXMiKTsKK30KKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uS2V5cyhKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUpCit7CisgICAgcmV0dXJuIGNyZWF0ZUtleVZhbHVlSXRlcmF0b3I8SlNUZXN0T2JqPigq
c3RhdGUsIEl0ZXJhdGlvbktpbmQ6OktleSwgImtleXMiKTsKK30KKworSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKEpTQzo6
RXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gY3JlYXRlS2V5VmFsdWVJdGVyYXRvcjxK
U1Rlc3RPYmo+KCpzdGF0ZSwgSXRlcmF0aW9uS2luZDo6VmFsdWUsICJ2YWx1ZXMiKTsKK30KKwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uRm9yRWFjaChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJuIGtleVZhbHVl
SXRlcmF0b3JGb3JFYWNoPEpTVGVzdE9iaj4oKnN0YXRlLCAiZm9yRWFjaCIpOworfQorCiB2b2lk
IEpTVGVzdE9iajo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oY2VsbCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9i
ai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwK
aW5kZXggZTEwYjRlNGRmYmNjMWE1YjE2NzI3MWZlNTg2YzI3YjU1YjQ3ZTY4YS4uYjZhOTk5MDFl
MzhiOGU0YTNmYTc1OGIzMGVkZmIwMDhjODYyYjc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtODEsNiArODEsOCBAQCBlbnVt
IF9vcHRpb25hbCB7ICIiLCAiT3B0aW9uYWxWYWx1ZTEiLCAiT3B0aW9uYWxWYWx1ZTIiLCAiT3B0
aW9uYWxWYWx1ZTMiIH07CiAgICAgLy8gVHlwZWRBcnJheSBhdHRyaWJ1dGUKICAgICBhdHRyaWJ1
dGUgRmxvYXQzMkFycmF5IHR5cGVkQXJyYXlBdHRyOwogCisgICAgaXRlcmFibGU8RE9NU3RyaW5n
LCBUZXN0T2JqPjsKKwogICAgIC8vIE1ldGhvZHMKICAgICB2b2lkICAgIHZvaWRNZXRob2QoKTsK
ICAgICB2b2lkICAgIHZvaWRNZXRob2RXaXRoQXJncyhsb25nIGxvbmdBcmcsIERPTVN0cmluZyBz
dHJBcmcsIFRlc3RPYmogb2JqQXJnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmFjZVNldC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaWRsCmluZGV4
IDRmZjY4NWRjYWNkOWI1MmVjMjczNTVlMGRkYjM1MWRmM2U1NmZlNzguLjYxMTJhNWM0YWJhODgz
NzM2NjA1OTQyYzUxOWZlMzNlOWUzMGFiMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Gb250RmFjZVNldC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0Lmlk
bApAQCAtMzIsMTIgKzMyLDEwIEBAIGVudW0gRm9udEZhY2VTZXRMb2FkU3RhdHVzIHsKICAgICBD
b25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdFN0YXRlJkRvY3VtZW50LAogICAgIENvbnN0cnVjdG9y
KHNlcXVlbmNlPEZvbnRGYWNlPiBpbml0aWFsRmFjZXMpCiBdIGludGVyZmFjZSBGb250RmFjZVNl
dCA6IEV2ZW50VGFyZ2V0IHsKLSAgICBbQ3VzdG9tXSBPYmplY3QgZW50cmllcygpOwotICAgIC8v
IGZvckVhY2goKTogTWF5YmUgaW1wbGVtZW50IHRoaXMgaW4gSmF2YXNjcmlwdCBvbiB0b3Agb2Yg
a2V5cygpLgogICAgIGJvb2xlYW4gaGFzKEZvbnRGYWNlIGZvbnQpOwotICAgIFtDdXN0b21dIE9i
amVjdCBrZXlzKCk7Ci0gICAgW0N1c3RvbV0gT2JqZWN0IHZhbHVlcygpOwotICAgIC8vIEBpdGVy
YXRvcgorCisgICAgaXRlcmFibGU8Rm9udEZhY2UsIEZvbnRGYWNlPjsKKwogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBsb25nIHNpemU7CiAKICAgICBGb250RmFjZVNldCBhZGQoRm9udEZhY2UgZm9u
dCk7CkBAIC01Myw0ICs1MSw0IEBAIGVudW0gRm9udEZhY2VTZXRMb2FkU3RhdHVzIHsKIAogICAg
IFtDdXN0b21dIHJlYWRvbmx5IGF0dHJpYnV0ZSBQcm9taXNlIHJlYWR5OwogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBGb250RmFjZVNldExvYWRTdGF0dXMgc3RhdHVzOwotfTsKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCit9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggY2Vk
ZDkzODhkYjE2NGYyYWVhZWU5MTI4ODMzZDVjYjhkMGY1ZDE3Zi4uM2EwMDM4MjIzZDUyYWZjNTU5
YjIxZGI2NGEyMTkwNjg0Mjc4OGU4YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTYtMDItMTggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0
QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBCaW5kaW5nIGdlbmVyYXRvciBzaG91bGQgc3VwcG9y
dCBrZXkgdmFsdWUgaXRlcmFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NDQxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9oZWFkZXJzL2hlYWRl
cnMtYmFzaWMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRj
aC9hcGkvaGVhZGVycy9oZWFkZXJzLWJhc2ljLmh0bWw6CisKIDIwMTYtMDItMTcgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWdyZXNzaW9uKHIxOTY2NDgpOiBo
dHRwOi8vdzNjLXRlc3Qub3JnL2h0bWwvZG9tL2ludGVyZmFjZXMuaHRtbCByZWRpcmVjdHMgYXQg
dGhlIGVuZCBvZiB0aGUgdGVzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvaGVhZGVycy9oZWFkZXJzLWJhc2ljLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0
Y2gvYXBpL2hlYWRlcnMvaGVhZGVycy1iYXNpYy1leHBlY3RlZC50eHQKaW5kZXggNmRiNjljZTg2
MDU1YjUwNDg5ZmU0NzIwMGY1NDEwYzZhYTJiMTgzNy4uZTI5NzExNmRiYTQwNjM5Y2Q5ZWUwMGY1
MDc1Njk2Y2UzMGEzZGNiNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvaGVhZGVycy9oZWFkZXJzLWJhc2ljLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Zl
dGNoL2FwaS9oZWFkZXJzL2hlYWRlcnMtYmFzaWMtZXhwZWN0ZWQudHh0CkBAIC0xNSw0ICsxNSw2
IEBAIFBBU1MgQ2hlY2sgZ2V0IG1ldGhvZAogUEFTUyBDaGVjayBrZXlzIG1ldGhvZCAKIFBBU1Mg
Q2hlY2sgdmFsdWVzIG1ldGhvZCAKIFBBU1MgQ2hlY2sgZW50cmllcyBtZXRob2QgCitQQVNTIENo
ZWNrIFN5bWJvbC5pdGVyYXRvciBtZXRob2QgCitQQVNTIENoZWNrIGZvckVhY2ggbWV0aG9kIAog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2ZldGNoL2FwaS9oZWFkZXJzL2hlYWRlcnMtYmFzaWMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2hlYWRlcnMvaGVhZGVycy1iYXNp
Yy5odG1sCmluZGV4IDUxYWM4OWM3YjNjYjAyZmYwMzBiM2EyMTAzMTUwNzIxODhlZGZkZTcuLmRk
YmI5YTc0YjdkMzkwMTFiYzc1YmM4MzdmOTgzNDc0Mjc0ZTNhMjAgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2hlYWRlcnMv
aGVhZGVycy1iYXNpYy5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2hlYWRlcnMvaGVhZGVycy1iYXNpYy5odG1sCkBAIC0xNjMs
NiArMTYzLDMzIEBACiAgICAgICAgIGFzc2VydF90cnVlKGFjdHVhbC5uZXh0KCkuZG9uZSk7CiAg
ICAgICAgIGFzc2VydF90cnVlKGFjdHVhbC5uZXh0KCkuZG9uZSk7CiAgICAgICB9LCAiQ2hlY2sg
ZW50cmllcyBtZXRob2QiKTsKKworICAgICAgdGVzdChmdW5jdGlvbigpIHsKKyAgICAgICAgdmFy
IGhlYWRlcnMgPSBuZXcgSGVhZGVycyhoZWFkZXJFbnRyaWVzRGljdCk7CisgICAgICAgIHZhciBh
Y3R1YWwgPSBoZWFkZXJzW1N5bWJvbC5pdGVyYXRvcl0oKTsKKworICAgICAgICBzb3J0ZWRIZWFk
ZXJLZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7CisgICAgICAgICAgICBlbnRyeSA9IGFjdHVh
bC5uZXh0KCk7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoZW50cnkuZG9uZSk7CisgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKGVudHJ5LnZhbHVlWzBdLCBrZXkpOworICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhlbnRyeS52YWx1ZVsxXSwgc29ydGVkSGVhZGVyRGljdFtrZXldKTsKKyAgICAg
ICAgfSk7CisgICAgICAgIGFzc2VydF90cnVlKGFjdHVhbC5uZXh0KCkuZG9uZSk7CisgICAgICAg
IGFzc2VydF90cnVlKGFjdHVhbC5uZXh0KCkuZG9uZSk7CisgICAgICB9LCAiQ2hlY2sgU3ltYm9s
Lml0ZXJhdG9yIG1ldGhvZCIpOworCisgICAgICB0ZXN0KGZ1bmN0aW9uKCkgeworICAgICAgICB2
YXIgaGVhZGVycyA9IG5ldyBIZWFkZXJzKGhlYWRlckVudHJpZXNEaWN0KTsKKyAgICAgICAgdmFy
IHJlZmVyZW5jZSA9IHNvcnRlZEhlYWRlcktleXNbU3ltYm9sLml0ZXJhdG9yXSgpOworICAgICAg
ICBoZWFkZXJzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIGtleSwgY29udGFpbmVyKSB7CisgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKGhlYWRlcnMsIGNvbnRhaW5lcik7CisgICAgICAgICAgICBl
bnRyeSA9IHJlZmVyZW5jZS5uZXh0KCk7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoZW50cnku
ZG9uZSk7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGtleSwgZW50cnkudmFsdWUpOworICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgc29ydGVkSGVhZGVyRGljdFtlbnRyeS52YWx1
ZV0pOworICAgICAgICB9KTsKKyAgICAgICAgYXNzZXJ0X3RydWUocmVmZXJlbmNlLm5leHQoKS5k
b25lKTsKKyAgICAgIH0sICJDaGVjayBmb3JFYWNoIG1ldGhvZCIpOwogICAgPC9zY3JpcHQ+CiAg
IDwvYm9keT4KIDwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271753</attachid>
            <date>2016-02-19 07:30:00 -0800</date>
            <delta_ts>2016-02-20 03:40:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154413-20160219162940.patch</filename>
            <type>text/plain</type>
            <size>45479</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2NzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODBiNWUyMzNkNzM3YmI4
NTcxMWIyZDRhNGMyY2EwMTg4YzFjODM2Mi4uYmE2Njk0NWYwNmU4M2Q0OWJjMTRjZmEyMjI2YThj
ZjY2YzA0NzhmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE2LTAyLTE4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgQmluZGlu
ZyBnZW5lcmF0b3Igc2hvdWxkIHN1cHBvcnQga2V5IHZhbHVlIGl0ZXJhYmxlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ0MTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGFkZGVkIGxh
eW91dCBhbmQgYmluZGluZyB0ZXN0cy4KKworICAgICAgICBpdGVyYWJsZTxrZXksIHZhbHVlPiBp
biBhIElETCBmaWxlIHdpbGwgdHJpZ2dlciB0aGUgZ2VuZXJhdGlvbiBvZiBlbnRyaWVzLCBrZXlz
LCB2YWx1ZXMsIFtTeW1ib2wuaXRlcmF0b3JdIGFuZCBmb3JFYWNoIG1ldGhvZHMgdG8gdGhlIHBy
b3RvdHlwZS4KKyAgICAgICAgVXBkYXRlZCBGZXRjaEhlYWRlcnMgYW5kIEZvbnRGYWNlU2V0IHRv
IHVzZSBpdC4KKworICAgICAgICBJRExQYXJzZXIucG0gcGFyc2VzIHRoZSBpdGVyYWJsZTw+IGFu
ZCBhZGRzIGFuIGl0ZXJhYmxlIGZpZWxkIGluIHRoZSBpbnRlcmZhY2UgY29udGFpbmluZyB0aGUg
aXRlcmFibGUgaW5mb3JtYXRpb24gYW5kIG9iamVjdHMgZm9yIHRoZSBmaXZlIG9wZXJhdGlvbnMu
CisgICAgICAgIElETFBhcnNlci5wbSBpcyBjbGVhbmVkIHVwIGEgYml0IHRvIHJlbW92ZSBwcmV2
aW91cyBJdGVyYXRvciBzdXBwb3J0LCB3aGljaCBkb2VzIG5vdCBzZWVtIHRvIGJlIHN1cHBvcnRl
ZC4KKworICAgICAgICBDb2RlR2VuZXJhdG9ySlMucG0gaXMgdXBkYXRlZCB0byBnZW5lcmF0ZSB0
aGUgY29kZSBmb3IgdGhlIGZpdmUgb3BlcmF0aW9ucywgdXNpbmcgSlNLZXlWYWx1ZUl0ZXJhdG9y
LiBTZXQgaXRlcmF0b3JzIGFyZSBub3QgeWV0IHN1cHBvcnRlZC4KKyAgICAgICAgTW92ZWQgZGVm
aW5pdGlvbiBvZiBJdGVyYXRvciBLZXkgYW5kIFZhbHVlIFR5cGUgdG8gYmluZGluZyBnZW5lcmF0
ZWQgSlNYWCBjbGFzcyBiYXNlZCBvbiBpdGVyYWJsZTw+IGRlY2xhcmF0aW9uIGluIHRoZSBJREwu
CisKKyAgICAgICAgQWRkZWQgYmluZGluZyB0ZXN0IGFuZCBGZXRjaCBIZWFkZXJzIHRlc3RzLgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRj
aEhlYWRlcnMuaWRsOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRmV0Y2hIZWFkZXJzQ3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0ZvbnRGYWNlU2V0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTRm9udEZhY2VTZXQ6OnJlYWR5KTogUmVtb3ZlZCBpdGVyYWJsZSBjdXN0b20gbWV0aG9k
cy4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0tleVZhbHVlSXRlcmF0b3IuaDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUtleVZhbHVlSXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6a2V5
VmFsdWVJdGVyYXRvckZvckVhY2gpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtOgorICAgICAgICAoR2V0RnVuY3Rpb25OYW1lKToKKyAgICAgICAgKFByb3Rv
dHlwZUZ1bmN0aW9uQ291bnQpOgorICAgICAgICAoUHJvdG90eXBlUHJvcGVydHlDb3VudCk6Cisg
ICAgICAgIChHZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFibGUpOgorICAgICAgICAoR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25D
YWxsKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb25JdGVyYWJsZUZ1bmN0aW9ucyk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06CisgICAgICAgIChwYXJz
ZU9wZXJhdGlvbk9ySXRlcmF0b3IpOgorICAgICAgICAocGFyc2VPcGVyYXRpb25Pckl0ZXJhdG9y
UmVzdCk6CisgICAgICAgIChwYXJzZUl0ZXJhYmxlUmVzdCk6CisgICAgICAgIChwYXJzZU9wdGlv
bmFsSXRlcmFibGVJbnRlcmZhY2UpOgorICAgICAgICAoYXBwbHlNZW1iZXJMaXN0KToKKyAgICAg
ICAgKHBhcnNlU3BlY2lhbCk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmpQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uU3ltYm9sSXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25FbnRyaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uS2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkZvckVhY2gpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlk
bDoKKyAgICAgICAgKiBjc3MvRm9udEZhY2VTZXQuaWRsOgorCiAyMDE2LTAyLTE3ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0ZvbnQgTG9hZGlu
Z10gSW1wbGVtZW50IEZvbnRGYWNlU2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDEwMGFiNGQw
OTJkNThhY2QwNTYwMTQ5MzZhMGY0YjRiMDYzMjQzZWEuLmNiMTNlMDNkYjdlNWU2ZjI1NTQ5MTMw
OGY4MDBkOTRiZmVhZTExNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMTYwLDcgKzExNjAs
NiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVy
LmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwCiAgICAgYmluZGlu
Z3MvanMvSlNFeGNlcHRpb25CYXNlLmNwcAotICAgIGJpbmRpbmdzL2pzL0pTRmV0Y2hIZWFkZXJz
Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRmlsZVJlYWRlckN1c3RvbS5jcHAKICAgICBi
aW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTSFRN
TEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEhlYWRlcnMuaAppbmRleCBmMzU4MWQzMjRiZTg2OTU1NWI0NTY5OTI1ZjQwNzg0YmQyZmVi
NzY2Li41N2ZmNzNmZjc2MmNlODhkMDBiM2JmNjUyNzIyOTY3MmEzNWU5OWNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmgKQEAgLTY1LDExICs2NSw2IEBA
IHB1YmxpYzoKICAgICBjbGFzcyBJdGVyYXRvciB7CiAgICAgcHVibGljOgogICAgICAgICBleHBs
aWNpdCBJdGVyYXRvcihGZXRjaEhlYWRlcnMmKTsKLQotICAgICAgICAvLyBGSVhNRTogQmluZGlu
ZyBnZW5lcmF0b3Igc2hvdWxkIGJlIGFibGUgdG8gZ2VuZXJhdGUgaXRlcmF0b3Iga2V5IGFuZCB2
YWx1ZSB0eXBlcy4KLSAgICAgICAgdXNpbmcgS2V5ID0gU3RyaW5nOwotICAgICAgICB1c2luZyBW
YWx1ZSA9IFN0cmluZzsKLQogICAgICAgICBib29sIG5leHQoU3RyaW5nJiBuZXh0S2V5LCBTdHJp
bmcmIG5leHRWYWx1ZSk7CiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEhlYWRlcnMuaWRsCmluZGV4IGY2MzMzOTc1OThlMTBkYTlmYjhmM2RkYzZm
ZmZhNzA3OWEyMGVmYzYuLmYyMzdhNzg0YzdhNTFkMGRkZGExZGUxMDVmM2M3MzQ1YmY4YTcwNGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5pZGwKQEAg
LTQwLDExICs0MCw3IEBAIGludGVyZmFjZSBGZXRjaEhlYWRlcnMgewogICAgIFtSYWlzZXNFeGNl
cHRpb25dIGJvb2xlYW4gaGFzKERPTVN0cmluZyBuYW1lKTsKICAgICBbUmFpc2VzRXhjZXB0aW9u
XSB2b2lkIHNldChET01TdHJpbmcgbmFtZSwgRE9NU3RyaW5nIHZhbHVlKTsKIAotICAgIC8vIEZJ
WE1FOiBTdXBwb3J0IGl0ZXJhYmxlIHdpdGhpbiBiaW5kaW5nIGdlbmVyYXRvci4KLSAgICAvL2l0
ZXJhYmxlPERPTVN0cmluZywgRE9NU3RyaW5nPjsKLSAgICBbQ3VzdG9tXSBhbnkgZW50cmllcygp
OwotICAgIFtDdXN0b21dIGFueSBrZXlzKCk7Ci0gICAgW0N1c3RvbV0gYW55IHZhbHVlcygpOwor
ICAgIGl0ZXJhYmxlPERPTVN0cmluZywgRE9NU3RyaW5nPjsKIAogICAgIFtQcml2YXRlLCBSYWlz
ZXNFeGNlcHRpb24sIEltcGxlbWVudGVkQXM9YXBwZW5kXSB2b2lkIGFwcGVuZEZyb21KUyhET01T
dHJpbmcgbmFtZSwgRE9NU3RyaW5nIHZhbHVlKTsKICAgICBbUHJpdmF0ZSwgUmFpc2VzRXhjZXB0
aW9uXSB2b2lkIGluaXRpYWxpemVXaXRoKEZldGNoSGVhZGVycyBoZWFkZXJzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5ZGZk
NzgxNDdkMWYwODU0Y2ZlYzdkNzQzYzM4YWJiMGRjNjYwMzU2Li5lMGE5Mjc2OGM5ZDQxNTE4YjI3
YTg3N2ExMzFhOGFkYzhhMWYzNjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTQ5LDcgKzE1NDksNiBAQAogCQk0MUQwMTVD
QjBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMDE1QzkwRjRCNUM3MTAwNEE2NjJGIC8qIENv
bnRlbnRUeXBlLmNwcCAqLzsgfTsKIAkJNDFFMUIxRDAwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3Ry
YWN0V29ya2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxRTFCMUNBMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5jcHAgKi87IH07
CiAJCTQxRTFCMUQxMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMUIxQ0IwRkY1OTg2OTAw
NTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmggKi87IH07Ci0JCTQxRTkxMEE3MUM2MEZENkMwMDdB
NDUzRiAvKiBKU0ZldGNoSGVhZGVyc0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUU5MTBBNjFDNjBGRDZDMDA3QTQ1M0YgLyogSlNGZXRj
aEhlYWRlcnNDdXN0b20uY3BwICovOyB9OwogCQk0MUYwNjIxNDBGNUYxOTI2MDBBMDdFQUMgLyog
SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFGMDYyMTIwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRh
dGFiYXNlUmVzb3VyY2UuaCAqLzsgfTsKIAkJNDFGMDYyMTUwRjVGMTkyNjAwQTA3RUFDIC8qIElu
c3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFGMDYyMTMwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRh
dGFiYXNlUmVzb3VyY2UuY3BwICovOyB9OwogCQk0MUYwNjZFNDBGNjRCQ0Y2MDBBMDdFQUMgLyog
U2NyaXB0R2xvYmFsT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUYwNjZFMjBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0R2xvYmFsT2JqZWN0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTkw
MjEsNyArOTAyMCw2IEBACiAJCTQxRTFCMUNBMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdv
cmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBYnN0cmFjdFdv
cmtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRTFCMUNCMEZGNTk4Njkw
MDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBYnN0cmFjdFdvcmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUUx
QjFDQzBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IEFic3RyYWN0V29ya2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNDFFOTEwQTYxQzYwRkQ2QzAwN0E0NTNGIC8qIEpTRmV0Y2hIZWFkZXJzQ3VzdG9tLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmV0Y2hIZWFkZXJzQ3VzdG9t
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGMDYyMTIwRjVGMTkyNjAwQTA3
RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MUYwNjIxMzBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJh
c2VSZXNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNw
ZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDFGMDY2RTIwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdEdsb2JhbE9iamVjdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRHbG9iYWxPYmplY3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyNDA0LDcgKzIyNDAyLDYgQEAKIAkJCQlCQzJFRDU1NDBD
NkI5QkQzMDA5MjBCRkYgLyogSlNFbGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlBREVDNzhGNzE4
RUU1MzA4MDAxMzE1QzIgLyogSlNFbGVtZW50Q3VzdG9tLmggKi8sCiAJCQkJQkNFRkFGNEQwQzMx
N0U2OTAwRkE4MUY2IC8qIEpTRXZlbnRDdXN0b20uY3BwICovLAotCQkJCTQxRTkxMEE2MUM2MEZE
NkMwMDdBNDUzRiAvKiBKU0ZldGNoSGVhZGVyc0N1c3RvbS5jcHAgKi8sCiAJCQkJMkU3NTgyRUQx
Mjc2NEYyNjAwNjI2MjhCIC8qIEpTRmlsZVJlYWRlckN1c3RvbS5jcHAgKi8sCiAJCQkJRkU4MEQ3
QTYwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb25DdXN0b20uY3BwICovLAogCQkJCUJD
RTdCMTkyMEQ0RTg2OTYwMDc1QTUzOSAvKiBKU0hpc3RvcnlDdXN0b20uY3BwICovLApAQCAtMjk1
NTcsNyArMjk1NTQsNiBAQAogCQkJCTk3QjM4RTI4MTUxQzQyNzMwMDQ2MjJFOSAvKiBET01XaW5k
b3dOb3RpZmljYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3RDJBRDAzMTRCODIzQTYw
MDkzREYzMiAvKiBET01XaW5kb3dQcm9wZXJ0eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBQTJB
NUFENzE2QTQ4NjFBMDA5NzVBMjUgLyogRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCTQxRTkxMEE3MUM2MEZENkMwMDdBNDUzRiAvKiBKU0ZldGNoSGVhZGVy
c0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOENDQkI0ODE1MUY4MzE2MDBBQjdDRTkg
LyogRE9NV2luZG93V2ViRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1M0RBNDgx
MTQzMTM0RDAwMEQ4MTdFIC8qIERPTVdyYXBwZXJXb3JsZC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQTFEMTM4MTBBNTMyNTUyMDA2NEJGNUYgLyogRE9NWFBhdGgubW0gaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9u
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3Bw
CmluZGV4IDdlMjNmMDU4YjRiMDQyNzdmOTFkZjEzMzNiNjFlMTM1NWRjZTA5MGYuLmRkNDc5MDFj
ZDU5N2IwMzVkOWY2YjUxZDVjOGIwMjM2NGU1ZGIyZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcApAQCAtNzcsNyArNzcsNiBAQAog
I2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5jcHAiCiAjaW5jbHVkZSAiSlNFdmVudFRhcmdldEN1
c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNFeGNlcHRpb25CYXNlLmNwcCIKLSNpbmNsdWRlICJKU0Zl
dGNoSGVhZGVyc0N1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNGaWxlUmVhZGVyQ3VzdG9tLmNwcCIK
ICNpbmNsdWRlICJKU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0hUTUxBbGxD
b2xsZWN0aW9uQ3VzdG9tLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRmV0Y2hIZWFkZXJzQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRmV0Y2hIZWFkZXJzQ3VzdG9tLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MjU4MmNiZmY4NThlYmM0ZjIyMGEzZWJmYzkyNzVkMTQyYjE5ZDQ3Ni4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0ZldGNoSGVhZGVyc0N1c3RvbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IENhbm9uIEluYy4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6Ci0gKgotICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBDYW5vbiBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICog
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkpTRmV0Y2hIZWFkZXJzLmgiCi0KLSNpZiBFTkFCTEUoRkVUQ0hf
QVBJKQotCi0jaW5jbHVkZSAiSlNLZXlWYWx1ZUl0ZXJhdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotLy8gRklYTUU6IE1vdmUgdGhpcyBjb2RlIHRvIEpTRmV0Y2hIZWFkZXJzLgotdXNp
bmcgRmV0Y2hIZWFkZXJzSXRlcmF0b3IgPSBKU0tleVZhbHVlSXRlcmF0b3I8SlNGZXRjaEhlYWRl
cnM+OwotdXNpbmcgRmV0Y2hIZWFkZXJzSXRlcmF0b3JQcm90b3R5cGUgPSBKU0tleVZhbHVlSXRl
cmF0b3JQcm90b3R5cGU8SlNGZXRjaEhlYWRlcnM+OwotCi10ZW1wbGF0ZTw+Ci1jb25zdCBKU0M6
OkNsYXNzSW5mbyBGZXRjaEhlYWRlcnNJdGVyYXRvcjo6c19pbmZvID0geyAiSGVhZGVycyBJdGVy
YXRvciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRmV0Y2hIZWFkZXJz
SXRlcmF0b3IpIH07Ci0KLXRlbXBsYXRlPD4KLWNvbnN0IEpTQzo6Q2xhc3NJbmZvIEZldGNoSGVh
ZGVyc0l0ZXJhdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJIZWFkZXJzIEl0ZXJhdG9yIiwgJkJh
c2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShGZXRjaEhlYWRlcnNJdGVyYXRvclBy
b3RvdHlwZSkgfTsKLQotSlNDOjpKU1ZhbHVlIEpTRmV0Y2hIZWFkZXJzOjplbnRyaWVzKEpTQzo6
RXhlY1N0YXRlJikKLXsKLSAgICByZXR1cm4gY3JlYXRlSXRlcmF0b3I8SlNGZXRjaEhlYWRlcnM+
KCpnbG9iYWxPYmplY3QoKSwgKnRoaXMsIEl0ZXJhdGlvbktpbmQ6OktleVZhbHVlKTsKLX0KLQot
SlNDOjpKU1ZhbHVlIEpTRmV0Y2hIZWFkZXJzOjprZXlzKEpTQzo6RXhlY1N0YXRlJikKLXsKLSAg
ICByZXR1cm4gY3JlYXRlSXRlcmF0b3I8SlNGZXRjaEhlYWRlcnM+KCpnbG9iYWxPYmplY3QoKSwg
KnRoaXMsIEl0ZXJhdGlvbktpbmQ6OktleSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSBKU0ZldGNoSGVh
ZGVyczo6dmFsdWVzKEpTQzo6RXhlY1N0YXRlJikKLXsKLSAgICByZXR1cm4gY3JlYXRlSXRlcmF0
b3I8SlNGZXRjaEhlYWRlcnM+KCpnbG9iYWxPYmplY3QoKSwgKnRoaXMsIEl0ZXJhdGlvbktpbmQ6
OlZhbHVlKTsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRm9udEZhY2VTZXRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNGb250RmFjZVNldEN1c3RvbS5jcHAKaW5kZXggY2Q4NDk4NTZjZDk2OGNiMWQ2ZTNk
Zjc1ZDY3YmQ0OGJmOTAxN2JkNi4uOWEzYWQzMGQ4NmJjZjBmNGRiOGY1YWEwMzBmM2EyOWRhOWRl
MGYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGb250RmFjZVNl
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGb250RmFjZVNl
dEN1c3RvbS5jcHAKQEAgLTMyLDM0ICszMiwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXVzaW5nIEZvbnRGYWNlU2V0SXRlcmF0b3IgPSBKU0tleVZhbHVlSXRlcmF0b3I8SlNGb250RmFj
ZVNldD47Ci11c2luZyBGb250RmFjZVNldEl0ZXJhdG9yUHJvdG90eXBlID0gSlNLZXlWYWx1ZUl0
ZXJhdG9yUHJvdG90eXBlPEpTRm9udEZhY2VTZXQ+OwotCi10ZW1wbGF0ZTw+Ci1jb25zdCBKU0M6
OkNsYXNzSW5mbyBGb250RmFjZVNldEl0ZXJhdG9yOjpzX2luZm8gPSB7ICJGb250IEZhY2UgU2V0
IEl0ZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShGb250RmFj
ZVNldEl0ZXJhdG9yKSB9OwotCi10ZW1wbGF0ZTw+Ci1jb25zdCBKU0M6OkNsYXNzSW5mbyBGb250
RmFjZVNldEl0ZXJhdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJGb250IEZhY2UgU2V0IEl0ZXJh
dG9yIFByb3RvdHlwZSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRm9u
dEZhY2VTZXRJdGVyYXRvclByb3RvdHlwZSkgfTsKLQogSlNDOjpKU1ZhbHVlIEpTRm9udEZhY2VT
ZXQ6OnJlYWR5KEpTQzo6RXhlY1N0YXRlJiBleGVjU3RhdGUpIGNvbnN0CiB7CiAgICAgYXV0byYg
cHJvbWlzZSA9IHdyYXBwZWQoKS5wcm9taXNlKGV4ZWNTdGF0ZSk7CiAgICAgcmV0dXJuIHByb21p
c2UuZGVmZXJyZWQoKS5wcm9taXNlKCk7CiB9CiAKLUpTQzo6SlNWYWx1ZSBKU0ZvbnRGYWNlU2V0
OjplbnRyaWVzKEpTQzo6RXhlY1N0YXRlJikKLXsKLSAgICByZXR1cm4gY3JlYXRlSXRlcmF0b3I8
SlNGb250RmFjZVNldD4oKmdsb2JhbE9iamVjdCgpLCAqdGhpcywgSXRlcmF0aW9uS2luZDo6S2V5
VmFsdWUpOwotfQotCi1KU0M6OkpTVmFsdWUgSlNGb250RmFjZVNldDo6a2V5cyhKU0M6OkV4ZWNT
dGF0ZSYpCi17Ci0gICAgcmV0dXJuIGNyZWF0ZUl0ZXJhdG9yPEpTRm9udEZhY2VTZXQ+KCpnbG9i
YWxPYmplY3QoKSwgKnRoaXMsIEl0ZXJhdGlvbktpbmQ6OktleSk7Ci19Ci0KLUpTQzo6SlNWYWx1
ZSBKU0ZvbnRGYWNlU2V0Ojp2YWx1ZXMoSlNDOjpFeGVjU3RhdGUmKQotewotICAgIHJldHVybiBj
cmVhdGVJdGVyYXRvcjxKU0ZvbnRGYWNlU2V0PigqZ2xvYmFsT2JqZWN0KCksICp0aGlzLCBJdGVy
YXRpb25LaW5kOjpWYWx1ZSk7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTS2V5VmFsdWVJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNLZXlWYWx1ZUl0ZXJhdG9yLmgKaW5kZXggZmJiZmZkMGM1N2JiMGFlZTA5MmJiYjNiZjQ4
Y2M5MmU4MDc5OGM5ZC4uZDNhOGRjYTY4ZDMxNTlkNDI2NTljZDA4MmFjMzkzN2E5ZjgxZmY2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNLZXlWYWx1ZUl0ZXJhdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNLZXlWYWx1ZUl0ZXJhdG9yLmgK
QEAgLTEwNSw5ICsxMDUsMzcgQEAgcHJpdmF0ZToKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEpT
V3JhcHBlcj4KLUpTS2V5VmFsdWVJdGVyYXRvcjxKU1dyYXBwZXI+KiBjcmVhdGVJdGVyYXRvcihK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU1dyYXBwZXImIHdyYXBwZXIsIEl0ZXJh
dGlvbktpbmQga2luZCkKK0pTQzo6RW5jb2RlZEpTVmFsdWUgY3JlYXRlS2V5VmFsdWVJdGVyYXRv
cihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEl0ZXJhdGlvbktpbmQga2luZCwgY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lKQogewotICAgIHJldHVybiBKU0tleVZhbHVlSXRlcmF0b3I8SlNXcmFwcGVy
Pjo6Y3JlYXRlKGdsb2JhbE9iamVjdC52bSgpLCBnZXRET01TdHJ1Y3R1cmU8SlNLZXlWYWx1ZUl0
ZXJhdG9yPEpTV3JhcHBlcj4+KGdsb2JhbE9iamVjdC52bSgpLCBnbG9iYWxPYmplY3QpLCB3cmFw
cGVyLCBraW5kKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNXcmFw
cGVyKj4oc3RhdGUudGhpc1ZhbHVlKCkpOworICAgIGlmIChVTkxJS0VMWSghd3JhcHBlcikpCisg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsIEpTV3JhcHBlcjo6aW5mbygp
LT5jbGFzc05hbWUsIGZ1bmN0aW9uTmFtZSk7CisgICAgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCA9ICp3cmFwcGVyLT5nbG9iYWxPYmplY3QoKTsKKyAgICByZXR1cm4gSlNDOjpKU1Zh
bHVlOjplbmNvZGUoSlNLZXlWYWx1ZUl0ZXJhdG9yPEpTV3JhcHBlcj46OmNyZWF0ZShnbG9iYWxP
YmplY3Qudm0oKSwgZ2V0RE9NU3RydWN0dXJlPEpTS2V5VmFsdWVJdGVyYXRvcjxKU1dyYXBwZXI+
PihnbG9iYWxPYmplY3Qudm0oKSwgZ2xvYmFsT2JqZWN0KSwgKndyYXBwZXIsIGtpbmQpKTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgSlNXcmFwcGVyPgorSlNDOjpFbmNvZGVkSlNWYWx1ZSBrZXlW
YWx1ZUl0ZXJhdG9yRm9yRWFjaChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIGZ1
bmN0aW9uTmFtZSkKK3sKKyAgICBhdXRvIHdyYXBwZXIgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNX
cmFwcGVyKj4oc3RhdGUudGhpc1ZhbHVlKCkpOworICAgIGlmIChVTkxJS0VMWSghd3JhcHBlcikp
CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsIEpTV3JhcHBlcjo6aW5m
bygpLT5jbGFzc05hbWUsIGZ1bmN0aW9uTmFtZSk7CisKKyAgICBKU0M6OkNhbGxEYXRhIGNhbGxE
YXRhOworICAgIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKHN0YXRl
LmFyZ3VtZW50KDApLCBjYWxsRGF0YSk7CisgICAgQVNTRVJUKGNhbGxUeXBlICE9IEpTQzo6Q2Fs
bFR5cGVOb25lKTsKKworICAgIHR5cGVuYW1lIEpTV3JhcHBlcjo6SXRlcmF0b3JLZXkgbmV4dEtl
eTsKKyAgICB0eXBlbmFtZSBKU1dyYXBwZXI6Okl0ZXJhdG9yVmFsdWUgbmV4dFZhbHVlOworICAg
IGF1dG8gaXRlcmF0b3IgPSB3cmFwcGVyLT53cmFwcGVkKCkuY3JlYXRlSXRlcmF0b3IoKTsKKyAg
ICB3aGlsZSAoIWl0ZXJhdG9yLm5leHQobmV4dEtleSwgbmV4dFZhbHVlKSkgeworICAgICAgICBK
U0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKKyAgICAgICAgYXJndW1lbnRzLmFw
cGVuZCh0b0pTKCZzdGF0ZSwgd3JhcHBlci0+Z2xvYmFsT2JqZWN0KCksIG5leHRWYWx1ZSkpOwor
ICAgICAgICBhcmd1bWVudHMuYXBwZW5kKHRvSlMoJnN0YXRlLCB3cmFwcGVyLT5nbG9iYWxPYmpl
Y3QoKSwgbmV4dEtleSkpOworICAgICAgICBhcmd1bWVudHMuYXBwZW5kKHdyYXBwZXIpOworICAg
ICAgICBKU0M6OmNhbGwoJnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSwgY2FsbFR5cGUsIGNhbGxE
YXRhLCB3cmFwcGVyLCBhcmd1bWVudHMpOworICAgIH0gCisgICAgcmV0dXJuIEpTQzo6SlNWYWx1
ZTo6ZW5jb2RlKEpTQzo6anNVbmRlZmluZWQoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEpT
V3JhcHBlcj4KQEAgLTEyMCw4ICsxNDgsOCBAQCB2b2lkIEpTS2V5VmFsdWVJdGVyYXRvcjxKU1dy
YXBwZXI+OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHRlbXBsYXRlPHR5cGVuYW1lIEpTV3JhcHBl
cj4KIGJvb2wgSlNLZXlWYWx1ZUl0ZXJhdG9yPEpTV3JhcHBlcj46Om5leHQoSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUmIHZhbHVlKQogewotICAgIHR5cGVuYW1lIERPTVdyYXBw
ZWQ6Okl0ZXJhdG9yOjpLZXkgbmV4dEtleTsKLSAgICB0eXBlbmFtZSBET01XcmFwcGVkOjpJdGVy
YXRvcjo6VmFsdWUgbmV4dFZhbHVlOworICAgIHR5cGVuYW1lIEpTV3JhcHBlcjo6SXRlcmF0b3JL
ZXkgbmV4dEtleTsKKyAgICB0eXBlbmFtZSBKU1dyYXBwZXI6Okl0ZXJhdG9yVmFsdWUgbmV4dFZh
bHVlOwogICAgIGlmIChtX2l0ZXJhdG9yLm5leHQobmV4dEtleSwgbmV4dFZhbHVlKSkgewogICAg
ICAgICB2YWx1ZSA9IEpTQzo6anNVbmRlZmluZWQoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CmluZGV4IDBhODhlYTIzNTU4ZTdhYmRkYzNmMWU1MDdmODVmNDEwNWU1ZWRiNjAuLjU5NzdkODNh
ODU1OGFjMDkxYmRjNjI1ODIxYWI0YWY2Y2FiMTEzMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0xMSw3ICsxMSw3IEBA
CiAjIENvcHlyaWdodCAoQykgMjAxMiBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICMgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEyIEdvb2dsZSBJbmMuCiAjIENv
cHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotIyBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IyBDb3B5cmlnaHQgKEMpIDIwMTUsIDIwMTYgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogIwogIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCkBAIC02MDUsOCArNjA1LDExIEBAIHN1YiBHZXRGdW5jdGlvbk5h
bWUKICAgICAgICAgcmV0dXJuIEdldEpTQnVpbHRpbkZ1bmN0aW9uTmFtZSgkY2xhc3NOYW1lLCAk
ZnVuY3Rpb24pOwogICAgIH0KIAorICAgIG15ICRmdW5jdGlvbk5hbWUgPSAkZnVuY3Rpb24tPnNp
Z25hdHVyZS0+bmFtZTsKKyAgICAkZnVuY3Rpb25OYW1lID0gIlN5bWJvbEl0ZXJhdG9yIiBpZiAk
ZnVuY3Rpb25OYW1lIGVxICJbU3ltYm9sLkl0ZXJhdG9yXSI7CisKICAgICBteSAka2luZCA9ICRm
dW5jdGlvbi0+aXNTdGF0aWMgPyAiQ29uc3RydWN0b3IiIDogKE9wZXJhdGlvblNob3VsZEJlT25J
bnN0YW5jZSgkaW50ZXJmYWNlLCAkZnVuY3Rpb24pID8gIkluc3RhbmNlIiA6ICJQcm90b3R5cGUi
KTsKLSAgICByZXR1cm4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGNsYXNzTmFtZSkgLiAk
a2luZCAuICJGdW5jdGlvbiIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rpb24t
PnNpZ25hdHVyZS0+bmFtZSk7CisgICAgcmV0dXJuICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0
KCRjbGFzc05hbWUpIC4gJGtpbmQgLiAiRnVuY3Rpb24iIC4gJGNvZGVHZW5lcmF0b3ItPldLX3Vj
Zmlyc3QoJGZ1bmN0aW9uTmFtZSk7CiB9CiAKIHN1YiBHZXRTcGVjaWFsQWNjZXNzb3JGdW5jdGlv
bkZvclR5cGUKQEAgLTc2OSw2ICs3NzIsOCBAQCBzdWIgUHJvdG90eXBlRnVuY3Rpb25Db3VudAog
ICAgICAgICAkY291bnQrKyBpZiAhJGZ1bmN0aW9uLT5pc1N0YXRpYyAmJiAhT3BlcmF0aW9uU2hv
dWxkQmVPbkluc3RhbmNlKCRpbnRlcmZhY2UsICRmdW5jdGlvbik7CiAgICAgfQogCisgICAgJGNv
dW50ICs9IHNjYWxhciBAeyRpbnRlcmZhY2UtPml0ZXJhYmxlLT5mdW5jdGlvbnN9IGlmICRpbnRl
cmZhY2UtPml0ZXJhYmxlOworCiAgICAgcmV0dXJuICRjb3VudDsKIH0KIApAQCAtMTA1MCw2ICsx
MDU1LDE2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTtcbiIpOwogICAgIH0KIAor
ICAgIGlmICgkaW50ZXJmYWNlLT5pdGVyYWJsZSkgeworICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiXG4iKTsKKyAgICAgICAgaWYgKCRpbnRlcmZhY2UtPml0ZXJhYmxlLT5rZXlUeXBlKSB7
CisgICAgICAgICAgICBteSAka2V5VHlwZSA9IEdldE5hdGl2ZVR5cGUoJGludGVyZmFjZS0+aXRl
cmFibGUtPmtleVR5cGUpOworICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB1
c2luZyBJdGVyYXRvcktleSA9ICRrZXlUeXBlO1xuIik7CisgICAgICAgIH0KKyAgICAgICAgbXkg
JHZhbHVlVHlwZSA9IEdldE5hdGl2ZVR5cGUoJGludGVyZmFjZS0+aXRlcmFibGUtPnZhbHVlVHlw
ZSk7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdXNpbmcgSXRlcmF0b3JWYWx1
ZSA9ICR2YWx1ZVR5cGU7XG4iKTsKKyAgICB9CisKICAgICAjIENsYXNzIGluZm8KICAgICBpZiAo
JGludGVyZmFjZU5hbWUgZXEgIk5vZGUiKSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICJcbiIpOwpAQCAtMTQyNSwxMSArMTQ0MCwxNSBAQCBzdWIgR2VuZXJhdGVQcm9wZXJ0aWVzSGFz
aFRhYmxlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHsk
aW50ZXJmYWNlLT5mdW5jdGlvbnN9KSB7CisgICAgbXkgQGZ1bmN0aW9ucyA9IEB7JGludGVyZmFj
ZS0+ZnVuY3Rpb25zfTsKKyAgICBwdXNoKEBmdW5jdGlvbnMsIEB7JGludGVyZmFjZS0+aXRlcmFi
bGUtPmZ1bmN0aW9uc30pIGlmICRpbnRlcmZhY2UtPml0ZXJhYmxlOworICAgIGZvcmVhY2ggbXkg
JGZ1bmN0aW9uIChAZnVuY3Rpb25zKSB7CiAgICAgICAgIG5leHQgaWYgKCRmdW5jdGlvbi0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUHJpdmF0ZSJ9KTsKICAgICAgICAgbmV4dCBp
ZiAoJGZ1bmN0aW9uLT5pc1N0YXRpYyk7CiAgICAgICAgIG5leHQgaWYgJGZ1bmN0aW9uLT57b3Zl
cmxvYWRJbmRleH0gJiYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gPiAxOwogICAgICAgICBu
ZXh0IGlmIE9wZXJhdGlvblNob3VsZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNlLCAkZnVuY3Rpb24p
ICE9ICRpc0luc3RhbmNlOworICAgICAgICBuZXh0IGlmICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5u
YW1lIGVxICJbU3ltYm9sLkl0ZXJhdG9yXSI7CisKICAgICAgICAgbXkgJG5hbWUgPSAkZnVuY3Rp
b24tPnNpZ25hdHVyZS0+bmFtZTsKICAgICAgICAgcHVzaChAJGhhc2hLZXlzLCAkbmFtZSk7CiAK
QEAgLTE4MzUsMTQgKzE4NTQsMTcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIlxudXNpbmcgbmFtZXNwYWNlIEpTQztcblxuIik7CiAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJuYW1lc3BhY2UgV2ViQ29yZSB7XG5cbiIpOwogCisgICAgbXkgQGZ1
bmN0aW9ucyA9IEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfTsKKyAgICBwdXNoKEBmdW5jdGlvbnMs
IEB7JGludGVyZmFjZS0+aXRlcmFibGUtPmZ1bmN0aW9uc30pIGlmICRpbnRlcmZhY2UtPml0ZXJh
YmxlOworCiAgICAgbXkgJG51bUNvbnN0YW50cyA9IEB7JGludGVyZmFjZS0+Y29uc3RhbnRzfTsK
LSAgICBteSAkbnVtRnVuY3Rpb25zID0gQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9OworICAgIG15
ICRudW1GdW5jdGlvbnMgPSBAZnVuY3Rpb25zOwogICAgIG15ICRudW1BdHRyaWJ1dGVzID0gQHsk
aW50ZXJmYWNlLT5hdHRyaWJ1dGVzfTsKIAogICAgIGlmICgkbnVtRnVuY3Rpb25zID4gMCkgewog
ICAgICAgICBteSAkaW5BcHBsZUNvcHlyaWdodCA9IDA7CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCIvLyBGdW5jdGlvbnNcblxuIik7Ci0gICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChA
eyRpbnRlcmZhY2UtPmZ1bmN0aW9uc30pIHsKKyAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24g
KEBmdW5jdGlvbnMpIHsKICAgICAgICAgICAgIG5leHQgaWYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJ
bmRleH0gJiYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gPiAxOwogICAgICAgICAgICAgbmV4
dCBpZiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkZvcndhcmRE
ZWNsYXJlSW5IZWFkZXIifTsKICAgICAgICAgICAgIG5leHQgaWYgJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21CaW5kaW5nIn07CkBAIC0yMTIzLDYgKzIx
NDUsMTEgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBwdXREaXJlY3Qodm0sIGNsaWVudERhdGEuYnVpbHRpbk5hbWVz
KCkuIiAuICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lIC4gIlByaXZhdGVOYW1lKCksIEpTRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KCksIDAsIFN0cmluZygpLCAiIC4gR2V0RnVu
Y3Rpb25OYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRmdW5jdGlvbikgLiAiKSwgUmVhZE9u
bHkgfCBEb250RW51bSk7XG4iKTsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgaWYgKCRp
bnRlcmZhY2UtPml0ZXJhYmxlKSB7CisgICAgICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9
IEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCBAeyRpbnRlcmZhY2UtPml0
ZXJhYmxlLT5mdW5jdGlvbnN9WzBdKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCgpLCAwLCBBU0NJSUxpdGVyYWwoXCJb
U3ltYm9sLkl0ZXJhdG9yXVwiKSwgJGZ1bmN0aW9uTmFtZSksIFJlYWRPbmx5IHwgRG9udEVudW0p
O1xuIik7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
fVxuXG4iKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAidm9pZCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSlcbiIp
OwpAQCAtMjk5MCw2ICszMDE3LDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAg
ICB9CiAKKyAgICBpZiAoJGludGVyZmFjZS0+aXRlcmFibGUpIHsKKyAgICAgICAgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbkl0ZXJhYmxlRnVuY3Rpb25zKCRpbnRlcmZhY2UpOworICAgIH0KKwogICAg
IGlmICgkbmVlZHNWaXNpdENoaWxkcmVuKSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
dm9pZCAke2NsYXNzTmFtZX06OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRv
ciYgdmlzaXRvcilcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwpAQCAt
MzkyMiw2ICszOTUzLDU5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxs
KCkKICAgICB9CiB9CiAKK3N1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uSXRlcmFibGVGdW5jdGlv
bnMKK3sKKyAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CisKKyAgICBpZiAobm90ICRpbnRlcmZh
Y2UtPml0ZXJhYmxlLT5pc01hcCkgeworICAgICAgICBkaWUgIk5vIHN1cHBvcnQgeWV0IGZvciBz
ZXQgaXRlcmF0b3JzIjsKKyAgICB9CisKKyAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZh
Y2UtPm5hbWU7CisgICAgbXkgJGNsYXNzTmFtZSA9ICJKUyRpbnRlcmZhY2VOYW1lIjsKKyAgICBt
eSAkdmlzaWJsZUludGVyZmFjZU5hbWUgPSAkY29kZUdlbmVyYXRvci0+R2V0VmlzaWJsZUludGVy
ZmFjZU5hbWUoJGludGVyZmFjZSk7CisKKyAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNLZXlWYWx1
ZUl0ZXJhdG9yLmgiKTsKKworICAgIHB1c2goQGltcGxDb250ZW50LCAgPDxFTkQpOwordXNpbmcg
JHtpbnRlcmZhY2VOYW1lfUl0ZXJhdG9yID0gSlNLZXlWYWx1ZUl0ZXJhdG9yPCR7Y2xhc3NOYW1l
fT47Cit1c2luZyAke2ludGVyZmFjZU5hbWV9SXRlcmF0b3JQcm90b3R5cGUgPSBKU0tleVZhbHVl
SXRlcmF0b3JQcm90b3R5cGU8JHtjbGFzc05hbWV9PjsKKwordGVtcGxhdGU8PgorY29uc3QgSlND
OjpDbGFzc0luZm8gJHtpbnRlcmZhY2VOYW1lfUl0ZXJhdG9yOjpzX2luZm8gPSB7ICIke3Zpc2li
bGVJbnRlcmZhY2VOYW1lfSBJdGVyYXRvciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoJHtpbnRlcmZhY2VOYW1lfUl0ZXJhdG9yKSB9OworCit0ZW1wbGF0ZTw+Citjb25z
dCBKU0M6OkNsYXNzSW5mbyAke2ludGVyZmFjZU5hbWV9SXRlcmF0b3JQcm90b3R5cGU6OnNfaW5m
byA9IHsgIiR7dmlzaWJsZUludGVyZmFjZU5hbWV9IEl0ZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRSgke2ludGVyZmFjZU5hbWV9SXRlcmF0b3JQcm90b3R5cGUp
IH07CisKK0VORAorCisgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+aXRl
cmFibGUtPmZ1bmN0aW9uc30pIHsKKyAgICAgICAgbXkgJHByb3BlcnR5TmFtZSA9ICRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5uYW1lOworICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gR2V0RnVuY3Rp
b25OYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRmdW5jdGlvbik7CisKKyAgICAgICAgaWYg
KG5vdCAkcHJvcGVydHlOYW1lIGVxICJmb3JFYWNoIikgeworICAgICAgICAgICAgbXkgJGl0ZXJh
dGlvbktpbmQgPSAiS2V5VmFsdWUiOworICAgICAgICAgICAgJGl0ZXJhdGlvbktpbmQgPSAiS2V5
IiBpZiAkcHJvcGVydHlOYW1lIGVxICJrZXlzIjsKKyAgICAgICAgICAgICRpdGVyYXRpb25LaW5k
ID0gIlZhbHVlIiBpZiAkcHJvcGVydHlOYW1lIGVxICJ2YWx1ZXMiOworICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICA8PEVORCk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgJHtmdW5jdGlvbk5hbWV9KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4g
Y3JlYXRlS2V5VmFsdWVJdGVyYXRvcjwke2NsYXNzTmFtZX0+KCpzdGF0ZSwgSXRlcmF0aW9uS2lu
ZDo6JHtpdGVyYXRpb25LaW5kfSwgIiR7cHJvcGVydHlOYW1lfSIpOworfQorCitFTkQKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAgPDxFTkQpOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7ZnVuY3Rpb25OYW1lfShKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJuIGtleVZhbHVlSXRlcmF0b3JGb3JFYWNoPCR7Y2xh
c3NOYW1lfT4oKnN0YXRlLCAiJHtwcm9wZXJ0eU5hbWV9Iik7Cit9CisKK0VORAorICAgICAgICB9
CisgICAgfQorfQorCiBzdWIgR2V0TmF0aXZlVHlwZUZyb21TaWduYXR1cmUKIHsKICAgICBteSAk
c2lnbmF0dXJlID0gc2hpZnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0lETFBhcnNlci5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURM
UGFyc2VyLnBtCmluZGV4IDQ3MjdjZjdiZjM1ZmIxNzVkZDc4ZjY3ODM5NzE0M2ZiMThmMGJkMDYu
LjZiYTc0OWY5YzgyNDhjYmIxY2Q3ZjU4Y2FmZTI2ZjZkZjE3ZDkzZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCkBAIC01NSw2ICs1NSw3IEBAIHN0
cnVjdCggZG9tSW50ZXJmYWNlID0+IHsKICAgICBpc0V4Y2VwdGlvbiA9PiAnJCcsICMgVXNlZCBm
b3IgZXhjZXB0aW9uIGludGVyZmFjZXMKICAgICBpc0NhbGxiYWNrID0+ICckJywgIyBVc2VkIGZv
ciBjYWxsYmFjayBpbnRlcmZhY2VzCiAgICAgaXNQYXJ0aWFsID0+ICckJywgIyBVc2VkIGZvciBw
YXJ0aWFsIGludGVyZmFjZXMKKyAgICBpdGVyYWJsZSA9PiAnJCcsICMgVXNlZCBmb3IgaXRlcmFi
bGUgaW50ZXJmYWNlcwogfSk7CiAKICMgVXNlZCB0byByZXByZXNlbnQgZG9tSW50ZXJmYWNlIGNv
bnRlbnRzIChuYW1lIG9mIG1ldGhvZCwgc2lnbmF0dXJlKQpAQCAtODUsNiArODYsMTUgQEAgc3Ry
dWN0KCBkb21TaWduYXR1cmUgPT4gewogICAgIGRlZmF1bHQgPT4gJyQnLCAjIERlZmF1bHQgdmFs
dWUgZm9yIHBhcmFtZXRlcnMKIH0pOwogCisjIFVzZWQgdG8gcmVwcmVzZW50IEl0ZXJhYmxlIGlu
dGVyZmFjZXMKK3N0cnVjdCggZG9tSXRlcmFibGUgPT4geworICAgIGlzTWFwID0+ICckJywgICAg
ICMgSXMgbWFwIGl0ZXJhYmxlIG9yIHNldCBpdGVyYWJsZQorICAgIGtleVR5cGUgPT4gJyQnLCAg
ICMgS2V5IHR5cGUgZm9yIG1hcCBpdGVyYWJsZXMKKyAgICB2YWx1ZVR5cGUgPT4gJyQnLCAjIFZh
bHVlIHR5cGUgZm9yIG1hcCBvciBzZXQgaXRlcmFibGVzCisgICAgZnVuY3Rpb25zID0+ICdAJywg
IyBJdGVyYWJsZSBmdW5jdGlvbnMgKGVudGlyZXMsIGtleXMsIHZhbHVlcywgW1N5bWJvbC5JdGVy
YXRvcl0gY29udGFpbmluZyBleHRlbmRlZCBhdHRyaWJ1dGVzCit9KTsKKworCiAjIFVzZWQgdG8g
cmVwcmVzZW50IHN0cmluZyBjb25zdGFudHMKIHN0cnVjdCggZG9tQ29uc3RhbnQgPT4gewogICAg
IG5hbWUgPT4gJyQnLCAgICAgICMgRE9NIENvbnN0YW50IGlkZW50aWZpZXIKQEAgLTMyNSw5ICsz
MzUsOCBAQCBteSAkbmV4dFByaW1pdGl2ZVR5cGVfMiA9ICdeKGRvdWJsZXxmbG9hdHx1bnJlc3Ry
aWN0ZWQpJCc7CiBteSAkbmV4dEFyZ3VtZW50TGlzdF8xID0gJ14oXCh8Ojp8Qnl0ZVN0cmluZ3xE
T01TdHJpbmd8RGF0ZXxcW3xhbnl8Ym9vbGVhbnxieXRlfGRvdWJsZXxmbG9hdHxpbnxpbnR8bG9u
Z3xvYmplY3R8b2N0ZXR8b3B0aW9uYWx8c2VxdWVuY2V8c2hvcnR8dW5yZXN0cmljdGVkfHVuc2ln
bmVkKSQnOwogbXkgJG5leHROb25BbnlUeXBlXzEgPSAnXihib29sZWFufGJ5dGV8ZG91YmxlfGZs
b2F0fGludHxsb25nfG9jdGV0fHNob3J0fHVucmVzdHJpY3RlZHx1bnNpZ25lZCkkJzsKIG15ICRu
ZXh0SW50ZXJmYWNlTWVtYmVyXzEgPSAnXihcKHw6OnxCeXRlU3RyaW5nfERPTVN0cmluZ3xEYXRl
fGFueXxhdHRyaWJ1dGV8Ym9vbGVhbnxieXRlfGNyZWF0b3J8ZGVsZXRlcnxkb3VibGV8ZmxvYXR8
Z2V0dGVyfGluaGVyaXR8aW50fGxlZ2FjeWNhbGxlcnxsb25nfG9iamVjdHxvY3RldHxyZWFkb25s
eXxzZXF1ZW5jZXxzZXJpYWxpemVyfHNldHRlcnxzaG9ydHxzdGF0aWN8c3RyaW5naWZpZXJ8dW5y
ZXN0cmljdGVkfHVuc2lnbmVkfHZvaWQpJCc7Ci1teSAkbmV4dE9wdGlvbmFsSXRlcmF0b3JJbnRl
cmZhY2VPck9iamVjdF8xID0gJ14oO3w9KSQnOwotbXkgJG5leHRBdHRyaWJ1dGVPck9wZXJhdGlv
bk9ySXRlcmF0b3JfMSA9ICdeKHN0YXRpY3xzdHJpbmdpZmllcikkJzsKLW15ICRuZXh0QXR0cmli
dXRlT3JPcGVyYXRpb25Pckl0ZXJhdG9yXzIgPSAnXihcKHw6OnxCeXRlU3RyaW5nfERPTVN0cmlu
Z3xEYXRlfGFueXxib29sZWFufGJ5dGV8Y3JlYXRvcnxkZWxldGVyfGRvdWJsZXxmbG9hdHxnZXR0
ZXJ8aW50fGxlZ2FjeWNhbGxlcnxsb25nfG9iamVjdHxvY3RldHxzZXF1ZW5jZXxzZXR0ZXJ8c2hv
cnR8dW5yZXN0cmljdGVkfHVuc2lnbmVkfHZvaWQpJCc7CitteSAkbmV4dEF0dHJpYnV0ZU9yT3Bl
cmF0aW9uXzEgPSAnXihzdGF0aWN8c3RyaW5naWZpZXIpJCc7CitteSAkbmV4dEF0dHJpYnV0ZU9y
T3BlcmF0aW9uXzIgPSAnXihcKHw6OnxCeXRlU3RyaW5nfERPTVN0cmluZ3xEYXRlfGFueXxib29s
ZWFufGJ5dGV8Y3JlYXRvcnxkZWxldGVyfGRvdWJsZXxmbG9hdHxnZXR0ZXJ8aW50fGxlZ2FjeWNh
bGxlcnxsb25nfG9iamVjdHxvY3RldHxzZXF1ZW5jZXxzZXR0ZXJ8c2hvcnR8dW5yZXN0cmljdGVk
fHVuc2lnbmVkfHZvaWQpJCc7CiBteSAkbmV4dFVucmVzdHJpY3RlZEZsb2F0VHlwZV8xID0gJ14o
ZG91YmxlfGZsb2F0KSQnOwogbXkgJG5leHRFeHRlbmRlZEF0dHJpYnV0ZVJlc3QzXzEgPSAnXihc
LHw6OnxcXSkkJzsKIG15ICRuZXh0RXhjZXB0aW9uRmllbGRfMSA9ICdeKFwofDo6fEJ5dGVTdHJp
bmd8RE9NU3RyaW5nfERhdGV8YW55fGJvb2xlYW58Ynl0ZXxkb3VibGV8ZmxvYXR8aW50fGxvbmd8
b2JqZWN0fG9jdGV0fHNlcXVlbmNlfHNob3J0fHVucmVzdHJpY3RlZHx1bnNpZ25lZCkkJzsKQEAg
LTk2MSw3ICs5NzAsNyBAQCBzdWIgcGFyc2VBdHRyaWJ1dGVPck9wZXJhdGlvbk9ySXRlcmF0b3IK
ICAgICBpZiAoJG5leHQtPnZhbHVlKCkgZXEgInNlcmlhbGl6ZXIiKSB7CiAgICAgICAgIHJldHVy
biAkc2VsZi0+cGFyc2VTZXJpYWxpemVyKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwogICAgIH0K
LSAgICBpZiAoJG5leHQtPnZhbHVlKCkgPX4gLyRuZXh0QXR0cmlidXRlT3JPcGVyYXRpb25Pckl0
ZXJhdG9yXzEvKSB7CisgICAgaWYgKCRuZXh0LT52YWx1ZSgpID1+IC8kbmV4dEF0dHJpYnV0ZU9y
T3BlcmF0aW9uXzEvKSB7CiAgICAgICAgIG15ICRxdWFsaWZpZXIgPSAkc2VsZi0+cGFyc2VRdWFs
aWZpZXIoKTsKICAgICAgICAgbXkgJG5ld0RhdGFOb2RlID0gJHNlbGYtPnBhcnNlQXR0cmlidXRl
T3JPcGVyYXRpb25SZXN0KCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwogICAgICAgICBpZiAoZGVm
aW5lZCgkbmV3RGF0YU5vZGUpICYmICRxdWFsaWZpZXIgZXEgInN0YXRpYyIpIHsKQEAgLTk3Miw3
ICs5ODEsNyBAQCBzdWIgcGFyc2VBdHRyaWJ1dGVPck9wZXJhdGlvbk9ySXRlcmF0b3IKICAgICBp
ZiAoJG5leHQtPnZhbHVlKCkgPX4gLyRuZXh0QXR0cmlidXRlXzEvKSB7CiAgICAgICAgIHJldHVy
biAkc2VsZi0+cGFyc2VBdHRyaWJ1dGUoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CiAgICAgfQot
ICAgIGlmICgkbmV4dC0+dHlwZSgpID09IElkZW50aWZpZXJUb2tlbiB8fCAkbmV4dC0+dmFsdWUo
KSA9fiAvJG5leHRBdHRyaWJ1dGVPck9wZXJhdGlvbk9ySXRlcmF0b3JfMi8pIHsKKyAgICBpZiAo
JG5leHQtPnR5cGUoKSA9PSBJZGVudGlmaWVyVG9rZW4gfHwgJG5leHQtPnZhbHVlKCkgPX4gLyRu
ZXh0QXR0cmlidXRlT3JPcGVyYXRpb25fMi8pIHsKICAgICAgICAgcmV0dXJuICRzZWxmLT5wYXJz
ZU9wZXJhdGlvbk9ySXRlcmF0b3IoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CiAgICAgfQogICAg
ICRzZWxmLT5hc3NlcnRVbmV4cGVjdGVkVG9rZW4oJG5leHQtPnZhbHVlKCksIF9fTElORV9fKTsK
QEAgLTEyMDYsMTMgKzEyMTUsMTcgQEAgc3ViIHBhcnNlT3BlcmF0aW9uT3JJdGVyYXRvcgogICAg
IGlmICgkbmV4dC0+dmFsdWUoKSA9fiAvJG5leHRTcGVjaWFsc18xLykgewogICAgICAgICByZXR1
cm4gJHNlbGYtPnBhcnNlU3BlY2lhbE9wZXJhdGlvbigkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsK
ICAgICB9CisgICAgaWYgKCRuZXh0LT52YWx1ZSgpIGVxICJpdGVyYWJsZSIpIHsKKyAgICAgICAg
cmV0dXJuICRzZWxmLT5wYXJzZUl0ZXJhYmxlUmVzdCgkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsK
KyAgICB9CiAgICAgaWYgKCRuZXh0LT50eXBlKCkgPT0gSWRlbnRpZmllclRva2VuIHx8ICRuZXh0
LT52YWx1ZSgpID1+IC8kbmV4dEF0dHJpYnV0ZU9yT3BlcmF0aW9uUmVzdF8xLykgewogICAgICAg
ICBteSAkcmV0dXJuVHlwZSA9ICRzZWxmLT5wYXJzZVJldHVyblR5cGUoKTsKLSAgICAgICAgbXkg
JGludGVyZmFjZSA9ICRzZWxmLT5wYXJzZU9wZXJhdGlvbk9ySXRlcmF0b3JSZXN0KCRleHRlbmRl
ZEF0dHJpYnV0ZUxpc3QpOwotICAgICAgICBpZiAoZGVmaW5lZCAoJGludGVyZmFjZSkpIHsKLSAg
ICAgICAgICAgICRpbnRlcmZhY2UtPnNpZ25hdHVyZS0+dHlwZSgkcmV0dXJuVHlwZSk7CisgICAg
ICAgIG15ICRuZXh0ID0gJHNlbGYtPm5leHRUb2tlbigpOworICAgICAgICBpZiAoJG5leHQtPnR5
cGUoKSA9PSBJZGVudGlmaWVyVG9rZW4gfHwgJG5leHQtPnZhbHVlKCkgZXEgIigiKSB7CisgICAg
ICAgICAgICBteSAkb3BlcmF0aW9uID0gJHNlbGYtPnBhcnNlT3BlcmF0aW9uUmVzdCgkZXh0ZW5k
ZWRBdHRyaWJ1dGVMaXN0KTsKKyAgICAgICAgICAgICRvcGVyYXRpb24tPnNpZ25hdHVyZS0+dHlw
ZSgkcmV0dXJuVHlwZSk7CisgICAgICAgICAgICByZXR1cm4gJG9wZXJhdGlvbjsKICAgICAgICAg
fQotICAgICAgICByZXR1cm4gJGludGVyZmFjZTsKICAgICB9CiAgICAgJHNlbGYtPmFzc2VydFVu
ZXhwZWN0ZWRUb2tlbigkbmV4dC0+dmFsdWUoKSwgX19MSU5FX18pOwogfQpAQCAtMTI4MCw2MiAr
MTI5Myw3MiBAQCBzdWIgcGFyc2VTcGVjaWFsCiAgICAgJHNlbGYtPmFzc2VydFVuZXhwZWN0ZWRU
b2tlbigkbmV4dC0+dmFsdWUoKSwgX19MSU5FX18pOwogfQogCi1zdWIgcGFyc2VPcGVyYXRpb25P
ckl0ZXJhdG9yUmVzdAorc3ViIHBhcnNlSXRlcmFibGVSZXN0CiB7CiAgICAgbXkgJHNlbGYgPSBz
aGlmdDsKICAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0ID0gc2hpZnQ7CiAKICAgICBteSAk
bmV4dCA9ICRzZWxmLT5uZXh0VG9rZW4oKTsKLSAgICBpZiAoJG5leHQtPnZhbHVlKCkgZXEgIml0
ZXJhdG9yIikgewotICAgICAgICByZXR1cm4gJHNlbGYtPnBhcnNlSXRlcmF0b3JSZXN0KCRleHRl
bmRlZEF0dHJpYnV0ZUxpc3QpOwotICAgIH0KLSAgICBpZiAoJG5leHQtPnR5cGUoKSA9PSBJZGVu
dGlmaWVyVG9rZW4gfHwgJG5leHQtPnZhbHVlKCkgZXEgIigiKSB7Ci0gICAgICAgIHJldHVybiAk
c2VsZi0+cGFyc2VPcGVyYXRpb25SZXN0KCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwotICAgIH0K
LSAgICAkc2VsZi0+YXNzZXJ0VW5leHBlY3RlZFRva2VuKCRuZXh0LT52YWx1ZSgpLCBfX0xJTkVf
Xyk7Ci19Ci0KLXN1YiBwYXJzZUl0ZXJhdG9yUmVzdAotewotICAgIG15ICRzZWxmID0gc2hpZnQ7
Ci0gICAgbXkgJGV4dGVuZGVkQXR0cmlidXRlTGlzdCA9IHNoaWZ0OwotCi0gICAgbXkgJG5leHQg
PSAkc2VsZi0+bmV4dFRva2VuKCk7Ci0gICAgaWYgKCRuZXh0LT52YWx1ZSgpIGVxICJpdGVyYXRv
ciIpIHsKLSAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCks
ICJpdGVyYXRvciIsIF9fTElORV9fKTsKLSAgICAgICAgJHNlbGYtPnBhcnNlT3B0aW9uYWxJdGVy
YXRvckludGVyZmFjZU9yT2JqZWN0KCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOworICAgIGlmICgk
bmV4dC0+dmFsdWUoKSBlcSAiaXRlcmFibGUiKSB7CisgICAgICAgICRzZWxmLT5hc3NlcnRUb2tl
blZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiaXRlcmFibGUiLCBfX0xJTkVfXyk7CisgICAgICAg
IG15ICRpdGVyYWJsZU5vZGUgPSAkc2VsZi0+cGFyc2VPcHRpb25hbEl0ZXJhYmxlSW50ZXJmYWNl
KCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwogICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1
ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIjsiLCBfX0xJTkVfXyk7Ci0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuICRpdGVyYWJsZU5vZGU7CiAgICAgfQogICAgICRzZWxmLT5hc3NlcnRVbmV4
cGVjdGVkVG9rZW4oJG5leHQtPnZhbHVlKCksIF9fTElORV9fKTsKIH0KIAotc3ViIHBhcnNlT3B0
aW9uYWxJdGVyYXRvckludGVyZmFjZU9yT2JqZWN0CitzdWIgcGFyc2VPcHRpb25hbEl0ZXJhYmxl
SW50ZXJmYWNlCiB7CiAgICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgICBteSAkZXh0ZW5kZWRBdHRy
aWJ1dGVMaXN0ID0gc2hpZnQ7CiAKLSAgICBteSAkbmV4dCA9ICRzZWxmLT5uZXh0VG9rZW4oKTsK
LSAgICBpZiAoJG5leHQtPnZhbHVlKCkgPX4gLyRuZXh0T3B0aW9uYWxJdGVyYXRvckludGVyZmFj
ZU9yT2JqZWN0XzEvKSB7Ci0gICAgICAgIHJldHVybiAkc2VsZi0+cGFyc2VPcHRpb25hbEl0ZXJh
dG9ySW50ZXJmYWNlKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwotICAgIH0KLSAgICBpZiAoJG5l
eHQtPnZhbHVlKCkgZXEgIm9iamVjdCIpIHsKLSAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFs
dWUoJHNlbGYtPmdldFRva2VuKCksICJvYmplY3QiLCBfX0xJTkVfXyk7Ci0gICAgICAgIHJldHVy
bjsKKyAgICBteSAkc3ltYm9sSXRlcmF0b3JGdW5jdGlvbiA9IGRvbUZ1bmN0aW9uLT5uZXcoKTsK
KyAgICAkc3ltYm9sSXRlcmF0b3JGdW5jdGlvbi0+c2lnbmF0dXJlKGRvbVNpZ25hdHVyZS0+bmV3
KCkpOworICAgICRzeW1ib2xJdGVyYXRvckZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKKyAgICAkc3ltYm9sSXRlcmF0b3JGdW5j
dGlvbi0+c2lnbmF0dXJlLT5uYW1lKCJbU3ltYm9sLkl0ZXJhdG9yXSIpOworCisgICAgbXkgJGVu
dHJpZXNGdW5jdGlvbiA9IGRvbUZ1bmN0aW9uLT5uZXcoKTsKKyAgICAkZW50cmllc0Z1bmN0aW9u
LT5zaWduYXR1cmUoZG9tU2lnbmF0dXJlLT5uZXcoKSk7CisgICAgJGVudHJpZXNGdW5jdGlvbi0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7Cisg
ICAgJGVudHJpZXNGdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lKCJlbnRyaWVzIik7CisKKyAgICBt
eSAka2V5c0Z1bmN0aW9uID0gZG9tRnVuY3Rpb24tPm5ldygpOworICAgICRrZXlzRnVuY3Rpb24t
PnNpZ25hdHVyZShkb21TaWduYXR1cmUtPm5ldygpKTsKKyAgICAka2V5c0Z1bmN0aW9uLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKKyAgICAk
a2V5c0Z1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUoImtleXMiKTsKKworICAgIG15ICR2YWx1ZXNG
dW5jdGlvbiA9IGRvbUZ1bmN0aW9uLT5uZXcoKTsKKyAgICAkdmFsdWVzRnVuY3Rpb24tPnNpZ25h
dHVyZShkb21TaWduYXR1cmUtPm5ldygpKTsKKyAgICAkdmFsdWVzRnVuY3Rpb24tPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOworICAgICR2YWx1
ZXNGdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lKCJ2YWx1ZXMiKTsKKworICAgIG15ICRmb3JFYWNo
RnVuY3Rpb24gPSBkb21GdW5jdGlvbi0+bmV3KCk7CisgICAgJGZvckVhY2hGdW5jdGlvbi0+c2ln
bmF0dXJlKGRvbVNpZ25hdHVyZS0+bmV3KCkpOworICAgICRmb3JFYWNoRnVuY3Rpb24tPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOworICAgICRm
b3JFYWNoRnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSgiZm9yRWFjaCIpOworCisgICAgbXkgJG5l
d0RhdGFOb2RlID0gZG9tSXRlcmFibGUtPm5ldygpOworICAgIHB1c2goQHskbmV3RGF0YU5vZGUt
PmZ1bmN0aW9uc30sICRzeW1ib2xJdGVyYXRvckZ1bmN0aW9uKTsKKyAgICBwdXNoKEB7JG5ld0Rh
dGFOb2RlLT5mdW5jdGlvbnN9LCAkZW50cmllc0Z1bmN0aW9uKTsKKyAgICBwdXNoKEB7JG5ld0Rh
dGFOb2RlLT5mdW5jdGlvbnN9LCAka2V5c0Z1bmN0aW9uKTsKKyAgICBwdXNoKEB7JG5ld0RhdGFO
b2RlLT5mdW5jdGlvbnN9LCAkdmFsdWVzRnVuY3Rpb24pOworICAgIHB1c2goQHskbmV3RGF0YU5v
ZGUtPmZ1bmN0aW9uc30sICRmb3JFYWNoRnVuY3Rpb24pOworCisgICAgJHNlbGYtPmFzc2VydFRv
a2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICI8IiwgX19MSU5FX18pOworICAgIG15ICR0eXBl
MSA9ICRzZWxmLT5nZXRUb2tlbigpLT52YWx1ZSgpOworICAgIGlmICgkc2VsZi0+bmV4dFRva2Vu
KCktPnZhbHVlKCkgZXEgIiwiKSB7CisgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRz
ZWxmLT5nZXRUb2tlbigpLCAiLCIsIF9fTElORV9fKTsKKyAgICAgICAgJG5ld0RhdGFOb2RlLT5p
c01hcCgxKTsKKyAgICAgICAgJG5ld0RhdGFOb2RlLT5rZXlUeXBlKCR0eXBlMSk7CisgICAgICAg
ICRuZXdEYXRhTm9kZS0+dmFsdWVUeXBlKCRzZWxmLT5nZXRUb2tlbigpLT52YWx1ZSgpKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICAkbmV3RGF0YU5vZGUtPmlzTWFwKDApOworICAgICAgICAkbmV3
RGF0YU5vZGUtPnZhbHVlVHlwZSgkdHlwZTEpOwogICAgIH0KLSAgICAkc2VsZi0+YXNzZXJ0VW5l
eHBlY3RlZFRva2VuKCRuZXh0LT52YWx1ZSgpLCBfX0xJTkVfXyk7Ci19Ci0KLXN1YiBwYXJzZU9w
dGlvbmFsSXRlcmF0b3JJbnRlcmZhY2UKLXsKLSAgICBteSAkc2VsZiA9IHNoaWZ0OwotICAgIG15
ICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QgPSBzaGlmdDsKKyAgICAkc2VsZi0+YXNzZXJ0VG9rZW5W
YWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIj4iLCBfX0xJTkVfXyk7CiAKLSAgICBteSAkbmV4dCA9
ICRzZWxmLT5uZXh0VG9rZW4oKTsKLSAgICBpZiAoJG5leHQtPnZhbHVlKCkgZXEgIj0iKSB7Ci0g
ICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiPSIsIF9f
TElORV9fKTsKLSAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVHlwZSgkc2VsZi0+Z2V0VG9rZW4o
KSwgSWRlbnRpZmllclRva2VuKTsKLSAgICB9CisgICAgcmV0dXJuICRuZXdEYXRhTm9kZTsKIH0K
IAogc3ViIHBhcnNlT3BlcmF0aW9uUmVzdApAQCAtMjE3Nyw2ICsyMjAwLDEwIEBAIHN1YiBhcHBs
eU1lbWJlckxpc3QKICAgICAgICAgICAgIHB1c2goQHskaW50ZXJmYWNlLT5jb25zdGFudHN9LCAk
aXRlbSk7CiAgICAgICAgICAgICBuZXh0OwogICAgICAgICB9CisgICAgICAgIGlmIChyZWYoJGl0
ZW0pIGVxICJkb21JdGVyYWJsZSIpIHsKKyAgICAgICAgICAgICRpbnRlcmZhY2UtPml0ZXJhYmxl
KCRpdGVtKTsKKyAgICAgICAgICAgIG5leHQ7CisgICAgICAgIH0KICAgICAgICAgaWYgKHJlZigk
aXRlbSkgZXEgImRvbUZ1bmN0aW9uIikgewogICAgICAgICAgICAgaWYgKCRpdGVtLT5zaWduYXR1
cmUtPm5hbWUgZXEgIiIpIHsKICAgICAgICAgICAgICAgICBwdXNoKEB7JGludGVyZmFjZS0+YW5v
bnltb3VzRnVuY3Rpb25zfSwgJGl0ZW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCA0ZmNhMzY5NWU5ZDMyODM3
MzkyZWFiZGNhYWY3YTQyNGFlMDk4NTdhLi40YjIxYzgzY2RkMThjMzc4MThjMzM3NjM3Mjk4NWZi
NzkzNDBlZjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTRE9N
U3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIkpTRG9jdW1lbnQuaCIKICNpbmNsdWRlICJKU0V2ZW50
TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJKU0tleVZhbHVlSXRlcmF0b3IuaCIKICNpbmNsdWRlICJK
U05vZGUuaCIKICNpbmNsdWRlICJKU1NWR0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiSlNTVkdQb2lu
dC5oIgpAQCAtMTc4LDYgKzE3OSwxMSBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uKAogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVz
dFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50KEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25U
ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVz
dFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50KEpTQzo6RXhlY1N0YXRlKik7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25TeW1ib2xJdGVyYXRvcihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW50cmllcyhKU0M6OkV4
ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uS2V5cyhKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKEpTQzo6RXhl
Y1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Gb3JFYWNoKEpTQzo6RXhlY1N0YXRlKik7CiAKIC8vIEF0dHJpYnV0ZXMK
IApAQCAtNjg4LDYgKzY5NCwxMCBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0
T2JqUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiAgICAgeyAidGVzdFByb21pc2VGdW5jdGlvbldp
dGhGbG9hdEFyZ3VtZW50IiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRl
c3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudCksIChpbnRwdHJfdCkgKDEpIH0gfSwK
ICAgICB7ICJ0ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbiIsIEpTQzo6RnVuY3Rpb24s
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbiks
IChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJ0ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlv
bmFsSW50QXJndW1lbnQiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVz
dFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50KSwgKGludHB0cl90KSAoMCkg
fSB9LAorICAgIHsgImVudHJpZXMiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uRW50cmllcyksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJrZXlzIiwgSlNDOjpGdW5j
dGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9u
Pihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbktleXMpLCAoaW50cHRyX3QpICgwKSB9IH0sCisg
ICAgeyAidmFsdWVzIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhbHVl
cyksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJmb3JFYWNoIiwgSlNDOjpGdW5jdGlvbiwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkZvckVhY2gpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAjaWYg
RU5BQkxFKENvbmRpdGlvbjEpCiAgICAgeyAiQ09ORElUSU9OQUxfQ09OU1QiLCBEb250RGVsZXRl
IHwgUmVhZE9ubHkgfCBDb25zdGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcp
KDApIH0gfSwKICNlbHNlCkBAIC03MTUsNiArNzI1LDcgQEAgdm9pZCBKU1Rlc3RPYmpQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0s
IEpTVGVzdE9ialByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7CiAgICAgSlNWTUNsaWVudERh
dGEmIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnRE
YXRhKTsKICAgICBwdXREaXJlY3Qodm0sIGNsaWVudERhdGEuYnVpbHRpbk5hbWVzKCkucHJpdmF0
ZU1ldGhvZFByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
KCksIDAsIFN0cmluZygpLCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblByaXZhdGVNZXRob2Qp
LCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPml0ZXJhdG9yU3ltYm9sLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCgp
LCAwLCBBU0NJSUxpdGVyYWwoIltTeW1ib2wuSXRlcmF0b3JdIiksIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uU3ltYm9sSXRlcmF0b3IpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KIAogY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdE9iajo6c19pbmZvID0geyAiVGVzdE9iamVjdCIsICZCYXNlOjpz
X2luZm8sICZKU1Rlc3RPYmpUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPYmopIH07
CkBAIC00ODIwLDYgKzQ4MzEsNDAgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoT3AKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCit1c2luZyBUZXN0T2JqSXRl
cmF0b3IgPSBKU0tleVZhbHVlSXRlcmF0b3I8SlNUZXN0T2JqPjsKK3VzaW5nIFRlc3RPYmpJdGVy
YXRvclByb3RvdHlwZSA9IEpTS2V5VmFsdWVJdGVyYXRvclByb3RvdHlwZTxKU1Rlc3RPYmo+Owor
Cit0ZW1wbGF0ZTw+Citjb25zdCBKU0M6OkNsYXNzSW5mbyBUZXN0T2JqSXRlcmF0b3I6OnNfaW5m
byA9IHsgIlRlc3RPYmplY3QgSXRlcmF0b3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKFRlc3RPYmpJdGVyYXRvcikgfTsKKwordGVtcGxhdGU8PgorY29uc3QgSlNDOjpD
bGFzc0luZm8gVGVzdE9iakl0ZXJhdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0T2JqZWN0
IEl0ZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShUZXN0T2Jq
SXRlcmF0b3JQcm90b3R5cGUpIH07CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN5bWJvbEl0ZXJhdG9yKEpTQzo6RXhlY1N0YXRl
KiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gY3JlYXRlS2V5VmFsdWVJdGVyYXRvcjxKU1Rlc3RPYmo+
KCpzdGF0ZSwgSXRlcmF0aW9uS2luZDo6S2V5VmFsdWUsICJbU3ltYm9sLkl0ZXJhdG9yXSIpOwor
fQorCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25FbnRyaWVzKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gY3Jl
YXRlS2V5VmFsdWVJdGVyYXRvcjxKU1Rlc3RPYmo+KCpzdGF0ZSwgSXRlcmF0aW9uS2luZDo6S2V5
VmFsdWUsICJlbnRyaWVzIik7Cit9CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbktleXMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlKQor
eworICAgIHJldHVybiBjcmVhdGVLZXlWYWx1ZUl0ZXJhdG9yPEpTVGVzdE9iaj4oKnN0YXRlLCBJ
dGVyYXRpb25LaW5kOjpLZXksICJrZXlzIik7Cit9CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhbHVlcyhKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUpCit7CisgICAgcmV0dXJuIGNyZWF0ZUtleVZhbHVlSXRlcmF0b3I8SlNUZXN0T2Jq
Pigqc3RhdGUsIEl0ZXJhdGlvbktpbmQ6OlZhbHVlLCAidmFsdWVzIik7Cit9CisKK0pTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkZvckVh
Y2goSlNDOjpFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIHJldHVybiBrZXlWYWx1ZUl0ZXJhdG9y
Rm9yRWFjaDxKU1Rlc3RPYmo+KCpzdGF0ZSwgImZvckVhY2giKTsKK30KKwogdm9pZCBKU1Rlc3RP
Ymo6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsK
ICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE9iaio+KGNlbGwpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCmlu
ZGV4IDczNGYyMzZiZmZmNTM4YzQxMjVmNWYzMWI2NjNkNTg0MjliYjY4NTIuLjkxNzkyNDk0YjNh
Y2U5ZmU3N2VkMjQyYzc0ZTFmYjNlYmEyZjAzNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKQEAgLTQ1LDYgKzQ1LDkgQEAg
cHVibGljOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0
KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3Qm
KTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKKyAgICB1c2luZyBJ
dGVyYXRvcktleSA9IFN0cmluZzsKKyAgICB1c2luZyBJdGVyYXRvclZhbHVlID0gVGVzdE9iaio7
CisKICAgICBERUNMQVJFX0lORk87CiAKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCmluZGV4IGUxMGI0ZTRkZmJjYzFhNWIxNjcyNzFmZTU4
NmMyN2I1NWI0N2U2OGEuLmI2YTk5OTAxZTM4YjhlNGEzZmE3NThiMzBlZGZiMDA4Yzg2MmI3NWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2Jq
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5p
ZGwKQEAgLTgxLDYgKzgxLDggQEAgZW51bSBfb3B0aW9uYWwgeyAiIiwgIk9wdGlvbmFsVmFsdWUx
IiwgIk9wdGlvbmFsVmFsdWUyIiwgIk9wdGlvbmFsVmFsdWUzIiB9OwogICAgIC8vIFR5cGVkQXJy
YXkgYXR0cmlidXRlCiAgICAgYXR0cmlidXRlIEZsb2F0MzJBcnJheSB0eXBlZEFycmF5QXR0cjsK
IAorICAgIGl0ZXJhYmxlPERPTVN0cmluZywgVGVzdE9iaj47CisKICAgICAvLyBNZXRob2RzCiAg
ICAgdm9pZCAgICB2b2lkTWV0aG9kKCk7CiAgICAgdm9pZCAgICB2b2lkTWV0aG9kV2l0aEFyZ3Mo
bG9uZyBsb25nQXJnLCBET01TdHJpbmcgc3RyQXJnLCBUZXN0T2JqIG9iakFyZyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0ZvbnRGYWNlU2V0LmNwcAppbmRleCAxYjcxNDQxNGVmNGNlOTM1YWY2ZTBhNzhlZjA0NDcw
NTQ2OTkwY2ZhLi4zZjhiZDQ1M2M4Y2Y4NTE3YmU0MjA1YzljYjNkYjMwOGNkMzM2MjRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgRm9udEZhY2VTZXQ6
Okl0ZXJhdG9yOjpJdGVyYXRvcihGb250RmFjZVNldCYgc2V0KQogewogfQogCi1ib29sIEZvbnRG
YWNlU2V0OjpJdGVyYXRvcjo6bmV4dChSZWZQdHI8Rm9udEZhY2U+JiBrZXksIFJlZlB0cjxGb250
RmFjZT4mIHZhbHVlKQorYm9vbCBGb250RmFjZVNldDo6SXRlcmF0b3I6Om5leHQoRm9udEZhY2Uq
JiBrZXksIEZvbnRGYWNlKiYgdmFsdWUpCiB7CiAgICAgaWYgKG1faW5kZXggPT0gbV90YXJnZXQt
PnNpemUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRm9udEZhY2VTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5oCmlu
ZGV4IDAwMmIzMDg2YWM1NDhhNGRmMWU3ZjM2NmI3YzE1NjQ0ZmMxOWYxNTkuLmFhOWRkYjgxMWM0
ZTgzYjA4MmZjMmZkNmVmZDkxN2EwMWVjNzdlNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Gb250RmFjZVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5o
CkBAIC03MiwxMSArNzIsNyBAQCBwdWJsaWM6CiAgICAgY2xhc3MgSXRlcmF0b3IgewogICAgIHB1
YmxpYzoKICAgICAgICAgZXhwbGljaXQgSXRlcmF0b3IoRm9udEZhY2VTZXQmKTsKLQotICAgICAg
ICB1c2luZyBLZXkgPSBSZWZQdHI8Rm9udEZhY2U+OwotICAgICAgICB1c2luZyBWYWx1ZSA9IFJl
ZlB0cjxGb250RmFjZT47Ci0KLSAgICAgICAgYm9vbCBuZXh0KEtleSYgbmV4dEtleSwgVmFsdWUm
IG5leHRWYWx1ZSk7CisgICAgICAgIGJvb2wgbmV4dChGb250RmFjZSomIG5leHRLZXksIEZvbnRG
YWNlKiYgbmV4dFZhbHVlKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZjxGb250RmFjZVNl
dD4gbV90YXJnZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQu
aWRsIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmlkbAppbmRleCA0ZmY2ODVkY2Fj
ZDliNTJlYzI3MzU1ZTBkZGIzNTFkZjNlNTZmZTc4Li5kZTc0OTJkOGQxYjc1NmM0MDlkYjEyM2E1
ZWFiZjM0YjJiZmU2NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VT
ZXQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5pZGwKQEAgLTMyLDEy
ICszMiwxMiBAQCBlbnVtIEZvbnRGYWNlU2V0TG9hZFN0YXR1cyB7CiAgICAgQ29uc3RydWN0b3JD
YWxsV2l0aD1TY3JpcHRTdGF0ZSZEb2N1bWVudCwKICAgICBDb25zdHJ1Y3RvcihzZXF1ZW5jZTxG
b250RmFjZT4gaW5pdGlhbEZhY2VzKQogXSBpbnRlcmZhY2UgRm9udEZhY2VTZXQgOiBFdmVudFRh
cmdldCB7Ci0gICAgW0N1c3RvbV0gT2JqZWN0IGVudHJpZXMoKTsKLSAgICAvLyBmb3JFYWNoKCk6
IE1heWJlIGltcGxlbWVudCB0aGlzIGluIEphdmFzY3JpcHQgb24gdG9wIG9mIGtleXMoKS4KICAg
ICBib29sZWFuIGhhcyhGb250RmFjZSBmb250KTsKLSAgICBbQ3VzdG9tXSBPYmplY3Qga2V5cygp
OwotICAgIFtDdXN0b21dIE9iamVjdCB2YWx1ZXMoKTsKLSAgICAvLyBAaXRlcmF0b3IKKworICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgYWRkIHN1cHBvcnQgZm9yIHRoZSBzZXRsaWtlIGRlY2xhcmF0
aW9uLgorICAgIC8vIEFzIGEgZmlyc3Qgc3RlcCB0aGlzIG1hcCBpdGVyYWJsZSBkZWNsYXJhdGlv
biBzaG91bGQgYmUgY2hhbmdlZCB0byBhIHNldCBpdGVyYWJsZS4KKyAgICBpdGVyYWJsZTxGb250
RmFjZSwgRm9udEZhY2U+OworCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgc2l6ZTsKIAog
ICAgIEZvbnRGYWNlU2V0IGFkZChGb250RmFjZSBmb250KTsKQEAgLTUzLDQgKzUzLDQgQEAgZW51
bSBGb250RmFjZVNldExvYWRTdGF0dXMgewogCiAgICAgW0N1c3RvbV0gcmVhZG9ubHkgYXR0cmli
dXRlIFByb21pc2UgcmVhZHk7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEZvbnRGYWNlU2V0TG9h
ZFN0YXR1cyBzdGF0dXM7Ci19OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK307CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBjZWRkOTM4OGRiMTY0ZjJhZWFlZTkxMjg4MzNk
NWNiOGQwZjVkMTdmLi4zYTAwMzgyMjNkNTJhZmM1NTliMjFkYjY0YTIxOTA2ODQyNzg4ZThiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0wMi0x
OCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAg
IEJpbmRpbmcgZ2VuZXJhdG9yIHNob3VsZCBzdXBwb3J0IGtleSB2YWx1ZSBpdGVyYWJsZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0NDEzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvZmV0Y2gvYXBpL2hlYWRlcnMvaGVhZGVycy1iYXNpYy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9oZWFkZXJzL2hlYWRlcnMtYmFz
aWMuaHRtbDoKKwogMjAxNi0wMi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIFJlZ3Jlc3Npb24ocjE5NjY0OCk6IGh0dHA6Ly93M2MtdGVzdC5vcmcvaHRtbC9k
b20vaW50ZXJmYWNlcy5odG1sIHJlZGlyZWN0cyBhdCB0aGUgZW5kIG9mIHRoZSB0ZXN0CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNo
L2FwaS9oZWFkZXJzL2hlYWRlcnMtYmFzaWMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvaGVhZGVycy9oZWFkZXJzLWJh
c2ljLWV4cGVjdGVkLnR4dAppbmRleCA2ZGI2OWNlODYwNTViNTA0ODlmZTQ3MjAwZjU0MTBjNmFh
MmIxODM3Li5lMjk3MTE2ZGJhNDA2MzljZDllZTAwZjUwNzU2OTZjZTMwYTNkY2I1IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2Fw
aS9oZWFkZXJzL2hlYWRlcnMtYmFzaWMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2hlYWRlcnMvaGVhZGVycy1i
YXNpYy1leHBlY3RlZC50eHQKQEAgLTE1LDQgKzE1LDYgQEAgUEFTUyBDaGVjayBnZXQgbWV0aG9k
CiBQQVNTIENoZWNrIGtleXMgbWV0aG9kIAogUEFTUyBDaGVjayB2YWx1ZXMgbWV0aG9kIAogUEFT
UyBDaGVjayBlbnRyaWVzIG1ldGhvZCAKK1BBU1MgQ2hlY2sgU3ltYm9sLml0ZXJhdG9yIG1ldGhv
ZCAKK1BBU1MgQ2hlY2sgZm9yRWFjaCBtZXRob2QgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2hlYWRlcnMvaGVhZGVy
cy1iYXNpYy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9mZXRjaC9hcGkvaGVhZGVycy9oZWFkZXJzLWJhc2ljLmh0bWwKaW5kZXggNTFhYzg5YzdiM2Ni
MDJmZjAzMGIzYTIxMDMxNTA3MjE4OGVkZmRlNy4uZGRiYjlhNzRiN2QzOTAxMWJjNzViYzgzN2Y5
ODM0NzQyNzRlM2EyMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvaGVhZGVycy9oZWFkZXJzLWJhc2ljLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvaGVh
ZGVycy9oZWFkZXJzLWJhc2ljLmh0bWwKQEAgLTE2Myw2ICsxNjMsMzMgQEAKICAgICAgICAgYXNz
ZXJ0X3RydWUoYWN0dWFsLm5leHQoKS5kb25lKTsKICAgICAgICAgYXNzZXJ0X3RydWUoYWN0dWFs
Lm5leHQoKS5kb25lKTsKICAgICAgIH0sICJDaGVjayBlbnRyaWVzIG1ldGhvZCIpOworCisgICAg
ICB0ZXN0KGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgaGVhZGVycyA9IG5ldyBIZWFkZXJzKGhl
YWRlckVudHJpZXNEaWN0KTsKKyAgICAgICAgdmFyIGFjdHVhbCA9IGhlYWRlcnNbU3ltYm9sLml0
ZXJhdG9yXSgpOworCisgICAgICAgIHNvcnRlZEhlYWRlcktleXMuZm9yRWFjaChmdW5jdGlvbihr
ZXkpIHsKKyAgICAgICAgICAgIGVudHJ5ID0gYWN0dWFsLm5leHQoKTsKKyAgICAgICAgICAgIGFz
c2VydF9mYWxzZShlbnRyeS5kb25lKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZW50cnku
dmFsdWVbMF0sIGtleSk7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGVudHJ5LnZhbHVlWzFd
LCBzb3J0ZWRIZWFkZXJEaWN0W2tleV0pOworICAgICAgICB9KTsKKyAgICAgICAgYXNzZXJ0X3Ry
dWUoYWN0dWFsLm5leHQoKS5kb25lKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoYWN0dWFsLm5leHQo
KS5kb25lKTsKKyAgICAgIH0sICJDaGVjayBTeW1ib2wuaXRlcmF0b3IgbWV0aG9kIik7CisKKyAg
ICAgIHRlc3QoZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBoZWFkZXJzID0gbmV3IEhlYWRlcnMo
aGVhZGVyRW50cmllc0RpY3QpOworICAgICAgICB2YXIgcmVmZXJlbmNlID0gc29ydGVkSGVhZGVy
S2V5c1tTeW1ib2wuaXRlcmF0b3JdKCk7CisgICAgICAgIGhlYWRlcnMuZm9yRWFjaChmdW5jdGlv
bih2YWx1ZSwga2V5LCBjb250YWluZXIpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoaGVh
ZGVycywgY29udGFpbmVyKTsKKyAgICAgICAgICAgIGVudHJ5ID0gcmVmZXJlbmNlLm5leHQoKTsK
KyAgICAgICAgICAgIGFzc2VydF9mYWxzZShlbnRyeS5kb25lKTsKKyAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHMoa2V5LCBlbnRyeS52YWx1ZSk7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHZh
bHVlLCBzb3J0ZWRIZWFkZXJEaWN0W2VudHJ5LnZhbHVlXSk7CisgICAgICAgIH0pOworICAgICAg
ICBhc3NlcnRfdHJ1ZShyZWZlcmVuY2UubmV4dCgpLmRvbmUpOworICAgICAgfSwgIkNoZWNrIGZv
ckVhY2ggbWV0aG9kIik7CiAgICA8L3NjcmlwdD4KICAgPC9ib2R5PgogPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271857</attachid>
            <date>2016-02-20 03:40:42 -0800</date>
            <delta_ts>2016-02-21 23:29:07 -0800</delta_ts>
            <desc>Throwing in case of bad forEach argument</desc>
            <filename>bug-154413-20160220124020.patch</filename>
            <type>text/plain</type>
            <size>47361</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2NzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODBiNWUyMzNkNzM3YmI4
NTcxMWIyZDRhNGMyY2EwMTg4YzFjODM2Mi4uYmE2Njk0NWYwNmU4M2Q0OWJjMTRjZmEyMjI2YThj
ZjY2YzA0NzhmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE2LTAyLTE4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgQmluZGlu
ZyBnZW5lcmF0b3Igc2hvdWxkIHN1cHBvcnQga2V5IHZhbHVlIGl0ZXJhYmxlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ0MTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGFkZGVkIGxh
eW91dCBhbmQgYmluZGluZyB0ZXN0cy4KKworICAgICAgICBpdGVyYWJsZTxrZXksIHZhbHVlPiBp
biBhIElETCBmaWxlIHdpbGwgdHJpZ2dlciB0aGUgZ2VuZXJhdGlvbiBvZiBlbnRyaWVzLCBrZXlz
LCB2YWx1ZXMsIFtTeW1ib2wuaXRlcmF0b3JdIGFuZCBmb3JFYWNoIG1ldGhvZHMgdG8gdGhlIHBy
b3RvdHlwZS4KKyAgICAgICAgVXBkYXRlZCBGZXRjaEhlYWRlcnMgYW5kIEZvbnRGYWNlU2V0IHRv
IHVzZSBpdC4KKworICAgICAgICBJRExQYXJzZXIucG0gcGFyc2VzIHRoZSBpdGVyYWJsZTw+IGFu
ZCBhZGRzIGFuIGl0ZXJhYmxlIGZpZWxkIGluIHRoZSBpbnRlcmZhY2UgY29udGFpbmluZyB0aGUg
aXRlcmFibGUgaW5mb3JtYXRpb24gYW5kIG9iamVjdHMgZm9yIHRoZSBmaXZlIG9wZXJhdGlvbnMu
CisgICAgICAgIElETFBhcnNlci5wbSBpcyBjbGVhbmVkIHVwIGEgYml0IHRvIHJlbW92ZSBwcmV2
aW91cyBJdGVyYXRvciBzdXBwb3J0LCB3aGljaCBkb2VzIG5vdCBzZWVtIHRvIGJlIHN1cHBvcnRl
ZC4KKworICAgICAgICBDb2RlR2VuZXJhdG9ySlMucG0gaXMgdXBkYXRlZCB0byBnZW5lcmF0ZSB0
aGUgY29kZSBmb3IgdGhlIGZpdmUgb3BlcmF0aW9ucywgdXNpbmcgSlNLZXlWYWx1ZUl0ZXJhdG9y
LiBTZXQgaXRlcmF0b3JzIGFyZSBub3QgeWV0IHN1cHBvcnRlZC4KKyAgICAgICAgTW92ZWQgZGVm
aW5pdGlvbiBvZiBJdGVyYXRvciBLZXkgYW5kIFZhbHVlIFR5cGUgdG8gYmluZGluZyBnZW5lcmF0
ZWQgSlNYWCBjbGFzcyBiYXNlZCBvbiBpdGVyYWJsZTw+IGRlY2xhcmF0aW9uIGluIHRoZSBJREwu
CisKKyAgICAgICAgQWRkZWQgYmluZGluZyB0ZXN0IGFuZCBGZXRjaCBIZWFkZXJzIHRlc3RzLgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRj
aEhlYWRlcnMuaWRsOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRmV0Y2hIZWFkZXJzQ3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0ZvbnRGYWNlU2V0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTRm9udEZhY2VTZXQ6OnJlYWR5KTogUmVtb3ZlZCBpdGVyYWJsZSBjdXN0b20gbWV0aG9k
cy4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0tleVZhbHVlSXRlcmF0b3IuaDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUtleVZhbHVlSXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6a2V5
VmFsdWVJdGVyYXRvckZvckVhY2gpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtOgorICAgICAgICAoR2V0RnVuY3Rpb25OYW1lKToKKyAgICAgICAgKFByb3Rv
dHlwZUZ1bmN0aW9uQ291bnQpOgorICAgICAgICAoUHJvdG90eXBlUHJvcGVydHlDb3VudCk6Cisg
ICAgICAgIChHZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFibGUpOgorICAgICAgICAoR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25D
YWxsKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb25JdGVyYWJsZUZ1bmN0aW9ucyk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06CisgICAgICAgIChwYXJz
ZU9wZXJhdGlvbk9ySXRlcmF0b3IpOgorICAgICAgICAocGFyc2VPcGVyYXRpb25Pckl0ZXJhdG9y
UmVzdCk6CisgICAgICAgIChwYXJzZUl0ZXJhYmxlUmVzdCk6CisgICAgICAgIChwYXJzZU9wdGlv
bmFsSXRlcmFibGVJbnRlcmZhY2UpOgorICAgICAgICAoYXBwbHlNZW1iZXJMaXN0KToKKyAgICAg
ICAgKHBhcnNlU3BlY2lhbCk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmpQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uU3ltYm9sSXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25FbnRyaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uS2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkZvckVhY2gpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlk
bDoKKyAgICAgICAgKiBjc3MvRm9udEZhY2VTZXQuaWRsOgorCiAyMDE2LTAyLTE3ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0ZvbnQgTG9hZGlu
Z10gSW1wbGVtZW50IEZvbnRGYWNlU2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDEwMGFiNGQw
OTJkNThhY2QwNTYwMTQ5MzZhMGY0YjRiMDYzMjQzZWEuLmNiMTNlMDNkYjdlNWU2ZjI1NTQ5MTMw
OGY4MDBkOTRiZmVhZTExNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMTYwLDcgKzExNjAs
NiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVy
LmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwCiAgICAgYmluZGlu
Z3MvanMvSlNFeGNlcHRpb25CYXNlLmNwcAotICAgIGJpbmRpbmdzL2pzL0pTRmV0Y2hIZWFkZXJz
Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRmlsZVJlYWRlckN1c3RvbS5jcHAKICAgICBi
aW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTSFRN
TEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEhlYWRlcnMuaAppbmRleCBmMzU4MWQzMjRiZTg2OTU1NWI0NTY5OTI1ZjQwNzg0YmQyZmVi
NzY2Li41N2ZmNzNmZjc2MmNlODhkMDBiM2JmNjUyNzIyOTY3MmEzNWU5OWNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmgKQEAgLTY1LDExICs2NSw2IEBA
IHB1YmxpYzoKICAgICBjbGFzcyBJdGVyYXRvciB7CiAgICAgcHVibGljOgogICAgICAgICBleHBs
aWNpdCBJdGVyYXRvcihGZXRjaEhlYWRlcnMmKTsKLQotICAgICAgICAvLyBGSVhNRTogQmluZGlu
ZyBnZW5lcmF0b3Igc2hvdWxkIGJlIGFibGUgdG8gZ2VuZXJhdGUgaXRlcmF0b3Iga2V5IGFuZCB2
YWx1ZSB0eXBlcy4KLSAgICAgICAgdXNpbmcgS2V5ID0gU3RyaW5nOwotICAgICAgICB1c2luZyBW
YWx1ZSA9IFN0cmluZzsKLQogICAgICAgICBib29sIG5leHQoU3RyaW5nJiBuZXh0S2V5LCBTdHJp
bmcmIG5leHRWYWx1ZSk7CiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEhlYWRlcnMuaWRsCmluZGV4IGY2MzMzOTc1OThlMTBkYTlmYjhmM2RkYzZm
ZmZhNzA3OWEyMGVmYzYuLmYyMzdhNzg0YzdhNTFkMGRkZGExZGUxMDVmM2M3MzQ1YmY4YTcwNGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5pZGwKQEAg
LTQwLDExICs0MCw3IEBAIGludGVyZmFjZSBGZXRjaEhlYWRlcnMgewogICAgIFtSYWlzZXNFeGNl
cHRpb25dIGJvb2xlYW4gaGFzKERPTVN0cmluZyBuYW1lKTsKICAgICBbUmFpc2VzRXhjZXB0aW9u
XSB2b2lkIHNldChET01TdHJpbmcgbmFtZSwgRE9NU3RyaW5nIHZhbHVlKTsKIAotICAgIC8vIEZJ
WE1FOiBTdXBwb3J0IGl0ZXJhYmxlIHdpdGhpbiBiaW5kaW5nIGdlbmVyYXRvci4KLSAgICAvL2l0
ZXJhYmxlPERPTVN0cmluZywgRE9NU3RyaW5nPjsKLSAgICBbQ3VzdG9tXSBhbnkgZW50cmllcygp
OwotICAgIFtDdXN0b21dIGFueSBrZXlzKCk7Ci0gICAgW0N1c3RvbV0gYW55IHZhbHVlcygpOwor
ICAgIGl0ZXJhYmxlPERPTVN0cmluZywgRE9NU3RyaW5nPjsKIAogICAgIFtQcml2YXRlLCBSYWlz
ZXNFeGNlcHRpb24sIEltcGxlbWVudGVkQXM9YXBwZW5kXSB2b2lkIGFwcGVuZEZyb21KUyhET01T
dHJpbmcgbmFtZSwgRE9NU3RyaW5nIHZhbHVlKTsKICAgICBbUHJpdmF0ZSwgUmFpc2VzRXhjZXB0
aW9uXSB2b2lkIGluaXRpYWxpemVXaXRoKEZldGNoSGVhZGVycyBoZWFkZXJzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5ZGZk
NzgxNDdkMWYwODU0Y2ZlYzdkNzQzYzM4YWJiMGRjNjYwMzU2Li5lMGE5Mjc2OGM5ZDQxNTE4YjI3
YTg3N2ExMzFhOGFkYzhhMWYzNjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTQ5LDcgKzE1NDksNiBAQAogCQk0MUQwMTVD
QjBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMDE1QzkwRjRCNUM3MTAwNEE2NjJGIC8qIENv
bnRlbnRUeXBlLmNwcCAqLzsgfTsKIAkJNDFFMUIxRDAwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3Ry
YWN0V29ya2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxRTFCMUNBMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5jcHAgKi87IH07
CiAJCTQxRTFCMUQxMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMUIxQ0IwRkY1OTg2OTAw
NTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmggKi87IH07Ci0JCTQxRTkxMEE3MUM2MEZENkMwMDdB
NDUzRiAvKiBKU0ZldGNoSGVhZGVyc0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUU5MTBBNjFDNjBGRDZDMDA3QTQ1M0YgLyogSlNGZXRj
aEhlYWRlcnNDdXN0b20uY3BwICovOyB9OwogCQk0MUYwNjIxNDBGNUYxOTI2MDBBMDdFQUMgLyog
SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFGMDYyMTIwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRh
dGFiYXNlUmVzb3VyY2UuaCAqLzsgfTsKIAkJNDFGMDYyMTUwRjVGMTkyNjAwQTA3RUFDIC8qIElu
c3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFGMDYyMTMwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRh
dGFiYXNlUmVzb3VyY2UuY3BwICovOyB9OwogCQk0MUYwNjZFNDBGNjRCQ0Y2MDBBMDdFQUMgLyog
U2NyaXB0R2xvYmFsT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUYwNjZFMjBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0R2xvYmFsT2JqZWN0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTkw
MjEsNyArOTAyMCw2IEBACiAJCTQxRTFCMUNBMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdv
cmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBYnN0cmFjdFdv
cmtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRTFCMUNCMEZGNTk4Njkw
MDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBYnN0cmFjdFdvcmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUUx
QjFDQzBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IEFic3RyYWN0V29ya2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNDFFOTEwQTYxQzYwRkQ2QzAwN0E0NTNGIC8qIEpTRmV0Y2hIZWFkZXJzQ3VzdG9tLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmV0Y2hIZWFkZXJzQ3VzdG9t
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGMDYyMTIwRjVGMTkyNjAwQTA3
RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MUYwNjIxMzBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJh
c2VSZXNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNw
ZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDFGMDY2RTIwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdEdsb2JhbE9iamVjdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRHbG9iYWxPYmplY3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyNDA0LDcgKzIyNDAyLDYgQEAKIAkJCQlCQzJFRDU1NDBD
NkI5QkQzMDA5MjBCRkYgLyogSlNFbGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlBREVDNzhGNzE4
RUU1MzA4MDAxMzE1QzIgLyogSlNFbGVtZW50Q3VzdG9tLmggKi8sCiAJCQkJQkNFRkFGNEQwQzMx
N0U2OTAwRkE4MUY2IC8qIEpTRXZlbnRDdXN0b20uY3BwICovLAotCQkJCTQxRTkxMEE2MUM2MEZE
NkMwMDdBNDUzRiAvKiBKU0ZldGNoSGVhZGVyc0N1c3RvbS5jcHAgKi8sCiAJCQkJMkU3NTgyRUQx
Mjc2NEYyNjAwNjI2MjhCIC8qIEpTRmlsZVJlYWRlckN1c3RvbS5jcHAgKi8sCiAJCQkJRkU4MEQ3
QTYwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb25DdXN0b20uY3BwICovLAogCQkJCUJD
RTdCMTkyMEQ0RTg2OTYwMDc1QTUzOSAvKiBKU0hpc3RvcnlDdXN0b20uY3BwICovLApAQCAtMjk1
NTcsNyArMjk1NTQsNiBAQAogCQkJCTk3QjM4RTI4MTUxQzQyNzMwMDQ2MjJFOSAvKiBET01XaW5k
b3dOb3RpZmljYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3RDJBRDAzMTRCODIzQTYw
MDkzREYzMiAvKiBET01XaW5kb3dQcm9wZXJ0eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBQTJB
NUFENzE2QTQ4NjFBMDA5NzVBMjUgLyogRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCTQxRTkxMEE3MUM2MEZENkMwMDdBNDUzRiAvKiBKU0ZldGNoSGVhZGVy
c0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOENDQkI0ODE1MUY4MzE2MDBBQjdDRTkg
LyogRE9NV2luZG93V2ViRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1M0RBNDgx
MTQzMTM0RDAwMEQ4MTdFIC8qIERPTVdyYXBwZXJXb3JsZC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQTFEMTM4MTBBNTMyNTUyMDA2NEJGNUYgLyogRE9NWFBhdGgubW0gaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9u
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3Bw
CmluZGV4IDdlMjNmMDU4YjRiMDQyNzdmOTFkZjEzMzNiNjFlMTM1NWRjZTA5MGYuLmRkNDc5MDFj
ZDU5N2IwMzVkOWY2YjUxZDVjOGIwMjM2NGU1ZGIyZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcApAQCAtNzcsNyArNzcsNiBAQAog
I2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5jcHAiCiAjaW5jbHVkZSAiSlNFdmVudFRhcmdldEN1
c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNFeGNlcHRpb25CYXNlLmNwcCIKLSNpbmNsdWRlICJKU0Zl
dGNoSGVhZGVyc0N1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNGaWxlUmVhZGVyQ3VzdG9tLmNwcCIK
ICNpbmNsdWRlICJKU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0hUTUxBbGxD
b2xsZWN0aW9uQ3VzdG9tLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRmV0Y2hIZWFkZXJzQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRmV0Y2hIZWFkZXJzQ3VzdG9tLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MjU4MmNiZmY4NThlYmM0ZjIyMGEzZWJmYzkyNzVkMTQyYjE5ZDQ3Ni4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0ZldGNoSGVhZGVyc0N1c3RvbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IENhbm9uIEluYy4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6Ci0gKgotICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBDYW5vbiBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICog
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkpTRmV0Y2hIZWFkZXJzLmgiCi0KLSNpZiBFTkFCTEUoRkVUQ0hf
QVBJKQotCi0jaW5jbHVkZSAiSlNLZXlWYWx1ZUl0ZXJhdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotLy8gRklYTUU6IE1vdmUgdGhpcyBjb2RlIHRvIEpTRmV0Y2hIZWFkZXJzLgotdXNp
bmcgRmV0Y2hIZWFkZXJzSXRlcmF0b3IgPSBKU0tleVZhbHVlSXRlcmF0b3I8SlNGZXRjaEhlYWRl
cnM+OwotdXNpbmcgRmV0Y2hIZWFkZXJzSXRlcmF0b3JQcm90b3R5cGUgPSBKU0tleVZhbHVlSXRl
cmF0b3JQcm90b3R5cGU8SlNGZXRjaEhlYWRlcnM+OwotCi10ZW1wbGF0ZTw+Ci1jb25zdCBKU0M6
OkNsYXNzSW5mbyBGZXRjaEhlYWRlcnNJdGVyYXRvcjo6c19pbmZvID0geyAiSGVhZGVycyBJdGVy
YXRvciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRmV0Y2hIZWFkZXJz
SXRlcmF0b3IpIH07Ci0KLXRlbXBsYXRlPD4KLWNvbnN0IEpTQzo6Q2xhc3NJbmZvIEZldGNoSGVh
ZGVyc0l0ZXJhdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJIZWFkZXJzIEl0ZXJhdG9yIiwgJkJh
c2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShGZXRjaEhlYWRlcnNJdGVyYXRvclBy
b3RvdHlwZSkgfTsKLQotSlNDOjpKU1ZhbHVlIEpTRmV0Y2hIZWFkZXJzOjplbnRyaWVzKEpTQzo6
RXhlY1N0YXRlJikKLXsKLSAgICByZXR1cm4gY3JlYXRlSXRlcmF0b3I8SlNGZXRjaEhlYWRlcnM+
KCpnbG9iYWxPYmplY3QoKSwgKnRoaXMsIEl0ZXJhdGlvbktpbmQ6OktleVZhbHVlKTsKLX0KLQot
SlNDOjpKU1ZhbHVlIEpTRmV0Y2hIZWFkZXJzOjprZXlzKEpTQzo6RXhlY1N0YXRlJikKLXsKLSAg
ICByZXR1cm4gY3JlYXRlSXRlcmF0b3I8SlNGZXRjaEhlYWRlcnM+KCpnbG9iYWxPYmplY3QoKSwg
KnRoaXMsIEl0ZXJhdGlvbktpbmQ6OktleSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSBKU0ZldGNoSGVh
ZGVyczo6dmFsdWVzKEpTQzo6RXhlY1N0YXRlJikKLXsKLSAgICByZXR1cm4gY3JlYXRlSXRlcmF0
b3I8SlNGZXRjaEhlYWRlcnM+KCpnbG9iYWxPYmplY3QoKSwgKnRoaXMsIEl0ZXJhdGlvbktpbmQ6
OlZhbHVlKTsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRm9udEZhY2VTZXRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNGb250RmFjZVNldEN1c3RvbS5jcHAKaW5kZXggY2Q4NDk4NTZjZDk2OGNiMWQ2ZTNk
Zjc1ZDY3YmQ0OGJmOTAxN2JkNi4uOWEzYWQzMGQ4NmJjZjBmNGRiOGY1YWEwMzBmM2EyOWRhOWRl
MGYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGb250RmFjZVNl
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGb250RmFjZVNl
dEN1c3RvbS5jcHAKQEAgLTMyLDM0ICszMiwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXVzaW5nIEZvbnRGYWNlU2V0SXRlcmF0b3IgPSBKU0tleVZhbHVlSXRlcmF0b3I8SlNGb250RmFj
ZVNldD47Ci11c2luZyBGb250RmFjZVNldEl0ZXJhdG9yUHJvdG90eXBlID0gSlNLZXlWYWx1ZUl0
ZXJhdG9yUHJvdG90eXBlPEpTRm9udEZhY2VTZXQ+OwotCi10ZW1wbGF0ZTw+Ci1jb25zdCBKU0M6
OkNsYXNzSW5mbyBGb250RmFjZVNldEl0ZXJhdG9yOjpzX2luZm8gPSB7ICJGb250IEZhY2UgU2V0
IEl0ZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShGb250RmFj
ZVNldEl0ZXJhdG9yKSB9OwotCi10ZW1wbGF0ZTw+Ci1jb25zdCBKU0M6OkNsYXNzSW5mbyBGb250
RmFjZVNldEl0ZXJhdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJGb250IEZhY2UgU2V0IEl0ZXJh
dG9yIFByb3RvdHlwZSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRm9u
dEZhY2VTZXRJdGVyYXRvclByb3RvdHlwZSkgfTsKLQogSlNDOjpKU1ZhbHVlIEpTRm9udEZhY2VT
ZXQ6OnJlYWR5KEpTQzo6RXhlY1N0YXRlJiBleGVjU3RhdGUpIGNvbnN0CiB7CiAgICAgYXV0byYg
cHJvbWlzZSA9IHdyYXBwZWQoKS5wcm9taXNlKGV4ZWNTdGF0ZSk7CiAgICAgcmV0dXJuIHByb21p
c2UuZGVmZXJyZWQoKS5wcm9taXNlKCk7CiB9CiAKLUpTQzo6SlNWYWx1ZSBKU0ZvbnRGYWNlU2V0
OjplbnRyaWVzKEpTQzo6RXhlY1N0YXRlJikKLXsKLSAgICByZXR1cm4gY3JlYXRlSXRlcmF0b3I8
SlNGb250RmFjZVNldD4oKmdsb2JhbE9iamVjdCgpLCAqdGhpcywgSXRlcmF0aW9uS2luZDo6S2V5
VmFsdWUpOwotfQotCi1KU0M6OkpTVmFsdWUgSlNGb250RmFjZVNldDo6a2V5cyhKU0M6OkV4ZWNT
dGF0ZSYpCi17Ci0gICAgcmV0dXJuIGNyZWF0ZUl0ZXJhdG9yPEpTRm9udEZhY2VTZXQ+KCpnbG9i
YWxPYmplY3QoKSwgKnRoaXMsIEl0ZXJhdGlvbktpbmQ6OktleSk7Ci19Ci0KLUpTQzo6SlNWYWx1
ZSBKU0ZvbnRGYWNlU2V0Ojp2YWx1ZXMoSlNDOjpFeGVjU3RhdGUmKQotewotICAgIHJldHVybiBj
cmVhdGVJdGVyYXRvcjxKU0ZvbnRGYWNlU2V0PigqZ2xvYmFsT2JqZWN0KCksICp0aGlzLCBJdGVy
YXRpb25LaW5kOjpWYWx1ZSk7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTS2V5VmFsdWVJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNLZXlWYWx1ZUl0ZXJhdG9yLmgKaW5kZXggZmJiZmZkMGM1N2JiMGFlZTA5MmJiYjNiZjQ4
Y2M5MmU4MDc5OGM5ZC4uOTI4NTFmYWM1ODlhNDkxYjAzMTZmOTczMGRkNWJkNmFmMjEyOWQ3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNLZXlWYWx1ZUl0ZXJhdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNLZXlWYWx1ZUl0ZXJhdG9yLmgK
QEAgLTEwNSw5ICsxMDUsMzggQEAgcHJpdmF0ZToKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEpT
V3JhcHBlcj4KLUpTS2V5VmFsdWVJdGVyYXRvcjxKU1dyYXBwZXI+KiBjcmVhdGVJdGVyYXRvcihK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU1dyYXBwZXImIHdyYXBwZXIsIEl0ZXJh
dGlvbktpbmQga2luZCkKK0pTQzo6RW5jb2RlZEpTVmFsdWUgY3JlYXRlS2V5VmFsdWVJdGVyYXRv
cihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEl0ZXJhdGlvbktpbmQga2luZCwgY29uc3QgY2hhciog
cHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBKU0tleVZhbHVlSXRlcmF0b3I8SlNXcmFwcGVy
Pjo6Y3JlYXRlKGdsb2JhbE9iamVjdC52bSgpLCBnZXRET01TdHJ1Y3R1cmU8SlNLZXlWYWx1ZUl0
ZXJhdG9yPEpTV3JhcHBlcj4+KGdsb2JhbE9iamVjdC52bSgpLCBnbG9iYWxPYmplY3QpLCB3cmFw
cGVyLCBraW5kKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNXcmFw
cGVyKj4oc3RhdGUudGhpc1ZhbHVlKCkpOworICAgIGlmIChVTkxJS0VMWSghd3JhcHBlcikpCisg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsIEpTV3JhcHBlcjo6aW5mbygp
LT5jbGFzc05hbWUsIHByb3BlcnR5TmFtZSk7CisgICAgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCA9ICp3cmFwcGVyLT5nbG9iYWxPYmplY3QoKTsKKyAgICByZXR1cm4gSlNDOjpKU1Zh
bHVlOjplbmNvZGUoSlNLZXlWYWx1ZUl0ZXJhdG9yPEpTV3JhcHBlcj46OmNyZWF0ZShnbG9iYWxP
YmplY3Qudm0oKSwgZ2V0RE9NU3RydWN0dXJlPEpTS2V5VmFsdWVJdGVyYXRvcjxKU1dyYXBwZXI+
PihnbG9iYWxPYmplY3Qudm0oKSwgZ2xvYmFsT2JqZWN0KSwgKndyYXBwZXIsIGtpbmQpKTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgSlNXcmFwcGVyPgorSlNDOjpFbmNvZGVkSlNWYWx1ZSBrZXlW
YWx1ZUl0ZXJhdG9yRm9yRWFjaChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIHBy
b3BlcnR5TmFtZSkKK3sKKyAgICBhdXRvIHdyYXBwZXIgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNX
cmFwcGVyKj4oc3RhdGUudGhpc1ZhbHVlKCkpOworICAgIGlmIChVTkxJS0VMWSghd3JhcHBlcikp
CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsIEpTV3JhcHBlcjo6aW5m
bygpLT5jbGFzc05hbWUsIHByb3BlcnR5TmFtZSk7CisKKyAgICBKU0M6OkNhbGxEYXRhIGNhbGxE
YXRhOworICAgIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKHN0YXRl
LmFyZ3VtZW50KDApLCBjYWxsRGF0YSk7CisgICAgaWYgKGNhbGxUeXBlID09IEpTQzo6Q2FsbFR5
cGVOb25lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmc3RhdGUpOworCisgICAg
dHlwZW5hbWUgSlNXcmFwcGVyOjpJdGVyYXRvcktleSBuZXh0S2V5OworICAgIHR5cGVuYW1lIEpT
V3JhcHBlcjo6SXRlcmF0b3JWYWx1ZSBuZXh0VmFsdWU7CisgICAgYXV0byBpdGVyYXRvciA9IHdy
YXBwZXItPndyYXBwZWQoKS5jcmVhdGVJdGVyYXRvcigpOworICAgIHdoaWxlICghaXRlcmF0b3Iu
bmV4dChuZXh0S2V5LCBuZXh0VmFsdWUpKSB7CisgICAgICAgIEpTQzo6TWFya2VkQXJndW1lbnRC
dWZmZXIgYXJndW1lbnRzOworICAgICAgICBhcmd1bWVudHMuYXBwZW5kKHRvSlMoJnN0YXRlLCB3
cmFwcGVyLT5nbG9iYWxPYmplY3QoKSwgbmV4dFZhbHVlKSk7CisgICAgICAgIGFyZ3VtZW50cy5h
cHBlbmQodG9KUygmc3RhdGUsIHdyYXBwZXItPmdsb2JhbE9iamVjdCgpLCBuZXh0S2V5KSk7Cisg
ICAgICAgIGFyZ3VtZW50cy5hcHBlbmQod3JhcHBlcik7CisgICAgICAgIEpTQzo6Y2FsbCgmc3Rh
dGUsIHN0YXRlLmFyZ3VtZW50KDApLCBjYWxsVHlwZSwgY2FsbERhdGEsIHdyYXBwZXIsIGFyZ3Vt
ZW50cyk7CisgICAgfSAKKyAgICByZXR1cm4gSlNDOjpKU1ZhbHVlOjplbmNvZGUoSlNDOjpqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgSlNXcmFwcGVyPgpAQCAtMTIwLDgg
KzE0OSw4IEBAIHZvaWQgSlNLZXlWYWx1ZUl0ZXJhdG9yPEpTV3JhcHBlcj46OmRlc3Ryb3koSlND
ZWxsKiBjZWxsKQogdGVtcGxhdGU8dHlwZW5hbWUgSlNXcmFwcGVyPgogYm9vbCBKU0tleVZhbHVl
SXRlcmF0b3I8SlNXcmFwcGVyPjo6bmV4dChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNW
YWx1ZSYgdmFsdWUpCiB7Ci0gICAgdHlwZW5hbWUgRE9NV3JhcHBlZDo6SXRlcmF0b3I6OktleSBu
ZXh0S2V5OwotICAgIHR5cGVuYW1lIERPTVdyYXBwZWQ6Okl0ZXJhdG9yOjpWYWx1ZSBuZXh0VmFs
dWU7CisgICAgdHlwZW5hbWUgSlNXcmFwcGVyOjpJdGVyYXRvcktleSBuZXh0S2V5OworICAgIHR5
cGVuYW1lIEpTV3JhcHBlcjo6SXRlcmF0b3JWYWx1ZSBuZXh0VmFsdWU7CiAgICAgaWYgKG1faXRl
cmF0b3IubmV4dChuZXh0S2V5LCBuZXh0VmFsdWUpKSB7CiAgICAgICAgIHZhbHVlID0gSlNDOjpq
c1VuZGVmaW5lZCgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggMGE4OGVhMjM1NThl
N2FiZGRjM2YxZTUwN2Y4NWY0MTA1ZTVlZGI2MC4uNTk3N2Q4M2E4NTU4YWMwOTFiZGM2MjU4MjFh
YjRhZjZjYWIxMTMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTExLDcgKzExLDcgQEAKICMgQ29weXJpZ2h0IChDKSAy
MDEyIEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmlnaHQgKEMpIDIw
MDcsIDIwMDgsIDIwMDksIDIwMTIgR29vZ2xlIEluYy4KICMgQ29weXJpZ2h0IChDKSAyMDEzIFNh
bXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIENvcHlyaWdodCAoQykg
MjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAx
NSwgMjAxNiBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICMgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
QEAgLTYwNSw4ICs2MDUsMTEgQEAgc3ViIEdldEZ1bmN0aW9uTmFtZQogICAgICAgICByZXR1cm4g
R2V0SlNCdWlsdGluRnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRmdW5jdGlvbik7CiAgICAgfQog
CisgICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOworICAg
ICRmdW5jdGlvbk5hbWUgPSAiU3ltYm9sSXRlcmF0b3IiIGlmICRmdW5jdGlvbk5hbWUgZXEgIltT
eW1ib2wuSXRlcmF0b3JdIjsKKwogICAgIG15ICRraW5kID0gJGZ1bmN0aW9uLT5pc1N0YXRpYyA/
ICJDb25zdHJ1Y3RvciIgOiAoT3BlcmF0aW9uU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRlcmZhY2Us
ICRmdW5jdGlvbikgPyAiSW5zdGFuY2UiIDogIlByb3RvdHlwZSIpOwotICAgIHJldHVybiAkY29k
ZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkY2xhc3NOYW1lKSAuICRraW5kIC4gIkZ1bmN0aW9uIiAu
ICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lKTsK
KyAgICByZXR1cm4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGNsYXNzTmFtZSkgLiAka2lu
ZCAuICJGdW5jdGlvbiIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rpb25OYW1l
KTsKIH0KIAogc3ViIEdldFNwZWNpYWxBY2Nlc3NvckZ1bmN0aW9uRm9yVHlwZQpAQCAtNzY5LDYg
Kzc3Miw4IEBAIHN1YiBQcm90b3R5cGVGdW5jdGlvbkNvdW50CiAgICAgICAgICRjb3VudCsrIGlm
ICEkZnVuY3Rpb24tPmlzU3RhdGljICYmICFPcGVyYXRpb25TaG91bGRCZU9uSW5zdGFuY2UoJGlu
dGVyZmFjZSwgJGZ1bmN0aW9uKTsKICAgICB9CiAKKyAgICAkY291bnQgKz0gc2NhbGFyIEB7JGlu
dGVyZmFjZS0+aXRlcmFibGUtPmZ1bmN0aW9uc30gaWYgJGludGVyZmFjZS0+aXRlcmFibGU7CisK
ICAgICByZXR1cm4gJGNvdW50OwogfQogCkBAIC0xMDUwLDYgKzEwNTUsMTYgQEAgc3ViIEdlbmVy
YXRlSGVhZGVyCiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQg
ZGVzdHJveShKU0M6OkpTQ2VsbCopO1xuIik7CiAgICAgfQogCisgICAgaWYgKCRpbnRlcmZhY2Ut
Pml0ZXJhYmxlKSB7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbiIpOworICAgICAg
ICBpZiAoJGludGVyZmFjZS0+aXRlcmFibGUtPmtleVR5cGUpIHsKKyAgICAgICAgICAgIG15ICRr
ZXlUeXBlID0gR2V0TmF0aXZlVHlwZSgkaW50ZXJmYWNlLT5pdGVyYWJsZS0+a2V5VHlwZSk7Cisg
ICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHVzaW5nIEl0ZXJhdG9yS2V5ID0g
JGtleVR5cGU7XG4iKTsKKyAgICAgICAgfQorICAgICAgICBteSAkdmFsdWVUeXBlID0gR2V0TmF0
aXZlVHlwZSgkaW50ZXJmYWNlLT5pdGVyYWJsZS0+dmFsdWVUeXBlKTsKKyAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICB1c2luZyBJdGVyYXRvclZhbHVlID0gJHZhbHVlVHlwZTtcbiIp
OworICAgIH0KKwogICAgICMgQ2xhc3MgaW5mbwogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAi
Tm9kZSIpIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxuIik7CkBAIC0xNDI1LDEx
ICsxNDQwLDE1IEBAIHN1YiBHZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFibGUKICAgICAgICAgfQog
ICAgIH0KIAotICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRpbnRlcmZhY2UtPmZ1bmN0aW9u
c30pIHsKKyAgICBteSBAZnVuY3Rpb25zID0gQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9OworICAg
IHB1c2goQGZ1bmN0aW9ucywgQHskaW50ZXJmYWNlLT5pdGVyYWJsZS0+ZnVuY3Rpb25zfSkgaWYg
JGludGVyZmFjZS0+aXRlcmFibGU7CisgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEBmdW5jdGlv
bnMpIHsKICAgICAgICAgbmV4dCBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJQcml2YXRlIn0pOwogICAgICAgICBuZXh0IGlmICgkZnVuY3Rpb24tPmlzU3Rh
dGljKTsKICAgICAgICAgbmV4dCBpZiAkZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSAmJiAkZnVu
Y3Rpb24tPntvdmVybG9hZEluZGV4fSA+IDE7CiAgICAgICAgIG5leHQgaWYgT3BlcmF0aW9uU2hv
dWxkQmVPbkluc3RhbmNlKCRpbnRlcmZhY2UsICRmdW5jdGlvbikgIT0gJGlzSW5zdGFuY2U7Cisg
ICAgICAgIG5leHQgaWYgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUgZXEgIltTeW1ib2wuSXRl
cmF0b3JdIjsKKwogICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1l
OwogICAgICAgICBwdXNoKEAkaGFzaEtleXMsICRuYW1lKTsKIApAQCAtMTgzNSwxNCArMTg1NCwx
NyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIHB1c2goQGltcGxDb250ZW50LCAi
XG51c2luZyBuYW1lc3BhY2UgSlNDO1xuXG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIm5h
bWVzcGFjZSBXZWJDb3JlIHtcblxuIik7CiAKKyAgICBteSBAZnVuY3Rpb25zID0gQHskaW50ZXJm
YWNlLT5mdW5jdGlvbnN9OworICAgIHB1c2goQGZ1bmN0aW9ucywgQHskaW50ZXJmYWNlLT5pdGVy
YWJsZS0+ZnVuY3Rpb25zfSkgaWYgJGludGVyZmFjZS0+aXRlcmFibGU7CisKICAgICBteSAkbnVt
Q29uc3RhbnRzID0gQHskaW50ZXJmYWNlLT5jb25zdGFudHN9OwotICAgIG15ICRudW1GdW5jdGlv
bnMgPSBAeyRpbnRlcmZhY2UtPmZ1bmN0aW9uc307CisgICAgbXkgJG51bUZ1bmN0aW9ucyA9IEBm
dW5jdGlvbnM7CiAgICAgbXkgJG51bUF0dHJpYnV0ZXMgPSBAeyRpbnRlcmZhY2UtPmF0dHJpYnV0
ZXN9OwogCiAgICAgaWYgKCRudW1GdW5jdGlvbnMgPiAwKSB7CiAgICAgICAgIG15ICRpbkFwcGxl
Q29weXJpZ2h0ID0gMDsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIi8vIEZ1bmN0aW9uc1xu
XG4iKTsKLSAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+ZnVuY3Rp
b25zfSkgeworICAgICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQGZ1bmN0aW9ucykgewogICAg
ICAgICAgICAgbmV4dCBpZiAkZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSAmJiAkZnVuY3Rpb24t
PntvdmVybG9hZEluZGV4fSA+IDE7CiAgICAgICAgICAgICBuZXh0IGlmICRmdW5jdGlvbi0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRm9yd2FyZERlY2xhcmVJbkhlYWRlciJ9Owog
ICAgICAgICAgICAgbmV4dCBpZiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkN1c3RvbUJpbmRpbmcifTsKQEAgLTIxMjMsNiArMjE0NSwxMSBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHB1dERpcmVjdCh2bSwgY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS4iIC4gJGZ1bmN0aW9uLT5z
aWduYXR1cmUtPm5hbWUgLiAiUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QoKSwgMCwgU3RyaW5nKCksICIgLiBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFj
ZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKSAuICIpLCBSZWFkT25seSB8IERvbnRFbnVtKTtcbiIp
OwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+aXRlcmFibGUp
IHsKKyAgICAgICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRp
bnRlcmZhY2UsICRjbGFzc05hbWUsIEB7JGludGVyZmFjZS0+aXRlcmFibGUtPmZ1bmN0aW9uc31b
MF0pOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0KCksIDAsIEFTQ0lJTGl0ZXJhbChcIltTeW1ib2wuSXRlcmF0b3JdXCIp
LCAkZnVuY3Rpb25OYW1lKSwgUmVhZE9ubHkgfCBEb250RW51bSk7XG4iKTsKKyAgICAgICAgICAg
IH0KKwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1l
fVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKVxuIik7CkBAIC0yOTkwLDYgKzMwMTcs
MTAgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgIH0KIAorICAgIGlmICgkaW50
ZXJmYWNlLT5pdGVyYWJsZSkgeworICAgICAgICBHZW5lcmF0ZUltcGxlbWVudGF0aW9uSXRlcmFi
bGVGdW5jdGlvbnMoJGludGVyZmFjZSk7CisgICAgfQorCiAgICAgaWYgKCRuZWVkc1Zpc2l0Q2hp
bGRyZW4pIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKVxuIik7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CkBAIC0zOTIyLDYgKzM5NTMsNTkgQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb25GdW5jdGlvbkNhbGwoKQogICAgIH0KIH0KIAorc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb25JdGVyYWJsZUZ1bmN0aW9ucworeworICAgIG15ICRpbnRl
cmZhY2UgPSBzaGlmdDsKKworICAgIGlmIChub3QgJGludGVyZmFjZS0+aXRlcmFibGUtPmlzTWFw
KSB7CisgICAgICAgIGRpZSAiTm8gc3VwcG9ydCB5ZXQgZm9yIHNldCBpdGVyYXRvcnMiOworICAg
IH0KKworICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+bmFtZTsKKyAgICBteSAk
Y2xhc3NOYW1lID0gIkpTJGludGVyZmFjZU5hbWUiOworICAgIG15ICR2aXNpYmxlSW50ZXJmYWNl
TmFtZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRWaXNpYmxlSW50ZXJmYWNlTmFtZSgkaW50ZXJmYWNl
KTsKKworICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKU0tleVZhbHVlSXRlcmF0b3IuaCIpOworCisg
ICAgcHVzaChAaW1wbENvbnRlbnQsICA8PEVORCk7Cit1c2luZyAke2ludGVyZmFjZU5hbWV9SXRl
cmF0b3IgPSBKU0tleVZhbHVlSXRlcmF0b3I8JHtjbGFzc05hbWV9PjsKK3VzaW5nICR7aW50ZXJm
YWNlTmFtZX1JdGVyYXRvclByb3RvdHlwZSA9IEpTS2V5VmFsdWVJdGVyYXRvclByb3RvdHlwZTwk
e2NsYXNzTmFtZX0+OworCit0ZW1wbGF0ZTw+Citjb25zdCBKU0M6OkNsYXNzSW5mbyAke2ludGVy
ZmFjZU5hbWV9SXRlcmF0b3I6OnNfaW5mbyA9IHsgIiR7dmlzaWJsZUludGVyZmFjZU5hbWV9IEl0
ZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRSgke2ludGVyZmFj
ZU5hbWV9SXRlcmF0b3IpIH07CisKK3RlbXBsYXRlPD4KK2NvbnN0IEpTQzo6Q2xhc3NJbmZvICR7
aW50ZXJmYWNlTmFtZX1JdGVyYXRvclByb3RvdHlwZTo6c19pbmZvID0geyAiJHt2aXNpYmxlSW50
ZXJmYWNlTmFtZX0gSXRlcmF0b3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKCR7aW50ZXJmYWNlTmFtZX1JdGVyYXRvclByb3RvdHlwZSkgfTsKKworRU5ECisKKyAgICBm
b3JlYWNoIG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5pdGVyYWJsZS0+ZnVuY3Rpb25zfSkg
eworICAgICAgICBteSAkcHJvcGVydHlOYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7
CisgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwg
JGNsYXNzTmFtZSwgJGZ1bmN0aW9uKTsKKworICAgICAgICBpZiAobm90ICRwcm9wZXJ0eU5hbWUg
ZXEgImZvckVhY2giKSB7CisgICAgICAgICAgICBteSAkaXRlcmF0aW9uS2luZCA9ICJLZXlWYWx1
ZSI7CisgICAgICAgICAgICAkaXRlcmF0aW9uS2luZCA9ICJLZXkiIGlmICRwcm9wZXJ0eU5hbWUg
ZXEgImtleXMiOworICAgICAgICAgICAgJGl0ZXJhdGlvbktpbmQgPSAiVmFsdWUiIGlmICRwcm9w
ZXJ0eU5hbWUgZXEgInZhbHVlcyI7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIDw8
RU5EKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2Z1bmN0aW9uTmFtZX0o
SlNDOjpFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIHJldHVybiBjcmVhdGVLZXlWYWx1ZUl0ZXJh
dG9yPCR7Y2xhc3NOYW1lfT4oKnN0YXRlLCBJdGVyYXRpb25LaW5kOjoke2l0ZXJhdGlvbktpbmR9
LCAiJHtwcm9wZXJ0eU5hbWV9Iik7Cit9CisKK0VORAorICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICA8PEVORCk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgJHtmdW5jdGlvbk5hbWV9KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAg
ICByZXR1cm4ga2V5VmFsdWVJdGVyYXRvckZvckVhY2g8JHtjbGFzc05hbWV9Pigqc3RhdGUsICIk
e3Byb3BlcnR5TmFtZX0iKTsKK30KKworRU5ECisgICAgICAgIH0KKyAgICB9Cit9CisKIHN1YiBH
ZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVyZQogewogICAgIG15ICRzaWduYXR1cmUgPSBzaGlmdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBt
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KaW5kZXggNDcy
N2NmN2JmMzVmYjE3NWRkNzhmNjc4Mzk3MTQzZmIxOGYwYmQwNi4uMzhkY2UyNzRlMzVmMTdlMjMy
ZTEwZmM0MDA0Nzk2ZTBiOGY5Zjk3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9JRExQYXJzZXIucG0KQEAgLTU1LDYgKzU1LDcgQEAgc3RydWN0KCBkb21JbnRlcmZhY2Ug
PT4gewogICAgIGlzRXhjZXB0aW9uID0+ICckJywgIyBVc2VkIGZvciBleGNlcHRpb24gaW50ZXJm
YWNlcwogICAgIGlzQ2FsbGJhY2sgPT4gJyQnLCAjIFVzZWQgZm9yIGNhbGxiYWNrIGludGVyZmFj
ZXMKICAgICBpc1BhcnRpYWwgPT4gJyQnLCAjIFVzZWQgZm9yIHBhcnRpYWwgaW50ZXJmYWNlcwor
ICAgIGl0ZXJhYmxlID0+ICckJywgIyBVc2VkIGZvciBpdGVyYWJsZSBpbnRlcmZhY2VzCiB9KTsK
IAogIyBVc2VkIHRvIHJlcHJlc2VudCBkb21JbnRlcmZhY2UgY29udGVudHMgKG5hbWUgb2YgbWV0
aG9kLCBzaWduYXR1cmUpCkBAIC04NSw2ICs4NiwxNSBAQCBzdHJ1Y3QoIGRvbVNpZ25hdHVyZSA9
PiB7CiAgICAgZGVmYXVsdCA9PiAnJCcsICMgRGVmYXVsdCB2YWx1ZSBmb3IgcGFyYW1ldGVycwog
fSk7CiAKKyMgVXNlZCB0byByZXByZXNlbnQgSXRlcmFibGUgaW50ZXJmYWNlcworc3RydWN0KCBk
b21JdGVyYWJsZSA9PiB7CisgICAgaXNNYXAgPT4gJyQnLCAgICAgIyBJcyBtYXAgaXRlcmFibGUg
b3Igc2V0IGl0ZXJhYmxlCisgICAga2V5VHlwZSA9PiAnJCcsICAgIyBLZXkgdHlwZSBmb3IgbWFw
IGl0ZXJhYmxlcworICAgIHZhbHVlVHlwZSA9PiAnJCcsICMgVmFsdWUgdHlwZSBmb3IgbWFwIG9y
IHNldCBpdGVyYWJsZXMKKyAgICBmdW5jdGlvbnMgPT4gJ0AnLCAjIEl0ZXJhYmxlIGZ1bmN0aW9u
cyAoZW50cmllcywga2V5cywgdmFsdWVzLCBbU3ltYm9sLkl0ZXJhdG9yXSwgZm9yRWFjaCkKK30p
OworCisKICMgVXNlZCB0byByZXByZXNlbnQgc3RyaW5nIGNvbnN0YW50cwogc3RydWN0KCBkb21D
b25zdGFudCA9PiB7CiAgICAgbmFtZSA9PiAnJCcsICAgICAgIyBET00gQ29uc3RhbnQgaWRlbnRp
ZmllcgpAQCAtMzI1LDkgKzMzNSw4IEBAIG15ICRuZXh0UHJpbWl0aXZlVHlwZV8yID0gJ14oZG91
YmxlfGZsb2F0fHVucmVzdHJpY3RlZCkkJzsKIG15ICRuZXh0QXJndW1lbnRMaXN0XzEgPSAnXihc
KHw6OnxCeXRlU3RyaW5nfERPTVN0cmluZ3xEYXRlfFxbfGFueXxib29sZWFufGJ5dGV8ZG91Ymxl
fGZsb2F0fGlufGludHxsb25nfG9iamVjdHxvY3RldHxvcHRpb25hbHxzZXF1ZW5jZXxzaG9ydHx1
bnJlc3RyaWN0ZWR8dW5zaWduZWQpJCc7CiBteSAkbmV4dE5vbkFueVR5cGVfMSA9ICdeKGJvb2xl
YW58Ynl0ZXxkb3VibGV8ZmxvYXR8aW50fGxvbmd8b2N0ZXR8c2hvcnR8dW5yZXN0cmljdGVkfHVu
c2lnbmVkKSQnOwogbXkgJG5leHRJbnRlcmZhY2VNZW1iZXJfMSA9ICdeKFwofDo6fEJ5dGVTdHJp
bmd8RE9NU3RyaW5nfERhdGV8YW55fGF0dHJpYnV0ZXxib29sZWFufGJ5dGV8Y3JlYXRvcnxkZWxl
dGVyfGRvdWJsZXxmbG9hdHxnZXR0ZXJ8aW5oZXJpdHxpbnR8bGVnYWN5Y2FsbGVyfGxvbmd8b2Jq
ZWN0fG9jdGV0fHJlYWRvbmx5fHNlcXVlbmNlfHNlcmlhbGl6ZXJ8c2V0dGVyfHNob3J0fHN0YXRp
Y3xzdHJpbmdpZmllcnx1bnJlc3RyaWN0ZWR8dW5zaWduZWR8dm9pZCkkJzsKLW15ICRuZXh0T3B0
aW9uYWxJdGVyYXRvckludGVyZmFjZU9yT2JqZWN0XzEgPSAnXig7fD0pJCc7Ci1teSAkbmV4dEF0
dHJpYnV0ZU9yT3BlcmF0aW9uT3JJdGVyYXRvcl8xID0gJ14oc3RhdGljfHN0cmluZ2lmaWVyKSQn
OwotbXkgJG5leHRBdHRyaWJ1dGVPck9wZXJhdGlvbk9ySXRlcmF0b3JfMiA9ICdeKFwofDo6fEJ5
dGVTdHJpbmd8RE9NU3RyaW5nfERhdGV8YW55fGJvb2xlYW58Ynl0ZXxjcmVhdG9yfGRlbGV0ZXJ8
ZG91YmxlfGZsb2F0fGdldHRlcnxpbnR8bGVnYWN5Y2FsbGVyfGxvbmd8b2JqZWN0fG9jdGV0fHNl
cXVlbmNlfHNldHRlcnxzaG9ydHx1bnJlc3RyaWN0ZWR8dW5zaWduZWR8dm9pZCkkJzsKK215ICRu
ZXh0QXR0cmlidXRlT3JPcGVyYXRpb25fMSA9ICdeKHN0YXRpY3xzdHJpbmdpZmllcikkJzsKK215
ICRuZXh0QXR0cmlidXRlT3JPcGVyYXRpb25fMiA9ICdeKFwofDo6fEJ5dGVTdHJpbmd8RE9NU3Ry
aW5nfERhdGV8YW55fGJvb2xlYW58Ynl0ZXxjcmVhdG9yfGRlbGV0ZXJ8ZG91YmxlfGZsb2F0fGdl
dHRlcnxpbnR8bGVnYWN5Y2FsbGVyfGxvbmd8b2JqZWN0fG9jdGV0fHNlcXVlbmNlfHNldHRlcnxz
aG9ydHx1bnJlc3RyaWN0ZWR8dW5zaWduZWR8dm9pZCkkJzsKIG15ICRuZXh0VW5yZXN0cmljdGVk
RmxvYXRUeXBlXzEgPSAnXihkb3VibGV8ZmxvYXQpJCc7CiBteSAkbmV4dEV4dGVuZGVkQXR0cmli
dXRlUmVzdDNfMSA9ICdeKFwsfDo6fFxdKSQnOwogbXkgJG5leHRFeGNlcHRpb25GaWVsZF8xID0g
J14oXCh8Ojp8Qnl0ZVN0cmluZ3xET01TdHJpbmd8RGF0ZXxhbnl8Ym9vbGVhbnxieXRlfGRvdWJs
ZXxmbG9hdHxpbnR8bG9uZ3xvYmplY3R8b2N0ZXR8c2VxdWVuY2V8c2hvcnR8dW5yZXN0cmljdGVk
fHVuc2lnbmVkKSQnOwpAQCAtOTYxLDcgKzk3MCw3IEBAIHN1YiBwYXJzZUF0dHJpYnV0ZU9yT3Bl
cmF0aW9uT3JJdGVyYXRvcgogICAgIGlmICgkbmV4dC0+dmFsdWUoKSBlcSAic2VyaWFsaXplciIp
IHsKICAgICAgICAgcmV0dXJuICRzZWxmLT5wYXJzZVNlcmlhbGl6ZXIoJGV4dGVuZGVkQXR0cmli
dXRlTGlzdCk7CiAgICAgfQotICAgIGlmICgkbmV4dC0+dmFsdWUoKSA9fiAvJG5leHRBdHRyaWJ1
dGVPck9wZXJhdGlvbk9ySXRlcmF0b3JfMS8pIHsKKyAgICBpZiAoJG5leHQtPnZhbHVlKCkgPX4g
LyRuZXh0QXR0cmlidXRlT3JPcGVyYXRpb25fMS8pIHsKICAgICAgICAgbXkgJHF1YWxpZmllciA9
ICRzZWxmLT5wYXJzZVF1YWxpZmllcigpOwogICAgICAgICBteSAkbmV3RGF0YU5vZGUgPSAkc2Vs
Zi0+cGFyc2VBdHRyaWJ1dGVPck9wZXJhdGlvblJlc3QoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7
CiAgICAgICAgIGlmIChkZWZpbmVkKCRuZXdEYXRhTm9kZSkgJiYgJHF1YWxpZmllciBlcSAic3Rh
dGljIikgewpAQCAtOTcyLDcgKzk4MSw3IEBAIHN1YiBwYXJzZUF0dHJpYnV0ZU9yT3BlcmF0aW9u
T3JJdGVyYXRvcgogICAgIGlmICgkbmV4dC0+dmFsdWUoKSA9fiAvJG5leHRBdHRyaWJ1dGVfMS8p
IHsKICAgICAgICAgcmV0dXJuICRzZWxmLT5wYXJzZUF0dHJpYnV0ZSgkZXh0ZW5kZWRBdHRyaWJ1
dGVMaXN0KTsKICAgICB9Ci0gICAgaWYgKCRuZXh0LT50eXBlKCkgPT0gSWRlbnRpZmllclRva2Vu
IHx8ICRuZXh0LT52YWx1ZSgpID1+IC8kbmV4dEF0dHJpYnV0ZU9yT3BlcmF0aW9uT3JJdGVyYXRv
cl8yLykgeworICAgIGlmICgkbmV4dC0+dHlwZSgpID09IElkZW50aWZpZXJUb2tlbiB8fCAkbmV4
dC0+dmFsdWUoKSA9fiAvJG5leHRBdHRyaWJ1dGVPck9wZXJhdGlvbl8yLykgewogICAgICAgICBy
ZXR1cm4gJHNlbGYtPnBhcnNlT3BlcmF0aW9uT3JJdGVyYXRvcigkZXh0ZW5kZWRBdHRyaWJ1dGVM
aXN0KTsKICAgICB9CiAgICAgJHNlbGYtPmFzc2VydFVuZXhwZWN0ZWRUb2tlbigkbmV4dC0+dmFs
dWUoKSwgX19MSU5FX18pOwpAQCAtMTIwNiwxMyArMTIxNSwxNyBAQCBzdWIgcGFyc2VPcGVyYXRp
b25Pckl0ZXJhdG9yCiAgICAgaWYgKCRuZXh0LT52YWx1ZSgpID1+IC8kbmV4dFNwZWNpYWxzXzEv
KSB7CiAgICAgICAgIHJldHVybiAkc2VsZi0+cGFyc2VTcGVjaWFsT3BlcmF0aW9uKCRleHRlbmRl
ZEF0dHJpYnV0ZUxpc3QpOwogICAgIH0KKyAgICBpZiAoJG5leHQtPnZhbHVlKCkgZXEgIml0ZXJh
YmxlIikgeworICAgICAgICByZXR1cm4gJHNlbGYtPnBhcnNlSXRlcmFibGVSZXN0KCRleHRlbmRl
ZEF0dHJpYnV0ZUxpc3QpOworICAgIH0KICAgICBpZiAoJG5leHQtPnR5cGUoKSA9PSBJZGVudGlm
aWVyVG9rZW4gfHwgJG5leHQtPnZhbHVlKCkgPX4gLyRuZXh0QXR0cmlidXRlT3JPcGVyYXRpb25S
ZXN0XzEvKSB7CiAgICAgICAgIG15ICRyZXR1cm5UeXBlID0gJHNlbGYtPnBhcnNlUmV0dXJuVHlw
ZSgpOwotICAgICAgICBteSAkaW50ZXJmYWNlID0gJHNlbGYtPnBhcnNlT3BlcmF0aW9uT3JJdGVy
YXRvclJlc3QoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7Ci0gICAgICAgIGlmIChkZWZpbmVkICgk
aW50ZXJmYWNlKSkgewotICAgICAgICAgICAgJGludGVyZmFjZS0+c2lnbmF0dXJlLT50eXBlKCRy
ZXR1cm5UeXBlKTsKKyAgICAgICAgbXkgJG5leHQgPSAkc2VsZi0+bmV4dFRva2VuKCk7CisgICAg
ICAgIGlmICgkbmV4dC0+dHlwZSgpID09IElkZW50aWZpZXJUb2tlbiB8fCAkbmV4dC0+dmFsdWUo
KSBlcSAiKCIpIHsKKyAgICAgICAgICAgIG15ICRvcGVyYXRpb24gPSAkc2VsZi0+cGFyc2VPcGVy
YXRpb25SZXN0KCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOworICAgICAgICAgICAgJG9wZXJhdGlv
bi0+c2lnbmF0dXJlLT50eXBlKCRyZXR1cm5UeXBlKTsKKyAgICAgICAgICAgIHJldHVybiAkb3Bl
cmF0aW9uOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiAkaW50ZXJmYWNlOwogICAgIH0KICAg
ICAkc2VsZi0+YXNzZXJ0VW5leHBlY3RlZFRva2VuKCRuZXh0LT52YWx1ZSgpLCBfX0xJTkVfXyk7
CiB9CkBAIC0xMjgwLDYyICsxMjkzLDcyIEBAIHN1YiBwYXJzZVNwZWNpYWwKICAgICAkc2VsZi0+
YXNzZXJ0VW5leHBlY3RlZFRva2VuKCRuZXh0LT52YWx1ZSgpLCBfX0xJTkVfXyk7CiB9CiAKLXN1
YiBwYXJzZU9wZXJhdGlvbk9ySXRlcmF0b3JSZXN0CitzdWIgcGFyc2VJdGVyYWJsZVJlc3QKIHsK
ICAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgIG15ICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QgPSBz
aGlmdDsKIAogICAgIG15ICRuZXh0ID0gJHNlbGYtPm5leHRUb2tlbigpOwotICAgIGlmICgkbmV4
dC0+dmFsdWUoKSBlcSAiaXRlcmF0b3IiKSB7Ci0gICAgICAgIHJldHVybiAkc2VsZi0+cGFyc2VJ
dGVyYXRvclJlc3QoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7Ci0gICAgfQotICAgIGlmICgkbmV4
dC0+dHlwZSgpID09IElkZW50aWZpZXJUb2tlbiB8fCAkbmV4dC0+dmFsdWUoKSBlcSAiKCIpIHsK
LSAgICAgICAgcmV0dXJuICRzZWxmLT5wYXJzZU9wZXJhdGlvblJlc3QoJGV4dGVuZGVkQXR0cmli
dXRlTGlzdCk7Ci0gICAgfQotICAgICRzZWxmLT5hc3NlcnRVbmV4cGVjdGVkVG9rZW4oJG5leHQt
PnZhbHVlKCksIF9fTElORV9fKTsKLX0KLQotc3ViIHBhcnNlSXRlcmF0b3JSZXN0Ci17Ci0gICAg
bXkgJHNlbGYgPSBzaGlmdDsKLSAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0ID0gc2hpZnQ7
Ci0KLSAgICBteSAkbmV4dCA9ICRzZWxmLT5uZXh0VG9rZW4oKTsKLSAgICBpZiAoJG5leHQtPnZh
bHVlKCkgZXEgIml0ZXJhdG9yIikgewotICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgk
c2VsZi0+Z2V0VG9rZW4oKSwgIml0ZXJhdG9yIiwgX19MSU5FX18pOwotICAgICAgICAkc2VsZi0+
cGFyc2VPcHRpb25hbEl0ZXJhdG9ySW50ZXJmYWNlT3JPYmplY3QoJGV4dGVuZGVkQXR0cmlidXRl
TGlzdCk7CisgICAgaWYgKCRuZXh0LT52YWx1ZSgpIGVxICJpdGVyYWJsZSIpIHsKKyAgICAgICAg
JHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICJpdGVyYWJsZSIsIF9f
TElORV9fKTsKKyAgICAgICAgbXkgJGl0ZXJhYmxlTm9kZSA9ICRzZWxmLT5wYXJzZU9wdGlvbmFs
SXRlcmFibGVJbnRlcmZhY2UoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CiAgICAgICAgICRzZWxm
LT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiOyIsIF9fTElORV9fKTsKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gJGl0ZXJhYmxlTm9kZTsKICAgICB9CiAgICAg
JHNlbGYtPmFzc2VydFVuZXhwZWN0ZWRUb2tlbigkbmV4dC0+dmFsdWUoKSwgX19MSU5FX18pOwog
fQogCi1zdWIgcGFyc2VPcHRpb25hbEl0ZXJhdG9ySW50ZXJmYWNlT3JPYmplY3QKK3N1YiBwYXJz
ZU9wdGlvbmFsSXRlcmFibGVJbnRlcmZhY2UKIHsKICAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAg
IG15ICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QgPSBzaGlmdDsKIAotICAgIG15ICRuZXh0ID0gJHNl
bGYtPm5leHRUb2tlbigpOwotICAgIGlmICgkbmV4dC0+dmFsdWUoKSA9fiAvJG5leHRPcHRpb25h
bEl0ZXJhdG9ySW50ZXJmYWNlT3JPYmplY3RfMS8pIHsKLSAgICAgICAgcmV0dXJuICRzZWxmLT5w
YXJzZU9wdGlvbmFsSXRlcmF0b3JJbnRlcmZhY2UoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7Ci0g
ICAgfQotICAgIGlmICgkbmV4dC0+dmFsdWUoKSBlcSAib2JqZWN0IikgewotICAgICAgICAkc2Vs
Zi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIm9iamVjdCIsIF9fTElORV9f
KTsKLSAgICAgICAgcmV0dXJuOworICAgIG15ICRzeW1ib2xJdGVyYXRvckZ1bmN0aW9uID0gZG9t
RnVuY3Rpb24tPm5ldygpOworICAgICRzeW1ib2xJdGVyYXRvckZ1bmN0aW9uLT5zaWduYXR1cmUo
ZG9tU2lnbmF0dXJlLT5uZXcoKSk7CisgICAgJHN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24tPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOworICAgICRz
eW1ib2xJdGVyYXRvckZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUoIltTeW1ib2wuSXRlcmF0b3Jd
Iik7CisKKyAgICBteSAkZW50cmllc0Z1bmN0aW9uID0gZG9tRnVuY3Rpb24tPm5ldygpOworICAg
ICRlbnRyaWVzRnVuY3Rpb24tPnNpZ25hdHVyZShkb21TaWduYXR1cmUtPm5ldygpKTsKKyAgICAk
ZW50cmllc0Z1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRB
dHRyaWJ1dGVMaXN0KTsKKyAgICAkZW50cmllc0Z1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUoImVu
dHJpZXMiKTsKKworICAgIG15ICRrZXlzRnVuY3Rpb24gPSBkb21GdW5jdGlvbi0+bmV3KCk7Cisg
ICAgJGtleXNGdW5jdGlvbi0+c2lnbmF0dXJlKGRvbVNpZ25hdHVyZS0+bmV3KCkpOworICAgICRr
ZXlzRnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJp
YnV0ZUxpc3QpOworICAgICRrZXlzRnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSgia2V5cyIpOwor
CisgICAgbXkgJHZhbHVlc0Z1bmN0aW9uID0gZG9tRnVuY3Rpb24tPm5ldygpOworICAgICR2YWx1
ZXNGdW5jdGlvbi0+c2lnbmF0dXJlKGRvbVNpZ25hdHVyZS0+bmV3KCkpOworICAgICR2YWx1ZXNG
dW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRl
TGlzdCk7CisgICAgJHZhbHVlc0Z1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUoInZhbHVlcyIpOwor
CisgICAgbXkgJGZvckVhY2hGdW5jdGlvbiA9IGRvbUZ1bmN0aW9uLT5uZXcoKTsKKyAgICAkZm9y
RWFjaEZ1bmN0aW9uLT5zaWduYXR1cmUoZG9tU2lnbmF0dXJlLT5uZXcoKSk7CisgICAgJGZvckVh
Y2hGdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmli
dXRlTGlzdCk7CisgICAgJGZvckVhY2hGdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lKCJmb3JFYWNo
Iik7CisKKyAgICBteSAkbmV3RGF0YU5vZGUgPSBkb21JdGVyYWJsZS0+bmV3KCk7CisgICAgcHVz
aChAeyRuZXdEYXRhTm9kZS0+ZnVuY3Rpb25zfSwgJHN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24pOwor
ICAgIHB1c2goQHskbmV3RGF0YU5vZGUtPmZ1bmN0aW9uc30sICRlbnRyaWVzRnVuY3Rpb24pOwor
ICAgIHB1c2goQHskbmV3RGF0YU5vZGUtPmZ1bmN0aW9uc30sICRrZXlzRnVuY3Rpb24pOworICAg
IHB1c2goQHskbmV3RGF0YU5vZGUtPmZ1bmN0aW9uc30sICR2YWx1ZXNGdW5jdGlvbik7CisgICAg
cHVzaChAeyRuZXdEYXRhTm9kZS0+ZnVuY3Rpb25zfSwgJGZvckVhY2hGdW5jdGlvbik7CisKKyAg
ICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIjwiLCBfX0xJTkVf
Xyk7CisgICAgbXkgJHR5cGUxID0gJHNlbGYtPmdldFRva2VuKCktPnZhbHVlKCk7CisgICAgaWYg
KCRzZWxmLT5uZXh0VG9rZW4oKS0+dmFsdWUoKSBlcSAiLCIpIHsKKyAgICAgICAgJHNlbGYtPmFz
c2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICIsIiwgX19MSU5FX18pOworICAgICAg
ICAkbmV3RGF0YU5vZGUtPmlzTWFwKDEpOworICAgICAgICAkbmV3RGF0YU5vZGUtPmtleVR5cGUo
JHR5cGUxKTsKKyAgICAgICAgJG5ld0RhdGFOb2RlLT52YWx1ZVR5cGUoJHNlbGYtPmdldFRva2Vu
KCktPnZhbHVlKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgICRuZXdEYXRhTm9kZS0+aXNNYXAo
MCk7CisgICAgICAgICRuZXdEYXRhTm9kZS0+dmFsdWVUeXBlKCR0eXBlMSk7CiAgICAgfQotICAg
ICRzZWxmLT5hc3NlcnRVbmV4cGVjdGVkVG9rZW4oJG5leHQtPnZhbHVlKCksIF9fTElORV9fKTsK
LX0KLQotc3ViIHBhcnNlT3B0aW9uYWxJdGVyYXRvckludGVyZmFjZQotewotICAgIG15ICRzZWxm
ID0gc2hpZnQ7Ci0gICAgbXkgJGV4dGVuZGVkQXR0cmlidXRlTGlzdCA9IHNoaWZ0OworICAgICRz
ZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiPiIsIF9fTElORV9fKTsK
IAotICAgIG15ICRuZXh0ID0gJHNlbGYtPm5leHRUb2tlbigpOwotICAgIGlmICgkbmV4dC0+dmFs
dWUoKSBlcSAiPSIpIHsKLSAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdl
dFRva2VuKCksICI9IiwgX19MSU5FX18pOwotICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5UeXBl
KCRzZWxmLT5nZXRUb2tlbigpLCBJZGVudGlmaWVyVG9rZW4pOwotICAgIH0KKyAgICByZXR1cm4g
JG5ld0RhdGFOb2RlOwogfQogCiBzdWIgcGFyc2VPcGVyYXRpb25SZXN0CkBAIC0yMTc3LDYgKzIy
MDAsMTAgQEAgc3ViIGFwcGx5TWVtYmVyTGlzdAogICAgICAgICAgICAgcHVzaChAeyRpbnRlcmZh
Y2UtPmNvbnN0YW50c30sICRpdGVtKTsKICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgIH0KKyAg
ICAgICAgaWYgKHJlZigkaXRlbSkgZXEgImRvbUl0ZXJhYmxlIikgeworICAgICAgICAgICAgJGlu
dGVyZmFjZS0+aXRlcmFibGUoJGl0ZW0pOworICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgfQog
ICAgICAgICBpZiAocmVmKCRpdGVtKSBlcSAiZG9tRnVuY3Rpb24iKSB7CiAgICAgICAgICAgICBp
ZiAoJGl0ZW0tPnNpZ25hdHVyZS0+bmFtZSBlcSAiIikgewogICAgICAgICAgICAgICAgIHB1c2go
QHskaW50ZXJmYWNlLT5hbm9ueW1vdXNGdW5jdGlvbnN9LCAkaXRlbSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4
IDRmY2EzNjk1ZTlkMzI4MzczOTJlYWJkY2FhZjdhNDI0YWUwOTg1N2EuLjRiMjFjODNjZGQxOGMz
NzgxOGMzMzc2MzcyOTg1ZmI3OTM0MGVmNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSAiSlNET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiSlNEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIkpTS2V5VmFsdWVJdGVyYXRv
ci5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIkpTU1ZHRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJKU1NWR1BvaW50LmgiCkBAIC0xNzgsNiArMTc5LDExIEBAIEpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNl
RnVuY3Rpb24oCiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQoSlNDOjpF
eGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uKEpTQzo6RXhl
Y1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnQo
SlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblN5bWJvbEl0ZXJhdG9yKEpTQzo6RXhlY1N0YXRlKik7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25FbnRyaWVzKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25LZXlzKEpTQzo6RXhlY1N0YXRlKik7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25WYWx1ZXMoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkZvckVhY2goSlNDOjpFeGVjU3RhdGUqKTsK
IAogLy8gQXR0cmlidXRlcwogCkBAIC02ODgsNiArNjk0LDEwIEBAIHN0YXRpYyBjb25zdCBIYXNo
VGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KICAgICB7ICJ0ZXN0
UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50KSwgKGlu
dHB0cl90KSAoMSkgfSB9LAogICAgIHsgInRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9u
IiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5h
dGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rp
b25XaXRoRXhjZXB0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgInRlc3RQcm9taXNl
RnVuY3Rpb25XaXRoT3B0aW9uYWxJbnRBcmd1bWVudCIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnQp
LCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAiZW50cmllcyIsIEpTQzo6RnVuY3Rpb24sIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsg
ImtleXMiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uS2V5cyksIChpbnRw
dHJfdCkgKDApIH0gfSwKKyAgICB7ICJ2YWx1ZXMiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uVmFsdWVzKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgImZvckVhY2gi
LCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0
aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaCksIChpbnRwdHJf
dCkgKDApIH0gfSwKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKICAgICB7ICJDT05ESVRJT05BTF9D
T05TVCIsIERvbnREZWxldGUgfCBSZWFkT25seSB8IENvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5z
aWMsIHsgKGxvbmcgbG9uZykoMCkgfSB9LAogI2Vsc2UKQEAgLTcxNSw2ICs3MjUsNyBAQCB2b2lk
IEpTVGVzdE9ialByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIHJlaWZ5U3Rh
dGljUHJvcGVydGllcyh2bSwgSlNUZXN0T2JqUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsK
ICAgICBKU1ZNQ2xpZW50RGF0YSYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50
RGF0YSo+KHZtLmNsaWVudERhdGEpOwogICAgIHB1dERpcmVjdCh2bSwgY2xpZW50RGF0YS5idWls
dGluTmFtZXMoKS5wcml2YXRlTWV0aG9kUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QoKSwgMCwgU3RyaW5nKCksIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uUHJpdmF0ZU1ldGhvZCksIFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0KCksIDAsIEFTQ0lJTGl0ZXJhbCgiW1N5bWJvbC5JdGVyYXRvcl0iKSwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TeW1ib2xJdGVyYXRvciksIFJlYWRPbmx5IHwgRG9u
dEVudW0pOwogfQogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0T2JqOjpzX2luZm8gPSB7ICJUZXN0
T2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdE9ialRhYmxlLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTVGVzdE9iaikgfTsKQEAgLTQ4MjAsNiArNDgzMSw0MCBAQCBzdGF0aWMgaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlv
bldpdGhPcAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
K3VzaW5nIFRlc3RPYmpJdGVyYXRvciA9IEpTS2V5VmFsdWVJdGVyYXRvcjxKU1Rlc3RPYmo+Owor
dXNpbmcgVGVzdE9iakl0ZXJhdG9yUHJvdG90eXBlID0gSlNLZXlWYWx1ZUl0ZXJhdG9yUHJvdG90
eXBlPEpTVGVzdE9iaj47CisKK3RlbXBsYXRlPD4KK2NvbnN0IEpTQzo6Q2xhc3NJbmZvIFRlc3RP
YmpJdGVyYXRvcjo6c19pbmZvID0geyAiVGVzdE9iamVjdCBJdGVyYXRvciIsICZCYXNlOjpzX2lu
Zm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVGVzdE9iakl0ZXJhdG9yKSB9OworCit0ZW1wbGF0
ZTw+Citjb25zdCBKU0M6OkNsYXNzSW5mbyBUZXN0T2JqSXRlcmF0b3JQcm90b3R5cGU6OnNfaW5m
byA9IHsgIlRlc3RPYmplY3QgSXRlcmF0b3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKFRlc3RPYmpJdGVyYXRvclByb3RvdHlwZSkgfTsKKworSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3ltYm9sSXRlcmF0
b3IoSlNDOjpFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIHJldHVybiBjcmVhdGVLZXlWYWx1ZUl0
ZXJhdG9yPEpTVGVzdE9iaj4oKnN0YXRlLCBJdGVyYXRpb25LaW5kOjpLZXlWYWx1ZSwgIltTeW1i
b2wuSXRlcmF0b3JdIik7Cit9CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlKQor
eworICAgIHJldHVybiBjcmVhdGVLZXlWYWx1ZUl0ZXJhdG9yPEpTVGVzdE9iaj4oKnN0YXRlLCBJ
dGVyYXRpb25LaW5kOjpLZXlWYWx1ZSwgImVudHJpZXMiKTsKK30KKworSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uS2V5cyhKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJuIGNyZWF0ZUtleVZhbHVlSXRlcmF0b3I8SlNU
ZXN0T2JqPigqc3RhdGUsIEl0ZXJhdGlvbktpbmQ6OktleSwgImtleXMiKTsKK30KKworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFs
dWVzKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gY3JlYXRlS2V5VmFsdWVJ
dGVyYXRvcjxKU1Rlc3RPYmo+KCpzdGF0ZSwgSXRlcmF0aW9uS2luZDo6VmFsdWUsICJ2YWx1ZXMi
KTsKK30KKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uRm9yRWFjaChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJu
IGtleVZhbHVlSXRlcmF0b3JGb3JFYWNoPEpTVGVzdE9iaj4oKnN0YXRlLCAiZm9yRWFjaCIpOwor
fQorCiB2b2lkIEpTVGVzdE9iajo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0T2Jq
Kj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmgKaW5kZXggNzM0ZjIzNmJmZmY1MzhjNDEyNWY1ZjMxYjY2M2Q1ODQyOWJi
Njg1Mi4uOTE3OTI0OTRiM2FjZTlmZTc3ZWQyNDJjNzRlMWZiM2ViYTJmMDM3MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaApA
QCAtNDUsNiArNDUsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBK
U0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwq
KTsKIAorICAgIHVzaW5nIEl0ZXJhdG9yS2V5ID0gU3RyaW5nOworICAgIHVzaW5nIEl0ZXJhdG9y
VmFsdWUgPSBUZXN0T2JqKjsKKwogICAgIERFQ0xBUkVfSU5GTzsKIAogICAgIHN0YXRpYyBKU0M6
OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggZTEwYjRlNGRm
YmNjMWE1YjE2NzI3MWZlNTg2YzI3YjU1YjQ3ZTY4YS4uYjZhOTk5MDFlMzhiOGU0YTNmYTc1OGIz
MGVkZmIwMDhjODYyYjc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtODEsNiArODEsOCBAQCBlbnVtIF9vcHRpb25hbCB7ICIi
LCAiT3B0aW9uYWxWYWx1ZTEiLCAiT3B0aW9uYWxWYWx1ZTIiLCAiT3B0aW9uYWxWYWx1ZTMiIH07
CiAgICAgLy8gVHlwZWRBcnJheSBhdHRyaWJ1dGUKICAgICBhdHRyaWJ1dGUgRmxvYXQzMkFycmF5
IHR5cGVkQXJyYXlBdHRyOwogCisgICAgaXRlcmFibGU8RE9NU3RyaW5nLCBUZXN0T2JqPjsKKwog
ICAgIC8vIE1ldGhvZHMKICAgICB2b2lkICAgIHZvaWRNZXRob2QoKTsKICAgICB2b2lkICAgIHZv
aWRNZXRob2RXaXRoQXJncyhsb25nIGxvbmdBcmcsIERPTVN0cmluZyBzdHJBcmcsIFRlc3RPYmog
b2JqQXJnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwCmluZGV4IDFiNzE0NDE0ZWY0Y2U5
MzVhZjZlMGE3OGVmMDQ0NzA1NDY5OTBjZmEuLjNmOGJkNDUzYzhjZjg1MTdiZTQyMDVjOWNiM2Ri
MzA4Y2QzMzYyNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmNwcApAQCAtNjAsNyArNjAs
NyBAQCBGb250RmFjZVNldDo6SXRlcmF0b3I6Okl0ZXJhdG9yKEZvbnRGYWNlU2V0JiBzZXQpCiB7
CiB9CiAKLWJvb2wgRm9udEZhY2VTZXQ6Okl0ZXJhdG9yOjpuZXh0KFJlZlB0cjxGb250RmFjZT4m
IGtleSwgUmVmUHRyPEZvbnRGYWNlPiYgdmFsdWUpCitib29sIEZvbnRGYWNlU2V0OjpJdGVyYXRv
cjo6bmV4dChGb250RmFjZSomIGtleSwgRm9udEZhY2UqJiB2YWx1ZSkKIHsKICAgICBpZiAobV9p
bmRleCA9PSBtX3RhcmdldC0+c2l6ZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0ZvbnRGYWNlU2V0LmgKaW5kZXggMDAyYjMwODZhYzU0OGE0ZGYxZTdmMzY2YjdjMTU2NDRmYzE5
ZjE1OS4uYWE5ZGRiODExYzRlODNiMDgyZmMyZmQ2ZWZkOTE3YTAxZWM3N2U1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0ZvbnRGYWNlU2V0LmgKQEAgLTcyLDExICs3Miw3IEBAIHB1YmxpYzoKICAgICBjbGFzcyBJ
dGVyYXRvciB7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBJdGVyYXRvcihGb250RmFj
ZVNldCYpOwotCi0gICAgICAgIHVzaW5nIEtleSA9IFJlZlB0cjxGb250RmFjZT47Ci0gICAgICAg
IHVzaW5nIFZhbHVlID0gUmVmUHRyPEZvbnRGYWNlPjsKLQotICAgICAgICBib29sIG5leHQoS2V5
JiBuZXh0S2V5LCBWYWx1ZSYgbmV4dFZhbHVlKTsKKyAgICAgICAgYm9vbCBuZXh0KEZvbnRGYWNl
KiYgbmV4dEtleSwgRm9udEZhY2UqJiBuZXh0VmFsdWUpOwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgUmVmPEZvbnRGYWNlU2V0PiBtX3RhcmdldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Gb250RmFjZVNldC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaWRs
CmluZGV4IDRmZjY4NWRjYWNkOWI1MmVjMjczNTVlMGRkYjM1MWRmM2U1NmZlNzguLmRlNzQ5MmQ4
ZDFiNzU2YzQwOWRiMTIzYTVlYWJmMzRiMmJmZTY0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Gb250RmFjZVNldC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNl
U2V0LmlkbApAQCAtMzIsMTIgKzMyLDEyIEBAIGVudW0gRm9udEZhY2VTZXRMb2FkU3RhdHVzIHsK
ICAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdFN0YXRlJkRvY3VtZW50LAogICAgIENvbnN0
cnVjdG9yKHNlcXVlbmNlPEZvbnRGYWNlPiBpbml0aWFsRmFjZXMpCiBdIGludGVyZmFjZSBGb250
RmFjZVNldCA6IEV2ZW50VGFyZ2V0IHsKLSAgICBbQ3VzdG9tXSBPYmplY3QgZW50cmllcygpOwot
ICAgIC8vIGZvckVhY2goKTogTWF5YmUgaW1wbGVtZW50IHRoaXMgaW4gSmF2YXNjcmlwdCBvbiB0
b3Agb2Yga2V5cygpLgogICAgIGJvb2xlYW4gaGFzKEZvbnRGYWNlIGZvbnQpOwotICAgIFtDdXN0
b21dIE9iamVjdCBrZXlzKCk7Ci0gICAgW0N1c3RvbV0gT2JqZWN0IHZhbHVlcygpOwotICAgIC8v
IEBpdGVyYXRvcgorCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhZGQgc3VwcG9ydCBmb3IgdGhl
IHNldGxpa2UgZGVjbGFyYXRpb24uCisgICAgLy8gQXMgYSBmaXJzdCBzdGVwIHRoaXMgbWFwIGl0
ZXJhYmxlIGRlY2xhcmF0aW9uIHNob3VsZCBiZSBjaGFuZ2VkIHRvIGEgc2V0IGl0ZXJhYmxlLgor
ICAgIGl0ZXJhYmxlPEZvbnRGYWNlLCBGb250RmFjZT47CisKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgbG9uZyBzaXplOwogCiAgICAgRm9udEZhY2VTZXQgYWRkKEZvbnRGYWNlIGZvbnQpOwpAQCAt
NTMsNCArNTMsNCBAQCBlbnVtIEZvbnRGYWNlU2V0TG9hZFN0YXR1cyB7CiAKICAgICBbQ3VzdG9t
XSByZWFkb25seSBhdHRyaWJ1dGUgUHJvbWlzZSByZWFkeTsKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRm9udEZhY2VTZXRMb2FkU3RhdHVzIHN0YXR1czsKLX07ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQorfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IGNlZGQ5Mzg4ZGIx
NjRmMmFlYWVlOTEyODgzM2Q1Y2I4ZDBmNWQxN2YuLjNhMDAzODIyM2Q1MmFmYzU1OWIyMWRiNjRh
MjE5MDY4NDI3ODhlOGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDE2LTAyLTE4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fu
b24uZnI+CisKKyAgICAgICAgQmluZGluZyBnZW5lcmF0b3Igc2hvdWxkIHN1cHBvcnQga2V5IHZh
bHVlIGl0ZXJhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTQ0MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvaGVhZGVycy9oZWFkZXJzLWJhc2lj
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2hl
YWRlcnMvaGVhZGVycy1iYXNpYy5odG1sOgorCiAyMDE2LTAyLTE3ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lvbihyMTk2NjQ4KTogaHR0cDovL3cz
Yy10ZXN0Lm9yZy9odG1sL2RvbS9pbnRlcmZhY2VzLmh0bWwgcmVkaXJlY3RzIGF0IHRoZSBlbmQg
b2YgdGhlIHRlc3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2hlYWRlcnMvaGVhZGVycy1iYXNpYy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9o
ZWFkZXJzL2hlYWRlcnMtYmFzaWMtZXhwZWN0ZWQudHh0CmluZGV4IDZkYjY5Y2U4NjA1NWI1MDQ4
OWZlNDcyMDBmNTQxMGM2YWEyYjE4MzcuLmUyOTcxMTZkYmE0MDYzOWNkOWVlMDBmNTA3NTY5NmNl
MzBhM2RjYjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvZmV0Y2gvYXBpL2hlYWRlcnMvaGVhZGVycy1iYXNpYy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkv
aGVhZGVycy9oZWFkZXJzLWJhc2ljLWV4cGVjdGVkLnR4dApAQCAtMTUsNCArMTUsNiBAQCBQQVNT
IENoZWNrIGdldCBtZXRob2QKIFBBU1MgQ2hlY2sga2V5cyBtZXRob2QgCiBQQVNTIENoZWNrIHZh
bHVlcyBtZXRob2QgCiBQQVNTIENoZWNrIGVudHJpZXMgbWV0aG9kIAorUEFTUyBDaGVjayBTeW1i
b2wuaXRlcmF0b3IgbWV0aG9kIAorUEFTUyBDaGVjayBmb3JFYWNoIG1ldGhvZCAKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9h
cGkvaGVhZGVycy9oZWFkZXJzLWJhc2ljLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9oZWFkZXJzL2hlYWRlcnMtYmFzaWMuaHRtbApp
bmRleCA1MWFjODljN2IzY2IwMmZmMDMwYjNhMjEwMzE1MDcyMTg4ZWRmZGU3Li5kZGJiOWE3NGI3
ZDM5MDExYmM3NWJjODM3Zjk4MzQ3NDI3NGUzYTIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9oZWFkZXJzL2hlYWRlcnMt
YmFzaWMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2ZldGNoL2FwaS9oZWFkZXJzL2hlYWRlcnMtYmFzaWMuaHRtbApAQCAtMTYzLDYgKzE2Mywz
MyBAQAogICAgICAgICBhc3NlcnRfdHJ1ZShhY3R1YWwubmV4dCgpLmRvbmUpOwogICAgICAgICBh
c3NlcnRfdHJ1ZShhY3R1YWwubmV4dCgpLmRvbmUpOwogICAgICAgfSwgIkNoZWNrIGVudHJpZXMg
bWV0aG9kIik7CisKKyAgICAgIHRlc3QoZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBoZWFkZXJz
ID0gbmV3IEhlYWRlcnMoaGVhZGVyRW50cmllc0RpY3QpOworICAgICAgICB2YXIgYWN0dWFsID0g
aGVhZGVyc1tTeW1ib2wuaXRlcmF0b3JdKCk7CisKKyAgICAgICAgc29ydGVkSGVhZGVyS2V5cy5m
b3JFYWNoKGZ1bmN0aW9uKGtleSkgeworICAgICAgICAgICAgZW50cnkgPSBhY3R1YWwubmV4dCgp
OworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKGVudHJ5LmRvbmUpOworICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhlbnRyeS52YWx1ZVswXSwga2V5KTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVh
bHMoZW50cnkudmFsdWVbMV0sIHNvcnRlZEhlYWRlckRpY3Rba2V5XSk7CisgICAgICAgIH0pOwor
ICAgICAgICBhc3NlcnRfdHJ1ZShhY3R1YWwubmV4dCgpLmRvbmUpOworICAgICAgICBhc3NlcnRf
dHJ1ZShhY3R1YWwubmV4dCgpLmRvbmUpOworICAgICAgfSwgIkNoZWNrIFN5bWJvbC5pdGVyYXRv
ciBtZXRob2QiKTsKKworICAgICAgdGVzdChmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGhlYWRl
cnMgPSBuZXcgSGVhZGVycyhoZWFkZXJFbnRyaWVzRGljdCk7CisgICAgICAgIHZhciByZWZlcmVu
Y2UgPSBzb3J0ZWRIZWFkZXJLZXlzW1N5bWJvbC5pdGVyYXRvcl0oKTsKKyAgICAgICAgaGVhZGVy
cy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBrZXksIGNvbnRhaW5lcikgeworICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyhoZWFkZXJzLCBjb250YWluZXIpOworICAgICAgICAgICAgZW50cnkgPSBy
ZWZlcmVuY2UubmV4dCgpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKGVudHJ5LmRvbmUpOwor
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhrZXksIGVudHJ5LnZhbHVlKTsKKyAgICAgICAgICAg
IGFzc2VydF9lcXVhbHModmFsdWUsIHNvcnRlZEhlYWRlckRpY3RbZW50cnkudmFsdWVdKTsKKyAg
ICAgICAgfSk7CisgICAgICAgIGFzc2VydF90cnVlKHJlZmVyZW5jZS5uZXh0KCkuZG9uZSk7Cisg
ICAgICB9LCAiQ2hlY2sgZm9yRWFjaCBtZXRob2QiKTsKICAgIDwvc2NyaXB0PgogICA8L2JvZHk+
CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2ZldGNoL2FwaS9oZWFkZXJzL2hlYWRlcnMtZXJyb3JzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2hl
YWRlcnMvaGVhZGVycy1lcnJvcnMtZXhwZWN0ZWQudHh0CmluZGV4IDZmM2M1M2E3NmIzNzgyMGRj
NGJhY2E0ZjlhNjEzOGFlMzEyMzgxZjUuLmIxOTU1MzY4MjNiN2Q2NGExZWZlMTAxZjY4Y2I1NjEy
ODI2ZDU3NDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvZmV0Y2gvYXBpL2hlYWRlcnMvaGVhZGVycy1lcnJvcnMtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBp
L2hlYWRlcnMvaGVhZGVycy1lcnJvcnMtZXhwZWN0ZWQudHh0CkBAIC0xNSw0ICsxNSw1IEBAIFBB
U1MgQ2hlY2sgaGVhZGVycyBzZXQgd2l0aCBhbiBpbnZhbGlkIHZhbHVlIGludmFsaWTEgAogUEFT
UyBDaGVjayBoZWFkZXJzIGFwcGVuZCB3aXRoIGFuIGludmFsaWQgbmFtZSBpbnZhbGlkxIAgCiBQ
QVNTIENoZWNrIGhlYWRlcnMgYXBwZW5kIHdpdGggYW4gaW52YWxpZCBuYW1lIFtvYmplY3QgT2Jq
ZWN0XSAKIFBBU1MgQ2hlY2sgaGVhZGVycyBhcHBlbmQgd2l0aCBhbiBpbnZhbGlkIHZhbHVlIGlu
dmFsaWTEgCAKK1BBU1MgSGVhZGVycyBmb3JFYWNoIHRocm93cyBpZiBhcmd1bWVudCBpcyBub3Qg
Y2FsbGFibGUgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2hlYWRlcnMvaGVhZGVycy1lcnJvcnMuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2hlYWRlcnMv
aGVhZGVycy1lcnJvcnMuaHRtbAppbmRleCA1ZjVlZWYyM2FkMmZlYjI4ZjZlN2Q3YTM4MzVjNTdl
MTRhODg4MWFlLi5iOTg3NjY5YjdjMWE1OGQxYWJjYmRhODNiNTdkYmU5OTlhODUzZTRlIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNo
L2FwaS9oZWFkZXJzL2hlYWRlcnMtZXJyb3JzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvaGVhZGVycy9oZWFkZXJzLWVycm9y
cy5odG1sCkBAIC03OCw2ICs3OCwxMyBAQAogICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5
cGVFcnJvcigpICwgZnVuY3Rpb24oKSB7IGhlYWRlcnMuYXBwZW5kKCJuYW1lIiwgdmFsdWUpOyB9
KTsKICAgICAgICAgfSwgIkNoZWNrIGhlYWRlcnMgYXBwZW5kIHdpdGggYW4gaW52YWxpZCB2YWx1
ZSAiICsgdmFsdWUpOwogICAgICAgfSk7CisKKyAgICAgIHRlc3QoZnVuY3Rpb24oKSB7CisgICAg
ICAgIHZhciBoZWFkZXJzID0gbmV3IEhlYWRlcnMoW1sibmFtZSIsICJ2YWx1ZSJdXSk7CisgICAg
ICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpICwgZnVuY3Rpb24oKSB7IGhlYWRlcnMu
Zm9yRWFjaCgpOyB9KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCkgLCBm
dW5jdGlvbigpIHsgaGVhZGVycy5mb3JFYWNoKHVuZGVmaW5lZCk7IH0pOworICAgICAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSAsIGZ1bmN0aW9uKCkgeyBoZWFkZXJzLmZvckVhY2go
MSk7IH0pOworICAgICAgfSwgIkhlYWRlcnMgZm9yRWFjaCB0aHJvd3MgaWYgYXJndW1lbnQgaXMg
bm90IGNhbGxhYmxlIik7CiAgICAgPC9zY3JpcHQ+CiAgIDwvYm9keT4KIDwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271908</attachid>
            <date>2016-02-21 23:29:14 -0800</date>
            <delta_ts>2016-02-21 23:30:36 -0800</delta_ts>
            <desc>Patch for landing - Fixing callback throwing exception</desc>
            <filename>bug-154413-20160222082854.patch</filename>
            <type>text/plain</type>
            <size>48295</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2NzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODBiNWUyMzNkNzM3YmI4
NTcxMWIyZDRhNGMyY2EwMTg4YzFjODM2Mi4uYmE2Njk0NWYwNmU4M2Q0OWJjMTRjZmEyMjI2YThj
ZjY2YzA0NzhmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE2LTAyLTE4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgQmluZGlu
ZyBnZW5lcmF0b3Igc2hvdWxkIHN1cHBvcnQga2V5IHZhbHVlIGl0ZXJhYmxlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ0MTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGFkZGVkIGxh
eW91dCBhbmQgYmluZGluZyB0ZXN0cy4KKworICAgICAgICBpdGVyYWJsZTxrZXksIHZhbHVlPiBp
biBhIElETCBmaWxlIHdpbGwgdHJpZ2dlciB0aGUgZ2VuZXJhdGlvbiBvZiBlbnRyaWVzLCBrZXlz
LCB2YWx1ZXMsIFtTeW1ib2wuaXRlcmF0b3JdIGFuZCBmb3JFYWNoIG1ldGhvZHMgdG8gdGhlIHBy
b3RvdHlwZS4KKyAgICAgICAgVXBkYXRlZCBGZXRjaEhlYWRlcnMgYW5kIEZvbnRGYWNlU2V0IHRv
IHVzZSBpdC4KKworICAgICAgICBJRExQYXJzZXIucG0gcGFyc2VzIHRoZSBpdGVyYWJsZTw+IGFu
ZCBhZGRzIGFuIGl0ZXJhYmxlIGZpZWxkIGluIHRoZSBpbnRlcmZhY2UgY29udGFpbmluZyB0aGUg
aXRlcmFibGUgaW5mb3JtYXRpb24gYW5kIG9iamVjdHMgZm9yIHRoZSBmaXZlIG9wZXJhdGlvbnMu
CisgICAgICAgIElETFBhcnNlci5wbSBpcyBjbGVhbmVkIHVwIGEgYml0IHRvIHJlbW92ZSBwcmV2
aW91cyBJdGVyYXRvciBzdXBwb3J0LCB3aGljaCBkb2VzIG5vdCBzZWVtIHRvIGJlIHN1cHBvcnRl
ZC4KKworICAgICAgICBDb2RlR2VuZXJhdG9ySlMucG0gaXMgdXBkYXRlZCB0byBnZW5lcmF0ZSB0
aGUgY29kZSBmb3IgdGhlIGZpdmUgb3BlcmF0aW9ucywgdXNpbmcgSlNLZXlWYWx1ZUl0ZXJhdG9y
LiBTZXQgaXRlcmF0b3JzIGFyZSBub3QgeWV0IHN1cHBvcnRlZC4KKyAgICAgICAgTW92ZWQgZGVm
aW5pdGlvbiBvZiBJdGVyYXRvciBLZXkgYW5kIFZhbHVlIFR5cGUgdG8gYmluZGluZyBnZW5lcmF0
ZWQgSlNYWCBjbGFzcyBiYXNlZCBvbiBpdGVyYWJsZTw+IGRlY2xhcmF0aW9uIGluIHRoZSBJREwu
CisKKyAgICAgICAgQWRkZWQgYmluZGluZyB0ZXN0IGFuZCBGZXRjaCBIZWFkZXJzIHRlc3RzLgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRj
aEhlYWRlcnMuaWRsOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRmV0Y2hIZWFkZXJzQ3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0ZvbnRGYWNlU2V0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTRm9udEZhY2VTZXQ6OnJlYWR5KTogUmVtb3ZlZCBpdGVyYWJsZSBjdXN0b20gbWV0aG9k
cy4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0tleVZhbHVlSXRlcmF0b3IuaDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUtleVZhbHVlSXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6a2V5
VmFsdWVJdGVyYXRvckZvckVhY2gpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtOgorICAgICAgICAoR2V0RnVuY3Rpb25OYW1lKToKKyAgICAgICAgKFByb3Rv
dHlwZUZ1bmN0aW9uQ291bnQpOgorICAgICAgICAoUHJvdG90eXBlUHJvcGVydHlDb3VudCk6Cisg
ICAgICAgIChHZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFibGUpOgorICAgICAgICAoR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25D
YWxsKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb25JdGVyYWJsZUZ1bmN0aW9ucyk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06CisgICAgICAgIChwYXJz
ZU9wZXJhdGlvbk9ySXRlcmF0b3IpOgorICAgICAgICAocGFyc2VPcGVyYXRpb25Pckl0ZXJhdG9y
UmVzdCk6CisgICAgICAgIChwYXJzZUl0ZXJhYmxlUmVzdCk6CisgICAgICAgIChwYXJzZU9wdGlv
bmFsSXRlcmFibGVJbnRlcmZhY2UpOgorICAgICAgICAoYXBwbHlNZW1iZXJMaXN0KToKKyAgICAg
ICAgKHBhcnNlU3BlY2lhbCk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmpQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uU3ltYm9sSXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25FbnRyaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uS2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkZvckVhY2gpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlk
bDoKKyAgICAgICAgKiBjc3MvRm9udEZhY2VTZXQuaWRsOgorCiAyMDE2LTAyLTE3ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0ZvbnQgTG9hZGlu
Z10gSW1wbGVtZW50IEZvbnRGYWNlU2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDEwMGFiNGQw
OTJkNThhY2QwNTYwMTQ5MzZhMGY0YjRiMDYzMjQzZWEuLmNiMTNlMDNkYjdlNWU2ZjI1NTQ5MTMw
OGY4MDBkOTRiZmVhZTExNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMTYwLDcgKzExNjAs
NiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVy
LmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwCiAgICAgYmluZGlu
Z3MvanMvSlNFeGNlcHRpb25CYXNlLmNwcAotICAgIGJpbmRpbmdzL2pzL0pTRmV0Y2hIZWFkZXJz
Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRmlsZVJlYWRlckN1c3RvbS5jcHAKICAgICBi
aW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTSFRN
TEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEhlYWRlcnMuaAppbmRleCBmMzU4MWQzMjRiZTg2OTU1NWI0NTY5OTI1ZjQwNzg0YmQyZmVi
NzY2Li41N2ZmNzNmZjc2MmNlODhkMDBiM2JmNjUyNzIyOTY3MmEzNWU5OWNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmgKQEAgLTY1LDExICs2NSw2IEBA
IHB1YmxpYzoKICAgICBjbGFzcyBJdGVyYXRvciB7CiAgICAgcHVibGljOgogICAgICAgICBleHBs
aWNpdCBJdGVyYXRvcihGZXRjaEhlYWRlcnMmKTsKLQotICAgICAgICAvLyBGSVhNRTogQmluZGlu
ZyBnZW5lcmF0b3Igc2hvdWxkIGJlIGFibGUgdG8gZ2VuZXJhdGUgaXRlcmF0b3Iga2V5IGFuZCB2
YWx1ZSB0eXBlcy4KLSAgICAgICAgdXNpbmcgS2V5ID0gU3RyaW5nOwotICAgICAgICB1c2luZyBW
YWx1ZSA9IFN0cmluZzsKLQogICAgICAgICBib29sIG5leHQoU3RyaW5nJiBuZXh0S2V5LCBTdHJp
bmcmIG5leHRWYWx1ZSk7CiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEhlYWRlcnMuaWRsCmluZGV4IGY2MzMzOTc1OThlMTBkYTlmYjhmM2RkYzZm
ZmZhNzA3OWEyMGVmYzYuLmYyMzdhNzg0YzdhNTFkMGRkZGExZGUxMDVmM2M3MzQ1YmY4YTcwNGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5pZGwKQEAg
LTQwLDExICs0MCw3IEBAIGludGVyZmFjZSBGZXRjaEhlYWRlcnMgewogICAgIFtSYWlzZXNFeGNl
cHRpb25dIGJvb2xlYW4gaGFzKERPTVN0cmluZyBuYW1lKTsKICAgICBbUmFpc2VzRXhjZXB0aW9u
XSB2b2lkIHNldChET01TdHJpbmcgbmFtZSwgRE9NU3RyaW5nIHZhbHVlKTsKIAotICAgIC8vIEZJ
WE1FOiBTdXBwb3J0IGl0ZXJhYmxlIHdpdGhpbiBiaW5kaW5nIGdlbmVyYXRvci4KLSAgICAvL2l0
ZXJhYmxlPERPTVN0cmluZywgRE9NU3RyaW5nPjsKLSAgICBbQ3VzdG9tXSBhbnkgZW50cmllcygp
OwotICAgIFtDdXN0b21dIGFueSBrZXlzKCk7Ci0gICAgW0N1c3RvbV0gYW55IHZhbHVlcygpOwor
ICAgIGl0ZXJhYmxlPERPTVN0cmluZywgRE9NU3RyaW5nPjsKIAogICAgIFtQcml2YXRlLCBSYWlz
ZXNFeGNlcHRpb24sIEltcGxlbWVudGVkQXM9YXBwZW5kXSB2b2lkIGFwcGVuZEZyb21KUyhET01T
dHJpbmcgbmFtZSwgRE9NU3RyaW5nIHZhbHVlKTsKICAgICBbUHJpdmF0ZSwgUmFpc2VzRXhjZXB0
aW9uXSB2b2lkIGluaXRpYWxpemVXaXRoKEZldGNoSGVhZGVycyBoZWFkZXJzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5ZGZk
NzgxNDdkMWYwODU0Y2ZlYzdkNzQzYzM4YWJiMGRjNjYwMzU2Li5lMGE5Mjc2OGM5ZDQxNTE4YjI3
YTg3N2ExMzFhOGFkYzhhMWYzNjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTQ5LDcgKzE1NDksNiBAQAogCQk0MUQwMTVD
QjBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMDE1QzkwRjRCNUM3MTAwNEE2NjJGIC8qIENv
bnRlbnRUeXBlLmNwcCAqLzsgfTsKIAkJNDFFMUIxRDAwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3Ry
YWN0V29ya2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxRTFCMUNBMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5jcHAgKi87IH07
CiAJCTQxRTFCMUQxMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMUIxQ0IwRkY1OTg2OTAw
NTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmggKi87IH07Ci0JCTQxRTkxMEE3MUM2MEZENkMwMDdB
NDUzRiAvKiBKU0ZldGNoSGVhZGVyc0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUU5MTBBNjFDNjBGRDZDMDA3QTQ1M0YgLyogSlNGZXRj
aEhlYWRlcnNDdXN0b20uY3BwICovOyB9OwogCQk0MUYwNjIxNDBGNUYxOTI2MDBBMDdFQUMgLyog
SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFGMDYyMTIwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRh
dGFiYXNlUmVzb3VyY2UuaCAqLzsgfTsKIAkJNDFGMDYyMTUwRjVGMTkyNjAwQTA3RUFDIC8qIElu
c3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFGMDYyMTMwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRh
dGFiYXNlUmVzb3VyY2UuY3BwICovOyB9OwogCQk0MUYwNjZFNDBGNjRCQ0Y2MDBBMDdFQUMgLyog
U2NyaXB0R2xvYmFsT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUYwNjZFMjBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0R2xvYmFsT2JqZWN0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTkw
MjEsNyArOTAyMCw2IEBACiAJCTQxRTFCMUNBMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdv
cmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBYnN0cmFjdFdv
cmtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRTFCMUNCMEZGNTk4Njkw
MDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBYnN0cmFjdFdvcmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUUx
QjFDQzBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IEFic3RyYWN0V29ya2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNDFFOTEwQTYxQzYwRkQ2QzAwN0E0NTNGIC8qIEpTRmV0Y2hIZWFkZXJzQ3VzdG9tLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmV0Y2hIZWFkZXJzQ3VzdG9t
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGMDYyMTIwRjVGMTkyNjAwQTA3
RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MUYwNjIxMzBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJh
c2VSZXNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNw
ZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDFGMDY2RTIwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdEdsb2JhbE9iamVjdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRHbG9iYWxPYmplY3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyNDA0LDcgKzIyNDAyLDYgQEAKIAkJCQlCQzJFRDU1NDBD
NkI5QkQzMDA5MjBCRkYgLyogSlNFbGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlBREVDNzhGNzE4
RUU1MzA4MDAxMzE1QzIgLyogSlNFbGVtZW50Q3VzdG9tLmggKi8sCiAJCQkJQkNFRkFGNEQwQzMx
N0U2OTAwRkE4MUY2IC8qIEpTRXZlbnRDdXN0b20uY3BwICovLAotCQkJCTQxRTkxMEE2MUM2MEZE
NkMwMDdBNDUzRiAvKiBKU0ZldGNoSGVhZGVyc0N1c3RvbS5jcHAgKi8sCiAJCQkJMkU3NTgyRUQx
Mjc2NEYyNjAwNjI2MjhCIC8qIEpTRmlsZVJlYWRlckN1c3RvbS5jcHAgKi8sCiAJCQkJRkU4MEQ3
QTYwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb25DdXN0b20uY3BwICovLAogCQkJCUJD
RTdCMTkyMEQ0RTg2OTYwMDc1QTUzOSAvKiBKU0hpc3RvcnlDdXN0b20uY3BwICovLApAQCAtMjk1
NTcsNyArMjk1NTQsNiBAQAogCQkJCTk3QjM4RTI4MTUxQzQyNzMwMDQ2MjJFOSAvKiBET01XaW5k
b3dOb3RpZmljYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3RDJBRDAzMTRCODIzQTYw
MDkzREYzMiAvKiBET01XaW5kb3dQcm9wZXJ0eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBQTJB
NUFENzE2QTQ4NjFBMDA5NzVBMjUgLyogRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCTQxRTkxMEE3MUM2MEZENkMwMDdBNDUzRiAvKiBKU0ZldGNoSGVhZGVy
c0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOENDQkI0ODE1MUY4MzE2MDBBQjdDRTkg
LyogRE9NV2luZG93V2ViRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1M0RBNDgx
MTQzMTM0RDAwMEQ4MTdFIC8qIERPTVdyYXBwZXJXb3JsZC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQTFEMTM4MTBBNTMyNTUyMDA2NEJGNUYgLyogRE9NWFBhdGgubW0gaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9u
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3Bw
CmluZGV4IDdlMjNmMDU4YjRiMDQyNzdmOTFkZjEzMzNiNjFlMTM1NWRjZTA5MGYuLmRkNDc5MDFj
ZDU5N2IwMzVkOWY2YjUxZDVjOGIwMjM2NGU1ZGIyZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcApAQCAtNzcsNyArNzcsNiBAQAog
I2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5jcHAiCiAjaW5jbHVkZSAiSlNFdmVudFRhcmdldEN1
c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNFeGNlcHRpb25CYXNlLmNwcCIKLSNpbmNsdWRlICJKU0Zl
dGNoSGVhZGVyc0N1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNGaWxlUmVhZGVyQ3VzdG9tLmNwcCIK
ICNpbmNsdWRlICJKU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0hUTUxBbGxD
b2xsZWN0aW9uQ3VzdG9tLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRmV0Y2hIZWFkZXJzQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRmV0Y2hIZWFkZXJzQ3VzdG9tLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MjU4MmNiZmY4NThlYmM0ZjIyMGEzZWJmYzkyNzVkMTQyYjE5ZDQ3Ni4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0ZldGNoSGVhZGVyc0N1c3RvbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IENhbm9uIEluYy4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6Ci0gKgotICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBDYW5vbiBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICog
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkpTRmV0Y2hIZWFkZXJzLmgiCi0KLSNpZiBFTkFCTEUoRkVUQ0hf
QVBJKQotCi0jaW5jbHVkZSAiSlNLZXlWYWx1ZUl0ZXJhdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotLy8gRklYTUU6IE1vdmUgdGhpcyBjb2RlIHRvIEpTRmV0Y2hIZWFkZXJzLgotdXNp
bmcgRmV0Y2hIZWFkZXJzSXRlcmF0b3IgPSBKU0tleVZhbHVlSXRlcmF0b3I8SlNGZXRjaEhlYWRl
cnM+OwotdXNpbmcgRmV0Y2hIZWFkZXJzSXRlcmF0b3JQcm90b3R5cGUgPSBKU0tleVZhbHVlSXRl
cmF0b3JQcm90b3R5cGU8SlNGZXRjaEhlYWRlcnM+OwotCi10ZW1wbGF0ZTw+Ci1jb25zdCBKU0M6
OkNsYXNzSW5mbyBGZXRjaEhlYWRlcnNJdGVyYXRvcjo6c19pbmZvID0geyAiSGVhZGVycyBJdGVy
YXRvciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRmV0Y2hIZWFkZXJz
SXRlcmF0b3IpIH07Ci0KLXRlbXBsYXRlPD4KLWNvbnN0IEpTQzo6Q2xhc3NJbmZvIEZldGNoSGVh
ZGVyc0l0ZXJhdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJIZWFkZXJzIEl0ZXJhdG9yIiwgJkJh
c2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShGZXRjaEhlYWRlcnNJdGVyYXRvclBy
b3RvdHlwZSkgfTsKLQotSlNDOjpKU1ZhbHVlIEpTRmV0Y2hIZWFkZXJzOjplbnRyaWVzKEpTQzo6
RXhlY1N0YXRlJikKLXsKLSAgICByZXR1cm4gY3JlYXRlSXRlcmF0b3I8SlNGZXRjaEhlYWRlcnM+
KCpnbG9iYWxPYmplY3QoKSwgKnRoaXMsIEl0ZXJhdGlvbktpbmQ6OktleVZhbHVlKTsKLX0KLQot
SlNDOjpKU1ZhbHVlIEpTRmV0Y2hIZWFkZXJzOjprZXlzKEpTQzo6RXhlY1N0YXRlJikKLXsKLSAg
ICByZXR1cm4gY3JlYXRlSXRlcmF0b3I8SlNGZXRjaEhlYWRlcnM+KCpnbG9iYWxPYmplY3QoKSwg
KnRoaXMsIEl0ZXJhdGlvbktpbmQ6OktleSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSBKU0ZldGNoSGVh
ZGVyczo6dmFsdWVzKEpTQzo6RXhlY1N0YXRlJikKLXsKLSAgICByZXR1cm4gY3JlYXRlSXRlcmF0
b3I8SlNGZXRjaEhlYWRlcnM+KCpnbG9iYWxPYmplY3QoKSwgKnRoaXMsIEl0ZXJhdGlvbktpbmQ6
OlZhbHVlKTsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRm9udEZhY2VTZXRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNGb250RmFjZVNldEN1c3RvbS5jcHAKaW5kZXggY2Q4NDk4NTZjZDk2OGNiMWQ2ZTNk
Zjc1ZDY3YmQ0OGJmOTAxN2JkNi4uOWEzYWQzMGQ4NmJjZjBmNGRiOGY1YWEwMzBmM2EyOWRhOWRl
MGYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGb250RmFjZVNl
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGb250RmFjZVNl
dEN1c3RvbS5jcHAKQEAgLTMyLDM0ICszMiwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXVzaW5nIEZvbnRGYWNlU2V0SXRlcmF0b3IgPSBKU0tleVZhbHVlSXRlcmF0b3I8SlNGb250RmFj
ZVNldD47Ci11c2luZyBGb250RmFjZVNldEl0ZXJhdG9yUHJvdG90eXBlID0gSlNLZXlWYWx1ZUl0
ZXJhdG9yUHJvdG90eXBlPEpTRm9udEZhY2VTZXQ+OwotCi10ZW1wbGF0ZTw+Ci1jb25zdCBKU0M6
OkNsYXNzSW5mbyBGb250RmFjZVNldEl0ZXJhdG9yOjpzX2luZm8gPSB7ICJGb250IEZhY2UgU2V0
IEl0ZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShGb250RmFj
ZVNldEl0ZXJhdG9yKSB9OwotCi10ZW1wbGF0ZTw+Ci1jb25zdCBKU0M6OkNsYXNzSW5mbyBGb250
RmFjZVNldEl0ZXJhdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJGb250IEZhY2UgU2V0IEl0ZXJh
dG9yIFByb3RvdHlwZSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRm9u
dEZhY2VTZXRJdGVyYXRvclByb3RvdHlwZSkgfTsKLQogSlNDOjpKU1ZhbHVlIEpTRm9udEZhY2VT
ZXQ6OnJlYWR5KEpTQzo6RXhlY1N0YXRlJiBleGVjU3RhdGUpIGNvbnN0CiB7CiAgICAgYXV0byYg
cHJvbWlzZSA9IHdyYXBwZWQoKS5wcm9taXNlKGV4ZWNTdGF0ZSk7CiAgICAgcmV0dXJuIHByb21p
c2UuZGVmZXJyZWQoKS5wcm9taXNlKCk7CiB9CiAKLUpTQzo6SlNWYWx1ZSBKU0ZvbnRGYWNlU2V0
OjplbnRyaWVzKEpTQzo6RXhlY1N0YXRlJikKLXsKLSAgICByZXR1cm4gY3JlYXRlSXRlcmF0b3I8
SlNGb250RmFjZVNldD4oKmdsb2JhbE9iamVjdCgpLCAqdGhpcywgSXRlcmF0aW9uS2luZDo6S2V5
VmFsdWUpOwotfQotCi1KU0M6OkpTVmFsdWUgSlNGb250RmFjZVNldDo6a2V5cyhKU0M6OkV4ZWNT
dGF0ZSYpCi17Ci0gICAgcmV0dXJuIGNyZWF0ZUl0ZXJhdG9yPEpTRm9udEZhY2VTZXQ+KCpnbG9i
YWxPYmplY3QoKSwgKnRoaXMsIEl0ZXJhdGlvbktpbmQ6OktleSk7Ci19Ci0KLUpTQzo6SlNWYWx1
ZSBKU0ZvbnRGYWNlU2V0Ojp2YWx1ZXMoSlNDOjpFeGVjU3RhdGUmKQotewotICAgIHJldHVybiBj
cmVhdGVJdGVyYXRvcjxKU0ZvbnRGYWNlU2V0PigqZ2xvYmFsT2JqZWN0KCksICp0aGlzLCBJdGVy
YXRpb25LaW5kOjpWYWx1ZSk7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTS2V5VmFsdWVJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNLZXlWYWx1ZUl0ZXJhdG9yLmgKaW5kZXggZmJiZmZkMGM1N2JiMGFlZTA5MmJiYjNiZjQ4
Y2M5MmU4MDc5OGM5ZC4uMDY3YmI5NmI1Nzg5MTNjYjJjM2NjNWUwZWMxNWExMDJkYWZlOTFmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNLZXlWYWx1ZUl0ZXJhdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNLZXlWYWx1ZUl0ZXJhdG9yLmgK
QEAgLTEwNSw5ICsxMDUsNDAgQEAgcHJpdmF0ZToKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEpT
V3JhcHBlcj4KLUpTS2V5VmFsdWVJdGVyYXRvcjxKU1dyYXBwZXI+KiBjcmVhdGVJdGVyYXRvcihK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU1dyYXBwZXImIHdyYXBwZXIsIEl0ZXJh
dGlvbktpbmQga2luZCkKK0pTQzo6RW5jb2RlZEpTVmFsdWUgY3JlYXRlS2V5VmFsdWVJdGVyYXRv
cihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEl0ZXJhdGlvbktpbmQga2luZCwgY29uc3QgY2hhciog
cHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBKU0tleVZhbHVlSXRlcmF0b3I8SlNXcmFwcGVy
Pjo6Y3JlYXRlKGdsb2JhbE9iamVjdC52bSgpLCBnZXRET01TdHJ1Y3R1cmU8SlNLZXlWYWx1ZUl0
ZXJhdG9yPEpTV3JhcHBlcj4+KGdsb2JhbE9iamVjdC52bSgpLCBnbG9iYWxPYmplY3QpLCB3cmFw
cGVyLCBraW5kKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNXcmFw
cGVyKj4oc3RhdGUudGhpc1ZhbHVlKCkpOworICAgIGlmIChVTkxJS0VMWSghd3JhcHBlcikpCisg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsIEpTV3JhcHBlcjo6aW5mbygp
LT5jbGFzc05hbWUsIHByb3BlcnR5TmFtZSk7CisgICAgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCA9ICp3cmFwcGVyLT5nbG9iYWxPYmplY3QoKTsKKyAgICByZXR1cm4gSlNDOjpKU1Zh
bHVlOjplbmNvZGUoSlNLZXlWYWx1ZUl0ZXJhdG9yPEpTV3JhcHBlcj46OmNyZWF0ZShnbG9iYWxP
YmplY3Qudm0oKSwgZ2V0RE9NU3RydWN0dXJlPEpTS2V5VmFsdWVJdGVyYXRvcjxKU1dyYXBwZXI+
PihnbG9iYWxPYmplY3Qudm0oKSwgZ2xvYmFsT2JqZWN0KSwgKndyYXBwZXIsIGtpbmQpKTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgSlNXcmFwcGVyPgorSlNDOjpFbmNvZGVkSlNWYWx1ZSBrZXlW
YWx1ZUl0ZXJhdG9yRm9yRWFjaChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIHBy
b3BlcnR5TmFtZSkKK3sKKyAgICBhdXRvIHdyYXBwZXIgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNX
cmFwcGVyKj4oc3RhdGUudGhpc1ZhbHVlKCkpOworICAgIGlmIChVTkxJS0VMWSghd3JhcHBlcikp
CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsIEpTV3JhcHBlcjo6aW5m
bygpLT5jbGFzc05hbWUsIHByb3BlcnR5TmFtZSk7CisKKyAgICBKU0M6OkNhbGxEYXRhIGNhbGxE
YXRhOworICAgIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKHN0YXRl
LmFyZ3VtZW50KDApLCBjYWxsRGF0YSk7CisgICAgaWYgKGNhbGxUeXBlID09IEpTQzo6Q2FsbFR5
cGVOb25lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmc3RhdGUpOworCisgICAg
dHlwZW5hbWUgSlNXcmFwcGVyOjpJdGVyYXRvcktleSBuZXh0S2V5OworICAgIHR5cGVuYW1lIEpT
V3JhcHBlcjo6SXRlcmF0b3JWYWx1ZSBuZXh0VmFsdWU7CisgICAgYXV0byBpdGVyYXRvciA9IHdy
YXBwZXItPndyYXBwZWQoKS5jcmVhdGVJdGVyYXRvcigpOworICAgIHdoaWxlICghaXRlcmF0b3Iu
bmV4dChuZXh0S2V5LCBuZXh0VmFsdWUpKSB7CisgICAgICAgIEpTQzo6TWFya2VkQXJndW1lbnRC
dWZmZXIgYXJndW1lbnRzOworICAgICAgICBhcmd1bWVudHMuYXBwZW5kKHRvSlMoJnN0YXRlLCB3
cmFwcGVyLT5nbG9iYWxPYmplY3QoKSwgbmV4dFZhbHVlKSk7CisgICAgICAgIGFyZ3VtZW50cy5h
cHBlbmQodG9KUygmc3RhdGUsIHdyYXBwZXItPmdsb2JhbE9iamVjdCgpLCBuZXh0S2V5KSk7Cisg
ICAgICAgIGFyZ3VtZW50cy5hcHBlbmQod3JhcHBlcik7CisgICAgICAgIEpTQzo6Y2FsbCgmc3Rh
dGUsIHN0YXRlLmFyZ3VtZW50KDApLCBjYWxsVHlwZSwgY2FsbERhdGEsIHdyYXBwZXIsIGFyZ3Vt
ZW50cyk7CisgICAgICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIGJy
ZWFrOworICAgIH0gCisgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKEpTQzo6anNVbmRl
ZmluZWQoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEpTV3JhcHBlcj4KQEAgLTEyMCw4ICsx
NTEsOCBAQCB2b2lkIEpTS2V5VmFsdWVJdGVyYXRvcjxKU1dyYXBwZXI+OjpkZXN0cm95KEpTQ2Vs
bCogY2VsbCkKIHRlbXBsYXRlPHR5cGVuYW1lIEpTV3JhcHBlcj4KIGJvb2wgSlNLZXlWYWx1ZUl0
ZXJhdG9yPEpTV3JhcHBlcj46Om5leHQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFs
dWUmIHZhbHVlKQogewotICAgIHR5cGVuYW1lIERPTVdyYXBwZWQ6Okl0ZXJhdG9yOjpLZXkgbmV4
dEtleTsKLSAgICB0eXBlbmFtZSBET01XcmFwcGVkOjpJdGVyYXRvcjo6VmFsdWUgbmV4dFZhbHVl
OworICAgIHR5cGVuYW1lIEpTV3JhcHBlcjo6SXRlcmF0b3JLZXkgbmV4dEtleTsKKyAgICB0eXBl
bmFtZSBKU1dyYXBwZXI6Okl0ZXJhdG9yVmFsdWUgbmV4dFZhbHVlOwogICAgIGlmIChtX2l0ZXJh
dG9yLm5leHQobmV4dEtleSwgbmV4dFZhbHVlKSkgewogICAgICAgICB2YWx1ZSA9IEpTQzo6anNV
bmRlZmluZWQoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDBhODhlYTIzNTU4ZTdh
YmRkYzNmMWU1MDdmODVmNDEwNWU1ZWRiNjAuLjgwZWJjMjBiYTNlMWQ4MDI2N2NkMTY1NjA5MmM5
ZTk3MmM1Nzk2NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCkBAIC0xMSw3ICsxMSw3IEBACiAjIENvcHlyaWdodCAoQykgMjAx
MiBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChDKSAyMDA3
LCAyMDA4LCAyMDA5LCAyMDEyIEdvb2dsZSBJbmMuCiAjIENvcHlyaWdodCAoQykgMjAxMyBTYW1z
dW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIyBDb3B5cmlnaHQgKEMpIDIw
MTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTUs
IDIwMTYgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAjIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC02MDUsOCArNjA1LDExIEBAIHN1YiBHZXRGdW5jdGlvbk5hbWUKICAgICAgICAgcmV0dXJuIEdl
dEpTQnVpbHRpbkZ1bmN0aW9uTmFtZSgkY2xhc3NOYW1lLCAkZnVuY3Rpb24pOwogICAgIH0KIAor
ICAgIG15ICRmdW5jdGlvbk5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKKyAgICAk
ZnVuY3Rpb25OYW1lID0gIlN5bWJvbEl0ZXJhdG9yIiBpZiAkZnVuY3Rpb25OYW1lIGVxICJbU3lt
Ym9sLkl0ZXJhdG9yXSI7CisKICAgICBteSAka2luZCA9ICRmdW5jdGlvbi0+aXNTdGF0aWMgPyAi
Q29uc3RydWN0b3IiIDogKE9wZXJhdGlvblNob3VsZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNlLCAk
ZnVuY3Rpb24pID8gIkluc3RhbmNlIiA6ICJQcm90b3R5cGUiKTsKLSAgICByZXR1cm4gJGNvZGVH
ZW5lcmF0b3ItPldLX2xjZmlyc3QoJGNsYXNzTmFtZSkgLiAka2luZCAuICJGdW5jdGlvbiIgLiAk
Y29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSk7Cisg
ICAgcmV0dXJuICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRjbGFzc05hbWUpIC4gJGtpbmQg
LiAiRnVuY3Rpb24iIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1bmN0aW9uTmFtZSk7
CiB9CiAKIHN1YiBHZXRTcGVjaWFsQWNjZXNzb3JGdW5jdGlvbkZvclR5cGUKQEAgLTc2OSw2ICs3
NzIsOCBAQCBzdWIgUHJvdG90eXBlRnVuY3Rpb25Db3VudAogICAgICAgICAkY291bnQrKyBpZiAh
JGZ1bmN0aW9uLT5pc1N0YXRpYyAmJiAhT3BlcmF0aW9uU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRl
cmZhY2UsICRmdW5jdGlvbik7CiAgICAgfQogCisgICAgJGNvdW50ICs9IHNjYWxhciBAeyRpbnRl
cmZhY2UtPml0ZXJhYmxlLT5mdW5jdGlvbnN9IGlmICRpbnRlcmZhY2UtPml0ZXJhYmxlOworCiAg
ICAgcmV0dXJuICRjb3VudDsKIH0KIApAQCAtMTA1MCw2ICsxMDU1LDE2IEBAIHN1YiBHZW5lcmF0
ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koSlNDOjpKU0NlbGwqKTtcbiIpOwogICAgIH0KIAorICAgIGlmICgkaW50ZXJmYWNlLT5p
dGVyYWJsZSkgeworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4iKTsKKyAgICAgICAg
aWYgKCRpbnRlcmZhY2UtPml0ZXJhYmxlLT5rZXlUeXBlKSB7CisgICAgICAgICAgICBteSAka2V5
VHlwZSA9IEdldE5hdGl2ZVR5cGUoJGludGVyZmFjZS0+aXRlcmFibGUtPmtleVR5cGUpOworICAg
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB1c2luZyBJdGVyYXRvcktleSA9ICRr
ZXlUeXBlO1xuIik7CisgICAgICAgIH0KKyAgICAgICAgbXkgJHZhbHVlVHlwZSA9IEdldE5hdGl2
ZVR5cGUoJGludGVyZmFjZS0+aXRlcmFibGUtPnZhbHVlVHlwZSk7CisgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgdXNpbmcgSXRlcmF0b3JWYWx1ZSA9ICR2YWx1ZVR5cGU7XG4iKTsK
KyAgICB9CisKICAgICAjIENsYXNzIGluZm8KICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIk5v
ZGUiKSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbiIpOwpAQCAtMTQyNSwxMSAr
MTQ0MCwxNSBAQCBzdWIgR2VuZXJhdGVQcm9wZXJ0aWVzSGFzaFRhYmxlCiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9
KSB7CisgICAgbXkgQGZ1bmN0aW9ucyA9IEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfTsKKyAgICBw
dXNoKEBmdW5jdGlvbnMsIEB7JGludGVyZmFjZS0+aXRlcmFibGUtPmZ1bmN0aW9uc30pIGlmICRp
bnRlcmZhY2UtPml0ZXJhYmxlOworICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAZnVuY3Rpb25z
KSB7CiAgICAgICAgIG5leHQgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiUHJpdmF0ZSJ9KTsKICAgICAgICAgbmV4dCBpZiAoJGZ1bmN0aW9uLT5pc1N0YXRp
Yyk7CiAgICAgICAgIG5leHQgaWYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gJiYgJGZ1bmN0
aW9uLT57b3ZlcmxvYWRJbmRleH0gPiAxOwogICAgICAgICBuZXh0IGlmIE9wZXJhdGlvblNob3Vs
ZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNlLCAkZnVuY3Rpb24pICE9ICRpc0luc3RhbmNlOworICAg
ICAgICBuZXh0IGlmICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lIGVxICJbU3ltYm9sLkl0ZXJh
dG9yXSI7CisKICAgICAgICAgbXkgJG5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsK
ICAgICAgICAgcHVzaChAJGhhc2hLZXlzLCAkbmFtZSk7CiAKQEAgLTE4MzUsMTQgKzE4NTQsMTcg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxu
dXNpbmcgbmFtZXNwYWNlIEpTQztcblxuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJuYW1l
c3BhY2UgV2ViQ29yZSB7XG5cbiIpOwogCisgICAgbXkgQGZ1bmN0aW9ucyA9IEB7JGludGVyZmFj
ZS0+ZnVuY3Rpb25zfTsKKyAgICBwdXNoKEBmdW5jdGlvbnMsIEB7JGludGVyZmFjZS0+aXRlcmFi
bGUtPmZ1bmN0aW9uc30pIGlmICRpbnRlcmZhY2UtPml0ZXJhYmxlOworCiAgICAgbXkgJG51bUNv
bnN0YW50cyA9IEB7JGludGVyZmFjZS0+Y29uc3RhbnRzfTsKLSAgICBteSAkbnVtRnVuY3Rpb25z
ID0gQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9OworICAgIG15ICRudW1GdW5jdGlvbnMgPSBAZnVu
Y3Rpb25zOwogICAgIG15ICRudW1BdHRyaWJ1dGVzID0gQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVz
fTsKIAogICAgIGlmICgkbnVtRnVuY3Rpb25zID4gMCkgewogICAgICAgICBteSAkaW5BcHBsZUNv
cHlyaWdodCA9IDA7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCIvLyBGdW5jdGlvbnNcblxu
Iik7Ci0gICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRpbnRlcmZhY2UtPmZ1bmN0aW9u
c30pIHsKKyAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEBmdW5jdGlvbnMpIHsKICAgICAg
ICAgICAgIG5leHQgaWYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gJiYgJGZ1bmN0aW9uLT57
b3ZlcmxvYWRJbmRleH0gPiAxOwogICAgICAgICAgICAgbmV4dCBpZiAkZnVuY3Rpb24tPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkZvcndhcmREZWNsYXJlSW5IZWFkZXIifTsKICAg
ICAgICAgICAgIG5leHQgaWYgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDdXN0b21CaW5kaW5nIn07CkBAIC0yMTIzLDYgKzIxNDUsMTEgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBw
dXREaXJlY3Qodm0sIGNsaWVudERhdGEuYnVpbHRpbk5hbWVzKCkuIiAuICRmdW5jdGlvbi0+c2ln
bmF0dXJlLT5uYW1lIC4gIlByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0KCksIDAsIFN0cmluZygpLCAiIC4gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2Us
ICRjbGFzc05hbWUsICRmdW5jdGlvbikgLiAiKSwgUmVhZE9ubHkgfCBEb250RW51bSk7XG4iKTsK
ICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPml0ZXJhYmxlKSB7
CisgICAgICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFtZSgkaW50
ZXJmYWNlLCAkY2xhc3NOYW1lLCBAeyRpbnRlcmZhY2UtPml0ZXJhYmxlLT5mdW5jdGlvbnN9WzBd
KTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCgpLCAwLCBBU0NJSUxpdGVyYWwoXCJbU3ltYm9sLkl0ZXJhdG9yXVwiKSwg
JGZ1bmN0aW9uTmFtZSksIFJlYWRPbmx5IHwgRG9udEVudW0pO1xuIik7CisgICAgICAgICAgICB9
CisKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX1Q
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSlcbiIpOwpAQCAtMjk5MCw2ICszMDE3LDEw
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICB9CiAKKyAgICBpZiAoJGludGVy
ZmFjZS0+aXRlcmFibGUpIHsKKyAgICAgICAgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkl0ZXJhYmxl
RnVuY3Rpb25zKCRpbnRlcmZhY2UpOworICAgIH0KKwogICAgIGlmICgkbmVlZHNWaXNpdENoaWxk
cmVuKSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX06OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcilcbiIpOwogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwpAQCAtMzkyMiw2ICszOTUzLDU5IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKCkKICAgICB9CiB9CiAKK3N1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uSXRlcmFibGVGdW5jdGlvbnMKK3sKKyAgICBteSAkaW50ZXJm
YWNlID0gc2hpZnQ7CisKKyAgICBpZiAobm90ICRpbnRlcmZhY2UtPml0ZXJhYmxlLT5pc0tleVZh
bHVlKSB7CisgICAgICAgIGRpZSAiTm8gc3VwcG9ydCB5ZXQgZm9yIHNldCBpdGVyYXRvcnMiOwor
ICAgIH0KKworICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+bmFtZTsKKyAgICBt
eSAkY2xhc3NOYW1lID0gIkpTJGludGVyZmFjZU5hbWUiOworICAgIG15ICR2aXNpYmxlSW50ZXJm
YWNlTmFtZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRWaXNpYmxlSW50ZXJmYWNlTmFtZSgkaW50ZXJm
YWNlKTsKKworICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKU0tleVZhbHVlSXRlcmF0b3IuaCIpOwor
CisgICAgcHVzaChAaW1wbENvbnRlbnQsICA8PEVORCk7Cit1c2luZyAke2ludGVyZmFjZU5hbWV9
SXRlcmF0b3IgPSBKU0tleVZhbHVlSXRlcmF0b3I8JHtjbGFzc05hbWV9PjsKK3VzaW5nICR7aW50
ZXJmYWNlTmFtZX1JdGVyYXRvclByb3RvdHlwZSA9IEpTS2V5VmFsdWVJdGVyYXRvclByb3RvdHlw
ZTwke2NsYXNzTmFtZX0+OworCit0ZW1wbGF0ZTw+Citjb25zdCBKU0M6OkNsYXNzSW5mbyAke2lu
dGVyZmFjZU5hbWV9SXRlcmF0b3I6OnNfaW5mbyA9IHsgIiR7dmlzaWJsZUludGVyZmFjZU5hbWV9
IEl0ZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRSgke2ludGVy
ZmFjZU5hbWV9SXRlcmF0b3IpIH07CisKK3RlbXBsYXRlPD4KK2NvbnN0IEpTQzo6Q2xhc3NJbmZv
ICR7aW50ZXJmYWNlTmFtZX1JdGVyYXRvclByb3RvdHlwZTo6c19pbmZvID0geyAiJHt2aXNpYmxl
SW50ZXJmYWNlTmFtZX0gSXRlcmF0b3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKCR7aW50ZXJmYWNlTmFtZX1JdGVyYXRvclByb3RvdHlwZSkgfTsKKworRU5ECisKKyAg
ICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5pdGVyYWJsZS0+ZnVuY3Rpb25z
fSkgeworICAgICAgICBteSAkcHJvcGVydHlOYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5h
bWU7CisgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFj
ZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKTsKKworICAgICAgICBpZiAobm90ICRwcm9wZXJ0eU5h
bWUgZXEgImZvckVhY2giKSB7CisgICAgICAgICAgICBteSAkaXRlcmF0aW9uS2luZCA9ICJLZXlW
YWx1ZSI7CisgICAgICAgICAgICAkaXRlcmF0aW9uS2luZCA9ICJLZXkiIGlmICRwcm9wZXJ0eU5h
bWUgZXEgImtleXMiOworICAgICAgICAgICAgJGl0ZXJhdGlvbktpbmQgPSAiVmFsdWUiIGlmICRw
cm9wZXJ0eU5hbWUgZXEgInZhbHVlcyI7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IDw8RU5EKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2Z1bmN0aW9uTmFt
ZX0oSlNDOjpFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIHJldHVybiBjcmVhdGVLZXlWYWx1ZUl0
ZXJhdG9yPCR7Y2xhc3NOYW1lfT4oKnN0YXRlLCBJdGVyYXRpb25LaW5kOjoke2l0ZXJhdGlvbktp
bmR9LCAiJHtwcm9wZXJ0eU5hbWV9Iik7Cit9CisKK0VORAorICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICA8PEVORCk7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgJHtmdW5jdGlvbk5hbWV9KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKK3sK
KyAgICByZXR1cm4ga2V5VmFsdWVJdGVyYXRvckZvckVhY2g8JHtjbGFzc05hbWV9Pigqc3RhdGUs
ICIke3Byb3BlcnR5TmFtZX0iKTsKK30KKworRU5ECisgICAgICAgIH0KKyAgICB9Cit9CisKIHN1
YiBHZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVyZQogewogICAgIG15ICRzaWduYXR1cmUgPSBzaGlm
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2Vy
LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KaW5kZXgg
NDcyN2NmN2JmMzVmYjE3NWRkNzhmNjc4Mzk3MTQzZmIxOGYwYmQwNi4uNDcwMDU0ZTk5ZmJiZTNl
MTUxY2U4MWUxMmQ2MzFhOTZmZTAxYzUwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9JRExQYXJzZXIucG0KQEAgLTU1LDYgKzU1LDcgQEAgc3RydWN0KCBkb21JbnRlcmZh
Y2UgPT4gewogICAgIGlzRXhjZXB0aW9uID0+ICckJywgIyBVc2VkIGZvciBleGNlcHRpb24gaW50
ZXJmYWNlcwogICAgIGlzQ2FsbGJhY2sgPT4gJyQnLCAjIFVzZWQgZm9yIGNhbGxiYWNrIGludGVy
ZmFjZXMKICAgICBpc1BhcnRpYWwgPT4gJyQnLCAjIFVzZWQgZm9yIHBhcnRpYWwgaW50ZXJmYWNl
cworICAgIGl0ZXJhYmxlID0+ICckJywgIyBVc2VkIGZvciBpdGVyYWJsZSBpbnRlcmZhY2VzCiB9
KTsKIAogIyBVc2VkIHRvIHJlcHJlc2VudCBkb21JbnRlcmZhY2UgY29udGVudHMgKG5hbWUgb2Yg
bWV0aG9kLCBzaWduYXR1cmUpCkBAIC04NSw2ICs4NiwxNSBAQCBzdHJ1Y3QoIGRvbVNpZ25hdHVy
ZSA9PiB7CiAgICAgZGVmYXVsdCA9PiAnJCcsICMgRGVmYXVsdCB2YWx1ZSBmb3IgcGFyYW1ldGVy
cwogfSk7CiAKKyMgVXNlZCB0byByZXByZXNlbnQgSXRlcmFibGUgaW50ZXJmYWNlcworc3RydWN0
KCBkb21JdGVyYWJsZSA9PiB7CisgICAgaXNLZXlWYWx1ZSA9PiAnJCcsIyBJcyBtYXAgaXRlcmFi
bGUgb3Igc2V0IGl0ZXJhYmxlCisgICAga2V5VHlwZSA9PiAnJCcsICAgIyBLZXkgdHlwZSBmb3Ig
bWFwIGl0ZXJhYmxlcworICAgIHZhbHVlVHlwZSA9PiAnJCcsICMgVmFsdWUgdHlwZSBmb3IgbWFw
IG9yIHNldCBpdGVyYWJsZXMKKyAgICBmdW5jdGlvbnMgPT4gJ0AnLCAjIEl0ZXJhYmxlIGZ1bmN0
aW9ucyAoZW50cmllcywga2V5cywgdmFsdWVzLCBbU3ltYm9sLkl0ZXJhdG9yXSwgZm9yRWFjaCkK
K30pOworCisKICMgVXNlZCB0byByZXByZXNlbnQgc3RyaW5nIGNvbnN0YW50cwogc3RydWN0KCBk
b21Db25zdGFudCA9PiB7CiAgICAgbmFtZSA9PiAnJCcsICAgICAgIyBET00gQ29uc3RhbnQgaWRl
bnRpZmllcgpAQCAtMzI1LDkgKzMzNSw4IEBAIG15ICRuZXh0UHJpbWl0aXZlVHlwZV8yID0gJ14o
ZG91YmxlfGZsb2F0fHVucmVzdHJpY3RlZCkkJzsKIG15ICRuZXh0QXJndW1lbnRMaXN0XzEgPSAn
XihcKHw6OnxCeXRlU3RyaW5nfERPTVN0cmluZ3xEYXRlfFxbfGFueXxib29sZWFufGJ5dGV8ZG91
YmxlfGZsb2F0fGlufGludHxsb25nfG9iamVjdHxvY3RldHxvcHRpb25hbHxzZXF1ZW5jZXxzaG9y
dHx1bnJlc3RyaWN0ZWR8dW5zaWduZWQpJCc7CiBteSAkbmV4dE5vbkFueVR5cGVfMSA9ICdeKGJv
b2xlYW58Ynl0ZXxkb3VibGV8ZmxvYXR8aW50fGxvbmd8b2N0ZXR8c2hvcnR8dW5yZXN0cmljdGVk
fHVuc2lnbmVkKSQnOwogbXkgJG5leHRJbnRlcmZhY2VNZW1iZXJfMSA9ICdeKFwofDo6fEJ5dGVT
dHJpbmd8RE9NU3RyaW5nfERhdGV8YW55fGF0dHJpYnV0ZXxib29sZWFufGJ5dGV8Y3JlYXRvcnxk
ZWxldGVyfGRvdWJsZXxmbG9hdHxnZXR0ZXJ8aW5oZXJpdHxpbnR8bGVnYWN5Y2FsbGVyfGxvbmd8
b2JqZWN0fG9jdGV0fHJlYWRvbmx5fHNlcXVlbmNlfHNlcmlhbGl6ZXJ8c2V0dGVyfHNob3J0fHN0
YXRpY3xzdHJpbmdpZmllcnx1bnJlc3RyaWN0ZWR8dW5zaWduZWR8dm9pZCkkJzsKLW15ICRuZXh0
T3B0aW9uYWxJdGVyYXRvckludGVyZmFjZU9yT2JqZWN0XzEgPSAnXig7fD0pJCc7Ci1teSAkbmV4
dEF0dHJpYnV0ZU9yT3BlcmF0aW9uT3JJdGVyYXRvcl8xID0gJ14oc3RhdGljfHN0cmluZ2lmaWVy
KSQnOwotbXkgJG5leHRBdHRyaWJ1dGVPck9wZXJhdGlvbk9ySXRlcmF0b3JfMiA9ICdeKFwofDo6
fEJ5dGVTdHJpbmd8RE9NU3RyaW5nfERhdGV8YW55fGJvb2xlYW58Ynl0ZXxjcmVhdG9yfGRlbGV0
ZXJ8ZG91YmxlfGZsb2F0fGdldHRlcnxpbnR8bGVnYWN5Y2FsbGVyfGxvbmd8b2JqZWN0fG9jdGV0
fHNlcXVlbmNlfHNldHRlcnxzaG9ydHx1bnJlc3RyaWN0ZWR8dW5zaWduZWR8dm9pZCkkJzsKK215
ICRuZXh0QXR0cmlidXRlT3JPcGVyYXRpb25fMSA9ICdeKHN0YXRpY3xzdHJpbmdpZmllcikkJzsK
K215ICRuZXh0QXR0cmlidXRlT3JPcGVyYXRpb25fMiA9ICdeKFwofDo6fEJ5dGVTdHJpbmd8RE9N
U3RyaW5nfERhdGV8YW55fGJvb2xlYW58Ynl0ZXxjcmVhdG9yfGRlbGV0ZXJ8ZG91YmxlfGZsb2F0
fGdldHRlcnxpbnR8bGVnYWN5Y2FsbGVyfGxvbmd8b2JqZWN0fG9jdGV0fHNlcXVlbmNlfHNldHRl
cnxzaG9ydHx1bnJlc3RyaWN0ZWR8dW5zaWduZWR8dm9pZCkkJzsKIG15ICRuZXh0VW5yZXN0cmlj
dGVkRmxvYXRUeXBlXzEgPSAnXihkb3VibGV8ZmxvYXQpJCc7CiBteSAkbmV4dEV4dGVuZGVkQXR0
cmlidXRlUmVzdDNfMSA9ICdeKFwsfDo6fFxdKSQnOwogbXkgJG5leHRFeGNlcHRpb25GaWVsZF8x
ID0gJ14oXCh8Ojp8Qnl0ZVN0cmluZ3xET01TdHJpbmd8RGF0ZXxhbnl8Ym9vbGVhbnxieXRlfGRv
dWJsZXxmbG9hdHxpbnR8bG9uZ3xvYmplY3R8b2N0ZXR8c2VxdWVuY2V8c2hvcnR8dW5yZXN0cmlj
dGVkfHVuc2lnbmVkKSQnOwpAQCAtOTYxLDcgKzk3MCw3IEBAIHN1YiBwYXJzZUF0dHJpYnV0ZU9y
T3BlcmF0aW9uT3JJdGVyYXRvcgogICAgIGlmICgkbmV4dC0+dmFsdWUoKSBlcSAic2VyaWFsaXpl
ciIpIHsKICAgICAgICAgcmV0dXJuICRzZWxmLT5wYXJzZVNlcmlhbGl6ZXIoJGV4dGVuZGVkQXR0
cmlidXRlTGlzdCk7CiAgICAgfQotICAgIGlmICgkbmV4dC0+dmFsdWUoKSA9fiAvJG5leHRBdHRy
aWJ1dGVPck9wZXJhdGlvbk9ySXRlcmF0b3JfMS8pIHsKKyAgICBpZiAoJG5leHQtPnZhbHVlKCkg
PX4gLyRuZXh0QXR0cmlidXRlT3JPcGVyYXRpb25fMS8pIHsKICAgICAgICAgbXkgJHF1YWxpZmll
ciA9ICRzZWxmLT5wYXJzZVF1YWxpZmllcigpOwogICAgICAgICBteSAkbmV3RGF0YU5vZGUgPSAk
c2VsZi0+cGFyc2VBdHRyaWJ1dGVPck9wZXJhdGlvblJlc3QoJGV4dGVuZGVkQXR0cmlidXRlTGlz
dCk7CiAgICAgICAgIGlmIChkZWZpbmVkKCRuZXdEYXRhTm9kZSkgJiYgJHF1YWxpZmllciBlcSAi
c3RhdGljIikgewpAQCAtOTcyLDcgKzk4MSw3IEBAIHN1YiBwYXJzZUF0dHJpYnV0ZU9yT3BlcmF0
aW9uT3JJdGVyYXRvcgogICAgIGlmICgkbmV4dC0+dmFsdWUoKSA9fiAvJG5leHRBdHRyaWJ1dGVf
MS8pIHsKICAgICAgICAgcmV0dXJuICRzZWxmLT5wYXJzZUF0dHJpYnV0ZSgkZXh0ZW5kZWRBdHRy
aWJ1dGVMaXN0KTsKICAgICB9Ci0gICAgaWYgKCRuZXh0LT50eXBlKCkgPT0gSWRlbnRpZmllclRv
a2VuIHx8ICRuZXh0LT52YWx1ZSgpID1+IC8kbmV4dEF0dHJpYnV0ZU9yT3BlcmF0aW9uT3JJdGVy
YXRvcl8yLykgeworICAgIGlmICgkbmV4dC0+dHlwZSgpID09IElkZW50aWZpZXJUb2tlbiB8fCAk
bmV4dC0+dmFsdWUoKSA9fiAvJG5leHRBdHRyaWJ1dGVPck9wZXJhdGlvbl8yLykgewogICAgICAg
ICByZXR1cm4gJHNlbGYtPnBhcnNlT3BlcmF0aW9uT3JJdGVyYXRvcigkZXh0ZW5kZWRBdHRyaWJ1
dGVMaXN0KTsKICAgICB9CiAgICAgJHNlbGYtPmFzc2VydFVuZXhwZWN0ZWRUb2tlbigkbmV4dC0+
dmFsdWUoKSwgX19MSU5FX18pOwpAQCAtMTIwNiwxMyArMTIxNSwxNyBAQCBzdWIgcGFyc2VPcGVy
YXRpb25Pckl0ZXJhdG9yCiAgICAgaWYgKCRuZXh0LT52YWx1ZSgpID1+IC8kbmV4dFNwZWNpYWxz
XzEvKSB7CiAgICAgICAgIHJldHVybiAkc2VsZi0+cGFyc2VTcGVjaWFsT3BlcmF0aW9uKCRleHRl
bmRlZEF0dHJpYnV0ZUxpc3QpOwogICAgIH0KKyAgICBpZiAoJG5leHQtPnZhbHVlKCkgZXEgIml0
ZXJhYmxlIikgeworICAgICAgICByZXR1cm4gJHNlbGYtPnBhcnNlSXRlcmFibGVSZXN0KCRleHRl
bmRlZEF0dHJpYnV0ZUxpc3QpOworICAgIH0KICAgICBpZiAoJG5leHQtPnR5cGUoKSA9PSBJZGVu
dGlmaWVyVG9rZW4gfHwgJG5leHQtPnZhbHVlKCkgPX4gLyRuZXh0QXR0cmlidXRlT3JPcGVyYXRp
b25SZXN0XzEvKSB7CiAgICAgICAgIG15ICRyZXR1cm5UeXBlID0gJHNlbGYtPnBhcnNlUmV0dXJu
VHlwZSgpOwotICAgICAgICBteSAkaW50ZXJmYWNlID0gJHNlbGYtPnBhcnNlT3BlcmF0aW9uT3JJ
dGVyYXRvclJlc3QoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7Ci0gICAgICAgIGlmIChkZWZpbmVk
ICgkaW50ZXJmYWNlKSkgewotICAgICAgICAgICAgJGludGVyZmFjZS0+c2lnbmF0dXJlLT50eXBl
KCRyZXR1cm5UeXBlKTsKKyAgICAgICAgbXkgJG5leHQgPSAkc2VsZi0+bmV4dFRva2VuKCk7Cisg
ICAgICAgIGlmICgkbmV4dC0+dHlwZSgpID09IElkZW50aWZpZXJUb2tlbiB8fCAkbmV4dC0+dmFs
dWUoKSBlcSAiKCIpIHsKKyAgICAgICAgICAgIG15ICRvcGVyYXRpb24gPSAkc2VsZi0+cGFyc2VP
cGVyYXRpb25SZXN0KCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOworICAgICAgICAgICAgJG9wZXJh
dGlvbi0+c2lnbmF0dXJlLT50eXBlKCRyZXR1cm5UeXBlKTsKKyAgICAgICAgICAgIHJldHVybiAk
b3BlcmF0aW9uOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiAkaW50ZXJmYWNlOwogICAgIH0K
ICAgICAkc2VsZi0+YXNzZXJ0VW5leHBlY3RlZFRva2VuKCRuZXh0LT52YWx1ZSgpLCBfX0xJTkVf
Xyk7CiB9CkBAIC0xMjgwLDYyICsxMjkzLDc2IEBAIHN1YiBwYXJzZVNwZWNpYWwKICAgICAkc2Vs
Zi0+YXNzZXJ0VW5leHBlY3RlZFRva2VuKCRuZXh0LT52YWx1ZSgpLCBfX0xJTkVfXyk7CiB9CiAK
LXN1YiBwYXJzZU9wZXJhdGlvbk9ySXRlcmF0b3JSZXN0CitzdWIgcGFyc2VJdGVyYWJsZVJlc3QK
IHsKICAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgIG15ICRleHRlbmRlZEF0dHJpYnV0ZUxpc3Qg
PSBzaGlmdDsKIAogICAgIG15ICRuZXh0ID0gJHNlbGYtPm5leHRUb2tlbigpOwotICAgIGlmICgk
bmV4dC0+dmFsdWUoKSBlcSAiaXRlcmF0b3IiKSB7Ci0gICAgICAgIHJldHVybiAkc2VsZi0+cGFy
c2VJdGVyYXRvclJlc3QoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7Ci0gICAgfQotICAgIGlmICgk
bmV4dC0+dHlwZSgpID09IElkZW50aWZpZXJUb2tlbiB8fCAkbmV4dC0+dmFsdWUoKSBlcSAiKCIp
IHsKLSAgICAgICAgcmV0dXJuICRzZWxmLT5wYXJzZU9wZXJhdGlvblJlc3QoJGV4dGVuZGVkQXR0
cmlidXRlTGlzdCk7Ci0gICAgfQotICAgICRzZWxmLT5hc3NlcnRVbmV4cGVjdGVkVG9rZW4oJG5l
eHQtPnZhbHVlKCksIF9fTElORV9fKTsKLX0KLQotc3ViIHBhcnNlSXRlcmF0b3JSZXN0Ci17Ci0g
ICAgbXkgJHNlbGYgPSBzaGlmdDsKLSAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0ID0gc2hp
ZnQ7Ci0KLSAgICBteSAkbmV4dCA9ICRzZWxmLT5uZXh0VG9rZW4oKTsKLSAgICBpZiAoJG5leHQt
PnZhbHVlKCkgZXEgIml0ZXJhdG9yIikgewotICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1
ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIml0ZXJhdG9yIiwgX19MSU5FX18pOwotICAgICAgICAkc2Vs
Zi0+cGFyc2VPcHRpb25hbEl0ZXJhdG9ySW50ZXJmYWNlT3JPYmplY3QoJGV4dGVuZGVkQXR0cmli
dXRlTGlzdCk7CisgICAgaWYgKCRuZXh0LT52YWx1ZSgpIGVxICJpdGVyYWJsZSIpIHsKKyAgICAg
ICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICJpdGVyYWJsZSIs
IF9fTElORV9fKTsKKyAgICAgICAgbXkgJGl0ZXJhYmxlTm9kZSA9ICRzZWxmLT5wYXJzZU9wdGlv
bmFsSXRlcmFibGVJbnRlcmZhY2UoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CiAgICAgICAgICRz
ZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiOyIsIF9fTElORV9fKTsK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gJGl0ZXJhYmxlTm9kZTsKICAgICB9CiAg
ICAgJHNlbGYtPmFzc2VydFVuZXhwZWN0ZWRUb2tlbigkbmV4dC0+dmFsdWUoKSwgX19MSU5FX18p
OwogfQogCi1zdWIgcGFyc2VPcHRpb25hbEl0ZXJhdG9ySW50ZXJmYWNlT3JPYmplY3QKK3N1YiBw
YXJzZU9wdGlvbmFsSXRlcmFibGVJbnRlcmZhY2UKIHsKICAgICBteSAkc2VsZiA9IHNoaWZ0Owog
ICAgIG15ICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QgPSBzaGlmdDsKIAotICAgIG15ICRuZXh0ID0g
JHNlbGYtPm5leHRUb2tlbigpOwotICAgIGlmICgkbmV4dC0+dmFsdWUoKSA9fiAvJG5leHRPcHRp
b25hbEl0ZXJhdG9ySW50ZXJmYWNlT3JPYmplY3RfMS8pIHsKLSAgICAgICAgcmV0dXJuICRzZWxm
LT5wYXJzZU9wdGlvbmFsSXRlcmF0b3JJbnRlcmZhY2UoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7
Ci0gICAgfQotICAgIGlmICgkbmV4dC0+dmFsdWUoKSBlcSAib2JqZWN0IikgewotICAgICAgICAk
c2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIm9iamVjdCIsIF9fTElO
RV9fKTsKLSAgICAgICAgcmV0dXJuOworICAgIG15ICRzeW1ib2xJdGVyYXRvckZ1bmN0aW9uID0g
ZG9tRnVuY3Rpb24tPm5ldygpOworICAgICRzeW1ib2xJdGVyYXRvckZ1bmN0aW9uLT5zaWduYXR1
cmUoZG9tU2lnbmF0dXJlLT5uZXcoKSk7CisgICAgJHN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24tPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOworICAg
ICRzeW1ib2xJdGVyYXRvckZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUoIltTeW1ib2wuSXRlcmF0
b3JdIik7CisKKyAgICBteSAkZW50cmllc0Z1bmN0aW9uID0gZG9tRnVuY3Rpb24tPm5ldygpOwor
ICAgICRlbnRyaWVzRnVuY3Rpb24tPnNpZ25hdHVyZShkb21TaWduYXR1cmUtPm5ldygpKTsKKyAg
ICAkZW50cmllc0Z1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5k
ZWRBdHRyaWJ1dGVMaXN0KTsKKyAgICAkZW50cmllc0Z1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUo
ImVudHJpZXMiKTsKKworICAgIG15ICRrZXlzRnVuY3Rpb24gPSBkb21GdW5jdGlvbi0+bmV3KCk7
CisgICAgJGtleXNGdW5jdGlvbi0+c2lnbmF0dXJlKGRvbVNpZ25hdHVyZS0+bmV3KCkpOworICAg
ICRrZXlzRnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0
dHJpYnV0ZUxpc3QpOworICAgICRrZXlzRnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSgia2V5cyIp
OworCisgICAgbXkgJHZhbHVlc0Z1bmN0aW9uID0gZG9tRnVuY3Rpb24tPm5ldygpOworICAgICR2
YWx1ZXNGdW5jdGlvbi0+c2lnbmF0dXJlKGRvbVNpZ25hdHVyZS0+bmV3KCkpOworICAgICR2YWx1
ZXNGdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmli
dXRlTGlzdCk7CisgICAgJHZhbHVlc0Z1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUoInZhbHVlcyIp
OworCisgICAgbXkgJGZvckVhY2hGdW5jdGlvbiA9IGRvbUZ1bmN0aW9uLT5uZXcoKTsKKyAgICAk
Zm9yRWFjaEZ1bmN0aW9uLT5zaWduYXR1cmUoZG9tU2lnbmF0dXJlLT5uZXcoKSk7CisgICAgJGZv
ckVhY2hGdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0
cmlidXRlTGlzdCk7CisgICAgJGZvckVhY2hGdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lKCJmb3JF
YWNoIik7CisgICAgbXkgJGZvckVhY2hBcmd1bWVudCA9IGRvbVNpZ25hdHVyZS0+bmV3KCk7Cisg
ICAgJGZvckVhY2hBcmd1bWVudC0+bmFtZSgiY2FsbGJhY2siKTsKKyAgICAkZm9yRWFjaEFyZ3Vt
ZW50LT50eXBlKCJhbnkiKTsKKyAgICBwdXNoKEB7JGZvckVhY2hGdW5jdGlvbi0+cGFyYW1ldGVy
c30sICgkZm9yRWFjaEFyZ3VtZW50KSk7CisKKyAgICBteSAkbmV3RGF0YU5vZGUgPSBkb21JdGVy
YWJsZS0+bmV3KCk7CisgICAgcHVzaChAeyRuZXdEYXRhTm9kZS0+ZnVuY3Rpb25zfSwgJHN5bWJv
bEl0ZXJhdG9yRnVuY3Rpb24pOworICAgIHB1c2goQHskbmV3RGF0YU5vZGUtPmZ1bmN0aW9uc30s
ICRlbnRyaWVzRnVuY3Rpb24pOworICAgIHB1c2goQHskbmV3RGF0YU5vZGUtPmZ1bmN0aW9uc30s
ICRrZXlzRnVuY3Rpb24pOworICAgIHB1c2goQHskbmV3RGF0YU5vZGUtPmZ1bmN0aW9uc30sICR2
YWx1ZXNGdW5jdGlvbik7CisgICAgcHVzaChAeyRuZXdEYXRhTm9kZS0+ZnVuY3Rpb25zfSwgJGZv
ckVhY2hGdW5jdGlvbik7CisKKyAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0
VG9rZW4oKSwgIjwiLCBfX0xJTkVfXyk7CisgICAgbXkgJHR5cGUxID0gJHNlbGYtPmdldFRva2Vu
KCktPnZhbHVlKCk7CisgICAgaWYgKCRzZWxmLT5uZXh0VG9rZW4oKS0+dmFsdWUoKSBlcSAiLCIp
IHsKKyAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICIs
IiwgX19MSU5FX18pOworICAgICAgICAkbmV3RGF0YU5vZGUtPmlzS2V5VmFsdWUoMSk7CisgICAg
ICAgICRuZXdEYXRhTm9kZS0+a2V5VHlwZSgkdHlwZTEpOworICAgICAgICAkbmV3RGF0YU5vZGUt
PnZhbHVlVHlwZSgkc2VsZi0+Z2V0VG9rZW4oKS0+dmFsdWUoKSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgJG5ld0RhdGFOb2RlLT5pc0tleVZhbHVlKDApOworICAgICAgICAkbmV3RGF0YU5vZGUt
PnZhbHVlVHlwZSgkdHlwZTEpOwogICAgIH0KLSAgICAkc2VsZi0+YXNzZXJ0VW5leHBlY3RlZFRv
a2VuKCRuZXh0LT52YWx1ZSgpLCBfX0xJTkVfXyk7Ci19Ci0KLXN1YiBwYXJzZU9wdGlvbmFsSXRl
cmF0b3JJbnRlcmZhY2UKLXsKLSAgICBteSAkc2VsZiA9IHNoaWZ0OwotICAgIG15ICRleHRlbmRl
ZEF0dHJpYnV0ZUxpc3QgPSBzaGlmdDsKKyAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2Vs
Zi0+Z2V0VG9rZW4oKSwgIj4iLCBfX0xJTkVfXyk7CiAKLSAgICBteSAkbmV4dCA9ICRzZWxmLT5u
ZXh0VG9rZW4oKTsKLSAgICBpZiAoJG5leHQtPnZhbHVlKCkgZXEgIj0iKSB7Ci0gICAgICAgICRz
ZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiPSIsIF9fTElORV9fKTsK
LSAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVHlwZSgkc2VsZi0+Z2V0VG9rZW4oKSwgSWRlbnRp
ZmllclRva2VuKTsKLSAgICB9CisgICAgcmV0dXJuICRuZXdEYXRhTm9kZTsKIH0KIAogc3ViIHBh
cnNlT3BlcmF0aW9uUmVzdApAQCAtMjE3Nyw2ICsyMjA0LDEwIEBAIHN1YiBhcHBseU1lbWJlckxp
c3QKICAgICAgICAgICAgIHB1c2goQHskaW50ZXJmYWNlLT5jb25zdGFudHN9LCAkaXRlbSk7CiAg
ICAgICAgICAgICBuZXh0OwogICAgICAgICB9CisgICAgICAgIGlmIChyZWYoJGl0ZW0pIGVxICJk
b21JdGVyYWJsZSIpIHsKKyAgICAgICAgICAgICRpbnRlcmZhY2UtPml0ZXJhYmxlKCRpdGVtKTsK
KyAgICAgICAgICAgIG5leHQ7CisgICAgICAgIH0KICAgICAgICAgaWYgKHJlZigkaXRlbSkgZXEg
ImRvbUZ1bmN0aW9uIikgewogICAgICAgICAgICAgaWYgKCRpdGVtLT5zaWduYXR1cmUtPm5hbWUg
ZXEgIiIpIHsKICAgICAgICAgICAgICAgICBwdXNoKEB7JGludGVyZmFjZS0+YW5vbnltb3VzRnVu
Y3Rpb25zfSwgJGl0ZW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCA0ZmNhMzY5NWU5ZDMyODM3MzkyZWFiZGNh
YWY3YTQyNGFlMDk4NTdhLi5hNWEwNDZiOWI2NzA0NjIwYjVkYTI5NjM2MzhjMzM5YTEzNDE2MmZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTRE9NU3RyaW5nTGlz
dC5oIgogI2luY2x1ZGUgIkpTRG9jdW1lbnQuaCIKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIu
aCIKKyNpbmNsdWRlICJKU0tleVZhbHVlSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU05vZGUuaCIK
ICNpbmNsdWRlICJKU1NWR0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiSlNTVkdQb2ludC5oIgpAQCAt
MTc4LDYgKzE3OSwxMSBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uKAogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VG
dW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50KEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlz
ZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VG
dW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50KEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TeW1i
b2xJdGVyYXRvcihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW50cmllcyhKU0M6OkV4ZWNTdGF0ZSop
OworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uS2V5cyhKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKEpTQzo6RXhlY1N0YXRlKik7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Gb3JFYWNoKEpTQzo6RXhlY1N0YXRlKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtNjg4
LDYgKzY5NCwxMCBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvdG90
eXBlVGFibGVWYWx1ZXNbXSA9CiAgICAgeyAidGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFy
Z3VtZW50IiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNl
RnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudCksIChpbnRwdHJfdCkgKDEpIH0gfSwKICAgICB7ICJ0
ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbiIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbiksIChpbnRwdHJf
dCkgKDApIH0gfSwKICAgICB7ICJ0ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJn
dW1lbnQiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VG
dW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50KSwgKGludHB0cl90KSAoMCkgfSB9LAorICAg
IHsgImVudHJpZXMiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW50cmll
cyksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJrZXlzIiwgSlNDOjpGdW5jdGlvbiwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbktleXMpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAidmFs
dWVzIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhbHVlcyksIChpbnRw
dHJfdCkgKDApIH0gfSwKKyAgICB7ICJmb3JFYWNoIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkZvckVhY2gpLCAoaW50cHRyX3QpICgxKSB9IH0sCiAjaWYgRU5BQkxFKENv
bmRpdGlvbjEpCiAgICAgeyAiQ09ORElUSU9OQUxfQ09OU1QiLCBEb250RGVsZXRlIHwgUmVhZE9u
bHkgfCBDb25zdGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDApIH0gfSwK
ICNlbHNlCkBAIC03MTUsNiArNzI1LDcgQEAgdm9pZCBKU1Rlc3RPYmpQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSkKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdE9i
alByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7CiAgICAgSlNWTUNsaWVudERhdGEmIGNsaWVu
dERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKICAg
ICBwdXREaXJlY3Qodm0sIGNsaWVudERhdGEuYnVpbHRpbk5hbWVzKCkucHJpdmF0ZU1ldGhvZFBy
aXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KCksIDAsIFN0
cmluZygpLCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblByaXZhdGVNZXRob2QpLCBSZWFkT25s
eSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJh
dG9yU3ltYm9sLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCgpLCAwLCBBU0NJ
SUxpdGVyYWwoIltTeW1ib2wuSXRlcmF0b3JdIiksIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
U3ltYm9sSXRlcmF0b3IpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KIAogY29uc3QgQ2xhc3NJ
bmZvIEpTVGVzdE9iajo6c19pbmZvID0geyAiVGVzdE9iamVjdCIsICZCYXNlOjpzX2luZm8sICZK
U1Rlc3RPYmpUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPYmopIH07CkBAIC00ODIw
LDYgKzQ4MzEsNDAgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoT3AKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCit1c2luZyBUZXN0T2JqSXRlcmF0b3IgPSBK
U0tleVZhbHVlSXRlcmF0b3I8SlNUZXN0T2JqPjsKK3VzaW5nIFRlc3RPYmpJdGVyYXRvclByb3Rv
dHlwZSA9IEpTS2V5VmFsdWVJdGVyYXRvclByb3RvdHlwZTxKU1Rlc3RPYmo+OworCit0ZW1wbGF0
ZTw+Citjb25zdCBKU0M6OkNsYXNzSW5mbyBUZXN0T2JqSXRlcmF0b3I6OnNfaW5mbyA9IHsgIlRl
c3RPYmplY3QgSXRlcmF0b3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KFRlc3RPYmpJdGVyYXRvcikgfTsKKwordGVtcGxhdGU8PgorY29uc3QgSlNDOjpDbGFzc0luZm8g
VGVzdE9iakl0ZXJhdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0T2JqZWN0IEl0ZXJhdG9y
IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShUZXN0T2JqSXRlcmF0b3JQ
cm90b3R5cGUpIH07CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblN5bWJvbEl0ZXJhdG9yKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkK
K3sKKyAgICByZXR1cm4gY3JlYXRlS2V5VmFsdWVJdGVyYXRvcjxKU1Rlc3RPYmo+KCpzdGF0ZSwg
SXRlcmF0aW9uS2luZDo6S2V5VmFsdWUsICJbU3ltYm9sLkl0ZXJhdG9yXSIpOworfQorCitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25F
bnRyaWVzKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gY3JlYXRlS2V5VmFs
dWVJdGVyYXRvcjxKU1Rlc3RPYmo+KCpzdGF0ZSwgSXRlcmF0aW9uS2luZDo6S2V5VmFsdWUsICJl
bnRyaWVzIik7Cit9CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbktleXMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIHJl
dHVybiBjcmVhdGVLZXlWYWx1ZUl0ZXJhdG9yPEpTVGVzdE9iaj4oKnN0YXRlLCBJdGVyYXRpb25L
aW5kOjpLZXksICJrZXlzIik7Cit9CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhbHVlcyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUp
Cit7CisgICAgcmV0dXJuIGNyZWF0ZUtleVZhbHVlSXRlcmF0b3I8SlNUZXN0T2JqPigqc3RhdGUs
IEl0ZXJhdGlvbktpbmQ6OlZhbHVlLCAidmFsdWVzIik7Cit9CisKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkZvckVhY2goSlNDOjpF
eGVjU3RhdGUqIHN0YXRlKQoreworICAgIHJldHVybiBrZXlWYWx1ZUl0ZXJhdG9yRm9yRWFjaDxK
U1Rlc3RPYmo+KCpzdGF0ZSwgImZvckVhY2giKTsKK30KKwogdm9pZCBKU1Rlc3RPYmo6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBhdXRv
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE9iaio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCmluZGV4IDczNGYy
MzZiZmZmNTM4YzQxMjVmNWYzMWI2NjNkNTg0MjliYjY4NTIuLjkxNzkyNDk0YjNhY2U5ZmU3N2Vk
MjQyYzc0ZTFmYjNlYmEyZjAzNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKQEAgLTQ1LDYgKzQ1LDkgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKKyAgICB1c2luZyBJdGVyYXRvcktl
eSA9IFN0cmluZzsKKyAgICB1c2luZyBJdGVyYXRvclZhbHVlID0gVGVzdE9iaio7CisKICAgICBE
RUNMQVJFX0lORk87CiAKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RPYmouaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RPYmouaWRsCmluZGV4IGUxMGI0ZTRkZmJjYzFhNWIxNjcyNzFmZTU4NmMyN2I1NWI0
N2U2OGEuLmI2YTk5OTAxZTM4YjhlNGEzZmE3NThiMzBlZGZiMDA4Yzg2MmI3NWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKQEAgLTgx
LDYgKzgxLDggQEAgZW51bSBfb3B0aW9uYWwgeyAiIiwgIk9wdGlvbmFsVmFsdWUxIiwgIk9wdGlv
bmFsVmFsdWUyIiwgIk9wdGlvbmFsVmFsdWUzIiB9OwogICAgIC8vIFR5cGVkQXJyYXkgYXR0cmli
dXRlCiAgICAgYXR0cmlidXRlIEZsb2F0MzJBcnJheSB0eXBlZEFycmF5QXR0cjsKIAorICAgIGl0
ZXJhYmxlPERPTVN0cmluZywgVGVzdE9iaj47CisKICAgICAvLyBNZXRob2RzCiAgICAgdm9pZCAg
ICB2b2lkTWV0aG9kKCk7CiAgICAgdm9pZCAgICB2b2lkTWV0aG9kV2l0aEFyZ3MobG9uZyBsb25n
QXJnLCBET01TdHJpbmcgc3RyQXJnLCBUZXN0T2JqIG9iakFyZyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRG
YWNlU2V0LmNwcAppbmRleCAxYjcxNDQxNGVmNGNlOTM1YWY2ZTBhNzhlZjA0NDcwNTQ2OTkwY2Zh
Li4zZjhiZDQ1M2M4Y2Y4NTE3YmU0MjA1YzljYjNkYjMwOGNkMzM2MjRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Gb250RmFjZVNldC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgRm9udEZhY2VTZXQ6Okl0ZXJhdG9y
OjpJdGVyYXRvcihGb250RmFjZVNldCYgc2V0KQogewogfQogCi1ib29sIEZvbnRGYWNlU2V0OjpJ
dGVyYXRvcjo6bmV4dChSZWZQdHI8Rm9udEZhY2U+JiBrZXksIFJlZlB0cjxGb250RmFjZT4mIHZh
bHVlKQorYm9vbCBGb250RmFjZVNldDo6SXRlcmF0b3I6Om5leHQoRm9udEZhY2UqJiBrZXksIEZv
bnRGYWNlKiYgdmFsdWUpCiB7CiAgICAgaWYgKG1faW5kZXggPT0gbV90YXJnZXQtPnNpemUoKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dEZhY2VTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5oCmluZGV4IDAwMmIz
MDg2YWM1NDhhNGRmMWU3ZjM2NmI3YzE1NjQ0ZmMxOWYxNTkuLmFhOWRkYjgxMWM0ZTgzYjA4MmZj
MmZkNmVmZDkxN2EwMWVjNzdlNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250
RmFjZVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5oCkBAIC03Miwx
MSArNzIsNyBAQCBwdWJsaWM6CiAgICAgY2xhc3MgSXRlcmF0b3IgewogICAgIHB1YmxpYzoKICAg
ICAgICAgZXhwbGljaXQgSXRlcmF0b3IoRm9udEZhY2VTZXQmKTsKLQotICAgICAgICB1c2luZyBL
ZXkgPSBSZWZQdHI8Rm9udEZhY2U+OwotICAgICAgICB1c2luZyBWYWx1ZSA9IFJlZlB0cjxGb250
RmFjZT47Ci0KLSAgICAgICAgYm9vbCBuZXh0KEtleSYgbmV4dEtleSwgVmFsdWUmIG5leHRWYWx1
ZSk7CisgICAgICAgIGJvb2wgbmV4dChGb250RmFjZSomIG5leHRLZXksIEZvbnRGYWNlKiYgbmV4
dFZhbHVlKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZjxGb250RmFjZVNldD4gbV90YXJn
ZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaWRsIGIvU291
cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmlkbAppbmRleCA0ZmY2ODVkY2FjZDliNTJlYzI3
MzU1ZTBkZGIzNTFkZjNlNTZmZTc4Li5kZTc0OTJkOGQxYjc1NmM0MDlkYjEyM2E1ZWFiZjM0YjJi
ZmU2NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5pZGwKQEAgLTMyLDEyICszMiwxMiBA
QCBlbnVtIEZvbnRGYWNlU2V0TG9hZFN0YXR1cyB7CiAgICAgQ29uc3RydWN0b3JDYWxsV2l0aD1T
Y3JpcHRTdGF0ZSZEb2N1bWVudCwKICAgICBDb25zdHJ1Y3RvcihzZXF1ZW5jZTxGb250RmFjZT4g
aW5pdGlhbEZhY2VzKQogXSBpbnRlcmZhY2UgRm9udEZhY2VTZXQgOiBFdmVudFRhcmdldCB7Ci0g
ICAgW0N1c3RvbV0gT2JqZWN0IGVudHJpZXMoKTsKLSAgICAvLyBmb3JFYWNoKCk6IE1heWJlIGlt
cGxlbWVudCB0aGlzIGluIEphdmFzY3JpcHQgb24gdG9wIG9mIGtleXMoKS4KICAgICBib29sZWFu
IGhhcyhGb250RmFjZSBmb250KTsKLSAgICBbQ3VzdG9tXSBPYmplY3Qga2V5cygpOwotICAgIFtD
dXN0b21dIE9iamVjdCB2YWx1ZXMoKTsKLSAgICAvLyBAaXRlcmF0b3IKKworICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgYWRkIHN1cHBvcnQgZm9yIHRoZSBzZXRsaWtlIGRlY2xhcmF0aW9uLgorICAg
IC8vIEFzIGEgZmlyc3Qgc3RlcCB0aGlzIG1hcCBpdGVyYWJsZSBkZWNsYXJhdGlvbiBzaG91bGQg
YmUgY2hhbmdlZCB0byBhIHNldCBpdGVyYWJsZS4KKyAgICBpdGVyYWJsZTxGb250RmFjZSwgRm9u
dEZhY2U+OworCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgc2l6ZTsKIAogICAgIEZvbnRG
YWNlU2V0IGFkZChGb250RmFjZSBmb250KTsKQEAgLTUzLDQgKzUzLDQgQEAgZW51bSBGb250RmFj
ZVNldExvYWRTdGF0dXMgewogCiAgICAgW0N1c3RvbV0gcmVhZG9ubHkgYXR0cmlidXRlIFByb21p
c2UgcmVhZHk7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEZvbnRGYWNlU2V0TG9hZFN0YXR1cyBz
dGF0dXM7Ci19OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK307CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZwppbmRleCBjZWRkOTM4OGRiMTY0ZjJhZWFlZTkxMjg4MzNkNWNiOGQwZjVk
MTdmLi4zYTAwMzgyMjNkNTJhZmM1NTliMjFkYjY0YTIxOTA2ODQyNzg4ZThiIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0wMi0xOCAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIEJpbmRpbmcg
Z2VuZXJhdG9yIHNob3VsZCBzdXBwb3J0IGtleSB2YWx1ZSBpdGVyYWJsZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0NDEzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
ZmV0Y2gvYXBpL2hlYWRlcnMvaGVhZGVycy1iYXNpYy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9oZWFkZXJzL2hlYWRlcnMtYmFzaWMuaHRtbDoK
KwogMjAxNi0wMi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IFJlZ3Jlc3Npb24ocjE5NjY0OCk6IGh0dHA6Ly93M2MtdGVzdC5vcmcvaHRtbC9kb20vaW50ZXJm
YWNlcy5odG1sIHJlZGlyZWN0cyBhdCB0aGUgZW5kIG9mIHRoZSB0ZXN0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9oZWFk
ZXJzL2hlYWRlcnMtYmFzaWMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvaGVhZGVycy9oZWFkZXJzLWJhc2ljLWV4cGVj
dGVkLnR4dAppbmRleCA2ZGI2OWNlODYwNTViNTA0ODlmZTQ3MjAwZjU0MTBjNmFhMmIxODM3Li5l
Mjk3MTE2ZGJhNDA2MzljZDllZTAwZjUwNzU2OTZjZTMwYTNkY2I1IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9oZWFkZXJz
L2hlYWRlcnMtYmFzaWMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2hlYWRlcnMvaGVhZGVycy1iYXNpYy1leHBl
Y3RlZC50eHQKQEAgLTE1LDQgKzE1LDYgQEAgUEFTUyBDaGVjayBnZXQgbWV0aG9kCiBQQVNTIENo
ZWNrIGtleXMgbWV0aG9kIAogUEFTUyBDaGVjayB2YWx1ZXMgbWV0aG9kIAogUEFTUyBDaGVjayBl
bnRyaWVzIG1ldGhvZCAKK1BBU1MgQ2hlY2sgU3ltYm9sLml0ZXJhdG9yIG1ldGhvZCAKK1BBU1Mg
Q2hlY2sgZm9yRWFjaCBtZXRob2QgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2hlYWRlcnMvaGVhZGVycy1iYXNpYy5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9h
cGkvaGVhZGVycy9oZWFkZXJzLWJhc2ljLmh0bWwKaW5kZXggNTFhYzg5YzdiM2NiMDJmZjAzMGIz
YTIxMDMxNTA3MjE4OGVkZmRlNy4uZGRiYjlhNzRiN2QzOTAxMWJjNzViYzgzN2Y5ODM0NzQyNzRl
M2EyMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9mZXRjaC9hcGkvaGVhZGVycy9oZWFkZXJzLWJhc2ljLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvaGVhZGVycy9oZWFk
ZXJzLWJhc2ljLmh0bWwKQEAgLTE2Myw2ICsxNjMsMzMgQEAKICAgICAgICAgYXNzZXJ0X3RydWUo
YWN0dWFsLm5leHQoKS5kb25lKTsKICAgICAgICAgYXNzZXJ0X3RydWUoYWN0dWFsLm5leHQoKS5k
b25lKTsKICAgICAgIH0sICJDaGVjayBlbnRyaWVzIG1ldGhvZCIpOworCisgICAgICB0ZXN0KGZ1
bmN0aW9uKCkgeworICAgICAgICB2YXIgaGVhZGVycyA9IG5ldyBIZWFkZXJzKGhlYWRlckVudHJp
ZXNEaWN0KTsKKyAgICAgICAgdmFyIGFjdHVhbCA9IGhlYWRlcnNbU3ltYm9sLml0ZXJhdG9yXSgp
OworCisgICAgICAgIHNvcnRlZEhlYWRlcktleXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHsKKyAg
ICAgICAgICAgIGVudHJ5ID0gYWN0dWFsLm5leHQoKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxz
ZShlbnRyeS5kb25lKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZW50cnkudmFsdWVbMF0s
IGtleSk7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGVudHJ5LnZhbHVlWzFdLCBzb3J0ZWRI
ZWFkZXJEaWN0W2tleV0pOworICAgICAgICB9KTsKKyAgICAgICAgYXNzZXJ0X3RydWUoYWN0dWFs
Lm5leHQoKS5kb25lKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoYWN0dWFsLm5leHQoKS5kb25lKTsK
KyAgICAgIH0sICJDaGVjayBTeW1ib2wuaXRlcmF0b3IgbWV0aG9kIik7CisKKyAgICAgIHRlc3Qo
ZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBoZWFkZXJzID0gbmV3IEhlYWRlcnMoaGVhZGVyRW50
cmllc0RpY3QpOworICAgICAgICB2YXIgcmVmZXJlbmNlID0gc29ydGVkSGVhZGVyS2V5c1tTeW1i
b2wuaXRlcmF0b3JdKCk7CisgICAgICAgIGhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwg
a2V5LCBjb250YWluZXIpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoaGVhZGVycywgY29u
dGFpbmVyKTsKKyAgICAgICAgICAgIGVudHJ5ID0gcmVmZXJlbmNlLm5leHQoKTsKKyAgICAgICAg
ICAgIGFzc2VydF9mYWxzZShlbnRyeS5kb25lKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
a2V5LCBlbnRyeS52YWx1ZSk7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCBzb3J0
ZWRIZWFkZXJEaWN0W2VudHJ5LnZhbHVlXSk7CisgICAgICAgIH0pOworICAgICAgICBhc3NlcnRf
dHJ1ZShyZWZlcmVuY2UubmV4dCgpLmRvbmUpOworICAgICAgfSwgIkNoZWNrIGZvckVhY2ggbWV0
aG9kIik7CiAgICA8L3NjcmlwdD4KICAgPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvaGVhZGVy
cy9oZWFkZXJzLWVycm9ycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9oZWFkZXJzL2hlYWRlcnMtZXJyb3JzLWV4cGVj
dGVkLnR4dAppbmRleCA2ZjNjNTNhNzZiMzc4MjBkYzRiYWNhNGY5YTYxMzhhZTMxMjM4MWY1Li5l
ZjA5NGMwMjExMmQ2MzkyYjA2ZGVhZGY0ZmU3NGI4NjM5YWRkN2YyIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9oZWFkZXJz
L2hlYWRlcnMtZXJyb3JzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9oZWFkZXJzL2hlYWRlcnMtZXJyb3JzLWV4
cGVjdGVkLnR4dApAQCAtMTUsNCArMTUsNiBAQCBQQVNTIENoZWNrIGhlYWRlcnMgc2V0IHdpdGgg
YW4gaW52YWxpZCB2YWx1ZSBpbnZhbGlkxIAKIFBBU1MgQ2hlY2sgaGVhZGVycyBhcHBlbmQgd2l0
aCBhbiBpbnZhbGlkIG5hbWUgaW52YWxpZMSAIAogUEFTUyBDaGVjayBoZWFkZXJzIGFwcGVuZCB3
aXRoIGFuIGludmFsaWQgbmFtZSBbb2JqZWN0IE9iamVjdF0gCiBQQVNTIENoZWNrIGhlYWRlcnMg
YXBwZW5kIHdpdGggYW4gaW52YWxpZCB2YWx1ZSBpbnZhbGlkxIAgCitQQVNTIEhlYWRlcnMgZm9y
RWFjaCB0aHJvd3MgaWYgYXJndW1lbnQgaXMgbm90IGNhbGxhYmxlIAorUEFTUyBIZWFkZXJzIGZv
ckVhY2ggbG9vcCBzaG91bGQgc3RvcCBpZiBjYWxsYmFjayBpcyB0aHJvd2luZyBleGNlcHRpb24g
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvZmV0Y2gvYXBpL2hlYWRlcnMvaGVhZGVycy1lcnJvcnMuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2hlYWRlcnMvaGVhZGVycy1l
cnJvcnMuaHRtbAppbmRleCA1ZjVlZWYyM2FkMmZlYjI4ZjZlN2Q3YTM4MzVjNTdlMTRhODg4MWFl
Li4xOTRmZjMyZjE1NTlmMmRkOWI1OTAzZWIzNzM4YzE3YzA2MWM3MTcyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9oZWFk
ZXJzL2hlYWRlcnMtZXJyb3JzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvaGVhZGVycy9oZWFkZXJzLWVycm9ycy5odG1sCkBA
IC03OCw2ICs3OCwzMCBAQAogICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigp
ICwgZnVuY3Rpb24oKSB7IGhlYWRlcnMuYXBwZW5kKCJuYW1lIiwgdmFsdWUpOyB9KTsKICAgICAg
ICAgfSwgIkNoZWNrIGhlYWRlcnMgYXBwZW5kIHdpdGggYW4gaW52YWxpZCB2YWx1ZSAiICsgdmFs
dWUpOwogICAgICAgfSk7Ci0gICAgPC9zY3JpcHQ+CisKKyAgICAgIHRlc3QoZnVuY3Rpb24oKSB7
CisgICAgICAgIHZhciBoZWFkZXJzID0gbmV3IEhlYWRlcnMoW1sibmFtZSIsICJ2YWx1ZSJdXSk7
CisgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpICwgZnVuY3Rpb24oKSB7IGhl
YWRlcnMuZm9yRWFjaCgpOyB9KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9y
KCkgLCBmdW5jdGlvbigpIHsgaGVhZGVycy5mb3JFYWNoKHVuZGVmaW5lZCk7IH0pOworICAgICAg
ICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSAsIGZ1bmN0aW9uKCkgeyBoZWFkZXJzLmZv
ckVhY2goMSk7IH0pOworICAgICAgfSwgIkhlYWRlcnMgZm9yRWFjaCB0aHJvd3MgaWYgYXJndW1l
bnQgaXMgbm90IGNhbGxhYmxlIik7CisKKyAgICAgIHRlc3QoZnVuY3Rpb24oKSB7CisgICAgICAg
IHZhciBoZWFkZXJzID0gbmV3IEhlYWRlcnMoW1sibmFtZTEiLCAidmFsdWUxIl0sIFsibmFtZTIi
LCAidmFsdWUyIl0sIFsibmFtZTMiLCAidmFsdWUzIl1dKTsKKyAgICAgICAgdmFyIGNvdW50ZXIg
PSAwOworICAgICAgICB0cnkgeworICAgICAgICAgICAgaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9u
KHZhbHVlLCBuYW1lKSB7CisgICAgICAgICAgICAgICAgY291bnRlcisrOworICAgICAgICAgICAg
ICAgIGlmIChuYW1lID09ICJuYW1lMiIpCisgICAgICAgICAgICAgICAgICAgICB0aHJvdyAiZXJy
b3IiOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMoY291bnRlciwgMik7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGUs
ICJlcnJvciIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGFzc2Vy
dF91bnJlYWNoZWQoKTsKKyAgICAgIH0sICJIZWFkZXJzIGZvckVhY2ggbG9vcCBzaG91bGQgc3Rv
cCBpZiBjYWxsYmFjayBpcyB0aHJvd2luZyBleGNlcHRpb24iKTsKKyAgIDwvc2NyaXB0PgogICA8
L2JvZHk+CiA8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271909</attachid>
            <date>2016-02-21 23:30:42 -0800</date>
            <delta_ts>2016-02-22 00:31:12 -0800</delta_ts>
            <desc>Patch for landing - Fixing callback throwing exception</desc>
            <filename>bug-154413-20160222083020.patch</filename>
            <type>text/plain</type>
            <size>48289</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2NzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODBiNWUyMzNkNzM3YmI4
NTcxMWIyZDRhNGMyY2EwMTg4YzFjODM2Mi4uNjRmMjkxNjM3ZTA1ZGNiNTljZDgzOThlYmM5YzVi
ZjUyZjQ4YjhkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE2LTAyLTE4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgQmluZGlu
ZyBnZW5lcmF0b3Igc2hvdWxkIHN1cHBvcnQga2V5IHZhbHVlIGl0ZXJhYmxlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ0MTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBDb3ZlcmVkIGJ5IGFkZGVkIGxheW91
dCBhbmQgYmluZGluZyB0ZXN0cy4KKworICAgICAgICBpdGVyYWJsZTxrZXksIHZhbHVlPiBpbiBh
IElETCBmaWxlIHdpbGwgdHJpZ2dlciB0aGUgZ2VuZXJhdGlvbiBvZiBlbnRyaWVzLCBrZXlzLCB2
YWx1ZXMsIFtTeW1ib2wuaXRlcmF0b3JdIGFuZCBmb3JFYWNoIG1ldGhvZHMgdG8gdGhlIHByb3Rv
dHlwZS4KKyAgICAgICAgVXBkYXRlZCBGZXRjaEhlYWRlcnMgYW5kIEZvbnRGYWNlU2V0IHRvIHVz
ZSBpdC4KKworICAgICAgICBJRExQYXJzZXIucG0gcGFyc2VzIHRoZSBpdGVyYWJsZTw+IGFuZCBh
ZGRzIGFuIGl0ZXJhYmxlIGZpZWxkIGluIHRoZSBpbnRlcmZhY2UgY29udGFpbmluZyB0aGUgaXRl
cmFibGUgaW5mb3JtYXRpb24gYW5kIG9iamVjdHMgZm9yIHRoZSBmaXZlIG9wZXJhdGlvbnMuCisg
ICAgICAgIElETFBhcnNlci5wbSBpcyBjbGVhbmVkIHVwIGEgYml0IHRvIHJlbW92ZSBwcmV2aW91
cyBJdGVyYXRvciBzdXBwb3J0LCB3aGljaCBkb2VzIG5vdCBzZWVtIHRvIGJlIHN1cHBvcnRlZC4K
KworICAgICAgICBDb2RlR2VuZXJhdG9ySlMucG0gaXMgdXBkYXRlZCB0byBnZW5lcmF0ZSB0aGUg
Y29kZSBmb3IgdGhlIGZpdmUgb3BlcmF0aW9ucywgdXNpbmcgSlNLZXlWYWx1ZUl0ZXJhdG9yLiBT
ZXQgaXRlcmF0b3JzIGFyZSBub3QgeWV0IHN1cHBvcnRlZC4KKyAgICAgICAgTW92ZWQgZGVmaW5p
dGlvbiBvZiBJdGVyYXRvciBLZXkgYW5kIFZhbHVlIFR5cGUgdG8gYmluZGluZyBnZW5lcmF0ZWQg
SlNYWCBjbGFzcyBiYXNlZCBvbiBpdGVyYWJsZTw+IGRlY2xhcmF0aW9uIGluIHRoZSBJREwuCisK
KyAgICAgICAgQWRkZWQgYmluZGluZyB0ZXN0IGFuZCBGZXRjaCBIZWFkZXJzIHRlc3RzLgorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEhl
YWRlcnMuaWRsOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRmV0Y2hIZWFkZXJzQ3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0ZvbnRGYWNlU2V0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTRm9udEZhY2VTZXQ6OnJlYWR5KTogUmVtb3ZlZCBpdGVyYWJsZSBjdXN0b20gbWV0aG9kcy4K
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0tleVZhbHVlSXRlcmF0b3IuaDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUtleVZhbHVlSXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6a2V5VmFs
dWVJdGVyYXRvckZvckVhY2gpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtOgorICAgICAgICAoR2V0RnVuY3Rpb25OYW1lKToKKyAgICAgICAgKFByb3RvdHlw
ZUZ1bmN0aW9uQ291bnQpOgorICAgICAgICAoUHJvdG90eXBlUHJvcGVydHlDb3VudCk6CisgICAg
ICAgIChHZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFibGUpOgorICAgICAgICAoR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxs
KToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb25JdGVyYWJsZUZ1bmN0aW9ucyk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06CisgICAgICAgIChwYXJzZU9w
ZXJhdGlvbk9ySXRlcmF0b3IpOgorICAgICAgICAocGFyc2VPcGVyYXRpb25Pckl0ZXJhdG9yUmVz
dCk6CisgICAgICAgIChwYXJzZUl0ZXJhYmxlUmVzdCk6CisgICAgICAgIChwYXJzZU9wdGlvbmFs
SXRlcmFibGVJbnRlcmZhY2UpOgorICAgICAgICAoYXBwbHlNZW1iZXJMaXN0KToKKyAgICAgICAg
KHBhcnNlU3BlY2lhbCk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmpQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uU3ltYm9sSXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25FbnRyaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uS2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkZvckVhY2gpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbDoK
KyAgICAgICAgKiBjc3MvRm9udEZhY2VTZXQuaWRsOgorCiAyMDE2LTAyLTE3ICBNeWxlcyBDLiBN
YXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0ZvbnQgTG9hZGluZ10g
SW1wbGVtZW50IEZvbnRGYWNlU2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDEwMGFiNGQwOTJk
NThhY2QwNTYwMTQ5MzZhMGY0YjRiMDYzMjQzZWEuLmNiMTNlMDNkYjdlNWU2ZjI1NTQ5MTMwOGY4
MDBkOTRiZmVhZTExNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMTYwLDcgKzExNjAsNiBA
QCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNw
cAogICAgIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwCiAgICAgYmluZGluZ3Mv
anMvSlNFeGNlcHRpb25CYXNlLmNwcAotICAgIGJpbmRpbmdzL2pzL0pTRmV0Y2hIZWFkZXJzQ3Vz
dG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRmlsZVJlYWRlckN1c3RvbS5jcHAKICAgICBiaW5k
aW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTSFRNTEFs
bENvbGxlY3Rpb25DdXN0b20uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoSGVhZGVycy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEhlYWRlcnMuaAppbmRleCBmMzU4MWQzMjRiZTg2OTU1NWI0NTY5OTI1ZjQwNzg0YmQyZmViNzY2
Li41N2ZmNzNmZjc2MmNlODhkMDBiM2JmNjUyNzIyOTY3MmEzNWU5OWNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmgKQEAgLTY1LDExICs2NSw2IEBAIHB1
YmxpYzoKICAgICBjbGFzcyBJdGVyYXRvciB7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNp
dCBJdGVyYXRvcihGZXRjaEhlYWRlcnMmKTsKLQotICAgICAgICAvLyBGSVhNRTogQmluZGluZyBn
ZW5lcmF0b3Igc2hvdWxkIGJlIGFibGUgdG8gZ2VuZXJhdGUgaXRlcmF0b3Iga2V5IGFuZCB2YWx1
ZSB0eXBlcy4KLSAgICAgICAgdXNpbmcgS2V5ID0gU3RyaW5nOwotICAgICAgICB1c2luZyBWYWx1
ZSA9IFN0cmluZzsKLQogICAgICAgICBib29sIG5leHQoU3RyaW5nJiBuZXh0S2V5LCBTdHJpbmcm
IG5leHRWYWx1ZSk7CiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEhlYWRlcnMuaWRsCmluZGV4IGY2MzMzOTc1OThlMTBkYTlmYjhmM2RkYzZmZmZh
NzA3OWEyMGVmYzYuLmYyMzdhNzg0YzdhNTFkMGRkZGExZGUxMDVmM2M3MzQ1YmY4YTcwNGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5pZGwKQEAgLTQw
LDExICs0MCw3IEBAIGludGVyZmFjZSBGZXRjaEhlYWRlcnMgewogICAgIFtSYWlzZXNFeGNlcHRp
b25dIGJvb2xlYW4gaGFzKERPTVN0cmluZyBuYW1lKTsKICAgICBbUmFpc2VzRXhjZXB0aW9uXSB2
b2lkIHNldChET01TdHJpbmcgbmFtZSwgRE9NU3RyaW5nIHZhbHVlKTsKIAotICAgIC8vIEZJWE1F
OiBTdXBwb3J0IGl0ZXJhYmxlIHdpdGhpbiBiaW5kaW5nIGdlbmVyYXRvci4KLSAgICAvL2l0ZXJh
YmxlPERPTVN0cmluZywgRE9NU3RyaW5nPjsKLSAgICBbQ3VzdG9tXSBhbnkgZW50cmllcygpOwot
ICAgIFtDdXN0b21dIGFueSBrZXlzKCk7Ci0gICAgW0N1c3RvbV0gYW55IHZhbHVlcygpOworICAg
IGl0ZXJhYmxlPERPTVN0cmluZywgRE9NU3RyaW5nPjsKIAogICAgIFtQcml2YXRlLCBSYWlzZXNF
eGNlcHRpb24sIEltcGxlbWVudGVkQXM9YXBwZW5kXSB2b2lkIGFwcGVuZEZyb21KUyhET01TdHJp
bmcgbmFtZSwgRE9NU3RyaW5nIHZhbHVlKTsKICAgICBbUHJpdmF0ZSwgUmFpc2VzRXhjZXB0aW9u
XSB2b2lkIGluaXRpYWxpemVXaXRoKEZldGNoSGVhZGVycyBoZWFkZXJzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5ZGZkNzgx
NDdkMWYwODU0Y2ZlYzdkNzQzYzM4YWJiMGRjNjYwMzU2Li5lMGE5Mjc2OGM5ZDQxNTE4YjI3YTg3
N2ExMzFhOGFkYzhhMWYzNjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTQ5LDcgKzE1NDksNiBAQAogCQk0MUQwMTVDQjBG
NEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMDE1QzkwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRl
bnRUeXBlLmNwcCAqLzsgfTsKIAkJNDFFMUIxRDAwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0
V29ya2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxRTFCMUNBMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5jcHAgKi87IH07CiAJ
CTQxRTFCMUQxMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMUIxQ0IwRkY1OTg2OTAwNTc2
QjNCIC8qIEFic3RyYWN0V29ya2VyLmggKi87IH07Ci0JCTQxRTkxMEE3MUM2MEZENkMwMDdBNDUz
RiAvKiBKU0ZldGNoSGVhZGVyc0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUU5MTBBNjFDNjBGRDZDMDA3QTQ1M0YgLyogSlNGZXRjaEhl
YWRlcnNDdXN0b20uY3BwICovOyB9OwogCQk0MUYwNjIxNDBGNUYxOTI2MDBBMDdFQUMgLyogSW5z
cGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDFGMDYyMTIwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFi
YXNlUmVzb3VyY2UuaCAqLzsgfTsKIAkJNDFGMDYyMTUwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3Bl
Y3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDFGMDYyMTMwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFi
YXNlUmVzb3VyY2UuY3BwICovOyB9OwogCQk0MUYwNjZFNDBGNjRCQ0Y2MDBBMDdFQUMgLyogU2Ny
aXB0R2xvYmFsT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUYwNjZFMjBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0R2xvYmFsT2JqZWN0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTkwMjEs
NyArOTAyMCw2IEBACiAJCTQxRTFCMUNBMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBYnN0cmFjdFdvcmtl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRTFCMUNCMEZGNTk4NjkwMDU3
NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBYnN0cmFjdFdvcmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUUxQjFD
QzBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEFic3RyYWN0V29ya2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NDFFOTEwQTYxQzYwRkQ2QzAwN0E0NTNGIC8qIEpTRmV0Y2hIZWFkZXJzQ3VzdG9tLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmV0Y2hIZWFkZXJzQ3VzdG9tLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGMDYyMTIwRjVGMTkyNjAwQTA3RUFD
IC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MUYwNjIxMzBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VS
ZXNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0
b3JEYXRhYmFzZVJlc291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFG
MDY2RTIwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdEdsb2JhbE9iamVjdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRHbG9iYWxPYmplY3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTIyNDA0LDcgKzIyNDAyLDYgQEAKIAkJCQlCQzJFRDU1NDBDNkI5
QkQzMDA5MjBCRkYgLyogSlNFbGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlBREVDNzhGNzE4RUU1
MzA4MDAxMzE1QzIgLyogSlNFbGVtZW50Q3VzdG9tLmggKi8sCiAJCQkJQkNFRkFGNEQwQzMxN0U2
OTAwRkE4MUY2IC8qIEpTRXZlbnRDdXN0b20uY3BwICovLAotCQkJCTQxRTkxMEE2MUM2MEZENkMw
MDdBNDUzRiAvKiBKU0ZldGNoSGVhZGVyc0N1c3RvbS5jcHAgKi8sCiAJCQkJMkU3NTgyRUQxMjc2
NEYyNjAwNjI2MjhCIC8qIEpTRmlsZVJlYWRlckN1c3RvbS5jcHAgKi8sCiAJCQkJRkU4MEQ3QTYw
RTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb25DdXN0b20uY3BwICovLAogCQkJCUJDRTdC
MTkyMEQ0RTg2OTYwMDc1QTUzOSAvKiBKU0hpc3RvcnlDdXN0b20uY3BwICovLApAQCAtMjk1NTcs
NyArMjk1NTQsNiBAQAogCQkJCTk3QjM4RTI4MTUxQzQyNzMwMDQ2MjJFOSAvKiBET01XaW5kb3dO
b3RpZmljYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3RDJBRDAzMTRCODIzQTYwMDkz
REYzMiAvKiBET01XaW5kb3dQcm9wZXJ0eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBQTJBNUFE
NzE2QTQ4NjFBMDA5NzVBMjUgLyogRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCTQxRTkxMEE3MUM2MEZENkMwMDdBNDUzRiAvKiBKU0ZldGNoSGVhZGVyc0N1
c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOENDQkI0ODE1MUY4MzE2MDBBQjdDRTkgLyog
RE9NV2luZG93V2ViRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1M0RBNDgxMTQz
MTM0RDAwMEQ4MTdFIC8qIERPTVdyYXBwZXJXb3JsZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
QTFEMTM4MTBBNTMyNTUyMDA2NEJGNUYgLyogRE9NWFBhdGgubW0gaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCmlu
ZGV4IDdlMjNmMDU4YjRiMDQyNzdmOTFkZjEzMzNiNjFlMTM1NWRjZTA5MGYuLmRkNDc5MDFjZDU5
N2IwMzVkOWY2YjUxZDVjOGIwMjM2NGU1ZGIyZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcApAQCAtNzcsNyArNzcsNiBAQAogI2lu
Y2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5jcHAiCiAjaW5jbHVkZSAiSlNFdmVudFRhcmdldEN1c3Rv
bS5jcHAiCiAjaW5jbHVkZSAiSlNFeGNlcHRpb25CYXNlLmNwcCIKLSNpbmNsdWRlICJKU0ZldGNo
SGVhZGVyc0N1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNGaWxlUmVhZGVyQ3VzdG9tLmNwcCIKICNp
bmNsdWRlICJKU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0hUTUxBbGxDb2xs
ZWN0aW9uQ3VzdG9tLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRmV0Y2hIZWFkZXJzQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RmV0Y2hIZWFkZXJzQ3VzdG9tLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjU4
MmNiZmY4NThlYmM0ZjIyMGEzZWJmYzkyNzVkMTQyYjE5ZDQ3Ni4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0ZldGNoSGVhZGVyc0N1c3RvbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE2IENhbm9uIEluYy4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBDYW5vbiBJbmMuIG5vciB0
aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIkpTRmV0Y2hIZWFkZXJzLmgiCi0KLSNpZiBFTkFCTEUoRkVUQ0hfQVBJ
KQotCi0jaW5jbHVkZSAiSlNLZXlWYWx1ZUl0ZXJhdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotLy8gRklYTUU6IE1vdmUgdGhpcyBjb2RlIHRvIEpTRmV0Y2hIZWFkZXJzLgotdXNpbmcg
RmV0Y2hIZWFkZXJzSXRlcmF0b3IgPSBKU0tleVZhbHVlSXRlcmF0b3I8SlNGZXRjaEhlYWRlcnM+
OwotdXNpbmcgRmV0Y2hIZWFkZXJzSXRlcmF0b3JQcm90b3R5cGUgPSBKU0tleVZhbHVlSXRlcmF0
b3JQcm90b3R5cGU8SlNGZXRjaEhlYWRlcnM+OwotCi10ZW1wbGF0ZTw+Ci1jb25zdCBKU0M6OkNs
YXNzSW5mbyBGZXRjaEhlYWRlcnNJdGVyYXRvcjo6c19pbmZvID0geyAiSGVhZGVycyBJdGVyYXRv
ciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRmV0Y2hIZWFkZXJzSXRl
cmF0b3IpIH07Ci0KLXRlbXBsYXRlPD4KLWNvbnN0IEpTQzo6Q2xhc3NJbmZvIEZldGNoSGVhZGVy
c0l0ZXJhdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJIZWFkZXJzIEl0ZXJhdG9yIiwgJkJhc2U6
OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShGZXRjaEhlYWRlcnNJdGVyYXRvclByb3Rv
dHlwZSkgfTsKLQotSlNDOjpKU1ZhbHVlIEpTRmV0Y2hIZWFkZXJzOjplbnRyaWVzKEpTQzo6RXhl
Y1N0YXRlJikKLXsKLSAgICByZXR1cm4gY3JlYXRlSXRlcmF0b3I8SlNGZXRjaEhlYWRlcnM+KCpn
bG9iYWxPYmplY3QoKSwgKnRoaXMsIEl0ZXJhdGlvbktpbmQ6OktleVZhbHVlKTsKLX0KLQotSlND
OjpKU1ZhbHVlIEpTRmV0Y2hIZWFkZXJzOjprZXlzKEpTQzo6RXhlY1N0YXRlJikKLXsKLSAgICBy
ZXR1cm4gY3JlYXRlSXRlcmF0b3I8SlNGZXRjaEhlYWRlcnM+KCpnbG9iYWxPYmplY3QoKSwgKnRo
aXMsIEl0ZXJhdGlvbktpbmQ6OktleSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSBKU0ZldGNoSGVhZGVy
czo6dmFsdWVzKEpTQzo6RXhlY1N0YXRlJikKLXsKLSAgICByZXR1cm4gY3JlYXRlSXRlcmF0b3I8
SlNGZXRjaEhlYWRlcnM+KCpnbG9iYWxPYmplY3QoKSwgKnRoaXMsIEl0ZXJhdGlvbktpbmQ6OlZh
bHVlKTsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRm9udEZhY2VTZXRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNGb250RmFjZVNldEN1c3RvbS5jcHAKaW5kZXggY2Q4NDk4NTZjZDk2OGNiMWQ2ZTNkZjc1
ZDY3YmQ0OGJmOTAxN2JkNi4uOWEzYWQzMGQ4NmJjZjBmNGRiOGY1YWEwMzBmM2EyOWRhOWRlMGYz
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGb250RmFjZVNldEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGb250RmFjZVNldEN1
c3RvbS5jcHAKQEAgLTMyLDM0ICszMiwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVz
aW5nIEZvbnRGYWNlU2V0SXRlcmF0b3IgPSBKU0tleVZhbHVlSXRlcmF0b3I8SlNGb250RmFjZVNl
dD47Ci11c2luZyBGb250RmFjZVNldEl0ZXJhdG9yUHJvdG90eXBlID0gSlNLZXlWYWx1ZUl0ZXJh
dG9yUHJvdG90eXBlPEpTRm9udEZhY2VTZXQ+OwotCi10ZW1wbGF0ZTw+Ci1jb25zdCBKU0M6OkNs
YXNzSW5mbyBGb250RmFjZVNldEl0ZXJhdG9yOjpzX2luZm8gPSB7ICJGb250IEZhY2UgU2V0IEl0
ZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShGb250RmFjZVNl
dEl0ZXJhdG9yKSB9OwotCi10ZW1wbGF0ZTw+Ci1jb25zdCBKU0M6OkNsYXNzSW5mbyBGb250RmFj
ZVNldEl0ZXJhdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJGb250IEZhY2UgU2V0IEl0ZXJhdG9y
IFByb3RvdHlwZSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRm9udEZh
Y2VTZXRJdGVyYXRvclByb3RvdHlwZSkgfTsKLQogSlNDOjpKU1ZhbHVlIEpTRm9udEZhY2VTZXQ6
OnJlYWR5KEpTQzo6RXhlY1N0YXRlJiBleGVjU3RhdGUpIGNvbnN0CiB7CiAgICAgYXV0byYgcHJv
bWlzZSA9IHdyYXBwZWQoKS5wcm9taXNlKGV4ZWNTdGF0ZSk7CiAgICAgcmV0dXJuIHByb21pc2Uu
ZGVmZXJyZWQoKS5wcm9taXNlKCk7CiB9CiAKLUpTQzo6SlNWYWx1ZSBKU0ZvbnRGYWNlU2V0Ojpl
bnRyaWVzKEpTQzo6RXhlY1N0YXRlJikKLXsKLSAgICByZXR1cm4gY3JlYXRlSXRlcmF0b3I8SlNG
b250RmFjZVNldD4oKmdsb2JhbE9iamVjdCgpLCAqdGhpcywgSXRlcmF0aW9uS2luZDo6S2V5VmFs
dWUpOwotfQotCi1KU0M6OkpTVmFsdWUgSlNGb250RmFjZVNldDo6a2V5cyhKU0M6OkV4ZWNTdGF0
ZSYpCi17Ci0gICAgcmV0dXJuIGNyZWF0ZUl0ZXJhdG9yPEpTRm9udEZhY2VTZXQ+KCpnbG9iYWxP
YmplY3QoKSwgKnRoaXMsIEl0ZXJhdGlvbktpbmQ6OktleSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSBK
U0ZvbnRGYWNlU2V0Ojp2YWx1ZXMoSlNDOjpFeGVjU3RhdGUmKQotewotICAgIHJldHVybiBjcmVh
dGVJdGVyYXRvcjxKU0ZvbnRGYWNlU2V0PigqZ2xvYmFsT2JqZWN0KCksICp0aGlzLCBJdGVyYXRp
b25LaW5kOjpWYWx1ZSk7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTS2V5VmFsdWVJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNLZXlWYWx1ZUl0ZXJhdG9yLmgKaW5kZXggZmJiZmZkMGM1N2JiMGFlZTA5MmJiYjNiZjQ4Y2M5
MmU4MDc5OGM5ZC4uMDY3YmI5NmI1Nzg5MTNjYjJjM2NjNWUwZWMxNWExMDJkYWZlOTFmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNLZXlWYWx1ZUl0ZXJhdG9yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNLZXlWYWx1ZUl0ZXJhdG9yLmgKQEAg
LTEwNSw5ICsxMDUsNDAgQEAgcHJpdmF0ZToKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEpTV3Jh
cHBlcj4KLUpTS2V5VmFsdWVJdGVyYXRvcjxKU1dyYXBwZXI+KiBjcmVhdGVJdGVyYXRvcihKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU1dyYXBwZXImIHdyYXBwZXIsIEl0ZXJhdGlv
bktpbmQga2luZCkKK0pTQzo6RW5jb2RlZEpTVmFsdWUgY3JlYXRlS2V5VmFsdWVJdGVyYXRvcihK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEl0ZXJhdGlvbktpbmQga2luZCwgY29uc3QgY2hhciogcHJv
cGVydHlOYW1lKQogewotICAgIHJldHVybiBKU0tleVZhbHVlSXRlcmF0b3I8SlNXcmFwcGVyPjo6
Y3JlYXRlKGdsb2JhbE9iamVjdC52bSgpLCBnZXRET01TdHJ1Y3R1cmU8SlNLZXlWYWx1ZUl0ZXJh
dG9yPEpTV3JhcHBlcj4+KGdsb2JhbE9iamVjdC52bSgpLCBnbG9iYWxPYmplY3QpLCB3cmFwcGVy
LCBraW5kKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNXcmFwcGVy
Kj4oc3RhdGUudGhpc1ZhbHVlKCkpOworICAgIGlmIChVTkxJS0VMWSghd3JhcHBlcikpCisgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsIEpTV3JhcHBlcjo6aW5mbygpLT5j
bGFzc05hbWUsIHByb3BlcnR5TmFtZSk7CisgICAgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCA9ICp3cmFwcGVyLT5nbG9iYWxPYmplY3QoKTsKKyAgICByZXR1cm4gSlNDOjpKU1ZhbHVl
OjplbmNvZGUoSlNLZXlWYWx1ZUl0ZXJhdG9yPEpTV3JhcHBlcj46OmNyZWF0ZShnbG9iYWxPYmpl
Y3Qudm0oKSwgZ2V0RE9NU3RydWN0dXJlPEpTS2V5VmFsdWVJdGVyYXRvcjxKU1dyYXBwZXI+Pihn
bG9iYWxPYmplY3Qudm0oKSwgZ2xvYmFsT2JqZWN0KSwgKndyYXBwZXIsIGtpbmQpKTsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgSlNXcmFwcGVyPgorSlNDOjpFbmNvZGVkSlNWYWx1ZSBrZXlWYWx1
ZUl0ZXJhdG9yRm9yRWFjaChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIHByb3Bl
cnR5TmFtZSkKK3sKKyAgICBhdXRvIHdyYXBwZXIgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNXcmFw
cGVyKj4oc3RhdGUudGhpc1ZhbHVlKCkpOworICAgIGlmIChVTkxJS0VMWSghd3JhcHBlcikpCisg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsIEpTV3JhcHBlcjo6aW5mbygp
LT5jbGFzc05hbWUsIHByb3BlcnR5TmFtZSk7CisKKyAgICBKU0M6OkNhbGxEYXRhIGNhbGxEYXRh
OworICAgIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKHN0YXRlLmFy
Z3VtZW50KDApLCBjYWxsRGF0YSk7CisgICAgaWYgKGNhbGxUeXBlID09IEpTQzo6Q2FsbFR5cGVO
b25lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmc3RhdGUpOworCisgICAgdHlw
ZW5hbWUgSlNXcmFwcGVyOjpJdGVyYXRvcktleSBuZXh0S2V5OworICAgIHR5cGVuYW1lIEpTV3Jh
cHBlcjo6SXRlcmF0b3JWYWx1ZSBuZXh0VmFsdWU7CisgICAgYXV0byBpdGVyYXRvciA9IHdyYXBw
ZXItPndyYXBwZWQoKS5jcmVhdGVJdGVyYXRvcigpOworICAgIHdoaWxlICghaXRlcmF0b3IubmV4
dChuZXh0S2V5LCBuZXh0VmFsdWUpKSB7CisgICAgICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZm
ZXIgYXJndW1lbnRzOworICAgICAgICBhcmd1bWVudHMuYXBwZW5kKHRvSlMoJnN0YXRlLCB3cmFw
cGVyLT5nbG9iYWxPYmplY3QoKSwgbmV4dFZhbHVlKSk7CisgICAgICAgIGFyZ3VtZW50cy5hcHBl
bmQodG9KUygmc3RhdGUsIHdyYXBwZXItPmdsb2JhbE9iamVjdCgpLCBuZXh0S2V5KSk7CisgICAg
ICAgIGFyZ3VtZW50cy5hcHBlbmQod3JhcHBlcik7CisgICAgICAgIEpTQzo6Y2FsbCgmc3RhdGUs
IHN0YXRlLmFyZ3VtZW50KDApLCBjYWxsVHlwZSwgY2FsbERhdGEsIHdyYXBwZXIsIGFyZ3VtZW50
cyk7CisgICAgICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIGJyZWFr
OworICAgIH0gCisgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKEpTQzo6anNVbmRlZmlu
ZWQoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEpTV3JhcHBlcj4KQEAgLTEyMCw4ICsxNTEs
OCBAQCB2b2lkIEpTS2V5VmFsdWVJdGVyYXRvcjxKU1dyYXBwZXI+OjpkZXN0cm95KEpTQ2VsbCog
Y2VsbCkKIHRlbXBsYXRlPHR5cGVuYW1lIEpTV3JhcHBlcj4KIGJvb2wgSlNLZXlWYWx1ZUl0ZXJh
dG9yPEpTV3JhcHBlcj46Om5leHQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUm
IHZhbHVlKQogewotICAgIHR5cGVuYW1lIERPTVdyYXBwZWQ6Okl0ZXJhdG9yOjpLZXkgbmV4dEtl
eTsKLSAgICB0eXBlbmFtZSBET01XcmFwcGVkOjpJdGVyYXRvcjo6VmFsdWUgbmV4dFZhbHVlOwor
ICAgIHR5cGVuYW1lIEpTV3JhcHBlcjo6SXRlcmF0b3JLZXkgbmV4dEtleTsKKyAgICB0eXBlbmFt
ZSBKU1dyYXBwZXI6Okl0ZXJhdG9yVmFsdWUgbmV4dFZhbHVlOwogICAgIGlmIChtX2l0ZXJhdG9y
Lm5leHQobmV4dEtleSwgbmV4dFZhbHVlKSkgewogICAgICAgICB2YWx1ZSA9IEpTQzo6anNVbmRl
ZmluZWQoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDBhODhlYTIzNTU4ZTdhYmRk
YzNmMWU1MDdmODVmNDEwNWU1ZWRiNjAuLjgwZWJjMjBiYTNlMWQ4MDI2N2NkMTY1NjA5MmM5ZTk3
MmM1Nzk2NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCkBAIC0xMSw3ICsxMSw3IEBACiAjIENvcHlyaWdodCAoQykgMjAxMiBF
cmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChDKSAyMDA3LCAy
MDA4LCAyMDA5LCAyMDEyIEdvb2dsZSBJbmMuCiAjIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5n
IEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIyBDb3B5cmlnaHQgKEMpIDIwMTUg
Q2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTUsIDIw
MTYgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAjIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC02
MDUsOCArNjA1LDExIEBAIHN1YiBHZXRGdW5jdGlvbk5hbWUKICAgICAgICAgcmV0dXJuIEdldEpT
QnVpbHRpbkZ1bmN0aW9uTmFtZSgkY2xhc3NOYW1lLCAkZnVuY3Rpb24pOwogICAgIH0KIAorICAg
IG15ICRmdW5jdGlvbk5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKKyAgICAkZnVu
Y3Rpb25OYW1lID0gIlN5bWJvbEl0ZXJhdG9yIiBpZiAkZnVuY3Rpb25OYW1lIGVxICJbU3ltYm9s
Lkl0ZXJhdG9yXSI7CisKICAgICBteSAka2luZCA9ICRmdW5jdGlvbi0+aXNTdGF0aWMgPyAiQ29u
c3RydWN0b3IiIDogKE9wZXJhdGlvblNob3VsZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNlLCAkZnVu
Y3Rpb24pID8gIkluc3RhbmNlIiA6ICJQcm90b3R5cGUiKTsKLSAgICByZXR1cm4gJGNvZGVHZW5l
cmF0b3ItPldLX2xjZmlyc3QoJGNsYXNzTmFtZSkgLiAka2luZCAuICJGdW5jdGlvbiIgLiAkY29k
ZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSk7CisgICAg
cmV0dXJuICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRjbGFzc05hbWUpIC4gJGtpbmQgLiAi
RnVuY3Rpb24iIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1bmN0aW9uTmFtZSk7CiB9
CiAKIHN1YiBHZXRTcGVjaWFsQWNjZXNzb3JGdW5jdGlvbkZvclR5cGUKQEAgLTc2OSw2ICs3NzIs
OCBAQCBzdWIgUHJvdG90eXBlRnVuY3Rpb25Db3VudAogICAgICAgICAkY291bnQrKyBpZiAhJGZ1
bmN0aW9uLT5pc1N0YXRpYyAmJiAhT3BlcmF0aW9uU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRlcmZh
Y2UsICRmdW5jdGlvbik7CiAgICAgfQogCisgICAgJGNvdW50ICs9IHNjYWxhciBAeyRpbnRlcmZh
Y2UtPml0ZXJhYmxlLT5mdW5jdGlvbnN9IGlmICRpbnRlcmZhY2UtPml0ZXJhYmxlOworCiAgICAg
cmV0dXJuICRjb3VudDsKIH0KIApAQCAtMTA1MCw2ICsxMDU1LDE2IEBAIHN1YiBHZW5lcmF0ZUhl
YWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSlNDOjpKU0NlbGwqKTtcbiIpOwogICAgIH0KIAorICAgIGlmICgkaW50ZXJmYWNlLT5pdGVy
YWJsZSkgeworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4iKTsKKyAgICAgICAgaWYg
KCRpbnRlcmZhY2UtPml0ZXJhYmxlLT5rZXlUeXBlKSB7CisgICAgICAgICAgICBteSAka2V5VHlw
ZSA9IEdldE5hdGl2ZVR5cGUoJGludGVyZmFjZS0+aXRlcmFibGUtPmtleVR5cGUpOworICAgICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB1c2luZyBJdGVyYXRvcktleSA9ICRrZXlU
eXBlO1xuIik7CisgICAgICAgIH0KKyAgICAgICAgbXkgJHZhbHVlVHlwZSA9IEdldE5hdGl2ZVR5
cGUoJGludGVyZmFjZS0+aXRlcmFibGUtPnZhbHVlVHlwZSk7CisgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgdXNpbmcgSXRlcmF0b3JWYWx1ZSA9ICR2YWx1ZVR5cGU7XG4iKTsKKyAg
ICB9CisKICAgICAjIENsYXNzIGluZm8KICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIk5vZGUi
KSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbiIpOwpAQCAtMTQyNSwxMSArMTQ0
MCwxNSBAQCBzdWIgR2VuZXJhdGVQcm9wZXJ0aWVzSGFzaFRhYmxlCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9KSB7
CisgICAgbXkgQGZ1bmN0aW9ucyA9IEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfTsKKyAgICBwdXNo
KEBmdW5jdGlvbnMsIEB7JGludGVyZmFjZS0+aXRlcmFibGUtPmZ1bmN0aW9uc30pIGlmICRpbnRl
cmZhY2UtPml0ZXJhYmxlOworICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAZnVuY3Rpb25zKSB7
CiAgICAgICAgIG5leHQgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiUHJpdmF0ZSJ9KTsKICAgICAgICAgbmV4dCBpZiAoJGZ1bmN0aW9uLT5pc1N0YXRpYyk7
CiAgICAgICAgIG5leHQgaWYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gJiYgJGZ1bmN0aW9u
LT57b3ZlcmxvYWRJbmRleH0gPiAxOwogICAgICAgICBuZXh0IGlmIE9wZXJhdGlvblNob3VsZEJl
T25JbnN0YW5jZSgkaW50ZXJmYWNlLCAkZnVuY3Rpb24pICE9ICRpc0luc3RhbmNlOworICAgICAg
ICBuZXh0IGlmICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lIGVxICJbU3ltYm9sLkl0ZXJhdG9y
XSI7CisKICAgICAgICAgbXkgJG5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKICAg
ICAgICAgcHVzaChAJGhhc2hLZXlzLCAkbmFtZSk7CiAKQEAgLTE4MzUsMTQgKzE4NTQsMTcgQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxudXNp
bmcgbmFtZXNwYWNlIEpTQztcblxuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJuYW1lc3Bh
Y2UgV2ViQ29yZSB7XG5cbiIpOwogCisgICAgbXkgQGZ1bmN0aW9ucyA9IEB7JGludGVyZmFjZS0+
ZnVuY3Rpb25zfTsKKyAgICBwdXNoKEBmdW5jdGlvbnMsIEB7JGludGVyZmFjZS0+aXRlcmFibGUt
PmZ1bmN0aW9uc30pIGlmICRpbnRlcmZhY2UtPml0ZXJhYmxlOworCiAgICAgbXkgJG51bUNvbnN0
YW50cyA9IEB7JGludGVyZmFjZS0+Y29uc3RhbnRzfTsKLSAgICBteSAkbnVtRnVuY3Rpb25zID0g
QHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9OworICAgIG15ICRudW1GdW5jdGlvbnMgPSBAZnVuY3Rp
b25zOwogICAgIG15ICRudW1BdHRyaWJ1dGVzID0gQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfTsK
IAogICAgIGlmICgkbnVtRnVuY3Rpb25zID4gMCkgewogICAgICAgICBteSAkaW5BcHBsZUNvcHly
aWdodCA9IDA7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCIvLyBGdW5jdGlvbnNcblxuIik7
Ci0gICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRpbnRlcmZhY2UtPmZ1bmN0aW9uc30p
IHsKKyAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEBmdW5jdGlvbnMpIHsKICAgICAgICAg
ICAgIG5leHQgaWYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gJiYgJGZ1bmN0aW9uLT57b3Zl
cmxvYWRJbmRleH0gPiAxOwogICAgICAgICAgICAgbmV4dCBpZiAkZnVuY3Rpb24tPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkZvcndhcmREZWNsYXJlSW5IZWFkZXIifTsKICAgICAg
ICAgICAgIG5leHQgaWYgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDdXN0b21CaW5kaW5nIn07CkBAIC0yMTIzLDYgKzIxNDUsMTEgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBwdXRE
aXJlY3Qodm0sIGNsaWVudERhdGEuYnVpbHRpbk5hbWVzKCkuIiAuICRmdW5jdGlvbi0+c2lnbmF0
dXJlLT5uYW1lIC4gIlByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0KCksIDAsIFN0cmluZygpLCAiIC4gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2UsICRj
bGFzc05hbWUsICRmdW5jdGlvbikgLiAiKSwgUmVhZE9ubHkgfCBEb250RW51bSk7XG4iKTsKICAg
ICAgICAgICAgIH0KIAorICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPml0ZXJhYmxlKSB7Cisg
ICAgICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJm
YWNlLCAkY2xhc3NOYW1lLCBAeyRpbnRlcmZhY2UtPml0ZXJhYmxlLT5mdW5jdGlvbnN9WzBdKTsK
KyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCgpLCAwLCBBU0NJSUxpdGVyYWwoXCJbU3ltYm9sLkl0ZXJhdG9yXVwiKSwgJGZ1
bmN0aW9uTmFtZSksIFJlYWRPbmx5IHwgRG9udEVudW0pO1xuIik7CisgICAgICAgICAgICB9CisK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX1Qcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSlcbiIpOwpAQCAtMjk5MCw2ICszMDE3LDEwIEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICB9CiAKKyAgICBpZiAoJGludGVyZmFj
ZS0+aXRlcmFibGUpIHsKKyAgICAgICAgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkl0ZXJhYmxlRnVu
Y3Rpb25zKCRpbnRlcmZhY2UpOworICAgIH0KKwogICAgIGlmICgkbmVlZHNWaXNpdENoaWxkcmVu
KSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX06OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcilcbiIpOwogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwpAQCAtMzkyMiw2ICszOTUzLDU5IEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKCkKICAgICB9CiB9CiAKK3N1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uSXRlcmFibGVGdW5jdGlvbnMKK3sKKyAgICBteSAkaW50ZXJmYWNl
ID0gc2hpZnQ7CisKKyAgICBpZiAobm90ICRpbnRlcmZhY2UtPml0ZXJhYmxlLT5pc0tleVZhbHVl
KSB7CisgICAgICAgIGRpZSAiTm8gc3VwcG9ydCB5ZXQgZm9yIHNldCBpdGVyYXRvcnMiOworICAg
IH0KKworICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+bmFtZTsKKyAgICBteSAk
Y2xhc3NOYW1lID0gIkpTJGludGVyZmFjZU5hbWUiOworICAgIG15ICR2aXNpYmxlSW50ZXJmYWNl
TmFtZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRWaXNpYmxlSW50ZXJmYWNlTmFtZSgkaW50ZXJmYWNl
KTsKKworICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKU0tleVZhbHVlSXRlcmF0b3IuaCIpOworCisg
ICAgcHVzaChAaW1wbENvbnRlbnQsICA8PEVORCk7Cit1c2luZyAke2ludGVyZmFjZU5hbWV9SXRl
cmF0b3IgPSBKU0tleVZhbHVlSXRlcmF0b3I8JHtjbGFzc05hbWV9PjsKK3VzaW5nICR7aW50ZXJm
YWNlTmFtZX1JdGVyYXRvclByb3RvdHlwZSA9IEpTS2V5VmFsdWVJdGVyYXRvclByb3RvdHlwZTwk
e2NsYXNzTmFtZX0+OworCit0ZW1wbGF0ZTw+Citjb25zdCBKU0M6OkNsYXNzSW5mbyAke2ludGVy
ZmFjZU5hbWV9SXRlcmF0b3I6OnNfaW5mbyA9IHsgIiR7dmlzaWJsZUludGVyZmFjZU5hbWV9IEl0
ZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRSgke2ludGVyZmFj
ZU5hbWV9SXRlcmF0b3IpIH07CisKK3RlbXBsYXRlPD4KK2NvbnN0IEpTQzo6Q2xhc3NJbmZvICR7
aW50ZXJmYWNlTmFtZX1JdGVyYXRvclByb3RvdHlwZTo6c19pbmZvID0geyAiJHt2aXNpYmxlSW50
ZXJmYWNlTmFtZX0gSXRlcmF0b3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKCR7aW50ZXJmYWNlTmFtZX1JdGVyYXRvclByb3RvdHlwZSkgfTsKKworRU5ECisKKyAgICBm
b3JlYWNoIG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5pdGVyYWJsZS0+ZnVuY3Rpb25zfSkg
eworICAgICAgICBteSAkcHJvcGVydHlOYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7
CisgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwg
JGNsYXNzTmFtZSwgJGZ1bmN0aW9uKTsKKworICAgICAgICBpZiAobm90ICRwcm9wZXJ0eU5hbWUg
ZXEgImZvckVhY2giKSB7CisgICAgICAgICAgICBteSAkaXRlcmF0aW9uS2luZCA9ICJLZXlWYWx1
ZSI7CisgICAgICAgICAgICAkaXRlcmF0aW9uS2luZCA9ICJLZXkiIGlmICRwcm9wZXJ0eU5hbWUg
ZXEgImtleXMiOworICAgICAgICAgICAgJGl0ZXJhdGlvbktpbmQgPSAiVmFsdWUiIGlmICRwcm9w
ZXJ0eU5hbWUgZXEgInZhbHVlcyI7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIDw8
RU5EKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2Z1bmN0aW9uTmFtZX0o
SlNDOjpFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIHJldHVybiBjcmVhdGVLZXlWYWx1ZUl0ZXJh
dG9yPCR7Y2xhc3NOYW1lfT4oKnN0YXRlLCBJdGVyYXRpb25LaW5kOjoke2l0ZXJhdGlvbktpbmR9
LCAiJHtwcm9wZXJ0eU5hbWV9Iik7Cit9CisKK0VORAorICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICA8PEVORCk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgJHtmdW5jdGlvbk5hbWV9KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAg
ICByZXR1cm4ga2V5VmFsdWVJdGVyYXRvckZvckVhY2g8JHtjbGFzc05hbWV9Pigqc3RhdGUsICIk
e3Byb3BlcnR5TmFtZX0iKTsKK30KKworRU5ECisgICAgICAgIH0KKyAgICB9Cit9CisKIHN1YiBH
ZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVyZQogewogICAgIG15ICRzaWduYXR1cmUgPSBzaGlmdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBt
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KaW5kZXggNDcy
N2NmN2JmMzVmYjE3NWRkNzhmNjc4Mzk3MTQzZmIxOGYwYmQwNi4uNDcwMDU0ZTk5ZmJiZTNlMTUx
Y2U4MWUxMmQ2MzFhOTZmZTAxYzUwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9JRExQYXJzZXIucG0KQEAgLTU1LDYgKzU1LDcgQEAgc3RydWN0KCBkb21JbnRlcmZhY2Ug
PT4gewogICAgIGlzRXhjZXB0aW9uID0+ICckJywgIyBVc2VkIGZvciBleGNlcHRpb24gaW50ZXJm
YWNlcwogICAgIGlzQ2FsbGJhY2sgPT4gJyQnLCAjIFVzZWQgZm9yIGNhbGxiYWNrIGludGVyZmFj
ZXMKICAgICBpc1BhcnRpYWwgPT4gJyQnLCAjIFVzZWQgZm9yIHBhcnRpYWwgaW50ZXJmYWNlcwor
ICAgIGl0ZXJhYmxlID0+ICckJywgIyBVc2VkIGZvciBpdGVyYWJsZSBpbnRlcmZhY2VzCiB9KTsK
IAogIyBVc2VkIHRvIHJlcHJlc2VudCBkb21JbnRlcmZhY2UgY29udGVudHMgKG5hbWUgb2YgbWV0
aG9kLCBzaWduYXR1cmUpCkBAIC04NSw2ICs4NiwxNSBAQCBzdHJ1Y3QoIGRvbVNpZ25hdHVyZSA9
PiB7CiAgICAgZGVmYXVsdCA9PiAnJCcsICMgRGVmYXVsdCB2YWx1ZSBmb3IgcGFyYW1ldGVycwog
fSk7CiAKKyMgVXNlZCB0byByZXByZXNlbnQgSXRlcmFibGUgaW50ZXJmYWNlcworc3RydWN0KCBk
b21JdGVyYWJsZSA9PiB7CisgICAgaXNLZXlWYWx1ZSA9PiAnJCcsIyBJcyBtYXAgaXRlcmFibGUg
b3Igc2V0IGl0ZXJhYmxlCisgICAga2V5VHlwZSA9PiAnJCcsICAgIyBLZXkgdHlwZSBmb3IgbWFw
IGl0ZXJhYmxlcworICAgIHZhbHVlVHlwZSA9PiAnJCcsICMgVmFsdWUgdHlwZSBmb3IgbWFwIG9y
IHNldCBpdGVyYWJsZXMKKyAgICBmdW5jdGlvbnMgPT4gJ0AnLCAjIEl0ZXJhYmxlIGZ1bmN0aW9u
cyAoZW50cmllcywga2V5cywgdmFsdWVzLCBbU3ltYm9sLkl0ZXJhdG9yXSwgZm9yRWFjaCkKK30p
OworCisKICMgVXNlZCB0byByZXByZXNlbnQgc3RyaW5nIGNvbnN0YW50cwogc3RydWN0KCBkb21D
b25zdGFudCA9PiB7CiAgICAgbmFtZSA9PiAnJCcsICAgICAgIyBET00gQ29uc3RhbnQgaWRlbnRp
ZmllcgpAQCAtMzI1LDkgKzMzNSw4IEBAIG15ICRuZXh0UHJpbWl0aXZlVHlwZV8yID0gJ14oZG91
YmxlfGZsb2F0fHVucmVzdHJpY3RlZCkkJzsKIG15ICRuZXh0QXJndW1lbnRMaXN0XzEgPSAnXihc
KHw6OnxCeXRlU3RyaW5nfERPTVN0cmluZ3xEYXRlfFxbfGFueXxib29sZWFufGJ5dGV8ZG91Ymxl
fGZsb2F0fGlufGludHxsb25nfG9iamVjdHxvY3RldHxvcHRpb25hbHxzZXF1ZW5jZXxzaG9ydHx1
bnJlc3RyaWN0ZWR8dW5zaWduZWQpJCc7CiBteSAkbmV4dE5vbkFueVR5cGVfMSA9ICdeKGJvb2xl
YW58Ynl0ZXxkb3VibGV8ZmxvYXR8aW50fGxvbmd8b2N0ZXR8c2hvcnR8dW5yZXN0cmljdGVkfHVu
c2lnbmVkKSQnOwogbXkgJG5leHRJbnRlcmZhY2VNZW1iZXJfMSA9ICdeKFwofDo6fEJ5dGVTdHJp
bmd8RE9NU3RyaW5nfERhdGV8YW55fGF0dHJpYnV0ZXxib29sZWFufGJ5dGV8Y3JlYXRvcnxkZWxl
dGVyfGRvdWJsZXxmbG9hdHxnZXR0ZXJ8aW5oZXJpdHxpbnR8bGVnYWN5Y2FsbGVyfGxvbmd8b2Jq
ZWN0fG9jdGV0fHJlYWRvbmx5fHNlcXVlbmNlfHNlcmlhbGl6ZXJ8c2V0dGVyfHNob3J0fHN0YXRp
Y3xzdHJpbmdpZmllcnx1bnJlc3RyaWN0ZWR8dW5zaWduZWR8dm9pZCkkJzsKLW15ICRuZXh0T3B0
aW9uYWxJdGVyYXRvckludGVyZmFjZU9yT2JqZWN0XzEgPSAnXig7fD0pJCc7Ci1teSAkbmV4dEF0
dHJpYnV0ZU9yT3BlcmF0aW9uT3JJdGVyYXRvcl8xID0gJ14oc3RhdGljfHN0cmluZ2lmaWVyKSQn
OwotbXkgJG5leHRBdHRyaWJ1dGVPck9wZXJhdGlvbk9ySXRlcmF0b3JfMiA9ICdeKFwofDo6fEJ5
dGVTdHJpbmd8RE9NU3RyaW5nfERhdGV8YW55fGJvb2xlYW58Ynl0ZXxjcmVhdG9yfGRlbGV0ZXJ8
ZG91YmxlfGZsb2F0fGdldHRlcnxpbnR8bGVnYWN5Y2FsbGVyfGxvbmd8b2JqZWN0fG9jdGV0fHNl
cXVlbmNlfHNldHRlcnxzaG9ydHx1bnJlc3RyaWN0ZWR8dW5zaWduZWR8dm9pZCkkJzsKK215ICRu
ZXh0QXR0cmlidXRlT3JPcGVyYXRpb25fMSA9ICdeKHN0YXRpY3xzdHJpbmdpZmllcikkJzsKK215
ICRuZXh0QXR0cmlidXRlT3JPcGVyYXRpb25fMiA9ICdeKFwofDo6fEJ5dGVTdHJpbmd8RE9NU3Ry
aW5nfERhdGV8YW55fGJvb2xlYW58Ynl0ZXxjcmVhdG9yfGRlbGV0ZXJ8ZG91YmxlfGZsb2F0fGdl
dHRlcnxpbnR8bGVnYWN5Y2FsbGVyfGxvbmd8b2JqZWN0fG9jdGV0fHNlcXVlbmNlfHNldHRlcnxz
aG9ydHx1bnJlc3RyaWN0ZWR8dW5zaWduZWR8dm9pZCkkJzsKIG15ICRuZXh0VW5yZXN0cmljdGVk
RmxvYXRUeXBlXzEgPSAnXihkb3VibGV8ZmxvYXQpJCc7CiBteSAkbmV4dEV4dGVuZGVkQXR0cmli
dXRlUmVzdDNfMSA9ICdeKFwsfDo6fFxdKSQnOwogbXkgJG5leHRFeGNlcHRpb25GaWVsZF8xID0g
J14oXCh8Ojp8Qnl0ZVN0cmluZ3xET01TdHJpbmd8RGF0ZXxhbnl8Ym9vbGVhbnxieXRlfGRvdWJs
ZXxmbG9hdHxpbnR8bG9uZ3xvYmplY3R8b2N0ZXR8c2VxdWVuY2V8c2hvcnR8dW5yZXN0cmljdGVk
fHVuc2lnbmVkKSQnOwpAQCAtOTYxLDcgKzk3MCw3IEBAIHN1YiBwYXJzZUF0dHJpYnV0ZU9yT3Bl
cmF0aW9uT3JJdGVyYXRvcgogICAgIGlmICgkbmV4dC0+dmFsdWUoKSBlcSAic2VyaWFsaXplciIp
IHsKICAgICAgICAgcmV0dXJuICRzZWxmLT5wYXJzZVNlcmlhbGl6ZXIoJGV4dGVuZGVkQXR0cmli
dXRlTGlzdCk7CiAgICAgfQotICAgIGlmICgkbmV4dC0+dmFsdWUoKSA9fiAvJG5leHRBdHRyaWJ1
dGVPck9wZXJhdGlvbk9ySXRlcmF0b3JfMS8pIHsKKyAgICBpZiAoJG5leHQtPnZhbHVlKCkgPX4g
LyRuZXh0QXR0cmlidXRlT3JPcGVyYXRpb25fMS8pIHsKICAgICAgICAgbXkgJHF1YWxpZmllciA9
ICRzZWxmLT5wYXJzZVF1YWxpZmllcigpOwogICAgICAgICBteSAkbmV3RGF0YU5vZGUgPSAkc2Vs
Zi0+cGFyc2VBdHRyaWJ1dGVPck9wZXJhdGlvblJlc3QoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7
CiAgICAgICAgIGlmIChkZWZpbmVkKCRuZXdEYXRhTm9kZSkgJiYgJHF1YWxpZmllciBlcSAic3Rh
dGljIikgewpAQCAtOTcyLDcgKzk4MSw3IEBAIHN1YiBwYXJzZUF0dHJpYnV0ZU9yT3BlcmF0aW9u
T3JJdGVyYXRvcgogICAgIGlmICgkbmV4dC0+dmFsdWUoKSA9fiAvJG5leHRBdHRyaWJ1dGVfMS8p
IHsKICAgICAgICAgcmV0dXJuICRzZWxmLT5wYXJzZUF0dHJpYnV0ZSgkZXh0ZW5kZWRBdHRyaWJ1
dGVMaXN0KTsKICAgICB9Ci0gICAgaWYgKCRuZXh0LT50eXBlKCkgPT0gSWRlbnRpZmllclRva2Vu
IHx8ICRuZXh0LT52YWx1ZSgpID1+IC8kbmV4dEF0dHJpYnV0ZU9yT3BlcmF0aW9uT3JJdGVyYXRv
cl8yLykgeworICAgIGlmICgkbmV4dC0+dHlwZSgpID09IElkZW50aWZpZXJUb2tlbiB8fCAkbmV4
dC0+dmFsdWUoKSA9fiAvJG5leHRBdHRyaWJ1dGVPck9wZXJhdGlvbl8yLykgewogICAgICAgICBy
ZXR1cm4gJHNlbGYtPnBhcnNlT3BlcmF0aW9uT3JJdGVyYXRvcigkZXh0ZW5kZWRBdHRyaWJ1dGVM
aXN0KTsKICAgICB9CiAgICAgJHNlbGYtPmFzc2VydFVuZXhwZWN0ZWRUb2tlbigkbmV4dC0+dmFs
dWUoKSwgX19MSU5FX18pOwpAQCAtMTIwNiwxMyArMTIxNSwxNyBAQCBzdWIgcGFyc2VPcGVyYXRp
b25Pckl0ZXJhdG9yCiAgICAgaWYgKCRuZXh0LT52YWx1ZSgpID1+IC8kbmV4dFNwZWNpYWxzXzEv
KSB7CiAgICAgICAgIHJldHVybiAkc2VsZi0+cGFyc2VTcGVjaWFsT3BlcmF0aW9uKCRleHRlbmRl
ZEF0dHJpYnV0ZUxpc3QpOwogICAgIH0KKyAgICBpZiAoJG5leHQtPnZhbHVlKCkgZXEgIml0ZXJh
YmxlIikgeworICAgICAgICByZXR1cm4gJHNlbGYtPnBhcnNlSXRlcmFibGVSZXN0KCRleHRlbmRl
ZEF0dHJpYnV0ZUxpc3QpOworICAgIH0KICAgICBpZiAoJG5leHQtPnR5cGUoKSA9PSBJZGVudGlm
aWVyVG9rZW4gfHwgJG5leHQtPnZhbHVlKCkgPX4gLyRuZXh0QXR0cmlidXRlT3JPcGVyYXRpb25S
ZXN0XzEvKSB7CiAgICAgICAgIG15ICRyZXR1cm5UeXBlID0gJHNlbGYtPnBhcnNlUmV0dXJuVHlw
ZSgpOwotICAgICAgICBteSAkaW50ZXJmYWNlID0gJHNlbGYtPnBhcnNlT3BlcmF0aW9uT3JJdGVy
YXRvclJlc3QoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7Ci0gICAgICAgIGlmIChkZWZpbmVkICgk
aW50ZXJmYWNlKSkgewotICAgICAgICAgICAgJGludGVyZmFjZS0+c2lnbmF0dXJlLT50eXBlKCRy
ZXR1cm5UeXBlKTsKKyAgICAgICAgbXkgJG5leHQgPSAkc2VsZi0+bmV4dFRva2VuKCk7CisgICAg
ICAgIGlmICgkbmV4dC0+dHlwZSgpID09IElkZW50aWZpZXJUb2tlbiB8fCAkbmV4dC0+dmFsdWUo
KSBlcSAiKCIpIHsKKyAgICAgICAgICAgIG15ICRvcGVyYXRpb24gPSAkc2VsZi0+cGFyc2VPcGVy
YXRpb25SZXN0KCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOworICAgICAgICAgICAgJG9wZXJhdGlv
bi0+c2lnbmF0dXJlLT50eXBlKCRyZXR1cm5UeXBlKTsKKyAgICAgICAgICAgIHJldHVybiAkb3Bl
cmF0aW9uOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiAkaW50ZXJmYWNlOwogICAgIH0KICAg
ICAkc2VsZi0+YXNzZXJ0VW5leHBlY3RlZFRva2VuKCRuZXh0LT52YWx1ZSgpLCBfX0xJTkVfXyk7
CiB9CkBAIC0xMjgwLDYyICsxMjkzLDc2IEBAIHN1YiBwYXJzZVNwZWNpYWwKICAgICAkc2VsZi0+
YXNzZXJ0VW5leHBlY3RlZFRva2VuKCRuZXh0LT52YWx1ZSgpLCBfX0xJTkVfXyk7CiB9CiAKLXN1
YiBwYXJzZU9wZXJhdGlvbk9ySXRlcmF0b3JSZXN0CitzdWIgcGFyc2VJdGVyYWJsZVJlc3QKIHsK
ICAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgIG15ICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QgPSBz
aGlmdDsKIAogICAgIG15ICRuZXh0ID0gJHNlbGYtPm5leHRUb2tlbigpOwotICAgIGlmICgkbmV4
dC0+dmFsdWUoKSBlcSAiaXRlcmF0b3IiKSB7Ci0gICAgICAgIHJldHVybiAkc2VsZi0+cGFyc2VJ
dGVyYXRvclJlc3QoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7Ci0gICAgfQotICAgIGlmICgkbmV4
dC0+dHlwZSgpID09IElkZW50aWZpZXJUb2tlbiB8fCAkbmV4dC0+dmFsdWUoKSBlcSAiKCIpIHsK
LSAgICAgICAgcmV0dXJuICRzZWxmLT5wYXJzZU9wZXJhdGlvblJlc3QoJGV4dGVuZGVkQXR0cmli
dXRlTGlzdCk7Ci0gICAgfQotICAgICRzZWxmLT5hc3NlcnRVbmV4cGVjdGVkVG9rZW4oJG5leHQt
PnZhbHVlKCksIF9fTElORV9fKTsKLX0KLQotc3ViIHBhcnNlSXRlcmF0b3JSZXN0Ci17Ci0gICAg
bXkgJHNlbGYgPSBzaGlmdDsKLSAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0ID0gc2hpZnQ7
Ci0KLSAgICBteSAkbmV4dCA9ICRzZWxmLT5uZXh0VG9rZW4oKTsKLSAgICBpZiAoJG5leHQtPnZh
bHVlKCkgZXEgIml0ZXJhdG9yIikgewotICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgk
c2VsZi0+Z2V0VG9rZW4oKSwgIml0ZXJhdG9yIiwgX19MSU5FX18pOwotICAgICAgICAkc2VsZi0+
cGFyc2VPcHRpb25hbEl0ZXJhdG9ySW50ZXJmYWNlT3JPYmplY3QoJGV4dGVuZGVkQXR0cmlidXRl
TGlzdCk7CisgICAgaWYgKCRuZXh0LT52YWx1ZSgpIGVxICJpdGVyYWJsZSIpIHsKKyAgICAgICAg
JHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICJpdGVyYWJsZSIsIF9f
TElORV9fKTsKKyAgICAgICAgbXkgJGl0ZXJhYmxlTm9kZSA9ICRzZWxmLT5wYXJzZU9wdGlvbmFs
SXRlcmFibGVJbnRlcmZhY2UoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CiAgICAgICAgICRzZWxm
LT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiOyIsIF9fTElORV9fKTsKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gJGl0ZXJhYmxlTm9kZTsKICAgICB9CiAgICAg
JHNlbGYtPmFzc2VydFVuZXhwZWN0ZWRUb2tlbigkbmV4dC0+dmFsdWUoKSwgX19MSU5FX18pOwog
fQogCi1zdWIgcGFyc2VPcHRpb25hbEl0ZXJhdG9ySW50ZXJmYWNlT3JPYmplY3QKK3N1YiBwYXJz
ZU9wdGlvbmFsSXRlcmFibGVJbnRlcmZhY2UKIHsKICAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAg
IG15ICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QgPSBzaGlmdDsKIAotICAgIG15ICRuZXh0ID0gJHNl
bGYtPm5leHRUb2tlbigpOwotICAgIGlmICgkbmV4dC0+dmFsdWUoKSA9fiAvJG5leHRPcHRpb25h
bEl0ZXJhdG9ySW50ZXJmYWNlT3JPYmplY3RfMS8pIHsKLSAgICAgICAgcmV0dXJuICRzZWxmLT5w
YXJzZU9wdGlvbmFsSXRlcmF0b3JJbnRlcmZhY2UoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7Ci0g
ICAgfQotICAgIGlmICgkbmV4dC0+dmFsdWUoKSBlcSAib2JqZWN0IikgewotICAgICAgICAkc2Vs
Zi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIm9iamVjdCIsIF9fTElORV9f
KTsKLSAgICAgICAgcmV0dXJuOworICAgIG15ICRzeW1ib2xJdGVyYXRvckZ1bmN0aW9uID0gZG9t
RnVuY3Rpb24tPm5ldygpOworICAgICRzeW1ib2xJdGVyYXRvckZ1bmN0aW9uLT5zaWduYXR1cmUo
ZG9tU2lnbmF0dXJlLT5uZXcoKSk7CisgICAgJHN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24tPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOworICAgICRz
eW1ib2xJdGVyYXRvckZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUoIltTeW1ib2wuSXRlcmF0b3Jd
Iik7CisKKyAgICBteSAkZW50cmllc0Z1bmN0aW9uID0gZG9tRnVuY3Rpb24tPm5ldygpOworICAg
ICRlbnRyaWVzRnVuY3Rpb24tPnNpZ25hdHVyZShkb21TaWduYXR1cmUtPm5ldygpKTsKKyAgICAk
ZW50cmllc0Z1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRB
dHRyaWJ1dGVMaXN0KTsKKyAgICAkZW50cmllc0Z1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUoImVu
dHJpZXMiKTsKKworICAgIG15ICRrZXlzRnVuY3Rpb24gPSBkb21GdW5jdGlvbi0+bmV3KCk7Cisg
ICAgJGtleXNGdW5jdGlvbi0+c2lnbmF0dXJlKGRvbVNpZ25hdHVyZS0+bmV3KCkpOworICAgICRr
ZXlzRnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJp
YnV0ZUxpc3QpOworICAgICRrZXlzRnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSgia2V5cyIpOwor
CisgICAgbXkgJHZhbHVlc0Z1bmN0aW9uID0gZG9tRnVuY3Rpb24tPm5ldygpOworICAgICR2YWx1
ZXNGdW5jdGlvbi0+c2lnbmF0dXJlKGRvbVNpZ25hdHVyZS0+bmV3KCkpOworICAgICR2YWx1ZXNG
dW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRl
TGlzdCk7CisgICAgJHZhbHVlc0Z1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUoInZhbHVlcyIpOwor
CisgICAgbXkgJGZvckVhY2hGdW5jdGlvbiA9IGRvbUZ1bmN0aW9uLT5uZXcoKTsKKyAgICAkZm9y
RWFjaEZ1bmN0aW9uLT5zaWduYXR1cmUoZG9tU2lnbmF0dXJlLT5uZXcoKSk7CisgICAgJGZvckVh
Y2hGdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmli
dXRlTGlzdCk7CisgICAgJGZvckVhY2hGdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lKCJmb3JFYWNo
Iik7CisgICAgbXkgJGZvckVhY2hBcmd1bWVudCA9IGRvbVNpZ25hdHVyZS0+bmV3KCk7CisgICAg
JGZvckVhY2hBcmd1bWVudC0+bmFtZSgiY2FsbGJhY2siKTsKKyAgICAkZm9yRWFjaEFyZ3VtZW50
LT50eXBlKCJhbnkiKTsKKyAgICBwdXNoKEB7JGZvckVhY2hGdW5jdGlvbi0+cGFyYW1ldGVyc30s
ICgkZm9yRWFjaEFyZ3VtZW50KSk7CisKKyAgICBteSAkbmV3RGF0YU5vZGUgPSBkb21JdGVyYWJs
ZS0+bmV3KCk7CisgICAgcHVzaChAeyRuZXdEYXRhTm9kZS0+ZnVuY3Rpb25zfSwgJHN5bWJvbEl0
ZXJhdG9yRnVuY3Rpb24pOworICAgIHB1c2goQHskbmV3RGF0YU5vZGUtPmZ1bmN0aW9uc30sICRl
bnRyaWVzRnVuY3Rpb24pOworICAgIHB1c2goQHskbmV3RGF0YU5vZGUtPmZ1bmN0aW9uc30sICRr
ZXlzRnVuY3Rpb24pOworICAgIHB1c2goQHskbmV3RGF0YU5vZGUtPmZ1bmN0aW9uc30sICR2YWx1
ZXNGdW5jdGlvbik7CisgICAgcHVzaChAeyRuZXdEYXRhTm9kZS0+ZnVuY3Rpb25zfSwgJGZvckVh
Y2hGdW5jdGlvbik7CisKKyAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9r
ZW4oKSwgIjwiLCBfX0xJTkVfXyk7CisgICAgbXkgJHR5cGUxID0gJHNlbGYtPmdldFRva2VuKCkt
PnZhbHVlKCk7CisgICAgaWYgKCRzZWxmLT5uZXh0VG9rZW4oKS0+dmFsdWUoKSBlcSAiLCIpIHsK
KyAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICIsIiwg
X19MSU5FX18pOworICAgICAgICAkbmV3RGF0YU5vZGUtPmlzS2V5VmFsdWUoMSk7CisgICAgICAg
ICRuZXdEYXRhTm9kZS0+a2V5VHlwZSgkdHlwZTEpOworICAgICAgICAkbmV3RGF0YU5vZGUtPnZh
bHVlVHlwZSgkc2VsZi0+Z2V0VG9rZW4oKS0+dmFsdWUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgJG5ld0RhdGFOb2RlLT5pc0tleVZhbHVlKDApOworICAgICAgICAkbmV3RGF0YU5vZGUtPnZh
bHVlVHlwZSgkdHlwZTEpOwogICAgIH0KLSAgICAkc2VsZi0+YXNzZXJ0VW5leHBlY3RlZFRva2Vu
KCRuZXh0LT52YWx1ZSgpLCBfX0xJTkVfXyk7Ci19Ci0KLXN1YiBwYXJzZU9wdGlvbmFsSXRlcmF0
b3JJbnRlcmZhY2UKLXsKLSAgICBteSAkc2VsZiA9IHNoaWZ0OwotICAgIG15ICRleHRlbmRlZEF0
dHJpYnV0ZUxpc3QgPSBzaGlmdDsKKyAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+
Z2V0VG9rZW4oKSwgIj4iLCBfX0xJTkVfXyk7CiAKLSAgICBteSAkbmV4dCA9ICRzZWxmLT5uZXh0
VG9rZW4oKTsKLSAgICBpZiAoJG5leHQtPnZhbHVlKCkgZXEgIj0iKSB7Ci0gICAgICAgICRzZWxm
LT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiPSIsIF9fTElORV9fKTsKLSAg
ICAgICAgJHNlbGYtPmFzc2VydFRva2VuVHlwZSgkc2VsZi0+Z2V0VG9rZW4oKSwgSWRlbnRpZmll
clRva2VuKTsKLSAgICB9CisgICAgcmV0dXJuICRuZXdEYXRhTm9kZTsKIH0KIAogc3ViIHBhcnNl
T3BlcmF0aW9uUmVzdApAQCAtMjE3Nyw2ICsyMjA0LDEwIEBAIHN1YiBhcHBseU1lbWJlckxpc3QK
ICAgICAgICAgICAgIHB1c2goQHskaW50ZXJmYWNlLT5jb25zdGFudHN9LCAkaXRlbSk7CiAgICAg
ICAgICAgICBuZXh0OwogICAgICAgICB9CisgICAgICAgIGlmIChyZWYoJGl0ZW0pIGVxICJkb21J
dGVyYWJsZSIpIHsKKyAgICAgICAgICAgICRpbnRlcmZhY2UtPml0ZXJhYmxlKCRpdGVtKTsKKyAg
ICAgICAgICAgIG5leHQ7CisgICAgICAgIH0KICAgICAgICAgaWYgKHJlZigkaXRlbSkgZXEgImRv
bUZ1bmN0aW9uIikgewogICAgICAgICAgICAgaWYgKCRpdGVtLT5zaWduYXR1cmUtPm5hbWUgZXEg
IiIpIHsKICAgICAgICAgICAgICAgICBwdXNoKEB7JGludGVyZmFjZS0+YW5vbnltb3VzRnVuY3Rp
b25zfSwgJGl0ZW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCA0ZmNhMzY5NWU5ZDMyODM3MzkyZWFiZGNhYWY3
YTQyNGFlMDk4NTdhLi5hNWEwNDZiOWI2NzA0NjIwYjVkYTI5NjM2MzhjMzM5YTEzNDE2MmZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTRE9NU3RyaW5nTGlzdC5o
IgogI2luY2x1ZGUgIkpTRG9jdW1lbnQuaCIKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIK
KyNpbmNsdWRlICJKU0tleVZhbHVlSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU05vZGUuaCIKICNp
bmNsdWRlICJKU1NWR0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiSlNTVkdQb2ludC5oIgpAQCAtMTc4
LDYgKzE3OSwxMSBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uKAogSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5j
dGlvbldpdGhGbG9hdEFyZ3VtZW50KEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1
bmN0aW9uV2l0aEV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5j
dGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50KEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TeW1ib2xJ
dGVyYXRvcihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW50cmllcyhKU0M6OkV4ZWNTdGF0ZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uS2V5cyhKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKEpTQzo6RXhlY1N0YXRlKik7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25Gb3JFYWNoKEpTQzo6RXhlY1N0YXRlKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtNjg4LDYg
KzY5NCwxMCBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvdG90eXBl
VGFibGVWYWx1ZXNbXSA9CiAgICAgeyAidGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3Vt
ZW50IiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVu
Y3Rpb25XaXRoRmxvYXRBcmd1bWVudCksIChpbnRwdHJfdCkgKDEpIH0gfSwKICAgICB7ICJ0ZXN0
UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbiIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbiksIChpbnRwdHJfdCkg
KDApIH0gfSwKICAgICB7ICJ0ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1l
bnQiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5j
dGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50KSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsg
ImVudHJpZXMiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW50cmllcyks
IChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJrZXlzIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbktleXMpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAidmFsdWVz
IiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5h
dGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhbHVlcyksIChpbnRwdHJf
dCkgKDApIH0gfSwKKyAgICB7ICJmb3JFYWNoIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkZvckVhY2gpLCAoaW50cHRyX3QpICgxKSB9IH0sCiAjaWYgRU5BQkxFKENvbmRp
dGlvbjEpCiAgICAgeyAiQ09ORElUSU9OQUxfQ09OU1QiLCBEb250RGVsZXRlIHwgUmVhZE9ubHkg
fCBDb25zdGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDApIH0gfSwKICNl
bHNlCkBAIC03MTUsNiArNzI1LDcgQEAgdm9pZCBKU1Rlc3RPYmpQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdE9ialBy
b3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7CiAgICAgSlNWTUNsaWVudERhdGEmIGNsaWVudERh
dGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKICAgICBw
dXREaXJlY3Qodm0sIGNsaWVudERhdGEuYnVpbHRpbk5hbWVzKCkucHJpdmF0ZU1ldGhvZFByaXZh
dGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KCksIDAsIFN0cmlu
ZygpLCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblByaXZhdGVNZXRob2QpLCBSZWFkT25seSB8
IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9y
U3ltYm9sLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCgpLCAwLCBBU0NJSUxp
dGVyYWwoIltTeW1ib2wuSXRlcmF0b3JdIiksIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3lt
Ym9sSXRlcmF0b3IpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KIAogY29uc3QgQ2xhc3NJbmZv
IEpTVGVzdE9iajo6c19pbmZvID0geyAiVGVzdE9iamVjdCIsICZCYXNlOjpzX2luZm8sICZKU1Rl
c3RPYmpUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPYmopIH07CkBAIC00ODIwLDYg
KzQ4MzEsNDAgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoT3AKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCit1c2luZyBUZXN0T2JqSXRlcmF0b3IgPSBKU0tl
eVZhbHVlSXRlcmF0b3I8SlNUZXN0T2JqPjsKK3VzaW5nIFRlc3RPYmpJdGVyYXRvclByb3RvdHlw
ZSA9IEpTS2V5VmFsdWVJdGVyYXRvclByb3RvdHlwZTxKU1Rlc3RPYmo+OworCit0ZW1wbGF0ZTw+
Citjb25zdCBKU0M6OkNsYXNzSW5mbyBUZXN0T2JqSXRlcmF0b3I6OnNfaW5mbyA9IHsgIlRlc3RP
YmplY3QgSXRlcmF0b3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFRl
c3RPYmpJdGVyYXRvcikgfTsKKwordGVtcGxhdGU8PgorY29uc3QgSlNDOjpDbGFzc0luZm8gVGVz
dE9iakl0ZXJhdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0T2JqZWN0IEl0ZXJhdG9yIiwg
JkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShUZXN0T2JqSXRlcmF0b3JQcm90
b3R5cGUpIH07CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblN5bWJvbEl0ZXJhdG9yKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKK3sK
KyAgICByZXR1cm4gY3JlYXRlS2V5VmFsdWVJdGVyYXRvcjxKU1Rlc3RPYmo+KCpzdGF0ZSwgSXRl
cmF0aW9uS2luZDo6S2V5VmFsdWUsICJbU3ltYm9sLkl0ZXJhdG9yXSIpOworfQorCitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbnRy
aWVzKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gY3JlYXRlS2V5VmFsdWVJ
dGVyYXRvcjxKU1Rlc3RPYmo+KCpzdGF0ZSwgSXRlcmF0aW9uS2luZDo6S2V5VmFsdWUsICJlbnRy
aWVzIik7Cit9CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbktleXMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIHJldHVy
biBjcmVhdGVLZXlWYWx1ZUl0ZXJhdG9yPEpTVGVzdE9iaj4oKnN0YXRlLCBJdGVyYXRpb25LaW5k
OjpLZXksICJrZXlzIik7Cit9CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhbHVlcyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCit7
CisgICAgcmV0dXJuIGNyZWF0ZUtleVZhbHVlSXRlcmF0b3I8SlNUZXN0T2JqPigqc3RhdGUsIEl0
ZXJhdGlvbktpbmQ6OlZhbHVlLCAidmFsdWVzIik7Cit9CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkZvckVhY2goSlNDOjpFeGVj
U3RhdGUqIHN0YXRlKQoreworICAgIHJldHVybiBrZXlWYWx1ZUl0ZXJhdG9yRm9yRWFjaDxKU1Rl
c3RPYmo+KCpzdGF0ZSwgImZvckVhY2giKTsKK30KKwogdm9pZCBKU1Rlc3RPYmo6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBhdXRvKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE9iaio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCmluZGV4IDczNGYyMzZi
ZmZmNTM4YzQxMjVmNWYzMWI2NjNkNTg0MjliYjY4NTIuLjkxNzkyNDk0YjNhY2U5ZmU3N2VkMjQy
Yzc0ZTFmYjNlYmEyZjAzNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKQEAgLTQ1LDYgKzQ1LDkgQEAgcHVibGljOgogICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKKyAgICB1c2luZyBJdGVyYXRvcktleSA9
IFN0cmluZzsKKyAgICB1c2luZyBJdGVyYXRvclZhbHVlID0gVGVzdE9iaio7CisKICAgICBERUNM
QVJFX0lORk87CiAKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RPYmouaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RPYmouaWRsCmluZGV4IGUxMGI0ZTRkZmJjYzFhNWIxNjcyNzFmZTU4NmMyN2I1NWI0N2U2
OGEuLmI2YTk5OTAxZTM4YjhlNGEzZmE3NThiMzBlZGZiMDA4Yzg2MmI3NWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKQEAgLTgxLDYg
KzgxLDggQEAgZW51bSBfb3B0aW9uYWwgeyAiIiwgIk9wdGlvbmFsVmFsdWUxIiwgIk9wdGlvbmFs
VmFsdWUyIiwgIk9wdGlvbmFsVmFsdWUzIiB9OwogICAgIC8vIFR5cGVkQXJyYXkgYXR0cmlidXRl
CiAgICAgYXR0cmlidXRlIEZsb2F0MzJBcnJheSB0eXBlZEFycmF5QXR0cjsKIAorICAgIGl0ZXJh
YmxlPERPTVN0cmluZywgVGVzdE9iaj47CisKICAgICAvLyBNZXRob2RzCiAgICAgdm9pZCAgICB2
b2lkTWV0aG9kKCk7CiAgICAgdm9pZCAgICB2b2lkTWV0aG9kV2l0aEFyZ3MobG9uZyBsb25nQXJn
LCBET01TdHJpbmcgc3RyQXJnLCBUZXN0T2JqIG9iakFyZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNl
U2V0LmNwcAppbmRleCAxYjcxNDQxNGVmNGNlOTM1YWY2ZTBhNzhlZjA0NDcwNTQ2OTkwY2ZhLi4z
ZjhiZDQ1M2M4Y2Y4NTE3YmU0MjA1YzljYjNkYjMwOGNkMzM2MjRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmFjZVNldC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgRm9udEZhY2VTZXQ6Okl0ZXJhdG9yOjpJ
dGVyYXRvcihGb250RmFjZVNldCYgc2V0KQogewogfQogCi1ib29sIEZvbnRGYWNlU2V0OjpJdGVy
YXRvcjo6bmV4dChSZWZQdHI8Rm9udEZhY2U+JiBrZXksIFJlZlB0cjxGb250RmFjZT4mIHZhbHVl
KQorYm9vbCBGb250RmFjZVNldDo6SXRlcmF0b3I6Om5leHQoRm9udEZhY2UqJiBrZXksIEZvbnRG
YWNlKiYgdmFsdWUpCiB7CiAgICAgaWYgKG1faW5kZXggPT0gbV90YXJnZXQtPnNpemUoKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZh
Y2VTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5oCmluZGV4IDAwMmIzMDg2
YWM1NDhhNGRmMWU3ZjM2NmI3YzE1NjQ0ZmMxOWYxNTkuLmFhOWRkYjgxMWM0ZTgzYjA4MmZjMmZk
NmVmZDkxN2EwMWVjNzdlNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFj
ZVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5oCkBAIC03MiwxMSAr
NzIsNyBAQCBwdWJsaWM6CiAgICAgY2xhc3MgSXRlcmF0b3IgewogICAgIHB1YmxpYzoKICAgICAg
ICAgZXhwbGljaXQgSXRlcmF0b3IoRm9udEZhY2VTZXQmKTsKLQotICAgICAgICB1c2luZyBLZXkg
PSBSZWZQdHI8Rm9udEZhY2U+OwotICAgICAgICB1c2luZyBWYWx1ZSA9IFJlZlB0cjxGb250RmFj
ZT47Ci0KLSAgICAgICAgYm9vbCBuZXh0KEtleSYgbmV4dEtleSwgVmFsdWUmIG5leHRWYWx1ZSk7
CisgICAgICAgIGJvb2wgbmV4dChGb250RmFjZSomIG5leHRLZXksIEZvbnRGYWNlKiYgbmV4dFZh
bHVlKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZjxGb250RmFjZVNldD4gbV90YXJnZXQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaWRsIGIvU291cmNl
L1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmlkbAppbmRleCA0ZmY2ODVkY2FjZDliNTJlYzI3MzU1
ZTBkZGIzNTFkZjNlNTZmZTc4Li5kZTc0OTJkOGQxYjc1NmM0MDlkYjEyM2E1ZWFiZjM0YjJiZmU2
NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5pZGwKQEAgLTMyLDEyICszMiwxMiBAQCBl
bnVtIEZvbnRGYWNlU2V0TG9hZFN0YXR1cyB7CiAgICAgQ29uc3RydWN0b3JDYWxsV2l0aD1TY3Jp
cHRTdGF0ZSZEb2N1bWVudCwKICAgICBDb25zdHJ1Y3RvcihzZXF1ZW5jZTxGb250RmFjZT4gaW5p
dGlhbEZhY2VzKQogXSBpbnRlcmZhY2UgRm9udEZhY2VTZXQgOiBFdmVudFRhcmdldCB7Ci0gICAg
W0N1c3RvbV0gT2JqZWN0IGVudHJpZXMoKTsKLSAgICAvLyBmb3JFYWNoKCk6IE1heWJlIGltcGxl
bWVudCB0aGlzIGluIEphdmFzY3JpcHQgb24gdG9wIG9mIGtleXMoKS4KICAgICBib29sZWFuIGhh
cyhGb250RmFjZSBmb250KTsKLSAgICBbQ3VzdG9tXSBPYmplY3Qga2V5cygpOwotICAgIFtDdXN0
b21dIE9iamVjdCB2YWx1ZXMoKTsKLSAgICAvLyBAaXRlcmF0b3IKKworICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgYWRkIHN1cHBvcnQgZm9yIHRoZSBzZXRsaWtlIGRlY2xhcmF0aW9uLgorICAgIC8v
IEFzIGEgZmlyc3Qgc3RlcCB0aGlzIG1hcCBpdGVyYWJsZSBkZWNsYXJhdGlvbiBzaG91bGQgYmUg
Y2hhbmdlZCB0byBhIHNldCBpdGVyYWJsZS4KKyAgICBpdGVyYWJsZTxGb250RmFjZSwgRm9udEZh
Y2U+OworCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgc2l6ZTsKIAogICAgIEZvbnRGYWNl
U2V0IGFkZChGb250RmFjZSBmb250KTsKQEAgLTUzLDQgKzUzLDQgQEAgZW51bSBGb250RmFjZVNl
dExvYWRTdGF0dXMgewogCiAgICAgW0N1c3RvbV0gcmVhZG9ubHkgYXR0cmlidXRlIFByb21pc2Ug
cmVhZHk7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEZvbnRGYWNlU2V0TG9hZFN0YXR1cyBzdGF0
dXM7Ci19OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK307CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZwppbmRleCBjZWRkOTM4OGRiMTY0ZjJhZWFlZTkxMjg4MzNkNWNiOGQwZjVkMTdm
Li4zNmQ2MjdiODc0ZWU2ZGYyNzViMTExNGUwZWYxOTUwOTU3NjYzZWJhIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0wMi0xOCAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIEJpbmRpbmcgZ2Vu
ZXJhdG9yIHNob3VsZCBzdXBwb3J0IGtleSB2YWx1ZSBpdGVyYWJsZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0NDEzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gv
YXBpL2hlYWRlcnMvaGVhZGVycy1iYXNpYy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9oZWFkZXJzL2hlYWRlcnMtYmFzaWMuaHRtbDoKKwogMjAx
Ni0wMi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZ3Jl
c3Npb24ocjE5NjY0OCk6IGh0dHA6Ly93M2MtdGVzdC5vcmcvaHRtbC9kb20vaW50ZXJmYWNlcy5o
dG1sIHJlZGlyZWN0cyBhdCB0aGUgZW5kIG9mIHRoZSB0ZXN0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9oZWFkZXJzL2hl
YWRlcnMtYmFzaWMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvaGVhZGVycy9oZWFkZXJzLWJhc2ljLWV4cGVjdGVkLnR4
dAppbmRleCA2ZGI2OWNlODYwNTViNTA0ODlmZTQ3MjAwZjU0MTBjNmFhMmIxODM3Li5lMjk3MTE2
ZGJhNDA2MzljZDllZTAwZjUwNzU2OTZjZTMwYTNkY2I1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9oZWFkZXJzL2hlYWRl
cnMtYmFzaWMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2hlYWRlcnMvaGVhZGVycy1iYXNpYy1leHBlY3RlZC50
eHQKQEAgLTE1LDQgKzE1LDYgQEAgUEFTUyBDaGVjayBnZXQgbWV0aG9kCiBQQVNTIENoZWNrIGtl
eXMgbWV0aG9kIAogUEFTUyBDaGVjayB2YWx1ZXMgbWV0aG9kIAogUEFTUyBDaGVjayBlbnRyaWVz
IG1ldGhvZCAKK1BBU1MgQ2hlY2sgU3ltYm9sLml0ZXJhdG9yIG1ldGhvZCAKK1BBU1MgQ2hlY2sg
Zm9yRWFjaCBtZXRob2QgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2hlYWRlcnMvaGVhZGVycy1iYXNpYy5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvaGVh
ZGVycy9oZWFkZXJzLWJhc2ljLmh0bWwKaW5kZXggNTFhYzg5YzdiM2NiMDJmZjAzMGIzYTIxMDMx
NTA3MjE4OGVkZmRlNy4uZGRiYjlhNzRiN2QzOTAxMWJjNzViYzgzN2Y5ODM0NzQyNzRlM2EyMCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9m
ZXRjaC9hcGkvaGVhZGVycy9oZWFkZXJzLWJhc2ljLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvaGVhZGVycy9oZWFkZXJzLWJh
c2ljLmh0bWwKQEAgLTE2Myw2ICsxNjMsMzMgQEAKICAgICAgICAgYXNzZXJ0X3RydWUoYWN0dWFs
Lm5leHQoKS5kb25lKTsKICAgICAgICAgYXNzZXJ0X3RydWUoYWN0dWFsLm5leHQoKS5kb25lKTsK
ICAgICAgIH0sICJDaGVjayBlbnRyaWVzIG1ldGhvZCIpOworCisgICAgICB0ZXN0KGZ1bmN0aW9u
KCkgeworICAgICAgICB2YXIgaGVhZGVycyA9IG5ldyBIZWFkZXJzKGhlYWRlckVudHJpZXNEaWN0
KTsKKyAgICAgICAgdmFyIGFjdHVhbCA9IGhlYWRlcnNbU3ltYm9sLml0ZXJhdG9yXSgpOworCisg
ICAgICAgIHNvcnRlZEhlYWRlcktleXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHsKKyAgICAgICAg
ICAgIGVudHJ5ID0gYWN0dWFsLm5leHQoKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZShlbnRy
eS5kb25lKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZW50cnkudmFsdWVbMF0sIGtleSk7
CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGVudHJ5LnZhbHVlWzFdLCBzb3J0ZWRIZWFkZXJE
aWN0W2tleV0pOworICAgICAgICB9KTsKKyAgICAgICAgYXNzZXJ0X3RydWUoYWN0dWFsLm5leHQo
KS5kb25lKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoYWN0dWFsLm5leHQoKS5kb25lKTsKKyAgICAg
IH0sICJDaGVjayBTeW1ib2wuaXRlcmF0b3IgbWV0aG9kIik7CisKKyAgICAgIHRlc3QoZnVuY3Rp
b24oKSB7CisgICAgICAgIHZhciBoZWFkZXJzID0gbmV3IEhlYWRlcnMoaGVhZGVyRW50cmllc0Rp
Y3QpOworICAgICAgICB2YXIgcmVmZXJlbmNlID0gc29ydGVkSGVhZGVyS2V5c1tTeW1ib2wuaXRl
cmF0b3JdKCk7CisgICAgICAgIGhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwga2V5LCBj
b250YWluZXIpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoaGVhZGVycywgY29udGFpbmVy
KTsKKyAgICAgICAgICAgIGVudHJ5ID0gcmVmZXJlbmNlLm5leHQoKTsKKyAgICAgICAgICAgIGFz
c2VydF9mYWxzZShlbnRyeS5kb25lKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoa2V5LCBl
bnRyeS52YWx1ZSk7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCBzb3J0ZWRIZWFk
ZXJEaWN0W2VudHJ5LnZhbHVlXSk7CisgICAgICAgIH0pOworICAgICAgICBhc3NlcnRfdHJ1ZShy
ZWZlcmVuY2UubmV4dCgpLmRvbmUpOworICAgICAgfSwgIkNoZWNrIGZvckVhY2ggbWV0aG9kIik7
CiAgICA8L3NjcmlwdD4KICAgPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvaGVhZGVycy9oZWFk
ZXJzLWVycm9ycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9oZWFkZXJzL2hlYWRlcnMtZXJyb3JzLWV4cGVjdGVkLnR4
dAppbmRleCA2ZjNjNTNhNzZiMzc4MjBkYzRiYWNhNGY5YTYxMzhhZTMxMjM4MWY1Li5lZjA5NGMw
MjExMmQ2MzkyYjA2ZGVhZGY0ZmU3NGI4NjM5YWRkN2YyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9oZWFkZXJzL2hlYWRl
cnMtZXJyb3JzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9oZWFkZXJzL2hlYWRlcnMtZXJyb3JzLWV4cGVjdGVk
LnR4dApAQCAtMTUsNCArMTUsNiBAQCBQQVNTIENoZWNrIGhlYWRlcnMgc2V0IHdpdGggYW4gaW52
YWxpZCB2YWx1ZSBpbnZhbGlkxIAKIFBBU1MgQ2hlY2sgaGVhZGVycyBhcHBlbmQgd2l0aCBhbiBp
bnZhbGlkIG5hbWUgaW52YWxpZMSAIAogUEFTUyBDaGVjayBoZWFkZXJzIGFwcGVuZCB3aXRoIGFu
IGludmFsaWQgbmFtZSBbb2JqZWN0IE9iamVjdF0gCiBQQVNTIENoZWNrIGhlYWRlcnMgYXBwZW5k
IHdpdGggYW4gaW52YWxpZCB2YWx1ZSBpbnZhbGlkxIAgCitQQVNTIEhlYWRlcnMgZm9yRWFjaCB0
aHJvd3MgaWYgYXJndW1lbnQgaXMgbm90IGNhbGxhYmxlIAorUEFTUyBIZWFkZXJzIGZvckVhY2gg
bG9vcCBzaG91bGQgc3RvcCBpZiBjYWxsYmFjayBpcyB0aHJvd2luZyBleGNlcHRpb24gCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0
Y2gvYXBpL2hlYWRlcnMvaGVhZGVycy1lcnJvcnMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2hlYWRlcnMvaGVhZGVycy1lcnJvcnMu
aHRtbAppbmRleCA1ZjVlZWYyM2FkMmZlYjI4ZjZlN2Q3YTM4MzVjNTdlMTRhODg4MWFlLi4xOTRm
ZjMyZjE1NTlmMmRkOWI1OTAzZWIzNzM4YzE3YzA2MWM3MTcyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9oZWFkZXJzL2hl
YWRlcnMtZXJyb3JzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9mZXRjaC9hcGkvaGVhZGVycy9oZWFkZXJzLWVycm9ycy5odG1sCkBAIC03OCw2
ICs3OCwzMCBAQAogICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpICwgZnVu
Y3Rpb24oKSB7IGhlYWRlcnMuYXBwZW5kKCJuYW1lIiwgdmFsdWUpOyB9KTsKICAgICAgICAgfSwg
IkNoZWNrIGhlYWRlcnMgYXBwZW5kIHdpdGggYW4gaW52YWxpZCB2YWx1ZSAiICsgdmFsdWUpOwog
ICAgICAgfSk7Ci0gICAgPC9zY3JpcHQ+CisKKyAgICAgIHRlc3QoZnVuY3Rpb24oKSB7CisgICAg
ICAgIHZhciBoZWFkZXJzID0gbmV3IEhlYWRlcnMoW1sibmFtZSIsICJ2YWx1ZSJdXSk7CisgICAg
ICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpICwgZnVuY3Rpb24oKSB7IGhlYWRlcnMu
Zm9yRWFjaCgpOyB9KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCkgLCBm
dW5jdGlvbigpIHsgaGVhZGVycy5mb3JFYWNoKHVuZGVmaW5lZCk7IH0pOworICAgICAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSAsIGZ1bmN0aW9uKCkgeyBoZWFkZXJzLmZvckVhY2go
MSk7IH0pOworICAgICAgfSwgIkhlYWRlcnMgZm9yRWFjaCB0aHJvd3MgaWYgYXJndW1lbnQgaXMg
bm90IGNhbGxhYmxlIik7CisKKyAgICAgIHRlc3QoZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBo
ZWFkZXJzID0gbmV3IEhlYWRlcnMoW1sibmFtZTEiLCAidmFsdWUxIl0sIFsibmFtZTIiLCAidmFs
dWUyIl0sIFsibmFtZTMiLCAidmFsdWUzIl1dKTsKKyAgICAgICAgdmFyIGNvdW50ZXIgPSAwOwor
ICAgICAgICB0cnkgeworICAgICAgICAgICAgaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVl
LCBuYW1lKSB7CisgICAgICAgICAgICAgICAgY291bnRlcisrOworICAgICAgICAgICAgICAgIGlm
IChuYW1lID09ICJuYW1lMiIpCisgICAgICAgICAgICAgICAgICAgICB0aHJvdyAiZXJyb3IiOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHMoY291bnRlciwgMik7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGUsICJlcnJv
ciIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGFzc2VydF91bnJl
YWNoZWQoKTsKKyAgICAgIH0sICJIZWFkZXJzIGZvckVhY2ggbG9vcCBzaG91bGQgc3RvcCBpZiBj
YWxsYmFjayBpcyB0aHJvd2luZyBleGNlcHRpb24iKTsKKyAgIDwvc2NyaXB0PgogICA8L2JvZHk+
CiA8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>