<?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>70483</bug_id>
          
          <creation_ts>2011-10-20 01:49:10 -0700</creation_ts>
          <short_desc>Event.h shouldn&apos;t need to know about every ifdef and feature that uses events</short_desc>
          <delta_ts>2011-10-20 21:46:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>japhet</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>487414</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-20 01:49:10 -0700</bug_when>
    <thetext>Event.h shouldn&apos;t need to know about every ifdef and feature that uses events</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487415</commentid>
    <comment_count>1</comment_count>
      <attachid>111742</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-20 01:50:30 -0700</bug_when>
    <thetext>Created attachment 111742
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487418</commentid>
    <comment_count>2</comment_count>
      <attachid>111742</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-20 02:03:23 -0700</bug_when>
    <thetext>Comment on attachment 111742
work in progress

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

&gt; Source/WebCore/dom/ErrorEvent.cpp:88
&gt; +    return eventNames().interfaceForErrorEvent;

I&apos;m confused why you need an interface name which is separate from the event name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487689</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-20 10:20:23 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 111742 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=111742&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/ErrorEvent.cpp:88
&gt; &gt; +    return eventNames().interfaceForErrorEvent;
&gt; 
&gt; I&apos;m confused why you need an interface name which is separate from the event name.

I originally rejected that idea because there wasn&apos;t a one-to-one mapping between event names and interface names, but I should check again to make sure there isn&apos;t a many-to-one relationship, which would also work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487693</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-20 10:25:03 -0700</bug_when>
    <thetext>Yeah, the DOM type of the event is different from the interface of the event.  Consider, for example, the KeyboardEvent interface.  JavaScript can call initKeyboardEvent and set the type to whatever it wants.  That means keying the wrapper off the DOM type isn&apos;t safe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487806</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-10-20 13:04:45 -0700</bug_when>
    <thetext>Do we really still support CPP bindings?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487807</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-20 13:07:00 -0700</bug_when>
    <thetext>&gt; Do we really still support CPP bindings?

Good question.  I can break this patch down into smaller pieces and leave that question for a future patch, or we can go all cowboy and try to do the whole thing all at once.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487937</commentid>
    <comment_count>7</comment_count>
      <attachid>111859</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-20 15:38:38 -0700</bug_when>
    <thetext>Created attachment 111859
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487952</commentid>
    <comment_count>8</comment_count>
      <attachid>111859</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-20 15:49:12 -0700</bug_when>
    <thetext>Comment on attachment 111859
Patch

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

Looks good to me.  I think you should consider changing interfaceName() to something more descriptive.  Be it jsInterfaceName() or domInterfaceName().

I also think that it would make more sense to use eventNames().xmlHttpRequestEventDomInterfaceName instead of eventNames(). interfaceForXMLHttpRequestProgressEvent, despite the capitalization issues.  We had to handle capitalization (manually) in the ElementFactory code too.

&gt; Source/WebCore/dom/Event.h:117
&gt; +        // These are needed for the CPP bindings.

Do you want a FIXME: here that we can remove most of these?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487980</commentid>
    <comment_count>9</comment_count>
      <attachid>111868</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-20 16:27:21 -0700</bug_when>
    <thetext>Created attachment 111868
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487989</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-20 16:36:13 -0700</bug_when>
    <thetext>Attachment 111868 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/bindings/js/JSEventCustom.cpp:79:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 1 in 78 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488002</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-20 16:59:37 -0700</bug_when>
    <thetext>Committed r98044: &lt;http://trac.webkit.org/changeset/98044&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488004</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-20 17:04:16 -0700</bug_when>
    <thetext>Realized I haven&apos;t replied yet.

&gt; I think you should consider changing interfaceName() to something more descriptive.  Be it jsInterfaceName() or domInterfaceName().

Yeah, I like domInterfaceName is better than jsInterfaceName because these interface names are used in Obj-C and other languages.  I&apos;ll do this in a followup patch that removes more of the Boolean virtuals.

&gt; I also think that it would make more sense to use eventNames().xmlHttpRequestEventDomInterfaceName instead of eventNames(). interfaceForXMLHttpRequestProgressEvent, despite the capitalization issues.  We had to handle capitalization (manually) in the ElementFactory code too.

I didn&apos;t make this change because it seems like a bunch of extra complexity without much benefit.

&gt; &gt; Source/WebCore/dom/Event.h:117
&gt; &gt; +        // These are needed for the CPP bindings.
&gt; 
&gt; Do you want a FIXME: here that we can remove most of these?

That FIXME is on line 124.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488144</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-20 21:32:58 -0700</bug_when>
    <thetext>It seems like this patch broke 75+ worker tests:
http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r98044%20(34066)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488145</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-20 21:33:14 -0700</bug_when>
    <thetext>The blame list contains exactly one change set:
http://build.webkit.org/builders/SnowLeopard%20Intel%20Release%20%28Tests%29/builds/34066</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488149</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-20 21:46:24 -0700</bug_when>
    <thetext>Yep.  https://bugs.webkit.org/show_bug.cgi?id=70576 is the bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111742</attachid>
            <date>2011-10-20 01:50:30 -0700</date>
            <delta_ts>2011-10-20 15:38:34 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-70483-20111020015029.patch</filename>
            <type>text/plain</type>
            <size>77979</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3OTUwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTI0IEBACisyMDExLTEwLTIwICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRXZlbnQuaCBzaG91bGRuJ3QgbmVl
ZCB0byBrbm93IGFib3V0IGV2ZXJ5IGlmZGVmIGFuZCBmZWF0dXJlIHRoYXQgdXNlcyBldmVudHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwNDgzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBkb20vQmVmb3JlTG9h
ZEV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpCZWZvcmVMb2FkRXZlbnQ6OmludGVyZmFjZU5h
bWUpOgorICAgICAgICAoV2ViQ29yZTo6QmVmb3JlTG9hZEV2ZW50Ojppc0JlZm9yZUxvYWRFdmVu
dCk6CisgICAgICAgICogZG9tL0JlZm9yZVRleHRJbnNlcnRlZEV2ZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJlZm9yZVRleHRJbnNlcnRlZEV2ZW50OjppbnRlcmZhY2VOYW1lKToKKyAgICAg
ICAgKiBkb20vQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuaDoKKyAgICAgICAgKiBkb20vQ2xpcGJv
YXJkRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkRXZlbnQ6OmludGVyZmFj
ZU5hbWUpOgorICAgICAgICAqIGRvbS9DbGlwYm9hcmRFdmVudC5oOgorICAgICAgICAqIGRvbS9D
b21wb3NpdGlvbkV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0aW9uRXZlbnQ6
OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIGRvbS9Db21wb3NpdGlvbkV2ZW50Lmg6CisgICAg
ICAgICogZG9tL0N1c3RvbUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUV2ZW50
OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBkb20vQ3VzdG9tRXZlbnQuaDoKKyAgICAgICAg
KiBkb20vRGV2aWNlTW90aW9uRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlTW90
aW9uRXZlbnQ6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIGRvbS9EZXZpY2VNb3Rpb25FdmVu
dC5oOgorICAgICAgICAqIGRvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uRXZlbnQ6OmludGVyZmFjZU5hbWUpOgorICAgICAg
ICAqIGRvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50Lmg6CisgICAgICAgICogZG9tL0Vycm9yRXZl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXJyb3JFdmVudDo6aW50ZXJmYWNlTmFtZSk6Cisg
ICAgICAgICogZG9tL0Vycm9yRXZlbnQuaDoKKyAgICAgICAgKiBkb20vRXZlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnQ6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIGRvbS9FdmVu
dC5oOgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50TmFtZXM6OkV2ZW50TmFtZXMpOgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6CisgICAg
ICAgICogZG9tL0hhc2hDaGFuZ2VFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SGFzaENoYW5n
ZUV2ZW50OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBkb20vS2V5Ym9hcmRFdmVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpLZXlib2FyZEV2ZW50OjppbnRlcmZhY2VOYW1lKToKKyAgICAg
ICAgKiBkb20vS2V5Ym9hcmRFdmVudC5oOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50OjppbnRlcmZhY2VOYW1lKToKKyAgICAg
ICAgKiBkb20vTWVzc2FnZUV2ZW50Lmg6CisgICAgICAgICogZG9tL01vdXNlRXZlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVudDo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICog
ZG9tL01vdXNlRXZlbnQuaDoKKyAgICAgICAgKiBkb20vTXV0YXRpb25FdmVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNdXRhdGlvbkV2ZW50OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBk
b20vTXV0YXRpb25FdmVudC5oOgorICAgICAgICAqIGRvbS9PdmVyZmxvd0V2ZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok92ZXJmbG93RXZlbnQ6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAq
IGRvbS9PdmVyZmxvd0V2ZW50Lmg6CisgICAgICAgICogZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVRyYW5zaXRpb25FdmVudDo6aW50ZXJmYWNlTmFt
ZSk6CisgICAgICAgICogZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQuaDoKKyAgICAgICAgKiBkb20v
UG9wU3RhdGVFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3BTdGF0ZUV2ZW50OjppbnRl
cmZhY2VOYW1lKToKKyAgICAgICAgKiBkb20vUG9wU3RhdGVFdmVudC5oOgorICAgICAgICAqIGRv
bS9Qcm9ncmVzc0V2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyZXNzRXZlbnQ6Omlu
dGVyZmFjZU5hbWUpOgorICAgICAgICAqIGRvbS9Qcm9ncmVzc0V2ZW50Lmg6CisgICAgICAgICog
ZG9tL1RleHRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmludGVyZmFj
ZU5hbWUpOgorICAgICAgICAqIGRvbS9UZXh0RXZlbnQuaDoKKyAgICAgICAgKiBkb20vVG91Y2hF
dmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEV2ZW50OjppbnRlcmZhY2VOYW1lKToK
KyAgICAgICAgKiBkb20vVG91Y2hFdmVudC5oOgorICAgICAgICAqIGRvbS9VSUV2ZW50Lmg6Cisg
ICAgICAgICogZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYktpdEFuaW1hdGlvbkV2ZW50OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBkb20vV2Vi
S2l0QW5pbWF0aW9uRXZlbnQuaDoKKyAgICAgICAgKiBkb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdFRyYW5zaXRpb25FdmVudDo6aW50ZXJmYWNl
TmFtZSk6CisgICAgICAgICogZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5oOgorICAgICAgICAq
IGRvbS9XaGVlbEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnQ6OmludGVy
ZmFjZU5hbWUpOgorICAgICAgICAqIGRvbS9XaGVlbEV2ZW50Lmg6CisgICAgICAgICogZG9tL21h
a2VfZXZlbnRfZmFjdG9yeS5wbDoKKyAgICAgICAgKHByaW50RmFjdG9yeUZpbGUpOgorICAgICAg
ICAocHJpbnRNYWNyb0ZpbGUpOgorICAgICAgICAocHJpbnRIZWFkZXJzRmlsZSk6CisgICAgICAg
ICogaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xDb250ZXh0RXZlbnQ6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMQ29udGV4dEV2ZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0
b3JhZ2VSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdl
UmVzb3VyY2U6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBwMnAvTWVkaWFTdHJlYW1FdmVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUV2ZW50OjppbnRlcmZhY2VOYW1lKToK
KyAgICAgICAgKiBwMnAvTWVkaWFTdHJlYW1FdmVudC5oOgorICAgICAgICAqIHBhZ2UvU3BlZWNo
SW5wdXRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dEV2ZW50OjppbnRl
cmZhY2VOYW1lKToKKyAgICAgICAgKiBwYWdlL1NwZWVjaElucHV0RXZlbnQuaDoKKyAgICAgICAg
KiBzdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJWZXJzaW9uQ2hhbmdlRXZlbnQ6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHN0b3JhZ2Uv
SURCVmVyc2lvbkNoYW5nZUV2ZW50Lmg6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlRXZlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUV2ZW50OjppbnRlcmZhY2VOYW1lKToKKyAg
ICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VFdmVudC5oOgorICAgICAgICAqIHN2Zy9TVkdab29tRXZl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHWm9vbUV2ZW50OjppbnRlcmZhY2VOYW1lKToK
KyAgICAgICAgKiBzdmcvU1ZHWm9vbUV2ZW50Lmg6CisgICAgICAgICogd2ViYXVkaW8vQXVkaW9Q
cm9jZXNzaW5nRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Qcm9jZXNzaW5nRXZl
bnQ6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvUHJvY2Vzc2luZ0V2
ZW50Lmg6CisgICAgICAgICogd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudDo6aW50ZXJm
YWNlTmFtZSk6CisgICAgICAgICogd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50
Lmg6CisgICAgICAgICogd2Vic29ja2V0cy9DbG9zZUV2ZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpDbG9zZUV2ZW50OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVl
c3RQcm9ncmVzc0V2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdFByb2dy
ZXNzRXZlbnQ6OmludGVyZmFjZU5hbWUpOgorCiAyMDExLTEwLTE5ICBBbGV4YW5kZXIgUGF2bG92
ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogVGhlICJ4
IiBpbiAiOTgwcHggeCAzNnB4IiBsb29rcyB3ZWlyZCBpbiB0aGUgaW5zcGVjdG9yIG5vZGUgY2Fs
bG91dApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gOTc5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTk3LDEwICs5NywxMCBA
QAogCQkwNzA5RkM0RTEwMjVERUUzMDA1OUNEQkEgLyogQWNjZXNzaWJpbGl0eVNsaWRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwOUZDNEQxMDI1
REVFMzAwNTlDREJBIC8qIEFjY2Vzc2liaWxpdHlTbGlkZXIuaCAqLzsgfTsKIAkJMDcyQzhCMTEx
MzFDNTE4NjAwQTRGQ0U5IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzZGMEQwOTEyQjgx
OTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcCAqLzsgfTsK
IAkJMDczNUVFNkEwRjQwQzVFNDAwNEEyNjA0IC8qIE1lZGlhUGxheWVyUHJveHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MzVFRTY5MEY0MEM1RTQw
MDRBMjYwNCAvKiBNZWRpYVBsYXllclByb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDczQTNBRTMxNDJCQUZFMTAwOTc3QTRDIC8qIEpTVGV4
dFRyYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3M0EzQUUyMTQyQkFGRTEwMDk3N0E0QyAvKiBKU1RleHRUcmFja0N1c3RvbS5jcHAg
Ki87IH07CiAJCTA3NTM4NjAyMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRDdWVzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NTM4NjAwMTQ0ODlF
OTgwMEI3ODQ1MiAvKiBDYWNoZWRDdWVzLmNwcCAqLzsgfTsKIAkJMDc1Mzg2MDMxNDQ4OUU5ODAw
Qjc4NDUyIC8qIENhY2hlZEN1ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3NTM4NjAxMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRDdWVzLmggKi87
IH07CiAJCTA3NkYwRDBFMTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3NkYwRDBBMTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b24uaCAqLzsgfTsKLQkJMDczQTNBRTMxNDJCQUZFMTAwOTc3QTRDIC8qIEpTVGV4dFRyYWNrQ3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
M0EzQUUyMTQyQkFGRTEwMDk3N0E0QyAvKiBKU1RleHRUcmFja0N1c3RvbS5jcHAgKi87IH07CiAJ
CTA3QjAxMTNGMTAzMjI0MjIwMEZCREMzMyAvKiBBY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdCMDExM0Ux
MDMyMjQyMjAwRkJEQzMzIC8qIEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmggKi87IH07CiAJ
CTA4MDZFNTdBMTI4OTMwNDUwMDdDRUQzMiAvKiBTVkdNYXRyaXguaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MDZFNTc5MTI4OTMwNDUwMDdDRUQzMiAv
KiBTVkdNYXRyaXguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwODBFNDkyNjEyNTVGM0JEMDBFRkNBMjcgLyogU1ZHVGV4dExheW91dEVuZ2luZUJh
c2VsaW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
ODBFNDkyMjEyNTVGM0JEMDBFRkNBMjcgLyogU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmgg
Ki87IH07CkBAIC0zMjEzLDYgKzMyMTMsOCBAQAogCQk5NzA1OTk3ODEwN0Q5NzUyMDBBNTBBN0Mg
LyogUG9saWN5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk3MDU5OTc0MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3MDU5OTc5
MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MDU5OTc1MTA3RDk3NTIwMEE1MEE3QyAvKiBQ
b2xpY3lDaGVja2VyLmNwcCAqLzsgfTsKIAkJOTcwNTk5N0ExMDdEOTc1MjAwQTUwQTdDIC8qIFBv
bGljeUNoZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk3MDU5OTc2MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTcwQjcyOEExNDRGRkFD
NjAwRjAwQTM3IC8qIEV2ZW50SW50ZXJmYWNlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwQjcyODkxNDRGRkFDNjAwRjAwQTM3IC8qIEV2ZW50SW50
ZXJmYWNlcy5oICovOyB9OworCQk5NzBCNzJBNjE0NTAwOEVCMDBGMDBBMzcgLyogRXZlbnRIZWFk
ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzBC
NzJBNTE0NTAwOEVCMDBGMDBBMzcgLyogRXZlbnRIZWFkZXJzLmggKi87IH07CiAJCTk3MTQ5MURB
MTJGRDY1RTgwMDFCRkVCMSAvKiBVUkxTdHJpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MTQ5MUQ5MTJGRDY1RTgwMDFCRkVCMSAvKiBVUkxTdHJp
bmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5
NzIwNUFBRjEyMzkyOENBMDBCMTczODAgLyogRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcyMDVBQUQxMjM5MjhD
QTAwQjE3MzgwIC8qIEZUUERpcmVjdG9yeURvY3VtZW50LmNwcCAqLzsgfTsKIAkJOTcyMDVBQjAx
MjM5MjhDQTAwQjE3MzgwIC8qIEZUUERpcmVjdG9yeURvY3VtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzIwNUFBRTEyMzkyOENBMDBCMTczODAg
LyogRlRQRGlyZWN0b3J5RG9jdW1lbnQuaCAqLzsgfTsKQEAgLTcxMjQsMTIgKzcxMjYsMTIgQEAK
IAkJMDcwOUZDNEQxMDI1REVFMzAwNTlDREJBIC8qIEFjY2Vzc2liaWxpdHlTbGlkZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eVNsaWRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzBERDhGNTBGMDE4NjgwMDA3MjdERUIgLyogbWVk
aWFDb250cm9scy5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gbWVkaWFDb250cm9scy5jc3M7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MzVFRTY5MEY0MEM1RTQwMDRBMjYwNCAv
KiBNZWRpYVBsYXllclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
ZGlhUGxheWVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDczQTNBRTIx
NDJCQUZFMTAwOTc3QTRDIC8qIEpTVGV4dFRyYWNrQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVGV4dFRyYWNrQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDc1Mzg2MDAxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZEN1ZXMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkQ3Vlcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NTM4NjAxMTQ0ODlFOTgwMEI3ODQ1MiAv
KiBDYWNoZWRDdWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZEN1
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RjBEMDkxMkI4MTkyNzAwQzI2
QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZGMEQwQTEyQjgxOTI3MDBDMjZBQTQg
LyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwNzlGNUU0QjBGM0JFQkVBMDA1RTA3ODIgLyogTWVkaWFQbGF5
ZXJQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVy
UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzNBM0FFMjE0MkJBRkUx
MDA5NzdBNEMgLyogSlNUZXh0VHJhY2tDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNUZXh0VHJhY2tDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwN0FGRTU5MDBGMTQ0NkJEMDA4NDE2MTcgLyogbWVkaWFDb250cm9sc1F1aWNr
VGltZS5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9IG1lZGlhQ29udHJvbHNRdWlja1Rp
bWUuY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0IwMTEzRTEwMzIyNDIyMDBG
QkRDMzMgLyogQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDgwNkU1NzkxMjg5MzA0NTAwN0NFRDMyIC8qIFNWR01hdHJpeC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdNYXRyaXguaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNDAxLDYgKzEwNDAzLDggQEAKIAkJOTcwNTk5NzQxMDdE
OTc1MjAwQTUwQTdDIC8qIFBvbGljeUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBvbGljeUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk3MDU5OTc1MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvbGljeUNoZWNrZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5NzA1OTk3NjEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2hl
Y2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb2xpY3lDaGVja2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3MEI3Mjg5MTQ0RkZBQzYwMEYwMEEzNyAv
KiBFdmVudEludGVyZmFjZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZl
bnRJbnRlcmZhY2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3MEI3MkE1MTQ1
MDA4RUIwMEYwMEEzNyAvKiBFdmVudEhlYWRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRXZlbnRIZWFkZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3
MTQ5MUQ5MTJGRDY1RTgwMDFCRkVCMSAvKiBVUkxTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVVJMU3RyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk3MjA1QUFEMTIzOTI4Q0EwMEIxNzM4MCAvKiBGVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGVFBEaXJlY3RvcnlEb2N1bWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3MjA1QUFFMTIzOTI4Q0EwMEIxNzM4
MCAvKiBGVFBEaXJlY3RvcnlEb2N1bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGVFBEaXJlY3RvcnlEb2N1bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTUyNzYsNiArMTUyODAsOCBAQAogCQkJCTY1NjU4MTQ3MDlEMTMwNDMwMDBFNjFENyAvKiBD
U1NWYWx1ZUtleXdvcmRzLmdwZXJmICovLAogCQkJCTY1NjU4MTQ4MDlEMTMwNDMwMDBFNjFENyAv
KiBDU1NWYWx1ZUtleXdvcmRzLmggKi8sCiAJCQkJOTc2NjUwNEUxNDRGQkZGRTAwRjZCQjUxIC8q
IEV2ZW50RmFjdG9yeS5jcHAgKi8sCisJCQkJOTcwQjcyQTUxNDUwMDhFQjAwRjAwQTM3IC8qIEV2
ZW50SGVhZGVycy5oICovLAorCQkJCTk3MEI3Mjg5MTQ0RkZBQzYwMEYwMEEzNyAvKiBFdmVudElu
dGVyZmFjZXMuaCAqLywKIAkJCQlBMTdDODEyMDBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1l
bnRGYWN0b3J5LmNwcCAqLywKIAkJCQlBMTdDODEyMTBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVs
ZW1lbnRGYWN0b3J5LmggKi8sCiAJCQkJQThCQzA0OTExMjE0RjY5NjAwQjVGMTIyIC8qIEhUTUxF
bnRpdHlUYWJsZS5jcHAgKi8sCkBAIC0yNDY5Niw2ICsyNDcwMiw4IEBACiAJCQkJOTc2NjUwMTMx
NDRGQUE0MjAwRjZCQjUxIC8qIEV2ZW50RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTBF
RTBERjYxNDRGODI1NTAwRjgwQjBEIC8qIFdlYkdMRGVidWdSZW5kZXJlckluZm8uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUEwRUUwREY4MTQ0RjgyNTUwMEY4MEIwRCAvKiBXZWJHTERlYnVnU2hhZGVy
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTcwQjcyOEExNDRGRkFDNjAwRjAwQTM3IC8qIEV2ZW50
SW50ZXJmYWNlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTcwQjcyQTYxNDUwMDhFQjAwRjAwQTM3
IC8qIEV2ZW50SGVhZGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gOTc5MzcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzAsOTIgKzMwLDE0IEBACiAjaW5jbHVkZSAiSlNFdmVudC5oIgogCiAjaW5jbHVkZSAiQ2xp
cGJvYXJkLmgiCi0jaW5jbHVkZSAiQ29tcG9zaXRpb25FdmVudC5oIgotI2luY2x1ZGUgIkN1c3Rv
bUV2ZW50LmgiCi0jaW5jbHVkZSAiRGV2aWNlTW90aW9uRXZlbnQuaCIKLSNpbmNsdWRlICJEZXZp
Y2VPcmllbnRhdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRlICJKU0Jl
Zm9yZUxvYWRFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50SGVhZGVycy5oIgorI2luY2x1ZGUgIkV2
ZW50SW50ZXJmYWNlcy5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJKU0Ns
aXBib2FyZC5oIgotI2luY2x1ZGUgIkpTQ3VzdG9tRXZlbnQuaCIKLSNpbmNsdWRlICJKU0NvbXBv
c2l0aW9uRXZlbnQuaCIKLSNpbmNsdWRlICJKU0RldmljZU1vdGlvbkV2ZW50LmgiCi0jaW5jbHVk
ZSAiSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50LmgiCi0jaW5jbHVkZSAiSlNFcnJvckV2ZW50Lmgi
Ci0jaW5jbHVkZSAiSlNIYXNoQ2hhbmdlRXZlbnQuaCIKLSNpbmNsdWRlICJKU0tleWJvYXJkRXZl
bnQuaCIKLSNpbmNsdWRlICJKU01lc3NhZ2VFdmVudC5oIgotI2luY2x1ZGUgIkpTTW91c2VFdmVu
dC5oIgotI2luY2x1ZGUgIkpTTXV0YXRpb25FdmVudC5oIgotI2luY2x1ZGUgIkpTT3ZlcmZsb3dF
dmVudC5oIgotI2luY2x1ZGUgIkpTUGFnZVRyYW5zaXRpb25FdmVudC5oIgotI2luY2x1ZGUgIkpT
UG9wU3RhdGVFdmVudC5oIgotI2luY2x1ZGUgIkpTUHJvZ3Jlc3NFdmVudC5oIgotI2luY2x1ZGUg
IkpTU3BlZWNoSW5wdXRFdmVudC5oIgotI2luY2x1ZGUgIkpTU3RvcmFnZUV2ZW50LmgiCi0jaW5j
bHVkZSAiSlNUZXh0RXZlbnQuaCIKLSNpbmNsdWRlICJKU1VJRXZlbnQuaCIKLSNpbmNsdWRlICJK
U1dlYktpdEFuaW1hdGlvbkV2ZW50LmgiCi0jaW5jbHVkZSAiSlNXZWJLaXRUcmFuc2l0aW9uRXZl
bnQuaCIKLSNpbmNsdWRlICJKU1doZWVsRXZlbnQuaCIKLSNpbmNsdWRlICJKU1hNTEh0dHBSZXF1
ZXN0UHJvZ3Jlc3NFdmVudC5oIgotI2luY2x1ZGUgIkJlZm9yZUxvYWRFdmVudC5oIgotI2luY2x1
ZGUgIkVycm9yRXZlbnQuaCIKLSNpbmNsdWRlICJIYXNoQ2hhbmdlRXZlbnQuaCIKLSNpbmNsdWRl
ICJLZXlib2FyZEV2ZW50LmgiCi0jaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCi0jaW5jbHVkZSAi
TW91c2VFdmVudC5oIgotI2luY2x1ZGUgIk11dGF0aW9uRXZlbnQuaCIKLSNpbmNsdWRlICJPdmVy
Zmxvd0V2ZW50LmgiCi0jaW5jbHVkZSAiUGFnZVRyYW5zaXRpb25FdmVudC5oIgotI2luY2x1ZGUg
IlBvcFN0YXRlRXZlbnQuaCIKLSNpbmNsdWRlICJQcm9ncmVzc0V2ZW50LmgiCi0jaW5jbHVkZSAi
U3BlZWNoSW5wdXRFdmVudC5oIgotI2luY2x1ZGUgIlN0b3JhZ2VFdmVudC5oIgotI2luY2x1ZGUg
IlRleHRFdmVudC5oIgotI2luY2x1ZGUgIlVJRXZlbnQuaCIKLSNpbmNsdWRlICJXZWJLaXRBbmlt
YXRpb25FdmVudC5oIgotI2luY2x1ZGUgIldlYktpdFRyYW5zaXRpb25FdmVudC5oIgotI2luY2x1
ZGUgIldoZWVsRXZlbnQuaCIKLSNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQu
aCIKICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgotCi0jaWYgRU5BQkxFKFNWRykKLSNpbmNs
dWRlICJKU1NWR1pvb21FdmVudC5oIgotI2luY2x1ZGUgIlNWR1pvb21FdmVudC5oIgotI2VuZGlm
Ci0KLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotI2luY2x1ZGUgIkpTVG91Y2hFdmVudC5oIgot
I2luY2x1ZGUgIlRvdWNoRXZlbnQuaCIKLSNlbmRpZgotCi0jaWYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCi0jaW5jbHVkZSAiSURCVmVyc2lvbkNoYW5nZUV2ZW50LmgiCi0jaW5jbHVkZSAiSlNJ
REJWZXJzaW9uQ2hhbmdlRXZlbnQuaCIKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFdFQl9BVURJTykK
LSNpbmNsdWRlICJBdWRpb1Byb2Nlc3NpbmdFdmVudC5oIgotI2luY2x1ZGUgIkpTQXVkaW9Qcm9j
ZXNzaW5nRXZlbnQuaCIKLSNpbmNsdWRlICJKU09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5o
IgotI2luY2x1ZGUgIk9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5oIgotI2VuZGlmCi0KLSNp
ZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0jaW5jbHVkZSAiQ2xvc2VFdmVudC5oIgotI2luY2x1ZGUg
IkpTQ2xvc2VFdmVudC5oIgotI2VuZGlmCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotI2lu
Y2x1ZGUgIkpTTWVkaWFTdHJlYW1FdmVudC5oIgotI2luY2x1ZGUgIk1lZGlhU3RyZWFtRXZlbnQu
aCIKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFdFQkdMKQotI2luY2x1ZGUgIkpTV2ViR0xDb250ZXh0
RXZlbnQuaCIKLSNpbmNsdWRlICJXZWJHTENvbnRleHRFdmVudC5oIgotI2VuZGlmCisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIAog
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIApAQCAtMTI2LDYgKzQ4LDE3IEBAIEpTVmFsdWUgSlNFdmVu
dDo6Y2xpcGJvYXJkRGF0YShFeGVjU3RhdGUKICAgICByZXR1cm4gaW1wbCgpLT5pc0NsaXBib2Fy
ZEV2ZW50KCkgPyB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBpbXBsKCktPmNsaXBib2FyZERh
dGEoKSkgOiBqc1VuZGVmaW5lZCgpOwogfQogCisjZGVmaW5lIERFQ0xBUkVfRVZFTlRfV1JBUFBF
UihpbnRlcmZhY2VOYW1lKSBcCisgICAgc3RhdGljIEpTRE9NV3JhcHBlciogY3JlYXRlIyNpbnRl
cmZhY2VOYW1lIyNXcmFwcGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRXZlbnQqIGV2ZW50KSBcCisgICAgeyBcCisgICAgICAgIHJldHVybiBDUkVB
VEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbnRlcmZhY2VOYW1lLCBldmVudCk7
IFwKKyAgICB9IFwKKworRE9NX0VWRU5UX0lOVEVSRkFDRVNfRk9SX0VBQ0goREVDTEFSRV9FVkVO
VF9XUkFQUEVSKQorCisjZGVmaW5lIEFERF9XUkFQUEVSX1RPX01BUChpbnRlcmZhY2VOYW1lKSBc
CisgICAgbWFwLmFkZChldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yIyNpbnRlcmZhY2VOYW1lLmlt
cGwoKSwgY3JlYXRlIyNpbnRlcmZhY2VOYW1lIyNXcmFwcGVyKTsKKwogSlNWYWx1ZSB0b0pTKEV4
ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXZlbnQqIGV2
ZW50KQogewogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CkBAIC0xMzcs
OTQgKzcwLDE5IEBAIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmEKICAg
ICBpZiAod3JhcHBlcikKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKLSAgICBpZiAoZXZlbnQt
PmlzVUlFdmVudCgpKSB7Ci0gICAgICAgIGlmIChldmVudC0+aXNLZXlib2FyZEV2ZW50KCkpCi0g
ICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVj
dCwgS2V5Ym9hcmRFdmVudCwgZXZlbnQpOwotICAgICAgICBlbHNlIGlmIChldmVudC0+aXNUZXh0
RXZlbnQoKSkKLSAgICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywg
Z2xvYmFsT2JqZWN0LCBUZXh0RXZlbnQsIGV2ZW50KTsKLSAgICAgICAgZWxzZSBpZiAoZXZlbnQt
PmlzTW91c2VFdmVudCgpKQotICAgICAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBF
UihleGVjLCBnbG9iYWxPYmplY3QsIE1vdXNlRXZlbnQsIGV2ZW50KTsKLSAgICAgICAgZWxzZSBp
ZiAoZXZlbnQtPmlzV2hlZWxFdmVudCgpKQotICAgICAgICAgICAgd3JhcHBlciA9IENSRUFURV9E
T01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIFdoZWVsRXZlbnQsIGV2ZW50KTsKLSNpZiBF
TkFCTEUoU1ZHKQotICAgICAgICBlbHNlIGlmIChldmVudC0+aXNTVkdab29tRXZlbnQoKSkKLSAg
ICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0
LCBTVkdab29tRXZlbnQsIGV2ZW50KTsKLSNlbmRpZgotICAgICAgICBlbHNlIGlmIChldmVudC0+
aXNDb21wb3NpdGlvbkV2ZW50KCkpCi0gICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9X
UkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgQ29tcG9zaXRpb25FdmVudCwgZXZlbnQpOwotI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgICAgIGVsc2UgaWYgKGV2ZW50LT5pc1RvdWNoRXZl
bnQoKSkKLSAgICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xv
YmFsT2JqZWN0LCBUb3VjaEV2ZW50LCBldmVudCk7Ci0jZW5kaWYKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3Qs
IFVJRXZlbnQsIGV2ZW50KTsKLSAgICB9IGVsc2UgaWYgKGV2ZW50LT5pc011dGF0aW9uRXZlbnQo
KSkKLSAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmpl
Y3QsIE11dGF0aW9uRXZlbnQsIGV2ZW50KTsKLSAgICBlbHNlIGlmIChldmVudC0+aXNPdmVyZmxv
d0V2ZW50KCkpCi0gICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xv
YmFsT2JqZWN0LCBPdmVyZmxvd0V2ZW50LCBldmVudCk7Ci0gICAgZWxzZSBpZiAoZXZlbnQtPmlz
TWVzc2FnZUV2ZW50KCkpCi0gICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhl
YywgZ2xvYmFsT2JqZWN0LCBNZXNzYWdlRXZlbnQsIGV2ZW50KTsKLSAgICBlbHNlIGlmIChldmVu
dC0+aXNQYWdlVHJhbnNpdGlvbkV2ZW50KCkpCi0gICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9N
X1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBQYWdlVHJhbnNpdGlvbkV2ZW50LCBldmVudCk7
Ci0gICAgZWxzZSBpZiAoZXZlbnQtPmlzUHJvZ3Jlc3NFdmVudCgpKSB7Ci0gICAgICAgIGlmIChl
dmVudC0+aXNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQoKSkKLSAgICAgICAgICAgIHdyYXBw
ZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBYTUxIdHRwUmVxdWVz
dFByb2dyZXNzRXZlbnQsIGV2ZW50KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgd3JhcHBl
ciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIFByb2dyZXNzRXZlbnQs
IGV2ZW50KTsKLSAgICB9IGVsc2UgaWYgKGV2ZW50LT5pc0JlZm9yZUxvYWRFdmVudCgpKQotICAg
ICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgQmVm
b3JlTG9hZEV2ZW50LCBldmVudCk7Ci0gICAgZWxzZSBpZiAoZXZlbnQtPmlzU3RvcmFnZUV2ZW50
KCkpCi0gICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBTdG9yYWdlRXZlbnQsIGV2ZW50KTsKLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
LSAgICBlbHNlIGlmIChldmVudC0+aXNJREJWZXJzaW9uQ2hhbmdlRXZlbnQoKSkKLSAgICAgICAg
d3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIElEQlZlcnNp
b25DaGFuZ2VFdmVudCwgZXZlbnQpOwotI2VuZGlmCi0gICAgZWxzZSBpZiAoZXZlbnQtPmlzV2Vi
S2l0QW5pbWF0aW9uRXZlbnQoKSkKLSAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBF
UihleGVjLCBnbG9iYWxPYmplY3QsIFdlYktpdEFuaW1hdGlvbkV2ZW50LCBldmVudCk7Ci0gICAg
ZWxzZSBpZiAoZXZlbnQtPmlzV2ViS2l0VHJhbnNpdGlvbkV2ZW50KCkpCi0gICAgICAgIHdyYXBw
ZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBXZWJLaXRUcmFuc2l0
aW9uRXZlbnQsIGV2ZW50KTsKLSNpZiBFTkFCTEUoV09SS0VSUykKLSAgICBlbHNlIGlmIChldmVu
dC0+aXNFcnJvckV2ZW50KCkpCi0gICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIo
ZXhlYywgZ2xvYmFsT2JqZWN0LCBFcnJvckV2ZW50LCBldmVudCk7Ci0jZW5kaWYKLSAgICBlbHNl
IGlmIChldmVudC0+aXNIYXNoQ2hhbmdlRXZlbnQoKSkKLSAgICAgICAgd3JhcHBlciA9IENSRUFU
RV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIEhhc2hDaGFuZ2VFdmVudCwgZXZlbnQp
OwotICAgIGVsc2UgaWYgKGV2ZW50LT5pc1BvcFN0YXRlRXZlbnQoKSkKLSAgICAgICAgd3JhcHBl
ciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIFBvcFN0YXRlRXZlbnQs
IGV2ZW50KTsKLSAgICBlbHNlIGlmIChldmVudC0+aXNDdXN0b21FdmVudCgpKQotICAgICAgICB3
cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgQ3VzdG9tRXZl
bnQsIGV2ZW50KTsKLSNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQotICAgIGVsc2UgaWYg
KGV2ZW50LT5pc0RldmljZU1vdGlvbkV2ZW50KCkpCi0gICAgICAgIHdyYXBwZXIgPSBDUkVBVEVf
RE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBEZXZpY2VNb3Rpb25FdmVudCwgZXZlbnQp
OwotICAgIGVsc2UgaWYgKGV2ZW50LT5pc0RldmljZU9yaWVudGF0aW9uRXZlbnQoKSkKLSAgICAg
ICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIERldmlj
ZU9yaWVudGF0aW9uRXZlbnQsIGV2ZW50KTsKLSNlbmRpZgotI2lmIEVOQUJMRShXRUJfQVVESU8p
Ci0gICAgZWxzZSBpZiAoZXZlbnQtPmlzQXVkaW9Qcm9jZXNzaW5nRXZlbnQoKSkKLSAgICAgICAg
d3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIEF1ZGlvUHJv
Y2Vzc2luZ0V2ZW50LCBldmVudCk7Ci0gICAgZWxzZSBpZiAoZXZlbnQtPmlzT2ZmbGluZUF1ZGlv
Q29tcGxldGlvbkV2ZW50KCkpCi0gICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIo
ZXhlYywgZ2xvYmFsT2JqZWN0LCBPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQsIGV2ZW50KTsK
LSNlbmRpZgotI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCi0gICAgZWxzZSBpZiAoZXZlbnQtPmlz
U3BlZWNoSW5wdXRFdmVudCgpKQotICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVS
KGV4ZWMsIGdsb2JhbE9iamVjdCwgU3BlZWNoSW5wdXRFdmVudCwgZXZlbnQpOwotI2VuZGlmCi0j
aWYgRU5BQkxFKFdFQl9TT0NLRVRTKQotICAgIGVsc2UgaWYgKGV2ZW50LT5pc0Nsb3NlRXZlbnQo
KSkKLSAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmpl
Y3QsIENsb3NlRXZlbnQsIGV2ZW50KTsKLSNlbmRpZgotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
Ci0gICAgZWxzZSBpZiAoZXZlbnQtPmlzTWVkaWFTdHJlYW1FdmVudCgpKQotICAgICAgICB3cmFw
cGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgTWVkaWFTdHJlYW1F
dmVudCwgZXZlbnQpOwotI2VuZGlmCi0jaWYgRU5BQkxFKFdFQkdMKQotICAgIGVsc2UgaWYgKGV2
ZW50LT5pc1dlYkdMQ29udGV4dEV2ZW50KCkpCi0gICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9N
X1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBXZWJHTENvbnRleHRFdmVudCwgZXZlbnQpOwot
I2VuZGlmCi0gICAgZWxzZQotICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4
ZWMsIGdsb2JhbE9iamVjdCwgRXZlbnQsIGV2ZW50KTsKKyAgICB0eXBlZGVmIEpTRE9NV3JhcHBl
ciogKCpDcmVhdGVFdmVudFdyYXBwZXJGdW5jdGlvbikoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxP
YmplY3QqLCBFdmVudCopOworICAgIHR5cGVkZWYgSGFzaE1hcDxXVEY6OkF0b21pY1N0cmluZ0lt
cGwqLCBDcmVhdGVFdmVudFdyYXBwZXJGdW5jdGlvbj4gRnVuY3Rpb25NYXA7CisKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEZ1bmN0aW9uTWFwLCBtYXAsICgpKTsKKyAgICBpZiAobWFwLmlzRW1w
dHkoKSkgeworICAgICAgICBET01fRVZFTlRfSU5URVJGQUNFU19GT1JfRUFDSChBRERfV1JBUFBF
Ul9UT19NQVApCisgICAgfQorCisgICAgQ3JlYXRlRXZlbnRXcmFwcGVyRnVuY3Rpb24gY3JlYXRl
V3JhcHBlckZ1bmN0aW9uID0gbWFwLmdldChldmVudC0+aW50ZXJmYWNlTmFtZSgpLmltcGwoKSk7
CisgICAgaWYgKGNyZWF0ZVdyYXBwZXJGdW5jdGlvbikKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVdy
YXBwZXJGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGV2ZW50KTsKIAotICAgIHJldHVybiB3
cmFwcGVyOworICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0
LCBFdmVudCwgZXZlbnQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudEN1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDdXN0b20uY3Bw
CShyZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEV2ZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNTAgKzMzLDEzIEBACiAKICNp
bmNsdWRlICJDbGlwYm9hcmQuaCIKICNpbmNsdWRlICJDbGlwYm9hcmRFdmVudC5oIgotI2luY2x1
ZGUgIkN1c3RvbUV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRlICJWOEJlZm9y
ZUxvYWRFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50SGVhZGVycy5oIgorI2luY2x1ZGUgIkV2ZW50
SW50ZXJmYWNlcy5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJWOEJpbmRp
bmcuaCIKICNpbmNsdWRlICJWOENsaXBib2FyZC5oIgotI2luY2x1ZGUgIlY4Q2xvc2VFdmVudC5o
IgotI2luY2x1ZGUgIlY4Q29tcG9zaXRpb25FdmVudC5oIgotI2luY2x1ZGUgIlY4Q3VzdG9tRXZl
bnQuaCIKLSNpbmNsdWRlICJWOERldmljZU1vdGlvbkV2ZW50LmgiCi0jaW5jbHVkZSAiVjhEZXZp
Y2VPcmllbnRhdGlvbkV2ZW50LmgiCi0jaW5jbHVkZSAiVjhFcnJvckV2ZW50LmgiCi0jaW5jbHVk
ZSAiVjhIYXNoQ2hhbmdlRXZlbnQuaCIKLSNpbmNsdWRlICJWOElEQlZlcnNpb25DaGFuZ2VFdmVu
dC5oIgotI2luY2x1ZGUgIlY4S2V5Ym9hcmRFdmVudC5oIgotI2luY2x1ZGUgIlY4TWVzc2FnZUV2
ZW50LmgiCi0jaW5jbHVkZSAiVjhNb3VzZUV2ZW50LmgiCi0jaW5jbHVkZSAiVjhNdXRhdGlvbkV2
ZW50LmgiCi0jaW5jbHVkZSAiVjhPdmVyZmxvd0V2ZW50LmgiCi0jaW5jbHVkZSAiVjhQYWdlVHJh
bnNpdGlvbkV2ZW50LmgiCi0jaW5jbHVkZSAiVjhQb3BTdGF0ZUV2ZW50LmgiCi0jaW5jbHVkZSAi
VjhQcm9ncmVzc0V2ZW50LmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgotI2luY2x1ZGUgIlY4U3Bl
ZWNoSW5wdXRFdmVudC5oIgotI2luY2x1ZGUgIlY4U3RvcmFnZUV2ZW50LmgiCi0jaW5jbHVkZSAi
VjhUZXh0RXZlbnQuaCIKLSNpbmNsdWRlICJWOFRvdWNoRXZlbnQuaCIKLSNpbmNsdWRlICJWOFVJ
RXZlbnQuaCIKLSNpbmNsdWRlICJWOFdlYktpdEFuaW1hdGlvbkV2ZW50LmgiCi0jaW5jbHVkZSAi
VjhXZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCIKLSNpbmNsdWRlICJWOFdoZWVsRXZlbnQuaCIKLSNp
bmNsdWRlICJWOFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oIgotCi0jaWYgRU5BQkxFKFNW
RykKLSNpbmNsdWRlICJWOFNWR1pvb21FdmVudC5oIgotI2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VC
X0FVRElPKQotI2luY2x1ZGUgIlY4QXVkaW9Qcm9jZXNzaW5nRXZlbnQuaCIKLSNpbmNsdWRlICJW
OE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5oIgotI2VuZGlmCi0KLSNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQotI2luY2x1ZGUgIlY4TWVkaWFTdHJlYW1FdmVudC5oIgotI2VuZGlmCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTA2LDkwICs2OSwzNSBAQCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhFdmVudDo6Y2xpcGJvYXJkCiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0K
IAorI2RlZmluZSBERUNMQVJFX0VWRU5UX1dSQVBQRVIoaW50ZXJmYWNlTmFtZSkgXAorICAgIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOCMjaW50ZXJmYWNlTmFtZShFdmVudCogZXZl
bnQpIFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8aW50ZXJmYWNl
TmFtZSo+KGV2ZW50KSk7IFwKKyAgICB9IFwKKworRE9NX0VWRU5UX0lOVEVSRkFDRVNfRk9SX0VB
Q0goREVDTEFSRV9FVkVOVF9XUkFQUEVSKQorCisjZGVmaW5lIEFERF9XUkFQUEVSX1RPX01BUChp
bnRlcmZhY2VOYW1lKSBcCisgICAgbWFwLmFkZChldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yIyNp
bnRlcmZhY2VOYW1lLmltcGwoKSwgdG9WOCMjaW50ZXJmYWNlTmFtZSk7CisKIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB0b1Y4KEV2ZW50KiBpbXBsKQogewogICAgIGlmICghaW1wbCkKICAgICAgICAg
cmV0dXJuIHY4OjpOdWxsKCk7Ci0gICAgaWYgKGltcGwtPmlzVUlFdmVudCgpKSB7Ci0gICAgICAg
IGlmIChpbXBsLT5pc0tleWJvYXJkRXZlbnQoKSkKLSAgICAgICAgICAgIHJldHVybiB0b1Y4KHN0
YXRpY19jYXN0PEtleWJvYXJkRXZlbnQqPihpbXBsKSk7Ci0gICAgICAgIGlmIChpbXBsLT5pc1Rl
eHRFdmVudCgpKQotICAgICAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8VGV4dEV2ZW50
Kj4oaW1wbCkpOwotICAgICAgICBpZiAoaW1wbC0+aXNNb3VzZUV2ZW50KCkpCi0gICAgICAgICAg
ICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4oaW1wbCkpOwotICAgICAgICBp
ZiAoaW1wbC0+aXNXaGVlbEV2ZW50KCkpCi0gICAgICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNf
Y2FzdDxXaGVlbEV2ZW50Kj4oaW1wbCkpOwotI2lmIEVOQUJMRShTVkcpCi0gICAgICAgIGlmIChp
bXBsLT5pc1NWR1pvb21FdmVudCgpKQotICAgICAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nh
c3Q8U1ZHWm9vbUV2ZW50Kj4oaW1wbCkpOwotI2VuZGlmCi0gICAgICAgIGlmIChpbXBsLT5pc0Nv
bXBvc2l0aW9uRXZlbnQoKSkKLSAgICAgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PENv
bXBvc2l0aW9uRXZlbnQqPihpbXBsKSk7Ci0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICAg
ICAgaWYgKGltcGwtPmlzVG91Y2hFdmVudCgpKQotICAgICAgICAgICAgcmV0dXJuIHRvVjgoc3Rh
dGljX2Nhc3Q8VG91Y2hFdmVudCo+KGltcGwpKTsKLSNlbmRpZgotICAgICAgICByZXR1cm4gdG9W
OChzdGF0aWNfY2FzdDxVSUV2ZW50Kj4oaW1wbCkpOwotICAgIH0KLSAgICBpZiAoaW1wbC0+aXNI
YXNoQ2hhbmdlRXZlbnQoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8SGFzaENo
YW5nZUV2ZW50Kj4oaW1wbCkpOwotICAgIGlmIChpbXBsLT5pc011dGF0aW9uRXZlbnQoKSkKLSAg
ICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8TXV0YXRpb25FdmVudCo+KGltcGwpKTsKLSAg
ICBpZiAoaW1wbC0+aXNPdmVyZmxvd0V2ZW50KCkpCi0gICAgICAgIHJldHVybiB0b1Y4KHN0YXRp
Y19jYXN0PE92ZXJmbG93RXZlbnQqPihpbXBsKSk7Ci0gICAgaWYgKGltcGwtPmlzTWVzc2FnZUV2
ZW50KCkpCi0gICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PE1lc3NhZ2VFdmVudCo+KGlt
cGwpKTsKLSAgICBpZiAoaW1wbC0+aXNQYWdlVHJhbnNpdGlvbkV2ZW50KCkpCi0gICAgICAgIHJl
dHVybiB0b1Y4KHN0YXRpY19jYXN0PFBhZ2VUcmFuc2l0aW9uRXZlbnQqPihpbXBsKSk7Ci0gICAg
aWYgKGltcGwtPmlzUG9wU3RhdGVFdmVudCgpKQotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNf
Y2FzdDxQb3BTdGF0ZUV2ZW50Kj4oaW1wbCkpOwotICAgIGlmIChpbXBsLT5pc1Byb2dyZXNzRXZl
bnQoKSkgewotICAgICAgICBpZiAoaW1wbC0+aXNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQo
KSkKLSAgICAgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PFhNTEh0dHBSZXF1ZXN0UHJv
Z3Jlc3NFdmVudCo+KGltcGwpKTsKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8UHJv
Z3Jlc3NFdmVudCo+KGltcGwpKTsKKworICAgIHR5cGVkZWYgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
ICgqVG9WOEZ1bmN0aW9uKShFdmVudCopOworICAgIHR5cGVkZWYgSGFzaE1hcDxXVEY6OkF0b21p
Y1N0cmluZ0ltcGwqLCBUb1Y4RnVuY3Rpb24+IEZ1bmN0aW9uTWFwOworCisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChGdW5jdGlvbk1hcCwgbWFwLCAoKSk7CisgICAgaWYgKG1hcC5pc0VtcHR5KCkp
IHsKKyAgICAgICAgRE9NX0VWRU5UX0lOVEVSRkFDRVNfRk9SX0VBQ0goQUREX1dSQVBQRVJfVE9f
TUFQKQogICAgIH0KLSAgICBpZiAoaW1wbC0+aXNXZWJLaXRBbmltYXRpb25FdmVudCgpKQotICAg
ICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxXZWJLaXRBbmltYXRpb25FdmVudCo+KGltcGwp
KTsKLSAgICBpZiAoaW1wbC0+aXNXZWJLaXRUcmFuc2l0aW9uRXZlbnQoKSkKLSAgICAgICAgcmV0
dXJuIHRvVjgoc3RhdGljX2Nhc3Q8V2ViS2l0VHJhbnNpdGlvbkV2ZW50Kj4oaW1wbCkpOwotI2lm
IEVOQUJMRShXT1JLRVJTKQotICAgIGlmIChpbXBsLT5pc0Vycm9yRXZlbnQoKSkKLSAgICAgICAg
cmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8RXJyb3JFdmVudCo+KGltcGwpKTsKLSNlbmRpZgotICAg
IGlmIChpbXBsLT5pc1N0b3JhZ2VFdmVudCgpKQotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNf
Y2FzdDxTdG9yYWdlRXZlbnQqPihpbXBsKSk7Ci0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
Ci0gICAgaWYgKGltcGwtPmlzSURCVmVyc2lvbkNoYW5nZUV2ZW50KCkpCi0gICAgICAgIHJldHVy
biB0b1Y4KHN0YXRpY19jYXN0PElEQlZlcnNpb25DaGFuZ2VFdmVudCo+KGltcGwpKTsKLSNlbmRp
ZgotICAgIGlmIChpbXBsLT5pc0JlZm9yZUxvYWRFdmVudCgpKQotICAgICAgICByZXR1cm4gdG9W
OChzdGF0aWNfY2FzdDxCZWZvcmVMb2FkRXZlbnQqPihpbXBsKSk7Ci0jaWYgRU5BQkxFKERFVklD
RV9PUklFTlRBVElPTikKLSAgICBpZiAoaW1wbC0+aXNEZXZpY2VNb3Rpb25FdmVudCgpKQotICAg
ICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxEZXZpY2VNb3Rpb25FdmVudCo+KGltcGwpKTsK
LSAgICBpZiAoaW1wbC0+aXNEZXZpY2VPcmllbnRhdGlvbkV2ZW50KCkpCi0gICAgICAgIHJldHVy
biB0b1Y4KHN0YXRpY19jYXN0PERldmljZU9yaWVudGF0aW9uRXZlbnQqPihpbXBsKSk7Ci0jZW5k
aWYKLSNpZiBFTkFCTEUoV0VCX0FVRElPKQotICAgIGlmIChpbXBsLT5pc0F1ZGlvUHJvY2Vzc2lu
Z0V2ZW50KCkpCi0gICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PEF1ZGlvUHJvY2Vzc2lu
Z0V2ZW50Kj4oaW1wbCkpOwotICAgIGlmIChpbXBsLT5pc09mZmxpbmVBdWRpb0NvbXBsZXRpb25F
dmVudCgpKQotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxPZmZsaW5lQXVkaW9Db21w
bGV0aW9uRXZlbnQqPihpbXBsKSk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQot
ICAgIGlmIChpbXBsLT5pc1NwZWVjaElucHV0RXZlbnQoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgo
c3RhdGljX2Nhc3Q8U3BlZWNoSW5wdXRFdmVudCo+KGltcGwpKTsKLSNlbmRpZgotICAgIGlmIChp
bXBsLT5pc0N1c3RvbUV2ZW50KCkpCi0gICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PEN1
c3RvbUV2ZW50Kj4oaW1wbCkpOwotI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLSAgICBpZiAoaW1w
bC0+aXNDbG9zZUV2ZW50KCkpCi0gICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PENsb3Nl
RXZlbnQqPihpbXBsKSk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIGlm
IChpbXBsLT5pc01lZGlhU3RyZWFtRXZlbnQoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGlj
X2Nhc3Q8TWVkaWFTdHJlYW1FdmVudCo+KGltcGwpKTsKLSNlbmRpZgorCisgICAgVG9WOEZ1bmN0
aW9uIHNwZWNpYWxpemVkVG9WOCA9IG1hcC5nZXQoZXZlbnQtPmludGVyZmFjZU5hbWUoKS5pbXBs
KCkpOworICAgIGlmIChzcGVjaWFsaXplZFRvVjgpCisgICAgICAgIHJldHVybiBzcGVjaWFsaXpl
ZFRvVjgoZXZlbnQpOworCiAgICAgcmV0dXJuIFY4RXZlbnQ6OndyYXAoaW1wbCk7CiB9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9CZWZvcmVMb2Fk
RXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQmVmb3JlTG9hZEV2ZW50
LmgJKHJldmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0JlZm9yZUxvYWRFdmVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw4ICs0Miw2IEBAIHN0cnVjdCBCZWZvcmVMb2FkRXZl
bnRJbml0IDogcHVibGljIEV2ZW4KIAogY2xhc3MgQmVmb3JlTG9hZEV2ZW50IDogcHVibGljIEV2
ZW50IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIGJvb2wgaXNCZWZvcmVMb2FkRXZlbnQoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxCZWZvcmVMb2FkRXZl
bnQ+IGNyZWF0ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJlZm9yZUxv
YWRFdmVudCk7CkBAIC03MSw2ICs2OSw5IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmluZyYg
dXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KIAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWlj
U3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3QgeyByZXR1cm4gZXZlbnROYW1lcygpLmludGVy
ZmFjZUZvckJlZm9yZUxvYWRFdmVudDsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0JlZm9yZUxvYWRF
dmVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKwogcHJpdmF0ZToKICAgICBCZWZvcmVMb2Fk
RXZlbnQoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9CZWZvcmVUZXh0SW5zZXJ0
ZWRFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0JlZm9yZVRleHRJ
bnNlcnRlZEV2ZW50LmNwcAkocmV2aXNpb24gOTc5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
QmVmb3JlVGV4dEluc2VydGVkRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw0ICszOSw5
IEBAIEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50Ojp+QmVmb3JlVGV4dEluc2UKIHsKIH0KIAorY29u
c3QgQXRvbWljU3RyaW5nJiBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudDo6aW50ZXJmYWNlTmFtZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JCZWZvcmVUZXh0
SW5zZXJ0ZWRFdmVudDsKK30KKwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0JlZm9yZVRl
eHRJbnNlcnRlZEV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0JlZm9y
ZVRleHRJbnNlcnRlZEV2ZW50LmgJKHJldmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0JlZm9yZVRleHRJbnNlcnRlZEV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDggKzM5
LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJlZm9yZVRleHRJbnNl
cnRlZEV2ZW50KHRleHQpKTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0JlZm9yZVRleHRJ
bnNlcnRlZEV2ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAKKwogICAgIGNvbnN0IFN0
cmluZyYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dDsgfQogICAgIHZvaWQgc2V0VGV4dChj
b25zdCBTdHJpbmcmIHMpIHsgbV90ZXh0ID0gczsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vQ2xpcGJvYXJkRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9D
bGlwYm9hcmRFdmVudC5jcHAJKHJldmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dlYkNvcmUvZG9t
L0NsaXBib2FyZEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsOCBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNsaXBib2FyZEV2ZW50LmgiCiAKKyNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ2xpcGJvYXJkRXZlbnQ6
OkNsaXBib2FyZEV2ZW50KCkKQEAgLTM4LDYgKzQwLDExIEBAIENsaXBib2FyZEV2ZW50Ojp+Q2xp
cGJvYXJkRXZlbnQoKQogewogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIENsaXBib2FyZEV2ZW50
OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVy
ZmFjZUZvckNsaXBib2FyZEV2ZW50OworfQorCiBib29sIENsaXBib2FyZEV2ZW50Ojppc0NsaXBi
b2FyZEV2ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9DbGlwYm9hcmRFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9DbGlwYm9hcmRFdmVudC5oCShyZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9DbGlwYm9hcmRFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBDbGlwYm9hcmQqIGNsaXBib2FyZCgpIGNvbnN0IHsg
cmV0dXJuIG1fY2xpcGJvYXJkLmdldCgpOyB9CiAKKyAgICAgICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGlz
Q2xpcGJvYXJkRXZlbnQoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwCShyZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiAr
NTUsMTEgQEAgdm9pZCBDb21wb3NpdGlvbkV2ZW50Ojppbml0Q29tcG9zaXRpb25FdgogICAgIG1f
ZGF0YSA9IGRhdGE7CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgQ29tcG9zaXRpb25FdmVudDo6
aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZh
Y2VGb3JDb21wb3NpdGlvbkV2ZW50OworfQorCiBib29sIENvbXBvc2l0aW9uRXZlbnQ6OmlzQ29t
cG9zaXRpb25FdmVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmgJKHJldmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTEgKzQy
LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IENvbXBvc2l0aW9uRXZlbnQodHlwZSwgdmlldywgZGF0YSkpOwogICAgICAgICB9CiAgICAgICAg
IHZpcnR1YWwgfkNvbXBvc2l0aW9uRXZlbnQoKTsKLSAgICAKKwogICAgICAgICB2b2lkIGluaXRD
b21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUs
IGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+LCBjb25zdCBTdHJpbmcm
IGRhdGEpOwotICAgIAorCiAgICAgICAgIFN0cmluZyBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhOyB9CiAKKyAgICAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5h
bWUoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGlzQ29tcG9zaXRpb25FdmVudCgpIGNv
bnN0OwogCiAgICAgcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmNwcAko
cmV2aXNpb24gOTc5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJDdXN0b21FdmVudC5oIgorI2luY2x1ZGUgIkN1c3RvbU5hbWVzLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNTcsOSArNTgsOSBAQCB2b2lkIEN1c3RvbUV2ZW50Ojppbml0
Q3VzdG9tRXZlbnQoY29uc3QgCiAgICAgbV9kZXRhaWwgPSBkZXRhaWw7CiB9CiAKLWJvb2wgQ3Vz
dG9tRXZlbnQ6OmlzQ3VzdG9tRXZlbnQoKSBjb25zdAorY29uc3QgQXRvbWljU3RyaW5nJiBDdXN0
b21FdmVudDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRydWU7CisgICAg
cmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JDdXN0b21FdmVudDsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmgJKHJldmlzaW9u
IDk3OTM3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBpbml0Q3VzdG9tRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxl
LCBTY3JpcHRWYWx1ZSBkZXRhaWwpOwogCi0gICAgdmlydHVhbCBib29sIGlzQ3VzdG9tRXZlbnQo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgp
IGNvbnN0OwogCiAgICAgU2NyaXB0VmFsdWUgZGV0YWlsKCkgY29uc3QgeyByZXR1cm4gbV9kZXRh
aWw7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU1vdGlvbkV2ZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uRXZlbnQuY3BwCShy
ZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25FdmVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJEZXZpY2VNb3Rp
b25FdmVudC5oIgogCiAjaW5jbHVkZSAiRGV2aWNlTW90aW9uRGF0YS5oIgorI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NCw0ICs1NSw5IEBAIHZv
aWQgRGV2aWNlTW90aW9uRXZlbnQ6OmluaXREZXZpY2VNb3Rpb24KICAgICBtX2RldmljZU1vdGlv
bkRhdGEgPSBkZXZpY2VNb3Rpb25EYXRhOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIERldmlj
ZU1vdGlvbkV2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnRO
YW1lcygpLmludGVyZmFjZUZvckRldmljZU1vdGlvbkV2ZW50OworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uRXZlbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uRXZlbnQuaAkocmV2
aXNpb24gOTc5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uRXZlbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNDYsMTAgKzQ2LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5p
dERldmljZU1vdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBidWJibGVz
LCBib29sIGNhbmNlbGFibGUsIERldmljZU1vdGlvbkRhdGEqKTsKIAotICAgIHZpcnR1YWwgYm9v
bCBpc0RldmljZU1vdGlvbkV2ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgRGV2
aWNlTW90aW9uRGF0YSogZGV2aWNlTW90aW9uRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNl
TW90aW9uRGF0YS5nZXQoKTsgfQogCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGlu
dGVyZmFjZU5hbWUoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBEZXZpY2VNb3Rpb25FdmVudCgp
OwogICAgIERldmljZU1vdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBE
ZXZpY2VNb3Rpb25EYXRhKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50
YXRpb25FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9y
aWVudGF0aW9uRXZlbnQuY3BwCShyZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
NyBAQAogI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uRXZlbnQuaCIKIAogI2luY2x1ZGUgIkRl
dmljZU9yaWVudGF0aW9uLmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTU0LDQgKzU1LDkgQEAgdm9pZCBEZXZpY2VPcmllbnRhdGlvbkV2ZW50
Ojppbml0RGV2aWNlTwogICAgIG1fb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsKIH0KIAorY29u
c3QgQXRvbWljU3RyaW5nJiBEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjppbnRlcmZhY2VOYW1lKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvckRldmljZU9yaWVu
dGF0aW9uRXZlbnQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuaAkocmV2aXNpb24gOTc5MzcpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NiwxMCArNDYsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBpbml0RGV2aWNlT3Jp
ZW50YXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgYnViYmxlcywgYm9v
bCBjYW5jZWxhYmxlLCBEZXZpY2VPcmllbnRhdGlvbiopOwogCi0gICAgdmlydHVhbCBib29sIGlz
RGV2aWNlT3JpZW50YXRpb25FdmVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQogICAgIERl
dmljZU9yaWVudGF0aW9uKiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRp
b24uZ2V0KCk7IH0KIAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VO
YW1lKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCgpOwog
ICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IERldmljZU9yaWVudGF0aW9uKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXJyb3JFdmVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0Vycm9yRXZlbnQuY3BwCShy
ZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FcnJvckV2ZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIK
LQogI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKIAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKQEAg
LTg0LDQgKzgzLDkgQEAgYm9vbCBFcnJvckV2ZW50Ojppc0Vycm9yRXZlbnQoKSBjb25zdAogICAg
IHJldHVybiB0cnVlOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIEVycm9yRXZlbnQ6OmludGVy
ZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9y
RXJyb3JFdmVudDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0Vycm9yRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
RXJyb3JFdmVudC5oCShyZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FcnJv
ckV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDcgQEAgcHVibGljOgogICAgIGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVOYW1lOyB9CiAgICAg
dW5zaWduZWQgbGluZW5vKCkgY29uc3QgeyByZXR1cm4gbV9saW5lTnVtYmVyOyB9CiAKKyAgICB2
aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgIHZp
cnR1YWwgYm9vbCBpc0Vycm9yRXZlbnQoKSBjb25zdDsKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50LmNwcAkocmV2aXNpb24gOTc5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiRXZlbnQuaCIK
IAogI2luY2x1ZGUgIkV2ZW50RGlzcGF0Y2hlci5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIK
ICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9y
LmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC05Niw2ICs5NywxMSBAQCB2b2lk
IEV2ZW50Ojppbml0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nCiAgICAgbV9jYW5jZWxhYmxlID0g
Y2FuY2VsYWJsZUFyZzsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBFdmVudDo6aW50ZXJmYWNl
TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JFdmVu
dDsKK30KKwogYm9vbCBFdmVudDo6aXNDdXN0b21FdmVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMTY2LDQxICsxNzIsMTYgQEAgYm9vbCBFdmVudDo6aXNQYWdlVHJhbnNpdGlv
bkV2ZW50KCkgY29ucwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBFdmVudDo6aXNQb3BT
dGF0ZUV2ZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIGJvb2wgRXZlbnQ6
OmlzUHJvZ3Jlc3NFdmVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29s
IEV2ZW50Ojppc1dlYktpdEFuaW1hdGlvbkV2ZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KLWJvb2wgRXZlbnQ6OmlzV2ViS2l0VHJhbnNpdGlvbkV2ZW50KCkgY29uc3QKLXsK
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgRXZlbnQ6OmlzWE1MSHR0cFJlcXVlc3RQcm9n
cmVzc0V2ZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIGJvb2wgRXZlbnQ6
OmlzQmVmb3JlTG9hZEV2ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJv
b2wgRXZlbnQ6OmlzSGFzaENoYW5nZUV2ZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KICNpZiBFTkFCTEUoU1ZHKQogYm9vbCBFdmVudDo6aXNTVkdab29tRXZlbnQoKSBjb25z
dAogewpAQCAtMjA4LDgzICsxODksMTEgQEAgYm9vbCBFdmVudDo6aXNTVkdab29tRXZlbnQoKSBj
b25zdAogfQogI2VuZGlmCiAKLWJvb2wgRXZlbnQ6OmlzU3RvcmFnZUV2ZW50KCkgY29uc3QKLXsK
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLWJv
b2wgRXZlbnQ6OmlzSURCVmVyc2lvbkNoYW5nZUV2ZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0jZW5kaWYKLQogYm9vbCBFdmVudDo6aXNFcnJvckV2ZW50KCkgY29uc3QKIHsK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotYm9vbCBF
dmVudDo6aXNUb3VjaEV2ZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0jZW5k
aWYKLQotI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCi1ib29sIEV2ZW50Ojppc0Rldmlj
ZU1vdGlvbkV2ZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgRXZl
bnQ6OmlzRGV2aWNlT3JpZW50YXRpb25FdmVudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VCX0FVRElPKQotYm9vbCBFdmVudDo6aXNBdWRp
b1Byb2Nlc3NpbmdFdmVudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29s
IEV2ZW50Ojppc09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudCgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIGZhbHNlOwotfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQotYm9vbCBF
dmVudDo6aXNTcGVlY2hJbnB1dEV2ZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLWJvb2wgRXZlbnQ6OmlzQ2xvc2VF
dmVudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotI2VuZGlmCi0KLSNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQotYm9vbCBFdmVudDo6aXNNZWRpYVN0cmVhbUV2ZW50KCkgY29uc3QK
LXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShXRUJHTCkKLWJv
b2wgRXZlbnQ6OmlzV2ViR0xDb250ZXh0RXZlbnQoKSBjb25zdAotewotICAgIHJldHVybiBmYWxz
ZTsKLX0KLSNlbmRpZgotCi0KIGJvb2wgRXZlbnQ6OnN0b3Jlc1Jlc3VsdEFzU3RyaW5nKCkgY29u
c3QKIHsKICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAkocmV2aXNpb24gOTc5
MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTEy
LDU4ICsxMTIsMzEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIENsaXBib2FyZCog
Y2xpcGJvYXJkRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGlzQ2xpcGJvYXJkRXZlbnQoKSA/IGNsaXBi
b2FyZCgpIDogMDsgfQogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0N1c3RvbUV2ZW50KCkgY29u
c3Q7CisgICAgICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkg
Y29uc3Q7CisKKyAgICAgICAgLy8gVGhlc2UgYXJlIG5lZWRlZCBmb3IgdGhlIENQUCBiaW5kaW5n
cy4KICAgICAgICAgdmlydHVhbCBib29sIGlzVUlFdmVudCgpIGNvbnN0OwogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNNb3VzZUV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc011
dGF0aW9uRXZlbnQoKSBjb25zdDsKKworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEcmFnRXZlbnQo
KSBjb25zdDsgLy8gYSBzdWJzZXQgb2YgbW91c2UgZXZlbnRzCisKKyAgICAgICAgLy8gRklYTUU6
IFJlbW92ZSB0aGVzZSEgQ2FsbGVycyBzaG91bGQgdXNlIGludGVyZmFjZU5hbWUoKSBpbnN0ZWFk
LgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNLZXlib2FyZEV2ZW50KCkgY29uc3Q7CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc1RleHRFdmVudCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNDb21wb3NpdGlvbkV2ZW50KCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0RyYWdF
dmVudCgpIGNvbnN0OyAvLyBhIHN1YnNldCBvZiBtb3VzZSBldmVudHMKICAgICAgICAgdmlydHVh
bCBib29sIGlzQ2xpcGJvYXJkRXZlbnQoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGlz
TWVzc2FnZUV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1doZWVsRXZlbnQo
KSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGlzQmVmb3JlVGV4dEluc2VydGVkRXZlbnQo
KSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGlzT3ZlcmZsb3dFdmVudCgpIGNvbnN0Owog
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQYWdlVHJhbnNpdGlvbkV2ZW50KCkgY29uc3Q7Ci0gICAg
ICAgIHZpcnR1YWwgYm9vbCBpc1BvcFN0YXRlRXZlbnQoKSBjb25zdDsKICAgICAgICAgdmlydHVh
bCBib29sIGlzUHJvZ3Jlc3NFdmVudCgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNY
TUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQoKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBib29s
IGlzV2ViS2l0QW5pbWF0aW9uRXZlbnQoKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBib29sIGlz
V2ViS2l0VHJhbnNpdGlvbkV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Jl
Zm9yZUxvYWRFdmVudCgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNIYXNoQ2hhbmdl
RXZlbnQoKSBjb25zdDsKICNpZiBFTkFCTEUoU1ZHKQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNT
Vkdab29tRXZlbnQoKSBjb25zdDsKICNlbmRpZgotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTdG9y
YWdlRXZlbnQoKSBjb25zdDsKLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICAgICAg
dmlydHVhbCBib29sIGlzSURCVmVyc2lvbkNoYW5nZUV2ZW50KCkgY29uc3Q7Ci0jZW5kaWYKLSNp
ZiBFTkFCTEUoV0VCX0FVRElPKQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBdWRpb1Byb2Nlc3Np
bmdFdmVudCgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNPZmZsaW5lQXVkaW9Db21w
bGV0aW9uRXZlbnQoKSBjb25zdDsKLSNlbmRpZgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNFcnJv
ckV2ZW50KCkgY29uc3Q7Ci0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICAgICAgdmlydHVh
bCBib29sIGlzVG91Y2hFdmVudCgpIGNvbnN0OwotI2VuZGlmCi0jaWYgRU5BQkxFKERFVklDRV9P
UklFTlRBVElPTikKLSAgICAgICAgdmlydHVhbCBib29sIGlzRGV2aWNlTW90aW9uRXZlbnQoKSBj
b25zdDsKLSAgICAgICAgdmlydHVhbCBib29sIGlzRGV2aWNlT3JpZW50YXRpb25FdmVudCgpIGNv
bnN0OwotI2VuZGlmCi0jaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKLSAgICAgICAgdmlydHVhbCBi
b29sIGlzU3BlZWNoSW5wdXRFdmVudCgpIGNvbnN0OwotI2VuZGlmCi0jaWYgRU5BQkxFKFdFQl9T
T0NLRVRTKQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDbG9zZUV2ZW50KCkgY29uc3Q7Ci0jZW5k
aWYKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNNZWRp
YVN0cmVhbUV2ZW50KCkgY29uc3Q7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoV0VCR0wpCi0gICAgICAg
IHZpcnR1YWwgYm9vbCBpc1dlYkdMQ29udGV4dEV2ZW50KCkgY29uc3Q7Ci0jZW5kaWYKIAogICAg
ICAgICBib29sIHByb3BhZ2F0aW9uU3RvcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGFnYXRp
b25TdG9wcGVkIHx8IG1faW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOyB9CiAgICAgICAgIGJv
b2wgaW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkgY29uc3QgeyByZXR1cm4gbV9pbW1lZGlh
dGVQcm9wYWdhdGlvblN0b3BwZWQ7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5h
bWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5jcHAJ
KHJldmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw5ICsyNSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNk
ZWZpbmUgSU5JVElBTElaRV9FVkVOVF9OQU1FKG5hbWUpIFwKICAgICAsIG5hbWUjI0V2ZW50KCNu
YW1lKQorCisjZGVmaW5lIElOSVRJQUxJWkVfRVZFTlRfSU5URVJGQUNFKG5hbWUpIFwKKyAgICAs
IGludGVyZmFjZUZvciMjbmFtZSgjbmFtZSkKKwogRXZlbnROYW1lczo6RXZlbnROYW1lcygpCiAg
ICAgOiBkdW1teSgwKQogRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNIKElOSVRJQUxJWkVfRVZFTlRf
TkFNRSkKK0RPTV9FVkVOVF9JTlRFUkZBQ0VTX0ZPUl9FQUNIKElOSVRJQUxJWkVfRVZFTlRfSU5U
RVJGQUNFKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgJKHJldmlzaW9uIDk3
OTM3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMjIsNiArMjIsNyBAQAogI2lmbmRlZiBFdmVudE5hbWVzX2gKICNkZWZpbmUgRXZlbnROYW1l
c19oCiAKKyNpbmNsdWRlICJFdmVudEludGVyZmFjZXMuaCIKICNpbmNsdWRlICJUaHJlYWRHbG9i
YWxEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKQEAgLTIwMSw2
ICsyMDIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAjZGVmaW5lIERPTV9FVkVO
VF9OQU1FU19ERUNMQVJFKG5hbWUpIEF0b21pY1N0cmluZyBuYW1lIyNFdmVudDsKICAgICAgICAg
RE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNIKERPTV9FVkVOVF9OQU1FU19ERUNMQVJFKQogICAgICAg
ICAjdW5kZWYgRE9NX0VWRU5UX05BTUVTX0RFQ0xBUkUKKworICAgICAgICAjZGVmaW5lIERPTV9F
VkVOVF9JTlRFUkZBQ0VfREVDTEFSRShuYW1lKSBBdG9taWNTdHJpbmcgaW50ZXJmYWNlRm9yIyNu
YW1lOworICAgICAgICBET01fRVZFTlRfSU5URVJGQUNFU19GT1JfRUFDSChET01fRVZFTlRfSU5U
RVJGQUNFX0RFQ0xBUkUpCisgICAgICAgICN1bmRlZiBET01fRVZFTlRfSU5URVJGQUNFX0RFQ0xB
UkUKICAgICB9OwogCiAgICAgaW5saW5lIEV2ZW50TmFtZXMmIGV2ZW50TmFtZXMoKQpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0hhc2hDaGFuZ2VFdmVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9IYXNoQ2hhbmdlRXZlbnQuaAkocmV2aXNpb24gOTc5MzcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vSGFzaENoYW5nZUV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDgg
KzM3LDYgQEAgc3RydWN0IEhhc2hDaGFuZ2VFdmVudEluaXQgOiBwdWJsaWMgRXZlbgogCiBjbGFz
cyBIYXNoQ2hhbmdlRXZlbnQgOiBwdWJsaWMgRXZlbnQgewogcHVibGljOgotICAgIHZpcnR1YWwg
Ym9vbCBpc0hhc2hDaGFuZ2VFdmVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEhhc2hDaGFuZ2VFdmVudD4gY3JlYXRlKCkKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSGFzaENoYW5nZUV2ZW50KTsKQEAgLTY4LDYgKzY2LDggQEAg
cHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgb2xkVVJMKCkgY29uc3QgeyByZXR1cm4gbV9vbGRV
Ukw7IH0KICAgICBjb25zdCBTdHJpbmcmIG5ld1VSTCgpIGNvbnN0IHsgcmV0dXJuIG1fbmV3VVJM
OyB9CiAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNv
bnN0IHsgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JIYXNoQ2hhbmdlRXZlbnQ7IH0K
KwogcHJpdmF0ZToKICAgICBIYXNoQ2hhbmdlRXZlbnQoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAJKHJldmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dlYkNv
cmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNiArMTM5LDEx
IEBAIGludCBLZXlib2FyZEV2ZW50OjpjaGFyQ29kZSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGludD4odGV4dC5jaGFyYWN0ZXJTdGFydGluZ0F0KDApKTsKIH0KIAorY29uc3QgQXRv
bWljU3RyaW5nJiBLZXlib2FyZEV2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvcktleWJvYXJkRXZlbnQ7Cit9CisKIGJvb2wg
S2V5Ym9hcmRFdmVudDo6aXNLZXlib2FyZEV2ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gdHJ1
ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaAkocmV2aXNpb24gOTc5MzcpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC04
Nyw3ICs4Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBpbnQga2V5Q29kZSgp
IGNvbnN0OyAvLyBrZXkgY29kZSBmb3Iga2V5ZG93biBhbmQga2V5dXAsIGNoYXJhY3RlciBmb3Ig
a2V5cHJlc3MKICAgICAgICAgaW50IGNoYXJDb2RlKCkgY29uc3Q7IC8vIGNoYXJhY3RlciBjb2Rl
IGZvciBrZXlwcmVzcywgMCBmb3Iga2V5ZG93biBhbmQga2V5dXAKLSAgICAKKworICAgICAgICB2
aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNLZXlib2FyZEV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwg
aW50IHdoaWNoKCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZl
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3Bw
CShyZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNiArMTM5LDExIEBAIHZvaWQgTWVzc2FnZUV2ZW50Ojpp
bml0TWVzc2FnZUV2ZW50KGNvbnMKICAgICBpbml0TWVzc2FnZUV2ZW50KHR5cGUsIGNhbkJ1YmJs
ZSwgY2FuY2VsYWJsZSwgZGF0YSwgb3JpZ2luLCBsYXN0RXZlbnRJZCwgc291cmNlLCBwb3J0cy5y
ZWxlYXNlKCkpOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIE1lc3NhZ2VFdmVudDo6aW50ZXJm
YWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JN
ZXNzYWdlRXZlbnQ7Cit9CisKIGJvb2wgTWVzc2FnZUV2ZW50Ojppc01lc3NhZ2VFdmVudCgpIGNv
bnN0IAogewogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQu
aAkocmV2aXNpb24gOTc5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDcgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBy
ZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCku
CiAgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVu
dElkLCBET01XaW5kb3cqIHNvdXJjZSwgTWVzc2FnZVBvcnQqKTsKIAorICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29s
IGlzTWVzc2FnZUV2ZW50KCkgY29uc3Q7CiAKICAgICBlbnVtIERhdGFUeXBlIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vTW91c2VFdmVudC5jcHAJKHJldmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dlYkNv
cmUvZG9tL01vdXNlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw2ICs5MiwxMSBAQCB2
b2lkIE1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50KGNvbnN0IEF0CiAgICAgLy8gRklYTUU6IG1f
Y2xpcGJvYXJkIGlzIG5vdCBzZXQgdG8gMCBoZXJlLgogfQogCitjb25zdCBBdG9taWNTdHJpbmcm
IE1vdXNlRXZlbnQ6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5h
bWVzKCkuaW50ZXJmYWNlRm9yTW91c2VFdmVudDsKK30KKwogYm9vbCBNb3VzZUV2ZW50Ojppc01v
dXNlRXZlbnQoKSBjb25zdAogewogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL01vdXNlRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTW91
c2VFdmVudC5oCShyZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDggQEAgY2xhc3MgUGxhdGZvcm1Nb3Vz
ZUV2ZW50OwogCiAgICAgICAgIENsaXBib2FyZCogZGF0YVRyYW5zZmVyKCkgY29uc3QgeyByZXR1
cm4gaXNEcmFnRXZlbnQoKSA/IG1fY2xpcGJvYXJkLmdldCgpIDogMDsgfQogCisgICAgICAgIHZp
cnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisKICAgICAg
ICAgdmlydHVhbCBib29sIGlzTW91c2VFdmVudCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNEcmFnRXZlbnQoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBpbnQgd2hpY2goKSBjb25z
dDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbkV2ZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25FdmVudC5jcHAJKHJldmlzaW9uIDk3OTM3
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMyw2ICsyMyw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTXV0YXRp
b25FdmVudC5oIgogCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIE11dGF0aW9uRXZlbnQ6Ok11dGF0aW9uRXZlbnQoKQpAQCAtNjIsNiArNjQsMTEgQEAg
dm9pZCBNdXRhdGlvbkV2ZW50Ojppbml0TXV0YXRpb25FdmVudChjbwogICAgIG1fYXR0ckNoYW5n
ZSA9IGF0dHJDaGFuZ2U7CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgTXV0YXRpb25FdmVudDo6
aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZh
Y2VGb3JNdXRhdGlvbkV2ZW50OworfQorCiBib29sIE11dGF0aW9uRXZlbnQ6OmlzTXV0YXRpb25F
dmVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vTXV0YXRpb25FdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9NdXRh
dGlvbkV2ZW50LmgJKHJldmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL011dGF0
aW9uRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNiArNjAsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIFN0cmluZyBhdHRyTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXR0ck5h
bWU7IH0KICAgICAgICAgdW5zaWduZWQgc2hvcnQgYXR0ckNoYW5nZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYXR0ckNoYW5nZTsgfQogCisgICAgICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBp
bnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc011dGF0aW9uRXZl
bnQoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vT3Zl
cmZsb3dFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL092ZXJmbG93
RXZlbnQuY3BwCShyZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9PdmVyZmxv
d0V2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsMTEgQEAgT3ZlcmZsb3dFdmVu
dDo6T3ZlcmZsb3dFdmVudChjb25zdCBBdG9taQogewogfQogCitjb25zdCBBdG9taWNTdHJpbmcm
IE92ZXJmbG93RXZlbnQ6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVu
dE5hbWVzKCkuaW50ZXJmYWNlRm9yT3ZlcmZsb3dFdmVudDsKK30KKwogYm9vbCBPdmVyZmxvd0V2
ZW50Ojppc092ZXJmbG93RXZlbnQoKSBjb25zdAogewogICAgIHJldHVybiB0cnVlOwpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL092ZXJmbG93RXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vT3ZlcmZsb3dFdmVudC5oCShyZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9PdmVyZmxvd0V2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDcg
QEAgcHVibGljOgogICAgIGJvb2wgaG9yaXpvbnRhbE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4g
bV9ob3Jpem9udGFsT3ZlcmZsb3c7IH0KICAgICBib29sIHZlcnRpY2FsT3ZlcmZsb3coKSBjb25z
dCB7IHJldHVybiBtX3ZlcnRpY2FsT3ZlcmZsb3c7IH0KIAorICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzT3Zl
cmZsb3dFdmVudCgpIGNvbnN0OwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9QYWdlVHJhbnNpdGlvbkV2ZW50LmNwcAkocmV2aXNpb24gOTc5MzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vUGFnZVRyYW5zaXRpb25FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDQg
KzY5LDkgQEAgdm9pZCBQYWdlVHJhbnNpdGlvbkV2ZW50Ojppbml0UGFnZVRyYW5zaQogICAgIG1f
cGVyc2lzdGVkID0gcGVyc2lzdGVkOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIFBhZ2VUcmFu
c2l0aW9uRXZlbnQ6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5h
bWVzKCkuaW50ZXJmYWNlRm9yUGFnZVRyYW5zaXRpb25FdmVudDsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUGFnZVRyYW5zaXRpb25FdmVudC5o
CShyZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9QYWdlVHJhbnNpdGlvbkV2
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5jZWxhYmxlQXJnLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBwZXJzaXN0ZWQpOwogCisgICAgdmlydHVhbCBjb25z
dCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wg
aXNQYWdlVHJhbnNpdGlvbkV2ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgYm9v
bCBwZXJzaXN0ZWQoKSBjb25zdCB7IHJldHVybiBtX3BlcnNpc3RlZDsgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmNwcAkocmV2aXNpb24gOTc5MzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vUG9wU3RhdGVFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDQgKzk1LDkg
QEAgdm9pZCBQb3BTdGF0ZUV2ZW50Ojppbml0UG9wU3RhdGVFdmVudChjbwogICAgIG1fc3RhdGUg
PSBzdGF0ZTsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBQb3BTdGF0ZUV2ZW50OjppbnRlcmZh
Y2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclBv
cFN0YXRlRXZlbnQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL1BvcFN0YXRlRXZlbnQuaAkocmV2aXNpb24gOTc5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vUG9wU3RhdGVFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NywxMSArNDcsMTIgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBvcFN0YXRlRXZlbnQ+IGNyZWF0ZShQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBvcFN0
YXRlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBQb3BTdGF0ZUV2ZW50
SW5pdCYpOwogICAgIHZvaWQgaW5pdFBvcFN0YXRlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBTY3JpcHRWYWx1ZSYp
OwotICAgIGJvb2wgaXNQb3BTdGF0ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAg
ICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU3RhdGUoKSBjb25zdCB7IHJldHVy
biBtX3NlcmlhbGl6ZWRTdGF0ZS5nZXQoKTsgfQogICAgIFNjcmlwdFZhbHVlIHN0YXRlKCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0ZTsgfQogCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcm
IGludGVyZmFjZU5hbWUoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBQb3BTdGF0ZUV2ZW50KCk7
CiAgICAgUG9wU3RhdGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBQb3BTdGF0ZUV2
ZW50SW5pdCYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Byb2dyZXNzRXZlbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Qcm9ncmVzc0V2ZW50LmNwcAkocmV2aXNp
b24gOTc5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUHJvZ3Jlc3NFdmVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJQcm9ncmVzc0V2ZW50LmgiCiAKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogUHJvZ3Jlc3NFdmVudEluaXQ6OlByb2dyZXNzRXZlbnRJbml0KCkKQEAg
LTcxLDQgKzczLDkgQEAgdm9pZCBQcm9ncmVzc0V2ZW50Ojppbml0UHJvZ3Jlc3NFdmVudChjbwog
ICAgIG1fdG90YWwgPSB0b3RhbEFyZzsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBQcm9ncmVz
c0V2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygp
LmludGVyZmFjZUZvclByb2dyZXNzRXZlbnQ7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9Qcm9ncmVzc0V2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1By
b2dyZXNzRXZlbnQuaAkocmV2aXNpb24gOTc5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUHJv
Z3Jlc3NFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCw4IEBAIHB1YmxpYzoKICAg
ICB1bnNpZ25lZCBsb25nIGxvbmcgbG9hZGVkKCkgY29uc3QgeyByZXR1cm4gbV9sb2FkZWQ7IH0K
ICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWwoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsOyB9
CiAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0
OworCiBwcm90ZWN0ZWQ6CiAgICAgUHJvZ3Jlc3NFdmVudCgpOwogICAgIFByb2dyZXNzRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGxlbmd0aENvbXB1dGFibGUsIHVuc2lnbmVk
IGxvbmcgbG9uZyBsb2FkZWQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vVGV4dEV2ZW50LmNwcAkocmV2aXNpb24gOTc5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vVGV4dEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTksNiArOTksMTEgQEAgdm9pZCBU
ZXh0RXZlbnQ6OmluaXRUZXh0RXZlbnQoY29uc3QgQXRvbQogICAgIG1fZGF0YSA9IGRhdGE7CiB9
CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgVGV4dEV2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclRleHRFdmVudDsKK30KKwog
Ym9vbCBUZXh0RXZlbnQ6OmlzVGV4dEV2ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gdHJ1ZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmgJKHJldmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL1RleHRFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAKICAgICAgICAgU3RyaW5nIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGE7IH0KIAorICAgICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50
ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0RXZlbnQoKSBj
b25zdDsKIAogICAgICAgICBib29sIGlzTGluZUJyZWFrKCkgY29uc3QgeyByZXR1cm4gbV9pbnB1
dFR5cGUgPT0gVGV4dEV2ZW50SW5wdXRMaW5lQnJlYWs7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9Ub3VjaEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVG91
Y2hFdmVudC5jcHAJKHJldmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1RvdWNo
RXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw4IEBACiAjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKIAogI2luY2x1ZGUgIlRvdWNoRXZlbnQuaCIKKworI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKICNpbmNsdWRlICJUb3VjaExpc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNzMsNiArNzUsMTEgQEAgdm9pZCBUb3VjaEV2ZW50Ojppbml0VG91Y2hFdmVudChUb3VjaExp
cwogICAgIGluaXRDb29yZGluYXRlcyhJbnRQb2ludChjbGllbnRYLCBjbGllbnRZKSk7CiB9CiAK
K2NvbnN0IEF0b21pY1N0cmluZyYgVG91Y2hFdmVudDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JUb3VjaEV2ZW50OworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5oCShyZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDggQEAg
cHVibGljOgogICAgIFRvdWNoTGlzdCogdGFyZ2V0VG91Y2hlcygpIGNvbnN0IHsgcmV0dXJuIG1f
dGFyZ2V0VG91Y2hlcy5nZXQoKTsgfQogICAgIFRvdWNoTGlzdCogY2hhbmdlZFRvdWNoZXMoKSBj
b25zdCB7IHJldHVybiBtX2NoYW5nZWRUb3VjaGVzLmdldCgpOyB9CiAKKyAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OworCiBwcml2YXRlOgogICAg
IFRvdWNoRXZlbnQoKTsKICAgICBUb3VjaEV2ZW50KFRvdWNoTGlzdCogdG91Y2hlcywgVG91Y2hM
aXN0KiB0YXJnZXRUb3VjaGVzLApAQCAtNzEsOCArNzMsNiBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgaW50IHBhZ2VZLAogICAgICAgICAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9v
bCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5KTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1RvdWNoRXZl
bnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBSZWZQdHI8VG91Y2hMaXN0PiBtX3Rv
dWNoZXM7CiAgICAgUmVmUHRyPFRvdWNoTGlzdD4gbV90YXJnZXRUb3VjaGVzOwogICAgIFJlZlB0
cjxUb3VjaExpc3Q+IG1fY2hhbmdlZFRvdWNoZXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
VUlFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmgJKHJl
dmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNDgsNyArNDgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgQWJz
dHJhY3RWaWV3KiB2aWV3KCkgY29uc3QgeyByZXR1cm4gbV92aWV3LmdldCgpOyB9CiAgICAgICAg
IGludCBkZXRhaWwoKSBjb25zdCB7IHJldHVybiBtX2RldGFpbDsgfQotICAgICAgICAKKworICAg
ICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0Owog
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNVSUV2ZW50KCkgY29uc3Q7CiAKICAgICAgICAgdmlydHVh
bCBpbnQga2V5Q29kZSgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdEFu
aW1hdGlvbkV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0
QW5pbWF0aW9uRXZlbnQuY3BwCShyZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9XZWJLaXRBbmltYXRpb25FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDQgKzg0LDkg
QEAgZG91YmxlIFdlYktpdEFuaW1hdGlvbkV2ZW50OjplbGFwc2VkVGltZQogICAgIHJldHVybiBt
X2VsYXBzZWRUaW1lOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIFdlYktpdEFuaW1hdGlvbkV2
ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmlu
dGVyZmFjZUZvcldlYktpdEFuaW1hdGlvbkV2ZW50OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuaAkocmV2
aXNpb24gOTc5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3Ry
aW5nJiBhbmltYXRpb25OYW1lKCkgY29uc3Q7CiAgICAgZG91YmxlIGVsYXBzZWRUaW1lKCkgY29u
c3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNXZWJLaXRBbmltYXRpb25FdmVudCgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNl
TmFtZSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFdlYktpdEFuaW1hdGlvbkV2ZW50KCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcAkocmV2
aXNpb24gOTc5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsNCArODUsOSBAQCBkb3VibGUgV2ViS2l0VHJhbnNp
dGlvbkV2ZW50OjplbGFwc2VkVGltCiAgICAgcmV0dXJuIG1fZWxhcHNlZFRpbWU7CiB9CiAKK2Nv
bnN0IEF0b21pY1N0cmluZyYgV2ViS2l0VHJhbnNpdGlvbkV2ZW50OjppbnRlcmZhY2VOYW1lKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvcldlYktpdFRyYW5z
aXRpb25FdmVudDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaAkocmV2aXNpb24gOTc5MzcpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1l
KCkgY29uc3Q7CiAgICAgZG91YmxlIGVsYXBzZWRUaW1lKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgaXNXZWJLaXRUcmFuc2l0aW9uRXZlbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Cisg
ICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKIAog
cHJpdmF0ZToKICAgICBXZWJLaXRUcmFuc2l0aW9uRXZlbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9XaGVlbEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
V2hlZWxFdmVudC5jcHAJKHJldmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1do
ZWVsRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCwxMSBAQCB2b2lkIFdoZWVs
RXZlbnQ6OmluaXRXZWJLaXRXaGVlbEV2ZW50KGluCiAgICAgICAgICAgICAgICAgICAgY3RybEtl
eSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSk7CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYg
V2hlZWxFdmVudDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFt
ZXMoKS5pbnRlcmZhY2VGb3JXaGVlbEV2ZW50OworfQorCiBib29sIFdoZWVsRXZlbnQ6OmlzV2hl
ZWxFdmVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vV2hlZWxFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9XaGVl
bEV2ZW50LmgJKHJldmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZl
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIC8vIE5lZWRlZCBmb3IgT2JqZWN0aXZlLUMgbGVnYWN5IHN1cHBvcnQKICAgICAg
ICAgYm9vbCBpc0hvcml6b250YWwoKSBjb25zdCB7IHJldHVybiBtX3doZWVsRGVsdGEueCgpOyB9
CiAKKyAgICAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBj
b25zdDsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIFdoZWVsRXZlbnQoKTsKICAgICAgICAgV2hl
ZWxFdmVudChjb25zdCBGbG9hdFBvaW50JiB3aGVlbFRpY2tzLCBjb25zdCBGbG9hdFBvaW50JiBy
YXdEZWx0YSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX2V2ZW50X2ZhY3RvcnkucGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL21ha2VfZXZlbnRfZmFjdG9yeS5wbAko
cmV2aXNpb24gOTc5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9ldmVudF9mYWN0b3J5
LnBsCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw5IEBAIHVzZSBJTzo6RmlsZTsKIHVzZSBJ
bkZpbGVzUGFyc2VyOwogCiBzdWIgcmVhZEV2ZW50cygkKTsKK3N1YiBwcmludEZhY3RvcnlGaWxl
KCQpOworc3ViIHByaW50TWFjcm9GaWxlKCQpOworc3ViIHByaW50SGVhZGVyc0ZpbGUoJCk7CiAK
IG15ICRldmVudHNGaWxlID0gIiI7CiBteSAkb3V0cHV0RGlyID0gIi4iOwpAQCAtNTgsNyArNjEs
OSBAQCBkaWUgIllvdSBtdXN0IHNwZWNpZnkgLS1ldmVudHMgPGZpbGU+IiB1CiAKIG15ICVldmVu
dHMgPSAle3JlYWRFdmVudHMoJGV2ZW50c0ZpbGUpfTsKIAotcHJpbnRDcHBGaWxlKCIkb3V0cHV0
RGlyL0V2ZW50RmFjdG9yeS5jcHAiKTsKK3ByaW50RmFjdG9yeUZpbGUoIiRvdXRwdXREaXIvRXZl
bnRGYWN0b3J5LmNwcCIpOworcHJpbnRNYWNyb0ZpbGUoIiRvdXRwdXREaXIvRXZlbnRJbnRlcmZh
Y2VzLmgiKTsKK3ByaW50SGVhZGVyc0ZpbGUoIiRvdXRwdXREaXIvRXZlbnRIZWFkZXJzLmgiKTsK
IAogc3ViIGRlZmF1bHRFdmVudFByb3BlcnR5SGFzaAogewpAQCAtMTE5LDUxICsxMjQsMTM5IEBA
IHN1YiBpbnRlcmZhY2VGb3JFdmVudCgkKQogICAgIHJldHVybiAkaW50ZXJmYWNlTmFtZTsKIH0K
IAotc3ViIHByaW50Q3BwRmlsZQorc3ViIHByaW50RmFjdG9yeUZpbGUoJCkKIHsKLSAgICBteSAk
Y3BwUGF0aCA9IHNoaWZ0OworICAgIG15ICRwYXRoID0gc2hpZnQ7CiAgICAgbXkgJEY7CiAKLSAg
ICBvcGVuIEYsICI+JGNwcFBhdGgiOworICAgIG9wZW4gRiwgIj4kcGF0aCI7CiAKICAgICBwcmlu
dExpY2Vuc2VIZWFkZXIoJEYpOwogCiAgICAgcHJpbnQgRiAiI2luY2x1ZGUgXCJjb25maWcuaFwi
XG4iOwotICAgIHByaW50IEYgIiNpbmNsdWRlIFwiRXZlbnRGYWN0b3J5LmhcIlxuXG4iOwotCi0g
ICAgbXkgJWluY2x1ZGVkSW50ZXJmYWNlcyA9ICgpOworICAgIHByaW50IEYgIiNpbmNsdWRlIFwi
RXZlbnRGYWN0b3J5LmhcIlxuIjsKKyAgICBwcmludCBGICJcbiI7CisgICAgcHJpbnQgRiAiI2lu
Y2x1ZGUgXCJFdmVudEhlYWRlcnMuaFwiXG4iOworICAgIHByaW50IEYgIlxuIjsKKyAgICBwcmlu
dCBGICJuYW1lc3BhY2UgV2ViQ29yZSB7XG4iOworICAgIHByaW50IEYgIlxuIjsKKyAgICBwcmlu
dCBGICJQYXNzUmVmUHRyPEV2ZW50PiBFdmVudEZhY3Rvcnk6OmNyZWF0ZShjb25zdCBTdHJpbmcm
IGV2ZW50VHlwZSlcbiI7CisgICAgcHJpbnQgRiAie1xuIjsKIAogICAgIGZvciBteSAkZXZlbnRO
YW1lIChzb3J0IGtleXMgJXBhcnNlZEV2ZW50cykgewogICAgICAgICBteSAkY29uZGl0aW9uYWwg
PSAkcGFyc2VkRXZlbnRzeyRldmVudE5hbWV9eyJjb25kaXRpb25hbCJ9OwogICAgICAgICBteSAk
aW50ZXJmYWNlTmFtZSA9IGludGVyZmFjZUZvckV2ZW50KCRldmVudE5hbWUpOwogCi0gICAgICAg
IG5leHQgaWYgZGVmaW5lZCgkaW5jbHVkZWRJbnRlcmZhY2VzeyRpbnRlcmZhY2VOYW1lfSk7Ci0g
ICAgICAgICRpbmNsdWRlZEludGVyZmFjZXN7JGludGVyZmFjZU5hbWV9ID0gMTsKLQogICAgICAg
ICBwcmludCBGICIjaWYgRU5BQkxFKCRjb25kaXRpb25hbClcbiIgaWYgJGNvbmRpdGlvbmFsOwot
ICAgICAgICBwcmludCBGICIjaW5jbHVkZSBcIiRpbnRlcmZhY2VOYW1lLmhcIlxuIjsKKyAgICAg
ICAgcHJpbnQgRiAiICAgIGlmIChldmVudFR5cGUgPT0gXCIkZXZlbnROYW1lXCIpXG4iOworICAg
ICAgICBwcmludCBGICIgICAgICAgIHJldHVybiAke2ludGVyZmFjZU5hbWV9OjpjcmVhdGUoKTtc
biI7CiAgICAgICAgIHByaW50IEYgIiNlbmRpZlxuIiBpZiAkY29uZGl0aW9uYWw7CiAgICAgfQog
Ci0gICAgcHJpbnQgRiAiXG5uYW1lc3BhY2UgV2ViQ29yZSB7XG5cbiI7CisgICAgcHJpbnQgRiAi
ICAgIHJldHVybiAwO1xuIjsKKyAgICBwcmludCBGICJ9XG4iOworICAgIHByaW50IEYgIlxuIjsK
KyAgICBwcmludCBGICJ9IC8vIG5hbWVzcGFjZSBXZWJDb3JlXG4iOworICAgIGNsb3NlIEY7Cit9
CisKK3N1YiBwcmludE1hY3JvRmlsZSgkKQoreworICAgIG15ICRwYXRoID0gc2hpZnQ7CisgICAg
bXkgJEY7CiAKLSAgICBwcmludCBGICJQYXNzUmVmUHRyPEV2ZW50PiBFdmVudEZhY3Rvcnk6OmNy
ZWF0ZShjb25zdCBTdHJpbmcmIGV2ZW50VHlwZSlcbiI7Ci0gICAgcHJpbnQgRiAie1xuIjsKKyAg
ICBvcGVuIEYsICI+JHBhdGgiOworCisgICAgcHJpbnRMaWNlbnNlSGVhZGVyKCRGKTsKKworICAg
IHByaW50IEYgIiNpZm5kZWYgRXZlbnRJbnRlcmZhY2VzX2hcbiI7CisgICAgcHJpbnQgRiAiI2Rl
ZmluZSBFdmVudEludGVyZmFjZXNfaFxuIjsKKyAgICBwcmludCBGICJcbiI7CisKKyAgICBteSAl
dW5jb25kaXRpb25hbEludGVyZmFjZXMgPSAoKTsKKyAgICBteSAlaW50ZXJmYWNlc0J5Q29uZGl0
aW9uYWwgPSAoKTsKIAogICAgIGZvciBteSAkZXZlbnROYW1lIChzb3J0IGtleXMgJXBhcnNlZEV2
ZW50cykgewogICAgICAgICBteSAkY29uZGl0aW9uYWwgPSAkcGFyc2VkRXZlbnRzeyRldmVudE5h
bWV9eyJjb25kaXRpb25hbCJ9OwogICAgICAgICBteSAkaW50ZXJmYWNlTmFtZSA9IGludGVyZmFj
ZUZvckV2ZW50KCRldmVudE5hbWUpOwogCisgICAgICAgIGlmICgkY29uZGl0aW9uYWwpIHsKKyAg
ICAgICAgICAgIGlmICghZGVmaW5lZCgkaW50ZXJmYWNlc0J5Q29uZGl0aW9uYWx7JGNvbmRpdGlv
bmFsfSkpIHsKKyAgICAgICAgICAgICAgICAkaW50ZXJmYWNlc0J5Q29uZGl0aW9uYWx7JGNvbmRp
dGlvbmFsfSA9ICgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgJGludGVyZmFjZXNCeUNv
bmRpdGlvbmFseyRjb25kaXRpb25hbH17JGludGVyZmFjZU5hbWV9ID0gMTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICR1bmNvbmRpdGlvbmFsSW50ZXJmYWNlc3skaW50ZXJmYWNlTmFt
ZX0gPSAxCisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgbXkgJGNvbmRpdGlvbmFsIChzb3J0
IGtleXMgJWludGVyZmFjZXNCeUNvbmRpdGlvbmFsKSB7CisgICAgICAgIHByaW50IEYgIiNpZiBF
TkFCTEUoJGNvbmRpdGlvbmFsKVxuIjsKKyAgICAgICAgcHJpbnQgRiAiI2RlZmluZSBET01fRVZF
TlRfSU5URVJGQUNFU19GT1JfRUFDSF8kY29uZGl0aW9uYWwobWFjcm8pIFxcXG4iOworCisgICAg
ICAgIGZvciBteSAkaW50ZXJmYWNlIChzb3J0IGtleXMgJXsgJGludGVyZmFjZXNCeUNvbmRpdGlv
bmFseyRjb25kaXRpb25hbH0gfSkgeworICAgICAgICAgICAgbmV4dCBpZiBkZWZpbmVkKCR1bmNv
bmRpdGlvbmFsSW50ZXJmYWNlc3skaW50ZXJmYWNlfSk7CisgICAgICAgICAgICBwcmludCBGICIg
ICAgbWFjcm8oJGludGVyZmFjZSkgXFxcbiI7CisgICAgICAgIH0KKworICAgICAgICBwcmludCBG
ICIvLyBFbmQgb2YgRE9NX0VWRU5UX0lOVEVSRkFDRVNfRk9SX0VBQ0hfJGNvbmRpdGlvbmFsXG4i
OworICAgICAgICBwcmludCBGICIjZWxzZVxuIjsKKyAgICAgICAgcHJpbnQgRiAiI2RlZmluZSBE
T01fRVZFTlRfSU5URVJGQUNFU19GT1JfRUFDSF8kY29uZGl0aW9uYWwobWFjcm8pXG4iOworICAg
ICAgICBwcmludCBGICIjZW5kaWZcbiI7CisgICAgICAgIHByaW50IEYgIlxuIjsKKyAgICB9CisK
KyAgICBwcmludCBGICIjZGVmaW5lIERPTV9FVkVOVF9JTlRFUkZBQ0VTX0ZPUl9FQUNIKG1hY3Jv
KSBcXFxuIjsKKyAgICBwcmludCBGICIgICAgXFxcbiI7CisgICAgZm9yIG15ICRpbnRlcmZhY2Ug
KHNvcnQga2V5cyAldW5jb25kaXRpb25hbEludGVyZmFjZXMpIHsKKyAgICAgICAgICAgIHByaW50
IEYgIiAgICBtYWNybygkaW50ZXJmYWNlKSBcXFxuIjsKKyAgICB9CisgICAgcHJpbnQgRiAiICAg
IFxcXG4iOworICAgIGZvciBteSAkY29uZGl0aW9uYWwgKHNvcnQga2V5cyAlaW50ZXJmYWNlc0J5
Q29uZGl0aW9uYWwpIHsKKyAgICAgICAgcHJpbnQgRiAiICAgIERPTV9FVkVOVF9JTlRFUkZBQ0VT
X0ZPUl9FQUNIXyRjb25kaXRpb25hbChtYWNybykgXFxcbiI7CisgICAgfQorCisgICAgcHJpbnQg
RiAiXG4iOworICAgIHByaW50IEYgIiNlbmRpZiAvLyBFdmVudEludGVyZmFjZXNfaFxuIjsKKwor
ICAgIGNsb3NlIEY7Cit9CisKK3N1YiBwcmludEhlYWRlcnNGaWxlKCQpCit7CisgICAgbXkgJHBh
dGggPSBzaGlmdDsKKyAgICBteSAkRjsKKworICAgIG9wZW4gRiwgIj4kcGF0aCI7CisKKyAgICBw
cmludExpY2Vuc2VIZWFkZXIoJEYpOworCisgICAgcHJpbnQgRiAiI2lmbmRlZiBFdmVudEhlYWRl
cnNfaFxuIjsKKyAgICBwcmludCBGICIjZGVmaW5lIEV2ZW50SGVhZGVyc19oXG4iOworICAgIHBy
aW50IEYgIlxuIjsKKworICAgIG15ICVpbmNsdWRlZEludGVyZmFjZXMgPSAoKTsKKworICAgIGZv
ciBteSAkZXZlbnROYW1lIChzb3J0IGtleXMgJXBhcnNlZEV2ZW50cykgeworICAgICAgICBteSAk
Y29uZGl0aW9uYWwgPSAkcGFyc2VkRXZlbnRzeyRldmVudE5hbWV9eyJjb25kaXRpb25hbCJ9Owor
ICAgICAgICBteSAkaW50ZXJmYWNlTmFtZSA9IGludGVyZmFjZUZvckV2ZW50KCRldmVudE5hbWUp
OworCisgICAgICAgIG5leHQgaWYgZGVmaW5lZCgkaW5jbHVkZWRJbnRlcmZhY2VzeyRpbnRlcmZh
Y2VOYW1lfSk7CisgICAgICAgICRpbmNsdWRlZEludGVyZmFjZXN7JGludGVyZmFjZU5hbWV9ID0g
MTsKKwogICAgICAgICBwcmludCBGICIjaWYgRU5BQkxFKCRjb25kaXRpb25hbClcbiIgaWYgJGNv
bmRpdGlvbmFsOwotICAgICAgICBwcmludCBGICIgICAgaWYgKGV2ZW50VHlwZSA9PSBcIiRldmVu
dE5hbWVcIilcbiI7Ci0gICAgICAgIHByaW50IEYgIiAgICAgICAgcmV0dXJuICR7aW50ZXJmYWNl
TmFtZX06OmNyZWF0ZSgpO1xuIjsKKyAgICAgICAgcHJpbnQgRiAiI2luY2x1ZGUgXCIkaW50ZXJm
YWNlTmFtZS5oXCJcbiI7CisgICAgICAgIHByaW50IEYgIiNpZiBVU0UoSlNDKVxuIjsKKyAgICAg
ICAgcHJpbnQgRiAiI2luY2x1ZGUgXCJKUyRpbnRlcmZhY2VOYW1lLmhcIlxuIjsKKyAgICAgICAg
cHJpbnQgRiAiI2VsaWYgVVNFKFY4KVxuIjsKKyAgICAgICAgcHJpbnQgRiAiI2luY2x1ZGUgXCJW
OCRpbnRlcmZhY2VOYW1lLmhcIlxuIjsKKyAgICAgICAgcHJpbnQgRiAiI2VuZGlmXG4iOwogICAg
ICAgICBwcmludCBGICIjZW5kaWZcbiIgaWYgJGNvbmRpdGlvbmFsOwogICAgIH0KIAotICAgIHBy
aW50IEYgIiAgICByZXR1cm4gMDtcbiI7Ci0gICAgcHJpbnQgRiAifVxuIjsKKyAgICBwcmludCBG
ICJcbiI7CisgICAgcHJpbnQgRiAiI2VuZGlmIC8vIEV2ZW50SGVhZGVyc19oXG4iOwogCi0gICAg
cHJpbnQgRiAiXG59IC8vIG5hbWVzcGFjZSBXZWJDb3JlXG4iOwogICAgIGNsb3NlIEY7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2ZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVu
dC5jcHAJKHJldmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xDb250ZXh0RXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViR0xDb250ZXh0RXZlbnQuaCIKIAorI2luY2x1
ZGUgIkV2ZW50TmFtZXMuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXZWJHTENvbnRleHRF
dmVudDo6V2ViR0xDb250ZXh0RXZlbnQoKQpAQCAtNTEsOSArNTMsOSBAQCB2b2lkIFdlYkdMQ29u
dGV4dEV2ZW50Ojppbml0RXZlbnQoY29uc3QgCiAgICAgbV9zdGF0dXNNZXNzYWdlID0gc3RhdHVz
TWVzc2FnZTsKIH0KIAotYm9vbCBXZWJHTENvbnRleHRFdmVudDo6aXNXZWJHTENvbnRleHRFdmVu
dCgpIGNvbnN0Citjb25zdCBBdG9taWNTdHJpbmcmIFdlYkdMQ29udGV4dEV2ZW50OjppbnRlcmZh
Y2VOYW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZXZlbnROYW1l
cygpLmludGVyZmFjZUZvcldlYkdMQ29udGV4dEV2ZW50OwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4
dEV2ZW50LmgJKHJldmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xDb250ZXh0RXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTAgKzQ0LDEwIEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgaW5pdEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgU3RyaW5nJiBzdGF0dXNNZXNzYWdl
KTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1dlYkdMQ29udGV4dEV2ZW50KCkgY29uc3Q7Ci0KICAg
ICBjb25zdCBTdHJpbmcmIHN0YXR1c01lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1c01l
c3NhZ2U7IH0KIAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1l
KCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgV2ViR0xDb250ZXh0RXZlbnQoKTsKICAgICBXZWJH
TENvbnRleHRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIGNvbnN0IFN0cmluZyYgc3RhdHVzTWVzc2FnZSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJl
c291cmNlLmNwcAkocmV2aXNpb24gOTc5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcg
KzEwMiw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlOjpzdGFydFIKIHZvaWQg
SW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgRXZlbnQqIGV2ZW50KQogewogICAgIEFTU0VSVChtX2Zyb250ZW5kKTsKLSAgICBp
ZiAoZXZlbnQtPnR5cGUoKSAhPSBldmVudE5hbWVzKCkuc3RvcmFnZUV2ZW50IHx8ICFldmVudC0+
aXNTdG9yYWdlRXZlbnQoKSkKKyAgICBpZiAoZXZlbnQtPnR5cGUoKSAhPSBldmVudE5hbWVzKCku
c3RvcmFnZUV2ZW50IHx8IGV2ZW50LT5pbnRlcmZhY2VOYW1lKCkgIT0gZXZlbnROYW1lcygpLmlu
dGVyZmFjZUZvclN0b3JhZ2VFdmVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RvcmFnZUV2
ZW50KiBzdG9yYWdlRXZlbnQgPSBzdGF0aWNfY2FzdDxTdG9yYWdlRXZlbnQqPihldmVudCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wMnAvTWVkaWFTdHJlYW1FdmVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcDJwL01lZGlhU3RyZWFtRXZlbnQuY3BwCShyZXZpc2lvbiA5Nzkz
NykKKysrIFNvdXJjZS9XZWJDb3JlL3AycC9NZWRpYVN0cmVhbUV2ZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzIsNiArNzIsMTEgQEAgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gTWVkaWFTdHJl
YW1FdmVudAogICAgIHJldHVybiBtX3N0cmVhbTsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBN
ZWRpYVN0cmVhbUV2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZl
bnROYW1lcygpLmludGVyZmFjZUZvck1lZGlhU3RyZWFtRXZlbnQ7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wMnAvTWVkaWFTdHJlYW1FdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3AycC9NZWRpYVN0cmVhbUV2ZW50LmgJKHJldmlzaW9uIDk3OTM3KQorKysgU291cmNl
L1dlYkNvcmUvcDJwL01lZGlhU3RyZWFtRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTEg
KzQzLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5pdE1lZGlhU3RyZWFtRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtPik7CiAKLSAgICAvLyBGcm9tIEV2ZW50VGFyZ2V0LgotICAgIHZp
cnR1YWwgYm9vbCBpc01lZGlhU3RyZWFtRXZlbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0K
ICAgICBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBzdHJlYW0oKSBjb25zdDsKIAorICAgIHZpcnR1
YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisKIHByaXZhdGU6
CiAgICAgTWVkaWFTdHJlYW1FdmVudCgpOwogICAgIE1lZGlhU3RyZWFtRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtPik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0
RXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRF
dmVudC5jcHAJKHJldmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TcGVlY2hJ
bnB1dEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksMTAgKzI5LDEzIEBACiAgKi8KIAog
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNwZWVjaElucHV0RXZlbnQuaCIKIAogI2lm
IEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAKKyNpbmNsdWRlICJTcGVlY2hJbnB1dEV2ZW50LmgiCisK
KyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1Jl
ZlB0cjxTcGVlY2hJbnB1dEV2ZW50PiBTcGVlY2hJbnB1dEV2ZW50OjpjcmVhdGUoKQpAQCAtNTks
NiArNjIsMTEgQEAgU3BlZWNoSW5wdXRFdmVudDo6flNwZWVjaElucHV0RXZlbnQoKQogewogfQog
Citjb25zdCBBdG9taWNTdHJpbmcmIFNwZWVjaElucHV0RXZlbnQ6OmludGVyZmFjZU5hbWUoKSBj
b25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yU3BlZWNoSW5wdXRF
dmVudDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElO
UFVUX1NQRUVDSCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRFdmVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRFdmVudC5oCShy
ZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRFdmVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MywxMCArNDMsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNwZWVjaElucHV0RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgY29uc3QgU3BlZWNoSW5wdXRSZXN1bHRBcnJheSYgcmVzdWx0cyk7CiAgICAgflNw
ZWVjaElucHV0RXZlbnQoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1NwZWVjaElucHV0RXZlbnQo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBTcGVlY2hJbnB1dFJlc3VsdExpc3QqIHJl
c3VsdHMoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdHMuZ2V0KCk7IH0KIAorICAgIHZpcnR1YWwg
Y29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisKIHByaXZhdGU6CiAg
ICAgU3BlZWNoSW5wdXRFdmVudCgpOwogICAgIFNwZWVjaElucHV0RXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFNwZWVjaElucHV0UmVzdWx0QXJyYXkmIHJlc3VsdHMp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZUV2
ZW50LmNwcAkocmV2aXNpb24gOTc5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZl
cnNpb25DaGFuZ2VFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDExIEBAIFN0
cmluZyBJREJWZXJzaW9uQ2hhbmdlRXZlbnQ6OnZlcnNpb24oKQogICAgIHJldHVybiBtX3ZlcnNp
b247CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgSURCVmVyc2lvbkNoYW5nZUV2ZW50OjppbnRl
cmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZv
cklEQlZlcnNpb25DaGFuZ2VFdmVudDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZUV2ZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdl
RXZlbnQuaAkocmV2aXNpb24gOTc5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZl
cnNpb25DaGFuZ2VFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxMCArNDMsMTAgQEAgcHVi
bGljOgogICAgIC8vIEZJWE1FOiBOZWVkIHRvIGFsbG93IGNyZWF0aW9uIG9mIHRoZXNlIGV2ZW50
cyBmcm9tIEpTLgogICAgIHZpcnR1YWwgfklEQlZlcnNpb25DaGFuZ2VFdmVudCgpOwogCi0gICAg
dmlydHVhbCBib29sIGlzSURCVmVyc2lvbkNoYW5nZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQotCiAgICAgdmlydHVhbCBTdHJpbmcgdmVyc2lvbigpOwogCisgICAgdmlydHVhbCBjb25z
dCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBJ
REJWZXJzaW9uQ2hhbmdlRXZlbnQoY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VF
dmVudC5jcHAJKHJldmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUV2ZW50LmgiCiAKKyNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03
Miw0ICs3Myw5IEBAIHZvaWQgU3RvcmFnZUV2ZW50Ojppbml0U3RvcmFnZUV2ZW50KGNvbnMKICAg
ICBtX3N0b3JhZ2VBcmVhID0gc3RvcmFnZUFyZWE7CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYg
U3RvcmFnZUV2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnRO
YW1lcygpLmludGVyZmFjZUZvclN0b3JhZ2VFdmVudDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudC5oCShyZXZpc2lvbiA5
NzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBO
ZWVkZWQgb25jZSB3ZSBzdXBwb3J0IGluaXQ8Ymxhbms+RXZlbnROUwogICAgICAgICAvLyB2b2lk
IGluaXRTdG9yYWdlRXZlbnROUyhpbiBET01TdHJpbmcgbmFtZXNwYWNlVVJJLCBpbiBET01TdHJp
bmcgdHlwZUFyZywgaW4gYm9vbGVhbiBjYW5CdWJibGVBcmcsIGluIGJvb2xlYW4gY2FuY2VsYWJs
ZUFyZywgaW4gRE9NU3RyaW5nIGtleUFyZywgaW4gRE9NU3RyaW5nIG9sZFZhbHVlQXJnLCBpbiBE
T01TdHJpbmcgbmV3VmFsdWVBcmcsIGluIERPTVN0cmluZyB1cmxBcmcsIFN0b3JhZ2Ugc3RvcmFn
ZUFyZWFBcmcpOwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1N0b3JhZ2VFdmVudCgpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGlu
dGVyZmFjZU5hbWUoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFN0b3JhZ2VFdmVu
dCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21FdmVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21FdmVudC5jcHAJKHJldmlzaW9uIDk3OTM3
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21FdmVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIwLDggKzIwLDExIEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaWYgRU5B
QkxFKFNWRykKKwogI2luY2x1ZGUgIlNWR1pvb21FdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50TmFt
ZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03MSw4ICs3NCwxMSBAQCBib29sIFNW
R1pvb21FdmVudDo6aXNTVkdab29tRXZlbnQoKSBjb25zCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
K2NvbnN0IEF0b21pY1N0cmluZyYgU1ZHWm9vbUV2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclNWR1pvb21FdmVudDsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKLQotLy8g
dmltOnRzPTQ6bm9ldApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21FdmVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdab29tRXZlbnQuaAkocmV2aXNpb24g
OTc5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHWm9vbUV2ZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDYgKzQ1LDggQEAgcHVibGljOgogCiAgICAgRmxvYXRQb2ludCBuZXdUcmFuc2xh
dGUoKSBjb25zdDsKIAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VO
YW1lKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgU1ZHWm9vbUV2ZW50KCk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1Byb2Nlc3NpbmdFdmVudC5jcHAJKHJl
dmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Qcm9jZXNzaW5n
RXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw5ICs1OCw5IEBAIEF1ZGlvUHJvY2Vzc2lu
Z0V2ZW50Ojp+QXVkaW9Qcm9jZXNzaW5nRXYKIHsKIH0KIAotYm9vbCBBdWRpb1Byb2Nlc3NpbmdF
dmVudDo6aXNBdWRpb1Byb2Nlc3NpbmdFdmVudCgpIGNvbnN0Citjb25zdCBBdG9taWNTdHJpbmcm
IEF1ZGlvUHJvY2Vzc2luZ0V2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gdHJ1ZTsKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvckF1ZGlvUHJvY2Vz
c2luZ0V2ZW50OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9BdWRpb1Byb2Nlc3NpbmdFdmVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmgJKHJldmlzaW9uIDk3OTM3
KQorKysgU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Qcm9jZXNzaW5nRXZlbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNDEsMTEgKzQxLDExIEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFs
IH5BdWRpb1Byb2Nlc3NpbmdFdmVudCgpOwogCi0gICAgdmlydHVhbCBib29sIGlzQXVkaW9Qcm9j
ZXNzaW5nRXZlbnQoKSBjb25zdDsKLQogICAgIEF1ZGlvQnVmZmVyKiBpbnB1dEJ1ZmZlcigpIHsg
cmV0dXJuIG1faW5wdXRCdWZmZXIuZ2V0KCk7IH0KICAgICBBdWRpb0J1ZmZlciogb3V0cHV0QnVm
ZmVyKCkgeyByZXR1cm4gbV9vdXRwdXRCdWZmZXIuZ2V0KCk7IH0KIAorICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAg
QXVkaW9Qcm9jZXNzaW5nRXZlbnQoKTsKICAgICBBdWRpb1Byb2Nlc3NpbmdFdmVudChQYXNzUmVm
UHRyPEF1ZGlvQnVmZmVyPiBpbnB1dEJ1ZmZlciwgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlcj4gb3V0
cHV0QnVmZmVyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Nv
bXBsZXRpb25FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmNwcAkocmV2aXNpb24gOTc5MzcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OCw5ICs1OCw5IEBAIE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudDo6
fk9mZmxpbmVBdWQKIHsKIH0KIAotYm9vbCBPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQ6Omlz
T2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50KCkgY29uc3QKK2NvbnN0IEF0b21pY1N0cmluZyYg
T2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvck9mZmxp
bmVBdWRpb0NvbXBsZXRpb25FdmVudDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29tcGxl
dGlvbkV2ZW50LmgJKHJldmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEwICs0
MSwxMCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCB+T2ZmbGluZUF1ZGlvQ29tcGxldGlv
bkV2ZW50KCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZl
bnQoKSBjb25zdDsKLQogICAgIEF1ZGlvQnVmZmVyKiByZW5kZXJlZEJ1ZmZlcigpIHsgcmV0dXJu
IG1fcmVuZGVyZWRCdWZmZXIuZ2V0KCk7IH0KIAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3Ry
aW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgT2ZmbGluZUF1ZGlv
Q29tcGxldGlvbkV2ZW50KCk7CiAgICAgT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50KFBhc3NS
ZWZQdHI8QXVkaW9CdWZmZXI+IHJlbmRlcmVkQnVmZmVyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3dlYnNvY2tldHMvQ2xvc2VFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dl
YnNvY2tldHMvQ2xvc2VFdmVudC5oCShyZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9XZWJDb3Jl
L3dlYnNvY2tldHMvQ2xvc2VFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw4ICs1MCw2IEBA
IHN0cnVjdCBDbG9zZUV2ZW50SW5pdCA6IHB1YmxpYyBFdmVudEluaXQKIAogY2xhc3MgQ2xvc2VF
dmVudCA6IHB1YmxpYyBFdmVudCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBib29sIGlzQ2xvc2VF
dmVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENs
b3NlRXZlbnQ+IGNyZWF0ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENs
b3NlRXZlbnQoKSk7CkBAIC03OCw2ICs3Niw4IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBzaG9y
dCBjb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlOyB9CiAgICAgU3RyaW5nIHJlYXNvbigpIGNv
bnN0IHsgcmV0dXJuIG1fcmVhc29uOyB9CiAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VG
b3JDbG9zZUV2ZW50OyB9CisKIHByaXZhdGU6CiAgICAgQ2xvc2VFdmVudCgpCiAgICAgICAgIDog
RXZlbnQoZXZlbnROYW1lcygpLmNsb3NlRXZlbnQsIGZhbHNlLCBmYWxzZSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmgJKHJldmlz
aW9uIDk3OTM3KQorKysgU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NF
dmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaWZuZGVmIFhNTEh0dHBS
ZXF1ZXN0UHJvZ3Jlc3NFdmVudF9oCiAjZGVmaW5lIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVu
dF9oCiAKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NFdmVudC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Niw5ICs0Nyw5IEBAIHB1YmxpYzoKICAgICB1
bnNpZ25lZCBsb25nIGxvbmcgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBsb2FkZWQoKTsgfQog
ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbFNpemUoKSBjb25zdCB7IHJldHVybiB0b3RhbCgp
OyB9CiAKLXByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzWE1MSHR0cFJlcXVlc3RQcm9ncmVz
c0V2ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgY29uc3QgQXRvbWlj
U3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3QgeyByZXR1cm4gZXZlbnROYW1lcygpLmludGVy
ZmFjZUZvclhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudDsgfQogCitwcml2YXRlOgogICAgIFhN
TEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudCgpIHsgfQogICAgIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jl
c3NFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgbGVuZ3RoQ29tcHV0YWJsZSwg
dW5zaWduZWQgbG9uZyBsb25nIGxvYWRlZCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsKQogICAg
ICAgICA6IFByb2dyZXNzRXZlbnQodHlwZSwgbGVuZ3RoQ29tcHV0YWJsZSwgbG9hZGVkLCB0b3Rh
bCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111859</attachid>
            <date>2011-10-20 15:38:38 -0700</date>
            <delta_ts>2011-10-20 16:27:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70483-20111020153837.patch</filename>
            <type>text/plain</type>
            <size>82645</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3OTUwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTM1IEBACisyMDExLTEwLTIwICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRXZlbnQuaCBzaG91bGRuJ3QgbmVl
ZCB0byBrbm93IGFib3V0IGV2ZXJ5IGlmZGVmIGFuZCBmZWF0dXJlIHRoYXQgdXNlcyBldmVudHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwNDgzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBleHBhbmRzIG1ha2VfZXZlbnRfZmFjdG9yeS5wbCB0byBjcmVhdGUgYQorICAgICAgICBET01f
RVZFTlRfSU5URVJGQUNFU19GT1JfRUFDSCBtYWNybyB0aGF0IHdlIGNhbiB1c2UgdG8gZ2VuZXJh
dGUgY29kZQorICAgICAgICBmb3IgZWFjaCBFdmVudCBpbnRlcmZhY2UuICBXZSB0aGVuIGFwcGx5
IHRoYXQgbWFjcm8gdG8gcmVtb3ZpbmcgYSBsYXJnZQorICAgICAgICBudW1iZXIgb2YgdmlydHVh
bCBmdW5jdGlvbnMgb24gRXZlbnQuICBJbnN0ZWFkIG9mIGhhdmluZyBhIEJvb2xlYW4KKyAgICAg
ICAgdmlydHVhbCBmdW5jdGlvbiBmb3IgZWFjaCBzdWJjbGFzcyBvZiBFdmVudCwgd2UgaGF2ZSBh
IHNpbmdsZSB2aXJ0dWFsCisgICAgICAgIGludGVyZmFjZU5hbWUgZnVuY3Rpb24sIHdoaWNoIHJl
dHVybnMgYW4gQXRvbWljU3RyaW5nLiAgV2UgdGhlbiB1c2UgdGhlCisgICAgICAgIEF0b21pY1N0
cmluZyB0byBqdW1wIHRocm91Z2ggYSBIYXNoTWFwIHRvIGZpbmQgdGhlIGFwcHJvcHJpYXRlCisg
ICAgICAgIEphdmFTY3JpcHQgd3JhcHBlciB0eXBlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZG9l
cyBub3QgcmVtb3ZlIGFsbCBvZiB0aGUgQm9vbGVhbiB2aXJ0dWFsIGZ1bmN0aW9ucyBiZWNhdXNl
CisgICAgICAgIEkgZ290IGV4aGF1c3RlZCBtYWtpbmcgYWxsIG9mIHRoZXNlIGVkaXRzLCBidXQg
SSBkaWQgcmVtb3ZlIGFsbCB0aGUKKyAgICAgICAgb25lcyB0aGF0IGludm9sdmUgaWZkZWZzLiAg
QSBmdXR1cmUgcGF0Y2ggd2lsbCByZW1vdmUgbW9yZS4KKworICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOEV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAg
ICAgICAqIGRvbS9CZWZvcmVMb2FkRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJlZm9yZUxv
YWRFdmVudDo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpCZWZvcmVMb2FkRXZl
bnQ6OmlzQmVmb3JlTG9hZEV2ZW50KToKKyAgICAgICAgKiBkb20vQmVmb3JlVGV4dEluc2VydGVk
RXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmVmb3JlVGV4dEluc2VydGVkRXZlbnQ6Omlu
dGVyZmFjZU5hbWUpOgorICAgICAgICAqIGRvbS9CZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5oOgor
ICAgICAgICAqIGRvbS9DbGlwYm9hcmRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRFdmVudDo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICogZG9tL0NsaXBib2FyZEV2ZW50
Lmg6CisgICAgICAgICogZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29tcG9zaXRpb25FdmVudDo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICogZG9tL0NvbXBv
c2l0aW9uRXZlbnQuaDoKKyAgICAgICAgKiBkb20vQ3VzdG9tRXZlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q3VzdG9tRXZlbnQ6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIGRvbS9DdXN0
b21FdmVudC5oOgorICAgICAgICAqIGRvbS9EZXZpY2VNb3Rpb25FdmVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEZXZpY2VNb3Rpb25FdmVudDo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICog
ZG9tL0RldmljZU1vdGlvbkV2ZW50Lmg6CisgICAgICAgICogZG9tL0RldmljZU9yaWVudGF0aW9u
RXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25FdmVudDo6aW50
ZXJmYWNlTmFtZSk6CisgICAgICAgICogZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuaDoKKyAg
ICAgICAgKiBkb20vRXJyb3JFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFcnJvckV2ZW50
OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBkb20vRXJyb3JFdmVudC5oOgorICAgICAgICAq
IGRvbS9FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudDo6aW50ZXJmYWNlTmFtZSk6
CisgICAgICAgICogZG9tL0V2ZW50Lmg6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnROYW1lczo6RXZlbnROYW1lcyk6CisgICAgICAgICogZG9t
L0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKiBkb20vSGFzaENoYW5nZUV2ZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpIYXNoQ2hhbmdlRXZlbnQ6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIGRv
bS9LZXlib2FyZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6Omlu
dGVyZmFjZU5hbWUpOgorICAgICAgICAqIGRvbS9LZXlib2FyZEV2ZW50Lmg6CisgICAgICAgICog
ZG9tL01lc3NhZ2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6Omlu
dGVyZmFjZU5hbWUpOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuaDoKKyAgICAgICAgKiBk
b20vTW91c2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZUV2ZW50OjppbnRlcmZh
Y2VOYW1lKToKKyAgICAgICAgKiBkb20vTW91c2VFdmVudC5oOgorICAgICAgICAqIGRvbS9NdXRh
dGlvbkV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uRXZlbnQ6OmludGVyZmFj
ZU5hbWUpOgorICAgICAgICAqIGRvbS9NdXRhdGlvbkV2ZW50Lmg6CisgICAgICAgICogZG9tL092
ZXJmbG93RXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3ZlcmZsb3dFdmVudDo6aW50ZXJm
YWNlTmFtZSk6CisgICAgICAgICogZG9tL092ZXJmbG93RXZlbnQuaDoKKyAgICAgICAgKiBkb20v
UGFnZVRyYW5zaXRpb25FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlVHJhbnNpdGlv
bkV2ZW50OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBkb20vUGFnZVRyYW5zaXRpb25FdmVu
dC5oOgorICAgICAgICAqIGRvbS9Qb3BTdGF0ZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBvcFN0YXRlRXZlbnQ6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIGRvbS9Qb3BTdGF0ZUV2
ZW50Lmg6CisgICAgICAgICogZG9tL1Byb2dyZXNzRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UHJvZ3Jlc3NFdmVudDo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICogZG9tL1Byb2dyZXNz
RXZlbnQuaDoKKyAgICAgICAgKiBkb20vVGV4dEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRFdmVudDo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICogZG9tL1RleHRFdmVudC5oOgor
ICAgICAgICAqIGRvbS9Ub3VjaEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoRXZl
bnQ6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIGRvbS9Ub3VjaEV2ZW50Lmg6CisgICAgICAg
ICogZG9tL1VJRXZlbnQuaDoKKyAgICAgICAgKiBkb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QW5pbWF0aW9uRXZlbnQ6OmludGVyZmFjZU5hbWUp
OgorICAgICAgICAqIGRvbS9XZWJLaXRBbmltYXRpb25FdmVudC5oOgorICAgICAgICAqIGRvbS9X
ZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0VHJhbnNp
dGlvbkV2ZW50OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBkb20vV2ViS2l0VHJhbnNpdGlv
bkV2ZW50Lmg6CisgICAgICAgICogZG9tL1doZWVsRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2hlZWxFdmVudDo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICogZG9tL1doZWVsRXZlbnQu
aDoKKyAgICAgICAgKiBkb20vbWFrZV9ldmVudF9mYWN0b3J5LnBsOgorICAgICAgICAocHJpbnRG
YWN0b3J5RmlsZSk6CisgICAgICAgIChwcmludE1hY3JvRmlsZSk6CisgICAgICAgIChwcmludEhl
YWRlcnNGaWxlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbnRleHRFdmVudDo6aW50ZXJmYWNlTmFtZSk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZTo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIHAy
cC9NZWRpYVN0cmVhbUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRXZl
bnQ6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHAycC9NZWRpYVN0cmVhbUV2ZW50Lmg6Cisg
ICAgICAgICogcGFnZS9TcGVlY2hJbnB1dEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNw
ZWVjaElucHV0RXZlbnQ6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHBhZ2UvU3BlZWNoSW5w
dXRFdmVudC5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQlZlcnNpb25DaGFuZ2VFdmVudDo6aW50ZXJmYWNlTmFtZSk6
CisgICAgICAgICogc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaDoKKyAgICAgICAgKiBz
dG9yYWdlL1N0b3JhZ2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlRXZlbnQ6
OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZUV2ZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR1pvb21FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdab29tRXZl
bnQ6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHN2Zy9TVkdab29tRXZlbnQuaDoKKyAgICAg
ICAgKiB3ZWJhdWRpby9BdWRpb1Byb2Nlc3NpbmdFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1Byb2Nlc3NpbmdFdmVudDo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICogd2ViYXVk
aW8vQXVkaW9Qcm9jZXNzaW5nRXZlbnQuaDoKKyAgICAgICAgKiB3ZWJhdWRpby9PZmZsaW5lQXVk
aW9Db21wbGV0aW9uRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T2ZmbGluZUF1ZGlvQ29t
cGxldGlvbkV2ZW50OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiB3ZWJhdWRpby9PZmZsaW5l
QXVkaW9Db21wbGV0aW9uRXZlbnQuaDoKKyAgICAgICAgKiB3ZWJzb2NrZXRzL0Nsb3NlRXZlbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb3NlRXZlbnQ6OmludGVyZmFjZU5hbWUpOgorICAgICAg
ICAqIHhtbC9YTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudDo6aW50ZXJmYWNlTmFtZSk6CisKIDIwMTEtMTAt
MTkgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBUaGUgIngiIGluICI5ODBweCB4IDM2cHgiIGxvb2tzIHdlaXJkIGluIHRo
ZSBpbnNwZWN0b3Igbm9kZSBjYWxsb3V0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHJldmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQkod29ya2luZyBjb3B5KQpAQCAtMTAsNiArMTAsOCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMg
Kz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTVmFsdWVLZXl3b3Jkcy5jcHAgXAogCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29sb3JEYXRhLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9FdmVudEZhY3RvcnkuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0V2ZW50SGVh
ZGVycy5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0V2ZW50SW50ZXJmYWNlcy5oIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0hUTUxFbGVtZW50RmFjdG9yeS5jcHAgXAogCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSFRNTEVsZW1lbnRGYWN0b3J5LmggXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSFRNTEVudGl0eVRhYmxlLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lv
biA5NzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpA
QCAtNDA5LDYgKzQwOSw4IEBACiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9ET01YUGF0aEV4cHJlc3Npb24uaCcsCiAgICAgICAgICAgICAnPChQUk9E
VUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9ET01YUGF0aE5TUmVzb2x2ZXIuaCcsCiAg
ICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9ET01YUGF0
aFJlc3VsdC5oJywKKyAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0V2ZW50SGVhZGVycy5oJywKKyAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0V2ZW50SW50ZXJmYWNlcy5oJywKICAgICAgICAgICAgICc8KFBS
T0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0hUTUxOYW1lcy5oJywKICAgICAgICAg
ICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ1NTU3R5bGVEZWNs
YXJhdGlvbi5oJywKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTRE9NV2luZG93LmgnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAv
V2ViQ29yZS5neXAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2Vi
Q29yZS5neXAJKHJldmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAv
V2ViQ29yZS5neXAJKHdvcmtpbmcgY29weSkKQEAgLTcwNyw2ICs3MDcsOCBAQAogICAgICAgICAg
IF0sCiAgICAgICAgICAgJ291dHB1dHMnOiBbCiAgICAgICAgICAgICAnPChTSEFSRURfSU5URVJN
RURJQVRFX0RJUikvd2Via2l0L0V2ZW50RmFjdG9yeS5jcHAnLAorICAgICAgICAgICAgJzwoU0hB
UkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmtpdC9FdmVudEhlYWRlcnMuaCcsCisgICAgICAgICAg
ICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0L0V2ZW50SW50ZXJmYWNlcy5oJywK
ICAgICAgICAgICBdLAogICAgICAgICAgICdhY3Rpb24nOiBbCiAgICAgICAgICAgICAncHl0aG9u
JywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CShyZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01NDYsNiArNTQ2LDE0IEBACiAJCQkJPgogCQkJ
PC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcRXZlbnRIZWFkZXJzLmgiCisJ
CQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcRXZlbnRJbnRl
cmZhY2VzLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJj
ZXNcSFRNTEVsZW1lbnRGYWN0b3J5LmgiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gOTc5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTk3LDEwICs5NywxMCBAQAogCQkwNzA5RkM0RTEwMjVE
RUUzMDA1OUNEQkEgLyogQWNjZXNzaWJpbGl0eVNsaWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwOUZDNEQxMDI1REVFMzAwNTlDREJBIC8qIEFj
Y2Vzc2liaWxpdHlTbGlkZXIuaCAqLzsgfTsKIAkJMDcyQzhCMTExMzFDNTE4NjAwQTRGQ0U5IC8q
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzZGMEQwOTEyQjgxOTI3MDBDMjZBQTQgLyogTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcCAqLzsgfTsKIAkJMDczNUVFNkEwRjQwQzVF
NDAwNEEyNjA0IC8qIE1lZGlhUGxheWVyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MzVFRTY5MEY0MEM1RTQwMDRBMjYwNCAvKiBNZWRpYVBs
YXllclByb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMDczQTNBRTMxNDJCQUZFMTAwOTc3QTRDIC8qIEpTVGV4dFRyYWNrQ3VzdG9tLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0EzQUUyMTQy
QkFGRTEwMDk3N0E0QyAvKiBKU1RleHRUcmFja0N1c3RvbS5jcHAgKi87IH07CiAJCTA3NTM4NjAy
MTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRDdWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NTM4NjAwMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNo
ZWRDdWVzLmNwcCAqLzsgfTsKIAkJMDc1Mzg2MDMxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZEN1
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NTM4
NjAxMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRDdWVzLmggKi87IH07CiAJCTA3NkYwRDBFMTJC
ODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NkYwRDBBMTJCODE5Mjcw
MEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaCAqLzsgfTsKLQkJMDcz
QTNBRTMxNDJCQUZFMTAwOTc3QTRDIC8qIEpTVGV4dFRyYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0EzQUUyMTQyQkFGRTEwMDk3
N0E0QyAvKiBKU1RleHRUcmFja0N1c3RvbS5jcHAgKi87IH07CiAJCTA3QjAxMTNGMTAzMjI0MjIw
MEZCREMzMyAvKiBBY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdCMDExM0UxMDMyMjQyMjAwRkJEQzMzIC8q
IEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmggKi87IH07CiAJCTA4MDZFNTdBMTI4OTMwNDUw
MDdDRUQzMiAvKiBTVkdNYXRyaXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA4MDZFNTc5MTI4OTMwNDUwMDdDRUQzMiAvKiBTVkdNYXRyaXguaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODBFNDkyNjEy
NTVGM0JEMDBFRkNBMjcgLyogU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODBFNDkyMjEyNTVGM0JEMDBF
RkNBMjcgLyogU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmggKi87IH07CkBAIC0zMjEzLDYg
KzMyMTMsOCBAQAogCQk5NzA1OTk3ODEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2su
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MDU5OTc0
MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3MDU5OTc5MTA3RDk3NTIwMEE1MEE3QyAv
KiBQb2xpY3lDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk3MDU5OTc1MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmNwcCAq
LzsgfTsKIAkJOTcwNTk5N0ExMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MDU5OTc2MTA3RDk3
NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTcwQjcyOEExNDRGRkFDNjAwRjAwQTM3IC8qIEV2ZW50
SW50ZXJmYWNlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTcwQjcyODkxNDRGRkFDNjAwRjAwQTM3IC8qIEV2ZW50SW50ZXJmYWNlcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk3MEI3MkE2MTQ1MDA4
RUIwMEYwMEEzNyAvKiBFdmVudEhlYWRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk3MEI3MkE1MTQ1MDA4RUIwMEYwMEEzNyAvKiBFdmVudEhlYWRl
cnMuaCAqLzsgfTsKIAkJOTcxNDkxREExMkZENjVFODAwMUJGRUIxIC8qIFVSTFN0cmluZy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcxNDkxRDkxMkZE
NjVFODAwMUJGRUIxIC8qIFVSTFN0cmluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTk3MjA1QUFGMTIzOTI4Q0EwMEIxNzM4MCAvKiBGVFBEaXJl
Y3RvcnlEb2N1bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5NzIwNUFBRDEyMzkyOENBMDBCMTczODAgLyogRlRQRGlyZWN0b3J5RG9jdW1lbnQu
Y3BwICovOyB9OwogCQk5NzIwNUFCMDEyMzkyOENBMDBCMTczODAgLyogRlRQRGlyZWN0b3J5RG9j
dW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3
MjA1QUFFMTIzOTI4Q0EwMEIxNzM4MCAvKiBGVFBEaXJlY3RvcnlEb2N1bWVudC5oICovOyB9OwpA
QCAtNzEyNCwxMiArNzEyNiwxMiBAQAogCQkwNzA5RkM0RDEwMjVERUUzMDA1OUNEQkEgLyogQWNj
ZXNzaWJpbGl0eVNsaWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nl
c3NpYmlsaXR5U2xpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MEREOEY1
MEYwMTg2ODAwMDcyN0RFQiAvKiBtZWRpYUNvbnRyb2xzLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBtZWRpYUNvbnRyb2xzLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcz
NUVFNjkwRjQwQzVFNDAwNEEyNjA0IC8qIE1lZGlhUGxheWVyUHJveHkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwNzNBM0FFMjE0MkJBRkUxMDA5NzdBNEMgLyogSlNUZXh0VHJhY2tDdXN0
b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUZXh0VHJhY2tD
dXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzUzODYwMDE0NDg5RTk4
MDBCNzg0NTIgLyogQ2FjaGVkQ3Vlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDYWNoZWRDdWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc1
Mzg2MDExNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZEN1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FjaGVkQ3Vlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwNzZGMEQwOTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3
NkYwRDBBMTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3OUY1RTRCMEYzQkVC
RUEwMDVFMDc4MiAvKiBNZWRpYVBsYXllclByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTA3M0EzQUUyMTQyQkFGRTEwMDk3N0E0QyAvKiBKU1RleHRUcmFja0N1c3RvbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1RleHRUcmFja0N1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QUZFNTkwMEYxNDQ2QkQwMDg0MTYx
NyAvKiBtZWRpYUNvbnRyb2xzUXVpY2tUaW1lLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRo
ID0gbWVkaWFDb250cm9sc1F1aWNrVGltZS5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA3QjAxMTNFMTAzMjI0MjIwMEZCREMzMyAvKiBBY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9s
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5TWVkaWFD
b250cm9scy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODA2RTU3OTEyODkzMDQ1
MDA3Q0VEMzIgLyogU1ZHTWF0cml4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNWR01hdHJpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA0MDEsNiArMTA0
MDMsOCBAQAogCQk5NzA1OTk3NDEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2suaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9saWN5Q2FsbGJhY2suaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcwNTk5NzUxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGlj
eUNoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9saWN5
Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3MDU5OTc2MTA3RDk3
NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBvbGljeUNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTcw
QjcyODkxNDRGRkFDNjAwRjAwQTM3IC8qIEV2ZW50SW50ZXJmYWNlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudEludGVyZmFjZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTcwQjcyQTUxNDUwMDhFQjAwRjAwQTM3IC8qIEV2ZW50SGVhZGVycy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudEhlYWRlcnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcxNDkxRDkxMkZENjVFODAwMUJGRUIxIC8qIFVSTFN0cmlu
Zy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxTdHJpbmcuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcyMDVBQUQxMjM5MjhDQTAwQjE3MzgwIC8qIEZUUERp
cmVjdG9yeURvY3VtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEZUUERpcmVjdG9yeURvY3VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTcyMDVBQUUxMjM5MjhDQTAwQjE3MzgwIC8qIEZUUERpcmVjdG9yeURvY3VtZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZUUERpcmVjdG9yeURvY3VtZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTI3Niw2ICsxNTI4MCw4IEBACiAJCQkJNjU2NTgx
NDcwOUQxMzA0MzAwMEU2MUQ3IC8qIENTU1ZhbHVlS2V5d29yZHMuZ3BlcmYgKi8sCiAJCQkJNjU2
NTgxNDgwOUQxMzA0MzAwMEU2MUQ3IC8qIENTU1ZhbHVlS2V5d29yZHMuaCAqLywKIAkJCQk5NzY2
NTA0RTE0NEZCRkZFMDBGNkJCNTEgLyogRXZlbnRGYWN0b3J5LmNwcCAqLywKKwkJCQk5NzBCNzJB
NTE0NTAwOEVCMDBGMDBBMzcgLyogRXZlbnRIZWFkZXJzLmggKi8sCisJCQkJOTcwQjcyODkxNDRG
RkFDNjAwRjAwQTM3IC8qIEV2ZW50SW50ZXJmYWNlcy5oICovLAogCQkJCUExN0M4MTIwMEYyQTVD
RjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwICovLAogCQkJCUExN0M4MTIxMEYy
QTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuaCAqLywKIAkJCQlBOEJDMDQ5MTEy
MTRGNjk2MDBCNUYxMjIgLyogSFRNTEVudGl0eVRhYmxlLmNwcCAqLywKQEAgLTI0Njk2LDYgKzI0
NzAyLDggQEAKIAkJCQk5NzY2NTAxMzE0NEZBQTQyMDBGNkJCNTEgLyogRXZlbnRGYWN0b3J5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMEVFMERGNjE0NEY4MjU1MDBGODBCMEQgLyogV2ViR0xEZWJ1
Z1JlbmRlcmVySW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTBFRTBERjgxNDRGODI1NTAwRjgw
QjBEIC8qIFdlYkdMRGVidWdTaGFkZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NzBCNzI4QTE0
NEZGQUM2MDBGMDBBMzcgLyogRXZlbnRJbnRlcmZhY2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5
NzBCNzJBNjE0NTAwOEVCMDBGMDBBMzcgLyogRXZlbnRIZWFkZXJzLmggaW4gSGVhZGVycyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCShy
ZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw5MiArMzAsMTQgQEAKICNpbmNsdWRlICJKU0V2
ZW50LmgiCiAKICNpbmNsdWRlICJDbGlwYm9hcmQuaCIKLSNpbmNsdWRlICJDb21wb3NpdGlvbkV2
ZW50LmgiCi0jaW5jbHVkZSAiQ3VzdG9tRXZlbnQuaCIKLSNpbmNsdWRlICJEZXZpY2VNb3Rpb25F
dmVudC5oIgotI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJF
dmVudC5oIgotI2luY2x1ZGUgIkpTQmVmb3JlTG9hZEV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnRI
ZWFkZXJzLmgiCisjaW5jbHVkZSAiRXZlbnRJbnRlcmZhY2VzLmgiCisjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgogI2luY2x1ZGUgIkpTQ2xpcGJvYXJkLmgiCi0jaW5jbHVkZSAiSlNDdXN0b21FdmVu
dC5oIgotI2luY2x1ZGUgIkpTQ29tcG9zaXRpb25FdmVudC5oIgotI2luY2x1ZGUgIkpTRGV2aWNl
TW90aW9uRXZlbnQuaCIKLSNpbmNsdWRlICJKU0RldmljZU9yaWVudGF0aW9uRXZlbnQuaCIKLSNp
bmNsdWRlICJKU0Vycm9yRXZlbnQuaCIKLSNpbmNsdWRlICJKU0hhc2hDaGFuZ2VFdmVudC5oIgot
I2luY2x1ZGUgIkpTS2V5Ym9hcmRFdmVudC5oIgotI2luY2x1ZGUgIkpTTWVzc2FnZUV2ZW50Lmgi
Ci0jaW5jbHVkZSAiSlNNb3VzZUV2ZW50LmgiCi0jaW5jbHVkZSAiSlNNdXRhdGlvbkV2ZW50Lmgi
Ci0jaW5jbHVkZSAiSlNPdmVyZmxvd0V2ZW50LmgiCi0jaW5jbHVkZSAiSlNQYWdlVHJhbnNpdGlv
bkV2ZW50LmgiCi0jaW5jbHVkZSAiSlNQb3BTdGF0ZUV2ZW50LmgiCi0jaW5jbHVkZSAiSlNQcm9n
cmVzc0V2ZW50LmgiCi0jaW5jbHVkZSAiSlNTcGVlY2hJbnB1dEV2ZW50LmgiCi0jaW5jbHVkZSAi
SlNTdG9yYWdlRXZlbnQuaCIKLSNpbmNsdWRlICJKU1RleHRFdmVudC5oIgotI2luY2x1ZGUgIkpT
VUlFdmVudC5oIgotI2luY2x1ZGUgIkpTV2ViS2l0QW5pbWF0aW9uRXZlbnQuaCIKLSNpbmNsdWRl
ICJKU1dlYktpdFRyYW5zaXRpb25FdmVudC5oIgotI2luY2x1ZGUgIkpTV2hlZWxFdmVudC5oIgot
I2luY2x1ZGUgIkpTWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmgiCi0jaW5jbHVkZSAiQmVm
b3JlTG9hZEV2ZW50LmgiCi0jaW5jbHVkZSAiRXJyb3JFdmVudC5oIgotI2luY2x1ZGUgIkhhc2hD
aGFuZ2VFdmVudC5oIgotI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKLSNpbmNsdWRlICJNZXNz
YWdlRXZlbnQuaCIKLSNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCi0jaW5jbHVkZSAiTXV0YXRpb25F
dmVudC5oIgotI2luY2x1ZGUgIk92ZXJmbG93RXZlbnQuaCIKLSNpbmNsdWRlICJQYWdlVHJhbnNp
dGlvbkV2ZW50LmgiCi0jaW5jbHVkZSAiUG9wU3RhdGVFdmVudC5oIgotI2luY2x1ZGUgIlByb2dy
ZXNzRXZlbnQuaCIKLSNpbmNsdWRlICJTcGVlY2hJbnB1dEV2ZW50LmgiCi0jaW5jbHVkZSAiU3Rv
cmFnZUV2ZW50LmgiCi0jaW5jbHVkZSAiVGV4dEV2ZW50LmgiCi0jaW5jbHVkZSAiVUlFdmVudC5o
IgotI2luY2x1ZGUgIldlYktpdEFuaW1hdGlvbkV2ZW50LmgiCi0jaW5jbHVkZSAiV2ViS2l0VHJh
bnNpdGlvbkV2ZW50LmgiCi0jaW5jbHVkZSAiV2hlZWxFdmVudC5oIgotI2luY2x1ZGUgIlhNTEh0
dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+Ci0K
LSNpZiBFTkFCTEUoU1ZHKQotI2luY2x1ZGUgIkpTU1ZHWm9vbUV2ZW50LmgiCi0jaW5jbHVkZSAi
U1ZHWm9vbUV2ZW50LmgiCi0jZW5kaWYKLQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0jaW5j
bHVkZSAiSlNUb3VjaEV2ZW50LmgiCi0jaW5jbHVkZSAiVG91Y2hFdmVudC5oIgotI2VuZGlmCi0K
LSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSNpbmNsdWRlICJJREJWZXJzaW9uQ2hhbmdl
RXZlbnQuaCIKLSNpbmNsdWRlICJKU0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oIgotI2VuZGlmCi0K
LSNpZiBFTkFCTEUoV0VCX0FVRElPKQotI2luY2x1ZGUgIkF1ZGlvUHJvY2Vzc2luZ0V2ZW50Lmgi
Ci0jaW5jbHVkZSAiSlNBdWRpb1Byb2Nlc3NpbmdFdmVudC5oIgotI2luY2x1ZGUgIkpTT2ZmbGlu
ZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmgiCi0jaW5jbHVkZSAiT2ZmbGluZUF1ZGlvQ29tcGxldGlv
bkV2ZW50LmgiCi0jZW5kaWYKLQotI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLSNpbmNsdWRlICJD
bG9zZUV2ZW50LmgiCi0jaW5jbHVkZSAiSlNDbG9zZUV2ZW50LmgiCi0jZW5kaWYKLQotI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCi0jaW5jbHVkZSAiSlNNZWRpYVN0cmVhbUV2ZW50LmgiCi0jaW5j
bHVkZSAiTWVkaWFTdHJlYW1FdmVudC5oIgotI2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VCR0wpCi0j
aW5jbHVkZSAiSlNXZWJHTENvbnRleHRFdmVudC5oIgotI2luY2x1ZGUgIldlYkdMQ29udGV4dEV2
ZW50LmgiCi0jZW5kaWYKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21pY1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCkBAIC0xMjYsNiAr
NDgsMTcgQEAgSlNWYWx1ZSBKU0V2ZW50OjpjbGlwYm9hcmREYXRhKEV4ZWNTdGF0ZQogICAgIHJl
dHVybiBpbXBsKCktPmlzQ2xpcGJvYXJkRXZlbnQoKSA/IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0
KCksIGltcGwoKS0+Y2xpcGJvYXJkRGF0YSgpKSA6IGpzVW5kZWZpbmVkKCk7CiB9CiAKKyNkZWZp
bmUgREVDTEFSRV9FVkVOVF9XUkFQUEVSKGludGVyZmFjZU5hbWUpIFwKKyAgICBzdGF0aWMgSlNE
T01XcmFwcGVyKiBjcmVhdGUjI2ludGVyZmFjZU5hbWUjI1dyYXBwZXIoRXhlY1N0YXRlKiBleGVj
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFdmVudCogZXZlbnQpIFwKKyAgICB7
IFwKKyAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3Qs
IGludGVyZmFjZU5hbWUsIGV2ZW50KTsgXAorICAgIH0gXAorCitET01fRVZFTlRfSU5URVJGQUNF
U19GT1JfRUFDSChERUNMQVJFX0VWRU5UX1dSQVBQRVIpCisKKyNkZWZpbmUgQUREX1dSQVBQRVJf
VE9fTUFQKGludGVyZmFjZU5hbWUpIFwKKyAgICBtYXAuYWRkKGV2ZW50TmFtZXMoKS5pbnRlcmZh
Y2VGb3IjI2ludGVyZmFjZU5hbWUuaW1wbCgpLCBjcmVhdGUjI2ludGVyZmFjZU5hbWUjI1dyYXBw
ZXIpOworCiBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFdmVudCogZXZlbnQpCiB7CiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFz
c2VydGlvbnNPbmx5KTsKQEAgLTEzNyw5NCArNzAsMTkgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0
ZSogZXhlYywgSlNET01HbG9iYQogICAgIGlmICh3cmFwcGVyKQogICAgICAgICByZXR1cm4gd3Jh
cHBlcjsKIAotICAgIGlmIChldmVudC0+aXNVSUV2ZW50KCkpIHsKLSAgICAgICAgaWYgKGV2ZW50
LT5pc0tleWJvYXJkRXZlbnQoKSkKLSAgICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dS
QVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBLZXlib2FyZEV2ZW50LCBldmVudCk7Ci0gICAgICAg
IGVsc2UgaWYgKGV2ZW50LT5pc1RleHRFdmVudCgpKQotICAgICAgICAgICAgd3JhcHBlciA9IENS
RUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIFRleHRFdmVudCwgZXZlbnQpOwot
ICAgICAgICBlbHNlIGlmIChldmVudC0+aXNNb3VzZUV2ZW50KCkpCi0gICAgICAgICAgICB3cmFw
cGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgTW91c2VFdmVudCwg
ZXZlbnQpOwotICAgICAgICBlbHNlIGlmIChldmVudC0+aXNXaGVlbEV2ZW50KCkpCi0gICAgICAg
ICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgV2hl
ZWxFdmVudCwgZXZlbnQpOwotI2lmIEVOQUJMRShTVkcpCi0gICAgICAgIGVsc2UgaWYgKGV2ZW50
LT5pc1NWR1pvb21FdmVudCgpKQotICAgICAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JB
UFBFUihleGVjLCBnbG9iYWxPYmplY3QsIFNWR1pvb21FdmVudCwgZXZlbnQpOwotI2VuZGlmCi0g
ICAgICAgIGVsc2UgaWYgKGV2ZW50LT5pc0NvbXBvc2l0aW9uRXZlbnQoKSkKLSAgICAgICAgICAg
IHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBDb21wb3Np
dGlvbkV2ZW50LCBldmVudCk7Ci0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICAgICAgZWxz
ZSBpZiAoZXZlbnQtPmlzVG91Y2hFdmVudCgpKQotICAgICAgICAgICAgd3JhcHBlciA9IENSRUFU
RV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIFRvdWNoRXZlbnQsIGV2ZW50KTsKLSNl
bmRpZgotICAgICAgICBlbHNlCi0gICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQ
UEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgVUlFdmVudCwgZXZlbnQpOwotICAgIH0gZWxzZSBpZiAo
ZXZlbnQtPmlzTXV0YXRpb25FdmVudCgpKQotICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9X
UkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgTXV0YXRpb25FdmVudCwgZXZlbnQpOwotICAgIGVs
c2UgaWYgKGV2ZW50LT5pc092ZXJmbG93RXZlbnQoKSkKLSAgICAgICAgd3JhcHBlciA9IENSRUFU
RV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIE92ZXJmbG93RXZlbnQsIGV2ZW50KTsK
LSAgICBlbHNlIGlmIChldmVudC0+aXNNZXNzYWdlRXZlbnQoKSkKLSAgICAgICAgd3JhcHBlciA9
IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIE1lc3NhZ2VFdmVudCwgZXZl
bnQpOwotICAgIGVsc2UgaWYgKGV2ZW50LT5pc1BhZ2VUcmFuc2l0aW9uRXZlbnQoKSkKLSAgICAg
ICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIFBhZ2VU
cmFuc2l0aW9uRXZlbnQsIGV2ZW50KTsKLSAgICBlbHNlIGlmIChldmVudC0+aXNQcm9ncmVzc0V2
ZW50KCkpIHsKLSAgICAgICAgaWYgKGV2ZW50LT5pc1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVu
dCgpKQotICAgICAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9i
YWxPYmplY3QsIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudCwgZXZlbnQpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgUHJvZ3Jlc3NFdmVudCwgZXZlbnQpOwotICAgIH0gZWxzZSBpZiAoZXZlbnQtPmlz
QmVmb3JlTG9hZEV2ZW50KCkpCi0gICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIo
ZXhlYywgZ2xvYmFsT2JqZWN0LCBCZWZvcmVMb2FkRXZlbnQsIGV2ZW50KTsKLSAgICBlbHNlIGlm
IChldmVudC0+aXNTdG9yYWdlRXZlbnQoKSkKLSAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01f
V1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIFN0b3JhZ2VFdmVudCwgZXZlbnQpOwotI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQotICAgIGVsc2UgaWYgKGV2ZW50LT5pc0lEQlZlcnNpb25D
aGFuZ2VFdmVudCgpKQotICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMs
IGdsb2JhbE9iamVjdCwgSURCVmVyc2lvbkNoYW5nZUV2ZW50LCBldmVudCk7Ci0jZW5kaWYKLSAg
ICBlbHNlIGlmIChldmVudC0+aXNXZWJLaXRBbmltYXRpb25FdmVudCgpKQotICAgICAgICB3cmFw
cGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgV2ViS2l0QW5pbWF0
aW9uRXZlbnQsIGV2ZW50KTsKLSAgICBlbHNlIGlmIChldmVudC0+aXNXZWJLaXRUcmFuc2l0aW9u
RXZlbnQoKSkKLSAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9i
YWxPYmplY3QsIFdlYktpdFRyYW5zaXRpb25FdmVudCwgZXZlbnQpOwotI2lmIEVOQUJMRShXT1JL
RVJTKQotICAgIGVsc2UgaWYgKGV2ZW50LT5pc0Vycm9yRXZlbnQoKSkKLSAgICAgICAgd3JhcHBl
ciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIEVycm9yRXZlbnQsIGV2
ZW50KTsKLSNlbmRpZgotICAgIGVsc2UgaWYgKGV2ZW50LT5pc0hhc2hDaGFuZ2VFdmVudCgpKQot
ICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwg
SGFzaENoYW5nZUV2ZW50LCBldmVudCk7Ci0gICAgZWxzZSBpZiAoZXZlbnQtPmlzUG9wU3RhdGVF
dmVudCgpKQotICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgUG9wU3RhdGVFdmVudCwgZXZlbnQpOwotICAgIGVsc2UgaWYgKGV2ZW50LT5pc0N1
c3RvbUV2ZW50KCkpCi0gICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywg
Z2xvYmFsT2JqZWN0LCBDdXN0b21FdmVudCwgZXZlbnQpOwotI2lmIEVOQUJMRShERVZJQ0VfT1JJ
RU5UQVRJT04pCi0gICAgZWxzZSBpZiAoZXZlbnQtPmlzRGV2aWNlTW90aW9uRXZlbnQoKSkKLSAg
ICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIERl
dmljZU1vdGlvbkV2ZW50LCBldmVudCk7Ci0gICAgZWxzZSBpZiAoZXZlbnQtPmlzRGV2aWNlT3Jp
ZW50YXRpb25FdmVudCgpKQotICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4
ZWMsIGdsb2JhbE9iamVjdCwgRGV2aWNlT3JpZW50YXRpb25FdmVudCwgZXZlbnQpOwotI2VuZGlm
Ci0jaWYgRU5BQkxFKFdFQl9BVURJTykKLSAgICBlbHNlIGlmIChldmVudC0+aXNBdWRpb1Byb2Nl
c3NpbmdFdmVudCgpKQotICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMs
IGdsb2JhbE9iamVjdCwgQXVkaW9Qcm9jZXNzaW5nRXZlbnQsIGV2ZW50KTsKLSAgICBlbHNlIGlm
IChldmVudC0+aXNPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQoKSkKLSAgICAgICAgd3JhcHBl
ciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIE9mZmxpbmVBdWRpb0Nv
bXBsZXRpb25FdmVudCwgZXZlbnQpOwotI2VuZGlmCi0jaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkK
LSAgICBlbHNlIGlmIChldmVudC0+aXNTcGVlY2hJbnB1dEV2ZW50KCkpCi0gICAgICAgIHdyYXBw
ZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBTcGVlY2hJbnB1dEV2
ZW50LCBldmVudCk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0gICAgZWxzZSBp
ZiAoZXZlbnQtPmlzQ2xvc2VFdmVudCgpKQotICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9X
UkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgQ2xvc2VFdmVudCwgZXZlbnQpOwotI2VuZGlmCi0j
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBlbHNlIGlmIChldmVudC0+aXNNZWRpYVN0cmVh
bUV2ZW50KCkpCi0gICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xv
YmFsT2JqZWN0LCBNZWRpYVN0cmVhbUV2ZW50LCBldmVudCk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUo
V0VCR0wpCi0gICAgZWxzZSBpZiAoZXZlbnQtPmlzV2ViR0xDb250ZXh0RXZlbnQoKSkKLSAgICAg
ICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIFdlYkdM
Q29udGV4dEV2ZW50LCBldmVudCk7Ci0jZW5kaWYKLSAgICBlbHNlCi0gICAgICAgIHdyYXBwZXIg
PSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBFdmVudCwgZXZlbnQpOwor
ICAgIHR5cGVkZWYgSlNET01XcmFwcGVyKiAoKkNyZWF0ZUV2ZW50V3JhcHBlckZ1bmN0aW9uKShF
eGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIEV2ZW50Kik7CisgICAgdHlwZWRlZiBIYXNo
TWFwPFdURjo6QXRvbWljU3RyaW5nSW1wbCosIENyZWF0ZUV2ZW50V3JhcHBlckZ1bmN0aW9uPiBG
dW5jdGlvbk1hcDsKKworICAgIERFRklORV9TVEFUSUNfTE9DQUwoRnVuY3Rpb25NYXAsIG1hcCwg
KCkpOworICAgIGlmIChtYXAuaXNFbXB0eSgpKSB7CisgICAgICAgIERPTV9FVkVOVF9JTlRFUkZB
Q0VTX0ZPUl9FQUNIKEFERF9XUkFQUEVSX1RPX01BUCkKKyAgICB9CisKKyAgICBDcmVhdGVFdmVu
dFdyYXBwZXJGdW5jdGlvbiBjcmVhdGVXcmFwcGVyRnVuY3Rpb24gPSBtYXAuZ2V0KGV2ZW50LT5p
bnRlcmZhY2VOYW1lKCkuaW1wbCgpKTsKKyAgICBpZiAoY3JlYXRlV3JhcHBlckZ1bmN0aW9uKQor
ICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBlckZ1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwg
ZXZlbnQpOwogCi0gICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIENSRUFURV9ET01fV1JB
UFBFUihleGVjLCBnbG9iYWxPYmplY3QsIEV2ZW50LCBldmVudCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2
ZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhFdmVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMyw1MCArMzMsMTMgQEAKIAogI2luY2x1ZGUgIkNsaXBib2FyZC5oIgogI2luY2x1ZGUgIkNs
aXBib2FyZEV2ZW50LmgiCi0jaW5jbHVkZSAiQ3VzdG9tRXZlbnQuaCIKICNpbmNsdWRlICJFdmVu
dC5oIgotI2luY2x1ZGUgIlY4QmVmb3JlTG9hZEV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnRIZWFk
ZXJzLmgiCisjaW5jbHVkZSAiRXZlbnRJbnRlcmZhY2VzLmgiCisjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4Q2xpcGJvYXJkLmgiCi0j
aW5jbHVkZSAiVjhDbG9zZUV2ZW50LmgiCi0jaW5jbHVkZSAiVjhDb21wb3NpdGlvbkV2ZW50Lmgi
Ci0jaW5jbHVkZSAiVjhDdXN0b21FdmVudC5oIgotI2luY2x1ZGUgIlY4RGV2aWNlTW90aW9uRXZl
bnQuaCIKLSNpbmNsdWRlICJWOERldmljZU9yaWVudGF0aW9uRXZlbnQuaCIKLSNpbmNsdWRlICJW
OEVycm9yRXZlbnQuaCIKLSNpbmNsdWRlICJWOEhhc2hDaGFuZ2VFdmVudC5oIgotI2luY2x1ZGUg
IlY4SURCVmVyc2lvbkNoYW5nZUV2ZW50LmgiCi0jaW5jbHVkZSAiVjhLZXlib2FyZEV2ZW50Lmgi
Ci0jaW5jbHVkZSAiVjhNZXNzYWdlRXZlbnQuaCIKLSNpbmNsdWRlICJWOE1vdXNlRXZlbnQuaCIK
LSNpbmNsdWRlICJWOE11dGF0aW9uRXZlbnQuaCIKLSNpbmNsdWRlICJWOE92ZXJmbG93RXZlbnQu
aCIKLSNpbmNsdWRlICJWOFBhZ2VUcmFuc2l0aW9uRXZlbnQuaCIKLSNpbmNsdWRlICJWOFBvcFN0
YXRlRXZlbnQuaCIKLSNpbmNsdWRlICJWOFByb2dyZXNzRXZlbnQuaCIKICNpbmNsdWRlICJWOFBy
b3h5LmgiCi0jaW5jbHVkZSAiVjhTcGVlY2hJbnB1dEV2ZW50LmgiCi0jaW5jbHVkZSAiVjhTdG9y
YWdlRXZlbnQuaCIKLSNpbmNsdWRlICJWOFRleHRFdmVudC5oIgotI2luY2x1ZGUgIlY4VG91Y2hF
dmVudC5oIgotI2luY2x1ZGUgIlY4VUlFdmVudC5oIgotI2luY2x1ZGUgIlY4V2ViS2l0QW5pbWF0
aW9uRXZlbnQuaCIKLSNpbmNsdWRlICJWOFdlYktpdFRyYW5zaXRpb25FdmVudC5oIgotI2luY2x1
ZGUgIlY4V2hlZWxFdmVudC5oIgotI2luY2x1ZGUgIlY4WE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2
ZW50LmgiCi0KLSNpZiBFTkFCTEUoU1ZHKQotI2luY2x1ZGUgIlY4U1ZHWm9vbUV2ZW50LmgiCi0j
ZW5kaWYKLQotI2lmIEVOQUJMRShXRUJfQVVESU8pCi0jaW5jbHVkZSAiVjhBdWRpb1Byb2Nlc3Np
bmdFdmVudC5oIgotI2luY2x1ZGUgIlY4T2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmgiCi0j
ZW5kaWYKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0jaW5jbHVkZSAiVjhNZWRpYVN0cmVh
bUV2ZW50LmgiCi0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDYsOTAgKzY5
LDM1IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEV2ZW50OjpjbGlwYm9hcmQKICAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCisjZGVmaW5lIERFQ0xBUkVfRVZFTlRfV1JBUFBFUihp
bnRlcmZhY2VOYW1lKSBcCisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4IyNp
bnRlcmZhY2VOYW1lKEV2ZW50KiBldmVudCkgXAorICAgIHsgXAorICAgICAgICByZXR1cm4gdG9W
OChzdGF0aWNfY2FzdDxpbnRlcmZhY2VOYW1lKj4oZXZlbnQpKTsgXAorICAgIH0gXAorCitET01f
RVZFTlRfSU5URVJGQUNFU19GT1JfRUFDSChERUNMQVJFX0VWRU5UX1dSQVBQRVIpCisKKyNkZWZp
bmUgQUREX1dSQVBQRVJfVE9fTUFQKGludGVyZmFjZU5hbWUpIFwKKyAgICBtYXAuYWRkKGV2ZW50
TmFtZXMoKS5pbnRlcmZhY2VGb3IjI2ludGVyZmFjZU5hbWUuaW1wbCgpLCB0b1Y4IyNpbnRlcmZh
Y2VOYW1lKTsKKwogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoRXZlbnQqIGltcGwpCiB7CiAg
ICAgaWYgKCFpbXBsKQogICAgICAgICByZXR1cm4gdjg6Ok51bGwoKTsKLSAgICBpZiAoaW1wbC0+
aXNVSUV2ZW50KCkpIHsKLSAgICAgICAgaWYgKGltcGwtPmlzS2V5Ym9hcmRFdmVudCgpKQotICAg
ICAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8S2V5Ym9hcmRFdmVudCo+KGltcGwpKTsK
LSAgICAgICAgaWYgKGltcGwtPmlzVGV4dEV2ZW50KCkpCi0gICAgICAgICAgICByZXR1cm4gdG9W
OChzdGF0aWNfY2FzdDxUZXh0RXZlbnQqPihpbXBsKSk7Ci0gICAgICAgIGlmIChpbXBsLT5pc01v
dXNlRXZlbnQoKSkKLSAgICAgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PE1vdXNlRXZl
bnQqPihpbXBsKSk7Ci0gICAgICAgIGlmIChpbXBsLT5pc1doZWVsRXZlbnQoKSkKLSAgICAgICAg
ICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PFdoZWVsRXZlbnQqPihpbXBsKSk7Ci0jaWYgRU5B
QkxFKFNWRykKLSAgICAgICAgaWYgKGltcGwtPmlzU1ZHWm9vbUV2ZW50KCkpCi0gICAgICAgICAg
ICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxTVkdab29tRXZlbnQqPihpbXBsKSk7Ci0jZW5kaWYK
LSAgICAgICAgaWYgKGltcGwtPmlzQ29tcG9zaXRpb25FdmVudCgpKQotICAgICAgICAgICAgcmV0
dXJuIHRvVjgoc3RhdGljX2Nhc3Q8Q29tcG9zaXRpb25FdmVudCo+KGltcGwpKTsKLSNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQotICAgICAgICBpZiAoaW1wbC0+aXNUb3VjaEV2ZW50KCkpCi0gICAg
ICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxUb3VjaEV2ZW50Kj4oaW1wbCkpOwotI2Vu
ZGlmCi0gICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PFVJRXZlbnQqPihpbXBsKSk7Ci0g
ICAgfQotICAgIGlmIChpbXBsLT5pc0hhc2hDaGFuZ2VFdmVudCgpKQotICAgICAgICByZXR1cm4g
dG9WOChzdGF0aWNfY2FzdDxIYXNoQ2hhbmdlRXZlbnQqPihpbXBsKSk7Ci0gICAgaWYgKGltcGwt
PmlzTXV0YXRpb25FdmVudCgpKQotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxNdXRh
dGlvbkV2ZW50Kj4oaW1wbCkpOwotICAgIGlmIChpbXBsLT5pc092ZXJmbG93RXZlbnQoKSkKLSAg
ICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8T3ZlcmZsb3dFdmVudCo+KGltcGwpKTsKLSAg
ICBpZiAoaW1wbC0+aXNNZXNzYWdlRXZlbnQoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGlj
X2Nhc3Q8TWVzc2FnZUV2ZW50Kj4oaW1wbCkpOwotICAgIGlmIChpbXBsLT5pc1BhZ2VUcmFuc2l0
aW9uRXZlbnQoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8UGFnZVRyYW5zaXRp
b25FdmVudCo+KGltcGwpKTsKLSAgICBpZiAoaW1wbC0+aXNQb3BTdGF0ZUV2ZW50KCkpCi0gICAg
ICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PFBvcFN0YXRlRXZlbnQqPihpbXBsKSk7Ci0gICAg
aWYgKGltcGwtPmlzUHJvZ3Jlc3NFdmVudCgpKSB7Ci0gICAgICAgIGlmIChpbXBsLT5pc1hNTEh0
dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudCgpKQotICAgICAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGlj
X2Nhc3Q8WE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50Kj4oaW1wbCkpOwotICAgICAgICByZXR1
cm4gdG9WOChzdGF0aWNfY2FzdDxQcm9ncmVzc0V2ZW50Kj4oaW1wbCkpOworCisgICAgdHlwZWRl
ZiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gKCpUb1Y4RnVuY3Rpb24pKEV2ZW50Kik7CisgICAgdHlw
ZWRlZiBIYXNoTWFwPFdURjo6QXRvbWljU3RyaW5nSW1wbCosIFRvVjhGdW5jdGlvbj4gRnVuY3Rp
b25NYXA7CisKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEZ1bmN0aW9uTWFwLCBtYXAsICgpKTsK
KyAgICBpZiAobWFwLmlzRW1wdHkoKSkgeworICAgICAgICBET01fRVZFTlRfSU5URVJGQUNFU19G
T1JfRUFDSChBRERfV1JBUFBFUl9UT19NQVApCiAgICAgfQotICAgIGlmIChpbXBsLT5pc1dlYktp
dEFuaW1hdGlvbkV2ZW50KCkpCi0gICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PFdlYktp
dEFuaW1hdGlvbkV2ZW50Kj4oaW1wbCkpOwotICAgIGlmIChpbXBsLT5pc1dlYktpdFRyYW5zaXRp
b25FdmVudCgpKQotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxXZWJLaXRUcmFuc2l0
aW9uRXZlbnQqPihpbXBsKSk7Ci0jaWYgRU5BQkxFKFdPUktFUlMpCi0gICAgaWYgKGltcGwtPmlz
RXJyb3JFdmVudCgpKQotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxFcnJvckV2ZW50
Kj4oaW1wbCkpOwotI2VuZGlmCi0gICAgaWYgKGltcGwtPmlzU3RvcmFnZUV2ZW50KCkpCi0gICAg
ICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PFN0b3JhZ2VFdmVudCo+KGltcGwpKTsKLSNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBpZiAoaW1wbC0+aXNJREJWZXJzaW9uQ2hhbmdl
RXZlbnQoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8SURCVmVyc2lvbkNoYW5n
ZUV2ZW50Kj4oaW1wbCkpOwotI2VuZGlmCi0gICAgaWYgKGltcGwtPmlzQmVmb3JlTG9hZEV2ZW50
KCkpCi0gICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PEJlZm9yZUxvYWRFdmVudCo+KGlt
cGwpKTsKLSNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQotICAgIGlmIChpbXBsLT5pc0Rl
dmljZU1vdGlvbkV2ZW50KCkpCi0gICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PERldmlj
ZU1vdGlvbkV2ZW50Kj4oaW1wbCkpOwotICAgIGlmIChpbXBsLT5pc0RldmljZU9yaWVudGF0aW9u
RXZlbnQoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8RGV2aWNlT3JpZW50YXRp
b25FdmVudCo+KGltcGwpKTsKLSNlbmRpZgotI2lmIEVOQUJMRShXRUJfQVVESU8pCi0gICAgaWYg
KGltcGwtPmlzQXVkaW9Qcm9jZXNzaW5nRXZlbnQoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoc3Rh
dGljX2Nhc3Q8QXVkaW9Qcm9jZXNzaW5nRXZlbnQqPihpbXBsKSk7Ci0gICAgaWYgKGltcGwtPmlz
T2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50KCkpCi0gICAgICAgIHJldHVybiB0b1Y4KHN0YXRp
Y19jYXN0PE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudCo+KGltcGwpKTsKLSNlbmRpZgotI2lm
IEVOQUJMRShJTlBVVF9TUEVFQ0gpCi0gICAgaWYgKGltcGwtPmlzU3BlZWNoSW5wdXRFdmVudCgp
KQotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxTcGVlY2hJbnB1dEV2ZW50Kj4oaW1w
bCkpOwotI2VuZGlmCi0gICAgaWYgKGltcGwtPmlzQ3VzdG9tRXZlbnQoKSkKLSAgICAgICAgcmV0
dXJuIHRvVjgoc3RhdGljX2Nhc3Q8Q3VzdG9tRXZlbnQqPihpbXBsKSk7Ci0jaWYgRU5BQkxFKFdF
Ql9TT0NLRVRTKQotICAgIGlmIChpbXBsLT5pc0Nsb3NlRXZlbnQoKSkKLSAgICAgICAgcmV0dXJu
IHRvVjgoc3RhdGljX2Nhc3Q8Q2xvc2VFdmVudCo+KGltcGwpKTsKLSNlbmRpZgotI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCi0gICAgaWYgKGltcGwtPmlzTWVkaWFTdHJlYW1FdmVudCgpKQotICAg
ICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxNZWRpYVN0cmVhbUV2ZW50Kj4oaW1wbCkpOwot
I2VuZGlmCisKKyAgICBUb1Y4RnVuY3Rpb24gc3BlY2lhbGl6ZWRUb1Y4ID0gbWFwLmdldChldmVu
dC0+aW50ZXJmYWNlTmFtZSgpLmltcGwoKSk7CisgICAgaWYgKHNwZWNpYWxpemVkVG9WOCkKKyAg
ICAgICAgcmV0dXJuIHNwZWNpYWxpemVkVG9WOChldmVudCk7CisKICAgICByZXR1cm4gVjhFdmVu
dDo6d3JhcChpbXBsKTsKIH0KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0JlZm9yZUxvYWRFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9CZWZvcmVMb2FkRXZlbnQuaAkocmV2aXNpb24gOTc5MzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vQmVmb3JlTG9hZEV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDggKzQyLDYg
QEAgc3RydWN0IEJlZm9yZUxvYWRFdmVudEluaXQgOiBwdWJsaWMgRXZlbgogCiBjbGFzcyBCZWZv
cmVMb2FkRXZlbnQgOiBwdWJsaWMgRXZlbnQgewogcHVibGljOgotICAgIHZpcnR1YWwgYm9vbCBp
c0JlZm9yZUxvYWRFdmVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEJlZm9yZUxvYWRFdmVudD4gY3JlYXRlKCkKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgQmVmb3JlTG9hZEV2ZW50KTsKQEAgLTcxLDYgKzY5LDkgQEAgcHVibGlj
OgogCiAgICAgY29uc3QgU3RyaW5nJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogCisg
ICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdCB7IHJl
dHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yQmVmb3JlTG9hZEV2ZW50OyB9CisgICAgdmly
dHVhbCBib29sIGlzQmVmb3JlTG9hZEV2ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCiBw
cml2YXRlOgogICAgIEJlZm9yZUxvYWRFdmVudCgpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0JlZm9yZVRleHRJbnNlcnRlZEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuY3BwCShyZXZpc2lvbiA5NzkzNykK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9CZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDQgKzM5LDEwIEBAIEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50Ojp+QmVm
b3JlVGV4dEluc2UKIHsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBCZWZvcmVUZXh0SW5zZXJ0
ZWRFdmVudDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgLy8gTm90aWNlIHRoYXQgdGhl
cmUgaXMgbm8gQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuaWRsLgorICAgIHJldHVybiBldmVudE5h
bWVzKCkuaW50ZXJmYWNlRm9yRXZlbnQ7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9CZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9CZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5oCShyZXZpc2lvbiA5NzkzNykKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9CZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSw4ICszOSw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCZWZv
cmVUZXh0SW5zZXJ0ZWRFdmVudCh0ZXh0KSk7CiAgICAgfQogCisgICAgdmlydHVhbCBjb25zdCBB
dG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNC
ZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgCisKICAg
ICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0KICAgICB2b2lk
IHNldFRleHQoY29uc3QgU3RyaW5nJiBzKSB7IG1fdGV4dCA9IHM7IH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0NsaXBib2FyZEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vQ2xpcGJvYXJkRXZlbnQuY3BwCShyZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9DbGlwYm9hcmRFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIz
LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDbGlwYm9hcmRFdmVudC5oIgog
CisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENsaXBi
b2FyZEV2ZW50OjpDbGlwYm9hcmRFdmVudCgpCkBAIC0zOCw2ICs0MCwxMiBAQCBDbGlwYm9hcmRF
dmVudDo6fkNsaXBib2FyZEV2ZW50KCkKIHsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBDbGlw
Ym9hcmRFdmVudDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgLy8gTm90aWNlIHRoYXQg
dGhlcmUgaXMgbm8gQ2xpcGJvYXJkRXZlbnQuaWRsLgorICAgIHJldHVybiBldmVudE5hbWVzKCku
aW50ZXJmYWNlRm9yRXZlbnQ7Cit9CisKIGJvb2wgQ2xpcGJvYXJkRXZlbnQ6OmlzQ2xpcGJvYXJk
RXZlbnQoKSBjb25zdAogewogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0NsaXBib2FyZEV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0Ns
aXBib2FyZEV2ZW50LmgJKHJldmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Ns
aXBib2FyZEV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgICAgIENsaXBib2FyZCogY2xpcGJvYXJkKCkgY29uc3QgeyByZXR1
cm4gbV9jbGlwYm9hcmQuZ2V0KCk7IH0KIAorICAgICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0
cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDbGlw
Ym9hcmRFdmVudCgpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9Db21wb3NpdGlvbkV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vQ29tcG9zaXRpb25FdmVudC5jcHAJKHJldmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dlYkNv
cmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSwx
MSBAQCB2b2lkIENvbXBvc2l0aW9uRXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2CiAgICAgbV9kYXRh
ID0gZGF0YTsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBDb21wb3NpdGlvbkV2ZW50OjppbnRl
cmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZv
ckNvbXBvc2l0aW9uRXZlbnQ7Cit9CisKIGJvb2wgQ29tcG9zaXRpb25FdmVudDo6aXNDb21wb3Np
dGlvbkV2ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL0NvbXBvc2l0aW9uRXZlbnQuaAkocmV2aXNpb24gOTc5MzcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vQ29tcG9zaXRpb25FdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMSArNDIsMTIg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29t
cG9zaXRpb25FdmVudCh0eXBlLCB2aWV3LCBkYXRhKSk7CiAgICAgICAgIH0KICAgICAgICAgdmly
dHVhbCB+Q29tcG9zaXRpb25FdmVudCgpOwotICAgIAorCiAgICAgICAgIHZvaWQgaW5pdENvbXBv
c2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4sIGNvbnN0IFN0cmluZyYgZGF0
YSk7Ci0gICAgCisKICAgICAgICAgU3RyaW5nIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7
IH0KIAorICAgICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgp
IGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb21wb3NpdGlvbkV2ZW50KCkgY29uc3Q7
CiAKICAgICBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuY3BwCShyZXZp
c2lvbiA5NzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJDdXN0b21FdmVudC5oIgogCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIEN1c3RvbUV2ZW50SW5pdDo6Q3VzdG9tRXZlbnRJbml0KCkKQEAgLTU3LDkg
KzU5LDkgQEAgdm9pZCBDdXN0b21FdmVudDo6aW5pdEN1c3RvbUV2ZW50KGNvbnN0IAogICAgIG1f
ZGV0YWlsID0gZGV0YWlsOwogfQogCi1ib29sIEN1c3RvbUV2ZW50Ojppc0N1c3RvbUV2ZW50KCkg
Y29uc3QKK2NvbnN0IEF0b21pY1N0cmluZyYgQ3VzdG9tRXZlbnQ6OmludGVyZmFjZU5hbWUoKSBj
b25zdAogewotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJm
YWNlRm9yQ3VzdG9tRXZlbnQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9DdXN0b21FdmVudC5oCShyZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9DdXN0b21FdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgaW5pdEN1c3RvbUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
Ym9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgU2NyaXB0VmFsdWUgZGV0YWlsKTsKIAot
ICAgIHZpcnR1YWwgYm9vbCBpc0N1c3RvbUV2ZW50KCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25z
dCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKIAogICAgIFNjcmlwdFZhbHVl
IGRldGFpbCgpIGNvbnN0IHsgcmV0dXJuIG1fZGV0YWlsOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9EZXZpY2VNb3Rpb25FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0RldmljZU1vdGlvbkV2ZW50LmNwcAkocmV2aXNpb24gOTc5MzcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vRGV2aWNlTW90aW9uRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2
ICsyNyw3IEBACiAjaW5jbHVkZSAiRGV2aWNlTW90aW9uRXZlbnQuaCIKIAogI2luY2x1ZGUgIkRl
dmljZU1vdGlvbkRhdGEuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNTQsNCArNTUsMTYgQEAgdm9pZCBEZXZpY2VNb3Rpb25FdmVudDo6aW5p
dERldmljZU1vdGlvbgogICAgIG1fZGV2aWNlTW90aW9uRGF0YSA9IGRldmljZU1vdGlvbkRhdGE7
CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgRGV2aWNlTW90aW9uRXZlbnQ6OmludGVyZmFjZU5h
bWUoKSBjb25zdAoreworI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCisgICAgcmV0dXJu
IGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JEZXZpY2VNb3Rpb25FdmVudDsKKyNlbHNlCisgICAg
Ly8gRklYTUU6IEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pIHNlZW1zIHRvIGJlIGluIGEgc3Ry
YW5nZSBzdGF0ZSB3aGVyZQorICAgIC8vIGl0IGlzIGhhbGYtZ3VhcmRlZCBieSAjaWZkZWZzLiBE
ZXZpY2VNb3Rpb25FdmVudC5pZGwgaXMgZ3VhcmRlZAorICAgIC8vIGJ1dCBEZXZpY2VNb3Rpb25F
dmVudC5jcHAgaXRzZWxmIGlzIHJlcXVpcmVkIGJ5IHVuZ2FyZGVkIGNvZGUuCisgICAgcmV0dXJu
IGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JFdmVudDsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uRXZlbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uRXZlbnQuaAko
cmV2aXNpb24gOTc5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uRXZlbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTAgKzQ2LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
aW5pdERldmljZU1vdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBidWJi
bGVzLCBib29sIGNhbmNlbGFibGUsIERldmljZU1vdGlvbkRhdGEqKTsKIAotICAgIHZpcnR1YWwg
Ym9vbCBpc0RldmljZU1vdGlvbkV2ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAg
RGV2aWNlTW90aW9uRGF0YSogZGV2aWNlTW90aW9uRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2
aWNlTW90aW9uRGF0YS5nZXQoKTsgfQogCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcm
IGludGVyZmFjZU5hbWUoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBEZXZpY2VNb3Rpb25FdmVu
dCgpOwogICAgIERldmljZU1vdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBEZXZpY2VNb3Rpb25EYXRhKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3Jp
ZW50YXRpb25FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0Rldmlj
ZU9yaWVudGF0aW9uRXZlbnQuY3BwCShyZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiAr
MjcsNyBAQAogI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uRXZlbnQuaCIKIAogI2luY2x1ZGUg
IkRldmljZU9yaWVudGF0aW9uLmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTU0LDQgKzU1LDE2IEBAIHZvaWQgRGV2aWNlT3JpZW50YXRpb25F
dmVudDo6aW5pdERldmljZU8KICAgICBtX29yaWVudGF0aW9uID0gb3JpZW50YXRpb247CiB9CiAK
K2NvbnN0IEF0b21pY1N0cmluZyYgRGV2aWNlT3JpZW50YXRpb25FdmVudDo6aW50ZXJmYWNlTmFt
ZSgpIGNvbnN0Cit7CisjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKKyAgICByZXR1cm4g
ZXZlbnROYW1lcygpLmludGVyZmFjZUZvckRldmljZU9yaWVudGF0aW9uRXZlbnQ7CisjZWxzZQor
ICAgIC8vIEZJWE1FOiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKSBzZWVtcyB0byBiZSBpbiBh
IHN0cmFuZ2Ugc3RhdGUgd2hlcmUKKyAgICAvLyBpdCBpcyBoYWxmLWd1YXJkZWQgYnkgI2lmZGVm
cy4gRGV2aWNlT3JpZW50YXRpb25FdmVudC5pZGwgaXMgZ3VhcmRlZAorICAgIC8vIGJ1dCBEZXZp
Y2VPcmllbnRhdGlvbkV2ZW50LmNwcCBpdHNlbGYgaXMgcmVxdWlyZWQgYnkgdW5nYXJkZWQgY29k
ZS4KKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvckV2ZW50OworI2VuZGlmCit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9EZXZp
Y2VPcmllbnRhdGlvbkV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0Rl
dmljZU9yaWVudGF0aW9uRXZlbnQuaAkocmV2aXNpb24gOTc5MzcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxMCAr
NDYsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBpbml0RGV2aWNlT3JpZW50YXRpb25FdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgYnViYmxlcywgYm9vbCBjYW5jZWxhYmxlLCBE
ZXZpY2VPcmllbnRhdGlvbiopOwogCi0gICAgdmlydHVhbCBib29sIGlzRGV2aWNlT3JpZW50YXRp
b25FdmVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQogICAgIERldmljZU9yaWVudGF0aW9u
KiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb24uZ2V0KCk7IH0KIAor
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisK
IHByaXZhdGU6CiAgICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCgpOwogICAgIERldmljZU9yaWVu
dGF0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIERldmljZU9yaWVudGF0
aW9uKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXJyb3JFdmVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0Vycm9yRXZlbnQuY3BwCShyZXZpc2lvbiA5NzkzNykK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FcnJvckV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjksNyArMjksNiBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLQogI2luY2x1ZGUgIkVy
cm9yRXZlbnQuaCIKIAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKQEAgLTg0LDQgKzgzLDkgQEAg
Ym9vbCBFcnJvckV2ZW50Ojppc0Vycm9yRXZlbnQoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwog
fQogCitjb25zdCBBdG9taWNTdHJpbmcmIEVycm9yRXZlbnQ6OmludGVyZmFjZU5hbWUoKSBjb25z
dAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yRXJyb3JFdmVudDsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Vycm9y
RXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXJyb3JFdmVudC5oCShy
ZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FcnJvckV2ZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTY2LDYgKzY2LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVOYW1lOyB9CiAgICAgdW5zaWduZWQgbGluZW5v
KCkgY29uc3QgeyByZXR1cm4gbV9saW5lTnVtYmVyOyB9CiAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0Vy
cm9yRXZlbnQoKSBjb25zdDsKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAkocmV2
aXNpb24gOTc5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiRXZlbnQuaCIKIAogI2luY2x1ZGUgIkV2
ZW50RGlzcGF0Y2hlci5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFdmVu
dFRhcmdldC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSA8
d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC05Niw5ICs5Nyw5IEBAIHZvaWQgRXZlbnQ6OmluaXRFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcKICAgICBtX2NhbmNlbGFibGUgPSBjYW5jZWxhYmxlQXJnOwog
fQogCi1ib29sIEV2ZW50Ojppc0N1c3RvbUV2ZW50KCkgY29uc3QKK2NvbnN0IEF0b21pY1N0cmlu
ZyYgRXZlbnQ6OmludGVyZmFjZU5hbWUoKSBjb25zdAogewotICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvckV2ZW50OwogfQogCiBib29sIEV2ZW50
Ojppc1VJRXZlbnQoKSBjb25zdApAQCAtMTY2LDQxICsxNjcsMTYgQEAgYm9vbCBFdmVudDo6aXNQ
YWdlVHJhbnNpdGlvbkV2ZW50KCkgY29ucwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBF
dmVudDo6aXNQb3BTdGF0ZUV2ZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
IGJvb2wgRXZlbnQ6OmlzUHJvZ3Jlc3NFdmVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1ib29sIEV2ZW50Ojppc1dlYktpdEFuaW1hdGlvbkV2ZW50KCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgRXZlbnQ6OmlzV2ViS2l0VHJhbnNpdGlvbkV2ZW50
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgRXZlbnQ6OmlzWE1MSHR0
cFJlcXVlc3RQcm9ncmVzc0V2ZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
IGJvb2wgRXZlbnQ6OmlzQmVmb3JlTG9hZEV2ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLWJvb2wgRXZlbnQ6OmlzSGFzaENoYW5nZUV2ZW50KCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KICNpZiBFTkFCTEUoU1ZHKQogYm9vbCBFdmVudDo6aXNTVkdab29t
RXZlbnQoKSBjb25zdAogewpAQCAtMjA4LDgzICsxODQsMTEgQEAgYm9vbCBFdmVudDo6aXNTVkda
b29tRXZlbnQoKSBjb25zdAogfQogI2VuZGlmCiAKLWJvb2wgRXZlbnQ6OmlzU3RvcmFnZUV2ZW50
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLSNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKLWJvb2wgRXZlbnQ6OmlzSURCVmVyc2lvbkNoYW5nZUV2ZW50KCkgY29uc3QKLXsK
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0jZW5kaWYKLQogYm9vbCBFdmVudDo6aXNFcnJvckV2ZW50
KCkgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLSNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQotYm9vbCBFdmVudDo6aXNUb3VjaEV2ZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCi1ib29sIEV2
ZW50Ojppc0RldmljZU1vdGlvbkV2ZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KLWJvb2wgRXZlbnQ6OmlzRGV2aWNlT3JpZW50YXRpb25FdmVudCgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIGZhbHNlOwotfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VCX0FVRElPKQotYm9vbCBF
dmVudDo6aXNBdWRpb1Byb2Nlc3NpbmdFdmVudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi1ib29sIEV2ZW50Ojppc09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5QVVRfU1BF
RUNIKQotYm9vbCBFdmVudDo6aXNTcGVlY2hJbnB1dEV2ZW50KCkgY29uc3QKLXsKLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLWJvb2wgRXZl
bnQ6OmlzQ2xvc2VFdmVudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotI2VuZGlm
Ci0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotYm9vbCBFdmVudDo6aXNNZWRpYVN0cmVhbUV2
ZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0jZW5kaWYKLQotI2lmIEVOQUJM
RShXRUJHTCkKLWJvb2wgRXZlbnQ6OmlzV2ViR0xDb250ZXh0RXZlbnQoKSBjb25zdAotewotICAg
IHJldHVybiBmYWxzZTsKLX0KLSNlbmRpZgotCi0KIGJvb2wgRXZlbnQ6OnN0b3Jlc1Jlc3VsdEFz
U3RyaW5nKCkgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAko
cmV2aXNpb24gOTc5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMTEyLDU4ICsxMTIsMzEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IENsaXBib2FyZCogY2xpcGJvYXJkRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGlzQ2xpcGJvYXJkRXZl
bnQoKSA/IGNsaXBib2FyZCgpIDogMDsgfQogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0N1c3Rv
bUV2ZW50KCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRl
cmZhY2VOYW1lKCkgY29uc3Q7CisKKyAgICAgICAgLy8gVGhlc2UgYXJlIG5lZWRlZCBmb3IgdGhl
IENQUCBiaW5kaW5ncy4KICAgICAgICAgdmlydHVhbCBib29sIGlzVUlFdmVudCgpIGNvbnN0Owog
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBpc011dGF0aW9uRXZlbnQoKSBjb25zdDsKKworICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNEcmFnRXZlbnQoKSBjb25zdDsgLy8gYSBzdWJzZXQgb2YgbW91c2UgZXZlbnRzCisKKyAgICAg
ICAgLy8gRklYTUU6IFJlbW92ZSB0aGVzZSEgQ2FsbGVycyBzaG91bGQgdXNlIGludGVyZmFjZU5h
bWUoKSBpbnN0ZWFkLgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNLZXlib2FyZEV2ZW50KCkgY29u
c3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1RleHRFdmVudCgpIGNvbnN0OwogICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNDb21wb3NpdGlvbkV2ZW50KCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwg
Ym9vbCBpc0RyYWdFdmVudCgpIGNvbnN0OyAvLyBhIHN1YnNldCBvZiBtb3VzZSBldmVudHMKICAg
ICAgICAgdmlydHVhbCBib29sIGlzQ2xpcGJvYXJkRXZlbnQoKSBjb25zdDsKICAgICAgICAgdmly
dHVhbCBib29sIGlzTWVzc2FnZUV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBp
c1doZWVsRXZlbnQoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGlzQmVmb3JlVGV4dElu
c2VydGVkRXZlbnQoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGlzT3ZlcmZsb3dFdmVu
dCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQYWdlVHJhbnNpdGlvbkV2ZW50KCkg
Y29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1BvcFN0YXRlRXZlbnQoKSBjb25zdDsKICAg
ICAgICAgdmlydHVhbCBib29sIGlzUHJvZ3Jlc3NFdmVudCgpIGNvbnN0OwotICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQoKSBjb25zdDsKLSAgICAgICAg
dmlydHVhbCBib29sIGlzV2ViS2l0QW5pbWF0aW9uRXZlbnQoKSBjb25zdDsKLSAgICAgICAgdmly
dHVhbCBib29sIGlzV2ViS2l0VHJhbnNpdGlvbkV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBpc0JlZm9yZUxvYWRFdmVudCgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNIYXNoQ2hhbmdlRXZlbnQoKSBjb25zdDsKICNpZiBFTkFCTEUoU1ZHKQogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNTVkdab29tRXZlbnQoKSBjb25zdDsKICNlbmRpZgotICAgICAgICB2aXJ0dWFs
IGJvb2wgaXNTdG9yYWdlRXZlbnQoKSBjb25zdDsKLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKLSAgICAgICAgdmlydHVhbCBib29sIGlzSURCVmVyc2lvbkNoYW5nZUV2ZW50KCkgY29uc3Q7
Ci0jZW5kaWYKLSNpZiBFTkFCTEUoV0VCX0FVRElPKQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNB
dWRpb1Byb2Nlc3NpbmdFdmVudCgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNPZmZs
aW5lQXVkaW9Db21wbGV0aW9uRXZlbnQoKSBjb25zdDsKLSNlbmRpZgogICAgICAgICB2aXJ0dWFs
IGJvb2wgaXNFcnJvckV2ZW50KCkgY29uc3Q7Ci0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAg
ICAgICAgdmlydHVhbCBib29sIGlzVG91Y2hFdmVudCgpIGNvbnN0OwotI2VuZGlmCi0jaWYgRU5B
QkxFKERFVklDRV9PUklFTlRBVElPTikKLSAgICAgICAgdmlydHVhbCBib29sIGlzRGV2aWNlTW90
aW9uRXZlbnQoKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBib29sIGlzRGV2aWNlT3JpZW50YXRp
b25FdmVudCgpIGNvbnN0OwotI2VuZGlmCi0jaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKLSAgICAg
ICAgdmlydHVhbCBib29sIGlzU3BlZWNoSW5wdXRFdmVudCgpIGNvbnN0OwotI2VuZGlmCi0jaWYg
RU5BQkxFKFdFQl9TT0NLRVRTKQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDbG9zZUV2ZW50KCkg
Y29uc3Q7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgICAgICB2aXJ0dWFs
IGJvb2wgaXNNZWRpYVN0cmVhbUV2ZW50KCkgY29uc3Q7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoV0VC
R0wpCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1dlYkdMQ29udGV4dEV2ZW50KCkgY29uc3Q7Ci0j
ZW5kaWYKIAogICAgICAgICBib29sIHByb3BhZ2F0aW9uU3RvcHBlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJvcGFnYXRpb25TdG9wcGVkIHx8IG1faW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOyB9
CiAgICAgICAgIGJvb2wgaW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkgY29uc3QgeyByZXR1
cm4gbV9pbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudE5hbWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnROYW1lcy5jcHAJKHJldmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
TmFtZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw5ICsyNSwxNCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICNkZWZpbmUgSU5JVElBTElaRV9FVkVOVF9OQU1FKG5hbWUpIFwKICAgICAsIG5h
bWUjI0V2ZW50KCNuYW1lKQorCisjZGVmaW5lIElOSVRJQUxJWkVfRVZFTlRfSU5URVJGQUNFKG5h
bWUpIFwKKyAgICAsIGludGVyZmFjZUZvciMjbmFtZSgjbmFtZSkKKwogRXZlbnROYW1lczo6RXZl
bnROYW1lcygpCiAgICAgOiBkdW1teSgwKQogRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNIKElOSVRJ
QUxJWkVfRVZFTlRfTkFNRSkKK0RPTV9FVkVOVF9JTlRFUkZBQ0VTX0ZPUl9FQUNIKElOSVRJQUxJ
WkVfRVZFTlRfSU5URVJGQUNFKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnROYW1lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgJ
KHJldmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogI2lmbmRlZiBFdmVudE5hbWVzX2gKICNkZWZp
bmUgRXZlbnROYW1lc19oCiAKKyNpbmNsdWRlICJFdmVudEludGVyZmFjZXMuaCIKICNpbmNsdWRl
ICJUaHJlYWRHbG9iYWxEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+
CiAKQEAgLTIwMSw2ICsyMDIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAjZGVm
aW5lIERPTV9FVkVOVF9OQU1FU19ERUNMQVJFKG5hbWUpIEF0b21pY1N0cmluZyBuYW1lIyNFdmVu
dDsKICAgICAgICAgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNIKERPTV9FVkVOVF9OQU1FU19ERUNM
QVJFKQogICAgICAgICAjdW5kZWYgRE9NX0VWRU5UX05BTUVTX0RFQ0xBUkUKKworICAgICAgICAj
ZGVmaW5lIERPTV9FVkVOVF9JTlRFUkZBQ0VfREVDTEFSRShuYW1lKSBBdG9taWNTdHJpbmcgaW50
ZXJmYWNlRm9yIyNuYW1lOworICAgICAgICBET01fRVZFTlRfSU5URVJGQUNFU19GT1JfRUFDSChE
T01fRVZFTlRfSU5URVJGQUNFX0RFQ0xBUkUpCisgICAgICAgICN1bmRlZiBET01fRVZFTlRfSU5U
RVJGQUNFX0RFQ0xBUkUKICAgICB9OwogCiAgICAgaW5saW5lIEV2ZW50TmFtZXMmIGV2ZW50TmFt
ZXMoKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0hhc2hDaGFuZ2VFdmVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9IYXNoQ2hhbmdlRXZlbnQuaAkocmV2aXNpb24gOTc5
MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vSGFzaENoYW5nZUV2ZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDggKzM3LDYgQEAgc3RydWN0IEhhc2hDaGFuZ2VFdmVudEluaXQgOiBwdWJsaWMg
RXZlbgogCiBjbGFzcyBIYXNoQ2hhbmdlRXZlbnQgOiBwdWJsaWMgRXZlbnQgewogcHVibGljOgot
ICAgIHZpcnR1YWwgYm9vbCBpc0hhc2hDaGFuZ2VFdmVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KLQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhhc2hDaGFuZ2VFdmVudD4gY3JlYXRlKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSGFzaENoYW5nZUV2ZW50KTsKQEAgLTY4
LDYgKzY2LDggQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgb2xkVVJMKCkgY29uc3QgeyBy
ZXR1cm4gbV9vbGRVUkw7IH0KICAgICBjb25zdCBTdHJpbmcmIG5ld1VSTCgpIGNvbnN0IHsgcmV0
dXJuIG1fbmV3VVJMOyB9CiAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJm
YWNlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JIYXNoQ2hh
bmdlRXZlbnQ7IH0KKwogcHJpdmF0ZToKICAgICBIYXNoQ2hhbmdlRXZlbnQoKQogICAgIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAJKHJldmlzaW9uIDk3OTM3KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzksNiArMTM5LDExIEBAIGludCBLZXlib2FyZEV2ZW50OjpjaGFyQ29kZSgpIGNvbnN0CiAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4odGV4dC5jaGFyYWN0ZXJTdGFydGluZ0F0KDApKTsKIH0K
IAorY29uc3QgQXRvbWljU3RyaW5nJiBLZXlib2FyZEV2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvcktleWJvYXJkRXZlbnQ7
Cit9CisKIGJvb2wgS2V5Ym9hcmRFdmVudDo6aXNLZXlib2FyZEV2ZW50KCkgY29uc3QKIHsKICAg
ICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaAkocmV2aXNp
b24gOTc5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC04Nyw3ICs4Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBp
bnQga2V5Q29kZSgpIGNvbnN0OyAvLyBrZXkgY29kZSBmb3Iga2V5ZG93biBhbmQga2V5dXAsIGNo
YXJhY3RlciBmb3Iga2V5cHJlc3MKICAgICAgICAgaW50IGNoYXJDb2RlKCkgY29uc3Q7IC8vIGNo
YXJhY3RlciBjb2RlIGZvciBrZXlwcmVzcywgMCBmb3Iga2V5ZG93biBhbmQga2V5dXAKLSAgICAK
KworICAgICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNv
bnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNLZXlib2FyZEV2ZW50KCkgY29uc3Q7CiAgICAg
ICAgIHZpcnR1YWwgaW50IHdoaWNoKCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9NZXNzYWdlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNz
YWdlRXZlbnQuY3BwCShyZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNz
YWdlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNiArMTM5LDExIEBAIHZvaWQgTWVz
c2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KGNvbnMKICAgICBpbml0TWVzc2FnZUV2ZW50KHR5
cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgZGF0YSwgb3JpZ2luLCBsYXN0RXZlbnRJZCwgc291
cmNlLCBwb3J0cy5yZWxlYXNlKCkpOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIE1lc3NhZ2VF
dmVudDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5p
bnRlcmZhY2VGb3JNZXNzYWdlRXZlbnQ7Cit9CisKIGJvb2wgTWVzc2FnZUV2ZW50Ojppc01lc3Nh
Z2VFdmVudCgpIGNvbnN0IAogewogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL01lc3NhZ2VFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9N
ZXNzYWdlRXZlbnQuaAkocmV2aXNpb24gOTc5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZUV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDcgQEAgcHVibGljOgogICAg
IC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAo
YnVnICMyODc3NCkuCiAgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJp
bmcmIGxhc3RFdmVudElkLCBET01XaW5kb3cqIHNvdXJjZSwgTWVzc2FnZVBvcnQqKTsKIAorICAg
IHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAgICAg
dmlydHVhbCBib29sIGlzTWVzc2FnZUV2ZW50KCkgY29uc3Q7CiAKICAgICBlbnVtIERhdGFUeXBl
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAJKHJldmlzaW9uIDk3OTM3KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw2
ICs5MiwxMSBAQCB2b2lkIE1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50KGNvbnN0IEF0CiAgICAg
Ly8gRklYTUU6IG1fY2xpcGJvYXJkIGlzIG5vdCBzZXQgdG8gMCBoZXJlLgogfQogCitjb25zdCBB
dG9taWNTdHJpbmcmIE1vdXNlRXZlbnQ6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJl
dHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yTW91c2VFdmVudDsKK30KKwogYm9vbCBNb3Vz
ZUV2ZW50Ojppc01vdXNlRXZlbnQoKSBjb25zdAogewogICAgIHJldHVybiB0cnVlOwpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vTW91c2VFdmVudC5oCShyZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Nb3VzZUV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDggQEAgY2xhc3Mg
UGxhdGZvcm1Nb3VzZUV2ZW50OwogCiAgICAgICAgIENsaXBib2FyZCogZGF0YVRyYW5zZmVyKCkg
Y29uc3QgeyByZXR1cm4gaXNEcmFnRXZlbnQoKSA/IG1fY2xpcGJvYXJkLmdldCgpIDogMDsgfQog
CisgICAgICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29u
c3Q7CisKICAgICAgICAgdmlydHVhbCBib29sIGlzTW91c2VFdmVudCgpIGNvbnN0OwogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNEcmFnRXZlbnQoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBpbnQg
d2hpY2goKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbkV2ZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25FdmVudC5jcHAJKHJl
dmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uRXZlbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiTXV0YXRpb25FdmVudC5oIgogCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIE11dGF0aW9uRXZlbnQ6Ok11dGF0aW9uRXZlbnQoKQpAQCAtNjIs
NiArNjQsMTEgQEAgdm9pZCBNdXRhdGlvbkV2ZW50Ojppbml0TXV0YXRpb25FdmVudChjbwogICAg
IG1fYXR0ckNoYW5nZSA9IGF0dHJDaGFuZ2U7CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgTXV0
YXRpb25FdmVudDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFt
ZXMoKS5pbnRlcmZhY2VGb3JNdXRhdGlvbkV2ZW50OworfQorCiBib29sIE11dGF0aW9uRXZlbnQ6
OmlzTXV0YXRpb25FdmVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vTXV0YXRpb25FdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9NdXRhdGlvbkV2ZW50LmgJKHJldmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNiArNjAsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFN0cmluZyBhdHRyTmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fYXR0ck5hbWU7IH0KICAgICAgICAgdW5zaWduZWQgc2hvcnQgYXR0ckNoYW5nZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYXR0ckNoYW5nZTsgfQogCisgICAgICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBp
c011dGF0aW9uRXZlbnQoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vT3ZlcmZsb3dFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL092ZXJmbG93RXZlbnQuY3BwCShyZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9PdmVyZmxvd0V2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsMTEgQEAg
T3ZlcmZsb3dFdmVudDo6T3ZlcmZsb3dFdmVudChjb25zdCBBdG9taQogewogfQogCitjb25zdCBB
dG9taWNTdHJpbmcmIE92ZXJmbG93RXZlbnQ6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAg
IHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yT3ZlcmZsb3dFdmVudDsKK30KKwogYm9v
bCBPdmVyZmxvd0V2ZW50Ojppc092ZXJmbG93RXZlbnQoKSBjb25zdAogewogICAgIHJldHVybiB0
cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL092ZXJmbG93RXZlbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vT3ZlcmZsb3dFdmVudC5oCShyZXZpc2lvbiA5NzkzNykK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9PdmVyZmxvd0V2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTY1LDYgKzY1LDcgQEAgcHVibGljOgogICAgIGJvb2wgaG9yaXpvbnRhbE92ZXJmbG93KCkgY29u
c3QgeyByZXR1cm4gbV9ob3Jpem9udGFsT3ZlcmZsb3c7IH0KICAgICBib29sIHZlcnRpY2FsT3Zl
cmZsb3coKSBjb25zdCB7IHJldHVybiBtX3ZlcnRpY2FsT3ZlcmZsb3c7IH0KIAorICAgIHZpcnR1
YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAgICAgdmlydHVh
bCBib29sIGlzT3ZlcmZsb3dFdmVudCgpIGNvbnN0OwogCiBwcml2YXRlOgpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9QYWdlVHJhbnNpdGlvbkV2ZW50LmNwcAkocmV2aXNpb24gOTc5MzcpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vUGFnZVRyYW5zaXRpb25FdmVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY5LDQgKzY5LDkgQEAgdm9pZCBQYWdlVHJhbnNpdGlvbkV2ZW50Ojppbml0UGFnZVRy
YW5zaQogICAgIG1fcGVyc2lzdGVkID0gcGVyc2lzdGVkOwogfQogCitjb25zdCBBdG9taWNTdHJp
bmcmIFBhZ2VUcmFuc2l0aW9uRXZlbnQ6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJl
dHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yUGFnZVRyYW5zaXRpb25FdmVudDsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1BhZ2VUcmFu
c2l0aW9uRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUGFnZVRyYW5z
aXRpb25FdmVudC5oCShyZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9QYWdl
VHJhbnNpdGlvbkV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5jZWxhYmxlQXJnLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwZXJzaXN0ZWQpOwogCisgICAg
dmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKICAgICB2
aXJ0dWFsIGJvb2wgaXNQYWdlVHJhbnNpdGlvbkV2ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQogCiAgICAgYm9vbCBwZXJzaXN0ZWQoKSBjb25zdCB7IHJldHVybiBtX3BlcnNpc3RlZDsgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmNwcAkocmV2aXNpb24gOTc5MzcpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk1LDQgKzk1LDkgQEAgdm9pZCBQb3BTdGF0ZUV2ZW50Ojppbml0UG9wU3RhdGVFdmVudChjbwog
ICAgIG1fc3RhdGUgPSBzdGF0ZTsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBQb3BTdGF0ZUV2
ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmlu
dGVyZmFjZUZvclBvcFN0YXRlRXZlbnQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaAkocmV2aXNpb24gOTc5MzcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NywxMSAr
NDcsMTIgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBvcFN0YXRlRXZlbnQ+IGNy
ZWF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFBvcFN0YXRlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBQ
b3BTdGF0ZUV2ZW50SW5pdCYpOwogICAgIHZvaWQgaW5pdFBvcFN0YXRlRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBT
Y3JpcHRWYWx1ZSYpOwotICAgIGJvb2wgaXNQb3BTdGF0ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQogCiAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU3RhdGUoKSBj
b25zdCB7IHJldHVybiBtX3NlcmlhbGl6ZWRTdGF0ZS5nZXQoKTsgfQogICAgIFNjcmlwdFZhbHVl
IHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQogCisgICAgdmlydHVhbCBjb25zdCBB
dG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBQb3BT
dGF0ZUV2ZW50KCk7CiAgICAgUG9wU3RhdGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmLCBjb25z
dCBQb3BTdGF0ZUV2ZW50SW5pdCYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Byb2dyZXNz
RXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Qcm9ncmVzc0V2ZW50
LmNwcAkocmV2aXNpb24gOTc5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUHJvZ3Jlc3NFdmVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJQcm9ncmVzc0V2ZW50LmgiCiAKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgi
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUHJvZ3Jlc3NFdmVudEluaXQ6OlByb2dyZXNzRXZl
bnRJbml0KCkKQEAgLTcxLDQgKzczLDkgQEAgdm9pZCBQcm9ncmVzc0V2ZW50Ojppbml0UHJvZ3Jl
c3NFdmVudChjbwogICAgIG1fdG90YWwgPSB0b3RhbEFyZzsKIH0KIAorY29uc3QgQXRvbWljU3Ry
aW5nJiBQcm9ncmVzc0V2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZXZlbnROYW1lcygpLmludGVyZmFjZUZvclByb2dyZXNzRXZlbnQ7Cit9CisKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9Qcm9ncmVzc0V2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL1Byb2dyZXNzRXZlbnQuaAkocmV2aXNpb24gOTc5MzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vUHJvZ3Jlc3NFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCw4IEBA
IHB1YmxpYzoKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbG9hZGVkKCkgY29uc3QgeyByZXR1cm4g
bV9sb2FkZWQ7IH0KICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWwoKSBjb25zdCB7IHJldHVy
biBtX3RvdGFsOyB9CiAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNl
TmFtZSgpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgUHJvZ3Jlc3NFdmVudCgpOwogICAgIFBy
b2dyZXNzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGxlbmd0aENvbXB1dGFi
bGUsIHVuc2lnbmVkIGxvbmcgbG9uZyBsb2FkZWQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAkocmV2aXNpb24gOTc5MzcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTksNiArOTks
MTEgQEAgdm9pZCBUZXh0RXZlbnQ6OmluaXRUZXh0RXZlbnQoY29uc3QgQXRvbQogICAgIG1fZGF0
YSA9IGRhdGE7CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgVGV4dEV2ZW50OjppbnRlcmZhY2VO
YW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclRleHRF
dmVudDsKK30KKwogYm9vbCBUZXh0RXZlbnQ6OmlzVGV4dEV2ZW50KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmgJKHJldmlzaW9uIDk3OTM3KQor
KysgU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2
ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKICAgICAgICAgU3RyaW5nIGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KIAorICAgICAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNU
ZXh0RXZlbnQoKSBjb25zdDsKIAogICAgICAgICBib29sIGlzTGluZUJyZWFrKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbnB1dFR5cGUgPT0gVGV4dEV2ZW50SW5wdXRMaW5lQnJlYWs7IH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vVG91Y2hFdmVudC5jcHAJKHJldmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dlYkNv
cmUvZG9tL1RvdWNoRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw4IEBACiAj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIAogI2luY2x1ZGUgIlRvdWNoRXZlbnQuaCIKKworI2lu
Y2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJUb3VjaExpc3QuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNzMsNiArNzUsMTEgQEAgdm9pZCBUb3VjaEV2ZW50Ojppbml0VG91Y2hF
dmVudChUb3VjaExpcwogICAgIGluaXRDb29yZGluYXRlcyhJbnRQb2ludChjbGllbnRYLCBjbGll
bnRZKSk7CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgVG91Y2hFdmVudDo6aW50ZXJmYWNlTmFt
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JUb3VjaEV2
ZW50OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5oCShyZXZpc2lvbiA5NzkzNykK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTYz
LDYgKzYzLDggQEAgcHVibGljOgogICAgIFRvdWNoTGlzdCogdGFyZ2V0VG91Y2hlcygpIGNvbnN0
IHsgcmV0dXJuIG1fdGFyZ2V0VG91Y2hlcy5nZXQoKTsgfQogICAgIFRvdWNoTGlzdCogY2hhbmdl
ZFRvdWNoZXMoKSBjb25zdCB7IHJldHVybiBtX2NoYW5nZWRUb3VjaGVzLmdldCgpOyB9CiAKKyAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OworCiBw
cml2YXRlOgogICAgIFRvdWNoRXZlbnQoKTsKICAgICBUb3VjaEV2ZW50KFRvdWNoTGlzdCogdG91
Y2hlcywgVG91Y2hMaXN0KiB0YXJnZXRUb3VjaGVzLApAQCAtNzEsOCArNzMsNiBAQCBwcml2YXRl
OgogICAgICAgICAgICAgaW50IHBhZ2VZLAogICAgICAgICAgICAgYm9vbCBjdHJsS2V5LCBib29s
IGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5KTsKIAotICAgIHZpcnR1YWwgYm9v
bCBpc1RvdWNoRXZlbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBSZWZQdHI8VG91
Y2hMaXN0PiBtX3RvdWNoZXM7CiAgICAgUmVmUHRyPFRvdWNoTGlzdD4gbV90YXJnZXRUb3VjaGVz
OwogICAgIFJlZlB0cjxUb3VjaExpc3Q+IG1fY2hhbmdlZFRvdWNoZXM7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vVUlFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L1VJRXZlbnQuY3BwCShyZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9VSUV2
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsMTEgQEAgYm9vbCBVSUV2ZW50Ojpp
c1VJRXZlbnQoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCitjb25zdCBBdG9taWNTdHJp
bmcmIFVJRXZlbnQ6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5h
bWVzKCkuaW50ZXJmYWNlRm9yVUlFdmVudDsKK30KKwogaW50IFVJRXZlbnQ6OmtleUNvZGUoKSBj
b25zdAogewogICAgIHJldHVybiAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5oCShyZXZpc2lvbiA5
NzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ4LDcgKzQ4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIEFic3RyYWN0Vmll
dyogdmlldygpIGNvbnN0IHsgcmV0dXJuIG1fdmlldy5nZXQoKTsgfQogICAgICAgICBpbnQgZGV0
YWlsKCkgY29uc3QgeyByZXR1cm4gbV9kZXRhaWw7IH0KLSAgICAgICAgCisKKyAgICAgICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKICAgICAgICAg
dmlydHVhbCBib29sIGlzVUlFdmVudCgpIGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwgaW50IGtl
eUNvZGUoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRBbmltYXRpb25F
dmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdEFuaW1hdGlv
bkV2ZW50LmNwcAkocmV2aXNpb24gOTc5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0
QW5pbWF0aW9uRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw0ICs4NCw5IEBAIGRvdWJs
ZSBXZWJLaXRBbmltYXRpb25FdmVudDo6ZWxhcHNlZFRpbWUKICAgICByZXR1cm4gbV9lbGFwc2Vk
VGltZTsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBXZWJLaXRBbmltYXRpb25FdmVudDo6aW50
ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VG
b3JXZWJLaXRBbmltYXRpb25FdmVudDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmgJKHJldmlzaW9uIDk3
OTM3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgYW5p
bWF0aW9uTmFtZSgpIGNvbnN0OwogICAgIGRvdWJsZSBlbGFwc2VkVGltZSgpIGNvbnN0OwogCi0g
ICAgdmlydHVhbCBib29sIGlzV2ViS2l0QW5pbWF0aW9uRXZlbnQoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBj
b25zdDsKIAogcHJpdmF0ZToKICAgICBXZWJLaXRBbmltYXRpb25FdmVudCgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5jcHAJKHJldmlzaW9uIDk3
OTM3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg1LDQgKzg1LDkgQEAgZG91YmxlIFdlYktpdFRyYW5zaXRpb25FdmVu
dDo6ZWxhcHNlZFRpbQogICAgIHJldHVybiBtX2VsYXBzZWRUaW1lOwogfQogCitjb25zdCBBdG9t
aWNTdHJpbmcmIFdlYktpdFRyYW5zaXRpb25FdmVudDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JXZWJLaXRUcmFuc2l0aW9uRXZl
bnQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmgJKHJldmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3
ICs2Myw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSgpIGNvbnN0
OwogICAgIGRvdWJsZSBlbGFwc2VkVGltZSgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBib29sIGlz
V2ViS2l0VHJhbnNpdGlvbkV2ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1
YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAKIHByaXZhdGU6
CiAgICAgV2ViS2l0VHJhbnNpdGlvbkV2ZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
V2hlZWxFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZl
bnQuY3BwCShyZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsNiArODQsMTEgQEAgdm9pZCBXaGVlbEV2ZW50Ojpp
bml0V2ViS2l0V2hlZWxFdmVudChpbgogICAgICAgICAgICAgICAgICAgIGN0cmxLZXksIGFsdEtl
eSwgc2hpZnRLZXksIG1ldGFLZXkpOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIFdoZWVsRXZl
bnQ6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50
ZXJmYWNlRm9yV2hlZWxFdmVudDsKK30KKwogYm9vbCBXaGVlbEV2ZW50Ojppc1doZWVsRXZlbnQo
KSBjb25zdAogewogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1do
ZWVsRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5o
CShyZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAvLyBOZWVkZWQgZm9yIE9iamVjdGl2ZS1DIGxlZ2FjeSBzdXBwb3J0CiAgICAgICAgIGJvb2wg
aXNIb3Jpem9udGFsKCkgY29uc3QgeyByZXR1cm4gbV93aGVlbERlbHRhLngoKTsgfQogCisgICAg
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisK
ICAgICBwcml2YXRlOgogICAgICAgICBXaGVlbEV2ZW50KCk7CiAgICAgICAgIFdoZWVsRXZlbnQo
Y29uc3QgRmxvYXRQb2ludCYgd2hlZWxUaWNrcywgY29uc3QgRmxvYXRQb2ludCYgcmF3RGVsdGEs
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9ldmVudF9mYWN0b3J5LnBsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX2V2ZW50X2ZhY3RvcnkucGwJKHJldmlzaW9u
IDk3OTM3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL21ha2VfZXZlbnRfZmFjdG9yeS5wbAkod29y
a2luZyBjb3B5KQpAQCAtNDAsNiArNDAsOSBAQCB1c2UgSU86OkZpbGU7CiB1c2UgSW5GaWxlc1Bh
cnNlcjsKIAogc3ViIHJlYWRFdmVudHMoJCk7CitzdWIgcHJpbnRGYWN0b3J5RmlsZSgkKTsKK3N1
YiBwcmludE1hY3JvRmlsZSgkKTsKK3N1YiBwcmludEhlYWRlcnNGaWxlKCQpOwogCiBteSAkZXZl
bnRzRmlsZSA9ICIiOwogbXkgJG91dHB1dERpciA9ICIuIjsKQEAgLTU4LDcgKzYxLDkgQEAgZGll
ICJZb3UgbXVzdCBzcGVjaWZ5IC0tZXZlbnRzIDxmaWxlPiIgdQogCiBteSAlZXZlbnRzID0gJXty
ZWFkRXZlbnRzKCRldmVudHNGaWxlKX07CiAKLXByaW50Q3BwRmlsZSgiJG91dHB1dERpci9FdmVu
dEZhY3RvcnkuY3BwIik7CitwcmludEZhY3RvcnlGaWxlKCIkb3V0cHV0RGlyL0V2ZW50RmFjdG9y
eS5jcHAiKTsKK3ByaW50TWFjcm9GaWxlKCIkb3V0cHV0RGlyL0V2ZW50SW50ZXJmYWNlcy5oIik7
CitwcmludEhlYWRlcnNGaWxlKCIkb3V0cHV0RGlyL0V2ZW50SGVhZGVycy5oIik7CiAKIHN1YiBk
ZWZhdWx0RXZlbnRQcm9wZXJ0eUhhc2gKIHsKQEAgLTExOSw1MSArMTI0LDEzOSBAQCBzdWIgaW50
ZXJmYWNlRm9yRXZlbnQoJCkKICAgICByZXR1cm4gJGludGVyZmFjZU5hbWU7CiB9CiAKLXN1YiBw
cmludENwcEZpbGUKK3N1YiBwcmludEZhY3RvcnlGaWxlKCQpCiB7Ci0gICAgbXkgJGNwcFBhdGgg
PSBzaGlmdDsKKyAgICBteSAkcGF0aCA9IHNoaWZ0OwogICAgIG15ICRGOwogCi0gICAgb3BlbiBG
LCAiPiRjcHBQYXRoIjsKKyAgICBvcGVuIEYsICI+JHBhdGgiOwogCiAgICAgcHJpbnRMaWNlbnNl
SGVhZGVyKCRGKTsKIAogICAgIHByaW50IEYgIiNpbmNsdWRlIFwiY29uZmlnLmhcIlxuIjsKLSAg
ICBwcmludCBGICIjaW5jbHVkZSBcIkV2ZW50RmFjdG9yeS5oXCJcblxuIjsKLQotICAgIG15ICVp
bmNsdWRlZEludGVyZmFjZXMgPSAoKTsKKyAgICBwcmludCBGICIjaW5jbHVkZSBcIkV2ZW50RmFj
dG9yeS5oXCJcbiI7CisgICAgcHJpbnQgRiAiXG4iOworICAgIHByaW50IEYgIiNpbmNsdWRlIFwi
RXZlbnRIZWFkZXJzLmhcIlxuIjsKKyAgICBwcmludCBGICJcbiI7CisgICAgcHJpbnQgRiAibmFt
ZXNwYWNlIFdlYkNvcmUge1xuIjsKKyAgICBwcmludCBGICJcbiI7CisgICAgcHJpbnQgRiAiUGFz
c1JlZlB0cjxFdmVudD4gRXZlbnRGYWN0b3J5OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBldmVudFR5
cGUpXG4iOworICAgIHByaW50IEYgIntcbiI7CiAKICAgICBmb3IgbXkgJGV2ZW50TmFtZSAoc29y
dCBrZXlzICVwYXJzZWRFdmVudHMpIHsKICAgICAgICAgbXkgJGNvbmRpdGlvbmFsID0gJHBhcnNl
ZEV2ZW50c3skZXZlbnROYW1lfXsiY29uZGl0aW9uYWwifTsKICAgICAgICAgbXkgJGludGVyZmFj
ZU5hbWUgPSBpbnRlcmZhY2VGb3JFdmVudCgkZXZlbnROYW1lKTsKIAotICAgICAgICBuZXh0IGlm
IGRlZmluZWQoJGluY2x1ZGVkSW50ZXJmYWNlc3skaW50ZXJmYWNlTmFtZX0pOwotICAgICAgICAk
aW5jbHVkZWRJbnRlcmZhY2VzeyRpbnRlcmZhY2VOYW1lfSA9IDE7Ci0KICAgICAgICAgcHJpbnQg
RiAiI2lmIEVOQUJMRSgkY29uZGl0aW9uYWwpXG4iIGlmICRjb25kaXRpb25hbDsKLSAgICAgICAg
cHJpbnQgRiAiI2luY2x1ZGUgXCIkaW50ZXJmYWNlTmFtZS5oXCJcbiI7CisgICAgICAgIHByaW50
IEYgIiAgICBpZiAoZXZlbnRUeXBlID09IFwiJGV2ZW50TmFtZVwiKVxuIjsKKyAgICAgICAgcHJp
bnQgRiAiICAgICAgICByZXR1cm4gJHtpbnRlcmZhY2VOYW1lfTo6Y3JlYXRlKCk7XG4iOwogICAg
ICAgICBwcmludCBGICIjZW5kaWZcbiIgaWYgJGNvbmRpdGlvbmFsOwogICAgIH0KIAotICAgIHBy
aW50IEYgIlxubmFtZXNwYWNlIFdlYkNvcmUge1xuXG4iOworICAgIHByaW50IEYgIiAgICByZXR1
cm4gMDtcbiI7CisgICAgcHJpbnQgRiAifVxuIjsKKyAgICBwcmludCBGICJcbiI7CisgICAgcHJp
bnQgRiAifSAvLyBuYW1lc3BhY2UgV2ViQ29yZVxuIjsKKyAgICBjbG9zZSBGOworfQorCitzdWIg
cHJpbnRNYWNyb0ZpbGUoJCkKK3sKKyAgICBteSAkcGF0aCA9IHNoaWZ0OworICAgIG15ICRGOwog
Ci0gICAgcHJpbnQgRiAiUGFzc1JlZlB0cjxFdmVudD4gRXZlbnRGYWN0b3J5OjpjcmVhdGUoY29u
c3QgU3RyaW5nJiBldmVudFR5cGUpXG4iOwotICAgIHByaW50IEYgIntcbiI7CisgICAgb3BlbiBG
LCAiPiRwYXRoIjsKKworICAgIHByaW50TGljZW5zZUhlYWRlcigkRik7CisKKyAgICBwcmludCBG
ICIjaWZuZGVmIEV2ZW50SW50ZXJmYWNlc19oXG4iOworICAgIHByaW50IEYgIiNkZWZpbmUgRXZl
bnRJbnRlcmZhY2VzX2hcbiI7CisgICAgcHJpbnQgRiAiXG4iOworCisgICAgbXkgJXVuY29uZGl0
aW9uYWxJbnRlcmZhY2VzID0gKCk7CisgICAgbXkgJWludGVyZmFjZXNCeUNvbmRpdGlvbmFsID0g
KCk7CiAKICAgICBmb3IgbXkgJGV2ZW50TmFtZSAoc29ydCBrZXlzICVwYXJzZWRFdmVudHMpIHsK
ICAgICAgICAgbXkgJGNvbmRpdGlvbmFsID0gJHBhcnNlZEV2ZW50c3skZXZlbnROYW1lfXsiY29u
ZGl0aW9uYWwifTsKICAgICAgICAgbXkgJGludGVyZmFjZU5hbWUgPSBpbnRlcmZhY2VGb3JFdmVu
dCgkZXZlbnROYW1lKTsKIAorICAgICAgICBpZiAoJGNvbmRpdGlvbmFsKSB7CisgICAgICAgICAg
ICBpZiAoIWRlZmluZWQoJGludGVyZmFjZXNCeUNvbmRpdGlvbmFseyRjb25kaXRpb25hbH0pKSB7
CisgICAgICAgICAgICAgICAgJGludGVyZmFjZXNCeUNvbmRpdGlvbmFseyRjb25kaXRpb25hbH0g
PSAoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICRpbnRlcmZhY2VzQnlDb25kaXRpb25h
bHskY29uZGl0aW9uYWx9eyRpbnRlcmZhY2VOYW1lfSA9IDE7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAkdW5jb25kaXRpb25hbEludGVyZmFjZXN7JGludGVyZmFjZU5hbWV9ID0gMQor
ICAgICAgICB9CisgICAgfQorCisgICAgZm9yIG15ICRjb25kaXRpb25hbCAoc29ydCBrZXlzICVp
bnRlcmZhY2VzQnlDb25kaXRpb25hbCkgeworICAgICAgICBwcmludCBGICIjaWYgRU5BQkxFKCRj
b25kaXRpb25hbClcbiI7CisgICAgICAgIHByaW50IEYgIiNkZWZpbmUgRE9NX0VWRU5UX0lOVEVS
RkFDRVNfRk9SX0VBQ0hfJGNvbmRpdGlvbmFsKG1hY3JvKSBcXFxuIjsKKworICAgICAgICBmb3Ig
bXkgJGludGVyZmFjZSAoc29ydCBrZXlzICV7ICRpbnRlcmZhY2VzQnlDb25kaXRpb25hbHskY29u
ZGl0aW9uYWx9IH0pIHsKKyAgICAgICAgICAgIG5leHQgaWYgZGVmaW5lZCgkdW5jb25kaXRpb25h
bEludGVyZmFjZXN7JGludGVyZmFjZX0pOworICAgICAgICAgICAgcHJpbnQgRiAiICAgIG1hY3Jv
KCRpbnRlcmZhY2UpIFxcXG4iOworICAgICAgICB9CisKKyAgICAgICAgcHJpbnQgRiAiLy8gRW5k
IG9mIERPTV9FVkVOVF9JTlRFUkZBQ0VTX0ZPUl9FQUNIXyRjb25kaXRpb25hbFxuIjsKKyAgICAg
ICAgcHJpbnQgRiAiI2Vsc2VcbiI7CisgICAgICAgIHByaW50IEYgIiNkZWZpbmUgRE9NX0VWRU5U
X0lOVEVSRkFDRVNfRk9SX0VBQ0hfJGNvbmRpdGlvbmFsKG1hY3JvKVxuIjsKKyAgICAgICAgcHJp
bnQgRiAiI2VuZGlmXG4iOworICAgICAgICBwcmludCBGICJcbiI7CisgICAgfQorCisgICAgcHJp
bnQgRiAiI2RlZmluZSBET01fRVZFTlRfSU5URVJGQUNFU19GT1JfRUFDSChtYWNybykgXFxcbiI7
CisgICAgcHJpbnQgRiAiICAgIFxcXG4iOworICAgIGZvciBteSAkaW50ZXJmYWNlIChzb3J0IGtl
eXMgJXVuY29uZGl0aW9uYWxJbnRlcmZhY2VzKSB7CisgICAgICAgICAgICBwcmludCBGICIgICAg
bWFjcm8oJGludGVyZmFjZSkgXFxcbiI7CisgICAgfQorICAgIHByaW50IEYgIiAgICBcXFxuIjsK
KyAgICBmb3IgbXkgJGNvbmRpdGlvbmFsIChzb3J0IGtleXMgJWludGVyZmFjZXNCeUNvbmRpdGlv
bmFsKSB7CisgICAgICAgIHByaW50IEYgIiAgICBET01fRVZFTlRfSU5URVJGQUNFU19GT1JfRUFD
SF8kY29uZGl0aW9uYWwobWFjcm8pIFxcXG4iOworICAgIH0KKworICAgIHByaW50IEYgIlxuIjsK
KyAgICBwcmludCBGICIjZW5kaWYgLy8gRXZlbnRJbnRlcmZhY2VzX2hcbiI7CisKKyAgICBjbG9z
ZSBGOworfQorCitzdWIgcHJpbnRIZWFkZXJzRmlsZSgkKQoreworICAgIG15ICRwYXRoID0gc2hp
ZnQ7CisgICAgbXkgJEY7CisKKyAgICBvcGVuIEYsICI+JHBhdGgiOworCisgICAgcHJpbnRMaWNl
bnNlSGVhZGVyKCRGKTsKKworICAgIHByaW50IEYgIiNpZm5kZWYgRXZlbnRIZWFkZXJzX2hcbiI7
CisgICAgcHJpbnQgRiAiI2RlZmluZSBFdmVudEhlYWRlcnNfaFxuIjsKKyAgICBwcmludCBGICJc
biI7CisKKyAgICBteSAlaW5jbHVkZWRJbnRlcmZhY2VzID0gKCk7CisKKyAgICBmb3IgbXkgJGV2
ZW50TmFtZSAoc29ydCBrZXlzICVwYXJzZWRFdmVudHMpIHsKKyAgICAgICAgbXkgJGNvbmRpdGlv
bmFsID0gJHBhcnNlZEV2ZW50c3skZXZlbnROYW1lfXsiY29uZGl0aW9uYWwifTsKKyAgICAgICAg
bXkgJGludGVyZmFjZU5hbWUgPSBpbnRlcmZhY2VGb3JFdmVudCgkZXZlbnROYW1lKTsKKworICAg
ICAgICBuZXh0IGlmIGRlZmluZWQoJGluY2x1ZGVkSW50ZXJmYWNlc3skaW50ZXJmYWNlTmFtZX0p
OworICAgICAgICAkaW5jbHVkZWRJbnRlcmZhY2VzeyRpbnRlcmZhY2VOYW1lfSA9IDE7CisKICAg
ICAgICAgcHJpbnQgRiAiI2lmIEVOQUJMRSgkY29uZGl0aW9uYWwpXG4iIGlmICRjb25kaXRpb25h
bDsKLSAgICAgICAgcHJpbnQgRiAiICAgIGlmIChldmVudFR5cGUgPT0gXCIkZXZlbnROYW1lXCIp
XG4iOwotICAgICAgICBwcmludCBGICIgICAgICAgIHJldHVybiAke2ludGVyZmFjZU5hbWV9Ojpj
cmVhdGUoKTtcbiI7CisgICAgICAgIHByaW50IEYgIiNpbmNsdWRlIFwiJGludGVyZmFjZU5hbWUu
aFwiXG4iOworICAgICAgICBwcmludCBGICIjaWYgVVNFKEpTQylcbiI7CisgICAgICAgIHByaW50
IEYgIiNpbmNsdWRlIFwiSlMkaW50ZXJmYWNlTmFtZS5oXCJcbiI7CisgICAgICAgIHByaW50IEYg
IiNlbGlmIFVTRShWOClcbiI7CisgICAgICAgIHByaW50IEYgIiNpbmNsdWRlIFwiVjgkaW50ZXJm
YWNlTmFtZS5oXCJcbiI7CisgICAgICAgIHByaW50IEYgIiNlbmRpZlxuIjsKICAgICAgICAgcHJp
bnQgRiAiI2VuZGlmXG4iIGlmICRjb25kaXRpb25hbDsKICAgICB9CiAKLSAgICBwcmludCBGICIg
ICAgcmV0dXJuIDA7XG4iOwotICAgIHByaW50IEYgIn1cbiI7CisgICAgcHJpbnQgRiAiXG4iOwor
ICAgIHByaW50IEYgIiNlbmRpZiAvLyBFdmVudEhlYWRlcnNfaFxuIjsKIAotICAgIHByaW50IEYg
IlxufSAvLyBuYW1lc3BhY2UgV2ViQ29yZVxuIjsKICAgICBjbG9zZSBGOwogfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQuY3BwCShy
ZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4
dEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIldlYkdMQ29udGV4dEV2ZW50LmgiCiAKKyNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV2ViR0xDb250ZXh0RXZlbnQ6Oldl
YkdMQ29udGV4dEV2ZW50KCkKQEAgLTUxLDkgKzUzLDkgQEAgdm9pZCBXZWJHTENvbnRleHRFdmVu
dDo6aW5pdEV2ZW50KGNvbnN0IAogICAgIG1fc3RhdHVzTWVzc2FnZSA9IHN0YXR1c01lc3NhZ2U7
CiB9CiAKLWJvb2wgV2ViR0xDb250ZXh0RXZlbnQ6OmlzV2ViR0xDb250ZXh0RXZlbnQoKSBjb25z
dAorY29uc3QgQXRvbWljU3RyaW5nJiBXZWJHTENvbnRleHRFdmVudDo6aW50ZXJmYWNlTmFtZSgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRl
cmZhY2VGb3JXZWJHTENvbnRleHRFdmVudDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5o
CShyZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29u
dGV4dEV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDEwICs0NCwxMCBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGluaXRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IFN0cmluZyYgc3RhdHVzTWVzc2FnZSk7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNXZWJHTENvbnRleHRFdmVudCgpIGNvbnN0OwotCiAgICAgY29uc3Qg
U3RyaW5nJiBzdGF0dXNNZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXNNZXNzYWdlOyB9
CiAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0
OworCiBwcml2YXRlOgogICAgIFdlYkdMQ29udGV4dEV2ZW50KCk7CiAgICAgV2ViR0xDb250ZXh0
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBjb25zdCBTdHJpbmcmIHN0YXR1c01lc3NhZ2UpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5j
cHAJKHJldmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTVN0b3JhZ2VSZXNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIsNyBA
QCB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZTo6c3RhcnRSCiB2b2lkIEluc3BlY3Rv
ckRPTVN0b3JhZ2VSZXNvdXJjZTo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IEV2ZW50KiBldmVudCkKIHsKICAgICBBU1NFUlQobV9mcm9udGVuZCk7Ci0gICAgaWYgKGV2ZW50
LT50eXBlKCkgIT0gZXZlbnROYW1lcygpLnN0b3JhZ2VFdmVudCB8fCAhZXZlbnQtPmlzU3RvcmFn
ZUV2ZW50KCkpCisgICAgaWYgKGV2ZW50LT50eXBlKCkgIT0gZXZlbnROYW1lcygpLnN0b3JhZ2VF
dmVudCB8fCBldmVudC0+aW50ZXJmYWNlTmFtZSgpICE9IGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VG
b3JTdG9yYWdlRXZlbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0b3JhZ2VFdmVudCogc3Rv
cmFnZUV2ZW50ID0gc3RhdGljX2Nhc3Q8U3RvcmFnZUV2ZW50Kj4oZXZlbnQpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcDJwL01lZGlhU3RyZWFtRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3AycC9NZWRpYVN0cmVhbUV2ZW50LmNwcAkocmV2aXNpb24gOTc5MzcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wMnAvTWVkaWFTdHJlYW1FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTcyLDYgKzcyLDExIEBAIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IE1lZGlhU3RyZWFtRXZlbnQK
ICAgICByZXR1cm4gbV9zdHJlYW07CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFTdHJl
YW1FdmVudDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMo
KS5pbnRlcmZhY2VGb3JNZWRpYVN0cmVhbUV2ZW50OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcDJwL01lZGlhU3RyZWFtRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
MnAvTWVkaWFTdHJlYW1FdmVudC5oCShyZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9XZWJDb3Jl
L3AycC9NZWRpYVN0cmVhbUV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDExICs0MywxMCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGluaXRNZWRpYVN0cmVhbUV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxN
ZWRpYVN0cmVhbT4pOwogCi0gICAgLy8gRnJvbSBFdmVudFRhcmdldC4KLSAgICB2aXJ0dWFsIGJv
b2wgaXNNZWRpYVN0cmVhbUV2ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbT4gc3RyZWFtKCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIGNvbnN0
IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIE1l
ZGlhU3RyZWFtRXZlbnQoKTsKICAgICBNZWRpYVN0cmVhbUV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbT4pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dEV2ZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0RXZlbnQuY3Bw
CShyZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRFdmVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEwICsyOSwxMyBAQAogICovCiAKICNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJTcGVlY2hJbnB1dEV2ZW50LmgiCiAKICNpZiBFTkFCTEUo
SU5QVVRfU1BFRUNIKQogCisjaW5jbHVkZSAiU3BlZWNoSW5wdXRFdmVudC5oIgorCisjaW5jbHVk
ZSAiRXZlbnROYW1lcy5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8U3Bl
ZWNoSW5wdXRFdmVudD4gU3BlZWNoSW5wdXRFdmVudDo6Y3JlYXRlKCkKQEAgLTU5LDYgKzYyLDEx
IEBAIFNwZWVjaElucHV0RXZlbnQ6On5TcGVlY2hJbnB1dEV2ZW50KCkKIHsKIH0KIAorY29uc3Qg
QXRvbWljU3RyaW5nJiBTcGVlY2hJbnB1dEV2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclNwZWVjaElucHV0RXZlbnQ7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9TUEVF
Q0gpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0RXZlbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0RXZlbnQuaAkocmV2aXNpb24g
OTc5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0RXZlbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsMTAgKzQzLDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTcGVlY2hJbnB1dEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IGNvbnN0IFNwZWVjaElucHV0UmVzdWx0QXJyYXkmIHJlc3VsdHMpOwogICAgIH5TcGVlY2hJbnB1
dEV2ZW50KCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNTcGVlY2hJbnB1dEV2ZW50KCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgU3BlZWNoSW5wdXRSZXN1bHRMaXN0KiByZXN1bHRzKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXN1bHRzLmdldCgpOyB9CiAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIFNwZWVj
aElucHV0RXZlbnQoKTsKICAgICBTcGVlY2hJbnB1dEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBjb25zdCBTcGVlY2hJbnB1dFJlc3VsdEFycmF5JiByZXN1bHRzKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAJ
KHJldmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hh
bmdlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1MywxMSBAQCBTdHJpbmcgSURC
VmVyc2lvbkNoYW5nZUV2ZW50Ojp2ZXJzaW9uKCkKICAgICByZXR1cm4gbV92ZXJzaW9uOwogfQog
Citjb25zdCBBdG9taWNTdHJpbmcmIElEQlZlcnNpb25DaGFuZ2VFdmVudDo6aW50ZXJmYWNlTmFt
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JJREJWZXJz
aW9uQ2hhbmdlRXZlbnQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmgJ
KHJldmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hh
bmdlRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTAgKzQzLDEwIEBAIHB1YmxpYzoKICAg
ICAvLyBGSVhNRTogTmVlZCB0byBhbGxvdyBjcmVhdGlvbiBvZiB0aGVzZSBldmVudHMgZnJvbSBK
Uy4KICAgICB2aXJ0dWFsIH5JREJWZXJzaW9uQ2hhbmdlRXZlbnQoKTsKIAotICAgIHZpcnR1YWwg
Ym9vbCBpc0lEQlZlcnNpb25DaGFuZ2VFdmVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQog
ICAgIHZpcnR1YWwgU3RyaW5nIHZlcnNpb24oKTsKIAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWlj
U3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgSURCVmVyc2lv
bkNoYW5nZUV2ZW50KGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnQuY3Bw
CShyZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlN0b3JhZ2VFdmVudC5oIgogCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgog
I2luY2x1ZGUgIlN0b3JhZ2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzIsNCArNzMs
OSBAQCB2b2lkIFN0b3JhZ2VFdmVudDo6aW5pdFN0b3JhZ2VFdmVudChjb25zCiAgICAgbV9zdG9y
YWdlQXJlYSA9IHN0b3JhZ2VBcmVhOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIFN0b3JhZ2VF
dmVudDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5p
bnRlcmZhY2VGb3JTdG9yYWdlRXZlbnQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnQuaAkocmV2aXNpb24gOTc5MzcpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gTmVlZGVkIG9u
Y2Ugd2Ugc3VwcG9ydCBpbml0PGJsYW5rPkV2ZW50TlMKICAgICAgICAgLy8gdm9pZCBpbml0U3Rv
cmFnZUV2ZW50TlMoaW4gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwgaW4gRE9NU3RyaW5nIHR5cGVB
cmcsIGluIGJvb2xlYW4gY2FuQnViYmxlQXJnLCBpbiBib29sZWFuIGNhbmNlbGFibGVBcmcsIGlu
IERPTVN0cmluZyBrZXlBcmcsIGluIERPTVN0cmluZyBvbGRWYWx1ZUFyZywgaW4gRE9NU3RyaW5n
IG5ld1ZhbHVlQXJnLCBpbiBET01TdHJpbmcgdXJsQXJnLCBTdG9yYWdlIHN0b3JhZ2VBcmVhQXJn
KTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTdG9yYWdlRXZlbnQoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VO
YW1lKCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBTdG9yYWdlRXZlbnQoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdab29tRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdab29tRXZlbnQuY3BwCShyZXZpc2lvbiA5NzkzNykKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdab29tRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4
ICsyMCwxMSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKwogI2lmIEVOQUJMRShTVkcp
CisKICNpbmNsdWRlICJTVkdab29tRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNzEsOCArNzQsMTEgQEAgYm9vbCBTVkdab29tRXZl
bnQ6OmlzU1ZHWm9vbUV2ZW50KCkgY29ucwogICAgIHJldHVybiB0cnVlOwogfQogCitjb25zdCBB
dG9taWNTdHJpbmcmIFNWR1pvb21FdmVudDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JTVkdab29tRXZlbnQ7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCi0KLS8vIHZpbTp0cz00
Om5vZXQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdab29tRXZlbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHWm9vbUV2ZW50LmgJKHJldmlzaW9uIDk3OTM3KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21FdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NSw2ICs0NSw4IEBAIHB1YmxpYzoKIAogICAgIEZsb2F0UG9pbnQgbmV3VHJhbnNsYXRlKCkgY29u
c3Q7CiAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNv
bnN0OworCiBwcml2YXRlOgogICAgIFNWR1pvb21FdmVudCgpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9BdWRpb1Byb2Nlc3NpbmdFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Qcm9jZXNzaW5nRXZlbnQuY3BwCShyZXZpc2lvbiA5
NzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTgsOSArNTgsOSBAQCBBdWRpb1Byb2Nlc3NpbmdFdmVudDo6
fkF1ZGlvUHJvY2Vzc2luZ0V2CiB7CiB9CiAKLWJvb2wgQXVkaW9Qcm9jZXNzaW5nRXZlbnQ6Omlz
QXVkaW9Qcm9jZXNzaW5nRXZlbnQoKSBjb25zdAorY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb1By
b2Nlc3NpbmdFdmVudDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRydWU7
CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JBdWRpb1Byb2Nlc3NpbmdFdmVu
dDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vQXVkaW9Qcm9jZXNzaW5nRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9BdWRpb1Byb2Nlc3NpbmdFdmVudC5oCShyZXZpc2lvbiA5NzkzNykKKysrIFNv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQxLDExICs0MSwxMSBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCB+QXVkaW9Q
cm9jZXNzaW5nRXZlbnQoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvUHJvY2Vzc2luZ0V2
ZW50KCkgY29uc3Q7Ci0KICAgICBBdWRpb0J1ZmZlciogaW5wdXRCdWZmZXIoKSB7IHJldHVybiBt
X2lucHV0QnVmZmVyLmdldCgpOyB9CiAgICAgQXVkaW9CdWZmZXIqIG91dHB1dEJ1ZmZlcigpIHsg
cmV0dXJuIG1fb3V0cHV0QnVmZmVyLmdldCgpOyB9CiAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIEF1ZGlvUHJv
Y2Vzc2luZ0V2ZW50KCk7CiAgICAgQXVkaW9Qcm9jZXNzaW5nRXZlbnQoUGFzc1JlZlB0cjxBdWRp
b0J1ZmZlcj4gaW5wdXRCdWZmZXIsIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXI+IG91dHB1dEJ1ZmZl
cik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db21wbGV0aW9u
RXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxpbmVB
dWRpb0NvbXBsZXRpb25FdmVudC5jcHAJKHJldmlzaW9uIDk3OTM3KQorKysgU291cmNlL1dlYkNv
cmUvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTgsOSArNTgsOSBAQCBPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQ6On5PZmZsaW5l
QXVkCiB7CiB9CiAKLWJvb2wgT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50Ojppc09mZmxpbmVB
dWRpb0NvbXBsZXRpb25FdmVudCgpIGNvbnN0Citjb25zdCBBdG9taWNTdHJpbmcmIE9mZmxpbmVB
dWRpb0NvbXBsZXRpb25FdmVudDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IHRydWU7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JPZmZsaW5lQXVkaW9D
b21wbGV0aW9uRXZlbnQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVu
dC5oCShyZXZpc2lvbiA5NzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxpbmVB
dWRpb0NvbXBsZXRpb25FdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMCArNDEsMTAgQEAg
cHVibGljOgogICAgIAogICAgIHZpcnR1YWwgfk9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudCgp
OwogCi0gICAgdmlydHVhbCBib29sIGlzT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50KCkgY29u
c3Q7Ci0KICAgICBBdWRpb0J1ZmZlciogcmVuZGVyZWRCdWZmZXIoKSB7IHJldHVybiBtX3JlbmRl
cmVkQnVmZmVyLmdldCgpOyB9CiAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50
ZXJmYWNlTmFtZSgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIE9mZmxpbmVBdWRpb0NvbXBsZXRp
b25FdmVudCgpOwogICAgIE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudChQYXNzUmVmUHRyPEF1
ZGlvQnVmZmVyPiByZW5kZXJlZEJ1ZmZlcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93ZWJzb2Nr
ZXRzL0Nsb3NlRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRz
L0Nsb3NlRXZlbnQuaAkocmV2aXNpb24gOTc5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS93ZWJzb2Nr
ZXRzL0Nsb3NlRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsOCArNTAsNiBAQCBzdHJ1Y3Qg
Q2xvc2VFdmVudEluaXQgOiBwdWJsaWMgRXZlbnRJbml0CiAKIGNsYXNzIENsb3NlRXZlbnQgOiBw
dWJsaWMgRXZlbnQgewogcHVibGljOgotICAgIHZpcnR1YWwgYm9vbCBpc0Nsb3NlRXZlbnQoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbG9zZUV2ZW50
PiBjcmVhdGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbG9zZUV2ZW50
KCkpOwpAQCAtNzgsNiArNzYsOCBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgc2hvcnQgY29kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY29kZTsgfQogICAgIFN0cmluZyByZWFzb24oKSBjb25zdCB7IHJl
dHVybiBtX3JlYXNvbjsgfQogCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVy
ZmFjZU5hbWUoKSBjb25zdCB7IHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yQ2xvc2VF
dmVudDsgfQorCiBwcml2YXRlOgogICAgIENsb3NlRXZlbnQoKQogICAgICAgICA6IEV2ZW50KGV2
ZW50TmFtZXMoKS5jbG9zZUV2ZW50LCBmYWxzZSwgZmFsc2UpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oCShyZXZpc2lvbiA5Nzkz
NykKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2lmbmRlZiBYTUxIdHRwUmVxdWVzdFBy
b2dyZXNzRXZlbnRfaAogI2RlZmluZSBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRfaAogCisj
aW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIlByb2dyZXNzRXZlbnQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsOSArNDcsOSBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQg
bG9uZyBsb25nIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbG9hZGVkKCk7IH0KICAgICB1bnNp
Z25lZCBsb25nIGxvbmcgdG90YWxTaXplKCkgY29uc3QgeyByZXR1cm4gdG90YWwoKTsgfQogCi1w
cml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudCgp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYg
aW50ZXJmYWNlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JY
TUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQ7IH0KIAorcHJpdmF0ZToKICAgICBYTUxIdHRwUmVx
dWVzdFByb2dyZXNzRXZlbnQoKSB7IH0KICAgICBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGxlbmd0aENvbXB1dGFibGUsIHVuc2lnbmVk
IGxvbmcgbG9uZyBsb2FkZWQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbCkKICAgICAgICAgOiBQ
cm9ncmVzc0V2ZW50KHR5cGUsIGxlbmd0aENvbXB1dGFibGUsIGxvYWRlZCwgdG90YWwpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111868</attachid>
            <date>2011-10-20 16:27:21 -0700</date>
            <delta_ts>2011-10-20 16:27:21 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-70483-20111020162720.patch</filename>
            <type>text/plain</type>
            <size>80729</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4MDM0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTM1IEBACisyMDExLTEwLTIwICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRXZlbnQuaCBzaG91bGRuJ3QgbmVl
ZCB0byBrbm93IGFib3V0IGV2ZXJ5IGlmZGVmIGFuZCBmZWF0dXJlIHRoYXQgdXNlcyBldmVudHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwNDgzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgVGhpcyBwYXRjaCBl
eHBhbmRzIG1ha2VfZXZlbnRfZmFjdG9yeS5wbCB0byBjcmVhdGUgYQorICAgICAgICBET01fRVZF
TlRfSU5URVJGQUNFU19GT1JfRUFDSCBtYWNybyB0aGF0IHdlIGNhbiB1c2UgdG8gZ2VuZXJhdGUg
Y29kZQorICAgICAgICBmb3IgZWFjaCBFdmVudCBpbnRlcmZhY2UuICBXZSB0aGVuIGFwcGx5IHRo
YXQgbWFjcm8gdG8gcmVtb3ZpbmcgYSBsYXJnZQorICAgICAgICBudW1iZXIgb2YgdmlydHVhbCBm
dW5jdGlvbnMgb24gRXZlbnQuICBJbnN0ZWFkIG9mIGhhdmluZyBhIEJvb2xlYW4KKyAgICAgICAg
dmlydHVhbCBmdW5jdGlvbiBmb3IgZWFjaCBzdWJjbGFzcyBvZiBFdmVudCwgd2UgaGF2ZSBhIHNp
bmdsZSB2aXJ0dWFsCisgICAgICAgIGludGVyZmFjZU5hbWUgZnVuY3Rpb24sIHdoaWNoIHJldHVy
bnMgYW4gQXRvbWljU3RyaW5nLiAgV2UgdGhlbiB1c2UgdGhlCisgICAgICAgIEF0b21pY1N0cmlu
ZyB0byBqdW1wIHRocm91Z2ggYSBIYXNoTWFwIHRvIGZpbmQgdGhlIGFwcHJvcHJpYXRlCisgICAg
ICAgIEphdmFTY3JpcHQgd3JhcHBlciB0eXBlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyBu
b3QgcmVtb3ZlIGFsbCBvZiB0aGUgQm9vbGVhbiB2aXJ0dWFsIGZ1bmN0aW9ucyBiZWNhdXNlCisg
ICAgICAgIEkgZ290IGV4aGF1c3RlZCBtYWtpbmcgYWxsIG9mIHRoZXNlIGVkaXRzLCBidXQgSSBk
aWQgcmVtb3ZlIGFsbCB0aGUKKyAgICAgICAgb25lcyB0aGF0IGludm9sdmUgaWZkZWZzLiAgQSBm
dXR1cmUgcGF0Y2ggd2lsbCByZW1vdmUgbW9yZS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOEV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAg
ICAqIGRvbS9CZWZvcmVMb2FkRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJlZm9yZUxvYWRF
dmVudDo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpCZWZvcmVMb2FkRXZlbnQ6
OmlzQmVmb3JlTG9hZEV2ZW50KToKKyAgICAgICAgKiBkb20vQmVmb3JlVGV4dEluc2VydGVkRXZl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmVmb3JlVGV4dEluc2VydGVkRXZlbnQ6OmludGVy
ZmFjZU5hbWUpOgorICAgICAgICAqIGRvbS9CZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5oOgorICAg
ICAgICAqIGRvbS9DbGlwYm9hcmRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmRFdmVudDo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICogZG9tL0NsaXBib2FyZEV2ZW50Lmg6
CisgICAgICAgICogZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29tcG9zaXRpb25FdmVudDo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICogZG9tL0NvbXBvc2l0
aW9uRXZlbnQuaDoKKyAgICAgICAgKiBkb20vQ3VzdG9tRXZlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VzdG9tRXZlbnQ6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIGRvbS9DdXN0b21F
dmVudC5oOgorICAgICAgICAqIGRvbS9EZXZpY2VNb3Rpb25FdmVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEZXZpY2VNb3Rpb25FdmVudDo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICogZG9t
L0RldmljZU1vdGlvbkV2ZW50Lmg6CisgICAgICAgICogZG9tL0RldmljZU9yaWVudGF0aW9uRXZl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25FdmVudDo6aW50ZXJm
YWNlTmFtZSk6CisgICAgICAgICogZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuaDoKKyAgICAg
ICAgKiBkb20vRXJyb3JFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFcnJvckV2ZW50Ojpp
bnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBkb20vRXJyb3JFdmVudC5oOgorICAgICAgICAqIGRv
bS9FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudDo6aW50ZXJmYWNlTmFtZSk6Cisg
ICAgICAgICogZG9tL0V2ZW50Lmg6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnROYW1lczo6RXZlbnROYW1lcyk6CisgICAgICAgICogZG9tL0V2
ZW50TmFtZXMuaDoKKyAgICAgICAgKiBkb20vSGFzaENoYW5nZUV2ZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpIYXNoQ2hhbmdlRXZlbnQ6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIGRvbS9L
ZXlib2FyZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OmludGVy
ZmFjZU5hbWUpOgorICAgICAgICAqIGRvbS9LZXlib2FyZEV2ZW50Lmg6CisgICAgICAgICogZG9t
L01lc3NhZ2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6OmludGVy
ZmFjZU5hbWUpOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuaDoKKyAgICAgICAgKiBkb20v
TW91c2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZUV2ZW50OjppbnRlcmZhY2VO
YW1lKToKKyAgICAgICAgKiBkb20vTW91c2VFdmVudC5oOgorICAgICAgICAqIGRvbS9NdXRhdGlv
bkV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uRXZlbnQ6OmludGVyZmFjZU5h
bWUpOgorICAgICAgICAqIGRvbS9NdXRhdGlvbkV2ZW50Lmg6CisgICAgICAgICogZG9tL092ZXJm
bG93RXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3ZlcmZsb3dFdmVudDo6aW50ZXJmYWNl
TmFtZSk6CisgICAgICAgICogZG9tL092ZXJmbG93RXZlbnQuaDoKKyAgICAgICAgKiBkb20vUGFn
ZVRyYW5zaXRpb25FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlVHJhbnNpdGlvbkV2
ZW50OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBkb20vUGFnZVRyYW5zaXRpb25FdmVudC5o
OgorICAgICAgICAqIGRvbS9Qb3BTdGF0ZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBv
cFN0YXRlRXZlbnQ6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIGRvbS9Qb3BTdGF0ZUV2ZW50
Lmg6CisgICAgICAgICogZG9tL1Byb2dyZXNzRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UHJvZ3Jlc3NFdmVudDo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICogZG9tL1Byb2dyZXNzRXZl
bnQuaDoKKyAgICAgICAgKiBkb20vVGV4dEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRFdmVudDo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICogZG9tL1RleHRFdmVudC5oOgorICAg
ICAgICAqIGRvbS9Ub3VjaEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoRXZlbnQ6
OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIGRvbS9Ub3VjaEV2ZW50Lmg6CisgICAgICAgICog
ZG9tL1VJRXZlbnQuaDoKKyAgICAgICAgKiBkb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QW5pbWF0aW9uRXZlbnQ6OmludGVyZmFjZU5hbWUpOgor
ICAgICAgICAqIGRvbS9XZWJLaXRBbmltYXRpb25FdmVudC5oOgorICAgICAgICAqIGRvbS9XZWJL
aXRUcmFuc2l0aW9uRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0VHJhbnNpdGlv
bkV2ZW50OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBkb20vV2ViS2l0VHJhbnNpdGlvbkV2
ZW50Lmg6CisgICAgICAgICogZG9tL1doZWVsRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2hlZWxFdmVudDo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICogZG9tL1doZWVsRXZlbnQuaDoK
KyAgICAgICAgKiBkb20vbWFrZV9ldmVudF9mYWN0b3J5LnBsOgorICAgICAgICAocHJpbnRGYWN0
b3J5RmlsZSk6CisgICAgICAgIChwcmludE1hY3JvRmlsZSk6CisgICAgICAgIChwcmludEhlYWRl
cnNGaWxlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTENvbnRleHRFdmVudDo6aW50ZXJmYWNlTmFtZSk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZTo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIHAycC9N
ZWRpYVN0cmVhbUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRXZlbnQ6
OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHAycC9NZWRpYVN0cmVhbUV2ZW50Lmg6CisgICAg
ICAgICogcGFnZS9TcGVlY2hJbnB1dEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVj
aElucHV0RXZlbnQ6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHBhZ2UvU3BlZWNoSW5wdXRF
dmVudC5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlZlcnNpb25DaGFuZ2VFdmVudDo6aW50ZXJmYWNlTmFtZSk6Cisg
ICAgICAgICogc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaDoKKyAgICAgICAgKiBzdG9y
YWdlL1N0b3JhZ2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlRXZlbnQ6Omlu
dGVyZmFjZU5hbWUpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZUV2ZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR1pvb21FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdab29tRXZlbnQ6
OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHN2Zy9TVkdab29tRXZlbnQuaDoKKyAgICAgICAg
KiB3ZWJhdWRpby9BdWRpb1Byb2Nlc3NpbmdFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1Byb2Nlc3NpbmdFdmVudDo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICogd2ViYXVkaW8v
QXVkaW9Qcm9jZXNzaW5nRXZlbnQuaDoKKyAgICAgICAgKiB3ZWJhdWRpby9PZmZsaW5lQXVkaW9D
b21wbGV0aW9uRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T2ZmbGluZUF1ZGlvQ29tcGxl
dGlvbkV2ZW50OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiB3ZWJhdWRpby9PZmZsaW5lQXVk
aW9Db21wbGV0aW9uRXZlbnQuaDoKKyAgICAgICAgKiB3ZWJzb2NrZXRzL0Nsb3NlRXZlbnQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNsb3NlRXZlbnQ6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAq
IHhtbC9YTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudDo6aW50ZXJmYWNlTmFtZSk6CisKIDIwMTEtMTAtMjAg
IEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVu
ZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IGRvZXMgbm90IGNhbGwgaXRzIGNoaWxkcmVuJ3MgbGF5
b3V0IG1ldGhvZApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiA5
ODAzNCkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29w
eSkKQEAgLTEwLDYgKzEwLDggQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0NTU1ZhbHVlS2V5d29yZHMuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0NvbG9yRGF0YS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvRXZlbnRGYWN0
b3J5LmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9FdmVudEhlYWRlcnMuaCBcCisJRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9FdmVudEludGVyZmFjZXMuaCBcCiAJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9IVE1MRWxlbWVudEZhY3RvcnkuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0hUTUxFbGVtZW50RmFjdG9yeS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0hUTUxFbnRp
dHlUYWJsZS5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gOTgwMzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTQwOSw2ICs0MDks
OCBAQAogICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
RE9NWFBhdGhFeHByZXNzaW9uLmgnLAogICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvRE9NWFBhdGhOU1Jlc29sdmVyLmgnLAogICAgICAgICAgICAgJzwo
UFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvRE9NWFBhdGhSZXN1bHQuaCcsCisg
ICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9FdmVudEhl
YWRlcnMuaCcsCisgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9FdmVudEludGVyZmFjZXMuaCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9IVE1MTmFtZXMuaCcsCiAgICAgICAgICAgICAnPChQUk9EVUNU
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NTU1N0eWxlRGVjbGFyYXRpb24uaCcsCiAg
ICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RPTVdp
bmRvdy5oJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCShyZXZp
c2lvbiA5ODAzNCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCSh3
b3JraW5nIGNvcHkpCkBAIC03MDcsNiArNzA3LDggQEAKICAgICAgICAgICBdLAogICAgICAgICAg
ICdvdXRwdXRzJzogWwogICAgICAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dl
YmtpdC9FdmVudEZhY3RvcnkuY3BwJywKKyAgICAgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElB
VEVfRElSKS93ZWJraXQvRXZlbnRIZWFkZXJzLmgnLAorICAgICAgICAgICAgJzwoU0hBUkVEX0lO
VEVSTUVESUFURV9ESVIpL3dlYmtpdC9FdmVudEludGVyZmFjZXMuaCcsCiAgICAgICAgICAgXSwK
ICAgICAgICAgICAnYWN0aW9uJzogWwogICAgICAgICAgICAgJ3B5dGhvbicsCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gOTgw
MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29y
a2luZyBjb3B5KQpAQCAtNTQ2LDYgKzU0NiwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxG
aWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEV2ZW50SGVhZGVycy5oIgorCQkJCT4KKwkJCTwvRmls
ZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEV2ZW50SW50ZXJmYWNlcy5oIgorCQkJ
CT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEhUTUxFbGVtZW50
RmFjdG9yeS5oIgogCQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDk4MDM0KQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0zMjEzLDYgKzMyMTMsOCBAQAogCQk5NzA1OTk3ODEwN0Q5NzUyMDBBNTBBN0Mg
LyogUG9saWN5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk3MDU5OTc0MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3MDU5OTc5
MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MDU5OTc1MTA3RDk3NTIwMEE1MEE3QyAvKiBQ
b2xpY3lDaGVja2VyLmNwcCAqLzsgfTsKIAkJOTcwNTk5N0ExMDdEOTc1MjAwQTUwQTdDIC8qIFBv
bGljeUNoZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk3MDU5OTc2MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTcwQjcyOEExNDRGRkFD
NjAwRjAwQTM3IC8qIEV2ZW50SW50ZXJmYWNlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwQjcyODkxNDRGRkFDNjAwRjAwQTM3IC8qIEV2ZW50SW50
ZXJmYWNlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTk3MEI3MkE2MTQ1MDA4RUIwMEYwMEEzNyAvKiBFdmVudEhlYWRlcnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MEI3MkE1MTQ1MDA4RUIwMEYw
MEEzNyAvKiBFdmVudEhlYWRlcnMuaCAqLzsgfTsKIAkJOTcxNDkxREExMkZENjVFODAwMUJGRUIx
IC8qIFVSTFN0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTcxNDkxRDkxMkZENjVFODAwMUJGRUIxIC8qIFVSTFN0cmluZy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3MjA1QUFGMTIzOTI4Q0Ew
MEIxNzM4MCAvKiBGVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzIwNUFBRDEyMzkyOENBMDBCMTczODAgLyogRlRQ
RGlyZWN0b3J5RG9jdW1lbnQuY3BwICovOyB9OwogCQk5NzIwNUFCMDEyMzkyOENBMDBCMTczODAg
LyogRlRQRGlyZWN0b3J5RG9jdW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk3MjA1QUFFMTIzOTI4Q0EwMEIxNzM4MCAvKiBGVFBEaXJlY3RvcnlE
b2N1bWVudC5oICovOyB9OwpAQCAtMTA0MDEsNiArMTA0MDMsOCBAQAogCQk5NzA1OTk3NDEwN0Q5
NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUG9saWN5Q2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTcwNTk5NzUxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9saWN5Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk3MDU5OTc2MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVj
a2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvbGljeUNoZWNrZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTcwQjcyODkxNDRGRkFDNjAwRjAwQTM3IC8q
IEV2ZW50SW50ZXJmYWNlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVu
dEludGVyZmFjZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTcwQjcyQTUxNDUw
MDhFQjAwRjAwQTM3IC8qIEV2ZW50SGVhZGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBFdmVudEhlYWRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcx
NDkxRDkxMkZENjVFODAwMUJGRUIxIC8qIFVSTFN0cmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBVUkxTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTcyMDVBQUQxMjM5MjhDQTAwQjE3MzgwIC8qIEZUUERpcmVjdG9yeURvY3VtZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZUUERpcmVjdG9yeURvY3VtZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcyMDVBQUUxMjM5MjhDQTAwQjE3Mzgw
IC8qIEZUUERpcmVjdG9yeURvY3VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZUUERpcmVjdG9yeURvY3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xNTI3Niw2ICsxNTI4MCw4IEBACiAJCQkJNjU2NTgxNDcwOUQxMzA0MzAwMEU2MUQ3IC8qIENT
U1ZhbHVlS2V5d29yZHMuZ3BlcmYgKi8sCiAJCQkJNjU2NTgxNDgwOUQxMzA0MzAwMEU2MUQ3IC8q
IENTU1ZhbHVlS2V5d29yZHMuaCAqLywKIAkJCQk5NzY2NTA0RTE0NEZCRkZFMDBGNkJCNTEgLyog
RXZlbnRGYWN0b3J5LmNwcCAqLywKKwkJCQk5NzBCNzJBNTE0NTAwOEVCMDBGMDBBMzcgLyogRXZl
bnRIZWFkZXJzLmggKi8sCisJCQkJOTcwQjcyODkxNDRGRkFDNjAwRjAwQTM3IC8qIEV2ZW50SW50
ZXJmYWNlcy5oICovLAogCQkJCUExN0M4MTIwMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVu
dEZhY3RvcnkuY3BwICovLAogCQkJCUExN0M4MTIxMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxl
bWVudEZhY3RvcnkuaCAqLywKIAkJCQlBOEJDMDQ5MTEyMTRGNjk2MDBCNUYxMjIgLyogSFRNTEVu
dGl0eVRhYmxlLmNwcCAqLywKQEAgLTI0Njk2LDYgKzI0NzAyLDggQEAKIAkJCQk5NzY2NTAxMzE0
NEZBQTQyMDBGNkJCNTEgLyogRXZlbnRGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMEVF
MERGNjE0NEY4MjU1MDBGODBCMEQgLyogV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTBFRTBERjgxNDRGODI1NTAwRjgwQjBEIC8qIFdlYkdMRGVidWdTaGFkZXJz
LmggaW4gSGVhZGVycyAqLywKKwkJCQk5NzBCNzI4QTE0NEZGQUM2MDBGMDBBMzcgLyogRXZlbnRJ
bnRlcmZhY2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NzBCNzJBNjE0NTAwOEVCMDBGMDBBMzcg
LyogRXZlbnRIZWFkZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCShyZXZpc2lvbiA5ODAzNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw5MiArMzAsMTQgQEAKICNpbmNsdWRlICJKU0V2ZW50LmgiCiAKICNpbmNsdWRlICJDbGlw
Ym9hcmQuaCIKLSNpbmNsdWRlICJDb21wb3NpdGlvbkV2ZW50LmgiCi0jaW5jbHVkZSAiQ3VzdG9t
RXZlbnQuaCIKLSNpbmNsdWRlICJEZXZpY2VNb3Rpb25FdmVudC5oIgotI2luY2x1ZGUgIkRldmlj
ZU9yaWVudGF0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUgIkpTQmVm
b3JlTG9hZEV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnRIZWFkZXJzLmgiCisjaW5jbHVkZSAiRXZl
bnRJbnRlcmZhY2VzLmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkpTQ2xp
cGJvYXJkLmgiCi0jaW5jbHVkZSAiSlNDdXN0b21FdmVudC5oIgotI2luY2x1ZGUgIkpTQ29tcG9z
aXRpb25FdmVudC5oIgotI2luY2x1ZGUgIkpTRGV2aWNlTW90aW9uRXZlbnQuaCIKLSNpbmNsdWRl
ICJKU0RldmljZU9yaWVudGF0aW9uRXZlbnQuaCIKLSNpbmNsdWRlICJKU0Vycm9yRXZlbnQuaCIK
LSNpbmNsdWRlICJKU0hhc2hDaGFuZ2VFdmVudC5oIgotI2luY2x1ZGUgIkpTS2V5Ym9hcmRFdmVu
dC5oIgotI2luY2x1ZGUgIkpTTWVzc2FnZUV2ZW50LmgiCi0jaW5jbHVkZSAiSlNNb3VzZUV2ZW50
LmgiCi0jaW5jbHVkZSAiSlNNdXRhdGlvbkV2ZW50LmgiCi0jaW5jbHVkZSAiSlNPdmVyZmxvd0V2
ZW50LmgiCi0jaW5jbHVkZSAiSlNQYWdlVHJhbnNpdGlvbkV2ZW50LmgiCi0jaW5jbHVkZSAiSlNQ
b3BTdGF0ZUV2ZW50LmgiCi0jaW5jbHVkZSAiSlNQcm9ncmVzc0V2ZW50LmgiCi0jaW5jbHVkZSAi
SlNTcGVlY2hJbnB1dEV2ZW50LmgiCi0jaW5jbHVkZSAiSlNTdG9yYWdlRXZlbnQuaCIKLSNpbmNs
dWRlICJKU1RleHRFdmVudC5oIgotI2luY2x1ZGUgIkpTVUlFdmVudC5oIgotI2luY2x1ZGUgIkpT
V2ViS2l0QW5pbWF0aW9uRXZlbnQuaCIKLSNpbmNsdWRlICJKU1dlYktpdFRyYW5zaXRpb25FdmVu
dC5oIgotI2luY2x1ZGUgIkpTV2hlZWxFdmVudC5oIgotI2luY2x1ZGUgIkpTWE1MSHR0cFJlcXVl
c3RQcm9ncmVzc0V2ZW50LmgiCi0jaW5jbHVkZSAiQmVmb3JlTG9hZEV2ZW50LmgiCi0jaW5jbHVk
ZSAiRXJyb3JFdmVudC5oIgotI2luY2x1ZGUgIkhhc2hDaGFuZ2VFdmVudC5oIgotI2luY2x1ZGUg
IktleWJvYXJkRXZlbnQuaCIKLSNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKLSNpbmNsdWRlICJN
b3VzZUV2ZW50LmgiCi0jaW5jbHVkZSAiTXV0YXRpb25FdmVudC5oIgotI2luY2x1ZGUgIk92ZXJm
bG93RXZlbnQuaCIKLSNpbmNsdWRlICJQYWdlVHJhbnNpdGlvbkV2ZW50LmgiCi0jaW5jbHVkZSAi
UG9wU3RhdGVFdmVudC5oIgotI2luY2x1ZGUgIlByb2dyZXNzRXZlbnQuaCIKLSNpbmNsdWRlICJT
cGVlY2hJbnB1dEV2ZW50LmgiCi0jaW5jbHVkZSAiU3RvcmFnZUV2ZW50LmgiCi0jaW5jbHVkZSAi
VGV4dEV2ZW50LmgiCi0jaW5jbHVkZSAiVUlFdmVudC5oIgotI2luY2x1ZGUgIldlYktpdEFuaW1h
dGlvbkV2ZW50LmgiCi0jaW5jbHVkZSAiV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmgiCi0jaW5jbHVk
ZSAiV2hlZWxFdmVudC5oIgotI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5o
IgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+Ci0KLSNpZiBFTkFCTEUoU1ZHKQotI2luY2x1
ZGUgIkpTU1ZHWm9vbUV2ZW50LmgiCi0jaW5jbHVkZSAiU1ZHWm9vbUV2ZW50LmgiCi0jZW5kaWYK
LQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0jaW5jbHVkZSAiSlNUb3VjaEV2ZW50LmgiCi0j
aW5jbHVkZSAiVG91Y2hFdmVudC5oIgotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKLSNpbmNsdWRlICJJREJWZXJzaW9uQ2hhbmdlRXZlbnQuaCIKLSNpbmNsdWRlICJKU0lE
QlZlcnNpb25DaGFuZ2VFdmVudC5oIgotI2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VCX0FVRElPKQot
I2luY2x1ZGUgIkF1ZGlvUHJvY2Vzc2luZ0V2ZW50LmgiCi0jaW5jbHVkZSAiSlNBdWRpb1Byb2Nl
c3NpbmdFdmVudC5oIgotI2luY2x1ZGUgIkpTT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50Lmgi
Ci0jaW5jbHVkZSAiT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmgiCi0jZW5kaWYKLQotI2lm
IEVOQUJMRShXRUJfU09DS0VUUykKLSNpbmNsdWRlICJDbG9zZUV2ZW50LmgiCi0jaW5jbHVkZSAi
SlNDbG9zZUV2ZW50LmgiCi0jZW5kaWYKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0jaW5j
bHVkZSAiSlNNZWRpYVN0cmVhbUV2ZW50LmgiCi0jaW5jbHVkZSAiTWVkaWFTdHJlYW1FdmVudC5o
IgotI2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VCR0wpCi0jaW5jbHVkZSAiSlNXZWJHTENvbnRleHRF
dmVudC5oIgotI2luY2x1ZGUgIldlYkdMQ29udGV4dEV2ZW50LmgiCi0jZW5kaWYKKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiB1
c2luZyBuYW1lc3BhY2UgSlNDOwogCkBAIC0xMjYsNiArNDgsMTcgQEAgSlNWYWx1ZSBKU0V2ZW50
OjpjbGlwYm9hcmREYXRhKEV4ZWNTdGF0ZQogICAgIHJldHVybiBpbXBsKCktPmlzQ2xpcGJvYXJk
RXZlbnQoKSA/IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGltcGwoKS0+Y2xpcGJvYXJkRGF0
YSgpKSA6IGpzVW5kZWZpbmVkKCk7CiB9CiAKKyNkZWZpbmUgREVDTEFSRV9FVkVOVF9XUkFQUEVS
KGludGVyZmFjZU5hbWUpIFwKKyAgICBzdGF0aWMgSlNET01XcmFwcGVyKiBjcmVhdGUjI2ludGVy
ZmFjZU5hbWUjI1dyYXBwZXIoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFdmVudCogZXZlbnQpIFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIENSRUFU
RV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIGludGVyZmFjZU5hbWUsIGV2ZW50KTsg
XAorICAgIH0gXAorCitET01fRVZFTlRfSU5URVJGQUNFU19GT1JfRUFDSChERUNMQVJFX0VWRU5U
X1dSQVBQRVIpCisKKyNkZWZpbmUgQUREX1dSQVBQRVJfVE9fTUFQKGludGVyZmFjZU5hbWUpIFwK
KyAgICBtYXAuYWRkKGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3IjI2ludGVyZmFjZU5hbWUuaW1w
bCgpLCBjcmVhdGUjI2ludGVyZmFjZU5hbWUjI1dyYXBwZXIpOworCiBKU1ZhbHVlIHRvSlMoRXhl
Y1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFdmVudCogZXZl
bnQpCiB7CiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKQEAgLTEzNyw5
NCArNzAsMTkgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYQogICAg
IGlmICh3cmFwcGVyKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAotICAgIGlmIChldmVudC0+
aXNVSUV2ZW50KCkpIHsKLSAgICAgICAgaWYgKGV2ZW50LT5pc0tleWJvYXJkRXZlbnQoKSkKLSAg
ICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0
LCBLZXlib2FyZEV2ZW50LCBldmVudCk7Ci0gICAgICAgIGVsc2UgaWYgKGV2ZW50LT5pc1RleHRF
dmVudCgpKQotICAgICAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBn
bG9iYWxPYmplY3QsIFRleHRFdmVudCwgZXZlbnQpOwotICAgICAgICBlbHNlIGlmIChldmVudC0+
aXNNb3VzZUV2ZW50KCkpCi0gICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVS
KGV4ZWMsIGdsb2JhbE9iamVjdCwgTW91c2VFdmVudCwgZXZlbnQpOwotICAgICAgICBlbHNlIGlm
IChldmVudC0+aXNXaGVlbEV2ZW50KCkpCi0gICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RP
TV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgV2hlZWxFdmVudCwgZXZlbnQpOwotI2lmIEVO
QUJMRShTVkcpCi0gICAgICAgIGVsc2UgaWYgKGV2ZW50LT5pc1NWR1pvb21FdmVudCgpKQotICAg
ICAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3Qs
IFNWR1pvb21FdmVudCwgZXZlbnQpOwotI2VuZGlmCi0gICAgICAgIGVsc2UgaWYgKGV2ZW50LT5p
c0NvbXBvc2l0aW9uRXZlbnQoKSkKLSAgICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dS
QVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBDb21wb3NpdGlvbkV2ZW50LCBldmVudCk7Ci0jaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICAgICAgZWxzZSBpZiAoZXZlbnQtPmlzVG91Y2hFdmVu
dCgpKQotICAgICAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9i
YWxPYmplY3QsIFRvdWNoRXZlbnQsIGV2ZW50KTsKLSNlbmRpZgotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwg
VUlFdmVudCwgZXZlbnQpOwotICAgIH0gZWxzZSBpZiAoZXZlbnQtPmlzTXV0YXRpb25FdmVudCgp
KQotICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVj
dCwgTXV0YXRpb25FdmVudCwgZXZlbnQpOwotICAgIGVsc2UgaWYgKGV2ZW50LT5pc092ZXJmbG93
RXZlbnQoKSkKLSAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9i
YWxPYmplY3QsIE92ZXJmbG93RXZlbnQsIGV2ZW50KTsKLSAgICBlbHNlIGlmIChldmVudC0+aXNN
ZXNzYWdlRXZlbnQoKSkKLSAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihleGVj
LCBnbG9iYWxPYmplY3QsIE1lc3NhZ2VFdmVudCwgZXZlbnQpOwotICAgIGVsc2UgaWYgKGV2ZW50
LT5pc1BhZ2VUcmFuc2l0aW9uRXZlbnQoKSkKLSAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01f
V1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIFBhZ2VUcmFuc2l0aW9uRXZlbnQsIGV2ZW50KTsK
LSAgICBlbHNlIGlmIChldmVudC0+aXNQcm9ncmVzc0V2ZW50KCkpIHsKLSAgICAgICAgaWYgKGV2
ZW50LT5pc1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudCgpKQotICAgICAgICAgICAgd3JhcHBl
ciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIFhNTEh0dHBSZXF1ZXN0
UHJvZ3Jlc3NFdmVudCwgZXZlbnQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB3cmFwcGVy
ID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgUHJvZ3Jlc3NFdmVudCwg
ZXZlbnQpOwotICAgIH0gZWxzZSBpZiAoZXZlbnQtPmlzQmVmb3JlTG9hZEV2ZW50KCkpCi0gICAg
ICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBCZWZv
cmVMb2FkRXZlbnQsIGV2ZW50KTsKLSAgICBlbHNlIGlmIChldmVudC0+aXNTdG9yYWdlRXZlbnQo
KSkKLSAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmpl
Y3QsIFN0b3JhZ2VFdmVudCwgZXZlbnQpOwotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQot
ICAgIGVsc2UgaWYgKGV2ZW50LT5pc0lEQlZlcnNpb25DaGFuZ2VFdmVudCgpKQotICAgICAgICB3
cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgSURCVmVyc2lv
bkNoYW5nZUV2ZW50LCBldmVudCk7Ci0jZW5kaWYKLSAgICBlbHNlIGlmIChldmVudC0+aXNXZWJL
aXRBbmltYXRpb25FdmVudCgpKQotICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVS
KGV4ZWMsIGdsb2JhbE9iamVjdCwgV2ViS2l0QW5pbWF0aW9uRXZlbnQsIGV2ZW50KTsKLSAgICBl
bHNlIGlmIChldmVudC0+aXNXZWJLaXRUcmFuc2l0aW9uRXZlbnQoKSkKLSAgICAgICAgd3JhcHBl
ciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIFdlYktpdFRyYW5zaXRp
b25FdmVudCwgZXZlbnQpOwotI2lmIEVOQUJMRShXT1JLRVJTKQotICAgIGVsc2UgaWYgKGV2ZW50
LT5pc0Vycm9yRXZlbnQoKSkKLSAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihl
eGVjLCBnbG9iYWxPYmplY3QsIEVycm9yRXZlbnQsIGV2ZW50KTsKLSNlbmRpZgotICAgIGVsc2Ug
aWYgKGV2ZW50LT5pc0hhc2hDaGFuZ2VFdmVudCgpKQotICAgICAgICB3cmFwcGVyID0gQ1JFQVRF
X0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgSGFzaENoYW5nZUV2ZW50LCBldmVudCk7
Ci0gICAgZWxzZSBpZiAoZXZlbnQtPmlzUG9wU3RhdGVFdmVudCgpKQotICAgICAgICB3cmFwcGVy
ID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgUG9wU3RhdGVFdmVudCwg
ZXZlbnQpOwotICAgIGVsc2UgaWYgKGV2ZW50LT5pc0N1c3RvbUV2ZW50KCkpCi0gICAgICAgIHdy
YXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBDdXN0b21FdmVu
dCwgZXZlbnQpOwotI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCi0gICAgZWxzZSBpZiAo
ZXZlbnQtPmlzRGV2aWNlTW90aW9uRXZlbnQoKSkKLSAgICAgICAgd3JhcHBlciA9IENSRUFURV9E
T01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIERldmljZU1vdGlvbkV2ZW50LCBldmVudCk7
Ci0gICAgZWxzZSBpZiAoZXZlbnQtPmlzRGV2aWNlT3JpZW50YXRpb25FdmVudCgpKQotICAgICAg
ICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgRGV2aWNl
T3JpZW50YXRpb25FdmVudCwgZXZlbnQpOwotI2VuZGlmCi0jaWYgRU5BQkxFKFdFQl9BVURJTykK
LSAgICBlbHNlIGlmIChldmVudC0+aXNBdWRpb1Byb2Nlc3NpbmdFdmVudCgpKQotICAgICAgICB3
cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgQXVkaW9Qcm9j
ZXNzaW5nRXZlbnQsIGV2ZW50KTsKLSAgICBlbHNlIGlmIChldmVudC0+aXNPZmZsaW5lQXVkaW9D
b21wbGV0aW9uRXZlbnQoKSkKLSAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihl
eGVjLCBnbG9iYWxPYmplY3QsIE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudCwgZXZlbnQpOwot
I2VuZGlmCi0jaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKLSAgICBlbHNlIGlmIChldmVudC0+aXNT
cGVlY2hJbnB1dEV2ZW50KCkpCi0gICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIo
ZXhlYywgZ2xvYmFsT2JqZWN0LCBTcGVlY2hJbnB1dEV2ZW50LCBldmVudCk7Ci0jZW5kaWYKLSNp
ZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0gICAgZWxzZSBpZiAoZXZlbnQtPmlzQ2xvc2VFdmVudCgp
KQotICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVj
dCwgQ2xvc2VFdmVudCwgZXZlbnQpOwotI2VuZGlmCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
LSAgICBlbHNlIGlmIChldmVudC0+aXNNZWRpYVN0cmVhbUV2ZW50KCkpCi0gICAgICAgIHdyYXBw
ZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBNZWRpYVN0cmVhbUV2
ZW50LCBldmVudCk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoV0VCR0wpCi0gICAgZWxzZSBpZiAoZXZl
bnQtPmlzV2ViR0xDb250ZXh0RXZlbnQoKSkKLSAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01f
V1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIFdlYkdMQ29udGV4dEV2ZW50LCBldmVudCk7Ci0j
ZW5kaWYKLSAgICBlbHNlCi0gICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhl
YywgZ2xvYmFsT2JqZWN0LCBFdmVudCwgZXZlbnQpOworICAgIHR5cGVkZWYgSlNET01XcmFwcGVy
KiAoKkNyZWF0ZUV2ZW50V3JhcHBlckZ1bmN0aW9uKShFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9i
amVjdCosIEV2ZW50Kik7CisgICAgdHlwZWRlZiBIYXNoTWFwPFdURjo6QXRvbWljU3RyaW5nSW1w
bCosIENyZWF0ZUV2ZW50V3JhcHBlckZ1bmN0aW9uPiBGdW5jdGlvbk1hcDsKKworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoRnVuY3Rpb25NYXAsIG1hcCwgKCkpOworICAgIGlmIChtYXAuaXNFbXB0
eSgpKSB7CisgICAgICAgIERPTV9FVkVOVF9JTlRFUkZBQ0VTX0ZPUl9FQUNIKEFERF9XUkFQUEVS
X1RPX01BUCkKKyAgICB9CisKKyAgICBDcmVhdGVFdmVudFdyYXBwZXJGdW5jdGlvbiBjcmVhdGVX
cmFwcGVyRnVuY3Rpb24gPSBtYXAuZ2V0KGV2ZW50LT5pbnRlcmZhY2VOYW1lKCkuaW1wbCgpKTsK
KyAgICBpZiAoY3JlYXRlV3JhcHBlckZ1bmN0aW9uKQorICAgICAgICByZXR1cm4gY3JlYXRlV3Jh
cHBlckZ1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZXZlbnQpOwogCi0gICAgcmV0dXJuIHdy
YXBwZXI7CisgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3Qs
IEV2ZW50LCBldmVudCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudEN1c3RvbS5jcHAJ
KHJldmlzaW9uIDk4MDM0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RXZlbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw1MCArMzMsMTMgQEAKIAogI2lu
Y2x1ZGUgIkNsaXBib2FyZC5oIgogI2luY2x1ZGUgIkNsaXBib2FyZEV2ZW50LmgiCi0jaW5jbHVk
ZSAiQ3VzdG9tRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUgIlY4QmVmb3Jl
TG9hZEV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnRIZWFkZXJzLmgiCisjaW5jbHVkZSAiRXZlbnRJ
bnRlcmZhY2VzLmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIlY4QmluZGlu
Zy5oIgogI2luY2x1ZGUgIlY4Q2xpcGJvYXJkLmgiCi0jaW5jbHVkZSAiVjhDbG9zZUV2ZW50Lmgi
Ci0jaW5jbHVkZSAiVjhDb21wb3NpdGlvbkV2ZW50LmgiCi0jaW5jbHVkZSAiVjhDdXN0b21FdmVu
dC5oIgotI2luY2x1ZGUgIlY4RGV2aWNlTW90aW9uRXZlbnQuaCIKLSNpbmNsdWRlICJWOERldmlj
ZU9yaWVudGF0aW9uRXZlbnQuaCIKLSNpbmNsdWRlICJWOEVycm9yRXZlbnQuaCIKLSNpbmNsdWRl
ICJWOEhhc2hDaGFuZ2VFdmVudC5oIgotI2luY2x1ZGUgIlY4SURCVmVyc2lvbkNoYW5nZUV2ZW50
LmgiCi0jaW5jbHVkZSAiVjhLZXlib2FyZEV2ZW50LmgiCi0jaW5jbHVkZSAiVjhNZXNzYWdlRXZl
bnQuaCIKLSNpbmNsdWRlICJWOE1vdXNlRXZlbnQuaCIKLSNpbmNsdWRlICJWOE11dGF0aW9uRXZl
bnQuaCIKLSNpbmNsdWRlICJWOE92ZXJmbG93RXZlbnQuaCIKLSNpbmNsdWRlICJWOFBhZ2VUcmFu
c2l0aW9uRXZlbnQuaCIKLSNpbmNsdWRlICJWOFBvcFN0YXRlRXZlbnQuaCIKLSNpbmNsdWRlICJW
OFByb2dyZXNzRXZlbnQuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCi0jaW5jbHVkZSAiVjhTcGVl
Y2hJbnB1dEV2ZW50LmgiCi0jaW5jbHVkZSAiVjhTdG9yYWdlRXZlbnQuaCIKLSNpbmNsdWRlICJW
OFRleHRFdmVudC5oIgotI2luY2x1ZGUgIlY4VG91Y2hFdmVudC5oIgotI2luY2x1ZGUgIlY4VUlF
dmVudC5oIgotI2luY2x1ZGUgIlY4V2ViS2l0QW5pbWF0aW9uRXZlbnQuaCIKLSNpbmNsdWRlICJW
OFdlYktpdFRyYW5zaXRpb25FdmVudC5oIgotI2luY2x1ZGUgIlY4V2hlZWxFdmVudC5oIgotI2lu
Y2x1ZGUgIlY4WE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmgiCi0KLSNpZiBFTkFCTEUoU1ZH
KQotI2luY2x1ZGUgIlY4U1ZHWm9vbUV2ZW50LmgiCi0jZW5kaWYKLQotI2lmIEVOQUJMRShXRUJf
QVVESU8pCi0jaW5jbHVkZSAiVjhBdWRpb1Byb2Nlc3NpbmdFdmVudC5oIgotI2luY2x1ZGUgIlY4
T2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmgiCi0jZW5kaWYKLQotI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCi0jaW5jbHVkZSAiVjhNZWRpYVN0cmVhbUV2ZW50LmgiCi0jZW5kaWYKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDYsOTAgKzY5LDM1IEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOEV2ZW50OjpjbGlwYm9hcmQKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQog
Ci12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChFdmVudCogaW1wbCkKKyNkZWZpbmUgREVDTEFS
RV9FVkVOVF9XUkFQUEVSKGludGVyZmFjZU5hbWUpIFwKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHRvVjgjI2ludGVyZmFjZU5hbWUoRXZlbnQqIGV2ZW50KSBcCisgICAgeyBcCisg
ICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PGludGVyZmFjZU5hbWUqPihldmVudCkpOyBc
CisgICAgfSBcCisKK0RPTV9FVkVOVF9JTlRFUkZBQ0VTX0ZPUl9FQUNIKERFQ0xBUkVfRVZFTlRf
V1JBUFBFUikKKworI2RlZmluZSBBRERfV1JBUFBFUl9UT19NQVAoaW50ZXJmYWNlTmFtZSkgXAor
ICAgIG1hcC5hZGQoZXZlbnROYW1lcygpLmludGVyZmFjZUZvciMjaW50ZXJmYWNlTmFtZS5pbXBs
KCksIHRvVjgjI2ludGVyZmFjZU5hbWUpOworCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChF
dmVudCogZXZlbnQpCiB7Ci0gICAgaWYgKCFpbXBsKQorICAgIGlmICghZXZlbnQpCiAgICAgICAg
IHJldHVybiB2ODo6TnVsbCgpOwotICAgIGlmIChpbXBsLT5pc1VJRXZlbnQoKSkgewotICAgICAg
ICBpZiAoaW1wbC0+aXNLZXlib2FyZEV2ZW50KCkpCi0gICAgICAgICAgICByZXR1cm4gdG9WOChz
dGF0aWNfY2FzdDxLZXlib2FyZEV2ZW50Kj4oaW1wbCkpOwotICAgICAgICBpZiAoaW1wbC0+aXNU
ZXh0RXZlbnQoKSkKLSAgICAgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PFRleHRFdmVu
dCo+KGltcGwpKTsKLSAgICAgICAgaWYgKGltcGwtPmlzTW91c2VFdmVudCgpKQotICAgICAgICAg
ICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGltcGwpKTsKLSAgICAgICAg
aWYgKGltcGwtPmlzV2hlZWxFdmVudCgpKQotICAgICAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGlj
X2Nhc3Q8V2hlZWxFdmVudCo+KGltcGwpKTsKLSNpZiBFTkFCTEUoU1ZHKQotICAgICAgICBpZiAo
aW1wbC0+aXNTVkdab29tRXZlbnQoKSkKLSAgICAgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19j
YXN0PFNWR1pvb21FdmVudCo+KGltcGwpKTsKLSNlbmRpZgotICAgICAgICBpZiAoaW1wbC0+aXND
b21wb3NpdGlvbkV2ZW50KCkpCi0gICAgICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxD
b21wb3NpdGlvbkV2ZW50Kj4oaW1wbCkpOwotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAg
ICAgIGlmIChpbXBsLT5pc1RvdWNoRXZlbnQoKSkKLSAgICAgICAgICAgIHJldHVybiB0b1Y4KHN0
YXRpY19jYXN0PFRvdWNoRXZlbnQqPihpbXBsKSk7Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuIHRv
Vjgoc3RhdGljX2Nhc3Q8VUlFdmVudCo+KGltcGwpKTsKLSAgICB9Ci0gICAgaWYgKGltcGwtPmlz
SGFzaENoYW5nZUV2ZW50KCkpCi0gICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PEhhc2hD
aGFuZ2VFdmVudCo+KGltcGwpKTsKLSAgICBpZiAoaW1wbC0+aXNNdXRhdGlvbkV2ZW50KCkpCi0g
ICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PE11dGF0aW9uRXZlbnQqPihpbXBsKSk7Ci0g
ICAgaWYgKGltcGwtPmlzT3ZlcmZsb3dFdmVudCgpKQotICAgICAgICByZXR1cm4gdG9WOChzdGF0
aWNfY2FzdDxPdmVyZmxvd0V2ZW50Kj4oaW1wbCkpOwotICAgIGlmIChpbXBsLT5pc01lc3NhZ2VF
dmVudCgpKQotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxNZXNzYWdlRXZlbnQqPihp
bXBsKSk7Ci0gICAgaWYgKGltcGwtPmlzUGFnZVRyYW5zaXRpb25FdmVudCgpKQotICAgICAgICBy
ZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxQYWdlVHJhbnNpdGlvbkV2ZW50Kj4oaW1wbCkpOwotICAg
IGlmIChpbXBsLT5pc1BvcFN0YXRlRXZlbnQoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGlj
X2Nhc3Q8UG9wU3RhdGVFdmVudCo+KGltcGwpKTsKLSAgICBpZiAoaW1wbC0+aXNQcm9ncmVzc0V2
ZW50KCkpIHsKLSAgICAgICAgaWYgKGltcGwtPmlzWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50
KCkpCi0gICAgICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxYTUxIdHRwUmVxdWVzdFBy
b2dyZXNzRXZlbnQqPihpbXBsKSk7Ci0gICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PFBy
b2dyZXNzRXZlbnQqPihpbXBsKSk7CisKKyAgICB0eXBlZGVmIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiAoKlRvVjhGdW5jdGlvbikoRXZlbnQqKTsKKyAgICB0eXBlZGVmIEhhc2hNYXA8V1RGOjpBdG9t
aWNTdHJpbmdJbXBsKiwgVG9WOEZ1bmN0aW9uPiBGdW5jdGlvbk1hcDsKKworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoRnVuY3Rpb25NYXAsIG1hcCwgKCkpOworICAgIGlmIChtYXAuaXNFbXB0eSgp
KSB7CisgICAgICAgIERPTV9FVkVOVF9JTlRFUkZBQ0VTX0ZPUl9FQUNIKEFERF9XUkFQUEVSX1RP
X01BUCkKICAgICB9Ci0gICAgaWYgKGltcGwtPmlzV2ViS2l0QW5pbWF0aW9uRXZlbnQoKSkKLSAg
ICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8V2ViS2l0QW5pbWF0aW9uRXZlbnQqPihpbXBs
KSk7Ci0gICAgaWYgKGltcGwtPmlzV2ViS2l0VHJhbnNpdGlvbkV2ZW50KCkpCi0gICAgICAgIHJl
dHVybiB0b1Y4KHN0YXRpY19jYXN0PFdlYktpdFRyYW5zaXRpb25FdmVudCo+KGltcGwpKTsKLSNp
ZiBFTkFCTEUoV09SS0VSUykKLSAgICBpZiAoaW1wbC0+aXNFcnJvckV2ZW50KCkpCi0gICAgICAg
IHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PEVycm9yRXZlbnQqPihpbXBsKSk7Ci0jZW5kaWYKLSAg
ICBpZiAoaW1wbC0+aXNTdG9yYWdlRXZlbnQoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGlj
X2Nhc3Q8U3RvcmFnZUV2ZW50Kj4oaW1wbCkpOwotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQotICAgIGlmIChpbXBsLT5pc0lEQlZlcnNpb25DaGFuZ2VFdmVudCgpKQotICAgICAgICByZXR1
cm4gdG9WOChzdGF0aWNfY2FzdDxJREJWZXJzaW9uQ2hhbmdlRXZlbnQqPihpbXBsKSk7Ci0jZW5k
aWYKLSAgICBpZiAoaW1wbC0+aXNCZWZvcmVMb2FkRXZlbnQoKSkKLSAgICAgICAgcmV0dXJuIHRv
Vjgoc3RhdGljX2Nhc3Q8QmVmb3JlTG9hZEV2ZW50Kj4oaW1wbCkpOwotI2lmIEVOQUJMRShERVZJ
Q0VfT1JJRU5UQVRJT04pCi0gICAgaWYgKGltcGwtPmlzRGV2aWNlTW90aW9uRXZlbnQoKSkKLSAg
ICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8RGV2aWNlTW90aW9uRXZlbnQqPihpbXBsKSk7
Ci0gICAgaWYgKGltcGwtPmlzRGV2aWNlT3JpZW50YXRpb25FdmVudCgpKQotICAgICAgICByZXR1
cm4gdG9WOChzdGF0aWNfY2FzdDxEZXZpY2VPcmllbnRhdGlvbkV2ZW50Kj4oaW1wbCkpOwotI2Vu
ZGlmCi0jaWYgRU5BQkxFKFdFQl9BVURJTykKLSAgICBpZiAoaW1wbC0+aXNBdWRpb1Byb2Nlc3Np
bmdFdmVudCgpKQotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxBdWRpb1Byb2Nlc3Np
bmdFdmVudCo+KGltcGwpKTsKLSAgICBpZiAoaW1wbC0+aXNPZmZsaW5lQXVkaW9Db21wbGV0aW9u
RXZlbnQoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8T2ZmbGluZUF1ZGlvQ29t
cGxldGlvbkV2ZW50Kj4oaW1wbCkpOwotI2VuZGlmCi0jaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkK
LSAgICBpZiAoaW1wbC0+aXNTcGVlY2hJbnB1dEV2ZW50KCkpCi0gICAgICAgIHJldHVybiB0b1Y4
KHN0YXRpY19jYXN0PFNwZWVjaElucHV0RXZlbnQqPihpbXBsKSk7Ci0jZW5kaWYKLSAgICBpZiAo
aW1wbC0+aXNDdXN0b21FdmVudCgpKQotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxD
dXN0b21FdmVudCo+KGltcGwpKTsKLSNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0gICAgaWYgKGlt
cGwtPmlzQ2xvc2VFdmVudCgpKQotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxDbG9z
ZUV2ZW50Kj4oaW1wbCkpOwotI2VuZGlmCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBp
ZiAoaW1wbC0+aXNNZWRpYVN0cmVhbUV2ZW50KCkpCi0gICAgICAgIHJldHVybiB0b1Y4KHN0YXRp
Y19jYXN0PE1lZGlhU3RyZWFtRXZlbnQqPihpbXBsKSk7Ci0jZW5kaWYKLSAgICByZXR1cm4gVjhF
dmVudDo6d3JhcChpbXBsKTsKKworICAgIFRvVjhGdW5jdGlvbiBzcGVjaWFsaXplZFRvVjggPSBt
YXAuZ2V0KGV2ZW50LT5pbnRlcmZhY2VOYW1lKCkuaW1wbCgpKTsKKyAgICBpZiAoc3BlY2lhbGl6
ZWRUb1Y4KQorICAgICAgICByZXR1cm4gc3BlY2lhbGl6ZWRUb1Y4KGV2ZW50KTsKKworICAgIHJl
dHVybiBWOEV2ZW50Ojp3cmFwKGV2ZW50KTsKIH0KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0JlZm9yZUxvYWRFdmVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9CZWZvcmVMb2FkRXZlbnQuaAkocmV2aXNpb24gOTgwMzQpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vQmVmb3JlTG9hZEV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDggKzQyLDYgQEAgc3RydWN0IEJlZm9yZUxvYWRFdmVudEluaXQgOiBwdWJsaWMgRXZlbgog
CiBjbGFzcyBCZWZvcmVMb2FkRXZlbnQgOiBwdWJsaWMgRXZlbnQgewogcHVibGljOgotICAgIHZp
cnR1YWwgYm9vbCBpc0JlZm9yZUxvYWRFdmVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJlZm9yZUxvYWRFdmVudD4gY3JlYXRlKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQmVmb3JlTG9hZEV2ZW50KTsKQEAgLTcxLDYgKzY5
LDkgQEAgcHVibGljOgogCiAgICAgY29uc3QgU3RyaW5nJiB1cmwoKSBjb25zdCB7IHJldHVybiBt
X3VybDsgfQogCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUo
KSBjb25zdCB7IHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yQmVmb3JlTG9hZEV2ZW50
OyB9CisgICAgdmlydHVhbCBib29sIGlzQmVmb3JlTG9hZEV2ZW50KCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQorCiBwcml2YXRlOgogICAgIEJlZm9yZUxvYWRFdmVudCgpCiAgICAgewpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0JlZm9yZVRleHRJbnNlcnRlZEV2ZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuY3BwCShyZXZp
c2lvbiA5ODAzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9CZWZvcmVUZXh0SW5zZXJ0ZWRFdmVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDQgKzM5LDEwIEBAIEJlZm9yZVRleHRJbnNlcnRl
ZEV2ZW50Ojp+QmVmb3JlVGV4dEluc2UKIHsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBCZWZv
cmVUZXh0SW5zZXJ0ZWRFdmVudDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgLy8gTm90
aWNlIHRoYXQgdGhlcmUgaXMgbm8gQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuaWRsLgorICAgIHJl
dHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yRXZlbnQ7Cit9CisKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9CZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9CZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5oCShyZXZpc2lvbiA5ODAz
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9CZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw4ICszOSw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCh0ZXh0KSk7CiAgICAgfQogCisgICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0
dWFsIGJvb2wgaXNCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KLSAgCisKICAgICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7
IH0KICAgICB2b2lkIHNldFRleHQoY29uc3QgU3RyaW5nJiBzKSB7IG1fdGV4dCA9IHM7IH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZEV2ZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkRXZlbnQuY3BwCShyZXZpc2lvbiA5ODAzNCkK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmRFdmVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIzLDYgKzIzLDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDbGlwYm9h
cmRFdmVudC5oIgogCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIENsaXBib2FyZEV2ZW50OjpDbGlwYm9hcmRFdmVudCgpCkBAIC0zOCw2ICs0MCwxMiBA
QCBDbGlwYm9hcmRFdmVudDo6fkNsaXBib2FyZEV2ZW50KCkKIHsKIH0KIAorY29uc3QgQXRvbWlj
U3RyaW5nJiBDbGlwYm9hcmRFdmVudDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgLy8g
Tm90aWNlIHRoYXQgdGhlcmUgaXMgbm8gQ2xpcGJvYXJkRXZlbnQuaWRsLgorICAgIHJldHVybiBl
dmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yRXZlbnQ7Cit9CisKIGJvb2wgQ2xpcGJvYXJkRXZlbnQ6
OmlzQ2xpcGJvYXJkRXZlbnQoKSBjb25zdAogewogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZEV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL0NsaXBib2FyZEV2ZW50LmgJKHJldmlzaW9uIDk4MDM0KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0NsaXBib2FyZEV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIENsaXBib2FyZCogY2xpcGJvYXJkKCkg
Y29uc3QgeyByZXR1cm4gbV9jbGlwYm9hcmQuZ2V0KCk7IH0KIAorICAgICAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFs
IGJvb2wgaXNDbGlwYm9hcmRFdmVudCgpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5jcHAJKHJldmlzaW9uIDk4MDM0KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NSw2ICs1NSwxMSBAQCB2b2lkIENvbXBvc2l0aW9uRXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2
CiAgICAgbV9kYXRhID0gZGF0YTsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBDb21wb3NpdGlv
bkV2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygp
LmludGVyZmFjZUZvckNvbXBvc2l0aW9uRXZlbnQ7Cit9CisKIGJvb2wgQ29tcG9zaXRpb25FdmVu
dDo6aXNDb21wb3NpdGlvbkV2ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaAkocmV2aXNpb24gOTgwMzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MiwxMSArNDIsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQ29tcG9zaXRpb25FdmVudCh0eXBlLCB2aWV3LCBkYXRhKSk7CiAgICAgICAgIH0K
ICAgICAgICAgdmlydHVhbCB+Q29tcG9zaXRpb25FdmVudCgpOwotICAgIAorCiAgICAgICAgIHZv
aWQgaW5pdENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4sIGNvbnN0
IFN0cmluZyYgZGF0YSk7Ci0gICAgCisKICAgICAgICAgU3RyaW5nIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGE7IH0KIAorICAgICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50
ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb21wb3NpdGlvbkV2
ZW50KCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0N1
c3RvbUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRXZl
bnQuY3BwCShyZXZpc2lvbiA5ODAzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJDdXN0b21FdmVudC5oIgogCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEN1c3RvbUV2ZW50SW5pdDo6Q3VzdG9tRXZlbnRJbml0
KCkKQEAgLTU3LDkgKzU5LDkgQEAgdm9pZCBDdXN0b21FdmVudDo6aW5pdEN1c3RvbUV2ZW50KGNv
bnN0IAogICAgIG1fZGV0YWlsID0gZGV0YWlsOwogfQogCi1ib29sIEN1c3RvbUV2ZW50Ojppc0N1
c3RvbUV2ZW50KCkgY29uc3QKK2NvbnN0IEF0b21pY1N0cmluZyYgQ3VzdG9tRXZlbnQ6OmludGVy
ZmFjZU5hbWUoKSBjb25zdAogewotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBldmVudE5h
bWVzKCkuaW50ZXJmYWNlRm9yQ3VzdG9tRXZlbnQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5oCShyZXZpc2lvbiA5ODAzNCkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1
Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5pdEN1c3RvbUV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgU2NyaXB0VmFsdWUg
ZGV0YWlsKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0N1c3RvbUV2ZW50KCkgY29uc3Q7CisgICAg
dmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKIAogICAg
IFNjcmlwdFZhbHVlIGRldGFpbCgpIGNvbnN0IHsgcmV0dXJuIG1fZGV0YWlsOyB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25FdmVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0RldmljZU1vdGlvbkV2ZW50LmNwcAkocmV2aXNpb24gOTgwMzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uRXZlbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRGV2aWNlTW90aW9uRXZlbnQuaCIKIAog
I2luY2x1ZGUgIkRldmljZU1vdGlvbkRhdGEuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTQsNCArNTUsMTYgQEAgdm9pZCBEZXZpY2VNb3Rp
b25FdmVudDo6aW5pdERldmljZU1vdGlvbgogICAgIG1fZGV2aWNlTW90aW9uRGF0YSA9IGRldmlj
ZU1vdGlvbkRhdGE7CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgRGV2aWNlTW90aW9uRXZlbnQ6
OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04p
CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JEZXZpY2VNb3Rpb25FdmVudDsK
KyNlbHNlCisgICAgLy8gRklYTUU6IEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pIHNlZW1zIHRv
IGJlIGluIGEgc3RyYW5nZSBzdGF0ZSB3aGVyZQorICAgIC8vIGl0IGlzIGhhbGYtZ3VhcmRlZCBi
eSAjaWZkZWZzLiBEZXZpY2VNb3Rpb25FdmVudC5pZGwgaXMgZ3VhcmRlZAorICAgIC8vIGJ1dCBE
ZXZpY2VNb3Rpb25FdmVudC5jcHAgaXRzZWxmIGlzIHJlcXVpcmVkIGJ5IHVuZ2FyZGVkIGNvZGUu
CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JFdmVudDsKKyNlbmRpZgorfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNl
TW90aW9uRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90
aW9uRXZlbnQuaAkocmV2aXNpb24gOTgwMzQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNl
TW90aW9uRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTAgKzQ2LDEwIEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgaW5pdERldmljZU1vdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgYm9vbCBidWJibGVzLCBib29sIGNhbmNlbGFibGUsIERldmljZU1vdGlvbkRhdGEqKTsKIAot
ICAgIHZpcnR1YWwgYm9vbCBpc0RldmljZU1vdGlvbkV2ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQotCiAgICAgRGV2aWNlTW90aW9uRGF0YSogZGV2aWNlTW90aW9uRGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGV2aWNlTW90aW9uRGF0YS5nZXQoKTsgfQogCisgICAgdmlydHVhbCBjb25zdCBB
dG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBEZXZp
Y2VNb3Rpb25FdmVudCgpOwogICAgIERldmljZU1vdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBEZXZpY2VNb3Rpb25EYXRhKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwCShyZXZpc2lvbiA5ODAzNCkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uRXZlbnQuaCIK
IAogI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uLmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU0LDQgKzU1LDE2IEBAIHZvaWQgRGV2aWNl
T3JpZW50YXRpb25FdmVudDo6aW5pdERldmljZU8KICAgICBtX29yaWVudGF0aW9uID0gb3JpZW50
YXRpb247CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgRGV2aWNlT3JpZW50YXRpb25FdmVudDo6
aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikK
KyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvckRldmljZU9yaWVudGF0aW9uRXZl
bnQ7CisjZWxzZQorICAgIC8vIEZJWE1FOiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKSBzZWVt
cyB0byBiZSBpbiBhIHN0cmFuZ2Ugc3RhdGUgd2hlcmUKKyAgICAvLyBpdCBpcyBoYWxmLWd1YXJk
ZWQgYnkgI2lmZGVmcy4gRGV2aWNlT3JpZW50YXRpb25FdmVudC5pZGwgaXMgZ3VhcmRlZAorICAg
IC8vIGJ1dCBEZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcCBpdHNlbGYgaXMgcmVxdWlyZWQgYnkg
dW5nYXJkZWQgY29kZS4KKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvckV2ZW50
OworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuaAkocmV2aXNpb24gOTgwMzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NiwxMCArNDYsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBpbml0RGV2aWNlT3JpZW50
YXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgYnViYmxlcywgYm9vbCBj
YW5jZWxhYmxlLCBEZXZpY2VPcmllbnRhdGlvbiopOwogCi0gICAgdmlydHVhbCBib29sIGlzRGV2
aWNlT3JpZW50YXRpb25FdmVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQogICAgIERldmlj
ZU9yaWVudGF0aW9uKiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb24u
Z2V0KCk7IH0KIAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1l
KCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCgpOwogICAg
IERldmljZU9yaWVudGF0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIERl
dmljZU9yaWVudGF0aW9uKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXJyb3JFdmVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0Vycm9yRXZlbnQuY3BwCShyZXZp
c2lvbiA5ODAzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FcnJvckV2ZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLQog
I2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKIAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKQEAgLTg0
LDQgKzgzLDkgQEAgYm9vbCBFcnJvckV2ZW50Ojppc0Vycm9yRXZlbnQoKSBjb25zdAogICAgIHJl
dHVybiB0cnVlOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIEVycm9yRXZlbnQ6OmludGVyZmFj
ZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yRXJy
b3JFdmVudDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0Vycm9yRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXJy
b3JFdmVudC5oCShyZXZpc2lvbiA5ODAzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FcnJvckV2
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDcgQEAgcHVibGljOgogICAgIGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVOYW1lOyB9CiAgICAgdW5z
aWduZWQgbGluZW5vKCkgY29uc3QgeyByZXR1cm4gbV9saW5lTnVtYmVyOyB9CiAKKyAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1
YWwgYm9vbCBpc0Vycm9yRXZlbnQoKSBjb25zdDsKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50LmNwcAkocmV2aXNpb24gOTgwMzQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiRXZlbnQuaCIKIAog
I2luY2x1ZGUgIkV2ZW50RGlzcGF0Y2hlci5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNp
bmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgi
CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC05Niw5ICs5Nyw5IEBAIHZvaWQgRXZl
bnQ6OmluaXRFdmVudChjb25zdCBBdG9taWNTdHJpbmcKICAgICBtX2NhbmNlbGFibGUgPSBjYW5j
ZWxhYmxlQXJnOwogfQogCi1ib29sIEV2ZW50Ojppc0N1c3RvbUV2ZW50KCkgY29uc3QKK2NvbnN0
IEF0b21pY1N0cmluZyYgRXZlbnQ6OmludGVyZmFjZU5hbWUoKSBjb25zdAogewotICAgIHJldHVy
biBmYWxzZTsKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvckV2ZW50OwogfQog
CiBib29sIEV2ZW50Ojppc1VJRXZlbnQoKSBjb25zdApAQCAtMTY2LDQxICsxNjcsMTYgQEAgYm9v
bCBFdmVudDo6aXNQYWdlVHJhbnNpdGlvbkV2ZW50KCkgY29ucwogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotYm9vbCBFdmVudDo6aXNQb3BTdGF0ZUV2ZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0KIGJvb2wgRXZlbnQ6OmlzUHJvZ3Jlc3NFdmVudCgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEV2ZW50Ojppc1dlYktpdEFuaW1hdGlvbkV2ZW50KCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgRXZlbnQ6OmlzV2ViS2l0VHJh
bnNpdGlvbkV2ZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgRXZl
bnQ6OmlzWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0KIGJvb2wgRXZlbnQ6OmlzQmVmb3JlTG9hZEV2ZW50KCkgY29uc3QKIHsKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgRXZlbnQ6OmlzSGFzaENoYW5nZUV2ZW50KCkgY29u
c3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KICNpZiBFTkFCTEUoU1ZHKQogYm9vbCBFdmVu
dDo6aXNTVkdab29tRXZlbnQoKSBjb25zdAogewpAQCAtMjA4LDgzICsxODQsMTEgQEAgYm9vbCBF
dmVudDo6aXNTVkdab29tRXZlbnQoKSBjb25zdAogfQogI2VuZGlmCiAKLWJvb2wgRXZlbnQ6Omlz
U3RvcmFnZUV2ZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLSNpZiBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKLWJvb2wgRXZlbnQ6OmlzSURCVmVyc2lvbkNoYW5nZUV2ZW50
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0jZW5kaWYKLQogYm9vbCBFdmVudDo6
aXNFcnJvckV2ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLSNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQotYm9vbCBFdmVudDo6aXNUb3VjaEV2ZW50KCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gZmFsc2U7Ci19Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJ
T04pCi1ib29sIEV2ZW50Ojppc0RldmljZU1vdGlvbkV2ZW50KCkgY29uc3QKLXsKLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLWJvb2wgRXZlbnQ6OmlzRGV2aWNlT3JpZW50YXRpb25FdmVudCgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VCX0FV
RElPKQotYm9vbCBFdmVudDo6aXNBdWRpb1Byb2Nlc3NpbmdFdmVudCgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIGZhbHNlOwotfQotCi1ib29sIEV2ZW50Ojppc09mZmxpbmVBdWRpb0NvbXBsZXRpb25F
dmVudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotI2VuZGlmCi0KLSNpZiBFTkFC
TEUoSU5QVVRfU1BFRUNIKQotYm9vbCBFdmVudDo6aXNTcGVlY2hJbnB1dEV2ZW50KCkgY29uc3QK
LXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShXRUJfU09DS0VU
UykKLWJvb2wgRXZlbnQ6OmlzQ2xvc2VFdmVudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotYm9vbCBFdmVudDo6aXNN
ZWRpYVN0cmVhbUV2ZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0jZW5kaWYK
LQotI2lmIEVOQUJMRShXRUJHTCkKLWJvb2wgRXZlbnQ6OmlzV2ViR0xDb250ZXh0RXZlbnQoKSBj
b25zdAotewotICAgIHJldHVybiBmYWxzZTsKLX0KLSNlbmRpZgotCi0KIGJvb2wgRXZlbnQ6OnN0
b3Jlc1Jlc3VsdEFzU3RyaW5nKCkgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnQuaAkocmV2aXNpb24gOTgwMzQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDU4ICsxMTIsMzEgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgICAgIENsaXBib2FyZCogY2xpcGJvYXJkRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGlz
Q2xpcGJvYXJkRXZlbnQoKSA/IGNsaXBib2FyZCgpIDogMDsgfQogCi0gICAgICAgIHZpcnR1YWwg
Ym9vbCBpc0N1c3RvbUV2ZW50KCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgY29uc3QgQXRvbWlj
U3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisKKyAgICAgICAgLy8gVGhlc2UgYXJlIG5l
ZWRlZCBmb3IgdGhlIENQUCBiaW5kaW5ncy4KICAgICAgICAgdmlydHVhbCBib29sIGlzVUlFdmVu
dCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUV2ZW50KCkgY29uc3Q7CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBpc011dGF0aW9uRXZlbnQoKSBjb25zdDsKKworICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNEcmFnRXZlbnQoKSBjb25zdDsgLy8gYSBzdWJzZXQgb2YgbW91c2UgZXZl
bnRzCisKKyAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGVzZSEgQ2FsbGVycyBzaG91bGQgdXNl
IGludGVyZmFjZU5hbWUoKSBpbnN0ZWFkLgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNLZXlib2Fy
ZEV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1RleHRFdmVudCgpIGNvbnN0
OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb21wb3NpdGlvbkV2ZW50KCkgY29uc3Q7Ci0gICAg
ICAgIHZpcnR1YWwgYm9vbCBpc0RyYWdFdmVudCgpIGNvbnN0OyAvLyBhIHN1YnNldCBvZiBtb3Vz
ZSBldmVudHMKICAgICAgICAgdmlydHVhbCBib29sIGlzQ2xpcGJvYXJkRXZlbnQoKSBjb25zdDsK
ICAgICAgICAgdmlydHVhbCBib29sIGlzTWVzc2FnZUV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc1doZWVsRXZlbnQoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGlz
QmVmb3JlVGV4dEluc2VydGVkRXZlbnQoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGlz
T3ZlcmZsb3dFdmVudCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQYWdlVHJhbnNp
dGlvbkV2ZW50KCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1BvcFN0YXRlRXZlbnQo
KSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGlzUHJvZ3Jlc3NFdmVudCgpIGNvbnN0Owot
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQoKSBjb25z
dDsKLSAgICAgICAgdmlydHVhbCBib29sIGlzV2ViS2l0QW5pbWF0aW9uRXZlbnQoKSBjb25zdDsK
LSAgICAgICAgdmlydHVhbCBib29sIGlzV2ViS2l0VHJhbnNpdGlvbkV2ZW50KCkgY29uc3Q7CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBpc0JlZm9yZUxvYWRFdmVudCgpIGNvbnN0OwotICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNIYXNoQ2hhbmdlRXZlbnQoKSBjb25zdDsKICNpZiBFTkFCTEUoU1ZHKQog
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdab29tRXZlbnQoKSBjb25zdDsKICNlbmRpZgotICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNTdG9yYWdlRXZlbnQoKSBjb25zdDsKLSNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKLSAgICAgICAgdmlydHVhbCBib29sIGlzSURCVmVyc2lvbkNoYW5nZUV2
ZW50KCkgY29uc3Q7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoV0VCX0FVRElPKQotICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNBdWRpb1Byb2Nlc3NpbmdFdmVudCgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFs
IGJvb2wgaXNPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQoKSBjb25zdDsKLSNlbmRpZgogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNFcnJvckV2ZW50KCkgY29uc3Q7Ci0jaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKLSAgICAgICAgdmlydHVhbCBib29sIGlzVG91Y2hFdmVudCgpIGNvbnN0OwotI2Vu
ZGlmCi0jaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKLSAgICAgICAgdmlydHVhbCBib29s
IGlzRGV2aWNlTW90aW9uRXZlbnQoKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBib29sIGlzRGV2
aWNlT3JpZW50YXRpb25FdmVudCgpIGNvbnN0OwotI2VuZGlmCi0jaWYgRU5BQkxFKElOUFVUX1NQ
RUVDSCkKLSAgICAgICAgdmlydHVhbCBib29sIGlzU3BlZWNoSW5wdXRFdmVudCgpIGNvbnN0Owot
I2VuZGlmCi0jaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXND
bG9zZUV2ZW50KCkgY29uc3Q7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYVN0cmVhbUV2ZW50KCkgY29uc3Q7Ci0jZW5kaWYKLSNp
ZiBFTkFCTEUoV0VCR0wpCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1dlYkdMQ29udGV4dEV2ZW50
KCkgY29uc3Q7Ci0jZW5kaWYKIAogICAgICAgICBib29sIHByb3BhZ2F0aW9uU3RvcHBlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fcHJvcGFnYXRpb25TdG9wcGVkIHx8IG1faW1tZWRpYXRlUHJvcGFnYXRp
b25TdG9wcGVkOyB9CiAgICAgICAgIGJvb2wgaW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ7IH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudEZhY3RvcnkuaW4KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50RmFjdG9yeS5pbgkocmV2aXNpb24gOTgwMzQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRGYWN0b3J5LmluCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBA
IFN0b3JhZ2VFdmVudAogU1ZHRXZlbnRzIGludGVyZmFjZU5hbWU9RXZlbnQsIGNvbmRpdGlvbmFs
PVNWRwogU1ZHWm9vbUV2ZW50IGNvbmRpdGlvbmFsPVNWRwogU1ZHWm9vbUV2ZW50cyBpbnRlcmZh
Y2VOYW1lPVNWR1pvb21FdmVudCwgY29uZGl0aW9uYWw9U1ZHCitJREJWZXJzaW9uQ2hhbmdlRXZl
bnQgY29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQogVG91Y2hFdmVudCBjb25kaXRpb25hbD1U
T1VDSF9FVkVOVFMKIERldmljZU1vdGlvbkV2ZW50IGNvbmRpdGlvbmFsPURFVklDRV9PUklFTlRB
VElPTgogRGV2aWNlT3JpZW50YXRpb25FdmVudCBjb25kaXRpb25hbD1ERVZJQ0VfT1JJRU5UQVRJ
T04KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5jcHAJKHJldmlzaW9uIDk4MDM0KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw5
ICsyNSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNkZWZpbmUgSU5JVElBTElaRV9FVkVO
VF9OQU1FKG5hbWUpIFwKICAgICAsIG5hbWUjI0V2ZW50KCNuYW1lKQorCisjZGVmaW5lIElOSVRJ
QUxJWkVfRVZFTlRfSU5URVJGQUNFKG5hbWUpIFwKKyAgICAsIGludGVyZmFjZUZvciMjbmFtZSgj
bmFtZSkKKwogRXZlbnROYW1lczo6RXZlbnROYW1lcygpCiAgICAgOiBkdW1teSgwKQogRE9NX0VW
RU5UX05BTUVTX0ZPUl9FQUNIKElOSVRJQUxJWkVfRVZFTlRfTkFNRSkKK0RPTV9FVkVOVF9JTlRF
UkZBQ0VTX0ZPUl9FQUNIKElOSVRJQUxJWkVfRVZFTlRfSU5URVJGQUNFKQogewogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgJKHJldmlzaW9uIDk4MDM0KQorKysgU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TmFtZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogI2lm
bmRlZiBFdmVudE5hbWVzX2gKICNkZWZpbmUgRXZlbnROYW1lc19oCiAKKyNpbmNsdWRlICJFdmVu
dEludGVyZmFjZXMuaCIKICNpbmNsdWRlICJUaHJlYWRHbG9iYWxEYXRhLmgiCiAjaW5jbHVkZSA8
d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKQEAgLTIwMSw2ICsyMDIsMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICAjZGVmaW5lIERPTV9FVkVOVF9OQU1FU19ERUNMQVJFKG5hbWUp
IEF0b21pY1N0cmluZyBuYW1lIyNFdmVudDsKICAgICAgICAgRE9NX0VWRU5UX05BTUVTX0ZPUl9F
QUNIKERPTV9FVkVOVF9OQU1FU19ERUNMQVJFKQogICAgICAgICAjdW5kZWYgRE9NX0VWRU5UX05B
TUVTX0RFQ0xBUkUKKworICAgICAgICAjZGVmaW5lIERPTV9FVkVOVF9JTlRFUkZBQ0VfREVDTEFS
RShuYW1lKSBBdG9taWNTdHJpbmcgaW50ZXJmYWNlRm9yIyNuYW1lOworICAgICAgICBET01fRVZF
TlRfSU5URVJGQUNFU19GT1JfRUFDSChET01fRVZFTlRfSU5URVJGQUNFX0RFQ0xBUkUpCisgICAg
ICAgICN1bmRlZiBET01fRVZFTlRfSU5URVJGQUNFX0RFQ0xBUkUKICAgICB9OwogCiAgICAgaW5s
aW5lIEV2ZW50TmFtZXMmIGV2ZW50TmFtZXMoKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0hh
c2hDaGFuZ2VFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9IYXNoQ2hh
bmdlRXZlbnQuaAkocmV2aXNpb24gOTgwMzQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vSGFzaENo
YW5nZUV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDYgQEAgc3RydWN0IEhhc2hD
aGFuZ2VFdmVudEluaXQgOiBwdWJsaWMgRXZlbgogCiBjbGFzcyBIYXNoQ2hhbmdlRXZlbnQgOiBw
dWJsaWMgRXZlbnQgewogcHVibGljOgotICAgIHZpcnR1YWwgYm9vbCBpc0hhc2hDaGFuZ2VFdmVu
dCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhhc2hD
aGFuZ2VFdmVudD4gY3JlYXRlKCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SGFzaENoYW5nZUV2ZW50KTsKQEAgLTY4LDYgKzY2LDggQEAgcHVibGljOgogICAgIGNvbnN0IFN0
cmluZyYgb2xkVVJMKCkgY29uc3QgeyByZXR1cm4gbV9vbGRVUkw7IH0KICAgICBjb25zdCBTdHJp
bmcmIG5ld1VSTCgpIGNvbnN0IHsgcmV0dXJuIG1fbmV3VVJMOyB9CiAKKyAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIGV2ZW50TmFt
ZXMoKS5pbnRlcmZhY2VGb3JIYXNoQ2hhbmdlRXZlbnQ7IH0KKwogcHJpdmF0ZToKICAgICBIYXNo
Q2hhbmdlRXZlbnQoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5j
cHAJKHJldmlzaW9uIDk4MDM0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNiArMTM5LDExIEBAIGludCBLZXlib2FyZEV2ZW50
OjpjaGFyQ29kZSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4odGV4dC5jaGFy
YWN0ZXJTdGFydGluZ0F0KDApKTsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBLZXlib2FyZEV2
ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmlu
dGVyZmFjZUZvcktleWJvYXJkRXZlbnQ7Cit9CisKIGJvb2wgS2V5Ym9hcmRFdmVudDo6aXNLZXli
b2FyZEV2ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9LZXlib2FyZEV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L0tleWJvYXJkRXZlbnQuaAkocmV2aXNpb24gOTgwMzQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
S2V5Ym9hcmRFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw3ICs4Nyw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgICAgICBpbnQga2V5Q29kZSgpIGNvbnN0OyAvLyBrZXkgY29kZSBm
b3Iga2V5ZG93biBhbmQga2V5dXAsIGNoYXJhY3RlciBmb3Iga2V5cHJlc3MKICAgICAgICAgaW50
IGNoYXJDb2RlKCkgY29uc3Q7IC8vIGNoYXJhY3RlciBjb2RlIGZvciBrZXlwcmVzcywgMCBmb3Ig
a2V5ZG93biBhbmQga2V5dXAKLSAgICAKKworICAgICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0
cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNLZXli
b2FyZEV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgaW50IHdoaWNoKCkgY29uc3Q7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCShyZXZpc2lvbiA5ODAzNCkKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjQsNiArMTY0LDExIEBAIHZvaWQgTWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KGNvbnMK
ICAgICBpbml0TWVzc2FnZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgZGF0YSwg
b3JpZ2luLCBsYXN0RXZlbnRJZCwgc291cmNlLCBwb3J0cy5yZWxlYXNlKCkpOwogfQogCitjb25z
dCBBdG9taWNTdHJpbmcmIE1lc3NhZ2VFdmVudDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JNZXNzYWdlRXZlbnQ7Cit9CisKIGJv
b2wgTWVzc2FnZUV2ZW50Ojppc01lc3NhZ2VFdmVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRy
dWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCShyZXZpc2lvbiA5ODAzNCkKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTcs
NiArOTcsNyBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgdXBk
YXRlIHRoZSBPYmpDIGJpbmRpbmdzIChidWcgIzI4Nzc0KS4KICAgICB2b2lkIGluaXRNZXNzYWdl
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgU3Ry
aW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIERPTVdpbmRvdyogc291cmNl
LCBNZXNzYWdlUG9ydCopOwogCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVy
ZmFjZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNNZXNzYWdlRXZlbnQoKSBjb25z
dDsKIAogICAgIGVudW0gRGF0YVR5cGUgewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL01vdXNl
RXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNw
cAkocmV2aXNpb24gOTgwMzQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDExIEBAIHZvaWQgTW91c2VFdmVudDo6aW5pdE1v
dXNlRXZlbnQoY29uc3QgQXQKICAgICAvLyBGSVhNRTogbV9jbGlwYm9hcmQgaXMgbm90IHNldCB0
byAwIGhlcmUuCiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgTW91c2VFdmVudDo6aW50ZXJmYWNl
TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JNb3Vz
ZUV2ZW50OworfQorCiBib29sIE1vdXNlRXZlbnQ6OmlzTW91c2VFdmVudCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgJKHJldmlzaW9uIDk4
MDM0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNzEsNiArNzEsOCBAQCBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CiAKICAgICAgICAgQ2xp
cGJvYXJkKiBkYXRhVHJhbnNmZXIoKSBjb25zdCB7IHJldHVybiBpc0RyYWdFdmVudCgpID8gbV9j
bGlwYm9hcmQuZ2V0KCkgOiAwOyB9CiAKKyAgICAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJp
bmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNNb3Vz
ZUV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0RyYWdFdmVudCgpIGNvbnN0
OwogICAgICAgICB2aXJ0dWFsIGludCB3aGljaCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvbkV2ZW50LmNwcAkocmV2aXNpb24gOTgwMzQpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vTXV0YXRpb25FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDggQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNdXRhdGlvbkV2ZW50LmgiCiAKKyNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogTXV0YXRpb25FdmVudDo6
TXV0YXRpb25FdmVudCgpCkBAIC02Miw2ICs2NCwxMSBAQCB2b2lkIE11dGF0aW9uRXZlbnQ6Omlu
aXRNdXRhdGlvbkV2ZW50KGNvCiAgICAgbV9hdHRyQ2hhbmdlID0gYXR0ckNoYW5nZTsKIH0KIAor
Y29uc3QgQXRvbWljU3RyaW5nJiBNdXRhdGlvbkV2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvck11dGF0aW9uRXZlbnQ7Cit9
CisKIGJvb2wgTXV0YXRpb25FdmVudDo6aXNNdXRhdGlvbkV2ZW50KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbkV2ZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uRXZlbnQuaAkocmV2aXNpb24g
OTgwMzQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25FdmVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC02MCw2ICs2MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3RyaW5n
IGF0dHJOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyTmFtZTsgfQogICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBhdHRyQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyQ2hhbmdlOyB9CiAKKyAg
ICAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsK
ICAgICAgICAgdmlydHVhbCBib29sIGlzTXV0YXRpb25FdmVudCgpIGNvbnN0OwogCiAgICAgcHJp
dmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9PdmVyZmxvd0V2ZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vT3ZlcmZsb3dFdmVudC5jcHAJKHJldmlzaW9uIDk4
MDM0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL092ZXJmbG93RXZlbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02OCw2ICs2OCwxMSBAQCBPdmVyZmxvd0V2ZW50OjpPdmVyZmxvd0V2ZW50KGNvbnN0
IEF0b21pCiB7CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgT3ZlcmZsb3dFdmVudDo6aW50ZXJm
YWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JP
dmVyZmxvd0V2ZW50OworfQorCiBib29sIE92ZXJmbG93RXZlbnQ6OmlzT3ZlcmZsb3dFdmVudCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vT3Zl
cmZsb3dFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9PdmVyZmxvd0V2
ZW50LmgJKHJldmlzaW9uIDk4MDM0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL092ZXJmbG93RXZl
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBo
b3Jpem9udGFsT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX2hvcml6b250YWxPdmVyZmxvdzsg
fQogICAgIGJvb2wgdmVydGljYWxPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fdmVydGljYWxP
dmVyZmxvdzsgfQogCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5h
bWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNPdmVyZmxvd0V2ZW50KCkgY29uc3Q7CiAK
IHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUGFnZVRyYW5zaXRpb25FdmVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQu
Y3BwCShyZXZpc2lvbiA5ODAzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9QYWdlVHJhbnNpdGlv
bkV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNCArNjksOSBAQCB2b2lkIFBhZ2VUcmFu
c2l0aW9uRXZlbnQ6OmluaXRQYWdlVHJhbnNpCiAgICAgbV9wZXJzaXN0ZWQgPSBwZXJzaXN0ZWQ7
CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgUGFnZVRyYW5zaXRpb25FdmVudDo6aW50ZXJmYWNl
TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JQYWdl
VHJhbnNpdGlvbkV2ZW50OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vUGFnZVRyYW5zaXRpb25FdmVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9QYWdlVHJhbnNpdGlvbkV2ZW50LmgJKHJldmlzaW9uIDk4MDM0KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNTgsNiArNTgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGNhbmNlbGFibGVBcmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIHBlcnNpc3RlZCk7CiAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJm
YWNlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc1BhZ2VUcmFuc2l0aW9uRXZlbnQo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBib29sIHBlcnNpc3RlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGVyc2lzdGVkOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVF
dmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQu
Y3BwCShyZXZpc2lvbiA5ODAzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsNCArOTUsOSBAQCB2b2lkIFBvcFN0YXRlRXZlbnQ6
OmluaXRQb3BTdGF0ZUV2ZW50KGNvCiAgICAgbV9zdGF0ZSA9IHN0YXRlOwogfQogCitjb25zdCBB
dG9taWNTdHJpbmcmIFBvcFN0YXRlRXZlbnQ6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAg
IHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yUG9wU3RhdGVFdmVudDsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZl
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5oCShy
ZXZpc2lvbiA5ODAzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ3LDExICs0NywxMiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8UG9wU3RhdGVFdmVudD4gY3JlYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UG9wU3RhdGVFdmVudD4gY3JlYXRlKGNvbnN0
IEF0b21pY1N0cmluZyYsIGNvbnN0IFBvcFN0YXRlRXZlbnRJbml0Jik7CiAgICAgdm9pZCBpbml0
UG9wU3RhdGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIGNvbnN0IFNjcmlwdFZhbHVlJik7Ci0gICAgYm9vbCBpc1BvcFN0YXRl
RXZlbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBTZXJpYWxpemVkU2NyaXB0VmFs
dWUqIHNlcmlhbGl6ZWRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VyaWFsaXplZFN0YXRlLmdl
dCgpOyB9CiAgICAgU2NyaXB0VmFsdWUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9
CiAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0
OworCiBwcml2YXRlOgogICAgIFBvcFN0YXRlRXZlbnQoKTsKICAgICBQb3BTdGF0ZUV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFBvcFN0YXRlRXZlbnRJbml0Jik7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vUHJvZ3Jlc3NFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL1Byb2dyZXNzRXZlbnQuY3BwCShyZXZpc2lvbiA5ODAzNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Qcm9ncmVzc0V2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYs
OCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb2dyZXNzRXZlbnQuaCIKIAor
I2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQcm9ncmVz
c0V2ZW50SW5pdDo6UHJvZ3Jlc3NFdmVudEluaXQoKQpAQCAtNzEsNCArNzMsOSBAQCB2b2lkIFBy
b2dyZXNzRXZlbnQ6OmluaXRQcm9ncmVzc0V2ZW50KGNvCiAgICAgbV90b3RhbCA9IHRvdGFsQXJn
OwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIFByb2dyZXNzRXZlbnQ6OmludGVyZmFjZU5hbWUo
KSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yUHJvZ3Jlc3NF
dmVudDsKK30KKwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Byb2dyZXNzRXZlbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUHJvZ3Jlc3NFdmVudC5oCShyZXZpc2lv
biA5ODAzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Qcm9ncmVzc0V2ZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYwLDYgKzYwLDggQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBs
b2FkZWQoKSBjb25zdCB7IHJldHVybiBtX2xvYWRlZDsgfQogICAgIHVuc2lnbmVkIGxvbmcgbG9u
ZyB0b3RhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWw7IH0KIAorICAgIHZpcnR1YWwgY29uc3Qg
QXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBQ
cm9ncmVzc0V2ZW50KCk7CiAgICAgUHJvZ3Jlc3NFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgbGVuZ3RoQ29tcHV0YWJsZSwgdW5zaWduZWQgbG9uZyBsb25nIGxvYWRlZCwgdW5z
aWduZWQgbG9uZyBsb25nIHRvdGFsKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZl
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuY3BwCShy
ZXZpc2lvbiA5ODAzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05OSw2ICs5OSwxMSBAQCB2b2lkIFRleHRFdmVudDo6aW5pdFRleHRFdmVu
dChjb25zdCBBdG9tCiAgICAgbV9kYXRhID0gZGF0YTsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5n
JiBUZXh0RXZlbnQ6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5h
bWVzKCkuaW50ZXJmYWNlRm9yVGV4dEV2ZW50OworfQorCiBib29sIFRleHRFdmVudDo6aXNUZXh0
RXZlbnQoKSBjb25zdAogewogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL1RleHRFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZl
bnQuaAkocmV2aXNpb24gOTgwMzQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IAogICAgICAgICBTdHJpbmcgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogCisgICAg
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBpc1RleHRFdmVudCgpIGNvbnN0OwogCiAgICAgICAgIGJvb2wg
aXNMaW5lQnJlYWsoKSBjb25zdCB7IHJldHVybiBtX2lucHV0VHlwZSA9PSBUZXh0RXZlbnRJbnB1
dExpbmVCcmVhazsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcAkocmV2aXNpb24g
OTgwMzQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDYgKzI4LDggQEAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogCiAjaW5jbHVk
ZSAiVG91Y2hFdmVudC5oIgorCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIlRv
dWNoTGlzdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03Myw2ICs3NSwxMSBAQCB2b2lk
IFRvdWNoRXZlbnQ6OmluaXRUb3VjaEV2ZW50KFRvdWNoTGlzCiAgICAgaW5pdENvb3JkaW5hdGVz
KEludFBvaW50KGNsaWVudFgsIGNsaWVudFkpKTsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBU
b3VjaEV2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1l
cygpLmludGVyZmFjZUZvclRvdWNoRXZlbnQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVOVFMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vVG91Y2hFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2
ZW50LmgJKHJldmlzaW9uIDk4MDM0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsOCBAQCBwdWJsaWM6CiAgICAgVG91Y2hMaXN0
KiB0YXJnZXRUb3VjaGVzKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRUb3VjaGVzLmdldCgpOyB9
CiAgICAgVG91Y2hMaXN0KiBjaGFuZ2VkVG91Y2hlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2hhbmdl
ZFRvdWNoZXMuZ2V0KCk7IH0KIAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRl
cmZhY2VOYW1lKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgVG91Y2hFdmVudCgpOwogICAgIFRv
dWNoRXZlbnQoVG91Y2hMaXN0KiB0b3VjaGVzLCBUb3VjaExpc3QqIHRhcmdldFRvdWNoZXMsCkBA
IC03MSw4ICs3Myw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpbnQgcGFnZVksCiAgICAgICAg
ICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFL
ZXkpOwogCi0gICAgdmlydHVhbCBib29sIGlzVG91Y2hFdmVudCgpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KLQogICAgIFJlZlB0cjxUb3VjaExpc3Q+IG1fdG91Y2hlczsKICAgICBSZWZQdHI8VG91
Y2hMaXN0PiBtX3RhcmdldFRvdWNoZXM7CiAgICAgUmVmUHRyPFRvdWNoTGlzdD4gbV9jaGFuZ2Vk
VG91Y2hlczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5jcHAJKHJldmlzaW9uIDk4MDM0KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2
MSwxMSBAQCBib29sIFVJRXZlbnQ6OmlzVUlFdmVudCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgVUlFdmVudDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JVSUV2ZW50OworfQorCiBp
bnQgVUlFdmVudDo6a2V5Q29kZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIDA7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vVUlFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9VSUV2ZW50LmgJKHJldmlzaW9uIDk4MDM0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1VJRXZl
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICAgICAgQWJzdHJhY3RWaWV3KiB2aWV3KCkgY29uc3QgeyByZXR1cm4gbV92aWV3Lmdl
dCgpOyB9CiAgICAgICAgIGludCBkZXRhaWwoKSBjb25zdCB7IHJldHVybiBtX2RldGFpbDsgfQot
ICAgICAgICAKKworICAgICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNl
TmFtZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNVSUV2ZW50KCkgY29uc3Q7CiAK
ICAgICAgICAgdmlydHVhbCBpbnQga2V5Q29kZSgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwCShyZXZpc2lvbiA5ODAzNCkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRBbmltYXRpb25FdmVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg0LDQgKzg0LDkgQEAgZG91YmxlIFdlYktpdEFuaW1hdGlvbkV2ZW50OjplbGFwc2VkVGlt
ZQogICAgIHJldHVybiBtX2VsYXBzZWRUaW1lOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIFdl
YktpdEFuaW1hdGlvbkV2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZXZlbnROYW1lcygpLmludGVyZmFjZUZvcldlYktpdEFuaW1hdGlvbkV2ZW50OworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0QW5pbWF0
aW9uRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0QW5pbWF0
aW9uRXZlbnQuaAkocmV2aXNpb24gOTgwMzQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0
QW5pbWF0aW9uRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6
CiAgICAgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lKCkgY29uc3Q7CiAgICAgZG91YmxlIGVs
YXBzZWRUaW1lKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNXZWJLaXRBbmltYXRpb25F
dmVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0
cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFdlYktpdEFuaW1h
dGlvbkV2ZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0VHJhbnNpdGlvbkV2
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0VHJhbnNpdGlv
bkV2ZW50LmNwcAkocmV2aXNpb24gOTgwMzQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0
VHJhbnNpdGlvbkV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsNCArODUsOSBAQCBkb3Vi
bGUgV2ViS2l0VHJhbnNpdGlvbkV2ZW50OjplbGFwc2VkVGltCiAgICAgcmV0dXJuIG1fZWxhcHNl
ZFRpbWU7CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgV2ViS2l0VHJhbnNpdGlvbkV2ZW50Ojpp
bnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFj
ZUZvcldlYktpdFRyYW5zaXRpb25FdmVudDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaAkocmV2aXNp
b24gOTgwMzQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmlu
ZyYgcHJvcGVydHlOYW1lKCkgY29uc3Q7CiAgICAgZG91YmxlIGVsYXBzZWRUaW1lKCkgY29uc3Q7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNXZWJLaXRUcmFuc2l0aW9uRXZlbnQoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5h
bWUoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBXZWJLaXRUcmFuc2l0aW9uRXZlbnQoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAJKHJldmlzaW9uIDk4MDM0KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCwx
MSBAQCB2b2lkIFdoZWVsRXZlbnQ6OmluaXRXZWJLaXRXaGVlbEV2ZW50KGluCiAgICAgICAgICAg
ICAgICAgICAgY3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSk7CiB9CiAKK2NvbnN0
IEF0b21pY1N0cmluZyYgV2hlZWxFdmVudDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JXaGVlbEV2ZW50OworfQorCiBib29sIFdo
ZWVsRXZlbnQ6OmlzV2hlZWxFdmVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRydWU7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmgJKHJldmlzaW9uIDk4MDM0KQorKysgU291cmNlL1dlYkNv
cmUvZG9tL1doZWVsRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIE5lZWRlZCBmb3IgT2JqZWN0aXZlLUMgbGVnYWN5
IHN1cHBvcnQKICAgICAgICAgYm9vbCBpc0hvcml6b250YWwoKSBjb25zdCB7IHJldHVybiBtX3do
ZWVsRGVsdGEueCgpOyB9CiAKKyAgICAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGlu
dGVyZmFjZU5hbWUoKSBjb25zdDsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIFdoZWVsRXZlbnQo
KTsKICAgICAgICAgV2hlZWxFdmVudChjb25zdCBGbG9hdFBvaW50JiB3aGVlbFRpY2tzLCBjb25z
dCBGbG9hdFBvaW50JiByYXdEZWx0YSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX2V2
ZW50X2ZhY3RvcnkucGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL21ha2VfZXZl
bnRfZmFjdG9yeS5wbAkocmV2aXNpb24gOTgwMzQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vbWFr
ZV9ldmVudF9mYWN0b3J5LnBsCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw5IEBAIHVzZSBJ
Tzo6RmlsZTsKIHVzZSBJbkZpbGVzUGFyc2VyOwogCiBzdWIgcmVhZEV2ZW50cygkKTsKK3N1YiBw
cmludEZhY3RvcnlGaWxlKCQpOworc3ViIHByaW50TWFjcm9GaWxlKCQpOworc3ViIHByaW50SGVh
ZGVyc0ZpbGUoJCk7CiAKIG15ICRldmVudHNGaWxlID0gIiI7CiBteSAkb3V0cHV0RGlyID0gIi4i
OwpAQCAtNTgsNyArNjEsOSBAQCBkaWUgIllvdSBtdXN0IHNwZWNpZnkgLS1ldmVudHMgPGZpbGU+
IiB1CiAKIG15ICVldmVudHMgPSAle3JlYWRFdmVudHMoJGV2ZW50c0ZpbGUpfTsKIAotcHJpbnRD
cHBGaWxlKCIkb3V0cHV0RGlyL0V2ZW50RmFjdG9yeS5jcHAiKTsKK3ByaW50RmFjdG9yeUZpbGUo
IiRvdXRwdXREaXIvRXZlbnRGYWN0b3J5LmNwcCIpOworcHJpbnRNYWNyb0ZpbGUoIiRvdXRwdXRE
aXIvRXZlbnRJbnRlcmZhY2VzLmgiKTsKK3ByaW50SGVhZGVyc0ZpbGUoIiRvdXRwdXREaXIvRXZl
bnRIZWFkZXJzLmgiKTsKIAogc3ViIGRlZmF1bHRFdmVudFByb3BlcnR5SGFzaAogewpAQCAtMTE5
LDUxICsxMjQsMTM5IEBAIHN1YiBpbnRlcmZhY2VGb3JFdmVudCgkKQogICAgIHJldHVybiAkaW50
ZXJmYWNlTmFtZTsKIH0KIAotc3ViIHByaW50Q3BwRmlsZQorc3ViIHByaW50RmFjdG9yeUZpbGUo
JCkKIHsKLSAgICBteSAkY3BwUGF0aCA9IHNoaWZ0OworICAgIG15ICRwYXRoID0gc2hpZnQ7CiAg
ICAgbXkgJEY7CiAKLSAgICBvcGVuIEYsICI+JGNwcFBhdGgiOworICAgIG9wZW4gRiwgIj4kcGF0
aCI7CiAKICAgICBwcmludExpY2Vuc2VIZWFkZXIoJEYpOwogCiAgICAgcHJpbnQgRiAiI2luY2x1
ZGUgXCJjb25maWcuaFwiXG4iOwotICAgIHByaW50IEYgIiNpbmNsdWRlIFwiRXZlbnRGYWN0b3J5
LmhcIlxuXG4iOwotCi0gICAgbXkgJWluY2x1ZGVkSW50ZXJmYWNlcyA9ICgpOworICAgIHByaW50
IEYgIiNpbmNsdWRlIFwiRXZlbnRGYWN0b3J5LmhcIlxuIjsKKyAgICBwcmludCBGICJcbiI7Cisg
ICAgcHJpbnQgRiAiI2luY2x1ZGUgXCJFdmVudEhlYWRlcnMuaFwiXG4iOworICAgIHByaW50IEYg
IlxuIjsKKyAgICBwcmludCBGICJuYW1lc3BhY2UgV2ViQ29yZSB7XG4iOworICAgIHByaW50IEYg
IlxuIjsKKyAgICBwcmludCBGICJQYXNzUmVmUHRyPEV2ZW50PiBFdmVudEZhY3Rvcnk6OmNyZWF0
ZShjb25zdCBTdHJpbmcmIGV2ZW50VHlwZSlcbiI7CisgICAgcHJpbnQgRiAie1xuIjsKIAogICAg
IGZvciBteSAkZXZlbnROYW1lIChzb3J0IGtleXMgJXBhcnNlZEV2ZW50cykgewogICAgICAgICBt
eSAkY29uZGl0aW9uYWwgPSAkcGFyc2VkRXZlbnRzeyRldmVudE5hbWV9eyJjb25kaXRpb25hbCJ9
OwogICAgICAgICBteSAkaW50ZXJmYWNlTmFtZSA9IGludGVyZmFjZUZvckV2ZW50KCRldmVudE5h
bWUpOwogCi0gICAgICAgIG5leHQgaWYgZGVmaW5lZCgkaW5jbHVkZWRJbnRlcmZhY2VzeyRpbnRl
cmZhY2VOYW1lfSk7Ci0gICAgICAgICRpbmNsdWRlZEludGVyZmFjZXN7JGludGVyZmFjZU5hbWV9
ID0gMTsKLQogICAgICAgICBwcmludCBGICIjaWYgRU5BQkxFKCRjb25kaXRpb25hbClcbiIgaWYg
JGNvbmRpdGlvbmFsOwotICAgICAgICBwcmludCBGICIjaW5jbHVkZSBcIiRpbnRlcmZhY2VOYW1l
LmhcIlxuIjsKKyAgICAgICAgcHJpbnQgRiAiICAgIGlmIChldmVudFR5cGUgPT0gXCIkZXZlbnRO
YW1lXCIpXG4iOworICAgICAgICBwcmludCBGICIgICAgICAgIHJldHVybiAke2ludGVyZmFjZU5h
bWV9OjpjcmVhdGUoKTtcbiI7CiAgICAgICAgIHByaW50IEYgIiNlbmRpZlxuIiBpZiAkY29uZGl0
aW9uYWw7CiAgICAgfQogCi0gICAgcHJpbnQgRiAiXG5uYW1lc3BhY2UgV2ViQ29yZSB7XG5cbiI7
CisgICAgcHJpbnQgRiAiICAgIHJldHVybiAwO1xuIjsKKyAgICBwcmludCBGICJ9XG4iOworICAg
IHByaW50IEYgIlxuIjsKKyAgICBwcmludCBGICJ9IC8vIG5hbWVzcGFjZSBXZWJDb3JlXG4iOwor
ICAgIGNsb3NlIEY7Cit9CisKK3N1YiBwcmludE1hY3JvRmlsZSgkKQoreworICAgIG15ICRwYXRo
ID0gc2hpZnQ7CisgICAgbXkgJEY7CiAKLSAgICBwcmludCBGICJQYXNzUmVmUHRyPEV2ZW50PiBF
dmVudEZhY3Rvcnk6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGV2ZW50VHlwZSlcbiI7Ci0gICAgcHJp
bnQgRiAie1xuIjsKKyAgICBvcGVuIEYsICI+JHBhdGgiOworCisgICAgcHJpbnRMaWNlbnNlSGVh
ZGVyKCRGKTsKKworICAgIHByaW50IEYgIiNpZm5kZWYgRXZlbnRJbnRlcmZhY2VzX2hcbiI7Cisg
ICAgcHJpbnQgRiAiI2RlZmluZSBFdmVudEludGVyZmFjZXNfaFxuIjsKKyAgICBwcmludCBGICJc
biI7CisKKyAgICBteSAldW5jb25kaXRpb25hbEludGVyZmFjZXMgPSAoKTsKKyAgICBteSAlaW50
ZXJmYWNlc0J5Q29uZGl0aW9uYWwgPSAoKTsKIAogICAgIGZvciBteSAkZXZlbnROYW1lIChzb3J0
IGtleXMgJXBhcnNlZEV2ZW50cykgewogICAgICAgICBteSAkY29uZGl0aW9uYWwgPSAkcGFyc2Vk
RXZlbnRzeyRldmVudE5hbWV9eyJjb25kaXRpb25hbCJ9OwogICAgICAgICBteSAkaW50ZXJmYWNl
TmFtZSA9IGludGVyZmFjZUZvckV2ZW50KCRldmVudE5hbWUpOwogCisgICAgICAgIGlmICgkY29u
ZGl0aW9uYWwpIHsKKyAgICAgICAgICAgIGlmICghZGVmaW5lZCgkaW50ZXJmYWNlc0J5Q29uZGl0
aW9uYWx7JGNvbmRpdGlvbmFsfSkpIHsKKyAgICAgICAgICAgICAgICAkaW50ZXJmYWNlc0J5Q29u
ZGl0aW9uYWx7JGNvbmRpdGlvbmFsfSA9ICgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
JGludGVyZmFjZXNCeUNvbmRpdGlvbmFseyRjb25kaXRpb25hbH17JGludGVyZmFjZU5hbWV9ID0g
MTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICR1bmNvbmRpdGlvbmFsSW50ZXJmYWNl
c3skaW50ZXJmYWNlTmFtZX0gPSAxCisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgbXkgJGNv
bmRpdGlvbmFsIChzb3J0IGtleXMgJWludGVyZmFjZXNCeUNvbmRpdGlvbmFsKSB7CisgICAgICAg
IHByaW50IEYgIiNpZiBFTkFCTEUoJGNvbmRpdGlvbmFsKVxuIjsKKyAgICAgICAgcHJpbnQgRiAi
I2RlZmluZSBET01fRVZFTlRfSU5URVJGQUNFU19GT1JfRUFDSF8kY29uZGl0aW9uYWwobWFjcm8p
IFxcXG4iOworCisgICAgICAgIGZvciBteSAkaW50ZXJmYWNlIChzb3J0IGtleXMgJXsgJGludGVy
ZmFjZXNCeUNvbmRpdGlvbmFseyRjb25kaXRpb25hbH0gfSkgeworICAgICAgICAgICAgbmV4dCBp
ZiBkZWZpbmVkKCR1bmNvbmRpdGlvbmFsSW50ZXJmYWNlc3skaW50ZXJmYWNlfSk7CisgICAgICAg
ICAgICBwcmludCBGICIgICAgbWFjcm8oJGludGVyZmFjZSkgXFxcbiI7CisgICAgICAgIH0KKwor
ICAgICAgICBwcmludCBGICIvLyBFbmQgb2YgRE9NX0VWRU5UX0lOVEVSRkFDRVNfRk9SX0VBQ0hf
JGNvbmRpdGlvbmFsXG4iOworICAgICAgICBwcmludCBGICIjZWxzZVxuIjsKKyAgICAgICAgcHJp
bnQgRiAiI2RlZmluZSBET01fRVZFTlRfSU5URVJGQUNFU19GT1JfRUFDSF8kY29uZGl0aW9uYWwo
bWFjcm8pXG4iOworICAgICAgICBwcmludCBGICIjZW5kaWZcbiI7CisgICAgICAgIHByaW50IEYg
IlxuIjsKKyAgICB9CisKKyAgICBwcmludCBGICIjZGVmaW5lIERPTV9FVkVOVF9JTlRFUkZBQ0VT
X0ZPUl9FQUNIKG1hY3JvKSBcXFxuIjsKKyAgICBwcmludCBGICIgICAgXFxcbiI7CisgICAgZm9y
IG15ICRpbnRlcmZhY2UgKHNvcnQga2V5cyAldW5jb25kaXRpb25hbEludGVyZmFjZXMpIHsKKyAg
ICAgICAgICAgIHByaW50IEYgIiAgICBtYWNybygkaW50ZXJmYWNlKSBcXFxuIjsKKyAgICB9Cisg
ICAgcHJpbnQgRiAiICAgIFxcXG4iOworICAgIGZvciBteSAkY29uZGl0aW9uYWwgKHNvcnQga2V5
cyAlaW50ZXJmYWNlc0J5Q29uZGl0aW9uYWwpIHsKKyAgICAgICAgcHJpbnQgRiAiICAgIERPTV9F
VkVOVF9JTlRFUkZBQ0VTX0ZPUl9FQUNIXyRjb25kaXRpb25hbChtYWNybykgXFxcbiI7CisgICAg
fQorCisgICAgcHJpbnQgRiAiXG4iOworICAgIHByaW50IEYgIiNlbmRpZiAvLyBFdmVudEludGVy
ZmFjZXNfaFxuIjsKKworICAgIGNsb3NlIEY7Cit9CisKK3N1YiBwcmludEhlYWRlcnNGaWxlKCQp
Cit7CisgICAgbXkgJHBhdGggPSBzaGlmdDsKKyAgICBteSAkRjsKKworICAgIG9wZW4gRiwgIj4k
cGF0aCI7CisKKyAgICBwcmludExpY2Vuc2VIZWFkZXIoJEYpOworCisgICAgcHJpbnQgRiAiI2lm
bmRlZiBFdmVudEhlYWRlcnNfaFxuIjsKKyAgICBwcmludCBGICIjZGVmaW5lIEV2ZW50SGVhZGVy
c19oXG4iOworICAgIHByaW50IEYgIlxuIjsKKworICAgIG15ICVpbmNsdWRlZEludGVyZmFjZXMg
PSAoKTsKKworICAgIGZvciBteSAkZXZlbnROYW1lIChzb3J0IGtleXMgJXBhcnNlZEV2ZW50cykg
eworICAgICAgICBteSAkY29uZGl0aW9uYWwgPSAkcGFyc2VkRXZlbnRzeyRldmVudE5hbWV9eyJj
b25kaXRpb25hbCJ9OworICAgICAgICBteSAkaW50ZXJmYWNlTmFtZSA9IGludGVyZmFjZUZvckV2
ZW50KCRldmVudE5hbWUpOworCisgICAgICAgIG5leHQgaWYgZGVmaW5lZCgkaW5jbHVkZWRJbnRl
cmZhY2VzeyRpbnRlcmZhY2VOYW1lfSk7CisgICAgICAgICRpbmNsdWRlZEludGVyZmFjZXN7JGlu
dGVyZmFjZU5hbWV9ID0gMTsKKwogICAgICAgICBwcmludCBGICIjaWYgRU5BQkxFKCRjb25kaXRp
b25hbClcbiIgaWYgJGNvbmRpdGlvbmFsOwotICAgICAgICBwcmludCBGICIgICAgaWYgKGV2ZW50
VHlwZSA9PSBcIiRldmVudE5hbWVcIilcbiI7Ci0gICAgICAgIHByaW50IEYgIiAgICAgICAgcmV0
dXJuICR7aW50ZXJmYWNlTmFtZX06OmNyZWF0ZSgpO1xuIjsKKyAgICAgICAgcHJpbnQgRiAiI2lu
Y2x1ZGUgXCIkaW50ZXJmYWNlTmFtZS5oXCJcbiI7CisgICAgICAgIHByaW50IEYgIiNpZiBVU0Uo
SlNDKVxuIjsKKyAgICAgICAgcHJpbnQgRiAiI2luY2x1ZGUgXCJKUyRpbnRlcmZhY2VOYW1lLmhc
IlxuIjsKKyAgICAgICAgcHJpbnQgRiAiI2VsaWYgVVNFKFY4KVxuIjsKKyAgICAgICAgcHJpbnQg
RiAiI2luY2x1ZGUgXCJWOCRpbnRlcmZhY2VOYW1lLmhcIlxuIjsKKyAgICAgICAgcHJpbnQgRiAi
I2VuZGlmXG4iOwogICAgICAgICBwcmludCBGICIjZW5kaWZcbiIgaWYgJGNvbmRpdGlvbmFsOwog
ICAgIH0KIAotICAgIHByaW50IEYgIiAgICByZXR1cm4gMDtcbiI7Ci0gICAgcHJpbnQgRiAifVxu
IjsKKyAgICBwcmludCBGICJcbiI7CisgICAgcHJpbnQgRiAiI2VuZGlmIC8vIEV2ZW50SGVhZGVy
c19oXG4iOwogCi0gICAgcHJpbnQgRiAiXG59IC8vIG5hbWVzcGFjZSBXZWJDb3JlXG4iOwogICAg
IGNsb3NlIEY7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29u
dGV4dEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbnRleHRFdmVudC5jcHAJKHJldmlzaW9uIDk4MDM0KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2
ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViR0xDb250ZXh0RXZl
bnQuaCIKIAorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBXZWJHTENvbnRleHRFdmVudDo6V2ViR0xDb250ZXh0RXZlbnQoKQpAQCAtNTEsOSArNTMsOSBA
QCB2b2lkIFdlYkdMQ29udGV4dEV2ZW50Ojppbml0RXZlbnQoY29uc3QgCiAgICAgbV9zdGF0dXNN
ZXNzYWdlID0gc3RhdHVzTWVzc2FnZTsKIH0KIAotYm9vbCBXZWJHTENvbnRleHRFdmVudDo6aXNX
ZWJHTENvbnRleHRFdmVudCgpIGNvbnN0Citjb25zdCBBdG9taWNTdHJpbmcmIFdlYkdMQ29udGV4
dEV2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBy
ZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvcldlYkdMQ29udGV4dEV2ZW50OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbnRleHRFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29udGV4dEV2ZW50LmgJKHJldmlzaW9uIDk4MDM0KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQs
MTAgKzQ0LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5pdEV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgU3RyaW5n
JiBzdGF0dXNNZXNzYWdlKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1dlYkdMQ29udGV4dEV2ZW50
KCkgY29uc3Q7Ci0KICAgICBjb25zdCBTdHJpbmcmIHN0YXR1c01lc3NhZ2UoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXR1c01lc3NhZ2U7IH0KIAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgV2ViR0xDb250ZXh0RXZl
bnQoKTsKICAgICBXZWJHTENvbnRleHRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJv
b2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IFN0cmluZyYgc3RhdHVzTWVzc2Fn
ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJl
c291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcAkocmV2aXNpb24gOTgwMzQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNl
OjpzdGFydFIKIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlOjpoYW5kbGVFdmVudChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqIGV2ZW50KQogewogICAgIEFTU0VSVChtX2Zy
b250ZW5kKTsKLSAgICBpZiAoZXZlbnQtPnR5cGUoKSAhPSBldmVudE5hbWVzKCkuc3RvcmFnZUV2
ZW50IHx8ICFldmVudC0+aXNTdG9yYWdlRXZlbnQoKSkKKyAgICBpZiAoZXZlbnQtPnR5cGUoKSAh
PSBldmVudE5hbWVzKCkuc3RvcmFnZUV2ZW50IHx8IGV2ZW50LT5pbnRlcmZhY2VOYW1lKCkgIT0g
ZXZlbnROYW1lcygpLmludGVyZmFjZUZvclN0b3JhZ2VFdmVudCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgU3RvcmFnZUV2ZW50KiBzdG9yYWdlRXZlbnQgPSBzdGF0aWNfY2FzdDxTdG9yYWdlRXZl
bnQqPihldmVudCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wMnAvTWVkaWFTdHJlYW1FdmVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcDJwL01lZGlhU3RyZWFtRXZlbnQuY3Bw
CShyZXZpc2lvbiA5ODAzNCkKKysrIFNvdXJjZS9XZWJDb3JlL3AycC9NZWRpYVN0cmVhbUV2ZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsMTEgQEAgUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbT4gTWVkaWFTdHJlYW1FdmVudAogICAgIHJldHVybiBtX3N0cmVhbTsKIH0KIAorY29uc3Qg
QXRvbWljU3RyaW5nJiBNZWRpYVN0cmVhbUV2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvck1lZGlhU3RyZWFtRXZlbnQ7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJF
QU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wMnAvTWVkaWFTdHJlYW1FdmVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3AycC9NZWRpYVN0cmVhbUV2ZW50LmgJKHJldmlzaW9uIDk4
MDM0KQorKysgU291cmNlL1dlYkNvcmUvcDJwL01lZGlhU3RyZWFtRXZlbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNDMsMTEgKzQzLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5pdE1lZGlhU3Ry
ZWFtRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBj
YW5jZWxhYmxlLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPik7CiAKLSAgICAvLyBGcm9tIEV2ZW50
VGFyZ2V0LgotICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhU3RyZWFtRXZlbnQoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9Ci0KICAgICBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBzdHJlYW0oKSBjb25z
dDsKIAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29u
c3Q7CisKIHByaXZhdGU6CiAgICAgTWVkaWFTdHJlYW1FdmVudCgpOwogICAgIE1lZGlhU3RyZWFt
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1NwZWVjaElucHV0RXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvU3BlZWNoSW5wdXRFdmVudC5jcHAJKHJldmlzaW9uIDk4MDM0KQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9TcGVlY2hJbnB1dEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksMTAgKzI5
LDEzIEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNwZWVjaElucHV0
RXZlbnQuaCIKIAogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAKKyNpbmNsdWRlICJTcGVlY2hJ
bnB1dEV2ZW50LmgiCisKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogUGFzc1JlZlB0cjxTcGVlY2hJbnB1dEV2ZW50PiBTcGVlY2hJbnB1dEV2ZW50Ojpj
cmVhdGUoKQpAQCAtNTksNiArNjIsMTEgQEAgU3BlZWNoSW5wdXRFdmVudDo6flNwZWVjaElucHV0
RXZlbnQoKQogewogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIFNwZWVjaElucHV0RXZlbnQ6Omlu
dGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNl
Rm9yU3BlZWNoSW5wdXRFdmVudDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKElOUFVUX1NQRUVDSCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU3Bl
ZWNoSW5wdXRFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU3BlZWNo
SW5wdXRFdmVudC5oCShyZXZpc2lvbiA5ODAzNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU3Bl
ZWNoSW5wdXRFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxMCArNDMsMTAgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNwZWVjaElucHV0RXZlbnQ+IGNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3BlZWNoSW5wdXRSZXN1bHRBcnJheSYgcmVz
dWx0cyk7CiAgICAgflNwZWVjaElucHV0RXZlbnQoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1Nw
ZWVjaElucHV0RXZlbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBTcGVlY2hJbnB1
dFJlc3VsdExpc3QqIHJlc3VsdHMoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdHMuZ2V0KCk7IH0K
IAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7
CisKIHByaXZhdGU6CiAgICAgU3BlZWNoSW5wdXRFdmVudCgpOwogICAgIFNwZWVjaElucHV0RXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFNwZWVjaElucHV0UmVzdWx0
QXJyYXkmIHJlc3VsdHMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9u
Q2hhbmdlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
VmVyc2lvbkNoYW5nZUV2ZW50LmNwcAkocmV2aXNpb24gOTgwMzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUz
LDYgKzUzLDExIEBAIFN0cmluZyBJREJWZXJzaW9uQ2hhbmdlRXZlbnQ6OnZlcnNpb24oKQogICAg
IHJldHVybiBtX3ZlcnNpb247CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgSURCVmVyc2lvbkNo
YW5nZUV2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1l
cygpLmludGVyZmFjZUZvcklEQlZlcnNpb25DaGFuZ2VFdmVudDsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVy
c2lvbkNoYW5nZUV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJWZXJzaW9uQ2hhbmdlRXZlbnQuaAkocmV2aXNpb24gOTgwMzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwx
NCArMzksMTMgQEAgY2xhc3MgSURCQW55OwogCiBjbGFzcyBJREJWZXJzaW9uQ2hhbmdlRXZlbnQg
OiBwdWJsaWMgRXZlbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlZlcnNp
b25DaGFuZ2VFdmVudD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUpOwotICAgIC8vIEZJWE1FOiBOZWVkIHRvIGFsbG93IGNyZWF0aW9u
IG9mIHRoZXNlIGV2ZW50cyBmcm9tIEpTLgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlZlcnNp
b25DaGFuZ2VFdmVudD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdmVyc2lvbiA9IFN0cmluZygpLCBj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSA9IEF0b21pY1N0cmluZygpKTsKICAgICB2aXJ0
dWFsIH5JREJWZXJzaW9uQ2hhbmdlRXZlbnQoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0lEQlZl
cnNpb25DaGFuZ2VFdmVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQogICAgIHZpcnR1YWwg
U3RyaW5nIHZlcnNpb24oKTsKIAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRl
cmZhY2VOYW1lKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgSURCVmVyc2lvbkNoYW5nZUV2ZW50
KGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnQuY3BwCShyZXZpc2lvbiA5
ODAzNCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlN0b3JhZ2VFdmVudC5oIgogCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIlN0
b3JhZ2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzIsNCArNzMsOSBAQCB2b2lkIFN0
b3JhZ2VFdmVudDo6aW5pdFN0b3JhZ2VFdmVudChjb25zCiAgICAgbV9zdG9yYWdlQXJlYSA9IHN0
b3JhZ2VBcmVhOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIFN0b3JhZ2VFdmVudDo6aW50ZXJm
YWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JT
dG9yYWdlRXZlbnQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlRXZlbnQuaAkocmV2aXNpb24gOTgwMzQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gTmVlZGVkIG9uY2Ugd2Ugc3VwcG9y
dCBpbml0PGJsYW5rPkV2ZW50TlMKICAgICAgICAgLy8gdm9pZCBpbml0U3RvcmFnZUV2ZW50TlMo
aW4gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwgaW4gRE9NU3RyaW5nIHR5cGVBcmcsIGluIGJvb2xl
YW4gY2FuQnViYmxlQXJnLCBpbiBib29sZWFuIGNhbmNlbGFibGVBcmcsIGluIERPTVN0cmluZyBr
ZXlBcmcsIGluIERPTVN0cmluZyBvbGRWYWx1ZUFyZywgaW4gRE9NU3RyaW5nIG5ld1ZhbHVlQXJn
LCBpbiBET01TdHJpbmcgdXJsQXJnLCBTdG9yYWdlIHN0b3JhZ2VBcmVhQXJnKTsKIAotICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNTdG9yYWdlRXZlbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Cisg
ICAgICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7
CiAKICAgICBwcml2YXRlOgogICAgICAgICBTdG9yYWdlRXZlbnQoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdab29tRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdab29tRXZlbnQuY3BwCShyZXZpc2lvbiA5ODAzNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdab29tRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCwxMSBAQAog
ICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKwogI2lmIEVOQUJMRShTVkcpCisKICNpbmNsdWRl
ICJTVkdab29tRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNzEsOCArNzQsMTEgQEAgYm9vbCBTVkdab29tRXZlbnQ6OmlzU1ZHWm9v
bUV2ZW50KCkgY29ucwogICAgIHJldHVybiB0cnVlOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcm
IFNWR1pvb21FdmVudDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50
TmFtZXMoKS5pbnRlcmZhY2VGb3JTVkdab29tRXZlbnQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdab29tRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHWm9vbUV2ZW50LmgJKHJldmlzaW9uIDk4MDM0KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1pvb21FdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw4IEBA
IHB1YmxpYzoKIAogICAgIEZsb2F0UG9pbnQgbmV3VHJhbnNsYXRlKCkgY29uc3Q7CiAKKyAgICB2
aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OworCiBwcml2
YXRlOgogICAgIFNWR1pvb21FdmVudCgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9BdWRpb1Byb2Nlc3NpbmdFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vQXVkaW9Qcm9jZXNzaW5nRXZlbnQuY3BwCShyZXZpc2lvbiA5ODAzNCkKKysrIFNv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTgsOSArNTgsOSBAQCBBdWRpb1Byb2Nlc3NpbmdFdmVudDo6fkF1ZGlvUHJvY2Vz
c2luZ0V2CiB7CiB9CiAKLWJvb2wgQXVkaW9Qcm9jZXNzaW5nRXZlbnQ6OmlzQXVkaW9Qcm9jZXNz
aW5nRXZlbnQoKSBjb25zdAorY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb1Byb2Nlc3NpbmdFdmVu
dDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJu
IGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JBdWRpb1Byb2Nlc3NpbmdFdmVudDsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Q
cm9jZXNzaW5nRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9B
dWRpb1Byb2Nlc3NpbmdFdmVudC5oCShyZXZpc2lvbiA5ODAzNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEx
ICs0MSwxMSBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCB+QXVkaW9Qcm9jZXNzaW5nRXZl
bnQoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvUHJvY2Vzc2luZ0V2ZW50KCkgY29uc3Q7
Ci0KICAgICBBdWRpb0J1ZmZlciogaW5wdXRCdWZmZXIoKSB7IHJldHVybiBtX2lucHV0QnVmZmVy
LmdldCgpOyB9CiAgICAgQXVkaW9CdWZmZXIqIG91dHB1dEJ1ZmZlcigpIHsgcmV0dXJuIG1fb3V0
cHV0QnVmZmVyLmdldCgpOyB9CiAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50
ZXJmYWNlTmFtZSgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIEF1ZGlvUHJvY2Vzc2luZ0V2ZW50
KCk7CiAgICAgQXVkaW9Qcm9jZXNzaW5nRXZlbnQoUGFzc1JlZlB0cjxBdWRpb0J1ZmZlcj4gaW5w
dXRCdWZmZXIsIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXI+IG91dHB1dEJ1ZmZlcik7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbXBsZXRp
b25FdmVudC5jcHAJKHJldmlzaW9uIDk4MDM0KQorKysgU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsOSAr
NTgsOSBAQCBPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQ6On5PZmZsaW5lQXVkCiB7CiB9CiAK
LWJvb2wgT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50Ojppc09mZmxpbmVBdWRpb0NvbXBsZXRp
b25FdmVudCgpIGNvbnN0Citjb25zdCBBdG9taWNTdHJpbmcmIE9mZmxpbmVBdWRpb0NvbXBsZXRp
b25FdmVudDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRydWU7CisgICAg
cmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZl
bnQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5oCShyZXZpc2lv
biA5ODAzNCkKKysrIFNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbXBsZXRp
b25FdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMCArNDEsMTAgQEAgcHVibGljOgogICAg
IAogICAgIHZpcnR1YWwgfk9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudCgpOwogCi0gICAgdmly
dHVhbCBib29sIGlzT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50KCkgY29uc3Q7Ci0KICAgICBB
dWRpb0J1ZmZlciogcmVuZGVyZWRCdWZmZXIoKSB7IHJldHVybiBtX3JlbmRlcmVkQnVmZmVyLmdl
dCgpOyB9CiAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgp
IGNvbnN0OworCiBwcml2YXRlOgogICAgIE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudCgpOwog
ICAgIE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudChQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyPiBy
ZW5kZXJlZEJ1ZmZlcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL0Nsb3NlRXZl
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL0Nsb3NlRXZlbnQu
aAkocmV2aXNpb24gOTgwMzQpCisrKyBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL0Nsb3NlRXZl
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsOCArNTAsNiBAQCBzdHJ1Y3QgQ2xvc2VFdmVudElu
aXQgOiBwdWJsaWMgRXZlbnRJbml0CiAKIGNsYXNzIENsb3NlRXZlbnQgOiBwdWJsaWMgRXZlbnQg
ewogcHVibGljOgotICAgIHZpcnR1YWwgYm9vbCBpc0Nsb3NlRXZlbnQoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9Ci0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbG9zZUV2ZW50PiBjcmVhdGUoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbG9zZUV2ZW50KCkpOwpAQCAtNzgs
NiArNzYsOCBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgc2hvcnQgY29kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY29kZTsgfQogICAgIFN0cmluZyByZWFzb24oKSBjb25zdCB7IHJldHVybiBtX3JlYXNv
bjsgfQogCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBj
b25zdCB7IHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yQ2xvc2VFdmVudDsgfQorCiBw
cml2YXRlOgogICAgIENsb3NlRXZlbnQoKQogICAgICAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5j
bG9zZUV2ZW50LCBmYWxzZSwgZmFsc2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oCShyZXZpc2lvbiA5ODAzNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsNyBAQAogI2lmbmRlZiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRf
aAogI2RlZmluZSBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRfaAogCisjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgogI2luY2x1ZGUgIlByb2dyZXNzRXZlbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNDYsOSArNDcsOSBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIHBv
c2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbG9hZGVkKCk7IH0KICAgICB1bnNpZ25lZCBsb25nIGxv
bmcgdG90YWxTaXplKCkgY29uc3QgeyByZXR1cm4gdG90YWwoKTsgfQogCi1wcml2YXRlOgotICAg
IHZpcnR1YWwgYm9vbCBpc1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudCgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JYTUxIdHRwUmVxdWVz
dFByb2dyZXNzRXZlbnQ7IH0KIAorcHJpdmF0ZToKICAgICBYTUxIdHRwUmVxdWVzdFByb2dyZXNz
RXZlbnQoKSB7IH0KICAgICBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGxlbmd0aENvbXB1dGFibGUsIHVuc2lnbmVkIGxvbmcgbG9uZyBs
b2FkZWQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbCkKICAgICAgICAgOiBQcm9ncmVzc0V2ZW50
KHR5cGUsIGxlbmd0aENvbXB1dGFibGUsIGxvYWRlZCwgdG90YWwpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJET01FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRE9NRXZlbnQuY3BwCShyZXZpc2lvbiA5ODAzNCkKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRPTUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIldlYkRPTUV2ZW50LmgiCiAKICNpbmNsdWRlICJF
dmVudC5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIApAQCAtMTgzLDcgKzE4NCw3IEBAIGJvb2wgV2ViRE9N
RXZlbnQ6OmlzUGFnZVRyYW5zaXRpb25FdmVudCgKIGJvb2wgV2ViRE9NRXZlbnQ6OmlzUG9wU3Rh
dGVFdmVudCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fcHJpdmF0ZSk7Ci0gICAgcmV0dXJuIG1f
cHJpdmF0ZS0+aXNQb3BTdGF0ZUV2ZW50KCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+aW50ZXJm
YWNlTmFtZSgpID09IFdlYkNvcmU6OmV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JQb3BTdGF0ZUV2
ZW50OwogfQogCiBib29sIFdlYkRPTUV2ZW50Ojppc1Byb2dyZXNzRXZlbnQoKSBjb25zdApAQCAt
MTk1LDE5ICsxOTYsMTkgQEAgYm9vbCBXZWJET01FdmVudDo6aXNQcm9ncmVzc0V2ZW50KCkgY29u
cwogYm9vbCBXZWJET01FdmVudDo6aXNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQoKSBjb25z
dAogewogICAgIEFTU0VSVChtX3ByaXZhdGUpOwotICAgIHJldHVybiBtX3ByaXZhdGUtPmlzWE1M
SHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50KCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+aW50ZXJm
YWNlTmFtZSgpID09IFdlYkNvcmU6OmV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JYTUxIdHRwUmVx
dWVzdFByb2dyZXNzRXZlbnQ7CiB9CiAKIGJvb2wgV2ViRE9NRXZlbnQ6OmlzV2ViS2l0QW5pbWF0
aW9uRXZlbnQoKSBjb25zdAogewogICAgIEFTU0VSVChtX3ByaXZhdGUpOwotICAgIHJldHVybiBt
X3ByaXZhdGUtPmlzV2ViS2l0QW5pbWF0aW9uRXZlbnQoKTsKKyAgICByZXR1cm4gbV9wcml2YXRl
LT5pbnRlcmZhY2VOYW1lKCkgPT0gV2ViQ29yZTo6ZXZlbnROYW1lcygpLmludGVyZmFjZUZvcldl
YktpdEFuaW1hdGlvbkV2ZW50OwogfQogCiBib29sIFdlYkRPTUV2ZW50Ojppc1dlYktpdFRyYW5z
aXRpb25FdmVudCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fcHJpdmF0ZSk7Ci0gICAgcmV0dXJu
IG1fcHJpdmF0ZS0+aXNXZWJLaXRUcmFuc2l0aW9uRXZlbnQoKTsKKyAgICByZXR1cm4gbV9wcml2
YXRlLT5pbnRlcmZhY2VOYW1lKCkgPT0gV2ViQ29yZTo6ZXZlbnROYW1lcygpLmludGVyZmFjZUZv
cldlYktpdFRyYW5zaXRpb25FdmVudDsKIH0KIAogYm9vbCBXZWJET01FdmVudDo6aXNCZWZvcmVM
b2FkRXZlbnQoKSBjb25zdAo=
</data>
<flag name="commit-queue"
          id="109796"
          type_id="3"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>