<?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>203391</bug_id>
          
          <creation_ts>2019-10-24 17:36:31 -0700</creation_ts>
          <short_desc>Move JSC::Register inline methods into RegisterInlines.h.</short_desc>
          <delta_ts>2019-10-29 20:02:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>annulen</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1583615</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-10-24 17:36:31 -0700</bug_when>
    <thetext>.. and handle the fallout of this change.  We&apos;re doing this because:
1. RegisterInlines.h is the canonical place to put inline Register methods.
2. Helps reduce build time.
3. This enables experimental work to box JSCells in JSValue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583624</commentid>
    <comment_count>1</comment_count>
      <attachid>381865</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-10-24 19:01:06 -0700</bug_when>
    <thetext>Created attachment 381865
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583625</commentid>
    <comment_count>2</comment_count>
      <attachid>381865</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-24 19:03:47 -0700</bug_when>
    <thetext>Comment on attachment 381865
proposed patch.

r=me if EWS gets green.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583626</commentid>
    <comment_count>3</comment_count>
      <attachid>381866</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-10-24 19:06:19 -0700</bug_when>
    <thetext>Created attachment 381866
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583627</commentid>
    <comment_count>4</comment_count>
      <attachid>381865</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-10-24 19:09:48 -0700</bug_when>
    <thetext>Comment on attachment 381865
proposed patch.

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

r=me too.

&gt; Source/JavaScriptCore/interpreter/ProtoCallFrameInlines.h:62
&gt; +inline CodeBlock* ProtoCallFrame::codeBlock() const

