<?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>103407</bug_id>
          
          <creation_ts>2012-11-27 06:00:56 -0800</creation_ts>
          <short_desc>Speech Recognition API: Update SpeechRecognitionEvent to match the specification</short_desc>
          <delta_ts>2012-12-03 06:28:26 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>103833</dependson>
          <blocked>80261</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tommy Widenflycht">tommyw</reporter>
          <assigned_to name="Tommy Widenflycht">tommyw</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>hans</cc>
    
    <cc>haraken</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>776680</commentid>
    <comment_count>0</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-11-27 06:00:56 -0800</bug_when>
    <thetext>This will be the first of a few patches that adds the new results attribute, and then later removes the deprecated result attribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776684</commentid>
    <comment_count>1</comment_count>
      <attachid>176250</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-11-27 06:07:13 -0800</bug_when>
    <thetext>Created attachment 176250
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776686</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-27 06:09:07 -0800</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776693</commentid>
    <comment_count>3</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-11-27 06:12:54 -0800</bug_when>
    <thetext>Hans &amp; Adam: What would you like me to do regarding tests? Should I convert them (and extend them) directly or is it OK to do in an follow-up patch?
Is it important to keep the tests for the old API until the new API is completely hooked up in Chromium?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776697</commentid>
    <comment_count>4</comment_count>
      <attachid>176250</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-11-27 06:17:20 -0800</bug_when>
    <thetext>Comment on attachment 176250
Patch

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

&gt; Source/WebCore/Modules/speech/SpeechRecognitionEvent.h:46
&gt; +    // DEPRECATED

nit: I&apos;m not sure &quot;// DEPRECATED&quot; is common in WebKit. That also suggests to me that the code might be around a while, which is not the case here :) I think a &quot;// FIXME: Remove these after embedder has been updated.&quot; is more clear. This applies below as well.

&gt; Source/WebCore/Modules/speech/SpeechRecognitionEvent.idl:34
&gt; +    [InitializedByEventConstructor] readonly attribute short resultIndex;

s/short/long/ here?

&gt; Source/WebKit/chromium/public/WebSpeechRecognizerClient.h:76
&gt; +    // the last time the functions was called.

nit: s/the functions/the function/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776698</commentid>
    <comment_count>5</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-11-27 06:18:37 -0800</bug_when>
    <thetext>Thanks Tommy! This looks great to me.

(In reply to comment #3)
&gt; Hans &amp; Adam: What would you like me to do regarding tests? Should I convert them (and extend them) directly or is it OK to do in an follow-up patch?

I don&apos;t have a strong opinion here, though I suppose sooner is better than later in most cases.

&gt; Is it important to keep the tests for the old API until the new API is completely hooked up in Chromium?

I don&apos;t think that is important.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776880</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-27 09:45:38 -0800</bug_when>
    <thetext>&gt; &gt; Hans &amp; Adam: What would you like me to do regarding tests? Should I convert them (and extend them) directly or is it OK to do in an follow-up patch?
&gt; 
&gt; I don&apos;t have a strong opinion here, though I suppose sooner is better than later in most cases.

I&apos;d write the tests in the same patch as the code change.

&gt; &gt; Is it important to keep the tests for the old API until the new API is completely hooked up in Chromium?
&gt; 
&gt; I don&apos;t think that is important.

Yeah, we don&apos;t need to test the old API during the transition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776884</commentid>
    <comment_count>7</comment_count>
      <attachid>176250</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-27 09:47:30 -0800</bug_when>
    <thetext>Comment on attachment 176250
Patch

Looks great, but please update the tests.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778967</commentid>
    <comment_count>8</comment_count>
      <attachid>176717</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-11-29 06:46:24 -0800</bug_when>
    <thetext>Created attachment 176717
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778972</commentid>
    <comment_count>9</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-11-29 06:51:02 -0800</bug_when>
    <thetext>The size increased due to me having to move the emma attribute in this patch as well.
I also took the opportunity to rename final to isFinal since final is a reserved keyword in JS, the specification will be updated asap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779049</commentid>
    <comment_count>10</comment_count>
      <attachid>176717</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-29 08:55:22 -0800</bug_when>
    <thetext>Comment on attachment 176717
Patch

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

&gt; Source/WebCore/Modules/speech/SpeechRecognitionEvent.cpp:118
&gt; +

you&apos;ve got an extra line here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779924</commentid>
    <comment_count>11</comment_count>
      <attachid>176918</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-11-30 01:17:04 -0800</bug_when>
    <thetext>Created attachment 176918
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779927</commentid>
    <comment_count>12</comment_count>
      <attachid>176717</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-11-30 01:18:32 -0800</bug_when>
    <thetext>Comment on attachment 176717
Patch

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

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognitionEvent.cpp:118
&gt;&gt; +
&gt; 
&gt; you&apos;ve got an extra line here.

fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779928</commentid>
    <comment_count>13</comment_count>
      <attachid>176918</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-30 01:23:36 -0800</bug_when>
    <thetext>Comment on attachment 176918
Patch for landing

Rejecting attachment 176918 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

/mnt/git/webkit-commit-queue/LayoutTests/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/15065117</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779930</commentid>
    <comment_count>14</comment_count>
      <attachid>176920</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-11-30 01:28:28 -0800</bug_when>
    <thetext>Created attachment 176920
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780088</commentid>
    <comment_count>15</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-11-30 07:10:31 -0800</bug_when>
    <thetext>Committed r136236: &lt;http://trac.webkit.org/changeset/136236&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780864</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-02 00:48:21 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 103833</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781217</commentid>
    <comment_count>17</comment_count>
      <attachid>177206</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-12-03 01:17:39 -0800</bug_when>
    <thetext>Created attachment 177206
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781218</commentid>
    <comment_count>18</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-12-03 01:19:40 -0800</bug_when>
    <thetext>I have removed all emma related functionality from the latest patch since the magic v8 code was triggered for more than just the correct class. All other code is identical.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781223</commentid>
    <comment_count>19</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-03 01:23:41 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; I have removed all emma related functionality from the latest patch since the magic v8 code was triggered for more than just the correct class.

Would you elaborate on this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781225</commentid>
    <comment_count>20</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-12-03 01:27:15 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; I have removed all emma related functionality from the latest patch since the magic v8 code was triggered for more than just the correct class.
&gt; 
&gt; Would you elaborate on this?

See the rollout bug: https://bugs.webkit.org/show_bug.cgi?id=103833

Since the emma attribute is much less important that the switch to a list of results I am removing it for now while investigating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781229</commentid>
    <comment_count>21</comment_count>
      <attachid>177206</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-03 01:42:24 -0800</bug_when>
    <thetext>Comment on attachment 177206
Patch

Looks reasonable.

Please add the rationale for removing emma to ChangeLog. Also the spec link could be added to ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781246</commentid>
    <comment_count>22</comment_count>
      <attachid>177213</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-12-03 02:15:07 -0800</bug_when>
    <thetext>Created attachment 177213
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781247</commentid>
    <comment_count>23</comment_count>
      <attachid>176250</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-12-03 02:15:49 -0800</bug_when>
    <thetext>Comment on attachment 176250
Patch

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

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognitionEvent.idl:34
&gt;&gt; +    [InitializedByEventConstructor] readonly attribute short resultIndex;
&gt; 
&gt; s/short/long/ here?

fixed.

&gt;&gt; Source/WebKit/chromium/public/WebSpeechRecognizerClient.h:76
&gt;&gt; +    // the last time the functions was called.
&gt; 
&gt; nit: s/the functions/the function/

fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781251</commentid>
    <comment_count>24</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-12-03 02:16:50 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 177206 [details])
&gt; Looks reasonable.
&gt; 
&gt; Please add the rationale for removing emma to ChangeLog. Also the spec link could be added to ChangeLog.

Fixed, please take another look since I corrected a type and had to change the Dictionary classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781394</commentid>
    <comment_count>25</comment_count>
      <attachid>177213</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-03 06:28:21 -0800</bug_when>
    <thetext>Comment on attachment 177213
Patch

Clearing flags on attachment: 177213

Committed r136392: &lt;http://trac.webkit.org/changeset/136392&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781395</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-03 06:28:26 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176250</attachid>
            <date>2012-11-27 06:07:13 -0800</date>
            <delta_ts>2012-12-03 02:15:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103407-20121127150449.patch</filename>
            <type>text/plain</type>
            <size>15738</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1ODQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGNhZmI4NThmYzgzZGEz
ZmI3OTY5Y2U4YjgxMTYwN2ZlMTJlNDJjZS4uYjk4YjIyZGE5NGZhNWY0Mjk0MjFlMGJjYWQzY2Rj
NzQ4ZGVlM2NjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTExLTI3ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIFNwZWVjaCBSZWNv
Z25pdGlvbiBBUEk6IFVwZGF0ZSBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50IHRvIG1hdGNoIHRoZSBz
cGVjaWZpY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDM0MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRpbmcgdGhlIG5ldyBmdW5jdGlvbmFsaXR5IGFuZCBkZXByZWNhdGluZyB0aGUgb2xk
LgorCisgICAgICAgIFRlc3RzIHdpbGwgYmUgdXBkYXRlZCBsYXRlci4KKworICAgICAgICAqIE1v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbjo6ZGlkUmVjZWl2ZVJlc3VsdHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uaDoKKyAgICAgICAgKFNwZWVjaFJlY29n
bml0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkV2ZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXZlbnQ6OmNyZWF0ZVJl
c3VsdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uRXZlbnQ6OlNwZWVjaFJlY29nbml0aW9uRXZlbnQpOgorICAgICAgICAqIE1vZHVsZXMv
c3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXZlbnQuaDoKKyAgICAgICAgKFNwZWVjaFJlY29nbml0
aW9uRXZlbnRJbml0KToKKyAgICAgICAgKFNwZWVjaFJlY29nbml0aW9uRXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FdmVudDo6cmVzdWx0SW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FdmVudDo6cmVzdWx0cyk6CisgICAgICAgICog
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FdmVudC5pZGw6CisKIDIwMTItMTEtMjcg
IEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmNv
cnJlY3QgdmFsdWUgb2YgQ1NTU3R5bGVEZWNsYXJhdGlvbiNsZW5ndGggd2hlbiBhIHNob3J0aGFu
ZCBwcm9wZXJ0eSBpcyBpbmhlcml0IG9yIGluaXRpYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggODU1YTU3MGU4MzBmYzc3ZDM1ODRjNjcwZDBjMGIyMDdjYzI3N2Y5Yi4uNDQxYTU1NWI3
OWI4N2RlMzAwYmNkMDU2OTI0YTI3Y2RkYjNmN2MwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0xMS0yNyAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21t
eXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBTcGVlY2ggUmVjb2duaXRpb24gQVBJOiBVcGRhdGUg
U3BlZWNoUmVjb2duaXRpb25FdmVudCB0byBtYXRjaCB0aGUgc3BlY2lmaWNhdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNDA3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIHRoZSBuZXcg
ZGlkUmVjZWl2ZVJlc3VsdHMgbWV0aG9kLgorCisgICAgICAgICogcHVibGljL1dlYlNwZWVjaFJl
Y29nbml6ZXJDbGllbnQuaDoKKyAgICAgICAgKiBzcmMvU3BlZWNoUmVjb2duaXRpb25DbGllbnRQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uQ2xpZW50UHJveHk6
OmRpZFJlY2VpdmVSZXN1bHRzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL1Nw
ZWVjaFJlY29nbml0aW9uQ2xpZW50UHJveHkuaDoKKyAgICAgICAgKFNwZWVjaFJlY29nbml0aW9u
Q2xpZW50UHJveHkpOgorCiAyMDEyLTExLTI3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcu
Ym90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTM1Nzg2
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRp
b24uY3BwCmluZGV4IDQxZjQ5OGZhOWU4NTRmYzZmZWYxYTg2NjZiN2E0NzVmMzQzNGY4NmIuLmJl
ZGE4Mjc4ZmMzZjZkM2I5NTljN2E2ZmNkMDBlODM3Zjc4MWM1N2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAKQEAgLTU0LDYg
KzU0LDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvbjo6c3RhcnQoRXhjZXB0aW9uQ29kZSYgZWMp
CiAgICAgfQogCiAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOworICAgIG1fZmluYWxSZXN1
bHRzLmNsZWFyKCk7CiAgICAgbV9jb250cm9sbGVyLT5zdGFydCh0aGlzLCBtX2dyYW1tYXJzLmdl
dCgpLCBtX2xhbmcsIG1fY29udGludW91cywgbV9pbnRlcmltUmVzdWx0cywgbV9tYXhBbHRlcm5h
dGl2ZXMpOwogICAgIG1fc3RhcnRlZCA9IHRydWU7CiB9CkBAIC0xMDUsNiArMTA2LDIwIEBAIHZv
aWQgU3BlZWNoUmVjb2duaXRpb246OmRpZFJlY2VpdmVSZXN1bHQoUGFzc1JlZlB0cjxTcGVlY2hS
ZWNvZ25pdGlvblJlc3VsdD4gcmVzCiAgICAgZGlzcGF0Y2hFdmVudChTcGVlY2hSZWNvZ25pdGlv
bkV2ZW50OjpjcmVhdGVSZXN1bHQocmVzdWx0LCByZXN1bHRJbmRleCwgcmVzdWx0SGlzdG9yeSkp
OwogfQogCit2b2lkIFNwZWVjaFJlY29nbml0aW9uOjpkaWRSZWNlaXZlUmVzdWx0cyhjb25zdCBW
ZWN0b3I8UmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiA+JiBuZXdGaW5hbFJlc3VsdHMs
IGNvbnN0IFZlY3RvcjxSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+ID4mIGN1cnJlbnRJ
bnRlcmltUmVzdWx0cykKK3sKKyAgICB1bnNpZ25lZCBsb25nIHJlc3VsdEluZGV4ID0gbV9maW5h
bFJlc3VsdHMuc2l6ZSgpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuZXdGaW5hbFJl
c3VsdHMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fZmluYWxSZXN1bHRzLmFwcGVuZChuZXdGaW5h
bFJlc3VsdHNbaV0pOworCisgICAgVmVjdG9yPFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3Vs
dD4gPiByZXN1bHRzID0gbV9maW5hbFJlc3VsdHM7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBjdXJyZW50SW50ZXJpbVJlc3VsdHMuc2l6ZSgpOyArK2kpCisgICAgICAgIHJlc3VsdHMuYXBw
ZW5kKGN1cnJlbnRJbnRlcmltUmVzdWx0c1tpXSk7CisKKyAgICBkaXNwYXRjaEV2ZW50KFNwZWVj
aFJlY29nbml0aW9uRXZlbnQ6OmNyZWF0ZVJlc3VsdChyZXN1bHRJbmRleCwgcmVzdWx0cykpOwor
fQorCiB2b2lkIFNwZWVjaFJlY29nbml0aW9uOjpkaWRSZWNlaXZlTm9NYXRjaChQYXNzUmVmUHRy
PFNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiByZXN1bHQpCiB7CiAgICAgZGlzcGF0Y2hFdmVudChT
cGVlY2hSZWNvZ25pdGlvbkV2ZW50OjpjcmVhdGVOb01hdGNoKHJlc3VsdCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmgKaW5kZXggYjVj
YTRkZDBhZmQzYjM4NDdiNjVjZTAwNTZiODI2ZDI3ZTRkM2I2ZS4uNjQzZGRhOGI4MzE5OGIxODk4
MzJhNWU1NzFkMjRlMWJhZmFhOTI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5oCkBAIC03Myw2ICs3Myw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRpZEVuZFNwZWVjaCgpOwogICAgIHZvaWQgZGlkRW5kU291bmQoKTsKICAgICB2b2lk
IGRpZEVuZEF1ZGlvKCk7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzdWx0cyhjb25zdCBWZWN0b3I8
UmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiA+JiBuZXdGaW5hbFJlc3VsdHMsIGNvbnN0
IFZlY3RvcjxSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+ID4mIGN1cnJlbnRJbnRlcmlt
UmVzdWx0cyk7CisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG9uY2Ugd2Ugc3RhcnQgdXNpbmcg
ZGlkUmVjZWl2ZVJlc3VsdHMuCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzdWx0KFBhc3NSZWZQdHI8
U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+LCB1bnNpZ25lZCBsb25nIHJlc3VsdEluZGV4LCBQYXNz
UmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdD4gcmVzdWx0SGlzdG9yeSk7CiAgICAg
dm9pZCBkaWRSZWNlaXZlTm9NYXRjaChQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0
Pik7CiAgICAgdm9pZCBkaWRSZWNlaXZlRXJyb3IoUGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlv
bkVycm9yPik7CkBAIC0xMjQsNiArMTI2LDcgQEAgcHJpdmF0ZToKICAgICBTcGVlY2hSZWNvZ25p
dGlvbkNvbnRyb2xsZXIqIG1fY29udHJvbGxlcjsKICAgICBib29sIG1fc3RvcHBlZEJ5QWN0aXZl
RE9NT2JqZWN0OwogICAgIGJvb2wgbV9zdGFydGVkOworICAgIFZlY3RvcjxSZWZQdHI8U3BlZWNo
UmVjb2duaXRpb25SZXN1bHQ+ID4gbV9maW5hbFJlc3VsdHM7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvbkV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFJlY29nbml0aW9uRXZlbnQuY3BwCmluZGV4IGUyYThmN2ExZmUwODZmNDQ1MDhiMGYzNDU5
NzkwZjE4ZjljNTA3ZTYuLmE2MTIzNjg3MWQ3ZjAzMjRkNmViNmQ3NTczMmU0YTk3ZDMyYjU5YTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0
aW9uRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJl
Y29nbml0aW9uRXZlbnQuY3BwCkBAIC01MSw2ICs1MSwxMSBAQCBQYXNzUmVmUHRyPFNwZWVjaFJl
Y29nbml0aW9uRXZlbnQ+IFNwZWVjaFJlY29nbml0aW9uRXZlbnQ6OmNyZWF0ZVJlc3VsdChQYXNz
UmVmUAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3BlZWNoUmVjb2duaXRpb25FdmVudChldmVu
dE5hbWVzKCkucmVzdWx0RXZlbnQsIHJlc3VsdCwgcmVzdWx0SW5kZXgsIHJlc3VsdEhpc3Rvcnkp
KTsKIH0KIAorUGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvbkV2ZW50PiBTcGVlY2hSZWNvZ25p
dGlvbkV2ZW50OjpjcmVhdGVSZXN1bHQodW5zaWduZWQgbG9uZyByZXN1bHRJbmRleCwgY29uc3Qg
VmVjdG9yPFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4gPiYgcmVzdWx0cykKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFNwZWVjaFJlY29nbml0aW9uRXZlbnQoZXZlbnROYW1lcygp
LnJlc3VsdEV2ZW50LCByZXN1bHRJbmRleCwgcmVzdWx0cykpOworfQorCiBQYXNzUmVmUHRyPFNw
ZWVjaFJlY29nbml0aW9uRXZlbnQ+IFNwZWVjaFJlY29nbml0aW9uRXZlbnQ6OmNyZWF0ZU5vTWF0
Y2goUGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4gcmVzdWx0KQogewogICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU3BlZWNoUmVjb2duaXRpb25FdmVudChldmVudE5hbWVzKCkubm9t
YXRjaEV2ZW50LCByZXN1bHQsIDAsIDApKTsKQEAgLTY4LDIwICs3MywyNyBAQCBTcGVlY2hSZWNv
Z25pdGlvbkV2ZW50OjpTcGVlY2hSZWNvZ25pdGlvbkV2ZW50KCkKIAogU3BlZWNoUmVjb2duaXRp
b25FdmVudDo6U3BlZWNoUmVjb2duaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
TmFtZSwgY29uc3QgU3BlZWNoUmVjb2duaXRpb25FdmVudEluaXQmIGluaXRpYWxpemVyKQogICAg
IDogRXZlbnQoZXZlbnROYW1lLCBpbml0aWFsaXplcikKLSAgICAsIG1fcmVzdWx0KGluaXRpYWxp
emVyLnJlc3VsdCkKICAgICAsIG1fcmVzdWx0SW5kZXgoaW5pdGlhbGl6ZXIucmVzdWx0SW5kZXgp
CisgICAgLCBtX3Jlc3VsdChpbml0aWFsaXplci5yZXN1bHQpCiAgICAgLCBtX3Jlc3VsdEhpc3Rv
cnkoaW5pdGlhbGl6ZXIucmVzdWx0SGlzdG9yeSkKIHsKIH0KIAogU3BlZWNoUmVjb2duaXRpb25F
dmVudDo6U3BlZWNoUmVjb2duaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFt
ZSwgUGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4gcmVzdWx0LCBzaG9ydCByZXN1
bHRJbmRleCwgUGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3Q+IHJlc3VsdEhp
c3RvcnkpCiAgICAgOiBFdmVudChldmVudE5hbWUsIC8qY2FuQnViYmxlPSovZmFsc2UsIC8qY2Fu
Y2VsYWJsZT0qL2ZhbHNlKQotICAgICwgbV9yZXN1bHQocmVzdWx0KQogICAgICwgbV9yZXN1bHRJ
bmRleChyZXN1bHRJbmRleCkKKyAgICAsIG1fcmVzdWx0KHJlc3VsdCkKICAgICAsIG1fcmVzdWx0
SGlzdG9yeShyZXN1bHRIaXN0b3J5KQogewogfQogCitTcGVlY2hSZWNvZ25pdGlvbkV2ZW50OjpT
cGVlY2hSZWNvZ25pdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lLCB1bnNp
Z25lZCBsb25nIHJlc3VsdEluZGV4LCBjb25zdCBWZWN0b3I8UmVmUHRyPFNwZWVjaFJlY29nbml0
aW9uUmVzdWx0PiA+JiByZXN1bHRzKQorICAgIDogRXZlbnQoZXZlbnROYW1lLCAvKmNhbkJ1YmJs
ZT0qL2ZhbHNlLCAvKmNhbmNlbGFibGU9Ki9mYWxzZSkKKyAgICAsIG1fcmVzdWx0SW5kZXgocmVz
dWx0SW5kZXgpCisgICAgLCBtX3Jlc3VsdHMoU3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0Ojpj
cmVhdGUocmVzdWx0cykpCit7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShTQ1JJUFRFRF9TUEVFQ0gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkV2ZW50LmgKaW5kZXggZDQ0NWMzYThkZGZi
ODA0N2JlODc5OWI0MGYxYzIxNzk5YzM0YWVmMC4uYTI0OTE4OWUyNjgwYjVhODdiMzEzN2YyYWIz
ZmIyNzEzMjdlNWMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb25FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uRXZlbnQuaApAQCAtNDMsOSArNDMsMTIgQEAgY2xhc3MgU3Bl
ZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0Owogc3RydWN0IFNwZWVjaFJlY29nbml0aW9uRXZlbnRJ
bml0IDogcHVibGljIEV2ZW50SW5pdCB7CiAgICAgU3BlZWNoUmVjb2duaXRpb25FdmVudEluaXQo
KTsKIAorICAgIC8vIERFUFJFQ0FURUQKICAgICBSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1
bHQ+IHJlc3VsdDsKLSAgICBzaG9ydCByZXN1bHRJbmRleDsKICAgICBSZWZQdHI8U3BlZWNoUmVj
b2duaXRpb25SZXN1bHRMaXN0PiByZXN1bHRIaXN0b3J5OworCisgICAgc2hvcnQgcmVzdWx0SW5k
ZXg7CisgICAgUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdD4gcmVzdWx0czsKIH07
CiAKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uRXZlbnQgOiBwdWJsaWMgRXZlbnQgewpAQCAtNTMs
MTEgKzU2LDE3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25p
dGlvbkV2ZW50PiBjcmVhdGUoKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25p
dGlvbkV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgU3BlZWNoUmVjb2du
aXRpb25FdmVudEluaXQmKTsKIAorICAgIC8vIERFUFJFQ0FURUQKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTcGVlY2hSZWNvZ25pdGlvbkV2ZW50PiBjcmVhdGVSZXN1bHQoUGFzc1JlZlB0cjxTcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdD4sIHNob3J0IHJlc3VsdEluZGV4LCBQYXNzUmVmUHRyPFNwZWVj
aFJlY29nbml0aW9uUmVzdWx0TGlzdD4gcmVzdWx0SGlzdG9yeSk7CisKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvbkV2ZW50PiBjcmVhdGVSZXN1bHQodW5zaWduZWQgbG9u
ZyByZXN1bHRJbmRleCwgY29uc3QgVmVjdG9yPFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3Vs
dD4gPiYgcmVzdWx0cyk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25F
dmVudD4gY3JlYXRlTm9NYXRjaChQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0Pik7
CiAKKyAgICB1bnNpZ25lZCBsb25nIHJlc3VsdEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9yZXN1
bHRJbmRleDsgfQorICAgIFNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdCogcmVzdWx0cygpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzdWx0cy5nZXQoKTsgfQorCisgICAgLy8gREVQUkVDQVRFRAogICAg
IFNwZWVjaFJlY29nbml0aW9uUmVzdWx0KiByZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX3Jlc3Vs
dC5nZXQoKTsgfQotICAgIHNob3J0IHJlc3VsdEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9yZXN1
bHRJbmRleDsgfSAvLyBGSVhNRTogU3BlYyBzYXlzIHRoaXMgc2hvdWxkIGJlIHNob3J0LCBidXQg
b3RoZXIgaW5kaWNlcyBhcmUgdW5zaWduZWQgaW50cy4KICAgICBTcGVlY2hSZWNvZ25pdGlvblJl
c3VsdExpc3QqIHJlc3VsdEhpc3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdEhpc3Rvcnku
Z2V0KCk7IH0KIAogICAgIC8vIEV2ZW50CkBAIC02NiwxMSArNzUsMTUgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50KCk7CiAgICAgU3BlZWNoUmVjb2duaXRp
b25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50
SW5pdCYpOwotICAgIFNwZWVjaFJlY29nbml0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudE5hbWUsIFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+LCBzaG9ydCByZXN1
bHRJbmRleCwgUGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3Q+IHJlc3VsdEhp
c3RvcnkpOworICAgIFNwZWVjaFJlY29nbml0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudE5hbWUsIFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+LCBzaG9ydCByZXN1
bHRJbmRleCwgUGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3Q+IHJlc3VsdEhp
c3RvcnkpOyAvLyBGSVhNRTogUmVtb3ZlLgorICAgIFNwZWVjaFJlY29nbml0aW9uRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUsIHVuc2lnbmVkIGxvbmcgcmVzdWx0SW5kZXgsIGNv
bnN0IFZlY3RvcjxSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+ID4mIHJlc3VsdHMpOwog
ICAgIGV4cGxpY2l0IFNwZWVjaFJlY29nbml0aW9uRXZlbnQoUGFzc1JlZlB0cjxTcGVlY2hSZWNv
Z25pdGlvbkVycm9yPik7CiAKKyAgICB1bnNpZ25lZCBsb25nIG1fcmVzdWx0SW5kZXg7CisgICAg
UmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdD4gbV9yZXN1bHRzOworCisgICAgLy8g
REVQUkVDQVRFRAogICAgIFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4gbV9yZXN1bHQ7
Ci0gICAgc2hvcnQgbV9yZXN1bHRJbmRleDsKICAgICBSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25S
ZXN1bHRMaXN0PiBtX3Jlc3VsdEhpc3Rvcnk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkV2ZW50LmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXZlbnQuaWRsCmluZGV4IDhl
Yjc4OWMwYzBjOTUwODdiZDAwNTM3NDEyMTI3NDExZTVjNjY3MjYuLjgxYzIzMDE1NWZlZjA1Nzdl
ZjQ1YTc4ODI4OTdjMDI0MjUxMzQyZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXZlbnQuaWRsCkBAIC0yNyw3ICsyNywx
MCBAQAogICAgIENvbmRpdGlvbmFsPVNDUklQVEVEX1NQRUVDSCwKICAgICBDb25zdHJ1Y3RvclRl
bXBsYXRlPUV2ZW50CiBdIGludGVyZmFjZSBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50IDogRXZlbnQg
eworICAgIC8vIERFUFJFQ0FURUQKICAgICBbSW5pdGlhbGl6ZWRCeUV2ZW50Q29uc3RydWN0b3Jd
IHJlYWRvbmx5IGF0dHJpYnV0ZSBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCByZXN1bHQ7Ci0gICAg
W0luaXRpYWxpemVkQnlFdmVudENvbnN0cnVjdG9yXSByZWFkb25seSBhdHRyaWJ1dGUgc2hvcnQg
cmVzdWx0SW5kZXg7CiAgICAgW0luaXRpYWxpemVkQnlFdmVudENvbnN0cnVjdG9yXSByZWFkb25s
eSBhdHRyaWJ1dGUgU3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0IHJlc3VsdEhpc3Rvcnk7CisK
KyAgICBbSW5pdGlhbGl6ZWRCeUV2ZW50Q29uc3RydWN0b3JdIHJlYWRvbmx5IGF0dHJpYnV0ZSBz
aG9ydCByZXN1bHRJbmRleDsKKyAgICBbSW5pdGlhbGl6ZWRCeUV2ZW50Q29uc3RydWN0b3JdIHJl
YWRvbmx5IGF0dHJpYnV0ZSBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3QgcmVzdWx0czsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hSZWNv
Z25pemVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hS
ZWNvZ25pemVyQ2xpZW50LmgKaW5kZXggZWJkYzBjMTczOTIxZjU0YzlkNDA4YTY3MDMxOTE3ZWFj
MmRlZDQ5My4uMDU2YzRkMzU4NWU5NzFkYzRjMWQxNjJlM2I5MGZjZmUzOWQ5NDMyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoUmVjb2duaXplckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFJlY29n
bml6ZXJDbGllbnQuaApAQCAtNjgsOCArNjgsMTcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBkaWRFbmRBdWRpbyhjb25zdCBXZWJTcGVlY2hSZWNvZ25pdGlvbkhhbmRsZSYpID0gMDsKIAog
ICAgIC8vIFRvIGJlIGNhbGxlZCB3aGVuIHRoZSBzcGVlY2ggcmVjb2duaXplciByZXR1cm5zIGEg
cmVzdWx0LgorICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIHdlIGhhdmUgbW92ZWQgb3Zl
ciB0byBvbmx5IHVzZSB0aGUgZnVuY3Rpb24gYmVsb3cuCiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVSZXN1bHQoY29uc3QgV2ViU3BlZWNoUmVjb2duaXRpb25IYW5kbGUmLCBjb25zdCBXZWJT
cGVlY2hSZWNvZ25pdGlvblJlc3VsdCYsIHVuc2lnbmVkIGxvbmcgcmVzdWx0SW5kZXgsIGNvbnN0
IFdlYlZlY3RvcjxXZWJTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4mIHJlc3VsdEhpc3RvcnkpID0g
MDsKIAorICAgIC8vIFRvIGJlIGNhbGxlZCB3aGVuIHRoZSBzcGVlY2ggcmVjb2duaXplciBwcm92
aWRlcyBuZXcgcmVzdWx0cy4KKyAgICAvLyAtIG5ld0ZpbmFsUmVzdWx0cyBjb250YWlucyB6ZXJv
IG9yIG1vcmUgZmluYWwgcmVzdWx0cyB0aGF0IGFyZSBuZXcgc2luY2UKKyAgICAvLyB0aGUgbGFz
dCB0aW1lIHRoZSBmdW5jdGlvbnMgd2FzIGNhbGxlZC4KKyAgICAvLyAtIGN1cnJlbnRJbnRlcmlt
UmVzdWx0cyBjb250YWlucyB6ZXJvIG9yIG1vcmUgaW50ZWlybSByZXN1bHRzIHRoYXQKKyAgICAv
LyByZXBsYWNlIHRoZSBpbnRlcmltIHJlc3VsdHMgdGhhdCB3ZXJlIHJlcG9ydGVkIHRoZSBsYXN0
IHRpbWUgdGhpcworICAgIC8vIGZ1bmN0aW9uIHdhcyBjYWxsZWQuCisgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVSZXN1bHRzKGNvbnN0IFdlYlNwZWVjaFJlY29nbml0aW9uSGFuZGxlJiwgY29u
c3QgV2ViVmVjdG9yPFdlYlNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiYgbmV3RmluYWxSZXN1bHRz
LCBjb25zdCBXZWJWZWN0b3I8V2ViU3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+JiBjdXJyZW50SW50
ZXJpbVJlc3VsdHMpID0gMDsKKwogICAgIC8vIFRvIGJlIGNhbGxlZCB3aGVuIHRoZSBzcGVlY2gg
cmVjb2duaXplciByZXR1cm5zIGEgZmluYWwgcmVzdWx0IHdpdGggbm8KICAgICAvLyByZWNvZ25p
emlvbiBoeXBvdGhlc2lzLgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTm9NYXRjaChjb25z
dCBXZWJTcGVlY2hSZWNvZ25pdGlvbkhhbmRsZSYsIGNvbnN0IFdlYlNwZWVjaFJlY29nbml0aW9u
UmVzdWx0JikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3Bl
ZWNoUmVjb2duaXRpb25DbGllbnRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9TcGVlY2hSZWNvZ25pdGlvbkNsaWVudFByb3h5LmNwcAppbmRleCAwODI3NDdjZGI5Y2NjYzZm
ZmJkZDM0MTE1NTM1ZWM4ODk0M2ZkZjUwLi5mNzQ4NWVkOWIzNjI2OWNkYmM2MmI5YmMwNmExZDFm
YTNiNTFkZDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hS
ZWNvZ25pdGlvbkNsaWVudFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9TcGVlY2hSZWNvZ25pdGlvbkNsaWVudFByb3h5LmNwcApAQCAtMTEzLDYgKzExMywyMSBAQCB2
b2lkIFNwZWVjaFJlY29nbml0aW9uQ2xpZW50UHJveHk6OmRpZFJlY2VpdmVSZXN1bHQoY29uc3Qg
V2ViU3BlZWNoUmVjb2duaXRpb25IYQogCiB9CiAKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25DbGll
bnRQcm94eTo6ZGlkUmVjZWl2ZVJlc3VsdHMoY29uc3QgV2ViU3BlZWNoUmVjb2duaXRpb25IYW5k
bGUmIGhhbmRsZSwgY29uc3QgV2ViVmVjdG9yPFdlYlNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiYg
bmV3RmluYWxSZXN1bHRzLCBjb25zdCBXZWJWZWN0b3I8V2ViU3BlZWNoUmVjb2duaXRpb25SZXN1
bHQ+JiBjdXJyZW50SW50ZXJpbVJlc3VsdHMpCit7CisgICAgUmVmUHRyPFNwZWVjaFJlY29nbml0
aW9uPiByZWNvZ25pdGlvbiA9IFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb24+KGhhbmRsZSk7
CisKKyAgICBWZWN0b3I8UmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiA+IGZpbmFsUmVz
dWx0c1ZlY3RvcihuZXdGaW5hbFJlc3VsdHMuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG5ld0ZpbmFsUmVzdWx0cy5zaXplKCk7ICsraSkKKyAgICAgICAgZmluYWxSZXN1bHRz
VmVjdG9yW2ldID0gc3RhdGljX2Nhc3Q8UGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3Vs
dD4gPihuZXdGaW5hbFJlc3VsdHNbaV0pOworCisgICAgVmVjdG9yPFJlZlB0cjxTcGVlY2hSZWNv
Z25pdGlvblJlc3VsdD4gPiBpbnRlcmltUmVzdWx0c1ZlY3RvcihjdXJyZW50SW50ZXJpbVJlc3Vs
dHMuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGN1cnJlbnRJbnRlcmltUmVz
dWx0cy5zaXplKCk7ICsraSkKKyAgICAgICAgaW50ZXJpbVJlc3VsdHNWZWN0b3JbaV0gPSBzdGF0
aWNfY2FzdDxQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiA+KGN1cnJlbnRJbnRl
cmltUmVzdWx0c1tpXSk7CisKKyAgICByZWNvZ25pdGlvbi0+ZGlkUmVjZWl2ZVJlc3VsdHMoZmlu
YWxSZXN1bHRzVmVjdG9yLCBpbnRlcmltUmVzdWx0c1ZlY3Rvcik7Cit9CisKIHZvaWQgU3BlZWNo
UmVjb2duaXRpb25DbGllbnRQcm94eTo6ZGlkUmVjZWl2ZU5vTWF0Y2goY29uc3QgV2ViU3BlZWNo
UmVjb2duaXRpb25IYW5kbGUmIGhhbmRsZSwgY29uc3QgV2ViU3BlZWNoUmVjb2duaXRpb25SZXN1
bHQmIHJlc3VsdCkKIHsKICAgICBSZWZQdHI8U3BlZWNoUmVjb2duaXRpb24+IHJlY29nbml0aW9u
ID0gUGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvbj4oaGFuZGxlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaFJlY29nbml0aW9uQ2xpZW50UHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaFJlY29nbml0aW9uQ2xpZW50UHJveHku
aAppbmRleCA2MTk0ZjY2MDA3YWYyYmY3NjIxOThiZWZhMzIyZGM5ODE1ZmU3NjNhLi4xNTk1OGQ0
ZmJkNzYxNjY2YThiZTM2NmNmZWVmZmU4ZDdhNWVhYWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9TcGVlY2hSZWNvZ25pdGlvbkNsaWVudFByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoUmVjb2duaXRpb25DbGllbnRQcm94eS5oCkBA
IC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kU291bmQoY29u
c3QgV2ViU3BlZWNoUmVjb2duaXRpb25IYW5kbGUmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkRW5kQXVkaW8oY29uc3QgV2ViU3BlZWNoUmVjb2duaXRpb25IYW5kbGUmKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3VsdChjb25zdCBXZWJTcGVlY2hSZWNv
Z25pdGlvbkhhbmRsZSYsIGNvbnN0IFdlYlNwZWVjaFJlY29nbml0aW9uUmVzdWx0JiwgdW5zaWdu
ZWQgbG9uZyByZXN1bHRJbmRleCwgY29uc3QgV2ViVmVjdG9yPFdlYlNwZWVjaFJlY29nbml0aW9u
UmVzdWx0PiYgcmVzdWx0SGlzdG9yeSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVSZXN1bHRzKGNvbnN0IFdlYlNwZWVjaFJlY29nbml0aW9uSGFuZGxlJiwgY29uc3QgV2Vi
VmVjdG9yPFdlYlNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiYgbmV3RmluYWxSZXN1bHRzLCBjb25z
dCBXZWJWZWN0b3I8V2ViU3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+JiBjdXJyZW50SW50ZXJpbVJl
c3VsdHMpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTm9NYXRjaChjb25z
dCBXZWJTcGVlY2hSZWNvZ25pdGlvbkhhbmRsZSYsIGNvbnN0IFdlYlNwZWVjaFJlY29nbml0aW9u
UmVzdWx0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVFcnJvcihjb25z
dCBXZWJTcGVlY2hSZWNvZ25pdGlvbkhhbmRsZSYsIGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSwg
V2ViU3BlZWNoUmVjb2duaXplckNsaWVudDo6RXJyb3JDb2RlKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkU3RhcnQoY29uc3QgV2ViU3BlZWNoUmVjb2duaXRpb25IYW5kbGUmKSBPVkVS
UklERTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176717</attachid>
            <date>2012-11-29 06:46:24 -0800</date>
            <delta_ts>2012-12-03 05:34:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103407-20121129154357.patch</filename>
            <type>text/plain</type>
            <size>36790</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWZhNzUyM2ZkZjVlNjMw
MGQ0ZGQ0ODlkYjBkODNiYzk1OTg3MWYwMS4uNDRjMGFmMDUwNDgxOGExMTM0ODk4NWNiZGE4ODE1
YzQ3NzJiMDdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTExLTI5ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIFNwZWVjaCBSZWNv
Z25pdGlvbiBBUEk6IFVwZGF0ZSBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50L1Jlc3VsdCB0byBtYXRj
aCB0aGUgc3BlY2lmaWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTAzNDA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIHRoZSBmb2xsb3dpbmc6CisgICAgICAgIG8gQWRk
cyByZXN1bHRzLCBhbmQgcmVtb3ZpbmcgcmVzdWx0IG9uIFNwZWVjaFJlY29nbml0aW9uRXZlbnQK
KyAgICAgICAgbyBSZW5hbWluZyBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdDo6ZmluYWwgdG8gaXNG
aW5hbAorICAgICAgICBvIE1vdmluZyBlbW1hIHRvIFNwZWVjaFJlY29nbml0aW9uRXZlbnQgZnJv
bSBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdAorCisgICAgICAgIEV4aXN0aW5nIHRlc3RzIHVwZGF0
ZWQgdG8gdGVzdCB0aGUgbmV3IEFQSS4KKworICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uOjpz
dGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbjo6ZGlkUmVjZWl2ZVJl
c3VsdHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoUmVjb2duaXRpb24uaDoKKyAgICAgICAgKFNwZWVjaFJlY29nbml0aW9uKToKKyAgICAgICAg
KiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkV2ZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXZlbnQ6OmNyZWF0ZVJlc3VsdCk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXZlbnQ6OlNwZWVj
aFJlY29nbml0aW9uRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25F
dmVudDo6flNwZWVjaFJlY29nbml0aW9uRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6ZW1tYVF1
YWxpZmllZE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FdmVudDo6
ZW1tYSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FdmVudC5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTcGVlY2hSZWNvZ25pdGlvbkV2ZW50SW5p
dCk6CisgICAgICAgIChTcGVlY2hSZWNvZ25pdGlvbkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uRXZlbnQ6OnJlc3VsdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uRXZlbnQ6OnJlc3VsdHMpOgorICAgICAgICAqIE1vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uRXZlbnQuaWRsOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uUmVzdWx0LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvblJlc3VsdC5oOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25SZXN1bHQ6OmlzRmluYWwpOgorICAgICAgICAoU3BlZWNoUmVjb2duaXRpb25SZXN1bHQp
OgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVzdWx0LmlkbDoK
KyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4
U3BlZWNoUmVjb2duaXRpb25FdmVudEN1c3RvbS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTcGVlY2hSZWNvZ25pdGlvblJlc3VsdEN1c3RvbS5j
cHAuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4U3BlZWNoUmVjb2du
aXRpb25FdmVudDo6b3BhcXVlUm9vdEZvckdDKToKKwogMjAxMi0xMS0yOSAgRmxvcmluIE1hbGl0
YSAgPGZtYWxpdGFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtTa2lhXSBBZGQgbWlzc2luZyBP
cGFxdWVSZWdpb25Ta2lhIG5vdGlmaWVyIGNhbGxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IGQ0MjBhYmIwM2I5YTE4NTAzMGU4ZDEwZmU3NDAyNmNmNTk5ZGQwNDAuLjlhOWMxMjg0YjRm
ZTY3M2I4MGJhNGY5Mzc3NTNkODZhYTFiNTVmMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMTEtMjkgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3
QGdvb2dsZS5jb20+CisKKyAgICAgICAgU3BlZWNoIFJlY29nbml0aW9uIEFQSTogVXBkYXRlIFNw
ZWVjaFJlY29nbml0aW9uRXZlbnQgdG8gbWF0Y2ggdGhlIHNwZWNpZmljYXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzQwNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGluZyB0aGUgbmV3IGRp
ZFJlY2VpdmVSZXN1bHRzIG1ldGhvZC4KKworICAgICAgICAqIHB1YmxpYy9XZWJTcGVlY2hSZWNv
Z25pemVyQ2xpZW50Lmg6CisgICAgICAgICogc3JjL1NwZWVjaFJlY29nbml0aW9uQ2xpZW50UHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvbkNsaWVudFByb3h5Ojpk
aWRSZWNlaXZlUmVzdWx0cyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9TcGVl
Y2hSZWNvZ25pdGlvbkNsaWVudFByb3h5Lmg6CisgICAgICAgIChTcGVlY2hSZWNvZ25pdGlvbkNs
aWVudFByb3h5KToKKwogMjAxMi0xMS0yOSAgRmxvcmluIE1hbGl0YSAgPGZtYWxpdGFAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFtTa2lhXSBBZGQgbWlzc2luZyBPcGFxdWVSZWdpb25Ta2lhIG5v
dGlmaWVyIGNhbGxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvbi5jcHAKaW5kZXggNDFmNDk4ZmE5ZTg1NGZjNmZlZjFhODY2NmI3YTQ3NWYz
NDM0Zjg2Yi4uYmVkYTgyNzhmYzNmNmQzYjk1OWM3YTZmY2QwMGU4MzdmNzgxYzU3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNw
cApAQCAtNTQsNiArNTQsNyBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uOjpzdGFydChFeGNlcHRp
b25Db2RlJiBlYykKICAgICB9CiAKICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CisgICAg
bV9maW5hbFJlc3VsdHMuY2xlYXIoKTsKICAgICBtX2NvbnRyb2xsZXItPnN0YXJ0KHRoaXMsIG1f
Z3JhbW1hcnMuZ2V0KCksIG1fbGFuZywgbV9jb250aW51b3VzLCBtX2ludGVyaW1SZXN1bHRzLCBt
X21heEFsdGVybmF0aXZlcyk7CiAgICAgbV9zdGFydGVkID0gdHJ1ZTsKIH0KQEAgLTEwNSw2ICsx
MDYsMjAgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvbjo6ZGlkUmVjZWl2ZVJlc3VsdChQYXNzUmVm
UHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiByZXMKICAgICBkaXNwYXRjaEV2ZW50KFNwZWVj
aFJlY29nbml0aW9uRXZlbnQ6OmNyZWF0ZVJlc3VsdChyZXN1bHQsIHJlc3VsdEluZGV4LCByZXN1
bHRIaXN0b3J5KSk7CiB9CiAKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb246OmRpZFJlY2VpdmVSZXN1
bHRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+ID4mIG5ld0Zp
bmFsUmVzdWx0cywgY29uc3QgVmVjdG9yPFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4g
PiYgY3VycmVudEludGVyaW1SZXN1bHRzKQoreworICAgIHVuc2lnbmVkIGxvbmcgcmVzdWx0SW5k
ZXggPSBtX2ZpbmFsUmVzdWx0cy5zaXplKCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG5ld0ZpbmFsUmVzdWx0cy5zaXplKCk7ICsraSkKKyAgICAgICAgbV9maW5hbFJlc3VsdHMuYXBw
ZW5kKG5ld0ZpbmFsUmVzdWx0c1tpXSk7CisKKyAgICBWZWN0b3I8UmVmUHRyPFNwZWVjaFJlY29n
bml0aW9uUmVzdWx0PiA+IHJlc3VsdHMgPSBtX2ZpbmFsUmVzdWx0czsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGN1cnJlbnRJbnRlcmltUmVzdWx0cy5zaXplKCk7ICsraSkKKyAgICAgICAg
cmVzdWx0cy5hcHBlbmQoY3VycmVudEludGVyaW1SZXN1bHRzW2ldKTsKKworICAgIGRpc3BhdGNo
RXZlbnQoU3BlZWNoUmVjb2duaXRpb25FdmVudDo6Y3JlYXRlUmVzdWx0KHJlc3VsdEluZGV4LCBy
ZXN1bHRzKSk7Cit9CisKIHZvaWQgU3BlZWNoUmVjb2duaXRpb246OmRpZFJlY2VpdmVOb01hdGNo
KFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+IHJlc3VsdCkKIHsKICAgICBkaXNw
YXRjaEV2ZW50KFNwZWVjaFJlY29nbml0aW9uRXZlbnQ6OmNyZWF0ZU5vTWF0Y2gocmVzdWx0KSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24u
aAppbmRleCBiNWNhNGRkMGFmZDNiMzg0N2I2NWNlMDA1NmI4MjZkMjdlNGQzYjZlLi42NDNkZGE4
YjgzMTk4YjE4OTgzMmE1ZTU3MWQyNGUxYmFmYWE5MjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmgKQEAgLTczLDYgKzczLDggQEAg
cHVibGljOgogICAgIHZvaWQgZGlkRW5kU3BlZWNoKCk7CiAgICAgdm9pZCBkaWRFbmRTb3VuZCgp
OwogICAgIHZvaWQgZGlkRW5kQXVkaW8oKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXN1bHRzKGNv
bnN0IFZlY3RvcjxSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+ID4mIG5ld0ZpbmFsUmVz
dWx0cywgY29uc3QgVmVjdG9yPFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4gPiYgY3Vy
cmVudEludGVyaW1SZXN1bHRzKTsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSB3ZSBz
dGFydCB1c2luZyBkaWRSZWNlaXZlUmVzdWx0cy4KICAgICB2b2lkIGRpZFJlY2VpdmVSZXN1bHQo
UGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4sIHVuc2lnbmVkIGxvbmcgcmVzdWx0
SW5kZXgsIFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0PiByZXN1bHRIaXN0
b3J5KTsKICAgICB2b2lkIGRpZFJlY2VpdmVOb01hdGNoKFBhc3NSZWZQdHI8U3BlZWNoUmVjb2du
aXRpb25SZXN1bHQ+KTsKICAgICB2b2lkIGRpZFJlY2VpdmVFcnJvcihQYXNzUmVmUHRyPFNwZWVj
aFJlY29nbml0aW9uRXJyb3I+KTsKQEAgLTEyNCw2ICsxMjYsNyBAQCBwcml2YXRlOgogICAgIFNw
ZWVjaFJlY29nbml0aW9uQ29udHJvbGxlciogbV9jb250cm9sbGVyOwogICAgIGJvb2wgbV9zdG9w
cGVkQnlBY3RpdmVET01PYmplY3Q7CiAgICAgYm9vbCBtX3N0YXJ0ZWQ7CisgICAgVmVjdG9yPFJl
ZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4gPiBtX2ZpbmFsUmVzdWx0czsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FdmVudC5jcHAKaW5kZXggZTJhOGY3YTFmZTA4NmY0
NDUwOGIwZjM0NTk3OTBmMThmOWM1MDdlNi4uMGVhMjA5N2U3NzVlMGViOWJmZWU2NGUwNWM5ODlm
NDM0MTQ5Zjk1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoUmVjb2duaXRpb25FdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXRpb25FdmVudC5jcHAKQEAgLTI5LDYgKzI5LDEwIEBACiAKICNpbmNs
dWRlICJTcGVlY2hSZWNvZ25pdGlvbkV2ZW50LmgiCiAKKyNpbmNsdWRlICJEb2N1bWVudC5oIgor
I2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJUZXh0LmgiCisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogU3BlZWNoUmVjb2duaXRpb25FdmVudEluaXQ6OlNwZWVjaFJlY29nbml0aW9uRXZl
bnRJbml0KCkKQEAgLTUxLDYgKzU1LDExIEBAIFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25F
dmVudD4gU3BlZWNoUmVjb2duaXRpb25FdmVudDo6Y3JlYXRlUmVzdWx0KFBhc3NSZWZQCiAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50KGV2ZW50TmFtZXMoKS5y
ZXN1bHRFdmVudCwgcmVzdWx0LCByZXN1bHRJbmRleCwgcmVzdWx0SGlzdG9yeSkpOwogfQogCitQ
YXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uRXZlbnQ+IFNwZWVjaFJlY29nbml0aW9uRXZlbnQ6
OmNyZWF0ZVJlc3VsdCh1bnNpZ25lZCBsb25nIHJlc3VsdEluZGV4LCBjb25zdCBWZWN0b3I8UmVm
UHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiA+JiByZXN1bHRzKQoreworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU3BlZWNoUmVjb2duaXRpb25FdmVudChldmVudE5hbWVzKCkucmVzdWx0RXZl
bnQsIHJlc3VsdEluZGV4LCByZXN1bHRzKSk7Cit9CisKIFBhc3NSZWZQdHI8U3BlZWNoUmVjb2du
aXRpb25FdmVudD4gU3BlZWNoUmVjb2duaXRpb25FdmVudDo6Y3JlYXRlTm9NYXRjaChQYXNzUmVm
UHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiByZXN1bHQpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50KGV2ZW50TmFtZXMoKS5ub21hdGNoRXZlbnQs
IHJlc3VsdCwgMCwgMCkpOwpAQCAtNjgsMjAgKzc3LDgxIEBAIFNwZWVjaFJlY29nbml0aW9uRXZl
bnQ6OlNwZWVjaFJlY29nbml0aW9uRXZlbnQoKQogCiBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50OjpT
cGVlY2hSZWNvZ25pdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lLCBjb25z
dCBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCiAgICAgOiBFdmVudChl
dmVudE5hbWUsIGluaXRpYWxpemVyKQotICAgICwgbV9yZXN1bHQoaW5pdGlhbGl6ZXIucmVzdWx0
KQogICAgICwgbV9yZXN1bHRJbmRleChpbml0aWFsaXplci5yZXN1bHRJbmRleCkKKyAgICAsIG1f
cmVzdWx0KGluaXRpYWxpemVyLnJlc3VsdCkKICAgICAsIG1fcmVzdWx0SGlzdG9yeShpbml0aWFs
aXplci5yZXN1bHRIaXN0b3J5KQogewogfQogCiBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50OjpTcGVl
Y2hSZWNvZ25pdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lLCBQYXNzUmVm
UHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiByZXN1bHQsIHNob3J0IHJlc3VsdEluZGV4LCBQ
YXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdD4gcmVzdWx0SGlzdG9yeSkKICAg
ICA6IEV2ZW50KGV2ZW50TmFtZSwgLypjYW5CdWJibGU9Ki9mYWxzZSwgLypjYW5jZWxhYmxlPSov
ZmFsc2UpCi0gICAgLCBtX3Jlc3VsdChyZXN1bHQpCiAgICAgLCBtX3Jlc3VsdEluZGV4KHJlc3Vs
dEluZGV4KQorICAgICwgbV9yZXN1bHQocmVzdWx0KQogICAgICwgbV9yZXN1bHRIaXN0b3J5KHJl
c3VsdEhpc3RvcnkpCiB7CiB9CiAKK1NwZWVjaFJlY29nbml0aW9uRXZlbnQ6OlNwZWVjaFJlY29n
bml0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUsIHVuc2lnbmVkIGxvbmcg
cmVzdWx0SW5kZXgsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+
ID4mIHJlc3VsdHMpCisgICAgOiBFdmVudChldmVudE5hbWUsIC8qY2FuQnViYmxlPSovZmFsc2Us
IC8qY2FuY2VsYWJsZT0qL2ZhbHNlKQorICAgICwgbV9yZXN1bHRJbmRleChyZXN1bHRJbmRleCkK
KyAgICAsIG1fcmVzdWx0cyhTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3Q6OmNyZWF0ZShyZXN1
bHRzKSkKK3sKK30KKworU3BlZWNoUmVjb2duaXRpb25FdmVudDo6flNwZWVjaFJlY29nbml0aW9u
RXZlbnQoKQoreworfQorCitzdGF0aWMgUXVhbGlmaWVkTmFtZSBlbW1hUXVhbGlmaWVkTmFtZShj
b25zdCBjaGFyKiBsb2NhbE5hbWUpCit7CisgICAgY29uc3QgY2hhciBlbW1hTmFtZXNwYWNlVXJs
W10gPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMy8wNC9lbW1hIjsKKyAgICByZXR1cm4gUXVhbGlm
aWVkTmFtZSgiZW1tYSIsIGxvY2FsTmFtZSwgZW1tYU5hbWVzcGFjZVVybCk7Cit9CisKK0RvY3Vt
ZW50KiBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50OjplbW1hKCkKK3sKKyAgICBpZiAobV9lbW1hKQor
ICAgICAgICByZXR1cm4gbV9lbW1hLmdldCgpOworCisgICAgUmVmUHRyPERvY3VtZW50PiBkb2N1
bWVudCA9IERvY3VtZW50OjpjcmVhdGUoMCwgS1VSTCgpKTsKKworCisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX3Jlc3VsdHMtPmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgUmVmUHRyPFNw
ZWVjaFJlY29nbml0aW9uUmVzdWx0PiByZXN1bHQgPSBtX3Jlc3VsdHMtPml0ZW0oMCk7CisKKyAg
ICAgICAgUmVmUHRyPEVsZW1lbnQ+IGVtbWFFbGVtZW50ID0gZG9jdW1lbnQtPmNyZWF0ZUVsZW1l
bnQoZW1tYVF1YWxpZmllZE5hbWUoImVtbWEiKSwgZmFsc2UpOworICAgICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKKyAgICAgICAgZW1tYUVsZW1lbnQtPnNldEF0dHJpYnV0ZSgidmVyc2lvbiIs
ICIxLjAiLCBlYyk7CisgICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICBpZiAoZWMpCisgICAg
ICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBSZWZQdHI8RWxlbWVudD4gb25lT2YgPSBkb2N1
bWVudC0+Y3JlYXRlRWxlbWVudChlbW1hUXVhbGlmaWVkTmFtZSgib25lLW9mIiksIGZhbHNlKTsK
KyAgICAgICAgb25lT2YtPnNldEF0dHJpYnV0ZShlbW1hUXVhbGlmaWVkTmFtZSgibWVkaXVtIiks
ICJhY291c3RpYyIpOworICAgICAgICBvbmVPZi0+c2V0QXR0cmlidXRlKGVtbWFRdWFsaWZpZWRO
YW1lKCJtb2RlIiksICJ2b2ljZSIpOworICAgICAgICBvbmVPZi0+c2V0SWRBdHRyaWJ1dGUoIm9u
ZS1vZiIpOworCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzdWx0LT5sZW5ndGgo
KTsgKytpKSB7CisgICAgICAgICAgICBjb25zdCBSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25BbHRl
cm5hdGl2ZT4mIGFsdGVybmF0aXZlID0gcmVzdWx0LT5pdGVtKGkpOworCisgICAgICAgICAgICBS
ZWZQdHI8RWxlbWVudD4gaW50ZXJwcmV0YXRpb24gPSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVudChl
bW1hUXVhbGlmaWVkTmFtZSgiaW50ZXJwcmV0YXRpb24iKSwgZmFsc2UpOworICAgICAgICAgICAg
aW50ZXJwcmV0YXRpb24tPnNldElkQXR0cmlidXRlKFN0cmluZzo6bnVtYmVyKGkgKyAxKSk7Cisg
ICAgICAgICAgICBpbnRlcnByZXRhdGlvbi0+c2V0QXR0cmlidXRlKGVtbWFRdWFsaWZpZWROYW1l
KCJjb25maWRlbmNlIiksIFN0cmluZzo6bnVtYmVyKGFsdGVybmF0aXZlLT5jb25maWRlbmNlKCkp
KTsKKworICAgICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGxpdGVyYWwgPSBkb2N1bWVudC0+Y3Jl
YXRlRWxlbWVudChlbW1hUXVhbGlmaWVkTmFtZSgibGl0ZXJhbCIpLCBmYWxzZSk7CisgICAgICAg
ICAgICBsaXRlcmFsLT5hcHBlbmRDaGlsZChkb2N1bWVudC0+Y3JlYXRlVGV4dE5vZGUoYWx0ZXJu
YXRpdmUtPnRyYW5zY3JpcHQoKSkpOworICAgICAgICAgICAgaW50ZXJwcmV0YXRpb24tPmFwcGVu
ZENoaWxkKGxpdGVyYWwucmVsZWFzZSgpKTsKKyAgICAgICAgICAgIG9uZU9mLT5hcHBlbmRDaGls
ZChpbnRlcnByZXRhdGlvbi5yZWxlYXNlKCkpOworICAgICAgICB9CisKKyAgICAgICAgZW1tYUVs
ZW1lbnQtPmFwcGVuZENoaWxkKG9uZU9mLnJlbGVhc2UoKSk7CisgICAgICAgIGRvY3VtZW50LT5h
cHBlbmRDaGlsZChlbW1hRWxlbWVudC5yZWxlYXNlKCkpOworICAgIH0KKworICAgIG1fZW1tYSA9
IGRvY3VtZW50OworICAgIHJldHVybiBtX2VtbWEuZ2V0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTQ1JJUFRFRF9TUEVFQ0gpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkV2ZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkV2ZW50LmgK
aW5kZXggZDQ0NWMzYThkZGZiODA0N2JlODc5OWI0MGYxYzIxNzk5YzM0YWVmMC4uNmE2MTZhN2Q1
YWQ2NTg3ODYzOWU2ODgwMWVmNDBmMWM0YmZhYzJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FdmVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXZlbnQuaApAQCAtMzYsNiAr
MzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERvY3VtZW50OwogY2xhc3Mg
U3BlZWNoUmVjb2duaXRpb25FcnJvcjsKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uUmVzdWx0Owog
Y2xhc3MgU3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0OwpAQCAtNDMsMjEgKzQ0LDMyIEBAIGNs
YXNzIFNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdDsKIHN0cnVjdCBTcGVlY2hSZWNvZ25pdGlv
bkV2ZW50SW5pdCA6IHB1YmxpYyBFdmVudEluaXQgewogICAgIFNwZWVjaFJlY29nbml0aW9uRXZl
bnRJbml0KCk7CiAKKyAgICAvLyBERVBSRUNBVEVECiAgICAgUmVmUHRyPFNwZWVjaFJlY29nbml0
aW9uUmVzdWx0PiByZXN1bHQ7Ci0gICAgc2hvcnQgcmVzdWx0SW5kZXg7CiAgICAgUmVmUHRyPFNw
ZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdD4gcmVzdWx0SGlzdG9yeTsKKworICAgIHNob3J0IHJl
c3VsdEluZGV4OworICAgIFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3Q+IHJlc3Vs
dHM7CiB9OwogCiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50IDogcHVibGljIEV2ZW50IHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvbkV2ZW50PiBj
cmVhdGUoKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvbkV2ZW50PiBj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgU3BlZWNoUmVjb2duaXRpb25FdmVudElu
aXQmKTsKKyAgICB2aXJ0dWFsIH5TcGVlY2hSZWNvZ25pdGlvbkV2ZW50KCk7CiAKKyAgICAvLyBE
RVBSRUNBVEVECiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25FdmVudD4g
Y3JlYXRlUmVzdWx0KFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+LCBzaG9ydCBy
ZXN1bHRJbmRleCwgUGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3Q+IHJlc3Vs
dEhpc3RvcnkpOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25FdmVu
dD4gY3JlYXRlUmVzdWx0KHVuc2lnbmVkIGxvbmcgcmVzdWx0SW5kZXgsIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+ID4mIHJlc3VsdHMpOwogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uRXZlbnQ+IGNyZWF0ZU5vTWF0Y2goUGFzc1JlZlB0
cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4pOwogCisgICAgdW5zaWduZWQgbG9uZyByZXN1bHRJ
bmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0SW5kZXg7IH0KKyAgICBTcGVlY2hSZWNvZ25p
dGlvblJlc3VsdExpc3QqIHJlc3VsdHMoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdHMuZ2V0KCk7
IH0KKyAgICBEb2N1bWVudCogZW1tYSgpOworCisgICAgLy8gREVQUkVDQVRFRAogICAgIFNwZWVj
aFJlY29nbml0aW9uUmVzdWx0KiByZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdC5nZXQo
KTsgfQotICAgIHNob3J0IHJlc3VsdEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHRJbmRl
eDsgfSAvLyBGSVhNRTogU3BlYyBzYXlzIHRoaXMgc2hvdWxkIGJlIHNob3J0LCBidXQgb3RoZXIg
aW5kaWNlcyBhcmUgdW5zaWduZWQgaW50cy4KICAgICBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExp
c3QqIHJlc3VsdEhpc3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdEhpc3RvcnkuZ2V0KCk7
IH0KIAogICAgIC8vIEV2ZW50CkBAIC02NiwxMSArNzgsMTYgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50KCk7CiAgICAgU3BlZWNoUmVjb2duaXRpb25FdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50SW5pdCYp
OwotICAgIFNwZWVjaFJlY29nbml0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5h
bWUsIFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+LCBzaG9ydCByZXN1bHRJbmRl
eCwgUGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3Q+IHJlc3VsdEhpc3Rvcnkp
OworICAgIFNwZWVjaFJlY29nbml0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5h
bWUsIFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+LCBzaG9ydCByZXN1bHRJbmRl
eCwgUGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3Q+IHJlc3VsdEhpc3Rvcnkp
OyAvLyBGSVhNRTogUmVtb3ZlLgorICAgIFNwZWVjaFJlY29nbml0aW9uRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudE5hbWUsIHVuc2lnbmVkIGxvbmcgcmVzdWx0SW5kZXgsIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+ID4mIHJlc3VsdHMpOwogICAgIGV4
cGxpY2l0IFNwZWVjaFJlY29nbml0aW9uRXZlbnQoUGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlv
bkVycm9yPik7CiAKKyAgICB1bnNpZ25lZCBsb25nIG1fcmVzdWx0SW5kZXg7CisgICAgUmVmUHRy
PFNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdD4gbV9yZXN1bHRzOworICAgIFJlZlB0cjxEb2N1
bWVudD4gbV9lbW1hOworCisgICAgLy8gREVQUkVDQVRFRAogICAgIFJlZlB0cjxTcGVlY2hSZWNv
Z25pdGlvblJlc3VsdD4gbV9yZXN1bHQ7Ci0gICAgc2hvcnQgbV9yZXN1bHRJbmRleDsKICAgICBS
ZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0PiBtX3Jlc3VsdEhpc3Rvcnk7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvbkV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29n
bml0aW9uRXZlbnQuaWRsCmluZGV4IDhlYjc4OWMwYzBjOTUwODdiZDAwNTM3NDEyMTI3NDExZTVj
NjY3MjYuLjU5MmQyMWJkOWYzNGIxYzgxNTZlNjgxZTVjYmJiYTg4MjljZmFmMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXZlbnQu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9u
RXZlbnQuaWRsCkBAIC0yNSw5ICsyNSwxNSBAQAogCiBbCiAgICAgQ29uZGl0aW9uYWw9U0NSSVBU
RURfU1BFRUNILAotICAgIENvbnN0cnVjdG9yVGVtcGxhdGU9RXZlbnQKKyAgICBDb25zdHJ1Y3Rv
clRlbXBsYXRlPUV2ZW50LAorICAgIEN1c3RvbUlzUmVhY2hhYmxlLAorICAgIFY4RGVwZW5kZW50
TGlmZXRpbWUKIF0gaW50ZXJmYWNlIFNwZWVjaFJlY29nbml0aW9uRXZlbnQgOiBFdmVudCB7Cisg
ICAgLy8gREVQUkVDQVRFRAogICAgIFtJbml0aWFsaXplZEJ5RXZlbnRDb25zdHJ1Y3Rvcl0gcmVh
ZG9ubHkgYXR0cmlidXRlIFNwZWVjaFJlY29nbml0aW9uUmVzdWx0IHJlc3VsdDsKLSAgICBbSW5p
dGlhbGl6ZWRCeUV2ZW50Q29uc3RydWN0b3JdIHJlYWRvbmx5IGF0dHJpYnV0ZSBzaG9ydCByZXN1
bHRJbmRleDsKICAgICBbSW5pdGlhbGl6ZWRCeUV2ZW50Q29uc3RydWN0b3JdIHJlYWRvbmx5IGF0
dHJpYnV0ZSBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3QgcmVzdWx0SGlzdG9yeTsKKworICAg
IFtJbml0aWFsaXplZEJ5RXZlbnRDb25zdHJ1Y3Rvcl0gcmVhZG9ubHkgYXR0cmlidXRlIHNob3J0
IHJlc3VsdEluZGV4OworICAgIFtJbml0aWFsaXplZEJ5RXZlbnRDb25zdHJ1Y3Rvcl0gcmVhZG9u
bHkgYXR0cmlidXRlIFNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdCByZXN1bHRzOworICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBEb2N1bWVudCBlbW1hOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVzdWx0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVzdWx0LmNwcAppbmRl
eCBkNTRmMmJmNzRjZjAxNjdhYjBkNWMzOGM0YTFjZjE4OTczZmVlMGM0Li45MjQ4NzQ0ZWY3YTM0
YTNkYTQzYmQwMDU1ZjU1ZTk2M2FlYzM4ODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXN1bHQuY3BwCkBAIC0yOSwx
MCArMjksNiBAQAogCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25SZXN1bHQuaCIKIAotI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIlRleHQu
aCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdDo6flNw
ZWVjaFJlY29nbml0aW9uUmVzdWx0KCkKQEAgLTUyLDUxICs0OCw2IEBAIFNwZWVjaFJlY29nbml0
aW9uQWx0ZXJuYXRpdmUqIFNwZWVjaFJlY29nbml0aW9uUmVzdWx0OjppdGVtKHVuc2lnbmVkIGxv
bmcgaW5kZXgpCiAgICAgcmV0dXJuIG1fYWx0ZXJuYXRpdmVzW2luZGV4XS5nZXQoKTsKIH0KIAot
c3RhdGljIFF1YWxpZmllZE5hbWUgZW1tYVF1YWxpZmllZE5hbWUoY29uc3QgY2hhciogbG9jYWxO
YW1lKQotewotICAgIGNvbnN0IGNoYXIgZW1tYU5hbWVzcGFjZVVybFtdID0gImh0dHA6Ly93d3cu
dzMub3JnLzIwMDMvMDQvZW1tYSI7Ci0gICAgcmV0dXJuIFF1YWxpZmllZE5hbWUoImVtbWEiLCBs
b2NhbE5hbWUsIGVtbWFOYW1lc3BhY2VVcmwpOwotfQotCi1Eb2N1bWVudCogU3BlZWNoUmVjb2du
aXRpb25SZXN1bHQ6OmVtbWEoKQotewotICAgIGlmIChtX2VtbWEpCi0gICAgICAgIHJldHVybiBt
X2VtbWEuZ2V0KCk7Ci0KLSAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gRG9jdW1lbnQ6
OmNyZWF0ZSgwLCBLVVJMKCkpOwotCi0gICAgUmVmUHRyPEVsZW1lbnQ+IGVtbWFFbGVtZW50ID0g
ZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnQoZW1tYVF1YWxpZmllZE5hbWUoImVtbWEiKSwgZmFsc2Up
OwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGVtbWFFbGVtZW50LT5zZXRBdHRyaWJ1
dGUoInZlcnNpb24iLCAiMS4wIiwgZWMpOwotICAgIEFTU0VSVCghZWMpOwotICAgIGlmIChlYykK
LSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBSZWZQdHI8RWxlbWVudD4gb25lT2YgPSBkb2N1bWVu
dC0+Y3JlYXRlRWxlbWVudChlbW1hUXVhbGlmaWVkTmFtZSgib25lLW9mIiksIGZhbHNlKTsKLSAg
ICBvbmVPZi0+c2V0QXR0cmlidXRlKGVtbWFRdWFsaWZpZWROYW1lKCJtZWRpdW0iKSwgImFjb3Vz
dGljIik7Ci0gICAgb25lT2YtPnNldEF0dHJpYnV0ZShlbW1hUXVhbGlmaWVkTmFtZSgibW9kZSIp
LCAidm9pY2UiKTsKLSAgICBvbmVPZi0+c2V0SWRBdHRyaWJ1dGUoIm9uZS1vZiIpOwotCi0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FsdGVybmF0aXZlcy5zaXplKCk7ICsraSkgewotICAg
ICAgICBjb25zdCBSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZT4mIGFsdGVybmF0
aXZlID0gbV9hbHRlcm5hdGl2ZXNbaV07Ci0KLSAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGludGVy
cHJldGF0aW9uID0gZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnQoZW1tYVF1YWxpZmllZE5hbWUoImlu
dGVycHJldGF0aW9uIiksIGZhbHNlKTsKLSAgICAgICAgaW50ZXJwcmV0YXRpb24tPnNldElkQXR0
cmlidXRlKFN0cmluZzo6bnVtYmVyKGkgKyAxKSk7Ci0gICAgICAgIGludGVycHJldGF0aW9uLT5z
ZXRBdHRyaWJ1dGUoZW1tYVF1YWxpZmllZE5hbWUoImNvbmZpZGVuY2UiKSwgU3RyaW5nOjpudW1i
ZXIoYWx0ZXJuYXRpdmUtPmNvbmZpZGVuY2UoKSkpOwotCi0gICAgICAgIFJlZlB0cjxFbGVtZW50
PiBsaXRlcmFsID0gZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnQoZW1tYVF1YWxpZmllZE5hbWUoImxp
dGVyYWwiKSwgZmFsc2UpOwotICAgICAgICBsaXRlcmFsLT5hcHBlbmRDaGlsZChkb2N1bWVudC0+
Y3JlYXRlVGV4dE5vZGUoYWx0ZXJuYXRpdmUtPnRyYW5zY3JpcHQoKSkpOwotICAgICAgICBpbnRl
cnByZXRhdGlvbi0+YXBwZW5kQ2hpbGQobGl0ZXJhbC5yZWxlYXNlKCkpOwotICAgICAgICBvbmVP
Zi0+YXBwZW5kQ2hpbGQoaW50ZXJwcmV0YXRpb24ucmVsZWFzZSgpKTsKLSAgICB9Ci0KLSAgICBl
bW1hRWxlbWVudC0+YXBwZW5kQ2hpbGQob25lT2YucmVsZWFzZSgpKTsKLSAgICBkb2N1bWVudC0+
YXBwZW5kQ2hpbGQoZW1tYUVsZW1lbnQucmVsZWFzZSgpKTsKLQotICAgIG1fZW1tYSA9IGRvY3Vt
ZW50OwotICAgIHJldHVybiBtX2VtbWEuZ2V0KCk7Ci19Ci0KIFNwZWVjaFJlY29nbml0aW9uUmVz
dWx0OjpTcGVlY2hSZWNvZ25pdGlvblJlc3VsdChjb25zdCBWZWN0b3I8UmVmUHRyPFNwZWVjaFJl
Y29nbml0aW9uQWx0ZXJuYXRpdmU+ID4mIGFsdGVybmF0aXZlcywgYm9vbCBmaW5hbCkKICAgICA6
IG1fYWx0ZXJuYXRpdmVzKGFsdGVybmF0aXZlcykKICAgICAsIG1fZmluYWwoZmluYWwpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJl
c3VsdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25S
ZXN1bHQuaAppbmRleCAxOGY3NmUxNDdkNDdiNGUzMGE4M2QyNWFjNmRiNGIyYzA5NmFiMWI2Li43
NGNjN2IzMDkyZGY1NmExNDU5MGExZTYxZTg2ZTMzNzQyOWRkYWJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlc3VsdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVzdWx0LmgK
QEAgLTM0LDggKzM0LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBEb2N1bWVu
dDsKLQogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25SZXN1bHQgOiBwdWJsaWMgUmVmQ291bnRlZDxT
cGVlY2hSZWNvZ25pdGlvblJlc3VsdD4gewogcHVibGljOgogICAgIH5TcGVlY2hSZWNvZ25pdGlv
blJlc3VsdCgpOwpAQCAtNDMsMTUgKzQxLDEzIEBAIHB1YmxpYzoKIAogICAgIHVuc2lnbmVkIGxv
bmcgbGVuZ3RoKCkgeyByZXR1cm4gbV9hbHRlcm5hdGl2ZXMuc2l6ZSgpOyB9CiAgICAgU3BlZWNo
UmVjb2duaXRpb25BbHRlcm5hdGl2ZSogaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBi
b29sIGZpbmFsKCkgeyByZXR1cm4gbV9maW5hbDsgfQotICAgIERvY3VtZW50KiBlbW1hKCk7Cisg
ICAgYm9vbCBpc0ZpbmFsKCkgeyByZXR1cm4gbV9maW5hbDsgfQogCiBwcml2YXRlOgogICAgIFNw
ZWVjaFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFZlY3RvcjxSZWZQdHI8U3BlZWNoUmVjb2duaXRp
b25BbHRlcm5hdGl2ZT4gPiYsIGJvb2wgZmluYWwpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxTcGVl
Y2hSZWNvZ25pdGlvbkFsdGVybmF0aXZlPiA+IG1fYWx0ZXJuYXRpdmVzOwogICAgIGJvb2wgbV9m
aW5hbDsKLSAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fZW1tYTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uUmVzdWx0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFJlY29nbml0aW9uUmVzdWx0LmlkbAppbmRleCA2MDlkNmVhODdiN2ZkZGFlMDQ2OGE3NjYw
ZmIwOTY3MjFmZmRjMTY2Li5iNzQ5YWVkNzc3Mzg0MjgxNDQ0M2UzNTNkMmQ4ZmZiZDlmODM0NmU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvblJlc3VsdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
UmVjb2duaXRpb25SZXN1bHQuaWRsCkBAIC0yNSwxMiArMjUsOSBAQAogCiBbCiAgICAgQ29uZGl0
aW9uYWw9U0NSSVBURURfU1BFRUNILAotICAgIEN1c3RvbUlzUmVhY2hhYmxlLAotICAgIEluZGV4
ZWRHZXR0ZXIsCi0gICAgVjhEZXBlbmRlbnRMaWZldGltZQorICAgIEluZGV4ZWRHZXR0ZXIKIF0g
aW50ZXJmYWNlIFNwZWVjaFJlY29nbml0aW9uUmVzdWx0IHsKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CiAgICAgU3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2
ZSBpdGVtKGluIFtJc0luZGV4XSB1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICByZWFkb25seSBh
dHRyaWJ1dGUgYm9vbGVhbiBmaW5hbDsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRG9jdW1lbnQg
ZW1tYTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBpc0ZpbmFsOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQppbmRleCBkOTVhMTdkOGRkYjA0YjhmNmEyYzA1MjViYzk3M2QzZmU5ODYwZjQzLi45
M2NhNDU1ZDBlY2Q2ODViMzE0ODkwZTljYjc2MGRlOGI0ZDAxM2ZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CkBAIC0yNDI5LDcgKzI0MjksNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFNWR1BhdGhTZWdDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20v
VjhTY3JpcHRQcm9maWxlQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4U2NyaXB0UHJvZmlsZU5vZGVDdXN0b20uY3BwJywKLSAgICAgICAgICAgICdiaW5kaW5n
cy92OC9jdXN0b20vVjhTcGVlY2hSZWNvZ25pdGlvblJlc3VsdEN1c3RvbS5jcHAnLAorICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNwZWVjaFJlY29nbml0aW9uRXZlbnRDdXN0b20u
Y3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhTdG9yYWdlQ3VzdG9tLmNw
cCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3R5bGVTaGVldEN1c3RvbS5j
cHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0eWxlU2hlZXRMaXN0Q3Vz
dG9tLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhTcGVlY2hSZWNvZ25pdGlvbkV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFNwZWVjaFJlY29nbml0aW9uRXZlbnRDdXN0b20uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmFmYTQ2MWUxZmZkYWIyMDkxOWI1ZWIzYTNhMjdkYmQ5MmE1MDg3MGMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTcGVlY2hSZWNvZ25p
dGlvbkV2ZW50Q3VzdG9tLmNwcApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNDUklQVEVEX1NQRUVDSCkKKworI2luY2x1ZGUgIlY4
U3BlZWNoUmVjb2duaXRpb25FdmVudC5oIgorCisjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25F
dmVudC5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4R0NDb250cm9sbGVy
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCogVjhTcGVlY2hSZWNvZ25pdGlvbkV2
ZW50OjpvcGFxdWVSb290Rm9yR0Modm9pZCogb2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2ODo6T2Jq
ZWN0PiB3cmFwcGVyKQoreworICAgIEFTU0VSVChWOFNwZWVjaFJlY29nbml0aW9uRXZlbnQ6Okhh
c0luc3RhbmNlKHdyYXBwZXIpKTsKKyAgICBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50KiBpbXBsID0g
c3RhdGljX2Nhc3Q8U3BlZWNoUmVjb2duaXRpb25FdmVudCo+KG9iamVjdCk7CisgICAgcmV0dXJu
IFY4R0NDb250cm9sbGVyOjpvcGFxdWVSb290Rm9yR0MoaW1wbC0+ZW1tYSgpKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNDUklQVEVEX1NQRUVDSCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNwZWVjaFJl
Y29nbml0aW9uUmVzdWx0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFNwZWVjaFJlY29nbml0aW9uUmVzdWx0Q3VzdG9tLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZWYxNDU2NWZjZTEyYTU0N2IyOTI1Y2Q5OTM2NTg5ZTgxMjEyMDg0Yy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTcGVlY2hSZWNvZ25pdGlvblJlc3VsdEN1c3RvbS5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotCi0jaWYgRU5BQkxFKFNDUklQVEVEX1NQRUVDSCkKLQotI2luY2x1ZGUgIlY4U3Bl
ZWNoUmVjb2duaXRpb25SZXN1bHQuaCIKLQotI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUmVz
dWx0LmgiCi0jaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVkZSAiVjhHQ0NvbnRyb2xsZXIu
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkKiBWOFNwZWVjaFJlY29nbml0aW9uUmVz
dWx0OjpvcGFxdWVSb290Rm9yR0Modm9pZCogb2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2ODo6T2Jq
ZWN0PiB3cmFwcGVyKQotewotICAgIEFTU0VSVChWOFNwZWVjaFJlY29nbml0aW9uUmVzdWx0OjpI
YXNJbnN0YW5jZSh3cmFwcGVyKSk7Ci0gICAgU3BlZWNoUmVjb2duaXRpb25SZXN1bHQqIGltcGwg
PSBzdGF0aWNfY2FzdDxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCo+KG9iamVjdCk7Ci0gICAgcmV0
dXJuIFY4R0NDb250cm9sbGVyOjpvcGFxdWVSb290Rm9yR0MoaW1wbC0+ZW1tYSgpKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFNDUklQVEVEX1NQRUVD
SCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFJl
Y29nbml6ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVj
aFJlY29nbml6ZXJDbGllbnQuaAppbmRleCBlYmRjMGMxNzM5MjFmNTRjOWQ0MDhhNjcwMzE5MTdl
YWMyZGVkNDkzLi4wNTZjNGQzNTg1ZTk3MWRjNGMxZDE2MmUzYjkwZmNmZTM5ZDk0MzIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hSZWNvZ25pemVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoUmVj
b2duaXplckNsaWVudC5oCkBAIC02OCw4ICs2OCwxNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGRpZEVuZEF1ZGlvKGNvbnN0IFdlYlNwZWVjaFJlY29nbml0aW9uSGFuZGxlJikgPSAwOwog
CiAgICAgLy8gVG8gYmUgY2FsbGVkIHdoZW4gdGhlIHNwZWVjaCByZWNvZ25pemVyIHJldHVybnMg
YSByZXN1bHQuCisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdoZW4gd2UgaGF2ZSBtb3ZlZCBv
dmVyIHRvIG9ubHkgdXNlIHRoZSBmdW5jdGlvbiBiZWxvdy4KICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZVJlc3VsdChjb25zdCBXZWJTcGVlY2hSZWNvZ25pdGlvbkhhbmRsZSYsIGNvbnN0IFdl
YlNwZWVjaFJlY29nbml0aW9uUmVzdWx0JiwgdW5zaWduZWQgbG9uZyByZXN1bHRJbmRleCwgY29u
c3QgV2ViVmVjdG9yPFdlYlNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiYgcmVzdWx0SGlzdG9yeSkg
PSAwOwogCisgICAgLy8gVG8gYmUgY2FsbGVkIHdoZW4gdGhlIHNwZWVjaCByZWNvZ25pemVyIHBy
b3ZpZGVzIG5ldyByZXN1bHRzLgorICAgIC8vIC0gbmV3RmluYWxSZXN1bHRzIGNvbnRhaW5zIHpl
cm8gb3IgbW9yZSBmaW5hbCByZXN1bHRzIHRoYXQgYXJlIG5ldyBzaW5jZQorICAgIC8vIHRoZSBs
YXN0IHRpbWUgdGhlIGZ1bmN0aW9ucyB3YXMgY2FsbGVkLgorICAgIC8vIC0gY3VycmVudEludGVy
aW1SZXN1bHRzIGNvbnRhaW5zIHplcm8gb3IgbW9yZSBpbnRlaXJtIHJlc3VsdHMgdGhhdAorICAg
IC8vIHJlcGxhY2UgdGhlIGludGVyaW0gcmVzdWx0cyB0aGF0IHdlcmUgcmVwb3J0ZWQgdGhlIGxh
c3QgdGltZSB0aGlzCisgICAgLy8gZnVuY3Rpb24gd2FzIGNhbGxlZC4KKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZVJlc3VsdHMoY29uc3QgV2ViU3BlZWNoUmVjb2duaXRpb25IYW5kbGUmLCBj
b25zdCBXZWJWZWN0b3I8V2ViU3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+JiBuZXdGaW5hbFJlc3Vs
dHMsIGNvbnN0IFdlYlZlY3RvcjxXZWJTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4mIGN1cnJlbnRJ
bnRlcmltUmVzdWx0cykgPSAwOworCiAgICAgLy8gVG8gYmUgY2FsbGVkIHdoZW4gdGhlIHNwZWVj
aCByZWNvZ25pemVyIHJldHVybnMgYSBmaW5hbCByZXN1bHQgd2l0aCBubwogICAgIC8vIHJlY29n
bml6aW9uIGh5cG90aGVzaXMuCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVOb01hdGNoKGNv
bnN0IFdlYlNwZWVjaFJlY29nbml0aW9uSGFuZGxlJiwgY29uc3QgV2ViU3BlZWNoUmVjb2duaXRp
b25SZXN1bHQmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9T
cGVlY2hSZWNvZ25pdGlvbkNsaWVudFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1NwZWVjaFJlY29nbml0aW9uQ2xpZW50UHJveHkuY3BwCmluZGV4IDA4Mjc0N2NkYjljY2Nj
NmZmYmRkMzQxMTU1MzVlYzg4OTQzZmRmNTAuLmY3NDg1ZWQ5YjM2MjY5Y2RiYzYyYjliYzA2YTFk
MWZhM2I1MWRkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVj
aFJlY29nbml0aW9uQ2xpZW50UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1NwZWVjaFJlY29nbml0aW9uQ2xpZW50UHJveHkuY3BwCkBAIC0xMTMsNiArMTEzLDIxIEBA
IHZvaWQgU3BlZWNoUmVjb2duaXRpb25DbGllbnRQcm94eTo6ZGlkUmVjZWl2ZVJlc3VsdChjb25z
dCBXZWJTcGVlY2hSZWNvZ25pdGlvbkhhCiAKIH0KIAordm9pZCBTcGVlY2hSZWNvZ25pdGlvbkNs
aWVudFByb3h5OjpkaWRSZWNlaXZlUmVzdWx0cyhjb25zdCBXZWJTcGVlY2hSZWNvZ25pdGlvbkhh
bmRsZSYgaGFuZGxlLCBjb25zdCBXZWJWZWN0b3I8V2ViU3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+
JiBuZXdGaW5hbFJlc3VsdHMsIGNvbnN0IFdlYlZlY3RvcjxXZWJTcGVlY2hSZWNvZ25pdGlvblJl
c3VsdD4mIGN1cnJlbnRJbnRlcmltUmVzdWx0cykKK3sKKyAgICBSZWZQdHI8U3BlZWNoUmVjb2du
aXRpb24+IHJlY29nbml0aW9uID0gUGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvbj4oaGFuZGxl
KTsKKworICAgIFZlY3RvcjxSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+ID4gZmluYWxS
ZXN1bHRzVmVjdG9yKG5ld0ZpbmFsUmVzdWx0cy5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbmV3RmluYWxSZXN1bHRzLnNpemUoKTsgKytpKQorICAgICAgICBmaW5hbFJlc3Vs
dHNWZWN0b3JbaV0gPSBzdGF0aWNfY2FzdDxQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVz
dWx0PiA+KG5ld0ZpbmFsUmVzdWx0c1tpXSk7CisKKyAgICBWZWN0b3I8UmVmUHRyPFNwZWVjaFJl
Y29nbml0aW9uUmVzdWx0PiA+IGludGVyaW1SZXN1bHRzVmVjdG9yKGN1cnJlbnRJbnRlcmltUmVz
dWx0cy5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY3VycmVudEludGVyaW1S
ZXN1bHRzLnNpemUoKTsgKytpKQorICAgICAgICBpbnRlcmltUmVzdWx0c1ZlY3RvcltpXSA9IHN0
YXRpY19jYXN0PFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+ID4oY3VycmVudElu
dGVyaW1SZXN1bHRzW2ldKTsKKworICAgIHJlY29nbml0aW9uLT5kaWRSZWNlaXZlUmVzdWx0cyhm
aW5hbFJlc3VsdHNWZWN0b3IsIGludGVyaW1SZXN1bHRzVmVjdG9yKTsKK30KKwogdm9pZCBTcGVl
Y2hSZWNvZ25pdGlvbkNsaWVudFByb3h5OjpkaWRSZWNlaXZlTm9NYXRjaChjb25zdCBXZWJTcGVl
Y2hSZWNvZ25pdGlvbkhhbmRsZSYgaGFuZGxlLCBjb25zdCBXZWJTcGVlY2hSZWNvZ25pdGlvblJl
c3VsdCYgcmVzdWx0KQogewogICAgIFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvbj4gcmVjb2duaXRp
b24gPSBQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uPihoYW5kbGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoUmVjb2duaXRpb25DbGllbnRQcm94eS5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoUmVjb2duaXRpb25DbGllbnRQcm94
eS5oCmluZGV4IDYxOTRmNjYwMDdhZjJiZjc2MjE5OGJlZmEzMjJkYzk4MTVmZTc2M2EuLjE1OTU4
ZDRmYmQ3NjE2NjZhOGJlMzY2Y2ZlZWZmZThkN2E1ZWFhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaFJlY29nbml0aW9uQ2xpZW50UHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hSZWNvZ25pdGlvbkNsaWVudFByb3h5LmgK
QEAgLTU2LDYgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRTb3VuZChj
b25zdCBXZWJTcGVlY2hSZWNvZ25pdGlvbkhhbmRsZSYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRFbmRBdWRpbyhjb25zdCBXZWJTcGVlY2hSZWNvZ25pdGlvbkhhbmRsZSYpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzdWx0KGNvbnN0IFdlYlNwZWVjaFJl
Y29nbml0aW9uSGFuZGxlJiwgY29uc3QgV2ViU3BlZWNoUmVjb2duaXRpb25SZXN1bHQmLCB1bnNp
Z25lZCBsb25nIHJlc3VsdEluZGV4LCBjb25zdCBXZWJWZWN0b3I8V2ViU3BlZWNoUmVjb2duaXRp
b25SZXN1bHQ+JiByZXN1bHRIaXN0b3J5KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZVJlc3VsdHMoY29uc3QgV2ViU3BlZWNoUmVjb2duaXRpb25IYW5kbGUmLCBjb25zdCBX
ZWJWZWN0b3I8V2ViU3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+JiBuZXdGaW5hbFJlc3VsdHMsIGNv
bnN0IFdlYlZlY3RvcjxXZWJTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4mIGN1cnJlbnRJbnRlcmlt
UmVzdWx0cykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVOb01hdGNoKGNv
bnN0IFdlYlNwZWVjaFJlY29nbml0aW9uSGFuZGxlJiwgY29uc3QgV2ViU3BlZWNoUmVjb2duaXRp
b25SZXN1bHQmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUVycm9yKGNv
bnN0IFdlYlNwZWVjaFJlY29nbml0aW9uSGFuZGxlJiwgY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdl
LCBXZWJTcGVlY2hSZWNvZ25pemVyQ2xpZW50OjpFcnJvckNvZGUpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRTdGFydChjb25zdCBXZWJTcGVlY2hSZWNvZ25pdGlvbkhhbmRsZSYpIE9W
RVJSSURFOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDQwYmU1ZGUyY2FiY2U4OTZhNTk1YTY2ZjViZGMxZjk1NWE0OGI3NzYuLjJhZTIzYzlkZThj
NWY5NDMyY2U5NWExMjk0ZTRmY2NkNWI3ZTNmZTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0xMS0yOSAgVG9t
bXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBTcGVlY2ggUmVj
b2duaXRpb24gQVBJOiBVcGRhdGUgU3BlZWNoUmVjb2duaXRpb25FdmVudCB0byBtYXRjaCB0aGUg
c3BlY2lmaWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTAzNDA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQ2hhbmdpbmcgdGhlIG1vY2sgdG8gdXNlIHRoZSBuZXcgcmVzdWx0cyBkZWxpdmVyeSBB
UEkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVj
b2duaXplci5jcHA6CisKIDIwMTItMTEtMjkgIFN1ZGFyc2FuYSBOYWdpbmVuaSAgPHN1ZGFyc2Fu
YS5uYWdpbmVuaUBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBBZGQgc3VwcG9ydCBm
b3IgUGxhdGZvcm1XZWJWaWV3OjpzaW11bGF0ZU1vdXNlTW92ZSgpIGluIFRlc3RXZWJLaXRBUEkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hS
ZWNvZ25pemVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVl
Y2hSZWNvZ25pemVyLmNwcAppbmRleCA4ODE0M2MwYmE4ODRiMzNmZGU0OTBiZTFjM2E2NWJhZWUx
NzZlZDQ2Li40MGQzY2I0YmFhNzBkNDVkZDRkZGUyMjNlMjdmNTIyYjk3YWJkNTNjIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVjb2duaXpl
ci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJl
Y29nbml6ZXIuY3BwCkBAIC02OSwxMCArNjksMTEgQEAgcHVibGljOgogICAgICAgICBXZWJWZWN0
b3I8ZmxvYXQ+IGNvbmZpZGVuY2VzKHN0YXRpY19jYXN0PHNpemVfdD4oMSkpOwogICAgICAgICB0
cmFuc2NyaXB0c1swXSA9IG1fdHJhbnNjcmlwdDsKICAgICAgICAgY29uZmlkZW5jZXNbMF0gPSBt
X2NvbmZpZGVuY2U7Ci0gICAgICAgIFdlYlNwZWVjaFJlY29nbml0aW9uUmVzdWx0IHJlczsKLSAg
ICAgICAgcmVzLmFzc2lnbih0cmFuc2NyaXB0cywgY29uZmlkZW5jZXMsIHRydWUpOworICAgICAg
ICBXZWJWZWN0b3I8V2ViU3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+IGZpbmFsUmVzdWx0cyhzdGF0
aWNfY2FzdDxzaXplX3Q+KDEpKTsKKyAgICAgICAgV2ViVmVjdG9yPFdlYlNwZWVjaFJlY29nbml0
aW9uUmVzdWx0PiBpbnRlcmltUmVzdWx0czsKKyAgICAgICAgZmluYWxSZXN1bHRzWzBdLmFzc2ln
bih0cmFuc2NyaXB0cywgY29uZmlkZW5jZXMsIHRydWUpOwogCi0gICAgICAgIG1fcmVjb2duaXpl
ci0+Y2xpZW50KCktPmRpZFJlY2VpdmVSZXN1bHQobV9yZWNvZ25pemVyLT5oYW5kbGUoKSwgcmVz
LCAwLCBXZWJWZWN0b3I8V2ViU3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+KCkpOworICAgICAgICBt
X3JlY29nbml6ZXItPmNsaWVudCgpLT5kaWRSZWNlaXZlUmVzdWx0cyhtX3JlY29nbml6ZXItPmhh
bmRsZSgpLCBmaW5hbFJlc3VsdHMsIGludGVyaW1SZXN1bHRzKTsKICAgICB9CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggMTgwMWNmNDQ3ZTlmZDFjZjU1Yzk4ODM2NmQwYzg5NzliNDE3ZDVkYy4uMTMwNjhh
ZjVjMDgzOTAxYWIyMjg5OGM1MzllMmMzNzIzMTczZWEyNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDEyLTExLTI5ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisg
ICAgICAgIFNwZWVjaCBSZWNvZ25pdGlvbiBBUEk6IFVwZGF0ZSBTcGVlY2hSZWNvZ25pdGlvbkV2
ZW50IHRvIG1hdGNoIHRoZSBzcGVjaWZpY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM0MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGluZyB0ZXN0cy4KKworICAgICAgICAqIGZhc3Qv
c3BlZWNoL3NjcmlwdGVkL2VtbWEtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qvc3BlZWNo
L3NjcmlwdGVkL2VtbWEuaHRtbDoKKyAgICAgICAgKiBmYXN0L3NwZWVjaC9zY3JpcHRlZC9zcGVl
Y2hyZWNvZ25pdGlvbi1iYXNpY3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qvc3BlZWNo
L3NjcmlwdGVkL3NwZWVjaHJlY29nbml0aW9uLWJhc2ljcy5odG1sOgorCiAyMDEyLTExLTI5ICBL
d2FuZ1lvbmcgQ2hvaSAgPGt5MC5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIFJl
bW92ZSBkdXBsaWNhdGVkIGVudHJpZXMgZnJvbSBlZmwtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3NjcmlwdGVkL2VtbWEtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0ZWQvZW1tYS1leHBlY3RlZC50eHQK
aW5kZXggZmMzZmJhZWEwYWMxYmJhOTdiN2JlZjA0MTc0MWQwZTk4OWZlZjMzOS4uMGZmYzE2NDc5
ZDA5ZjU5Mjc2NzljOTllZTA5MzkwMGMwMGQwM2ZiMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9zcGVlY2gvc2NyaXB0ZWQvZW1tYS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zcGVlY2gvc2NyaXB0ZWQvZW1tYS1leHBlY3RlZC50eHQKQEAgLTEwLDkgKzEwLDkgQEAg
b25hdWRpb3N0YXJ0CiBvbnNvdW5kc3RhcnQKIG9uc3BlZWNoc3RhcnQKIG9ucmVzdWx0Ci1QQVNT
IGV2ZW50LnJlc3VsdC5lbW1hLmNoaWxkTm9kZXMubGVuZ3RoIGlzIDEKLVBBU1MgZXZlbnQucmVz
dWx0LmVtbWEuZmlyc3RDaGlsZC5ub2RlTmFtZSBpcyAiZW1tYTplbW1hIgotd2luZG93LmVtbWEg
PSBldmVudC5yZXN1bHQuZW1tYS5maXJzdENoaWxkCitQQVNTIGV2ZW50LmVtbWEuY2hpbGROb2Rl
cy5sZW5ndGggaXMgMQorUEFTUyBldmVudC5lbW1hLmZpcnN0Q2hpbGQubm9kZU5hbWUgaXMgImVt
bWE6ZW1tYSIKK3dpbmRvdy5lbW1hID0gZXZlbnQuZW1tYS5maXJzdENoaWxkCiBQQVNTIGVtbWEu
Z2V0QXR0cmlidXRlKCJ2ZXJzaW9uIikgaXMgIjEuMCIKIFBBU1MgZW1tYS5jaGlsZE5vZGVzLmxl
bmd0aCBpcyAxCiBQQVNTIGVtbWEuZmlyc3RDaGlsZC5ub2RlTmFtZSBpcyAiZW1tYTpvbmUtb2Yi
CkBAIC0zOCw5ICszOCw5IEBAIHdpbmRvdy5lbW1hID0gbnVsbAogd2luZG93Lm9uZW9mID0gbnVs
bAogd2luZG93LmludGVycHJldGF0aW9uID0gbnVsbAogd2luZG93LmxpdGVyYWwgPSBudWxsCi1l
dmVudC5yZXN1bHQuZW1tYS5jdXN0b21Qcm9wZXJ0eSA9IDQyCitldmVudC5lbW1hLmN1c3RvbVBy
b3BlcnR5ID0gNDIKIGdjKCkKLVBBU1MgZXZlbnQucmVzdWx0LmVtbWEuY3VzdG9tUHJvcGVydHkg
aXMgNDIKK1BBU1MgZXZlbnQuZW1tYS5jdXN0b21Qcm9wZXJ0eSBpcyA0Mgogb25zcGVlY2hlbmQK
IG9uc291bmRlbmQKIG9uYXVkaW9lbmQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3Bl
ZWNoL3NjcmlwdGVkL2VtbWEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3NjcmlwdGVk
L2VtbWEuaHRtbAppbmRleCA2ODMxNDQzYWMzMTAxYWNhNDcxMDMxNTc5M2U2MzU1YmIzM2QzZDc0
Li42M2IyY2Y4NzdmYzc4MjEyOWI2NGU4MzZlYTMyN2IzN2NmODk1NGUxIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9lbW1hLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9zcGVlY2gvc2NyaXB0ZWQvZW1tYS5odG1sCkBAIC0yNyw5ICsyNyw5IEBAIGZ1bmN0
aW9uIGVtbWFUZXN0KCkgewogCiAgICAgci5vbnJlc3VsdCA9IGZ1bmN0aW9uKCkgewogICAgICAg
ICBkZWJ1Zygnb25yZXN1bHQnKTsKLSAgICAgICAgc2hvdWxkQmUoJ2V2ZW50LnJlc3VsdC5lbW1h
LmNoaWxkTm9kZXMubGVuZ3RoJywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCdldmVudC5yZXN1bHQuZW1tYS5maXJzdENoaWxkLm5vZGVOYW1lJywgJ2VtbWE6ZW1tYScpOwot
ICAgICAgICBldmFsQW5kTG9nKCd3aW5kb3cuZW1tYSA9IGV2ZW50LnJlc3VsdC5lbW1hLmZpcnN0
Q2hpbGQnKTsKKyAgICAgICAgc2hvdWxkQmUoJ2V2ZW50LmVtbWEuY2hpbGROb2Rlcy5sZW5ndGgn
LCAnMScpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2V2ZW50LmVtbWEuZmlyc3RD
aGlsZC5ub2RlTmFtZScsICdlbW1hOmVtbWEnKTsKKyAgICAgICAgZXZhbEFuZExvZygnd2luZG93
LmVtbWEgPSBldmVudC5lbW1hLmZpcnN0Q2hpbGQnKTsKICAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdlbW1hLmdldEF0dHJpYnV0ZSgidmVyc2lvbiIpJywgJzEuMCcpOwogCiAgICAgICAg
IHNob3VsZEJlKCdlbW1hLmNoaWxkTm9kZXMubGVuZ3RoJywgJzEnKTsKQEAgLTU4LDkgKzU4LDkg
QEAgZnVuY3Rpb24gZW1tYVRlc3QoKSB7CiAgICAgICAgIGV2YWxBbmRMb2coJ3dpbmRvdy5vbmVv
ZiA9IG51bGwnKTsKICAgICAgICAgZXZhbEFuZExvZygnd2luZG93LmludGVycHJldGF0aW9uID0g
bnVsbCcpOwogICAgICAgICBldmFsQW5kTG9nKCd3aW5kb3cubGl0ZXJhbCA9IG51bGwnKTsKLSAg
ICAgICAgZXZhbEFuZExvZygnZXZlbnQucmVzdWx0LmVtbWEuY3VzdG9tUHJvcGVydHkgPSA0Micp
OworICAgICAgICBldmFsQW5kTG9nKCdldmVudC5lbW1hLmN1c3RvbVByb3BlcnR5ID0gNDInKTsK
ICAgICAgICAgZXZhbEFuZExvZygnZ2MoKScpOwotICAgICAgICBzaG91bGRCZSgnZXZlbnQucmVz
dWx0LmVtbWEuY3VzdG9tUHJvcGVydHknLCAnNDInKTsKKyAgICAgICAgc2hvdWxkQmUoJ2V2ZW50
LmVtbWEuY3VzdG9tUHJvcGVydHknLCAnNDInKTsKICAgICB9CiAKICAgICByLm9uZW5kID0gZnVu
Y3Rpb24oKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9z
cGVlY2hyZWNvZ25pdGlvbi1iYXNpY3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9z
cGVlY2gvc2NyaXB0ZWQvc3BlZWNocmVjb2duaXRpb24tYmFzaWNzLWV4cGVjdGVkLnR4dAppbmRl
eCA0MTJlZDJiNGQ5ZjMzMDkwODQ2YjA2Zjg0YzEyMjYxNzEzYmNmYjJhLi44OTMzZWNmZTk4Y2U4
Nzg2MjA0MWNiOTIxZTIyMzlhNjE0ZDU2MTg0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L3NwZWVjaC9zY3JpcHRlZC9zcGVlY2hyZWNvZ25pdGlvbi1iYXNpY3MtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3NjcmlwdGVkL3NwZWVjaHJlY29nbml0aW9uLWJh
c2ljcy1leHBlY3RlZC50eHQKQEAgLTE3LDkgKzE3LDExIEBAIG9uc3BlZWNoc3RhcnQKIFBBU1Mg
Y291bnQgaXMgMwogb25yZXN1bHQKIFBBU1MgY291bnQgaXMgNAotUEFTUyBldmVudC5yZXN1bHQu
bGVuZ3RoIGlzIDEKLVBBU1MgZXZlbnQucmVzdWx0Lml0ZW0oMCkudHJhbnNjcmlwdCBpcyAiaGVs
bG8sIHdvcmxkIgotUEFTUyBldmVudC5yZXN1bHQuaXRlbSgwKS5jb25maWRlbmNlIGlzIHdpdGhp
biAwLjAwMSBvZiAwLjQyCitQQVNTIGV2ZW50LnJlc3VsdHMubGVuZ3RoIGlzIDEKK1BBU1MgZXZl
bnQucmVzdWx0c1swXS5sZW5ndGggaXMgMQorUEFTUyBldmVudC5yZXN1bHRzWzBdLmlzRmluYWwg
aXMgdHJ1ZQorUEFTUyBldmVudC5yZXN1bHRzWzBdLml0ZW0oMCkudHJhbnNjcmlwdCBpcyAiaGVs
bG8sIHdvcmxkIgorUEFTUyBldmVudC5yZXN1bHRzWzBdLml0ZW0oMCkuY29uZmlkZW5jZSBpcyB3
aXRoaW4gMC4wMDEgb2YgMC40Mgogb25zcGVlY2hlbmQKIFBBU1MgY291bnQgaXMgNQogb25zb3Vu
ZGVuZApAQCAtNDAsNyArNDIsNyBAQCBvbnNwZWVjaHN0YXJ0CiBQQVNTIGNvdW50IGlzIDMKIG9u
bm9tYXRjaAogUEFTUyBjb3VudCBpcyA0Ci1QQVNTIGV2ZW50LnJlc3VsdCBpcyBudWxsCitQQVNT
IGV2ZW50LnJlc3VsdHMgaXMgbnVsbAogb25zcGVlY2hlbmQKIFBBU1MgY291bnQgaXMgNQogb25z
b3VuZGVuZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0ZWQvc3Bl
ZWNocmVjb2duaXRpb24tYmFzaWNzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zY3Jp
cHRlZC9zcGVlY2hyZWNvZ25pdGlvbi1iYXNpY3MuaHRtbAppbmRleCAxMTkxOTg5NDgxMzk3M2Uy
ZDE5YjVmMDcyMDg0OGYwMmU1MmY3OGEyLi5hMTI3NGFkY2RkZjAzMzZkMjYxMTljMzQ0Y2YyNjJi
OWVhNGVhYzdlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9z
cGVlY2hyZWNvZ25pdGlvbi1iYXNpY3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVj
aC9zY3JpcHRlZC9zcGVlY2hyZWNvZ25pdGlvbi1iYXNpY3MuaHRtbApAQCAtMjksOSArMjksMTEg
QEAgZnVuY3Rpb24gb25lTWF0Y2hUZXN0KCkgewogICAgICAgICBkZWJ1Zygnb25yZXN1bHQnKTsK
ICAgICAgICAgc2hvdWxkQmUoJ2NvdW50JywgJzQnKTsKICAgICAgICAgKytjb3VudDsKLSAgICAg
ICAgc2hvdWxkQmUoJ2V2ZW50LnJlc3VsdC5sZW5ndGgnLCAnMScpOwotICAgICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ2V2ZW50LnJlc3VsdC5pdGVtKDApLnRyYW5zY3JpcHQnLCAnaGVsbG8s
IHdvcmxkJyk7Ci0gICAgICAgIHNob3VsZEJlQ2xvc2VUbygnZXZlbnQucmVzdWx0Lml0ZW0oMCku
Y29uZmlkZW5jZScsIDAuNDIsIDFlLTMpOworICAgICAgICBzaG91bGRCZSgnZXZlbnQucmVzdWx0
cy5sZW5ndGgnLCAnMScpOworICAgICAgICBzaG91bGRCZSgnZXZlbnQucmVzdWx0c1swXS5sZW5n
dGgnLCAnMScpOworICAgICAgICBzaG91bGRCZSgnZXZlbnQucmVzdWx0c1swXS5pc0ZpbmFsJywg
J3RydWUnKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdldmVudC5yZXN1bHRzWzBd
Lml0ZW0oMCkudHJhbnNjcmlwdCcsICdoZWxsbywgd29ybGQnKTsKKyAgICAgICAgc2hvdWxkQmVD
bG9zZVRvKCdldmVudC5yZXN1bHRzWzBdLml0ZW0oMCkuY29uZmlkZW5jZScsIDAuNDIsIDFlLTMp
OwogICAgIH0KIAogICAgIHIub25zcGVlY2hlbmQgPSAgICAgZnVuY3Rpb24oKSB7IGRlYnVnKCdv
bnNwZWVjaGVuZCcpOyAgIHNob3VsZEJlKCdjb3VudCcsICc1Jyk7ICsrY291bnQ7IH0KQEAgLTY1
LDcgKzY3LDcgQEAgZnVuY3Rpb24gbm9NYXRjaFRlc3QoKSB7CiAgICAgICAgIGRlYnVnKCdvbm5v
bWF0Y2gnKTsKICAgICAgICAgc2hvdWxkQmUoJ2NvdW50JywgJzQnKTsKICAgICAgICAgKytjb3Vu
dDsKLSAgICAgICAgc2hvdWxkQmUoJ2V2ZW50LnJlc3VsdCcsICdudWxsJyk7CisgICAgICAgIHNo
b3VsZEJlKCdldmVudC5yZXN1bHRzJywgJ251bGwnKTsKICAgICB9CiAKICAgICByLm9uc3BlZWNo
ZW5kID0gICAgIGZ1bmN0aW9uKCkgeyBkZWJ1Zygnb25zcGVlY2hlbmQnKTsgICBzaG91bGRCZSgn
Y291bnQnLCAnNScpOyArK2NvdW50OyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176918</attachid>
            <date>2012-11-30 01:17:04 -0800</date>
            <delta_ts>2012-11-30 06:12:30 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-103407-20121130101435.patch</filename>
            <type>text/plain</type>
            <size>36788</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWZhNzUyM2ZkZjVlNjMw
MGQ0ZGQ0ODlkYjBkODNiYzk1OTg3MWYwMS4uNDRjMGFmMDUwNDgxOGExMTM0ODk4NWNiZGE4ODE1
YzQ3NzJiMDdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTExLTI5ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIFNwZWVjaCBSZWNv
Z25pdGlvbiBBUEk6IFVwZGF0ZSBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50L1Jlc3VsdCB0byBtYXRj
aCB0aGUgc3BlY2lmaWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTAzNDA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIHRoZSBmb2xsb3dpbmc6CisgICAgICAgIG8gQWRk
cyByZXN1bHRzLCBhbmQgcmVtb3ZpbmcgcmVzdWx0IG9uIFNwZWVjaFJlY29nbml0aW9uRXZlbnQK
KyAgICAgICAgbyBSZW5hbWluZyBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdDo6ZmluYWwgdG8gaXNG
aW5hbAorICAgICAgICBvIE1vdmluZyBlbW1hIHRvIFNwZWVjaFJlY29nbml0aW9uRXZlbnQgZnJv
bSBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdAorCisgICAgICAgIEV4aXN0aW5nIHRlc3RzIHVwZGF0
ZWQgdG8gdGVzdCB0aGUgbmV3IEFQSS4KKworICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uOjpz
dGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbjo6ZGlkUmVjZWl2ZVJl
c3VsdHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoUmVjb2duaXRpb24uaDoKKyAgICAgICAgKFNwZWVjaFJlY29nbml0aW9uKToKKyAgICAgICAg
KiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkV2ZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXZlbnQ6OmNyZWF0ZVJlc3VsdCk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXZlbnQ6OlNwZWVj
aFJlY29nbml0aW9uRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25F
dmVudDo6flNwZWVjaFJlY29nbml0aW9uRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6ZW1tYVF1
YWxpZmllZE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FdmVudDo6
ZW1tYSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FdmVudC5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTcGVlY2hSZWNvZ25pdGlvbkV2ZW50SW5p
dCk6CisgICAgICAgIChTcGVlY2hSZWNvZ25pdGlvbkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uRXZlbnQ6OnJlc3VsdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uRXZlbnQ6OnJlc3VsdHMpOgorICAgICAgICAqIE1vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uRXZlbnQuaWRsOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uUmVzdWx0LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvblJlc3VsdC5oOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25SZXN1bHQ6OmlzRmluYWwpOgorICAgICAgICAoU3BlZWNoUmVjb2duaXRpb25SZXN1bHQp
OgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVzdWx0LmlkbDoK
KyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4
U3BlZWNoUmVjb2duaXRpb25FdmVudEN1c3RvbS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTcGVlY2hSZWNvZ25pdGlvblJlc3VsdEN1c3RvbS5j
cHAuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4U3BlZWNoUmVjb2du
aXRpb25FdmVudDo6b3BhcXVlUm9vdEZvckdDKToKKwogMjAxMi0xMS0yOSAgRmxvcmluIE1hbGl0
YSAgPGZtYWxpdGFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtTa2lhXSBBZGQgbWlzc2luZyBP
cGFxdWVSZWdpb25Ta2lhIG5vdGlmaWVyIGNhbGxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IGQ0MjBhYmIwM2I5YTE4NTAzMGU4ZDEwZmU3NDAyNmNmNTk5ZGQwNDAuLjlhOWMxMjg0YjRm
ZTY3M2I4MGJhNGY5Mzc3NTNkODZhYTFiNTVmMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMTEtMjkgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3
QGdvb2dsZS5jb20+CisKKyAgICAgICAgU3BlZWNoIFJlY29nbml0aW9uIEFQSTogVXBkYXRlIFNw
ZWVjaFJlY29nbml0aW9uRXZlbnQgdG8gbWF0Y2ggdGhlIHNwZWNpZmljYXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzQwNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGluZyB0aGUgbmV3IGRp
ZFJlY2VpdmVSZXN1bHRzIG1ldGhvZC4KKworICAgICAgICAqIHB1YmxpYy9XZWJTcGVlY2hSZWNv
Z25pemVyQ2xpZW50Lmg6CisgICAgICAgICogc3JjL1NwZWVjaFJlY29nbml0aW9uQ2xpZW50UHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvbkNsaWVudFByb3h5Ojpk
aWRSZWNlaXZlUmVzdWx0cyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9TcGVl
Y2hSZWNvZ25pdGlvbkNsaWVudFByb3h5Lmg6CisgICAgICAgIChTcGVlY2hSZWNvZ25pdGlvbkNs
aWVudFByb3h5KToKKwogMjAxMi0xMS0yOSAgRmxvcmluIE1hbGl0YSAgPGZtYWxpdGFAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFtTa2lhXSBBZGQgbWlzc2luZyBPcGFxdWVSZWdpb25Ta2lhIG5v
dGlmaWVyIGNhbGxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvbi5jcHAKaW5kZXggNDFmNDk4ZmE5ZTg1NGZjNmZlZjFhODY2NmI3YTQ3NWYz
NDM0Zjg2Yi4uYmVkYTgyNzhmYzNmNmQzYjk1OWM3YTZmY2QwMGU4MzdmNzgxYzU3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNw
cApAQCAtNTQsNiArNTQsNyBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uOjpzdGFydChFeGNlcHRp
b25Db2RlJiBlYykKICAgICB9CiAKICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CisgICAg
bV9maW5hbFJlc3VsdHMuY2xlYXIoKTsKICAgICBtX2NvbnRyb2xsZXItPnN0YXJ0KHRoaXMsIG1f
Z3JhbW1hcnMuZ2V0KCksIG1fbGFuZywgbV9jb250aW51b3VzLCBtX2ludGVyaW1SZXN1bHRzLCBt
X21heEFsdGVybmF0aXZlcyk7CiAgICAgbV9zdGFydGVkID0gdHJ1ZTsKIH0KQEAgLTEwNSw2ICsx
MDYsMjAgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvbjo6ZGlkUmVjZWl2ZVJlc3VsdChQYXNzUmVm
UHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiByZXMKICAgICBkaXNwYXRjaEV2ZW50KFNwZWVj
aFJlY29nbml0aW9uRXZlbnQ6OmNyZWF0ZVJlc3VsdChyZXN1bHQsIHJlc3VsdEluZGV4LCByZXN1
bHRIaXN0b3J5KSk7CiB9CiAKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb246OmRpZFJlY2VpdmVSZXN1
bHRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+ID4mIG5ld0Zp
bmFsUmVzdWx0cywgY29uc3QgVmVjdG9yPFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4g
PiYgY3VycmVudEludGVyaW1SZXN1bHRzKQoreworICAgIHVuc2lnbmVkIGxvbmcgcmVzdWx0SW5k
ZXggPSBtX2ZpbmFsUmVzdWx0cy5zaXplKCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG5ld0ZpbmFsUmVzdWx0cy5zaXplKCk7ICsraSkKKyAgICAgICAgbV9maW5hbFJlc3VsdHMuYXBw
ZW5kKG5ld0ZpbmFsUmVzdWx0c1tpXSk7CisKKyAgICBWZWN0b3I8UmVmUHRyPFNwZWVjaFJlY29n
bml0aW9uUmVzdWx0PiA+IHJlc3VsdHMgPSBtX2ZpbmFsUmVzdWx0czsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGN1cnJlbnRJbnRlcmltUmVzdWx0cy5zaXplKCk7ICsraSkKKyAgICAgICAg
cmVzdWx0cy5hcHBlbmQoY3VycmVudEludGVyaW1SZXN1bHRzW2ldKTsKKworICAgIGRpc3BhdGNo
RXZlbnQoU3BlZWNoUmVjb2duaXRpb25FdmVudDo6Y3JlYXRlUmVzdWx0KHJlc3VsdEluZGV4LCBy
ZXN1bHRzKSk7Cit9CisKIHZvaWQgU3BlZWNoUmVjb2duaXRpb246OmRpZFJlY2VpdmVOb01hdGNo
KFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+IHJlc3VsdCkKIHsKICAgICBkaXNw
YXRjaEV2ZW50KFNwZWVjaFJlY29nbml0aW9uRXZlbnQ6OmNyZWF0ZU5vTWF0Y2gocmVzdWx0KSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24u
aAppbmRleCBiNWNhNGRkMGFmZDNiMzg0N2I2NWNlMDA1NmI4MjZkMjdlNGQzYjZlLi42NDNkZGE4
YjgzMTk4YjE4OTgzMmE1ZTU3MWQyNGUxYmFmYWE5MjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmgKQEAgLTczLDYgKzczLDggQEAg
cHVibGljOgogICAgIHZvaWQgZGlkRW5kU3BlZWNoKCk7CiAgICAgdm9pZCBkaWRFbmRTb3VuZCgp
OwogICAgIHZvaWQgZGlkRW5kQXVkaW8oKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXN1bHRzKGNv
bnN0IFZlY3RvcjxSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+ID4mIG5ld0ZpbmFsUmVz
dWx0cywgY29uc3QgVmVjdG9yPFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4gPiYgY3Vy
cmVudEludGVyaW1SZXN1bHRzKTsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSB3ZSBz
dGFydCB1c2luZyBkaWRSZWNlaXZlUmVzdWx0cy4KICAgICB2b2lkIGRpZFJlY2VpdmVSZXN1bHQo
UGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4sIHVuc2lnbmVkIGxvbmcgcmVzdWx0
SW5kZXgsIFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0PiByZXN1bHRIaXN0
b3J5KTsKICAgICB2b2lkIGRpZFJlY2VpdmVOb01hdGNoKFBhc3NSZWZQdHI8U3BlZWNoUmVjb2du
aXRpb25SZXN1bHQ+KTsKICAgICB2b2lkIGRpZFJlY2VpdmVFcnJvcihQYXNzUmVmUHRyPFNwZWVj
aFJlY29nbml0aW9uRXJyb3I+KTsKQEAgLTEyNCw2ICsxMjYsNyBAQCBwcml2YXRlOgogICAgIFNw
ZWVjaFJlY29nbml0aW9uQ29udHJvbGxlciogbV9jb250cm9sbGVyOwogICAgIGJvb2wgbV9zdG9w
cGVkQnlBY3RpdmVET01PYmplY3Q7CiAgICAgYm9vbCBtX3N0YXJ0ZWQ7CisgICAgVmVjdG9yPFJl
ZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4gPiBtX2ZpbmFsUmVzdWx0czsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FdmVudC5jcHAKaW5kZXggZTJhOGY3YTFmZTA4NmY0
NDUwOGIwZjM0NTk3OTBmMThmOWM1MDdlNi4uMjAyMjdkYjU1MWY2YTAyZDc2ZGM1MjJkM2Y0ZWFk
ZDgwY2VkZGJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoUmVjb2duaXRpb25FdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXRpb25FdmVudC5jcHAKQEAgLTI5LDYgKzI5LDEwIEBACiAKICNpbmNs
dWRlICJTcGVlY2hSZWNvZ25pdGlvbkV2ZW50LmgiCiAKKyNpbmNsdWRlICJEb2N1bWVudC5oIgor
I2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJUZXh0LmgiCisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogU3BlZWNoUmVjb2duaXRpb25FdmVudEluaXQ6OlNwZWVjaFJlY29nbml0aW9uRXZl
bnRJbml0KCkKQEAgLTUxLDYgKzU1LDExIEBAIFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25F
dmVudD4gU3BlZWNoUmVjb2duaXRpb25FdmVudDo6Y3JlYXRlUmVzdWx0KFBhc3NSZWZQCiAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50KGV2ZW50TmFtZXMoKS5y
ZXN1bHRFdmVudCwgcmVzdWx0LCByZXN1bHRJbmRleCwgcmVzdWx0SGlzdG9yeSkpOwogfQogCitQ
YXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uRXZlbnQ+IFNwZWVjaFJlY29nbml0aW9uRXZlbnQ6
OmNyZWF0ZVJlc3VsdCh1bnNpZ25lZCBsb25nIHJlc3VsdEluZGV4LCBjb25zdCBWZWN0b3I8UmVm
UHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiA+JiByZXN1bHRzKQoreworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU3BlZWNoUmVjb2duaXRpb25FdmVudChldmVudE5hbWVzKCkucmVzdWx0RXZl
bnQsIHJlc3VsdEluZGV4LCByZXN1bHRzKSk7Cit9CisKIFBhc3NSZWZQdHI8U3BlZWNoUmVjb2du
aXRpb25FdmVudD4gU3BlZWNoUmVjb2duaXRpb25FdmVudDo6Y3JlYXRlTm9NYXRjaChQYXNzUmVm
UHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiByZXN1bHQpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50KGV2ZW50TmFtZXMoKS5ub21hdGNoRXZlbnQs
IHJlc3VsdCwgMCwgMCkpOwpAQCAtNjgsMjAgKzc3LDgwIEBAIFNwZWVjaFJlY29nbml0aW9uRXZl
bnQ6OlNwZWVjaFJlY29nbml0aW9uRXZlbnQoKQogCiBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50OjpT
cGVlY2hSZWNvZ25pdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lLCBjb25z
dCBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCiAgICAgOiBFdmVudChl
dmVudE5hbWUsIGluaXRpYWxpemVyKQotICAgICwgbV9yZXN1bHQoaW5pdGlhbGl6ZXIucmVzdWx0
KQogICAgICwgbV9yZXN1bHRJbmRleChpbml0aWFsaXplci5yZXN1bHRJbmRleCkKKyAgICAsIG1f
cmVzdWx0KGluaXRpYWxpemVyLnJlc3VsdCkKICAgICAsIG1fcmVzdWx0SGlzdG9yeShpbml0aWFs
aXplci5yZXN1bHRIaXN0b3J5KQogewogfQogCiBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50OjpTcGVl
Y2hSZWNvZ25pdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lLCBQYXNzUmVm
UHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiByZXN1bHQsIHNob3J0IHJlc3VsdEluZGV4LCBQ
YXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdD4gcmVzdWx0SGlzdG9yeSkKICAg
ICA6IEV2ZW50KGV2ZW50TmFtZSwgLypjYW5CdWJibGU9Ki9mYWxzZSwgLypjYW5jZWxhYmxlPSov
ZmFsc2UpCi0gICAgLCBtX3Jlc3VsdChyZXN1bHQpCiAgICAgLCBtX3Jlc3VsdEluZGV4KHJlc3Vs
dEluZGV4KQorICAgICwgbV9yZXN1bHQocmVzdWx0KQogICAgICwgbV9yZXN1bHRIaXN0b3J5KHJl
c3VsdEhpc3RvcnkpCiB7CiB9CiAKK1NwZWVjaFJlY29nbml0aW9uRXZlbnQ6OlNwZWVjaFJlY29n
bml0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUsIHVuc2lnbmVkIGxvbmcg
cmVzdWx0SW5kZXgsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+
ID4mIHJlc3VsdHMpCisgICAgOiBFdmVudChldmVudE5hbWUsIC8qY2FuQnViYmxlPSovZmFsc2Us
IC8qY2FuY2VsYWJsZT0qL2ZhbHNlKQorICAgICwgbV9yZXN1bHRJbmRleChyZXN1bHRJbmRleCkK
KyAgICAsIG1fcmVzdWx0cyhTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3Q6OmNyZWF0ZShyZXN1
bHRzKSkKK3sKK30KKworU3BlZWNoUmVjb2duaXRpb25FdmVudDo6flNwZWVjaFJlY29nbml0aW9u
RXZlbnQoKQoreworfQorCitzdGF0aWMgUXVhbGlmaWVkTmFtZSBlbW1hUXVhbGlmaWVkTmFtZShj
b25zdCBjaGFyKiBsb2NhbE5hbWUpCit7CisgICAgY29uc3QgY2hhciBlbW1hTmFtZXNwYWNlVXJs
W10gPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMy8wNC9lbW1hIjsKKyAgICByZXR1cm4gUXVhbGlm
aWVkTmFtZSgiZW1tYSIsIGxvY2FsTmFtZSwgZW1tYU5hbWVzcGFjZVVybCk7Cit9CisKK0RvY3Vt
ZW50KiBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50OjplbW1hKCkKK3sKKyAgICBpZiAobV9lbW1hKQor
ICAgICAgICByZXR1cm4gbV9lbW1hLmdldCgpOworCisgICAgUmVmUHRyPERvY3VtZW50PiBkb2N1
bWVudCA9IERvY3VtZW50OjpjcmVhdGUoMCwgS1VSTCgpKTsKKworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9yZXN1bHRzLT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIFJlZlB0cjxTcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdD4gcmVzdWx0ID0gbV9yZXN1bHRzLT5pdGVtKDApOworCisgICAg
ICAgIFJlZlB0cjxFbGVtZW50PiBlbW1hRWxlbWVudCA9IGRvY3VtZW50LT5jcmVhdGVFbGVtZW50
KGVtbWFRdWFsaWZpZWROYW1lKCJlbW1hIiksIGZhbHNlKTsKKyAgICAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CisgICAgICAgIGVtbWFFbGVtZW50LT5zZXRBdHRyaWJ1dGUoInZlcnNpb24iLCAi
MS4wIiwgZWMpOworICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgaWYgKGVjKQorICAgICAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IG9uZU9mID0gZG9jdW1l
bnQtPmNyZWF0ZUVsZW1lbnQoZW1tYVF1YWxpZmllZE5hbWUoIm9uZS1vZiIpLCBmYWxzZSk7Cisg
ICAgICAgIG9uZU9mLT5zZXRBdHRyaWJ1dGUoZW1tYVF1YWxpZmllZE5hbWUoIm1lZGl1bSIpLCAi
YWNvdXN0aWMiKTsKKyAgICAgICAgb25lT2YtPnNldEF0dHJpYnV0ZShlbW1hUXVhbGlmaWVkTmFt
ZSgibW9kZSIpLCAidm9pY2UiKTsKKyAgICAgICAgb25lT2YtPnNldElkQXR0cmlidXRlKCJvbmUt
b2YiKTsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlc3VsdC0+bGVuZ3RoKCk7
ICsraSkgeworICAgICAgICAgICAgY29uc3QgUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uQWx0ZXJu
YXRpdmU+JiBhbHRlcm5hdGl2ZSA9IHJlc3VsdC0+aXRlbShpKTsKKworICAgICAgICAgICAgUmVm
UHRyPEVsZW1lbnQ+IGludGVycHJldGF0aW9uID0gZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnQoZW1t
YVF1YWxpZmllZE5hbWUoImludGVycHJldGF0aW9uIiksIGZhbHNlKTsKKyAgICAgICAgICAgIGlu
dGVycHJldGF0aW9uLT5zZXRJZEF0dHJpYnV0ZShTdHJpbmc6Om51bWJlcihpICsgMSkpOworICAg
ICAgICAgICAgaW50ZXJwcmV0YXRpb24tPnNldEF0dHJpYnV0ZShlbW1hUXVhbGlmaWVkTmFtZSgi
Y29uZmlkZW5jZSIpLCBTdHJpbmc6Om51bWJlcihhbHRlcm5hdGl2ZS0+Y29uZmlkZW5jZSgpKSk7
CisKKyAgICAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBsaXRlcmFsID0gZG9jdW1lbnQtPmNyZWF0
ZUVsZW1lbnQoZW1tYVF1YWxpZmllZE5hbWUoImxpdGVyYWwiKSwgZmFsc2UpOworICAgICAgICAg
ICAgbGl0ZXJhbC0+YXBwZW5kQ2hpbGQoZG9jdW1lbnQtPmNyZWF0ZVRleHROb2RlKGFsdGVybmF0
aXZlLT50cmFuc2NyaXB0KCkpKTsKKyAgICAgICAgICAgIGludGVycHJldGF0aW9uLT5hcHBlbmRD
aGlsZChsaXRlcmFsLnJlbGVhc2UoKSk7CisgICAgICAgICAgICBvbmVPZi0+YXBwZW5kQ2hpbGQo
aW50ZXJwcmV0YXRpb24ucmVsZWFzZSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGVtbWFFbGVt
ZW50LT5hcHBlbmRDaGlsZChvbmVPZi5yZWxlYXNlKCkpOworICAgICAgICBkb2N1bWVudC0+YXBw
ZW5kQ2hpbGQoZW1tYUVsZW1lbnQucmVsZWFzZSgpKTsKKyAgICB9CisKKyAgICBtX2VtbWEgPSBk
b2N1bWVudDsKKyAgICByZXR1cm4gbV9lbW1hLmdldCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FdmVudC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FdmVudC5oCmlu
ZGV4IGQ0NDVjM2E4ZGRmYjgwNDdiZTg3OTliNDBmMWMyMTc5OWMzNGFlZjAuLjZhNjE2YTdkNWFk
NjU4Nzg2MzllNjg4MDFlZjQwZjFjNGJmYWMyZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXZlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkV2ZW50LmgKQEAgLTM2LDYgKzM2
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIFNw
ZWVjaFJlY29nbml0aW9uRXJyb3I7CiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdDsKIGNs
YXNzIFNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdDsKQEAgLTQzLDIxICs0NCwzMiBAQCBjbGFz
cyBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3Q7CiBzdHJ1Y3QgU3BlZWNoUmVjb2duaXRpb25F
dmVudEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKICAgICBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50
SW5pdCgpOwogCisgICAgLy8gREVQUkVDQVRFRAogICAgIFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlv
blJlc3VsdD4gcmVzdWx0OwotICAgIHNob3J0IHJlc3VsdEluZGV4OwogICAgIFJlZlB0cjxTcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdExpc3Q+IHJlc3VsdEhpc3Rvcnk7CisKKyAgICBzaG9ydCByZXN1
bHRJbmRleDsKKyAgICBSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0PiByZXN1bHRz
OwogfTsKIAogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25FdmVudCA6IHB1YmxpYyBFdmVudCB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25FdmVudD4gY3Jl
YXRlKCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25FdmVudD4gY3Jl
YXRlKGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFNwZWVjaFJlY29nbml0aW9uRXZlbnRJbml0
Jik7CisgICAgdmlydHVhbCB+U3BlZWNoUmVjb2duaXRpb25FdmVudCgpOwogCisgICAgLy8gREVQ
UkVDQVRFRAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uRXZlbnQ+IGNy
ZWF0ZVJlc3VsdChQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0Piwgc2hvcnQgcmVz
dWx0SW5kZXgsIFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0PiByZXN1bHRI
aXN0b3J5KTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uRXZlbnQ+
IGNyZWF0ZVJlc3VsdCh1bnNpZ25lZCBsb25nIHJlc3VsdEluZGV4LCBjb25zdCBWZWN0b3I8UmVm
UHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiA+JiByZXN1bHRzKTsKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvbkV2ZW50PiBjcmVhdGVOb01hdGNoKFBhc3NSZWZQdHI8
U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+KTsKIAorICAgIHVuc2lnbmVkIGxvbmcgcmVzdWx0SW5k
ZXgoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdEluZGV4OyB9CisgICAgU3BlZWNoUmVjb2duaXRp
b25SZXN1bHRMaXN0KiByZXN1bHRzKCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHRzLmdldCgpOyB9
CisgICAgRG9jdW1lbnQqIGVtbWEoKTsKKworICAgIC8vIERFUFJFQ0FURUQKICAgICBTcGVlY2hS
ZWNvZ25pdGlvblJlc3VsdCogcmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHQuZ2V0KCk7
IH0KLSAgICBzaG9ydCByZXN1bHRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0SW5kZXg7
IH0gLy8gRklYTUU6IFNwZWMgc2F5cyB0aGlzIHNob3VsZCBiZSBzaG9ydCwgYnV0IG90aGVyIGlu
ZGljZXMgYXJlIHVuc2lnbmVkIGludHMuCiAgICAgU3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0
KiByZXN1bHRIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHRIaXN0b3J5LmdldCgpOyB9
CiAKICAgICAvLyBFdmVudApAQCAtNjYsMTEgKzc4LDE2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgU3BlZWNoUmVjb2duaXRpb25FdmVudCgpOwogICAgIFNwZWVjaFJlY29nbml0aW9uRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgU3BlZWNoUmVjb2duaXRpb25FdmVudEluaXQmKTsK
LSAgICBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1l
LCBQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0Piwgc2hvcnQgcmVzdWx0SW5kZXgs
IFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0PiByZXN1bHRIaXN0b3J5KTsK
KyAgICBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1l
LCBQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0Piwgc2hvcnQgcmVzdWx0SW5kZXgs
IFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0PiByZXN1bHRIaXN0b3J5KTsg
Ly8gRklYTUU6IFJlbW92ZS4KKyAgICBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnROYW1lLCB1bnNpZ25lZCBsb25nIHJlc3VsdEluZGV4LCBjb25zdCBWZWN0
b3I8UmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiA+JiByZXN1bHRzKTsKICAgICBleHBs
aWNpdCBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50KFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25F
cnJvcj4pOwogCisgICAgdW5zaWduZWQgbG9uZyBtX3Jlc3VsdEluZGV4OworICAgIFJlZlB0cjxT
cGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3Q+IG1fcmVzdWx0czsKKyAgICBSZWZQdHI8RG9jdW1l
bnQ+IG1fZW1tYTsKKworICAgIC8vIERFUFJFQ0FURUQKICAgICBSZWZQdHI8U3BlZWNoUmVjb2du
aXRpb25SZXN1bHQ+IG1fcmVzdWx0OwotICAgIHNob3J0IG1fcmVzdWx0SW5kZXg7CiAgICAgUmVm
UHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdD4gbV9yZXN1bHRIaXN0b3J5OwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRp
b25FdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvbkV2ZW50LmlkbAppbmRleCA4ZWI3ODljMGMwYzk1MDg3YmQwMDUzNzQxMjEyNzQxMWU1YzY2
NzI2Li41OTJkMjFiZDlmMzRiMWM4MTU2ZTY4MWU1Y2JiYmE4ODI5Y2ZhZjEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkV2ZW50Lmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkV2
ZW50LmlkbApAQCAtMjUsOSArMjUsMTUgQEAKIAogWwogICAgIENvbmRpdGlvbmFsPVNDUklQVEVE
X1NQRUVDSCwKLSAgICBDb25zdHJ1Y3RvclRlbXBsYXRlPUV2ZW50CisgICAgQ29uc3RydWN0b3JU
ZW1wbGF0ZT1FdmVudCwKKyAgICBDdXN0b21Jc1JlYWNoYWJsZSwKKyAgICBWOERlcGVuZGVudExp
ZmV0aW1lCiBdIGludGVyZmFjZSBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50IDogRXZlbnQgeworICAg
IC8vIERFUFJFQ0FURUQKICAgICBbSW5pdGlhbGl6ZWRCeUV2ZW50Q29uc3RydWN0b3JdIHJlYWRv
bmx5IGF0dHJpYnV0ZSBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCByZXN1bHQ7Ci0gICAgW0luaXRp
YWxpemVkQnlFdmVudENvbnN0cnVjdG9yXSByZWFkb25seSBhdHRyaWJ1dGUgc2hvcnQgcmVzdWx0
SW5kZXg7CiAgICAgW0luaXRpYWxpemVkQnlFdmVudENvbnN0cnVjdG9yXSByZWFkb25seSBhdHRy
aWJ1dGUgU3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0IHJlc3VsdEhpc3Rvcnk7CisKKyAgICBb
SW5pdGlhbGl6ZWRCeUV2ZW50Q29uc3RydWN0b3JdIHJlYWRvbmx5IGF0dHJpYnV0ZSBzaG9ydCBy
ZXN1bHRJbmRleDsKKyAgICBbSW5pdGlhbGl6ZWRCeUV2ZW50Q29uc3RydWN0b3JdIHJlYWRvbmx5
IGF0dHJpYnV0ZSBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3QgcmVzdWx0czsKKyAgICByZWFk
b25seSBhdHRyaWJ1dGUgRG9jdW1lbnQgZW1tYTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlc3VsdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlc3VsdC5jcHAKaW5kZXgg
ZDU0ZjJiZjc0Y2YwMTY3YWIwZDVjMzhjNGExY2YxODk3M2ZlZTBjNC4uOTI0ODc0NGVmN2EzNGEz
ZGE0M2JkMDA1NWY1NWU5NjNhZWMzODg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVzdWx0LmNwcApAQCAtMjksMTAg
KzI5LDYgQEAKIAogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUmVzdWx0LmgiCiAKLSNpbmNs
dWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnQuaCIKLSNpbmNsdWRlICJUZXh0Lmgi
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3BlZWNoUmVjb2duaXRpb25SZXN1bHQ6On5TcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdCgpCkBAIC01Miw1MSArNDgsNiBAQCBTcGVlY2hSZWNvZ25pdGlv
bkFsdGVybmF0aXZlKiBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdDo6aXRlbSh1bnNpZ25lZCBsb25n
IGluZGV4KQogICAgIHJldHVybiBtX2FsdGVybmF0aXZlc1tpbmRleF0uZ2V0KCk7CiB9CiAKLXN0
YXRpYyBRdWFsaWZpZWROYW1lIGVtbWFRdWFsaWZpZWROYW1lKGNvbnN0IGNoYXIqIGxvY2FsTmFt
ZSkKLXsKLSAgICBjb25zdCBjaGFyIGVtbWFOYW1lc3BhY2VVcmxbXSA9ICJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAzLzA0L2VtbWEiOwotICAgIHJldHVybiBRdWFsaWZpZWROYW1lKCJlbW1hIiwgbG9j
YWxOYW1lLCBlbW1hTmFtZXNwYWNlVXJsKTsKLX0KLQotRG9jdW1lbnQqIFNwZWVjaFJlY29nbml0
aW9uUmVzdWx0OjplbW1hKCkKLXsKLSAgICBpZiAobV9lbW1hKQotICAgICAgICByZXR1cm4gbV9l
bW1hLmdldCgpOwotCi0gICAgUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IERvY3VtZW50Ojpj
cmVhdGUoMCwgS1VSTCgpKTsKLQotICAgIFJlZlB0cjxFbGVtZW50PiBlbW1hRWxlbWVudCA9IGRv
Y3VtZW50LT5jcmVhdGVFbGVtZW50KGVtbWFRdWFsaWZpZWROYW1lKCJlbW1hIiksIGZhbHNlKTsK
LSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBlbW1hRWxlbWVudC0+c2V0QXR0cmlidXRl
KCJ2ZXJzaW9uIiwgIjEuMCIsIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKLSAgICBpZiAoZWMpCi0g
ICAgICAgIHJldHVybiAwOwotCi0gICAgUmVmUHRyPEVsZW1lbnQ+IG9uZU9mID0gZG9jdW1lbnQt
PmNyZWF0ZUVsZW1lbnQoZW1tYVF1YWxpZmllZE5hbWUoIm9uZS1vZiIpLCBmYWxzZSk7Ci0gICAg
b25lT2YtPnNldEF0dHJpYnV0ZShlbW1hUXVhbGlmaWVkTmFtZSgibWVkaXVtIiksICJhY291c3Rp
YyIpOwotICAgIG9uZU9mLT5zZXRBdHRyaWJ1dGUoZW1tYVF1YWxpZmllZE5hbWUoIm1vZGUiKSwg
InZvaWNlIik7Ci0gICAgb25lT2YtPnNldElkQXR0cmlidXRlKCJvbmUtb2YiKTsKLQotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hbHRlcm5hdGl2ZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgY29uc3QgUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uQWx0ZXJuYXRpdmU+JiBhbHRlcm5hdGl2
ZSA9IG1fYWx0ZXJuYXRpdmVzW2ldOwotCi0gICAgICAgIFJlZlB0cjxFbGVtZW50PiBpbnRlcnBy
ZXRhdGlvbiA9IGRvY3VtZW50LT5jcmVhdGVFbGVtZW50KGVtbWFRdWFsaWZpZWROYW1lKCJpbnRl
cnByZXRhdGlvbiIpLCBmYWxzZSk7Ci0gICAgICAgIGludGVycHJldGF0aW9uLT5zZXRJZEF0dHJp
YnV0ZShTdHJpbmc6Om51bWJlcihpICsgMSkpOwotICAgICAgICBpbnRlcnByZXRhdGlvbi0+c2V0
QXR0cmlidXRlKGVtbWFRdWFsaWZpZWROYW1lKCJjb25maWRlbmNlIiksIFN0cmluZzo6bnVtYmVy
KGFsdGVybmF0aXZlLT5jb25maWRlbmNlKCkpKTsKLQotICAgICAgICBSZWZQdHI8RWxlbWVudD4g
bGl0ZXJhbCA9IGRvY3VtZW50LT5jcmVhdGVFbGVtZW50KGVtbWFRdWFsaWZpZWROYW1lKCJsaXRl
cmFsIiksIGZhbHNlKTsKLSAgICAgICAgbGl0ZXJhbC0+YXBwZW5kQ2hpbGQoZG9jdW1lbnQtPmNy
ZWF0ZVRleHROb2RlKGFsdGVybmF0aXZlLT50cmFuc2NyaXB0KCkpKTsKLSAgICAgICAgaW50ZXJw
cmV0YXRpb24tPmFwcGVuZENoaWxkKGxpdGVyYWwucmVsZWFzZSgpKTsKLSAgICAgICAgb25lT2Yt
PmFwcGVuZENoaWxkKGludGVycHJldGF0aW9uLnJlbGVhc2UoKSk7Ci0gICAgfQotCi0gICAgZW1t
YUVsZW1lbnQtPmFwcGVuZENoaWxkKG9uZU9mLnJlbGVhc2UoKSk7Ci0gICAgZG9jdW1lbnQtPmFw
cGVuZENoaWxkKGVtbWFFbGVtZW50LnJlbGVhc2UoKSk7Ci0KLSAgICBtX2VtbWEgPSBkb2N1bWVu
dDsKLSAgICByZXR1cm4gbV9lbW1hLmdldCgpOwotfQotCiBTcGVlY2hSZWNvZ25pdGlvblJlc3Vs
dDo6U3BlZWNoUmVjb2duaXRpb25SZXN1bHQoY29uc3QgVmVjdG9yPFJlZlB0cjxTcGVlY2hSZWNv
Z25pdGlvbkFsdGVybmF0aXZlPiA+JiBhbHRlcm5hdGl2ZXMsIGJvb2wgZmluYWwpCiAgICAgOiBt
X2FsdGVybmF0aXZlcyhhbHRlcm5hdGl2ZXMpCiAgICAgLCBtX2ZpbmFsKGZpbmFsKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXN1
bHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVz
dWx0LmgKaW5kZXggMThmNzZlMTQ3ZDQ3YjRlMzBhODNkMjVhYzZkYjRiMmMwOTZhYjFiNi4uNzRj
YzdiMzA5MmRmNTZhMTQ1OTBhMWU2MWU4NmUzMzc0MjlkZGFiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXN1bHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlc3VsdC5oCkBA
IC0zNCw4ICszNCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRG9jdW1lbnQ7
Ci0KIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uUmVzdWx0IDogcHVibGljIFJlZkNvdW50ZWQ8U3Bl
ZWNoUmVjb2duaXRpb25SZXN1bHQ+IHsKIHB1YmxpYzoKICAgICB+U3BlZWNoUmVjb2duaXRpb25S
ZXN1bHQoKTsKQEAgLTQzLDE1ICs0MSwxMyBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBsb25n
IGxlbmd0aCgpIHsgcmV0dXJuIG1fYWx0ZXJuYXRpdmVzLnNpemUoKTsgfQogICAgIFNwZWVjaFJl
Y29nbml0aW9uQWx0ZXJuYXRpdmUqIGl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgYm9v
bCBmaW5hbCgpIHsgcmV0dXJuIG1fZmluYWw7IH0KLSAgICBEb2N1bWVudCogZW1tYSgpOworICAg
IGJvb2wgaXNGaW5hbCgpIHsgcmV0dXJuIG1fZmluYWw7IH0KIAogcHJpdmF0ZToKICAgICBTcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdChjb25zdCBWZWN0b3I8UmVmUHRyPFNwZWVjaFJlY29nbml0aW9u
QWx0ZXJuYXRpdmU+ID4mLCBib29sIGZpbmFsKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8U3BlZWNo
UmVjb2duaXRpb25BbHRlcm5hdGl2ZT4gPiBtX2FsdGVybmF0aXZlczsKICAgICBib29sIG1fZmlu
YWw7Ci0gICAgUmVmUHRyPERvY3VtZW50PiBtX2VtbWE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hS
ZWNvZ25pdGlvblJlc3VsdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdC5pZGwKaW5kZXggNjA5ZDZlYTg3YjdmZGRhZTA0NjhhNzY2MGZi
MDk2NzIxZmZkYzE2Ni4uYjc0OWFlZDc3NzM4NDI4MTQ0NDNlMzUzZDJkOGZmYmQ5ZjgzNDZlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRp
b25SZXN1bHQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJl
Y29nbml0aW9uUmVzdWx0LmlkbApAQCAtMjUsMTIgKzI1LDkgQEAKIAogWwogICAgIENvbmRpdGlv
bmFsPVNDUklQVEVEX1NQRUVDSCwKLSAgICBDdXN0b21Jc1JlYWNoYWJsZSwKLSAgICBJbmRleGVk
R2V0dGVyLAotICAgIFY4RGVwZW5kZW50TGlmZXRpbWUKKyAgICBJbmRleGVkR2V0dGVyCiBdIGlu
dGVyZmFjZSBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgIFNwZWVjaFJlY29nbml0aW9uQWx0ZXJuYXRpdmUg
aXRlbShpbiBbSXNJbmRleF0gdW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgcmVhZG9ubHkgYXR0
cmlidXRlIGJvb2xlYW4gZmluYWw7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIERvY3VtZW50IGVt
bWE7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNGaW5hbDsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKaW5kZXggZDk1YTE3ZDhkZGIwNGI4ZjZhMmMwNTI1YmM5NzNkM2ZlOTg2MGY0My4uOTNj
YTQ1NWQwZWNkNjg1YjMxNDg5MGU5Y2I3NjBkZThiNGQwMTNmYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpA
QCAtMjQyOSw3ICsyNDI5LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhT
VkdQYXRoU2VnQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4
U2NyaXB0UHJvZmlsZUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFNjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcCcsCi0gICAgICAgICAgICAnYmluZGluZ3Mv
djgvY3VzdG9tL1Y4U3BlZWNoUmVjb2duaXRpb25SZXN1bHRDdXN0b20uY3BwJywKKyAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhTcGVlY2hSZWNvZ25pdGlvbkV2ZW50Q3VzdG9tLmNw
cCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3RvcmFnZUN1c3RvbS5jcHAn
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0eWxlU2hlZXRDdXN0b20uY3Bw
JywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhTdHlsZVNoZWV0TGlzdEN1c3Rv
bS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
U3BlZWNoUmVjb2duaXRpb25FdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhTcGVlY2hSZWNvZ25pdGlvbkV2ZW50Q3VzdG9tLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hZmE0NjFlMWZmZGFiMjA5MTliNWViM2EzYTI3ZGJkOTJhNTA4NzBjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3BlZWNoUmVjb2duaXRp
b25FdmVudEN1c3RvbS5jcHAKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRShTQ1JJUFRFRF9TUEVFQ0gpCisKKyNpbmNsdWRlICJWOFNw
ZWVjaFJlY29nbml0aW9uRXZlbnQuaCIKKworI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uRXZl
bnQuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEdDQ29udHJvbGxlci5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQqIFY4U3BlZWNoUmVjb2duaXRpb25FdmVu
dDo6b3BhcXVlUm9vdEZvckdDKHZvaWQqIG9iamVjdCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVj
dD4gd3JhcHBlcikKK3sKKyAgICBBU1NFUlQoVjhTcGVlY2hSZWNvZ25pdGlvbkV2ZW50OjpIYXNJ
bnN0YW5jZSh3cmFwcGVyKSk7CisgICAgU3BlZWNoUmVjb2duaXRpb25FdmVudCogaW1wbCA9IHN0
YXRpY19jYXN0PFNwZWVjaFJlY29nbml0aW9uRXZlbnQqPihvYmplY3QpOworICAgIHJldHVybiBW
OEdDQ29udHJvbGxlcjo6b3BhcXVlUm9vdEZvckdDKGltcGwtPmVtbWEoKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTQ1JJUFRFRF9TUEVFQ0gpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTcGVlY2hSZWNv
Z25pdGlvblJlc3VsdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhTcGVlY2hSZWNvZ25pdGlvblJlc3VsdEN1c3RvbS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGVmMTQ1NjVmY2UxMmE1NDdiMjkyNWNkOTkzNjU4OWU4MTIxMjA4NGMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3BlZWNoUmVjb2duaXRpb25SZXN1bHRDdXN0b20uY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLQotI2lmIEVOQUJMRShTQ1JJUFRFRF9TUEVFQ0gpCi0KLSNpbmNsdWRlICJWOFNwZWVj
aFJlY29nbml0aW9uUmVzdWx0LmgiCi0KLSNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblJlc3Vs
dC5oIgotI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4R0NDb250cm9sbGVyLmgi
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCogVjhTcGVlY2hSZWNvZ25pdGlvblJlc3Vs
dDo6b3BhcXVlUm9vdEZvckdDKHZvaWQqIG9iamVjdCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVj
dD4gd3JhcHBlcikKLXsKLSAgICBBU1NFUlQoVjhTcGVlY2hSZWNvZ25pdGlvblJlc3VsdDo6SGFz
SW5zdGFuY2Uod3JhcHBlcikpOwotICAgIFNwZWVjaFJlY29nbml0aW9uUmVzdWx0KiBpbXBsID0g
c3RhdGljX2Nhc3Q8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQqPihvYmplY3QpOwotICAgIHJldHVy
biBWOEdDQ29udHJvbGxlcjo6b3BhcXVlUm9vdEZvckdDKGltcGwtPmVtbWEoKSk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShTQ1JJUFRFRF9TUEVFQ0gp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hSZWNv
Z25pemVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hS
ZWNvZ25pemVyQ2xpZW50LmgKaW5kZXggZWJkYzBjMTczOTIxZjU0YzlkNDA4YTY3MDMxOTE3ZWFj
MmRlZDQ5My4uMDU2YzRkMzU4NWU5NzFkYzRjMWQxNjJlM2I5MGZjZmUzOWQ5NDMyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoUmVjb2duaXplckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFJlY29n
bml6ZXJDbGllbnQuaApAQCAtNjgsOCArNjgsMTcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBkaWRFbmRBdWRpbyhjb25zdCBXZWJTcGVlY2hSZWNvZ25pdGlvbkhhbmRsZSYpID0gMDsKIAog
ICAgIC8vIFRvIGJlIGNhbGxlZCB3aGVuIHRoZSBzcGVlY2ggcmVjb2duaXplciByZXR1cm5zIGEg
cmVzdWx0LgorICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIHdlIGhhdmUgbW92ZWQgb3Zl
ciB0byBvbmx5IHVzZSB0aGUgZnVuY3Rpb24gYmVsb3cuCiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVSZXN1bHQoY29uc3QgV2ViU3BlZWNoUmVjb2duaXRpb25IYW5kbGUmLCBjb25zdCBXZWJT
cGVlY2hSZWNvZ25pdGlvblJlc3VsdCYsIHVuc2lnbmVkIGxvbmcgcmVzdWx0SW5kZXgsIGNvbnN0
IFdlYlZlY3RvcjxXZWJTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4mIHJlc3VsdEhpc3RvcnkpID0g
MDsKIAorICAgIC8vIFRvIGJlIGNhbGxlZCB3aGVuIHRoZSBzcGVlY2ggcmVjb2duaXplciBwcm92
aWRlcyBuZXcgcmVzdWx0cy4KKyAgICAvLyAtIG5ld0ZpbmFsUmVzdWx0cyBjb250YWlucyB6ZXJv
IG9yIG1vcmUgZmluYWwgcmVzdWx0cyB0aGF0IGFyZSBuZXcgc2luY2UKKyAgICAvLyB0aGUgbGFz
dCB0aW1lIHRoZSBmdW5jdGlvbnMgd2FzIGNhbGxlZC4KKyAgICAvLyAtIGN1cnJlbnRJbnRlcmlt
UmVzdWx0cyBjb250YWlucyB6ZXJvIG9yIG1vcmUgaW50ZWlybSByZXN1bHRzIHRoYXQKKyAgICAv
LyByZXBsYWNlIHRoZSBpbnRlcmltIHJlc3VsdHMgdGhhdCB3ZXJlIHJlcG9ydGVkIHRoZSBsYXN0
IHRpbWUgdGhpcworICAgIC8vIGZ1bmN0aW9uIHdhcyBjYWxsZWQuCisgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVSZXN1bHRzKGNvbnN0IFdlYlNwZWVjaFJlY29nbml0aW9uSGFuZGxlJiwgY29u
c3QgV2ViVmVjdG9yPFdlYlNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiYgbmV3RmluYWxSZXN1bHRz
LCBjb25zdCBXZWJWZWN0b3I8V2ViU3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+JiBjdXJyZW50SW50
ZXJpbVJlc3VsdHMpID0gMDsKKwogICAgIC8vIFRvIGJlIGNhbGxlZCB3aGVuIHRoZSBzcGVlY2gg
cmVjb2duaXplciByZXR1cm5zIGEgZmluYWwgcmVzdWx0IHdpdGggbm8KICAgICAvLyByZWNvZ25p
emlvbiBoeXBvdGhlc2lzLgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTm9NYXRjaChjb25z
dCBXZWJTcGVlY2hSZWNvZ25pdGlvbkhhbmRsZSYsIGNvbnN0IFdlYlNwZWVjaFJlY29nbml0aW9u
UmVzdWx0JikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3Bl
ZWNoUmVjb2duaXRpb25DbGllbnRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9TcGVlY2hSZWNvZ25pdGlvbkNsaWVudFByb3h5LmNwcAppbmRleCAwODI3NDdjZGI5Y2NjYzZm
ZmJkZDM0MTE1NTM1ZWM4ODk0M2ZkZjUwLi5mNzQ4NWVkOWIzNjI2OWNkYmM2MmI5YmMwNmExZDFm
YTNiNTFkZDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hS
ZWNvZ25pdGlvbkNsaWVudFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9TcGVlY2hSZWNvZ25pdGlvbkNsaWVudFByb3h5LmNwcApAQCAtMTEzLDYgKzExMywyMSBAQCB2
b2lkIFNwZWVjaFJlY29nbml0aW9uQ2xpZW50UHJveHk6OmRpZFJlY2VpdmVSZXN1bHQoY29uc3Qg
V2ViU3BlZWNoUmVjb2duaXRpb25IYQogCiB9CiAKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25DbGll
bnRQcm94eTo6ZGlkUmVjZWl2ZVJlc3VsdHMoY29uc3QgV2ViU3BlZWNoUmVjb2duaXRpb25IYW5k
bGUmIGhhbmRsZSwgY29uc3QgV2ViVmVjdG9yPFdlYlNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiYg
bmV3RmluYWxSZXN1bHRzLCBjb25zdCBXZWJWZWN0b3I8V2ViU3BlZWNoUmVjb2duaXRpb25SZXN1
bHQ+JiBjdXJyZW50SW50ZXJpbVJlc3VsdHMpCit7CisgICAgUmVmUHRyPFNwZWVjaFJlY29nbml0
aW9uPiByZWNvZ25pdGlvbiA9IFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb24+KGhhbmRsZSk7
CisKKyAgICBWZWN0b3I8UmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiA+IGZpbmFsUmVz
dWx0c1ZlY3RvcihuZXdGaW5hbFJlc3VsdHMuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG5ld0ZpbmFsUmVzdWx0cy5zaXplKCk7ICsraSkKKyAgICAgICAgZmluYWxSZXN1bHRz
VmVjdG9yW2ldID0gc3RhdGljX2Nhc3Q8UGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3Vs
dD4gPihuZXdGaW5hbFJlc3VsdHNbaV0pOworCisgICAgVmVjdG9yPFJlZlB0cjxTcGVlY2hSZWNv
Z25pdGlvblJlc3VsdD4gPiBpbnRlcmltUmVzdWx0c1ZlY3RvcihjdXJyZW50SW50ZXJpbVJlc3Vs
dHMuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGN1cnJlbnRJbnRlcmltUmVz
dWx0cy5zaXplKCk7ICsraSkKKyAgICAgICAgaW50ZXJpbVJlc3VsdHNWZWN0b3JbaV0gPSBzdGF0
aWNfY2FzdDxQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiA+KGN1cnJlbnRJbnRl
cmltUmVzdWx0c1tpXSk7CisKKyAgICByZWNvZ25pdGlvbi0+ZGlkUmVjZWl2ZVJlc3VsdHMoZmlu
YWxSZXN1bHRzVmVjdG9yLCBpbnRlcmltUmVzdWx0c1ZlY3Rvcik7Cit9CisKIHZvaWQgU3BlZWNo
UmVjb2duaXRpb25DbGllbnRQcm94eTo6ZGlkUmVjZWl2ZU5vTWF0Y2goY29uc3QgV2ViU3BlZWNo
UmVjb2duaXRpb25IYW5kbGUmIGhhbmRsZSwgY29uc3QgV2ViU3BlZWNoUmVjb2duaXRpb25SZXN1
bHQmIHJlc3VsdCkKIHsKICAgICBSZWZQdHI8U3BlZWNoUmVjb2duaXRpb24+IHJlY29nbml0aW9u
ID0gUGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvbj4oaGFuZGxlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaFJlY29nbml0aW9uQ2xpZW50UHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaFJlY29nbml0aW9uQ2xpZW50UHJveHku
aAppbmRleCA2MTk0ZjY2MDA3YWYyYmY3NjIxOThiZWZhMzIyZGM5ODE1ZmU3NjNhLi4xNTk1OGQ0
ZmJkNzYxNjY2YThiZTM2NmNmZWVmZmU4ZDdhNWVhYWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9TcGVlY2hSZWNvZ25pdGlvbkNsaWVudFByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoUmVjb2duaXRpb25DbGllbnRQcm94eS5oCkBA
IC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kU291bmQoY29u
c3QgV2ViU3BlZWNoUmVjb2duaXRpb25IYW5kbGUmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkRW5kQXVkaW8oY29uc3QgV2ViU3BlZWNoUmVjb2duaXRpb25IYW5kbGUmKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3VsdChjb25zdCBXZWJTcGVlY2hSZWNv
Z25pdGlvbkhhbmRsZSYsIGNvbnN0IFdlYlNwZWVjaFJlY29nbml0aW9uUmVzdWx0JiwgdW5zaWdu
ZWQgbG9uZyByZXN1bHRJbmRleCwgY29uc3QgV2ViVmVjdG9yPFdlYlNwZWVjaFJlY29nbml0aW9u
UmVzdWx0PiYgcmVzdWx0SGlzdG9yeSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVSZXN1bHRzKGNvbnN0IFdlYlNwZWVjaFJlY29nbml0aW9uSGFuZGxlJiwgY29uc3QgV2Vi
VmVjdG9yPFdlYlNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiYgbmV3RmluYWxSZXN1bHRzLCBjb25z
dCBXZWJWZWN0b3I8V2ViU3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+JiBjdXJyZW50SW50ZXJpbVJl
c3VsdHMpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTm9NYXRjaChjb25z
dCBXZWJTcGVlY2hSZWNvZ25pdGlvbkhhbmRsZSYsIGNvbnN0IFdlYlNwZWVjaFJlY29nbml0aW9u
UmVzdWx0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVFcnJvcihjb25z
dCBXZWJTcGVlY2hSZWNvZ25pdGlvbkhhbmRsZSYsIGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSwg
V2ViU3BlZWNoUmVjb2duaXplckNsaWVudDo6RXJyb3JDb2RlKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkU3RhcnQoY29uc3QgV2ViU3BlZWNoUmVjb2duaXRpb25IYW5kbGUmKSBPVkVS
UklERTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCA0MGJlNWRlMmNhYmNlODk2YTU5NWE2NmY1YmRjMWY5NTVhNDhiNzc2Li4yYWUyM2M5ZGU4YzVm
OTQzMmNlOTVhMTI5NGU0ZmNjZDViN2UzZmUxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTEtMjkgIFRvbW15
IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgU3BlZWNoIFJlY29n
bml0aW9uIEFQSTogVXBkYXRlIFNwZWVjaFJlY29nbml0aW9uRXZlbnQgdG8gbWF0Y2ggdGhlIHNw
ZWNpZmljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMzQwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENoYW5naW5nIHRoZSBtb2NrIHRvIHVzZSB0aGUgbmV3IHJlc3VsdHMgZGVsaXZlcnkgQVBJ
LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29n
bml6ZXIuY3BwOgorCiAyMDEyLTExLTI5ICBTdWRhcnNhbmEgTmFnaW5lbmkgIDxzdWRhcnNhbmEu
bmFnaW5lbmlAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gQWRkIHN1cHBvcnQgZm9y
IFBsYXRmb3JtV2ViVmlldzo6c2ltdWxhdGVNb3VzZU1vdmUoKSBpbiBUZXN0V2ViS2l0QVBJCmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVj
b2duaXplci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNo
UmVjb2duaXplci5jcHAKaW5kZXggODgxNDNjMGJhODg0YjMzZmRlNDkwYmUxYzNhNjViYWVlMTc2
ZWQ0Ni4uNDBkM2NiNGJhYTcwZDQ1ZGQ0ZGRlMjIzZTI3ZjUyMmI5N2FiZDUzYyAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIu
Y3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hSZWNv
Z25pemVyLmNwcApAQCAtNjksMTAgKzY5LDExIEBAIHB1YmxpYzoKICAgICAgICAgV2ViVmVjdG9y
PGZsb2F0PiBjb25maWRlbmNlcyhzdGF0aWNfY2FzdDxzaXplX3Q+KDEpKTsKICAgICAgICAgdHJh
bnNjcmlwdHNbMF0gPSBtX3RyYW5zY3JpcHQ7CiAgICAgICAgIGNvbmZpZGVuY2VzWzBdID0gbV9j
b25maWRlbmNlOwotICAgICAgICBXZWJTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCByZXM7Ci0gICAg
ICAgIHJlcy5hc3NpZ24odHJhbnNjcmlwdHMsIGNvbmZpZGVuY2VzLCB0cnVlKTsKKyAgICAgICAg
V2ViVmVjdG9yPFdlYlNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiBmaW5hbFJlc3VsdHMoc3RhdGlj
X2Nhc3Q8c2l6ZV90PigxKSk7CisgICAgICAgIFdlYlZlY3RvcjxXZWJTcGVlY2hSZWNvZ25pdGlv
blJlc3VsdD4gaW50ZXJpbVJlc3VsdHM7CisgICAgICAgIGZpbmFsUmVzdWx0c1swXS5hc3NpZ24o
dHJhbnNjcmlwdHMsIGNvbmZpZGVuY2VzLCB0cnVlKTsKIAotICAgICAgICBtX3JlY29nbml6ZXIt
PmNsaWVudCgpLT5kaWRSZWNlaXZlUmVzdWx0KG1fcmVjb2duaXplci0+aGFuZGxlKCksIHJlcywg
MCwgV2ViVmVjdG9yPFdlYlNwZWVjaFJlY29nbml0aW9uUmVzdWx0PigpKTsKKyAgICAgICAgbV9y
ZWNvZ25pemVyLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3VsdHMobV9yZWNvZ25pemVyLT5oYW5k
bGUoKSwgZmluYWxSZXN1bHRzLCBpbnRlcmltUmVzdWx0cyk7CiAgICAgfQogCiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDE4MDFjZjQ0N2U5ZmQxY2Y1NWM5ODgzNjZkMGM4OTc5YjQxN2Q1ZGMuLjEzMDY4YWY1
YzA4MzkwMWFiMjI4OThjNTM5ZTJjMzcyMzE3M2VhMjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxMi0xMS0yOSAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBTcGVlY2ggUmVjb2duaXRpb24gQVBJOiBVcGRhdGUgU3BlZWNoUmVjb2duaXRpb25FdmVu
dCB0byBtYXRjaCB0aGUgc3BlY2lmaWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNDA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXBkYXRpbmcgdGVzdHMuCisKKyAgICAgICAgKiBmYXN0L3Nw
ZWVjaC9zY3JpcHRlZC9lbW1hLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3NwZWVjaC9z
Y3JpcHRlZC9lbW1hLmh0bWw6CisgICAgICAgICogZmFzdC9zcGVlY2gvc2NyaXB0ZWQvc3BlZWNo
cmVjb2duaXRpb24tYmFzaWNzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3NwZWVjaC9z
Y3JpcHRlZC9zcGVlY2hyZWNvZ25pdGlvbi1iYXNpY3MuaHRtbDoKKwogMjAxMi0xMS0yOSAgS3dh
bmdZb25nIENob2kgIDxreTAuY2hvaUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBSZW1v
dmUgZHVwbGljYXRlZCBlbnRyaWVzIGZyb20gZWZsLXdrMS9UZXN0RXhwZWN0YXRpb25zCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9lbW1hLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3NjcmlwdGVkL2VtbWEtZXhwZWN0ZWQudHh0Cmlu
ZGV4IGZjM2ZiYWVhMGFjMWJiYTk3YjdiZWYwNDE3NDFkMGU5ODlmZWYzMzkuLjBmZmMxNjQ3OWQw
OWY1OTI3Njc5Yzk5ZWUwOTM5MDBjMDBkMDNmYjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3Qvc3BlZWNoL3NjcmlwdGVkL2VtbWEtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zh
c3Qvc3BlZWNoL3NjcmlwdGVkL2VtbWEtZXhwZWN0ZWQudHh0CkBAIC0xMCw5ICsxMCw5IEBAIG9u
YXVkaW9zdGFydAogb25zb3VuZHN0YXJ0CiBvbnNwZWVjaHN0YXJ0CiBvbnJlc3VsdAotUEFTUyBl
dmVudC5yZXN1bHQuZW1tYS5jaGlsZE5vZGVzLmxlbmd0aCBpcyAxCi1QQVNTIGV2ZW50LnJlc3Vs
dC5lbW1hLmZpcnN0Q2hpbGQubm9kZU5hbWUgaXMgImVtbWE6ZW1tYSIKLXdpbmRvdy5lbW1hID0g
ZXZlbnQucmVzdWx0LmVtbWEuZmlyc3RDaGlsZAorUEFTUyBldmVudC5lbW1hLmNoaWxkTm9kZXMu
bGVuZ3RoIGlzIDEKK1BBU1MgZXZlbnQuZW1tYS5maXJzdENoaWxkLm5vZGVOYW1lIGlzICJlbW1h
OmVtbWEiCit3aW5kb3cuZW1tYSA9IGV2ZW50LmVtbWEuZmlyc3RDaGlsZAogUEFTUyBlbW1hLmdl
dEF0dHJpYnV0ZSgidmVyc2lvbiIpIGlzICIxLjAiCiBQQVNTIGVtbWEuY2hpbGROb2Rlcy5sZW5n
dGggaXMgMQogUEFTUyBlbW1hLmZpcnN0Q2hpbGQubm9kZU5hbWUgaXMgImVtbWE6b25lLW9mIgpA
QCAtMzgsOSArMzgsOSBAQCB3aW5kb3cuZW1tYSA9IG51bGwKIHdpbmRvdy5vbmVvZiA9IG51bGwK
IHdpbmRvdy5pbnRlcnByZXRhdGlvbiA9IG51bGwKIHdpbmRvdy5saXRlcmFsID0gbnVsbAotZXZl
bnQucmVzdWx0LmVtbWEuY3VzdG9tUHJvcGVydHkgPSA0MgorZXZlbnQuZW1tYS5jdXN0b21Qcm9w
ZXJ0eSA9IDQyCiBnYygpCi1QQVNTIGV2ZW50LnJlc3VsdC5lbW1hLmN1c3RvbVByb3BlcnR5IGlz
IDQyCitQQVNTIGV2ZW50LmVtbWEuY3VzdG9tUHJvcGVydHkgaXMgNDIKIG9uc3BlZWNoZW5kCiBv
bnNvdW5kZW5kCiBvbmF1ZGlvZW5kCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVj
aC9zY3JpcHRlZC9lbW1hLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9l
bW1hLmh0bWwKaW5kZXggNjgzMTQ0M2FjMzEwMWFjYTQ3MTAzMTU3OTNlNjM1NWJiMzNkM2Q3NC4u
NjNiMmNmODc3ZmM3ODIxMjliNjRlODM2ZWEzMjdiMzdjZjg5NTRlMSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0ZWQvZW1tYS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3Qvc3BlZWNoL3NjcmlwdGVkL2VtbWEuaHRtbApAQCAtMjcsOSArMjcsOSBAQCBmdW5jdGlv
biBlbW1hVGVzdCgpIHsKIAogICAgIHIub25yZXN1bHQgPSBmdW5jdGlvbigpIHsKICAgICAgICAg
ZGVidWcoJ29ucmVzdWx0Jyk7Ci0gICAgICAgIHNob3VsZEJlKCdldmVudC5yZXN1bHQuZW1tYS5j
aGlsZE5vZGVzLmxlbmd0aCcsICcxJyk7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygn
ZXZlbnQucmVzdWx0LmVtbWEuZmlyc3RDaGlsZC5ub2RlTmFtZScsICdlbW1hOmVtbWEnKTsKLSAg
ICAgICAgZXZhbEFuZExvZygnd2luZG93LmVtbWEgPSBldmVudC5yZXN1bHQuZW1tYS5maXJzdENo
aWxkJyk7CisgICAgICAgIHNob3VsZEJlKCdldmVudC5lbW1hLmNoaWxkTm9kZXMubGVuZ3RoJywg
JzEnKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdldmVudC5lbW1hLmZpcnN0Q2hp
bGQubm9kZU5hbWUnLCAnZW1tYTplbW1hJyk7CisgICAgICAgIGV2YWxBbmRMb2coJ3dpbmRvdy5l
bW1hID0gZXZlbnQuZW1tYS5maXJzdENoaWxkJyk7CiAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygnZW1tYS5nZXRBdHRyaWJ1dGUoInZlcnNpb24iKScsICcxLjAnKTsKIAogICAgICAgICBz
aG91bGRCZSgnZW1tYS5jaGlsZE5vZGVzLmxlbmd0aCcsICcxJyk7CkBAIC01OCw5ICs1OCw5IEBA
IGZ1bmN0aW9uIGVtbWFUZXN0KCkgewogICAgICAgICBldmFsQW5kTG9nKCd3aW5kb3cub25lb2Yg
PSBudWxsJyk7CiAgICAgICAgIGV2YWxBbmRMb2coJ3dpbmRvdy5pbnRlcnByZXRhdGlvbiA9IG51
bGwnKTsKICAgICAgICAgZXZhbEFuZExvZygnd2luZG93LmxpdGVyYWwgPSBudWxsJyk7Ci0gICAg
ICAgIGV2YWxBbmRMb2coJ2V2ZW50LnJlc3VsdC5lbW1hLmN1c3RvbVByb3BlcnR5ID0gNDInKTsK
KyAgICAgICAgZXZhbEFuZExvZygnZXZlbnQuZW1tYS5jdXN0b21Qcm9wZXJ0eSA9IDQyJyk7CiAg
ICAgICAgIGV2YWxBbmRMb2coJ2djKCknKTsKLSAgICAgICAgc2hvdWxkQmUoJ2V2ZW50LnJlc3Vs
dC5lbW1hLmN1c3RvbVByb3BlcnR5JywgJzQyJyk7CisgICAgICAgIHNob3VsZEJlKCdldmVudC5l
bW1hLmN1c3RvbVByb3BlcnR5JywgJzQyJyk7CiAgICAgfQogCiAgICAgci5vbmVuZCA9IGZ1bmN0
aW9uKCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0ZWQvc3Bl
ZWNocmVjb2duaXRpb24tYmFzaWNzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc3Bl
ZWNoL3NjcmlwdGVkL3NwZWVjaHJlY29nbml0aW9uLWJhc2ljcy1leHBlY3RlZC50eHQKaW5kZXgg
NDEyZWQyYjRkOWYzMzA5MDg0NmIwNmY4NGMxMjI2MTcxM2JjZmIyYS4uODkzM2VjZmU5OGNlODc4
NjIwNDFjYjkyMWUyMjM5YTYxNGQ1NjE4NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9z
cGVlY2gvc2NyaXB0ZWQvc3BlZWNocmVjb2duaXRpb24tYmFzaWNzLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9zcGVlY2hyZWNvZ25pdGlvbi1iYXNp
Y3MtZXhwZWN0ZWQudHh0CkBAIC0xNyw5ICsxNywxMSBAQCBvbnNwZWVjaHN0YXJ0CiBQQVNTIGNv
dW50IGlzIDMKIG9ucmVzdWx0CiBQQVNTIGNvdW50IGlzIDQKLVBBU1MgZXZlbnQucmVzdWx0Lmxl
bmd0aCBpcyAxCi1QQVNTIGV2ZW50LnJlc3VsdC5pdGVtKDApLnRyYW5zY3JpcHQgaXMgImhlbGxv
LCB3b3JsZCIKLVBBU1MgZXZlbnQucmVzdWx0Lml0ZW0oMCkuY29uZmlkZW5jZSBpcyB3aXRoaW4g
MC4wMDEgb2YgMC40MgorUEFTUyBldmVudC5yZXN1bHRzLmxlbmd0aCBpcyAxCitQQVNTIGV2ZW50
LnJlc3VsdHNbMF0ubGVuZ3RoIGlzIDEKK1BBU1MgZXZlbnQucmVzdWx0c1swXS5pc0ZpbmFsIGlz
IHRydWUKK1BBU1MgZXZlbnQucmVzdWx0c1swXS5pdGVtKDApLnRyYW5zY3JpcHQgaXMgImhlbGxv
LCB3b3JsZCIKK1BBU1MgZXZlbnQucmVzdWx0c1swXS5pdGVtKDApLmNvbmZpZGVuY2UgaXMgd2l0
aGluIDAuMDAxIG9mIDAuNDIKIG9uc3BlZWNoZW5kCiBQQVNTIGNvdW50IGlzIDUKIG9uc291bmRl
bmQKQEAgLTQwLDcgKzQyLDcgQEAgb25zcGVlY2hzdGFydAogUEFTUyBjb3VudCBpcyAzCiBvbm5v
bWF0Y2gKIFBBU1MgY291bnQgaXMgNAotUEFTUyBldmVudC5yZXN1bHQgaXMgbnVsbAorUEFTUyBl
dmVudC5yZXN1bHRzIGlzIG51bGwKIG9uc3BlZWNoZW5kCiBQQVNTIGNvdW50IGlzIDUKIG9uc291
bmRlbmQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3NjcmlwdGVkL3NwZWVj
aHJlY29nbml0aW9uLWJhc2ljcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0
ZWQvc3BlZWNocmVjb2duaXRpb24tYmFzaWNzLmh0bWwKaW5kZXggMTE5MTk4OTQ4MTM5NzNlMmQx
OWI1ZjA3MjA4NDhmMDJlNTJmNzhhMi4uYTEyNzRhZGNkZGYwMzM2ZDI2MTE5YzM0NGNmMjYyYjll
YTRlYWM3ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0ZWQvc3Bl
ZWNocmVjb2duaXRpb24tYmFzaWNzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gv
c2NyaXB0ZWQvc3BlZWNocmVjb2duaXRpb24tYmFzaWNzLmh0bWwKQEAgLTI5LDkgKzI5LDExIEBA
IGZ1bmN0aW9uIG9uZU1hdGNoVGVzdCgpIHsKICAgICAgICAgZGVidWcoJ29ucmVzdWx0Jyk7CiAg
ICAgICAgIHNob3VsZEJlKCdjb3VudCcsICc0Jyk7CiAgICAgICAgICsrY291bnQ7Ci0gICAgICAg
IHNob3VsZEJlKCdldmVudC5yZXN1bHQubGVuZ3RoJywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCdldmVudC5yZXN1bHQuaXRlbSgwKS50cmFuc2NyaXB0JywgJ2hlbGxvLCB3
b3JsZCcpOwotICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2V2ZW50LnJlc3VsdC5pdGVtKDApLmNv
bmZpZGVuY2UnLCAwLjQyLCAxZS0zKTsKKyAgICAgICAgc2hvdWxkQmUoJ2V2ZW50LnJlc3VsdHMu
bGVuZ3RoJywgJzEnKTsKKyAgICAgICAgc2hvdWxkQmUoJ2V2ZW50LnJlc3VsdHNbMF0ubGVuZ3Ro
JywgJzEnKTsKKyAgICAgICAgc2hvdWxkQmUoJ2V2ZW50LnJlc3VsdHNbMF0uaXNGaW5hbCcsICd0
cnVlJyk7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZXZlbnQucmVzdWx0c1swXS5p
dGVtKDApLnRyYW5zY3JpcHQnLCAnaGVsbG8sIHdvcmxkJyk7CisgICAgICAgIHNob3VsZEJlQ2xv
c2VUbygnZXZlbnQucmVzdWx0c1swXS5pdGVtKDApLmNvbmZpZGVuY2UnLCAwLjQyLCAxZS0zKTsK
ICAgICB9CiAKICAgICByLm9uc3BlZWNoZW5kID0gICAgIGZ1bmN0aW9uKCkgeyBkZWJ1Zygnb25z
cGVlY2hlbmQnKTsgICBzaG91bGRCZSgnY291bnQnLCAnNScpOyArK2NvdW50OyB9CkBAIC02NSw3
ICs2Nyw3IEBAIGZ1bmN0aW9uIG5vTWF0Y2hUZXN0KCkgewogICAgICAgICBkZWJ1Zygnb25ub21h
dGNoJyk7CiAgICAgICAgIHNob3VsZEJlKCdjb3VudCcsICc0Jyk7CiAgICAgICAgICsrY291bnQ7
Ci0gICAgICAgIHNob3VsZEJlKCdldmVudC5yZXN1bHQnLCAnbnVsbCcpOworICAgICAgICBzaG91
bGRCZSgnZXZlbnQucmVzdWx0cycsICdudWxsJyk7CiAgICAgfQogCiAgICAgci5vbnNwZWVjaGVu
ZCA9ICAgICBmdW5jdGlvbigpIHsgZGVidWcoJ29uc3BlZWNoZW5kJyk7ICAgc2hvdWxkQmUoJ2Nv
dW50JywgJzUnKTsgKytjb3VudDsgfQo=
</data>
<flag name="commit-queue"
          id="192852"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176920</attachid>
            <date>2012-11-30 01:28:28 -0800</date>
            <delta_ts>2012-12-03 01:17:34 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-103407-20121130102600.patch</filename>
            <type>text/plain</type>
            <size>36772</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWZhNzUyM2ZkZjVlNjMw
MGQ0ZGQ0ODlkYjBkODNiYzk1OTg3MWYwMS4uNWVjOTRiMGRlNWIyN2M4YmQ0OTc1MTliMDRjMWY4
MDMwM2RjNDZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTExLTI5ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIFNwZWVjaCBSZWNv
Z25pdGlvbiBBUEk6IFVwZGF0ZSBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50L1Jlc3VsdCB0byBtYXRj
aCB0aGUgc3BlY2lmaWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTAzNDA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGRvZXMgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgbyBBZGRzIHJl
c3VsdHMsIGFuZCByZW1vdmluZyByZXN1bHQgb24gU3BlZWNoUmVjb2duaXRpb25FdmVudAorICAg
ICAgICBvIFJlbmFtaW5nIFNwZWVjaFJlY29nbml0aW9uUmVzdWx0OjpmaW5hbCB0byBpc0ZpbmFs
CisgICAgICAgIG8gTW92aW5nIGVtbWEgdG8gU3BlZWNoUmVjb2duaXRpb25FdmVudCBmcm9tIFNw
ZWVjaFJlY29nbml0aW9uUmVzdWx0CisKKyAgICAgICAgRXhpc3RpbmcgdGVzdHMgdXBkYXRlZCB0
byB0ZXN0IHRoZSBuZXcgQVBJLgorCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb246OnN0YXJ0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uOjpkaWRSZWNlaXZlUmVzdWx0
cyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hS
ZWNvZ25pdGlvbi5oOgorICAgICAgICAoU3BlZWNoUmVjb2duaXRpb24pOgorICAgICAgICAqIE1v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25FdmVudDo6Y3JlYXRlUmVzdWx0KToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FdmVudDo6U3BlZWNoUmVj
b2duaXRpb25FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkV2ZW50
Ojp+U3BlZWNoUmVjb2duaXRpb25FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjplbW1hUXVhbGlm
aWVkTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkV2ZW50OjplbW1h
KToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkV2ZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNwZWVjaFJlY29nbml0aW9uRXZlbnRJbml0KToK
KyAgICAgICAgKFNwZWVjaFJlY29nbml0aW9uRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25FdmVudDo6cmVzdWx0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25FdmVudDo6cmVzdWx0cyk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb25FdmVudC5pZGw6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoUmVjb2duaXRpb25SZXN1bHQuY3BwOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uUmVzdWx0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blJlc3VsdDo6aXNGaW5hbCk6CisgICAgICAgIChTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCk6Cisg
ICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXN1bHQuaWRsOgorICAg
ICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhTcGVl
Y2hSZWNvZ25pdGlvbkV2ZW50Q3VzdG9tLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNwZWVjaFJlY29nbml0aW9uUmVzdWx0Q3VzdG9tLmNwcC4K
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhTcGVlY2hSZWNvZ25pdGlv
bkV2ZW50OjpvcGFxdWVSb290Rm9yR0MpOgorCiAyMDEyLTExLTI5ICBGbG9yaW4gTWFsaXRhICA8
Zm1hbGl0YUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1NraWFdIEFkZCBtaXNzaW5nIE9wYXF1
ZVJlZ2lvblNraWEgbm90aWZpZXIgY2FsbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
ZDQyMGFiYjAzYjlhMTg1MDMwZThkMTBmZTc0MDI2Y2Y1OTlkZDA0MC4uNDNmNWQ0MDQ5NDAzMzA1
MDRkZTJkMGI1NmQ4NDEyOWIwNGNjZjIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOSBAQAorMjAxMi0xMS0yOSAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29v
Z2xlLmNvbT4KKworICAgICAgICBTcGVlY2ggUmVjb2duaXRpb24gQVBJOiBVcGRhdGUgU3BlZWNo
UmVjb2duaXRpb25FdmVudCB0byBtYXRjaCB0aGUgc3BlY2lmaWNhdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNDA3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBBZGRpbmcgdGhlIG5ldyBkaWRSZWNlaXZl
UmVzdWx0cyBtZXRob2QuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViU3BlZWNoUmVjb2duaXplckNs
aWVudC5oOgorICAgICAgICAqIHNyYy9TcGVlY2hSZWNvZ25pdGlvbkNsaWVudFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25DbGllbnRQcm94eTo6ZGlkUmVjZWl2
ZVJlc3VsdHMpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvU3BlZWNoUmVjb2du
aXRpb25DbGllbnRQcm94eS5oOgorICAgICAgICAoU3BlZWNoUmVjb2duaXRpb25DbGllbnRQcm94
eSk6CisKIDIwMTItMTEtMjkgIEZsb3JpbiBNYWxpdGEgIDxmbWFsaXRhQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbU2tpYV0gQWRkIG1pc3NpbmcgT3BhcXVlUmVnaW9uU2tpYSBub3RpZmllciBj
YWxscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXRpb24uY3BwCmluZGV4IDQxZjQ5OGZhOWU4NTRmYzZmZWYxYTg2NjZiN2E0NzVmMzQzNGY4NmIu
LmJlZGE4Mjc4ZmMzZjZkM2I5NTljN2E2ZmNkMDBlODM3Zjc4MWM1N2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAKQEAgLTU0
LDYgKzU0LDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvbjo6c3RhcnQoRXhjZXB0aW9uQ29kZSYg
ZWMpCiAgICAgfQogCiAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOworICAgIG1fZmluYWxS
ZXN1bHRzLmNsZWFyKCk7CiAgICAgbV9jb250cm9sbGVyLT5zdGFydCh0aGlzLCBtX2dyYW1tYXJz
LmdldCgpLCBtX2xhbmcsIG1fY29udGludW91cywgbV9pbnRlcmltUmVzdWx0cywgbV9tYXhBbHRl
cm5hdGl2ZXMpOwogICAgIG1fc3RhcnRlZCA9IHRydWU7CiB9CkBAIC0xMDUsNiArMTA2LDIwIEBA
IHZvaWQgU3BlZWNoUmVjb2duaXRpb246OmRpZFJlY2VpdmVSZXN1bHQoUGFzc1JlZlB0cjxTcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdD4gcmVzCiAgICAgZGlzcGF0Y2hFdmVudChTcGVlY2hSZWNvZ25p
dGlvbkV2ZW50OjpjcmVhdGVSZXN1bHQocmVzdWx0LCByZXN1bHRJbmRleCwgcmVzdWx0SGlzdG9y
eSkpOwogfQogCit2b2lkIFNwZWVjaFJlY29nbml0aW9uOjpkaWRSZWNlaXZlUmVzdWx0cyhjb25z
dCBWZWN0b3I8UmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiA+JiBuZXdGaW5hbFJlc3Vs
dHMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+ID4mIGN1cnJl
bnRJbnRlcmltUmVzdWx0cykKK3sKKyAgICB1bnNpZ25lZCBsb25nIHJlc3VsdEluZGV4ID0gbV9m
aW5hbFJlc3VsdHMuc2l6ZSgpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuZXdGaW5h
bFJlc3VsdHMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fZmluYWxSZXN1bHRzLmFwcGVuZChuZXdG
aW5hbFJlc3VsdHNbaV0pOworCisgICAgVmVjdG9yPFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJl
c3VsdD4gPiByZXN1bHRzID0gbV9maW5hbFJlc3VsdHM7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBjdXJyZW50SW50ZXJpbVJlc3VsdHMuc2l6ZSgpOyArK2kpCisgICAgICAgIHJlc3VsdHMu
YXBwZW5kKGN1cnJlbnRJbnRlcmltUmVzdWx0c1tpXSk7CisKKyAgICBkaXNwYXRjaEV2ZW50KFNw
ZWVjaFJlY29nbml0aW9uRXZlbnQ6OmNyZWF0ZVJlc3VsdChyZXN1bHRJbmRleCwgcmVzdWx0cykp
OworfQorCiB2b2lkIFNwZWVjaFJlY29nbml0aW9uOjpkaWRSZWNlaXZlTm9NYXRjaChQYXNzUmVm
UHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiByZXN1bHQpCiB7CiAgICAgZGlzcGF0Y2hFdmVu
dChTcGVlY2hSZWNvZ25pdGlvbkV2ZW50OjpjcmVhdGVOb01hdGNoKHJlc3VsdCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmgKaW5kZXgg
YjVjYTRkZDBhZmQzYjM4NDdiNjVjZTAwNTZiODI2ZDI3ZTRkM2I2ZS4uNjQzZGRhOGI4MzE5OGIx
ODk4MzJhNWU1NzFkMjRlMWJhZmFhOTI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5oCkBAIC03Myw2ICs3Myw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRpZEVuZFNwZWVjaCgpOwogICAgIHZvaWQgZGlkRW5kU291bmQoKTsKICAgICB2
b2lkIGRpZEVuZEF1ZGlvKCk7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzdWx0cyhjb25zdCBWZWN0
b3I8UmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiA+JiBuZXdGaW5hbFJlc3VsdHMsIGNv
bnN0IFZlY3RvcjxSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+ID4mIGN1cnJlbnRJbnRl
cmltUmVzdWx0cyk7CisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG9uY2Ugd2Ugc3RhcnQgdXNp
bmcgZGlkUmVjZWl2ZVJlc3VsdHMuCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzdWx0KFBhc3NSZWZQ
dHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+LCB1bnNpZ25lZCBsb25nIHJlc3VsdEluZGV4LCBQ
YXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdD4gcmVzdWx0SGlzdG9yeSk7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlTm9NYXRjaChQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVz
dWx0Pik7CiAgICAgdm9pZCBkaWRSZWNlaXZlRXJyb3IoUGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25p
dGlvbkVycm9yPik7CkBAIC0xMjQsNiArMTI2LDcgQEAgcHJpdmF0ZToKICAgICBTcGVlY2hSZWNv
Z25pdGlvbkNvbnRyb2xsZXIqIG1fY29udHJvbGxlcjsKICAgICBib29sIG1fc3RvcHBlZEJ5QWN0
aXZlRE9NT2JqZWN0OwogICAgIGJvb2wgbV9zdGFydGVkOworICAgIFZlY3RvcjxSZWZQdHI8U3Bl
ZWNoUmVjb2duaXRpb25SZXN1bHQ+ID4gbV9maW5hbFJlc3VsdHM7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvbkV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uRXZlbnQuY3BwCmluZGV4IGUyYThmN2ExZmUwODZmNDQ1MDhiMGYz
NDU5NzkwZjE4ZjljNTA3ZTYuLjIwMjI3ZGI1NTFmNmEwMmQ3NmRjNTIyZDNmNGVhZGQ4MGNlZGRi
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29n
bml0aW9uRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uRXZlbnQuY3BwCkBAIC0yOSw2ICsyOSwxMCBAQAogCiAjaW5jbHVkZSAiU3Bl
ZWNoUmVjb2duaXRpb25FdmVudC5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRl
ICJFbGVtZW50LmgiCisjaW5jbHVkZSAiVGV4dC5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFNwZWVjaFJlY29nbml0aW9uRXZlbnRJbml0OjpTcGVlY2hSZWNvZ25pdGlvbkV2ZW50SW5pdCgp
CkBAIC01MSw2ICs1NSwxMSBAQCBQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uRXZlbnQ+IFNw
ZWVjaFJlY29nbml0aW9uRXZlbnQ6OmNyZWF0ZVJlc3VsdChQYXNzUmVmUAogICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU3BlZWNoUmVjb2duaXRpb25FdmVudChldmVudE5hbWVzKCkucmVzdWx0RXZl
bnQsIHJlc3VsdCwgcmVzdWx0SW5kZXgsIHJlc3VsdEhpc3RvcnkpKTsKIH0KIAorUGFzc1JlZlB0
cjxTcGVlY2hSZWNvZ25pdGlvbkV2ZW50PiBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50OjpjcmVhdGVS
ZXN1bHQodW5zaWduZWQgbG9uZyByZXN1bHRJbmRleCwgY29uc3QgVmVjdG9yPFJlZlB0cjxTcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdD4gPiYgcmVzdWx0cykKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFNwZWVjaFJlY29nbml0aW9uRXZlbnQoZXZlbnROYW1lcygpLnJlc3VsdEV2ZW50LCByZXN1
bHRJbmRleCwgcmVzdWx0cykpOworfQorCiBQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uRXZl
bnQ+IFNwZWVjaFJlY29nbml0aW9uRXZlbnQ6OmNyZWF0ZU5vTWF0Y2goUGFzc1JlZlB0cjxTcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdD4gcmVzdWx0KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U3BlZWNoUmVjb2duaXRpb25FdmVudChldmVudE5hbWVzKCkubm9tYXRjaEV2ZW50LCByZXN1bHQs
IDAsIDApKTsKQEAgLTY4LDIwICs3Nyw4MCBAQCBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50OjpTcGVl
Y2hSZWNvZ25pdGlvbkV2ZW50KCkKIAogU3BlZWNoUmVjb2duaXRpb25FdmVudDo6U3BlZWNoUmVj
b2duaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSwgY29uc3QgU3BlZWNo
UmVjb2duaXRpb25FdmVudEluaXQmIGluaXRpYWxpemVyKQogICAgIDogRXZlbnQoZXZlbnROYW1l
LCBpbml0aWFsaXplcikKLSAgICAsIG1fcmVzdWx0KGluaXRpYWxpemVyLnJlc3VsdCkKICAgICAs
IG1fcmVzdWx0SW5kZXgoaW5pdGlhbGl6ZXIucmVzdWx0SW5kZXgpCisgICAgLCBtX3Jlc3VsdChp
bml0aWFsaXplci5yZXN1bHQpCiAgICAgLCBtX3Jlc3VsdEhpc3RvcnkoaW5pdGlhbGl6ZXIucmVz
dWx0SGlzdG9yeSkKIHsKIH0KIAogU3BlZWNoUmVjb2duaXRpb25FdmVudDo6U3BlZWNoUmVjb2du
aXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSwgUGFzc1JlZlB0cjxTcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdD4gcmVzdWx0LCBzaG9ydCByZXN1bHRJbmRleCwgUGFzc1JlZlB0
cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3Q+IHJlc3VsdEhpc3RvcnkpCiAgICAgOiBFdmVu
dChldmVudE5hbWUsIC8qY2FuQnViYmxlPSovZmFsc2UsIC8qY2FuY2VsYWJsZT0qL2ZhbHNlKQot
ICAgICwgbV9yZXN1bHQocmVzdWx0KQogICAgICwgbV9yZXN1bHRJbmRleChyZXN1bHRJbmRleCkK
KyAgICAsIG1fcmVzdWx0KHJlc3VsdCkKICAgICAsIG1fcmVzdWx0SGlzdG9yeShyZXN1bHRIaXN0
b3J5KQogewogfQogCitTcGVlY2hSZWNvZ25pdGlvbkV2ZW50OjpTcGVlY2hSZWNvZ25pdGlvbkV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lLCB1bnNpZ25lZCBsb25nIHJlc3VsdElu
ZGV4LCBjb25zdCBWZWN0b3I8UmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiA+JiByZXN1
bHRzKQorICAgIDogRXZlbnQoZXZlbnROYW1lLCAvKmNhbkJ1YmJsZT0qL2ZhbHNlLCAvKmNhbmNl
bGFibGU9Ki9mYWxzZSkKKyAgICAsIG1fcmVzdWx0SW5kZXgocmVzdWx0SW5kZXgpCisgICAgLCBt
X3Jlc3VsdHMoU3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0OjpjcmVhdGUocmVzdWx0cykpCit7
Cit9CisKK1NwZWVjaFJlY29nbml0aW9uRXZlbnQ6On5TcGVlY2hSZWNvZ25pdGlvbkV2ZW50KCkK
K3sKK30KKworc3RhdGljIFF1YWxpZmllZE5hbWUgZW1tYVF1YWxpZmllZE5hbWUoY29uc3QgY2hh
ciogbG9jYWxOYW1lKQoreworICAgIGNvbnN0IGNoYXIgZW1tYU5hbWVzcGFjZVVybFtdID0gImh0
dHA6Ly93d3cudzMub3JnLzIwMDMvMDQvZW1tYSI7CisgICAgcmV0dXJuIFF1YWxpZmllZE5hbWUo
ImVtbWEiLCBsb2NhbE5hbWUsIGVtbWFOYW1lc3BhY2VVcmwpOworfQorCitEb2N1bWVudCogU3Bl
ZWNoUmVjb2duaXRpb25FdmVudDo6ZW1tYSgpCit7CisgICAgaWYgKG1fZW1tYSkKKyAgICAgICAg
cmV0dXJuIG1fZW1tYS5nZXQoKTsKKworICAgIFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSBE
b2N1bWVudDo6Y3JlYXRlKDAsIEtVUkwoKSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fcmVzdWx0cy0+bGVuZ3RoKCk7ICsraSkgeworICAgICAgICBSZWZQdHI8U3BlZWNoUmVjb2du
aXRpb25SZXN1bHQ+IHJlc3VsdCA9IG1fcmVzdWx0cy0+aXRlbSgwKTsKKworICAgICAgICBSZWZQ
dHI8RWxlbWVudD4gZW1tYUVsZW1lbnQgPSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVudChlbW1hUXVh
bGlmaWVkTmFtZSgiZW1tYSIpLCBmYWxzZSk7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OworICAgICAgICBlbW1hRWxlbWVudC0+c2V0QXR0cmlidXRlKCJ2ZXJzaW9uIiwgIjEuMCIsIGVj
KTsKKyAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgIGlmIChlYykKKyAgICAgICAgICAgIHJl
dHVybiAwOworCisgICAgICAgIFJlZlB0cjxFbGVtZW50PiBvbmVPZiA9IGRvY3VtZW50LT5jcmVh
dGVFbGVtZW50KGVtbWFRdWFsaWZpZWROYW1lKCJvbmUtb2YiKSwgZmFsc2UpOworICAgICAgICBv
bmVPZi0+c2V0QXR0cmlidXRlKGVtbWFRdWFsaWZpZWROYW1lKCJtZWRpdW0iKSwgImFjb3VzdGlj
Iik7CisgICAgICAgIG9uZU9mLT5zZXRBdHRyaWJ1dGUoZW1tYVF1YWxpZmllZE5hbWUoIm1vZGUi
KSwgInZvaWNlIik7CisgICAgICAgIG9uZU9mLT5zZXRJZEF0dHJpYnV0ZSgib25lLW9mIik7CisK
KyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXN1bHQtPmxlbmd0aCgpOyArK2kpIHsK
KyAgICAgICAgICAgIGNvbnN0IFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvbkFsdGVybmF0aXZlPiYg
YWx0ZXJuYXRpdmUgPSByZXN1bHQtPml0ZW0oaSk7CisKKyAgICAgICAgICAgIFJlZlB0cjxFbGVt
ZW50PiBpbnRlcnByZXRhdGlvbiA9IGRvY3VtZW50LT5jcmVhdGVFbGVtZW50KGVtbWFRdWFsaWZp
ZWROYW1lKCJpbnRlcnByZXRhdGlvbiIpLCBmYWxzZSk7CisgICAgICAgICAgICBpbnRlcnByZXRh
dGlvbi0+c2V0SWRBdHRyaWJ1dGUoU3RyaW5nOjpudW1iZXIoaSArIDEpKTsKKyAgICAgICAgICAg
IGludGVycHJldGF0aW9uLT5zZXRBdHRyaWJ1dGUoZW1tYVF1YWxpZmllZE5hbWUoImNvbmZpZGVu
Y2UiKSwgU3RyaW5nOjpudW1iZXIoYWx0ZXJuYXRpdmUtPmNvbmZpZGVuY2UoKSkpOworCisgICAg
ICAgICAgICBSZWZQdHI8RWxlbWVudD4gbGl0ZXJhbCA9IGRvY3VtZW50LT5jcmVhdGVFbGVtZW50
KGVtbWFRdWFsaWZpZWROYW1lKCJsaXRlcmFsIiksIGZhbHNlKTsKKyAgICAgICAgICAgIGxpdGVy
YWwtPmFwcGVuZENoaWxkKGRvY3VtZW50LT5jcmVhdGVUZXh0Tm9kZShhbHRlcm5hdGl2ZS0+dHJh
bnNjcmlwdCgpKSk7CisgICAgICAgICAgICBpbnRlcnByZXRhdGlvbi0+YXBwZW5kQ2hpbGQobGl0
ZXJhbC5yZWxlYXNlKCkpOworICAgICAgICAgICAgb25lT2YtPmFwcGVuZENoaWxkKGludGVycHJl
dGF0aW9uLnJlbGVhc2UoKSk7CisgICAgICAgIH0KKworICAgICAgICBlbW1hRWxlbWVudC0+YXBw
ZW5kQ2hpbGQob25lT2YucmVsZWFzZSgpKTsKKyAgICAgICAgZG9jdW1lbnQtPmFwcGVuZENoaWxk
KGVtbWFFbGVtZW50LnJlbGVhc2UoKSk7CisgICAgfQorCisgICAgbV9lbW1hID0gZG9jdW1lbnQ7
CisgICAgcmV0dXJuIG1fZW1tYS5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKFNDUklQVEVEX1NQRUVDSCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXZlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXZlbnQuaAppbmRleCBkNDQ1
YzNhOGRkZmI4MDQ3YmU4Nzk5YjQwZjFjMjE3OTljMzRhZWYwLi42YTYxNmE3ZDVhZDY1ODc4NjM5
ZTY4ODAxZWY0MGYxYzRiZmFjMmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FdmVudC5oCkBAIC0zNiw2ICszNiw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTcGVlY2hSZWNv
Z25pdGlvbkVycm9yOwogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25SZXN1bHQ7CiBjbGFzcyBTcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdExpc3Q7CkBAIC00MywyMSArNDQsMzIgQEAgY2xhc3MgU3BlZWNo
UmVjb2duaXRpb25SZXN1bHRMaXN0Owogc3RydWN0IFNwZWVjaFJlY29nbml0aW9uRXZlbnRJbml0
IDogcHVibGljIEV2ZW50SW5pdCB7CiAgICAgU3BlZWNoUmVjb2duaXRpb25FdmVudEluaXQoKTsK
IAorICAgIC8vIERFUFJFQ0FURUQKICAgICBSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+
IHJlc3VsdDsKLSAgICBzaG9ydCByZXN1bHRJbmRleDsKICAgICBSZWZQdHI8U3BlZWNoUmVjb2du
aXRpb25SZXN1bHRMaXN0PiByZXN1bHRIaXN0b3J5OworCisgICAgc2hvcnQgcmVzdWx0SW5kZXg7
CisgICAgUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdD4gcmVzdWx0czsKIH07CiAK
IGNsYXNzIFNwZWVjaFJlY29nbml0aW9uRXZlbnQgOiBwdWJsaWMgRXZlbnQgewogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uRXZlbnQ+IGNyZWF0ZSgpOwog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmLCBjb25zdCBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50SW5pdCYpOworICAg
IHZpcnR1YWwgflNwZWVjaFJlY29nbml0aW9uRXZlbnQoKTsKIAorICAgIC8vIERFUFJFQ0FURUQK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvbkV2ZW50PiBjcmVhdGVSZXN1
bHQoUGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4sIHNob3J0IHJlc3VsdEluZGV4
LCBQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdD4gcmVzdWx0SGlzdG9yeSk7
CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvbkV2ZW50PiBjcmVhdGVS
ZXN1bHQodW5zaWduZWQgbG9uZyByZXN1bHRJbmRleCwgY29uc3QgVmVjdG9yPFJlZlB0cjxTcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdD4gPiYgcmVzdWx0cyk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
U3BlZWNoUmVjb2duaXRpb25FdmVudD4gY3JlYXRlTm9NYXRjaChQYXNzUmVmUHRyPFNwZWVjaFJl
Y29nbml0aW9uUmVzdWx0Pik7CiAKKyAgICB1bnNpZ25lZCBsb25nIHJlc3VsdEluZGV4KCkgY29u
c3QgeyByZXR1cm4gbV9yZXN1bHRJbmRleDsgfQorICAgIFNwZWVjaFJlY29nbml0aW9uUmVzdWx0
TGlzdCogcmVzdWx0cygpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0cy5nZXQoKTsgfQorICAgIERv
Y3VtZW50KiBlbW1hKCk7CisKKyAgICAvLyBERVBSRUNBVEVECiAgICAgU3BlZWNoUmVjb2duaXRp
b25SZXN1bHQqIHJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0LmdldCgpOyB9Ci0gICAg
c2hvcnQgcmVzdWx0SW5kZXgoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdEluZGV4OyB9IC8vIEZJ
WE1FOiBTcGVjIHNheXMgdGhpcyBzaG91bGQgYmUgc2hvcnQsIGJ1dCBvdGhlciBpbmRpY2VzIGFy
ZSB1bnNpZ25lZCBpbnRzLgogICAgIFNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdCogcmVzdWx0
SGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0SGlzdG9yeS5nZXQoKTsgfQogCiAgICAg
Ly8gRXZlbnQKQEAgLTY2LDExICs3OCwxNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNwZWVj
aFJlY29nbml0aW9uRXZlbnQoKTsKICAgICBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYsIGNvbnN0IFNwZWVjaFJlY29nbml0aW9uRXZlbnRJbml0Jik7Ci0gICAgU3Bl
ZWNoUmVjb2duaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSwgUGFzc1Jl
ZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4sIHNob3J0IHJlc3VsdEluZGV4LCBQYXNzUmVm
UHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdD4gcmVzdWx0SGlzdG9yeSk7CisgICAgU3Bl
ZWNoUmVjb2duaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSwgUGFzc1Jl
ZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4sIHNob3J0IHJlc3VsdEluZGV4LCBQYXNzUmVm
UHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdD4gcmVzdWx0SGlzdG9yeSk7IC8vIEZJWE1F
OiBSZW1vdmUuCisgICAgU3BlZWNoUmVjb2duaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50TmFtZSwgdW5zaWduZWQgbG9uZyByZXN1bHRJbmRleCwgY29uc3QgVmVjdG9yPFJlZlB0
cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4gPiYgcmVzdWx0cyk7CiAgICAgZXhwbGljaXQgU3Bl
ZWNoUmVjb2duaXRpb25FdmVudChQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uRXJyb3I+KTsK
IAorICAgIHVuc2lnbmVkIGxvbmcgbV9yZXN1bHRJbmRleDsKKyAgICBSZWZQdHI8U3BlZWNoUmVj
b2duaXRpb25SZXN1bHRMaXN0PiBtX3Jlc3VsdHM7CisgICAgUmVmUHRyPERvY3VtZW50PiBtX2Vt
bWE7CisKKyAgICAvLyBERVBSRUNBVEVECiAgICAgUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVz
dWx0PiBtX3Jlc3VsdDsKLSAgICBzaG9ydCBtX3Jlc3VsdEluZGV4OwogICAgIFJlZlB0cjxTcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdExpc3Q+IG1fcmVzdWx0SGlzdG9yeTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXZlbnQu
aWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FdmVu
dC5pZGwKaW5kZXggOGViNzg5YzBjMGM5NTA4N2JkMDA1Mzc0MTIxMjc0MTFlNWM2NjcyNi4uNTky
ZDIxYmQ5ZjM0YjFjODE1NmU2ODFlNWNiYmJhODgyOWNmYWYxMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FdmVudC5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FdmVudC5pZGwK
QEAgLTI1LDkgKzI1LDE1IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1TQ1JJUFRFRF9TUEVFQ0gs
Ci0gICAgQ29uc3RydWN0b3JUZW1wbGF0ZT1FdmVudAorICAgIENvbnN0cnVjdG9yVGVtcGxhdGU9
RXZlbnQsCisgICAgQ3VzdG9tSXNSZWFjaGFibGUsCisgICAgVjhEZXBlbmRlbnRMaWZldGltZQog
XSBpbnRlcmZhY2UgU3BlZWNoUmVjb2duaXRpb25FdmVudCA6IEV2ZW50IHsKKyAgICAvLyBERVBS
RUNBVEVECiAgICAgW0luaXRpYWxpemVkQnlFdmVudENvbnN0cnVjdG9yXSByZWFkb25seSBhdHRy
aWJ1dGUgU3BlZWNoUmVjb2duaXRpb25SZXN1bHQgcmVzdWx0OwotICAgIFtJbml0aWFsaXplZEJ5
RXZlbnRDb25zdHJ1Y3Rvcl0gcmVhZG9ubHkgYXR0cmlidXRlIHNob3J0IHJlc3VsdEluZGV4Owog
ICAgIFtJbml0aWFsaXplZEJ5RXZlbnRDb25zdHJ1Y3Rvcl0gcmVhZG9ubHkgYXR0cmlidXRlIFNw
ZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdCByZXN1bHRIaXN0b3J5OworCisgICAgW0luaXRpYWxp
emVkQnlFdmVudENvbnN0cnVjdG9yXSByZWFkb25seSBhdHRyaWJ1dGUgc2hvcnQgcmVzdWx0SW5k
ZXg7CisgICAgW0luaXRpYWxpemVkQnlFdmVudENvbnN0cnVjdG9yXSByZWFkb25seSBhdHRyaWJ1
dGUgU3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0IHJlc3VsdHM7CisgICAgcmVhZG9ubHkgYXR0
cmlidXRlIERvY3VtZW50IGVtbWE7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXN1bHQuY3BwCmluZGV4IGQ1NGYyYmY3
NGNmMDE2N2FiMGQ1YzM4YzRhMWNmMTg5NzNmZWUwYzQuLjkyNDg3NDRlZjdhMzRhM2RhNDNiZDAw
NTVmNTVlOTYzYWVjMzg4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlc3VsdC5jcHAKQEAgLTI5LDEwICsyOSw2IEBA
CiAKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblJlc3VsdC5oIgogCi0jaW5jbHVkZSAiRG9j
dW1lbnQuaCIKLSNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAiVGV4dC5oIgotCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFNwZWVjaFJlY29nbml0aW9uUmVzdWx0Ojp+U3BlZWNoUmVjb2du
aXRpb25SZXN1bHQoKQpAQCAtNTIsNTEgKzQ4LDYgQEAgU3BlZWNoUmVjb2duaXRpb25BbHRlcm5h
dGl2ZSogU3BlZWNoUmVjb2duaXRpb25SZXN1bHQ6Oml0ZW0odW5zaWduZWQgbG9uZyBpbmRleCkK
ICAgICByZXR1cm4gbV9hbHRlcm5hdGl2ZXNbaW5kZXhdLmdldCgpOwogfQogCi1zdGF0aWMgUXVh
bGlmaWVkTmFtZSBlbW1hUXVhbGlmaWVkTmFtZShjb25zdCBjaGFyKiBsb2NhbE5hbWUpCi17Ci0g
ICAgY29uc3QgY2hhciBlbW1hTmFtZXNwYWNlVXJsW10gPSAiaHR0cDovL3d3dy53My5vcmcvMjAw
My8wNC9lbW1hIjsKLSAgICByZXR1cm4gUXVhbGlmaWVkTmFtZSgiZW1tYSIsIGxvY2FsTmFtZSwg
ZW1tYU5hbWVzcGFjZVVybCk7Ci19Ci0KLURvY3VtZW50KiBTcGVlY2hSZWNvZ25pdGlvblJlc3Vs
dDo6ZW1tYSgpCi17Ci0gICAgaWYgKG1fZW1tYSkKLSAgICAgICAgcmV0dXJuIG1fZW1tYS5nZXQo
KTsKLQotICAgIFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSBEb2N1bWVudDo6Y3JlYXRlKDAs
IEtVUkwoKSk7Ci0KLSAgICBSZWZQdHI8RWxlbWVudD4gZW1tYUVsZW1lbnQgPSBkb2N1bWVudC0+
Y3JlYXRlRWxlbWVudChlbW1hUXVhbGlmaWVkTmFtZSgiZW1tYSIpLCBmYWxzZSk7Ci0gICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgZW1tYUVsZW1lbnQtPnNldEF0dHJpYnV0ZSgidmVyc2lv
biIsICIxLjAiLCBlYyk7Ci0gICAgQVNTRVJUKCFlYyk7Ci0gICAgaWYgKGVjKQotICAgICAgICBy
ZXR1cm4gMDsKLQotICAgIFJlZlB0cjxFbGVtZW50PiBvbmVPZiA9IGRvY3VtZW50LT5jcmVhdGVF
bGVtZW50KGVtbWFRdWFsaWZpZWROYW1lKCJvbmUtb2YiKSwgZmFsc2UpOwotICAgIG9uZU9mLT5z
ZXRBdHRyaWJ1dGUoZW1tYVF1YWxpZmllZE5hbWUoIm1lZGl1bSIpLCAiYWNvdXN0aWMiKTsKLSAg
ICBvbmVPZi0+c2V0QXR0cmlidXRlKGVtbWFRdWFsaWZpZWROYW1lKCJtb2RlIiksICJ2b2ljZSIp
OwotICAgIG9uZU9mLT5zZXRJZEF0dHJpYnV0ZSgib25lLW9mIik7Ci0KLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fYWx0ZXJuYXRpdmVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0
IFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvbkFsdGVybmF0aXZlPiYgYWx0ZXJuYXRpdmUgPSBtX2Fs
dGVybmF0aXZlc1tpXTsKLQotICAgICAgICBSZWZQdHI8RWxlbWVudD4gaW50ZXJwcmV0YXRpb24g
PSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVudChlbW1hUXVhbGlmaWVkTmFtZSgiaW50ZXJwcmV0YXRp
b24iKSwgZmFsc2UpOwotICAgICAgICBpbnRlcnByZXRhdGlvbi0+c2V0SWRBdHRyaWJ1dGUoU3Ry
aW5nOjpudW1iZXIoaSArIDEpKTsKLSAgICAgICAgaW50ZXJwcmV0YXRpb24tPnNldEF0dHJpYnV0
ZShlbW1hUXVhbGlmaWVkTmFtZSgiY29uZmlkZW5jZSIpLCBTdHJpbmc6Om51bWJlcihhbHRlcm5h
dGl2ZS0+Y29uZmlkZW5jZSgpKSk7Ci0KLSAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGxpdGVyYWwg
PSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVudChlbW1hUXVhbGlmaWVkTmFtZSgibGl0ZXJhbCIpLCBm
YWxzZSk7Ci0gICAgICAgIGxpdGVyYWwtPmFwcGVuZENoaWxkKGRvY3VtZW50LT5jcmVhdGVUZXh0
Tm9kZShhbHRlcm5hdGl2ZS0+dHJhbnNjcmlwdCgpKSk7Ci0gICAgICAgIGludGVycHJldGF0aW9u
LT5hcHBlbmRDaGlsZChsaXRlcmFsLnJlbGVhc2UoKSk7Ci0gICAgICAgIG9uZU9mLT5hcHBlbmRD
aGlsZChpbnRlcnByZXRhdGlvbi5yZWxlYXNlKCkpOwotICAgIH0KLQotICAgIGVtbWFFbGVtZW50
LT5hcHBlbmRDaGlsZChvbmVPZi5yZWxlYXNlKCkpOwotICAgIGRvY3VtZW50LT5hcHBlbmRDaGls
ZChlbW1hRWxlbWVudC5yZWxlYXNlKCkpOwotCi0gICAgbV9lbW1hID0gZG9jdW1lbnQ7Ci0gICAg
cmV0dXJuIG1fZW1tYS5nZXQoKTsKLX0KLQogU3BlZWNoUmVjb2duaXRpb25SZXN1bHQ6OlNwZWVj
aFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFZlY3RvcjxSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25B
bHRlcm5hdGl2ZT4gPiYgYWx0ZXJuYXRpdmVzLCBib29sIGZpbmFsKQogICAgIDogbV9hbHRlcm5h
dGl2ZXMoYWx0ZXJuYXRpdmVzKQogICAgICwgbV9maW5hbChmaW5hbCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVzdWx0LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlc3VsdC5oCmlu
ZGV4IDE4Zjc2ZTE0N2Q0N2I0ZTMwYTgzZDI1YWM2ZGI0YjJjMDk2YWIxYjYuLjc0Y2M3YjMwOTJk
ZjU2YTE0NTkwYTFlNjFlODZlMzM3NDI5ZGRhYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVzdWx0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXN1bHQuaApAQCAtMzQsOCAr
MzQsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERvY3VtZW50OwotCiBjbGFz
cyBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCA6IHB1YmxpYyBSZWZDb3VudGVkPFNwZWVjaFJlY29n
bml0aW9uUmVzdWx0PiB7CiBwdWJsaWM6CiAgICAgflNwZWVjaFJlY29nbml0aW9uUmVzdWx0KCk7
CkBAIC00MywxNSArNDEsMTMgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgbG9uZyBsZW5ndGgo
KSB7IHJldHVybiBtX2FsdGVybmF0aXZlcy5zaXplKCk7IH0KICAgICBTcGVlY2hSZWNvZ25pdGlv
bkFsdGVybmF0aXZlKiBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIGJvb2wgZmluYWwo
KSB7IHJldHVybiBtX2ZpbmFsOyB9Ci0gICAgRG9jdW1lbnQqIGVtbWEoKTsKKyAgICBib29sIGlz
RmluYWwoKSB7IHJldHVybiBtX2ZpbmFsOyB9CiAKIHByaXZhdGU6CiAgICAgU3BlZWNoUmVjb2du
aXRpb25SZXN1bHQoY29uc3QgVmVjdG9yPFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvbkFsdGVybmF0
aXZlPiA+JiwgYm9vbCBmaW5hbCk7CiAKICAgICBWZWN0b3I8UmVmUHRyPFNwZWVjaFJlY29nbml0
aW9uQWx0ZXJuYXRpdmU+ID4gbV9hbHRlcm5hdGl2ZXM7CiAgICAgYm9vbCBtX2ZpbmFsOwotICAg
IFJlZlB0cjxEb2N1bWVudD4gbV9lbW1hOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRp
b25SZXN1bHQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXRpb25SZXN1bHQuaWRsCmluZGV4IDYwOWQ2ZWE4N2I3ZmRkYWUwNDY4YTc2NjBmYjA5NjcyMWZm
ZGMxNjYuLmI3NDlhZWQ3NzczODQyODE0NDQzZTM1M2QyZDhmZmJkOWY4MzQ2ZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVzdWx0
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlv
blJlc3VsdC5pZGwKQEAgLTI1LDEyICsyNSw5IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1TQ1JJ
UFRFRF9TUEVFQ0gsCi0gICAgQ3VzdG9tSXNSZWFjaGFibGUsCi0gICAgSW5kZXhlZEdldHRlciwK
LSAgICBWOERlcGVuZGVudExpZmV0aW1lCisgICAgSW5kZXhlZEdldHRlcgogXSBpbnRlcmZhY2Ug
U3BlZWNoUmVjb2duaXRpb25SZXN1bHQgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25l
ZCBsb25nIGxlbmd0aDsKICAgICBTcGVlY2hSZWNvZ25pdGlvbkFsdGVybmF0aXZlIGl0ZW0oaW4g
W0lzSW5kZXhdIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBi
b29sZWFuIGZpbmFsOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBEb2N1bWVudCBlbW1hOworICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzRmluYWw7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmlu
ZGV4IGQ5NWExN2Q4ZGRiMDRiOGY2YTJjMDUyNWJjOTczZDNmZTk4NjBmNDMuLjkzY2E0NTVkMGVj
ZDY4NWIzMTQ4OTBlOWNiNzYwZGU4YjRkMDEzZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI0Mjks
NyArMjQyOSw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHUGF0aFNl
Z0N1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFBy
b2ZpbGVDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhTY3Jp
cHRQcm9maWxlTm9kZUN1c3RvbS5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFNwZWVjaFJlY29nbml0aW9uUmVzdWx0Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4U3BlZWNoUmVjb2duaXRpb25FdmVudEN1c3RvbS5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0b3JhZ2VDdXN0b20uY3BwJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhTdHlsZVNoZWV0Q3VzdG9tLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3R5bGVTaGVldExpc3RDdXN0b20uY3BwJywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNwZWVjaFJl
Y29nbml0aW9uRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4U3BlZWNoUmVjb2duaXRpb25FdmVudEN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWZhNDYx
ZTFmZmRhYjIwOTE5YjVlYjNhM2EyN2RiZDkyYTUwODcwYwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNwZWVjaFJlY29nbml0aW9uRXZlbnRD
dXN0b20uY3BwCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpZiBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQorCisjaW5jbHVkZSAiVjhTcGVlY2hSZWNv
Z25pdGlvbkV2ZW50LmgiCisKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvbkV2ZW50LmgiCisj
aW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhHQ0NvbnRyb2xsZXIuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCit2b2lkKiBWOFNwZWVjaFJlY29nbml0aW9uRXZlbnQ6Om9wYXF1
ZVJvb3RGb3JHQyh2b2lkKiBvYmplY3QsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBw
ZXIpCit7CisgICAgQVNTRVJUKFY4U3BlZWNoUmVjb2duaXRpb25FdmVudDo6SGFzSW5zdGFuY2Uo
d3JhcHBlcikpOworICAgIFNwZWVjaFJlY29nbml0aW9uRXZlbnQqIGltcGwgPSBzdGF0aWNfY2Fz
dDxTcGVlY2hSZWNvZ25pdGlvbkV2ZW50Kj4ob2JqZWN0KTsKKyAgICByZXR1cm4gVjhHQ0NvbnRy
b2xsZXI6Om9wYXF1ZVJvb3RGb3JHQyhpbXBsLT5lbW1hKCkpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3BlZWNoUmVjb2duaXRpb25S
ZXN1bHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3Bl
ZWNoUmVjb2duaXRpb25SZXN1bHRDdXN0b20uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBlZjE0NTY1ZmNlMTJhNTQ3YjI5MjVjZDk5MzY1ODllODEyMTIwODRjLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFNwZWVjaFJlY29nbml0aW9uUmVzdWx0Q3VzdG9tLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0K
LSNpZiBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQotCi0jaW5jbHVkZSAiVjhTcGVlY2hSZWNvZ25p
dGlvblJlc3VsdC5oIgotCi0jaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25SZXN1bHQuaCIKLSNp
bmNsdWRlICJWOEJpbmRpbmcuaCIKLSNpbmNsdWRlICJWOEdDQ29udHJvbGxlci5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQqIFY4U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ6Om9wYXF1
ZVJvb3RGb3JHQyh2b2lkKiBvYmplY3QsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBw
ZXIpCi17Ci0gICAgQVNTRVJUKFY4U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ6Okhhc0luc3RhbmNl
KHdyYXBwZXIpKTsKLSAgICBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCogaW1wbCA9IHN0YXRpY19j
YXN0PFNwZWVjaFJlY29nbml0aW9uUmVzdWx0Kj4ob2JqZWN0KTsKLSAgICByZXR1cm4gVjhHQ0Nv
bnRyb2xsZXI6Om9wYXF1ZVJvb3RGb3JHQyhpbXBsLT5lbW1hKCkpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoUmVjb2duaXplckNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoUmVjb2duaXpl
ckNsaWVudC5oCmluZGV4IGViZGMwYzE3MzkyMWY1NGM5ZDQwOGE2NzAzMTkxN2VhYzJkZWQ0OTMu
LjA1NmM0ZDM1ODVlOTcxZGM0YzFkMTYyZTNiOTBmY2ZlMzlkOTQzMjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFJlY29nbml6ZXJDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hSZWNvZ25pemVyQ2xp
ZW50LmgKQEAgLTY4LDggKzY4LDE3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5k
QXVkaW8oY29uc3QgV2ViU3BlZWNoUmVjb2duaXRpb25IYW5kbGUmKSA9IDA7CiAKICAgICAvLyBU
byBiZSBjYWxsZWQgd2hlbiB0aGUgc3BlZWNoIHJlY29nbml6ZXIgcmV0dXJucyBhIHJlc3VsdC4K
KyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiB3ZSBoYXZlIG1vdmVkIG92ZXIgdG8gb25s
eSB1c2UgdGhlIGZ1bmN0aW9uIGJlbG93LgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVz
dWx0KGNvbnN0IFdlYlNwZWVjaFJlY29nbml0aW9uSGFuZGxlJiwgY29uc3QgV2ViU3BlZWNoUmVj
b2duaXRpb25SZXN1bHQmLCB1bnNpZ25lZCBsb25nIHJlc3VsdEluZGV4LCBjb25zdCBXZWJWZWN0
b3I8V2ViU3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+JiByZXN1bHRIaXN0b3J5KSA9IDA7CiAKKyAg
ICAvLyBUbyBiZSBjYWxsZWQgd2hlbiB0aGUgc3BlZWNoIHJlY29nbml6ZXIgcHJvdmlkZXMgbmV3
IHJlc3VsdHMuCisgICAgLy8gLSBuZXdGaW5hbFJlc3VsdHMgY29udGFpbnMgemVybyBvciBtb3Jl
IGZpbmFsIHJlc3VsdHMgdGhhdCBhcmUgbmV3IHNpbmNlCisgICAgLy8gdGhlIGxhc3QgdGltZSB0
aGUgZnVuY3Rpb25zIHdhcyBjYWxsZWQuCisgICAgLy8gLSBjdXJyZW50SW50ZXJpbVJlc3VsdHMg
Y29udGFpbnMgemVybyBvciBtb3JlIGludGVpcm0gcmVzdWx0cyB0aGF0CisgICAgLy8gcmVwbGFj
ZSB0aGUgaW50ZXJpbSByZXN1bHRzIHRoYXQgd2VyZSByZXBvcnRlZCB0aGUgbGFzdCB0aW1lIHRo
aXMKKyAgICAvLyBmdW5jdGlvbiB3YXMgY2FsbGVkLgorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlUmVzdWx0cyhjb25zdCBXZWJTcGVlY2hSZWNvZ25pdGlvbkhhbmRsZSYsIGNvbnN0IFdlYlZl
Y3RvcjxXZWJTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4mIG5ld0ZpbmFsUmVzdWx0cywgY29uc3Qg
V2ViVmVjdG9yPFdlYlNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiYgY3VycmVudEludGVyaW1SZXN1
bHRzKSA9IDA7CisKICAgICAvLyBUbyBiZSBjYWxsZWQgd2hlbiB0aGUgc3BlZWNoIHJlY29nbml6
ZXIgcmV0dXJucyBhIGZpbmFsIHJlc3VsdCB3aXRoIG5vCiAgICAgLy8gcmVjb2duaXppb24gaHlw
b3RoZXNpcy4KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU5vTWF0Y2goY29uc3QgV2ViU3Bl
ZWNoUmVjb2duaXRpb25IYW5kbGUmLCBjb25zdCBXZWJTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCYp
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaFJlY29n
bml0aW9uQ2xpZW50UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNo
UmVjb2duaXRpb25DbGllbnRQcm94eS5jcHAKaW5kZXggMDgyNzQ3Y2RiOWNjY2M2ZmZiZGQzNDEx
NTUzNWVjODg5NDNmZGY1MC4uZjc0ODVlZDliMzYyNjljZGJjNjJiOWJjMDZhMWQxZmEzYjUxZGQ1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoUmVjb2duaXRp
b25DbGllbnRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNo
UmVjb2duaXRpb25DbGllbnRQcm94eS5jcHAKQEAgLTExMyw2ICsxMTMsMjEgQEAgdm9pZCBTcGVl
Y2hSZWNvZ25pdGlvbkNsaWVudFByb3h5OjpkaWRSZWNlaXZlUmVzdWx0KGNvbnN0IFdlYlNwZWVj
aFJlY29nbml0aW9uSGEKIAogfQogCit2b2lkIFNwZWVjaFJlY29nbml0aW9uQ2xpZW50UHJveHk6
OmRpZFJlY2VpdmVSZXN1bHRzKGNvbnN0IFdlYlNwZWVjaFJlY29nbml0aW9uSGFuZGxlJiBoYW5k
bGUsIGNvbnN0IFdlYlZlY3RvcjxXZWJTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4mIG5ld0ZpbmFs
UmVzdWx0cywgY29uc3QgV2ViVmVjdG9yPFdlYlNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiYgY3Vy
cmVudEludGVyaW1SZXN1bHRzKQoreworICAgIFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvbj4gcmVj
b2duaXRpb24gPSBQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uPihoYW5kbGUpOworCisgICAg
VmVjdG9yPFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4gPiBmaW5hbFJlc3VsdHNWZWN0
b3IobmV3RmluYWxSZXN1bHRzLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBu
ZXdGaW5hbFJlc3VsdHMuc2l6ZSgpOyArK2kpCisgICAgICAgIGZpbmFsUmVzdWx0c1ZlY3Rvcltp
XSA9IHN0YXRpY19jYXN0PFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+ID4obmV3
RmluYWxSZXN1bHRzW2ldKTsKKworICAgIFZlY3RvcjxSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25S
ZXN1bHQ+ID4gaW50ZXJpbVJlc3VsdHNWZWN0b3IoY3VycmVudEludGVyaW1SZXN1bHRzLnNpemUo
KSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjdXJyZW50SW50ZXJpbVJlc3VsdHMuc2l6
ZSgpOyArK2kpCisgICAgICAgIGludGVyaW1SZXN1bHRzVmVjdG9yW2ldID0gc3RhdGljX2Nhc3Q8
UGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4gPihjdXJyZW50SW50ZXJpbVJlc3Vs
dHNbaV0pOworCisgICAgcmVjb2duaXRpb24tPmRpZFJlY2VpdmVSZXN1bHRzKGZpbmFsUmVzdWx0
c1ZlY3RvciwgaW50ZXJpbVJlc3VsdHNWZWN0b3IpOworfQorCiB2b2lkIFNwZWVjaFJlY29nbml0
aW9uQ2xpZW50UHJveHk6OmRpZFJlY2VpdmVOb01hdGNoKGNvbnN0IFdlYlNwZWVjaFJlY29nbml0
aW9uSGFuZGxlJiBoYW5kbGUsIGNvbnN0IFdlYlNwZWVjaFJlY29nbml0aW9uUmVzdWx0JiByZXN1
bHQpCiB7CiAgICAgUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uPiByZWNvZ25pdGlvbiA9IFBhc3NS
ZWZQdHI8U3BlZWNoUmVjb2duaXRpb24+KGhhbmRsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9TcGVlY2hSZWNvZ25pdGlvbkNsaWVudFByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hSZWNvZ25pdGlvbkNsaWVudFByb3h5LmgKaW5kZXgg
NjE5NGY2NjAwN2FmMmJmNzYyMTk4YmVmYTMyMmRjOTgxNWZlNzYzYS4uMTU5NThkNGZiZDc2MTY2
NmE4YmUzNjZjZmVlZmZlOGQ3YTVlYWFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvU3BlZWNoUmVjb2duaXRpb25DbGllbnRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1NwZWVjaFJlY29nbml0aW9uQ2xpZW50UHJveHkuaApAQCAtNTYsNiAr
NTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZFNvdW5kKGNvbnN0IFdlYlNw
ZWVjaFJlY29nbml0aW9uSGFuZGxlJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZEVu
ZEF1ZGlvKGNvbnN0IFdlYlNwZWVjaFJlY29nbml0aW9uSGFuZGxlJikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXN1bHQoY29uc3QgV2ViU3BlZWNoUmVjb2duaXRpb25I
YW5kbGUmLCBjb25zdCBXZWJTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCYsIHVuc2lnbmVkIGxvbmcg
cmVzdWx0SW5kZXgsIGNvbnN0IFdlYlZlY3RvcjxXZWJTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4m
IHJlc3VsdEhpc3RvcnkpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVz
dWx0cyhjb25zdCBXZWJTcGVlY2hSZWNvZ25pdGlvbkhhbmRsZSYsIGNvbnN0IFdlYlZlY3RvcjxX
ZWJTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4mIG5ld0ZpbmFsUmVzdWx0cywgY29uc3QgV2ViVmVj
dG9yPFdlYlNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiYgY3VycmVudEludGVyaW1SZXN1bHRzKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU5vTWF0Y2goY29uc3QgV2ViU3Bl
ZWNoUmVjb2duaXRpb25IYW5kbGUmLCBjb25zdCBXZWJTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCYp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRXJyb3IoY29uc3QgV2ViU3Bl
ZWNoUmVjb2duaXRpb25IYW5kbGUmLCBjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UsIFdlYlNwZWVj
aFJlY29nbml6ZXJDbGllbnQ6OkVycm9yQ29kZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGRpZFN0YXJ0KGNvbnN0IFdlYlNwZWVjaFJlY29nbml0aW9uSGFuZGxlJikgT1ZFUlJJREU7CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDBiZTVk
ZTJjYWJjZTg5NmE1OTVhNjZmNWJkYzFmOTU1YTQ4Yjc3Ni4uMTc3N2IyNjQ5ZTg1MGRiYjBkMTlj
MDA0YjQzMjc1NmJmZGJjMGJmNiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTExLTI5ICBUb21teSBXaWRlbmZs
eWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIFNwZWVjaCBSZWNvZ25pdGlvbiBB
UEk6IFVwZGF0ZSBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50IHRvIG1hdGNoIHRoZSBzcGVjaWZpY2F0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM0
MDcKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIENoYW5naW5n
IHRoZSBtb2NrIHRvIHVzZSB0aGUgbmV3IHJlc3VsdHMgZGVsaXZlcnkgQVBJLgorCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIuY3BwOgor
CiAyMDEyLTExLTI5ICBTdWRhcnNhbmEgTmFnaW5lbmkgIDxzdWRhcnNhbmEubmFnaW5lbmlAaW50
ZWwuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gQWRkIHN1cHBvcnQgZm9yIFBsYXRmb3JtV2Vi
Vmlldzo6c2ltdWxhdGVNb3VzZU1vdmUoKSBpbiBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVjb2duaXplci5jcHAg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVjb2duaXplci5j
cHAKaW5kZXggODgxNDNjMGJhODg0YjMzZmRlNDkwYmUxYzNhNjViYWVlMTc2ZWQ0Ni4uNDBkM2Ni
NGJhYTcwZDQ1ZGQ0ZGRlMjIzZTI3ZjUyMmI5N2FiZDUzYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIuY3BwCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hSZWNvZ25pemVyLmNwcApA
QCAtNjksMTAgKzY5LDExIEBAIHB1YmxpYzoKICAgICAgICAgV2ViVmVjdG9yPGZsb2F0PiBjb25m
aWRlbmNlcyhzdGF0aWNfY2FzdDxzaXplX3Q+KDEpKTsKICAgICAgICAgdHJhbnNjcmlwdHNbMF0g
PSBtX3RyYW5zY3JpcHQ7CiAgICAgICAgIGNvbmZpZGVuY2VzWzBdID0gbV9jb25maWRlbmNlOwot
ICAgICAgICBXZWJTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCByZXM7Ci0gICAgICAgIHJlcy5hc3Np
Z24odHJhbnNjcmlwdHMsIGNvbmZpZGVuY2VzLCB0cnVlKTsKKyAgICAgICAgV2ViVmVjdG9yPFdl
YlNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiBmaW5hbFJlc3VsdHMoc3RhdGljX2Nhc3Q8c2l6ZV90
PigxKSk7CisgICAgICAgIFdlYlZlY3RvcjxXZWJTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4gaW50
ZXJpbVJlc3VsdHM7CisgICAgICAgIGZpbmFsUmVzdWx0c1swXS5hc3NpZ24odHJhbnNjcmlwdHMs
IGNvbmZpZGVuY2VzLCB0cnVlKTsKIAotICAgICAgICBtX3JlY29nbml6ZXItPmNsaWVudCgpLT5k
aWRSZWNlaXZlUmVzdWx0KG1fcmVjb2duaXplci0+aGFuZGxlKCksIHJlcywgMCwgV2ViVmVjdG9y
PFdlYlNwZWVjaFJlY29nbml0aW9uUmVzdWx0PigpKTsKKyAgICAgICAgbV9yZWNvZ25pemVyLT5j
bGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3VsdHMobV9yZWNvZ25pemVyLT5oYW5kbGUoKSwgZmluYWxS
ZXN1bHRzLCBpbnRlcmltUmVzdWx0cyk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE4MDFj
ZjQ0N2U5ZmQxY2Y1NWM5ODgzNjZkMGM4OTc5YjQxN2Q1ZGMuLmJkOTY5ZjgwNmQ5ZDBmNDQyZjc4
MjA3NjNlNzBlNGZmY2M4YjZiNTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0xMS0yOSAg
VG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBTcGVlY2gg
UmVjb2duaXRpb24gQVBJOiBVcGRhdGUgU3BlZWNoUmVjb2duaXRpb25FdmVudCB0byBtYXRjaCB0
aGUgc3BlY2lmaWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTAzNDA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAg
ICAgICBVcGRhdGluZyB0ZXN0cy4KKworICAgICAgICAqIGZhc3Qvc3BlZWNoL3NjcmlwdGVkL2Vt
bWEtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qvc3BlZWNoL3NjcmlwdGVkL2VtbWEuaHRt
bDoKKyAgICAgICAgKiBmYXN0L3NwZWVjaC9zY3JpcHRlZC9zcGVlY2hyZWNvZ25pdGlvbi1iYXNp
Y3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qvc3BlZWNoL3NjcmlwdGVkL3NwZWVjaHJl
Y29nbml0aW9uLWJhc2ljcy5odG1sOgorCiAyMDEyLTExLTI5ICBLd2FuZ1lvbmcgQ2hvaSAgPGt5
MC5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIFJlbW92ZSBkdXBsaWNhdGVkIGVu
dHJpZXMgZnJvbSBlZmwtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3Qvc3BlZWNoL3NjcmlwdGVkL2VtbWEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9zcGVlY2gvc2NyaXB0ZWQvZW1tYS1leHBlY3RlZC50eHQKaW5kZXggZmMzZmJhZWEwYWMx
YmJhOTdiN2JlZjA0MTc0MWQwZTk4OWZlZjMzOS4uMGZmYzE2NDc5ZDA5ZjU5Mjc2NzljOTllZTA5
MzkwMGMwMGQwM2ZiMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0
ZWQvZW1tYS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0
ZWQvZW1tYS1leHBlY3RlZC50eHQKQEAgLTEwLDkgKzEwLDkgQEAgb25hdWRpb3N0YXJ0CiBvbnNv
dW5kc3RhcnQKIG9uc3BlZWNoc3RhcnQKIG9ucmVzdWx0Ci1QQVNTIGV2ZW50LnJlc3VsdC5lbW1h
LmNoaWxkTm9kZXMubGVuZ3RoIGlzIDEKLVBBU1MgZXZlbnQucmVzdWx0LmVtbWEuZmlyc3RDaGls
ZC5ub2RlTmFtZSBpcyAiZW1tYTplbW1hIgotd2luZG93LmVtbWEgPSBldmVudC5yZXN1bHQuZW1t
YS5maXJzdENoaWxkCitQQVNTIGV2ZW50LmVtbWEuY2hpbGROb2Rlcy5sZW5ndGggaXMgMQorUEFT
UyBldmVudC5lbW1hLmZpcnN0Q2hpbGQubm9kZU5hbWUgaXMgImVtbWE6ZW1tYSIKK3dpbmRvdy5l
bW1hID0gZXZlbnQuZW1tYS5maXJzdENoaWxkCiBQQVNTIGVtbWEuZ2V0QXR0cmlidXRlKCJ2ZXJz
aW9uIikgaXMgIjEuMCIKIFBBU1MgZW1tYS5jaGlsZE5vZGVzLmxlbmd0aCBpcyAxCiBQQVNTIGVt
bWEuZmlyc3RDaGlsZC5ub2RlTmFtZSBpcyAiZW1tYTpvbmUtb2YiCkBAIC0zOCw5ICszOCw5IEBA
IHdpbmRvdy5lbW1hID0gbnVsbAogd2luZG93Lm9uZW9mID0gbnVsbAogd2luZG93LmludGVycHJl
dGF0aW9uID0gbnVsbAogd2luZG93LmxpdGVyYWwgPSBudWxsCi1ldmVudC5yZXN1bHQuZW1tYS5j
dXN0b21Qcm9wZXJ0eSA9IDQyCitldmVudC5lbW1hLmN1c3RvbVByb3BlcnR5ID0gNDIKIGdjKCkK
LVBBU1MgZXZlbnQucmVzdWx0LmVtbWEuY3VzdG9tUHJvcGVydHkgaXMgNDIKK1BBU1MgZXZlbnQu
ZW1tYS5jdXN0b21Qcm9wZXJ0eSBpcyA0Mgogb25zcGVlY2hlbmQKIG9uc291bmRlbmQKIG9uYXVk
aW9lbmQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3NjcmlwdGVkL2VtbWEu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3NjcmlwdGVkL2VtbWEuaHRtbAppbmRleCA2
ODMxNDQzYWMzMTAxYWNhNDcxMDMxNTc5M2U2MzU1YmIzM2QzZDc0Li42M2IyY2Y4NzdmYzc4MjEy
OWI2NGU4MzZlYTMyN2IzN2NmODk1NGUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3Nw
ZWVjaC9zY3JpcHRlZC9lbW1hLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2Ny
aXB0ZWQvZW1tYS5odG1sCkBAIC0yNyw5ICsyNyw5IEBAIGZ1bmN0aW9uIGVtbWFUZXN0KCkgewog
CiAgICAgci5vbnJlc3VsdCA9IGZ1bmN0aW9uKCkgewogICAgICAgICBkZWJ1Zygnb25yZXN1bHQn
KTsKLSAgICAgICAgc2hvdWxkQmUoJ2V2ZW50LnJlc3VsdC5lbW1hLmNoaWxkTm9kZXMubGVuZ3Ro
JywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdldmVudC5yZXN1bHQuZW1t
YS5maXJzdENoaWxkLm5vZGVOYW1lJywgJ2VtbWE6ZW1tYScpOwotICAgICAgICBldmFsQW5kTG9n
KCd3aW5kb3cuZW1tYSA9IGV2ZW50LnJlc3VsdC5lbW1hLmZpcnN0Q2hpbGQnKTsKKyAgICAgICAg
c2hvdWxkQmUoJ2V2ZW50LmVtbWEuY2hpbGROb2Rlcy5sZW5ndGgnLCAnMScpOworICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ2V2ZW50LmVtbWEuZmlyc3RDaGlsZC5ub2RlTmFtZScsICdl
bW1hOmVtbWEnKTsKKyAgICAgICAgZXZhbEFuZExvZygnd2luZG93LmVtbWEgPSBldmVudC5lbW1h
LmZpcnN0Q2hpbGQnKTsKICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdlbW1hLmdldEF0
dHJpYnV0ZSgidmVyc2lvbiIpJywgJzEuMCcpOwogCiAgICAgICAgIHNob3VsZEJlKCdlbW1hLmNo
aWxkTm9kZXMubGVuZ3RoJywgJzEnKTsKQEAgLTU4LDkgKzU4LDkgQEAgZnVuY3Rpb24gZW1tYVRl
c3QoKSB7CiAgICAgICAgIGV2YWxBbmRMb2coJ3dpbmRvdy5vbmVvZiA9IG51bGwnKTsKICAgICAg
ICAgZXZhbEFuZExvZygnd2luZG93LmludGVycHJldGF0aW9uID0gbnVsbCcpOwogICAgICAgICBl
dmFsQW5kTG9nKCd3aW5kb3cubGl0ZXJhbCA9IG51bGwnKTsKLSAgICAgICAgZXZhbEFuZExvZygn
ZXZlbnQucmVzdWx0LmVtbWEuY3VzdG9tUHJvcGVydHkgPSA0MicpOworICAgICAgICBldmFsQW5k
TG9nKCdldmVudC5lbW1hLmN1c3RvbVByb3BlcnR5ID0gNDInKTsKICAgICAgICAgZXZhbEFuZExv
ZygnZ2MoKScpOwotICAgICAgICBzaG91bGRCZSgnZXZlbnQucmVzdWx0LmVtbWEuY3VzdG9tUHJv
cGVydHknLCAnNDInKTsKKyAgICAgICAgc2hvdWxkQmUoJ2V2ZW50LmVtbWEuY3VzdG9tUHJvcGVy
dHknLCAnNDInKTsKICAgICB9CiAKICAgICByLm9uZW5kID0gZnVuY3Rpb24oKSB7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9zcGVlY2hyZWNvZ25pdGlvbi1i
YXNpY3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0ZWQvc3Bl
ZWNocmVjb2duaXRpb24tYmFzaWNzLWV4cGVjdGVkLnR4dAppbmRleCA0MTJlZDJiNGQ5ZjMzMDkw
ODQ2YjA2Zjg0YzEyMjYxNzEzYmNmYjJhLi44OTMzZWNmZTk4Y2U4Nzg2MjA0MWNiOTIxZTIyMzlh
NjE0ZDU2MTg0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9z
cGVlY2hyZWNvZ25pdGlvbi1iYXNpY3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zh
c3Qvc3BlZWNoL3NjcmlwdGVkL3NwZWVjaHJlY29nbml0aW9uLWJhc2ljcy1leHBlY3RlZC50eHQK
QEAgLTE3LDkgKzE3LDExIEBAIG9uc3BlZWNoc3RhcnQKIFBBU1MgY291bnQgaXMgMwogb25yZXN1
bHQKIFBBU1MgY291bnQgaXMgNAotUEFTUyBldmVudC5yZXN1bHQubGVuZ3RoIGlzIDEKLVBBU1Mg
ZXZlbnQucmVzdWx0Lml0ZW0oMCkudHJhbnNjcmlwdCBpcyAiaGVsbG8sIHdvcmxkIgotUEFTUyBl
dmVudC5yZXN1bHQuaXRlbSgwKS5jb25maWRlbmNlIGlzIHdpdGhpbiAwLjAwMSBvZiAwLjQyCitQ
QVNTIGV2ZW50LnJlc3VsdHMubGVuZ3RoIGlzIDEKK1BBU1MgZXZlbnQucmVzdWx0c1swXS5sZW5n
dGggaXMgMQorUEFTUyBldmVudC5yZXN1bHRzWzBdLmlzRmluYWwgaXMgdHJ1ZQorUEFTUyBldmVu
dC5yZXN1bHRzWzBdLml0ZW0oMCkudHJhbnNjcmlwdCBpcyAiaGVsbG8sIHdvcmxkIgorUEFTUyBl
dmVudC5yZXN1bHRzWzBdLml0ZW0oMCkuY29uZmlkZW5jZSBpcyB3aXRoaW4gMC4wMDEgb2YgMC40
Mgogb25zcGVlY2hlbmQKIFBBU1MgY291bnQgaXMgNQogb25zb3VuZGVuZApAQCAtNDAsNyArNDIs
NyBAQCBvbnNwZWVjaHN0YXJ0CiBQQVNTIGNvdW50IGlzIDMKIG9ubm9tYXRjaAogUEFTUyBjb3Vu
dCBpcyA0Ci1QQVNTIGV2ZW50LnJlc3VsdCBpcyBudWxsCitQQVNTIGV2ZW50LnJlc3VsdHMgaXMg
bnVsbAogb25zcGVlY2hlbmQKIFBBU1MgY291bnQgaXMgNQogb25zb3VuZGVuZApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0ZWQvc3BlZWNocmVjb2duaXRpb24tYmFz
aWNzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9zcGVlY2hyZWNvZ25p
dGlvbi1iYXNpY3MuaHRtbAppbmRleCAxMTkxOTg5NDgxMzk3M2UyZDE5YjVmMDcyMDg0OGYwMmU1
MmY3OGEyLi5hMTI3NGFkY2RkZjAzMzZkMjYxMTljMzQ0Y2YyNjJiOWVhNGVhYzdlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9zcGVlY2hyZWNvZ25pdGlvbi1i
YXNpY3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9zcGVlY2hy
ZWNvZ25pdGlvbi1iYXNpY3MuaHRtbApAQCAtMjksOSArMjksMTEgQEAgZnVuY3Rpb24gb25lTWF0
Y2hUZXN0KCkgewogICAgICAgICBkZWJ1Zygnb25yZXN1bHQnKTsKICAgICAgICAgc2hvdWxkQmUo
J2NvdW50JywgJzQnKTsKICAgICAgICAgKytjb3VudDsKLSAgICAgICAgc2hvdWxkQmUoJ2V2ZW50
LnJlc3VsdC5sZW5ndGgnLCAnMScpOwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2V2
ZW50LnJlc3VsdC5pdGVtKDApLnRyYW5zY3JpcHQnLCAnaGVsbG8sIHdvcmxkJyk7Ci0gICAgICAg
IHNob3VsZEJlQ2xvc2VUbygnZXZlbnQucmVzdWx0Lml0ZW0oMCkuY29uZmlkZW5jZScsIDAuNDIs
IDFlLTMpOworICAgICAgICBzaG91bGRCZSgnZXZlbnQucmVzdWx0cy5sZW5ndGgnLCAnMScpOwor
ICAgICAgICBzaG91bGRCZSgnZXZlbnQucmVzdWx0c1swXS5sZW5ndGgnLCAnMScpOworICAgICAg
ICBzaG91bGRCZSgnZXZlbnQucmVzdWx0c1swXS5pc0ZpbmFsJywgJ3RydWUnKTsKKyAgICAgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdldmVudC5yZXN1bHRzWzBdLml0ZW0oMCkudHJhbnNjcmlw
dCcsICdoZWxsbywgd29ybGQnKTsKKyAgICAgICAgc2hvdWxkQmVDbG9zZVRvKCdldmVudC5yZXN1
bHRzWzBdLml0ZW0oMCkuY29uZmlkZW5jZScsIDAuNDIsIDFlLTMpOwogICAgIH0KIAogICAgIHIu
b25zcGVlY2hlbmQgPSAgICAgZnVuY3Rpb24oKSB7IGRlYnVnKCdvbnNwZWVjaGVuZCcpOyAgIHNo
b3VsZEJlKCdjb3VudCcsICc1Jyk7ICsrY291bnQ7IH0KQEAgLTY1LDcgKzY3LDcgQEAgZnVuY3Rp
b24gbm9NYXRjaFRlc3QoKSB7CiAgICAgICAgIGRlYnVnKCdvbm5vbWF0Y2gnKTsKICAgICAgICAg
c2hvdWxkQmUoJ2NvdW50JywgJzQnKTsKICAgICAgICAgKytjb3VudDsKLSAgICAgICAgc2hvdWxk
QmUoJ2V2ZW50LnJlc3VsdCcsICdudWxsJyk7CisgICAgICAgIHNob3VsZEJlKCdldmVudC5yZXN1
bHRzJywgJ251bGwnKTsKICAgICB9CiAKICAgICByLm9uc3BlZWNoZW5kID0gICAgIGZ1bmN0aW9u
KCkgeyBkZWJ1Zygnb25zcGVlY2hlbmQnKTsgICBzaG91bGRCZSgnY291bnQnLCAnNScpOyArK2Nv
dW50OyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177206</attachid>
            <date>2012-12-03 01:17:39 -0800</date>
            <delta_ts>2012-12-03 02:15:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103407-20121203101506.patch</filename>
            <type>text/plain</type>
            <size>34762</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MzY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjNlNzJmNGIzNzYwYTlj
MGZkNjUwZGQxNWI0Yjc2M2ViYTkwYjk2MC4uMGZlYTI4NzZmMDNhYTkyZWQxNTRjYTQ1MDQ5NGJh
ZmJkZjcwNmFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTEyLTAzICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIFNwZWVjaCBSZWNv
Z25pdGlvbiBBUEk6IFVwZGF0ZSBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50IHRvIG1hdGNoIHRoZSBz
cGVjaWZpY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDM0MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGlzIHBhdGNoIGRvZXMgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgbyBBZGRzIHJlc3Vs
dHMsIGFuZCByZW1vdmluZyByZXN1bHQsIG9uIFNwZWVjaFJlY29nbml0aW9uRXZlbnQKKyAgICAg
ICAgbyBSZW5hbWluZyBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdDo6ZmluYWwgdG8gaXNGaW5hbAor
ICAgICAgICBvIFJlbW92aW5nIGVtbWEgZnJvbSBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdAorCisg
ICAgICAgIEV4aXN0aW5nIHRlc3RzIHVwZGF0ZWQgdG8gdGVzdCB0aGUgbmV3IEFQSS4KKworICAg
ICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvbjo6ZGlkUmVjZWl2ZVJlc3VsdHMpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uaDoKKyAgICAgICAgKFNw
ZWVjaFJlY29nbml0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvbkV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXZlbnQ6
OmNyZWF0ZVJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uRXZlbnQ6OlNwZWVjaFJlY29nbml0aW9uRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FdmVudDo6flNwZWVjaFJlY29nbml0aW9uRXZlbnQp
OgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXZlbnQuaDoKKyAg
ICAgICAgKFNwZWVjaFJlY29nbml0aW9uRXZlbnRJbml0KToKKyAgICAgICAgKFNwZWVjaFJlY29n
bml0aW9uRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FdmVudDo6
cmVzdWx0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FdmVudDo6
cmVzdWx0cyk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FdmVu
dC5pZGw6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXN1bHQu
Y3BwOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVzdWx0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlc3VsdDo6aXNGaW5hbCk6Cisg
ICAgICAgIChTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCk6CisgICAgICAgICogTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXRpb25SZXN1bHQuaWRsOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhTcGVlY2hSZWNvZ25pdGlvblJlc3VsdEN1
c3RvbS5jcHA6IFJlbW92ZWQuCisKIDIwMTItMTItMDIgIE5vZWwgR29yZG9uICA8bm9lbC5nb3Jk
b25AZ21haWwuY29tPgogCiAgICAgICAgIEltYWdlT3JpZW50YXRpb246OnRyYW5zZm9ybUZyb21E
ZWZhdWx0KCkgY2FzZSBsYWJlbHMgc2hvdWxkIGJlIGluIG51bWVyaWNhbCBvcmRlcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCBlNDI0MjEyM2ZjM2JjY2RiZTA1YmE3NTFiNjJmZDAwOTg1
MjY2YmE3Li44MDg1YWJiMjA4MTk3MmI0NWFjZTRlMTc1MGVjMjQ4OTYwMGY3ZWY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTEyLTAzICBUb21teSBX
aWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIFNwZWVjaCBSZWNvZ25p
dGlvbiBBUEk6IFVwZGF0ZSBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50IHRvIG1hdGNoIHRoZSBzcGVj
aWZpY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDM0MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRpbmcgdGhlIG5ldyBkaWRSZWNlaXZlUmVzdWx0cyBtZXRob2QuCisKKyAgICAgICAgKiBw
dWJsaWMvV2ViU3BlZWNoUmVjb2duaXplckNsaWVudC5oOgorICAgICAgICAqIHNyYy9TcGVlY2hS
ZWNvZ25pdGlvbkNsaWVudFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2du
aXRpb25DbGllbnRQcm94eTo6ZGlkUmVjZWl2ZVJlc3VsdHMpOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKiBzcmMvU3BlZWNoUmVjb2duaXRpb25DbGllbnRQcm94eS5oOgorICAgICAgICAo
U3BlZWNoUmVjb2duaXRpb25DbGllbnRQcm94eSk6CisKIDIwMTItMTItMDIgIFNhZHJ1bCBIYWJp
YiBDaG93ZGh1cnkgIDxzYWRydWxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0g
Q29ycmVjdCB0aGUgbG9jYXRpb24gb2Ygc3ludGhldGljIG1vdXNlIGV2ZW50cyB3aGVuIHBhZ2Ug
aXMgem9vbWVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hS
ZWNvZ25pdGlvbi5jcHAKaW5kZXggNDFmNDk4ZmE5ZTg1NGZjNmZlZjFhODY2NmI3YTQ3NWYzNDM0
Zjg2Yi4uYmVkYTgyNzhmYzNmNmQzYjk1OWM3YTZmY2QwMGU4MzdmNzgxYzU3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcApA
QCAtNTQsNiArNTQsNyBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uOjpzdGFydChFeGNlcHRpb25D
b2RlJiBlYykKICAgICB9CiAKICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CisgICAgbV9m
aW5hbFJlc3VsdHMuY2xlYXIoKTsKICAgICBtX2NvbnRyb2xsZXItPnN0YXJ0KHRoaXMsIG1fZ3Jh
bW1hcnMuZ2V0KCksIG1fbGFuZywgbV9jb250aW51b3VzLCBtX2ludGVyaW1SZXN1bHRzLCBtX21h
eEFsdGVybmF0aXZlcyk7CiAgICAgbV9zdGFydGVkID0gdHJ1ZTsKIH0KQEAgLTEwNSw2ICsxMDYs
MjAgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvbjo6ZGlkUmVjZWl2ZVJlc3VsdChQYXNzUmVmUHRy
PFNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiByZXMKICAgICBkaXNwYXRjaEV2ZW50KFNwZWVjaFJl
Y29nbml0aW9uRXZlbnQ6OmNyZWF0ZVJlc3VsdChyZXN1bHQsIHJlc3VsdEluZGV4LCByZXN1bHRI
aXN0b3J5KSk7CiB9CiAKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb246OmRpZFJlY2VpdmVSZXN1bHRz
KGNvbnN0IFZlY3RvcjxSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+ID4mIG5ld0ZpbmFs
UmVzdWx0cywgY29uc3QgVmVjdG9yPFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4gPiYg
Y3VycmVudEludGVyaW1SZXN1bHRzKQoreworICAgIHVuc2lnbmVkIGxvbmcgcmVzdWx0SW5kZXgg
PSBtX2ZpbmFsUmVzdWx0cy5zaXplKCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5l
d0ZpbmFsUmVzdWx0cy5zaXplKCk7ICsraSkKKyAgICAgICAgbV9maW5hbFJlc3VsdHMuYXBwZW5k
KG5ld0ZpbmFsUmVzdWx0c1tpXSk7CisKKyAgICBWZWN0b3I8UmVmUHRyPFNwZWVjaFJlY29nbml0
aW9uUmVzdWx0PiA+IHJlc3VsdHMgPSBtX2ZpbmFsUmVzdWx0czsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGN1cnJlbnRJbnRlcmltUmVzdWx0cy5zaXplKCk7ICsraSkKKyAgICAgICAgcmVz
dWx0cy5hcHBlbmQoY3VycmVudEludGVyaW1SZXN1bHRzW2ldKTsKKworICAgIGRpc3BhdGNoRXZl
bnQoU3BlZWNoUmVjb2duaXRpb25FdmVudDo6Y3JlYXRlUmVzdWx0KHJlc3VsdEluZGV4LCByZXN1
bHRzKSk7Cit9CisKIHZvaWQgU3BlZWNoUmVjb2duaXRpb246OmRpZFJlY2VpdmVOb01hdGNoKFBh
c3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+IHJlc3VsdCkKIHsKICAgICBkaXNwYXRj
aEV2ZW50KFNwZWVjaFJlY29nbml0aW9uRXZlbnQ6OmNyZWF0ZU5vTWF0Y2gocmVzdWx0KSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uaApp
bmRleCBiNWNhNGRkMGFmZDNiMzg0N2I2NWNlMDA1NmI4MjZkMjdlNGQzYjZlLi42NDNkZGE4Yjgz
MTk4YjE4OTgzMmE1ZTU3MWQyNGUxYmFmYWE5MjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmgKQEAgLTczLDYgKzczLDggQEAgcHVi
bGljOgogICAgIHZvaWQgZGlkRW5kU3BlZWNoKCk7CiAgICAgdm9pZCBkaWRFbmRTb3VuZCgpOwog
ICAgIHZvaWQgZGlkRW5kQXVkaW8oKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXN1bHRzKGNvbnN0
IFZlY3RvcjxSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+ID4mIG5ld0ZpbmFsUmVzdWx0
cywgY29uc3QgVmVjdG9yPFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4gPiYgY3VycmVu
dEludGVyaW1SZXN1bHRzKTsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSB3ZSBzdGFy
dCB1c2luZyBkaWRSZWNlaXZlUmVzdWx0cy4KICAgICB2b2lkIGRpZFJlY2VpdmVSZXN1bHQoUGFz
c1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4sIHVuc2lnbmVkIGxvbmcgcmVzdWx0SW5k
ZXgsIFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0PiByZXN1bHRIaXN0b3J5
KTsKICAgICB2b2lkIGRpZFJlY2VpdmVOb01hdGNoKFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRp
b25SZXN1bHQ+KTsKICAgICB2b2lkIGRpZFJlY2VpdmVFcnJvcihQYXNzUmVmUHRyPFNwZWVjaFJl
Y29nbml0aW9uRXJyb3I+KTsKQEAgLTEyNCw2ICsxMjYsNyBAQCBwcml2YXRlOgogICAgIFNwZWVj
aFJlY29nbml0aW9uQ29udHJvbGxlciogbV9jb250cm9sbGVyOwogICAgIGJvb2wgbV9zdG9wcGVk
QnlBY3RpdmVET01PYmplY3Q7CiAgICAgYm9vbCBtX3N0YXJ0ZWQ7CisgICAgVmVjdG9yPFJlZlB0
cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4gPiBtX2ZpbmFsUmVzdWx0czsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoUmVjb2duaXRpb25FdmVudC5jcHAKaW5kZXggZTJhOGY3YTFmZTA4NmY0NDUw
OGIwZjM0NTk3OTBmMThmOWM1MDdlNi4uMmI0MWE1OTM0N2UzZmQ4ODQ0NWU1OGEwYWIxNTc0N2I0
NDUxZjI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
UmVjb2duaXRpb25FdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb25FdmVudC5jcHAKQEAgLTUxLDYgKzUxLDExIEBAIFBhc3NSZWZQdHI8
U3BlZWNoUmVjb2duaXRpb25FdmVudD4gU3BlZWNoUmVjb2duaXRpb25FdmVudDo6Y3JlYXRlUmVz
dWx0KFBhc3NSZWZQCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTcGVlY2hSZWNvZ25pdGlvbkV2
ZW50KGV2ZW50TmFtZXMoKS5yZXN1bHRFdmVudCwgcmVzdWx0LCByZXN1bHRJbmRleCwgcmVzdWx0
SGlzdG9yeSkpOwogfQogCitQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uRXZlbnQ+IFNwZWVj
aFJlY29nbml0aW9uRXZlbnQ6OmNyZWF0ZVJlc3VsdCh1bnNpZ25lZCBsb25nIHJlc3VsdEluZGV4
LCBjb25zdCBWZWN0b3I8UmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiA+JiByZXN1bHRz
KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3BlZWNoUmVjb2duaXRpb25FdmVudChldmVu
dE5hbWVzKCkucmVzdWx0RXZlbnQsIHJlc3VsdEluZGV4LCByZXN1bHRzKSk7Cit9CisKIFBhc3NS
ZWZQdHI8U3BlZWNoUmVjb2duaXRpb25FdmVudD4gU3BlZWNoUmVjb2duaXRpb25FdmVudDo6Y3Jl
YXRlTm9NYXRjaChQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiByZXN1bHQpCiB7
CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50KGV2ZW50TmFt
ZXMoKS5ub21hdGNoRXZlbnQsIHJlc3VsdCwgMCwgMCkpOwpAQCAtNjgsMjAgKzczLDMxIEBAIFNw
ZWVjaFJlY29nbml0aW9uRXZlbnQ6OlNwZWVjaFJlY29nbml0aW9uRXZlbnQoKQogCiBTcGVlY2hS
ZWNvZ25pdGlvbkV2ZW50OjpTcGVlY2hSZWNvZ25pdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnROYW1lLCBjb25zdCBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50SW5pdCYgaW5pdGlhbGl6
ZXIpCiAgICAgOiBFdmVudChldmVudE5hbWUsIGluaXRpYWxpemVyKQotICAgICwgbV9yZXN1bHQo
aW5pdGlhbGl6ZXIucmVzdWx0KQogICAgICwgbV9yZXN1bHRJbmRleChpbml0aWFsaXplci5yZXN1
bHRJbmRleCkKKyAgICAsIG1fcmVzdWx0KGluaXRpYWxpemVyLnJlc3VsdCkKICAgICAsIG1fcmVz
dWx0SGlzdG9yeShpbml0aWFsaXplci5yZXN1bHRIaXN0b3J5KQogewogfQogCiBTcGVlY2hSZWNv
Z25pdGlvbkV2ZW50OjpTcGVlY2hSZWNvZ25pdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnROYW1lLCBQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiByZXN1bHQsIHNo
b3J0IHJlc3VsdEluZGV4LCBQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdD4g
cmVzdWx0SGlzdG9yeSkKICAgICA6IEV2ZW50KGV2ZW50TmFtZSwgLypjYW5CdWJibGU9Ki9mYWxz
ZSwgLypjYW5jZWxhYmxlPSovZmFsc2UpCi0gICAgLCBtX3Jlc3VsdChyZXN1bHQpCiAgICAgLCBt
X3Jlc3VsdEluZGV4KHJlc3VsdEluZGV4KQorICAgICwgbV9yZXN1bHQocmVzdWx0KQogICAgICwg
bV9yZXN1bHRIaXN0b3J5KHJlc3VsdEhpc3RvcnkpCiB7CiB9CiAKK1NwZWVjaFJlY29nbml0aW9u
RXZlbnQ6OlNwZWVjaFJlY29nbml0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5h
bWUsIHVuc2lnbmVkIGxvbmcgcmVzdWx0SW5kZXgsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3BlZWNo
UmVjb2duaXRpb25SZXN1bHQ+ID4mIHJlc3VsdHMpCisgICAgOiBFdmVudChldmVudE5hbWUsIC8q
Y2FuQnViYmxlPSovZmFsc2UsIC8qY2FuY2VsYWJsZT0qL2ZhbHNlKQorICAgICwgbV9yZXN1bHRJ
bmRleChyZXN1bHRJbmRleCkKKyAgICAsIG1fcmVzdWx0cyhTcGVlY2hSZWNvZ25pdGlvblJlc3Vs
dExpc3Q6OmNyZWF0ZShyZXN1bHRzKSkKK3sKK30KKworU3BlZWNoUmVjb2duaXRpb25FdmVudDo6
flNwZWVjaFJlY29nbml0aW9uRXZlbnQoKQoreworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FdmVudC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FdmVudC5oCmluZGV4IGQ0
NDVjM2E4ZGRmYjgwNDdiZTg3OTliNDBmMWMyMTc5OWMzNGFlZjAuLjVhNGM1ZTIyNTZlN2E5NzBm
MDI3MWM0MTY0NTllZDBlMTQ3YmFmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkV2ZW50LmgKQEAgLTQzLDIxICs0MywzMSBA
QCBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3Q7CiBzdHJ1Y3QgU3BlZWNoUmVjb2du
aXRpb25FdmVudEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKICAgICBTcGVlY2hSZWNvZ25pdGlv
bkV2ZW50SW5pdCgpOwogCisgICAgLy8gREVQUkVDQVRFRAogICAgIFJlZlB0cjxTcGVlY2hSZWNv
Z25pdGlvblJlc3VsdD4gcmVzdWx0OwotICAgIHNob3J0IHJlc3VsdEluZGV4OwogICAgIFJlZlB0
cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3Q+IHJlc3VsdEhpc3Rvcnk7CisKKyAgICBzaG9y
dCByZXN1bHRJbmRleDsKKyAgICBSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0PiBy
ZXN1bHRzOwogfTsKIAogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25FdmVudCA6IHB1YmxpYyBFdmVu
dCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25FdmVu
dD4gY3JlYXRlKCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25FdmVu
dD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFNwZWVjaFJlY29nbml0aW9uRXZl
bnRJbml0Jik7CisgICAgdmlydHVhbCB+U3BlZWNoUmVjb2duaXRpb25FdmVudCgpOwogCisgICAg
Ly8gREVQUkVDQVRFRAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uRXZl
bnQ+IGNyZWF0ZVJlc3VsdChQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0Piwgc2hv
cnQgcmVzdWx0SW5kZXgsIFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0PiBy
ZXN1bHRIaXN0b3J5KTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9u
RXZlbnQ+IGNyZWF0ZVJlc3VsdCh1bnNpZ25lZCBsb25nIHJlc3VsdEluZGV4LCBjb25zdCBWZWN0
b3I8UmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiA+JiByZXN1bHRzKTsKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvbkV2ZW50PiBjcmVhdGVOb01hdGNoKFBhc3NS
ZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+KTsKIAorICAgIHVuc2lnbmVkIGxvbmcgcmVz
dWx0SW5kZXgoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdEluZGV4OyB9CisgICAgU3BlZWNoUmVj
b2duaXRpb25SZXN1bHRMaXN0KiByZXN1bHRzKCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHRzLmdl
dCgpOyB9CisKKyAgICAvLyBERVBSRUNBVEVECiAgICAgU3BlZWNoUmVjb2duaXRpb25SZXN1bHQq
IHJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0LmdldCgpOyB9Ci0gICAgc2hvcnQgcmVz
dWx0SW5kZXgoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdEluZGV4OyB9IC8vIEZJWE1FOiBTcGVj
IHNheXMgdGhpcyBzaG91bGQgYmUgc2hvcnQsIGJ1dCBvdGhlciBpbmRpY2VzIGFyZSB1bnNpZ25l
ZCBpbnRzLgogICAgIFNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdCogcmVzdWx0SGlzdG9yeSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0SGlzdG9yeS5nZXQoKTsgfQogCiAgICAgLy8gRXZlbnQK
QEAgLTY2LDExICs3NiwxNSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNwZWVjaFJlY29nbml0
aW9uRXZlbnQoKTsKICAgICBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYsIGNvbnN0IFNwZWVjaFJlY29nbml0aW9uRXZlbnRJbml0Jik7Ci0gICAgU3BlZWNoUmVjb2du
aXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSwgUGFzc1JlZlB0cjxTcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdD4sIHNob3J0IHJlc3VsdEluZGV4LCBQYXNzUmVmUHRyPFNwZWVj
aFJlY29nbml0aW9uUmVzdWx0TGlzdD4gcmVzdWx0SGlzdG9yeSk7CisgICAgU3BlZWNoUmVjb2du
aXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSwgUGFzc1JlZlB0cjxTcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdD4sIHNob3J0IHJlc3VsdEluZGV4LCBQYXNzUmVmUHRyPFNwZWVj
aFJlY29nbml0aW9uUmVzdWx0TGlzdD4gcmVzdWx0SGlzdG9yeSk7IC8vIEZJWE1FOiBSZW1vdmUu
CisgICAgU3BlZWNoUmVjb2duaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFt
ZSwgdW5zaWduZWQgbG9uZyByZXN1bHRJbmRleCwgY29uc3QgVmVjdG9yPFJlZlB0cjxTcGVlY2hS
ZWNvZ25pdGlvblJlc3VsdD4gPiYgcmVzdWx0cyk7CiAgICAgZXhwbGljaXQgU3BlZWNoUmVjb2du
aXRpb25FdmVudChQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uRXJyb3I+KTsKIAorICAgIHVu
c2lnbmVkIGxvbmcgbV9yZXN1bHRJbmRleDsKKyAgICBSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25S
ZXN1bHRMaXN0PiBtX3Jlc3VsdHM7CisKKyAgICAvLyBERVBSRUNBVEVECiAgICAgUmVmUHRyPFNw
ZWVjaFJlY29nbml0aW9uUmVzdWx0PiBtX3Jlc3VsdDsKLSAgICBzaG9ydCBtX3Jlc3VsdEluZGV4
OwogICAgIFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3Q+IG1fcmVzdWx0SGlzdG9y
eTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoUmVjb2duaXRpb25FdmVudC5pZGwKaW5kZXggOGViNzg5YzBjMGM5NTA4N2JkMDA1Mzc0MTIx
Mjc0MTFlNWM2NjcyNi4uNDIxZWY5ODE1YmE3YWI0Mzc5NGEwODRmNDhkZGM2NmE0ZDdlNTExNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRp
b25FdmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXRpb25FdmVudC5pZGwKQEAgLTI1LDkgKzI1LDEzIEBACiAKIFsKICAgICBDb25kaXRpb25h
bD1TQ1JJUFRFRF9TUEVFQ0gsCi0gICAgQ29uc3RydWN0b3JUZW1wbGF0ZT1FdmVudAorICAgIENv
bnN0cnVjdG9yVGVtcGxhdGU9RXZlbnQsCiBdIGludGVyZmFjZSBTcGVlY2hSZWNvZ25pdGlvbkV2
ZW50IDogRXZlbnQgeworICAgIC8vIERFUFJFQ0FURUQKICAgICBbSW5pdGlhbGl6ZWRCeUV2ZW50
Q29uc3RydWN0b3JdIHJlYWRvbmx5IGF0dHJpYnV0ZSBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCBy
ZXN1bHQ7Ci0gICAgW0luaXRpYWxpemVkQnlFdmVudENvbnN0cnVjdG9yXSByZWFkb25seSBhdHRy
aWJ1dGUgc2hvcnQgcmVzdWx0SW5kZXg7CiAgICAgW0luaXRpYWxpemVkQnlFdmVudENvbnN0cnVj
dG9yXSByZWFkb25seSBhdHRyaWJ1dGUgU3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0IHJlc3Vs
dEhpc3Rvcnk7CisKKyAgICBbSW5pdGlhbGl6ZWRCeUV2ZW50Q29uc3RydWN0b3JdIHJlYWRvbmx5
IGF0dHJpYnV0ZSBzaG9ydCByZXN1bHRJbmRleDsKKyAgICBbSW5pdGlhbGl6ZWRCeUV2ZW50Q29u
c3RydWN0b3JdIHJlYWRvbmx5IGF0dHJpYnV0ZSBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3Qg
cmVzdWx0czsKKyAgICAvLyBGSVhNRTogQWRkIHRoZSBlbW1hIGF0dHJpYnV0ZS4KIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJl
c3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlv
blJlc3VsdC5jcHAKaW5kZXggZDU0ZjJiZjc0Y2YwMTY3YWIwZDVjMzhjNGExY2YxODk3M2ZlZTBj
NC4uOTI0ODc0NGVmN2EzNGEzZGE0M2JkMDA1NWY1NWU5NjNhZWMzODg2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXN1bHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVz
dWx0LmNwcApAQCAtMjksMTAgKzI5LDYgQEAKIAogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9u
UmVzdWx0LmgiCiAKLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnQuaCIK
LSNpbmNsdWRlICJUZXh0LmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3BlZWNoUmVjb2du
aXRpb25SZXN1bHQ6On5TcGVlY2hSZWNvZ25pdGlvblJlc3VsdCgpCkBAIC01Miw1MSArNDgsNiBA
QCBTcGVlY2hSZWNvZ25pdGlvbkFsdGVybmF0aXZlKiBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdDo6
aXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KQogICAgIHJldHVybiBtX2FsdGVybmF0aXZlc1tpbmRl
eF0uZ2V0KCk7CiB9CiAKLXN0YXRpYyBRdWFsaWZpZWROYW1lIGVtbWFRdWFsaWZpZWROYW1lKGNv
bnN0IGNoYXIqIGxvY2FsTmFtZSkKLXsKLSAgICBjb25zdCBjaGFyIGVtbWFOYW1lc3BhY2VVcmxb
XSA9ICJodHRwOi8vd3d3LnczLm9yZy8yMDAzLzA0L2VtbWEiOwotICAgIHJldHVybiBRdWFsaWZp
ZWROYW1lKCJlbW1hIiwgbG9jYWxOYW1lLCBlbW1hTmFtZXNwYWNlVXJsKTsKLX0KLQotRG9jdW1l
bnQqIFNwZWVjaFJlY29nbml0aW9uUmVzdWx0OjplbW1hKCkKLXsKLSAgICBpZiAobV9lbW1hKQot
ICAgICAgICByZXR1cm4gbV9lbW1hLmdldCgpOwotCi0gICAgUmVmUHRyPERvY3VtZW50PiBkb2N1
bWVudCA9IERvY3VtZW50OjpjcmVhdGUoMCwgS1VSTCgpKTsKLQotICAgIFJlZlB0cjxFbGVtZW50
PiBlbW1hRWxlbWVudCA9IGRvY3VtZW50LT5jcmVhdGVFbGVtZW50KGVtbWFRdWFsaWZpZWROYW1l
KCJlbW1hIiksIGZhbHNlKTsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBlbW1hRWxl
bWVudC0+c2V0QXR0cmlidXRlKCJ2ZXJzaW9uIiwgIjEuMCIsIGVjKTsKLSAgICBBU1NFUlQoIWVj
KTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgUmVmUHRyPEVsZW1lbnQ+
IG9uZU9mID0gZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnQoZW1tYVF1YWxpZmllZE5hbWUoIm9uZS1v
ZiIpLCBmYWxzZSk7Ci0gICAgb25lT2YtPnNldEF0dHJpYnV0ZShlbW1hUXVhbGlmaWVkTmFtZSgi
bWVkaXVtIiksICJhY291c3RpYyIpOwotICAgIG9uZU9mLT5zZXRBdHRyaWJ1dGUoZW1tYVF1YWxp
ZmllZE5hbWUoIm1vZGUiKSwgInZvaWNlIik7Ci0gICAgb25lT2YtPnNldElkQXR0cmlidXRlKCJv
bmUtb2YiKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hbHRlcm5hdGl2ZXMuc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgY29uc3QgUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uQWx0ZXJu
YXRpdmU+JiBhbHRlcm5hdGl2ZSA9IG1fYWx0ZXJuYXRpdmVzW2ldOwotCi0gICAgICAgIFJlZlB0
cjxFbGVtZW50PiBpbnRlcnByZXRhdGlvbiA9IGRvY3VtZW50LT5jcmVhdGVFbGVtZW50KGVtbWFR
dWFsaWZpZWROYW1lKCJpbnRlcnByZXRhdGlvbiIpLCBmYWxzZSk7Ci0gICAgICAgIGludGVycHJl
dGF0aW9uLT5zZXRJZEF0dHJpYnV0ZShTdHJpbmc6Om51bWJlcihpICsgMSkpOwotICAgICAgICBp
bnRlcnByZXRhdGlvbi0+c2V0QXR0cmlidXRlKGVtbWFRdWFsaWZpZWROYW1lKCJjb25maWRlbmNl
IiksIFN0cmluZzo6bnVtYmVyKGFsdGVybmF0aXZlLT5jb25maWRlbmNlKCkpKTsKLQotICAgICAg
ICBSZWZQdHI8RWxlbWVudD4gbGl0ZXJhbCA9IGRvY3VtZW50LT5jcmVhdGVFbGVtZW50KGVtbWFR
dWFsaWZpZWROYW1lKCJsaXRlcmFsIiksIGZhbHNlKTsKLSAgICAgICAgbGl0ZXJhbC0+YXBwZW5k
Q2hpbGQoZG9jdW1lbnQtPmNyZWF0ZVRleHROb2RlKGFsdGVybmF0aXZlLT50cmFuc2NyaXB0KCkp
KTsKLSAgICAgICAgaW50ZXJwcmV0YXRpb24tPmFwcGVuZENoaWxkKGxpdGVyYWwucmVsZWFzZSgp
KTsKLSAgICAgICAgb25lT2YtPmFwcGVuZENoaWxkKGludGVycHJldGF0aW9uLnJlbGVhc2UoKSk7
Ci0gICAgfQotCi0gICAgZW1tYUVsZW1lbnQtPmFwcGVuZENoaWxkKG9uZU9mLnJlbGVhc2UoKSk7
Ci0gICAgZG9jdW1lbnQtPmFwcGVuZENoaWxkKGVtbWFFbGVtZW50LnJlbGVhc2UoKSk7Ci0KLSAg
ICBtX2VtbWEgPSBkb2N1bWVudDsKLSAgICByZXR1cm4gbV9lbW1hLmdldCgpOwotfQotCiBTcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdDo6U3BlZWNoUmVjb2duaXRpb25SZXN1bHQoY29uc3QgVmVjdG9y
PFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvbkFsdGVybmF0aXZlPiA+JiBhbHRlcm5hdGl2ZXMsIGJv
b2wgZmluYWwpCiAgICAgOiBtX2FsdGVybmF0aXZlcyhhbHRlcm5hdGl2ZXMpCiAgICAgLCBtX2Zp
bmFsKGZpbmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoUmVjb2duaXRpb25SZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFJlY29nbml0aW9uUmVzdWx0LmgKaW5kZXggMThmNzZlMTQ3ZDQ3YjRlMzBhODNkMjVhYzZk
YjRiMmMwOTZhYjFiNi4uNzRjYzdiMzA5MmRmNTZhMTQ1OTBhMWU2MWU4NmUzMzc0MjlkZGFiZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRp
b25SZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNv
Z25pdGlvblJlc3VsdC5oCkBAIC0zNCw4ICszNCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgRG9jdW1lbnQ7Ci0KIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uUmVzdWx0IDogcHVi
bGljIFJlZkNvdW50ZWQ8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+IHsKIHB1YmxpYzoKICAgICB+
U3BlZWNoUmVjb2duaXRpb25SZXN1bHQoKTsKQEAgLTQzLDE1ICs0MSwxMyBAQCBwdWJsaWM6CiAK
ICAgICB1bnNpZ25lZCBsb25nIGxlbmd0aCgpIHsgcmV0dXJuIG1fYWx0ZXJuYXRpdmVzLnNpemUo
KTsgfQogICAgIFNwZWVjaFJlY29nbml0aW9uQWx0ZXJuYXRpdmUqIGl0ZW0odW5zaWduZWQgbG9u
ZyBpbmRleCk7Ci0gICAgYm9vbCBmaW5hbCgpIHsgcmV0dXJuIG1fZmluYWw7IH0KLSAgICBEb2N1
bWVudCogZW1tYSgpOworICAgIGJvb2wgaXNGaW5hbCgpIHsgcmV0dXJuIG1fZmluYWw7IH0KIAog
cHJpdmF0ZToKICAgICBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdChjb25zdCBWZWN0b3I8UmVmUHRy
PFNwZWVjaFJlY29nbml0aW9uQWx0ZXJuYXRpdmU+ID4mLCBib29sIGZpbmFsKTsKIAogICAgIFZl
Y3RvcjxSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZT4gPiBtX2FsdGVybmF0aXZl
czsKICAgICBib29sIG1fZmluYWw7Ci0gICAgUmVmUHRyPERvY3VtZW50PiBtX2VtbWE7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlc3VsdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlc3VsdC5pZGwKaW5kZXggNjA5ZDZlYTg3
YjdmZGRhZTA0NjhhNzY2MGZiMDk2NzIxZmZkYzE2Ni4uYjc0OWFlZDc3NzM4NDI4MTQ0NDNlMzUz
ZDJkOGZmYmQ5ZjgzNDZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXRpb25SZXN1bHQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVzdWx0LmlkbApAQCAtMjUsMTIgKzI1LDkgQEAK
IAogWwogICAgIENvbmRpdGlvbmFsPVNDUklQVEVEX1NQRUVDSCwKLSAgICBDdXN0b21Jc1JlYWNo
YWJsZSwKLSAgICBJbmRleGVkR2V0dGVyLAotICAgIFY4RGVwZW5kZW50TGlmZXRpbWUKKyAgICBJ
bmRleGVkR2V0dGVyCiBdIGludGVyZmFjZSBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCB7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgIFNwZWVjaFJlY29n
bml0aW9uQWx0ZXJuYXRpdmUgaXRlbShpbiBbSXNJbmRleF0gdW5zaWduZWQgbG9uZyBpbmRleCk7
Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gZmluYWw7Ci0gICAgcmVhZG9ubHkgYXR0
cmlidXRlIERvY3VtZW50IGVtbWE7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNG
aW5hbDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMDNiMDU3YjY1ZWQxMGU2YjI4NDA2ZmM2NTQz
YjJhNjg0YWIwNDg2MC4uMTI4Zjg3YzViZmQxNDBiMjE5NWYxNjg0YzExOTUwMTE5ODI2OGIxZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjQzMSw3ICsyNDMxLDYgQEAKICAgICAgICAgICAgICdiaW5k
aW5ncy92OC9jdXN0b20vVjhTVkdQYXRoU2VnQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4U2NyaXB0UHJvZmlsZUN1c3RvbS5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcCcsCi0gICAg
ICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3BlZWNoUmVjb2duaXRpb25SZXN1bHRDdXN0
b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhTdG9yYWdlQ3VzdG9t
LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3R5bGVTaGVldEN1c3Rv
bS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0eWxlU2hlZXRMaXN0
Q3VzdG9tLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhTcGVlY2hSZWNvZ25pdGlvblJlc3VsdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhTcGVlY2hSZWNvZ25pdGlvblJlc3VsdEN1c3RvbS5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmMTQ1NjVmY2UxMmE1NDdiMjkyNWNkOTkzNjU4
OWU4MTIxMjA4NGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3BlZWNoUmVjb2duaXRpb25S
ZXN1bHRDdXN0b20uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05F
UiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShTQ1JJUFRFRF9TUEVFQ0gpCi0KLSNp
bmNsdWRlICJWOFNwZWVjaFJlY29nbml0aW9uUmVzdWx0LmgiCi0KLSNpbmNsdWRlICJTcGVlY2hS
ZWNvZ25pdGlvblJlc3VsdC5oIgotI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4
R0NDb250cm9sbGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCogVjhTcGVlY2hS
ZWNvZ25pdGlvblJlc3VsdDo6b3BhcXVlUm9vdEZvckdDKHZvaWQqIG9iamVjdCwgdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlcikKLXsKLSAgICBBU1NFUlQoVjhTcGVlY2hSZWNvZ25p
dGlvblJlc3VsdDo6SGFzSW5zdGFuY2Uod3JhcHBlcikpOwotICAgIFNwZWVjaFJlY29nbml0aW9u
UmVzdWx0KiBpbXBsID0gc3RhdGljX2Nhc3Q8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQqPihvYmpl
Y3QpOwotICAgIHJldHVybiBWOEdDQ29udHJvbGxlcjo6b3BhcXVlUm9vdEZvckdDKGltcGwtPmVt
bWEoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShT
Q1JJUFRFRF9TUEVFQ0gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJTcGVlY2hSZWNvZ25pemVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJTcGVlY2hSZWNvZ25pemVyQ2xpZW50LmgKaW5kZXggZWJkYzBjMTczOTIxZjU0Yzlk
NDA4YTY3MDMxOTE3ZWFjMmRlZDQ5My4uMDU2YzRkMzU4NWU5NzFkYzRjMWQxNjJlM2I5MGZjZmUz
OWQ5NDMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3Bl
ZWNoUmVjb2duaXplckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlNwZWVjaFJlY29nbml6ZXJDbGllbnQuaApAQCAtNjgsOCArNjgsMTcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRBdWRpbyhjb25zdCBXZWJTcGVlY2hSZWNvZ25pdGlvbkhh
bmRsZSYpID0gMDsKIAogICAgIC8vIFRvIGJlIGNhbGxlZCB3aGVuIHRoZSBzcGVlY2ggcmVjb2du
aXplciByZXR1cm5zIGEgcmVzdWx0LgorICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIHdl
IGhhdmUgbW92ZWQgb3ZlciB0byBvbmx5IHVzZSB0aGUgZnVuY3Rpb24gYmVsb3cuCiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVSZXN1bHQoY29uc3QgV2ViU3BlZWNoUmVjb2duaXRpb25IYW5k
bGUmLCBjb25zdCBXZWJTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCYsIHVuc2lnbmVkIGxvbmcgcmVz
dWx0SW5kZXgsIGNvbnN0IFdlYlZlY3RvcjxXZWJTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4mIHJl
c3VsdEhpc3RvcnkpID0gMDsKIAorICAgIC8vIFRvIGJlIGNhbGxlZCB3aGVuIHRoZSBzcGVlY2gg
cmVjb2duaXplciBwcm92aWRlcyBuZXcgcmVzdWx0cy4KKyAgICAvLyAtIG5ld0ZpbmFsUmVzdWx0
cyBjb250YWlucyB6ZXJvIG9yIG1vcmUgZmluYWwgcmVzdWx0cyB0aGF0IGFyZSBuZXcgc2luY2UK
KyAgICAvLyB0aGUgbGFzdCB0aW1lIHRoZSBmdW5jdGlvbnMgd2FzIGNhbGxlZC4KKyAgICAvLyAt
IGN1cnJlbnRJbnRlcmltUmVzdWx0cyBjb250YWlucyB6ZXJvIG9yIG1vcmUgaW50ZWlybSByZXN1
bHRzIHRoYXQKKyAgICAvLyByZXBsYWNlIHRoZSBpbnRlcmltIHJlc3VsdHMgdGhhdCB3ZXJlIHJl
cG9ydGVkIHRoZSBsYXN0IHRpbWUgdGhpcworICAgIC8vIGZ1bmN0aW9uIHdhcyBjYWxsZWQuCisg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXN1bHRzKGNvbnN0IFdlYlNwZWVjaFJlY29nbml0
aW9uSGFuZGxlJiwgY29uc3QgV2ViVmVjdG9yPFdlYlNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiYg
bmV3RmluYWxSZXN1bHRzLCBjb25zdCBXZWJWZWN0b3I8V2ViU3BlZWNoUmVjb2duaXRpb25SZXN1
bHQ+JiBjdXJyZW50SW50ZXJpbVJlc3VsdHMpID0gMDsKKwogICAgIC8vIFRvIGJlIGNhbGxlZCB3
aGVuIHRoZSBzcGVlY2ggcmVjb2duaXplciByZXR1cm5zIGEgZmluYWwgcmVzdWx0IHdpdGggbm8K
ICAgICAvLyByZWNvZ25pemlvbiBoeXBvdGhlc2lzLgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlTm9NYXRjaChjb25zdCBXZWJTcGVlY2hSZWNvZ25pdGlvbkhhbmRsZSYsIGNvbnN0IFdlYlNw
ZWVjaFJlY29nbml0aW9uUmVzdWx0JikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvU3BlZWNoUmVjb2duaXRpb25DbGllbnRQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9TcGVlY2hSZWNvZ25pdGlvbkNsaWVudFByb3h5LmNwcAppbmRleCAw
ODI3NDdjZGI5Y2NjYzZmZmJkZDM0MTE1NTM1ZWM4ODk0M2ZkZjUwLi5mNzQ4NWVkOWIzNjI2OWNk
YmM2MmI5YmMwNmExZDFmYTNiNTFkZDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9TcGVlY2hSZWNvZ25pdGlvbkNsaWVudFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9TcGVlY2hSZWNvZ25pdGlvbkNsaWVudFByb3h5LmNwcApAQCAtMTEz
LDYgKzExMywyMSBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uQ2xpZW50UHJveHk6OmRpZFJlY2Vp
dmVSZXN1bHQoY29uc3QgV2ViU3BlZWNoUmVjb2duaXRpb25IYQogCiB9CiAKK3ZvaWQgU3BlZWNo
UmVjb2duaXRpb25DbGllbnRQcm94eTo6ZGlkUmVjZWl2ZVJlc3VsdHMoY29uc3QgV2ViU3BlZWNo
UmVjb2duaXRpb25IYW5kbGUmIGhhbmRsZSwgY29uc3QgV2ViVmVjdG9yPFdlYlNwZWVjaFJlY29n
bml0aW9uUmVzdWx0PiYgbmV3RmluYWxSZXN1bHRzLCBjb25zdCBXZWJWZWN0b3I8V2ViU3BlZWNo
UmVjb2duaXRpb25SZXN1bHQ+JiBjdXJyZW50SW50ZXJpbVJlc3VsdHMpCit7CisgICAgUmVmUHRy
PFNwZWVjaFJlY29nbml0aW9uPiByZWNvZ25pdGlvbiA9IFBhc3NSZWZQdHI8U3BlZWNoUmVjb2du
aXRpb24+KGhhbmRsZSk7CisKKyAgICBWZWN0b3I8UmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVz
dWx0PiA+IGZpbmFsUmVzdWx0c1ZlY3RvcihuZXdGaW5hbFJlc3VsdHMuc2l6ZSgpKTsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG5ld0ZpbmFsUmVzdWx0cy5zaXplKCk7ICsraSkKKyAgICAg
ICAgZmluYWxSZXN1bHRzVmVjdG9yW2ldID0gc3RhdGljX2Nhc3Q8UGFzc1JlZlB0cjxTcGVlY2hS
ZWNvZ25pdGlvblJlc3VsdD4gPihuZXdGaW5hbFJlc3VsdHNbaV0pOworCisgICAgVmVjdG9yPFJl
ZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4gPiBpbnRlcmltUmVzdWx0c1ZlY3RvcihjdXJy
ZW50SW50ZXJpbVJlc3VsdHMuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGN1
cnJlbnRJbnRlcmltUmVzdWx0cy5zaXplKCk7ICsraSkKKyAgICAgICAgaW50ZXJpbVJlc3VsdHNW
ZWN0b3JbaV0gPSBzdGF0aWNfY2FzdDxQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0
PiA+KGN1cnJlbnRJbnRlcmltUmVzdWx0c1tpXSk7CisKKyAgICByZWNvZ25pdGlvbi0+ZGlkUmVj
ZWl2ZVJlc3VsdHMoZmluYWxSZXN1bHRzVmVjdG9yLCBpbnRlcmltUmVzdWx0c1ZlY3Rvcik7Cit9
CisKIHZvaWQgU3BlZWNoUmVjb2duaXRpb25DbGllbnRQcm94eTo6ZGlkUmVjZWl2ZU5vTWF0Y2go
Y29uc3QgV2ViU3BlZWNoUmVjb2duaXRpb25IYW5kbGUmIGhhbmRsZSwgY29uc3QgV2ViU3BlZWNo
UmVjb2duaXRpb25SZXN1bHQmIHJlc3VsdCkKIHsKICAgICBSZWZQdHI8U3BlZWNoUmVjb2duaXRp
b24+IHJlY29nbml0aW9uID0gUGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvbj4oaGFuZGxlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaFJlY29nbml0aW9u
Q2xpZW50UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaFJlY29nbml0
aW9uQ2xpZW50UHJveHkuaAppbmRleCA2MTk0ZjY2MDA3YWYyYmY3NjIxOThiZWZhMzIyZGM5ODE1
ZmU3NjNhLi4xNTk1OGQ0ZmJkNzYxNjY2YThiZTM2NmNmZWVmZmU4ZDdhNWVhYWQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hSZWNvZ25pdGlvbkNsaWVudFBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoUmVjb2duaXRpb25D
bGllbnRQcm94eS5oCkBAIC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRW5kU291bmQoY29uc3QgV2ViU3BlZWNoUmVjb2duaXRpb25IYW5kbGUmKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kQXVkaW8oY29uc3QgV2ViU3BlZWNoUmVjb2duaXRpb25I
YW5kbGUmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3VsdChjb25z
dCBXZWJTcGVlY2hSZWNvZ25pdGlvbkhhbmRsZSYsIGNvbnN0IFdlYlNwZWVjaFJlY29nbml0aW9u
UmVzdWx0JiwgdW5zaWduZWQgbG9uZyByZXN1bHRJbmRleCwgY29uc3QgV2ViVmVjdG9yPFdlYlNw
ZWVjaFJlY29nbml0aW9uUmVzdWx0PiYgcmVzdWx0SGlzdG9yeSkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVSZXN1bHRzKGNvbnN0IFdlYlNwZWVjaFJlY29nbml0aW9uSGFu
ZGxlJiwgY29uc3QgV2ViVmVjdG9yPFdlYlNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiYgbmV3Rmlu
YWxSZXN1bHRzLCBjb25zdCBXZWJWZWN0b3I8V2ViU3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+JiBj
dXJyZW50SW50ZXJpbVJlc3VsdHMpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlTm9NYXRjaChjb25zdCBXZWJTcGVlY2hSZWNvZ25pdGlvbkhhbmRsZSYsIGNvbnN0IFdlYlNw
ZWVjaFJlY29nbml0aW9uUmVzdWx0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVFcnJvcihjb25zdCBXZWJTcGVlY2hSZWNvZ25pdGlvbkhhbmRsZSYsIGNvbnN0IFdlYlN0
cmluZyYgbWVzc2FnZSwgV2ViU3BlZWNoUmVjb2duaXplckNsaWVudDo6RXJyb3JDb2RlKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnQoY29uc3QgV2ViU3BlZWNoUmVjb2duaXRp
b25IYW5kbGUmKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCAxMDgwNzYxOGU4ODE1OTcwNTBmOTIwZGM0NzI4NmViMGI2MWQzMjkx
Li5hNjYyNWMzZWZlY2E1YmVlZTkwNmY4YjkwYmIxMWMxOGYzZGZiYzI0IDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MTItMTItMDMgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAg
ICAgU3BlZWNoIFJlY29nbml0aW9uIEFQSTogVXBkYXRlIFNwZWVjaFJlY29nbml0aW9uRXZlbnQg
dG8gbWF0Y2ggdGhlIHNwZWNpZmljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMzQwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENoYW5naW5nIHRoZSBtb2NrIHRvIHVzZSB0aGUgbmV3IHJlc3Vs
dHMgZGVsaXZlcnkgQVBJLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9j
a1dlYlNwZWVjaFJlY29nbml6ZXIuY3BwOgorCiAyMDEyLTEyLTAyICBLeXVuZ1RhZSBLaW0gIDxr
dGYua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gQWRkIHN1cHBvcnQgZm9y
IGEgem9vbSBsZXZlbCBzZXR0aW5nIHRvIE1pbmlCcm93c2VyCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVjb2duaXplci5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVjb2duaXplci5jcHAKaW5k
ZXggODgxNDNjMGJhODg0YjMzZmRlNDkwYmUxYzNhNjViYWVlMTc2ZWQ0Ni4uNDBkM2NiNGJhYTcw
ZDQ1ZGQ0ZGRlMjIzZTI3ZjUyMmI5N2FiZDUzYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIuY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hSZWNvZ25pemVyLmNwcApAQCAtNjks
MTAgKzY5LDExIEBAIHB1YmxpYzoKICAgICAgICAgV2ViVmVjdG9yPGZsb2F0PiBjb25maWRlbmNl
cyhzdGF0aWNfY2FzdDxzaXplX3Q+KDEpKTsKICAgICAgICAgdHJhbnNjcmlwdHNbMF0gPSBtX3Ry
YW5zY3JpcHQ7CiAgICAgICAgIGNvbmZpZGVuY2VzWzBdID0gbV9jb25maWRlbmNlOwotICAgICAg
ICBXZWJTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCByZXM7Ci0gICAgICAgIHJlcy5hc3NpZ24odHJh
bnNjcmlwdHMsIGNvbmZpZGVuY2VzLCB0cnVlKTsKKyAgICAgICAgV2ViVmVjdG9yPFdlYlNwZWVj
aFJlY29nbml0aW9uUmVzdWx0PiBmaW5hbFJlc3VsdHMoc3RhdGljX2Nhc3Q8c2l6ZV90PigxKSk7
CisgICAgICAgIFdlYlZlY3RvcjxXZWJTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4gaW50ZXJpbVJl
c3VsdHM7CisgICAgICAgIGZpbmFsUmVzdWx0c1swXS5hc3NpZ24odHJhbnNjcmlwdHMsIGNvbmZp
ZGVuY2VzLCB0cnVlKTsKIAotICAgICAgICBtX3JlY29nbml6ZXItPmNsaWVudCgpLT5kaWRSZWNl
aXZlUmVzdWx0KG1fcmVjb2duaXplci0+aGFuZGxlKCksIHJlcywgMCwgV2ViVmVjdG9yPFdlYlNw
ZWVjaFJlY29nbml0aW9uUmVzdWx0PigpKTsKKyAgICAgICAgbV9yZWNvZ25pemVyLT5jbGllbnQo
KS0+ZGlkUmVjZWl2ZVJlc3VsdHMobV9yZWNvZ25pemVyLT5oYW5kbGUoKSwgZmluYWxSZXN1bHRz
LCBpbnRlcmltUmVzdWx0cyk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDUyODhhY2MyOTIy
YzEyMWZiMGZjZmRmMDU1MWIwNGUxMjlhZmMyNzMuLjI4N2I2OThjZWU4MmQ0M2NkYWUwZTFiYzVj
NDk0MTI4NGU5YjlhNjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0xMi0wMyAgVG9tbXkg
V2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBTcGVlY2ggUmVjb2du
aXRpb24gQVBJOiBVcGRhdGUgU3BlZWNoUmVjb2duaXRpb25FdmVudCB0byBtYXRjaCB0aGUgc3Bl
Y2lmaWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAzNDA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXBkYXRpbmcgYmFzaWMgdGVzdHMgYW5kIHJlbW92aW5nIGVtbWEgdGVzdHMgdGVtcG9yYXJp
bHkuCisKKyAgICAgICAgKiBmYXN0L3NwZWVjaC9zY3JpcHRlZC9lbW1hLWV4cGVjdGVkLnR4dDog
UmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9zY3JpcHRlZC9lbW1hLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogZmFzdC9zcGVlY2gvc2NyaXB0ZWQvc3BlZWNocmVjb2duaXRpb24tYmFz
aWNzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3NwZWVjaC9zY3JpcHRlZC9zcGVlY2hy
ZWNvZ25pdGlvbi1iYXNpY3MuaHRtbDoKKwogMjAxMi0xMi0wMiAgQ2hyaXN0b3BoZSBEdW1leiAg
PGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIFdlYktp
dDIgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0
ZWQvZW1tYS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9l
bW1hLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmMzZmJhZWEw
YWMxYmJhOTdiN2JlZjA0MTc0MWQwZTk4OWZlZjMzOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9l
bW1hLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLVRlc3QgdGhl
IFNwZWVjaFJlY29nbml0aW9uUmVzdWx0LmVtbWEgYXR0cmlidXRlLgotCi1PbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCi0KLQotUEFTUyAnd2Via2l0U3BlZWNoUmVjb2duaXRpb24nIGluIHNlbGYg
aXMgdHJ1ZQotUEFTUyB3ZWJraXRTcGVlY2hSZWNvZ25pdGlvbiA9PSBudWxsIGlzIGZhbHNlCi1v
bnN0YXJ0Ci1vbmF1ZGlvc3RhcnQKLW9uc291bmRzdGFydAotb25zcGVlY2hzdGFydAotb25yZXN1
bHQKLVBBU1MgZXZlbnQucmVzdWx0LmVtbWEuY2hpbGROb2Rlcy5sZW5ndGggaXMgMQotUEFTUyBl
dmVudC5yZXN1bHQuZW1tYS5maXJzdENoaWxkLm5vZGVOYW1lIGlzICJlbW1hOmVtbWEiCi13aW5k
b3cuZW1tYSA9IGV2ZW50LnJlc3VsdC5lbW1hLmZpcnN0Q2hpbGQKLVBBU1MgZW1tYS5nZXRBdHRy
aWJ1dGUoInZlcnNpb24iKSBpcyAiMS4wIgotUEFTUyBlbW1hLmNoaWxkTm9kZXMubGVuZ3RoIGlz
IDEKLVBBU1MgZW1tYS5maXJzdENoaWxkLm5vZGVOYW1lIGlzICJlbW1hOm9uZS1vZiIKLXdpbmRv
dy5vbmVvZiA9IGVtbWEuZmlyc3RDaGlsZAotd2luZG93LmVtbWFOcyA9ICdodHRwOi8vd3d3Lncz
Lm9yZy8yMDAzLzA0L2VtbWEnCi1QQVNTIG9uZW9mLmdldEF0dHJpYnV0ZSgiZW1tYTptZWRpdW0i
KSBpcyAiYWNvdXN0aWMiCi1QQVNTIG9uZW9mLmdldEF0dHJpYnV0ZU5TKGVtbWFOcywgIm1lZGl1
bSIpIGlzICJhY291c3RpYyIKLVBBU1Mgb25lb2YuZ2V0QXR0cmlidXRlKCJlbW1hOm1vZGUiKSBp
cyAidm9pY2UiCi1QQVNTIG9uZW9mLmdldEF0dHJpYnV0ZU5TKGVtbWFOcywgIm1vZGUiKSBpcyAi
dm9pY2UiCi1QQVNTIG9uZW9mLmNoaWxkTm9kZXMubGVuZ3RoIGlzIDEKLVBBU1Mgb25lb2YuZmly
c3RDaGlsZC5ub2RlTmFtZSBpcyAiZW1tYTppbnRlcnByZXRhdGlvbiIKLXdpbmRvdy5pbnRlcnBy
ZXRhdGlvbiA9IG9uZW9mLmZpcnN0Q2hpbGQKLVBBU1MgaW50ZXJwcmV0YXRpb24uZ2V0QXR0cmli
dXRlKCJpZCIpIGlzICIxIgotUEFTUyBpbnRlcnByZXRhdGlvbi5nZXRBdHRyaWJ1dGUoImVtbWE6
Y29uZmlkZW5jZSIpIGlzICIwLjQyIgotUEFTUyBpbnRlcnByZXRhdGlvbi5nZXRBdHRyaWJ1dGVO
UyhlbW1hTnMsICJjb25maWRlbmNlIikgaXMgIjAuNDIiCi1QQVNTIGludGVycHJldGF0aW9uLmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJsaXRlcmFsIikubGVuZ3RoIGlzIDEKLXdpbmRvdy5saXRlcmFs
ID0gaW50ZXJwcmV0YXRpb24uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpdGVyYWwiKVswXQotUEFT
UyBsaXRlcmFsLmNoaWxkTm9kZXMubGVuZ3RoIGlzIDEKLVBBU1MgbGl0ZXJhbC5maXJzdENoaWxk
LmRhdGEgaXMgImhlbGxvLCB3b3JsZCIKLQotVGVzdCB0aGF0IGVtbWEncyBET00gdHJlZSBzdGF5
cyBhbGl2ZToKLXdpbmRvdy5lbW1hID0gbnVsbAotd2luZG93Lm9uZW9mID0gbnVsbAotd2luZG93
LmludGVycHJldGF0aW9uID0gbnVsbAotd2luZG93LmxpdGVyYWwgPSBudWxsCi1ldmVudC5yZXN1
bHQuZW1tYS5jdXN0b21Qcm9wZXJ0eSA9IDQyCi1nYygpCi1QQVNTIGV2ZW50LnJlc3VsdC5lbW1h
LmN1c3RvbVByb3BlcnR5IGlzIDQyCi1vbnNwZWVjaGVuZAotb25zb3VuZGVuZAotb25hdWRpb2Vu
ZAotb25lbmQKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVU
RQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9lbW1hLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9lbW1hLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4MzE0NDNhYzMxMDFhY2E0NzEwMzE1NzkzZTYzNTViYjMz
ZDNkNzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0ZWQvZW1tYS5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsODIgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCI+Ci1kZXNjcmlwdGlvbignVGVzdCB0aGUgU3BlZWNoUmVjb2duaXRpb25S
ZXN1bHQuZW1tYSBhdHRyaWJ1dGUuJyk7Ci0KLWZ1bmN0aW9uIHJ1bigpIHsKLSAgICAvLyBDaGVj
ayBhdmFpbGFiaWxpdHkgb2YgY29uc3RydWN0b3JzLgotICAgIHNob3VsZEJlVHJ1ZSgiJ3dlYmtp
dFNwZWVjaFJlY29nbml0aW9uJyBpbiBzZWxmIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgid2Via2l0
U3BlZWNoUmVjb2duaXRpb24gPT0gbnVsbCIpOwotCi0gICAgZW1tYVRlc3QoKTsKLX0KLQotZnVu
Y3Rpb24gZW1tYVRlc3QoKSB7Ci0gICAgdmFyIHIgPSBuZXcgd2Via2l0U3BlZWNoUmVjb2duaXRp
b24oKTsKLQotICAgIC8vIFNldCBkZWZhdWx0IGhhbmRsZXJzLgotICAgIGZvciAodmFyIHByb3Ag
aW4gcikgewotICAgICAgICBpZiAocHJvcC5tYXRjaCgnXm9uJykpIHsKLSAgICAgICAgICAgIHJb
cHJvcF0gPSBmdW5jdGlvbigpIHsgZGVidWcoJ29uJyArIGV2ZW50LnR5cGUpOyB9Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICByLm9ucmVzdWx0ID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGRlYnVn
KCdvbnJlc3VsdCcpOwotICAgICAgICBzaG91bGRCZSgnZXZlbnQucmVzdWx0LmVtbWEuY2hpbGRO
b2Rlcy5sZW5ndGgnLCAnMScpOwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2V2ZW50
LnJlc3VsdC5lbW1hLmZpcnN0Q2hpbGQubm9kZU5hbWUnLCAnZW1tYTplbW1hJyk7Ci0gICAgICAg
IGV2YWxBbmRMb2coJ3dpbmRvdy5lbW1hID0gZXZlbnQucmVzdWx0LmVtbWEuZmlyc3RDaGlsZCcp
OwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2VtbWEuZ2V0QXR0cmlidXRlKCJ2ZXJz
aW9uIiknLCAnMS4wJyk7Ci0KLSAgICAgICAgc2hvdWxkQmUoJ2VtbWEuY2hpbGROb2Rlcy5sZW5n
dGgnLCAnMScpOwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2VtbWEuZmlyc3RDaGls
ZC5ub2RlTmFtZScsICdlbW1hOm9uZS1vZicpOwotICAgICAgICBldmFsQW5kTG9nKCd3aW5kb3cu
b25lb2YgPSBlbW1hLmZpcnN0Q2hpbGQnKTsKLSAgICAgICAgZXZhbEFuZExvZygid2luZG93LmVt
bWFOcyA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAzLzA0L2VtbWEnIik7Ci0gICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygnb25lb2YuZ2V0QXR0cmlidXRlKCJlbW1hOm1lZGl1bSIpJywgJ2Fj
b3VzdGljJyk7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnb25lb2YuZ2V0QXR0cmli
dXRlTlMoZW1tYU5zLCAibWVkaXVtIiknLCAnYWNvdXN0aWMnKTsKLSAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCdvbmVvZi5nZXRBdHRyaWJ1dGUoImVtbWE6bW9kZSIpJywgJ3ZvaWNlJyk7
Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnb25lb2YuZ2V0QXR0cmlidXRlTlMoZW1t
YU5zLCAibW9kZSIpJywgJ3ZvaWNlJyk7Ci0KLSAgICAgICAgc2hvdWxkQmUoJ29uZW9mLmNoaWxk
Tm9kZXMubGVuZ3RoJywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdvbmVv
Zi5maXJzdENoaWxkLm5vZGVOYW1lJywgJ2VtbWE6aW50ZXJwcmV0YXRpb24nKTsKLSAgICAgICAg
ZXZhbEFuZExvZygnd2luZG93LmludGVycHJldGF0aW9uID0gb25lb2YuZmlyc3RDaGlsZCcpOwot
ICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2ludGVycHJldGF0aW9uLmdldEF0dHJpYnV0
ZSgiaWQiKScsICcxJyk7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnaW50ZXJwcmV0
YXRpb24uZ2V0QXR0cmlidXRlKCJlbW1hOmNvbmZpZGVuY2UiKScsICcwLjQyJyk7Ci0gICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygnaW50ZXJwcmV0YXRpb24uZ2V0QXR0cmlidXRlTlMoZW1t
YU5zLCAiY29uZmlkZW5jZSIpJywgJzAuNDInKTsKLSAgICAgICAgc2hvdWxkQmUoJ2ludGVycHJl
dGF0aW9uLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaXRlcmFsIikubGVuZ3RoJywgJzEnKTsKLSAg
ICAgICAgZXZhbEFuZExvZygnd2luZG93LmxpdGVyYWwgPSBpbnRlcnByZXRhdGlvbi5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgibGl0ZXJhbCIpWzBdJyk7Ci0gICAgICAgIHNob3VsZEJlKCdsaXRlcmFs
LmNoaWxkTm9kZXMubGVuZ3RoJywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCdsaXRlcmFsLmZpcnN0Q2hpbGQuZGF0YScsICdoZWxsbywgd29ybGQnKTsKLQotICAgICAgICAv
LyBUZXN0IHRoYXQgU3BlZWNoUmVjb2duaXRpb25SZXN1bHQga2VlcHMgZW1tYSdzIERPTSB0cmVl
IGFsaXZlLgotICAgICAgICBkZWJ1ZygiXG5UZXN0IHRoYXQgZW1tYSdzIERPTSB0cmVlIHN0YXlz
IGFsaXZlOiIpOwotICAgICAgICBldmFsQW5kTG9nKCd3aW5kb3cuZW1tYSA9IG51bGwnKTsKLSAg
ICAgICAgZXZhbEFuZExvZygnd2luZG93Lm9uZW9mID0gbnVsbCcpOwotICAgICAgICBldmFsQW5k
TG9nKCd3aW5kb3cuaW50ZXJwcmV0YXRpb24gPSBudWxsJyk7Ci0gICAgICAgIGV2YWxBbmRMb2co
J3dpbmRvdy5saXRlcmFsID0gbnVsbCcpOwotICAgICAgICBldmFsQW5kTG9nKCdldmVudC5yZXN1
bHQuZW1tYS5jdXN0b21Qcm9wZXJ0eSA9IDQyJyk7Ci0gICAgICAgIGV2YWxBbmRMb2coJ2djKCkn
KTsKLSAgICAgICAgc2hvdWxkQmUoJ2V2ZW50LnJlc3VsdC5lbW1hLmN1c3RvbVByb3BlcnR5Jywg
JzQyJyk7Ci0gICAgfQotCi0gICAgci5vbmVuZCA9IGZ1bmN0aW9uKCkgewotICAgICAgICBkZWJ1
Zygnb25lbmQnKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfQotCi0gICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgIHRlc3RSdW5uZXIuYWRkTW9ja1NwZWVjaFJlY29n
bml0aW9uUmVzdWx0KCdoZWxsbywgd29ybGQnLCAwLjQyKTsKLSAgICB9Ci0gICAgci5zdGFydCgp
OwotfQotCi13aW5kb3cub25sb2FkID0gcnVuOwotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9zcGVlY2hyZWNvZ25pdGlvbi1iYXNpY3MtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0ZWQvc3BlZWNocmVjb2duaXRpb24t
YmFzaWNzLWV4cGVjdGVkLnR4dAppbmRleCA0MTJlZDJiNGQ5ZjMzMDkwODQ2YjA2Zjg0YzEyMjYx
NzEzYmNmYjJhLi44OTMzZWNmZTk4Y2U4Nzg2MjA0MWNiOTIxZTIyMzlhNjE0ZDU2MTg0IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9zcGVlY2hyZWNvZ25pdGlv
bi1iYXNpY3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3Njcmlw
dGVkL3NwZWVjaHJlY29nbml0aW9uLWJhc2ljcy1leHBlY3RlZC50eHQKQEAgLTE3LDkgKzE3LDEx
IEBAIG9uc3BlZWNoc3RhcnQKIFBBU1MgY291bnQgaXMgMwogb25yZXN1bHQKIFBBU1MgY291bnQg
aXMgNAotUEFTUyBldmVudC5yZXN1bHQubGVuZ3RoIGlzIDEKLVBBU1MgZXZlbnQucmVzdWx0Lml0
ZW0oMCkudHJhbnNjcmlwdCBpcyAiaGVsbG8sIHdvcmxkIgotUEFTUyBldmVudC5yZXN1bHQuaXRl
bSgwKS5jb25maWRlbmNlIGlzIHdpdGhpbiAwLjAwMSBvZiAwLjQyCitQQVNTIGV2ZW50LnJlc3Vs
dHMubGVuZ3RoIGlzIDEKK1BBU1MgZXZlbnQucmVzdWx0c1swXS5sZW5ndGggaXMgMQorUEFTUyBl
dmVudC5yZXN1bHRzWzBdLmlzRmluYWwgaXMgdHJ1ZQorUEFTUyBldmVudC5yZXN1bHRzWzBdLml0
ZW0oMCkudHJhbnNjcmlwdCBpcyAiaGVsbG8sIHdvcmxkIgorUEFTUyBldmVudC5yZXN1bHRzWzBd
Lml0ZW0oMCkuY29uZmlkZW5jZSBpcyB3aXRoaW4gMC4wMDEgb2YgMC40Mgogb25zcGVlY2hlbmQK
IFBBU1MgY291bnQgaXMgNQogb25zb3VuZGVuZApAQCAtNDAsNyArNDIsNyBAQCBvbnNwZWVjaHN0
YXJ0CiBQQVNTIGNvdW50IGlzIDMKIG9ubm9tYXRjaAogUEFTUyBjb3VudCBpcyA0Ci1QQVNTIGV2
ZW50LnJlc3VsdCBpcyBudWxsCitQQVNTIGV2ZW50LnJlc3VsdHMgaXMgbnVsbAogb25zcGVlY2hl
bmQKIFBBU1MgY291bnQgaXMgNQogb25zb3VuZGVuZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9zcGVlY2gvc2NyaXB0ZWQvc3BlZWNocmVjb2duaXRpb24tYmFzaWNzLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9zcGVlY2hyZWNvZ25pdGlvbi1iYXNpY3MuaHRt
bAppbmRleCAxMTkxOTg5NDgxMzk3M2UyZDE5YjVmMDcyMDg0OGYwMmU1MmY3OGEyLi5hMTI3NGFk
Y2RkZjAzMzZkMjYxMTljMzQ0Y2YyNjJiOWVhNGVhYzdlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9zcGVlY2hyZWNvZ25pdGlvbi1iYXNpY3MuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9zcGVlY2hyZWNvZ25pdGlvbi1iYXNp
Y3MuaHRtbApAQCAtMjksOSArMjksMTEgQEAgZnVuY3Rpb24gb25lTWF0Y2hUZXN0KCkgewogICAg
ICAgICBkZWJ1Zygnb25yZXN1bHQnKTsKICAgICAgICAgc2hvdWxkQmUoJ2NvdW50JywgJzQnKTsK
ICAgICAgICAgKytjb3VudDsKLSAgICAgICAgc2hvdWxkQmUoJ2V2ZW50LnJlc3VsdC5sZW5ndGgn
LCAnMScpOwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2V2ZW50LnJlc3VsdC5pdGVt
KDApLnRyYW5zY3JpcHQnLCAnaGVsbG8sIHdvcmxkJyk7Ci0gICAgICAgIHNob3VsZEJlQ2xvc2VU
bygnZXZlbnQucmVzdWx0Lml0ZW0oMCkuY29uZmlkZW5jZScsIDAuNDIsIDFlLTMpOworICAgICAg
ICBzaG91bGRCZSgnZXZlbnQucmVzdWx0cy5sZW5ndGgnLCAnMScpOworICAgICAgICBzaG91bGRC
ZSgnZXZlbnQucmVzdWx0c1swXS5sZW5ndGgnLCAnMScpOworICAgICAgICBzaG91bGRCZSgnZXZl
bnQucmVzdWx0c1swXS5pc0ZpbmFsJywgJ3RydWUnKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdldmVudC5yZXN1bHRzWzBdLml0ZW0oMCkudHJhbnNjcmlwdCcsICdoZWxsbywgd29y
bGQnKTsKKyAgICAgICAgc2hvdWxkQmVDbG9zZVRvKCdldmVudC5yZXN1bHRzWzBdLml0ZW0oMCku
Y29uZmlkZW5jZScsIDAuNDIsIDFlLTMpOwogICAgIH0KIAogICAgIHIub25zcGVlY2hlbmQgPSAg
ICAgZnVuY3Rpb24oKSB7IGRlYnVnKCdvbnNwZWVjaGVuZCcpOyAgIHNob3VsZEJlKCdjb3VudCcs
ICc1Jyk7ICsrY291bnQ7IH0KQEAgLTY1LDcgKzY3LDcgQEAgZnVuY3Rpb24gbm9NYXRjaFRlc3Qo
KSB7CiAgICAgICAgIGRlYnVnKCdvbm5vbWF0Y2gnKTsKICAgICAgICAgc2hvdWxkQmUoJ2NvdW50
JywgJzQnKTsKICAgICAgICAgKytjb3VudDsKLSAgICAgICAgc2hvdWxkQmUoJ2V2ZW50LnJlc3Vs
dCcsICdudWxsJyk7CisgICAgICAgIHNob3VsZEJlKCdldmVudC5yZXN1bHRzJywgJ251bGwnKTsK
ICAgICB9CiAKICAgICByLm9uc3BlZWNoZW5kID0gICAgIGZ1bmN0aW9uKCkgeyBkZWJ1Zygnb25z
cGVlY2hlbmQnKTsgICBzaG91bGRCZSgnY291bnQnLCAnNScpOyArK2NvdW50OyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177213</attachid>
            <date>2012-12-03 02:15:07 -0800</date>
            <delta_ts>2012-12-03 06:28:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103407-20121203111233.patch</filename>
            <type>text/plain</type>
            <size>38620</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MzY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjNlNzJmNGIzNzYwYTlj
MGZkNjUwZGQxNWI0Yjc2M2ViYTkwYjk2MC4uYjE2NjcwNTAwYTk2MzNkMzM5NzczOGNiZDNlNzZh
NGRlZTVjYmI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTEyLTAzICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIFNwZWVjaCBSZWNv
Z25pdGlvbiBBUEk6IFVwZGF0ZSBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50IHRvIG1hdGNoIHRoZSBz
cGVjaWZpY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDM0MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBTcGVjaWZpY2F0aW9uIGZvciB0aGUgU3BlZWNoIFJlY29nbml0aW9uIEFQSToKKyAgICAg
ICAgaHR0cDovL2R2Y3MudzMub3JnL2hnL3NwZWVjaC1hcGkvcmF3LWZpbGUvdGlwL3NwZWVjaGFw
aS5odG1sCisKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIHRoZSBmb2xsb3dpbmc6CisgICAgICAg
IG8gQWRkcyByZXN1bHRzLCBhbmQgcmVtb3ZpbmcgcmVzdWx0LCBvbiBTcGVlY2hSZWNvZ25pdGlv
bkV2ZW50CisgICAgICAgIG8gUmVuYW1pbmcgU3BlZWNoUmVjb2duaXRpb25SZXN1bHQ6OmZpbmFs
IHRvIGlzRmluYWwKKyAgICAgICAgbyBSZW1vdmluZyBlbW1hIGZyb20gU3BlZWNoUmVjb2duaXRp
b25SZXN1bHQKKworICAgICAgICBUaGUgZW1tYSBhdHRyaWJ1dGUgaXMgc3VwcG9zZWQgdG8gbW92
ZSBmcm9tIFNwZWVjaFJlY29nbml0aW9uUmVzdWx0IHRvIHRoZSBTcGVlY2hSZWNvZ25pdGlvbkV2
ZW50LAorICAgICAgICBidXQgdGhhdCBjYXVzZWQgR0MgaXNzdWVzIGZvciB1bnJlbGF0ZWQgY29k
ZSBzbyBpdCB3aWxsIGJlIGFkZGVkIGxhdGVyIHdoZW4gcHJvcGVybHkgZml4ZWQuCisKKyAgICAg
ICAgRXhpc3RpbmcgdGVzdHMgdXBkYXRlZCB0byB0ZXN0IHRoZSBuZXcgQVBJLgorCisgICAgICAg
ICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb246OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uOjpkaWRSZWNlaXZlUmVzdWx0cyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5oOgorICAgICAgICAoU3BlZWNo
UmVjb2duaXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9u
RXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FdmVudDo6Y3Jl
YXRlUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25FdmVudDo6U3BlZWNoUmVjb2duaXRpb25FdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvbkV2ZW50Ojp+U3BlZWNoUmVjb2duaXRpb25FdmVudCk6Cisg
ICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FdmVudC5oOgorICAgICAg
ICAoU3BlZWNoUmVjb2duaXRpb25FdmVudEluaXQpOgorICAgICAgICAoU3BlZWNoUmVjb2duaXRp
b25FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkV2ZW50OjpyZXN1
bHRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkV2ZW50OjpyZXN1
bHRzKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkV2ZW50Lmlk
bDoKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlc3VsdC5jcHA6
CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXN1bHQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVzdWx0Ojppc0ZpbmFsKToKKyAgICAg
ICAgKFNwZWVjaFJlY29nbml0aW9uUmVzdWx0KToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvblJlc3VsdC5pZGw6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9EaWN0
aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6OmdldCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9EaWN0aW9uYXJ5Lmg6CisgICAgICAg
IChEaWN0aW9uYXJ5KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhTcGVlY2hSZWNv
Z25pdGlvblJlc3VsdEN1c3RvbS5jcHA6IFJlbW92ZWQuCisKIDIwMTItMTItMDIgIE5vZWwgR29y
ZG9uICA8bm9lbC5nb3Jkb25AZ21haWwuY29tPgogCiAgICAgICAgIEltYWdlT3JpZW50YXRpb246
OnRyYW5zZm9ybUZyb21EZWZhdWx0KCkgY2FzZSBsYWJlbHMgc2hvdWxkIGJlIGluIG51bWVyaWNh
bCBvcmRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBlNDI0MjEyM2ZjM2JjY2RiZTA1
YmE3NTFiNjJmZDAwOTg1MjY2YmE3Li44MDg1YWJiMjA4MTk3MmI0NWFjZTRlMTc1MGVjMjQ4OTYw
MGY3ZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEy
LTEyLTAzICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAg
IFNwZWVjaCBSZWNvZ25pdGlvbiBBUEk6IFVwZGF0ZSBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50IHRv
IG1hdGNoIHRoZSBzcGVjaWZpY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDM0MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRpbmcgdGhlIG5ldyBkaWRSZWNlaXZlUmVzdWx0cyBtZXRob2Qu
CisKKyAgICAgICAgKiBwdWJsaWMvV2ViU3BlZWNoUmVjb2duaXplckNsaWVudC5oOgorICAgICAg
ICAqIHNyYy9TcGVlY2hSZWNvZ25pdGlvbkNsaWVudFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6U3BlZWNoUmVjb2duaXRpb25DbGllbnRQcm94eTo6ZGlkUmVjZWl2ZVJlc3VsdHMpOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvU3BlZWNoUmVjb2duaXRpb25DbGllbnRQcm94
eS5oOgorICAgICAgICAoU3BlZWNoUmVjb2duaXRpb25DbGllbnRQcm94eSk6CisKIDIwMTItMTIt
MDIgIFNhZHJ1bCBIYWJpYiBDaG93ZGh1cnkgIDxzYWRydWxAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtjaHJvbWl1bV0gQ29ycmVjdCB0aGUgbG9jYXRpb24gb2Ygc3ludGhldGljIG1vdXNlIGV2
ZW50cyB3aGVuIHBhZ2UgaXMgem9vbWVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAKaW5kZXggNDFmNDk4ZmE5ZTg1NGZjNmZlZjFh
ODY2NmI3YTQ3NWYzNDM0Zjg2Yi4uYmVkYTgyNzhmYzNmNmQzYjk1OWM3YTZmY2QwMGU4MzdmNzgx
YzU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJl
Y29nbml0aW9uLmNwcApAQCAtNTQsNiArNTQsNyBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uOjpz
dGFydChFeGNlcHRpb25Db2RlJiBlYykKICAgICB9CiAKICAgICBzZXRQZW5kaW5nQWN0aXZpdHko
dGhpcyk7CisgICAgbV9maW5hbFJlc3VsdHMuY2xlYXIoKTsKICAgICBtX2NvbnRyb2xsZXItPnN0
YXJ0KHRoaXMsIG1fZ3JhbW1hcnMuZ2V0KCksIG1fbGFuZywgbV9jb250aW51b3VzLCBtX2ludGVy
aW1SZXN1bHRzLCBtX21heEFsdGVybmF0aXZlcyk7CiAgICAgbV9zdGFydGVkID0gdHJ1ZTsKIH0K
QEAgLTEwNSw2ICsxMDYsMjAgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvbjo6ZGlkUmVjZWl2ZVJl
c3VsdChQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiByZXMKICAgICBkaXNwYXRj
aEV2ZW50KFNwZWVjaFJlY29nbml0aW9uRXZlbnQ6OmNyZWF0ZVJlc3VsdChyZXN1bHQsIHJlc3Vs
dEluZGV4LCByZXN1bHRIaXN0b3J5KSk7CiB9CiAKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb246OmRp
ZFJlY2VpdmVSZXN1bHRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1
bHQ+ID4mIG5ld0ZpbmFsUmVzdWx0cywgY29uc3QgVmVjdG9yPFJlZlB0cjxTcGVlY2hSZWNvZ25p
dGlvblJlc3VsdD4gPiYgY3VycmVudEludGVyaW1SZXN1bHRzKQoreworICAgIHVuc2lnbmVkIGxv
bmcgcmVzdWx0SW5kZXggPSBtX2ZpbmFsUmVzdWx0cy5zaXplKCk7CisKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG5ld0ZpbmFsUmVzdWx0cy5zaXplKCk7ICsraSkKKyAgICAgICAgbV9maW5h
bFJlc3VsdHMuYXBwZW5kKG5ld0ZpbmFsUmVzdWx0c1tpXSk7CisKKyAgICBWZWN0b3I8UmVmUHRy
PFNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiA+IHJlc3VsdHMgPSBtX2ZpbmFsUmVzdWx0czsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGN1cnJlbnRJbnRlcmltUmVzdWx0cy5zaXplKCk7ICsr
aSkKKyAgICAgICAgcmVzdWx0cy5hcHBlbmQoY3VycmVudEludGVyaW1SZXN1bHRzW2ldKTsKKwor
ICAgIGRpc3BhdGNoRXZlbnQoU3BlZWNoUmVjb2duaXRpb25FdmVudDo6Y3JlYXRlUmVzdWx0KHJl
c3VsdEluZGV4LCByZXN1bHRzKSk7Cit9CisKIHZvaWQgU3BlZWNoUmVjb2duaXRpb246OmRpZFJl
Y2VpdmVOb01hdGNoKFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+IHJlc3VsdCkK
IHsKICAgICBkaXNwYXRjaEV2ZW50KFNwZWVjaFJlY29nbml0aW9uRXZlbnQ6OmNyZWF0ZU5vTWF0
Y2gocmVzdWx0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
UmVjb2duaXRpb24uaAppbmRleCBiNWNhNGRkMGFmZDNiMzg0N2I2NWNlMDA1NmI4MjZkMjdlNGQz
YjZlLi42NDNkZGE4YjgzMTk4YjE4OTgzMmE1ZTU3MWQyNGUxYmFmYWE5MjYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmgKQEAgLTcz
LDYgKzczLDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkRW5kU3BlZWNoKCk7CiAgICAgdm9pZCBk
aWRFbmRTb3VuZCgpOwogICAgIHZvaWQgZGlkRW5kQXVkaW8oKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVSZXN1bHRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+ID4m
IG5ld0ZpbmFsUmVzdWx0cywgY29uc3QgVmVjdG9yPFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJl
c3VsdD4gPiYgY3VycmVudEludGVyaW1SZXN1bHRzKTsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRo
aXMgb25jZSB3ZSBzdGFydCB1c2luZyBkaWRSZWNlaXZlUmVzdWx0cy4KICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXN1bHQoUGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4sIHVuc2lnbmVk
IGxvbmcgcmVzdWx0SW5kZXgsIFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0
PiByZXN1bHRIaXN0b3J5KTsKICAgICB2b2lkIGRpZFJlY2VpdmVOb01hdGNoKFBhc3NSZWZQdHI8
U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+KTsKICAgICB2b2lkIGRpZFJlY2VpdmVFcnJvcihQYXNz
UmVmUHRyPFNwZWVjaFJlY29nbml0aW9uRXJyb3I+KTsKQEAgLTEyNCw2ICsxMjYsNyBAQCBwcml2
YXRlOgogICAgIFNwZWVjaFJlY29nbml0aW9uQ29udHJvbGxlciogbV9jb250cm9sbGVyOwogICAg
IGJvb2wgbV9zdG9wcGVkQnlBY3RpdmVET01PYmplY3Q7CiAgICAgYm9vbCBtX3N0YXJ0ZWQ7Cisg
ICAgVmVjdG9yPFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4gPiBtX2ZpbmFsUmVzdWx0
czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXZlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FdmVudC5jcHAKaW5kZXggZTJh
OGY3YTFmZTA4NmY0NDUwOGIwZjM0NTk3OTBmMThmOWM1MDdlNi4uMmI0MWE1OTM0N2UzZmQ4ODQ0
NWU1OGEwYWIxNTc0N2I0NDUxZjI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FdmVudC5jcHAKQEAgLTUxLDYgKzUxLDEx
IEBAIFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25FdmVudD4gU3BlZWNoUmVjb2duaXRpb25F
dmVudDo6Y3JlYXRlUmVzdWx0KFBhc3NSZWZQCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTcGVl
Y2hSZWNvZ25pdGlvbkV2ZW50KGV2ZW50TmFtZXMoKS5yZXN1bHRFdmVudCwgcmVzdWx0LCByZXN1
bHRJbmRleCwgcmVzdWx0SGlzdG9yeSkpOwogfQogCitQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0
aW9uRXZlbnQ+IFNwZWVjaFJlY29nbml0aW9uRXZlbnQ6OmNyZWF0ZVJlc3VsdCh1bnNpZ25lZCBs
b25nIHJlc3VsdEluZGV4LCBjb25zdCBWZWN0b3I8UmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVz
dWx0PiA+JiByZXN1bHRzKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3BlZWNoUmVjb2du
aXRpb25FdmVudChldmVudE5hbWVzKCkucmVzdWx0RXZlbnQsIHJlc3VsdEluZGV4LCByZXN1bHRz
KSk7Cit9CisKIFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25FdmVudD4gU3BlZWNoUmVjb2du
aXRpb25FdmVudDo6Y3JlYXRlTm9NYXRjaChQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVz
dWx0PiByZXN1bHQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTcGVlY2hSZWNvZ25pdGlv
bkV2ZW50KGV2ZW50TmFtZXMoKS5ub21hdGNoRXZlbnQsIHJlc3VsdCwgMCwgMCkpOwpAQCAtNjgs
MjAgKzczLDMxIEBAIFNwZWVjaFJlY29nbml0aW9uRXZlbnQ6OlNwZWVjaFJlY29nbml0aW9uRXZl
bnQoKQogCiBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50OjpTcGVlY2hSZWNvZ25pdGlvbkV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lLCBjb25zdCBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50
SW5pdCYgaW5pdGlhbGl6ZXIpCiAgICAgOiBFdmVudChldmVudE5hbWUsIGluaXRpYWxpemVyKQot
ICAgICwgbV9yZXN1bHQoaW5pdGlhbGl6ZXIucmVzdWx0KQogICAgICwgbV9yZXN1bHRJbmRleChp
bml0aWFsaXplci5yZXN1bHRJbmRleCkKKyAgICAsIG1fcmVzdWx0KGluaXRpYWxpemVyLnJlc3Vs
dCkKICAgICAsIG1fcmVzdWx0SGlzdG9yeShpbml0aWFsaXplci5yZXN1bHRIaXN0b3J5KQogewog
fQogCiBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50OjpTcGVlY2hSZWNvZ25pdGlvbkV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnROYW1lLCBQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVz
dWx0PiByZXN1bHQsIHNob3J0IHJlc3VsdEluZGV4LCBQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0
aW9uUmVzdWx0TGlzdD4gcmVzdWx0SGlzdG9yeSkKICAgICA6IEV2ZW50KGV2ZW50TmFtZSwgLypj
YW5CdWJibGU9Ki9mYWxzZSwgLypjYW5jZWxhYmxlPSovZmFsc2UpCi0gICAgLCBtX3Jlc3VsdChy
ZXN1bHQpCiAgICAgLCBtX3Jlc3VsdEluZGV4KHJlc3VsdEluZGV4KQorICAgICwgbV9yZXN1bHQo
cmVzdWx0KQogICAgICwgbV9yZXN1bHRIaXN0b3J5KHJlc3VsdEhpc3RvcnkpCiB7CiB9CiAKK1Nw
ZWVjaFJlY29nbml0aW9uRXZlbnQ6OlNwZWVjaFJlY29nbml0aW9uRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudE5hbWUsIHVuc2lnbmVkIGxvbmcgcmVzdWx0SW5kZXgsIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+ID4mIHJlc3VsdHMpCisgICAgOiBFdmVu
dChldmVudE5hbWUsIC8qY2FuQnViYmxlPSovZmFsc2UsIC8qY2FuY2VsYWJsZT0qL2ZhbHNlKQor
ICAgICwgbV9yZXN1bHRJbmRleChyZXN1bHRJbmRleCkKKyAgICAsIG1fcmVzdWx0cyhTcGVlY2hS
ZWNvZ25pdGlvblJlc3VsdExpc3Q6OmNyZWF0ZShyZXN1bHRzKSkKK3sKK30KKworU3BlZWNoUmVj
b2duaXRpb25FdmVudDo6flNwZWVjaFJlY29nbml0aW9uRXZlbnQoKQoreworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25F
dmVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25F
dmVudC5oCmluZGV4IGQ0NDVjM2E4ZGRmYjgwNDdiZTg3OTliNDBmMWMyMTc5OWMzNGFlZjAuLjIy
ZjBlOWNkODY1OTdlZDA3NjEwMDBhZmUwY2Y1MDFhYzkyOTM4OGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXZlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkV2ZW50LmgKQEAg
LTQzLDIxICs0MywzMSBAQCBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3Q7CiBzdHJ1
Y3QgU3BlZWNoUmVjb2duaXRpb25FdmVudEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKICAgICBT
cGVlY2hSZWNvZ25pdGlvbkV2ZW50SW5pdCgpOwogCisgICAgLy8gREVQUkVDQVRFRAogICAgIFJl
ZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4gcmVzdWx0OwotICAgIHNob3J0IHJlc3VsdElu
ZGV4OwogICAgIFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3Q+IHJlc3VsdEhpc3Rv
cnk7CisKKyAgICB1bnNpZ25lZCBsb25nIHJlc3VsdEluZGV4OworICAgIFJlZlB0cjxTcGVlY2hS
ZWNvZ25pdGlvblJlc3VsdExpc3Q+IHJlc3VsdHM7CiB9OwogCiBjbGFzcyBTcGVlY2hSZWNvZ25p
dGlvbkV2ZW50IDogcHVibGljIEV2ZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTcGVlY2hSZWNvZ25pdGlvbkV2ZW50PiBjcmVhdGUoKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTcGVlY2hSZWNvZ25pdGlvbkV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiwgY29u
c3QgU3BlZWNoUmVjb2duaXRpb25FdmVudEluaXQmKTsKKyAgICB2aXJ0dWFsIH5TcGVlY2hSZWNv
Z25pdGlvbkV2ZW50KCk7CiAKKyAgICAvLyBERVBSRUNBVEVECiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U3BlZWNoUmVjb2duaXRpb25FdmVudD4gY3JlYXRlUmVzdWx0KFBhc3NSZWZQdHI8U3BlZWNo
UmVjb2duaXRpb25SZXN1bHQ+LCBzaG9ydCByZXN1bHRJbmRleCwgUGFzc1JlZlB0cjxTcGVlY2hS
ZWNvZ25pdGlvblJlc3VsdExpc3Q+IHJlc3VsdEhpc3RvcnkpOworCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3BlZWNoUmVjb2duaXRpb25FdmVudD4gY3JlYXRlUmVzdWx0KHVuc2lnbmVkIGxvbmcg
cmVzdWx0SW5kZXgsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+
ID4mIHJlc3VsdHMpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uRXZl
bnQ+IGNyZWF0ZU5vTWF0Y2goUGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4pOwog
CisgICAgdW5zaWduZWQgbG9uZyByZXN1bHRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0
SW5kZXg7IH0KKyAgICBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3QqIHJlc3VsdHMoKSBjb25z
dCB7IHJldHVybiBtX3Jlc3VsdHMuZ2V0KCk7IH0KKworICAgIC8vIERFUFJFQ0FURUQKICAgICBT
cGVlY2hSZWNvZ25pdGlvblJlc3VsdCogcmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHQu
Z2V0KCk7IH0KLSAgICBzaG9ydCByZXN1bHRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0
SW5kZXg7IH0gLy8gRklYTUU6IFNwZWMgc2F5cyB0aGlzIHNob3VsZCBiZSBzaG9ydCwgYnV0IG90
aGVyIGluZGljZXMgYXJlIHVuc2lnbmVkIGludHMuCiAgICAgU3BlZWNoUmVjb2duaXRpb25SZXN1
bHRMaXN0KiByZXN1bHRIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHRIaXN0b3J5Lmdl
dCgpOyB9CiAKICAgICAvLyBFdmVudApAQCAtNjYsMTEgKzc2LDE1IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgU3BlZWNoUmVjb2duaXRpb25FdmVudCgpOwogICAgIFNwZWVjaFJlY29nbml0aW9u
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgU3BlZWNoUmVjb2duaXRpb25FdmVudElu
aXQmKTsKLSAgICBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnROYW1lLCBQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0Piwgc2hvcnQgcmVzdWx0
SW5kZXgsIFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0PiByZXN1bHRIaXN0
b3J5KTsKKyAgICBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnROYW1lLCBQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0Piwgc2hvcnQgcmVzdWx0
SW5kZXgsIFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0PiByZXN1bHRIaXN0
b3J5KTsgLy8gRklYTUU6IFJlbW92ZS4KKyAgICBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnROYW1lLCB1bnNpZ25lZCBsb25nIHJlc3VsdEluZGV4LCBjb25z
dCBWZWN0b3I8UmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiA+JiByZXN1bHRzKTsKICAg
ICBleHBsaWNpdCBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50KFBhc3NSZWZQdHI8U3BlZWNoUmVjb2du
aXRpb25FcnJvcj4pOwogCisgICAgdW5zaWduZWQgbG9uZyBtX3Jlc3VsdEluZGV4OworICAgIFJl
ZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3Q+IG1fcmVzdWx0czsKKworICAgIC8vIERF
UFJFQ0FURUQKICAgICBSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+IG1fcmVzdWx0Owot
ICAgIHNob3J0IG1fcmVzdWx0SW5kZXg7CiAgICAgUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVz
dWx0TGlzdD4gbV9yZXN1bHRIaXN0b3J5OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FdmVudC5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkV2ZW50LmlkbAppbmRleCA4ZWI3
ODljMGMwYzk1MDg3YmQwMDUzNzQxMjEyNzQxMWU1YzY2NzI2Li4xODRjMmU5OGQzODhjNWEwMjc5
NjhmYjk5MjA0ZWU3OGIwMzhiMTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkV2ZW50LmlkbApAQCAtMjUsOSArMjUsMTMg
QEAKIAogWwogICAgIENvbmRpdGlvbmFsPVNDUklQVEVEX1NQRUVDSCwKLSAgICBDb25zdHJ1Y3Rv
clRlbXBsYXRlPUV2ZW50CisgICAgQ29uc3RydWN0b3JUZW1wbGF0ZT1FdmVudCwKIF0gaW50ZXJm
YWNlIFNwZWVjaFJlY29nbml0aW9uRXZlbnQgOiBFdmVudCB7CisgICAgLy8gREVQUkVDQVRFRAog
ICAgIFtJbml0aWFsaXplZEJ5RXZlbnRDb25zdHJ1Y3Rvcl0gcmVhZG9ubHkgYXR0cmlidXRlIFNw
ZWVjaFJlY29nbml0aW9uUmVzdWx0IHJlc3VsdDsKLSAgICBbSW5pdGlhbGl6ZWRCeUV2ZW50Q29u
c3RydWN0b3JdIHJlYWRvbmx5IGF0dHJpYnV0ZSBzaG9ydCByZXN1bHRJbmRleDsKICAgICBbSW5p
dGlhbGl6ZWRCeUV2ZW50Q29uc3RydWN0b3JdIHJlYWRvbmx5IGF0dHJpYnV0ZSBTcGVlY2hSZWNv
Z25pdGlvblJlc3VsdExpc3QgcmVzdWx0SGlzdG9yeTsKKworICAgIFtJbml0aWFsaXplZEJ5RXZl
bnRDb25zdHJ1Y3Rvcl0gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgcmVzdWx0SW5k
ZXg7CisgICAgW0luaXRpYWxpemVkQnlFdmVudENvbnN0cnVjdG9yXSByZWFkb25seSBhdHRyaWJ1
dGUgU3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0IHJlc3VsdHM7CisgICAgLy8gRklYTUU6IEFk
ZCB0aGUgZW1tYSBhdHRyaWJ1dGUuCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXN1bHQuY3BwCmluZGV4IGQ1NGYyYmY3
NGNmMDE2N2FiMGQ1YzM4YzRhMWNmMTg5NzNmZWUwYzQuLjkyNDg3NDRlZjdhMzRhM2RhNDNiZDAw
NTVmNTVlOTYzYWVjMzg4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlc3VsdC5jcHAKQEAgLTI5LDEwICsyOSw2IEBA
CiAKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblJlc3VsdC5oIgogCi0jaW5jbHVkZSAiRG9j
dW1lbnQuaCIKLSNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAiVGV4dC5oIgotCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFNwZWVjaFJlY29nbml0aW9uUmVzdWx0Ojp+U3BlZWNoUmVjb2du
aXRpb25SZXN1bHQoKQpAQCAtNTIsNTEgKzQ4LDYgQEAgU3BlZWNoUmVjb2duaXRpb25BbHRlcm5h
dGl2ZSogU3BlZWNoUmVjb2duaXRpb25SZXN1bHQ6Oml0ZW0odW5zaWduZWQgbG9uZyBpbmRleCkK
ICAgICByZXR1cm4gbV9hbHRlcm5hdGl2ZXNbaW5kZXhdLmdldCgpOwogfQogCi1zdGF0aWMgUXVh
bGlmaWVkTmFtZSBlbW1hUXVhbGlmaWVkTmFtZShjb25zdCBjaGFyKiBsb2NhbE5hbWUpCi17Ci0g
ICAgY29uc3QgY2hhciBlbW1hTmFtZXNwYWNlVXJsW10gPSAiaHR0cDovL3d3dy53My5vcmcvMjAw
My8wNC9lbW1hIjsKLSAgICByZXR1cm4gUXVhbGlmaWVkTmFtZSgiZW1tYSIsIGxvY2FsTmFtZSwg
ZW1tYU5hbWVzcGFjZVVybCk7Ci19Ci0KLURvY3VtZW50KiBTcGVlY2hSZWNvZ25pdGlvblJlc3Vs
dDo6ZW1tYSgpCi17Ci0gICAgaWYgKG1fZW1tYSkKLSAgICAgICAgcmV0dXJuIG1fZW1tYS5nZXQo
KTsKLQotICAgIFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSBEb2N1bWVudDo6Y3JlYXRlKDAs
IEtVUkwoKSk7Ci0KLSAgICBSZWZQdHI8RWxlbWVudD4gZW1tYUVsZW1lbnQgPSBkb2N1bWVudC0+
Y3JlYXRlRWxlbWVudChlbW1hUXVhbGlmaWVkTmFtZSgiZW1tYSIpLCBmYWxzZSk7Ci0gICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgZW1tYUVsZW1lbnQtPnNldEF0dHJpYnV0ZSgidmVyc2lv
biIsICIxLjAiLCBlYyk7Ci0gICAgQVNTRVJUKCFlYyk7Ci0gICAgaWYgKGVjKQotICAgICAgICBy
ZXR1cm4gMDsKLQotICAgIFJlZlB0cjxFbGVtZW50PiBvbmVPZiA9IGRvY3VtZW50LT5jcmVhdGVF
bGVtZW50KGVtbWFRdWFsaWZpZWROYW1lKCJvbmUtb2YiKSwgZmFsc2UpOwotICAgIG9uZU9mLT5z
ZXRBdHRyaWJ1dGUoZW1tYVF1YWxpZmllZE5hbWUoIm1lZGl1bSIpLCAiYWNvdXN0aWMiKTsKLSAg
ICBvbmVPZi0+c2V0QXR0cmlidXRlKGVtbWFRdWFsaWZpZWROYW1lKCJtb2RlIiksICJ2b2ljZSIp
OwotICAgIG9uZU9mLT5zZXRJZEF0dHJpYnV0ZSgib25lLW9mIik7Ci0KLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fYWx0ZXJuYXRpdmVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0
IFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvbkFsdGVybmF0aXZlPiYgYWx0ZXJuYXRpdmUgPSBtX2Fs
dGVybmF0aXZlc1tpXTsKLQotICAgICAgICBSZWZQdHI8RWxlbWVudD4gaW50ZXJwcmV0YXRpb24g
PSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVudChlbW1hUXVhbGlmaWVkTmFtZSgiaW50ZXJwcmV0YXRp
b24iKSwgZmFsc2UpOwotICAgICAgICBpbnRlcnByZXRhdGlvbi0+c2V0SWRBdHRyaWJ1dGUoU3Ry
aW5nOjpudW1iZXIoaSArIDEpKTsKLSAgICAgICAgaW50ZXJwcmV0YXRpb24tPnNldEF0dHJpYnV0
ZShlbW1hUXVhbGlmaWVkTmFtZSgiY29uZmlkZW5jZSIpLCBTdHJpbmc6Om51bWJlcihhbHRlcm5h
dGl2ZS0+Y29uZmlkZW5jZSgpKSk7Ci0KLSAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGxpdGVyYWwg
PSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVudChlbW1hUXVhbGlmaWVkTmFtZSgibGl0ZXJhbCIpLCBm
YWxzZSk7Ci0gICAgICAgIGxpdGVyYWwtPmFwcGVuZENoaWxkKGRvY3VtZW50LT5jcmVhdGVUZXh0
Tm9kZShhbHRlcm5hdGl2ZS0+dHJhbnNjcmlwdCgpKSk7Ci0gICAgICAgIGludGVycHJldGF0aW9u
LT5hcHBlbmRDaGlsZChsaXRlcmFsLnJlbGVhc2UoKSk7Ci0gICAgICAgIG9uZU9mLT5hcHBlbmRD
aGlsZChpbnRlcnByZXRhdGlvbi5yZWxlYXNlKCkpOwotICAgIH0KLQotICAgIGVtbWFFbGVtZW50
LT5hcHBlbmRDaGlsZChvbmVPZi5yZWxlYXNlKCkpOwotICAgIGRvY3VtZW50LT5hcHBlbmRDaGls
ZChlbW1hRWxlbWVudC5yZWxlYXNlKCkpOwotCi0gICAgbV9lbW1hID0gZG9jdW1lbnQ7Ci0gICAg
cmV0dXJuIG1fZW1tYS5nZXQoKTsKLX0KLQogU3BlZWNoUmVjb2duaXRpb25SZXN1bHQ6OlNwZWVj
aFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFZlY3RvcjxSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25B
bHRlcm5hdGl2ZT4gPiYgYWx0ZXJuYXRpdmVzLCBib29sIGZpbmFsKQogICAgIDogbV9hbHRlcm5h
dGl2ZXMoYWx0ZXJuYXRpdmVzKQogICAgICwgbV9maW5hbChmaW5hbCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVzdWx0LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlc3VsdC5oCmlu
ZGV4IDE4Zjc2ZTE0N2Q0N2I0ZTMwYTgzZDI1YWM2ZGI0YjJjMDk2YWIxYjYuLjc0Y2M3YjMwOTJk
ZjU2YTE0NTkwYTFlNjFlODZlMzM3NDI5ZGRhYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVzdWx0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXN1bHQuaApAQCAtMzQsOCAr
MzQsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERvY3VtZW50OwotCiBjbGFz
cyBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCA6IHB1YmxpYyBSZWZDb3VudGVkPFNwZWVjaFJlY29n
bml0aW9uUmVzdWx0PiB7CiBwdWJsaWM6CiAgICAgflNwZWVjaFJlY29nbml0aW9uUmVzdWx0KCk7
CkBAIC00MywxNSArNDEsMTMgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgbG9uZyBsZW5ndGgo
KSB7IHJldHVybiBtX2FsdGVybmF0aXZlcy5zaXplKCk7IH0KICAgICBTcGVlY2hSZWNvZ25pdGlv
bkFsdGVybmF0aXZlKiBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIGJvb2wgZmluYWwo
KSB7IHJldHVybiBtX2ZpbmFsOyB9Ci0gICAgRG9jdW1lbnQqIGVtbWEoKTsKKyAgICBib29sIGlz
RmluYWwoKSB7IHJldHVybiBtX2ZpbmFsOyB9CiAKIHByaXZhdGU6CiAgICAgU3BlZWNoUmVjb2du
aXRpb25SZXN1bHQoY29uc3QgVmVjdG9yPFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvbkFsdGVybmF0
aXZlPiA+JiwgYm9vbCBmaW5hbCk7CiAKICAgICBWZWN0b3I8UmVmUHRyPFNwZWVjaFJlY29nbml0
aW9uQWx0ZXJuYXRpdmU+ID4gbV9hbHRlcm5hdGl2ZXM7CiAgICAgYm9vbCBtX2ZpbmFsOwotICAg
IFJlZlB0cjxEb2N1bWVudD4gbV9lbW1hOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRp
b25SZXN1bHQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXRpb25SZXN1bHQuaWRsCmluZGV4IDYwOWQ2ZWE4N2I3ZmRkYWUwNDY4YTc2NjBmYjA5NjcyMWZm
ZGMxNjYuLmI3NDlhZWQ3NzczODQyODE0NDQzZTM1M2QyZDhmZmJkOWY4MzQ2ZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVzdWx0
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlv
blJlc3VsdC5pZGwKQEAgLTI1LDEyICsyNSw5IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1TQ1JJ
UFRFRF9TUEVFQ0gsCi0gICAgQ3VzdG9tSXNSZWFjaGFibGUsCi0gICAgSW5kZXhlZEdldHRlciwK
LSAgICBWOERlcGVuZGVudExpZmV0aW1lCisgICAgSW5kZXhlZEdldHRlcgogXSBpbnRlcmZhY2Ug
U3BlZWNoUmVjb2duaXRpb25SZXN1bHQgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25l
ZCBsb25nIGxlbmd0aDsKICAgICBTcGVlY2hSZWNvZ25pdGlvbkFsdGVybmF0aXZlIGl0ZW0oaW4g
W0lzSW5kZXhdIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBi
b29sZWFuIGZpbmFsOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBEb2N1bWVudCBlbW1hOworICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzRmluYWw7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmlu
ZGV4IDAzYjA1N2I2NWVkMTBlNmIyODQwNmZjNjU0M2IyYTY4NGFiMDQ4NjAuLjEyOGY4N2M1YmZk
MTQwYjIxOTVmMTY4NGMxMTk1MDExOTgyNjhiMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI0MzEs
NyArMjQzMSw2IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHUGF0aFNl
Z0N1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFBy
b2ZpbGVDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhTY3Jp
cHRQcm9maWxlTm9kZUN1c3RvbS5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFNwZWVjaFJlY29nbml0aW9uUmVzdWx0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4U3RvcmFnZUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFN0eWxlU2hlZXRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5k
aW5ncy92OC9jdXN0b20vVjhTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKaW5kZXggZjQ3NmQ3MjY4ZTJhNzNkM2Q0
M2QwYTdmZmZkNjA0MTkwN2M1YWYwMS4uNGUyZGQ0YzZhOTIwYzZiZjBjOWY1OWNkMWY1ZTY5Mjg2
OTgzMTQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9u
YXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3Bw
CkBAIC04OCw2ICs4OCwxMSBAQCB2b2lkIEpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVlKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgc2hvcnQmCiAgICAgcmVzdWx0ID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KHZhbHVlLnRvVUludDMyKGV4ZWMpKTsKIH0KIAor
dm9pZCBKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
dmFsdWUsIHVuc2lnbmVkIGxvbmcmIHJlc3VsdCkKK3sKKyAgICByZXN1bHQgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBsb25nPih2YWx1ZS50b1VJbnQzMihleGVjKSk7Cit9CisKIHZvaWQgSlNEaWN0
aW9uYXJ5Ojpjb252ZXJ0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCB1bnNp
Z25lZCBsb25nIGxvbmcmIHJlc3VsdCkKIHsKICAgICBkb3VibGUgZCA9IHZhbHVlLnRvTnVtYmVy
KGV4ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9u
YXJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuaAppbmRleCAz
Yzk4NzNlMjUyOGM4N2FmMDQxNjFjNDAxOWFlYTUwNDRmYTJhYzVkLi5lMTdmODY4ZmMwOWE0Njg2
NzYxZjAzNDNiNzVlNDZjNWQ5YjA3YWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RpY3Rpb25hcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RpY3Rpb25hcnkuaApAQCAtOTIsNiArOTIsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lk
IGNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgaW50JiByZXN1bHQp
OwogICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNW
YWx1ZSwgdW5zaWduZWQmIHJlc3VsdCk7CiAgICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCB1bnNpZ25lZCBzaG9ydCYgcmVzdWx0KTsKKyAg
ICBzdGF0aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUs
IHVuc2lnbmVkIGxvbmcmIHJlc3VsdCk7CiAgICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCB1bnNpZ25lZCBsb25nIGxvbmcmIHJlc3VsdCk7
CiAgICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1Zh
bHVlLCBkb3VibGUmIHJlc3VsdCk7CiAgICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBEaWN0aW9uYXJ5JiByZXN1bHQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmNwcAppbmRleCAxODc0MDNmY2RhNDMzMTVhNTA0
ZmQ3MzZkYzhlZTc2YTY1NTRhYWVhLi4wYThjYzQyNDNkM2ViNWZjOWQ2MGJlOGFmMWQ0MjAwNjEy
YzU3NzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmNwcApAQCAt
MjEzLDYgKzIxMywxOSBAQCBib29sIERpY3Rpb25hcnk6OmdldChjb25zdCBTdHJpbmcmIGtleSwg
dW5zaWduZWQmIHZhbHVlKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIERpY3Rp
b25hcnk6OmdldChjb25zdCBTdHJpbmcmIGtleSwgdW5zaWduZWQgbG9uZyYgdmFsdWUpIGNvbnN0
Cit7CisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhWYWx1ZTsKKyAgICBpZiAoIWdldEtleShr
ZXksIHY4VmFsdWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB2ODo6TG9jYWw8djg6
OkludGVnZXI+IHY4SW50ZWdlciA9IHY4VmFsdWUtPlRvSW50ZWdlcigpOworICAgIGlmICh2OElu
dGVnZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdmFsdWUgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBsb25nPih2OEludGVnZXItPlZhbHVlKCkpOworICAgIHJldHVybiB0
cnVlOworfQorCiBib29sIERpY3Rpb25hcnk6OmdldChjb25zdCBTdHJpbmcmIGtleSwgdW5zaWdu
ZWQgbG9uZyBsb25nJiB2YWx1ZSkgY29uc3QKIHsKICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2
OFZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFy
eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5oCmluZGV4IDAzMTVm
MDBjMzc2NTlkYjZiYTAwMGE5NTM5MzNiNzczZDFmMTllZDAuLmNmZDEzNzFiYTk1MWRiYmMwNGFk
ODhmZDM3YmQ5MGU1OTVkZTgyOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0RpY3Rpb25hcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9u
YXJ5LmgKQEAgLTY4LDYgKzY4LDcgQEAgcHVibGljOgogICAgIGJvb2wgZ2V0KGNvbnN0IFN0cmlu
ZyYsIHNob3J0JikgY29uc3Q7CiAgICAgYm9vbCBnZXQoY29uc3QgU3RyaW5nJiwgdW5zaWduZWQg
c2hvcnQmKSBjb25zdDsKICAgICBib29sIGdldChjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCYpIGNv
bnN0OworICAgIGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIGxvbmcmKSBjb25zdDsK
ICAgICBib29sIGdldChjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBsb25nIGxvbmcmKSBjb25zdDsK
ICAgICBib29sIGdldChjb25zdCBTdHJpbmcmLCBSZWZQdHI8RE9NV2luZG93PiYpIGNvbnN0Owog
ICAgIGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYsIFJlZlB0cjxTdG9yYWdlPiYpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3BlZWNoUmVjb2du
aXRpb25SZXN1bHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4U3BlZWNoUmVjb2duaXRpb25SZXN1bHRDdXN0b20uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBlZjE0NTY1ZmNlMTJhNTQ3YjI5MjVjZDk5MzY1ODllODEyMTIwODRjLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNwZWVjaFJlY29nbml0aW9uUmVzdWx0Q3VzdG9tLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0KLSNpZiBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQotCi0jaW5jbHVkZSAiVjhTcGVlY2hS
ZWNvZ25pdGlvblJlc3VsdC5oIgotCi0jaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25SZXN1bHQu
aCIKLSNpbmNsdWRlICJWOEJpbmRpbmcuaCIKLSNpbmNsdWRlICJWOEdDQ29udHJvbGxlci5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQqIFY4U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ6
Om9wYXF1ZVJvb3RGb3JHQyh2b2lkKiBvYmplY3QsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+
IHdyYXBwZXIpCi17Ci0gICAgQVNTRVJUKFY4U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ6Okhhc0lu
c3RhbmNlKHdyYXBwZXIpKTsKLSAgICBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCogaW1wbCA9IHN0
YXRpY19jYXN0PFNwZWVjaFJlY29nbml0aW9uUmVzdWx0Kj4ob2JqZWN0KTsKLSAgICByZXR1cm4g
VjhHQ0NvbnRyb2xsZXI6Om9wYXF1ZVJvb3RGb3JHQyhpbXBsLT5lbW1hKCkpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoUmVjb2du
aXplckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoUmVj
b2duaXplckNsaWVudC5oCmluZGV4IGViZGMwYzE3MzkyMWY1NGM5ZDQwOGE2NzAzMTkxN2VhYzJk
ZWQ0OTMuLjY5OWY2ZGFhNzAyMDU5YWIwNDQ5NDZhMTJlOTdhNzAzOTlhYTBmNTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFJlY29nbml6ZXJDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hSZWNvZ25p
emVyQ2xpZW50LmgKQEAgLTY4LDggKzY4LDE3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRW5kQXVkaW8oY29uc3QgV2ViU3BlZWNoUmVjb2duaXRpb25IYW5kbGUmKSA9IDA7CiAKICAg
ICAvLyBUbyBiZSBjYWxsZWQgd2hlbiB0aGUgc3BlZWNoIHJlY29nbml6ZXIgcmV0dXJucyBhIHJl
c3VsdC4KKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiB3ZSBoYXZlIG1vdmVkIG92ZXIg
dG8gb25seSB1c2UgdGhlIGZ1bmN0aW9uIGJlbG93LgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlUmVzdWx0KGNvbnN0IFdlYlNwZWVjaFJlY29nbml0aW9uSGFuZGxlJiwgY29uc3QgV2ViU3Bl
ZWNoUmVjb2duaXRpb25SZXN1bHQmLCB1bnNpZ25lZCBsb25nIHJlc3VsdEluZGV4LCBjb25zdCBX
ZWJWZWN0b3I8V2ViU3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+JiByZXN1bHRIaXN0b3J5KSA9IDA7
CiAKKyAgICAvLyBUbyBiZSBjYWxsZWQgd2hlbiB0aGUgc3BlZWNoIHJlY29nbml6ZXIgcHJvdmlk
ZXMgbmV3IHJlc3VsdHMuCisgICAgLy8gLSBuZXdGaW5hbFJlc3VsdHMgY29udGFpbnMgemVybyBv
ciBtb3JlIGZpbmFsIHJlc3VsdHMgdGhhdCBhcmUgbmV3IHNpbmNlCisgICAgLy8gdGhlIGxhc3Qg
dGltZSB0aGUgZnVuY3Rpb24gd2FzIGNhbGxlZC4KKyAgICAvLyAtIGN1cnJlbnRJbnRlcmltUmVz
dWx0cyBjb250YWlucyB6ZXJvIG9yIG1vcmUgaW50ZWlybSByZXN1bHRzIHRoYXQKKyAgICAvLyBy
ZXBsYWNlIHRoZSBpbnRlcmltIHJlc3VsdHMgdGhhdCB3ZXJlIHJlcG9ydGVkIHRoZSBsYXN0IHRp
bWUgdGhpcworICAgIC8vIGZ1bmN0aW9uIHdhcyBjYWxsZWQuCisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVSZXN1bHRzKGNvbnN0IFdlYlNwZWVjaFJlY29nbml0aW9uSGFuZGxlJiwgY29uc3Qg
V2ViVmVjdG9yPFdlYlNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiYgbmV3RmluYWxSZXN1bHRzLCBj
b25zdCBXZWJWZWN0b3I8V2ViU3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+JiBjdXJyZW50SW50ZXJp
bVJlc3VsdHMpID0gMDsKKwogICAgIC8vIFRvIGJlIGNhbGxlZCB3aGVuIHRoZSBzcGVlY2ggcmVj
b2duaXplciByZXR1cm5zIGEgZmluYWwgcmVzdWx0IHdpdGggbm8KICAgICAvLyByZWNvZ25pemlv
biBoeXBvdGhlc2lzLgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTm9NYXRjaChjb25zdCBX
ZWJTcGVlY2hSZWNvZ25pdGlvbkhhbmRsZSYsIGNvbnN0IFdlYlNwZWVjaFJlY29nbml0aW9uUmVz
dWx0JikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNo
UmVjb2duaXRpb25DbGllbnRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9T
cGVlY2hSZWNvZ25pdGlvbkNsaWVudFByb3h5LmNwcAppbmRleCAwODI3NDdjZGI5Y2NjYzZmZmJk
ZDM0MTE1NTM1ZWM4ODk0M2ZkZjUwLi5mNzQ4NWVkOWIzNjI2OWNkYmM2MmI5YmMwNmExZDFmYTNi
NTFkZDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hSZWNv
Z25pdGlvbkNsaWVudFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9T
cGVlY2hSZWNvZ25pdGlvbkNsaWVudFByb3h5LmNwcApAQCAtMTEzLDYgKzExMywyMSBAQCB2b2lk
IFNwZWVjaFJlY29nbml0aW9uQ2xpZW50UHJveHk6OmRpZFJlY2VpdmVSZXN1bHQoY29uc3QgV2Vi
U3BlZWNoUmVjb2duaXRpb25IYQogCiB9CiAKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25DbGllbnRQ
cm94eTo6ZGlkUmVjZWl2ZVJlc3VsdHMoY29uc3QgV2ViU3BlZWNoUmVjb2duaXRpb25IYW5kbGUm
IGhhbmRsZSwgY29uc3QgV2ViVmVjdG9yPFdlYlNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiYgbmV3
RmluYWxSZXN1bHRzLCBjb25zdCBXZWJWZWN0b3I8V2ViU3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+
JiBjdXJyZW50SW50ZXJpbVJlc3VsdHMpCit7CisgICAgUmVmUHRyPFNwZWVjaFJlY29nbml0aW9u
PiByZWNvZ25pdGlvbiA9IFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb24+KGhhbmRsZSk7CisK
KyAgICBWZWN0b3I8UmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiA+IGZpbmFsUmVzdWx0
c1ZlY3RvcihuZXdGaW5hbFJlc3VsdHMuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG5ld0ZpbmFsUmVzdWx0cy5zaXplKCk7ICsraSkKKyAgICAgICAgZmluYWxSZXN1bHRzVmVj
dG9yW2ldID0gc3RhdGljX2Nhc3Q8UGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4g
PihuZXdGaW5hbFJlc3VsdHNbaV0pOworCisgICAgVmVjdG9yPFJlZlB0cjxTcGVlY2hSZWNvZ25p
dGlvblJlc3VsdD4gPiBpbnRlcmltUmVzdWx0c1ZlY3RvcihjdXJyZW50SW50ZXJpbVJlc3VsdHMu
c2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGN1cnJlbnRJbnRlcmltUmVzdWx0
cy5zaXplKCk7ICsraSkKKyAgICAgICAgaW50ZXJpbVJlc3VsdHNWZWN0b3JbaV0gPSBzdGF0aWNf
Y2FzdDxQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiA+KGN1cnJlbnRJbnRlcmlt
UmVzdWx0c1tpXSk7CisKKyAgICByZWNvZ25pdGlvbi0+ZGlkUmVjZWl2ZVJlc3VsdHMoZmluYWxS
ZXN1bHRzVmVjdG9yLCBpbnRlcmltUmVzdWx0c1ZlY3Rvcik7Cit9CisKIHZvaWQgU3BlZWNoUmVj
b2duaXRpb25DbGllbnRQcm94eTo6ZGlkUmVjZWl2ZU5vTWF0Y2goY29uc3QgV2ViU3BlZWNoUmVj
b2duaXRpb25IYW5kbGUmIGhhbmRsZSwgY29uc3QgV2ViU3BlZWNoUmVjb2duaXRpb25SZXN1bHQm
IHJlc3VsdCkKIHsKICAgICBSZWZQdHI8U3BlZWNoUmVjb2duaXRpb24+IHJlY29nbml0aW9uID0g
UGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvbj4oaGFuZGxlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaFJlY29nbml0aW9uQ2xpZW50UHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaFJlY29nbml0aW9uQ2xpZW50UHJveHkuaApp
bmRleCA2MTk0ZjY2MDA3YWYyYmY3NjIxOThiZWZhMzIyZGM5ODE1ZmU3NjNhLi4xNTk1OGQ0ZmJk
NzYxNjY2YThiZTM2NmNmZWVmZmU4ZDdhNWVhYWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9TcGVlY2hSZWNvZ25pdGlvbkNsaWVudFByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoUmVjb2duaXRpb25DbGllbnRQcm94eS5oCkBAIC01
Niw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kU291bmQoY29uc3Qg
V2ViU3BlZWNoUmVjb2duaXRpb25IYW5kbGUmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRW5kQXVkaW8oY29uc3QgV2ViU3BlZWNoUmVjb2duaXRpb25IYW5kbGUmKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3VsdChjb25zdCBXZWJTcGVlY2hSZWNvZ25p
dGlvbkhhbmRsZSYsIGNvbnN0IFdlYlNwZWVjaFJlY29nbml0aW9uUmVzdWx0JiwgdW5zaWduZWQg
bG9uZyByZXN1bHRJbmRleCwgY29uc3QgV2ViVmVjdG9yPFdlYlNwZWVjaFJlY29nbml0aW9uUmVz
dWx0PiYgcmVzdWx0SGlzdG9yeSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVSZXN1bHRzKGNvbnN0IFdlYlNwZWVjaFJlY29nbml0aW9uSGFuZGxlJiwgY29uc3QgV2ViVmVj
dG9yPFdlYlNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiYgbmV3RmluYWxSZXN1bHRzLCBjb25zdCBX
ZWJWZWN0b3I8V2ViU3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+JiBjdXJyZW50SW50ZXJpbVJlc3Vs
dHMpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTm9NYXRjaChjb25zdCBX
ZWJTcGVlY2hSZWNvZ25pdGlvbkhhbmRsZSYsIGNvbnN0IFdlYlNwZWVjaFJlY29nbml0aW9uUmVz
dWx0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVFcnJvcihjb25zdCBX
ZWJTcGVlY2hSZWNvZ25pdGlvbkhhbmRsZSYsIGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSwgV2Vi
U3BlZWNoUmVjb2duaXplckNsaWVudDo6RXJyb3JDb2RlKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkU3RhcnQoY29uc3QgV2ViU3BlZWNoUmVjb2duaXRpb25IYW5kbGUmKSBPVkVSUklE
RTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAx
MDgwNzYxOGU4ODE1OTcwNTBmOTIwZGM0NzI4NmViMGI2MWQzMjkxLi5hNjYyNWMzZWZlY2E1YmVl
ZTkwNmY4YjkwYmIxMWMxOGYzZGZiYzI0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTItMDMgIFRvbW15IFdp
ZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgU3BlZWNoIFJlY29nbml0
aW9uIEFQSTogVXBkYXRlIFNwZWVjaFJlY29nbml0aW9uRXZlbnQgdG8gbWF0Y2ggdGhlIHNwZWNp
ZmljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMzQwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENoYW5naW5nIHRoZSBtb2NrIHRvIHVzZSB0aGUgbmV3IHJlc3VsdHMgZGVsaXZlcnkgQVBJLgor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29nbml6
ZXIuY3BwOgorCiAyMDEyLTEyLTAyICBLeXVuZ1RhZSBLaW0gIDxrdGYua2ltQHNhbXN1bmcuY29t
PgogCiAgICAgICAgIFtFRkxdW1dLMl0gQWRkIHN1cHBvcnQgZm9yIGEgem9vbSBsZXZlbCBzZXR0
aW5nIHRvIE1pbmlCcm93c2VyCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9Nb2NrV2ViU3BlZWNoUmVjb2duaXplci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVjb2duaXplci5jcHAKaW5kZXggODgxNDNjMGJhODg0YjMz
ZmRlNDkwYmUxYzNhNjViYWVlMTc2ZWQ0Ni4uNDBkM2NiNGJhYTcwZDQ1ZGQ0ZGRlMjIzZTI3ZjUy
MmI5N2FiZDUzYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9j
a1dlYlNwZWVjaFJlY29nbml6ZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL01vY2tXZWJTcGVlY2hSZWNvZ25pemVyLmNwcApAQCAtNjksMTAgKzY5LDExIEBAIHB1Ymxp
YzoKICAgICAgICAgV2ViVmVjdG9yPGZsb2F0PiBjb25maWRlbmNlcyhzdGF0aWNfY2FzdDxzaXpl
X3Q+KDEpKTsKICAgICAgICAgdHJhbnNjcmlwdHNbMF0gPSBtX3RyYW5zY3JpcHQ7CiAgICAgICAg
IGNvbmZpZGVuY2VzWzBdID0gbV9jb25maWRlbmNlOwotICAgICAgICBXZWJTcGVlY2hSZWNvZ25p
dGlvblJlc3VsdCByZXM7Ci0gICAgICAgIHJlcy5hc3NpZ24odHJhbnNjcmlwdHMsIGNvbmZpZGVu
Y2VzLCB0cnVlKTsKKyAgICAgICAgV2ViVmVjdG9yPFdlYlNwZWVjaFJlY29nbml0aW9uUmVzdWx0
PiBmaW5hbFJlc3VsdHMoc3RhdGljX2Nhc3Q8c2l6ZV90PigxKSk7CisgICAgICAgIFdlYlZlY3Rv
cjxXZWJTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4gaW50ZXJpbVJlc3VsdHM7CisgICAgICAgIGZp
bmFsUmVzdWx0c1swXS5hc3NpZ24odHJhbnNjcmlwdHMsIGNvbmZpZGVuY2VzLCB0cnVlKTsKIAot
ICAgICAgICBtX3JlY29nbml6ZXItPmNsaWVudCgpLT5kaWRSZWNlaXZlUmVzdWx0KG1fcmVjb2du
aXplci0+aGFuZGxlKCksIHJlcywgMCwgV2ViVmVjdG9yPFdlYlNwZWVjaFJlY29nbml0aW9uUmVz
dWx0PigpKTsKKyAgICAgICAgbV9yZWNvZ25pemVyLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3Vs
dHMobV9yZWNvZ25pemVyLT5oYW5kbGUoKSwgZmluYWxSZXN1bHRzLCBpbnRlcmltUmVzdWx0cyk7
CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDUyODhhY2MyOTIyYzEyMWZiMGZjZmRmMDU1MWIw
NGUxMjlhZmMyNzMuLjI4N2I2OThjZWU4MmQ0M2NkYWUwZTFiYzVjNDk0MTI4NGU5YjlhNjEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0xMi0wMyAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21t
eXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBTcGVlY2ggUmVjb2duaXRpb24gQVBJOiBVcGRhdGUg
U3BlZWNoUmVjb2duaXRpb25FdmVudCB0byBtYXRjaCB0aGUgc3BlY2lmaWNhdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNDA3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRpbmcgYmFzaWMg
dGVzdHMgYW5kIHJlbW92aW5nIGVtbWEgdGVzdHMgdGVtcG9yYXJpbHkuCisKKyAgICAgICAgKiBm
YXN0L3NwZWVjaC9zY3JpcHRlZC9lbW1hLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAg
KiBmYXN0L3NwZWVjaC9zY3JpcHRlZC9lbW1hLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFz
dC9zcGVlY2gvc2NyaXB0ZWQvc3BlZWNocmVjb2duaXRpb24tYmFzaWNzLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBmYXN0L3NwZWVjaC9zY3JpcHRlZC9zcGVlY2hyZWNvZ25pdGlvbi1iYXNpY3Mu
aHRtbDoKKwogMjAxMi0xMi0wMiAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpA
aW50ZWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIFdlYktpdDIgZ2FyZGVuaW5nLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0ZWQvZW1tYS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9lbW1hLWV4cGVjdGVkLnR4dApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmMzZmJhZWEwYWMxYmJhOTdiN2JlZjA0MTc0
MWQwZTk4OWZlZjMzOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9lbW1hLWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLVRlc3QgdGhlIFNwZWVjaFJlY29nbml0aW9u
UmVzdWx0LmVtbWEgYXR0cmlidXRlLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQot
UEFTUyAnd2Via2l0U3BlZWNoUmVjb2duaXRpb24nIGluIHNlbGYgaXMgdHJ1ZQotUEFTUyB3ZWJr
aXRTcGVlY2hSZWNvZ25pdGlvbiA9PSBudWxsIGlzIGZhbHNlCi1vbnN0YXJ0Ci1vbmF1ZGlvc3Rh
cnQKLW9uc291bmRzdGFydAotb25zcGVlY2hzdGFydAotb25yZXN1bHQKLVBBU1MgZXZlbnQucmVz
dWx0LmVtbWEuY2hpbGROb2Rlcy5sZW5ndGggaXMgMQotUEFTUyBldmVudC5yZXN1bHQuZW1tYS5m
aXJzdENoaWxkLm5vZGVOYW1lIGlzICJlbW1hOmVtbWEiCi13aW5kb3cuZW1tYSA9IGV2ZW50LnJl
c3VsdC5lbW1hLmZpcnN0Q2hpbGQKLVBBU1MgZW1tYS5nZXRBdHRyaWJ1dGUoInZlcnNpb24iKSBp
cyAiMS4wIgotUEFTUyBlbW1hLmNoaWxkTm9kZXMubGVuZ3RoIGlzIDEKLVBBU1MgZW1tYS5maXJz
dENoaWxkLm5vZGVOYW1lIGlzICJlbW1hOm9uZS1vZiIKLXdpbmRvdy5vbmVvZiA9IGVtbWEuZmly
c3RDaGlsZAotd2luZG93LmVtbWFOcyA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAzLzA0L2VtbWEn
Ci1QQVNTIG9uZW9mLmdldEF0dHJpYnV0ZSgiZW1tYTptZWRpdW0iKSBpcyAiYWNvdXN0aWMiCi1Q
QVNTIG9uZW9mLmdldEF0dHJpYnV0ZU5TKGVtbWFOcywgIm1lZGl1bSIpIGlzICJhY291c3RpYyIK
LVBBU1Mgb25lb2YuZ2V0QXR0cmlidXRlKCJlbW1hOm1vZGUiKSBpcyAidm9pY2UiCi1QQVNTIG9u
ZW9mLmdldEF0dHJpYnV0ZU5TKGVtbWFOcywgIm1vZGUiKSBpcyAidm9pY2UiCi1QQVNTIG9uZW9m
LmNoaWxkTm9kZXMubGVuZ3RoIGlzIDEKLVBBU1Mgb25lb2YuZmlyc3RDaGlsZC5ub2RlTmFtZSBp
cyAiZW1tYTppbnRlcnByZXRhdGlvbiIKLXdpbmRvdy5pbnRlcnByZXRhdGlvbiA9IG9uZW9mLmZp
cnN0Q2hpbGQKLVBBU1MgaW50ZXJwcmV0YXRpb24uZ2V0QXR0cmlidXRlKCJpZCIpIGlzICIxIgot
UEFTUyBpbnRlcnByZXRhdGlvbi5nZXRBdHRyaWJ1dGUoImVtbWE6Y29uZmlkZW5jZSIpIGlzICIw
LjQyIgotUEFTUyBpbnRlcnByZXRhdGlvbi5nZXRBdHRyaWJ1dGVOUyhlbW1hTnMsICJjb25maWRl
bmNlIikgaXMgIjAuNDIiCi1QQVNTIGludGVycHJldGF0aW9uLmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJsaXRlcmFsIikubGVuZ3RoIGlzIDEKLXdpbmRvdy5saXRlcmFsID0gaW50ZXJwcmV0YXRpb24u
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImxpdGVyYWwiKVswXQotUEFTUyBsaXRlcmFsLmNoaWxkTm9k
ZXMubGVuZ3RoIGlzIDEKLVBBU1MgbGl0ZXJhbC5maXJzdENoaWxkLmRhdGEgaXMgImhlbGxvLCB3
b3JsZCIKLQotVGVzdCB0aGF0IGVtbWEncyBET00gdHJlZSBzdGF5cyBhbGl2ZToKLXdpbmRvdy5l
bW1hID0gbnVsbAotd2luZG93Lm9uZW9mID0gbnVsbAotd2luZG93LmludGVycHJldGF0aW9uID0g
bnVsbAotd2luZG93LmxpdGVyYWwgPSBudWxsCi1ldmVudC5yZXN1bHQuZW1tYS5jdXN0b21Qcm9w
ZXJ0eSA9IDQyCi1nYygpCi1QQVNTIGV2ZW50LnJlc3VsdC5lbW1hLmN1c3RvbVByb3BlcnR5IGlz
IDQyCi1vbnNwZWVjaGVuZAotb25zb3VuZGVuZAotb25hdWRpb2VuZAotb25lbmQKLVBBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9lbW1hLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L3NwZWVjaC9zY3JpcHRlZC9lbW1hLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDY4MzE0NDNhYzMxMDFhY2E0NzEwMzE1NzkzZTYzNTViYjMzZDNkNzQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVl
Y2gvc2NyaXB0ZWQvZW1tYS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgotPGh0bWw+Ci08aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1k
ZXNjcmlwdGlvbignVGVzdCB0aGUgU3BlZWNoUmVjb2duaXRpb25SZXN1bHQuZW1tYSBhdHRyaWJ1
dGUuJyk7Ci0KLWZ1bmN0aW9uIHJ1bigpIHsKLSAgICAvLyBDaGVjayBhdmFpbGFiaWxpdHkgb2Yg
Y29uc3RydWN0b3JzLgotICAgIHNob3VsZEJlVHJ1ZSgiJ3dlYmtpdFNwZWVjaFJlY29nbml0aW9u
JyBpbiBzZWxmIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgid2Via2l0U3BlZWNoUmVjb2duaXRpb24g
PT0gbnVsbCIpOwotCi0gICAgZW1tYVRlc3QoKTsKLX0KLQotZnVuY3Rpb24gZW1tYVRlc3QoKSB7
Ci0gICAgdmFyIHIgPSBuZXcgd2Via2l0U3BlZWNoUmVjb2duaXRpb24oKTsKLQotICAgIC8vIFNl
dCBkZWZhdWx0IGhhbmRsZXJzLgotICAgIGZvciAodmFyIHByb3AgaW4gcikgewotICAgICAgICBp
ZiAocHJvcC5tYXRjaCgnXm9uJykpIHsKLSAgICAgICAgICAgIHJbcHJvcF0gPSBmdW5jdGlvbigp
IHsgZGVidWcoJ29uJyArIGV2ZW50LnR5cGUpOyB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBy
Lm9ucmVzdWx0ID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGRlYnVnKCdvbnJlc3VsdCcpOwotICAg
ICAgICBzaG91bGRCZSgnZXZlbnQucmVzdWx0LmVtbWEuY2hpbGROb2Rlcy5sZW5ndGgnLCAnMScp
OwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2V2ZW50LnJlc3VsdC5lbW1hLmZpcnN0
Q2hpbGQubm9kZU5hbWUnLCAnZW1tYTplbW1hJyk7Ci0gICAgICAgIGV2YWxBbmRMb2coJ3dpbmRv
dy5lbW1hID0gZXZlbnQucmVzdWx0LmVtbWEuZmlyc3RDaGlsZCcpOwotICAgICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ2VtbWEuZ2V0QXR0cmlidXRlKCJ2ZXJzaW9uIiknLCAnMS4wJyk7Ci0K
LSAgICAgICAgc2hvdWxkQmUoJ2VtbWEuY2hpbGROb2Rlcy5sZW5ndGgnLCAnMScpOwotICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2VtbWEuZmlyc3RDaGlsZC5ub2RlTmFtZScsICdlbW1h
Om9uZS1vZicpOwotICAgICAgICBldmFsQW5kTG9nKCd3aW5kb3cub25lb2YgPSBlbW1hLmZpcnN0
Q2hpbGQnKTsKLSAgICAgICAgZXZhbEFuZExvZygid2luZG93LmVtbWFOcyA9ICdodHRwOi8vd3d3
LnczLm9yZy8yMDAzLzA0L2VtbWEnIik7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygn
b25lb2YuZ2V0QXR0cmlidXRlKCJlbW1hOm1lZGl1bSIpJywgJ2Fjb3VzdGljJyk7Ci0gICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygnb25lb2YuZ2V0QXR0cmlidXRlTlMoZW1tYU5zLCAibWVk
aXVtIiknLCAnYWNvdXN0aWMnKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdvbmVv
Zi5nZXRBdHRyaWJ1dGUoImVtbWE6bW9kZSIpJywgJ3ZvaWNlJyk7Ci0gICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygnb25lb2YuZ2V0QXR0cmlidXRlTlMoZW1tYU5zLCAibW9kZSIpJywgJ3Zv
aWNlJyk7Ci0KLSAgICAgICAgc2hvdWxkQmUoJ29uZW9mLmNoaWxkTm9kZXMubGVuZ3RoJywgJzEn
KTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdvbmVvZi5maXJzdENoaWxkLm5vZGVO
YW1lJywgJ2VtbWE6aW50ZXJwcmV0YXRpb24nKTsKLSAgICAgICAgZXZhbEFuZExvZygnd2luZG93
LmludGVycHJldGF0aW9uID0gb25lb2YuZmlyc3RDaGlsZCcpOwotICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ2ludGVycHJldGF0aW9uLmdldEF0dHJpYnV0ZSgiaWQiKScsICcxJyk7Ci0g
ICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnaW50ZXJwcmV0YXRpb24uZ2V0QXR0cmlidXRl
KCJlbW1hOmNvbmZpZGVuY2UiKScsICcwLjQyJyk7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygnaW50ZXJwcmV0YXRpb24uZ2V0QXR0cmlidXRlTlMoZW1tYU5zLCAiY29uZmlkZW5jZSIp
JywgJzAuNDInKTsKLSAgICAgICAgc2hvdWxkQmUoJ2ludGVycHJldGF0aW9uLmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJsaXRlcmFsIikubGVuZ3RoJywgJzEnKTsKLSAgICAgICAgZXZhbEFuZExvZygn
d2luZG93LmxpdGVyYWwgPSBpbnRlcnByZXRhdGlvbi5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGl0
ZXJhbCIpWzBdJyk7Ci0gICAgICAgIHNob3VsZEJlKCdsaXRlcmFsLmNoaWxkTm9kZXMubGVuZ3Ro
JywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdsaXRlcmFsLmZpcnN0Q2hp
bGQuZGF0YScsICdoZWxsbywgd29ybGQnKTsKLQotICAgICAgICAvLyBUZXN0IHRoYXQgU3BlZWNo
UmVjb2duaXRpb25SZXN1bHQga2VlcHMgZW1tYSdzIERPTSB0cmVlIGFsaXZlLgotICAgICAgICBk
ZWJ1ZygiXG5UZXN0IHRoYXQgZW1tYSdzIERPTSB0cmVlIHN0YXlzIGFsaXZlOiIpOwotICAgICAg
ICBldmFsQW5kTG9nKCd3aW5kb3cuZW1tYSA9IG51bGwnKTsKLSAgICAgICAgZXZhbEFuZExvZygn
d2luZG93Lm9uZW9mID0gbnVsbCcpOwotICAgICAgICBldmFsQW5kTG9nKCd3aW5kb3cuaW50ZXJw
cmV0YXRpb24gPSBudWxsJyk7Ci0gICAgICAgIGV2YWxBbmRMb2coJ3dpbmRvdy5saXRlcmFsID0g
bnVsbCcpOwotICAgICAgICBldmFsQW5kTG9nKCdldmVudC5yZXN1bHQuZW1tYS5jdXN0b21Qcm9w
ZXJ0eSA9IDQyJyk7Ci0gICAgICAgIGV2YWxBbmRMb2coJ2djKCknKTsKLSAgICAgICAgc2hvdWxk
QmUoJ2V2ZW50LnJlc3VsdC5lbW1hLmN1c3RvbVByb3BlcnR5JywgJzQyJyk7Ci0gICAgfQotCi0g
ICAgci5vbmVuZCA9IGZ1bmN0aW9uKCkgewotICAgICAgICBkZWJ1Zygnb25lbmQnKTsKLSAgICAg
ICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfQotCi0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
Ci0gICAgICAgIHRlc3RSdW5uZXIuYWRkTW9ja1NwZWVjaFJlY29nbml0aW9uUmVzdWx0KCdoZWxs
bywgd29ybGQnLCAwLjQyKTsKLSAgICB9Ci0gICAgci5zdGFydCgpOwotfQotCi13aW5kb3cub25s
b2FkID0gcnVuOwotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotPC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08
L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zY3Jp
cHRlZC9zcGVlY2hyZWNvZ25pdGlvbi1iYXNpY3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9zcGVlY2gvc2NyaXB0ZWQvc3BlZWNocmVjb2duaXRpb24tYmFzaWNzLWV4cGVjdGVkLnR4
dAppbmRleCA0MTJlZDJiNGQ5ZjMzMDkwODQ2YjA2Zjg0YzEyMjYxNzEzYmNmYjJhLi44OTMzZWNm
ZTk4Y2U4Nzg2MjA0MWNiOTIxZTIyMzlhNjE0ZDU2MTg0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9zcGVlY2hyZWNvZ25pdGlvbi1iYXNpY3MtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3NjcmlwdGVkL3NwZWVjaHJlY29nbml0
aW9uLWJhc2ljcy1leHBlY3RlZC50eHQKQEAgLTE3LDkgKzE3LDExIEBAIG9uc3BlZWNoc3RhcnQK
IFBBU1MgY291bnQgaXMgMwogb25yZXN1bHQKIFBBU1MgY291bnQgaXMgNAotUEFTUyBldmVudC5y
ZXN1bHQubGVuZ3RoIGlzIDEKLVBBU1MgZXZlbnQucmVzdWx0Lml0ZW0oMCkudHJhbnNjcmlwdCBp
cyAiaGVsbG8sIHdvcmxkIgotUEFTUyBldmVudC5yZXN1bHQuaXRlbSgwKS5jb25maWRlbmNlIGlz
IHdpdGhpbiAwLjAwMSBvZiAwLjQyCitQQVNTIGV2ZW50LnJlc3VsdHMubGVuZ3RoIGlzIDEKK1BB
U1MgZXZlbnQucmVzdWx0c1swXS5sZW5ndGggaXMgMQorUEFTUyBldmVudC5yZXN1bHRzWzBdLmlz
RmluYWwgaXMgdHJ1ZQorUEFTUyBldmVudC5yZXN1bHRzWzBdLml0ZW0oMCkudHJhbnNjcmlwdCBp
cyAiaGVsbG8sIHdvcmxkIgorUEFTUyBldmVudC5yZXN1bHRzWzBdLml0ZW0oMCkuY29uZmlkZW5j
ZSBpcyB3aXRoaW4gMC4wMDEgb2YgMC40Mgogb25zcGVlY2hlbmQKIFBBU1MgY291bnQgaXMgNQog
b25zb3VuZGVuZApAQCAtNDAsNyArNDIsNyBAQCBvbnNwZWVjaHN0YXJ0CiBQQVNTIGNvdW50IGlz
IDMKIG9ubm9tYXRjaAogUEFTUyBjb3VudCBpcyA0Ci1QQVNTIGV2ZW50LnJlc3VsdCBpcyBudWxs
CitQQVNTIGV2ZW50LnJlc3VsdHMgaXMgbnVsbAogb25zcGVlY2hlbmQKIFBBU1MgY291bnQgaXMg
NQogb25zb3VuZGVuZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0
ZWQvc3BlZWNocmVjb2duaXRpb24tYmFzaWNzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVj
aC9zY3JpcHRlZC9zcGVlY2hyZWNvZ25pdGlvbi1iYXNpY3MuaHRtbAppbmRleCAxMTkxOTg5NDgx
Mzk3M2UyZDE5YjVmMDcyMDg0OGYwMmU1MmY3OGEyLi5hMTI3NGFkY2RkZjAzMzZkMjYxMTljMzQ0
Y2YyNjJiOWVhNGVhYzdlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zY3Jp
cHRlZC9zcGVlY2hyZWNvZ25pdGlvbi1iYXNpY3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3NwZWVjaC9zY3JpcHRlZC9zcGVlY2hyZWNvZ25pdGlvbi1iYXNpY3MuaHRtbApAQCAtMjksOSAr
MjksMTEgQEAgZnVuY3Rpb24gb25lTWF0Y2hUZXN0KCkgewogICAgICAgICBkZWJ1Zygnb25yZXN1
bHQnKTsKICAgICAgICAgc2hvdWxkQmUoJ2NvdW50JywgJzQnKTsKICAgICAgICAgKytjb3VudDsK
LSAgICAgICAgc2hvdWxkQmUoJ2V2ZW50LnJlc3VsdC5sZW5ndGgnLCAnMScpOwotICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ2V2ZW50LnJlc3VsdC5pdGVtKDApLnRyYW5zY3JpcHQnLCAn
aGVsbG8sIHdvcmxkJyk7Ci0gICAgICAgIHNob3VsZEJlQ2xvc2VUbygnZXZlbnQucmVzdWx0Lml0
ZW0oMCkuY29uZmlkZW5jZScsIDAuNDIsIDFlLTMpOworICAgICAgICBzaG91bGRCZSgnZXZlbnQu
cmVzdWx0cy5sZW5ndGgnLCAnMScpOworICAgICAgICBzaG91bGRCZSgnZXZlbnQucmVzdWx0c1sw
XS5sZW5ndGgnLCAnMScpOworICAgICAgICBzaG91bGRCZSgnZXZlbnQucmVzdWx0c1swXS5pc0Zp
bmFsJywgJ3RydWUnKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdldmVudC5yZXN1
bHRzWzBdLml0ZW0oMCkudHJhbnNjcmlwdCcsICdoZWxsbywgd29ybGQnKTsKKyAgICAgICAgc2hv
dWxkQmVDbG9zZVRvKCdldmVudC5yZXN1bHRzWzBdLml0ZW0oMCkuY29uZmlkZW5jZScsIDAuNDIs
IDFlLTMpOwogICAgIH0KIAogICAgIHIub25zcGVlY2hlbmQgPSAgICAgZnVuY3Rpb24oKSB7IGRl
YnVnKCdvbnNwZWVjaGVuZCcpOyAgIHNob3VsZEJlKCdjb3VudCcsICc1Jyk7ICsrY291bnQ7IH0K
QEAgLTY1LDcgKzY3LDcgQEAgZnVuY3Rpb24gbm9NYXRjaFRlc3QoKSB7CiAgICAgICAgIGRlYnVn
KCdvbm5vbWF0Y2gnKTsKICAgICAgICAgc2hvdWxkQmUoJ2NvdW50JywgJzQnKTsKICAgICAgICAg
Kytjb3VudDsKLSAgICAgICAgc2hvdWxkQmUoJ2V2ZW50LnJlc3VsdCcsICdudWxsJyk7CisgICAg
ICAgIHNob3VsZEJlKCdldmVudC5yZXN1bHRzJywgJ251bGwnKTsKICAgICB9CiAKICAgICByLm9u
c3BlZWNoZW5kID0gICAgIGZ1bmN0aW9uKCkgeyBkZWJ1Zygnb25zcGVlY2hlbmQnKTsgICBzaG91
bGRCZSgnY291bnQnLCAnNScpOyArK2NvdW50OyB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>