out of curiosity, do these functions need to be marked inline when the class body declares them as such? I would guess no but idk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583628</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-10-24 19:17:06 -0700</bug_when>
    <thetext>(In reply to Keith Miller from comment #4)
&gt; &gt; Source/JavaScriptCore/interpreter/ProtoCallFrameInlines.h:62
&gt; &gt; +inline CodeBlock* ProtoCallFrame::codeBlock() const
&gt; 
&gt; out of curiosity, do these functions need to be marked inline when the class
&gt; body declares them as such? I would guess no but idk.

I prefer to when I can.  Here&apos;s why:

If the header file declares it &quot;inline&quot;, and the .cpp file using it forgets to #include the Inlines.h file, the compiler will complain immediately rather than waiting till the Linker fails.  So, we get more immediate feedback, plus it tells the reader to look for the function in the Inlines.h.

However, there are places that I deliberately choose not to add the &quot;inline&quot; modifier in the header file.  Here&apos;s why:

Let&apos;s say A.h has an inline function foo().
Let&apos;s say B.h has an inline function bar() that calls foo.
Let&apos;s say C.cpp #includes B.h but does not call bar() anywhere.

If I add the &quot;inline&quot; modifier to foo in A.h, then I&apos;ll be forced to #include AInlines.h in C.cpp even though I never call it.  It may also force me to move bar out to a BInlines.h.

But if I don&apos;t add the &quot;inline&quot; modifier to foo in A.h, I get too leave B.h and C.cpp alone.

I relied on this detail to save me a lot of work in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583629</commentid>
    <comment_count>6</comment_count>
      <attachid>381867</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-10-24 19:21:34 -0700</bug_when>
    <thetext>Created attachment 381867
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583699</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-10-25 00:00:56 -0700</bug_when>
    <thetext>Thanks for the reviews.  Landed in r251584: &lt;http://trac.webkit.org/r251584&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583700</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-25 00:04:08 -0700</bug_when>
    <thetext>&lt;rdar://problem/56610023&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584423</commentid>
    <comment_count>9</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-10-28 03:33:07 -0700</bug_when>
    <thetext>Filed : Bug 203483 – [Windows][Clang] error LNK2001: unresolved external symbol &quot;void * __cdecl JSC::allocateCell&lt;class JSC::JSGenericTypedArrayView&lt;struct JSC::Float32Adaptor&gt; &gt;(class JSC::Heap &amp;,unsigned __int64)&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584436</commentid>
    <comment_count>10</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-10-28 07:01:29 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #5)
&gt; However, there are places that I deliberately choose not to add the &quot;inline&quot;
&gt; modifier in the header file.  Here&apos;s why:
&gt; 
&gt; Let&apos;s say A.h has an inline function foo().
&gt; Let&apos;s say B.h has an inline function bar() that calls foo.
&gt; Let&apos;s say C.cpp #includes B.h but does not call bar() anywhere.
&gt; 
&gt; If I add the &quot;inline&quot; modifier to foo in A.h, then I&apos;ll be forced to
&gt; #include AInlines.h in C.cpp even though I never call it.  It may also force
&gt; me to move bar out to a BInlines.h.

In that case, B.h includes A.h, and C.cpp includes just only B.h.

If A.h is using B&apos;s methods, AInlines.h and BInlines.h are needed.
AInlines.h includes A.h and B.h, and BInlines.h includes AInlines.h.
C.cpp needs to include just only BInlines.h.
There is no disadvantage for adding &apos;inline&apos; specifier.

https://webkit.org/code-style-guidelines/#include-primary

Furthermore, it confirms header&apos;s completeness of WebKit style guideline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584560</commentid>
    <comment_count>11</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-10-28 13:00:40 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #10)
&gt; (In reply to Mark Lam from comment #5)
&gt; &gt; However, there are places that I deliberately choose not to add the &quot;inline&quot;
&gt; &gt; modifier in the header file.  Here&apos;s why:
&gt; &gt; 
&gt; &gt; Let&apos;s say A.h has an inline function foo().
&gt; &gt; Let&apos;s say B.h has an inline function bar() that calls foo.
&gt; &gt; Let&apos;s say C.cpp #includes B.h but does not call bar() anywhere.
&gt; &gt; 
&gt; &gt; If I add the &quot;inline&quot; modifier to foo in A.h, then I&apos;ll be forced to
&gt; &gt; #include AInlines.h in C.cpp even though I never call it.  It may also force
&gt; &gt; me to move bar out to a BInlines.h.
&gt; 
&gt; In that case, B.h includes A.h, and C.cpp includes just only B.h.
&gt; 
&gt; If A.h is using B&apos;s methods, AInlines.h and BInlines.h are needed.
&gt; AInlines.h includes A.h and B.h, and BInlines.h includes AInlines.h.
&gt; C.cpp needs to include just only BInlines.h.
&gt; There is no disadvantage for adding &apos;inline&apos; specifier.
&gt; 
&gt; https://webkit.org/code-style-guidelines/#include-primary
&gt; 
&gt; Furthermore, it confirms header&apos;s completeness of WebKit style guideline.

My point, in this example, is that BInlines.h doesn&apos;t exists yet, and creating it will change gazillion files ... an investment I didn&apos;t want to take at this point.  Hence, by leaving the &quot;inline&quot; modifier out, I avoided having to make this change ... since the inline function isn&apos;t actually in use in C.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584869</commentid>
    <comment_count>12</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-10-29 03:07:59 -0700</bug_when>
    <thetext>C.cpp don&apos;t need to include BInlines.h if it is not using bar() nor foo().

Adding &apos;inline&apos; specifier doesn&apos;t force you to define the definition.

https://godbolt.org/z/vTwSNx</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585061</commentid>
    <comment_count>13</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-10-29 13:26:06 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #12)
&gt; C.cpp don&apos;t need to include BInlines.h if it is not using bar() nor foo().
&gt; 
&gt; Adding &apos;inline&apos; specifier doesn&apos;t force you to define the definition.
&gt; 
&gt; https://godbolt.org/z/vTwSNx

Hi Fujii, I modified your example to reflect the scenario I was talking about, and it reproduces the build failure.  Here it is:

https://godbolt.org/z/Z-TVrd

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585236</commentid>
    <comment_count>14</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-10-29 20:02:16 -0700</bug_when>
    <thetext>Yeah, that&apos;s the case you mentioned in your ChangeLog entry.

&gt; This patch also handles the fallout of this change, which necessitates more
&gt; inline methods being moved from &lt;file&gt;.h to their respective &lt;file&gt;Inlines.h.
&gt; 
&gt; JSArray.h used to include ButterflyInlines.h and JSCellInlines.h.  This is a
&gt; violation of inclusion ordering (.h should not #include Inlines.h).  This
&gt; violation has been removed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381865</attachid>
            <date>2019-10-24 19:01:06 -0700</date>
            <delta_ts>2019-10-24 19:06:19 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-203391.patch</filename>
            <type>text/plain</type>
            <size>55370</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUxNTc5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBA
QAorMjAxOS0xMC0yNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
TW92ZSBKU0M6OlJlZ2lzdGVyIGlubGluZSBtZXRob2RzIGludG8gUmVnaXN0ZXJJbmxpbmVzLmgu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMzOTEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSdyZSBk
b2luZyB0aGlzIGJlY2F1c2U6CisgICAgICAgIDEuIFJlZ2lzdGVySW5saW5lcy5oIGlzIHRoZSBj
YW5vbmljYWwgcGxhY2UgdG8gcHV0IGlubGluZSBSZWdpc3RlciBtZXRob2RzLgorICAgICAgICAy
LiBJdCBoZWxwcyByZWR1Y2UgYnVpbGQgdGltZS4KKyAgICAgICAgICAgZS5nLiBidWlsZC1qc2Mg
d2VudCBmcm9tIDIwOC4wMiB0byAxOTYuODEgc2Vjb25kcyAoYWJvdXQgYSA1JSByZWR1Y3Rpb24p
LgorICAgICAgICAzLiBUaGlzIGVuYWJsZXMgZXhwZXJpbWVudGFsIHdvcmsgdG8gYm94IEpTQ2Vs
bHMgaW4gSlNWYWx1ZS4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gaGFuZGxlcyB0aGUgZmFs
bG91dCBvZiB0aGlzIGNoYW5nZSwgd2hpY2ggbmVjZXNzaXRhdGVzIG1vcmUKKyAgICAgICAgaW5s
aW5lIG1ldGhvZHMgYmVpbmcgbW92ZWQgZnJvbSA8ZmlsZT4uaCB0byB0aGVpciByZXNwZWN0aXZl
IDxmaWxlPklubGluZXMuaC4KKworICAgICAgICBKU0FycmF5LmggdXNlZCB0byBpbmNsdWRlIEJ1
dHRlcmZseUlubGluZXMuaCBhbmQgSlNDZWxsSW5saW5lcy5oLiAgVGhpcyBpcyBhCisgICAgICAg
IHZpb2xhdGlvbiBvZiBpbmNsdXNpb24gb3JkZXJpbmcgKC5oIHNob3VsZCBub3QgI2luY2x1ZGUg
SW5saW5lcy5oKS4gIFRoaXMKKyAgICAgICAgdmlvbGF0aW9uIGhhcyBiZWVuIHJlbW92ZWQuCisK
KyAgICAgICAgKiBBUEkvSlNBUElHbG9iYWxPYmplY3QubW06CisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q2FsbEZy
YW1lOjpyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjp1bmNoZWNrZWRSKTog
RGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9NZXRhZGF0YVRhYmxlLmNwcDoKKyAgICAgICAg
KiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJh
bWUuaDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpndWFyYW50ZWVkSlNWYWx1ZUNhbGxlZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6anNDYWxsZWUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OmNvZGVCbG9jayBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6dW5zYWZlQ29kZUJsb2NrIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpzY29wZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6dG9wT2ZGcmFtZSk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkNhbGxGcmFtZTo6c2V0U2NvcGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDYWxs
RnJhbWU6OnNldENhbGxlZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6c2V0
Q29kZUJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWVJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6cik6CisgICAgICAgIChKU0M6OkNhbGxG
cmFtZTo6dW5jaGVja2VkUik6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6Z3VhcmFudGVlZEpT
VmFsdWVDYWxsZWUgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OmpzQ2FsbGVlIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpjb2RlQmxvY2sgY29uc3QpOgorICAgICAg
ICAoSlNDOjpDYWxsRnJhbWU6OnVuc2FmZUNvZGVCbG9jayBjb25zdCk6CisgICAgICAgIChKU0M6
OkNhbGxGcmFtZTo6bGV4aWNhbEdsb2JhbE9iamVjdCBjb25zdCk6CisgICAgICAgIChKU0M6OkNh
bGxGcmFtZTo6c2V0Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpzZXRDb2RlQmxv
Y2spOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OnNldFNjb3BlKToKKyAgICAgICAgKEpTQzo6
Q2FsbEZyYW1lOjpzY29wZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6dG9wT2ZG
cmFtZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAq
IGludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmg6CisgICAgICAgIChKU0M6OlByb3RvQ2FsbEZy
YW1lOjppbml0KTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnRlcnByZXRlci9Qcm90b0NhbGxGcmFt
ZUlubGluZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OlByb3RvQ2FsbEZyYW1lOjppbml0KToK
KyAgICAgICAgKEpTQzo6UHJvdG9DYWxsRnJhbWU6OmNhbGxlZSBjb25zdCk6CisgICAgICAgIChK
U0M6OlByb3RvQ2FsbEZyYW1lOjpzZXRDYWxsZWUpOgorICAgICAgICAoSlNDOjpQcm90b0NhbGxG
cmFtZTo6Y29kZUJsb2NrIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJvdG9DYWxsRnJhbWU6OnNl
dENvZGVCbG9jayk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaDoKKyAgICAgICAg
KEpTQzo6UmVnaXN0ZXI6OmNhbGxGcmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OlJlZ2lzdGVyOjpjb2RlQmxvY2sgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpSZWdp
c3Rlcjo6YXNhblVuc2FmZUNvZGVCbG9jayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaW50
ZXJwcmV0ZXIvUmVnaXN0ZXJJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpSZWdpc3Rl
cjo6Y2FsbEZyYW1lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXI6OmNvZGVCbG9jayBj
b25zdCk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyOjphc2FuVW5zYWZlQ29kZUJsb2NrIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXI6Om9iamVjdCBjb25zdCk6CisgICAgICAgIChKU0M6
OlJlZ2lzdGVyOjpvcGVyYXRvcj0pOgorICAgICAgICAoSlNDOjpSZWdpc3Rlcjo6c2NvcGUgY29u
c3QpOgorICAgICAgICAqIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHA6CisgICAgICAgICog
aml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNw
cDoKKyAgICAgICAgKiBydW50aW1lL0FycmF5U3RvcmFnZS5oOgorICAgICAgICAoSlNDOjpBcnJh
eVN0b3JhZ2U6Om9wdGltYWxWZWN0b3JMZW5ndGgpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRp
bWUvQXJyYXlTdG9yYWdlSW5saW5lcy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QXJyYXlTdG9y
YWdlOjphdmFpbGFibGVWZWN0b3JMZW5ndGgpOgorICAgICAgICAoSlNDOjpBcnJheVN0b3JhZ2U6
Om9wdGltYWxWZWN0b3JMZW5ndGgpOgorICAgICAgICAoSlNDOjpBcnJheVN0b3JhZ2U6OnRvdGFs
U2l6ZSBjb25zdCk6CisgICAgICAgICogcnVudGltZS9CdXR0ZXJmbHlJbmxpbmVzLmg6CisgICAg
ICAgICogcnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0dldFZNLmg6IEFk
ZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
cnJheUlubGluZXMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbElubGluZXMuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09iamVj
dC5oOgorICAgICAgICAoSlNDOjpSZWdpc3Rlcjo6b2JqZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6UmVnaXN0ZXI6Om9wZXJhdG9yPSk6IERlbGV0ZWQuCisgICAgICAgICogcnVu
dGltZS9KU09iamVjdElubGluZXMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTU2NvcGUuaDoKKyAg
ICAgICAgKEpTQzo6UmVnaXN0ZXI6Om9wZXJhdG9yPSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OlJlZ2lzdGVyOjpzY29wZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNhbGxGcmFt
ZTo6bGV4aWNhbEdsb2JhbE9iamVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGlt
ZS9KU1N0cmluZy5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaDoKKyAg
ICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk1Jbmxp
bmVzLmg6CisgICAgICAgICogdG9vbHMvSGVhcFZlcmlmaWVyLmNwcDoKKyAgICAgICAgKiB3YXNt
L2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorCiAyMDE5LTEwLTI0ICBTaWh1aSBMaXUgIDxz
aWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIFsgTWFjIFdLMSBdIFJFR1JFU1NJT04gKHIy
NTEyNjEpOiBMYXlvdXQgVGVzdCBpbnNwZWN0b3IvY29uc29sZS93ZWJjb3JlLWxvZ2dpbmcuaHRt
bCBpcyBjb25zaXN0ZW50bHkgRmFpbGluZwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAkocmV2aXNpb24gMjUxNTc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC03NTIsNiArNzUyLDcgQEAgc2V0KEphdmFTY3Jp
cHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQQogICAgIHJ1bnRpbWUvQXJyYXlDb252ZW50aW9u
cy5oCiAgICAgcnVudGltZS9BcnJheVByb3RvdHlwZS5oCiAgICAgcnVudGltZS9BcnJheVN0b3Jh
Z2UuaAorICAgIHJ1bnRpbWUvQXJyYXlTdG9yYWdlSW5saW5lcy5oCiAgICAgcnVudGltZS9BdXhp
bGlhcnlCYXJyaWVyLmgKICAgICBydW50aW1lL0F1eGlsaWFyeUJhcnJpZXJJbmxpbmVzLmgKICAg
ICBydW50aW1lL0Jhc2ljQmxvY2tMb2NhdGlvbi5oCkBAIC04MjEsNiArODIyLDcgQEAgc2V0KEph
dmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQQogICAgIHJ1bnRpbWUvR2VuZXJpY1R5
cGVkQXJyYXlWaWV3LmgKICAgICBydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMu
aAogICAgIHJ1bnRpbWUvR2V0UHV0SW5mby5oCisgICAgcnVudGltZS9HZXRWTS5oCiAgICAgcnVu
dGltZS9HbG9iYWxFeGVjdXRhYmxlLmgKICAgICBydW50aW1lL0hhc2hNYXBJbXBsLmgKICAgICBy
dW50aW1lL0lkZW50aWZpZXIuaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQ
SUdsb2JhbE9iamVjdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQVBJR2xvYmFsT2JqZWN0Lm1tCShyZXZpc2lvbiAyNTE1NzkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2
ICsyOSw3IEBACiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKIAogI2ltcG9ydCAiQVBJQ2FzdC5o
IgorI2ltcG9ydCAiQ2FsbEZyYW1lSW5saW5lcy5oIgogI2ltcG9ydCAiQ2F0Y2hTY29wZS5oIgog
I2ltcG9ydCAiQ29tcGxldGlvbi5oIgogI2ltcG9ydCAiRXJyb3IuaCIKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNTE1NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtMTg2NSw2ICsxODY1LDEwIEBACiAJCUZFMUJEMDIxMUU3MjAyNzkwMDEzNEJDOSAv
KiBDZWxsUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkUxQkQwMjAxRTcyMDI3MDAwMTM0QkM5IC8qIENlbGxQcm9maWxlLmggKi87IH07CiAJ
CUZFMUJEMDI1MUU3MjA1MzgwMDEzNEJDOSAvKiBIZWFwVmVyaWZpZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUJEMDIzMUU3MjA1MkYwMDEzNEJD
OSAvKiBIZWFwVmVyaWZpZXIuaCAqLzsgfTsKIAkJRkUxQzBGRkQxQjE5M0U5ODAwQjUzRkNBIC8q
IEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkUxQzBGRkMxQjE5M0U5ODAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFMUQ2RDZEMjM2MjU0NEIwMDdB
NUMyNiAvKiBSZWdpc3RlcklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFMUQ2RDZDMjM2MjU0NEEwMDdBNUMyNiAvKiBSZWdpc3RlcklubGlu
ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlG
RTFENkQ2RjIzNjI1OEZFMDA3QTVDMjYgLyogR2V0Vk0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUQ2RDZFMjM2MjU4RkUwMDdBNUMyNiAvKiBHZXRW
TS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZF
MUQ2RDcxMjM2MjVBQjEwMDdBNUMyNiAvKiBBcnJheVN0b3JhZ2VJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFENkQ3MDIzNjI1QUIwMDA3
QTVDMjYgLyogQXJyYXlTdG9yYWdlSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFMUQ2RDc1MjM2MjY0OUYwMDdBNUMyNiAvKiBQcm90
b0NhbGxGcmFtZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFMUQ2RDc0MjM2MjY0OUQwMDdBNUMyNiAvKiBQcm90b0NhbGxGcmFtZUlubGlu
ZXMuaCAqLzsgfTsKIAkJRkUxRTJDM0YyMjQwREQ1ODAwRjZCNzI5IC8qIE1hY3JvQXNzZW1ibGVy
QVJNNjRFLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTFFMkMzRTIyNDBEMzBCMDBGNkI3MjkgLyogTWFjcm9Bc3NlbWJsZXJBUk02NEUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTFFMkM0MDIyNDBE
RDYyMDBGNkI3MjkgLyogQVJNNjRFQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFFMkMzRDIyNDBEMkY2MDBGNkI3MjkgLyogQVJNNjRF
QXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRkUyMENFOUUxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMjBDRTlDMTVGMDRBOTUwMERG
MzQzMCAvKiBMTEludENMb29wLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTUwNDksNiArNTA1MywxMCBAQAogCQlGRTFCRDAyMzFFNzIwNTJGMDAx
MzRCQzkgLyogSGVhcFZlcmlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEhlYXBWZXJpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTFDMEZGQzFC
MTkzRTk4MDBCNTNGQ0EgLyogRXhjZXB0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEV4Y2VwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTFDMEZG
RTFCMTk0RkQxMDBCNTNGQ0EgLyogRXhjZXB0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEV4Y2VwdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUZFMUQ2RDZDMjM2MjU0NEEwMDdBNUMyNiAvKiBSZWdpc3RlcklubGluZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaXN0ZXJJbmxpbmVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUZFMUQ2RDZFMjM2MjU4RkUwMDdBNUMyNiAvKiBHZXRWTS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZXRWTS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGRTFENkQ3MDIzNjI1QUIwMDA3QTVDMjYgLyogQXJyYXlTdG9yYWdlSW5s
aW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheVN0b3JhZ2VJbmxp
bmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMUQ2RDc0MjM2MjY0OUQwMDdB
NUMyNiAvKiBQcm90b0NhbGxGcmFtZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUHJvdG9DYWxsRnJhbWVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZFMUUyQzNDMjI0MEMxRUYwMEY2QjcyOSAvKiBKU0NQdHJUYWcuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDUHRyVGFnLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkUxRTJDM0QyMjQwRDJGNjAwRjZCNzI5IC8qIEFSTTY0RUFzc2Vt
Ymxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUk02NEVBc3NlbWJsZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUxRTJDM0UyMjQwRDMwQjAwRjZCNzI5
IC8qIE1hY3JvQXNzZW1ibGVyQVJNNjRFLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1hY3JvQXNzZW1ibGVyQVJNNjRFLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC01OTI3LDcgKzU5MzUsOSBAQAogCQkJCTE0MjlENzdCMEVEMjBENzMwMEI4OTYxOSAvKiBJbnRl
cnByZXRlci5oICovLAogCQkJCUUzOUQ5RDg0MUQzOTAwMDYwMDY2NzI4MiAvKiBJbnRlcnByZXRl
cklubGluZXMuaCAqLywKIAkJCQk2NUZCNTExNTE4NEVFOEY4MDBDMTJCNzAgLyogUHJvdG9DYWxs
RnJhbWUuaCAqLywKKwkJCQlGRTFENkQ3NDIzNjI2NDlEMDA3QTVDMjYgLyogUHJvdG9DYWxsRnJh
bWVJbmxpbmVzLmggKi8sCiAJCQkJMTQ5QjI0RkYwRDhBRjZEMTAwOUNCOEM3IC8qIFJlZ2lzdGVy
LmggKi8sCisJCQkJRkUxRDZENkMyMzYyNTQ0QTAwN0E1QzI2IC8qIFJlZ2lzdGVySW5saW5lcy5o
ICovLAogCQkJCURDMTdFODEzMUM5QzdGRDQwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuLmNwcCAq
LywKIAkJCQlEQzE3RTgxNDFDOUM3RkQ0MDA4QTZBQjMgLyogU2hhZG93Q2hpY2tlbi5oICovLAog
CQkJCURDMTdFODE1MUM5QzdGRDQwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuSW5saW5lcy5oICov
LApAQCAtNjkwMSw2ICs2OTExLDcgQEAKIAkJCQlGNjkyQTg0RDAyNTU1OTdEMDFGRjYwRjcgLyog
QXJyYXlQcm90b3R5cGUuY3BwICovLAogCQkJCUY2OTJBODRFMDI1NTU5N0QwMUZGNjBGNyAvKiBB
cnJheVByb3RvdHlwZS5oICovLAogCQkJCTBGQjdGMzhBMTVFRDhFMzgwMEYxNjdCMiAvKiBBcnJh
eVN0b3JhZ2UuaCAqLywKKwkJCQlGRTFENkQ3MDIzNjI1QUIwMDA3QTVDMjYgLyogQXJyYXlTdG9y
YWdlSW5saW5lcy5oICovLAogCQkJCThCNjAxNkYzMUYzRTNDQzAwMEY5REU2QSAvKiBBc3luY0Zy
b21TeW5jSXRlcmF0b3JQcm90b3R5cGUuY3BwICovLAogCQkJCThCNjAxNkY0MUYzRTNDQzAwMEY5
REU2QSAvKiBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUuaCAqLywKIAkJCQk1QjcwQ0ZE
RDFEQjY5RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLywKQEAg
LTcwNzcsNiArNzA4OCw3IEBACiAJCQkJMEYyQjY2QjMxN0I2QjVBQjAwQTdBRTNGIC8qIEdlbmVy
aWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCAqLywKIAkJCQkxNDc4OEVFNTIxNTAxQjI5MDBBNTYx
QzggLyogR2V0UHV0SW5mby5jcHAgKi8sCiAJCQkJNzk2NDY1NjgxQjk1MkZGMDAwMzA1OUVFIC8q
IEdldFB1dEluZm8uaCAqLywKKwkJCQlGRTFENkQ2RTIzNjI1OEZFMDA3QTVDMjYgLyogR2V0Vk0u
aCAqLywKIAkJCQlCQzAyRTlCODBFMTg0NTQ1MDAwRjkyOTcgLyogR2V0dGVyU2V0dGVyLmNwcCAq
LywKIAkJCQlCQzMzN0JERTBFMUFGMEI4MDA3NjkxOEEgLyogR2V0dGVyU2V0dGVyLmggKi8sCiAJ
CQkJRTM1NUQzOEUyMjQ0Njg2QzAwOEYxQUQ2IC8qIEdsb2JhbEV4ZWN1dGFibGUuY3BwICovLApA
QCAtODg3MSw2ICs4ODgzLDcgQEAKIAkJCQkwRkVDODUwNDFCREFDREFDMDA4MEZGNzQgLyogQjNC
bG9ja1dvcmtsaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlEQ0ZERkJEOTFEMUY1RDlCMDBGRTNE
NzIgLyogQjNCb3R0b21Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2QjhBRTMxQzRF
RkUxNzAwOTY5MDUyIC8qIEIzQnJlYWtDcml0aWNhbEVkZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlGRTFENkQ3NTIzNjI2NDlGMDA3QTVDMjYgLyogUHJvdG9DYWxsRnJhbWVJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlEQzlBMEMyMDFEMkQ5Q0IzMDA4NTEyNEUgLyogQjNDYXNlQ29sbGVj
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREM5QTBDMUYxRDJEOUNCMTAwODUxMjRFIC8qIEIz
Q2FzZUNvbGxlY3Rpb25JbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMzOERGQTFCRTk2
QUE4MDAxM0M4OEYgLyogQjNDQ2FsbFZhbHVlLmggaW4gSGVhZGVycyAqLywKQEAgLTg5MTQsNiAr
ODkyNyw3IEBACiAJCQkJMEYzMzhFMUUxQkYyODZFQTAwMTNDODhGIC8qIEIzTG93ZXJNYWNyb3Mu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQzMTlEQTA0MUMxQkU0MEQwMDFEMjYwQiAvKiBCM0xvd2Vy
TWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUxRTFC
REFDREFDMDA4MEZGNzQgLyogQjNMb3dlclRvQWlyLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTFE
NkQ2RDIzNjI1NDRCMDA3QTVDMjYgLyogUmVnaXN0ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0M0FCMjZDNjFDMUE1MzU5MDBEODJBRTYgLyogQjNNYXRoRXh0cmFzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkVDODUyMDFCREFDREFDMDA4MEZGNzQgLyogQjNNZW1vcnlWYWx1ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYyQzYzQzQxRTY5RUY5NDAwQzEzODM5IC8qIEIzTWVtb3J5VmFs
dWVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTk0NzgsNiArOTQ5Miw3IEBACiAJCQkJMEYz
MkJEMTExQkIzNEYxOTAwOTNBNTdGIC8qIEhlYXBIZWxwZXJQb29sLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDMkRBNzc4MzE4RTI1OTk5MDA2NkZDQjYgLyogSGVhcElubGluZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTJBRDg5MzJCMTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUu
aCBpbiBIZWFkZXJzICovLAorCQkJCUZFMUQ2RDcxMjM2MjVBQjEwMDdBNUMyNiAvKiBBcnJheVN0
b3JhZ2VJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTMzOUVDOTFCQjRCNDYwMDA1NEYw
MDUgLyogSGVhcE9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTM5OEZBQjFDNzUwREE0
MDA2MEE5NjMgLyogSGVhcFByb2ZpbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDMkFCMTFD
NjU0NEYyMDBBMThENzggLyogSGVhcFNuYXBzaG90LmggaW4gSGVhZGVycyAqLywKQEAgLTk5OTUs
NiArMTAwMTAsNyBAQAogCQkJCUJDRDIwMkM0MEUxNzA2QTcwMDJDN0U4MiAvKiBSZWdFeHBQcm90
b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDVEMEUxNkY1Q0QwMEIzNDQ2MCAvKiBS
ZWdpc3Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMyOEM2QzkxREE0MzJGOTAwRDI1NUZEIC8q
IFJlZ2lzdGVyQXRPZmZzZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFMUQ2RDZGMjM2MjU4RkUw
MDdBNUMyNiAvKiBHZXRWTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMyOEM2QzgxREE0MzA2MTAw
RDI1NUZEIC8qIFJlZ2lzdGVyQXRPZmZzZXRMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NjlB
MDcyQjBFRDFDRTY5MDBGMUY2ODEgLyogUmVnaXN0ZXJJRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTY4OENCMTYwRUQxMkI0RTAwMUQ2NDk5IC8qIFJlZ2lzdGVySW5mby5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xMTA0MCw3ICsxMTA1Niw2IEBACiAJCQkJMzNCMkE1NDgyMjY1NDNCRjAwNUEwRjc5IC8q
IEZUTExvd2VyREZHVG9CMy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzQxOTY2MjIyNzBFMDAw
MDA0N0I3Q0QgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJDb21wYXRpYmlsaXR5LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUzNkIzMTlFMUY3MzVGMTYwMDM3RkMzMyAvKiBMb3dMZXZlbElu
dGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUZFMUQ2RDQ1MjM1ODBFMUYwMDdBNUMy
NiAvKiBPcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQyNzRBMTU4RUJFOTEwMDRD
QjlGRiAvKiB1ZGlzODYuYyBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQyNzQwMTU4RUJFOEIwMDRD
QjlGRiAvKiB1ZGlzODZfZGVjb2RlLmMgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0Mjc0RDE1OEVC
RkU2MDA0Q0I5RkYgLyogdWRpczg2X2l0YWJfaG9sZGVyLmMgaW4gU291cmNlcyAqLywKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDI1
MTU3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29y
a2luZyBjb3B5KQpAQCAtMTAzMiwzMCArMTAzMiw2IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFJhcmVEYXRhPiBtX3JhcmVEYXRhOwogfTsKIAotaW5saW5lIFJlZ2lzdGVyJiBDYWxs
RnJhbWU6OnIoaW50IGluZGV4KQotewotICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gdGhpcy0+
Y29kZUJsb2NrKCk7Ci0gICAgaWYgKGNvZGVCbG9jay0+aXNDb25zdGFudFJlZ2lzdGVySW5kZXgo
aW5kZXgpKQotICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8UmVnaXN0ZXIqPigmY29k
ZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVyKGluZGV4KSk7Ci0gICAgcmV0dXJuIHRoaXNbaW5kZXhd
OwotfQotCi1pbmxpbmUgUmVnaXN0ZXImIENhbGxGcmFtZTo6cihWaXJ0dWFsUmVnaXN0ZXIgcmVn
KQotewotICAgIHJldHVybiByKHJlZy5vZmZzZXQoKSk7Ci19Ci0KLWlubGluZSBSZWdpc3RlciYg
Q2FsbEZyYW1lOjp1bmNoZWNrZWRSKGludCBpbmRleCkKLXsKLSAgICBSRUxFQVNFX0FTU0VSVChp
bmRleCA8IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KTsKLSAgICByZXR1cm4gdGhpc1tpbmRl
eF07Ci19Ci0KLWlubGluZSBSZWdpc3RlciYgQ2FsbEZyYW1lOjp1bmNoZWNrZWRSKFZpcnR1YWxS
ZWdpc3RlciByZWcpCi17Ci0gICAgcmV0dXJuIHVuY2hlY2tlZFIocmVnLm9mZnNldCgpKTsKLX0K
LQogdGVtcGxhdGUgPHR5cGVuYW1lIEV4ZWN1dGFibGVUeXBlPgogRXhjZXB0aW9uKiBTY3JpcHRF
eGVjdXRhYmxlOjpwcmVwYXJlRm9yRXhlY3V0aW9uKFZNJiB2bSwgSlNGdW5jdGlvbiogZnVuY3Rp
b24sIEpTU2NvcGUqIHNjb3BlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIENvZGVCbG9j
ayomIHJlc3VsdENvZGVCbG9jaykKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9NZXRhZGF0YVRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5jcHAJKHJldmlzaW9uIDI1MTU3OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTWV0YWRhdGFU
YWJsZS5oIgogCi0jaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgogI2luY2x1ZGUgIk9wY29kZUlubGluZXMuaCIKICNpbmNsdWRlICJVbmxpbmtlZE1ldGFkYXRh
VGFibGVJbmxpbmVzLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjUxNTc5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcg
KzM3LDcgQEAKICNpbmNsdWRlICJERkdNYXlFeGl0LmgiCiAjaW5jbHVkZSAiREZHT1NSRXhpdEZ1
enouaCIKICNpbmNsdWRlICJERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5o
IgotI2luY2x1ZGUgIkRGR1Nsb3dQYXRoR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiREZHU2xvd1Bh
dGhHZW5lcmF0b3IuLTIwMTloIgogI2luY2x1ZGUgIkRGR1NuaXBwZXRQYXJhbXMuaCIKICNpbmNs
dWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJEaXNhbGxvd01hY3JvU2NyYXRjaFJl
Z2lzdGVyVXNhZ2UuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDI1MTU3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBA
QAogI2luY2x1ZGUgIkIzU2xvdEJhc2VWYWx1ZS5oIgogI2luY2x1ZGUgIkIzU3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJC
dXR0ZXJmbHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lU2h1ZmZsZXIuaCIKICNpbmNs
dWRlICJDb2RlQmxvY2tXaXRoSklUVHlwZS5oIgogI2luY2x1ZGUgIkRGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
Q2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0NhbGxGcmFtZS5oCShyZXZpc2lvbiAyNTE1NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBA
CiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtk
ZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20p
Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xMDQsMjYgKzEwNCwxNCBAQCBuYW1l
c3BhY2UgSlNDICB7CiAgICAgICAgIC8vIHlldCBzdXJlIGlmIHRoZSBjYWxsZWUgaXMgYSBjZWxs
LiBJbiBnZW5lcmFsLCBhIEpTIGNhbGxlZSBpcyBndWFyYW50ZWVkCiAgICAgICAgIC8vIHRvIGJl
IGEgY2VsbCwgaG93ZXZlciwgdGhlcmUgaXMgYSBicmllZiB3aW5kb3cgd2hlcmUgd2UgbmVlZCB0
byBjaGVjawogICAgICAgICAvLyB0byBzZWUgaWYgaXQncyBhIGNlbGwsIGFuZCBpZiBpdCdzIG5v
dCwgd2UgdGhyb3cgYW4gZXhjZXB0aW9uLgotICAgICAgICBKU1ZhbHVlIGd1YXJhbnRlZWRKU1Zh
bHVlQ2FsbGVlKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKCFjYWxsZWUo
KS5pc1dhc20oKSk7Ci0gICAgICAgICAgICByZXR1cm4gdGhpc1tDYWxsRnJhbWVTbG90OjpjYWxs
ZWVdLmpzVmFsdWUoKTsKLSAgICAgICAgfQotICAgICAgICBKU09iamVjdCoganNDYWxsZWUoKSBj
b25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoIWNhbGxlZSgpLmlzV2FzbSgpKTsK
LSAgICAgICAgICAgIHJldHVybiB0aGlzW0NhbGxGcmFtZVNsb3Q6OmNhbGxlZV0ub2JqZWN0KCk7
Ci0gICAgICAgIH0KKyAgICAgICAgaW5saW5lIEpTVmFsdWUgZ3VhcmFudGVlZEpTVmFsdWVDYWxs
ZWUoKSBjb25zdDsKKyAgICAgICAgaW5saW5lIEpTT2JqZWN0KiBqc0NhbGxlZSgpIGNvbnN0Owog
ICAgICAgICBDYWxsZWVCaXRzIGNhbGxlZSgpIGNvbnN0IHsgcmV0dXJuIENhbGxlZUJpdHModGhp
c1tDYWxsRnJhbWVTbG90OjpjYWxsZWVdLnBvaW50ZXIoKSk7IH0KICAgICAgICAgU1VQUFJFU1Nf
QVNBTiBDYWxsZWVCaXRzIHVuc2FmZUNhbGxlZSgpIGNvbnN0IHsgcmV0dXJuIENhbGxlZUJpdHMo
dGhpc1tDYWxsRnJhbWVTbG90OjpjYWxsZWVdLmFzYW5VbnNhZmVQb2ludGVyKCkpOyB9Ci0gICAg
ICAgIENvZGVCbG9jayogY29kZUJsb2NrKCkgY29uc3QgeyByZXR1cm4gdGhpc1tDYWxsRnJhbWVT
bG90Ojpjb2RlQmxvY2tdLlJlZ2lzdGVyOjpjb2RlQmxvY2soKTsgfQorICAgICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jaygpIGNvbnN0OwogICAgICAgICBDb2RlQmxvY2sqKiBhZGRyZXNzT2ZDb2Rl
QmxvY2soKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8Q29kZUJsb2NrKio+KHRoaXMgKyBD
YWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spOyB9Ci0gICAgICAgIFNVUFBSRVNTX0FTQU4gQ29kZUJs
b2NrKiB1bnNhZmVDb2RlQmxvY2soKSBjb25zdCB7IHJldHVybiB0aGlzW0NhbGxGcmFtZVNsb3Q6
OmNvZGVCbG9ja10uUmVnaXN0ZXI6OmFzYW5VbnNhZmVDb2RlQmxvY2soKTsgfQotICAgICAgICBK
U1Njb3BlKiBzY29wZShpbnQgc2NvcGVSZWdpc3Rlck9mZnNldCkgY29uc3QKLSAgICAgICAgewot
ICAgICAgICAgICAgQVNTRVJUKHRoaXNbc2NvcGVSZWdpc3Rlck9mZnNldF0uUmVnaXN0ZXI6OnNj
b3BlKCkpOwotICAgICAgICAgICAgcmV0dXJuIHRoaXNbc2NvcGVSZWdpc3Rlck9mZnNldF0uUmVn
aXN0ZXI6OnNjb3BlKCk7Ci0gICAgICAgIH0KKyAgICAgICAgaW5saW5lIFNVUFBSRVNTX0FTQU4g
Q29kZUJsb2NrKiB1bnNhZmVDb2RlQmxvY2soKSBjb25zdDsKKyAgICAgICAgaW5saW5lIEpTU2Nv
cGUqIHNjb3BlKGludCBzY29wZVJlZ2lzdGVyT2Zmc2V0KSBjb25zdDsKIAogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBib29sIGlzQW55V2FzbUNhbGxlZSgpOwogCkBAIC0xODMsMTggKzE3MSwx
MyBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAgICAgIC8vIENvZGVPcmlnaW4oQnl0ZWNvZGVJbmRl
eCgwKSkgaWYgd2UncmUgaW4gbmF0aXZlIGNvZGUuCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IENvZGVPcmlnaW4gY29kZU9yaWdpbigpOwogCi0gICAgICAgIFJlZ2lzdGVyKiB0b3BPZkZyYW1l
KCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFjb2RlQmxvY2soKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gcmVnaXN0ZXJzKCk7Ci0gICAgICAgICAgICByZXR1cm4gdG9wT2ZGcmFtZUlu
dGVybmFsKCk7Ci0gICAgICAgIH0KKyAgICAgICAgaW5saW5lIFJlZ2lzdGVyKiB0b3BPZkZyYW1l
KCk7CiAgICAgCiAgICAgICAgIGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50VlBDKCkgY29uc3Q7
IC8vIFRoaXMgb25seSBtYWtlcyBzZW5zZSBpbiB0aGUgTExJbnQgYW5kIGJhc2VsaW5lLgogICAg
ICAgICB2b2lkIHNldEN1cnJlbnRWUEMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKIAogICAgICAgICB2
b2lkIHNldENhbGxlckZyYW1lKENhbGxGcmFtZSogZnJhbWUpIHsgY2FsbGVyRnJhbWVBbmRQQygp
LmNhbGxlckZyYW1lID0gZnJhbWU7IH0KLSAgICAgICAgdm9pZCBzZXRTY29wZShpbnQgc2NvcGVS
ZWdpc3Rlck9mZnNldCwgSlNTY29wZSogc2NvcGUpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0
aGlzKVtzY29wZVJlZ2lzdGVyT2Zmc2V0XSA9IHNjb3BlOyB9CisgICAgICAgIGlubGluZSB2b2lk
IHNldFNjb3BlKGludCBzY29wZVJlZ2lzdGVyT2Zmc2V0LCBKU1Njb3BlKik7CiAKICAgICAgICAg
c3RhdGljIHZvaWQgaW5pdERlcHJlY2F0ZWRDYWxsRnJhbWVGb3JEZWJ1Z2dlcihDYWxsRnJhbWUq
IGdsb2JhbEV4ZWMsIEpTQ2FsbGVlKiBnbG9iYWxDYWxsZWUpOwogCkBAIC0yNjksOCArMjUyLDgg
QEAgbmFtZXNwYWNlIEpTQyAgewogICAgICAgICBib29sIGlzV2FzbUZyYW1lKCkgY29uc3Q7CiAK
ICAgICAgICAgdm9pZCBzZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhpbnQgY291bnQpIHsg
c3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
XS5wYXlsb2FkKCkgPSBjb3VudDsgfQotICAgICAgICB2b2lkIHNldENhbGxlZShKU09iamVjdCog
Y2FsbGVlKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbQ2FsbEZyYW1lU2xvdDo6Y2Fs
bGVlXSA9IGNhbGxlZTsgfQotICAgICAgICB2b2lkIHNldENvZGVCbG9jayhDb2RlQmxvY2sqIGNv
ZGVCbG9jaykgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW0NhbGxGcmFtZVNsb3Q6OmNv
ZGVCbG9ja10gPSBjb2RlQmxvY2s7IH0KKyAgICAgICAgaW5saW5lIHZvaWQgc2V0Q2FsbGVlKEpT
T2JqZWN0Kik7CisgICAgICAgIGlubGluZSB2b2lkIHNldENvZGVCbG9jayhDb2RlQmxvY2sqKTsK
ICAgICAgICAgdm9pZCBzZXRSZXR1cm5QQyh2b2lkKiB2YWx1ZSkgeyBjYWxsZXJGcmFtZUFuZFBD
KCkucmV0dXJuUEMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IEluc3RydWN0aW9uKj4odmFsdWUp
OyB9CiAKICAgICAgICAgU3RyaW5nIGZyaWVuZGx5RnVuY3Rpb25OYW1lKCk7CkBAIC0zMjMsOCAr
MzA2LDYgQEAgbmFtZXNwYWNlIEpTQyAgewogICAgICAgICBTVVBQUkVTU19BU0FOIGNvbnN0IENh
bGxlckZyYW1lQW5kUEMmIHVuc2FmZUNhbGxlckZyYW1lQW5kUEMoKSBjb25zdCB7IHJldHVybiAq
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBDYWxsZXJGcmFtZUFuZFBDKj4odGhpcyk7IH0KICAgICB9
OwogCi0vLyBIZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IFZNJiBmcm9tIEpTR2xvYmFsT2JqZWN0KiBp
ZiBKU0dsb2JhbE9iamVjdC5oIGlzIG5vdCBpbmNsdWRlZC4KLVZNJiBnZXRWTShKU0dsb2JhbE9i
amVjdCopOwogSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0Zyb21KU0NvZGUodm9pZCogcmV0dXJu
QWRkcmVzcyk7CiAKICNpZiBVU0UoQlVJTFRJTl9GUkFNRV9BRERSRVNTKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZUlubGluZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lSW5saW5lcy5o
CShyZXZpc2lvbiAyNTE1NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
Q2FsbEZyYW1lSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDkgKzI4LDY2IEBACiAjaW5jbHVk
ZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiSlNDYWxsZWUuaCIKICNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdC5oIgorI2luY2x1ZGUgIlJlZ2lzdGVySW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlND
IHsKIAoraW5saW5lIFJlZ2lzdGVyJiBDYWxsRnJhbWU6OnIoaW50IGluZGV4KQoreworICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gdGhpcy0+Y29kZUJsb2NrKCk7CisgICAgaWYgKGNvZGVCbG9j
ay0+aXNDb25zdGFudFJlZ2lzdGVySW5kZXgoaW5kZXgpKQorICAgICAgICByZXR1cm4gKnJlaW50
ZXJwcmV0X2Nhc3Q8UmVnaXN0ZXIqPigmY29kZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVyKGluZGV4
KSk7CisgICAgcmV0dXJuIHRoaXNbaW5kZXhdOworfQorCitpbmxpbmUgUmVnaXN0ZXImIENhbGxG
cmFtZTo6cihWaXJ0dWFsUmVnaXN0ZXIgcmVnKQoreworICAgIHJldHVybiByKHJlZy5vZmZzZXQo
KSk7Cit9CisKK2lubGluZSBSZWdpc3RlciYgQ2FsbEZyYW1lOjp1bmNoZWNrZWRSKGludCBpbmRl
eCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChpbmRleCA8IEZpcnN0Q29uc3RhbnRSZWdpc3Rlcklu
ZGV4KTsKKyAgICByZXR1cm4gdGhpc1tpbmRleF07Cit9CisKK2lubGluZSBSZWdpc3RlciYgQ2Fs
bEZyYW1lOjp1bmNoZWNrZWRSKFZpcnR1YWxSZWdpc3RlciByZWcpCit7CisgICAgcmV0dXJuIHVu
Y2hlY2tlZFIocmVnLm9mZnNldCgpKTsKK30KKworaW5saW5lIEpTVmFsdWUgQ2FsbEZyYW1lOjpn
dWFyYW50ZWVkSlNWYWx1ZUNhbGxlZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFjYWxsZWUoKS5p
c1dhc20oKSk7CisgICAgcmV0dXJuIHRoaXNbQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlXS5qc1ZhbHVl
KCk7Cit9CisKK2lubGluZSBKU09iamVjdCogQ2FsbEZyYW1lOjpqc0NhbGxlZSgpIGNvbnN0Cit7
CisgICAgQVNTRVJUKCFjYWxsZWUoKS5pc1dhc20oKSk7CisgICAgcmV0dXJuIHRoaXNbQ2FsbEZy
YW1lU2xvdDo6Y2FsbGVlXS5vYmplY3QoKTsKK30KKworaW5saW5lIENvZGVCbG9jayogQ2FsbEZy
YW1lOjpjb2RlQmxvY2soKSBjb25zdAoreworICAgIHJldHVybiB0aGlzW0NhbGxGcmFtZVNsb3Q6
OmNvZGVCbG9ja10uUmVnaXN0ZXI6OmNvZGVCbG9jaygpOworfQorCitpbmxpbmUgU1VQUFJFU1Nf
QVNBTiBDb2RlQmxvY2sqIENhbGxGcmFtZTo6dW5zYWZlQ29kZUJsb2NrKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gdGhpc1tDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2tdLlJlZ2lzdGVyOjphc2FuVW5z
YWZlQ29kZUJsb2NrKCk7Cit9CisKK2lubGluZSBKU0dsb2JhbE9iamVjdCogQ2FsbEZyYW1lOjps
ZXhpY2FsR2xvYmFsT2JqZWN0KFZNJiB2bSkgY29uc3QKK3sKKyAgICBVTlVTRURfUEFSQU0odm0p
OworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyAgICBpZiAoY2FsbGVlKCkuaXNXYXNtKCkpCisg
ICAgICAgIHJldHVybiBsZXhpY2FsR2xvYmFsT2JqZWN0RnJvbVdhc21DYWxsZWUodm0pOworI2Vu
ZGlmCisgICAgcmV0dXJuIGpzQ2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOworfQorCiBpbmxpbmUg
Ym9vbCBDYWxsRnJhbWU6OmlzU3RhY2tPdmVyZmxvd0ZyYW1lKCkgY29uc3QKIHsKICAgICBpZiAo
Y2FsbGVlKCkuaXNXYXNtKCkpCkBAIC00Myw0ICsxMDAsMzIgQEAgaW5saW5lIGJvb2wgQ2FsbEZy
YW1lOjppc1dhc21GcmFtZSgpIGNvbgogICAgIHJldHVybiBjYWxsZWUoKS5pc1dhc20oKTsKIH0K
IAoraW5saW5lIHZvaWQgQ2FsbEZyYW1lOjpzZXRDYWxsZWUoSlNPYmplY3QqIGNhbGxlZSkKK3sK
KyAgICBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW0NhbGxGcmFtZVNsb3Q6OmNhbGxlZV0g
PSBjYWxsZWU7Cit9CisKK2lubGluZSB2b2lkIENhbGxGcmFtZTo6c2V0Q29kZUJsb2NrKENvZGVC
bG9jayogY29kZUJsb2NrKQoreworICAgIHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbQ2Fs
bEZyYW1lU2xvdDo6Y29kZUJsb2NrXSA9IGNvZGVCbG9jazsKK30KKworaW5saW5lIHZvaWQgQ2Fs
bEZyYW1lOjpzZXRTY29wZShpbnQgc2NvcGVSZWdpc3Rlck9mZnNldCwgSlNTY29wZSogc2NvcGUp
Cit7CisgICAgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtzY29wZVJlZ2lzdGVyT2Zmc2V0
XSA9IHNjb3BlOworfQorCitpbmxpbmUgSlNTY29wZSogQ2FsbEZyYW1lOjpzY29wZShpbnQgc2Nv
cGVSZWdpc3Rlck9mZnNldCkgY29uc3QKK3sKKyAgICBBU1NFUlQodGhpc1tzY29wZVJlZ2lzdGVy
T2Zmc2V0XS5SZWdpc3Rlcjo6c2NvcGUoKSk7CisgICAgcmV0dXJuIHRoaXNbc2NvcGVSZWdpc3Rl
ck9mZnNldF0uUmVnaXN0ZXI6OnNjb3BlKCk7Cit9CisKK2lubGluZSBSZWdpc3RlciogQ2FsbEZy
YW1lOjp0b3BPZkZyYW1lKCkKK3sKKyAgICBpZiAoIWNvZGVCbG9jaygpKQorICAgICAgICByZXR1
cm4gcmVnaXN0ZXJzKCk7CisgICAgcmV0dXJuIHRvcE9mRnJhbWVJbnRlcm5hbCgpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMjUxNTc5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjYsNyArNjYsNyBAQAogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgogI2luY2x1ZGUg
IlBhcnNlci5oIgogI2luY2x1ZGUgIlByb2dyYW1Db2RlQmxvY2suaCIKLSNpbmNsdWRlICJQcm90
b0NhbGxGcmFtZS5oIgorI2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1lSW5saW5lcy5oIgogI2luY2x1
ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiUmVn
aXN0ZXJBdE9mZnNldExpc3QuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9Qcm90b0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5oCShyZXZpc2lvbiAyNTE1NzkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQ3LDE2ICs0NywxMyBAQCBwdWJsaWM6CiAgICAgSlNWYWx1ZSAqYXJnczsKICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0OwogCi0gICAgdm9pZCBpbml0KENvZGVCbG9j
ayosIEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqLCBKU1ZhbHVlLCBpbnQsIEpTVmFsdWUqIG90
aGVyQXJncyA9IDApOworICAgIGlubGluZSB2b2lkIGluaXQoQ29kZUJsb2NrKiwgSlNHbG9iYWxP
YmplY3QqLCBKU09iamVjdCosIEpTVmFsdWUsIGludCwgSlNWYWx1ZSogb3RoZXJBcmdzID0gMCk7
CiAKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaygpIGNvbnN0IHsgcmV0dXJuIGNvZGVCbG9ja1Zh
bHVlLlJlZ2lzdGVyOjpjb2RlQmxvY2soKTsgfQotICAgIHZvaWQgc2V0Q29kZUJsb2NrKENvZGVC
bG9jayogY29kZUJsb2NrKSB7IGNvZGVCbG9ja1ZhbHVlID0gY29kZUJsb2NrOyB9CisgICAgaW5s
aW5lIENvZGVCbG9jayogY29kZUJsb2NrKCkgY29uc3Q7CisgICAgaW5saW5lIHZvaWQgc2V0Q29k
ZUJsb2NrKENvZGVCbG9jayopOwogCi0gICAgSlNPYmplY3QqIGNhbGxlZSgpIGNvbnN0IHsgcmV0
dXJuIGNhbGxlZVZhbHVlLlJlZ2lzdGVyOjpvYmplY3QoKTsgfQotICAgIHZvaWQgc2V0Q2FsbGVl
KEpTT2JqZWN0KiBjYWxsZWUpCi0gICAgewotICAgICAgICBjYWxsZWVWYWx1ZSA9IGNhbGxlZTsK
LSAgICB9CisgICAgaW5saW5lIEpTT2JqZWN0KiBjYWxsZWUoKSBjb25zdDsKKyAgICBpbmxpbmUg
dm9pZCBzZXRDYWxsZWUoSlNPYmplY3QqKTsKICAgICB2b2lkIHNldEdsb2JhbE9iamVjdChKU0ds
b2JhbE9iamVjdCogb2JqZWN0KQogICAgIHsKICAgICAgICAgZ2xvYmFsT2JqZWN0ID0gb2JqZWN0
OwpAQCAtODYsMjMgKzgzLDQgQEAgcHVibGljOgogICAgIH0KIH07CiAKLWlubGluZSB2b2lkIFBy
b3RvQ2FsbEZyYW1lOjppbml0KENvZGVCbG9jayogY29kZUJsb2NrLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU09iamVjdCogY2FsbGVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgaW50IGFy
Z0NvdW50SW5jbHVkaW5nVGhpcywgSlNWYWx1ZSogb3RoZXJBcmdzKQotewotICAgIHRoaXMtPmFy
Z3MgPSBvdGhlckFyZ3M7Ci0gICAgdGhpcy0+c2V0Q29kZUJsb2NrKGNvZGVCbG9jayk7Ci0gICAg
dGhpcy0+c2V0Q2FsbGVlKGNhbGxlZSk7Ci0gICAgdGhpcy0+c2V0R2xvYmFsT2JqZWN0KGdsb2Jh
bE9iamVjdCk7Ci0gICAgdGhpcy0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoYXJnQ291
bnRJbmNsdWRpbmdUaGlzKTsKLSAgICBpZiAoY29kZUJsb2NrICYmIGFyZ0NvdW50SW5jbHVkaW5n
VGhpcyA8IGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKQotICAgICAgICB0aGlzLT5oYXNBcml0
eU1pc21hdGNoID0gdHJ1ZTsKLSAgICBlbHNlCi0gICAgICAgIHRoaXMtPmhhc0FyaXR5TWlzbWF0
Y2ggPSBmYWxzZTsKLQotICAgIC8vIFJvdW5kIHVwIGFyZ0NvdW50SW5jbHVkaW5nVGhpcyB0byBr
ZWVwIHRoZSBzdGFjayBmcmFtZSBzaXplIGFsaWduZWQuCi0gICAgc2l6ZV90IHBhZGRlZEFyZ3ND
b3VudCA9IHJvdW5kQXJndW1lbnRDb3VudFRvQWxpZ25GcmFtZShhcmdDb3VudEluY2x1ZGluZ1Ro
aXMpOwotICAgIHRoaXMtPnNldFBhZGRlZEFyZ0NvdW50KHBhZGRlZEFyZ3NDb3VudCk7Ci0gICAg
dGhpcy0+Y2xlYXJDdXJyZW50VlBDKCk7Ci0gICAgdGhpcy0+c2V0VGhpc1ZhbHVlKHRoaXNWYWx1
ZSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZUlubGluZXMuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxs
RnJhbWVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJSZWdpc3RlcklubGluZXMuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2lubGluZSB2b2lkIFByb3RvQ2FsbEZyYW1lOjppbml0KENvZGVC
bG9jayogY29kZUJsb2NrLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCog
Y2FsbGVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgaW50IGFyZ0NvdW50SW5jbHVkaW5nVGhpcywgSlNW
YWx1ZSogb3RoZXJBcmdzKQoreworICAgIHRoaXMtPmFyZ3MgPSBvdGhlckFyZ3M7CisgICAgdGhp
cy0+c2V0Q29kZUJsb2NrKGNvZGVCbG9jayk7CisgICAgdGhpcy0+c2V0Q2FsbGVlKGNhbGxlZSk7
CisgICAgdGhpcy0+c2V0R2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgdGhpcy0+c2V0
QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoYXJnQ291bnRJbmNsdWRpbmdUaGlzKTsKKyAgICBp
ZiAoY29kZUJsb2NrICYmIGFyZ0NvdW50SW5jbHVkaW5nVGhpcyA8IGNvZGVCbG9jay0+bnVtUGFy
YW1ldGVycygpKQorICAgICAgICB0aGlzLT5oYXNBcml0eU1pc21hdGNoID0gdHJ1ZTsKKyAgICBl
bHNlCisgICAgICAgIHRoaXMtPmhhc0FyaXR5TWlzbWF0Y2ggPSBmYWxzZTsKKworICAgIC8vIFJv
dW5kIHVwIGFyZ0NvdW50SW5jbHVkaW5nVGhpcyB0byBrZWVwIHRoZSBzdGFjayBmcmFtZSBzaXpl
IGFsaWduZWQuCisgICAgc2l6ZV90IHBhZGRlZEFyZ3NDb3VudCA9IHJvdW5kQXJndW1lbnRDb3Vu
dFRvQWxpZ25GcmFtZShhcmdDb3VudEluY2x1ZGluZ1RoaXMpOworICAgIHRoaXMtPnNldFBhZGRl
ZEFyZ0NvdW50KHBhZGRlZEFyZ3NDb3VudCk7CisgICAgdGhpcy0+Y2xlYXJDdXJyZW50VlBDKCk7
CisgICAgdGhpcy0+c2V0VGhpc1ZhbHVlKHRoaXNWYWx1ZSk7Cit9CisKK2lubGluZSBKU09iamVj
dCogUHJvdG9DYWxsRnJhbWU6OmNhbGxlZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNhbGxlZVZh
bHVlLlJlZ2lzdGVyOjpvYmplY3QoKTsKK30KKworaW5saW5lIHZvaWQgUHJvdG9DYWxsRnJhbWU6
OnNldENhbGxlZShKU09iamVjdCogY2FsbGVlKQoreworICAgIGNhbGxlZVZhbHVlID0gY2FsbGVl
OworfQorCitpbmxpbmUgQ29kZUJsb2NrKiBQcm90b0NhbGxGcmFtZTo6Y29kZUJsb2NrKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gY29kZUJsb2NrVmFsdWUuUmVnaXN0ZXI6OmNvZGVCbG9jaygpOwor
fQorCitpbmxpbmUgdm9pZCBQcm90b0NhbGxGcmFtZTo6c2V0Q29kZUJsb2NrKENvZGVCbG9jayog
Y29kZUJsb2NrKQoreworICAgIGNvZGVCbG9ja1ZhbHVlID0gY29kZUJsb2NrOworfQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9S
ZWdpc3Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9SZWdpc3Rlci5oCShyZXZpc2lvbiAyNTE1NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUxLDE3ICs1MSwxNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNWYWx1ZSBhc2FuVW5zYWZlSlNWYWx1ZSgpIGNv
bnN0OwogICAgICAgICBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkSlNWYWx1ZSgpIGNvbnN0OwogICAg
ICAgICAKLSAgICAgICAgUmVnaXN0ZXImIG9wZXJhdG9yPShDYWxsRnJhbWUqKTsKLSAgICAgICAg
UmVnaXN0ZXImIG9wZXJhdG9yPShDb2RlQmxvY2sqKTsKLSAgICAgICAgUmVnaXN0ZXImIG9wZXJh
dG9yPShKU1Njb3BlKik7Ci0gICAgICAgIFJlZ2lzdGVyJiBvcGVyYXRvcj0oSlNPYmplY3QqKTsK
KyAgICAgICAgQUxXQVlTX0lOTElORSBSZWdpc3RlciYgb3BlcmF0b3I9KENhbGxGcmFtZSopOwor
ICAgICAgICBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVyJiBvcGVyYXRvcj0oQ29kZUJsb2NrKik7Cisg
ICAgICAgIEFMV0FZU19JTkxJTkUgUmVnaXN0ZXImIG9wZXJhdG9yPShKU1Njb3BlKik7CisgICAg
ICAgIEFMV0FZU19JTkxJTkUgUmVnaXN0ZXImIG9wZXJhdG9yPShKU09iamVjdCopOwogCiAgICAg
ICAgIGludDMyX3QgaSgpIGNvbnN0OwotICAgICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSgpIGNv
bnN0OwotICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaygpIGNvbnN0OwotICAgICAgICBDb2Rl
QmxvY2sqIGFzYW5VbnNhZmVDb2RlQmxvY2soKSBjb25zdDsKLSAgICAgICAgSlNPYmplY3QqIG9i
amVjdCgpIGNvbnN0OwotICAgICAgICBKU1Njb3BlKiBzY29wZSgpIGNvbnN0OworICAgICAgICBB
TFdBWVNfSU5MSU5FIENhbGxGcmFtZSogY2FsbEZyYW1lKCkgY29uc3Q7CisgICAgICAgIEFMV0FZ
U19JTkxJTkUgQ29kZUJsb2NrKiBjb2RlQmxvY2soKSBjb25zdDsKKyAgICAgICAgQUxXQVlTX0lO
TElORSBDb2RlQmxvY2sqIGFzYW5VbnNhZmVDb2RlQmxvY2soKSBjb25zdDsKKyAgICAgICAgQUxX
QVlTX0lOTElORSBKU09iamVjdCogb2JqZWN0KCkgY29uc3Q7CisgICAgICAgIEFMV0FZU19JTkxJ
TkUgSlNTY29wZSogc2NvcGUoKSBjb25zdDsKICAgICAgICAgaW50MzJfdCB1bmJveGVkSW50MzIo
KSBjb25zdDsKICAgICAgICAgaW50MzJfdCBhc2FuVW5zYWZlVW5ib3hlZEludDMyKCkgY29uc3Q7
CiAgICAgICAgIGludDY0X3QgdW5ib3hlZEludDUyKCkgY29uc3Q7CkBAIC0xMzYsMzggKzEzNiwx
MSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIC8vIEludGVycHJldGVyIGZ1bmN0aW9ucwogCi0g
ICAgQUxXQVlTX0lOTElORSBSZWdpc3RlciYgUmVnaXN0ZXI6Om9wZXJhdG9yPShDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKLSAgICB7Ci0gICAgICAgIHUuY2FsbEZyYW1lID0gY2FsbEZyYW1lOwotICAg
ICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSBSZWdpc3RlciYg
UmVnaXN0ZXI6Om9wZXJhdG9yPShDb2RlQmxvY2sqIGNvZGVCbG9jaykKLSAgICB7Ci0gICAgICAg
IHUuY29kZUJsb2NrID0gY29kZUJsb2NrOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQot
CiAgICAgQUxXQVlTX0lOTElORSBpbnQzMl90IFJlZ2lzdGVyOjppKCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHJldHVybiBqc1ZhbHVlKCkuYXNJbnQzMigpOwogICAgIH0KIAotICAgIEFMV0FZU19J
TkxJTkUgQ2FsbEZyYW1lKiBSZWdpc3Rlcjo6Y2FsbEZyYW1lKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiB1LmNhbGxGcmFtZTsKLSAgICB9Ci0gICAgCi0gICAgQUxXQVlTX0lOTElORSBD
b2RlQmxvY2sqIFJlZ2lzdGVyOjpjb2RlQmxvY2soKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIHUuY29kZUJsb2NrOwotICAgIH0KLQotICAgIFNVUFBSRVNTX0FTQU4gQUxXQVlTX0lOTElO
RSBDb2RlQmxvY2sqIFJlZ2lzdGVyOjphc2FuVW5zYWZlQ29kZUJsb2NrKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiB1LmNvZGVCbG9jazsKLSAgICB9Ci0KICAgICBBTFdBWVNfSU5MSU5F
IGludDMyX3QgUmVnaXN0ZXI6OnVuYm94ZWRJbnQzMigpIGNvbnN0CiAgICAgewogICAgICAgICBy
ZXR1cm4gcGF5bG9hZCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L1JlZ2lzdGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9SZWdpc3RlcklubGluZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
Q29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSlNTY29wZS5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitBTFdBWVNfSU5MSU5FIENhbGxGcmFtZSogUmVnaXN0ZXI6
OmNhbGxGcmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHUuY2FsbEZyYW1lOworfQorCitBTFdB
WVNfSU5MSU5FIENvZGVCbG9jayogUmVnaXN0ZXI6OmNvZGVCbG9jaygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHUuY29kZUJsb2NrOworfQorCitTVVBQUkVTU19BU0FOIEFMV0FZU19JTkxJTkUgQ29k
ZUJsb2NrKiBSZWdpc3Rlcjo6YXNhblVuc2FmZUNvZGVCbG9jaygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHUuY29kZUJsb2NrOworfQorCitBTFdBWVNfSU5MSU5FIEpTT2JqZWN0KiBSZWdpc3Rlcjo6
b2JqZWN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gYXNPYmplY3QoanNWYWx1ZSgpKTsKK30KKwor
QUxXQVlTX0lOTElORSBSZWdpc3RlciYgUmVnaXN0ZXI6Om9wZXJhdG9yPShDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKK3sKKyAgICB1LmNhbGxGcmFtZSA9IGNhbGxGcmFtZTsKKyAgICByZXR1cm4gKnRo
aXM7Cit9CisKK0FMV0FZU19JTkxJTkUgUmVnaXN0ZXImIFJlZ2lzdGVyOjpvcGVyYXRvcj0oQ29k
ZUJsb2NrKiBjb2RlQmxvY2spCit7CisgICAgdS5jb2RlQmxvY2sgPSBjb2RlQmxvY2s7CisgICAg
cmV0dXJuICp0aGlzOworfQorCitBTFdBWVNfSU5MSU5FIFJlZ2lzdGVyJiBSZWdpc3Rlcjo6b3Bl
cmF0b3I9KEpTT2JqZWN0KiBvYmplY3QpCit7CisgICAgdS52YWx1ZSA9IEpTVmFsdWU6OmVuY29k
ZShKU1ZhbHVlKG9iamVjdCkpOworICAgIHJldHVybiAqdGhpczsKK30KKworQUxXQVlTX0lOTElO
RSBSZWdpc3RlciYgUmVnaXN0ZXI6Om9wZXJhdG9yPShKU1Njb3BlKiBzY29wZSkKK3sKKyAgICAq
dGhpcyA9IEpTVmFsdWUoc2NvcGUpOworICAgIHJldHVybiAqdGhpczsKK30KKworQUxXQVlTX0lO
TElORSBKU1Njb3BlKiBSZWdpc3Rlcjo6c2NvcGUoKSBjb25zdAoreworICAgIHJldHVybiBqc0Nh
c3Q8SlNTY29wZSo+KHVuYm94ZWRDZWxsKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0
b3IuY3BwCShyZXZpc2lvbiAyNTE1NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNiBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN0YWNrVmlzaXRvci5oIgogCi0jaW5jbHVk
ZSAiQ2FsbEZyYW1lSW5saW5lcy5oIgogI2luY2x1ZGUgIkNsb25lZEFyZ3VtZW50cy5oIgogI2lu
Y2x1ZGUgIkRlYnVnZ2VyUHJpbWl0aXZlcy5oIgogI2luY2x1ZGUgIklubGluZUNhbGxGcmFtZS5o
IgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShy
ZXZpc2lvbiAyNTE1NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVs
cGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSW5saW5l
Q2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiSklUQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiSklUQ29k
ZS5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxl
ci5oIgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJBdE9mZnNl
dExpc3QuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAkocmV2aXNpb24gMjUxNTc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQAog
I2luY2x1ZGUgIk9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgiCiAjaW5jbHVkZSAiT3Bjb2Rl
SW5saW5lcy5oIgogI2luY2x1ZGUgIlByb2dyYW1Db2RlQmxvY2suaCIKLSNpbmNsdWRlICJQcm90
b0NhbGxGcmFtZS5oIgorI2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1lSW5saW5lcy5oIgogI2luY2x1
ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlNoYWRvd0NoaWNrZW4uaCIKICNpbmNsdWRl
ICJTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5U3RvcmFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5U3RvcmFnZS5oCShyZXZpc2lvbiAyNTE1NzkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVN0b3JhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xMDMsMTAgKzEwMyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRvdGFsU2l6ZUZvciht
X2luZGV4QmlhcywgcHJvcGVydHlDYXBhY2l0eSwgdmVjdG9yTGVuZ3RoKCkpOwogICAgIH0KIAot
ICAgIHNpemVfdCB0b3RhbFNpemUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gdG90YWxTaXplKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7
Ci0gICAgfQorICAgIGlubGluZSBzaXplX3QgdG90YWxTaXplKFN0cnVjdHVyZSopIGNvbnN0Owog
CiAgICAgc3RhdGljIHVuc2lnbmVkIGF2YWlsYWJsZVZlY3Rvckxlbmd0aCh1bnNpZ25lZCBpbmRl
eEJpYXMsIHNpemVfdCBwcm9wZXJ0eUNhcGFjaXR5LCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpCiAg
ICAgewpAQCAtMTE3LDQxICsxMTQsMTkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdmVjdG9y
TGVuZ3RoOwogICAgIH0KIAotICAgIHN0YXRpYyB1bnNpZ25lZCBhdmFpbGFibGVWZWN0b3JMZW5n
dGgodW5zaWduZWQgaW5kZXhCaWFzLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgdmVj
dG9yTGVuZ3RoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGF2YWlsYWJsZVZlY3Rvckxlbmd0aChp
bmRleEJpYXMsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdmVjdG9yTGVuZ3RoKTsK
LSAgICB9CisgICAgaW5saW5lIHN0YXRpYyB1bnNpZ25lZCBhdmFpbGFibGVWZWN0b3JMZW5ndGgo
dW5zaWduZWQgaW5kZXhCaWFzLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpOwog
Ci0gICAgdW5zaWduZWQgYXZhaWxhYmxlVmVjdG9yTGVuZ3RoKHNpemVfdCBwcm9wZXJ0eUNhcGFj
aXR5LCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpCi0gICAgewotICAgICAgICByZXR1cm4gYXZhaWxh
YmxlVmVjdG9yTGVuZ3RoKG1faW5kZXhCaWFzLCBwcm9wZXJ0eUNhcGFjaXR5LCB2ZWN0b3JMZW5n
dGgpOwotICAgIH0KKyAgICBpbmxpbmUgdW5zaWduZWQgYXZhaWxhYmxlVmVjdG9yTGVuZ3RoKHNp
emVfdCBwcm9wZXJ0eUNhcGFjaXR5LCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpOwogCi0gICAgdW5z
aWduZWQgYXZhaWxhYmxlVmVjdG9yTGVuZ3RoKFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25l
ZCB2ZWN0b3JMZW5ndGgpCi0gICAgewotICAgICAgICByZXR1cm4gYXZhaWxhYmxlVmVjdG9yTGVu
Z3RoKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdmVjdG9yTGVuZ3RoKTsKLSAgICB9
CisgICAgaW5saW5lIHVuc2lnbmVkIGF2YWlsYWJsZVZlY3Rvckxlbmd0aChTdHJ1Y3R1cmUqLCB1
bnNpZ25lZCB2ZWN0b3JMZW5ndGgpOwogCi0gICAgc3RhdGljIHVuc2lnbmVkIG9wdGltYWxWZWN0
b3JMZW5ndGgodW5zaWduZWQgaW5kZXhCaWFzLCBzaXplX3QgcHJvcGVydHlDYXBhY2l0eSwgdW5z
aWduZWQgdmVjdG9yTGVuZ3RoKQotICAgIHsKLSAgICAgICAgdmVjdG9yTGVuZ3RoID0gc3RkOjpt
YXgoQkFTRV9BUlJBWV9TVE9SQUdFX1ZFQ1RPUl9MRU4sIHZlY3Rvckxlbmd0aCk7Ci0gICAgICAg
IHJldHVybiBhdmFpbGFibGVWZWN0b3JMZW5ndGgoaW5kZXhCaWFzLCBwcm9wZXJ0eUNhcGFjaXR5
LCB2ZWN0b3JMZW5ndGgpOwotICAgIH0KKyAgICBpbmxpbmUgc3RhdGljIHVuc2lnbmVkIG9wdGlt
YWxWZWN0b3JMZW5ndGgodW5zaWduZWQgaW5kZXhCaWFzLCBzaXplX3QgcHJvcGVydHlDYXBhY2l0
eSwgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKTsKIAotICAgIHN0YXRpYyB1bnNpZ25lZCBvcHRpbWFs
VmVjdG9yTGVuZ3RoKHVuc2lnbmVkIGluZGV4QmlhcywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVu
c2lnbmVkIHZlY3Rvckxlbmd0aCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBvcHRpbWFsVmVjdG9y
TGVuZ3RoKGluZGV4Qmlhcywgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCB2ZWN0b3JM
ZW5ndGgpOwotICAgIH0KKyAgICBpbmxpbmUgc3RhdGljIHVuc2lnbmVkIG9wdGltYWxWZWN0b3JM
ZW5ndGgodW5zaWduZWQgaW5kZXhCaWFzLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCB2ZWN0b3JMZW5n
dGgpOwogCi0gICAgdW5zaWduZWQgb3B0aW1hbFZlY3Rvckxlbmd0aChzaXplX3QgcHJvcGVydHlD
YXBhY2l0eSwgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG9w
dGltYWxWZWN0b3JMZW5ndGgobV9pbmRleEJpYXMsIHByb3BlcnR5Q2FwYWNpdHksIHZlY3Rvckxl
bmd0aCk7Ci0gICAgfQorICAgIGlubGluZSB1bnNpZ25lZCBvcHRpbWFsVmVjdG9yTGVuZ3RoKHNp
emVfdCBwcm9wZXJ0eUNhcGFjaXR5LCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpOwogCi0gICAgdW5z
aWduZWQgb3B0aW1hbFZlY3Rvckxlbmd0aChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQg
dmVjdG9yTGVuZ3RoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG9wdGltYWxWZWN0b3JMZW5ndGgo
c3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCB2ZWN0b3JMZW5ndGgpOwotICAgIH0KKyAg
ICBpbmxpbmUgdW5zaWduZWQgb3B0aW1hbFZlY3Rvckxlbmd0aChTdHJ1Y3R1cmUqLCB1bnNpZ25l
ZCB2ZWN0b3JMZW5ndGgpOwogCiAgICAgV3JpdGVCYXJyaWVyPFNwYXJzZUFycmF5VmFsdWVNYXA+
IG1fc3BhcnNlTWFwOwogICAgIHVuc2lnbmVkIG1faW5kZXhCaWFzOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlTdG9yYWdlSW5saW5lcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5U3RvcmFnZUlubGluZXMuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVN0b3JhZ2VJ
bmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJyYXlTdG9yYWdlLmgiCisjaW5jbHVkZSAiU3RydWN0
dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworaW5saW5lIHVuc2lnbmVkIEFycmF5
U3RvcmFnZTo6YXZhaWxhYmxlVmVjdG9yTGVuZ3RoKHVuc2lnbmVkIGluZGV4QmlhcywgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCkKK3sKKyAgICByZXR1cm4gYXZh
aWxhYmxlVmVjdG9yTGVuZ3RoKGluZGV4Qmlhcywgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0
eSgpLCB2ZWN0b3JMZW5ndGgpOworfQorCitpbmxpbmUgdW5zaWduZWQgQXJyYXlTdG9yYWdlOjph
dmFpbGFibGVWZWN0b3JMZW5ndGgoc2l6ZV90IHByb3BlcnR5Q2FwYWNpdHksIHVuc2lnbmVkIHZl
Y3Rvckxlbmd0aCkKK3sKKyAgICByZXR1cm4gYXZhaWxhYmxlVmVjdG9yTGVuZ3RoKG1faW5kZXhC
aWFzLCBwcm9wZXJ0eUNhcGFjaXR5LCB2ZWN0b3JMZW5ndGgpOworfQorCitpbmxpbmUgdW5zaWdu
ZWQgQXJyYXlTdG9yYWdlOjphdmFpbGFibGVWZWN0b3JMZW5ndGgoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCkKK3sKKyAgICByZXR1cm4gYXZhaWxhYmxlVmVjdG9y
TGVuZ3RoKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdmVjdG9yTGVuZ3RoKTsKK30K
KworaW5saW5lIHVuc2lnbmVkIEFycmF5U3RvcmFnZTo6b3B0aW1hbFZlY3Rvckxlbmd0aCh1bnNp
Z25lZCBpbmRleEJpYXMsIHNpemVfdCBwcm9wZXJ0eUNhcGFjaXR5LCB1bnNpZ25lZCB2ZWN0b3JM
ZW5ndGgpCit7CisgICAgdmVjdG9yTGVuZ3RoID0gc3RkOjptYXgoQkFTRV9BUlJBWV9TVE9SQUdF
X1ZFQ1RPUl9MRU4sIHZlY3Rvckxlbmd0aCk7CisgICAgcmV0dXJuIGF2YWlsYWJsZVZlY3Rvckxl
bmd0aChpbmRleEJpYXMsIHByb3BlcnR5Q2FwYWNpdHksIHZlY3Rvckxlbmd0aCk7Cit9CisKK2lu
bGluZSB1bnNpZ25lZCBBcnJheVN0b3JhZ2U6Om9wdGltYWxWZWN0b3JMZW5ndGgodW5zaWduZWQg
aW5kZXhCaWFzLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKQor
eworICAgIHJldHVybiBvcHRpbWFsVmVjdG9yTGVuZ3RoKGluZGV4Qmlhcywgc3RydWN0dXJlLT5v
dXRPZkxpbmVDYXBhY2l0eSgpLCB2ZWN0b3JMZW5ndGgpOworfQorCitpbmxpbmUgdW5zaWduZWQg
QXJyYXlTdG9yYWdlOjpvcHRpbWFsVmVjdG9yTGVuZ3RoKHNpemVfdCBwcm9wZXJ0eUNhcGFjaXR5
LCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpCit7CisgICAgcmV0dXJuIG9wdGltYWxWZWN0b3JMZW5n
dGgobV9pbmRleEJpYXMsIHByb3BlcnR5Q2FwYWNpdHksIHZlY3Rvckxlbmd0aCk7Cit9CisKK2lu
bGluZSB1bnNpZ25lZCBBcnJheVN0b3JhZ2U6Om9wdGltYWxWZWN0b3JMZW5ndGgoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCkKK3sKKyAgICByZXR1cm4gb3B0aW1h
bFZlY3Rvckxlbmd0aChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIHZlY3Rvckxlbmd0
aCk7Cit9CisKK2lubGluZSBzaXplX3QgQXJyYXlTdG9yYWdlOjp0b3RhbFNpemUoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRvdGFsU2l6ZShzdHJ1Y3R1cmUtPm91
dE9mTGluZUNhcGFjaXR5KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J1dHRlcmZseUlubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CdXR0ZXJmbHlJbmxpbmVzLmgJKHJldmlz
aW9uIDI1MTU3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J1dHRlcmZseUlu
bGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTItMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTItMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNl
CiAKLSNpbmNsdWRlICJBcnJheVN0b3JhZ2UuaCIKKyNpbmNsdWRlICJBcnJheVN0b3JhZ2VJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiQnV0dGVyZmx5LmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNp
bmNsdWRlICJTdHJ1Y3R1cmUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NsYXNzSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NsYXNzSW5mby5oCShyZXZpc2lvbiAyNTE1NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DbGFzc0luZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNiBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNvbnN0cnVj
dERhdGEuaCIKICNpbmNsdWRlICJKU0Nhc3QuaCIKICNpbmNsdWRlIDx3dGYvUHRyVGFnLmg+Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXRWTS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldFZNLmgJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0Vk0uaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBKU0dsb2JhbE9iamVjdDsKK2NsYXNzIFZNOworCisvLyBIZWxwZXIgZnVuY3Rp
b24gdG8gZ2V0IFZNJiBmcm9tIEpTR2xvYmFsT2JqZWN0KiBpZiBKU0dsb2JhbE9iamVjdC5oIGlz
IG5vdCBpbmNsdWRlZC4KK1ZNJiBnZXRWTShKU0dsb2JhbE9iamVjdCopOworCit9IC8vIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHJl
dmlzaW9uIDI1MTU3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXku
aAkod29ya2luZyBjb3B5KQpAQCAtMjIsOCArMjIsOCBAQAogCiAjaW5jbHVkZSAiQXJnTGlzdC5o
IgogI2luY2x1ZGUgIkFycmF5Q29udmVudGlvbnMuaCIKLSNpbmNsdWRlICJCdXR0ZXJmbHlJbmxp
bmVzLmgiCi0jaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkJ1dHRlcmZseS5o
IgorI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUlubGlu
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
SW5saW5lcy5oCShyZXZpc2lvbiAyNTE1NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqICBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTIwLDYgKzIwLDcgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiQXJyYXlQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJCdXR0ZXJmbHlJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAi
SlNDZWxsSW5saW5lcy5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbElubGluZXMuaAkocmV2aXNpb24gMjUxNTc5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3
IEBACiAjaW5jbHVkZSAiQWxsb2NhdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIkNvbXBsZXRlU3Vi
c3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ1BVLmgiCi0jaW5jbHVkZSAiQ2FsbEZyYW1lLmgi
CisjaW5jbHVkZSAiQ2FsbEZyYW1lSW5saW5lcy5oIgogI2luY2x1ZGUgIkRlZmVyR0MuaCIKICNp
bmNsdWRlICJGcmVlTGlzdElubGluZXMuaCIKICNpbmNsdWRlICJIYW5kbGUuaCIKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNp
b24gMjUxNTc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkJvb2xlYW5Q
cm90b3R5cGUuaCIKICNpbmNsdWRlICJFcnJvclR5cGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25I
ZWxwZXJzLmgiCisjaW5jbHVkZSAiR2V0Vk0uaCIKICNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9u
LmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJQcm90b3R5
cGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2
aXNpb24gMjUxNTc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtMTQ5NywxNyArMTQ5Nyw2IEBAIGlubGluZSBib29sIEpTT2Jq
ZWN0OjpwdXREaXJlY3QoVk0mIHZtLCAKICAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWw8UHV0
TW9kZURlZmluZU93blByb3BlcnR5Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCk7
CiB9CiAKLUFMV0FZU19JTkxJTkUgSlNPYmplY3QqIFJlZ2lzdGVyOjpvYmplY3QoKSBjb25zdAot
ewotICAgIHJldHVybiBhc09iamVjdChqc1ZhbHVlKCkpOwotfQotCi1BTFdBWVNfSU5MSU5FIFJl
Z2lzdGVyJiBSZWdpc3Rlcjo6b3BlcmF0b3I9KEpTT2JqZWN0KiBvYmplY3QpCi17Ci0gICAgdS52
YWx1ZSA9IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKG9iamVjdCkpOwotICAgIHJldHVybiAqdGhp
czsKLX0KLQogaW5saW5lIHNpemVfdCBvZmZzZXRJbkJ1dHRlcmZseShQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQpCiB7CiAgICAgcmV0dXJuIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpICsg
QnV0dGVyZmx5OjppbmRleE9mUHJvcGVydHlTdG9yYWdlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAkocmV2aXNpb24gMjUxNTc5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0y
MDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAx
IFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIw
MDcgRXJpYyBTZWlkZWwgKGVyaWNAd2Via2l0Lm9yZykKICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMjQsNiAr
MjQsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBdXhpbGlhcnlCYXJyaWVySW5saW5l
cy5oIgorI2luY2x1ZGUgIkJ1dHRlcmZseUlubGluZXMuaCIKICNpbmNsdWRlICJFcnJvci5oIgog
I2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5cy5oIgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaAkocmV2aXNpb24gMjUxNTc5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjksMjcgKzEyOSw2IEBAIGlubGluZSBKU1Njb3BlKiBKU1Njb3BlOjpuZXh0KCkKICAg
ICByZXR1cm4gbV9uZXh0LmdldCgpOwogfQogCi1pbmxpbmUgUmVnaXN0ZXImIFJlZ2lzdGVyOjpv
cGVyYXRvcj0oSlNTY29wZSogc2NvcGUpCi17Ci0gICAgKnRoaXMgPSBKU1ZhbHVlKHNjb3BlKTsK
LSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLWlubGluZSBKU1Njb3BlKiBSZWdpc3Rlcjo6c2NvcGUo
KSBjb25zdAotewotICAgIHJldHVybiBqc0Nhc3Q8SlNTY29wZSo+KHVuYm94ZWRDZWxsKCkpOwot
fQotCi1pbmxpbmUgSlNHbG9iYWxPYmplY3QqIENhbGxGcmFtZTo6bGV4aWNhbEdsb2JhbE9iamVj
dChWTSYgdm0pIGNvbnN0Ci17Ci0gICAgVU5VU0VEX1BBUkFNKHZtKTsKLSNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCi0gICAgaWYgKGNhbGxlZSgpLmlzV2FzbSgpKQotICAgICAgICByZXR1cm4gbGV4
aWNhbEdsb2JhbE9iamVjdEZyb21XYXNtQ2FsbGVlKHZtKTsKLSNlbmRpZgotICAgIHJldHVybiBq
c0NhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKLX0KLQogaW5saW5lIHNpemVfdCBKU1Njb3BlOjpv
ZmZzZXRPZk5leHQoKQogewogICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNTY29wZSwgbV9u
ZXh0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2
aXNpb24gMjUxNTc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcu
aAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkFyZ0xpc3QuaCIK
ICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgor
I2luY2x1ZGUgIkdldFZNLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlBy
b3BlcnR5RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCShy
ZXZpc2lvbiAyNTE1NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eU5hbWVBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw2IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJKHJldmlzaW9u
IDI1MTU3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiRE9NQW5ub3RhdGlvbi5oIgorI2luY2x1ZGUg
IkdldFZNLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFt
ZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5T2Zmc2V0LmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTUlubGluZXMuaAkocmV2aXNpb24gMjUxNTc5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1JbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw3
ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ2FsbEZyYW1lSW5saW5lcy5o
IgogI2luY2x1ZGUgIkVudHJ5RnJhbWUuaCIKICNpbmNsdWRlICJQcm9maWxlckRhdGFiYXNlLmgi
CiAjaW5jbHVkZSAiVk0uaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFw
VmVyaWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9I
ZWFwVmVyaWZpZXIuY3BwCShyZXZpc2lvbiAyNTE1NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvSGVhcFZlcmlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhlYXBWZXJpZmllci5oIgogCisjaW5j
bHVkZSAiQnV0dGVyZmx5SW5saW5lcy5oIgogI2luY2x1ZGUgIkNvZGVCbG9ja0lubGluZXMuaCIK
ICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseUZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjUxNTc5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDcgKzQwLDcgQEAKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmgiCiAjaW5j
bHVkZSAiTExJbnRUaHVua3MuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCi0jaW5jbHVkZSAi
UHJvdG9DYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJQcm90b0NhbGxGcmFtZUlubGluZXMuaCIKICNp
bmNsdWRlICJWTS5oIgogI2luY2x1ZGUgIldhc21DYWxsZWUuaCIKICNpbmNsdWRlICJXYXNtQ2Fs
bGluZ0NvbnZlbnRpb24uaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MTU3OSkKKysrIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisy
MDE5LTEwLTI0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBNb3Zl
IEpTQzo6UmVnaXN0ZXIgaW5saW5lIG1ldGhvZHMgaW50byBSZWdpc3RlcklubGluZXMuaC4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzM5MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyBuZWVkZWQgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50
S2V5U2Vzc2lvbi5tbToKKwogMjAxOS0xMC0yMyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0
Lm9yZz4KIAogICAgICAgICBBZGQgYSBtZWNoYW5pc20gdG8gZmluZCBhbmQgbWFuaXB1bGF0ZSB0
ZXh0IGJ5IHBhcmFncmFwaHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCShyZXZpc2lvbiAyNTE1NzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1T
ZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiw2ICszNiw4IEBA
CiAjaW1wb3J0ICJXZWJDb3JlTlNFcnJvckV4dHJhcy5oIgogI2ltcG9ydCA8QVZGb3VuZGF0aW9u
L0FWRXJyb3IuaD4KICNpbXBvcnQgPENvcmVNZWRpYS9DTUJhc2UuaD4KKyNpbXBvcnQgPEphdmFT
Y3JpcHRDb3JlL0hlYXBJbmxpbmVzLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU0NlbGxJ
bmxpbmVzLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdElubGluZXMu
aD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL1R5cGVkQXJyYXlJbmxpbmVzLmg+CiAjaW1wb3J0
IDxvYmpjL29iamMtcnVudGltZS5oPgo=
</data>
<flag name="review"
          id="397610"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381866</attachid>
            <date>2019-10-24 19:06:19 -0700</date>
            <delta_ts>2019-10-24 19:22:19 -0700</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-203391.patch</filename>
            <type>text/plain</type>
            <size>54799</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUxNTc5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBA
QAorMjAxOS0xMC0yNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
TW92ZSBKU0M6OlJlZ2lzdGVyIGlubGluZSBtZXRob2RzIGludG8gUmVnaXN0ZXJJbmxpbmVzLmgu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMzOTEK
KworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIFdlJ3JlIGRv
aW5nIHRoaXMgYmVjYXVzZToKKyAgICAgICAgMS4gUmVnaXN0ZXJJbmxpbmVzLmggaXMgdGhlIGNh
bm9uaWNhbCBwbGFjZSB0byBwdXQgaW5saW5lIFJlZ2lzdGVyIG1ldGhvZHMuCisgICAgICAgIDIu
IEl0IGhlbHBzIHJlZHVjZSBidWlsZCB0aW1lLgorICAgICAgICAgICBlLmcuIGJ1aWxkLWpzYyB3
ZW50IGZyb20gMjA4LjAyIHRvIDE5Ni44MSBzZWNvbmRzIChhYm91dCBhIDUlIHJlZHVjdGlvbiku
CisgICAgICAgIDMuIFRoaXMgZW5hYmxlcyBleHBlcmltZW50YWwgd29yayB0byBib3ggSlNDZWxs
cyBpbiBKU1ZhbHVlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBoYW5kbGVzIHRoZSBmYWxs
b3V0IG9mIHRoaXMgY2hhbmdlLCB3aGljaCBuZWNlc3NpdGF0ZXMgbW9yZQorICAgICAgICBpbmxp
bmUgbWV0aG9kcyBiZWluZyBtb3ZlZCBmcm9tIDxmaWxlPi5oIHRvIHRoZWlyIHJlc3BlY3RpdmUg
PGZpbGU+SW5saW5lcy5oLgorCisgICAgICAgIEpTQXJyYXkuaCB1c2VkIHRvIGluY2x1ZGUgQnV0
dGVyZmx5SW5saW5lcy5oIGFuZCBKU0NlbGxJbmxpbmVzLmguICBUaGlzIGlzIGEKKyAgICAgICAg
dmlvbGF0aW9uIG9mIGluY2x1c2lvbiBvcmRlcmluZyAoLmggc2hvdWxkIG5vdCAjaW5jbHVkZSBJ
bmxpbmVzLmgpLiAgVGhpcworICAgICAgICB2aW9sYXRpb24gaGFzIGJlZW4gcmVtb3ZlZC4KKwor
ICAgICAgICAqIEFQSS9KU0FQSUdsb2JhbE9iamVjdC5tbToKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDYWxsRnJh
bWU6OnIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OnVuY2hlY2tlZFIpOiBE
ZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL01ldGFkYXRhVGFibGUuY3BwOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFt
ZS5oOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6Omd1YXJhbnRlZWRKU1ZhbHVlQ2FsbGVlIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpqc0NhbGxlZSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6Y29kZUJsb2NrIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjp1bnNhZmVDb2RlQmxvY2sgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OnNjb3BlIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjp0b3BPZkZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6Q2FsbEZyYW1lOjpzZXRTY29wZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNhbGxG
cmFtZTo6c2V0Q2FsbGVlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpzZXRD
b2RlQmxvY2spOiBEZWxldGVkLgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZUlubGlu
ZXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpyKToKKyAgICAgICAgKEpTQzo6Q2FsbEZy
YW1lOjp1bmNoZWNrZWRSKToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpndWFyYW50ZWVkSlNW
YWx1ZUNhbGxlZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6anNDYWxsZWUgY29u
c3QpOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OmNvZGVCbG9jayBjb25zdCk6CisgICAgICAg
IChKU0M6OkNhbGxGcmFtZTo6dW5zYWZlQ29kZUJsb2NrIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
Q2FsbEZyYW1lOjpsZXhpY2FsR2xvYmFsT2JqZWN0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2Fs
bEZyYW1lOjpzZXRDYWxsZWUpOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OnNldENvZGVCbG9j
ayk6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6c2V0U2NvcGUpOgorICAgICAgICAoSlNDOjpD
YWxsRnJhbWU6OnNjb3BlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjp0b3BPZkZy
YW1lKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgICog
aW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuaDoKKyAgICAgICAgKEpTQzo6UHJvdG9DYWxsRnJh
bWU6OmluaXQpOiBEZWxldGVkLgorICAgICAgICAqIGludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1l
SW5saW5lcy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6UHJvdG9DYWxsRnJhbWU6OmluaXQpOgor
ICAgICAgICAoSlNDOjpQcm90b0NhbGxGcmFtZTo6Y2FsbGVlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6UHJvdG9DYWxsRnJhbWU6OnNldENhbGxlZSk6CisgICAgICAgIChKU0M6OlByb3RvQ2FsbEZy
YW1lOjpjb2RlQmxvY2sgY29uc3QpOgorICAgICAgICAoSlNDOjpQcm90b0NhbGxGcmFtZTo6c2V0
Q29kZUJsb2NrKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9SZWdpc3Rlci5oOgorICAgICAgICAo
SlNDOjpSZWdpc3Rlcjo6Y2FsbEZyYW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
UmVnaXN0ZXI6OmNvZGVCbG9jayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ2lz
dGVyOjphc2FuVW5zYWZlQ29kZUJsb2NrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnRl
cnByZXRlci9SZWdpc3RlcklubGluZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVy
OjpjYWxsRnJhbWUgY29uc3QpOgorICAgICAgICAoSlNDOjpSZWdpc3Rlcjo6Y29kZUJsb2NrIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXI6OmFzYW5VbnNhZmVDb2RlQmxvY2sgY29uc3Qp
OgorICAgICAgICAoSlNDOjpSZWdpc3Rlcjo6b2JqZWN0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6
UmVnaXN0ZXI6Om9wZXJhdG9yPSk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyOjpzY29wZSBjb25z
dCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcDoKKyAgICAgICAgKiBq
aXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlTdG9yYWdlLmg6CisgICAgICAgIChKU0M6OkFycmF5
U3RvcmFnZTo6b3B0aW1hbFZlY3Rvckxlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGlt
ZS9BcnJheVN0b3JhZ2VJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpBcnJheVN0b3Jh
Z2U6OmF2YWlsYWJsZVZlY3Rvckxlbmd0aCk6CisgICAgICAgIChKU0M6OkFycmF5U3RvcmFnZTo6
b3B0aW1hbFZlY3Rvckxlbmd0aCk6CisgICAgICAgIChKU0M6OkFycmF5U3RvcmFnZTo6dG90YWxT
aXplIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0J1dHRlcmZseUlubGluZXMuaDoKKyAgICAg
ICAgKiBydW50aW1lL0NsYXNzSW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUvR2V0Vk0uaDogQWRk
ZWQuCisgICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAgICAgICogcnVudGltZS9KU0Fy
cmF5SW5saW5lcy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyOjpvYmplY3QgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpSZWdpc3Rlcjo6b3BlcmF0b3I9KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0SW5saW5lcy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5oOgorICAg
ICAgICAoSlNDOjpSZWdpc3Rlcjo6b3BlcmF0b3I9KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
UmVnaXN0ZXI6OnNjb3BlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1l
OjpsZXhpY2FsR2xvYmFsT2JqZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1l
L0pTU3RyaW5nLmg6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgICogcnVudGltZS9WTUlubGlu
ZXMuaDoKKyAgICAgICAgKiB0b29scy9IZWFwVmVyaWZpZXIuY3BwOgorICAgICAgICAqIHdhc20v
anMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHA6CisKIDIwMTktMTAtMjQgIFNpaHVpIExpdSAgPHNp
aHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgWyBNYWMgV0sxIF0gUkVHUkVTU0lPTiAocjI1
MTI2MSk6IExheW91dCBUZXN0IGluc3BlY3Rvci9jb25zb2xlL3dlYmNvcmUtbG9nZ2luZy5odG1s
IGlzIGNvbnNpc3RlbnRseSBGYWlsaW5nCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CShyZXZpc2lvbiAyNTE1NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc1Miw2ICs3NTIsNyBAQCBzZXQoSmF2YVNjcmlw
dENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBCiAgICAgcnVudGltZS9BcnJheUNvbnZlbnRpb25z
LmgKICAgICBydW50aW1lL0FycmF5UHJvdG90eXBlLmgKICAgICBydW50aW1lL0FycmF5U3RvcmFn
ZS5oCisgICAgcnVudGltZS9BcnJheVN0b3JhZ2VJbmxpbmVzLmgKICAgICBydW50aW1lL0F1eGls
aWFyeUJhcnJpZXIuaAogICAgIHJ1bnRpbWUvQXV4aWxpYXJ5QmFycmllcklubGluZXMuaAogICAg
IHJ1bnRpbWUvQmFzaWNCbG9ja0xvY2F0aW9uLmgKQEAgLTgyMSw2ICs4MjIsNyBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBCiAgICAgcnVudGltZS9HZW5lcmljVHlw
ZWRBcnJheVZpZXcuaAogICAgIHJ1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
CiAgICAgcnVudGltZS9HZXRQdXRJbmZvLmgKKyAgICBydW50aW1lL0dldFZNLmgKICAgICBydW50
aW1lL0dsb2JhbEV4ZWN1dGFibGUuaAogICAgIHJ1bnRpbWUvSGFzaE1hcEltcGwuaAogICAgIHJ1
bnRpbWUvSWRlbnRpZmllci5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJ
R2xvYmFsT2JqZWN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNBUElHbG9iYWxPYmplY3QubW0JKHJldmlzaW9uIDI1MTU3OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDYg
KzI5LDcgQEAKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogCiAjaW1wb3J0ICJBUElDYXN0Lmgi
CisjaW1wb3J0ICJDYWxsRnJhbWVJbmxpbmVzLmgiCiAjaW1wb3J0ICJDYXRjaFNjb3BlLmgiCiAj
aW1wb3J0ICJDb21wbGV0aW9uLmgiCiAjaW1wb3J0ICJFcnJvci5oIgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI1MTU3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0xODY1LDYgKzE4NjUsMTAgQEAKIAkJRkUxQkQwMjExRTcyMDI3OTAwMTM0QkM5IC8q
IENlbGxQcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTFCRDAyMDFFNzIwMjcwMDAxMzRCQzkgLyogQ2VsbFByb2ZpbGUuaCAqLzsgfTsKIAkJ
RkUxQkQwMjUxRTcyMDUzODAwMTM0QkM5IC8qIEhlYXBWZXJpZmllci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxQkQwMjMxRTcyMDUyRjAwMTM0QkM5
IC8qIEhlYXBWZXJpZmllci5oICovOyB9OwogCQlGRTFDMEZGRDFCMTkzRTk4MDBCNTNGQ0EgLyog
RXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTFDMEZGQzFCMTkzRTk4MDBCNTNGQ0EgLyogRXhjZXB0aW9uLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkUxRDZENkQyMzYyNTQ0QjAwN0E1
QzI2IC8qIFJlZ2lzdGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkUxRDZENkMyMzYyNTQ0QTAwN0E1QzI2IC8qIFJlZ2lzdGVySW5saW5l
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZF
MUQ2RDZGMjM2MjU4RkUwMDdBNUMyNiAvKiBHZXRWTS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxRDZENkUyMzYyNThGRTAwN0E1QzI2IC8qIEdldFZN
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkUx
RDZENzEyMzYyNUFCMTAwN0E1QzI2IC8qIEFycmF5U3RvcmFnZUlubGluZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUQ2RDcwMjM2MjVBQjAwMDdB
NUMyNiAvKiBBcnJheVN0b3JhZ2VJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkUxRDZENzUyMzYyNjQ5RjAwN0E1QzI2IC8qIFByb3Rv
Q2FsbEZyYW1lSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkUxRDZENzQyMzYyNjQ5RDAwN0E1QzI2IC8qIFByb3RvQ2FsbEZyYW1lSW5saW5l
cy5oICovOyB9OwogCQlGRTFFMkMzRjIyNDBERDU4MDBGNkI3MjkgLyogTWFjcm9Bc3NlbWJsZXJB
Uk02NEUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
MUUyQzNFMjI0MEQzMEIwMEY2QjcyOSAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0RS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFMUUyQzQwMjI0MERE
NjIwMEY2QjcyOSAvKiBBUk02NEVBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUUyQzNEMjI0MEQyRjYwMEY2QjcyOSAvKiBBUk02NEVB
c3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlGRTIwQ0U5RTE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUyMENFOUMxNUYwNEE5NTAwREYz
NDMwIC8qIExMSW50Q0xvb3AuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtNTA0OSw2ICs1MDUzLDEwIEBACiAJCUZFMUJEMDIzMUU3MjA1MkYwMDEz
NEJDOSAvKiBIZWFwVmVyaWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SGVhcFZlcmlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMUMwRkZDMUIx
OTNFOTgwMEI1M0ZDQSAvKiBFeGNlcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRXhjZXB0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMUMwRkZF
MUIxOTRGRDEwMEI1M0ZDQSAvKiBFeGNlcHRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRXhjZXB0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRkUxRDZENkMyMzYyNTQ0QTAwN0E1QzI2IC8qIFJlZ2lzdGVySW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdpc3RlcklubGluZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkUxRDZENkUyMzYyNThGRTAwN0E1QzI2IC8qIEdldFZNLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdldFZNLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUZFMUQ2RDcwMjM2MjVBQjAwMDdBNUMyNiAvKiBBcnJheVN0b3JhZ2VJbmxp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5U3RvcmFnZUlubGlu
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUxRDZENzQyMzYyNjQ5RDAwN0E1
QzI2IC8qIFByb3RvQ2FsbEZyYW1lSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQcm90b0NhbGxGcmFtZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkUxRTJDM0MyMjQwQzFFRjAwRjZCNzI5IC8qIEpTQ1B0clRhZy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NQdHJUYWcuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGRTFFMkMzRDIyNDBEMkY2MDBGNkI3MjkgLyogQVJNNjRFQXNzZW1i
bGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFSTTY0RUFzc2VtYmxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTFFMkMzRTIyNDBEMzBCMDBGNkI3Mjkg
LyogTWFjcm9Bc3NlbWJsZXJBUk02NEUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWFjcm9Bc3NlbWJsZXJBUk02NEUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTU5MjcsNyArNTkzNSw5IEBACiAJCQkJMTQyOUQ3N0IwRUQyMEQ3MzAwQjg5NjE5IC8qIEludGVy
cHJldGVyLmggKi8sCiAJCQkJRTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIEludGVycHJldGVy
SW5saW5lcy5oICovLAogCQkJCTY1RkI1MTE1MTg0RUU4RjgwMEMxMkI3MCAvKiBQcm90b0NhbGxG
cmFtZS5oICovLAorCQkJCUZFMUQ2RDc0MjM2MjY0OUQwMDdBNUMyNiAvKiBQcm90b0NhbGxGcmFt
ZUlubGluZXMuaCAqLywKIAkJCQkxNDlCMjRGRjBEOEFGNkQxMDA5Q0I4QzcgLyogUmVnaXN0ZXIu
aCAqLywKKwkJCQlGRTFENkQ2QzIzNjI1NDRBMDA3QTVDMjYgLyogUmVnaXN0ZXJJbmxpbmVzLmgg
Ki8sCiAJCQkJREMxN0U4MTMxQzlDN0ZENDAwOEE2QUIzIC8qIFNoYWRvd0NoaWNrZW4uY3BwICov
LAogCQkJCURDMTdFODE0MUM5QzdGRDQwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuLmggKi8sCiAJ
CQkJREMxN0U4MTUxQzlDN0ZENDAwOEE2QUIzIC8qIFNoYWRvd0NoaWNrZW5JbmxpbmVzLmggKi8s
CkBAIC02OTAxLDYgKzY5MTEsNyBAQAogCQkJCUY2OTJBODREMDI1NTU5N0QwMUZGNjBGNyAvKiBB
cnJheVByb3RvdHlwZS5jcHAgKi8sCiAJCQkJRjY5MkE4NEUwMjU1NTk3RDAxRkY2MEY3IC8qIEFy
cmF5UHJvdG90eXBlLmggKi8sCiAJCQkJMEZCN0YzOEExNUVEOEUzODAwRjE2N0IyIC8qIEFycmF5
U3RvcmFnZS5oICovLAorCQkJCUZFMUQ2RDcwMjM2MjVBQjAwMDdBNUMyNiAvKiBBcnJheVN0b3Jh
Z2VJbmxpbmVzLmggKi8sCiAJCQkJOEI2MDE2RjMxRjNFM0NDMDAwRjlERTZBIC8qIEFzeW5jRnJv
bVN5bmNJdGVyYXRvclByb3RvdHlwZS5jcHAgKi8sCiAJCQkJOEI2MDE2RjQxRjNFM0NDMDAwRjlE
RTZBIC8qIEFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5oICovLAogCQkJCTVCNzBDRkRE
MURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovLApAQCAt
NzA3Nyw2ICs3MDg4LDcgQEAKIAkJCQkwRjJCNjZCMzE3QjZCNUFCMDBBN0FFM0YgLyogR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oICovLAogCQkJCTE0Nzg4RUU1MjE1MDFCMjkwMEE1NjFD
OCAvKiBHZXRQdXRJbmZvLmNwcCAqLywKIAkJCQk3OTY0NjU2ODFCOTUyRkYwMDAzMDU5RUUgLyog
R2V0UHV0SW5mby5oICovLAorCQkJCUZFMUQ2RDZFMjM2MjU4RkUwMDdBNUMyNiAvKiBHZXRWTS5o
ICovLAogCQkJCUJDMDJFOUI4MEUxODQ1NDUwMDBGOTI5NyAvKiBHZXR0ZXJTZXR0ZXIuY3BwICov
LAogCQkJCUJDMzM3QkRFMEUxQUYwQjgwMDc2OTE4QSAvKiBHZXR0ZXJTZXR0ZXIuaCAqLywKIAkJ
CQlFMzU1RDM4RTIyNDQ2ODZDMDA4RjFBRDYgLyogR2xvYmFsRXhlY3V0YWJsZS5jcHAgKi8sCkBA
IC04ODcxLDYgKzg4ODMsNyBAQAogCQkJCTBGRUM4NTA0MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0Js
b2NrV29ya2xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCURDRkRGQkQ5MUQxRjVEOUIwMEZFM0Q3
MiAvKiBCM0JvdHRvbVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjZCOEFFMzFDNEVG
RTE3MDA5NjkwNTIgLyogQjNCcmVha0NyaXRpY2FsRWRnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUZFMUQ2RDc1MjM2MjY0OUYwMDdBNUMyNiAvKiBQcm90b0NhbGxGcmFtZUlubGluZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCURDOUEwQzIwMUQyRDlDQjMwMDg1MTI0RSAvKiBCM0Nhc2VDb2xsZWN0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlEQzlBMEMxRjFEMkQ5Q0IxMDA4NTEyNEUgLyogQjND
YXNlQ29sbGVjdGlvbklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzM4REZBMUJFOTZB
QTgwMDEzQzg4RiAvKiBCM0NDYWxsVmFsdWUuaCBpbiBIZWFkZXJzICovLApAQCAtODkxNCw2ICs4
OTI3LDcgQEAKIAkJCQkwRjMzOEUxRTFCRjI4NkVBMDAxM0M4OEYgLyogQjNMb3dlck1hY3Jvcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDMxOURBMDQxQzFCRTQwRDAwMUQyNjBCIC8qIEIzTG93ZXJN
YWNyb3NBZnRlck9wdGltaXphdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTFFMUJE
QUNEQUMwMDgwRkY3NCAvKiBCM0xvd2VyVG9BaXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFMUQ2
RDZEMjM2MjU0NEIwMDdBNUMyNiAvKiBSZWdpc3RlcklubGluZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQzQUIyNkM2MUMxQTUzNTkwMEQ4MkFFNiAvKiBCM01hdGhFeHRyYXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRUM4NTIwMUJEQUNEQUMwMDgwRkY3NCAvKiBCM01lbW9yeVZhbHVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjJDNjNDNDFFNjlFRjk0MDBDMTM4MzkgLyogQjNNZW1vcnlWYWx1
ZUlubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtOTQ3OCw2ICs5NDkyLDcgQEAKIAkJCQkwRjMy
QkQxMTFCQjM0RjE5MDA5M0E1N0YgLyogSGVhcEhlbHBlclBvb2wuaCBpbiBIZWFkZXJzICovLAog
CQkJCUMyREE3NzgzMThFMjU5OTkwMDY2RkNCNiAvKiBIZWFwSW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkFEODkzMkIxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRkUxRDZENzEyMzYyNUFCMTAwN0E1QzI2IC8qIEFycmF5U3Rv
cmFnZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MzM5RUM5MUJCNEI0NjAwMDU0RjAw
NSAvKiBIZWFwT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1Mzk4RkFCMUM3NTBEQTQw
MDYwQTk2MyAvKiBIZWFwUHJvZmlsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NEMyQUIxMUM2
NTQ0RjIwMEExOEQ3OCAvKiBIZWFwU25hcHNob3QuaCBpbiBIZWFkZXJzICovLApAQCAtOTk5NSw2
ICsxMDAxMCw3IEBACiAJCQkJQkNEMjAyQzQwRTE3MDZBNzAwMkM3RTgyIC8qIFJlZ0V4cFByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NUQwRTE2RjVDRDAwQjM0NDYwIC8qIFJl
Z2lzdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzI4QzZDOTFEQTQzMkY5MDBEMjU1RkQgLyog
UmVnaXN0ZXJBdE9mZnNldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkUxRDZENkYyMzYyNThGRTAw
N0E1QzI2IC8qIEdldFZNLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzI4QzZDODFEQTQzMDYxMDBE
MjU1RkQgLyogUmVnaXN0ZXJBdE9mZnNldExpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2OUEw
NzJCMEVEMUNFNjkwMEYxRjY4MSAvKiBSZWdpc3RlcklELmggaW4gSGVhZGVycyAqLywKIAkJCQk5
Njg4Q0IxNjBFRDEyQjRFMDAxRDY0OTkgLyogUmVnaXN0ZXJJbmZvLmggaW4gSGVhZGVycyAqLywK
QEAgLTExMDQwLDcgKzExMDU2LDYgQEAKIAkJCQkzM0IyQTU0ODIyNjU0M0JGMDA1QTBGNzkgLyog
RlRMTG93ZXJERkdUb0IzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDNDE5NjYyMjI3MEUwMDAw
MDQ3QjdDRCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlckNvbXBhdGliaWxpdHkuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxOUUxRjczNUYxNjAwMzdGQzMzIC8qIExvd0xldmVsSW50
ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRkUxRDZENDUyMzU4MEUxRjAwN0E1QzI2
IC8qIE9wdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NEExNThFQkU5MTAwNENC
OUZGIC8qIHVkaXM4Ni5jIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NDAxNThFQkU4QjAwNENC
OUZGIC8qIHVkaXM4Nl9kZWNvZGUuYyBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQyNzREMTU4RUJG
RTYwMDRDQjlGRiAvKiB1ZGlzODZfaXRhYl9ob2xkZXIuYyBpbiBTb3VyY2VzICovLApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjUx
NTc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDMyLDMwICsxMDMyLDYgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmFyZURhdGE+IG1fcmFyZURhdGE7CiB9OwogCi1pbmxpbmUgUmVnaXN0ZXImIENhbGxG
cmFtZTo6cihpbnQgaW5kZXgpCi17Ci0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSB0aGlzLT5j
b2RlQmxvY2soKTsKLSAgICBpZiAoY29kZUJsb2NrLT5pc0NvbnN0YW50UmVnaXN0ZXJJbmRleChp
bmRleCkpCi0gICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxSZWdpc3Rlcio+KCZjb2Rl
QmxvY2stPmNvbnN0YW50UmVnaXN0ZXIoaW5kZXgpKTsKLSAgICByZXR1cm4gdGhpc1tpbmRleF07
Ci19Ci0KLWlubGluZSBSZWdpc3RlciYgQ2FsbEZyYW1lOjpyKFZpcnR1YWxSZWdpc3RlciByZWcp
Ci17Ci0gICAgcmV0dXJuIHIocmVnLm9mZnNldCgpKTsKLX0KLQotaW5saW5lIFJlZ2lzdGVyJiBD
YWxsRnJhbWU6OnVuY2hlY2tlZFIoaW50IGluZGV4KQotewotICAgIFJFTEVBU0VfQVNTRVJUKGlu
ZGV4IDwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpOwotICAgIHJldHVybiB0aGlzW2luZGV4
XTsKLX0KLQotaW5saW5lIFJlZ2lzdGVyJiBDYWxsRnJhbWU6OnVuY2hlY2tlZFIoVmlydHVhbFJl
Z2lzdGVyIHJlZykKLXsKLSAgICByZXR1cm4gdW5jaGVja2VkUihyZWcub2Zmc2V0KCkpOwotfQot
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRXhlY3V0YWJsZVR5cGU+CiBFeGNlcHRpb24qIFNjcmlwdEV4
ZWN1dGFibGU6OnByZXBhcmVGb3JFeGVjdXRpb24oVk0mIHZtLCBKU0Z1bmN0aW9uKiBmdW5jdGlv
biwgSlNTY29wZSogc2NvcGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgQ29kZUJsb2Nr
KiYgcmVzdWx0Q29kZUJsb2NrKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL01ldGFkYXRhVGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxlLmNwcAkocmV2aXNpb24gMjUxNTc5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGFkYXRhVGFibGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNZXRhZGF0YVRh
YmxlLmgiCiAKLSNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiT3Bjb2RlSW5saW5lcy5oIgogI2luY2x1ZGUgIlVubGlua2VkTWV0YWRhdGFU
YWJsZUlubGluZXMuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDI1MTU3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBA
QAogI2luY2x1ZGUgIkIzU2xvdEJhc2VWYWx1ZS5oIgogI2luY2x1ZGUgIkIzU3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJC
dXR0ZXJmbHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lU2h1ZmZsZXIuaCIKICNpbmNs
dWRlICJDb2RlQmxvY2tXaXRoSklUVHlwZS5oIgogI2luY2x1ZGUgIkRGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
Q2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0NhbGxGcmFtZS5oCShyZXZpc2lvbiAyNTE1NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBA
CiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtk
ZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20p
Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xMDQsMjYgKzEwNCwxNCBAQCBuYW1l
c3BhY2UgSlNDICB7CiAgICAgICAgIC8vIHlldCBzdXJlIGlmIHRoZSBjYWxsZWUgaXMgYSBjZWxs
LiBJbiBnZW5lcmFsLCBhIEpTIGNhbGxlZSBpcyBndWFyYW50ZWVkCiAgICAgICAgIC8vIHRvIGJl
IGEgY2VsbCwgaG93ZXZlciwgdGhlcmUgaXMgYSBicmllZiB3aW5kb3cgd2hlcmUgd2UgbmVlZCB0
byBjaGVjawogICAgICAgICAvLyB0byBzZWUgaWYgaXQncyBhIGNlbGwsIGFuZCBpZiBpdCdzIG5v
dCwgd2UgdGhyb3cgYW4gZXhjZXB0aW9uLgotICAgICAgICBKU1ZhbHVlIGd1YXJhbnRlZWRKU1Zh
bHVlQ2FsbGVlKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKCFjYWxsZWUo
KS5pc1dhc20oKSk7Ci0gICAgICAgICAgICByZXR1cm4gdGhpc1tDYWxsRnJhbWVTbG90OjpjYWxs
ZWVdLmpzVmFsdWUoKTsKLSAgICAgICAgfQotICAgICAgICBKU09iamVjdCoganNDYWxsZWUoKSBj
b25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoIWNhbGxlZSgpLmlzV2FzbSgpKTsK
LSAgICAgICAgICAgIHJldHVybiB0aGlzW0NhbGxGcmFtZVNsb3Q6OmNhbGxlZV0ub2JqZWN0KCk7
Ci0gICAgICAgIH0KKyAgICAgICAgaW5saW5lIEpTVmFsdWUgZ3VhcmFudGVlZEpTVmFsdWVDYWxs
ZWUoKSBjb25zdDsKKyAgICAgICAgaW5saW5lIEpTT2JqZWN0KiBqc0NhbGxlZSgpIGNvbnN0Owog
ICAgICAgICBDYWxsZWVCaXRzIGNhbGxlZSgpIGNvbnN0IHsgcmV0dXJuIENhbGxlZUJpdHModGhp
c1tDYWxsRnJhbWVTbG90OjpjYWxsZWVdLnBvaW50ZXIoKSk7IH0KICAgICAgICAgU1VQUFJFU1Nf
QVNBTiBDYWxsZWVCaXRzIHVuc2FmZUNhbGxlZSgpIGNvbnN0IHsgcmV0dXJuIENhbGxlZUJpdHMo
dGhpc1tDYWxsRnJhbWVTbG90OjpjYWxsZWVdLmFzYW5VbnNhZmVQb2ludGVyKCkpOyB9Ci0gICAg
ICAgIENvZGVCbG9jayogY29kZUJsb2NrKCkgY29uc3QgeyByZXR1cm4gdGhpc1tDYWxsRnJhbWVT
bG90Ojpjb2RlQmxvY2tdLlJlZ2lzdGVyOjpjb2RlQmxvY2soKTsgfQorICAgICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jaygpIGNvbnN0OwogICAgICAgICBDb2RlQmxvY2sqKiBhZGRyZXNzT2ZDb2Rl
QmxvY2soKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8Q29kZUJsb2NrKio+KHRoaXMgKyBD
YWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spOyB9Ci0gICAgICAgIFNVUFBSRVNTX0FTQU4gQ29kZUJs
b2NrKiB1bnNhZmVDb2RlQmxvY2soKSBjb25zdCB7IHJldHVybiB0aGlzW0NhbGxGcmFtZVNsb3Q6
OmNvZGVCbG9ja10uUmVnaXN0ZXI6OmFzYW5VbnNhZmVDb2RlQmxvY2soKTsgfQotICAgICAgICBK
U1Njb3BlKiBzY29wZShpbnQgc2NvcGVSZWdpc3Rlck9mZnNldCkgY29uc3QKLSAgICAgICAgewot
ICAgICAgICAgICAgQVNTRVJUKHRoaXNbc2NvcGVSZWdpc3Rlck9mZnNldF0uUmVnaXN0ZXI6OnNj
b3BlKCkpOwotICAgICAgICAgICAgcmV0dXJuIHRoaXNbc2NvcGVSZWdpc3Rlck9mZnNldF0uUmVn
aXN0ZXI6OnNjb3BlKCk7Ci0gICAgICAgIH0KKyAgICAgICAgaW5saW5lIFNVUFBSRVNTX0FTQU4g
Q29kZUJsb2NrKiB1bnNhZmVDb2RlQmxvY2soKSBjb25zdDsKKyAgICAgICAgaW5saW5lIEpTU2Nv
cGUqIHNjb3BlKGludCBzY29wZVJlZ2lzdGVyT2Zmc2V0KSBjb25zdDsKIAogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBib29sIGlzQW55V2FzbUNhbGxlZSgpOwogCkBAIC0xODMsMTggKzE3MSwx
MyBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAgICAgIC8vIENvZGVPcmlnaW4oQnl0ZWNvZGVJbmRl
eCgwKSkgaWYgd2UncmUgaW4gbmF0aXZlIGNvZGUuCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IENvZGVPcmlnaW4gY29kZU9yaWdpbigpOwogCi0gICAgICAgIFJlZ2lzdGVyKiB0b3BPZkZyYW1l
KCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFjb2RlQmxvY2soKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gcmVnaXN0ZXJzKCk7Ci0gICAgICAgICAgICByZXR1cm4gdG9wT2ZGcmFtZUlu
dGVybmFsKCk7Ci0gICAgICAgIH0KKyAgICAgICAgaW5saW5lIFJlZ2lzdGVyKiB0b3BPZkZyYW1l
KCk7CiAgICAgCiAgICAgICAgIGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50VlBDKCkgY29uc3Q7
IC8vIFRoaXMgb25seSBtYWtlcyBzZW5zZSBpbiB0aGUgTExJbnQgYW5kIGJhc2VsaW5lLgogICAg
ICAgICB2b2lkIHNldEN1cnJlbnRWUEMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKIAogICAgICAgICB2
b2lkIHNldENhbGxlckZyYW1lKENhbGxGcmFtZSogZnJhbWUpIHsgY2FsbGVyRnJhbWVBbmRQQygp
LmNhbGxlckZyYW1lID0gZnJhbWU7IH0KLSAgICAgICAgdm9pZCBzZXRTY29wZShpbnQgc2NvcGVS
ZWdpc3Rlck9mZnNldCwgSlNTY29wZSogc2NvcGUpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0
aGlzKVtzY29wZVJlZ2lzdGVyT2Zmc2V0XSA9IHNjb3BlOyB9CisgICAgICAgIGlubGluZSB2b2lk
IHNldFNjb3BlKGludCBzY29wZVJlZ2lzdGVyT2Zmc2V0LCBKU1Njb3BlKik7CiAKICAgICAgICAg
c3RhdGljIHZvaWQgaW5pdERlcHJlY2F0ZWRDYWxsRnJhbWVGb3JEZWJ1Z2dlcihDYWxsRnJhbWUq
IGdsb2JhbEV4ZWMsIEpTQ2FsbGVlKiBnbG9iYWxDYWxsZWUpOwogCkBAIC0yNjksOCArMjUyLDgg
QEAgbmFtZXNwYWNlIEpTQyAgewogICAgICAgICBib29sIGlzV2FzbUZyYW1lKCkgY29uc3Q7CiAK
ICAgICAgICAgdm9pZCBzZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhpbnQgY291bnQpIHsg
c3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
XS5wYXlsb2FkKCkgPSBjb3VudDsgfQotICAgICAgICB2b2lkIHNldENhbGxlZShKU09iamVjdCog
Y2FsbGVlKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbQ2FsbEZyYW1lU2xvdDo6Y2Fs
bGVlXSA9IGNhbGxlZTsgfQotICAgICAgICB2b2lkIHNldENvZGVCbG9jayhDb2RlQmxvY2sqIGNv
ZGVCbG9jaykgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW0NhbGxGcmFtZVNsb3Q6OmNv
ZGVCbG9ja10gPSBjb2RlQmxvY2s7IH0KKyAgICAgICAgaW5saW5lIHZvaWQgc2V0Q2FsbGVlKEpT
T2JqZWN0Kik7CisgICAgICAgIGlubGluZSB2b2lkIHNldENvZGVCbG9jayhDb2RlQmxvY2sqKTsK
ICAgICAgICAgdm9pZCBzZXRSZXR1cm5QQyh2b2lkKiB2YWx1ZSkgeyBjYWxsZXJGcmFtZUFuZFBD
KCkucmV0dXJuUEMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IEluc3RydWN0aW9uKj4odmFsdWUp
OyB9CiAKICAgICAgICAgU3RyaW5nIGZyaWVuZGx5RnVuY3Rpb25OYW1lKCk7CkBAIC0zMjMsOCAr
MzA2LDYgQEAgbmFtZXNwYWNlIEpTQyAgewogICAgICAgICBTVVBQUkVTU19BU0FOIGNvbnN0IENh
bGxlckZyYW1lQW5kUEMmIHVuc2FmZUNhbGxlckZyYW1lQW5kUEMoKSBjb25zdCB7IHJldHVybiAq
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBDYWxsZXJGcmFtZUFuZFBDKj4odGhpcyk7IH0KICAgICB9
OwogCi0vLyBIZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IFZNJiBmcm9tIEpTR2xvYmFsT2JqZWN0KiBp
ZiBKU0dsb2JhbE9iamVjdC5oIGlzIG5vdCBpbmNsdWRlZC4KLVZNJiBnZXRWTShKU0dsb2JhbE9i
amVjdCopOwogSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0Zyb21KU0NvZGUodm9pZCogcmV0dXJu
QWRkcmVzcyk7CiAKICNpZiBVU0UoQlVJTFRJTl9GUkFNRV9BRERSRVNTKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZUlubGluZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lSW5saW5lcy5o
CShyZXZpc2lvbiAyNTE1NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
Q2FsbEZyYW1lSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDkgKzI4LDY2IEBACiAjaW5jbHVk
ZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiSlNDYWxsZWUuaCIKICNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdC5oIgorI2luY2x1ZGUgIlJlZ2lzdGVySW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlND
IHsKIAoraW5saW5lIFJlZ2lzdGVyJiBDYWxsRnJhbWU6OnIoaW50IGluZGV4KQoreworICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gdGhpcy0+Y29kZUJsb2NrKCk7CisgICAgaWYgKGNvZGVCbG9j
ay0+aXNDb25zdGFudFJlZ2lzdGVySW5kZXgoaW5kZXgpKQorICAgICAgICByZXR1cm4gKnJlaW50
ZXJwcmV0X2Nhc3Q8UmVnaXN0ZXIqPigmY29kZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVyKGluZGV4
KSk7CisgICAgcmV0dXJuIHRoaXNbaW5kZXhdOworfQorCitpbmxpbmUgUmVnaXN0ZXImIENhbGxG
cmFtZTo6cihWaXJ0dWFsUmVnaXN0ZXIgcmVnKQoreworICAgIHJldHVybiByKHJlZy5vZmZzZXQo
KSk7Cit9CisKK2lubGluZSBSZWdpc3RlciYgQ2FsbEZyYW1lOjp1bmNoZWNrZWRSKGludCBpbmRl
eCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChpbmRleCA8IEZpcnN0Q29uc3RhbnRSZWdpc3Rlcklu
ZGV4KTsKKyAgICByZXR1cm4gdGhpc1tpbmRleF07Cit9CisKK2lubGluZSBSZWdpc3RlciYgQ2Fs
bEZyYW1lOjp1bmNoZWNrZWRSKFZpcnR1YWxSZWdpc3RlciByZWcpCit7CisgICAgcmV0dXJuIHVu
Y2hlY2tlZFIocmVnLm9mZnNldCgpKTsKK30KKworaW5saW5lIEpTVmFsdWUgQ2FsbEZyYW1lOjpn
dWFyYW50ZWVkSlNWYWx1ZUNhbGxlZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFjYWxsZWUoKS5p
c1dhc20oKSk7CisgICAgcmV0dXJuIHRoaXNbQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlXS5qc1ZhbHVl
KCk7Cit9CisKK2lubGluZSBKU09iamVjdCogQ2FsbEZyYW1lOjpqc0NhbGxlZSgpIGNvbnN0Cit7
CisgICAgQVNTRVJUKCFjYWxsZWUoKS5pc1dhc20oKSk7CisgICAgcmV0dXJuIHRoaXNbQ2FsbEZy
YW1lU2xvdDo6Y2FsbGVlXS5vYmplY3QoKTsKK30KKworaW5saW5lIENvZGVCbG9jayogQ2FsbEZy
YW1lOjpjb2RlQmxvY2soKSBjb25zdAoreworICAgIHJldHVybiB0aGlzW0NhbGxGcmFtZVNsb3Q6
OmNvZGVCbG9ja10uUmVnaXN0ZXI6OmNvZGVCbG9jaygpOworfQorCitpbmxpbmUgU1VQUFJFU1Nf
QVNBTiBDb2RlQmxvY2sqIENhbGxGcmFtZTo6dW5zYWZlQ29kZUJsb2NrKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gdGhpc1tDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2tdLlJlZ2lzdGVyOjphc2FuVW5z
YWZlQ29kZUJsb2NrKCk7Cit9CisKK2lubGluZSBKU0dsb2JhbE9iamVjdCogQ2FsbEZyYW1lOjps
ZXhpY2FsR2xvYmFsT2JqZWN0KFZNJiB2bSkgY29uc3QKK3sKKyAgICBVTlVTRURfUEFSQU0odm0p
OworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyAgICBpZiAoY2FsbGVlKCkuaXNXYXNtKCkpCisg
ICAgICAgIHJldHVybiBsZXhpY2FsR2xvYmFsT2JqZWN0RnJvbVdhc21DYWxsZWUodm0pOworI2Vu
ZGlmCisgICAgcmV0dXJuIGpzQ2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOworfQorCiBpbmxpbmUg
Ym9vbCBDYWxsRnJhbWU6OmlzU3RhY2tPdmVyZmxvd0ZyYW1lKCkgY29uc3QKIHsKICAgICBpZiAo
Y2FsbGVlKCkuaXNXYXNtKCkpCkBAIC00Myw0ICsxMDAsMzIgQEAgaW5saW5lIGJvb2wgQ2FsbEZy
YW1lOjppc1dhc21GcmFtZSgpIGNvbgogICAgIHJldHVybiBjYWxsZWUoKS5pc1dhc20oKTsKIH0K
IAoraW5saW5lIHZvaWQgQ2FsbEZyYW1lOjpzZXRDYWxsZWUoSlNPYmplY3QqIGNhbGxlZSkKK3sK
KyAgICBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW0NhbGxGcmFtZVNsb3Q6OmNhbGxlZV0g
PSBjYWxsZWU7Cit9CisKK2lubGluZSB2b2lkIENhbGxGcmFtZTo6c2V0Q29kZUJsb2NrKENvZGVC
bG9jayogY29kZUJsb2NrKQoreworICAgIHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbQ2Fs
bEZyYW1lU2xvdDo6Y29kZUJsb2NrXSA9IGNvZGVCbG9jazsKK30KKworaW5saW5lIHZvaWQgQ2Fs
bEZyYW1lOjpzZXRTY29wZShpbnQgc2NvcGVSZWdpc3Rlck9mZnNldCwgSlNTY29wZSogc2NvcGUp
Cit7CisgICAgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtzY29wZVJlZ2lzdGVyT2Zmc2V0
XSA9IHNjb3BlOworfQorCitpbmxpbmUgSlNTY29wZSogQ2FsbEZyYW1lOjpzY29wZShpbnQgc2Nv
cGVSZWdpc3Rlck9mZnNldCkgY29uc3QKK3sKKyAgICBBU1NFUlQodGhpc1tzY29wZVJlZ2lzdGVy
T2Zmc2V0XS5SZWdpc3Rlcjo6c2NvcGUoKSk7CisgICAgcmV0dXJuIHRoaXNbc2NvcGVSZWdpc3Rl
ck9mZnNldF0uUmVnaXN0ZXI6OnNjb3BlKCk7Cit9CisKK2lubGluZSBSZWdpc3RlciogQ2FsbEZy
YW1lOjp0b3BPZkZyYW1lKCkKK3sKKyAgICBpZiAoIWNvZGVCbG9jaygpKQorICAgICAgICByZXR1
cm4gcmVnaXN0ZXJzKCk7CisgICAgcmV0dXJuIHRvcE9mRnJhbWVJbnRlcm5hbCgpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMjUxNTc5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjYsNyArNjYsNyBAQAogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgogI2luY2x1ZGUg
IlBhcnNlci5oIgogI2luY2x1ZGUgIlByb2dyYW1Db2RlQmxvY2suaCIKLSNpbmNsdWRlICJQcm90
b0NhbGxGcmFtZS5oIgorI2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1lSW5saW5lcy5oIgogI2luY2x1
ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiUmVn
aXN0ZXJBdE9mZnNldExpc3QuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9Qcm90b0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5oCShyZXZpc2lvbiAyNTE1NzkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQ3LDE2ICs0NywxMyBAQCBwdWJsaWM6CiAgICAgSlNWYWx1ZSAqYXJnczsKICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0OwogCi0gICAgdm9pZCBpbml0KENvZGVCbG9j
ayosIEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqLCBKU1ZhbHVlLCBpbnQsIEpTVmFsdWUqIG90
aGVyQXJncyA9IDApOworICAgIGlubGluZSB2b2lkIGluaXQoQ29kZUJsb2NrKiwgSlNHbG9iYWxP
YmplY3QqLCBKU09iamVjdCosIEpTVmFsdWUsIGludCwgSlNWYWx1ZSogb3RoZXJBcmdzID0gMCk7
CiAKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaygpIGNvbnN0IHsgcmV0dXJuIGNvZGVCbG9ja1Zh
bHVlLlJlZ2lzdGVyOjpjb2RlQmxvY2soKTsgfQotICAgIHZvaWQgc2V0Q29kZUJsb2NrKENvZGVC
bG9jayogY29kZUJsb2NrKSB7IGNvZGVCbG9ja1ZhbHVlID0gY29kZUJsb2NrOyB9CisgICAgaW5s
aW5lIENvZGVCbG9jayogY29kZUJsb2NrKCkgY29uc3Q7CisgICAgaW5saW5lIHZvaWQgc2V0Q29k
ZUJsb2NrKENvZGVCbG9jayopOwogCi0gICAgSlNPYmplY3QqIGNhbGxlZSgpIGNvbnN0IHsgcmV0
dXJuIGNhbGxlZVZhbHVlLlJlZ2lzdGVyOjpvYmplY3QoKTsgfQotICAgIHZvaWQgc2V0Q2FsbGVl
KEpTT2JqZWN0KiBjYWxsZWUpCi0gICAgewotICAgICAgICBjYWxsZWVWYWx1ZSA9IGNhbGxlZTsK
LSAgICB9CisgICAgaW5saW5lIEpTT2JqZWN0KiBjYWxsZWUoKSBjb25zdDsKKyAgICBpbmxpbmUg
dm9pZCBzZXRDYWxsZWUoSlNPYmplY3QqKTsKICAgICB2b2lkIHNldEdsb2JhbE9iamVjdChKU0ds
b2JhbE9iamVjdCogb2JqZWN0KQogICAgIHsKICAgICAgICAgZ2xvYmFsT2JqZWN0ID0gb2JqZWN0
OwpAQCAtODYsMjMgKzgzLDQgQEAgcHVibGljOgogICAgIH0KIH07CiAKLWlubGluZSB2b2lkIFBy
b3RvQ2FsbEZyYW1lOjppbml0KENvZGVCbG9jayogY29kZUJsb2NrLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU09iamVjdCogY2FsbGVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgaW50IGFy
Z0NvdW50SW5jbHVkaW5nVGhpcywgSlNWYWx1ZSogb3RoZXJBcmdzKQotewotICAgIHRoaXMtPmFy
Z3MgPSBvdGhlckFyZ3M7Ci0gICAgdGhpcy0+c2V0Q29kZUJsb2NrKGNvZGVCbG9jayk7Ci0gICAg
dGhpcy0+c2V0Q2FsbGVlKGNhbGxlZSk7Ci0gICAgdGhpcy0+c2V0R2xvYmFsT2JqZWN0KGdsb2Jh
bE9iamVjdCk7Ci0gICAgdGhpcy0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoYXJnQ291
bnRJbmNsdWRpbmdUaGlzKTsKLSAgICBpZiAoY29kZUJsb2NrICYmIGFyZ0NvdW50SW5jbHVkaW5n
VGhpcyA8IGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKQotICAgICAgICB0aGlzLT5oYXNBcml0
eU1pc21hdGNoID0gdHJ1ZTsKLSAgICBlbHNlCi0gICAgICAgIHRoaXMtPmhhc0FyaXR5TWlzbWF0
Y2ggPSBmYWxzZTsKLQotICAgIC8vIFJvdW5kIHVwIGFyZ0NvdW50SW5jbHVkaW5nVGhpcyB0byBr
ZWVwIHRoZSBzdGFjayBmcmFtZSBzaXplIGFsaWduZWQuCi0gICAgc2l6ZV90IHBhZGRlZEFyZ3ND
b3VudCA9IHJvdW5kQXJndW1lbnRDb3VudFRvQWxpZ25GcmFtZShhcmdDb3VudEluY2x1ZGluZ1Ro
aXMpOwotICAgIHRoaXMtPnNldFBhZGRlZEFyZ0NvdW50KHBhZGRlZEFyZ3NDb3VudCk7Ci0gICAg
dGhpcy0+Y2xlYXJDdXJyZW50VlBDKCk7Ci0gICAgdGhpcy0+c2V0VGhpc1ZhbHVlKHRoaXNWYWx1
ZSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZUlubGluZXMuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxs
RnJhbWVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJSZWdpc3RlcklubGluZXMuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2lubGluZSB2b2lkIFByb3RvQ2FsbEZyYW1lOjppbml0KENvZGVC
bG9jayogY29kZUJsb2NrLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCog
Y2FsbGVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgaW50IGFyZ0NvdW50SW5jbHVkaW5nVGhpcywgSlNW
YWx1ZSogb3RoZXJBcmdzKQoreworICAgIHRoaXMtPmFyZ3MgPSBvdGhlckFyZ3M7CisgICAgdGhp
cy0+c2V0Q29kZUJsb2NrKGNvZGVCbG9jayk7CisgICAgdGhpcy0+c2V0Q2FsbGVlKGNhbGxlZSk7
CisgICAgdGhpcy0+c2V0R2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgdGhpcy0+c2V0
QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoYXJnQ291bnRJbmNsdWRpbmdUaGlzKTsKKyAgICBp
ZiAoY29kZUJsb2NrICYmIGFyZ0NvdW50SW5jbHVkaW5nVGhpcyA8IGNvZGVCbG9jay0+bnVtUGFy
YW1ldGVycygpKQorICAgICAgICB0aGlzLT5oYXNBcml0eU1pc21hdGNoID0gdHJ1ZTsKKyAgICBl
bHNlCisgICAgICAgIHRoaXMtPmhhc0FyaXR5TWlzbWF0Y2ggPSBmYWxzZTsKKworICAgIC8vIFJv
dW5kIHVwIGFyZ0NvdW50SW5jbHVkaW5nVGhpcyB0byBrZWVwIHRoZSBzdGFjayBmcmFtZSBzaXpl
IGFsaWduZWQuCisgICAgc2l6ZV90IHBhZGRlZEFyZ3NDb3VudCA9IHJvdW5kQXJndW1lbnRDb3Vu
dFRvQWxpZ25GcmFtZShhcmdDb3VudEluY2x1ZGluZ1RoaXMpOworICAgIHRoaXMtPnNldFBhZGRl
ZEFyZ0NvdW50KHBhZGRlZEFyZ3NDb3VudCk7CisgICAgdGhpcy0+Y2xlYXJDdXJyZW50VlBDKCk7
CisgICAgdGhpcy0+c2V0VGhpc1ZhbHVlKHRoaXNWYWx1ZSk7Cit9CisKK2lubGluZSBKU09iamVj
dCogUHJvdG9DYWxsRnJhbWU6OmNhbGxlZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNhbGxlZVZh
bHVlLlJlZ2lzdGVyOjpvYmplY3QoKTsKK30KKworaW5saW5lIHZvaWQgUHJvdG9DYWxsRnJhbWU6
OnNldENhbGxlZShKU09iamVjdCogY2FsbGVlKQoreworICAgIGNhbGxlZVZhbHVlID0gY2FsbGVl
OworfQorCitpbmxpbmUgQ29kZUJsb2NrKiBQcm90b0NhbGxGcmFtZTo6Y29kZUJsb2NrKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gY29kZUJsb2NrVmFsdWUuUmVnaXN0ZXI6OmNvZGVCbG9jaygpOwor
fQorCitpbmxpbmUgdm9pZCBQcm90b0NhbGxGcmFtZTo6c2V0Q29kZUJsb2NrKENvZGVCbG9jayog
Y29kZUJsb2NrKQoreworICAgIGNvZGVCbG9ja1ZhbHVlID0gY29kZUJsb2NrOworfQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9S
ZWdpc3Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9SZWdpc3Rlci5oCShyZXZpc2lvbiAyNTE1NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUxLDE3ICs1MSwxNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNWYWx1ZSBhc2FuVW5zYWZlSlNWYWx1ZSgpIGNv
bnN0OwogICAgICAgICBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkSlNWYWx1ZSgpIGNvbnN0OwogICAg
ICAgICAKLSAgICAgICAgUmVnaXN0ZXImIG9wZXJhdG9yPShDYWxsRnJhbWUqKTsKLSAgICAgICAg
UmVnaXN0ZXImIG9wZXJhdG9yPShDb2RlQmxvY2sqKTsKLSAgICAgICAgUmVnaXN0ZXImIG9wZXJh
dG9yPShKU1Njb3BlKik7Ci0gICAgICAgIFJlZ2lzdGVyJiBvcGVyYXRvcj0oSlNPYmplY3QqKTsK
KyAgICAgICAgQUxXQVlTX0lOTElORSBSZWdpc3RlciYgb3BlcmF0b3I9KENhbGxGcmFtZSopOwor
ICAgICAgICBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVyJiBvcGVyYXRvcj0oQ29kZUJsb2NrKik7Cisg
ICAgICAgIEFMV0FZU19JTkxJTkUgUmVnaXN0ZXImIG9wZXJhdG9yPShKU1Njb3BlKik7CisgICAg
ICAgIEFMV0FZU19JTkxJTkUgUmVnaXN0ZXImIG9wZXJhdG9yPShKU09iamVjdCopOwogCiAgICAg
ICAgIGludDMyX3QgaSgpIGNvbnN0OwotICAgICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSgpIGNv
bnN0OwotICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaygpIGNvbnN0OwotICAgICAgICBDb2Rl
QmxvY2sqIGFzYW5VbnNhZmVDb2RlQmxvY2soKSBjb25zdDsKLSAgICAgICAgSlNPYmplY3QqIG9i
amVjdCgpIGNvbnN0OwotICAgICAgICBKU1Njb3BlKiBzY29wZSgpIGNvbnN0OworICAgICAgICBB
TFdBWVNfSU5MSU5FIENhbGxGcmFtZSogY2FsbEZyYW1lKCkgY29uc3Q7CisgICAgICAgIEFMV0FZ
U19JTkxJTkUgQ29kZUJsb2NrKiBjb2RlQmxvY2soKSBjb25zdDsKKyAgICAgICAgQUxXQVlTX0lO
TElORSBDb2RlQmxvY2sqIGFzYW5VbnNhZmVDb2RlQmxvY2soKSBjb25zdDsKKyAgICAgICAgQUxX
QVlTX0lOTElORSBKU09iamVjdCogb2JqZWN0KCkgY29uc3Q7CisgICAgICAgIEFMV0FZU19JTkxJ
TkUgSlNTY29wZSogc2NvcGUoKSBjb25zdDsKICAgICAgICAgaW50MzJfdCB1bmJveGVkSW50MzIo
KSBjb25zdDsKICAgICAgICAgaW50MzJfdCBhc2FuVW5zYWZlVW5ib3hlZEludDMyKCkgY29uc3Q7
CiAgICAgICAgIGludDY0X3QgdW5ib3hlZEludDUyKCkgY29uc3Q7CkBAIC0xMzYsMzggKzEzNiwx
MSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIC8vIEludGVycHJldGVyIGZ1bmN0aW9ucwogCi0g
ICAgQUxXQVlTX0lOTElORSBSZWdpc3RlciYgUmVnaXN0ZXI6Om9wZXJhdG9yPShDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKLSAgICB7Ci0gICAgICAgIHUuY2FsbEZyYW1lID0gY2FsbEZyYW1lOwotICAg
ICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSBSZWdpc3RlciYg
UmVnaXN0ZXI6Om9wZXJhdG9yPShDb2RlQmxvY2sqIGNvZGVCbG9jaykKLSAgICB7Ci0gICAgICAg
IHUuY29kZUJsb2NrID0gY29kZUJsb2NrOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQot
CiAgICAgQUxXQVlTX0lOTElORSBpbnQzMl90IFJlZ2lzdGVyOjppKCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHJldHVybiBqc1ZhbHVlKCkuYXNJbnQzMigpOwogICAgIH0KIAotICAgIEFMV0FZU19J
TkxJTkUgQ2FsbEZyYW1lKiBSZWdpc3Rlcjo6Y2FsbEZyYW1lKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiB1LmNhbGxGcmFtZTsKLSAgICB9Ci0gICAgCi0gICAgQUxXQVlTX0lOTElORSBD
b2RlQmxvY2sqIFJlZ2lzdGVyOjpjb2RlQmxvY2soKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIHUuY29kZUJsb2NrOwotICAgIH0KLQotICAgIFNVUFBSRVNTX0FTQU4gQUxXQVlTX0lOTElO
RSBDb2RlQmxvY2sqIFJlZ2lzdGVyOjphc2FuVW5zYWZlQ29kZUJsb2NrKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiB1LmNvZGVCbG9jazsKLSAgICB9Ci0KICAgICBBTFdBWVNfSU5MSU5F
IGludDMyX3QgUmVnaXN0ZXI6OnVuYm94ZWRJbnQzMigpIGNvbnN0CiAgICAgewogICAgICAgICBy
ZXR1cm4gcGF5bG9hZCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L1JlZ2lzdGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9SZWdpc3RlcklubGluZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
Q29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSlNTY29wZS5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitBTFdBWVNfSU5MSU5FIENhbGxGcmFtZSogUmVnaXN0ZXI6
OmNhbGxGcmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHUuY2FsbEZyYW1lOworfQorCitBTFdB
WVNfSU5MSU5FIENvZGVCbG9jayogUmVnaXN0ZXI6OmNvZGVCbG9jaygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHUuY29kZUJsb2NrOworfQorCitTVVBQUkVTU19BU0FOIEFMV0FZU19JTkxJTkUgQ29k
ZUJsb2NrKiBSZWdpc3Rlcjo6YXNhblVuc2FmZUNvZGVCbG9jaygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHUuY29kZUJsb2NrOworfQorCitBTFdBWVNfSU5MSU5FIEpTT2JqZWN0KiBSZWdpc3Rlcjo6
b2JqZWN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gYXNPYmplY3QoanNWYWx1ZSgpKTsKK30KKwor
QUxXQVlTX0lOTElORSBSZWdpc3RlciYgUmVnaXN0ZXI6Om9wZXJhdG9yPShDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKK3sKKyAgICB1LmNhbGxGcmFtZSA9IGNhbGxGcmFtZTsKKyAgICByZXR1cm4gKnRo
aXM7Cit9CisKK0FMV0FZU19JTkxJTkUgUmVnaXN0ZXImIFJlZ2lzdGVyOjpvcGVyYXRvcj0oQ29k
ZUJsb2NrKiBjb2RlQmxvY2spCit7CisgICAgdS5jb2RlQmxvY2sgPSBjb2RlQmxvY2s7CisgICAg
cmV0dXJuICp0aGlzOworfQorCitBTFdBWVNfSU5MSU5FIFJlZ2lzdGVyJiBSZWdpc3Rlcjo6b3Bl
cmF0b3I9KEpTT2JqZWN0KiBvYmplY3QpCit7CisgICAgdS52YWx1ZSA9IEpTVmFsdWU6OmVuY29k
ZShKU1ZhbHVlKG9iamVjdCkpOworICAgIHJldHVybiAqdGhpczsKK30KKworQUxXQVlTX0lOTElO
RSBSZWdpc3RlciYgUmVnaXN0ZXI6Om9wZXJhdG9yPShKU1Njb3BlKiBzY29wZSkKK3sKKyAgICAq
dGhpcyA9IEpTVmFsdWUoc2NvcGUpOworICAgIHJldHVybiAqdGhpczsKK30KKworQUxXQVlTX0lO
TElORSBKU1Njb3BlKiBSZWdpc3Rlcjo6c2NvcGUoKSBjb25zdAoreworICAgIHJldHVybiBqc0Nh
c3Q8SlNTY29wZSo+KHVuYm94ZWRDZWxsKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0
b3IuY3BwCShyZXZpc2lvbiAyNTE1NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNiBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN0YWNrVmlzaXRvci5oIgogCi0jaW5jbHVk
ZSAiQ2FsbEZyYW1lSW5saW5lcy5oIgogI2luY2x1ZGUgIkNsb25lZEFyZ3VtZW50cy5oIgogI2lu
Y2x1ZGUgIkRlYnVnZ2VyUHJpbWl0aXZlcy5oIgogI2luY2x1ZGUgIklubGluZUNhbGxGcmFtZS5o
IgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShy
ZXZpc2lvbiAyNTE1NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVs
cGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSW5saW5l
Q2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiSklUQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiSklUQ29k
ZS5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxl
ci5oIgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJBdE9mZnNl
dExpc3QuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAkocmV2aXNpb24gMjUxNTc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQAog
I2luY2x1ZGUgIk9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgiCiAjaW5jbHVkZSAiT3Bjb2Rl
SW5saW5lcy5oIgogI2luY2x1ZGUgIlByb2dyYW1Db2RlQmxvY2suaCIKLSNpbmNsdWRlICJQcm90
b0NhbGxGcmFtZS5oIgorI2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1lSW5saW5lcy5oIgogI2luY2x1
ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlNoYWRvd0NoaWNrZW4uaCIKICNpbmNsdWRl
ICJTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5U3RvcmFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5U3RvcmFnZS5oCShyZXZpc2lvbiAyNTE1NzkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVN0b3JhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xMDMsMTAgKzEwMyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRvdGFsU2l6ZUZvciht
X2luZGV4QmlhcywgcHJvcGVydHlDYXBhY2l0eSwgdmVjdG9yTGVuZ3RoKCkpOwogICAgIH0KIAot
ICAgIHNpemVfdCB0b3RhbFNpemUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gdG90YWxTaXplKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7
Ci0gICAgfQorICAgIGlubGluZSBzaXplX3QgdG90YWxTaXplKFN0cnVjdHVyZSopIGNvbnN0Owog
CiAgICAgc3RhdGljIHVuc2lnbmVkIGF2YWlsYWJsZVZlY3Rvckxlbmd0aCh1bnNpZ25lZCBpbmRl
eEJpYXMsIHNpemVfdCBwcm9wZXJ0eUNhcGFjaXR5LCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpCiAg
ICAgewpAQCAtMTE3LDQxICsxMTQsMTkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdmVjdG9y
TGVuZ3RoOwogICAgIH0KIAotICAgIHN0YXRpYyB1bnNpZ25lZCBhdmFpbGFibGVWZWN0b3JMZW5n
dGgodW5zaWduZWQgaW5kZXhCaWFzLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgdmVj
dG9yTGVuZ3RoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGF2YWlsYWJsZVZlY3Rvckxlbmd0aChp
bmRleEJpYXMsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdmVjdG9yTGVuZ3RoKTsK
LSAgICB9CisgICAgaW5saW5lIHN0YXRpYyB1bnNpZ25lZCBhdmFpbGFibGVWZWN0b3JMZW5ndGgo
dW5zaWduZWQgaW5kZXhCaWFzLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpOwog
Ci0gICAgdW5zaWduZWQgYXZhaWxhYmxlVmVjdG9yTGVuZ3RoKHNpemVfdCBwcm9wZXJ0eUNhcGFj
aXR5LCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpCi0gICAgewotICAgICAgICByZXR1cm4gYXZhaWxh
YmxlVmVjdG9yTGVuZ3RoKG1faW5kZXhCaWFzLCBwcm9wZXJ0eUNhcGFjaXR5LCB2ZWN0b3JMZW5n
dGgpOwotICAgIH0KKyAgICBpbmxpbmUgdW5zaWduZWQgYXZhaWxhYmxlVmVjdG9yTGVuZ3RoKHNp
emVfdCBwcm9wZXJ0eUNhcGFjaXR5LCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpOwogCi0gICAgdW5z
aWduZWQgYXZhaWxhYmxlVmVjdG9yTGVuZ3RoKFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25l
ZCB2ZWN0b3JMZW5ndGgpCi0gICAgewotICAgICAgICByZXR1cm4gYXZhaWxhYmxlVmVjdG9yTGVu
Z3RoKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdmVjdG9yTGVuZ3RoKTsKLSAgICB9
CisgICAgaW5saW5lIHVuc2lnbmVkIGF2YWlsYWJsZVZlY3Rvckxlbmd0aChTdHJ1Y3R1cmUqLCB1
bnNpZ25lZCB2ZWN0b3JMZW5ndGgpOwogCi0gICAgc3RhdGljIHVuc2lnbmVkIG9wdGltYWxWZWN0
b3JMZW5ndGgodW5zaWduZWQgaW5kZXhCaWFzLCBzaXplX3QgcHJvcGVydHlDYXBhY2l0eSwgdW5z
aWduZWQgdmVjdG9yTGVuZ3RoKQotICAgIHsKLSAgICAgICAgdmVjdG9yTGVuZ3RoID0gc3RkOjpt
YXgoQkFTRV9BUlJBWV9TVE9SQUdFX1ZFQ1RPUl9MRU4sIHZlY3Rvckxlbmd0aCk7Ci0gICAgICAg
IHJldHVybiBhdmFpbGFibGVWZWN0b3JMZW5ndGgoaW5kZXhCaWFzLCBwcm9wZXJ0eUNhcGFjaXR5
LCB2ZWN0b3JMZW5ndGgpOwotICAgIH0KKyAgICBpbmxpbmUgc3RhdGljIHVuc2lnbmVkIG9wdGlt
YWxWZWN0b3JMZW5ndGgodW5zaWduZWQgaW5kZXhCaWFzLCBzaXplX3QgcHJvcGVydHlDYXBhY2l0
eSwgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKTsKIAotICAgIHN0YXRpYyB1bnNpZ25lZCBvcHRpbWFs
VmVjdG9yTGVuZ3RoKHVuc2lnbmVkIGluZGV4QmlhcywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVu
c2lnbmVkIHZlY3Rvckxlbmd0aCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBvcHRpbWFsVmVjdG9y
TGVuZ3RoKGluZGV4Qmlhcywgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCB2ZWN0b3JM
ZW5ndGgpOwotICAgIH0KKyAgICBpbmxpbmUgc3RhdGljIHVuc2lnbmVkIG9wdGltYWxWZWN0b3JM
ZW5ndGgodW5zaWduZWQgaW5kZXhCaWFzLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCB2ZWN0b3JMZW5n
dGgpOwogCi0gICAgdW5zaWduZWQgb3B0aW1hbFZlY3Rvckxlbmd0aChzaXplX3QgcHJvcGVydHlD
YXBhY2l0eSwgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG9w
dGltYWxWZWN0b3JMZW5ndGgobV9pbmRleEJpYXMsIHByb3BlcnR5Q2FwYWNpdHksIHZlY3Rvckxl
bmd0aCk7Ci0gICAgfQorICAgIGlubGluZSB1bnNpZ25lZCBvcHRpbWFsVmVjdG9yTGVuZ3RoKHNp
emVfdCBwcm9wZXJ0eUNhcGFjaXR5LCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpOwogCi0gICAgdW5z
aWduZWQgb3B0aW1hbFZlY3Rvckxlbmd0aChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQg
dmVjdG9yTGVuZ3RoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG9wdGltYWxWZWN0b3JMZW5ndGgo
c3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCB2ZWN0b3JMZW5ndGgpOwotICAgIH0KKyAg
ICBpbmxpbmUgdW5zaWduZWQgb3B0aW1hbFZlY3Rvckxlbmd0aChTdHJ1Y3R1cmUqLCB1bnNpZ25l
ZCB2ZWN0b3JMZW5ndGgpOwogCiAgICAgV3JpdGVCYXJyaWVyPFNwYXJzZUFycmF5VmFsdWVNYXA+
IG1fc3BhcnNlTWFwOwogICAgIHVuc2lnbmVkIG1faW5kZXhCaWFzOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlTdG9yYWdlSW5saW5lcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5U3RvcmFnZUlubGluZXMuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVN0b3JhZ2VJ
bmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJyYXlTdG9yYWdlLmgiCisjaW5jbHVkZSAiU3RydWN0
dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworaW5saW5lIHVuc2lnbmVkIEFycmF5
U3RvcmFnZTo6YXZhaWxhYmxlVmVjdG9yTGVuZ3RoKHVuc2lnbmVkIGluZGV4QmlhcywgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCkKK3sKKyAgICByZXR1cm4gYXZh
aWxhYmxlVmVjdG9yTGVuZ3RoKGluZGV4Qmlhcywgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0
eSgpLCB2ZWN0b3JMZW5ndGgpOworfQorCitpbmxpbmUgdW5zaWduZWQgQXJyYXlTdG9yYWdlOjph
dmFpbGFibGVWZWN0b3JMZW5ndGgoc2l6ZV90IHByb3BlcnR5Q2FwYWNpdHksIHVuc2lnbmVkIHZl
Y3Rvckxlbmd0aCkKK3sKKyAgICByZXR1cm4gYXZhaWxhYmxlVmVjdG9yTGVuZ3RoKG1faW5kZXhC
aWFzLCBwcm9wZXJ0eUNhcGFjaXR5LCB2ZWN0b3JMZW5ndGgpOworfQorCitpbmxpbmUgdW5zaWdu
ZWQgQXJyYXlTdG9yYWdlOjphdmFpbGFibGVWZWN0b3JMZW5ndGgoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCkKK3sKKyAgICByZXR1cm4gYXZhaWxhYmxlVmVjdG9y
TGVuZ3RoKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdmVjdG9yTGVuZ3RoKTsKK30K
KworaW5saW5lIHVuc2lnbmVkIEFycmF5U3RvcmFnZTo6b3B0aW1hbFZlY3Rvckxlbmd0aCh1bnNp
Z25lZCBpbmRleEJpYXMsIHNpemVfdCBwcm9wZXJ0eUNhcGFjaXR5LCB1bnNpZ25lZCB2ZWN0b3JM
ZW5ndGgpCit7CisgICAgdmVjdG9yTGVuZ3RoID0gc3RkOjptYXgoQkFTRV9BUlJBWV9TVE9SQUdF
X1ZFQ1RPUl9MRU4sIHZlY3Rvckxlbmd0aCk7CisgICAgcmV0dXJuIGF2YWlsYWJsZVZlY3Rvckxl
bmd0aChpbmRleEJpYXMsIHByb3BlcnR5Q2FwYWNpdHksIHZlY3Rvckxlbmd0aCk7Cit9CisKK2lu
bGluZSB1bnNpZ25lZCBBcnJheVN0b3JhZ2U6Om9wdGltYWxWZWN0b3JMZW5ndGgodW5zaWduZWQg
aW5kZXhCaWFzLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKQor
eworICAgIHJldHVybiBvcHRpbWFsVmVjdG9yTGVuZ3RoKGluZGV4Qmlhcywgc3RydWN0dXJlLT5v
dXRPZkxpbmVDYXBhY2l0eSgpLCB2ZWN0b3JMZW5ndGgpOworfQorCitpbmxpbmUgdW5zaWduZWQg
QXJyYXlTdG9yYWdlOjpvcHRpbWFsVmVjdG9yTGVuZ3RoKHNpemVfdCBwcm9wZXJ0eUNhcGFjaXR5
LCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpCit7CisgICAgcmV0dXJuIG9wdGltYWxWZWN0b3JMZW5n
dGgobV9pbmRleEJpYXMsIHByb3BlcnR5Q2FwYWNpdHksIHZlY3Rvckxlbmd0aCk7Cit9CisKK2lu
bGluZSB1bnNpZ25lZCBBcnJheVN0b3JhZ2U6Om9wdGltYWxWZWN0b3JMZW5ndGgoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCkKK3sKKyAgICByZXR1cm4gb3B0aW1h
bFZlY3Rvckxlbmd0aChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIHZlY3Rvckxlbmd0
aCk7Cit9CisKK2lubGluZSBzaXplX3QgQXJyYXlTdG9yYWdlOjp0b3RhbFNpemUoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRvdGFsU2l6ZShzdHJ1Y3R1cmUtPm91
dE9mTGluZUNhcGFjaXR5KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J1dHRlcmZseUlubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CdXR0ZXJmbHlJbmxpbmVzLmgJKHJldmlz
aW9uIDI1MTU3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J1dHRlcmZseUlu
bGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTItMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTItMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNl
CiAKLSNpbmNsdWRlICJBcnJheVN0b3JhZ2UuaCIKKyNpbmNsdWRlICJBcnJheVN0b3JhZ2VJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiQnV0dGVyZmx5LmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNp
bmNsdWRlICJTdHJ1Y3R1cmUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NsYXNzSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NsYXNzSW5mby5oCShyZXZpc2lvbiAyNTE1NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DbGFzc0luZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNiBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNvbnN0cnVj
dERhdGEuaCIKICNpbmNsdWRlICJKU0Nhc3QuaCIKICNpbmNsdWRlIDx3dGYvUHRyVGFnLmg+Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXRWTS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldFZNLmgJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0Vk0uaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBKU0dsb2JhbE9iamVjdDsKK2NsYXNzIFZNOworCisvLyBIZWxwZXIgZnVuY3Rp
b24gdG8gZ2V0IFZNJiBmcm9tIEpTR2xvYmFsT2JqZWN0KiBpZiBKU0dsb2JhbE9iamVjdC5oIGlz
IG5vdCBpbmNsdWRlZC4KK1ZNJiBnZXRWTShKU0dsb2JhbE9iamVjdCopOworCit9IC8vIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHJl
dmlzaW9uIDI1MTU3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXku
aAkod29ya2luZyBjb3B5KQpAQCAtMjIsOCArMjIsOCBAQAogCiAjaW5jbHVkZSAiQXJnTGlzdC5o
IgogI2luY2x1ZGUgIkFycmF5Q29udmVudGlvbnMuaCIKLSNpbmNsdWRlICJCdXR0ZXJmbHlJbmxp
bmVzLmgiCi0jaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkJ1dHRlcmZseS5o
IgorI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUlubGlu
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
SW5saW5lcy5oCShyZXZpc2lvbiAyNTE1NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqICBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTIwLDYgKzIwLDcgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiQXJyYXlQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJCdXR0ZXJmbHlJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAi
SlNDZWxsSW5saW5lcy5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbElubGluZXMuaAkocmV2aXNpb24gMjUxNTc5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3
IEBACiAjaW5jbHVkZSAiQWxsb2NhdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIkNvbXBsZXRlU3Vi
c3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ1BVLmgiCi0jaW5jbHVkZSAiQ2FsbEZyYW1lLmgi
CisjaW5jbHVkZSAiQ2FsbEZyYW1lSW5saW5lcy5oIgogI2luY2x1ZGUgIkRlZmVyR0MuaCIKICNp
bmNsdWRlICJGcmVlTGlzdElubGluZXMuaCIKICNpbmNsdWRlICJIYW5kbGUuaCIKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNp
b24gMjUxNTc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkJvb2xlYW5Q
cm90b3R5cGUuaCIKICNpbmNsdWRlICJFcnJvclR5cGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25I
ZWxwZXJzLmgiCisjaW5jbHVkZSAiR2V0Vk0uaCIKICNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9u
LmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJQcm90b3R5
cGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2
aXNpb24gMjUxNTc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtMTQ5NywxNyArMTQ5Nyw2IEBAIGlubGluZSBib29sIEpTT2Jq
ZWN0OjpwdXREaXJlY3QoVk0mIHZtLCAKICAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWw8UHV0
TW9kZURlZmluZU93blByb3BlcnR5Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCk7
CiB9CiAKLUFMV0FZU19JTkxJTkUgSlNPYmplY3QqIFJlZ2lzdGVyOjpvYmplY3QoKSBjb25zdAot
ewotICAgIHJldHVybiBhc09iamVjdChqc1ZhbHVlKCkpOwotfQotCi1BTFdBWVNfSU5MSU5FIFJl
Z2lzdGVyJiBSZWdpc3Rlcjo6b3BlcmF0b3I9KEpTT2JqZWN0KiBvYmplY3QpCi17Ci0gICAgdS52
YWx1ZSA9IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKG9iamVjdCkpOwotICAgIHJldHVybiAqdGhp
czsKLX0KLQogaW5saW5lIHNpemVfdCBvZmZzZXRJbkJ1dHRlcmZseShQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQpCiB7CiAgICAgcmV0dXJuIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpICsg
QnV0dGVyZmx5OjppbmRleE9mUHJvcGVydHlTdG9yYWdlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAkocmV2aXNpb24gMjUxNTc5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0y
MDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAx
IFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIw
MDcgRXJpYyBTZWlkZWwgKGVyaWNAd2Via2l0Lm9yZykKICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMjQsNiAr
MjQsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBdXhpbGlhcnlCYXJyaWVySW5saW5l
cy5oIgorI2luY2x1ZGUgIkJ1dHRlcmZseUlubGluZXMuaCIKICNpbmNsdWRlICJFcnJvci5oIgog
I2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5cy5oIgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaAkocmV2aXNpb24gMjUxNTc5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjksMjcgKzEyOSw2IEBAIGlubGluZSBKU1Njb3BlKiBKU1Njb3BlOjpuZXh0KCkKICAg
ICByZXR1cm4gbV9uZXh0LmdldCgpOwogfQogCi1pbmxpbmUgUmVnaXN0ZXImIFJlZ2lzdGVyOjpv
cGVyYXRvcj0oSlNTY29wZSogc2NvcGUpCi17Ci0gICAgKnRoaXMgPSBKU1ZhbHVlKHNjb3BlKTsK
LSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLWlubGluZSBKU1Njb3BlKiBSZWdpc3Rlcjo6c2NvcGUo
KSBjb25zdAotewotICAgIHJldHVybiBqc0Nhc3Q8SlNTY29wZSo+KHVuYm94ZWRDZWxsKCkpOwot
fQotCi1pbmxpbmUgSlNHbG9iYWxPYmplY3QqIENhbGxGcmFtZTo6bGV4aWNhbEdsb2JhbE9iamVj
dChWTSYgdm0pIGNvbnN0Ci17Ci0gICAgVU5VU0VEX1BBUkFNKHZtKTsKLSNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCi0gICAgaWYgKGNhbGxlZSgpLmlzV2FzbSgpKQotICAgICAgICByZXR1cm4gbGV4
aWNhbEdsb2JhbE9iamVjdEZyb21XYXNtQ2FsbGVlKHZtKTsKLSNlbmRpZgotICAgIHJldHVybiBq
c0NhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKLX0KLQogaW5saW5lIHNpemVfdCBKU1Njb3BlOjpv
ZmZzZXRPZk5leHQoKQogewogICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNTY29wZSwgbV9u
ZXh0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2
aXNpb24gMjUxNTc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcu
aAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkFyZ0xpc3QuaCIK
ICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgor
I2luY2x1ZGUgIkdldFZNLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlBy
b3BlcnR5RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCShy
ZXZpc2lvbiAyNTE1NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eU5hbWVBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw2IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJKHJldmlzaW9u
IDI1MTU3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiRE9NQW5ub3RhdGlvbi5oIgorI2luY2x1ZGUg
IkdldFZNLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFt
ZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5T2Zmc2V0LmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTUlubGluZXMuaAkocmV2aXNpb24gMjUxNTc5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1JbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw3
ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ2FsbEZyYW1lSW5saW5lcy5o
IgogI2luY2x1ZGUgIkVudHJ5RnJhbWUuaCIKICNpbmNsdWRlICJQcm9maWxlckRhdGFiYXNlLmgi
CiAjaW5jbHVkZSAiVk0uaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFw
VmVyaWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9I
ZWFwVmVyaWZpZXIuY3BwCShyZXZpc2lvbiAyNTE1NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvSGVhcFZlcmlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhlYXBWZXJpZmllci5oIgogCisjaW5j
bHVkZSAiQnV0dGVyZmx5SW5saW5lcy5oIgogI2luY2x1ZGUgIkNvZGVCbG9ja0lubGluZXMuaCIK
ICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseUZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjUxNTc5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDcgKzQwLDcgQEAKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmgiCiAjaW5j
bHVkZSAiTExJbnRUaHVua3MuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCi0jaW5jbHVkZSAi
UHJvdG9DYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJQcm90b0NhbGxGcmFtZUlubGluZXMuaCIKICNp
bmNsdWRlICJWTS5oIgogI2luY2x1ZGUgIldhc21DYWxsZWUuaCIKICNpbmNsdWRlICJXYXNtQ2Fs
bGluZ0NvbnZlbnRpb24uaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MTU3OSkKKysrIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisy
MDE5LTEwLTI0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBNb3Zl
IEpTQzo6UmVnaXN0ZXIgaW5saW5lIG1ldGhvZHMgaW50byBSZWdpc3RlcklubGluZXMuaC4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzM5MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IG5lZWRlZCBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRL
ZXlTZXNzaW9uLm1tOgorCiAyMDE5LTEwLTIzICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIEFkZCBhIG1lY2hhbmlzbSB0byBmaW5kIGFuZCBtYW5pcHVsYXRlIHRl
eHQgYnkgcGFyYWdyYXBocwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0JKHJldmlzaW9uIDI1MTU3OSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNl
c3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDYgKzM2LDggQEAK
ICNpbXBvcnQgIldlYkNvcmVOU0Vycm9yRXh0cmFzLmgiCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24v
QVZFcnJvci5oPgogI2ltcG9ydCA8Q29yZU1lZGlhL0NNQmFzZS5oPgorI2ltcG9ydCA8SmF2YVNj
cmlwdENvcmUvSGVhcElubGluZXMuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTQ2VsbElu
bGluZXMuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0SW5saW5lcy5o
PgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJheUlubGluZXMuaD4KICNpbXBvcnQg
PG9iamMvb2JqYy1ydW50aW1lLmg+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381867</attachid>
            <date>2019-10-24 19:21:34 -0700</date>
            <delta_ts>2019-10-24 19:21:34 -0700</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-203391.patch</filename>
            <type>text/plain</type>
            <size>55117</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUxNTc5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBA
QAorMjAxOS0xMC0yNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
TW92ZSBKU0M6OlJlZ2lzdGVyIGlubGluZSBtZXRob2RzIGludG8gUmVnaXN0ZXJJbmxpbmVzLmgu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMzOTEK
KworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpIGFuZCBLZWl0aCBNaWxsZXIuCisK
KyAgICAgICAgV2UncmUgZG9pbmcgdGhpcyBiZWNhdXNlOgorICAgICAgICAxLiBSZWdpc3Rlcklu
bGluZXMuaCBpcyB0aGUgY2Fub25pY2FsIHBsYWNlIHRvIHB1dCBpbmxpbmUgUmVnaXN0ZXIgbWV0
aG9kcy4KKyAgICAgICAgMi4gSXQgaGVscHMgcmVkdWNlIGJ1aWxkIHRpbWUuCisgICAgICAgICAg
IGUuZy4gYnVpbGQtanNjIHdlbnQgZnJvbSAyMDguMDIgdG8gMTk2LjgxIHNlY29uZHMgKGFib3V0
IGEgNSUgcmVkdWN0aW9uKS4KKyAgICAgICAgMy4gVGhpcyBlbmFibGVzIGV4cGVyaW1lbnRhbCB3
b3JrIHRvIGJveCBKU0NlbGxzIGluIEpTVmFsdWUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNv
IGhhbmRsZXMgdGhlIGZhbGxvdXQgb2YgdGhpcyBjaGFuZ2UsIHdoaWNoIG5lY2Vzc2l0YXRlcyBt
b3JlCisgICAgICAgIGlubGluZSBtZXRob2RzIGJlaW5nIG1vdmVkIGZyb20gPGZpbGU+LmggdG8g
dGhlaXIgcmVzcGVjdGl2ZSA8ZmlsZT5JbmxpbmVzLmguCisKKyAgICAgICAgSlNBcnJheS5oIHVz
ZWQgdG8gaW5jbHVkZSBCdXR0ZXJmbHlJbmxpbmVzLmggYW5kIEpTQ2VsbElubGluZXMuaC4gIFRo
aXMgaXMgYQorICAgICAgICB2aW9sYXRpb24gb2YgaW5jbHVzaW9uIG9yZGVyaW5nICguaCBzaG91
bGQgbm90ICNpbmNsdWRlIElubGluZXMuaCkuICBUaGlzCisgICAgICAgIHZpb2xhdGlvbiBoYXMg
YmVlbiByZW1vdmVkLgorCisgICAgICAgICogQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tOgorICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAg
ICAgIChKU0M6OkNhbGxGcmFtZTo6cik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNhbGxGcmFt
ZTo6dW5jaGVja2VkUik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvTWV0YWRhdGFUYWJs
ZS5jcHA6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6Z3VhcmFudGVl
ZEpTVmFsdWVDYWxsZWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6
OmpzQ2FsbGVlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpjb2Rl
QmxvY2sgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OnVuc2FmZUNv
ZGVCbG9jayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6c2NvcGUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OnRvcE9mRnJhbWUpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OnNldFNjb3BlKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpzZXRDYWxsZWUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpDYWxsRnJhbWU6OnNldENvZGVCbG9jayk6IERlbGV0ZWQuCisgICAgICAgICogaW50ZXJwcmV0
ZXIvQ2FsbEZyYW1lSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OnIpOgorICAg
ICAgICAoSlNDOjpDYWxsRnJhbWU6OnVuY2hlY2tlZFIpOgorICAgICAgICAoSlNDOjpDYWxsRnJh
bWU6Omd1YXJhbnRlZWRKU1ZhbHVlQ2FsbGVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FsbEZy
YW1lOjpqc0NhbGxlZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6Y29kZUJsb2Nr
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjp1bnNhZmVDb2RlQmxvY2sgY29uc3Qp
OgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OmxleGljYWxHbG9iYWxPYmplY3QgY29uc3QpOgor
ICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OnNldENhbGxlZSk6CisgICAgICAgIChKU0M6OkNhbGxG
cmFtZTo6c2V0Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpzZXRTY29wZSk6
CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6c2NvcGUgY29uc3QpOgorICAgICAgICAoSlNDOjpD
YWxsRnJhbWU6OnRvcE9mRnJhbWUpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVy
LmNwcDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5oOgorICAgICAgICAo
SlNDOjpQcm90b0NhbGxGcmFtZTo6aW5pdCk6IERlbGV0ZWQuCisgICAgICAgICogaW50ZXJwcmV0
ZXIvUHJvdG9DYWxsRnJhbWVJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpQcm90b0Nh
bGxGcmFtZTo6aW5pdCk6CisgICAgICAgIChKU0M6OlByb3RvQ2FsbEZyYW1lOjpjYWxsZWUgY29u
c3QpOgorICAgICAgICAoSlNDOjpQcm90b0NhbGxGcmFtZTo6c2V0Q2FsbGVlKToKKyAgICAgICAg
KEpTQzo6UHJvdG9DYWxsRnJhbWU6OmNvZGVCbG9jayBjb25zdCk6CisgICAgICAgIChKU0M6OlBy
b3RvQ2FsbEZyYW1lOjpzZXRDb2RlQmxvY2spOgorICAgICAgICAqIGludGVycHJldGVyL1JlZ2lz
dGVyLmg6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyOjpjYWxsRnJhbWUgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpSZWdpc3Rlcjo6Y29kZUJsb2NrIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6UmVnaXN0ZXI6OmFzYW5VbnNhZmVDb2RlQmxvY2sgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIGludGVycHJldGVyL1JlZ2lzdGVySW5saW5lcy5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6UmVnaXN0ZXI6OmNhbGxGcmFtZSBjb25zdCk6CisgICAgICAgIChKU0M6OlJlZ2lz
dGVyOjpjb2RlQmxvY2sgY29uc3QpOgorICAgICAgICAoSlNDOjpSZWdpc3Rlcjo6YXNhblVuc2Fm
ZUNvZGVCbG9jayBjb25zdCk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyOjpvYmplY3QgY29uc3Qp
OgorICAgICAgICAoSlNDOjpSZWdpc3Rlcjo6b3BlcmF0b3I9KToKKyAgICAgICAgKEpTQzo6UmVn
aXN0ZXI6OnNjb3BlIGNvbnN0KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9TdGFja1Zpc2l0b3Iu
Y3BwOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKiBsbGludC9M
TEludFNsb3dQYXRocy5jcHA6CisgICAgICAgICogcnVudGltZS9BcnJheVN0b3JhZ2UuaDoKKyAg
ICAgICAgKEpTQzo6QXJyYXlTdG9yYWdlOjpvcHRpbWFsVmVjdG9yTGVuZ3RoKTogRGVsZXRlZC4K
KyAgICAgICAgKiBydW50aW1lL0FycmF5U3RvcmFnZUlubGluZXMuaDogQWRkZWQuCisgICAgICAg
IChKU0M6OkFycmF5U3RvcmFnZTo6YXZhaWxhYmxlVmVjdG9yTGVuZ3RoKToKKyAgICAgICAgKEpT
Qzo6QXJyYXlTdG9yYWdlOjpvcHRpbWFsVmVjdG9yTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6QXJy
YXlTdG9yYWdlOjp0b3RhbFNpemUgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvQnV0dGVyZmx5
SW5saW5lcy5oOgorICAgICAgICAqIHJ1bnRpbWUvQ2xhc3NJbmZvLmg6CisgICAgICAgICogcnVu
dGltZS9HZXRWTS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTQXJyYXlJbmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGxJ
bmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXI6Om9iamVjdCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVyOjpvcGVyYXRvcj0pOiBEZWxldGVk
LgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgICogcnVudGlt
ZS9KU1Njb3BlLmg6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyOjpvcGVyYXRvcj0pOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpSZWdpc3Rlcjo6c2NvcGUgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpDYWxsRnJhbWU6OmxleGljYWxHbG9iYWxPYmplY3QgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5
TmFtZUFycmF5Lmg6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAg
KiBydW50aW1lL1ZNSW5saW5lcy5oOgorICAgICAgICAqIHRvb2xzL0hlYXBWZXJpZmllci5jcHA6
CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcDoKKwogMjAxOS0xMC0y
NCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBbIE1hYyBXSzEg
XSBSRUdSRVNTSU9OIChyMjUxMjYxKTogTGF5b3V0IFRlc3QgaW5zcGVjdG9yL2NvbnNvbGUvd2Vi
Y29yZS1sb2dnaW5nLmh0bWwgaXMgY29uc2lzdGVudGx5IEZhaWxpbmcKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI1MTU3OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNjc4LDYgKzY3OCw3
IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUEKICAgICBpbnRlcnBy
ZXRlci9FbnRyeUZyYW1lLmgKICAgICBpbnRlcnByZXRlci9GcmFtZVRyYWNlcnMuaAogICAgIGlu
dGVycHJldGVyL1JlZ2lzdGVyLmgKKyAgICBpbnRlcnByZXRlci9SZWdpc3RlcklubGluZXMuaAog
ICAgIGludGVycHJldGVyL1NoYWRvd0NoaWNrZW4uaAogICAgIGludGVycHJldGVyL1N0YWNrVmlz
aXRvci5oCiAgICAgaW50ZXJwcmV0ZXIvVk1FbnRyeVJlY29yZC5oCkBAIC03NTIsNiArNzUzLDcg
QEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQQogICAgIHJ1bnRpbWUv
QXJyYXlDb252ZW50aW9ucy5oCiAgICAgcnVudGltZS9BcnJheVByb3RvdHlwZS5oCiAgICAgcnVu
dGltZS9BcnJheVN0b3JhZ2UuaAorICAgIHJ1bnRpbWUvQXJyYXlTdG9yYWdlSW5saW5lcy5oCiAg
ICAgcnVudGltZS9BdXhpbGlhcnlCYXJyaWVyLmgKICAgICBydW50aW1lL0F1eGlsaWFyeUJhcnJp
ZXJJbmxpbmVzLmgKICAgICBydW50aW1lL0Jhc2ljQmxvY2tMb2NhdGlvbi5oCkBAIC04MjEsNiAr
ODIzLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQQogICAgIHJ1
bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKICAgICBydW50aW1lL0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0lubGluZXMuaAogICAgIHJ1bnRpbWUvR2V0UHV0SW5mby5oCisgICAgcnVudGltZS9H
ZXRWTS5oCiAgICAgcnVudGltZS9HbG9iYWxFeGVjdXRhYmxlLmgKICAgICBydW50aW1lL0hhc2hN
YXBJbXBsLmgKICAgICBydW50aW1lL0lkZW50aWZpZXIuaApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tCShyZXZpc2lvbiAyNTE1NzkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKIAogI2lt
cG9ydCAiQVBJQ2FzdC5oIgorI2ltcG9ydCAiQ2FsbEZyYW1lSW5saW5lcy5oIgogI2ltcG9ydCAi
Q2F0Y2hTY29wZS5oIgogI2ltcG9ydCAiQ29tcGxldGlvbi5oIgogI2ltcG9ydCAiRXJyb3IuaCIK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNTE1NzkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTg2NSw2ICsxODY1LDEwIEBACiAJCUZFMUJEMDIxMUU3
MjAyNzkwMDEzNEJDOSAvKiBDZWxsUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxQkQwMjAxRTcyMDI3MDAwMTM0QkM5IC8qIENlbGxQcm9m
aWxlLmggKi87IH07CiAJCUZFMUJEMDI1MUU3MjA1MzgwMDEzNEJDOSAvKiBIZWFwVmVyaWZpZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUJEMDIz
MUU3MjA1MkYwMDEzNEJDOSAvKiBIZWFwVmVyaWZpZXIuaCAqLzsgfTsKIAkJRkUxQzBGRkQxQjE5
M0U5ODAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkUxQzBGRkMxQjE5M0U5ODAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFMUQ2
RDZEMjM2MjU0NEIwMDdBNUMyNiAvKiBSZWdpc3RlcklubGluZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUQ2RDZDMjM2MjU0NEEwMDdBNUMyNiAv
KiBSZWdpc3RlcklubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlGRTFENkQ2RjIzNjI1OEZFMDA3QTVDMjYgLyogR2V0Vk0uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUQ2RDZFMjM2MjU4RkUw
MDdBNUMyNiAvKiBHZXRWTS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUZFMUQ2RDcxMjM2MjVBQjEwMDdBNUMyNiAvKiBBcnJheVN0b3JhZ2VJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFE
NkQ3MDIzNjI1QUIwMDA3QTVDMjYgLyogQXJyYXlTdG9yYWdlSW5saW5lcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFMUQ2RDc1MjM2MjY0OUYw
MDdBNUMyNiAvKiBQcm90b0NhbGxGcmFtZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUQ2RDc0MjM2MjY0OUQwMDdBNUMyNiAvKiBQcm90
b0NhbGxGcmFtZUlubGluZXMuaCAqLzsgfTsKIAkJRkUxRTJDM0YyMjQwREQ1ODAwRjZCNzI5IC8q
IE1hY3JvQXNzZW1ibGVyQVJNNjRFLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRTFFMkMzRTIyNDBEMzBCMDBGNkI3MjkgLyogTWFjcm9Bc3NlbWJsZXJB
Uk02NEUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlGRTFFMkM0MDIyNDBERDYyMDBGNkI3MjkgLyogQVJNNjRFQXNzZW1ibGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFFMkMzRDIyNDBEMkY2MDBG
NkI3MjkgLyogQVJNNjRFQXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkUyMENFOUUxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xv
b3AuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMjBD
RTlDMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTUwNDksNiArNTA1MywxMCBAQAogCQlGRTFC
RDAyMzFFNzIwNTJGMDAxMzRCQzkgLyogSGVhcFZlcmlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEhlYXBWZXJpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGRTFDMEZGQzFCMTkzRTk4MDBCNTNGQ0EgLyogRXhjZXB0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4Y2VwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGRTFDMEZGRTFCMTk0RkQxMDBCNTNGQ0EgLyogRXhjZXB0aW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4Y2VwdGlvbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUZFMUQ2RDZDMjM2MjU0NEEwMDdBNUMyNiAvKiBSZWdpc3Rlcklu
bGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaXN0ZXJJbmxpbmVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMUQ2RDZFMjM2MjU4RkUwMDdBNUMy
NiAvKiBHZXRWTS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZXRWTS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTFENkQ3MDIzNjI1QUIwMDA3QTVDMjYgLyog
QXJyYXlTdG9yYWdlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
cnJheVN0b3JhZ2VJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMUQ2
RDc0MjM2MjY0OUQwMDdBNUMyNiAvKiBQcm90b0NhbGxGcmFtZUlubGluZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvdG9DYWxsRnJhbWVJbmxpbmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMUUyQzNDMjI0MEMxRUYwMEY2QjcyOSAvKiBKU0NQdHJU
YWcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDUHRyVGFnLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUxRTJDM0QyMjQwRDJGNjAwRjZCNzI5
IC8qIEFSTTY0RUFzc2VtYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
Uk02NEVBc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUxRTJDM0Uy
MjQwRDMwQjAwRjZCNzI5IC8qIE1hY3JvQXNzZW1ibGVyQVJNNjRFLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyQVJNNjRFLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC01OTI3LDcgKzU5MzUsOSBAQAogCQkJCTE0MjlENzdCMEVEMjBENzMw
MEI4OTYxOSAvKiBJbnRlcnByZXRlci5oICovLAogCQkJCUUzOUQ5RDg0MUQzOTAwMDYwMDY2NzI4
MiAvKiBJbnRlcnByZXRlcklubGluZXMuaCAqLywKIAkJCQk2NUZCNTExNTE4NEVFOEY4MDBDMTJC
NzAgLyogUHJvdG9DYWxsRnJhbWUuaCAqLywKKwkJCQlGRTFENkQ3NDIzNjI2NDlEMDA3QTVDMjYg
LyogUHJvdG9DYWxsRnJhbWVJbmxpbmVzLmggKi8sCiAJCQkJMTQ5QjI0RkYwRDhBRjZEMTAwOUNC
OEM3IC8qIFJlZ2lzdGVyLmggKi8sCisJCQkJRkUxRDZENkMyMzYyNTQ0QTAwN0E1QzI2IC8qIFJl
Z2lzdGVySW5saW5lcy5oICovLAogCQkJCURDMTdFODEzMUM5QzdGRDQwMDhBNkFCMyAvKiBTaGFk
b3dDaGlja2VuLmNwcCAqLywKIAkJCQlEQzE3RTgxNDFDOUM3RkQ0MDA4QTZBQjMgLyogU2hhZG93
Q2hpY2tlbi5oICovLAogCQkJCURDMTdFODE1MUM5QzdGRDQwMDhBNkFCMyAvKiBTaGFkb3dDaGlj
a2VuSW5saW5lcy5oICovLApAQCAtNjkwMSw2ICs2OTExLDcgQEAKIAkJCQlGNjkyQTg0RDAyNTU1
OTdEMDFGRjYwRjcgLyogQXJyYXlQcm90b3R5cGUuY3BwICovLAogCQkJCUY2OTJBODRFMDI1NTU5
N0QwMUZGNjBGNyAvKiBBcnJheVByb3RvdHlwZS5oICovLAogCQkJCTBGQjdGMzhBMTVFRDhFMzgw
MEYxNjdCMiAvKiBBcnJheVN0b3JhZ2UuaCAqLywKKwkJCQlGRTFENkQ3MDIzNjI1QUIwMDA3QTVD
MjYgLyogQXJyYXlTdG9yYWdlSW5saW5lcy5oICovLAogCQkJCThCNjAxNkYzMUYzRTNDQzAwMEY5
REU2QSAvKiBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUuY3BwICovLAogCQkJCThCNjAx
NkY0MUYzRTNDQzAwMEY5REU2QSAvKiBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUuaCAq
LywKIAkJCQk1QjcwQ0ZERDFEQjY5RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVj
dG9yLmNwcCAqLywKQEAgLTcwNzcsNiArNzA4OCw3IEBACiAJCQkJMEYyQjY2QjMxN0I2QjVBQjAw
QTdBRTNGIC8qIEdlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCAqLywKIAkJCQkxNDc4OEVF
NTIxNTAxQjI5MDBBNTYxQzggLyogR2V0UHV0SW5mby5jcHAgKi8sCiAJCQkJNzk2NDY1NjgxQjk1
MkZGMDAwMzA1OUVFIC8qIEdldFB1dEluZm8uaCAqLywKKwkJCQlGRTFENkQ2RTIzNjI1OEZFMDA3
QTVDMjYgLyogR2V0Vk0uaCAqLywKIAkJCQlCQzAyRTlCODBFMTg0NTQ1MDAwRjkyOTcgLyogR2V0
dGVyU2V0dGVyLmNwcCAqLywKIAkJCQlCQzMzN0JERTBFMUFGMEI4MDA3NjkxOEEgLyogR2V0dGVy
U2V0dGVyLmggKi8sCiAJCQkJRTM1NUQzOEUyMjQ0Njg2QzAwOEYxQUQ2IC8qIEdsb2JhbEV4ZWN1
dGFibGUuY3BwICovLApAQCAtODg3MSw2ICs4ODgzLDcgQEAKIAkJCQkwRkVDODUwNDFCREFDREFD
MDA4MEZGNzQgLyogQjNCbG9ja1dvcmtsaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlEQ0ZERkJE
OTFEMUY1RDlCMDBGRTNENzIgLyogQjNCb3R0b21Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY2QjhBRTMxQzRFRkUxNzAwOTY5MDUyIC8qIEIzQnJlYWtDcml0aWNhbEVkZ2VzLmggaW4g
SGVhZGVycyAqLywKKwkJCQlGRTFENkQ3NTIzNjI2NDlGMDA3QTVDMjYgLyogUHJvdG9DYWxsRnJh
bWVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlEQzlBMEMyMDFEMkQ5Q0IzMDA4NTEyNEUg
LyogQjNDYXNlQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREM5QTBDMUYxRDJEOUNC
MTAwODUxMjRFIC8qIEIzQ2FzZUNvbGxlY3Rpb25JbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjMzOERGQTFCRTk2QUE4MDAxM0M4OEYgLyogQjNDQ2FsbFZhbHVlLmggaW4gSGVhZGVycyAq
LywKQEAgLTg5MTQsNiArODkyNyw3IEBACiAJCQkJMEYzMzhFMUUxQkYyODZFQTAwMTNDODhGIC8q
IEIzTG93ZXJNYWNyb3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzMTlEQTA0MUMxQkU0MEQwMDFE
MjYwQiAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkVDODUxRTFCREFDREFDMDA4MEZGNzQgLyogQjNMb3dlclRvQWlyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGRTFENkQ2RDIzNjI1NDRCMDA3QTVDMjYgLyogUmVnaXN0ZXJJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0M0FCMjZDNjFDMUE1MzU5MDBEODJBRTYgLyogQjNNYXRoRXh0
cmFzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUyMDFCREFDREFDMDA4MEZGNzQgLyogQjNN
ZW1vcnlWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQzYzQzQxRTY5RUY5NDAwQzEzODM5
IC8qIEIzTWVtb3J5VmFsdWVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTk0NzgsNiArOTQ5
Miw3IEBACiAJCQkJMEYzMkJEMTExQkIzNEYxOTAwOTNBNTdGIC8qIEhlYXBIZWxwZXJQb29sLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDMkRBNzc4MzE4RTI1OTk5MDA2NkZDQjYgLyogSGVhcElubGlu
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBRDg5MzJCMTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFw
SXRlcmF0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFMUQ2RDcxMjM2MjVBQjEwMDdB
NUMyNiAvKiBBcnJheVN0b3JhZ2VJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTMzOUVD
OTFCQjRCNDYwMDA1NEYwMDUgLyogSGVhcE9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NTM5OEZBQjFDNzUwREE0MDA2MEE5NjMgLyogSGVhcFByb2ZpbGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNTRDMkFCMTFDNjU0NEYyMDBBMThENzggLyogSGVhcFNuYXBzaG90LmggaW4gSGVhZGVy
cyAqLywKQEAgLTk5OTUsNiArMTAwMTAsNyBAQAogCQkJCUJDRDIwMkM0MEUxNzA2QTcwMDJDN0U4
MiAvKiBSZWdFeHBQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDVEMEUxNkY1
Q0QwMEIzNDQ2MCAvKiBSZWdpc3Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMyOEM2QzkxREE0
MzJGOTAwRDI1NUZEIC8qIFJlZ2lzdGVyQXRPZmZzZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUZF
MUQ2RDZGMjM2MjU4RkUwMDdBNUMyNiAvKiBHZXRWTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMy
OEM2QzgxREE0MzA2MTAwRDI1NUZEIC8qIFJlZ2lzdGVyQXRPZmZzZXRMaXN0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5NjlBMDcyQjBFRDFDRTY5MDBGMUY2ODEgLyogUmVnaXN0ZXJJRC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTY4OENCMTYwRUQxMkI0RTAwMUQ2NDk5IC8qIFJlZ2lzdGVySW5mby5o
IGluIEhlYWRlcnMgKi8sCkBAIC0xMTA0MCw3ICsxMTA1Niw2IEBACiAJCQkJMzNCMkE1NDgyMjY1
NDNCRjAwNUEwRjc5IC8qIEZUTExvd2VyREZHVG9CMy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
QzQxOTY2MjIyNzBFMDAwMDA0N0I3Q0QgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJDb21w
YXRpYmlsaXR5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNkIzMTlFMUY3MzVGMTYwMDM3RkMz
MyAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUZFMUQ2RDQ1
MjM1ODBFMUYwMDdBNUMyNiAvKiBPcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQy
NzRBMTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODYuYyBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQy
NzQwMTU4RUJFOEIwMDRDQjlGRiAvKiB1ZGlzODZfZGVjb2RlLmMgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkY0Mjc0RDE1OEVCRkU2MDA0Q0I5RkYgLyogdWRpczg2X2l0YWJfaG9sZGVyLmMgaW4gU291
cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgJKHJldmlzaW9uIDI1MTU3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTAzMiwzMCArMTAzMiw2IEBAIHByaXZhdGU6
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJhcmVEYXRhPiBtX3JhcmVEYXRhOwogfTsKIAotaW5saW5l
IFJlZ2lzdGVyJiBDYWxsRnJhbWU6OnIoaW50IGluZGV4KQotewotICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gdGhpcy0+Y29kZUJsb2NrKCk7Ci0gICAgaWYgKGNvZGVCbG9jay0+aXNDb25zdGFu
dFJlZ2lzdGVySW5kZXgoaW5kZXgpKQotICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8
UmVnaXN0ZXIqPigmY29kZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVyKGluZGV4KSk7Ci0gICAgcmV0
dXJuIHRoaXNbaW5kZXhdOwotfQotCi1pbmxpbmUgUmVnaXN0ZXImIENhbGxGcmFtZTo6cihWaXJ0
dWFsUmVnaXN0ZXIgcmVnKQotewotICAgIHJldHVybiByKHJlZy5vZmZzZXQoKSk7Ci19Ci0KLWlu
bGluZSBSZWdpc3RlciYgQ2FsbEZyYW1lOjp1bmNoZWNrZWRSKGludCBpbmRleCkKLXsKLSAgICBS
RUxFQVNFX0FTU0VSVChpbmRleCA8IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KTsKLSAgICBy
ZXR1cm4gdGhpc1tpbmRleF07Ci19Ci0KLWlubGluZSBSZWdpc3RlciYgQ2FsbEZyYW1lOjp1bmNo
ZWNrZWRSKFZpcnR1YWxSZWdpc3RlciByZWcpCi17Ci0gICAgcmV0dXJuIHVuY2hlY2tlZFIocmVn
Lm9mZnNldCgpKTsKLX0KLQogdGVtcGxhdGUgPHR5cGVuYW1lIEV4ZWN1dGFibGVUeXBlPgogRXhj
ZXB0aW9uKiBTY3JpcHRFeGVjdXRhYmxlOjpwcmVwYXJlRm9yRXhlY3V0aW9uKFZNJiB2bSwgSlNG
dW5jdGlvbiogZnVuY3Rpb24sIEpTU2NvcGUqIHNjb3BlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
IGtpbmQsIENvZGVCbG9jayomIHJlc3VsdENvZGVCbG9jaykKIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5jcHAJKHJldmlzaW9uIDI1
MTU3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiTWV0YWRhdGFUYWJsZS5oIgogCi0jaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIk9wY29kZUlubGluZXMuaCIKICNpbmNsdWRlICJV
bmxpbmtlZE1ldGFkYXRhVGFibGVJbmxpbmVzLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyNTE1NzkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJCM1Nsb3RCYXNlVmFsdWUuaCIKICNpbmNsdWRl
ICJCM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5oIgogI2luY2x1ZGUgIkIzVmFsdWVJbmxpbmVz
LmgiCisjaW5jbHVkZSAiQnV0dGVyZmx5SW5saW5lcy5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZVNo
dWZmbGVyLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCIKICNpbmNsdWRlICJE
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMjUxNTc5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDcgKzEsNyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQ
b3J0ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxs
eSAocG1rQHBvc3QuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTA0LDI2
ICsxMDQsMTQgQEAgbmFtZXNwYWNlIEpTQyAgewogICAgICAgICAvLyB5ZXQgc3VyZSBpZiB0aGUg
Y2FsbGVlIGlzIGEgY2VsbC4gSW4gZ2VuZXJhbCwgYSBKUyBjYWxsZWUgaXMgZ3VhcmFudGVlZAog
ICAgICAgICAvLyB0byBiZSBhIGNlbGwsIGhvd2V2ZXIsIHRoZXJlIGlzIGEgYnJpZWYgd2luZG93
IHdoZXJlIHdlIG5lZWQgdG8gY2hlY2sKICAgICAgICAgLy8gdG8gc2VlIGlmIGl0J3MgYSBjZWxs
LCBhbmQgaWYgaXQncyBub3QsIHdlIHRocm93IGFuIGV4Y2VwdGlvbi4KLSAgICAgICAgSlNWYWx1
ZSBndWFyYW50ZWVkSlNWYWx1ZUNhbGxlZSgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IEFTU0VSVCghY2FsbGVlKCkuaXNXYXNtKCkpOwotICAgICAgICAgICAgcmV0dXJuIHRoaXNbQ2Fs
bEZyYW1lU2xvdDo6Y2FsbGVlXS5qc1ZhbHVlKCk7Ci0gICAgICAgIH0KLSAgICAgICAgSlNPYmpl
Y3QqIGpzQ2FsbGVlKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKCFjYWxs
ZWUoKS5pc1dhc20oKSk7Ci0gICAgICAgICAgICByZXR1cm4gdGhpc1tDYWxsRnJhbWVTbG90Ojpj
YWxsZWVdLm9iamVjdCgpOwotICAgICAgICB9CisgICAgICAgIGlubGluZSBKU1ZhbHVlIGd1YXJh
bnRlZWRKU1ZhbHVlQ2FsbGVlKCkgY29uc3Q7CisgICAgICAgIGlubGluZSBKU09iamVjdCoganND
YWxsZWUoKSBjb25zdDsKICAgICAgICAgQ2FsbGVlQml0cyBjYWxsZWUoKSBjb25zdCB7IHJldHVy
biBDYWxsZWVCaXRzKHRoaXNbQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlXS5wb2ludGVyKCkpOyB9CiAg
ICAgICAgIFNVUFBSRVNTX0FTQU4gQ2FsbGVlQml0cyB1bnNhZmVDYWxsZWUoKSBjb25zdCB7IHJl
dHVybiBDYWxsZWVCaXRzKHRoaXNbQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlXS5hc2FuVW5zYWZlUG9p
bnRlcigpKTsgfQotICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaygpIGNvbnN0IHsgcmV0dXJu
IHRoaXNbQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrXS5SZWdpc3Rlcjo6Y29kZUJsb2NrKCk7IH0K
KyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2soKSBjb25zdDsKICAgICAgICAgQ29kZUJsb2Nr
KiogYWRkcmVzc09mQ29kZUJsb2NrKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PENvZGVC
bG9jayoqPih0aGlzICsgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsgfQotICAgICAgICBTVVBQ
UkVTU19BU0FOIENvZGVCbG9jayogdW5zYWZlQ29kZUJsb2NrKCkgY29uc3QgeyByZXR1cm4gdGhp
c1tDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2tdLlJlZ2lzdGVyOjphc2FuVW5zYWZlQ29kZUJsb2Nr
KCk7IH0KLSAgICAgICAgSlNTY29wZSogc2NvcGUoaW50IHNjb3BlUmVnaXN0ZXJPZmZzZXQpIGNv
bnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCh0aGlzW3Njb3BlUmVnaXN0ZXJPZmZz
ZXRdLlJlZ2lzdGVyOjpzY29wZSgpKTsKLSAgICAgICAgICAgIHJldHVybiB0aGlzW3Njb3BlUmVn
aXN0ZXJPZmZzZXRdLlJlZ2lzdGVyOjpzY29wZSgpOwotICAgICAgICB9CisgICAgICAgIGlubGlu
ZSBTVVBQUkVTU19BU0FOIENvZGVCbG9jayogdW5zYWZlQ29kZUJsb2NrKCkgY29uc3Q7CisgICAg
ICAgIGlubGluZSBKU1Njb3BlKiBzY29wZShpbnQgc2NvcGVSZWdpc3Rlck9mZnNldCkgY29uc3Q7
CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0FueVdhc21DYWxsZWUoKTsKIApA
QCAtMTgzLDE4ICsxNzEsMTMgQEAgbmFtZXNwYWNlIEpTQyAgewogICAgICAgICAvLyBDb2RlT3Jp
Z2luKEJ5dGVjb2RlSW5kZXgoMCkpIGlmIHdlJ3JlIGluIG5hdGl2ZSBjb2RlLgogICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBDb2RlT3JpZ2luIGNvZGVPcmlnaW4oKTsKIAotICAgICAgICBSZWdp
c3RlciogdG9wT2ZGcmFtZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghY29kZUJsb2Nr
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlZ2lzdGVycygpOwotICAgICAgICAgICAgcmV0
dXJuIHRvcE9mRnJhbWVJbnRlcm5hbCgpOwotICAgICAgICB9CisgICAgICAgIGlubGluZSBSZWdp
c3RlciogdG9wT2ZGcmFtZSgpOwogICAgIAogICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudFZQQygpIGNvbnN0OyAvLyBUaGlzIG9ubHkgbWFrZXMgc2Vuc2UgaW4gdGhlIExMSW50IGFu
ZCBiYXNlbGluZS4KICAgICAgICAgdm9pZCBzZXRDdXJyZW50VlBDKGNvbnN0IEluc3RydWN0aW9u
Kik7CiAKICAgICAgICAgdm9pZCBzZXRDYWxsZXJGcmFtZShDYWxsRnJhbWUqIGZyYW1lKSB7IGNh
bGxlckZyYW1lQW5kUEMoKS5jYWxsZXJGcmFtZSA9IGZyYW1lOyB9Ci0gICAgICAgIHZvaWQgc2V0
U2NvcGUoaW50IHNjb3BlUmVnaXN0ZXJPZmZzZXQsIEpTU2NvcGUqIHNjb3BlKSB7IHN0YXRpY19j
YXN0PFJlZ2lzdGVyKj4odGhpcylbc2NvcGVSZWdpc3Rlck9mZnNldF0gPSBzY29wZTsgfQorICAg
ICAgICBpbmxpbmUgdm9pZCBzZXRTY29wZShpbnQgc2NvcGVSZWdpc3Rlck9mZnNldCwgSlNTY29w
ZSopOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIGluaXREZXByZWNhdGVkQ2FsbEZyYW1lRm9yRGVi
dWdnZXIoQ2FsbEZyYW1lKiBnbG9iYWxFeGVjLCBKU0NhbGxlZSogZ2xvYmFsQ2FsbGVlKTsKIApA
QCAtMjY5LDggKzI1Miw4IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAgYm9vbCBpc1dhc21G
cmFtZSgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgc2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMoaW50IGNvdW50KSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbQ2FsbEZyYW1lU2xv
dDo6YXJndW1lbnRDb3VudF0ucGF5bG9hZCgpID0gY291bnQ7IH0KLSAgICAgICAgdm9pZCBzZXRD
YWxsZWUoSlNPYmplY3QqIGNhbGxlZSkgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW0Nh
bGxGcmFtZVNsb3Q6OmNhbGxlZV0gPSBjYWxsZWU7IH0KLSAgICAgICAgdm9pZCBzZXRDb2RlQmxv
Y2soQ29kZUJsb2NrKiBjb2RlQmxvY2spIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtD
YWxsRnJhbWVTbG90Ojpjb2RlQmxvY2tdID0gY29kZUJsb2NrOyB9CisgICAgICAgIGlubGluZSB2
b2lkIHNldENhbGxlZShKU09iamVjdCopOworICAgICAgICBpbmxpbmUgdm9pZCBzZXRDb2RlQmxv
Y2soQ29kZUJsb2NrKik7CiAgICAgICAgIHZvaWQgc2V0UmV0dXJuUEModm9pZCogdmFsdWUpIHsg
Y2FsbGVyRnJhbWVBbmRQQygpLnJldHVyblBDID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbnN0
cnVjdGlvbio+KHZhbHVlKTsgfQogCiAgICAgICAgIFN0cmluZyBmcmllbmRseUZ1bmN0aW9uTmFt
ZSgpOwpAQCAtMzIzLDggKzMwNiw2IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAgU1VQUFJF
U1NfQVNBTiBjb25zdCBDYWxsZXJGcmFtZUFuZFBDJiB1bnNhZmVDYWxsZXJGcmFtZUFuZFBDKCkg
Y29uc3QgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQ2FsbGVyRnJhbWVBbmRQQyo+
KHRoaXMpOyB9CiAgICAgfTsKIAotLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGdldCBWTSYgZnJvbSBK
U0dsb2JhbE9iamVjdCogaWYgSlNHbG9iYWxPYmplY3QuaCBpcyBub3QgaW5jbHVkZWQuCi1WTSYg
Z2V0Vk0oSlNHbG9iYWxPYmplY3QqKTsKIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNGcm9tSlND
b2RlKHZvaWQqIHJldHVybkFkZHJlc3MpOwogCiAjaWYgVVNFKEJVSUxUSU5fRlJBTUVfQUREUkVT
UykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWVJbmxp
bmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Nh
bGxGcmFtZUlubGluZXMuaAkocmV2aXNpb24gMjUxNTc5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0NhbGxGcmFtZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw5ICsy
OCw2NiBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkpTQ2FsbGVlLmgiCiAj
aW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJSZWdpc3RlcklubGluZXMuaCIK
IAogbmFtZXNwYWNlIEpTQyB7CiAKK2lubGluZSBSZWdpc3RlciYgQ2FsbEZyYW1lOjpyKGludCBp
bmRleCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHRoaXMtPmNvZGVCbG9jaygpOwor
ICAgIGlmIChjb2RlQmxvY2stPmlzQ29uc3RhbnRSZWdpc3RlckluZGV4KGluZGV4KSkKKyAgICAg
ICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PFJlZ2lzdGVyKj4oJmNvZGVCbG9jay0+Y29uc3Rh
bnRSZWdpc3RlcihpbmRleCkpOworICAgIHJldHVybiB0aGlzW2luZGV4XTsKK30KKworaW5saW5l
IFJlZ2lzdGVyJiBDYWxsRnJhbWU6OnIoVmlydHVhbFJlZ2lzdGVyIHJlZykKK3sKKyAgICByZXR1
cm4gcihyZWcub2Zmc2V0KCkpOworfQorCitpbmxpbmUgUmVnaXN0ZXImIENhbGxGcmFtZTo6dW5j
aGVja2VkUihpbnQgaW5kZXgpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoaW5kZXggPCBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleCk7CisgICAgcmV0dXJuIHRoaXNbaW5kZXhdOworfQorCitpbmxp
bmUgUmVnaXN0ZXImIENhbGxGcmFtZTo6dW5jaGVja2VkUihWaXJ0dWFsUmVnaXN0ZXIgcmVnKQor
eworICAgIHJldHVybiB1bmNoZWNrZWRSKHJlZy5vZmZzZXQoKSk7Cit9CisKK2lubGluZSBKU1Zh
bHVlIENhbGxGcmFtZTo6Z3VhcmFudGVlZEpTVmFsdWVDYWxsZWUoKSBjb25zdAoreworICAgIEFT
U0VSVCghY2FsbGVlKCkuaXNXYXNtKCkpOworICAgIHJldHVybiB0aGlzW0NhbGxGcmFtZVNsb3Q6
OmNhbGxlZV0uanNWYWx1ZSgpOworfQorCitpbmxpbmUgSlNPYmplY3QqIENhbGxGcmFtZTo6anND
YWxsZWUoKSBjb25zdAoreworICAgIEFTU0VSVCghY2FsbGVlKCkuaXNXYXNtKCkpOworICAgIHJl
dHVybiB0aGlzW0NhbGxGcmFtZVNsb3Q6OmNhbGxlZV0ub2JqZWN0KCk7Cit9CisKK2lubGluZSBD
b2RlQmxvY2sqIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdGhp
c1tDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2tdLlJlZ2lzdGVyOjpjb2RlQmxvY2soKTsKK30KKwor
aW5saW5lIFNVUFBSRVNTX0FTQU4gQ29kZUJsb2NrKiBDYWxsRnJhbWU6OnVuc2FmZUNvZGVCbG9j
aygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRoaXNbQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrXS5S
ZWdpc3Rlcjo6YXNhblVuc2FmZUNvZGVCbG9jaygpOworfQorCitpbmxpbmUgSlNHbG9iYWxPYmpl
Y3QqIENhbGxGcmFtZTo6bGV4aWNhbEdsb2JhbE9iamVjdChWTSYgdm0pIGNvbnN0Cit7CisgICAg
VU5VU0VEX1BBUkFNKHZtKTsKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAgaWYgKGNhbGxl
ZSgpLmlzV2FzbSgpKQorICAgICAgICByZXR1cm4gbGV4aWNhbEdsb2JhbE9iamVjdEZyb21XYXNt
Q2FsbGVlKHZtKTsKKyNlbmRpZgorICAgIHJldHVybiBqc0NhbGxlZSgpLT5nbG9iYWxPYmplY3Qo
KTsKK30KKwogaW5saW5lIGJvb2wgQ2FsbEZyYW1lOjppc1N0YWNrT3ZlcmZsb3dGcmFtZSgpIGNv
bnN0CiB7CiAgICAgaWYgKGNhbGxlZSgpLmlzV2FzbSgpKQpAQCAtNDMsNCArMTAwLDMyIEBAIGlu
bGluZSBib29sIENhbGxGcmFtZTo6aXNXYXNtRnJhbWUoKSBjb24KICAgICByZXR1cm4gY2FsbGVl
KCkuaXNXYXNtKCk7CiB9CiAKK2lubGluZSB2b2lkIENhbGxGcmFtZTo6c2V0Q2FsbGVlKEpTT2Jq
ZWN0KiBjYWxsZWUpCit7CisgICAgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtDYWxsRnJh
bWVTbG90OjpjYWxsZWVdID0gY2FsbGVlOworfQorCitpbmxpbmUgdm9pZCBDYWxsRnJhbWU6OnNl
dENvZGVCbG9jayhDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICBzdGF0aWNfY2FzdDxSZWdp
c3Rlcio+KHRoaXMpW0NhbGxGcmFtZVNsb3Q6OmNvZGVCbG9ja10gPSBjb2RlQmxvY2s7Cit9CisK
K2lubGluZSB2b2lkIENhbGxGcmFtZTo6c2V0U2NvcGUoaW50IHNjb3BlUmVnaXN0ZXJPZmZzZXQs
IEpTU2NvcGUqIHNjb3BlKQoreworICAgIHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbc2Nv
cGVSZWdpc3Rlck9mZnNldF0gPSBzY29wZTsKK30KKworaW5saW5lIEpTU2NvcGUqIENhbGxGcmFt
ZTo6c2NvcGUoaW50IHNjb3BlUmVnaXN0ZXJPZmZzZXQpIGNvbnN0Cit7CisgICAgQVNTRVJUKHRo
aXNbc2NvcGVSZWdpc3Rlck9mZnNldF0uUmVnaXN0ZXI6OnNjb3BlKCkpOworICAgIHJldHVybiB0
aGlzW3Njb3BlUmVnaXN0ZXJPZmZzZXRdLlJlZ2lzdGVyOjpzY29wZSgpOworfQorCitpbmxpbmUg
UmVnaXN0ZXIqIENhbGxGcmFtZTo6dG9wT2ZGcmFtZSgpCit7CisgICAgaWYgKCFjb2RlQmxvY2so
KSkKKyAgICAgICAgcmV0dXJuIHJlZ2lzdGVycygpOworICAgIHJldHVybiB0b3BPZkZyYW1lSW50
ZXJuYWwoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDI1MTU3
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAKICNpbmNsdWRlICJPYmplY3RQcm90b3R5
cGUuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRlICJQcm9ncmFtQ29kZUJsb2NrLmgi
Ci0jaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJQcm90b0NhbGxGcmFtZUlu
bGluZXMuaCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRlICJSZWdpc3Rlci5o
IgogI2luY2x1ZGUgIlJlZ2lzdGVyQXRPZmZzZXRMaXN0LmgiCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuaAkocmV2aXNpb24g
MjUxNTc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZy
YW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMTggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NywxNiArNDcsMTMgQEAgcHVibGljOgogICAgIEpT
VmFsdWUgKmFyZ3M7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdDsKIAotICAgIHZv
aWQgaW5pdChDb2RlQmxvY2sqLCBKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiwgSlNWYWx1ZSwg
aW50LCBKU1ZhbHVlKiBvdGhlckFyZ3MgPSAwKTsKKyAgICBpbmxpbmUgdm9pZCBpbml0KENvZGVC
bG9jayosIEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqLCBKU1ZhbHVlLCBpbnQsIEpTVmFsdWUq
IG90aGVyQXJncyA9IDApOwogCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2soKSBjb25zdCB7IHJl
dHVybiBjb2RlQmxvY2tWYWx1ZS5SZWdpc3Rlcjo6Y29kZUJsb2NrKCk7IH0KLSAgICB2b2lkIHNl
dENvZGVCbG9jayhDb2RlQmxvY2sqIGNvZGVCbG9jaykgeyBjb2RlQmxvY2tWYWx1ZSA9IGNvZGVC
bG9jazsgfQorICAgIGlubGluZSBDb2RlQmxvY2sqIGNvZGVCbG9jaygpIGNvbnN0OworICAgIGlu
bGluZSB2b2lkIHNldENvZGVCbG9jayhDb2RlQmxvY2sqKTsKIAotICAgIEpTT2JqZWN0KiBjYWxs
ZWUoKSBjb25zdCB7IHJldHVybiBjYWxsZWVWYWx1ZS5SZWdpc3Rlcjo6b2JqZWN0KCk7IH0KLSAg
ICB2b2lkIHNldENhbGxlZShKU09iamVjdCogY2FsbGVlKQotICAgIHsKLSAgICAgICAgY2FsbGVl
VmFsdWUgPSBjYWxsZWU7Ci0gICAgfQorICAgIGlubGluZSBKU09iamVjdCogY2FsbGVlKCkgY29u
c3Q7CisgICAgaW5saW5lIHZvaWQgc2V0Q2FsbGVlKEpTT2JqZWN0Kik7CiAgICAgdm9pZCBzZXRH
bG9iYWxPYmplY3QoSlNHbG9iYWxPYmplY3QqIG9iamVjdCkKICAgICB7CiAgICAgICAgIGdsb2Jh
bE9iamVjdCA9IG9iamVjdDsKQEAgLTg2LDIzICs4Myw0IEBAIHB1YmxpYzoKICAgICB9CiB9Owog
Ci1pbmxpbmUgdm9pZCBQcm90b0NhbGxGcmFtZTo6aW5pdChDb2RlQmxvY2sqIGNvZGVCbG9jaywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGNhbGxlZSwgSlNWYWx1ZSB0
aGlzVmFsdWUsIGludCBhcmdDb3VudEluY2x1ZGluZ1RoaXMsIEpTVmFsdWUqIG90aGVyQXJncykK
LXsKLSAgICB0aGlzLT5hcmdzID0gb3RoZXJBcmdzOwotICAgIHRoaXMtPnNldENvZGVCbG9jayhj
b2RlQmxvY2spOwotICAgIHRoaXMtPnNldENhbGxlZShjYWxsZWUpOwotICAgIHRoaXMtPnNldEds
b2JhbE9iamVjdChnbG9iYWxPYmplY3QpOwotICAgIHRoaXMtPnNldEFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKGFyZ0NvdW50SW5jbHVkaW5nVGhpcyk7Ci0gICAgaWYgKGNvZGVCbG9jayAmJiBh
cmdDb3VudEluY2x1ZGluZ1RoaXMgPCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkKLSAgICAg
ICAgdGhpcy0+aGFzQXJpdHlNaXNtYXRjaCA9IHRydWU7Ci0gICAgZWxzZQotICAgICAgICB0aGlz
LT5oYXNBcml0eU1pc21hdGNoID0gZmFsc2U7Ci0KLSAgICAvLyBSb3VuZCB1cCBhcmdDb3VudElu
Y2x1ZGluZ1RoaXMgdG8ga2VlcCB0aGUgc3RhY2sgZnJhbWUgc2l6ZSBhbGlnbmVkLgotICAgIHNp
emVfdCBwYWRkZWRBcmdzQ291bnQgPSByb3VuZEFyZ3VtZW50Q291bnRUb0FsaWduRnJhbWUoYXJn
Q291bnRJbmNsdWRpbmdUaGlzKTsKLSAgICB0aGlzLT5zZXRQYWRkZWRBcmdDb3VudChwYWRkZWRB
cmdzQ291bnQpOwotICAgIHRoaXMtPmNsZWFyQ3VycmVudFZQQygpOwotICAgIHRoaXMtPnNldFRo
aXNWYWx1ZSh0aGlzVmFsdWUpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZUlubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJh
bWVJbmxpbmVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL1Byb3RvQ2FsbEZyYW1lSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiUmVnaXN0
ZXJJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitpbmxpbmUgdm9pZCBQcm90b0NhbGxG
cmFtZTo6aW5pdChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNPYmplY3QqIGNhbGxlZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIGludCBhcmdDb3VudElu
Y2x1ZGluZ1RoaXMsIEpTVmFsdWUqIG90aGVyQXJncykKK3sKKyAgICB0aGlzLT5hcmdzID0gb3Ro
ZXJBcmdzOworICAgIHRoaXMtPnNldENvZGVCbG9jayhjb2RlQmxvY2spOworICAgIHRoaXMtPnNl
dENhbGxlZShjYWxsZWUpOworICAgIHRoaXMtPnNldEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3Qp
OworICAgIHRoaXMtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKGFyZ0NvdW50SW5jbHVk
aW5nVGhpcyk7CisgICAgaWYgKGNvZGVCbG9jayAmJiBhcmdDb3VudEluY2x1ZGluZ1RoaXMgPCBj
b2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkKKyAgICAgICAgdGhpcy0+aGFzQXJpdHlNaXNtYXRj
aCA9IHRydWU7CisgICAgZWxzZQorICAgICAgICB0aGlzLT5oYXNBcml0eU1pc21hdGNoID0gZmFs
c2U7CisKKyAgICAvLyBSb3VuZCB1cCBhcmdDb3VudEluY2x1ZGluZ1RoaXMgdG8ga2VlcCB0aGUg
c3RhY2sgZnJhbWUgc2l6ZSBhbGlnbmVkLgorICAgIHNpemVfdCBwYWRkZWRBcmdzQ291bnQgPSBy
b3VuZEFyZ3VtZW50Q291bnRUb0FsaWduRnJhbWUoYXJnQ291bnRJbmNsdWRpbmdUaGlzKTsKKyAg
ICB0aGlzLT5zZXRQYWRkZWRBcmdDb3VudChwYWRkZWRBcmdzQ291bnQpOworICAgIHRoaXMtPmNs
ZWFyQ3VycmVudFZQQygpOworICAgIHRoaXMtPnNldFRoaXNWYWx1ZSh0aGlzVmFsdWUpOworfQor
CitpbmxpbmUgSlNPYmplY3QqIFByb3RvQ2FsbEZyYW1lOjpjYWxsZWUoKSBjb25zdAoreworICAg
IHJldHVybiBjYWxsZWVWYWx1ZS5SZWdpc3Rlcjo6b2JqZWN0KCk7Cit9CisKK2lubGluZSB2b2lk
IFByb3RvQ2FsbEZyYW1lOjpzZXRDYWxsZWUoSlNPYmplY3QqIGNhbGxlZSkKK3sKKyAgICBjYWxs
ZWVWYWx1ZSA9IGNhbGxlZTsKK30KKworaW5saW5lIENvZGVCbG9jayogUHJvdG9DYWxsRnJhbWU6
OmNvZGVCbG9jaygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvZGVCbG9ja1ZhbHVlLlJlZ2lzdGVy
Ojpjb2RlQmxvY2soKTsKK30KKworaW5saW5lIHZvaWQgUHJvdG9DYWxsRnJhbWU6OnNldENvZGVC
bG9jayhDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICBjb2RlQmxvY2tWYWx1ZSA9IGNvZGVC
bG9jazsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaAkocmV2aXNpb24gMjUxNTc5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC01MSwxNyArNTEsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWUgYXNhblVu
c2FmZUpTVmFsdWUoKSBjb25zdDsKICAgICAgICAgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEpTVmFs
dWUoKSBjb25zdDsKICAgICAgICAgCi0gICAgICAgIFJlZ2lzdGVyJiBvcGVyYXRvcj0oQ2FsbEZy
YW1lKik7Ci0gICAgICAgIFJlZ2lzdGVyJiBvcGVyYXRvcj0oQ29kZUJsb2NrKik7Ci0gICAgICAg
IFJlZ2lzdGVyJiBvcGVyYXRvcj0oSlNTY29wZSopOwotICAgICAgICBSZWdpc3RlciYgb3BlcmF0
b3I9KEpTT2JqZWN0Kik7CisgICAgICAgIEFMV0FZU19JTkxJTkUgUmVnaXN0ZXImIG9wZXJhdG9y
PShDYWxsRnJhbWUqKTsKKyAgICAgICAgQUxXQVlTX0lOTElORSBSZWdpc3RlciYgb3BlcmF0b3I9
KENvZGVCbG9jayopOworICAgICAgICBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVyJiBvcGVyYXRvcj0o
SlNTY29wZSopOworICAgICAgICBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVyJiBvcGVyYXRvcj0oSlNP
YmplY3QqKTsKIAogICAgICAgICBpbnQzMl90IGkoKSBjb25zdDsKLSAgICAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUoKSBjb25zdDsKLSAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2soKSBjb25z
dDsKLSAgICAgICAgQ29kZUJsb2NrKiBhc2FuVW5zYWZlQ29kZUJsb2NrKCkgY29uc3Q7Ci0gICAg
ICAgIEpTT2JqZWN0KiBvYmplY3QoKSBjb25zdDsKLSAgICAgICAgSlNTY29wZSogc2NvcGUoKSBj
b25zdDsKKyAgICAgICAgQUxXQVlTX0lOTElORSBDYWxsRnJhbWUqIGNhbGxGcmFtZSgpIGNvbnN0
OworICAgICAgICBBTFdBWVNfSU5MSU5FIENvZGVCbG9jayogY29kZUJsb2NrKCkgY29uc3Q7Cisg
ICAgICAgIEFMV0FZU19JTkxJTkUgQ29kZUJsb2NrKiBhc2FuVW5zYWZlQ29kZUJsb2NrKCkgY29u
c3Q7CisgICAgICAgIEFMV0FZU19JTkxJTkUgSlNPYmplY3QqIG9iamVjdCgpIGNvbnN0OworICAg
ICAgICBBTFdBWVNfSU5MSU5FIEpTU2NvcGUqIHNjb3BlKCkgY29uc3Q7CiAgICAgICAgIGludDMy
X3QgdW5ib3hlZEludDMyKCkgY29uc3Q7CiAgICAgICAgIGludDMyX3QgYXNhblVuc2FmZVVuYm94
ZWRJbnQzMigpIGNvbnN0OwogICAgICAgICBpbnQ2NF90IHVuYm94ZWRJbnQ1MigpIGNvbnN0OwpA
QCAtMTM2LDM4ICsxMzYsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAvLyBJbnRlcnByZXRl
ciBmdW5jdGlvbnMKIAotICAgIEFMV0FZU19JTkxJTkUgUmVnaXN0ZXImIFJlZ2lzdGVyOjpvcGVy
YXRvcj0oQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCi0gICAgewotICAgICAgICB1LmNhbGxGcmFtZSA9
IGNhbGxGcmFtZTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIEFMV0FZU19J
TkxJTkUgUmVnaXN0ZXImIFJlZ2lzdGVyOjpvcGVyYXRvcj0oQ29kZUJsb2NrKiBjb2RlQmxvY2sp
Ci0gICAgewotICAgICAgICB1LmNvZGVCbG9jayA9IGNvZGVCbG9jazsKLSAgICAgICAgcmV0dXJu
ICp0aGlzOwotICAgIH0KLQogICAgIEFMV0FZU19JTkxJTkUgaW50MzJfdCBSZWdpc3Rlcjo6aSgp
IGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4ganNWYWx1ZSgpLmFzSW50MzIoKTsKICAgICB9
CiAKLSAgICBBTFdBWVNfSU5MSU5FIENhbGxGcmFtZSogUmVnaXN0ZXI6OmNhbGxGcmFtZSgpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdS5jYWxsRnJhbWU7Ci0gICAgfQotICAgIAotICAg
IEFMV0FZU19JTkxJTkUgQ29kZUJsb2NrKiBSZWdpc3Rlcjo6Y29kZUJsb2NrKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiB1LmNvZGVCbG9jazsKLSAgICB9Ci0KLSAgICBTVVBQUkVTU19B
U0FOIEFMV0FZU19JTkxJTkUgQ29kZUJsb2NrKiBSZWdpc3Rlcjo6YXNhblVuc2FmZUNvZGVCbG9j
aygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdS5jb2RlQmxvY2s7Ci0gICAgfQotCiAg
ICAgQUxXQVlTX0lOTElORSBpbnQzMl90IFJlZ2lzdGVyOjp1bmJveGVkSW50MzIoKSBjb25zdAog
ICAgIHsKICAgICAgICAgcmV0dXJuIHBheWxvYWQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJJbmxpbmVzLmgJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVySW5saW5lcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTU2NvcGUuaCIKKyNpbmNs
dWRlICJSZWdpc3Rlci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworQUxXQVlTX0lOTElORSBDYWxs
RnJhbWUqIFJlZ2lzdGVyOjpjYWxsRnJhbWUoKSBjb25zdAoreworICAgIHJldHVybiB1LmNhbGxG
cmFtZTsKK30KKworQUxXQVlTX0lOTElORSBDb2RlQmxvY2sqIFJlZ2lzdGVyOjpjb2RlQmxvY2so
KSBjb25zdAoreworICAgIHJldHVybiB1LmNvZGVCbG9jazsKK30KKworU1VQUFJFU1NfQVNBTiBB
TFdBWVNfSU5MSU5FIENvZGVCbG9jayogUmVnaXN0ZXI6OmFzYW5VbnNhZmVDb2RlQmxvY2soKSBj
b25zdAoreworICAgIHJldHVybiB1LmNvZGVCbG9jazsKK30KKworQUxXQVlTX0lOTElORSBKU09i
amVjdCogUmVnaXN0ZXI6Om9iamVjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFzT2JqZWN0KGpz
VmFsdWUoKSk7Cit9CisKK0FMV0FZU19JTkxJTkUgUmVnaXN0ZXImIFJlZ2lzdGVyOjpvcGVyYXRv
cj0oQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgdS5jYWxsRnJhbWUgPSBjYWxsRnJhbWU7
CisgICAgcmV0dXJuICp0aGlzOworfQorCitBTFdBWVNfSU5MSU5FIFJlZ2lzdGVyJiBSZWdpc3Rl
cjo6b3BlcmF0b3I9KENvZGVCbG9jayogY29kZUJsb2NrKQoreworICAgIHUuY29kZUJsb2NrID0g
Y29kZUJsb2NrOworICAgIHJldHVybiAqdGhpczsKK30KKworQUxXQVlTX0lOTElORSBSZWdpc3Rl
ciYgUmVnaXN0ZXI6Om9wZXJhdG9yPShKU09iamVjdCogb2JqZWN0KQoreworICAgIHUudmFsdWUg
PSBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShvYmplY3QpKTsKKyAgICByZXR1cm4gKnRoaXM7Cit9
CisKK0FMV0FZU19JTkxJTkUgUmVnaXN0ZXImIFJlZ2lzdGVyOjpvcGVyYXRvcj0oSlNTY29wZSog
c2NvcGUpCit7CisgICAgKnRoaXMgPSBKU1ZhbHVlKHNjb3BlKTsKKyAgICByZXR1cm4gKnRoaXM7
Cit9CisKK0FMV0FZU19JTkxJTkUgSlNTY29wZSogUmVnaXN0ZXI6OnNjb3BlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4ganNDYXN0PEpTU2NvcGUqPih1bmJveGVkQ2VsbCgpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3Rh
Y2tWaXNpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAkocmV2aXNpb24gMjUxNTc5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTdGFja1Zpc2l0
b3IuaCIKIAotI2luY2x1ZGUgIkNhbGxGcmFtZUlubGluZXMuaCIKICNpbmNsdWRlICJDbG9uZWRB
cmd1bWVudHMuaCIKICNpbmNsdWRlICJEZWJ1Z2dlclByaW1pdGl2ZXMuaCIKICNpbmNsdWRlICJJ
bmxpbmVDYWxsRnJhbWUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3Nl
bWJseUhlbHBlcnMuaAkocmV2aXNpb24gMjUxNTc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAog
I2luY2x1ZGUgIklubGluZUNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkpJVEFsbG9jYXRvci5oIgog
I2luY2x1ZGUgIkpJVENvZGUuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgogI2luY2x1ZGUg
IlJlZ2lzdGVyQXRPZmZzZXRMaXN0LmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDI1MTU3OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY0LDcgKzY0LDcgQEAKICNpbmNsdWRlICJPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oIgog
I2luY2x1ZGUgIk9wY29kZUlubGluZXMuaCIKICNpbmNsdWRlICJQcm9ncmFtQ29kZUJsb2NrLmgi
Ci0jaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJQcm90b0NhbGxGcmFtZUlu
bGluZXMuaCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRlICJTaGFkb3dDaGlj
a2VuLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgiCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVN0b3JhZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVN0b3JhZ2UuaAkocmV2aXNpb24gMjUx
NTc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlTdG9yYWdlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Mi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMTAzLDEwICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biB0b3RhbFNpemVGb3IobV9pbmRleEJpYXMsIHByb3BlcnR5Q2FwYWNpdHksIHZlY3Rvckxlbmd0
aCgpKTsKICAgICB9CiAKLSAgICBzaXplX3QgdG90YWxTaXplKFN0cnVjdHVyZSogc3RydWN0dXJl
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRvdGFsU2l6ZShzdHJ1Y3R1cmUtPm91dE9m
TGluZUNhcGFjaXR5KCkpOwotICAgIH0KKyAgICBpbmxpbmUgc2l6ZV90IHRvdGFsU2l6ZShTdHJ1
Y3R1cmUqKSBjb25zdDsKIAogICAgIHN0YXRpYyB1bnNpZ25lZCBhdmFpbGFibGVWZWN0b3JMZW5n
dGgodW5zaWduZWQgaW5kZXhCaWFzLCBzaXplX3QgcHJvcGVydHlDYXBhY2l0eSwgdW5zaWduZWQg
dmVjdG9yTGVuZ3RoKQogICAgIHsKQEAgLTExNyw0MSArMTE0LDE5IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIHZlY3Rvckxlbmd0aDsKICAgICB9CiAKLSAgICBzdGF0aWMgdW5zaWduZWQgYXZh
aWxhYmxlVmVjdG9yTGVuZ3RoKHVuc2lnbmVkIGluZGV4QmlhcywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhdmFpbGFi
bGVWZWN0b3JMZW5ndGgoaW5kZXhCaWFzLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCks
IHZlY3Rvckxlbmd0aCk7Ci0gICAgfQorICAgIGlubGluZSBzdGF0aWMgdW5zaWduZWQgYXZhaWxh
YmxlVmVjdG9yTGVuZ3RoKHVuc2lnbmVkIGluZGV4QmlhcywgU3RydWN0dXJlKiwgdW5zaWduZWQg
dmVjdG9yTGVuZ3RoKTsKIAotICAgIHVuc2lnbmVkIGF2YWlsYWJsZVZlY3Rvckxlbmd0aChzaXpl
X3QgcHJvcGVydHlDYXBhY2l0eSwgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGF2YWlsYWJsZVZlY3Rvckxlbmd0aChtX2luZGV4QmlhcywgcHJvcGVydHlDYXBh
Y2l0eSwgdmVjdG9yTGVuZ3RoKTsKLSAgICB9CisgICAgaW5saW5lIHVuc2lnbmVkIGF2YWlsYWJs
ZVZlY3Rvckxlbmd0aChzaXplX3QgcHJvcGVydHlDYXBhY2l0eSwgdW5zaWduZWQgdmVjdG9yTGVu
Z3RoKTsKIAotICAgIHVuc2lnbmVkIGF2YWlsYWJsZVZlY3Rvckxlbmd0aChTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGF2
YWlsYWJsZVZlY3Rvckxlbmd0aChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIHZlY3Rv
ckxlbmd0aCk7Ci0gICAgfQorICAgIGlubGluZSB1bnNpZ25lZCBhdmFpbGFibGVWZWN0b3JMZW5n
dGgoU3RydWN0dXJlKiwgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKTsKIAotICAgIHN0YXRpYyB1bnNp
Z25lZCBvcHRpbWFsVmVjdG9yTGVuZ3RoKHVuc2lnbmVkIGluZGV4Qmlhcywgc2l6ZV90IHByb3Bl
cnR5Q2FwYWNpdHksIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCkKLSAgICB7Ci0gICAgICAgIHZlY3Rv
ckxlbmd0aCA9IHN0ZDo6bWF4KEJBU0VfQVJSQVlfU1RPUkFHRV9WRUNUT1JfTEVOLCB2ZWN0b3JM
ZW5ndGgpOwotICAgICAgICByZXR1cm4gYXZhaWxhYmxlVmVjdG9yTGVuZ3RoKGluZGV4Qmlhcywg
cHJvcGVydHlDYXBhY2l0eSwgdmVjdG9yTGVuZ3RoKTsKLSAgICB9CisgICAgaW5saW5lIHN0YXRp
YyB1bnNpZ25lZCBvcHRpbWFsVmVjdG9yTGVuZ3RoKHVuc2lnbmVkIGluZGV4Qmlhcywgc2l6ZV90
IHByb3BlcnR5Q2FwYWNpdHksIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCk7CiAKLSAgICBzdGF0aWMg
dW5zaWduZWQgb3B0aW1hbFZlY3Rvckxlbmd0aCh1bnNpZ25lZCBpbmRleEJpYXMsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpCi0gICAgewotICAgICAgICByZXR1
cm4gb3B0aW1hbFZlY3Rvckxlbmd0aChpbmRleEJpYXMsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSwgdmVjdG9yTGVuZ3RoKTsKLSAgICB9CisgICAgaW5saW5lIHN0YXRpYyB1bnNpZ25l
ZCBvcHRpbWFsVmVjdG9yTGVuZ3RoKHVuc2lnbmVkIGluZGV4QmlhcywgU3RydWN0dXJlKiwgdW5z
aWduZWQgdmVjdG9yTGVuZ3RoKTsKIAotICAgIHVuc2lnbmVkIG9wdGltYWxWZWN0b3JMZW5ndGgo
c2l6ZV90IHByb3BlcnR5Q2FwYWNpdHksIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBvcHRpbWFsVmVjdG9yTGVuZ3RoKG1faW5kZXhCaWFzLCBwcm9wZXJ0eUNh
cGFjaXR5LCB2ZWN0b3JMZW5ndGgpOwotICAgIH0KKyAgICBpbmxpbmUgdW5zaWduZWQgb3B0aW1h
bFZlY3Rvckxlbmd0aChzaXplX3QgcHJvcGVydHlDYXBhY2l0eSwgdW5zaWduZWQgdmVjdG9yTGVu
Z3RoKTsKIAotICAgIHVuc2lnbmVkIG9wdGltYWxWZWN0b3JMZW5ndGgoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBvcHRp
bWFsVmVjdG9yTGVuZ3RoKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdmVjdG9yTGVu
Z3RoKTsKLSAgICB9CisgICAgaW5saW5lIHVuc2lnbmVkIG9wdGltYWxWZWN0b3JMZW5ndGgoU3Ry
dWN0dXJlKiwgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKTsKIAogICAgIFdyaXRlQmFycmllcjxTcGFy
c2VBcnJheVZhbHVlTWFwPiBtX3NwYXJzZU1hcDsKICAgICB1bnNpZ25lZCBtX2luZGV4QmlhczsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5U3RvcmFnZUlubGluZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVN0b3Jh
Z2VJbmxpbmVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlTdG9yYWdlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFycmF5U3RvcmFnZS5oIgor
I2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2lubGlu
ZSB1bnNpZ25lZCBBcnJheVN0b3JhZ2U6OmF2YWlsYWJsZVZlY3Rvckxlbmd0aCh1bnNpZ25lZCBp
bmRleEJpYXMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpCit7
CisgICAgcmV0dXJuIGF2YWlsYWJsZVZlY3Rvckxlbmd0aChpbmRleEJpYXMsIHN0cnVjdHVyZS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdmVjdG9yTGVuZ3RoKTsKK30KKworaW5saW5lIHVuc2lnbmVk
IEFycmF5U3RvcmFnZTo6YXZhaWxhYmxlVmVjdG9yTGVuZ3RoKHNpemVfdCBwcm9wZXJ0eUNhcGFj
aXR5LCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpCit7CisgICAgcmV0dXJuIGF2YWlsYWJsZVZlY3Rv
ckxlbmd0aChtX2luZGV4QmlhcywgcHJvcGVydHlDYXBhY2l0eSwgdmVjdG9yTGVuZ3RoKTsKK30K
KworaW5saW5lIHVuc2lnbmVkIEFycmF5U3RvcmFnZTo6YXZhaWxhYmxlVmVjdG9yTGVuZ3RoKFN0
cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpCit7CisgICAgcmV0dXJu
IGF2YWlsYWJsZVZlY3Rvckxlbmd0aChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIHZl
Y3Rvckxlbmd0aCk7Cit9CisKK2lubGluZSB1bnNpZ25lZCBBcnJheVN0b3JhZ2U6Om9wdGltYWxW
ZWN0b3JMZW5ndGgodW5zaWduZWQgaW5kZXhCaWFzLCBzaXplX3QgcHJvcGVydHlDYXBhY2l0eSwg
dW5zaWduZWQgdmVjdG9yTGVuZ3RoKQoreworICAgIHZlY3Rvckxlbmd0aCA9IHN0ZDo6bWF4KEJB
U0VfQVJSQVlfU1RPUkFHRV9WRUNUT1JfTEVOLCB2ZWN0b3JMZW5ndGgpOworICAgIHJldHVybiBh
dmFpbGFibGVWZWN0b3JMZW5ndGgoaW5kZXhCaWFzLCBwcm9wZXJ0eUNhcGFjaXR5LCB2ZWN0b3JM
ZW5ndGgpOworfQorCitpbmxpbmUgdW5zaWduZWQgQXJyYXlTdG9yYWdlOjpvcHRpbWFsVmVjdG9y
TGVuZ3RoKHVuc2lnbmVkIGluZGV4QmlhcywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVk
IHZlY3Rvckxlbmd0aCkKK3sKKyAgICByZXR1cm4gb3B0aW1hbFZlY3Rvckxlbmd0aChpbmRleEJp
YXMsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdmVjdG9yTGVuZ3RoKTsKK30KKwor
aW5saW5lIHVuc2lnbmVkIEFycmF5U3RvcmFnZTo6b3B0aW1hbFZlY3Rvckxlbmd0aChzaXplX3Qg
cHJvcGVydHlDYXBhY2l0eSwgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKQoreworICAgIHJldHVybiBv
cHRpbWFsVmVjdG9yTGVuZ3RoKG1faW5kZXhCaWFzLCBwcm9wZXJ0eUNhcGFjaXR5LCB2ZWN0b3JM
ZW5ndGgpOworfQorCitpbmxpbmUgdW5zaWduZWQgQXJyYXlTdG9yYWdlOjpvcHRpbWFsVmVjdG9y
TGVuZ3RoKFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpCit7Cisg
ICAgcmV0dXJuIG9wdGltYWxWZWN0b3JMZW5ndGgoc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0
eSgpLCB2ZWN0b3JMZW5ndGgpOworfQorCitpbmxpbmUgc2l6ZV90IEFycmF5U3RvcmFnZTo6dG90
YWxTaXplKFN0cnVjdHVyZSogc3RydWN0dXJlKSBjb25zdAoreworICAgIHJldHVybiB0b3RhbFNp
emUoc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CdXR0ZXJmbHlJbmxpbmVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnV0dGVyZmx5
SW5saW5lcy5oCShyZXZpc2lvbiAyNTE1NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9CdXR0ZXJmbHlJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw3ICsyNSw3IEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQXJyYXlTdG9yYWdlLmgiCisjaW5jbHVkZSAi
QXJyYXlTdG9yYWdlSW5saW5lcy5oIgogI2luY2x1ZGUgIkJ1dHRlcmZseS5oIgogI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAkocmV2aXNpb24gMjUxNTc5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTIy
LDcgKzIyLDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNp
bmNsdWRlICJDb25zdHJ1Y3REYXRhLmgiCiAjaW5jbHVkZSAiSlNDYXN0LmgiCiAjaW5jbHVkZSA8
d3RmL1B0clRhZy5oPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0Vk0u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXRWTS5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldFZNLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNHbG9iYWxPYmplY3Q7CitjbGFzcyBWTTsKKwor
Ly8gSGVscGVyIGZ1bmN0aW9uIHRvIGdldCBWTSYgZnJvbSBKU0dsb2JhbE9iamVjdCogaWYgSlNH
bG9iYWxPYmplY3QuaCBpcyBub3QgaW5jbHVkZWQuCitWTSYgZ2V0Vk0oSlNHbG9iYWxPYmplY3Qq
KTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheS5oCShyZXZpc2lvbiAyNTE1NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDggKzIyLDggQEAKIAogI2lu
Y2x1ZGUgIkFyZ0xpc3QuaCIKICNpbmNsdWRlICJBcnJheUNvbnZlbnRpb25zLmgiCi0jaW5jbHVk
ZSAiQnV0dGVyZmx5SW5saW5lcy5oIgotI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNs
dWRlICJCdXR0ZXJmbHkuaCIKKyNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09iamVj
dC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUlubGluZXMuaAkocmV2aXNpb24gMjUxNTc5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yMCw2ICsyMCw3IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFycmF5UHJvdG90eXBlLmgiCisjaW5jbHVkZSAi
QnV0dGVyZmx5SW5saW5lcy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiSlNBcnJh
eS5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgJKHJldmlzaW9uIDI1MTU3OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkFsbG9jYXRvcklubGluZXMuaCIKICNpbmNs
dWRlICJDb21wbGV0ZVN1YnNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIkNQVS5oIgotI2luY2x1
ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNhbGxGcmFtZUlubGluZXMuaCIKICNpbmNsdWRl
ICJEZWZlckdDLmgiCiAjaW5jbHVkZSAiRnJlZUxpc3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSGFu
ZGxlLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgJKHJldmlzaW9uIDI1MTU3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNp
bmNsdWRlICJCb29sZWFuUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiRXJyb3JUeXBlLmgiCiAjaW5j
bHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgorI2luY2x1ZGUgIkdldFZNLmgiCiAjaW5jbHVkZSAi
SW50ZXJuYWxGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0Fy
cmF5QnVmZmVyUHJvdG90eXBlLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgJKHJldmlzaW9uIDI1MTU3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OTcsMTcgKzE0OTcsNiBAQCBp
bmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0KFZNJiB2bSwgCiAgICAgcmV0dXJuIHB1dERp
cmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5TmFtZSwg
dmFsdWUsIDAsIHNsb3QpOwogfQogCi1BTFdBWVNfSU5MSU5FIEpTT2JqZWN0KiBSZWdpc3Rlcjo6
b2JqZWN0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gYXNPYmplY3QoanNWYWx1ZSgpKTsKLX0KLQot
QUxXQVlTX0lOTElORSBSZWdpc3RlciYgUmVnaXN0ZXI6Om9wZXJhdG9yPShKU09iamVjdCogb2Jq
ZWN0KQotewotICAgIHUudmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShvYmplY3QpKTsK
LSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KIGlubGluZSBzaXplX3Qgb2Zmc2V0SW5CdXR0ZXJmbHko
UHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogewogICAgIHJldHVybiBvZmZzZXRJbk91dE9mTGluZVN0
b3JhZ2Uob2Zmc2V0KSArIEJ1dHRlcmZseTo6aW5kZXhPZlByb3BlcnR5U3RvcmFnZSgpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJ
KHJldmlzaW9uIDI1MTU3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqICBDb3B5
cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENv
cHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQotICogIENvcHlyaWdo
dCAoQykgMjAwMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5
cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAg
Q29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIChlcmljQHdlYmtpdC5vcmcpCiAgKgogICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKQEAgLTI0LDYgKzI0LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQXV4aWxp
YXJ5QmFycmllcklubGluZXMuaCIKKyNpbmNsdWRlICJCdXR0ZXJmbHlJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTVHlwZWRB
cnJheXMuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgJKHJl
dmlzaW9uIDI1MTU3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDI3ICsxMjksNiBAQCBpbmxpbmUgSlNTY29wZSogSlNT
Y29wZTo6bmV4dCgpCiAgICAgcmV0dXJuIG1fbmV4dC5nZXQoKTsKIH0KIAotaW5saW5lIFJlZ2lz
dGVyJiBSZWdpc3Rlcjo6b3BlcmF0b3I9KEpTU2NvcGUqIHNjb3BlKQotewotICAgICp0aGlzID0g
SlNWYWx1ZShzY29wZSk7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi1pbmxpbmUgSlNTY29wZSog
UmVnaXN0ZXI6OnNjb3BlKCkgY29uc3QKLXsKLSAgICByZXR1cm4ganNDYXN0PEpTU2NvcGUqPih1
bmJveGVkQ2VsbCgpKTsKLX0KLQotaW5saW5lIEpTR2xvYmFsT2JqZWN0KiBDYWxsRnJhbWU6Omxl
eGljYWxHbG9iYWxPYmplY3QoVk0mIHZtKSBjb25zdAotewotICAgIFVOVVNFRF9QQVJBTSh2bSk7
Ci0jaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIGlmIChjYWxsZWUoKS5pc1dhc20oKSkKLSAg
ICAgICAgcmV0dXJuIGxleGljYWxHbG9iYWxPYmplY3RGcm9tV2FzbUNhbGxlZSh2bSk7Ci0jZW5k
aWYKLSAgICByZXR1cm4ganNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCk7Ci19Ci0KIGlubGluZSBz
aXplX3QgSlNTY29wZTo6b2Zmc2V0T2ZOZXh0KCkKIHsKICAgICByZXR1cm4gT0JKRUNUX09GRlNF
VE9GKEpTU2NvcGUsIG1fbmV4dCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmgJKHJldmlzaW9uIDI1MTU3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNs
dWRlICJBcmdMaXN0LmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ29tbW9u
SWRlbnRpZmllcnMuaCIKKyNpbmNsdWRlICJHZXRWTS5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJQcm9wZXJ0eURlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJQcm9wZXJ0eVNs
b3QuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFy
cmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVy
dHlOYW1lQXJyYXkuaAkocmV2aXNpb24gMjUxNTc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAs
NiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUg
IklkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xv
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
U2xvdC5oCShyZXZpc2lvbiAyNTE1NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eVNsb3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsOCBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkRPTUFubm90YXRp
b24uaCIKKyNpbmNsdWRlICJHZXRWTS5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNs
dWRlICJQcm9wZXJ0eU5hbWUuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1JbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1JbmxpbmVzLmgJKHJldmlzaW9uIDI1MTU3
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNSW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkNh
bGxGcmFtZUlubGluZXMuaCIKICNpbmNsdWRlICJFbnRyeUZyYW1lLmgiCiAjaW5jbHVkZSAiUHJv
ZmlsZXJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIlZNLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvSGVhcFZlcmlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvSGVhcFZlcmlmaWVyLmNwcAkocmV2aXNpb24gMjUxNTc5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJIZWFwVmVy
aWZpZXIuaCIKIAorI2luY2x1ZGUgIkJ1dHRlcmZseUlubGluZXMuaCIKICNpbmNsdWRlICJDb2Rl
QmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI1MTU3OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseVJ1bnRp
bWVFcnJvci5oIgogI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZl
ci5oIgotI2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiUHJvdG9DYWxsRnJh
bWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJXYXNtQ2FsbGVlLmgiCiAj
aW5jbHVkZSAiV2FzbUNhbGxpbmdDb252ZW50aW9uLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNTE1NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNCBAQAorMjAxOS0xMC0yNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+
CisKKyAgICAgICAgTW92ZSBKU0M6OlJlZ2lzdGVyIGlubGluZSBtZXRob2RzIGludG8gUmVnaXN0
ZXJJbmxpbmVzLmguCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDMzOTEKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpIGFuZCBLZWl0
aCBNaWxsZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIG5lZWRlZCBiZWNhdXNlIHRoZXJlIGlz
IG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tOgorCiAyMDE5LTEw
LTIzICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBhIG1l
Y2hhbmlzbSB0byBmaW5kIGFuZCBtYW5pcHVsYXRlIHRleHQgYnkgcGFyYWdyYXBocwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vz
c2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtl
eVNlc3Npb24ubW0JKHJldmlzaW9uIDI1MTU3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9u
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDYgKzM2LDggQEAKICNpbXBvcnQgIldlYkNvcmVOU0Vycm9y
RXh0cmFzLmgiCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZFcnJvci5oPgogI2ltcG9ydCA8Q29y
ZU1lZGlhL0NNQmFzZS5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSGVhcElubGluZXMuaD4K
KyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTQ2VsbElubGluZXMuaD4KICNpbXBvcnQgPEphdmFT
Y3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0SW5saW5lcy5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvVHlwZWRBcnJheUlubGluZXMuaD4KICNpbXBvcnQgPG9iamMvb2JqYy1ydW50aW1lLmg+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>