<?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>81657</bug_id>
          
          <creation_ts>2012-03-20 06:31:37 -0700</creation_ts>
          <short_desc>MediaStream API (JSEP): Introducing PeerConnection00 and IceCallback</short_desc>
          <delta_ts>2012-03-29 02:12:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>82045</dependson>
    
    <dependson>82046</dependson>
          <blocked>80589</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tommy Widenflycht">tommyw</reporter>
          <assigned_to name="Tommy Widenflycht">tommyw</assigned_to>
          <cc>abarth</cc>
    
    <cc>gustavo</cc>
    
    <cc>haraken</cc>
    
    <cc>harald</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>583009</commentid>
    <comment_count>0</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-20 06:31:37 -0700</bug_when>
    <thetext>Last major WebCore patch for the JSEP PeerConnection, together with its associated IceCallback (they both depend on each other and IceCallback has very few lines of real code).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583013</commentid>
    <comment_count>1</comment_count>
      <attachid>132814</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-20 06:39:51 -0700</bug_when>
    <thetext>Created attachment 132814
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583131</commentid>
    <comment_count>2</comment_count>
      <attachid>132814</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-20 09:23:30 -0700</bug_when>
    <thetext>Comment on attachment 132814
Patch

Attachment 132814 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12009232</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583296</commentid>
    <comment_count>3</comment_count>
      <attachid>132814</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-20 11:39:39 -0700</bug_when>
    <thetext>Comment on attachment 132814
Patch

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

&gt; Source/WebCore/Modules/mediastream/PeerConnection00.cpp:294
&gt; +    // FIXME(tommyw): When the spec says what the mediaStreamHints should look like send it down.

FIXME(tommyw) =&gt; FIXME

&gt; Source/WebCore/Modules/mediastream/PeerConnection00.cpp:404
&gt; +bool PeerConnection00::canSuspend() const
&gt; +{
&gt; +    return false;
&gt; +}

Isn&apos;t this the default?  I don&apos;t think you need to override this function.

&gt; Source/WebCore/Modules/mediastream/PeerConnection00.cpp:450
&gt; +    default:
&gt; +        ASSERT_NOT_REACHED();
&gt; +        break;

Normally we leave off the default case so that the compiler will complain if you forget a case statement.

&gt; Source/WebCore/Modules/mediastream/PeerConnection00.h:93
&gt; +    PassRefPtr&lt;SessionDescription&gt; createOffer();
&gt; +    PassRefPtr&lt;SessionDescription&gt; createOffer(const String&amp; mediaHints);
&gt; +    PassRefPtr&lt;SessionDescription&gt; createAnswer(const String&amp; offer);
&gt; +    PassRefPtr&lt;SessionDescription&gt; createAnswer(const String&amp; offer, const String&amp; mediaHints);

You can use default parameter values if you&apos;d rather.

&gt; Source/WebCore/Modules/mediastream/PeerConnection00.h:134
&gt; +    virtual bool canSuspend() const;
&gt; +    virtual void stop();

Consider using OVERRIDE when overriding virtual methods.  It&apos;s not required, but we&apos;ve been using it more and more.

&gt; Source/WebCore/Modules/mediastream/PeerConnection00.idl:40
&gt; +        // FIXME(tommyw): Make mediaHints an object

FIXME(tommyw) =&gt; FIXME

For whatever reason, WebKit doesn&apos;t put user names in FIXME.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583336</commentid>
    <comment_count>4</comment_count>
      <attachid>132814</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-20 12:12:43 -0700</bug_when>
    <thetext>Comment on attachment 132814
Patch

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

&gt;&gt; Source/WebCore/Modules/mediastream/PeerConnection00.cpp:294
&gt;&gt; +    // FIXME(tommyw): When the spec says what the mediaStreamHints should look like send it down.
&gt; 
&gt; FIXME(tommyw) =&gt; FIXME

Fixed.

&gt;&gt; Source/WebCore/Modules/mediastream/PeerConnection00.cpp:404
&gt;&gt; +}
&gt; 
&gt; Isn&apos;t this the default?  I don&apos;t think you need to override this function.

You are right, deleted function.

&gt;&gt; Source/WebCore/Modules/mediastream/PeerConnection00.cpp:450
&gt;&gt; +        break;
&gt; 
&gt; Normally we leave off the default case so that the compiler will complain if you forget a case statement.

Fixed.

&gt;&gt; Source/WebCore/Modules/mediastream/PeerConnection00.h:93
&gt;&gt; +    PassRefPtr&lt;SessionDescription&gt; createAnswer(const String&amp; offer, const String&amp; mediaHints);
&gt; 
&gt; You can use default parameter values if you&apos;d rather.

OK, will do that once I switch the temp String type to &quot;objects-as-maps&quot;

&gt;&gt; Source/WebCore/Modules/mediastream/PeerConnection00.h:134
&gt;&gt; +    virtual void stop();
&gt; 
&gt; Consider using OVERRIDE when overriding virtual methods.  It&apos;s not required, but we&apos;ve been using it more and more.

Good to know! Have added OVERRIDE.

&gt;&gt; Source/WebCore/Modules/mediastream/PeerConnection00.idl:40
&gt;&gt; +        // FIXME(tommyw): Make mediaHints an object
&gt; 
&gt; FIXME(tommyw) =&gt; FIXME
&gt; 
&gt; For whatever reason, WebKit doesn&apos;t put user names in FIXME.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583339</commentid>
    <comment_count>5</comment_count>
      <attachid>132875</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-20 12:14:09 -0700</bug_when>
    <thetext>Created attachment 132875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583340</commentid>
    <comment_count>6</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-20 12:15:45 -0700</bug_when>
    <thetext>To fix the GTK build error it seems that one have to add a custom constructor for JS when callbacks are involved. DeprecatedPeerConnection has one so I did the same for PeerConenction00.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583355</commentid>
    <comment_count>7</comment_count>
      <attachid>132879</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-20 12:33:17 -0700</bug_when>
    <thetext>Created attachment 132879
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583358</commentid>
    <comment_count>8</comment_count>
      <attachid>132879</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-20 12:37:42 -0700</bug_when>
    <thetext>Comment on attachment 132879
Patch

Attachment 132879 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12026002</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583373</commentid>
    <comment_count>9</comment_count>
      <attachid>132879</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-20 12:55:43 -0700</bug_when>
    <thetext>Comment on attachment 132879
Patch

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

&gt; Source/WebCore/Modules/mediastream/PeerConnection00.idl:38
&gt; +        JSCustomConstructor,

You shouldn&apos;t need a custom constructor...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583375</commentid>
    <comment_count>10</comment_count>
      <attachid>132879</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-20 12:57:40 -0700</bug_when>
    <thetext>Comment on attachment 132879
Patch

The build error has something to do with your Ice callback, not with the PeerConnection00 constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583382</commentid>
    <comment_count>11</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-20 13:00:53 -0700</bug_when>
    <thetext>Yeah, I noticed. Think the JS code generator does something wrong.
I am currently setting up an GTK build environment to find out.

(In reply to comment #10)
&gt; (From update of attachment 132879 [details])
&gt; The build error has something to do with your Ice callback, not with the PeerConnection00 constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586200</commentid>
    <comment_count>12</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-23 03:26:54 -0700</bug_when>
    <thetext>I found two issues with the JS code generator :/ and for verification purposes I will upload my patch again with my fixes. When I have verified that everything seems to work fine I&apos;ll create proper bugs for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586201</commentid>
    <comment_count>13</comment_count>
      <attachid>133452</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-23 03:31:25 -0700</bug_when>
    <thetext>Created attachment 133452
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586296</commentid>
    <comment_count>14</comment_count>
      <attachid>133475</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-23 06:55:10 -0700</bug_when>
    <thetext>Created attachment 133475
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586350</commentid>
    <comment_count>15</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-23 07:57:01 -0700</bug_when>
    <thetext>Everything&apos;s ready for a proper review :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586403</commentid>
    <comment_count>16</comment_count>
      <attachid>133475</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-23 09:30:24 -0700</bug_when>
    <thetext>Comment on attachment 133475
Patch

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

&gt; Source/WebCore/Modules/mediastream/PeerConnection00.cpp:101
&gt; +        if (*i == &quot;audio&quot;)

This are supposed to be case sensitive?

&gt; Source/WebCore/Modules/mediastream/PeerConnection00.cpp:126
&gt; +    return SessionDescription::create(descriptor);

Should this be descriptor.release()?  It looks like you&apos;re transferring ownership of descriptor into this object.

&gt; Source/WebCore/Modules/mediastream/PeerConnection00.cpp:141
&gt; +    return SessionDescription::create(descriptor);

Should this be descriptor.release()?  It looks like you&apos;re transferring ownership of descriptor into this object.

&gt; Source/WebCore/Modules/mediastream/PeerConnection00.cpp:234
&gt; +    else if (options == &quot;no_relay&quot;)

Again, these are also supposed to be case sensitive?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586456</commentid>
    <comment_count>17</comment_count>
      <attachid>133475</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-23 10:16:24 -0700</bug_when>
    <thetext>Comment on attachment 133475
Patch

Clearing flags on attachment: 133475

Committed r111876: &lt;http://trac.webkit.org/changeset/111876&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586457</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-23 10:16:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589956</commentid>
    <comment_count>19</comment_count>
      <attachid>133475</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-28 07:50:28 -0700</bug_when>
    <thetext>Comment on attachment 133475
Patch

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

&gt;&gt; Source/WebCore/Modules/mediastream/PeerConnection00.cpp:101
&gt;&gt; +        if (*i == &quot;audio&quot;)
&gt; 
&gt; This are supposed to be case sensitive?

yes, and it is a temporary simplification (the standard says that it should be objects like { audio: True, video: False }

&gt;&gt; Source/WebCore/Modules/mediastream/PeerConnection00.cpp:126
&gt;&gt; +    return SessionDescription::create(descriptor);
&gt; 
&gt; Should this be descriptor.release()?  It looks like you&apos;re transferring ownership of descriptor into this object.

Good catch, will fix.

&gt;&gt; Source/WebCore/Modules/mediastream/PeerConnection00.cpp:141
&gt;&gt; +    return SessionDescription::create(descriptor);
&gt; 
&gt; Should this be descriptor.release()?  It looks like you&apos;re transferring ownership of descriptor into this object.

Good catch, will fix.

&gt;&gt; Source/WebCore/Modules/mediastream/PeerConnection00.cpp:234
&gt;&gt; +    else if (options == &quot;no_relay&quot;)
&gt; 
&gt; Again, these are also supposed to be case sensitive?

se above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590144</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-28 10:58:47 -0700</bug_when>
    <thetext>&gt; yes, and it is a temporary simplification (the standard says that it should be objects like { audio: True, video: False }

There&apos;s support in the code generator for that sort of thing.  It should be easy to use if you want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590949</commentid>
    <comment_count>21</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-29 01:52:15 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; &gt; yes, and it is a temporary simplification (the standard says that it should be objects like { audio: True, video: False }
&gt; 
&gt; There&apos;s support in the code generator for that sort of thing.  It should be easy to use if you want.

Great! Can you give me a hint where to start looking? When I bug through the code all usages of Objects-as-maps&quot; used custom bindings where the custom code converts the object to a string and then the WebCore code parses that string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590956</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-29 01:59:28 -0700</bug_when>
    <thetext>Kentaro would know, but I think you just declare the type as Options or Dictionary or something and the type conversion happens automatically for you.  I can look in ore detail tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590965</commentid>
    <comment_count>23</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-29 02:10:40 -0700</bug_when>
    <thetext>Dictionary seems to be the ticket. Neat!

(In reply to comment #22)
&gt; Kentaro would know, but I think you just declare the type as Options or Dictionary or something and the type conversion happens automatically for you.  I can look in ore detail tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590966</commentid>
    <comment_count>24</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-29 02:12:07 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; Kentaro would know, but I think you just declare the type as Options or Dictionary or something and the type conversion happens automatically for you.  I can look in ore detail tomorrow.

In V8, you can use Dictionary.get() (WebCore/bindings/v8/Dictionary.h). In JSC, we want to support Dictionary.get() (WebCore/bindings/js/Dictionary.h), but it is not yet implemented. At present, in JSC you need to use JSDictionary.tryGetProperty() (WebCore/bindings/js/JSDictionary.h).

Event constructors are using such dictionaries (e.g. new Event(&quot;type&quot;, { bubbles: true, cancelable: true })). You can look at the generated code for Event constructors (V8Event.cpp, JSEvent.cpp).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132814</attachid>
            <date>2012-03-20 06:39:51 -0700</date>
            <delta_ts>2012-03-20 12:14:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81657-20120320143949.patch</filename>
            <type>text/plain</type>
            <size>40970</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDA2YjBiOWZiZTNhZTRl
NjQ3MTM5NWY5YTVmMDAwY2U5ZjVhNGZlMS4uOGMzMTUwZGE4YmFiMDgzMzllOTRiODViNjYxZGZl
ODZjYTAxN2Y4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDEyLTAzLTIwICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSSAoSlNFUCk6IEludHJvZHVjaW5nIFBlZXJDb25uZWN0aW9uMDAgYW5kIEljZUNhbGxiYWNr
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTY1Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExhc3QgbWFq
b3IgV2ViQ29yZSBwYXRjaCBmb3IgdGhlIEpTRVAgUGVlckNvbm5lY3Rpb24sIHRvZ2V0aGVyIHdp
dGggdGhlIGFzc29jaWF0ZWQKKyAgICAgICAgSWNlQ2FsbGJhY2sgKHRoZXkgYm90aCBkZXBlbmQg
b24gZWFjaCBvdGhlciBhbmQgSWNlQ2FsbGJhY2sgaGFzIHZlcnkgZmV3IGxpbmVzIG9mIHJlYWwg
Y29kZSkuCisKKyAgICAgICAgTXkgbmV4dCBwYXRjaCBhZnRlciB0aGlzIG9uZSB3aWxsIGRvIGEg
bWFqb3Igb3ZlcmhhdWwgb2YgdGhlIGV4aXN0aW5nIGxheW91dCB0ZXN0cworICAgICAgICBhbmQg
YWRkIGEgZmV3IG5ldyBvbmVzLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0RPTVdpbmRvd01lZGlhU3RyZWFtLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0ljZUNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChJY2VDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpJ
Y2VDYWxsYmFjazo6fkljZUNhbGxiYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L0ljZUNhbGxiYWNrLmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Q
ZWVyQ29ubmVjdGlvbjAwLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uMDA6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyQ29ubmVjdGlvbjAwOjpQZWVyQ29ubmVjdGlvbjAwKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uMDA6On5QZWVyQ29ubmVjdGlvbjAwKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uMDA6Omhhc0xvY2FsQXVkaW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyQ29ubmVjdGlvbjAwOjpoYXNMb2NhbFZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
UGVlckNvbm5lY3Rpb24wMDo6cGFyc2VNZWRpYUhpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uMDA6OmNyZWF0ZU9mZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25u
ZWN0aW9uMDA6OmNyZWF0ZUFuc3dlcik6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlv
bjAwOjpzZXRMb2NhbERlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0
aW9uMDA6OnNldFJlbW90ZURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25u
ZWN0aW9uMDA6OmxvY2FsRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5l
Y3Rpb24wMDo6cmVtb3RlRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5l
Y3Rpb24wMDo6c3RhcnRJY2UpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb24wMDo6
cHJvY2Vzc0ljZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb24wMDo6
cmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjAwOjppY2VTdGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjAwOjphZGRTdHJlYW0pOgorICAg
ICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb24wMDo6cmVtb3ZlU3RyZWFtKToKKyAgICAgICAg
KFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uMDA6OmxvY2FsU3RyZWFtcyk6CisgICAgICAgIChXZWJD
b3JlOjpQZWVyQ29ubmVjdGlvbjAwOjpyZW1vdGVTdHJlYW1zKToKKyAgICAgICAgKFdlYkNvcmU6
OlBlZXJDb25uZWN0aW9uMDA6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0
aW9uMDA6OmRpZEdlbmVyYXRlSWNlQ2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJD
b25uZWN0aW9uMDA6OmRpZENoYW5nZVJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGVl
ckNvbm5lY3Rpb24wMDo6ZGlkQ2hhbmdlSWNlU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGVl
ckNvbm5lY3Rpb24wMDo6ZGlkQWRkUmVtb3RlU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uMDA6OmRpZFJlbW92ZVJlbW90ZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3Jl
OjpQZWVyQ29ubmVjdGlvbjAwOjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uMDA6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGVlckNvbm5lY3Rpb24wMDo6Y2FuU3VzcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVy
Q29ubmVjdGlvbjAwOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uMDA6
OmV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjAwOjpl
bnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb24w
MDo6Y2hhbmdlUmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjAw
OjpjaGFuZ2VJY2VTdGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29u
bmVjdGlvbjAwLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChQZWVyQ29u
bmVjdGlvbjAwKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uMDA6OnJlZkV2ZW50
VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uMDA6OmRlcmVmRXZlbnRU
YXJnZXQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24wMC5p
ZGw6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBiaW5kaW5ncy9n
ZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFBlZXJDb25uZWN0aW9uMDBFbmFibGVkKToKKyAgICAg
ICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOgorCiAyMDEyLTAzLTIwICBMdWtlIE1hY3Bo
ZXJzb24gIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgbWluIGFu
ZCBtYXggcGFyYW1ldGVycyBmcm9tIENTU1ByaW1pdGl2ZVZhbHVlJ3Mgcm91bmRGb3JJbXByZWNp
c2VDb252ZXJzaW9uIGZ1bmN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXgg
MTNjOWRkYzAwOWMwODQxNzcwNWJhZjllNTdlYjA5YzBjNjg3OWUzYS4uZmY3YmNhOWNlMDFjYjQw
YjlhZWE0MjMzODNhN2NjZTdmYTlhMTY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CkBAIC0zNDQsNiArMzQ0LDggQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTSFRNTFVMaXN0RWxlbWVudC5oIFwKIAlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTSFRNTFZpZGVvRWxlbWVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNIVE1MVmlkZW9FbGVtZW50LmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJY2VDYWxs
YmFjay5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJY2VDYWxsYmFjay5oIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSWNlQ2FuZGlkYXRlLmNwcCBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0ljZUNhbmRpZGF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
SW1hZ2VEYXRhLmNwcCBcCkBAIC00MzYsNiArNDM4LDggQEAgd2ViY29yZV9idWlsdF9zb3VyY2Vz
ICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTT3ZlcmZsb3dFdmVudC5oIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTUGFnZVRyYW5zaXRpb25FdmVudC5jcHAgXAogCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNQYWdlVHJhbnNpdGlvbkV2ZW50LmggXAorCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNQZWVyQ29ubmVjdGlvbjAwLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1BlZXJDb25uZWN0aW9uMDAuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BlcmZv
cm1hbmNlLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BlcmZvcm1hbmNlLmggXAog
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQZXJmb3JtYW5jZU5hdmlnYXRpb24uY3BwIFwKQEAg
LTY2NCw2ICs2NjgsNyBAQCBkb21fYmluZGluZ19pZGxzICs9IFwKIAkkKFdlYkNvcmUpL01vZHVs
ZXMvZ2VvbG9jYXRpb24vUG9zaXRpb25FcnJvckNhbGxiYWNrLmlkbCBcCiAJJChXZWJDb3JlKS9N
b2R1bGVzL21lZGlhc3RyZWFtL0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbi5pZGwgXAogCSQoV2Vi
Q29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9ET01XaW5kb3dNZWRpYVN0cmVhbS5pZGwgXAorCSQo
V2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9JY2VDYWxsYmFjay5pZGwgXAogCSQoV2ViQ29y
ZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9JY2VDYW5kaWRhdGUuaWRsIFwKIAkkKFdlYkNvcmUpL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5pZGwgXAogCSQoV2ViQ29yZSkvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwgXApAQCAtNjc1LDYgKzY4MCw3IEBAIGRv
bV9iaW5kaW5nX2lkbHMgKz0gXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZp
Z2F0b3JVc2VyTWVkaWFFcnJvci5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVh
bS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1
bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5pZGwgXAor
CSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwLmlkbCBcCiAJ
JChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlwdGlvbi5pZGwgXAog
CSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9TaWduYWxpbmdDYWxsYmFjay5pZGwgXAog
CSQoV2ViQ29yZSkvY3NzL0NTU0NoYXJzZXRSdWxlLmlkbCBcCkBAIC0xMTE4LDYgKzExMjQsOCBA
QCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmggXAogCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxi
YWNrLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rp
b24wMC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5l
Y3Rpb24wMC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Nlc3Npb25E
ZXNjcmlwdGlvbi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU2Vz
c2lvbkRlc2NyaXB0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
U2lnbmFsaW5nQ2FsbGJhY2suaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL0RPTVdpbmRvd01lZGlhU3RyZWFtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vRE9NV2luZG93TWVkaWFTdHJlYW0uaWRsCmluZGV4IDYxMjBkYTBi
MzIyZTZhZTU5MWNkNTdmYjFkOTgxNDY3YWJmODBiZTQuLmJjNTAwNWJlY2ViYjNmNDcxZjA2ZDk3
NjQwMTczNDYyMDhjNGU5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vRE9NV2luZG93TWVkaWFTdHJlYW0uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vRE9NV2luZG93TWVkaWFTdHJlYW0uaWRsCkBAIC0zMSw2ICszMSw5
IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBTdXBwbGVtZW50YWw9RE9NV2luZG93CiAgICAg
XSBET01XaW5kb3dNZWRpYVN0cmVhbSB7CiAgICAgICAgIGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRS
dW50aW1lXSBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25Db25zdHJ1Y3RvciB3ZWJraXREZXByZWNh
dGVkUGVlckNvbm5lY3Rpb247CisgICAgICAgIGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1l
XSBQZWVyQ29ubmVjdGlvbjAwQ29uc3RydWN0b3Igd2Via2l0UGVlckNvbm5lY3Rpb24wMDsKKyAg
ICAgICAgYXR0cmlidXRlIFNlc3Npb25EZXNjcmlwdGlvbkNvbnN0cnVjdG9yIFNlc3Npb25EZXNj
cmlwdGlvbjsKKyAgICAgICAgYXR0cmlidXRlIEljZUNhbmRpZGF0ZUNvbnN0cnVjdG9yIEljZUNh
bmRpZGF0ZTsKICAgICAgICAgYXR0cmlidXRlIE1lZGlhU3RyZWFtRXZlbnRDb25zdHJ1Y3RvciBN
ZWRpYVN0cmVhbUV2ZW50OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vSWNlQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vSWNlQ2FsbGJhY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOWJiNTIwYmM3ZmJiYWMwNDNj
YzkxOWE1OWU5OGUwODdmMGM0NzVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9JY2VDYWxsYmFjay5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ICAgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEljZUNhbGxiYWNrX2gKKyNkZWZpbmUgSWNlQ2FsbGJhY2tfaAorCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSWNlQ2FuZGlkYXRlOworY2xhc3MgUGVlckNvbm5lY3Rp
b24wMDsKKworY2xhc3MgSWNlQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxJY2VDYWxsYmFj
az4geworcHVibGljOgorICAgIHZpcnR1YWwgfkljZUNhbGxiYWNrKCkgeyB9CisgICAgdmlydHVh
bCBib29sIGhhbmRsZUV2ZW50KEljZUNhbmRpZGF0ZSosIGJvb2wgbW9yZVRvRm9sbG93LCBQZWVy
Q29ubmVjdGlvbjAwKikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIEljZUNhbGxiYWNrX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vSWNlQ2FsbGJhY2su
aWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9JY2VDYWxsYmFjay5pZGwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjlkNjQ2ZjIwM2EyMmNmNGYyNzQ4ZjZhZGY5ZjFhNGYyN2MxNzA5YgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vSWNlQ2Fs
bGJhY2suaWRsCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICogMy4g
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250
cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgcDJwIHsKKworICAgIGlu
dGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKKyAgICAgICAgQ2Fs
bGJhY2sKKyAgICBdIEljZUNhbGxiYWNrIHsKKyAgICAgICAgYm9vbGVhbiBoYW5kbGVFdmVudChp
biBJY2VDYW5kaWRhdGUgY2FuZGlkYXRlLCBpbiBib29sZWFuIG1vcmVUb0ZvbGxvdywgaW4gUGVl
ckNvbm5lY3Rpb24wMCBzb3VyY2UpOworICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24wMC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA0MTk0ZjA0ZWYxYTNkNjRmOTJkNzRiYTQ0YzVjYTg2OWFlZDkzMDMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9u
MDAuY3BwCkBAIC0wLDAgKzEsNDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJp
YnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlBlZXJDb25uZWN0aW9uMDAuaCIK
KworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJJY2VDYWxsYmFjay5oIgor
I2luY2x1ZGUgIkljZUNhbmRpZGF0ZS5oIgorI2luY2x1ZGUgIkljZUNhbmRpZGF0ZURlc2NyaXB0
b3IuaCIKKyNpbmNsdWRlICJJY2VPcHRpb25zLmgiCisjaW5jbHVkZSAiTWVkaWFIaW50cy5oIgor
I2luY2x1ZGUgIk1lZGlhU3RyZWFtRXZlbnQuaCIKKyNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIK
KyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKKyNpbmNsdWRlICJTZXNzaW9uRGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJTZXNz
aW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFz
c1JlZlB0cjxQZWVyQ29ubmVjdGlvbjAwPiBQZWVyQ29ubmVjdGlvbjAwOjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBzZXJ2ZXJDb25maWd1cmF0
aW9uLCBQYXNzUmVmUHRyPEljZUNhbGxiYWNrPiBpY2VDYWxsYmFjaykKK3sKKyAgICBSZWZQdHI8
UGVlckNvbm5lY3Rpb24wMD4gcGVlckNvbm5lY3Rpb24gPSBhZG9wdFJlZihuZXcgUGVlckNvbm5l
Y3Rpb24wMChjb250ZXh0LCBzZXJ2ZXJDb25maWd1cmF0aW9uLCBpY2VDYWxsYmFjaykpOworICAg
IHBlZXJDb25uZWN0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gcGVlckNvbm5l
Y3Rpb24ucmVsZWFzZSgpOworfQorCitQZWVyQ29ubmVjdGlvbjAwOjpQZWVyQ29ubmVjdGlvbjAw
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgc2VydmVyQ29u
ZmlndXJhdGlvbiwgUGFzc1JlZlB0cjxJY2VDYWxsYmFjaz4gaWNlQ2FsbGJhY2spCisgICAgOiBB
Y3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKKyAgICAsIG1faWNlQ2FsbGJhY2soaWNlQ2Fs
bGJhY2spCisgICAgLCBtX3JlYWR5U3RhdGUoTkVXKQorICAgICwgbV9pY2VTdGF0ZShJQ0VfQ0xP
U0VEKQorICAgICwgbV9sb2NhbFN0cmVhbXMoTWVkaWFTdHJlYW1MaXN0OjpjcmVhdGUoKSkKKyAg
ICAsIG1fcmVtb3RlU3RyZWFtcyhNZWRpYVN0cmVhbUxpc3Q6OmNyZWF0ZSgpKQorICAgICwgbV9w
ZWVySGFuZGxlcihQZWVyQ29ubmVjdGlvbjAwSGFuZGxlcjo6Y3JlYXRlKHRoaXMsIHNlcnZlckNv
bmZpZ3VyYXRpb24sIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkpKQorewor
fQorCitQZWVyQ29ubmVjdGlvbjAwOjp+UGVlckNvbm5lY3Rpb24wMCgpCit7Cit9CisKK2Jvb2wg
UGVlckNvbm5lY3Rpb24wMDo6aGFzTG9jYWxBdWRpb1RyYWNrKCkKK3sKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fbG9jYWxTdHJlYW1zLT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIE1l
ZGlhU3RyZWFtKiBjdXJyID0gbV9sb2NhbFN0cmVhbXMtPml0ZW0oaSk7CisgICAgICAgIGlmIChj
dXJyLT5hdWRpb1RyYWNrcygpLT5sZW5ndGgoKSA+IDApCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFBlZXJDb25uZWN0aW9uMDA6
Omhhc0xvY2FsVmlkZW9UcmFjaygpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xv
Y2FsU3RyZWFtcy0+bGVuZ3RoKCk7ICsraSkgeworICAgICAgICBNZWRpYVN0cmVhbSogY3VyciA9
IG1fbG9jYWxTdHJlYW1zLT5pdGVtKGkpOworICAgICAgICBpZiAoY3Vyci0+dmlkZW9UcmFja3Mo
KS0+bGVuZ3RoKCkgPiAwKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJl
dHVybiBmYWxzZTsKK30KKworUGFzc1JlZlB0cjxNZWRpYUhpbnRzPiBQZWVyQ29ubmVjdGlvbjAw
OjpwYXJzZU1lZGlhSGludHMoY29uc3QgU3RyaW5nJiBtZWRpYUhpbnRzKQoreworICAgIFZlY3Rv
cjxTdHJpbmc+IGhpbnRzTGlzdDsKKyAgICBtZWRpYUhpbnRzLnNwbGl0KCIsIiwgaGludHNMaXN0
KTsKKyAgICBib29sIGF1ZGlvID0gaGFzTG9jYWxBdWRpb1RyYWNrKCk7CisgICAgYm9vbCB2aWRl
byA9IGhhc0xvY2FsVmlkZW9UcmFjaygpOworICAgIGZvciAoVmVjdG9yPFN0cmluZz46Oml0ZXJh
dG9yIGkgPSBoaW50c0xpc3QuYmVnaW4oKTsgaSAhPSBoaW50c0xpc3QuZW5kKCk7ICsraSkgewor
ICAgICAgICBpZiAoKmkgPT0gImF1ZGlvIikKKyAgICAgICAgICAgIGF1ZGlvID0gdHJ1ZTsKKyAg
ICAgICAgZWxzZSBpZiAoKmkgPT0gIm5vX2F1ZGlvIikKKyAgICAgICAgICAgIGF1ZGlvID0gZmFs
c2U7CisgICAgICAgIGVsc2UgaWYgKCppID09ICJ2aWRlbyIpCisgICAgICAgICAgICB2aWRlbyA9
IHRydWU7CisgICAgICAgIGVsc2UgaWYgKCppID09ICJub192aWRlbyIpCisgICAgICAgICAgICB2
aWRlbyA9IGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBNZWRpYUhpbnRzOjpjcmVhdGUoYXVk
aW8sIHZpZGVvKTsKK30KKworUGFzc1JlZlB0cjxTZXNzaW9uRGVzY3JpcHRpb24+IFBlZXJDb25u
ZWN0aW9uMDA6OmNyZWF0ZU9mZmVyKCkKK3sKKyAgICByZXR1cm4gY3JlYXRlT2ZmZXIoIiIpOwor
fQorCitQYXNzUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbj4gUGVlckNvbm5lY3Rpb24wMDo6Y3Jl
YXRlT2ZmZXIoY29uc3QgU3RyaW5nJiBtZWRpYUhpbnRzU3RyaW5nKQoreworICAgIFJlZlB0cjxN
ZWRpYUhpbnRzPiBtZWRpYUhpbnRzID0gcGFyc2VNZWRpYUhpbnRzKG1lZGlhSGludHNTdHJpbmcp
OworICAgIFJlZlB0cjxTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yPiBkZXNjcmlwdG9yID0g
bV9wZWVySGFuZGxlci0+Y3JlYXRlT2ZmZXIobWVkaWFIaW50cy5yZWxlYXNlKCkpOworICAgIGlm
ICghZGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gU2Vzc2lvbkRl
c2NyaXB0aW9uOjpjcmVhdGUoZGVzY3JpcHRvcik7Cit9CisKK1Bhc3NSZWZQdHI8U2Vzc2lvbkRl
c2NyaXB0aW9uPiBQZWVyQ29ubmVjdGlvbjAwOjpjcmVhdGVBbnN3ZXIoY29uc3QgU3RyaW5nJiBv
ZmZlcikKK3sKKyAgICByZXR1cm4gY3JlYXRlQW5zd2VyKG9mZmVyLCAiIik7Cit9CisKK1Bhc3NS
ZWZQdHI8U2Vzc2lvbkRlc2NyaXB0aW9uPiBQZWVyQ29ubmVjdGlvbjAwOjpjcmVhdGVBbnN3ZXIo
Y29uc3QgU3RyaW5nJiBvZmZlciwgY29uc3QgU3RyaW5nJiBtZWRpYUhpbnRzU3RyaW5nKQorewor
ICAgIFJlZlB0cjxNZWRpYUhpbnRzPiBtZWRpYUhpbnRzID0gcGFyc2VNZWRpYUhpbnRzKG1lZGlh
SGludHNTdHJpbmcpOworICAgIFJlZlB0cjxTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yPiBk
ZXNjcmlwdG9yID0gbV9wZWVySGFuZGxlci0+Y3JlYXRlQW5zd2VyKG9mZmVyLCBtZWRpYUhpbnRz
LnJlbGVhc2UoKSk7CisgICAgaWYgKCFkZXNjcmlwdG9yKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIHJldHVybiBTZXNzaW9uRGVzY3JpcHRpb246OmNyZWF0ZShkZXNjcmlwdG9yKTsKK30KKwor
dm9pZCBQZWVyQ29ubmVjdGlvbjAwOjpzZXRMb2NhbERlc2NyaXB0aW9uKGludCBhY3Rpb24sIFBh
c3NSZWZQdHI8U2Vzc2lvbkRlc2NyaXB0aW9uPiBzZXNzaW9uRGVzY3JpcHRpb24sIEV4Y2VwdGlv
bkNvZGUmIGVjKQoreworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VEKSB7CisgICAgICAg
IGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBz
d2l0Y2ggKGFjdGlvbikgeworICAgIGNhc2UgU0RQX09GRkVSOgorICAgIGNhc2UgU0RQX1BSQU5T
V0VSOgorICAgIGNhc2UgU0RQX0FOU1dFUjoKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKCFzZXNzaW9uRGVzY3JpcHRpb24pIHsKKyAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VS
UjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGJvb2wgdmFsaWQgPSBtX3BlZXJIYW5k
bGVyLT5zZXRMb2NhbERlc2NyaXB0aW9uKGFjdGlvbiwgc2Vzc2lvbkRlc2NyaXB0aW9uLT5kZXNj
cmlwdG9yKCkpOworICAgIGlmICghdmFsaWQpCisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKK30K
Kwordm9pZCBQZWVyQ29ubmVjdGlvbjAwOjpzZXRSZW1vdGVEZXNjcmlwdGlvbihpbnQgYWN0aW9u
LCBQYXNzUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbj4gc2Vzc2lvbkRlc2NyaXB0aW9uLCBFeGNl
cHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAobV9yZWFkeVN0YXRlID09IENMT1NFRCkgeworICAg
ICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgc3dpdGNoIChhY3Rpb24pIHsKKyAgICBjYXNlIFNEUF9PRkZFUjoKKyAgICBjYXNlIFNEUF9Q
UkFOU1dFUjoKKyAgICBjYXNlIFNEUF9BTlNXRVI6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1
bHQ6CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmICghc2Vzc2lvbkRlc2NyaXB0aW9uKSB7CisgICAgICAgIGVjID0gVFlQRV9NSVNNQVRD
SF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBib29sIHZhbGlkID0gbV9wZWVy
SGFuZGxlci0+c2V0UmVtb3RlRGVzY3JpcHRpb24oYWN0aW9uLCBzZXNzaW9uRGVzY3JpcHRpb24t
PmRlc2NyaXB0b3IoKSk7CisgICAgaWYgKCF2YWxpZCkKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJS
OworfQorCitQYXNzUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbj4gUGVlckNvbm5lY3Rpb24wMDo6
bG9jYWxEZXNjcmlwdGlvbigpCit7CisgICAgUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbkRlc2Ny
aXB0b3I+IGRlc2NyaXB0b3IgPSBtX3BlZXJIYW5kbGVyLT5sb2NhbERlc2NyaXB0aW9uKCk7Cisg
ICAgaWYgKCFkZXNjcmlwdG9yKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxTZXNz
aW9uRGVzY3JpcHRpb24+IGRlc2MgPSBTZXNzaW9uRGVzY3JpcHRpb246OmNyZWF0ZShkZXNjcmlw
dG9yLnJlbGVhc2UoKSk7CisgICAgcmV0dXJuIGRlc2MucmVsZWFzZSgpOworfQorCitQYXNzUmVm
UHRyPFNlc3Npb25EZXNjcmlwdGlvbj4gUGVlckNvbm5lY3Rpb24wMDo6cmVtb3RlRGVzY3JpcHRp
b24oKQoreworICAgIFJlZlB0cjxTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yPiBkZXNjcmlw
dG9yID0gbV9wZWVySGFuZGxlci0+cmVtb3RlRGVzY3JpcHRpb24oKTsKKyAgICBpZiAoIWRlc2Ny
aXB0b3IpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlv
bj4gZGVzYyA9IFNlc3Npb25EZXNjcmlwdGlvbjo6Y3JlYXRlKGRlc2NyaXB0b3IucmVsZWFzZSgp
KTsKKyAgICByZXR1cm4gZGVzYy5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb24w
MDo6c3RhcnRJY2UoRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgc3RhcnRJY2UoIiIsIGVjKTsK
K30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjAwOjpzdGFydEljZShjb25zdCBTdHJpbmcmIG9wdGlv
bnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VE
KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBJY2VPcHRpb25zOjpVc2VDYW5kaWRhdGVzT3B0aW9uIG9wdGlvbjsKKworICAg
IGlmIChvcHRpb25zID09ICIiIHx8IG9wdGlvbnMgPT0gImFsbCIpCisgICAgICAgIG9wdGlvbiA9
IEljZU9wdGlvbnM6OkFMTDsKKyAgICBlbHNlIGlmIChvcHRpb25zID09ICJub19yZWxheSIpCisg
ICAgICAgIG9wdGlvbiA9IEljZU9wdGlvbnM6Ok5PX1JFTEFZOworICAgIGVsc2UgaWYgKG9wdGlv
bnMgPT0gIm9ubHlfcmVsYXkiKQorICAgICAgICBvcHRpb24gPSBJY2VPcHRpb25zOjpPTkxZX1JF
TEFZOworICAgIGVsc2UgeworICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgYm9vbCB2YWxpZCA9IG1fcGVlckhhbmRsZXItPnN0YXJ0
SWNlKEljZU9wdGlvbnM6OmNyZWF0ZShvcHRpb24pKTsKKyAgICBpZiAoIXZhbGlkKQorICAgICAg
ICBlYyA9IFNZTlRBWF9FUlI7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb24wMDo6cHJvY2Vzc0lj
ZU1lc3NhZ2UoUGFzc1JlZlB0cjxJY2VDYW5kaWRhdGU+IGljZUNhbmRpZGF0ZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCit7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBDTE9TRUQpIHsKKyAgICAgICAg
ZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGJv
b2wgdmFsaWQgPSBtX3BlZXJIYW5kbGVyLT5wcm9jZXNzSWNlTWVzc2FnZShpY2VDYW5kaWRhdGUt
PmRlc2NyaXB0b3IoKSk7CisgICAgaWYgKCF2YWxpZCkKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJS
OworfQorCitQZWVyQ29ubmVjdGlvbjAwOjpSZWFkeVN0YXRlIFBlZXJDb25uZWN0aW9uMDA6OnJl
YWR5U3RhdGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3JlYWR5U3RhdGU7Cit9CisKK1BlZXJD
b25uZWN0aW9uMDA6OkljZVN0YXRlIFBlZXJDb25uZWN0aW9uMDA6OmljZVN0YXRlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9pY2VTdGF0ZTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjAwOjph
ZGRTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gc3RyZWFtLCBFeGNlcHRpb25Db2RlJiBl
YykKK3sKKyAgICBTdHJpbmcgZW1wdHlIaW50czsKKyAgICByZXR1cm4gYWRkU3RyZWFtKHN0cmVh
bSwgZW1wdHlIaW50cywgZWMpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uMDA6OmFkZFN0cmVh
bShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBwcnBTdHJlYW0sIGNvbnN0IFN0cmluZyYgbWVkaWFT
dHJlYW1IaW50cywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgUmVmUHRyPE1lZGlhU3RyZWFt
PiBzdHJlYW0gPSBwcnBTdHJlYW07CisgICAgaWYgKCFzdHJlYW0pIHsKKyAgICAgICAgZWMgPSAg
VFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9y
ZWFkeVN0YXRlID09IENMT1NFRCkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fbG9jYWxTdHJlYW1zLT5jb250YWlu
cyhzdHJlYW0uZ2V0KCkpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xvY2FsU3RyZWFtcy0+
YXBwZW5kKHN0cmVhbSk7CisKKyAgICAvLyBGSVhNRSh0b21teXcpOiBXaGVuIHRoZSBzcGVjIHNh
eXMgd2hhdCB0aGUgbWVkaWFTdHJlYW1IaW50cyBzaG91bGQgbG9vayBsaWtlIHNlbmQgaXQgZG93
bi4KKyAgICBtX3BlZXJIYW5kbGVyLT5hZGRTdHJlYW0oc3RyZWFtLT5kZXNjcmlwdG9yKCkpOwor
fQorCit2b2lkIFBlZXJDb25uZWN0aW9uMDA6OnJlbW92ZVN0cmVhbShNZWRpYVN0cmVhbSogc3Ry
ZWFtLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAobV9yZWFkeVN0YXRlID09IENMT1NF
RCkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaWYgKCFzdHJlYW0pIHsKKyAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VS
UjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbV9sb2NhbFN0cmVhbXMtPmNv
bnRhaW5zKHN0cmVhbSkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbG9jYWxTdHJlYW1zLT5y
ZW1vdmUoc3RyZWFtKTsKKworICAgIG1fcGVlckhhbmRsZXItPnJlbW92ZVN0cmVhbShzdHJlYW0t
PmRlc2NyaXB0b3IoKSk7Cit9CisKK01lZGlhU3RyZWFtTGlzdCogUGVlckNvbm5lY3Rpb24wMDo6
bG9jYWxTdHJlYW1zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sb2NhbFN0cmVhbXMuZ2V0KCk7
Cit9CisKK01lZGlhU3RyZWFtTGlzdCogUGVlckNvbm5lY3Rpb24wMDo6cmVtb3RlU3RyZWFtcygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVtb3RlU3RyZWFtcy5nZXQoKTsKK30KKwordm9pZCBQ
ZWVyQ29ubmVjdGlvbjAwOjpjbG9zZShFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAobV9y
ZWFkeVN0YXRlID09IENMT1NFRCkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3RvcCgpOworfQorCit2b2lkIFBlZXJDb25u
ZWN0aW9uMDA6OmRpZEdlbmVyYXRlSWNlQ2FuZGlkYXRlKFBhc3NSZWZQdHI8SWNlQ2FuZGlkYXRl
RGVzY3JpcHRvcj4gaWNlQ2FuZGlkYXRlRGVzY3JpcHRvciwgYm9vbCBtb3JlVG9Gb2xsb3cpCit7
CisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkp
OworICAgIGlmICghaWNlQ2FuZGlkYXRlRGVzY3JpcHRvcikKKyAgICAgICAgbV9pY2VDYWxsYmFj
ay0+aGFuZGxlRXZlbnQoMCwgbW9yZVRvRm9sbG93LCB0aGlzKTsKKyAgICBlbHNlIHsKKyAgICAg
ICAgUmVmUHRyPEljZUNhbmRpZGF0ZT4gaWNlQ2FuZGlkYXRlID0gSWNlQ2FuZGlkYXRlOjpjcmVh
dGUoaWNlQ2FuZGlkYXRlRGVzY3JpcHRvcik7CisgICAgICAgIG1faWNlQ2FsbGJhY2stPmhhbmRs
ZUV2ZW50KGljZUNhbmRpZGF0ZS5nZXQoKSwgbW9yZVRvRm9sbG93LCB0aGlzKTsKKyAgICB9Cit9
CisKK3ZvaWQgUGVlckNvbm5lY3Rpb24wMDo6ZGlkQ2hhbmdlUmVhZHlTdGF0ZSh1aW50MzJfdCBu
ZXdTdGF0ZSkKK3sKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRl
eHRUaHJlYWQoKSk7CisgICAgY2hhbmdlUmVhZHlTdGF0ZShzdGF0aWNfY2FzdDxSZWFkeVN0YXRl
PihuZXdTdGF0ZSkpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uMDA6OmRpZENoYW5nZUljZVN0
YXRlKHVpbnQzMl90IG5ld1N0YXRlKQoreworICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBjaGFuZ2VJY2VTdGF0ZShzdGF0aWNfY2Fz
dDxJY2VTdGF0ZT4obmV3U3RhdGUpKTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjAwOjpkaWRB
ZGRSZW1vdGVTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IHN0cmVhbURl
c2NyaXB0b3IpCit7CisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250
ZXh0VGhyZWFkKCkpOworCisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBDTE9TRUQpCisgICAgICAg
IHJldHVybjsKKworICAgIFJlZlB0cjxNZWRpYVN0cmVhbT4gc3RyZWFtID0gTWVkaWFTdHJlYW06
OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHN0cmVhbURlc2NyaXB0b3IpOworICAg
IG1fcmVtb3RlU3RyZWFtcy0+YXBwZW5kKHN0cmVhbSk7CisKKyAgICBkaXNwYXRjaEV2ZW50KE1l
ZGlhU3RyZWFtRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYWRkc3RyZWFtRXZlbnQsIGZhbHNl
LCBmYWxzZSwgc3RyZWFtLnJlbGVhc2UoKSkpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uMDA6
OmRpZFJlbW92ZVJlbW90ZVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0cmVhbURlc2Ny
aXB0b3IpCit7CisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0
VGhyZWFkKCkpOworICAgIEFTU0VSVChzdHJlYW1EZXNjcmlwdG9yLT5vd25lcigpKTsKKworICAg
IFJlZlB0cjxNZWRpYVN0cmVhbT4gc3RyZWFtID0gc3RhdGljX2Nhc3Q8TWVkaWFTdHJlYW0qPihz
dHJlYW1EZXNjcmlwdG9yLT5vd25lcigpKTsKKyAgICBzdHJlYW0tPnN0cmVhbUVuZGVkKCk7CisK
KyAgICBpZiAobV9yZWFkeVN0YXRlID09IENMT1NFRCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
QVNTRVJUKG1fcmVtb3RlU3RyZWFtcy0+Y29udGFpbnMoc3RyZWFtLmdldCgpKSk7CisgICAgbV9y
ZW1vdGVTdHJlYW1zLT5yZW1vdmUoc3RyZWFtLmdldCgpKTsKKworICAgIGRpc3BhdGNoRXZlbnQo
TWVkaWFTdHJlYW1FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZW1vdmVzdHJlYW1FdmVudCwg
ZmFsc2UsIGZhbHNlLCBzdHJlYW0ucmVsZWFzZSgpKSk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmlu
ZyYgUGVlckNvbm5lY3Rpb24wMDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JQZWVyQ29ubmVjdGlvbjAwOworfQorCitTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBQZWVyQ29ubmVjdGlvbjAwOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7Cit9CisKK2Jvb2wgUGVlckNvbm5lY3Rpb24wMDo6Y2FuU3VzcGVuZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uMDA6OnN0b3Ao
KQoreworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VEKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAobV9wZWVySGFuZGxlcikKKyAgICAgICAgbV9wZWVySGFuZGxlci0+c3RvcCgpOwor
ICAgIG1fcGVlckhhbmRsZXIuY2xlYXIoKTsKKworICAgIGNoYW5nZVJlYWR5U3RhdGUoQ0xPU0VE
KTsKKyAgICBjaGFuZ2VJY2VTdGF0ZShJQ0VfQ0xPU0VEKTsKK30KKworRXZlbnRUYXJnZXREYXRh
KiBQZWVyQ29ubmVjdGlvbjAwOjpldmVudFRhcmdldERhdGEoKQoreworICAgIHJldHVybiAmbV9l
dmVudFRhcmdldERhdGE7Cit9CisKK0V2ZW50VGFyZ2V0RGF0YSogUGVlckNvbm5lY3Rpb24wMDo6
ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkKK3sKKyAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRh
OworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uMDA6OmNoYW5nZVJlYWR5U3RhdGUoUmVhZHlTdGF0
ZSByZWFkeVN0YXRlKQoreworICAgIGlmIChyZWFkeVN0YXRlID09IG1fcmVhZHlTdGF0ZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9yZWFkeVN0YXRlID0gcmVhZHlTdGF0ZTsKKworICAgIHN3
aXRjaCAobV9yZWFkeVN0YXRlKSB7CisgICAgY2FzZSBORVc6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5FR09USUFUSU5HOgorICAgICAg
ICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbm5lY3RpbmdFdmVu
dCwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQUNUSVZFOgorICAg
ICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLm9wZW5FdmVudCwg
ZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ0xPU0VEOgorICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5zdGF0ZWNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKK30KKwordm9pZCBQ
ZWVyQ29ubmVjdGlvbjAwOjpjaGFuZ2VJY2VTdGF0ZShJY2VTdGF0ZSBpY2VTdGF0ZSkKK3sKKyAg
ICBpZiAoaWNlU3RhdGUgPT0gbV9pY2VTdGF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9p
Y2VTdGF0ZSA9IGljZVN0YXRlOworCisgICAgc3dpdGNoIChtX2ljZVN0YXRlKSB7CisgICAgY2Fz
ZSBJQ0VfR0FUSEVSSU5HOgorICAgIGNhc2UgSUNFX1dBSVRJTkc6CisgICAgY2FzZSBJQ0VfQ0hF
Q0tJTkc6CisgICAgY2FzZSBJQ0VfQ09OTkVDVEVEOgorICAgIGNhc2UgSUNFX0NPTVBMRVRFRDoK
KyAgICBjYXNlIElDRV9GQUlMRUQ6CisgICAgY2FzZSBJQ0VfQ0xPU0VEOgorICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorCisgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5zdGF0ZWNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24wMC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTI5NWY0ZDM4Yzk0NzgzYmVhMDE1YzVhYjNlYzMzY2IyZTQ1ZmJiMgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5l
Y3Rpb24wMC5oCkBAIC0wLDAgKzEsMTcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29u
dHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQZWVyQ29ubmVjdGlv
bjAwX2gKKyNkZWZpbmUgUGVlckNvbm5lY3Rpb24wMF9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXZlbnRUYXJn
ZXQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25CYXNlLmgiCisjaW5jbHVkZSAiSWNlQ2FsbGJhY2su
aCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtTGlzdC5o
IgorI2luY2x1ZGUgIlBlZXJDb25uZWN0aW9uMDBIYW5kbGVyLmgiCisjaW5jbHVkZSAiUGVlckNv
bm5lY3Rpb24wMEhhbmRsZXJDbGllbnQuaCIKKyNpbmNsdWRlICJTZXNzaW9uRGVzY3JpcHRpb24u
aCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlh
SGludHM7CisKKy8vIE5vdGU6CisvLyBTRFAgc3RhbmRzIGZvciBTZXNzaW9uIERlc2NyaXB0aW9u
IFByb3RvY29sLCB3aGljaCBpcyBpbnRlbmRlZCBmb3IgZGVzY3JpYmluZworLy8gbXVsdGltZWRp
YSBzZXNzaW9ucyBmb3IgdGhlIHB1cnBvc2VzIG9mIHNlc3Npb24gYW5ub3VuY2VtZW50LCBzZXNz
aW9uCisvLyBpbnZpdGF0aW9uLCBhbmQgb3RoZXIgZm9ybXMgb2YgbXVsdGltZWRpYSBzZXNzaW9u
IGluaXRpYXRpb24uCisvLworLy8gTW9yZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaGVyZToK
Ky8vIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzQ1NjYKKy8vIGh0dHA6Ly9lbi53aWtp
cGVkaWEub3JnL3dpa2kvU2Vzc2lvbl9EZXNjcmlwdGlvbl9Qcm90b2NvbAorCitjbGFzcyBQZWVy
Q29ubmVjdGlvbjAwIDogcHVibGljIFJlZkNvdW50ZWQ8UGVlckNvbm5lY3Rpb24wMD4sIHB1Ymxp
YyBQZWVyQ29ubmVjdGlvbjAwSGFuZGxlckNsaWVudCwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJs
aWMgQWN0aXZlRE9NT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBlbnVtIFJlYWR5U3RhdGUgeworICAg
ICAgICBORVcgPSAwLAorICAgICAgICBORUdPVElBVElORyA9IDEsCisgICAgICAgIEFDVElWRSA9
IDIsCisgICAgICAgIENMT1NFRCA9IDMKKyAgICB9OworCisgICAgZW51bSBBY3Rpb24geworICAg
ICAgICBTRFBfT0ZGRVIgPSAweDEwMCwKKyAgICAgICAgU0RQX1BSQU5TV0VSID0gMHgyMDAsCisg
ICAgICAgIFNEUF9BTlNXRVIgPSAweDMwMAorICAgIH07CisKKyAgICBlbnVtIEljZVN0YXRlIHsK
KyAgICAgICAgSUNFX0dBVEhFUklORyA9IDB4MTAwLAorICAgICAgICBJQ0VfV0FJVElORyA9IDB4
MjAwLAorICAgICAgICBJQ0VfQ0hFQ0tJTkcgPSAweDMwMCwKKyAgICAgICAgSUNFX0NPTk5FQ1RF
RCA9IDB4NDAwLAorICAgICAgICBJQ0VfQ09NUExFVEVEID0gMHg1MDAsCisgICAgICAgIElDRV9G
QUlMRUQgPSAweDYwMCwKKyAgICAgICAgSUNFX0NMT1NFRCA9IDB4NzAwCisgICAgfTsKKworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFBlZXJDb25uZWN0aW9uMDA+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBzZXJ2ZXJDb25maWd1cmF0aW9uLCBQYXNzUmVmUHRy
PEljZUNhbGxiYWNrPik7CisgICAgflBlZXJDb25uZWN0aW9uMDAoKTsKKworICAgIFBhc3NSZWZQ
dHI8U2Vzc2lvbkRlc2NyaXB0aW9uPiBjcmVhdGVPZmZlcigpOworICAgIFBhc3NSZWZQdHI8U2Vz
c2lvbkRlc2NyaXB0aW9uPiBjcmVhdGVPZmZlcihjb25zdCBTdHJpbmcmIG1lZGlhSGludHMpOwor
ICAgIFBhc3NSZWZQdHI8U2Vzc2lvbkRlc2NyaXB0aW9uPiBjcmVhdGVBbnN3ZXIoY29uc3QgU3Ry
aW5nJiBvZmZlcik7CisgICAgUGFzc1JlZlB0cjxTZXNzaW9uRGVzY3JpcHRpb24+IGNyZWF0ZUFu
c3dlcihjb25zdCBTdHJpbmcmIG9mZmVyLCBjb25zdCBTdHJpbmcmIG1lZGlhSGludHMpOworCisg
ICAgdm9pZCBzZXRMb2NhbERlc2NyaXB0aW9uKGludCBhY3Rpb24sIFBhc3NSZWZQdHI8U2Vzc2lv
bkRlc2NyaXB0aW9uPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2V0UmVtb3RlRGVzY3Jp
cHRpb24oaW50IGFjdGlvbiwgUGFzc1JlZlB0cjxTZXNzaW9uRGVzY3JpcHRpb24+LCBFeGNlcHRp
b25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxTZXNzaW9uRGVzY3JpcHRpb24+IGxvY2FsRGVzY3Jp
cHRpb24oKTsKKyAgICBQYXNzUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbj4gcmVtb3RlRGVzY3Jp
cHRpb24oKTsKKworICAgIHZvaWQgc3RhcnRJY2UoRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQg
c3RhcnRJY2UoY29uc3QgU3RyaW5nJiBvcHRpb25zLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9p
ZCBwcm9jZXNzSWNlTWVzc2FnZShQYXNzUmVmUHRyPEljZUNhbmRpZGF0ZT4sIEV4Y2VwdGlvbkNv
ZGUmKTsKKworICAgIEljZVN0YXRlIGljZVN0YXRlKCkgY29uc3Q7CisgICAgUmVhZHlTdGF0ZSBy
ZWFkeVN0YXRlKCkgY29uc3Q7CisKKyAgICB2b2lkIGFkZFN0cmVhbShjb25zdCBQYXNzUmVmUHRy
PE1lZGlhU3RyZWFtPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgYWRkU3RyZWFtKGNvbnN0
IFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+LCBjb25zdCBTdHJpbmcmIG1lZGlhU3RyZWFtSGludHMs
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHJlbW92ZVN0cmVhbShNZWRpYVN0cmVhbSosIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICBNZWRpYVN0cmVhbUxpc3QqIGxvY2FsU3RyZWFtcygpIGNvbnN0
OworICAgIE1lZGlhU3RyZWFtTGlzdCogcmVtb3RlU3RyZWFtcygpIGNvbnN0OworCisgICAgdm9p
ZCBjbG9zZShFeGNlcHRpb25Db2RlJik7CisKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKGNvbm5lY3RpbmcpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIo
b3Blbik7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihzdGF0ZWNoYW5nZSk7
CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihhZGRzdHJlYW0pOworICAgIERF
RklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIocmVtb3Zlc3RyZWFtKTsKKworICAgIC8vIFBl
ZXJDb25uZWN0aW9uMDBIYW5kbGVyQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIGRpZEdlbmVyYXRl
SWNlQ2FuZGlkYXRlKFBhc3NSZWZQdHI8SWNlQ2FuZGlkYXRlRGVzY3JpcHRvcj4sIGJvb2wgbW9y
ZVRvRm9sbG93KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlUmVhZHlTdGF0ZSh1aW50MzJf
dCBzdGF0ZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUljZVN0YXRlKHVpbnQzMl90IHN0
YXRlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkUmVtb3RlU3RyZWFtKFBhc3NSZWZQdHI8TWVk
aWFTdHJlYW1EZXNjcmlwdG9yPik7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlbW92ZVJlbW90ZVN0
cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAg
dmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdDsKKworICAgIC8vIEFjdGl2ZURPTU9iamVjdAorICAgIHZpcnR1YWwgYm9vbCBjYW5TdXNw
ZW5kKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKKworICAgIHVzaW5nIFJlZkNv
dW50ZWQ8UGVlckNvbm5lY3Rpb24wMD46OnJlZjsKKyAgICB1c2luZyBSZWZDb3VudGVkPFBlZXJD
b25uZWN0aW9uMDA+OjpkZXJlZjsKKworcHJpdmF0ZToKKyAgICBQZWVyQ29ubmVjdGlvbjAwKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHNlcnZlckNvbmZpZ3VyYXRpb24s
IFBhc3NSZWZQdHI8SWNlQ2FsbGJhY2s+KTsKKworICAgIC8vIEV2ZW50VGFyZ2V0IGltcGxlbWVu
dGF0aW9uLgorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKTsK
KyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7Cisg
ICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgIHZpcnR1YWwg
dm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CisgICAgRXZlbnRUYXJnZXREYXRh
IG1fZXZlbnRUYXJnZXREYXRhOworCisgICAgdm9pZCBjaGFuZ2VSZWFkeVN0YXRlKFJlYWR5U3Rh
dGUpOworICAgIHZvaWQgY2hhbmdlSWNlU3RhdGUoSWNlU3RhdGUpOworICAgIGJvb2wgaGFzTG9j
YWxBdWRpb1RyYWNrKCk7CisgICAgYm9vbCBoYXNMb2NhbFZpZGVvVHJhY2soKTsKKyAgICBQYXNz
UmVmUHRyPE1lZGlhSGludHM+IHBhcnNlTWVkaWFIaW50cyhjb25zdCBTdHJpbmcmIG1lZGlhSGlu
dHNTdHJpbmcpOworCisgICAgUmVmUHRyPEljZUNhbGxiYWNrPiBtX2ljZUNhbGxiYWNrOworCisg
ICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7CisgICAgSWNlU3RhdGUgbV9pY2VTdGF0ZTsKKwor
ICAgIFJlZlB0cjxNZWRpYVN0cmVhbUxpc3Q+IG1fbG9jYWxTdHJlYW1zOworICAgIFJlZlB0cjxN
ZWRpYVN0cmVhbUxpc3Q+IG1fcmVtb3RlU3RyZWFtczsKKworICAgIE93blB0cjxQZWVyQ29ubmVj
dGlvbjAwSGFuZGxlcj4gbV9wZWVySGFuZGxlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBQZWVyQ29u
bmVjdGlvbjAwX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUGVlckNvbm5lY3Rpb24wMC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1BlZXJDb25uZWN0aW9uMDAuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2YjMzMDgyYjgyOTU1ZmNhMjY0
ZDA2Y2E1ZjQxNjQ0MjI5MDAzYjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuaWRsCkBAIC0wLDAgKzEsMTEyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAg
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworbW9kdWxlIHAycCB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRp
b25hbD1NRURJQV9TVFJFQU0sCisgICAgICAgIEFjdGl2ZURPTU9iamVjdCwKKyAgICAgICAgQ29u
c3RydWN0b3IoaW4gRE9NU3RyaW5nIHNlcnZlckNvbmZpZ3VyYXRpb24sIGluIFtDYWxsYmFja10g
SWNlQ2FsbGJhY2sgaWNlQ2FsbGJhY2spLAorICAgICAgICBDYWxsV2l0aD1TY3JpcHRFeGVjdXRp
b25Db250ZXh0LAorICAgICAgICBFdmVudFRhcmdldAorICAgIF0gUGVlckNvbm5lY3Rpb24wMCB7
CisgICAgICAgIC8vIEZJWE1FKHRvbW15dyk6IE1ha2UgbWVkaWFIaW50cyBhbiBvYmplY3QKKyAg
ICAgICAgU2Vzc2lvbkRlc2NyaXB0aW9uIGNyZWF0ZU9mZmVyKGluIFtPcHRpb25hbF0gRE9NU3Ry
aW5nIG1lZGlhSGludHMpOworCisgICAgICAgIC8vIEZJWE1FKHRvbW15dyk6IE1ha2UgbWVkaWFI
aW50cyBhbiBvYmplY3QKKyAgICAgICAgU2Vzc2lvbkRlc2NyaXB0aW9uIGNyZWF0ZUFuc3dlcihp
biBET01TdHJpbmcgb2ZmZXIsIGluIFtPcHRpb25hbF0gRE9NU3RyaW5nIG1lZGlhSGludHMpOwor
CisgICAgICAgIC8vIEFjdGlvbnMsIGZvciBzZXRMb2NhbERlc2NyaXB0aW9uL3NldFJlbW90ZURl
c2NyaXB0aW9uLgorICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTRFBfT0ZGRVIgPSAweDEw
MDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU0RQX1BSQU5TV0VSID0gMHgyMDA7Cisg
ICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNEUF9BTlNXRVIgPSAweDMwMDsKKworICAgICAg
ICB2b2lkIHNldExvY2FsRGVzY3JpcHRpb24oaW4gdW5zaWduZWQgc2hvcnQgYWN0aW9uLCBpbiBT
ZXNzaW9uRGVzY3JpcHRpb24gZGVzYykKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24p
OworCisgICAgICAgIHZvaWQgc2V0UmVtb3RlRGVzY3JpcHRpb24oaW4gdW5zaWduZWQgc2hvcnQg
YWN0aW9uLCBpbiBTZXNzaW9uRGVzY3JpcHRpb24gZGVzYykKKyAgICAgICAgICAgIHJhaXNlcyhE
T01FeGNlcHRpb24pOworCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTZXNzaW9uRGVzY3Jp
cHRpb24gbG9jYWxEZXNjcmlwdGlvbjsKKworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgU2Vz
c2lvbkRlc2NyaXB0aW9uIHJlbW90ZURlc2NyaXB0aW9uOworCisgICAgICAgIGNvbnN0IHVuc2ln
bmVkIHNob3J0IE5FVyA9IDA7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE5FR09USUFU
SU5HID0gMTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQUNUSVZFID0gMjsKKyAgICAg
ICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ0xPU0VEID0gMzsKKyAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIHVuc2lnbmVkIHNob3J0IHJlYWR5U3RhdGU7CisKKyAgICAgICAgLy8gRklYTUUodG9t
bXl3KTogTWFrZSBpY2VPcHRpb25zIGFuIG9iamVjdAorICAgICAgICB2b2lkIHN0YXJ0SWNlKGlu
IFtPcHRpb25hbF0gRE9NU3RyaW5nIGljZU9wdGlvbnMpCisgICAgICAgICAgICByYWlzZXMoRE9N
RXhjZXB0aW9uKTsKKworICAgICAgICB2b2lkIHByb2Nlc3NJY2VNZXNzYWdlKGluIEljZUNhbmRp
ZGF0ZSBjYW5kaWRhdGUpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKworICAg
ICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBJQ0VfR0FUSEVSSU5HID0gMHgxMDA7CisgICAgICAg
IGNvbnN0IHVuc2lnbmVkIHNob3J0IElDRV9XQUlUSU5HID0gMHgyMDA7CisgICAgICAgIGNvbnN0
IHVuc2lnbmVkIHNob3J0IElDRV9DSEVDS0lORyA9IDB4MzAwOworICAgICAgICBjb25zdCB1bnNp
Z25lZCBzaG9ydCBJQ0VfQ09OTkVDVEVEID0gMHg0MDA7CisgICAgICAgIGNvbnN0IHVuc2lnbmVk
IHNob3J0IElDRV9DT01QTEVURUQgPSAweDUwMDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hv
cnQgSUNFX0ZBSUxFRCA9IDB4NjAwOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBJQ0Vf
Q0xPU0VEID0gMHg3MDA7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9y
dCBpY2VTdGF0ZTsKKworICAgICAgICAvLyBGSVhNRSh0b21teXcpOiBNYWtlIG1lZGlhU3RyZWFt
SGludHMgYW4gb2JqZWN0CisgICAgICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgYWRkU3Ry
ZWFtKGluIE1lZGlhU3RyZWFtIHN0cmVhbSwgaW4gW09wdGlvbmFsXSBET01TdHJpbmcgbWVkaWFT
dHJlYW1IaW50cykKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBb
U3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIHJlbW92ZVN0cmVhbShpbiBNZWRpYVN0cmVhbSBzdHJl
YW0pCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKworICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgTWVkaWFTdHJlYW1MaXN0IGxvY2FsU3RyZWFtczsKKyAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIE1lZGlhU3RyZWFtTGlzdCByZW1vdGVTdHJlYW1zOworCisgICAgICAgIHZv
aWQgY2xvc2UoKQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAg
YXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jb25uZWN0aW5nOworICAgICAgICBhdHRyaWJ1dGUg
RXZlbnRMaXN0ZW5lciBvbm9wZW47CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9u
c3RhdGVjaGFuZ2U7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYWRkc3RyZWFt
OworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnJlbW92ZXN0cmVhbTsKKworICAg
ICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKKyAgICAgICAgdm9pZCBhZGRFdmVudExpc3Rl
bmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4g
RXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgdm9pZCByZW1vdmVFdmVu
dExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgYm9v
bGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2ZW50KQorICAgICAgICAgICAgcmFpc2VzKEV2
ZW50RXhjZXB0aW9uKTsKKyAgICB9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMzg2ZWZiMjhk
OWIyOTBmMmI1OWMxODg5NzJlM2VkY2QyMzBkNmU5Yi4uNGYzMTBiMzRhMjBhNGFlZmJkMGM3MjFm
NzEzYmFlNTUxM2Y1MTcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNzkwLDYgKzc5MCw3IEBACiAg
ICAgICAgICAgICAnTW9kdWxlcy9pbnRlbnRzL05hdmlnYXRvckludGVudHMuaWRsJywKICAgICAg
ICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbi5pZGwn
LAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vRE9NV2luZG93TWVkaWFTdHJlYW0u
aWRsJywKKyAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL0ljZUNhbGxiYWNrLmlkbCcs
CiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9JY2VDYW5kaWRhdGUuaWRsJywKICAg
ICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL0xvY2FsTWVkaWFTdHJlYW0uaWRsJywKICAg
ICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmlkbCcsCkBAIC04MDEs
NiArODAyLDcgQEAKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVz
ZXJNZWRpYUVycm9yLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZp
Z2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9t
ZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaWRsJywKKyAgICAg
ICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuaWRsJywKICAgICAg
ICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlwdGlvbi5pZGwnLAogICAg
ICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vU2lnbmFsaW5nQ2FsbGJhY2suaWRsJywKICAg
ICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dTcGVlY2guaWRsJywKQEAgLTE0NTgs
NiArMTQ2MCw3IEBACiAgICAgICAgICAgICAnTW9kdWxlcy9pbnRlbnRzL05hdmlnYXRvckludGVu
dHMuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9EZXByZWNhdGVkUGVlckNv
bm5lY3Rpb24uY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL0RlcHJlY2F0
ZWRQZWVyQ29ubmVjdGlvbi5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL0lj
ZUNhbGxiYWNrLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vSWNlQ2FuZGlk
YXRlLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9JY2VDYW5kaWRhdGUu
aCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmNw
cCcsCkBAIC0xNDc5LDYgKzE0ODIsOCBAQAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJl
YW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRp
YXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmgnLAogICAgICAgICAgICAg
J01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmgn
LAorICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24wMC5jcHAn
LAorICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24wMC5oJywK
ICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlwdGlvbi5jcHAn
LAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9uLmgn
LAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vU2lnbmFsaW5nQ2FsbGJhY2suaCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFi
bGVkRmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oCmluZGV4IDFmODE4NGViNjJiZjg5NTYxMjliMjNkZWNhNTU0MDYxYzI2
OTc2YTMuLjA3MjhlYzY1MmNlYzUxYzI2MmNkYzZlNWZmZWExY2Q0NWY1MDM1NmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5oCkBAIC0xODYsNiArMTg2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNl
dE1lZGlhU3RyZWFtRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc01lZGlhU3RyZWFtRW5hYmxl
ZCA9IGlzRW5hYmxlZDsgfQogICAgIHN0YXRpYyBib29sIHdlYmtpdEdldFVzZXJNZWRpYUVuYWJs
ZWQoKSB7IHJldHVybiBpc01lZGlhU3RyZWFtRW5hYmxlZDsgfQogICAgIHN0YXRpYyBib29sIHdl
YmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkVuYWJsZWQoKSB7IHJldHVybiBpc01lZGlhU3Ry
ZWFtRW5hYmxlZDsgfQorICAgIHN0YXRpYyBib29sIHdlYmtpdFBlZXJDb25uZWN0aW9uMDBFbmFi
bGVkKCkgeyByZXR1cm4gaXNNZWRpYVN0cmVhbUVuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5B
QkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRG
YWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRl
eCBkOTk4YjQ2ZTdhMzFlNzhkODA3YzcxOTE0MjYwMjNkYzY1NGI0ZmRkLi4yODBkMzk0ZjMyNTlm
OGE5YmNhMTJiOGE1ZGJkZmZlNzNkMmZjODVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRh
cmdldEZhY3RvcnkuaW4KQEAgLTIwLDYgKzIwLDcgQEAgTWVkaWFTdHJlYW0gY29uZGl0aW9uYWw9
TUVESUFfU1RSRUFNCiBNZXNzYWdlUG9ydAogTm9kZQogTm90aWZpY2F0aW9uIGNvbmRpdGlvbmFs
PU5PVElGSUNBVElPTlN8TEVHQUNZX05PVElGSUNBVElPTlMKK1BlZXJDb25uZWN0aW9uMDAgY29u
ZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBTaGFyZWRXb3JrZXIgY29uZGl0aW9uYWw9U0hBUkVEX1dP
UktFUlMKIFNoYXJlZFdvcmtlckNvbnRleHQgY29uZGl0aW9uYWw9U0hBUkVEX1dPUktFUlMKIFNw
ZWVjaFJlY29nbml0aW9uIGNvbmRpdGlvbmFsPVNDUklQVEVEX1NQRUVDSAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132875</attachid>
            <date>2012-03-20 12:14:09 -0700</date>
            <delta_ts>2012-03-20 12:33:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81657-20120320201407.patch</filename>
            <type>text/plain</type>
            <size>44688</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDA2YjBiOWZiZTNhZTRl
NjQ3MTM5NWY5YTVmMDAwY2U5ZjVhNGZlMS4uMDI3ZTk1MWE3ZDBlNGJmMDY0MjhmODYwMDQzYzcw
NjNkMDllYTMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEyLTAzLTIwICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSSAoSlNFUCk6IEludHJvZHVjaW5nIFBlZXJDb25uZWN0aW9uMDAgYW5kIEljZUNhbGxiYWNr
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTY1Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExhc3QgbWFq
b3IgV2ViQ29yZSBwYXRjaCBmb3IgdGhlIEpTRVAgUGVlckNvbm5lY3Rpb24sIHRvZ2V0aGVyIHdp
dGggdGhlIGFzc29jaWF0ZWQKKyAgICAgICAgSWNlQ2FsbGJhY2sgKHRoZXkgYm90aCBkZXBlbmQg
b24gZWFjaCBvdGhlciBhbmQgSWNlQ2FsbGJhY2sgaGFzIHZlcnkgZmV3IGxpbmVzIG9mIHJlYWwg
Y29kZSkuCisKKyAgICAgICAgTXkgbmV4dCBwYXRjaCBhZnRlciB0aGlzIG9uZSB3aWxsIGRvIGEg
bWFqb3Igb3ZlcmhhdWwgb2YgdGhlIGV4aXN0aW5nIGxheW91dCB0ZXN0cworICAgICAgICBhbmQg
YWRkIGEgZmV3IG5ldyBvbmVzLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0RPTVdpbmRvd01lZGlhU3RyZWFtLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0ljZUNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChJY2VDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpJ
Y2VDYWxsYmFjazo6fkljZUNhbGxiYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L0ljZUNhbGxiYWNrLmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Q
ZWVyQ29ubmVjdGlvbjAwLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uMDA6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyQ29ubmVjdGlvbjAwOjpQZWVyQ29ubmVjdGlvbjAwKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uMDA6On5QZWVyQ29ubmVjdGlvbjAwKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uMDA6Omhhc0xvY2FsQXVkaW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyQ29ubmVjdGlvbjAwOjpoYXNMb2NhbFZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
UGVlckNvbm5lY3Rpb24wMDo6cGFyc2VNZWRpYUhpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uMDA6OmNyZWF0ZU9mZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25u
ZWN0aW9uMDA6OmNyZWF0ZUFuc3dlcik6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlv
bjAwOjpzZXRMb2NhbERlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0
aW9uMDA6OnNldFJlbW90ZURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25u
ZWN0aW9uMDA6OmxvY2FsRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5l
Y3Rpb24wMDo6cmVtb3RlRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5l
Y3Rpb24wMDo6c3RhcnRJY2UpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb24wMDo6
cHJvY2Vzc0ljZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb24wMDo6
cmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjAwOjppY2VTdGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjAwOjphZGRTdHJlYW0pOgorICAg
ICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb24wMDo6cmVtb3ZlU3RyZWFtKToKKyAgICAgICAg
KFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uMDA6OmxvY2FsU3RyZWFtcyk6CisgICAgICAgIChXZWJD
b3JlOjpQZWVyQ29ubmVjdGlvbjAwOjpyZW1vdGVTdHJlYW1zKToKKyAgICAgICAgKFdlYkNvcmU6
OlBlZXJDb25uZWN0aW9uMDA6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0
aW9uMDA6OmRpZEdlbmVyYXRlSWNlQ2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJD
b25uZWN0aW9uMDA6OmRpZENoYW5nZVJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGVl
ckNvbm5lY3Rpb24wMDo6ZGlkQ2hhbmdlSWNlU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGVl
ckNvbm5lY3Rpb24wMDo6ZGlkQWRkUmVtb3RlU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uMDA6OmRpZFJlbW92ZVJlbW90ZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3Jl
OjpQZWVyQ29ubmVjdGlvbjAwOjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uMDA6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGVlckNvbm5lY3Rpb24wMDo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVj
dGlvbjAwOjpldmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rp
b24wMDo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25u
ZWN0aW9uMDA6OmNoYW5nZVJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5l
Y3Rpb24wMDo6Y2hhbmdlSWNlU3RhdGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UGVlckNvbm5lY3Rpb24wMC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
UGVlckNvbm5lY3Rpb24wMCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjAwOjpy
ZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjAwOjpkZXJl
ZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0
aW9uMDAuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYmlu
ZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRQZWVyQ29ubmVjdGlvbjAwRW5hYmxlZCk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNQZWVyQ29ubmVjdGlvbjAwLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTUGVlckNvbm5lY3Rpb24wMENv
bnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1BlZXJDb25uZWN0aW9uMDApOgorICAgICAgICAqIGRvbS9F
dmVudFRhcmdldEZhY3RvcnkuaW46CisKIDIwMTItMDMtMjAgIEx1a2UgTWFjcGhlcnNvbiAgPG1h
Y3BoZXJzb25AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSBtaW4gYW5kIG1heCBwYXJh
bWV0ZXJzIGZyb20gQ1NTUHJpbWl0aXZlVmFsdWUncyByb3VuZEZvckltcHJlY2lzZUNvbnZlcnNp
b24gZnVuY3Rpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAxM2M5ZGRjMDA5
YzA4NDE3NzA1YmFmOWU1N2ViMDljMGM2ODc5ZTNhLi4yNzEyMDE0Y2MyZWUyODVmMDgzYjg3ZTg4
YjEzYTc5NGYwNGFmYmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTM0NCw2
ICszNDQsOCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNIVE1MVUxpc3RFbGVtZW50LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNI
VE1MVmlkZW9FbGVtZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxWaWRl
b0VsZW1lbnQuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ljZUNhbGxiYWNrLmNwcCBc
CisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ljZUNhbGxiYWNrLmggXAogCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNJY2VDYW5kaWRhdGUuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTSWNlQ2FuZGlkYXRlLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJbWFnZURhdGEu
Y3BwIFwKQEAgLTQzNiw2ICs0MzgsOCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNPdmVyZmxvd0V2ZW50LmggXAogCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNQYWdlVHJhbnNpdGlvbkV2ZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1BhZ2VUcmFuc2l0aW9uRXZlbnQuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1BlZXJDb25uZWN0aW9uMDAuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGVlckNv
bm5lY3Rpb24wMC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGVyZm9ybWFuY2UuY3Bw
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGVyZm9ybWFuY2UuaCBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAgXApAQCAtNjY0LDYgKzY2
OCw3IEBAIGRvbV9iaW5kaW5nX2lkbHMgKz0gXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVk
aWFzdHJlYW0vRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1
bGVzL21lZGlhc3RyZWFtL0RPTVdpbmRvd01lZGlhU3RyZWFtLmlkbCBcCisJJChXZWJDb3JlKS9N
b2R1bGVzL21lZGlhc3RyZWFtL0ljZUNhbGxiYWNrLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVz
L21lZGlhc3RyZWFtL0ljZUNhbmRpZGF0ZS5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRp
YXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtLmlkbCBcCkBAIC02NzUsNiArNjgwLDcgQEAgZG9tX2JpbmRpbmdf
aWRscyArPSBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJN
ZWRpYUVycm9yLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRv
clVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFz
dHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmlkbCBcCisJJChXZWJDb3Jl
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuaWRsIFwKIAkkKFdlYkNvcmUp
L01vZHVsZXMvbWVkaWFzdHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9uLmlkbCBcCiAJJChXZWJDb3Jl
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL1NpZ25hbGluZ0NhbGxiYWNrLmlkbCBcCiAJJChXZWJDb3Jl
KS9jc3MvQ1NTQ2hhcnNldFJ1bGUuaWRsIFwKQEAgLTExMTgsNiArMTEyNCw4IEBAIHdlYmNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0
b3JVc2VyTWVkaWFFcnJvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaCBcCiAJU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaCBcCisJ
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwLmNwcCBc
CisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwLmgg
XAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9u
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TZXNzaW9uRGVzY3Jp
cHRpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TaWduYWxpbmdD
YWxsYmFjay5oIFwKQEAgLTE0MDUsNiArMTQxMyw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNQZWVyQ29ubmVjdGlvbjAwQ3VzdG9tLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmggXAogCVNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9ET01XaW5kb3dNZWRp
YVN0cmVhbS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RPTVdpbmRv
d01lZGlhU3RyZWFtLmlkbAppbmRleCA2MTIwZGEwYjMyMmU2YWU1OTFjZDU3ZmIxZDk4MTQ2N2Fi
ZjgwYmU0Li5iYzUwMDViZWNlYmIzZjQ3MWYwNmQ5NzY0MDE3MzQ2MjA4YzRlOTU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RPTVdpbmRvd01lZGlhU3Ry
ZWFtLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RPTVdpbmRv
d01lZGlhU3RyZWFtLmlkbApAQCAtMzEsNiArMzEsOSBAQCBtb2R1bGUgd2luZG93IHsKICAgICAg
ICAgU3VwcGxlbWVudGFsPURPTVdpbmRvdwogICAgIF0gRE9NV2luZG93TWVkaWFTdHJlYW0gewog
ICAgICAgICBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZV0gRGVwcmVjYXRlZFBlZXJDb25u
ZWN0aW9uQ29uc3RydWN0b3Igd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uOworICAgICAg
ICBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZV0gUGVlckNvbm5lY3Rpb24wMENvbnN0cnVj
dG9yIHdlYmtpdFBlZXJDb25uZWN0aW9uMDA7CisgICAgICAgIGF0dHJpYnV0ZSBTZXNzaW9uRGVz
Y3JpcHRpb25Db25zdHJ1Y3RvciBTZXNzaW9uRGVzY3JpcHRpb247CisgICAgICAgIGF0dHJpYnV0
ZSBJY2VDYW5kaWRhdGVDb25zdHJ1Y3RvciBJY2VDYW5kaWRhdGU7CiAgICAgICAgIGF0dHJpYnV0
ZSBNZWRpYVN0cmVhbUV2ZW50Q29uc3RydWN0b3IgTWVkaWFTdHJlYW1FdmVudDsKICAgICB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0ljZUNhbGxi
YWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0ljZUNhbGxiYWNrLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDliYjUyMGJjN2ZiYmFjMDQzY2M5MTlhNTllOThlMDg3ZjBjNDc1YwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vSWNlQ2Fs
bGJhY2suaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJp
YnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJY2VDYWxsYmFja19oCisj
ZGVmaW5lIEljZUNhbGxiYWNrX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIElj
ZUNhbmRpZGF0ZTsKK2NsYXNzIFBlZXJDb25uZWN0aW9uMDA7CisKK2NsYXNzIEljZUNhbGxiYWNr
IDogcHVibGljIFJlZkNvdW50ZWQ8SWNlQ2FsbGJhY2s+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5JY2VDYWxsYmFjaygpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChJY2VDYW5k
aWRhdGUqLCBib29sIG1vcmVUb0ZvbGxvdywgUGVlckNvbm5lY3Rpb24wMCopID0gMDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKKyNlbmRpZiAvLyBJY2VDYWxsYmFja19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL0ljZUNhbGxiYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vSWNlQ2FsbGJhY2suaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5ZDY0NmYyMDNhMjJj
ZjRmMjc0OGY2YWRmOWYxYTRmMjdjMTcwOWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0ljZUNhbGxiYWNrLmlkbApAQCAtMCwwICsxLDQwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAg
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworbW9kdWxlIHAycCB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRp
b25hbD1NRURJQV9TVFJFQU0sCisgICAgICAgIENhbGxiYWNrCisgICAgXSBJY2VDYWxsYmFjayB7
CisgICAgICAgIGJvb2xlYW4gaGFuZGxlRXZlbnQoaW4gSWNlQ2FuZGlkYXRlIGNhbmRpZGF0ZSwg
aW4gYm9vbGVhbiBtb3JlVG9Gb2xsb3csIGluIFBlZXJDb25uZWN0aW9uMDAgc291cmNlKTsKKyAg
ICB9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1BlZXJDb25uZWN0aW9uMDAuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9QZWVyQ29ubmVjdGlvbjAwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzhiMjQ3ZDc3N2M0MTM3NmNhOTM1
MTg2OWNkOGE1ZTQ1MmQ0NTJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwLmNwcApAQCAtMCwwICsxLDQ3MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisK
KyNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbjAwLmgiCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCisjaW5jbHVkZSAiSWNlQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJJY2VDYW5kaWRhdGUuaCIK
KyNpbmNsdWRlICJJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiSWNlT3B0aW9u
cy5oIgorI2luY2x1ZGUgIk1lZGlhSGludHMuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUV2ZW50
LmgiCisjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2Vzc2lv
bkRlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8UGVlckNvbm5lY3Rpb24wMD4g
UGVlckNvbm5lY3Rpb24wMDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IGNvbnN0IFN0cmluZyYgc2VydmVyQ29uZmlndXJhdGlvbiwgUGFzc1JlZlB0cjxJY2VDYWxsYmFj
az4gaWNlQ2FsbGJhY2spCit7CisgICAgUmVmUHRyPFBlZXJDb25uZWN0aW9uMDA+IHBlZXJDb25u
ZWN0aW9uID0gYWRvcHRSZWYobmV3IFBlZXJDb25uZWN0aW9uMDAoY29udGV4dCwgc2VydmVyQ29u
ZmlndXJhdGlvbiwgaWNlQ2FsbGJhY2spKTsKKyAgICBwZWVyQ29ubmVjdGlvbi0+c3VzcGVuZElm
TmVlZGVkKCk7CisgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnJlbGVhc2UoKTsKK30KKworUGVl
ckNvbm5lY3Rpb24wMDo6UGVlckNvbm5lY3Rpb24wMChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBjb25zdCBTdHJpbmcmIHNlcnZlckNvbmZpZ3VyYXRpb24sIFBhc3NSZWZQdHI8SWNl
Q2FsbGJhY2s+IGljZUNhbGxiYWNrKQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRo
aXMpCisgICAgLCBtX2ljZUNhbGxiYWNrKGljZUNhbGxiYWNrKQorICAgICwgbV9yZWFkeVN0YXRl
KE5FVykKKyAgICAsIG1faWNlU3RhdGUoSUNFX0NMT1NFRCkKKyAgICAsIG1fbG9jYWxTdHJlYW1z
KE1lZGlhU3RyZWFtTGlzdDo6Y3JlYXRlKCkpCisgICAgLCBtX3JlbW90ZVN0cmVhbXMoTWVkaWFT
dHJlYW1MaXN0OjpjcmVhdGUoKSkKKyAgICAsIG1fcGVlckhhbmRsZXIoUGVlckNvbm5lY3Rpb24w
MEhhbmRsZXI6OmNyZWF0ZSh0aGlzLCBzZXJ2ZXJDb25maWd1cmF0aW9uLCBjb250ZXh0LT5zZWN1
cml0eU9yaWdpbigpLT50b1N0cmluZygpKSkKK3sKK30KKworUGVlckNvbm5lY3Rpb24wMDo6flBl
ZXJDb25uZWN0aW9uMDAoKQoreworfQorCitib29sIFBlZXJDb25uZWN0aW9uMDA6Omhhc0xvY2Fs
QXVkaW9UcmFjaygpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xvY2FsU3RyZWFt
cy0+bGVuZ3RoKCk7ICsraSkgeworICAgICAgICBNZWRpYVN0cmVhbSogY3VyciA9IG1fbG9jYWxT
dHJlYW1zLT5pdGVtKGkpOworICAgICAgICBpZiAoY3Vyci0+YXVkaW9UcmFja3MoKS0+bGVuZ3Ro
KCkgPiAwKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBQZWVyQ29ubmVjdGlvbjAwOjpoYXNMb2NhbFZpZGVvVHJhY2soKQorewor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9sb2NhbFN0cmVhbXMtPmxlbmd0aCgpOyArK2kp
IHsKKyAgICAgICAgTWVkaWFTdHJlYW0qIGN1cnIgPSBtX2xvY2FsU3RyZWFtcy0+aXRlbShpKTsK
KyAgICAgICAgaWYgKGN1cnItPnZpZGVvVHJhY2tzKCktPmxlbmd0aCgpID4gMCkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1Bhc3NSZWZQ
dHI8TWVkaWFIaW50cz4gUGVlckNvbm5lY3Rpb24wMDo6cGFyc2VNZWRpYUhpbnRzKGNvbnN0IFN0
cmluZyYgbWVkaWFIaW50cykKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBoaW50c0xpc3Q7CisgICAg
bWVkaWFIaW50cy5zcGxpdCgiLCIsIGhpbnRzTGlzdCk7CisgICAgYm9vbCBhdWRpbyA9IGhhc0xv
Y2FsQXVkaW9UcmFjaygpOworICAgIGJvb2wgdmlkZW8gPSBoYXNMb2NhbFZpZGVvVHJhY2soKTsK
KyAgICBmb3IgKFZlY3RvcjxTdHJpbmc+OjppdGVyYXRvciBpID0gaGludHNMaXN0LmJlZ2luKCk7
IGkgIT0gaGludHNMaXN0LmVuZCgpOyArK2kpIHsKKyAgICAgICAgaWYgKCppID09ICJhdWRpbyIp
CisgICAgICAgICAgICBhdWRpbyA9IHRydWU7CisgICAgICAgIGVsc2UgaWYgKCppID09ICJub19h
dWRpbyIpCisgICAgICAgICAgICBhdWRpbyA9IGZhbHNlOworICAgICAgICBlbHNlIGlmICgqaSA9
PSAidmlkZW8iKQorICAgICAgICAgICAgdmlkZW8gPSB0cnVlOworICAgICAgICBlbHNlIGlmICgq
aSA9PSAibm9fdmlkZW8iKQorICAgICAgICAgICAgdmlkZW8gPSBmYWxzZTsKKyAgICB9CisKKyAg
ICByZXR1cm4gTWVkaWFIaW50czo6Y3JlYXRlKGF1ZGlvLCB2aWRlbyk7Cit9CisKK1Bhc3NSZWZQ
dHI8U2Vzc2lvbkRlc2NyaXB0aW9uPiBQZWVyQ29ubmVjdGlvbjAwOjpjcmVhdGVPZmZlcigpCit7
CisgICAgcmV0dXJuIGNyZWF0ZU9mZmVyKCIiKTsKK30KKworUGFzc1JlZlB0cjxTZXNzaW9uRGVz
Y3JpcHRpb24+IFBlZXJDb25uZWN0aW9uMDA6OmNyZWF0ZU9mZmVyKGNvbnN0IFN0cmluZyYgbWVk
aWFIaW50c1N0cmluZykKK3sKKyAgICBSZWZQdHI8TWVkaWFIaW50cz4gbWVkaWFIaW50cyA9IHBh
cnNlTWVkaWFIaW50cyhtZWRpYUhpbnRzU3RyaW5nKTsKKyAgICBSZWZQdHI8U2Vzc2lvbkRlc2Ny
aXB0aW9uRGVzY3JpcHRvcj4gZGVzY3JpcHRvciA9IG1fcGVlckhhbmRsZXItPmNyZWF0ZU9mZmVy
KG1lZGlhSGludHMucmVsZWFzZSgpKTsKKyAgICBpZiAoIWRlc2NyaXB0b3IpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgcmV0dXJuIFNlc3Npb25EZXNjcmlwdGlvbjo6Y3JlYXRlKGRlc2NyaXB0
b3IpOworfQorCitQYXNzUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbj4gUGVlckNvbm5lY3Rpb24w
MDo6Y3JlYXRlQW5zd2VyKGNvbnN0IFN0cmluZyYgb2ZmZXIpCit7CisgICAgcmV0dXJuIGNyZWF0
ZUFuc3dlcihvZmZlciwgIiIpOworfQorCitQYXNzUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbj4g
UGVlckNvbm5lY3Rpb24wMDo6Y3JlYXRlQW5zd2VyKGNvbnN0IFN0cmluZyYgb2ZmZXIsIGNvbnN0
IFN0cmluZyYgbWVkaWFIaW50c1N0cmluZykKK3sKKyAgICBSZWZQdHI8TWVkaWFIaW50cz4gbWVk
aWFIaW50cyA9IHBhcnNlTWVkaWFIaW50cyhtZWRpYUhpbnRzU3RyaW5nKTsKKyAgICBSZWZQdHI8
U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcj4gZGVzY3JpcHRvciA9IG1fcGVlckhhbmRsZXIt
PmNyZWF0ZUFuc3dlcihvZmZlciwgbWVkaWFIaW50cy5yZWxlYXNlKCkpOworICAgIGlmICghZGVz
Y3JpcHRvcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gU2Vzc2lvbkRlc2NyaXB0
aW9uOjpjcmVhdGUoZGVzY3JpcHRvcik7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb24wMDo6c2V0
TG9jYWxEZXNjcmlwdGlvbihpbnQgYWN0aW9uLCBQYXNzUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlv
bj4gc2Vzc2lvbkRlc2NyaXB0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAobV9y
ZWFkeVN0YXRlID09IENMT1NFRCkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3dpdGNoIChhY3Rpb24pIHsKKyAgICBjYXNl
IFNEUF9PRkZFUjoKKyAgICBjYXNlIFNEUF9QUkFOU1dFUjoKKyAgICBjYXNlIFNEUF9BTlNXRVI6
CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghc2Vzc2lvbkRlc2NyaXB0aW9uKSB7
CisgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBib29sIHZhbGlkID0gbV9wZWVySGFuZGxlci0+c2V0TG9jYWxEZXNjcmlwdGlvbihh
Y3Rpb24sIHNlc3Npb25EZXNjcmlwdGlvbi0+ZGVzY3JpcHRvcigpKTsKKyAgICBpZiAoIXZhbGlk
KQorICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb24wMDo6
c2V0UmVtb3RlRGVzY3JpcHRpb24oaW50IGFjdGlvbiwgUGFzc1JlZlB0cjxTZXNzaW9uRGVzY3Jp
cHRpb24+IHNlc3Npb25EZXNjcmlwdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYg
KG1fcmVhZHlTdGF0ZSA9PSBDTE9TRUQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VS
UjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN3aXRjaCAoYWN0aW9uKSB7CisgICAg
Y2FzZSBTRFBfT0ZGRVI6CisgICAgY2FzZSBTRFBfUFJBTlNXRVI6CisgICAgY2FzZSBTRFBfQU5T
V0VSOgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBlYyA9IFNZTlRBWF9F
UlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXNlc3Npb25EZXNjcmlwdGlv
bikgeworICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgYm9vbCB2YWxpZCA9IG1fcGVlckhhbmRsZXItPnNldFJlbW90ZURlc2NyaXB0
aW9uKGFjdGlvbiwgc2Vzc2lvbkRlc2NyaXB0aW9uLT5kZXNjcmlwdG9yKCkpOworICAgIGlmICgh
dmFsaWQpCisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKK30KKworUGFzc1JlZlB0cjxTZXNzaW9u
RGVzY3JpcHRpb24+IFBlZXJDb25uZWN0aW9uMDA6OmxvY2FsRGVzY3JpcHRpb24oKQoreworICAg
IFJlZlB0cjxTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yPiBkZXNjcmlwdG9yID0gbV9wZWVy
SGFuZGxlci0+bG9jYWxEZXNjcmlwdGlvbigpOworICAgIGlmICghZGVzY3JpcHRvcikKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8U2Vzc2lvbkRlc2NyaXB0aW9uPiBkZXNjID0gU2Vz
c2lvbkRlc2NyaXB0aW9uOjpjcmVhdGUoZGVzY3JpcHRvci5yZWxlYXNlKCkpOworICAgIHJldHVy
biBkZXNjLnJlbGVhc2UoKTsKK30KKworUGFzc1JlZlB0cjxTZXNzaW9uRGVzY3JpcHRpb24+IFBl
ZXJDb25uZWN0aW9uMDA6OnJlbW90ZURlc2NyaXB0aW9uKCkKK3sKKyAgICBSZWZQdHI8U2Vzc2lv
bkRlc2NyaXB0aW9uRGVzY3JpcHRvcj4gZGVzY3JpcHRvciA9IG1fcGVlckhhbmRsZXItPnJlbW90
ZURlc2NyaXB0aW9uKCk7CisgICAgaWYgKCFkZXNjcmlwdG9yKQorICAgICAgICByZXR1cm4gMDsK
KworICAgIFJlZlB0cjxTZXNzaW9uRGVzY3JpcHRpb24+IGRlc2MgPSBTZXNzaW9uRGVzY3JpcHRp
b246OmNyZWF0ZShkZXNjcmlwdG9yLnJlbGVhc2UoKSk7CisgICAgcmV0dXJuIGRlc2MucmVsZWFz
ZSgpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uMDA6OnN0YXJ0SWNlKEV4Y2VwdGlvbkNvZGUm
IGVjKQoreworICAgIHN0YXJ0SWNlKCIiLCBlYyk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb24w
MDo6c3RhcnRJY2UoY29uc3QgU3RyaW5nJiBvcHRpb25zLCBFeGNlcHRpb25Db2RlJiBlYykKK3sK
KyAgICBpZiAobV9yZWFkeVN0YXRlID09IENMT1NFRCkgeworICAgICAgICBlYyA9IElOVkFMSURf
U1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSWNlT3B0aW9uczo6VXNl
Q2FuZGlkYXRlc09wdGlvbiBvcHRpb247CisKKyAgICBpZiAob3B0aW9ucyA9PSAiIiB8fCBvcHRp
b25zID09ICJhbGwiKQorICAgICAgICBvcHRpb24gPSBJY2VPcHRpb25zOjpBTEw7CisgICAgZWxz
ZSBpZiAob3B0aW9ucyA9PSAibm9fcmVsYXkiKQorICAgICAgICBvcHRpb24gPSBJY2VPcHRpb25z
OjpOT19SRUxBWTsKKyAgICBlbHNlIGlmIChvcHRpb25zID09ICJvbmx5X3JlbGF5IikKKyAgICAg
ICAgb3B0aW9uID0gSWNlT3B0aW9uczo6T05MWV9SRUxBWTsKKyAgICBlbHNlIHsKKyAgICAgICAg
ZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGJv
b2wgdmFsaWQgPSBtX3BlZXJIYW5kbGVyLT5zdGFydEljZShJY2VPcHRpb25zOjpjcmVhdGUob3B0
aW9uKSk7CisgICAgaWYgKCF2YWxpZCkKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworfQorCit2
b2lkIFBlZXJDb25uZWN0aW9uMDA6OnByb2Nlc3NJY2VNZXNzYWdlKFBhc3NSZWZQdHI8SWNlQ2Fu
ZGlkYXRlPiBpY2VDYW5kaWRhdGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChtX3Jl
YWR5U3RhdGUgPT0gQ0xPU0VEKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBib29sIHZhbGlkID0gbV9wZWVySGFuZGxlci0+
cHJvY2Vzc0ljZU1lc3NhZ2UoaWNlQ2FuZGlkYXRlLT5kZXNjcmlwdG9yKCkpOworICAgIGlmICgh
dmFsaWQpCisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKK30KKworUGVlckNvbm5lY3Rpb24wMDo6
UmVhZHlTdGF0ZSBQZWVyQ29ubmVjdGlvbjAwOjpyZWFkeVN0YXRlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9yZWFkeVN0YXRlOworfQorCitQZWVyQ29ubmVjdGlvbjAwOjpJY2VTdGF0ZSBQZWVy
Q29ubmVjdGlvbjAwOjppY2VTdGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faWNlU3RhdGU7
Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb24wMDo6YWRkU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFT
dHJlYW0+IHN0cmVhbSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgU3RyaW5nIGVtcHR5SGlu
dHM7CisgICAgcmV0dXJuIGFkZFN0cmVhbShzdHJlYW0sIGVtcHR5SGludHMsIGVjKTsKK30KKwor
dm9pZCBQZWVyQ29ubmVjdGlvbjAwOjphZGRTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4g
cHJwU3RyZWFtLCBjb25zdCBTdHJpbmcmIG1lZGlhU3RyZWFtSGludHMsIEV4Y2VwdGlvbkNvZGUm
IGVjKQoreworICAgIFJlZlB0cjxNZWRpYVN0cmVhbT4gc3RyZWFtID0gcHJwU3RyZWFtOworICAg
IGlmICghc3RyZWFtKSB7CisgICAgICAgIGVjID0gIFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBDTE9TRUQpIHsKKyAg
ICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmIChtX2xvY2FsU3RyZWFtcy0+Y29udGFpbnMoc3RyZWFtLmdldCgpKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9sb2NhbFN0cmVhbXMtPmFwcGVuZChzdHJlYW0pOworCisgICAgLy8g
RklYTUU6IFdoZW4gdGhlIHNwZWMgc2F5cyB3aGF0IHRoZSBtZWRpYVN0cmVhbUhpbnRzIHNob3Vs
ZCBsb29rIGxpa2Ugc2VuZCBpdCBkb3duLgorICAgIG1fcGVlckhhbmRsZXItPmFkZFN0cmVhbShz
dHJlYW0tPmRlc2NyaXB0b3IoKSk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb24wMDo6cmVtb3Zl
U3RyZWFtKE1lZGlhU3RyZWFtKiBzdHJlYW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlm
IChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VEKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9F
UlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXN0cmVhbSkgeworICAgICAg
ICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKCFtX2xvY2FsU3RyZWFtcy0+Y29udGFpbnMoc3RyZWFtKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9sb2NhbFN0cmVhbXMtPnJlbW92ZShzdHJlYW0pOworCisgICAgbV9wZWVySGFuZGxl
ci0+cmVtb3ZlU3RyZWFtKHN0cmVhbS0+ZGVzY3JpcHRvcigpKTsKK30KKworTWVkaWFTdHJlYW1M
aXN0KiBQZWVyQ29ubmVjdGlvbjAwOjpsb2NhbFN0cmVhbXMoKSBjb25zdAoreworICAgIHJldHVy
biBtX2xvY2FsU3RyZWFtcy5nZXQoKTsKK30KKworTWVkaWFTdHJlYW1MaXN0KiBQZWVyQ29ubmVj
dGlvbjAwOjpyZW1vdGVTdHJlYW1zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZW1vdGVTdHJl
YW1zLmdldCgpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uMDA6OmNsb3NlKEV4Y2VwdGlvbkNv
ZGUmIGVjKQoreworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VEKSB7CisgICAgICAgIGVj
ID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdG9w
KCk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb24wMDo6ZGlkR2VuZXJhdGVJY2VDYW5kaWRhdGUo
UGFzc1JlZlB0cjxJY2VDYW5kaWRhdGVEZXNjcmlwdG9yPiBpY2VDYW5kaWRhdGVEZXNjcmlwdG9y
LCBib29sIG1vcmVUb0ZvbGxvdykKK3sKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgaWYgKCFpY2VDYW5kaWRhdGVEZXNjcmlwdG9y
KQorICAgICAgICBtX2ljZUNhbGxiYWNrLT5oYW5kbGVFdmVudCgwLCBtb3JlVG9Gb2xsb3csIHRo
aXMpOworICAgIGVsc2UgeworICAgICAgICBSZWZQdHI8SWNlQ2FuZGlkYXRlPiBpY2VDYW5kaWRh
dGUgPSBJY2VDYW5kaWRhdGU6OmNyZWF0ZShpY2VDYW5kaWRhdGVEZXNjcmlwdG9yKTsKKyAgICAg
ICAgbV9pY2VDYWxsYmFjay0+aGFuZGxlRXZlbnQoaWNlQ2FuZGlkYXRlLmdldCgpLCBtb3JlVG9G
b2xsb3csIHRoaXMpOworICAgIH0KK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjAwOjpkaWRDaGFu
Z2VSZWFkeVN0YXRlKHVpbnQzMl90IG5ld1N0YXRlKQoreworICAgIEFTU0VSVChzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBjaGFuZ2VSZWFkeVN0YXRl
KHN0YXRpY19jYXN0PFJlYWR5U3RhdGU+KG5ld1N0YXRlKSk7Cit9CisKK3ZvaWQgUGVlckNvbm5l
Y3Rpb24wMDo6ZGlkQ2hhbmdlSWNlU3RhdGUodWludDMyX3QgbmV3U3RhdGUpCit7CisgICAgQVNT
RVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpOworICAgIGNo
YW5nZUljZVN0YXRlKHN0YXRpY19jYXN0PEljZVN0YXRlPihuZXdTdGF0ZSkpOworfQorCit2b2lk
IFBlZXJDb25uZWN0aW9uMDA6OmRpZEFkZFJlbW90ZVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvcj4gc3RyZWFtRGVzY3JpcHRvcikKK3sKKyAgICBBU1NFUlQoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CisKKyAgICBpZiAobV9yZWFkeVN0
YXRlID09IENMT1NFRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPE1lZGlhU3RyZWFt
PiBzdHJlYW0gPSBNZWRpYVN0cmVhbTo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
c3RyZWFtRGVzY3JpcHRvcik7CisgICAgbV9yZW1vdGVTdHJlYW1zLT5hcHBlbmQoc3RyZWFtKTsK
KworICAgIGRpc3BhdGNoRXZlbnQoTWVkaWFTdHJlYW1FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5hZGRzdHJlYW1FdmVudCwgZmFsc2UsIGZhbHNlLCBzdHJlYW0ucmVsZWFzZSgpKSk7Cit9CisK
K3ZvaWQgUGVlckNvbm5lY3Rpb24wMDo6ZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKE1lZGlhU3RyZWFt
RGVzY3JpcHRvciogc3RyZWFtRGVzY3JpcHRvcikKK3sKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgQVNTRVJUKHN0cmVhbURlc2Ny
aXB0b3ItPm93bmVyKCkpOworCisgICAgUmVmUHRyPE1lZGlhU3RyZWFtPiBzdHJlYW0gPSBzdGF0
aWNfY2FzdDxNZWRpYVN0cmVhbSo+KHN0cmVhbURlc2NyaXB0b3ItPm93bmVyKCkpOworICAgIHN0
cmVhbS0+c3RyZWFtRW5kZWQoKTsKKworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VEKQor
ICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQobV9yZW1vdGVTdHJlYW1zLT5jb250YWlucyhz
dHJlYW0uZ2V0KCkpKTsKKyAgICBtX3JlbW90ZVN0cmVhbXMtPnJlbW92ZShzdHJlYW0uZ2V0KCkp
OworCisgICAgZGlzcGF0Y2hFdmVudChNZWRpYVN0cmVhbUV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLnJlbW92ZXN0cmVhbUV2ZW50LCBmYWxzZSwgZmFsc2UsIHN0cmVhbS5yZWxlYXNlKCkpKTsK
K30KKworY29uc3QgQXRvbWljU3RyaW5nJiBQZWVyQ29ubmVjdGlvbjAwOjppbnRlcmZhY2VOYW1l
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclBlZXJDb25u
ZWN0aW9uMDA7Cit9CisKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFBlZXJDb25uZWN0aW9uMDA6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAoreworICAgIHJldHVybiBBY3RpdmVET01P
YmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlv
bjAwOjpzdG9wKCkKK3sKKyAgICBpZiAobV9yZWFkeVN0YXRlID09IENMT1NFRCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKG1fcGVlckhhbmRsZXIpCisgICAgICAgIG1fcGVlckhhbmRsZXIt
PnN0b3AoKTsKKyAgICBtX3BlZXJIYW5kbGVyLmNsZWFyKCk7CisKKyAgICBjaGFuZ2VSZWFkeVN0
YXRlKENMT1NFRCk7CisgICAgY2hhbmdlSWNlU3RhdGUoSUNFX0NMT1NFRCk7Cit9CisKK0V2ZW50
VGFyZ2V0RGF0YSogUGVlckNvbm5lY3Rpb24wMDo6ZXZlbnRUYXJnZXREYXRhKCkKK3sKKyAgICBy
ZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOworfQorCitFdmVudFRhcmdldERhdGEqIFBlZXJDb25u
ZWN0aW9uMDA6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCit7CisgICAgcmV0dXJuICZtX2V2ZW50
VGFyZ2V0RGF0YTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjAwOjpjaGFuZ2VSZWFkeVN0YXRl
KFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSkKK3sKKyAgICBpZiAocmVhZHlTdGF0ZSA9PSBtX3JlYWR5
U3RhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcmVhZHlTdGF0ZSA9IHJlYWR5U3RhdGU7
CisKKyAgICBzd2l0Y2ggKG1fcmVhZHlTdGF0ZSkgeworICAgIGNhc2UgTkVXOgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBORUdPVElBVElO
RzoKKyAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb25u
ZWN0aW5nRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFD
VElWRToKKyAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5v
cGVuRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENMT1NF
RDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5zdGF0ZWNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKK30KKwor
dm9pZCBQZWVyQ29ubmVjdGlvbjAwOjpjaGFuZ2VJY2VTdGF0ZShJY2VTdGF0ZSBpY2VTdGF0ZSkK
K3sKKyAgICBpZiAoaWNlU3RhdGUgPT0gbV9pY2VTdGF0ZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9pY2VTdGF0ZSA9IGljZVN0YXRlOworCisgICAgc3dpdGNoIChtX2ljZVN0YXRlKSB7Cisg
ICAgY2FzZSBJQ0VfR0FUSEVSSU5HOgorICAgIGNhc2UgSUNFX1dBSVRJTkc6CisgICAgY2FzZSBJ
Q0VfQ0hFQ0tJTkc6CisgICAgY2FzZSBJQ0VfQ09OTkVDVEVEOgorICAgIGNhc2UgSUNFX0NPTVBM
RVRFRDoKKyAgICBjYXNlIElDRV9GQUlMRUQ6CisgICAgY2FzZSBJQ0VfQ0xPU0VEOgorICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLnN0YXRlY2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41MjBkNjFkOGRiMjgyYjNhOWY3NTZhMWYyNjZiM2ViNjJmYWJlNWRlCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29u
bmVjdGlvbjAwLmgKQEAgLTAsMCArMSwxNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICog
My4gTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cyBj
b250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBlZXJDb25uZWN0
aW9uMDBfaAorI2RlZmluZSBQZWVyQ29ubmVjdGlvbjAwX2gKKworI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJFdmVudFRh
cmdldC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkJhc2UuaCIKKyNpbmNsdWRlICJJY2VDYWxsYmFj
ay5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1MaXN0
LmgiCisjaW5jbHVkZSAiUGVlckNvbm5lY3Rpb24wMEhhbmRsZXIuaCIKKyNpbmNsdWRlICJQZWVy
Q29ubmVjdGlvbjAwSGFuZGxlckNsaWVudC5oIgorI2luY2x1ZGUgIlNlc3Npb25EZXNjcmlwdGlv
bi5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVk
aWFIaW50czsKKworLy8gTm90ZToKKy8vIFNEUCBzdGFuZHMgZm9yIFNlc3Npb24gRGVzY3JpcHRp
b24gUHJvdG9jb2wsIHdoaWNoIGlzIGludGVuZGVkIGZvciBkZXNjcmliaW5nCisvLyBtdWx0aW1l
ZGlhIHNlc3Npb25zIGZvciB0aGUgcHVycG9zZXMgb2Ygc2Vzc2lvbiBhbm5vdW5jZW1lbnQsIHNl
c3Npb24KKy8vIGludml0YXRpb24sIGFuZCBvdGhlciBmb3JtcyBvZiBtdWx0aW1lZGlhIHNlc3Np
b24gaW5pdGlhdGlvbi4KKy8vCisvLyBNb3JlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBoZXJl
OgorLy8gaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNDU2NgorLy8gaHR0cDovL2VuLndp
a2lwZWRpYS5vcmcvd2lraS9TZXNzaW9uX0Rlc2NyaXB0aW9uX1Byb3RvY29sCisKK2NsYXNzIFBl
ZXJDb25uZWN0aW9uMDAgOiBwdWJsaWMgUmVmQ291bnRlZDxQZWVyQ29ubmVjdGlvbjAwPiwgcHVi
bGljIFBlZXJDb25uZWN0aW9uMDBIYW5kbGVyQ2xpZW50LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1
YmxpYyBBY3RpdmVET01PYmplY3QgeworcHVibGljOgorICAgIGVudW0gUmVhZHlTdGF0ZSB7Cisg
ICAgICAgIE5FVyA9IDAsCisgICAgICAgIE5FR09USUFUSU5HID0gMSwKKyAgICAgICAgQUNUSVZF
ID0gMiwKKyAgICAgICAgQ0xPU0VEID0gMworICAgIH07CisKKyAgICBlbnVtIEFjdGlvbiB7Cisg
ICAgICAgIFNEUF9PRkZFUiA9IDB4MTAwLAorICAgICAgICBTRFBfUFJBTlNXRVIgPSAweDIwMCwK
KyAgICAgICAgU0RQX0FOU1dFUiA9IDB4MzAwCisgICAgfTsKKworICAgIGVudW0gSWNlU3RhdGUg
eworICAgICAgICBJQ0VfR0FUSEVSSU5HID0gMHgxMDAsCisgICAgICAgIElDRV9XQUlUSU5HID0g
MHgyMDAsCisgICAgICAgIElDRV9DSEVDS0lORyA9IDB4MzAwLAorICAgICAgICBJQ0VfQ09OTkVD
VEVEID0gMHg0MDAsCisgICAgICAgIElDRV9DT01QTEVURUQgPSAweDUwMCwKKyAgICAgICAgSUNF
X0ZBSUxFRCA9IDB4NjAwLAorICAgICAgICBJQ0VfQ0xPU0VEID0gMHg3MDAKKyAgICB9OworCisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8UGVlckNvbm5lY3Rpb24wMD4gY3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHNlcnZlckNvbmZpZ3VyYXRpb24sIFBhc3NSZWZQ
dHI8SWNlQ2FsbGJhY2s+KTsKKyAgICB+UGVlckNvbm5lY3Rpb24wMCgpOworCisgICAgUGFzc1Jl
ZlB0cjxTZXNzaW9uRGVzY3JpcHRpb24+IGNyZWF0ZU9mZmVyKCk7CisgICAgUGFzc1JlZlB0cjxT
ZXNzaW9uRGVzY3JpcHRpb24+IGNyZWF0ZU9mZmVyKGNvbnN0IFN0cmluZyYgbWVkaWFIaW50cyk7
CisgICAgUGFzc1JlZlB0cjxTZXNzaW9uRGVzY3JpcHRpb24+IGNyZWF0ZUFuc3dlcihjb25zdCBT
dHJpbmcmIG9mZmVyKTsKKyAgICBQYXNzUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbj4gY3JlYXRl
QW5zd2VyKGNvbnN0IFN0cmluZyYgb2ZmZXIsIGNvbnN0IFN0cmluZyYgbWVkaWFIaW50cyk7CisK
KyAgICB2b2lkIHNldExvY2FsRGVzY3JpcHRpb24oaW50IGFjdGlvbiwgUGFzc1JlZlB0cjxTZXNz
aW9uRGVzY3JpcHRpb24+LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZXRSZW1vdGVEZXNj
cmlwdGlvbihpbnQgYWN0aW9uLCBQYXNzUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbj4sIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbj4gbG9jYWxEZXNj
cmlwdGlvbigpOworICAgIFBhc3NSZWZQdHI8U2Vzc2lvbkRlc2NyaXB0aW9uPiByZW1vdGVEZXNj
cmlwdGlvbigpOworCisgICAgdm9pZCBzdGFydEljZShFeGNlcHRpb25Db2RlJik7CisgICAgdm9p
ZCBzdGFydEljZShjb25zdCBTdHJpbmcmIG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2
b2lkIHByb2Nlc3NJY2VNZXNzYWdlKFBhc3NSZWZQdHI8SWNlQ2FuZGlkYXRlPiwgRXhjZXB0aW9u
Q29kZSYpOworCisgICAgSWNlU3RhdGUgaWNlU3RhdGUoKSBjb25zdDsKKyAgICBSZWFkeVN0YXRl
IHJlYWR5U3RhdGUoKSBjb25zdDsKKworICAgIHZvaWQgYWRkU3RyZWFtKGNvbnN0IFBhc3NSZWZQ
dHI8TWVkaWFTdHJlYW0+LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBhZGRTdHJlYW0oY29u
c3QgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4sIGNvbnN0IFN0cmluZyYgbWVkaWFTdHJlYW1IaW50
cywgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcmVtb3ZlU3RyZWFtKE1lZGlhU3RyZWFtKiwg
RXhjZXB0aW9uQ29kZSYpOworICAgIE1lZGlhU3RyZWFtTGlzdCogbG9jYWxTdHJlYW1zKCkgY29u
c3Q7CisgICAgTWVkaWFTdHJlYW1MaXN0KiByZW1vdGVTdHJlYW1zKCkgY29uc3Q7CisKKyAgICB2
b2lkIGNsb3NlKEV4Y2VwdGlvbkNvZGUmKTsKKworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRf
TElTVEVORVIoY29ubmVjdGluZyk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5F
UihvcGVuKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHN0YXRlY2hhbmdl
KTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGFkZHN0cmVhbSk7CisgICAg
REVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihyZW1vdmVzdHJlYW0pOworCisgICAgLy8g
UGVlckNvbm5lY3Rpb24wMEhhbmRsZXJDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgZGlkR2VuZXJh
dGVJY2VDYW5kaWRhdGUoUGFzc1JlZlB0cjxJY2VDYW5kaWRhdGVEZXNjcmlwdG9yPiwgYm9vbCBt
b3JlVG9Gb2xsb3cpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VSZWFkeVN0
YXRlKHVpbnQzMl90IHN0YXRlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdl
SWNlU3RhdGUodWludDMyX3Qgc3RhdGUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRB
ZGRSZW1vdGVTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+KSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKE1lZGlhU3RyZWFtRGVz
Y3JpcHRvciopIE9WRVJSSURFOworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0IE9WRVJSSURFOworCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0CisgICAgdmlydHVhbCB2b2lk
IHN0b3AoKSBPVkVSUklERTsKKworICAgIHVzaW5nIFJlZkNvdW50ZWQ8UGVlckNvbm5lY3Rpb24w
MD46OnJlZjsKKyAgICB1c2luZyBSZWZDb3VudGVkPFBlZXJDb25uZWN0aW9uMDA+OjpkZXJlZjsK
KworcHJpdmF0ZToKKyAgICBQZWVyQ29ubmVjdGlvbjAwKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBjb25zdCBTdHJpbmcmIHNlcnZlckNvbmZpZ3VyYXRpb24sIFBhc3NSZWZQdHI8SWNlQ2FsbGJh
Y2s+KTsKKworICAgIC8vIEV2ZW50VGFyZ2V0IGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwg
RXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKTsKKyAgICB2aXJ0dWFsIEV2ZW50VGFy
Z2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7CisgICAgdmlydHVhbCB2b2lkIHJlZkV2
ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0
KCkgeyBkZXJlZigpOyB9CisgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwor
CisgICAgdm9pZCBjaGFuZ2VSZWFkeVN0YXRlKFJlYWR5U3RhdGUpOworICAgIHZvaWQgY2hhbmdl
SWNlU3RhdGUoSWNlU3RhdGUpOworICAgIGJvb2wgaGFzTG9jYWxBdWRpb1RyYWNrKCk7CisgICAg
Ym9vbCBoYXNMb2NhbFZpZGVvVHJhY2soKTsKKyAgICBQYXNzUmVmUHRyPE1lZGlhSGludHM+IHBh
cnNlTWVkaWFIaW50cyhjb25zdCBTdHJpbmcmIG1lZGlhSGludHNTdHJpbmcpOworCisgICAgUmVm
UHRyPEljZUNhbGxiYWNrPiBtX2ljZUNhbGxiYWNrOworCisgICAgUmVhZHlTdGF0ZSBtX3JlYWR5
U3RhdGU7CisgICAgSWNlU3RhdGUgbV9pY2VTdGF0ZTsKKworICAgIFJlZlB0cjxNZWRpYVN0cmVh
bUxpc3Q+IG1fbG9jYWxTdHJlYW1zOworICAgIFJlZlB0cjxNZWRpYVN0cmVhbUxpc3Q+IG1fcmVt
b3RlU3RyZWFtczsKKworICAgIE93blB0cjxQZWVyQ29ubmVjdGlvbjAwSGFuZGxlcj4gbV9wZWVy
SGFuZGxlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBQZWVyQ29ubmVjdGlvbjAwX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24wMC5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAu
aWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM2NTE0MzY5NWU5YzIyMTkyZTY1MWE2YTg0Yjc4Zjk4Y2NjOTc4YzUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Bl
ZXJDb25uZWN0aW9uMDAuaWRsCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIHAycCB7
CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCisg
ICAgICAgIEFjdGl2ZURPTU9iamVjdCwKKyAgICAgICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5n
IHNlcnZlckNvbmZpZ3VyYXRpb24sIGluIFtDYWxsYmFja10gSWNlQ2FsbGJhY2sgaWNlQ2FsbGJh
Y2spLAorICAgICAgICBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAorICAgICAgICBK
U0N1c3RvbUNvbnN0cnVjdG9yLAorICAgICAgICBFdmVudFRhcmdldAorICAgIF0gUGVlckNvbm5l
Y3Rpb24wMCB7CisgICAgICAgIC8vIEZJWE1FOiBNYWtlIG1lZGlhSGludHMgYW4gb2JqZWN0Cisg
ICAgICAgIFNlc3Npb25EZXNjcmlwdGlvbiBjcmVhdGVPZmZlcihpbiBbT3B0aW9uYWxdIERPTVN0
cmluZyBtZWRpYUhpbnRzKTsKKworICAgICAgICAvLyBGSVhNRTogTWFrZSBtZWRpYUhpbnRzIGFu
IG9iamVjdAorICAgICAgICBTZXNzaW9uRGVzY3JpcHRpb24gY3JlYXRlQW5zd2VyKGluIERPTVN0
cmluZyBvZmZlciwgaW4gW09wdGlvbmFsXSBET01TdHJpbmcgbWVkaWFIaW50cyk7CisKKyAgICAg
ICAgLy8gQWN0aW9ucywgZm9yIHNldExvY2FsRGVzY3JpcHRpb24vc2V0UmVtb3RlRGVzY3JpcHRp
b24uCisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNEUF9PRkZFUiA9IDB4MTAwOworICAg
ICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTRFBfUFJBTlNXRVIgPSAweDIwMDsKKyAgICAgICAg
Y29uc3QgdW5zaWduZWQgc2hvcnQgU0RQX0FOU1dFUiA9IDB4MzAwOworCisgICAgICAgIHZvaWQg
c2V0TG9jYWxEZXNjcmlwdGlvbihpbiB1bnNpZ25lZCBzaG9ydCBhY3Rpb24sIGluIFNlc3Npb25E
ZXNjcmlwdGlvbiBkZXNjKQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAg
ICAgICAgdm9pZCBzZXRSZW1vdGVEZXNjcmlwdGlvbihpbiB1bnNpZ25lZCBzaG9ydCBhY3Rpb24s
IGluIFNlc3Npb25EZXNjcmlwdGlvbiBkZXNjKQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNlc3Npb25EZXNjcmlwdGlvbiBs
b2NhbERlc2NyaXB0aW9uOworCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTZXNzaW9uRGVz
Y3JpcHRpb24gcmVtb3RlRGVzY3JpcHRpb247CisKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hv
cnQgTkVXID0gMDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTkVHT1RJQVRJTkcgPSAx
OworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBBQ1RJVkUgPSAyOworICAgICAgICBjb25z
dCB1bnNpZ25lZCBzaG9ydCBDTE9TRUQgPSAzOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
dW5zaWduZWQgc2hvcnQgcmVhZHlTdGF0ZTsKKworICAgICAgICAvLyBGSVhNRTogTWFrZSBpY2VP
cHRpb25zIGFuIG9iamVjdAorICAgICAgICB2b2lkIHN0YXJ0SWNlKGluIFtPcHRpb25hbF0gRE9N
U3RyaW5nIGljZU9wdGlvbnMpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKwor
ICAgICAgICB2b2lkIHByb2Nlc3NJY2VNZXNzYWdlKGluIEljZUNhbmRpZGF0ZSBjYW5kaWRhdGUp
CisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKworICAgICAgICBjb25zdCB1bnNp
Z25lZCBzaG9ydCBJQ0VfR0FUSEVSSU5HID0gMHgxMDA7CisgICAgICAgIGNvbnN0IHVuc2lnbmVk
IHNob3J0IElDRV9XQUlUSU5HID0gMHgyMDA7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0
IElDRV9DSEVDS0lORyA9IDB4MzAwOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBJQ0Vf
Q09OTkVDVEVEID0gMHg0MDA7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IElDRV9DT01Q
TEVURUQgPSAweDUwMDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgSUNFX0ZBSUxFRCA9
IDB4NjAwOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBJQ0VfQ0xPU0VEID0gMHg3MDA7
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCBpY2VTdGF0ZTsKKwor
ICAgICAgICAvLyBGSVhNRTogTWFrZSBtZWRpYVN0cmVhbUhpbnRzIGFuIG9iamVjdAorICAgICAg
ICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIGFkZFN0cmVhbShpbiBNZWRpYVN0cmVhbSBzdHJl
YW0sIGluIFtPcHRpb25hbF0gRE9NU3RyaW5nIG1lZGlhU3RyZWFtSGludHMpCisgICAgICAgICAg
ICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9p
ZCByZW1vdmVTdHJlYW0oaW4gTWVkaWFTdHJlYW0gc3RyZWFtKQorICAgICAgICAgICAgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhU3RyZWFt
TGlzdCBsb2NhbFN0cmVhbXM7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVN0cmVh
bUxpc3QgcmVtb3RlU3RyZWFtczsKKworICAgICAgICB2b2lkIGNsb3NlKCkKKyAgICAgICAgICAg
IHJhaXNlcyhET01FeGNlcHRpb24pOworCisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVy
IG9uY29ubmVjdGluZzsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25vcGVuOwor
ICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnN0YXRlY2hhbmdlOworICAgICAgICBh
dHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmFkZHN0cmVhbTsKKyAgICAgICAgYXR0cmlidXRlIEV2
ZW50TGlzdGVuZXIgb25yZW1vdmVzdHJlYW07CisKKyAgICAgICAgLy8gRXZlbnRUYXJnZXQgaW50
ZXJmYWNlCisgICAgICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNl
Q2FwdHVyZSk7CisgICAgICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcg
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIg
bGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxd
IGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBF
dmVudCBldmVudCkKKyAgICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CisgICAgfTsK
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDM4NmVmYjI4ZDliMjkwZjJiNTljMTg4OTcyZTNlZGNk
MjMwZDZlOWIuLjRmMzEwYjM0YTIwYTRhZWZiZDBjNzIxZjcxM2JhZTU1MTNmNTE3MjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKQEAgLTc5MCw2ICs3OTAsNyBAQAogICAgICAgICAgICAgJ01vZHVsZXMvaW50
ZW50cy9OYXZpZ2F0b3JJbnRlbnRzLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0
cmVhbS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb24uaWRsJywKICAgICAgICAgICAgICdNb2R1bGVz
L21lZGlhc3RyZWFtL0RPTVdpbmRvd01lZGlhU3RyZWFtLmlkbCcsCisgICAgICAgICAgICAnTW9k
dWxlcy9tZWRpYXN0cmVhbS9JY2VDYWxsYmFjay5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMv
bWVkaWFzdHJlYW0vSWNlQ2FuZGlkYXRlLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRp
YXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwnLApAQCAtODAxLDYgKzgwMiw3IEBACiAgICAgICAgICAg
ICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5pZGwnLAogICAg
ICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxs
YmFjay5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNl
ck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmlkbCcsCisgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0
cmVhbS9QZWVyQ29ubmVjdGlvbjAwLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0
cmVhbS9TZXNzaW9uRGVzY3JpcHRpb24uaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlh
c3RyZWFtL1NpZ25hbGluZ0NhbGxiYWNrLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9zcGVl
Y2gvRE9NV2luZG93U3BlZWNoLmlkbCcsCkBAIC0xNDU4LDYgKzE0NjAsNyBAQAogICAgICAgICAg
ICAgJ01vZHVsZXMvaW50ZW50cy9OYXZpZ2F0b3JJbnRlbnRzLmgnLAogICAgICAgICAgICAgJ01v
ZHVsZXMvbWVkaWFzdHJlYW0vRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uLmNwcCcsCiAgICAgICAg
ICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb24uaCcsCisg
ICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9JY2VDYWxsYmFjay5oJywKICAgICAgICAg
ICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL0ljZUNhbmRpZGF0ZS5jcHAnLAogICAgICAgICAgICAg
J01vZHVsZXMvbWVkaWFzdHJlYW0vSWNlQ2FuZGlkYXRlLmgnLAogICAgICAgICAgICAgJ01vZHVs
ZXMvbWVkaWFzdHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5jcHAnLApAQCAtMTQ3OSw2ICsxNDgyLDgg
QEAKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVy
cm9yLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1l
ZGlhRXJyb3JDYWxsYmFjay5oJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL05h
dmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5oJywKKyAgICAgICAgICAgICdNb2R1bGVz
L21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVz
L21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9t
ZWRpYXN0cmVhbS9TZXNzaW9uRGVzY3JpcHRpb24uY3BwJywKICAgICAgICAgICAgICdNb2R1bGVz
L21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlwdGlvbi5oJywKICAgICAgICAgICAgICdNb2R1bGVz
L21lZGlhc3RyZWFtL1NpZ25hbGluZ0NhbGxiYWNrLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAppbmRleCAx
ZjgxODRlYjYyYmY4OTU2MTI5YjIzZGVjYTU1NDA2MWMyNjk3NmEzLi4wNzI4ZWM2NTJjZWM1MWMy
NjJjZGM2ZTVmZmVhMWNkNDVmNTAzNTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaApAQCAtMTg2LDYgKzE4
Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRNZWRpYVN0cmVhbUVuYWJsZWQoYm9v
bCBpc0VuYWJsZWQpIHsgaXNNZWRpYVN0cmVhbUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICAgICBz
dGF0aWMgYm9vbCB3ZWJraXRHZXRVc2VyTWVkaWFFbmFibGVkKCkgeyByZXR1cm4gaXNNZWRpYVN0
cmVhbUVuYWJsZWQ7IH0KICAgICBzdGF0aWMgYm9vbCB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5l
Y3Rpb25FbmFibGVkKCkgeyByZXR1cm4gaXNNZWRpYVN0cmVhbUVuYWJsZWQ7IH0KKyAgICBzdGF0
aWMgYm9vbCB3ZWJraXRQZWVyQ29ubmVjdGlvbjAwRW5hYmxlZCgpIHsgcmV0dXJuIGlzTWVkaWFT
dHJlYW1FbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQZWVyQ29ubmVjdGlvbjAwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGVlckNvbm5lY3Rpb24wMC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uN2RhODljZGUxZTQ3YmZhMzJiZjg5N2RlNzhlNzNjOGFkODk0OWJjNgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGVlckNvbm5lY3Rpb24wMC5jcHAK
QEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEVyaWNzc29uIEFCLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkpTUGVlckNvbm5lY3Rpb24wMC5o
IgorCisjaW5jbHVkZSAiQ2FsbGJhY2tGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkljZUNhbGxiYWNr
LmgiCisjaW5jbHVkZSAiSlNJY2VDYWxsYmFjay5oIgorI2luY2x1ZGUgIlBlZXJDb25uZWN0aW9u
MDAuaCIKKyNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBK
U1BlZXJDb25uZWN0aW9uMDBDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNQZWVyQ29ubmVjdGlvbjAw
KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1BlZXJDb25uZWN0aW9uMDBDb25zdHJ1Y3Rvciog
anNDb25zdHJ1Y3RvciA9IHN0YXRpY19jYXN0PEpTUGVlckNvbm5lY3Rpb24wMENvbnN0cnVjdG9y
Kj4oZXhlYy0+Y2FsbGVlKCkpOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQg
PSBqc0NvbnN0cnVjdG9yLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFjb250
ZXh0KQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVy
cm9yKGV4ZWMsICJQZWVyQ29ubmVjdGlvbjAwIGNvbnN0cnVjdG9yIGFzc29jaWF0ZWQgZG9jdW1l
bnQgaXMgdW5hdmFpbGFibGUiKSk7CisKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwg
MikKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhl
YywgIk5vdCBlbm91Z2ggYXJndW1lbnRzIikpOworCisgICAgU3RyaW5nIHNlcnZlckNvbmZpZ3Vy
YXRpb24gPSB1c3RyaW5nVG9TdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKworICAgIFJlZlB0cjxJY2VDYWxsYmFj
az4gaWNlQ2FsbGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxKU0ljZUNhbGxiYWNr
PihleGVjLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSksIGV4ZWMtPmFyZ3VtZW50KDEpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKworICAg
IFJlZlB0cjxQZWVyQ29ubmVjdGlvbjAwPiBwZWVyQ29ubmVjdGlvbiA9IFBlZXJDb25uZWN0aW9u
MDA6OmNyZWF0ZShjb250ZXh0LCBzZXJ2ZXJDb25maWd1cmF0aW9uLCBpY2VDYWxsYmFjay5yZWxl
YXNlKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoQ1JFQVRFX0RPTV9XUkFQUEVSKGV4
ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBQZWVyQ29ubmVjdGlvbjAwLCBwZWVy
Q29ubmVjdGlvbi5nZXQoKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZh
Y3RvcnkuaW4KaW5kZXggZDk5OGI0NmU3YTMxZTc4ZDgwN2M3MTkxNDI2MDIzZGM2NTRiNGZkZC4u
MjgwZDM5NGYzMjU5ZjhhOWJjYTEyYjhhNWRiZGZmZTczZDJmYzg1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC0yMCw2ICsyMCw3IEBAIE1lZGlhU3RyZWFt
IGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQogTWVzc2FnZVBvcnQKIE5vZGUKIE5vdGlmaWNhdGlv
biBjb25kaXRpb25hbD1OT1RJRklDQVRJT05TfExFR0FDWV9OT1RJRklDQVRJT05TCitQZWVyQ29u
bmVjdGlvbjAwIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQogU2hhcmVkV29ya2VyIGNvbmRpdGlv
bmFsPVNIQVJFRF9XT1JLRVJTCiBTaGFyZWRXb3JrZXJDb250ZXh0IGNvbmRpdGlvbmFsPVNIQVJF
RF9XT1JLRVJTCiBTcGVlY2hSZWNvZ25pdGlvbiBjb25kaXRpb25hbD1TQ1JJUFRFRF9TUEVFQ0gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132879</attachid>
            <date>2012-03-20 12:33:17 -0700</date>
            <delta_ts>2012-03-23 03:31:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81657-20120320203315.patch</filename>
            <type>text/plain</type>
            <size>44712</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDA2YjBiOWZiZTNhZTRl
NjQ3MTM5NWY5YTVmMDAwY2U5ZjVhNGZlMS4uODhlMzIxZTk3M2I3ZTkzN2M1ODA3OGVkYWJjMjQx
NGI1NGNmYzJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEyLTAzLTIwICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSSAoSlNFUCk6IEludHJvZHVjaW5nIFBlZXJDb25uZWN0aW9uMDAgYW5kIEljZUNhbGxiYWNr
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTY1Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExhc3QgbWFq
b3IgV2ViQ29yZSBwYXRjaCBmb3IgdGhlIEpTRVAgUGVlckNvbm5lY3Rpb24sIHRvZ2V0aGVyIHdp
dGggdGhlIGFzc29jaWF0ZWQKKyAgICAgICAgSWNlQ2FsbGJhY2sgKHRoZXkgYm90aCBkZXBlbmQg
b24gZWFjaCBvdGhlciBhbmQgSWNlQ2FsbGJhY2sgaGFzIHZlcnkgZmV3IGxpbmVzIG9mIHJlYWwg
Y29kZSkuCisKKyAgICAgICAgTXkgbmV4dCBwYXRjaCBhZnRlciB0aGlzIG9uZSB3aWxsIGRvIGEg
bWFqb3Igb3ZlcmhhdWwgb2YgdGhlIGV4aXN0aW5nIGxheW91dCB0ZXN0cworICAgICAgICBhbmQg
YWRkIGEgZmV3IG5ldyBvbmVzLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0RPTVdpbmRvd01lZGlhU3RyZWFtLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0ljZUNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChJY2VDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpJ
Y2VDYWxsYmFjazo6fkljZUNhbGxiYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L0ljZUNhbGxiYWNrLmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Q
ZWVyQ29ubmVjdGlvbjAwLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uMDA6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyQ29ubmVjdGlvbjAwOjpQZWVyQ29ubmVjdGlvbjAwKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uMDA6On5QZWVyQ29ubmVjdGlvbjAwKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uMDA6Omhhc0xvY2FsQXVkaW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyQ29ubmVjdGlvbjAwOjpoYXNMb2NhbFZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
UGVlckNvbm5lY3Rpb24wMDo6cGFyc2VNZWRpYUhpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uMDA6OmNyZWF0ZU9mZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25u
ZWN0aW9uMDA6OmNyZWF0ZUFuc3dlcik6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlv
bjAwOjpzZXRMb2NhbERlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0
aW9uMDA6OnNldFJlbW90ZURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25u
ZWN0aW9uMDA6OmxvY2FsRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5l
Y3Rpb24wMDo6cmVtb3RlRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5l
Y3Rpb24wMDo6c3RhcnRJY2UpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb24wMDo6
cHJvY2Vzc0ljZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb24wMDo6
cmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjAwOjppY2VTdGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjAwOjphZGRTdHJlYW0pOgorICAg
ICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb24wMDo6cmVtb3ZlU3RyZWFtKToKKyAgICAgICAg
KFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uMDA6OmxvY2FsU3RyZWFtcyk6CisgICAgICAgIChXZWJD
b3JlOjpQZWVyQ29ubmVjdGlvbjAwOjpyZW1vdGVTdHJlYW1zKToKKyAgICAgICAgKFdlYkNvcmU6
OlBlZXJDb25uZWN0aW9uMDA6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0
aW9uMDA6OmRpZEdlbmVyYXRlSWNlQ2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJD
b25uZWN0aW9uMDA6OmRpZENoYW5nZVJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGVl
ckNvbm5lY3Rpb24wMDo6ZGlkQ2hhbmdlSWNlU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGVl
ckNvbm5lY3Rpb24wMDo6ZGlkQWRkUmVtb3RlU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uMDA6OmRpZFJlbW92ZVJlbW90ZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3Jl
OjpQZWVyQ29ubmVjdGlvbjAwOjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uMDA6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGVlckNvbm5lY3Rpb24wMDo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVj
dGlvbjAwOjpldmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rp
b24wMDo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25u
ZWN0aW9uMDA6OmNoYW5nZVJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5l
Y3Rpb24wMDo6Y2hhbmdlSWNlU3RhdGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UGVlckNvbm5lY3Rpb24wMC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
UGVlckNvbm5lY3Rpb24wMCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjAwOjpy
ZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjAwOjpkZXJl
ZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0
aW9uMDAuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYmlu
ZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRQZWVyQ29ubmVjdGlvbjAwRW5hYmxlZCk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNQZWVyQ29ubmVjdGlvbjAwQ3VzdG9tLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTUGVlckNvbm5lY3Rp
b24wMENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1BlZXJDb25uZWN0aW9uMDApOgorICAgICAgICAq
IGRvbS9FdmVudFRhcmdldEZhY3RvcnkuaW46CisKIDIwMTItMDMtMjAgIEx1a2UgTWFjcGhlcnNv
biAgPG1hY3BoZXJzb25AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSBtaW4gYW5kIG1h
eCBwYXJhbWV0ZXJzIGZyb20gQ1NTUHJpbWl0aXZlVmFsdWUncyByb3VuZEZvckltcHJlY2lzZUNv
bnZlcnNpb24gZnVuY3Rpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAxM2M5
ZGRjMDA5YzA4NDE3NzA1YmFmOWU1N2ViMDljMGM2ODc5ZTNhLi4yNzEyMDE0Y2MyZWUyODVmMDgz
Yjg3ZTg4YjEzYTc5NGYwNGFmYmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAg
LTM0NCw2ICszNDQsOCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNIVE1MVUxpc3RFbGVtZW50LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNIVE1MVmlkZW9FbGVtZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hU
TUxWaWRlb0VsZW1lbnQuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ljZUNhbGxiYWNr
LmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ljZUNhbGxiYWNrLmggXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNJY2VDYW5kaWRhdGUuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTSWNlQ2FuZGlkYXRlLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJbWFn
ZURhdGEuY3BwIFwKQEAgLTQzNiw2ICs0MzgsOCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0g
XAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNPdmVyZmxvd0V2ZW50LmggXAogCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNQYWdlVHJhbnNpdGlvbkV2ZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1BhZ2VUcmFuc2l0aW9uRXZlbnQuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1BlZXJDb25uZWN0aW9uMDAuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
UGVlckNvbm5lY3Rpb24wMC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGVyZm9ybWFu
Y2UuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGVyZm9ybWFuY2UuaCBcCiAJRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAgXApAQCAtNjY0
LDYgKzY2OCw3IEBAIGRvbV9iaW5kaW5nX2lkbHMgKz0gXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVs
ZXMvbWVkaWFzdHJlYW0vRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uLmlkbCBcCiAJJChXZWJDb3Jl
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RPTVdpbmRvd01lZGlhU3RyZWFtLmlkbCBcCisJJChXZWJD
b3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL0ljZUNhbGxiYWNrLmlkbCBcCiAJJChXZWJDb3JlKS9N
b2R1bGVzL21lZGlhc3RyZWFtL0ljZUNhbmRpZGF0ZS5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxl
cy9tZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmlkbCBcCkBAIC02NzUsNiArNjgwLDcgQEAgZG9tX2Jp
bmRpbmdfaWRscyArPSBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRv
clVzZXJNZWRpYUVycm9yLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL05h
dmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMv
bWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmlkbCBcCisJJChX
ZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuaWRsIFwKIAkkKFdl
YkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9uLmlkbCBcCiAJJChX
ZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1NpZ25hbGluZ0NhbGxiYWNrLmlkbCBcCiAJJChX
ZWJDb3JlKS9jc3MvQ1NTQ2hhcnNldFJ1bGUuaWRsIFwKQEAgLTExMTgsNiArMTEyNCw4IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9O
YXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaCBcCiAJU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2su
aCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAw
LmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlv
bjAwLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU2Vzc2lvbkRlc2Ny
aXB0aW9uLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TZXNzaW9u
RGVzY3JpcHRpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TaWdu
YWxpbmdDYWxsYmFjay5oIFwKQEAgLTE0MDUsNiArMTQxMyw3IEBAIHdlYmNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcCBcCisJU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQZWVyQ29ubmVjdGlvbjAwQ3VzdG9tLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmgg
XAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9ET01XaW5k
b3dNZWRpYVN0cmVhbS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RP
TVdpbmRvd01lZGlhU3RyZWFtLmlkbAppbmRleCA2MTIwZGEwYjMyMmU2YWU1OTFjZDU3ZmIxZDk4
MTQ2N2FiZjgwYmU0Li5iYzUwMDViZWNlYmIzZjQ3MWYwNmQ5NzY0MDE3MzQ2MjA4YzRlOTU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RPTVdpbmRvd01l
ZGlhU3RyZWFtLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RP
TVdpbmRvd01lZGlhU3RyZWFtLmlkbApAQCAtMzEsNiArMzEsOSBAQCBtb2R1bGUgd2luZG93IHsK
ICAgICAgICAgU3VwcGxlbWVudGFsPURPTVdpbmRvdwogICAgIF0gRE9NV2luZG93TWVkaWFTdHJl
YW0gewogICAgICAgICBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZV0gRGVwcmVjYXRlZFBl
ZXJDb25uZWN0aW9uQ29uc3RydWN0b3Igd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uOwor
ICAgICAgICBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZV0gUGVlckNvbm5lY3Rpb24wMENv
bnN0cnVjdG9yIHdlYmtpdFBlZXJDb25uZWN0aW9uMDA7CisgICAgICAgIGF0dHJpYnV0ZSBTZXNz
aW9uRGVzY3JpcHRpb25Db25zdHJ1Y3RvciBTZXNzaW9uRGVzY3JpcHRpb247CisgICAgICAgIGF0
dHJpYnV0ZSBJY2VDYW5kaWRhdGVDb25zdHJ1Y3RvciBJY2VDYW5kaWRhdGU7CiAgICAgICAgIGF0
dHJpYnV0ZSBNZWRpYVN0cmVhbUV2ZW50Q29uc3RydWN0b3IgTWVkaWFTdHJlYW1FdmVudDsKICAg
ICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0lj
ZUNhbGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0ljZUNhbGxi
YWNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDliYjUyMGJjN2ZiYmFjMDQzY2M5MTlhNTllOThlMDg3ZjBjNDc1
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
SWNlQ2FsbGJhY2suaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAq
IDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMg
Y29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJY2VDYWxsYmFj
a19oCisjZGVmaW5lIEljZUNhbGxiYWNrX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisK
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEljZUNhbmRpZGF0ZTsKK2NsYXNzIFBlZXJDb25uZWN0aW9uMDA7CisKK2NsYXNzIEljZUNh
bGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8SWNlQ2FsbGJhY2s+IHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIH5JY2VDYWxsYmFjaygpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChJ
Y2VDYW5kaWRhdGUqLCBib29sIG1vcmVUb0ZvbGxvdywgUGVlckNvbm5lY3Rpb24wMCopID0gMDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9T
VFJFQU0pCisKKyNlbmRpZiAvLyBJY2VDYWxsYmFja19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0ljZUNhbGxiYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vSWNlQ2FsbGJhY2suaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5ZDY0NmYy
MDNhMjJjZjRmMjc0OGY2YWRmOWYxYTRmMjdjMTcwOWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0ljZUNhbGxiYWNrLmlkbApAQCAtMCwwICsx
LDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
ICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMK
KyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworbW9kdWxlIHAycCB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBD
b25kaXRpb25hbD1NRURJQV9TVFJFQU0sCisgICAgICAgIENhbGxiYWNrCisgICAgXSBJY2VDYWxs
YmFjayB7CisgICAgICAgIGJvb2xlYW4gaGFuZGxlRXZlbnQoaW4gSWNlQ2FuZGlkYXRlIGNhbmRp
ZGF0ZSwgaW4gYm9vbGVhbiBtb3JlVG9Gb2xsb3csIGluIFBlZXJDb25uZWN0aW9uMDAgc291cmNl
KTsKKyAgICB9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzhiMjQ3ZDc3N2M0MTM3
NmNhOTM1MTg2OWNkOGE1ZTQ1MmQ0NTJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwLmNwcApAQCAtMCwwICsxLDQ3
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAg
ICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisg
KiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCisKKyNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbjAwLmgiCisKKyNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCisjaW5jbHVkZSAiSWNlQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJJY2VDYW5kaWRh
dGUuaCIKKyNpbmNsdWRlICJJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiSWNl
T3B0aW9ucy5oIgorI2luY2x1ZGUgIk1lZGlhSGludHMuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVh
bUV2ZW50LmgiCisjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAi
U2Vzc2lvbkRlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3Jp
cHRvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8UGVlckNvbm5lY3Rp
b24wMD4gUGVlckNvbm5lY3Rpb24wMDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFN0cmluZyYgc2VydmVyQ29uZmlndXJhdGlvbiwgUGFzc1JlZlB0cjxJY2VD
YWxsYmFjaz4gaWNlQ2FsbGJhY2spCit7CisgICAgUmVmUHRyPFBlZXJDb25uZWN0aW9uMDA+IHBl
ZXJDb25uZWN0aW9uID0gYWRvcHRSZWYobmV3IFBlZXJDb25uZWN0aW9uMDAoY29udGV4dCwgc2Vy
dmVyQ29uZmlndXJhdGlvbiwgaWNlQ2FsbGJhY2spKTsKKyAgICBwZWVyQ29ubmVjdGlvbi0+c3Vz
cGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnJlbGVhc2UoKTsKK30K
KworUGVlckNvbm5lY3Rpb24wMDo6UGVlckNvbm5lY3Rpb24wMChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHNlcnZlckNvbmZpZ3VyYXRpb24sIFBhc3NSZWZQ
dHI8SWNlQ2FsbGJhY2s+IGljZUNhbGxiYWNrKQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRl
eHQsIHRoaXMpCisgICAgLCBtX2ljZUNhbGxiYWNrKGljZUNhbGxiYWNrKQorICAgICwgbV9yZWFk
eVN0YXRlKE5FVykKKyAgICAsIG1faWNlU3RhdGUoSUNFX0NMT1NFRCkKKyAgICAsIG1fbG9jYWxT
dHJlYW1zKE1lZGlhU3RyZWFtTGlzdDo6Y3JlYXRlKCkpCisgICAgLCBtX3JlbW90ZVN0cmVhbXMo
TWVkaWFTdHJlYW1MaXN0OjpjcmVhdGUoKSkKKyAgICAsIG1fcGVlckhhbmRsZXIoUGVlckNvbm5l
Y3Rpb24wMEhhbmRsZXI6OmNyZWF0ZSh0aGlzLCBzZXJ2ZXJDb25maWd1cmF0aW9uLCBjb250ZXh0
LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKSkKK3sKK30KKworUGVlckNvbm5lY3Rpb24w
MDo6flBlZXJDb25uZWN0aW9uMDAoKQoreworfQorCitib29sIFBlZXJDb25uZWN0aW9uMDA6Omhh
c0xvY2FsQXVkaW9UcmFjaygpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xvY2Fs
U3RyZWFtcy0+bGVuZ3RoKCk7ICsraSkgeworICAgICAgICBNZWRpYVN0cmVhbSogY3VyciA9IG1f
bG9jYWxTdHJlYW1zLT5pdGVtKGkpOworICAgICAgICBpZiAoY3Vyci0+YXVkaW9UcmFja3MoKS0+
bGVuZ3RoKCkgPiAwKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBQZWVyQ29ubmVjdGlvbjAwOjpoYXNMb2NhbFZpZGVvVHJhY2so
KQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9sb2NhbFN0cmVhbXMtPmxlbmd0aCgp
OyArK2kpIHsKKyAgICAgICAgTWVkaWFTdHJlYW0qIGN1cnIgPSBtX2xvY2FsU3RyZWFtcy0+aXRl
bShpKTsKKyAgICAgICAgaWYgKGN1cnItPnZpZGVvVHJhY2tzKCktPmxlbmd0aCgpID4gMCkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1Bh
c3NSZWZQdHI8TWVkaWFIaW50cz4gUGVlckNvbm5lY3Rpb24wMDo6cGFyc2VNZWRpYUhpbnRzKGNv
bnN0IFN0cmluZyYgbWVkaWFIaW50cykKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBoaW50c0xpc3Q7
CisgICAgbWVkaWFIaW50cy5zcGxpdCgiLCIsIGhpbnRzTGlzdCk7CisgICAgYm9vbCBhdWRpbyA9
IGhhc0xvY2FsQXVkaW9UcmFjaygpOworICAgIGJvb2wgdmlkZW8gPSBoYXNMb2NhbFZpZGVvVHJh
Y2soKTsKKyAgICBmb3IgKFZlY3RvcjxTdHJpbmc+OjppdGVyYXRvciBpID0gaGludHNMaXN0LmJl
Z2luKCk7IGkgIT0gaGludHNMaXN0LmVuZCgpOyArK2kpIHsKKyAgICAgICAgaWYgKCppID09ICJh
dWRpbyIpCisgICAgICAgICAgICBhdWRpbyA9IHRydWU7CisgICAgICAgIGVsc2UgaWYgKCppID09
ICJub19hdWRpbyIpCisgICAgICAgICAgICBhdWRpbyA9IGZhbHNlOworICAgICAgICBlbHNlIGlm
ICgqaSA9PSAidmlkZW8iKQorICAgICAgICAgICAgdmlkZW8gPSB0cnVlOworICAgICAgICBlbHNl
IGlmICgqaSA9PSAibm9fdmlkZW8iKQorICAgICAgICAgICAgdmlkZW8gPSBmYWxzZTsKKyAgICB9
CisKKyAgICByZXR1cm4gTWVkaWFIaW50czo6Y3JlYXRlKGF1ZGlvLCB2aWRlbyk7Cit9CisKK1Bh
c3NSZWZQdHI8U2Vzc2lvbkRlc2NyaXB0aW9uPiBQZWVyQ29ubmVjdGlvbjAwOjpjcmVhdGVPZmZl
cigpCit7CisgICAgcmV0dXJuIGNyZWF0ZU9mZmVyKCIiKTsKK30KKworUGFzc1JlZlB0cjxTZXNz
aW9uRGVzY3JpcHRpb24+IFBlZXJDb25uZWN0aW9uMDA6OmNyZWF0ZU9mZmVyKGNvbnN0IFN0cmlu
ZyYgbWVkaWFIaW50c1N0cmluZykKK3sKKyAgICBSZWZQdHI8TWVkaWFIaW50cz4gbWVkaWFIaW50
cyA9IHBhcnNlTWVkaWFIaW50cyhtZWRpYUhpbnRzU3RyaW5nKTsKKyAgICBSZWZQdHI8U2Vzc2lv
bkRlc2NyaXB0aW9uRGVzY3JpcHRvcj4gZGVzY3JpcHRvciA9IG1fcGVlckhhbmRsZXItPmNyZWF0
ZU9mZmVyKG1lZGlhSGludHMucmVsZWFzZSgpKTsKKyAgICBpZiAoIWRlc2NyaXB0b3IpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIFNlc3Npb25EZXNjcmlwdGlvbjo6Y3JlYXRlKGRl
c2NyaXB0b3IpOworfQorCitQYXNzUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbj4gUGVlckNvbm5l
Y3Rpb24wMDo6Y3JlYXRlQW5zd2VyKGNvbnN0IFN0cmluZyYgb2ZmZXIpCit7CisgICAgcmV0dXJu
IGNyZWF0ZUFuc3dlcihvZmZlciwgIiIpOworfQorCitQYXNzUmVmUHRyPFNlc3Npb25EZXNjcmlw
dGlvbj4gUGVlckNvbm5lY3Rpb24wMDo6Y3JlYXRlQW5zd2VyKGNvbnN0IFN0cmluZyYgb2ZmZXIs
IGNvbnN0IFN0cmluZyYgbWVkaWFIaW50c1N0cmluZykKK3sKKyAgICBSZWZQdHI8TWVkaWFIaW50
cz4gbWVkaWFIaW50cyA9IHBhcnNlTWVkaWFIaW50cyhtZWRpYUhpbnRzU3RyaW5nKTsKKyAgICBS
ZWZQdHI8U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcj4gZGVzY3JpcHRvciA9IG1fcGVlckhh
bmRsZXItPmNyZWF0ZUFuc3dlcihvZmZlciwgbWVkaWFIaW50cy5yZWxlYXNlKCkpOworICAgIGlm
ICghZGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gU2Vzc2lvbkRl
c2NyaXB0aW9uOjpjcmVhdGUoZGVzY3JpcHRvcik7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb24w
MDo6c2V0TG9jYWxEZXNjcmlwdGlvbihpbnQgYWN0aW9uLCBQYXNzUmVmUHRyPFNlc3Npb25EZXNj
cmlwdGlvbj4gc2Vzc2lvbkRlc2NyaXB0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBp
ZiAobV9yZWFkeVN0YXRlID09IENMT1NFRCkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVf
RVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3dpdGNoIChhY3Rpb24pIHsKKyAg
ICBjYXNlIFNEUF9PRkZFUjoKKyAgICBjYXNlIFNEUF9QUkFOU1dFUjoKKyAgICBjYXNlIFNEUF9B
TlNXRVI6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGVjID0gU1lOVEFY
X0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghc2Vzc2lvbkRlc2NyaXB0
aW9uKSB7CisgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBib29sIHZhbGlkID0gbV9wZWVySGFuZGxlci0+c2V0TG9jYWxEZXNjcmlw
dGlvbihhY3Rpb24sIHNlc3Npb25EZXNjcmlwdGlvbi0+ZGVzY3JpcHRvcigpKTsKKyAgICBpZiAo
IXZhbGlkKQorICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rp
b24wMDo6c2V0UmVtb3RlRGVzY3JpcHRpb24oaW50IGFjdGlvbiwgUGFzc1JlZlB0cjxTZXNzaW9u
RGVzY3JpcHRpb24+IHNlc3Npb25EZXNjcmlwdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7Cisg
ICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBDTE9TRUQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NU
QVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN3aXRjaCAoYWN0aW9uKSB7
CisgICAgY2FzZSBTRFBfT0ZGRVI6CisgICAgY2FzZSBTRFBfUFJBTlNXRVI6CisgICAgY2FzZSBT
RFBfQU5TV0VSOgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBlYyA9IFNZ
TlRBWF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXNlc3Npb25EZXNj
cmlwdGlvbikgeworICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgYm9vbCB2YWxpZCA9IG1fcGVlckhhbmRsZXItPnNldFJlbW90ZURl
c2NyaXB0aW9uKGFjdGlvbiwgc2Vzc2lvbkRlc2NyaXB0aW9uLT5kZXNjcmlwdG9yKCkpOworICAg
IGlmICghdmFsaWQpCisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKK30KKworUGFzc1JlZlB0cjxT
ZXNzaW9uRGVzY3JpcHRpb24+IFBlZXJDb25uZWN0aW9uMDA6OmxvY2FsRGVzY3JpcHRpb24oKQor
eworICAgIFJlZlB0cjxTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yPiBkZXNjcmlwdG9yID0g
bV9wZWVySGFuZGxlci0+bG9jYWxEZXNjcmlwdGlvbigpOworICAgIGlmICghZGVzY3JpcHRvcikK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8U2Vzc2lvbkRlc2NyaXB0aW9uPiBkZXNj
ID0gU2Vzc2lvbkRlc2NyaXB0aW9uOjpjcmVhdGUoZGVzY3JpcHRvci5yZWxlYXNlKCkpOworICAg
IHJldHVybiBkZXNjLnJlbGVhc2UoKTsKK30KKworUGFzc1JlZlB0cjxTZXNzaW9uRGVzY3JpcHRp
b24+IFBlZXJDb25uZWN0aW9uMDA6OnJlbW90ZURlc2NyaXB0aW9uKCkKK3sKKyAgICBSZWZQdHI8
U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcj4gZGVzY3JpcHRvciA9IG1fcGVlckhhbmRsZXIt
PnJlbW90ZURlc2NyaXB0aW9uKCk7CisgICAgaWYgKCFkZXNjcmlwdG9yKQorICAgICAgICByZXR1
cm4gMDsKKworICAgIFJlZlB0cjxTZXNzaW9uRGVzY3JpcHRpb24+IGRlc2MgPSBTZXNzaW9uRGVz
Y3JpcHRpb246OmNyZWF0ZShkZXNjcmlwdG9yLnJlbGVhc2UoKSk7CisgICAgcmV0dXJuIGRlc2Mu
cmVsZWFzZSgpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uMDA6OnN0YXJ0SWNlKEV4Y2VwdGlv
bkNvZGUmIGVjKQoreworICAgIHN0YXJ0SWNlKCIiLCBlYyk7Cit9CisKK3ZvaWQgUGVlckNvbm5l
Y3Rpb24wMDo6c3RhcnRJY2UoY29uc3QgU3RyaW5nJiBvcHRpb25zLCBFeGNlcHRpb25Db2RlJiBl
YykKK3sKKyAgICBpZiAobV9yZWFkeVN0YXRlID09IENMT1NFRCkgeworICAgICAgICBlYyA9IElO
VkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSWNlT3B0aW9u
czo6VXNlQ2FuZGlkYXRlc09wdGlvbiBvcHRpb247CisKKyAgICBpZiAob3B0aW9ucyA9PSAiIiB8
fCBvcHRpb25zID09ICJhbGwiKQorICAgICAgICBvcHRpb24gPSBJY2VPcHRpb25zOjpBTEw7Cisg
ICAgZWxzZSBpZiAob3B0aW9ucyA9PSAibm9fcmVsYXkiKQorICAgICAgICBvcHRpb24gPSBJY2VP
cHRpb25zOjpOT19SRUxBWTsKKyAgICBlbHNlIGlmIChvcHRpb25zID09ICJvbmx5X3JlbGF5IikK
KyAgICAgICAgb3B0aW9uID0gSWNlT3B0aW9uczo6T05MWV9SRUxBWTsKKyAgICBlbHNlIHsKKyAg
ICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGJvb2wgdmFsaWQgPSBtX3BlZXJIYW5kbGVyLT5zdGFydEljZShJY2VPcHRpb25zOjpjcmVh
dGUob3B0aW9uKSk7CisgICAgaWYgKCF2YWxpZCkKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwor
fQorCit2b2lkIFBlZXJDb25uZWN0aW9uMDA6OnByb2Nlc3NJY2VNZXNzYWdlKFBhc3NSZWZQdHI8
SWNlQ2FuZGlkYXRlPiBpY2VDYW5kaWRhdGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlm
IChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VEKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9F
UlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBib29sIHZhbGlkID0gbV9wZWVySGFu
ZGxlci0+cHJvY2Vzc0ljZU1lc3NhZ2UoaWNlQ2FuZGlkYXRlLT5kZXNjcmlwdG9yKCkpOworICAg
IGlmICghdmFsaWQpCisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKK30KKworUGVlckNvbm5lY3Rp
b24wMDo6UmVhZHlTdGF0ZSBQZWVyQ29ubmVjdGlvbjAwOjpyZWFkeVN0YXRlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9yZWFkeVN0YXRlOworfQorCitQZWVyQ29ubmVjdGlvbjAwOjpJY2VTdGF0
ZSBQZWVyQ29ubmVjdGlvbjAwOjppY2VTdGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faWNl
U3RhdGU7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb24wMDo6YWRkU3RyZWFtKFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW0+IHN0cmVhbSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgU3RyaW5nIGVt
cHR5SGludHM7CisgICAgcmV0dXJuIGFkZFN0cmVhbShzdHJlYW0sIGVtcHR5SGludHMsIGVjKTsK
K30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjAwOjphZGRTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbT4gcHJwU3RyZWFtLCBjb25zdCBTdHJpbmcmIG1lZGlhU3RyZWFtSGludHMsIEV4Y2VwdGlv
bkNvZGUmIGVjKQoreworICAgIFJlZlB0cjxNZWRpYVN0cmVhbT4gc3RyZWFtID0gcHJwU3RyZWFt
OworICAgIGlmICghc3RyZWFtKSB7CisgICAgICAgIGVjID0gIFRZUEVfTUlTTUFUQ0hfRVJSOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBDTE9TRUQp
IHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmIChtX2xvY2FsU3RyZWFtcy0+Y29udGFpbnMoc3RyZWFtLmdldCgpKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9sb2NhbFN0cmVhbXMtPmFwcGVuZChzdHJlYW0pOworCisg
ICAgLy8gRklYTUU6IFdoZW4gdGhlIHNwZWMgc2F5cyB3aGF0IHRoZSBtZWRpYVN0cmVhbUhpbnRz
IHNob3VsZCBsb29rIGxpa2Ugc2VuZCBpdCBkb3duLgorICAgIG1fcGVlckhhbmRsZXItPmFkZFN0
cmVhbShzdHJlYW0tPmRlc2NyaXB0b3IoKSk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb24wMDo6
cmVtb3ZlU3RyZWFtKE1lZGlhU3RyZWFtKiBzdHJlYW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQorewor
ICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VEKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9T
VEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXN0cmVhbSkgewor
ICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKCFtX2xvY2FsU3RyZWFtcy0+Y29udGFpbnMoc3RyZWFtKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9sb2NhbFN0cmVhbXMtPnJlbW92ZShzdHJlYW0pOworCisgICAgbV9wZWVy
SGFuZGxlci0+cmVtb3ZlU3RyZWFtKHN0cmVhbS0+ZGVzY3JpcHRvcigpKTsKK30KKworTWVkaWFT
dHJlYW1MaXN0KiBQZWVyQ29ubmVjdGlvbjAwOjpsb2NhbFN0cmVhbXMoKSBjb25zdAoreworICAg
IHJldHVybiBtX2xvY2FsU3RyZWFtcy5nZXQoKTsKK30KKworTWVkaWFTdHJlYW1MaXN0KiBQZWVy
Q29ubmVjdGlvbjAwOjpyZW1vdGVTdHJlYW1zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZW1v
dGVTdHJlYW1zLmdldCgpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uMDA6OmNsb3NlKEV4Y2Vw
dGlvbkNvZGUmIGVjKQoreworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VEKSB7CisgICAg
ICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBzdG9wKCk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb24wMDo6ZGlkR2VuZXJhdGVJY2VDYW5k
aWRhdGUoUGFzc1JlZlB0cjxJY2VDYW5kaWRhdGVEZXNjcmlwdG9yPiBpY2VDYW5kaWRhdGVEZXNj
cmlwdG9yLCBib29sIG1vcmVUb0ZvbGxvdykKK3sKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgaWYgKCFpY2VDYW5kaWRhdGVEZXNj
cmlwdG9yKQorICAgICAgICBtX2ljZUNhbGxiYWNrLT5oYW5kbGVFdmVudCgwLCBtb3JlVG9Gb2xs
b3csIHRoaXMpOworICAgIGVsc2UgeworICAgICAgICBSZWZQdHI8SWNlQ2FuZGlkYXRlPiBpY2VD
YW5kaWRhdGUgPSBJY2VDYW5kaWRhdGU6OmNyZWF0ZShpY2VDYW5kaWRhdGVEZXNjcmlwdG9yKTsK
KyAgICAgICAgbV9pY2VDYWxsYmFjay0+aGFuZGxlRXZlbnQoaWNlQ2FuZGlkYXRlLmdldCgpLCBt
b3JlVG9Gb2xsb3csIHRoaXMpOworICAgIH0KK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjAwOjpk
aWRDaGFuZ2VSZWFkeVN0YXRlKHVpbnQzMl90IG5ld1N0YXRlKQoreworICAgIEFTU0VSVChzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBjaGFuZ2VSZWFk
eVN0YXRlKHN0YXRpY19jYXN0PFJlYWR5U3RhdGU+KG5ld1N0YXRlKSk7Cit9CisKK3ZvaWQgUGVl
ckNvbm5lY3Rpb24wMDo6ZGlkQ2hhbmdlSWNlU3RhdGUodWludDMyX3QgbmV3U3RhdGUpCit7Cisg
ICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpOwor
ICAgIGNoYW5nZUljZVN0YXRlKHN0YXRpY19jYXN0PEljZVN0YXRlPihuZXdTdGF0ZSkpOworfQor
Cit2b2lkIFBlZXJDb25uZWN0aW9uMDA6OmRpZEFkZFJlbW90ZVN0cmVhbShQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtRGVzY3JpcHRvcj4gc3RyZWFtRGVzY3JpcHRvcikKK3sKKyAgICBBU1NFUlQoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CisKKyAgICBpZiAobV9y
ZWFkeVN0YXRlID09IENMT1NFRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPE1lZGlh
U3RyZWFtPiBzdHJlYW0gPSBNZWRpYVN0cmVhbTo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgc3RyZWFtRGVzY3JpcHRvcik7CisgICAgbV9yZW1vdGVTdHJlYW1zLT5hcHBlbmQoc3Ry
ZWFtKTsKKworICAgIGRpc3BhdGNoRXZlbnQoTWVkaWFTdHJlYW1FdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5hZGRzdHJlYW1FdmVudCwgZmFsc2UsIGZhbHNlLCBzdHJlYW0ucmVsZWFzZSgpKSk7
Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb24wMDo6ZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKE1lZGlh
U3RyZWFtRGVzY3JpcHRvciogc3RyZWFtRGVzY3JpcHRvcikKK3sKKyAgICBBU1NFUlQoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgQVNTRVJUKHN0cmVh
bURlc2NyaXB0b3ItPm93bmVyKCkpOworCisgICAgUmVmUHRyPE1lZGlhU3RyZWFtPiBzdHJlYW0g
PSBzdGF0aWNfY2FzdDxNZWRpYVN0cmVhbSo+KHN0cmVhbURlc2NyaXB0b3ItPm93bmVyKCkpOwor
ICAgIHN0cmVhbS0+c3RyZWFtRW5kZWQoKTsKKworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gQ0xP
U0VEKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQobV9yZW1vdGVTdHJlYW1zLT5jb250
YWlucyhzdHJlYW0uZ2V0KCkpKTsKKyAgICBtX3JlbW90ZVN0cmVhbXMtPnJlbW92ZShzdHJlYW0u
Z2V0KCkpOworCisgICAgZGlzcGF0Y2hFdmVudChNZWRpYVN0cmVhbUV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLnJlbW92ZXN0cmVhbUV2ZW50LCBmYWxzZSwgZmFsc2UsIHN0cmVhbS5yZWxlYXNl
KCkpKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBQZWVyQ29ubmVjdGlvbjAwOjppbnRlcmZh
Y2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclBl
ZXJDb25uZWN0aW9uMDA7Cit9CisKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFBlZXJDb25uZWN0
aW9uMDA6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAoreworICAgIHJldHVybiBBY3Rp
dmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKK30KKwordm9pZCBQZWVyQ29u
bmVjdGlvbjAwOjpzdG9wKCkKK3sKKyAgICBpZiAobV9yZWFkeVN0YXRlID09IENMT1NFRCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fcGVlckhhbmRsZXIpCisgICAgICAgIG1fcGVlckhh
bmRsZXItPnN0b3AoKTsKKyAgICBtX3BlZXJIYW5kbGVyLmNsZWFyKCk7CisKKyAgICBjaGFuZ2VS
ZWFkeVN0YXRlKENMT1NFRCk7CisgICAgY2hhbmdlSWNlU3RhdGUoSUNFX0NMT1NFRCk7Cit9CisK
K0V2ZW50VGFyZ2V0RGF0YSogUGVlckNvbm5lY3Rpb24wMDo6ZXZlbnRUYXJnZXREYXRhKCkKK3sK
KyAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOworfQorCitFdmVudFRhcmdldERhdGEqIFBl
ZXJDb25uZWN0aW9uMDA6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCit7CisgICAgcmV0dXJuICZt
X2V2ZW50VGFyZ2V0RGF0YTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjAwOjpjaGFuZ2VSZWFk
eVN0YXRlKFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSkKK3sKKyAgICBpZiAocmVhZHlTdGF0ZSA9PSBt
X3JlYWR5U3RhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcmVhZHlTdGF0ZSA9IHJlYWR5
U3RhdGU7CisKKyAgICBzd2l0Y2ggKG1fcmVhZHlTdGF0ZSkgeworICAgIGNhc2UgTkVXOgorICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBORUdP
VElBVElORzoKKyAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5jb25uZWN0aW5nRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEFDVElWRToKKyAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5vcGVuRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENMT1NFRDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZGlzcGF0Y2hFdmVudChFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdGF0ZWNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsK
K30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjAwOjpjaGFuZ2VJY2VTdGF0ZShJY2VTdGF0ZSBpY2VT
dGF0ZSkKK3sKKyAgICBpZiAoaWNlU3RhdGUgPT0gbV9pY2VTdGF0ZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9pY2VTdGF0ZSA9IGljZVN0YXRlOworCisgICAgc3dpdGNoIChtX2ljZVN0YXRl
KSB7CisgICAgY2FzZSBJQ0VfR0FUSEVSSU5HOgorICAgIGNhc2UgSUNFX1dBSVRJTkc6CisgICAg
Y2FzZSBJQ0VfQ0hFQ0tJTkc6CisgICAgY2FzZSBJQ0VfQ09OTkVDVEVEOgorICAgIGNhc2UgSUNF
X0NPTVBMRVRFRDoKKyAgICBjYXNlIElDRV9GQUlMRUQ6CisgICAgY2FzZSBJQ0VfQ0xPU0VEOgor
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLnN0YXRlY2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlv
bjAwLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9u
MDAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41MjBkNjFkOGRiMjgyYjNhOWY3NTZhMWYyNjZiM2ViNjJmYWJlNWRl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Q
ZWVyQ29ubmVjdGlvbjAwLmgKQEAgLTAsMCArMSwxNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9u
LgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBlZXJD
b25uZWN0aW9uMDBfaAorI2RlZmluZSBQZWVyQ29ubmVjdGlvbjAwX2gKKworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJF
dmVudFRhcmdldC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkJhc2UuaCIKKyNpbmNsdWRlICJJY2VD
YWxsYmFjay5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJl
YW1MaXN0LmgiCisjaW5jbHVkZSAiUGVlckNvbm5lY3Rpb24wMEhhbmRsZXIuaCIKKyNpbmNsdWRl
ICJQZWVyQ29ubmVjdGlvbjAwSGFuZGxlckNsaWVudC5oIgorI2luY2x1ZGUgIlNlc3Npb25EZXNj
cmlwdGlvbi5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgTWVkaWFIaW50czsKKworLy8gTm90ZToKKy8vIFNEUCBzdGFuZHMgZm9yIFNlc3Npb24gRGVz
Y3JpcHRpb24gUHJvdG9jb2wsIHdoaWNoIGlzIGludGVuZGVkIGZvciBkZXNjcmliaW5nCisvLyBt
dWx0aW1lZGlhIHNlc3Npb25zIGZvciB0aGUgcHVycG9zZXMgb2Ygc2Vzc2lvbiBhbm5vdW5jZW1l
bnQsIHNlc3Npb24KKy8vIGludml0YXRpb24sIGFuZCBvdGhlciBmb3JtcyBvZiBtdWx0aW1lZGlh
IHNlc3Npb24gaW5pdGlhdGlvbi4KKy8vCisvLyBNb3JlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3Vu
ZCBoZXJlOgorLy8gaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNDU2NgorLy8gaHR0cDov
L2VuLndpa2lwZWRpYS5vcmcvd2lraS9TZXNzaW9uX0Rlc2NyaXB0aW9uX1Byb3RvY29sCisKK2Ns
YXNzIFBlZXJDb25uZWN0aW9uMDAgOiBwdWJsaWMgUmVmQ291bnRlZDxQZWVyQ29ubmVjdGlvbjAw
PiwgcHVibGljIFBlZXJDb25uZWN0aW9uMDBIYW5kbGVyQ2xpZW50LCBwdWJsaWMgRXZlbnRUYXJn
ZXQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgeworcHVibGljOgorICAgIGVudW0gUmVhZHlTdGF0
ZSB7CisgICAgICAgIE5FVyA9IDAsCisgICAgICAgIE5FR09USUFUSU5HID0gMSwKKyAgICAgICAg
QUNUSVZFID0gMiwKKyAgICAgICAgQ0xPU0VEID0gMworICAgIH07CisKKyAgICBlbnVtIEFjdGlv
biB7CisgICAgICAgIFNEUF9PRkZFUiA9IDB4MTAwLAorICAgICAgICBTRFBfUFJBTlNXRVIgPSAw
eDIwMCwKKyAgICAgICAgU0RQX0FOU1dFUiA9IDB4MzAwCisgICAgfTsKKworICAgIGVudW0gSWNl
U3RhdGUgeworICAgICAgICBJQ0VfR0FUSEVSSU5HID0gMHgxMDAsCisgICAgICAgIElDRV9XQUlU
SU5HID0gMHgyMDAsCisgICAgICAgIElDRV9DSEVDS0lORyA9IDB4MzAwLAorICAgICAgICBJQ0Vf
Q09OTkVDVEVEID0gMHg0MDAsCisgICAgICAgIElDRV9DT01QTEVURUQgPSAweDUwMCwKKyAgICAg
ICAgSUNFX0ZBSUxFRCA9IDB4NjAwLAorICAgICAgICBJQ0VfQ0xPU0VEID0gMHg3MDAKKyAgICB9
OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGVlckNvbm5lY3Rpb24wMD4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHNlcnZlckNvbmZpZ3VyYXRpb24sIFBh
c3NSZWZQdHI8SWNlQ2FsbGJhY2s+KTsKKyAgICB+UGVlckNvbm5lY3Rpb24wMCgpOworCisgICAg
UGFzc1JlZlB0cjxTZXNzaW9uRGVzY3JpcHRpb24+IGNyZWF0ZU9mZmVyKCk7CisgICAgUGFzc1Jl
ZlB0cjxTZXNzaW9uRGVzY3JpcHRpb24+IGNyZWF0ZU9mZmVyKGNvbnN0IFN0cmluZyYgbWVkaWFI
aW50cyk7CisgICAgUGFzc1JlZlB0cjxTZXNzaW9uRGVzY3JpcHRpb24+IGNyZWF0ZUFuc3dlcihj
b25zdCBTdHJpbmcmIG9mZmVyKTsKKyAgICBQYXNzUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbj4g
Y3JlYXRlQW5zd2VyKGNvbnN0IFN0cmluZyYgb2ZmZXIsIGNvbnN0IFN0cmluZyYgbWVkaWFIaW50
cyk7CisKKyAgICB2b2lkIHNldExvY2FsRGVzY3JpcHRpb24oaW50IGFjdGlvbiwgUGFzc1JlZlB0
cjxTZXNzaW9uRGVzY3JpcHRpb24+LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZXRSZW1v
dGVEZXNjcmlwdGlvbihpbnQgYWN0aW9uLCBQYXNzUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbj4s
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbj4gbG9j
YWxEZXNjcmlwdGlvbigpOworICAgIFBhc3NSZWZQdHI8U2Vzc2lvbkRlc2NyaXB0aW9uPiByZW1v
dGVEZXNjcmlwdGlvbigpOworCisgICAgdm9pZCBzdGFydEljZShFeGNlcHRpb25Db2RlJik7Cisg
ICAgdm9pZCBzdGFydEljZShjb25zdCBTdHJpbmcmIG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICB2b2lkIHByb2Nlc3NJY2VNZXNzYWdlKFBhc3NSZWZQdHI8SWNlQ2FuZGlkYXRlPiwgRXhj
ZXB0aW9uQ29kZSYpOworCisgICAgSWNlU3RhdGUgaWNlU3RhdGUoKSBjb25zdDsKKyAgICBSZWFk
eVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKKworICAgIHZvaWQgYWRkU3RyZWFtKGNvbnN0IFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW0+LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBhZGRTdHJl
YW0oY29uc3QgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4sIGNvbnN0IFN0cmluZyYgbWVkaWFTdHJl
YW1IaW50cywgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcmVtb3ZlU3RyZWFtKE1lZGlhU3Ry
ZWFtKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIE1lZGlhU3RyZWFtTGlzdCogbG9jYWxTdHJlYW1z
KCkgY29uc3Q7CisgICAgTWVkaWFTdHJlYW1MaXN0KiByZW1vdGVTdHJlYW1zKCkgY29uc3Q7CisK
KyAgICB2b2lkIGNsb3NlKEV4Y2VwdGlvbkNvZGUmKTsKKworICAgIERFRklORV9BVFRSSUJVVEVf
RVZFTlRfTElTVEVORVIoY29ubmVjdGluZyk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUihvcGVuKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHN0YXRl
Y2hhbmdlKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGFkZHN0cmVhbSk7
CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihyZW1vdmVzdHJlYW0pOworCisg
ICAgLy8gUGVlckNvbm5lY3Rpb24wMEhhbmRsZXJDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
R2VuZXJhdGVJY2VDYW5kaWRhdGUoUGFzc1JlZlB0cjxJY2VDYW5kaWRhdGVEZXNjcmlwdG9yPiwg
Ym9vbCBtb3JlVG9Gb2xsb3cpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VS
ZWFkeVN0YXRlKHVpbnQzMl90IHN0YXRlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
Q2hhbmdlSWNlU3RhdGUodWludDMyX3Qgc3RhdGUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRBZGRSZW1vdGVTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+KSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvciopIE9WRVJSSURFOworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0IE9WRVJSSURFOworCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0CisgICAgdmlydHVh
bCB2b2lkIHN0b3AoKSBPVkVSUklERTsKKworICAgIHVzaW5nIFJlZkNvdW50ZWQ8UGVlckNvbm5l
Y3Rpb24wMD46OnJlZjsKKyAgICB1c2luZyBSZWZDb3VudGVkPFBlZXJDb25uZWN0aW9uMDA+Ojpk
ZXJlZjsKKworcHJpdmF0ZToKKyAgICBQZWVyQ29ubmVjdGlvbjAwKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTdHJpbmcmIHNlcnZlckNvbmZpZ3VyYXRpb24sIFBhc3NSZWZQdHI8SWNl
Q2FsbGJhY2s+KTsKKworICAgIC8vIEV2ZW50VGFyZ2V0IGltcGxlbWVudGF0aW9uLgorICAgIHZp
cnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKTsKKyAgICB2aXJ0dWFsIEV2
ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7CisgICAgdmlydHVhbCB2b2lk
IHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50
VGFyZ2V0KCkgeyBkZXJlZigpOyB9CisgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXRE
YXRhOworCisgICAgdm9pZCBjaGFuZ2VSZWFkeVN0YXRlKFJlYWR5U3RhdGUpOworICAgIHZvaWQg
Y2hhbmdlSWNlU3RhdGUoSWNlU3RhdGUpOworICAgIGJvb2wgaGFzTG9jYWxBdWRpb1RyYWNrKCk7
CisgICAgYm9vbCBoYXNMb2NhbFZpZGVvVHJhY2soKTsKKyAgICBQYXNzUmVmUHRyPE1lZGlhSGlu
dHM+IHBhcnNlTWVkaWFIaW50cyhjb25zdCBTdHJpbmcmIG1lZGlhSGludHNTdHJpbmcpOworCisg
ICAgUmVmUHRyPEljZUNhbGxiYWNrPiBtX2ljZUNhbGxiYWNrOworCisgICAgUmVhZHlTdGF0ZSBt
X3JlYWR5U3RhdGU7CisgICAgSWNlU3RhdGUgbV9pY2VTdGF0ZTsKKworICAgIFJlZlB0cjxNZWRp
YVN0cmVhbUxpc3Q+IG1fbG9jYWxTdHJlYW1zOworICAgIFJlZlB0cjxNZWRpYVN0cmVhbUxpc3Q+
IG1fcmVtb3RlU3RyZWFtczsKKworICAgIE93blB0cjxQZWVyQ29ubmVjdGlvbjAwSGFuZGxlcj4g
bV9wZWVySGFuZGxlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBQZWVyQ29ubmVjdGlvbjAwX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rp
b24wMC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0
aW9uMDAuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2NTE0MzY5NWU5YzIyMTkyZTY1MWE2YTg0Yjc4Zjk4Y2Nj
OTc4YzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1BlZXJDb25uZWN0aW9uMDAuaWRsCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3Ry
aWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxl
IHAycCB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1NRURJQV9TVFJF
QU0sCisgICAgICAgIEFjdGl2ZURPTU9iamVjdCwKKyAgICAgICAgQ29uc3RydWN0b3IoaW4gRE9N
U3RyaW5nIHNlcnZlckNvbmZpZ3VyYXRpb24sIGluIFtDYWxsYmFja10gSWNlQ2FsbGJhY2sgaWNl
Q2FsbGJhY2spLAorICAgICAgICBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAorICAg
ICAgICBKU0N1c3RvbUNvbnN0cnVjdG9yLAorICAgICAgICBFdmVudFRhcmdldAorICAgIF0gUGVl
ckNvbm5lY3Rpb24wMCB7CisgICAgICAgIC8vIEZJWE1FOiBNYWtlIG1lZGlhSGludHMgYW4gb2Jq
ZWN0CisgICAgICAgIFNlc3Npb25EZXNjcmlwdGlvbiBjcmVhdGVPZmZlcihpbiBbT3B0aW9uYWxd
IERPTVN0cmluZyBtZWRpYUhpbnRzKTsKKworICAgICAgICAvLyBGSVhNRTogTWFrZSBtZWRpYUhp
bnRzIGFuIG9iamVjdAorICAgICAgICBTZXNzaW9uRGVzY3JpcHRpb24gY3JlYXRlQW5zd2VyKGlu
IERPTVN0cmluZyBvZmZlciwgaW4gW09wdGlvbmFsXSBET01TdHJpbmcgbWVkaWFIaW50cyk7CisK
KyAgICAgICAgLy8gQWN0aW9ucywgZm9yIHNldExvY2FsRGVzY3JpcHRpb24vc2V0UmVtb3RlRGVz
Y3JpcHRpb24uCisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNEUF9PRkZFUiA9IDB4MTAw
OworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTRFBfUFJBTlNXRVIgPSAweDIwMDsKKyAg
ICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU0RQX0FOU1dFUiA9IDB4MzAwOworCisgICAgICAg
IHZvaWQgc2V0TG9jYWxEZXNjcmlwdGlvbihpbiB1bnNpZ25lZCBzaG9ydCBhY3Rpb24sIGluIFNl
c3Npb25EZXNjcmlwdGlvbiBkZXNjKQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7
CisKKyAgICAgICAgdm9pZCBzZXRSZW1vdGVEZXNjcmlwdGlvbihpbiB1bnNpZ25lZCBzaG9ydCBh
Y3Rpb24sIGluIFNlc3Npb25EZXNjcmlwdGlvbiBkZXNjKQorICAgICAgICAgICAgcmFpc2VzKERP
TUV4Y2VwdGlvbik7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNlc3Npb25EZXNjcmlw
dGlvbiBsb2NhbERlc2NyaXB0aW9uOworCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTZXNz
aW9uRGVzY3JpcHRpb24gcmVtb3RlRGVzY3JpcHRpb247CisKKyAgICAgICAgY29uc3QgdW5zaWdu
ZWQgc2hvcnQgTkVXID0gMDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTkVHT1RJQVRJ
TkcgPSAxOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBBQ1RJVkUgPSAyOworICAgICAg
ICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDTE9TRUQgPSAzOworICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgdW5zaWduZWQgc2hvcnQgcmVhZHlTdGF0ZTsKKworICAgICAgICAvLyBGSVhNRTogTWFr
ZSBpY2VPcHRpb25zIGFuIG9iamVjdAorICAgICAgICB2b2lkIHN0YXJ0SWNlKGluIFtPcHRpb25h
bF0gRE9NU3RyaW5nIGljZU9wdGlvbnMpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9u
KTsKKworICAgICAgICB2b2lkIHByb2Nlc3NJY2VNZXNzYWdlKGluIEljZUNhbmRpZGF0ZSBjYW5k
aWRhdGUpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKworICAgICAgICBjb25z
dCB1bnNpZ25lZCBzaG9ydCBJQ0VfR0FUSEVSSU5HID0gMHgxMDA7CisgICAgICAgIGNvbnN0IHVu
c2lnbmVkIHNob3J0IElDRV9XQUlUSU5HID0gMHgyMDA7CisgICAgICAgIGNvbnN0IHVuc2lnbmVk
IHNob3J0IElDRV9DSEVDS0lORyA9IDB4MzAwOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9y
dCBJQ0VfQ09OTkVDVEVEID0gMHg0MDA7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IElD
RV9DT01QTEVURUQgPSAweDUwMDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgSUNFX0ZB
SUxFRCA9IDB4NjAwOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBJQ0VfQ0xPU0VEID0g
MHg3MDA7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCBpY2VTdGF0
ZTsKKworICAgICAgICAvLyBGSVhNRTogTWFrZSBtZWRpYVN0cmVhbUhpbnRzIGFuIG9iamVjdAor
ICAgICAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIGFkZFN0cmVhbShpbiBNZWRpYVN0cmVh
bSBzdHJlYW0sIGluIFtPcHRpb25hbF0gRE9NU3RyaW5nIG1lZGlhU3RyZWFtSGludHMpCisgICAg
ICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgW1N0cmljdFR5cGVDaGVja2lu
Z10gdm9pZCByZW1vdmVTdHJlYW0oaW4gTWVkaWFTdHJlYW0gc3RyZWFtKQorICAgICAgICAgICAg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlh
U3RyZWFtTGlzdCBsb2NhbFN0cmVhbXM7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRp
YVN0cmVhbUxpc3QgcmVtb3RlU3RyZWFtczsKKworICAgICAgICB2b2lkIGNsb3NlKCkKKyAgICAg
ICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworCisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExp
c3RlbmVyIG9uY29ubmVjdGluZzsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25v
cGVuOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnN0YXRlY2hhbmdlOworICAg
ICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmFkZHN0cmVhbTsKKyAgICAgICAgYXR0cmli
dXRlIEV2ZW50TGlzdGVuZXIgb25yZW1vdmVzdHJlYW07CisKKyAgICAgICAgLy8gRXZlbnRUYXJn
ZXQgaW50ZXJmYWNlCisgICAgICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcg
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlz
dGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xl
YW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01T
dHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlz
dGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0
aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVu
dChpbiBFdmVudCBldmVudCkKKyAgICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7Cisg
ICAgfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDM4NmVmYjI4ZDliMjkwZjJiNTljMTg4OTcy
ZTNlZGNkMjMwZDZlOWIuLjRmMzEwYjM0YTIwYTRhZWZiZDBjNzIxZjcxM2JhZTU1MTNmNTE3MjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKQEAgLTc5MCw2ICs3OTAsNyBAQAogICAgICAgICAgICAgJ01vZHVs
ZXMvaW50ZW50cy9OYXZpZ2F0b3JJbnRlbnRzLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9t
ZWRpYXN0cmVhbS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb24uaWRsJywKICAgICAgICAgICAgICdN
b2R1bGVzL21lZGlhc3RyZWFtL0RPTVdpbmRvd01lZGlhU3RyZWFtLmlkbCcsCisgICAgICAgICAg
ICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9JY2VDYWxsYmFjay5pZGwnLAogICAgICAgICAgICAgJ01v
ZHVsZXMvbWVkaWFzdHJlYW0vSWNlQ2FuZGlkYXRlLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxl
cy9tZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwnLApAQCAtODAxLDYgKzgwMiw3IEBACiAgICAg
ICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5pZGwn
LAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJy
b3JDYWxsYmFjay5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdh
dG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmlkbCcsCisgICAgICAgICAgICAnTW9kdWxlcy9t
ZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9t
ZWRpYXN0cmVhbS9TZXNzaW9uRGVzY3JpcHRpb24uaWRsJywKICAgICAgICAgICAgICdNb2R1bGVz
L21lZGlhc3RyZWFtL1NpZ25hbGluZ0NhbGxiYWNrLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxl
cy9zcGVlY2gvRE9NV2luZG93U3BlZWNoLmlkbCcsCkBAIC0xNDU4LDYgKzE0NjAsNyBAQAogICAg
ICAgICAgICAgJ01vZHVsZXMvaW50ZW50cy9OYXZpZ2F0b3JJbnRlbnRzLmgnLAogICAgICAgICAg
ICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uLmNwcCcsCiAg
ICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb24u
aCcsCisgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9JY2VDYWxsYmFjay5oJywKICAg
ICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL0ljZUNhbmRpZGF0ZS5jcHAnLAogICAgICAg
ICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vSWNlQ2FuZGlkYXRlLmgnLAogICAgICAgICAgICAg
J01vZHVsZXMvbWVkaWFzdHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5jcHAnLApAQCAtMTQ3OSw2ICsx
NDgyLDggQEAKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJN
ZWRpYUVycm9yLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9y
VXNlck1lZGlhRXJyb3JDYWxsYmFjay5oJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3Ry
ZWFtL05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5oJywKKyAgICAgICAgICAgICdN
b2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuY3BwJywKKyAgICAgICAgICAgICdN
b2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuaCcsCiAgICAgICAgICAgICAnTW9k
dWxlcy9tZWRpYXN0cmVhbS9TZXNzaW9uRGVzY3JpcHRpb24uY3BwJywKICAgICAgICAgICAgICdN
b2R1bGVzL21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlwdGlvbi5oJywKICAgICAgICAgICAgICdN
b2R1bGVzL21lZGlhc3RyZWFtL1NpZ25hbGluZ0NhbGxiYWNrLmgnLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaApp
bmRleCAxZjgxODRlYjYyYmY4OTU2MTI5YjIzZGVjYTU1NDA2MWMyNjk3NmEzLi4wNzI4ZWM2NTJj
ZWM1MWMyNjJjZGM2ZTVmZmVhMWNkNDVmNTAzNTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaApAQCAtMTg2
LDYgKzE4Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRNZWRpYVN0cmVhbUVuYWJs
ZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNNZWRpYVN0cmVhbUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0K
ICAgICBzdGF0aWMgYm9vbCB3ZWJraXRHZXRVc2VyTWVkaWFFbmFibGVkKCkgeyByZXR1cm4gaXNN
ZWRpYVN0cmVhbUVuYWJsZWQ7IH0KICAgICBzdGF0aWMgYm9vbCB3ZWJraXREZXByZWNhdGVkUGVl
ckNvbm5lY3Rpb25FbmFibGVkKCkgeyByZXR1cm4gaXNNZWRpYVN0cmVhbUVuYWJsZWQ7IH0KKyAg
ICBzdGF0aWMgYm9vbCB3ZWJraXRQZWVyQ29ubmVjdGlvbjAwRW5hYmxlZCgpIHsgcmV0dXJuIGlz
TWVkaWFTdHJlYW1FbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShHQU1FUEFEKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQZWVyQ29ubmVjdGlvbjAwQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGVlckNvbm5lY3Rpb24wMEN1
c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2RhODljZGUxZTQ3YmZhMzJiZjg5N2RlNzhlNzNjOGFkODk0
OWJjNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGVl
ckNvbm5lY3Rpb24wMEN1c3RvbS5jcHAKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExIEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAq
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1
ZGUgIkpTUGVlckNvbm5lY3Rpb24wMC5oIgorCisjaW5jbHVkZSAiQ2FsbGJhY2tGdW5jdGlvbi5o
IgorI2luY2x1ZGUgIkljZUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNJY2VDYWxsYmFjay5oIgor
I2luY2x1ZGUgIlBlZXJDb25uZWN0aW9uMDAuaCIKKyNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1BlZXJDb25uZWN0aW9uMDBDb25zdHJ1Y3Rvcjo6Y29u
c3RydWN0SlNQZWVyQ29ubmVjdGlvbjAwKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1BlZXJD
b25uZWN0aW9uMDBDb25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IHN0YXRpY19jYXN0PEpTUGVl
ckNvbm5lY3Rpb24wMENvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOworICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBqc0NvbnN0cnVjdG9yLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJQZWVyQ29ubmVjdGlvbjAwIGNvbnN0
cnVjdG9yIGFzc29jaWF0ZWQgZG9jdW1lbnQgaXMgdW5hdmFpbGFibGUiKSk7CisKKyAgICBpZiAo
ZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIk5vdCBlbm91Z2ggYXJndW1lbnRzIikpOworCisg
ICAgU3RyaW5nIHNlcnZlckNvbmZpZ3VyYXRpb24gPSB1c3RyaW5nVG9TdHJpbmcoZXhlYy0+YXJn
dW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsK
KworICAgIFJlZlB0cjxJY2VDYWxsYmFjaz4gaWNlQ2FsbGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9u
bHlDYWxsYmFjazxKU0ljZUNhbGxiYWNrPihleGVjLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIGV4ZWMtPmFyZ3VtZW50KDEpKTsK
KyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNWYWx1ZSgpKTsKKworICAgIFJlZlB0cjxQZWVyQ29ubmVjdGlvbjAwPiBwZWVyQ29u
bmVjdGlvbiA9IFBlZXJDb25uZWN0aW9uMDA6OmNyZWF0ZShjb250ZXh0LCBzZXJ2ZXJDb25maWd1
cmF0aW9uLCBpY2VDYWxsYmFjay5yZWxlYXNlKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgp
LCBQZWVyQ29ubmVjdGlvbjAwLCBwZWVyQ29ubmVjdGlvbi5nZXQoKSkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggZDk5OGI0NmU3YTMxZTc4ZDgw
N2M3MTkxNDI2MDIzZGM2NTRiNGZkZC4uMjgwZDM5NGYzMjU5ZjhhOWJjYTEyYjhhNWRiZGZmZTcz
ZDJmYzg1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9y
eS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC0y
MCw2ICsyMCw3IEBAIE1lZGlhU3RyZWFtIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQogTWVzc2Fn
ZVBvcnQKIE5vZGUKIE5vdGlmaWNhdGlvbiBjb25kaXRpb25hbD1OT1RJRklDQVRJT05TfExFR0FD
WV9OT1RJRklDQVRJT05TCitQZWVyQ29ubmVjdGlvbjAwIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVB
TQogU2hhcmVkV29ya2VyIGNvbmRpdGlvbmFsPVNIQVJFRF9XT1JLRVJTCiBTaGFyZWRXb3JrZXJD
b250ZXh0IGNvbmRpdGlvbmFsPVNIQVJFRF9XT1JLRVJTCiBTcGVlY2hSZWNvZ25pdGlvbiBjb25k
aXRpb25hbD1TQ1JJUFRFRF9TUEVFQ0gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133452</attachid>
            <date>2012-03-23 03:31:25 -0700</date>
            <delta_ts>2012-03-23 06:55:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81657-20120323113123.patch</filename>
            <type>text/plain</type>
            <size>45062</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExODQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDU4NTE3MTI5MGRkZmEx
ZGRlZTA3ZWE2MWEyYjMzMDY1MmJhNGIwZi4uZGE4ZmVhNDZkODI1MjI3ZGVjNjY2YmFjNzYwZjAw
OTQ1MGM3MzgxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEyLTAzLTIwICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSSAoSlNFUCk6IEludHJvZHVjaW5nIFBlZXJDb25uZWN0aW9uMDAgYW5kIEljZUNhbGxiYWNr
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTY1Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExhc3QgbWFq
b3IgV2ViQ29yZSBwYXRjaCBmb3IgdGhlIEpTRVAgUGVlckNvbm5lY3Rpb24sIHRvZ2V0aGVyIHdp
dGggdGhlIGFzc29jaWF0ZWQKKyAgICAgICAgSWNlQ2FsbGJhY2sgKHRoZXkgYm90aCBkZXBlbmQg
b24gZWFjaCBvdGhlciBhbmQgSWNlQ2FsbGJhY2sgaGFzIHZlcnkgZmV3IGxpbmVzIG9mIHJlYWwg
Y29kZSkuCisKKyAgICAgICAgTXkgbmV4dCBwYXRjaCBhZnRlciB0aGlzIG9uZSB3aWxsIGRvIGEg
bWFqb3Igb3ZlcmhhdWwgb2YgdGhlIGV4aXN0aW5nIGxheW91dCB0ZXN0cworICAgICAgICBhbmQg
YWRkIGEgZmV3IG5ldyBvbmVzLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0RPTVdpbmRvd01lZGlhU3RyZWFtLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0ljZUNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChJY2VDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpJ
Y2VDYWxsYmFjazo6fkljZUNhbGxiYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L0ljZUNhbGxiYWNrLmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Q
ZWVyQ29ubmVjdGlvbjAwLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uMDA6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyQ29ubmVjdGlvbjAwOjpQZWVyQ29ubmVjdGlvbjAwKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uMDA6On5QZWVyQ29ubmVjdGlvbjAwKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uMDA6Omhhc0xvY2FsQXVkaW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyQ29ubmVjdGlvbjAwOjpoYXNMb2NhbFZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
UGVlckNvbm5lY3Rpb24wMDo6cGFyc2VNZWRpYUhpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uMDA6OmNyZWF0ZU9mZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25u
ZWN0aW9uMDA6OmNyZWF0ZUFuc3dlcik6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlv
bjAwOjpzZXRMb2NhbERlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0
aW9uMDA6OnNldFJlbW90ZURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25u
ZWN0aW9uMDA6OmxvY2FsRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5l
Y3Rpb24wMDo6cmVtb3RlRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5l
Y3Rpb24wMDo6c3RhcnRJY2UpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb24wMDo6
cHJvY2Vzc0ljZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb24wMDo6
cmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjAwOjppY2VTdGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjAwOjphZGRTdHJlYW0pOgorICAg
ICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb24wMDo6cmVtb3ZlU3RyZWFtKToKKyAgICAgICAg
KFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uMDA6OmxvY2FsU3RyZWFtcyk6CisgICAgICAgIChXZWJD
b3JlOjpQZWVyQ29ubmVjdGlvbjAwOjpyZW1vdGVTdHJlYW1zKToKKyAgICAgICAgKFdlYkNvcmU6
OlBlZXJDb25uZWN0aW9uMDA6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0
aW9uMDA6OmRpZEdlbmVyYXRlSWNlQ2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJD
b25uZWN0aW9uMDA6OmRpZENoYW5nZVJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGVl
ckNvbm5lY3Rpb24wMDo6ZGlkQ2hhbmdlSWNlU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGVl
ckNvbm5lY3Rpb24wMDo6ZGlkQWRkUmVtb3RlU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uMDA6OmRpZFJlbW92ZVJlbW90ZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3Jl
OjpQZWVyQ29ubmVjdGlvbjAwOjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uMDA6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGVlckNvbm5lY3Rpb24wMDo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVj
dGlvbjAwOjpldmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rp
b24wMDo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25u
ZWN0aW9uMDA6OmNoYW5nZVJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5l
Y3Rpb24wMDo6Y2hhbmdlSWNlU3RhdGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UGVlckNvbm5lY3Rpb24wMC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
UGVlckNvbm5lY3Rpb24wMCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjAwOjpy
ZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjAwOjpkZXJl
ZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0
aW9uMDAuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYmlu
ZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRQZWVyQ29ubmVjdGlvbjAwRW5hYmxlZCk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNQZWVyQ29ubmVjdGlvbjAwQ3VzdG9tLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTUGVlckNvbm5lY3Rp
b24wMENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1BlZXJDb25uZWN0aW9uMDApOgorICAgICAgICAq
IGRvbS9FdmVudFRhcmdldEZhY3RvcnkuaW46CisKIDIwMTItMDMtMjMgIFJ5b3N1a2UgTml3YSAg
PHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgY3NzVGV4dCBzaG91bGQgdXNlIFN0cmluZ0J1
aWxkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDljZTdlN2Q5MjlhZDRlZDQz
MDc1MjNkNTU3MmY3ZTk3MjQ0OWYxZjAuLmU1ZDA3YzAxODU1YzZlMzZjYmFkNjljNzI4MzY3MWU5
YTFkNTYyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
KysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzQ0LDYgKzM0NCw4
IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0hUTUxVTGlzdEVsZW1lbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxWaWRl
b0VsZW1lbnQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTFZpZGVvRWxlbWVu
dC5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSWNlQ2FsbGJhY2suY3BwIFwKKwlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTSWNlQ2FsbGJhY2suaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0ljZUNhbmRpZGF0ZS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJY2VD
YW5kaWRhdGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ltYWdlRGF0YS5jcHAgXApA
QCAtNDM2LDYgKzQzOCw4IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU092ZXJmbG93RXZlbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
UGFnZVRyYW5zaXRpb25FdmVudC5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGVlckNv
bm5lY3Rpb24wMC5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQZWVyQ29ubmVjdGlv
bjAwLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQZXJmb3JtYW5jZS5jcHAgXAogCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQZXJmb3JtYW5jZS5oIFwKIAlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmNwcCBcCkBAIC02NjQsNiArNjY4LDcgQEAg
ZG9tX2JpbmRpbmdfaWRscyArPSBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL2dlb2xvY2F0aW9uL1Bv
c2l0aW9uRXJyb3JDYWxsYmFjay5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVh
bS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb24uaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVk
aWFzdHJlYW0vRE9NV2luZG93TWVkaWFTdHJlYW0uaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMv
bWVkaWFzdHJlYW0vSWNlQ2FsbGJhY2suaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFz
dHJlYW0vSWNlQ2FuZGlkYXRlLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFt
L0xvY2FsTWVkaWFTdHJlYW0uaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW0uaWRsIFwKQEAgLTY3NSw2ICs2ODAsNyBAQCBkb21fYmluZGluZ19pZGxzICs9
IFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJy
b3IuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1l
ZGlhRXJyb3JDYWxsYmFjay5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9O
YXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24wMC5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxl
cy9tZWRpYXN0cmVhbS9TZXNzaW9uRGVzY3JpcHRpb24uaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVs
ZXMvbWVkaWFzdHJlYW0vU2lnbmFsaW5nQ2FsbGJhY2suaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbCBcCkBAIC0xMDk3LDYgKzExMDMsNyBAQCB3ZWJj
b3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtl
ckNvbnRleHRJbmRleGVkRGF0YWJhc2UuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb24uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbi5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0ljZUNhbGxiYWNrLmggXAogCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vSWNlQ2FuZGlkYXRlLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9JY2VDYW5kaWRhdGUuaCBcCiAJU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmNwcCBcCkBAIC0xMTE4LDYgKzEx
MjUsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmggXAogCVNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vz
c0NhbGxiYWNrLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNv
bm5lY3Rpb24wMC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVl
ckNvbm5lY3Rpb24wMC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Nl
c3Npb25EZXNjcmlwdGlvbi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vU2Vzc2lvbkRlc2NyaXB0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vU2lnbmFsaW5nQ2FsbGJhY2suaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL0RPTVdpbmRvd01lZGlhU3RyZWFtLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vRE9NV2luZG93TWVkaWFTdHJlYW0uaWRsCmluZGV4IDkz
OTVlM2FjMzVhNmU2ZjkxYzIyMjQxYzkzMGM1ZmZiYjUyNTU4ODUuLjk3MGQxMDY0NDMxNWFjMTcx
M2Q2ODAwNjJmOGE5MzExOGFmMTM5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vRE9NV2luZG93TWVkaWFTdHJlYW0uaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vRE9NV2luZG93TWVkaWFTdHJlYW0uaWRsCkBAIC0xLDYg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zMiw2ICszMiw5IEBAIG1vZHVsZSB3aW5kb3cgewogICAgIF0gRE9NV2luZG93TWVkaWFT
dHJlYW0gewogICAgICAgICBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZV0gRGVwcmVjYXRl
ZFBlZXJDb25uZWN0aW9uQ29uc3RydWN0b3Igd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9u
OwogICAgICAgICBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZV0gTWVkaWFTdHJlYW1Db25z
dHJ1Y3RvciB3ZWJraXRNZWRpYVN0cmVhbTsKKyAgICAgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRB
dFJ1bnRpbWVdIFBlZXJDb25uZWN0aW9uMDBDb25zdHJ1Y3RvciB3ZWJraXRQZWVyQ29ubmVjdGlv
bjAwOworICAgICAgICBhdHRyaWJ1dGUgU2Vzc2lvbkRlc2NyaXB0aW9uQ29uc3RydWN0b3IgU2Vz
c2lvbkRlc2NyaXB0aW9uOworICAgICAgICBhdHRyaWJ1dGUgSWNlQ2FuZGlkYXRlQ29uc3RydWN0
b3IgSWNlQ2FuZGlkYXRlOwogICAgICAgICBhdHRyaWJ1dGUgTWVkaWFTdHJlYW1FdmVudENvbnN0
cnVjdG9yIE1lZGlhU3RyZWFtRXZlbnQ7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9JY2VDYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9JY2VDYWxsYmFjay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5YmI1MjBiYzdm
YmJhYzA0M2NjOTE5YTU5ZTk4ZTA4N2YwYzQ3NWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0ljZUNhbGxiYWNrLmgKQEAgLTAsMCArMSw1MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAg
ICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgSWNlQ2FsbGJhY2tfaAorI2RlZmluZSBJY2VDYWxsYmFja19oCisK
KyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJY2VDYW5kaWRhdGU7CitjbGFzcyBQZWVy
Q29ubmVjdGlvbjAwOworCitjbGFzcyBJY2VDYWxsYmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPElj
ZUNhbGxiYWNrPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+SWNlQ2FsbGJhY2soKSB7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoSWNlQ2FuZGlkYXRlKiwgYm9vbCBtb3JlVG9Gb2xs
b3csIFBlZXJDb25uZWN0aW9uMDAqKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gSWNlQ2FsbGJh
Y2tfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9JY2VD
YWxsYmFjay5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0ljZUNhbGxi
YWNrLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42OWQ2NDZmMjAzYTIyY2Y0ZjI3NDhmNmFkZjlmMWE0ZjI3YzE3
MDliCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9JY2VDYWxsYmFjay5pZGwKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24u
CisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBwMnAgewor
CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAorICAg
ICAgICBDYWxsYmFjaworICAgIF0gSWNlQ2FsbGJhY2sgeworICAgICAgICBib29sZWFuIGhhbmRs
ZUV2ZW50KGluIEljZUNhbmRpZGF0ZSBjYW5kaWRhdGUsIGluIGJvb2xlYW4gbW9yZVRvRm9sbG93
LCBpbiBQZWVyQ29ubmVjdGlvbjAwIHNvdXJjZSk7CisgICAgfTsKKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24wMC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODA2NTlkYTQzYWI5NDYzNmUyYzllOTdkMTFmNGIwOTJmNDI1ODA3NgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNv
bm5lY3Rpb24wMC5jcHAKQEAgLTAsMCArMSw0NjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgor
ICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiUGVlckNvbm5lY3Rp
b24wMC5oIgorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkljZUNhbGxi
YWNrLmgiCisjaW5jbHVkZSAiSWNlQ2FuZGlkYXRlLmgiCisjaW5jbHVkZSAiSWNlQ2FuZGlkYXRl
RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIkljZU9wdGlvbnMuaCIKKyNpbmNsdWRlICJNZWRpYUhp
bnRzLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1FdmVudC5oIgorI2luY2x1ZGUgIk1lc3NhZ2VF
dmVudC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNlc3Npb25EZXNjcmlwdGlvbi5oIgorI2luY2x1
ZGUgIlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitQYXNzUmVmUHRyPFBlZXJDb25uZWN0aW9uMDA+IFBlZXJDb25uZWN0aW9uMDA6OmNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHNlcnZlckNv
bmZpZ3VyYXRpb24sIFBhc3NSZWZQdHI8SWNlQ2FsbGJhY2s+IGljZUNhbGxiYWNrKQoreworICAg
IFJlZlB0cjxQZWVyQ29ubmVjdGlvbjAwPiBwZWVyQ29ubmVjdGlvbiA9IGFkb3B0UmVmKG5ldyBQ
ZWVyQ29ubmVjdGlvbjAwKGNvbnRleHQsIHNlcnZlckNvbmZpZ3VyYXRpb24sIGljZUNhbGxiYWNr
KSk7CisgICAgcGVlckNvbm5lY3Rpb24tPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBw
ZWVyQ29ubmVjdGlvbi5yZWxlYXNlKCk7Cit9CisKK1BlZXJDb25uZWN0aW9uMDA6OlBlZXJDb25u
ZWN0aW9uMDAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBz
ZXJ2ZXJDb25maWd1cmF0aW9uLCBQYXNzUmVmUHRyPEljZUNhbGxiYWNrPiBpY2VDYWxsYmFjaykK
KyAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQorICAgICwgbV9pY2VDYWxsYmFj
ayhpY2VDYWxsYmFjaykKKyAgICAsIG1fcmVhZHlTdGF0ZShORVcpCisgICAgLCBtX2ljZVN0YXRl
KElDRV9DTE9TRUQpCisgICAgLCBtX2xvY2FsU3RyZWFtcyhNZWRpYVN0cmVhbUxpc3Q6OmNyZWF0
ZSgpKQorICAgICwgbV9yZW1vdGVTdHJlYW1zKE1lZGlhU3RyZWFtTGlzdDo6Y3JlYXRlKCkpCisg
ICAgLCBtX3BlZXJIYW5kbGVyKFBlZXJDb25uZWN0aW9uMDBIYW5kbGVyOjpjcmVhdGUodGhpcywg
c2VydmVyQ29uZmlndXJhdGlvbiwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmco
KSkpCit7Cit9CisKK1BlZXJDb25uZWN0aW9uMDA6On5QZWVyQ29ubmVjdGlvbjAwKCkKK3sKK30K
KworYm9vbCBQZWVyQ29ubmVjdGlvbjAwOjpoYXNMb2NhbEF1ZGlvVHJhY2soKQoreworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9sb2NhbFN0cmVhbXMtPmxlbmd0aCgpOyArK2kpIHsKKyAg
ICAgICAgTWVkaWFTdHJlYW0qIGN1cnIgPSBtX2xvY2FsU3RyZWFtcy0+aXRlbShpKTsKKyAgICAg
ICAgaWYgKGN1cnItPmF1ZGlvVHJhY2tzKCktPmxlbmd0aCgpID4gMCkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUGVlckNvbm5l
Y3Rpb24wMDo6aGFzTG9jYWxWaWRlb1RyYWNrKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1fbG9jYWxTdHJlYW1zLT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIE1lZGlhU3RyZWFt
KiBjdXJyID0gbV9sb2NhbFN0cmVhbXMtPml0ZW0oaSk7CisgICAgICAgIGlmIChjdXJyLT52aWRl
b1RyYWNrcygpLT5sZW5ndGgoKSA+IDApCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitQYXNzUmVmUHRyPE1lZGlhSGludHM+IFBlZXJDb25u
ZWN0aW9uMDA6OnBhcnNlTWVkaWFIaW50cyhjb25zdCBTdHJpbmcmIG1lZGlhSGludHMpCit7Cisg
ICAgVmVjdG9yPFN0cmluZz4gaGludHNMaXN0OworICAgIG1lZGlhSGludHMuc3BsaXQoIiwiLCBo
aW50c0xpc3QpOworICAgIGJvb2wgYXVkaW8gPSBoYXNMb2NhbEF1ZGlvVHJhY2soKTsKKyAgICBi
b29sIHZpZGVvID0gaGFzTG9jYWxWaWRlb1RyYWNrKCk7CisgICAgZm9yIChWZWN0b3I8U3RyaW5n
Pjo6aXRlcmF0b3IgaSA9IGhpbnRzTGlzdC5iZWdpbigpOyBpICE9IGhpbnRzTGlzdC5lbmQoKTsg
KytpKSB7CisgICAgICAgIGlmICgqaSA9PSAiYXVkaW8iKQorICAgICAgICAgICAgYXVkaW8gPSB0
cnVlOworICAgICAgICBlbHNlIGlmICgqaSA9PSAibm9fYXVkaW8iKQorICAgICAgICAgICAgYXVk
aW8gPSBmYWxzZTsKKyAgICAgICAgZWxzZSBpZiAoKmkgPT0gInZpZGVvIikKKyAgICAgICAgICAg
IHZpZGVvID0gdHJ1ZTsKKyAgICAgICAgZWxzZSBpZiAoKmkgPT0gIm5vX3ZpZGVvIikKKyAgICAg
ICAgICAgIHZpZGVvID0gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIE1lZGlhSGludHM6OmNy
ZWF0ZShhdWRpbywgdmlkZW8pOworfQorCitQYXNzUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbj4g
UGVlckNvbm5lY3Rpb24wMDo6Y3JlYXRlT2ZmZXIoKQoreworICAgIHJldHVybiBjcmVhdGVPZmZl
cigiIik7Cit9CisKK1Bhc3NSZWZQdHI8U2Vzc2lvbkRlc2NyaXB0aW9uPiBQZWVyQ29ubmVjdGlv
bjAwOjpjcmVhdGVPZmZlcihjb25zdCBTdHJpbmcmIG1lZGlhSGludHNTdHJpbmcpCit7CisgICAg
UmVmUHRyPE1lZGlhSGludHM+IG1lZGlhSGludHMgPSBwYXJzZU1lZGlhSGludHMobWVkaWFIaW50
c1N0cmluZyk7CisgICAgUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I+IGRlc2Ny
aXB0b3IgPSBtX3BlZXJIYW5kbGVyLT5jcmVhdGVPZmZlcihtZWRpYUhpbnRzLnJlbGVhc2UoKSk7
CisgICAgaWYgKCFkZXNjcmlwdG9yKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBT
ZXNzaW9uRGVzY3JpcHRpb246OmNyZWF0ZShkZXNjcmlwdG9yKTsKK30KKworUGFzc1JlZlB0cjxT
ZXNzaW9uRGVzY3JpcHRpb24+IFBlZXJDb25uZWN0aW9uMDA6OmNyZWF0ZUFuc3dlcihjb25zdCBT
dHJpbmcmIG9mZmVyKQoreworICAgIHJldHVybiBjcmVhdGVBbnN3ZXIob2ZmZXIsICIiKTsKK30K
KworUGFzc1JlZlB0cjxTZXNzaW9uRGVzY3JpcHRpb24+IFBlZXJDb25uZWN0aW9uMDA6OmNyZWF0
ZUFuc3dlcihjb25zdCBTdHJpbmcmIG9mZmVyLCBjb25zdCBTdHJpbmcmIG1lZGlhSGludHNTdHJp
bmcpCit7CisgICAgUmVmUHRyPE1lZGlhSGludHM+IG1lZGlhSGludHMgPSBwYXJzZU1lZGlhSGlu
dHMobWVkaWFIaW50c1N0cmluZyk7CisgICAgUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbkRlc2Ny
aXB0b3I+IGRlc2NyaXB0b3IgPSBtX3BlZXJIYW5kbGVyLT5jcmVhdGVBbnN3ZXIob2ZmZXIsIG1l
ZGlhSGludHMucmVsZWFzZSgpKTsKKyAgICBpZiAoIWRlc2NyaXB0b3IpCisgICAgICAgIHJldHVy
biAwOworCisgICAgcmV0dXJuIFNlc3Npb25EZXNjcmlwdGlvbjo6Y3JlYXRlKGRlc2NyaXB0b3Ip
OworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uMDA6OnNldExvY2FsRGVzY3JpcHRpb24oaW50IGFj
dGlvbiwgUGFzc1JlZlB0cjxTZXNzaW9uRGVzY3JpcHRpb24+IHNlc3Npb25EZXNjcmlwdGlvbiwg
RXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBDTE9TRUQpIHsK
KyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHN3aXRjaCAoYWN0aW9uKSB7CisgICAgY2FzZSBTRFBfT0ZGRVI6CisgICAgY2FzZSBT
RFBfUFJBTlNXRVI6CisgICAgY2FzZSBTRFBfQU5TV0VSOgorICAgICAgICBicmVhazsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoIXNlc3Npb25EZXNjcmlwdGlvbikgeworICAgICAgICBlYyA9IFRZUEVfTUlT
TUFUQ0hfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYm9vbCB2YWxpZCA9IG1f
cGVlckhhbmRsZXItPnNldExvY2FsRGVzY3JpcHRpb24oYWN0aW9uLCBzZXNzaW9uRGVzY3JpcHRp
b24tPmRlc2NyaXB0b3IoKSk7CisgICAgaWYgKCF2YWxpZCkKKyAgICAgICAgZWMgPSBTWU5UQVhf
RVJSOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uMDA6OnNldFJlbW90ZURlc2NyaXB0aW9uKGlu
dCBhY3Rpb24sIFBhc3NSZWZQdHI8U2Vzc2lvbkRlc2NyaXB0aW9uPiBzZXNzaW9uRGVzY3JpcHRp
b24sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VE
KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBzd2l0Y2ggKGFjdGlvbikgeworICAgIGNhc2UgU0RQX09GRkVSOgorICAgIGNh
c2UgU0RQX1BSQU5TV0VSOgorICAgIGNhc2UgU0RQX0FOU1dFUjoKKyAgICAgICAgYnJlYWs7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaWYgKCFzZXNzaW9uRGVzY3JpcHRpb24pIHsKKyAgICAgICAgZWMgPSBUWVBF
X01JU01BVENIX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGJvb2wgdmFsaWQg
PSBtX3BlZXJIYW5kbGVyLT5zZXRSZW1vdGVEZXNjcmlwdGlvbihhY3Rpb24sIHNlc3Npb25EZXNj
cmlwdGlvbi0+ZGVzY3JpcHRvcigpKTsKKyAgICBpZiAoIXZhbGlkKQorICAgICAgICBlYyA9IFNZ
TlRBWF9FUlI7Cit9CisKK1Bhc3NSZWZQdHI8U2Vzc2lvbkRlc2NyaXB0aW9uPiBQZWVyQ29ubmVj
dGlvbjAwOjpsb2NhbERlc2NyaXB0aW9uKCkKK3sKKyAgICBSZWZQdHI8U2Vzc2lvbkRlc2NyaXB0
aW9uRGVzY3JpcHRvcj4gZGVzY3JpcHRvciA9IG1fcGVlckhhbmRsZXItPmxvY2FsRGVzY3JpcHRp
b24oKTsKKyAgICBpZiAoIWRlc2NyaXB0b3IpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVm
UHRyPFNlc3Npb25EZXNjcmlwdGlvbj4gZGVzYyA9IFNlc3Npb25EZXNjcmlwdGlvbjo6Y3JlYXRl
KGRlc2NyaXB0b3IucmVsZWFzZSgpKTsKKyAgICByZXR1cm4gZGVzYy5yZWxlYXNlKCk7Cit9CisK
K1Bhc3NSZWZQdHI8U2Vzc2lvbkRlc2NyaXB0aW9uPiBQZWVyQ29ubmVjdGlvbjAwOjpyZW1vdGVE
ZXNjcmlwdGlvbigpCit7CisgICAgUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I+
IGRlc2NyaXB0b3IgPSBtX3BlZXJIYW5kbGVyLT5yZW1vdGVEZXNjcmlwdGlvbigpOworICAgIGlm
ICghZGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8U2Vzc2lvbkRl
c2NyaXB0aW9uPiBkZXNjID0gU2Vzc2lvbkRlc2NyaXB0aW9uOjpjcmVhdGUoZGVzY3JpcHRvci5y
ZWxlYXNlKCkpOworICAgIHJldHVybiBkZXNjLnJlbGVhc2UoKTsKK30KKwordm9pZCBQZWVyQ29u
bmVjdGlvbjAwOjpzdGFydEljZShFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBzdGFydEljZSgi
IiwgZWMpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uMDA6OnN0YXJ0SWNlKGNvbnN0IFN0cmlu
ZyYgb3B0aW9ucywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9
PSBDTE9TRUQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIEljZU9wdGlvbnM6OlVzZUNhbmRpZGF0ZXNPcHRpb24gb3B0aW9u
OworCisgICAgaWYgKG9wdGlvbnMgPT0gIiIgfHwgb3B0aW9ucyA9PSAiYWxsIikKKyAgICAgICAg
b3B0aW9uID0gSWNlT3B0aW9uczo6QUxMOworICAgIGVsc2UgaWYgKG9wdGlvbnMgPT0gIm5vX3Jl
bGF5IikKKyAgICAgICAgb3B0aW9uID0gSWNlT3B0aW9uczo6Tk9fUkVMQVk7CisgICAgZWxzZSBp
ZiAob3B0aW9ucyA9PSAib25seV9yZWxheSIpCisgICAgICAgIG9wdGlvbiA9IEljZU9wdGlvbnM6
Ok9OTFlfUkVMQVk7CisgICAgZWxzZSB7CisgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBib29sIHZhbGlkID0gbV9wZWVySGFuZGxl
ci0+c3RhcnRJY2UoSWNlT3B0aW9uczo6Y3JlYXRlKG9wdGlvbikpOworICAgIGlmICghdmFsaWQp
CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjAwOjpw
cm9jZXNzSWNlTWVzc2FnZShQYXNzUmVmUHRyPEljZUNhbmRpZGF0ZT4gcHJwSWNlQ2FuZGlkYXRl
LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAobV9yZWFkeVN0YXRlID09IENMT1NFRCkg
eworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgUmVmUHRyPEljZUNhbmRpZGF0ZT4gaWNlQ2FuZGlkYXRlID0gcHJwSWNlQ2FuZGlk
YXRlOworICAgIGlmICghaWNlQ2FuZGlkYXRlKSB7CisgICAgICAgIGVjID0gVFlQRV9NSVNNQVRD
SF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBib29sIHZhbGlkID0gbV9wZWVy
SGFuZGxlci0+cHJvY2Vzc0ljZU1lc3NhZ2UoaWNlQ2FuZGlkYXRlLT5kZXNjcmlwdG9yKCkpOwor
ICAgIGlmICghdmFsaWQpCisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKK30KKworUGVlckNvbm5l
Y3Rpb24wMDo6UmVhZHlTdGF0ZSBQZWVyQ29ubmVjdGlvbjAwOjpyZWFkeVN0YXRlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9yZWFkeVN0YXRlOworfQorCitQZWVyQ29ubmVjdGlvbjAwOjpJY2VT
dGF0ZSBQZWVyQ29ubmVjdGlvbjAwOjppY2VTdGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
aWNlU3RhdGU7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb24wMDo6YWRkU3RyZWFtKFBhc3NSZWZQ
dHI8TWVkaWFTdHJlYW0+IHN0cmVhbSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgU3RyaW5n
IGVtcHR5SGludHM7CisgICAgcmV0dXJuIGFkZFN0cmVhbShzdHJlYW0sIGVtcHR5SGludHMsIGVj
KTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjAwOjphZGRTdHJlYW0oUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbT4gcHJwU3RyZWFtLCBjb25zdCBTdHJpbmcmIG1lZGlhU3RyZWFtSGludHMsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQoreworICAgIFJlZlB0cjxNZWRpYVN0cmVhbT4gc3RyZWFtID0gcHJwU3Ry
ZWFtOworICAgIGlmICghc3RyZWFtKSB7CisgICAgICAgIGVjID0gIFRZUEVfTUlTTUFUQ0hfRVJS
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBDTE9T
RUQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmIChtX2xvY2FsU3RyZWFtcy0+Y29udGFpbnMoc3RyZWFtLmdldCgpKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9sb2NhbFN0cmVhbXMtPmFwcGVuZChzdHJlYW0pOwor
CisgICAgLy8gRklYTUU6IFdoZW4gdGhlIHNwZWMgc2F5cyB3aGF0IHRoZSBtZWRpYVN0cmVhbUhp
bnRzIHNob3VsZCBsb29rIGxpa2Ugc2VuZCBpdCBkb3duLgorICAgIG1fcGVlckhhbmRsZXItPmFk
ZFN0cmVhbShzdHJlYW0tPmRlc2NyaXB0b3IoKSk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb24w
MDo6cmVtb3ZlU3RyZWFtKE1lZGlhU3RyZWFtKiBzdHJlYW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQor
eworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VEKSB7CisgICAgICAgIGVjID0gSU5WQUxJ
RF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXN0cmVhbSkg
eworICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKCFtX2xvY2FsU3RyZWFtcy0+Y29udGFpbnMoc3RyZWFtKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9sb2NhbFN0cmVhbXMtPnJlbW92ZShzdHJlYW0pOworCisgICAgbV9w
ZWVySGFuZGxlci0+cmVtb3ZlU3RyZWFtKHN0cmVhbS0+ZGVzY3JpcHRvcigpKTsKK30KKworTWVk
aWFTdHJlYW1MaXN0KiBQZWVyQ29ubmVjdGlvbjAwOjpsb2NhbFN0cmVhbXMoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2xvY2FsU3RyZWFtcy5nZXQoKTsKK30KKworTWVkaWFTdHJlYW1MaXN0KiBQ
ZWVyQ29ubmVjdGlvbjAwOjpyZW1vdGVTdHJlYW1zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9y
ZW1vdGVTdHJlYW1zLmdldCgpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uMDA6OmNsb3NlKEV4
Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VEKSB7Cisg
ICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBzdG9wKCk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb24wMDo6ZGlkR2VuZXJhdGVJY2VD
YW5kaWRhdGUoUGFzc1JlZlB0cjxJY2VDYW5kaWRhdGVEZXNjcmlwdG9yPiBpY2VDYW5kaWRhdGVE
ZXNjcmlwdG9yLCBib29sIG1vcmVUb0ZvbGxvdykKK3sKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgaWYgKCFpY2VDYW5kaWRhdGVE
ZXNjcmlwdG9yKQorICAgICAgICBtX2ljZUNhbGxiYWNrLT5oYW5kbGVFdmVudCgwLCBtb3JlVG9G
b2xsb3csIHRoaXMpOworICAgIGVsc2UgeworICAgICAgICBSZWZQdHI8SWNlQ2FuZGlkYXRlPiBp
Y2VDYW5kaWRhdGUgPSBJY2VDYW5kaWRhdGU6OmNyZWF0ZShpY2VDYW5kaWRhdGVEZXNjcmlwdG9y
KTsKKyAgICAgICAgbV9pY2VDYWxsYmFjay0+aGFuZGxlRXZlbnQoaWNlQ2FuZGlkYXRlLmdldCgp
LCBtb3JlVG9Gb2xsb3csIHRoaXMpOworICAgIH0KK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjAw
OjpkaWRDaGFuZ2VSZWFkeVN0YXRlKHVpbnQzMl90IG5ld1N0YXRlKQoreworICAgIEFTU0VSVChz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBjaGFuZ2VS
ZWFkeVN0YXRlKHN0YXRpY19jYXN0PFJlYWR5U3RhdGU+KG5ld1N0YXRlKSk7Cit9CisKK3ZvaWQg
UGVlckNvbm5lY3Rpb24wMDo6ZGlkQ2hhbmdlSWNlU3RhdGUodWludDMyX3QgbmV3U3RhdGUpCit7
CisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkp
OworICAgIGNoYW5nZUljZVN0YXRlKHN0YXRpY19jYXN0PEljZVN0YXRlPihuZXdTdGF0ZSkpOwor
fQorCit2b2lkIFBlZXJDb25uZWN0aW9uMDA6OmRpZEFkZFJlbW90ZVN0cmVhbShQYXNzUmVmUHRy
PE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gc3RyZWFtRGVzY3JpcHRvcikKK3sKKyAgICBBU1NFUlQo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CisKKyAgICBpZiAo
bV9yZWFkeVN0YXRlID09IENMT1NFRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPE1l
ZGlhU3RyZWFtPiBzdHJlYW0gPSBNZWRpYVN0cmVhbTo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgc3RyZWFtRGVzY3JpcHRvcik7CisgICAgbV9yZW1vdGVTdHJlYW1zLT5hcHBlbmQo
c3RyZWFtKTsKKworICAgIGRpc3BhdGNoRXZlbnQoTWVkaWFTdHJlYW1FdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5hZGRzdHJlYW1FdmVudCwgZmFsc2UsIGZhbHNlLCBzdHJlYW0ucmVsZWFzZSgp
KSk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb24wMDo6ZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKE1l
ZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtRGVzY3JpcHRvcikKK3sKKyAgICBBU1NFUlQoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgQVNTRVJUKHN0
cmVhbURlc2NyaXB0b3ItPm93bmVyKCkpOworCisgICAgUmVmUHRyPE1lZGlhU3RyZWFtPiBzdHJl
YW0gPSBzdGF0aWNfY2FzdDxNZWRpYVN0cmVhbSo+KHN0cmVhbURlc2NyaXB0b3ItPm93bmVyKCkp
OworICAgIHN0cmVhbS0+c3RyZWFtRW5kZWQoKTsKKworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0g
Q0xPU0VEKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQobV9yZW1vdGVTdHJlYW1zLT5j
b250YWlucyhzdHJlYW0uZ2V0KCkpKTsKKyAgICBtX3JlbW90ZVN0cmVhbXMtPnJlbW92ZShzdHJl
YW0uZ2V0KCkpOworCisgICAgZGlzcGF0Y2hFdmVudChNZWRpYVN0cmVhbUV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLnJlbW92ZXN0cmVhbUV2ZW50LCBmYWxzZSwgZmFsc2UsIHN0cmVhbS5yZWxl
YXNlKCkpKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBQZWVyQ29ubmVjdGlvbjAwOjppbnRl
cmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZv
clBlZXJDb25uZWN0aW9uMDA7Cit9CisKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFBlZXJDb25u
ZWN0aW9uMDA6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAoreworICAgIHJldHVybiBB
Y3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKK30KKwordm9pZCBQZWVy
Q29ubmVjdGlvbjAwOjpzdG9wKCkKK3sKKyAgICBpZiAobV9yZWFkeVN0YXRlID09IENMT1NFRCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fcGVlckhhbmRsZXIpCisgICAgICAgIG1fcGVl
ckhhbmRsZXItPnN0b3AoKTsKKyAgICBtX3BlZXJIYW5kbGVyLmNsZWFyKCk7CisKKyAgICBjaGFu
Z2VSZWFkeVN0YXRlKENMT1NFRCk7CisgICAgY2hhbmdlSWNlU3RhdGUoSUNFX0NMT1NFRCk7Cit9
CisKK0V2ZW50VGFyZ2V0RGF0YSogUGVlckNvbm5lY3Rpb24wMDo6ZXZlbnRUYXJnZXREYXRhKCkK
K3sKKyAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOworfQorCitFdmVudFRhcmdldERhdGEq
IFBlZXJDb25uZWN0aW9uMDA6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCit7CisgICAgcmV0dXJu
ICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjAwOjpjaGFuZ2VS
ZWFkeVN0YXRlKFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSkKK3sKKyAgICBpZiAocmVhZHlTdGF0ZSA9
PSBtX3JlYWR5U3RhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcmVhZHlTdGF0ZSA9IHJl
YWR5U3RhdGU7CisKKyAgICBzd2l0Y2ggKG1fcmVhZHlTdGF0ZSkgeworICAgIGNhc2UgTkVHT1RJ
QVRJTkc6CisgICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
Y29ubmVjdGluZ0V2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBBQ1RJVkU6CisgICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkub3BlbkV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
TE9TRUQ6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTkVXOgorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZGlzcGF0Y2hFdmVudChF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdGF0ZWNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2Up
KTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjAwOjpjaGFuZ2VJY2VTdGF0ZShJY2VTdGF0ZSBp
Y2VTdGF0ZSkKK3sKKyAgICBpZiAoaWNlU3RhdGUgPT0gbV9pY2VTdGF0ZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9pY2VTdGF0ZSA9IGljZVN0YXRlOworICAgIGRpc3BhdGNoRXZlbnQoRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc3RhdGVjaGFuZ2VFdmVudCwgZmFsc2UsIGZhbHNlKSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9T
VFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Bl
ZXJDb25uZWN0aW9uMDAuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVl
ckNvbm5lY3Rpb24wMC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyMGQ2MWQ4ZGIyODJiM2E5Zjc1NmExZjI2NmIz
ZWI2MmZhYmU1ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuaApAQCAtMCwwICsxLDE2OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBk
aXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgUGVlckNvbm5lY3Rpb24wMF9oCisjZGVmaW5lIFBlZXJDb25uZWN0aW9uMDBfaAorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgor
I2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQmFzZS5oIgorI2lu
Y2x1ZGUgIkljZUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKKyNpbmNsdWRl
ICJNZWRpYVN0cmVhbUxpc3QuaCIKKyNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbjAwSGFuZGxlci5o
IgorI2luY2x1ZGUgIlBlZXJDb25uZWN0aW9uMDBIYW5kbGVyQ2xpZW50LmgiCisjaW5jbHVkZSAi
U2Vzc2lvbkRlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBNZWRpYUhpbnRzOworCisvLyBOb3RlOgorLy8gU0RQIHN0YW5kcyBmb3Ig
U2Vzc2lvbiBEZXNjcmlwdGlvbiBQcm90b2NvbCwgd2hpY2ggaXMgaW50ZW5kZWQgZm9yIGRlc2Ny
aWJpbmcKKy8vIG11bHRpbWVkaWEgc2Vzc2lvbnMgZm9yIHRoZSBwdXJwb3NlcyBvZiBzZXNzaW9u
IGFubm91bmNlbWVudCwgc2Vzc2lvbgorLy8gaW52aXRhdGlvbiwgYW5kIG90aGVyIGZvcm1zIG9m
IG11bHRpbWVkaWEgc2Vzc2lvbiBpbml0aWF0aW9uLgorLy8KKy8vIE1vcmUgaW5mb3JtYXRpb24g
Y2FuIGJlIGZvdW5kIGhlcmU6CisvLyBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM0NTY2
CisvLyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Nlc3Npb25fRGVzY3JpcHRpb25fUHJv
dG9jb2wKKworY2xhc3MgUGVlckNvbm5lY3Rpb24wMCA6IHB1YmxpYyBSZWZDb3VudGVkPFBlZXJD
b25uZWN0aW9uMDA+LCBwdWJsaWMgUGVlckNvbm5lY3Rpb24wMEhhbmRsZXJDbGllbnQsIHB1Ymxp
YyBFdmVudFRhcmdldCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CitwdWJsaWM6CisgICAgZW51
bSBSZWFkeVN0YXRlIHsKKyAgICAgICAgTkVXID0gMCwKKyAgICAgICAgTkVHT1RJQVRJTkcgPSAx
LAorICAgICAgICBBQ1RJVkUgPSAyLAorICAgICAgICBDTE9TRUQgPSAzCisgICAgfTsKKworICAg
IGVudW0gQWN0aW9uIHsKKyAgICAgICAgU0RQX09GRkVSID0gMHgxMDAsCisgICAgICAgIFNEUF9Q
UkFOU1dFUiA9IDB4MjAwLAorICAgICAgICBTRFBfQU5TV0VSID0gMHgzMDAKKyAgICB9OworCisg
ICAgZW51bSBJY2VTdGF0ZSB7CisgICAgICAgIElDRV9HQVRIRVJJTkcgPSAweDEwMCwKKyAgICAg
ICAgSUNFX1dBSVRJTkcgPSAweDIwMCwKKyAgICAgICAgSUNFX0NIRUNLSU5HID0gMHgzMDAsCisg
ICAgICAgIElDRV9DT05ORUNURUQgPSAweDQwMCwKKyAgICAgICAgSUNFX0NPTVBMRVRFRCA9IDB4
NTAwLAorICAgICAgICBJQ0VfRkFJTEVEID0gMHg2MDAsCisgICAgICAgIElDRV9DTE9TRUQgPSAw
eDcwMAorICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQZWVyQ29ubmVjdGlvbjAwPiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgc2VydmVyQ29uZmln
dXJhdGlvbiwgUGFzc1JlZlB0cjxJY2VDYWxsYmFjaz4pOworICAgIH5QZWVyQ29ubmVjdGlvbjAw
KCk7CisKKyAgICBQYXNzUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbj4gY3JlYXRlT2ZmZXIoKTsK
KyAgICBQYXNzUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbj4gY3JlYXRlT2ZmZXIoY29uc3QgU3Ry
aW5nJiBtZWRpYUhpbnRzKTsKKyAgICBQYXNzUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbj4gY3Jl
YXRlQW5zd2VyKGNvbnN0IFN0cmluZyYgb2ZmZXIpOworICAgIFBhc3NSZWZQdHI8U2Vzc2lvbkRl
c2NyaXB0aW9uPiBjcmVhdGVBbnN3ZXIoY29uc3QgU3RyaW5nJiBvZmZlciwgY29uc3QgU3RyaW5n
JiBtZWRpYUhpbnRzKTsKKworICAgIHZvaWQgc2V0TG9jYWxEZXNjcmlwdGlvbihpbnQgYWN0aW9u
LCBQYXNzUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbj4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2
b2lkIHNldFJlbW90ZURlc2NyaXB0aW9uKGludCBhY3Rpb24sIFBhc3NSZWZQdHI8U2Vzc2lvbkRl
c2NyaXB0aW9uPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8U2Vzc2lvbkRlc2Ny
aXB0aW9uPiBsb2NhbERlc2NyaXB0aW9uKCk7CisgICAgUGFzc1JlZlB0cjxTZXNzaW9uRGVzY3Jp
cHRpb24+IHJlbW90ZURlc2NyaXB0aW9uKCk7CisKKyAgICB2b2lkIHN0YXJ0SWNlKEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICB2b2lkIHN0YXJ0SWNlKGNvbnN0IFN0cmluZyYgb3B0aW9ucywgRXhjZXB0
aW9uQ29kZSYpOworICAgIHZvaWQgcHJvY2Vzc0ljZU1lc3NhZ2UoUGFzc1JlZlB0cjxJY2VDYW5k
aWRhdGU+LCBFeGNlcHRpb25Db2RlJik7CisKKyAgICBJY2VTdGF0ZSBpY2VTdGF0ZSgpIGNvbnN0
OworICAgIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OworCisgICAgdm9pZCBhZGRTdHJl
YW0oY29uc3QgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2
b2lkIGFkZFN0cmVhbShjb25zdCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiwgY29uc3QgU3RyaW5n
JiBtZWRpYVN0cmVhbUhpbnRzLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCByZW1vdmVTdHJl
YW0oTWVkaWFTdHJlYW0qLCBFeGNlcHRpb25Db2RlJik7CisgICAgTWVkaWFTdHJlYW1MaXN0KiBs
b2NhbFN0cmVhbXMoKSBjb25zdDsKKyAgICBNZWRpYVN0cmVhbUxpc3QqIHJlbW90ZVN0cmVhbXMo
KSBjb25zdDsKKworICAgIHZvaWQgY2xvc2UoRXhjZXB0aW9uQ29kZSYpOworCisgICAgREVGSU5F
X0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjb25uZWN0aW5nKTsKKyAgICBERUZJTkVfQVRUUklC
VVRFX0VWRU5UX0xJU1RFTkVSKG9wZW4pOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElT
VEVORVIoc3RhdGVjaGFuZ2UpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIo
YWRkc3RyZWFtKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHJlbW92ZXN0
cmVhbSk7CisKKyAgICAvLyBQZWVyQ29ubmVjdGlvbjAwSGFuZGxlckNsaWVudAorICAgIHZpcnR1
YWwgdm9pZCBkaWRHZW5lcmF0ZUljZUNhbmRpZGF0ZShQYXNzUmVmUHRyPEljZUNhbmRpZGF0ZURl
c2NyaXB0b3I+LCBib29sIG1vcmVUb0ZvbGxvdykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGRpZENoYW5nZVJlYWR5U3RhdGUodWludDMyX3Qgc3RhdGUpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBkaWRDaGFuZ2VJY2VTdGF0ZSh1aW50MzJfdCBzdGF0ZSkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGRpZEFkZFJlbW90ZVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVz
Y3JpcHRvcj4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVSZW1vdGVTdHJl
YW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKikgT1ZFUlJJREU7CisKKyAgICAvLyBFdmVudFRhcmdl
dAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREU7CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QK
KyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURFOworCisgICAgdXNpbmcgUmVmQ291bnRl
ZDxQZWVyQ29ubmVjdGlvbjAwPjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8UGVlckNvbm5l
Y3Rpb24wMD46OmRlcmVmOworCitwcml2YXRlOgorICAgIFBlZXJDb25uZWN0aW9uMDAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgc2VydmVyQ29uZmlndXJhdGlvbiwgUGFz
c1JlZlB0cjxJY2VDYWxsYmFjaz4pOworCisgICAgLy8gRXZlbnRUYXJnZXQgaW1wbGVtZW50YXRp
b24uCisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpOworICAg
IHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lk
IGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0KKyAgICBFdmVudFRhcmdldERhdGEgbV9l
dmVudFRhcmdldERhdGE7CisKKyAgICB2b2lkIGNoYW5nZVJlYWR5U3RhdGUoUmVhZHlTdGF0ZSk7
CisgICAgdm9pZCBjaGFuZ2VJY2VTdGF0ZShJY2VTdGF0ZSk7CisgICAgYm9vbCBoYXNMb2NhbEF1
ZGlvVHJhY2soKTsKKyAgICBib29sIGhhc0xvY2FsVmlkZW9UcmFjaygpOworICAgIFBhc3NSZWZQ
dHI8TWVkaWFIaW50cz4gcGFyc2VNZWRpYUhpbnRzKGNvbnN0IFN0cmluZyYgbWVkaWFIaW50c1N0
cmluZyk7CisKKyAgICBSZWZQdHI8SWNlQ2FsbGJhY2s+IG1faWNlQ2FsbGJhY2s7CisKKyAgICBS
ZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsKKyAgICBJY2VTdGF0ZSBtX2ljZVN0YXRlOworCisgICAg
UmVmUHRyPE1lZGlhU3RyZWFtTGlzdD4gbV9sb2NhbFN0cmVhbXM7CisgICAgUmVmUHRyPE1lZGlh
U3RyZWFtTGlzdD4gbV9yZW1vdGVTdHJlYW1zOworCisgICAgT3duUHRyPFBlZXJDb25uZWN0aW9u
MDBIYW5kbGVyPiBtX3BlZXJIYW5kbGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIFBlZXJDb25uZWN0
aW9uMDBfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Q
ZWVyQ29ubmVjdGlvbjAwLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UGVlckNvbm5lY3Rpb24wMC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQyZTVhNjM2NWIxYzFmZWI3ODY4NWIz
YzBiNDYzMDM5YjY5ZThhNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24wMC5pZGwKQEAgLTAsMCArMSwxMTIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogICAgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCittb2R1bGUgcDJwIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFs
PU1FRElBX1NUUkVBTSwKKyAgICAgICAgQWN0aXZlRE9NT2JqZWN0LAorICAgICAgICBDb25zdHJ1
Y3RvcihpbiBET01TdHJpbmcgc2VydmVyQ29uZmlndXJhdGlvbiwgaW4gW0NhbGxiYWNrXSBJY2VD
YWxsYmFjayBpY2VDYWxsYmFjayksCisgICAgICAgIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsCisgICAgICAgIEV2ZW50VGFyZ2V0CisgICAgXSBQZWVyQ29ubmVjdGlvbjAwIHsKKyAg
ICAgICAgLy8gRklYTUU6IE1ha2UgbWVkaWFIaW50cyBhbiBvYmplY3QKKyAgICAgICAgU2Vzc2lv
bkRlc2NyaXB0aW9uIGNyZWF0ZU9mZmVyKGluIFtPcHRpb25hbF0gRE9NU3RyaW5nIG1lZGlhSGlu
dHMpOworCisgICAgICAgIC8vIEZJWE1FOiBNYWtlIG1lZGlhSGludHMgYW4gb2JqZWN0CisgICAg
ICAgIFNlc3Npb25EZXNjcmlwdGlvbiBjcmVhdGVBbnN3ZXIoaW4gRE9NU3RyaW5nIG9mZmVyLCBp
biBbT3B0aW9uYWxdIERPTVN0cmluZyBtZWRpYUhpbnRzKTsKKworICAgICAgICAvLyBBY3Rpb25z
LCBmb3Igc2V0TG9jYWxEZXNjcmlwdGlvbi9zZXRSZW1vdGVEZXNjcmlwdGlvbi4KKyAgICAgICAg
Y29uc3QgdW5zaWduZWQgc2hvcnQgU0RQX09GRkVSID0gMHgxMDA7CisgICAgICAgIGNvbnN0IHVu
c2lnbmVkIHNob3J0IFNEUF9QUkFOU1dFUiA9IDB4MjAwOworICAgICAgICBjb25zdCB1bnNpZ25l
ZCBzaG9ydCBTRFBfQU5TV0VSID0gMHgzMDA7CisKKyAgICAgICAgdm9pZCBzZXRMb2NhbERlc2Ny
aXB0aW9uKGluIHVuc2lnbmVkIHNob3J0IGFjdGlvbiwgaW4gU2Vzc2lvbkRlc2NyaXB0aW9uIGRl
c2MpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKworICAgICAgICB2b2lkIHNl
dFJlbW90ZURlc2NyaXB0aW9uKGluIHVuc2lnbmVkIHNob3J0IGFjdGlvbiwgaW4gU2Vzc2lvbkRl
c2NyaXB0aW9uIGRlc2MpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKworICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgU2Vzc2lvbkRlc2NyaXB0aW9uIGxvY2FsRGVzY3JpcHRp
b247CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNlc3Npb25EZXNjcmlwdGlvbiByZW1v
dGVEZXNjcmlwdGlvbjsKKworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBORVcgPSAwOwor
ICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBORUdPVElBVElORyA9IDE7CisgICAgICAgIGNv
bnN0IHVuc2lnbmVkIHNob3J0IEFDVElWRSA9IDI7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNo
b3J0IENMT1NFRCA9IDM7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9y
dCByZWFkeVN0YXRlOworCisgICAgICAgIC8vIEZJWE1FOiBNYWtlIGljZU9wdGlvbnMgYW4gb2Jq
ZWN0CisgICAgICAgIHZvaWQgc3RhcnRJY2UoaW4gW09wdGlvbmFsXSBET01TdHJpbmcgaWNlT3B0
aW9ucykKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworCisgICAgICAgIHZvaWQg
cHJvY2Vzc0ljZU1lc3NhZ2UoaW4gSWNlQ2FuZGlkYXRlIGNhbmRpZGF0ZSkKKyAgICAgICAgICAg
IHJhaXNlcyhET01FeGNlcHRpb24pOworCisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IElD
RV9HQVRIRVJJTkcgPSAweDEwMDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgSUNFX1dB
SVRJTkcgPSAweDIwMDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgSUNFX0NIRUNLSU5H
ID0gMHgzMDA7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IElDRV9DT05ORUNURUQgPSAw
eDQwMDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgSUNFX0NPTVBMRVRFRCA9IDB4NTAw
OworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBJQ0VfRkFJTEVEID0gMHg2MDA7CisgICAg
ICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IElDRV9DTE9TRUQgPSAweDcwMDsKKyAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IGljZVN0YXRlOworCisgICAgICAgIC8vIEZJ
WE1FOiBNYWtlIG1lZGlhU3RyZWFtSGludHMgYW4gb2JqZWN0CisgICAgICAgIFtTdHJpY3RUeXBl
Q2hlY2tpbmddIHZvaWQgYWRkU3RyZWFtKGluIE1lZGlhU3RyZWFtIHN0cmVhbSwgaW4gW09wdGlv
bmFsXSBET01TdHJpbmcgbWVkaWFTdHJlYW1IaW50cykKKyAgICAgICAgICAgIHJhaXNlcyhET01F
eGNlcHRpb24pOworICAgICAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIHJlbW92ZVN0cmVh
bShpbiBNZWRpYVN0cmVhbSBzdHJlYW0pCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9u
KTsKKworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFTdHJlYW1MaXN0IGxvY2FsU3Ry
ZWFtczsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhU3RyZWFtTGlzdCByZW1vdGVT
dHJlYW1zOworCisgICAgICAgIHZvaWQgY2xvc2UoKQorICAgICAgICAgICAgcmFpc2VzKERPTUV4
Y2VwdGlvbik7CisKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jb25uZWN0aW5n
OworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbm9wZW47CisgICAgICAgIGF0dHJp
YnV0ZSBFdmVudExpc3RlbmVyIG9uc3RhdGVjaGFuZ2U7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVu
dExpc3RlbmVyIG9uYWRkc3RyZWFtOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBv
bnJlbW92ZXN0cmVhbTsKKworICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKKyAgICAg
ICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAg
ICAgICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VD
YXB0dXJlKTsKKyAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2ZW50KQor
ICAgICAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKKyAgICB9OworCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlwdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlw
dGlvbi5jcHAKaW5kZXggMTg4YWVjZTM4MzdhMThmZDM2OTVmNjRiNDU0YmZiMzU2NzZkYTQ5My4u
OTgyNzA3YTlmN2Y1MGZlOWFmNjZlZmY2MTg3MWRlNmNkMzA4NjM4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TZXNzaW9uRGVzY3JpcHRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9u
LmNwcApAQCAtNDgsNiArNDgsNyBAQCBQYXNzUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbj4gU2Vz
c2lvbkRlc2NyaXB0aW9uOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBzZHApCiAKIFBhc3NSZWZQdHI8
U2Vzc2lvbkRlc2NyaXB0aW9uPiBTZXNzaW9uRGVzY3JpcHRpb246OmNyZWF0ZShQYXNzUmVmUHRy
PFNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I+IGRlc2NyaXB0b3IpCiB7CisgICAgQVNTRVJU
KCEhZGVzY3JpcHRvcik7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXNzaW9uRGVzY3JpcHRp
b24oZGVzY3JpcHRvcikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYjc0MWYxMGY1MGNhNTNj
YTIxOGMzNmNjMTQ1N2YyM2VmMjRlYTZlOC4uOGNjNjUyNTE1NzRlM2MwNDNmY2FmYmU3ZjcwNzli
ZWZhOGY5YTEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNzkwLDYgKzc5MCw3IEBACiAgICAgICAg
ICAgICAnTW9kdWxlcy9pbnRlbnRzL05hdmlnYXRvckludGVudHMuaWRsJywKICAgICAgICAgICAg
ICdNb2R1bGVzL21lZGlhc3RyZWFtL0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbi5pZGwnLAogICAg
ICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vRE9NV2luZG93TWVkaWFTdHJlYW0uaWRsJywK
KyAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL0ljZUNhbGxiYWNrLmlkbCcsCiAgICAg
ICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9JY2VDYW5kaWRhdGUuaWRsJywKICAgICAgICAg
ICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL0xvY2FsTWVkaWFTdHJlYW0uaWRsJywKICAgICAgICAg
ICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmlkbCcsCkBAIC04MDEsNiArODAy
LDcgQEAKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRp
YUVycm9yLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JV
c2VyTWVkaWFFcnJvckNhbGxiYWNrLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0
cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaWRsJywKKyAgICAgICAgICAg
ICdNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuaWRsJywKICAgICAgICAgICAg
ICdNb2R1bGVzL21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlwdGlvbi5pZGwnLAogICAgICAgICAg
ICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vU2lnbmFsaW5nQ2FsbGJhY2suaWRsJywKICAgICAgICAg
ICAgICdNb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dTcGVlY2guaWRsJywKQEAgLTE0NTksNiArMTQ2
MSw3IEBACiAgICAgICAgICAgICAnTW9kdWxlcy9pbnRlbnRzL05hdmlnYXRvckludGVudHMuaCcs
CiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9EZXByZWNhdGVkUGVlckNvbm5lY3Rp
b24uY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL0RlcHJlY2F0ZWRQZWVy
Q29ubmVjdGlvbi5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL0ljZUNhbGxi
YWNrLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vSWNlQ2FuZGlkYXRlLmNw
cCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9JY2VDYW5kaWRhdGUuaCcsCiAg
ICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmNwcCcsCkBA
IC0xNDgwLDYgKzE0ODMsOCBAQAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2
aWdhdG9yVXNlck1lZGlhRXJyb3IuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVh
bS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmgnLAogICAgICAgICAgICAgJ01vZHVs
ZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmgnLAorICAg
ICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24wMC5jcHAnLAorICAg
ICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24wMC5oJywKICAgICAg
ICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlwdGlvbi5jcHAnLAogICAg
ICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9uLmgnLAogICAg
ICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vU2lnbmFsaW5nQ2FsbGJhY2suaCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5oCmluZGV4IGYwMTU2NDZkZmYzOTA5NWI5NGQzZWUxYjZkYzM1NzM1Y2VlMWUxYzUu
LmFlYWI1ZTQzOWY3NTE4MGNhNmVlOTVkNGQzZjZmM2JjNDYyY2VjZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5oCkBAIC0xODcsNiArMTg3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHdlYmtpdEdl
dFVzZXJNZWRpYUVuYWJsZWQoKSB7IHJldHVybiBpc01lZGlhU3RyZWFtRW5hYmxlZDsgfQogICAg
IHN0YXRpYyBib29sIHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkVuYWJsZWQoKSB7IHJl
dHVybiBpc01lZGlhU3RyZWFtRW5hYmxlZDsgfQogICAgIHN0YXRpYyBib29sIHdlYmtpdE1lZGlh
U3RyZWFtRW5hYmxlZCgpIHsgcmV0dXJuIGlzTWVkaWFTdHJlYW1FbmFibGVkOyB9CisgICAgc3Rh
dGljIGJvb2wgd2Via2l0UGVlckNvbm5lY3Rpb24wMEVuYWJsZWQoKSB7IHJldHVybiBpc01lZGlh
U3RyZWFtRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXgg
YjBiZjY3YWI2MGQ5YjI2Y2U4YWU2MTJjYmQwYTBkYzNmYjlkOWUzMy4uZjZlNDg2Y2NmNjk3YmU0
N2YyYjg4NzUwZmRjN2JmNjJhNmI5NDgzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTI3MTUsNiArMjcxNSw4IEBAIHN1
YiBHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICBteSAkcGFy
YW1OYW1lID0gJHBhcmFtLT5uYW1lOwogICAgICAgICAgICAgICAgIGlmICgkcGFyYW0tPnR5cGUg
ZXEgIkRPTVN0cmluZyIpIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgYXJncy5hcHBlbmQoanNTdHJpbmcoZXhlYywgJHtwYXJhbU5hbWV9KSk7XG4iKTsKKyAg
ICAgICAgICAgICAgICB9IGVsc2lmICgkcGFyYW0tPnR5cGUgZXEgImJvb2xlYW4iKSB7CisgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGFyZ3MuYXBwZW5kKGpzQm9v
bGVhbigke3BhcmFtTmFtZX0pKTtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGFyZ3MuYXBwZW5kKHRvSlMo
ZXhlYywgbV9kYXRhLT5nbG9iYWxPYmplY3QoKSwgJHtwYXJhbU5hbWV9KSk7XG4iKTsKICAgICAg
ICAgICAgICAgICB9CkBAIC0zNTY3LDcgKzM1NjksNyBAQCBFTkQKICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtjb25zdHJ1Y3Rv
ckNsYXNzTmFtZX06OmNvbnN0cnVjdCR7Y2xhc3NOYW1lfShFeGVjU3RhdGUqIGV4ZWMpXG4iKTsK
ICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwogCi0gICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0qIGpzQ29uc3Ry
dWN0b3IgPSBzdGF0aWNfY2FzdDwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSo+KGV4ZWMtPmNhbGxl
ZSgpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICR7Y29uc3Ry
dWN0b3JDbGFzc05hbWV9KiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8JHtjb25zdHJ1Y3RvckNs
YXNzTmFtZX0qPihleGVjLT5jYWxsZWUoKSk7XG4iKTsKIAogICAgICAgICAgICAgbXkgJGZ1bmN0
aW9uID0gJGRhdGFOb2RlLT5jb25zdHJ1Y3RvcjsKICAgICAgICAgICAgIG15IEBjb25zdHJ1Y3Rv
ckFyZ0xpc3Q7CkBAIC0zNTg5LDEyICszNTkxLDEyIEBAIEVORAogCiAgICAgICAgICAgICBpZiAo
JGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifSwgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiKSkg
ewogICAgICAgICAgICAgICAgIHB1c2goQGNvbnN0cnVjdG9yQXJnTGlzdCwgImNvbnRleHQiKTsK
LSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCA9IGpzQ29uc3RydWN0b3ItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gY2FzdGVkVGhpcy0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlm
ICghY29udGV4dClcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVj
LCBcIiR7aW50ZXJmYWNlTmFtZX0gY29uc3RydWN0b3IgYXNzb2NpYXRlZCBkb2N1bWVudCBpcyB1
bmF2YWlsYWJsZVwiKSk7XG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICgkZ2Vu
ZXJhdGluZ05hbWVkQ29uc3RydWN0b3IpIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBjb25zdHJ1
Y3RvckFyZ0xpc3QsICJqc0NvbnN0cnVjdG9yLT5kb2N1bWVudCgpIik7CisgICAgICAgICAgICAg
ICAgcHVzaChAY29uc3RydWN0b3JBcmdMaXN0LCAiY2FzdGVkVGhpcy0+ZG9jdW1lbnQoKSIpOwog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBteSAkaW5kZXggPSAwOwpAQCAtMzYyMSw3ICsz
NjIzLDcgQEAgRU5ECiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1c
biIpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGpzQ29uc3RydWN0
b3ItPmdsb2JhbE9iamVjdCgpLCBvYmplY3QuZ2V0KCkpKSk7XG4iKTsKKyAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRv
SlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIG9iamVjdC5nZXQoKSkpKTtcbiIp
OwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKICAgICAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRleCBkOTk4YjQ2ZTdh
MzFlNzhkODA3YzcxOTE0MjYwMjNkYzY1NGI0ZmRkLi4yODBkMzk0ZjMyNTlmOGE5YmNhMTJiOGE1
ZGJkZmZlNzNkMmZjODVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJn
ZXRGYWN0b3J5LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rvcnku
aW4KQEAgLTIwLDYgKzIwLDcgQEAgTWVkaWFTdHJlYW0gY29uZGl0aW9uYWw9TUVESUFfU1RSRUFN
CiBNZXNzYWdlUG9ydAogTm9kZQogTm90aWZpY2F0aW9uIGNvbmRpdGlvbmFsPU5PVElGSUNBVElP
TlN8TEVHQUNZX05PVElGSUNBVElPTlMKK1BlZXJDb25uZWN0aW9uMDAgY29uZGl0aW9uYWw9TUVE
SUFfU1RSRUFNCiBTaGFyZWRXb3JrZXIgY29uZGl0aW9uYWw9U0hBUkVEX1dPUktFUlMKIFNoYXJl
ZFdvcmtlckNvbnRleHQgY29uZGl0aW9uYWw9U0hBUkVEX1dPUktFUlMKIFNwZWVjaFJlY29nbml0
aW9uIGNvbmRpdGlvbmFsPVNDUklQVEVEX1NQRUVDSAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133475</attachid>
            <date>2012-03-23 06:55:10 -0700</date>
            <delta_ts>2012-03-28 07:50:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81657-20120323145508.patch</filename>
            <type>text/plain</type>
            <size>42302</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExODU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmY5NDQ2Y2QzZWE4OWRj
ZjcyNThjYTZkN2RhYjVlNDBhZGJjNTE3OC4uMzZiYjVkMTI5ZWU2ODg2MzE2ODZiNTYzOTk2N2Yx
ZWVjMjE5YTA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEyLTAzLTIwICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSSAoSlNFUCk6IEludHJvZHVjaW5nIFBlZXJDb25uZWN0aW9uMDAgYW5kIEljZUNhbGxiYWNr
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTY1Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExhc3QgbWFq
b3IgV2ViQ29yZSBwYXRjaCBmb3IgdGhlIEpTRVAgUGVlckNvbm5lY3Rpb24sIHRvZ2V0aGVyIHdp
dGggdGhlIGFzc29jaWF0ZWQKKyAgICAgICAgSWNlQ2FsbGJhY2sgKHRoZXkgYm90aCBkZXBlbmQg
b24gZWFjaCBvdGhlciBhbmQgSWNlQ2FsbGJhY2sgaGFzIHZlcnkgZmV3IGxpbmVzIG9mIHJlYWwg
Y29kZSkuCisKKyAgICAgICAgTXkgbmV4dCBwYXRjaCBhZnRlciB0aGlzIG9uZSB3aWxsIGRvIGEg
bWFqb3Igb3ZlcmhhdWwgb2YgdGhlIGV4aXN0aW5nIGxheW91dCB0ZXN0cworICAgICAgICBhbmQg
YWRkIGEgZmV3IG5ldyBvbmVzLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0RPTVdpbmRvd01lZGlhU3RyZWFtLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0ljZUNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChJY2VDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpJ
Y2VDYWxsYmFjazo6fkljZUNhbGxiYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L0ljZUNhbGxiYWNrLmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Q
ZWVyQ29ubmVjdGlvbjAwLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uMDA6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyQ29ubmVjdGlvbjAwOjpQZWVyQ29ubmVjdGlvbjAwKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uMDA6On5QZWVyQ29ubmVjdGlvbjAwKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uMDA6Omhhc0xvY2FsQXVkaW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyQ29ubmVjdGlvbjAwOjpoYXNMb2NhbFZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
UGVlckNvbm5lY3Rpb24wMDo6cGFyc2VNZWRpYUhpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uMDA6OmNyZWF0ZU9mZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25u
ZWN0aW9uMDA6OmNyZWF0ZUFuc3dlcik6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlv
bjAwOjpzZXRMb2NhbERlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0
aW9uMDA6OnNldFJlbW90ZURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25u
ZWN0aW9uMDA6OmxvY2FsRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5l
Y3Rpb24wMDo6cmVtb3RlRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5l
Y3Rpb24wMDo6c3RhcnRJY2UpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb24wMDo6
cHJvY2Vzc0ljZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb24wMDo6
cmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjAwOjppY2VTdGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjAwOjphZGRTdHJlYW0pOgorICAg
ICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb24wMDo6cmVtb3ZlU3RyZWFtKToKKyAgICAgICAg
KFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uMDA6OmxvY2FsU3RyZWFtcyk6CisgICAgICAgIChXZWJD
b3JlOjpQZWVyQ29ubmVjdGlvbjAwOjpyZW1vdGVTdHJlYW1zKToKKyAgICAgICAgKFdlYkNvcmU6
OlBlZXJDb25uZWN0aW9uMDA6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0
aW9uMDA6OmRpZEdlbmVyYXRlSWNlQ2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJD
b25uZWN0aW9uMDA6OmRpZENoYW5nZVJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGVl
ckNvbm5lY3Rpb24wMDo6ZGlkQ2hhbmdlSWNlU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGVl
ckNvbm5lY3Rpb24wMDo6ZGlkQWRkUmVtb3RlU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uMDA6OmRpZFJlbW92ZVJlbW90ZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3Jl
OjpQZWVyQ29ubmVjdGlvbjAwOjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uMDA6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGVlckNvbm5lY3Rpb24wMDo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVj
dGlvbjAwOjpldmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rp
b24wMDo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25u
ZWN0aW9uMDA6OmNoYW5nZVJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5l
Y3Rpb24wMDo6Y2hhbmdlSWNlU3RhdGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UGVlckNvbm5lY3Rpb24wMC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
UGVlckNvbm5lY3Rpb24wMCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjAwOjpy
ZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjAwOjpkZXJl
ZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0
aW9uMDAuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYmlu
ZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRQZWVyQ29ubmVjdGlvbjAwRW5hYmxlZCk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNQZWVyQ29ubmVjdGlvbjAwQ3VzdG9tLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTUGVlckNvbm5lY3Rp
b24wMENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1BlZXJDb25uZWN0aW9uMDApOgorICAgICAgICAq
IGRvbS9FdmVudFRhcmdldEZhY3RvcnkuaW46CisKIDIwMTItMDMtMjMgIFRvbW15IFdpZGVuZmx5
Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CiAKICAgICAgICAgVGhlIEpTQyBjb2RlIGdlbmVyYXRv
ciBkb2Vzbid0IGdlbmVyYXRlIGNvcnJlY3QgY29kZSBmb3IgQ29uc3RydWN0b3JzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA5Y2U3ZTdkOTI5YWQ0ZWQ0MzA3NTIzZDU1NzJmN2U5
NzI0NDlmMWYwLi5lNWQwN2MwMTg1NWM2ZTM2Y2JhZDY5YzcyODM2NzFlOWExZDU2MjgwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTM0NCw2ICszNDQsOCBAQCB3ZWJjb3JlX2J1
aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MVUxpc3RFbGVt
ZW50LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MVmlkZW9FbGVtZW50LmNwcCBc
CiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxWaWRlb0VsZW1lbnQuaCBcCisJRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0ljZUNhbGxiYWNrLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0ljZUNhbGxiYWNrLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJY2VDYW5k
aWRhdGUuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSWNlQ2FuZGlkYXRlLmggXAog
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJbWFnZURhdGEuY3BwIFwKQEAgLTQzNiw2ICs0Mzgs
OCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNPdmVyZmxvd0V2ZW50LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQYWdlVHJhbnNp
dGlvbkV2ZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BhZ2VUcmFuc2l0aW9u
RXZlbnQuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BlZXJDb25uZWN0aW9uMDAuY3Bw
IFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGVlckNvbm5lY3Rpb24wMC5oIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTUGVyZm9ybWFuY2UuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTUGVyZm9ybWFuY2UuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BlcmZv
cm1hbmNlTmF2aWdhdGlvbi5jcHAgXApAQCAtNjY0LDYgKzY2OCw3IEBAIGRvbV9iaW5kaW5nX2lk
bHMgKz0gXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9nZW9sb2NhdGlvbi9Qb3NpdGlvbkVycm9yQ2Fs
bGJhY2suaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vRGVwcmVjYXRlZFBl
ZXJDb25uZWN0aW9uLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RPTVdp
bmRvd01lZGlhU3RyZWFtLmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL0lj
ZUNhbGxiYWNrLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL0ljZUNhbmRp
ZGF0ZS5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3Ry
ZWFtLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmlk
bCBcCkBAIC02NzUsNiArNjgwLDcgQEAgZG9tX2JpbmRpbmdfaWRscyArPSBcCiAJJChXZWJDb3Jl
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmlkbCBcCiAJJChX
ZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJh
Y2suaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1l
ZGlhU3VjY2Vzc0NhbGxiYWNrLmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1BlZXJDb25uZWN0aW9uMDAuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0v
U2Vzc2lvbkRlc2NyaXB0aW9uLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1NpZ25hbGluZ0NhbGxiYWNrLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5pZGwgXApAQCAtMTA5Nyw2ICsxMTAzLDcgQEAgd2ViY29yZV9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJDb250ZXh0SW5kZXhl
ZERhdGFiYXNlLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vRGVwcmVj
YXRlZFBlZXJDb25uZWN0aW9uLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb24uaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9JY2VDYWxsYmFjay5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL0ljZUNhbmRpZGF0ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vSWNlQ2FuZGlkYXRlLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5jcHAgXApAQCAtMTExOCw2ICsxMTI1LDggQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmln
YXRvclVzZXJNZWRpYUVycm9yLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5oIFwKIAlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAu
aCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TZXNzaW9uRGVzY3JpcHRp
b24uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Nlc3Npb25EZXNj
cmlwdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1NpZ25hbGlu
Z0NhbGxiYWNrLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9ET01XaW5kb3dNZWRpYVN0cmVhbS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL0RPTVdpbmRvd01lZGlhU3RyZWFtLmlkbAppbmRleCA5Mzk1ZTNhYzM1YTZlNmY5
MWMyMjI0MWM5MzBjNWZmYmI1MjU1ODg1Li45NzBkMTA2NDQzMTVhYzE3MTNkNjgwMDYyZjhhOTMx
MThhZjEzOTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L0RPTVdpbmRvd01lZGlhU3RyZWFtLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL0RPTVdpbmRvd01lZGlhU3RyZWFtLmlkbApAQCAtMSw2ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNiArMzIs
OSBAQCBtb2R1bGUgd2luZG93IHsKICAgICBdIERPTVdpbmRvd01lZGlhU3RyZWFtIHsKICAgICAg
ICAgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWVdIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlv
bkNvbnN0cnVjdG9yIHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbjsKICAgICAgICAgYXR0
cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWVdIE1lZGlhU3RyZWFtQ29uc3RydWN0b3Igd2Via2l0
TWVkaWFTdHJlYW07CisgICAgICAgIGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lXSBQZWVy
Q29ubmVjdGlvbjAwQ29uc3RydWN0b3Igd2Via2l0UGVlckNvbm5lY3Rpb24wMDsKKyAgICAgICAg
YXR0cmlidXRlIFNlc3Npb25EZXNjcmlwdGlvbkNvbnN0cnVjdG9yIFNlc3Npb25EZXNjcmlwdGlv
bjsKKyAgICAgICAgYXR0cmlidXRlIEljZUNhbmRpZGF0ZUNvbnN0cnVjdG9yIEljZUNhbmRpZGF0
ZTsKICAgICAgICAgYXR0cmlidXRlIE1lZGlhU3RyZWFtRXZlbnRDb25zdHJ1Y3RvciBNZWRpYVN0
cmVhbUV2ZW50OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vSWNlQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vSWNlQ2FsbGJhY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOWJiNTIwYmM3ZmJiYWMwNDNjYzkxOWE1
OWU5OGUwODdmMGM0NzVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9JY2VDYWxsYmFjay5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlz
dHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEljZUNhbGxiYWNrX2gKKyNkZWZpbmUgSWNlQ2FsbGJhY2tfaAorCisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgSWNlQ2FuZGlkYXRlOworY2xhc3MgUGVlckNvbm5lY3Rpb24wMDsK
KworY2xhc3MgSWNlQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxJY2VDYWxsYmFjaz4gewor
cHVibGljOgorICAgIHZpcnR1YWwgfkljZUNhbGxiYWNrKCkgeyB9CisgICAgdmlydHVhbCBib29s
IGhhbmRsZUV2ZW50KEljZUNhbmRpZGF0ZSosIGJvb2wgbW9yZVRvRm9sbG93LCBQZWVyQ29ubmVj
dGlvbjAwKikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIEljZUNhbGxiYWNrX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vSWNlQ2FsbGJhY2suaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9JY2VDYWxsYmFjay5pZGwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjlkNjQ2ZjIwM2EyMmNmNGYyNzQ4ZjZhZGY5ZjFhNGYyN2MxNzA5YgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vSWNlQ2FsbGJhY2su
aWRsCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRv
cnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgcDJwIHsKKworICAgIGludGVyZmFj
ZSBbCisgICAgICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKKyAgICAgICAgQ2FsbGJhY2sK
KyAgICBdIEljZUNhbGxiYWNrIHsKKyAgICAgICAgYm9vbGVhbiBoYW5kbGVFdmVudChpbiBJY2VD
YW5kaWRhdGUgY2FuZGlkYXRlLCBpbiBib29sZWFuIG1vcmVUb0ZvbGxvdywgaW4gUGVlckNvbm5l
Y3Rpb24wMCBzb3VyY2UpOworICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24wMC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgw
NjU5ZGE0M2FiOTQ2MzZlMmM5ZTk3ZDExZjRiMDkyZjQyNTgwNzYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuY3Bw
CkBAIC0wLDAgKzEsNDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3Jz
CisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlBlZXJDb25uZWN0aW9uMDAuaCIKKworI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJJY2VDYWxsYmFjay5oIgorI2luY2x1
ZGUgIkljZUNhbmRpZGF0ZS5oIgorI2luY2x1ZGUgIkljZUNhbmRpZGF0ZURlc2NyaXB0b3IuaCIK
KyNpbmNsdWRlICJJY2VPcHRpb25zLmgiCisjaW5jbHVkZSAiTWVkaWFIaW50cy5oIgorI2luY2x1
ZGUgIk1lZGlhU3RyZWFtRXZlbnQuaCIKKyNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKKyNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKKyNpbmNsdWRlICJTZXNzaW9uRGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJTZXNzaW9uRGVz
Y3JpcHRpb25EZXNjcmlwdG9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0
cjxQZWVyQ29ubmVjdGlvbjAwPiBQZWVyQ29ubmVjdGlvbjAwOjpjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBzZXJ2ZXJDb25maWd1cmF0aW9uLCBQ
YXNzUmVmUHRyPEljZUNhbGxiYWNrPiBpY2VDYWxsYmFjaykKK3sKKyAgICBSZWZQdHI8UGVlckNv
bm5lY3Rpb24wMD4gcGVlckNvbm5lY3Rpb24gPSBhZG9wdFJlZihuZXcgUGVlckNvbm5lY3Rpb24w
MChjb250ZXh0LCBzZXJ2ZXJDb25maWd1cmF0aW9uLCBpY2VDYWxsYmFjaykpOworICAgIHBlZXJD
b25uZWN0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24u
cmVsZWFzZSgpOworfQorCitQZWVyQ29ubmVjdGlvbjAwOjpQZWVyQ29ubmVjdGlvbjAwKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgc2VydmVyQ29uZmlndXJh
dGlvbiwgUGFzc1JlZlB0cjxJY2VDYWxsYmFjaz4gaWNlQ2FsbGJhY2spCisgICAgOiBBY3RpdmVE
T01PYmplY3QoY29udGV4dCwgdGhpcykKKyAgICAsIG1faWNlQ2FsbGJhY2soaWNlQ2FsbGJhY2sp
CisgICAgLCBtX3JlYWR5U3RhdGUoTkVXKQorICAgICwgbV9pY2VTdGF0ZShJQ0VfQ0xPU0VEKQor
ICAgICwgbV9sb2NhbFN0cmVhbXMoTWVkaWFTdHJlYW1MaXN0OjpjcmVhdGUoKSkKKyAgICAsIG1f
cmVtb3RlU3RyZWFtcyhNZWRpYVN0cmVhbUxpc3Q6OmNyZWF0ZSgpKQorICAgICwgbV9wZWVySGFu
ZGxlcihQZWVyQ29ubmVjdGlvbjAwSGFuZGxlcjo6Y3JlYXRlKHRoaXMsIHNlcnZlckNvbmZpZ3Vy
YXRpb24sIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkpKQoreworfQorCitQ
ZWVyQ29ubmVjdGlvbjAwOjp+UGVlckNvbm5lY3Rpb24wMCgpCit7Cit9CisKK2Jvb2wgUGVlckNv
bm5lY3Rpb24wMDo6aGFzTG9jYWxBdWRpb1RyYWNrKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fbG9jYWxTdHJlYW1zLT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIE1lZGlhU3Ry
ZWFtKiBjdXJyID0gbV9sb2NhbFN0cmVhbXMtPml0ZW0oaSk7CisgICAgICAgIGlmIChjdXJyLT5h
dWRpb1RyYWNrcygpLT5sZW5ndGgoKSA+IDApCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFBlZXJDb25uZWN0aW9uMDA6Omhhc0xv
Y2FsVmlkZW9UcmFjaygpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xvY2FsU3Ry
ZWFtcy0+bGVuZ3RoKCk7ICsraSkgeworICAgICAgICBNZWRpYVN0cmVhbSogY3VyciA9IG1fbG9j
YWxTdHJlYW1zLT5pdGVtKGkpOworICAgICAgICBpZiAoY3Vyci0+dmlkZW9UcmFja3MoKS0+bGVu
Z3RoKCkgPiAwKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBm
YWxzZTsKK30KKworUGFzc1JlZlB0cjxNZWRpYUhpbnRzPiBQZWVyQ29ubmVjdGlvbjAwOjpwYXJz
ZU1lZGlhSGludHMoY29uc3QgU3RyaW5nJiBtZWRpYUhpbnRzKQoreworICAgIFZlY3RvcjxTdHJp
bmc+IGhpbnRzTGlzdDsKKyAgICBtZWRpYUhpbnRzLnNwbGl0KCIsIiwgaGludHNMaXN0KTsKKyAg
ICBib29sIGF1ZGlvID0gaGFzTG9jYWxBdWRpb1RyYWNrKCk7CisgICAgYm9vbCB2aWRlbyA9IGhh
c0xvY2FsVmlkZW9UcmFjaygpOworICAgIGZvciAoVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIGkg
PSBoaW50c0xpc3QuYmVnaW4oKTsgaSAhPSBoaW50c0xpc3QuZW5kKCk7ICsraSkgeworICAgICAg
ICBpZiAoKmkgPT0gImF1ZGlvIikKKyAgICAgICAgICAgIGF1ZGlvID0gdHJ1ZTsKKyAgICAgICAg
ZWxzZSBpZiAoKmkgPT0gIm5vX2F1ZGlvIikKKyAgICAgICAgICAgIGF1ZGlvID0gZmFsc2U7Cisg
ICAgICAgIGVsc2UgaWYgKCppID09ICJ2aWRlbyIpCisgICAgICAgICAgICB2aWRlbyA9IHRydWU7
CisgICAgICAgIGVsc2UgaWYgKCppID09ICJub192aWRlbyIpCisgICAgICAgICAgICB2aWRlbyA9
IGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBNZWRpYUhpbnRzOjpjcmVhdGUoYXVkaW8sIHZp
ZGVvKTsKK30KKworUGFzc1JlZlB0cjxTZXNzaW9uRGVzY3JpcHRpb24+IFBlZXJDb25uZWN0aW9u
MDA6OmNyZWF0ZU9mZmVyKCkKK3sKKyAgICByZXR1cm4gY3JlYXRlT2ZmZXIoIiIpOworfQorCitQ
YXNzUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbj4gUGVlckNvbm5lY3Rpb24wMDo6Y3JlYXRlT2Zm
ZXIoY29uc3QgU3RyaW5nJiBtZWRpYUhpbnRzU3RyaW5nKQoreworICAgIFJlZlB0cjxNZWRpYUhp
bnRzPiBtZWRpYUhpbnRzID0gcGFyc2VNZWRpYUhpbnRzKG1lZGlhSGludHNTdHJpbmcpOworICAg
IFJlZlB0cjxTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yPiBkZXNjcmlwdG9yID0gbV9wZWVy
SGFuZGxlci0+Y3JlYXRlT2ZmZXIobWVkaWFIaW50cy5yZWxlYXNlKCkpOworICAgIGlmICghZGVz
Y3JpcHRvcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gU2Vzc2lvbkRlc2NyaXB0
aW9uOjpjcmVhdGUoZGVzY3JpcHRvcik7Cit9CisKK1Bhc3NSZWZQdHI8U2Vzc2lvbkRlc2NyaXB0
aW9uPiBQZWVyQ29ubmVjdGlvbjAwOjpjcmVhdGVBbnN3ZXIoY29uc3QgU3RyaW5nJiBvZmZlcikK
K3sKKyAgICByZXR1cm4gY3JlYXRlQW5zd2VyKG9mZmVyLCAiIik7Cit9CisKK1Bhc3NSZWZQdHI8
U2Vzc2lvbkRlc2NyaXB0aW9uPiBQZWVyQ29ubmVjdGlvbjAwOjpjcmVhdGVBbnN3ZXIoY29uc3Qg
U3RyaW5nJiBvZmZlciwgY29uc3QgU3RyaW5nJiBtZWRpYUhpbnRzU3RyaW5nKQoreworICAgIFJl
ZlB0cjxNZWRpYUhpbnRzPiBtZWRpYUhpbnRzID0gcGFyc2VNZWRpYUhpbnRzKG1lZGlhSGludHNT
dHJpbmcpOworICAgIFJlZlB0cjxTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yPiBkZXNjcmlw
dG9yID0gbV9wZWVySGFuZGxlci0+Y3JlYXRlQW5zd2VyKG9mZmVyLCBtZWRpYUhpbnRzLnJlbGVh
c2UoKSk7CisgICAgaWYgKCFkZXNjcmlwdG9yKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJl
dHVybiBTZXNzaW9uRGVzY3JpcHRpb246OmNyZWF0ZShkZXNjcmlwdG9yKTsKK30KKwordm9pZCBQ
ZWVyQ29ubmVjdGlvbjAwOjpzZXRMb2NhbERlc2NyaXB0aW9uKGludCBhY3Rpb24sIFBhc3NSZWZQ
dHI8U2Vzc2lvbkRlc2NyaXB0aW9uPiBzZXNzaW9uRGVzY3JpcHRpb24sIEV4Y2VwdGlvbkNvZGUm
IGVjKQoreworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VEKSB7CisgICAgICAgIGVjID0g
SU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzd2l0Y2gg
KGFjdGlvbikgeworICAgIGNhc2UgU0RQX09GRkVSOgorICAgIGNhc2UgU0RQX1BSQU5TV0VSOgor
ICAgIGNhc2UgU0RQX0FOU1dFUjoKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFz
ZXNzaW9uRGVzY3JpcHRpb24pIHsKKyAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGJvb2wgdmFsaWQgPSBtX3BlZXJIYW5kbGVyLT5z
ZXRMb2NhbERlc2NyaXB0aW9uKGFjdGlvbiwgc2Vzc2lvbkRlc2NyaXB0aW9uLT5kZXNjcmlwdG9y
KCkpOworICAgIGlmICghdmFsaWQpCisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKK30KKwordm9p
ZCBQZWVyQ29ubmVjdGlvbjAwOjpzZXRSZW1vdGVEZXNjcmlwdGlvbihpbnQgYWN0aW9uLCBQYXNz
UmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbj4gc2Vzc2lvbkRlc2NyaXB0aW9uLCBFeGNlcHRpb25D
b2RlJiBlYykKK3sKKyAgICBpZiAobV9yZWFkeVN0YXRlID09IENMT1NFRCkgeworICAgICAgICBl
YyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3dp
dGNoIChhY3Rpb24pIHsKKyAgICBjYXNlIFNEUF9PRkZFUjoKKyAgICBjYXNlIFNEUF9QUkFOU1dF
UjoKKyAgICBjYXNlIFNEUF9BTlNXRVI6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
ICghc2Vzc2lvbkRlc2NyaXB0aW9uKSB7CisgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBib29sIHZhbGlkID0gbV9wZWVySGFuZGxl
ci0+c2V0UmVtb3RlRGVzY3JpcHRpb24oYWN0aW9uLCBzZXNzaW9uRGVzY3JpcHRpb24tPmRlc2Ny
aXB0b3IoKSk7CisgICAgaWYgKCF2YWxpZCkKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworfQor
CitQYXNzUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbj4gUGVlckNvbm5lY3Rpb24wMDo6bG9jYWxE
ZXNjcmlwdGlvbigpCit7CisgICAgUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I+
IGRlc2NyaXB0b3IgPSBtX3BlZXJIYW5kbGVyLT5sb2NhbERlc2NyaXB0aW9uKCk7CisgICAgaWYg
KCFkZXNjcmlwdG9yKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxTZXNzaW9uRGVz
Y3JpcHRpb24+IGRlc2MgPSBTZXNzaW9uRGVzY3JpcHRpb246OmNyZWF0ZShkZXNjcmlwdG9yLnJl
bGVhc2UoKSk7CisgICAgcmV0dXJuIGRlc2MucmVsZWFzZSgpOworfQorCitQYXNzUmVmUHRyPFNl
c3Npb25EZXNjcmlwdGlvbj4gUGVlckNvbm5lY3Rpb24wMDo6cmVtb3RlRGVzY3JpcHRpb24oKQor
eworICAgIFJlZlB0cjxTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yPiBkZXNjcmlwdG9yID0g
bV9wZWVySGFuZGxlci0+cmVtb3RlRGVzY3JpcHRpb24oKTsKKyAgICBpZiAoIWRlc2NyaXB0b3Ip
CisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbj4gZGVz
YyA9IFNlc3Npb25EZXNjcmlwdGlvbjo6Y3JlYXRlKGRlc2NyaXB0b3IucmVsZWFzZSgpKTsKKyAg
ICByZXR1cm4gZGVzYy5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb24wMDo6c3Rh
cnRJY2UoRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgc3RhcnRJY2UoIiIsIGVjKTsKK30KKwor
dm9pZCBQZWVyQ29ubmVjdGlvbjAwOjpzdGFydEljZShjb25zdCBTdHJpbmcmIG9wdGlvbnMsIEV4
Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VEKSB7Cisg
ICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBJY2VPcHRpb25zOjpVc2VDYW5kaWRhdGVzT3B0aW9uIG9wdGlvbjsKKworICAgIGlmIChv
cHRpb25zID09ICIiIHx8IG9wdGlvbnMgPT0gImFsbCIpCisgICAgICAgIG9wdGlvbiA9IEljZU9w
dGlvbnM6OkFMTDsKKyAgICBlbHNlIGlmIChvcHRpb25zID09ICJub19yZWxheSIpCisgICAgICAg
IG9wdGlvbiA9IEljZU9wdGlvbnM6Ok5PX1JFTEFZOworICAgIGVsc2UgaWYgKG9wdGlvbnMgPT0g
Im9ubHlfcmVsYXkiKQorICAgICAgICBvcHRpb24gPSBJY2VPcHRpb25zOjpPTkxZX1JFTEFZOwor
ICAgIGVsc2UgeworICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgYm9vbCB2YWxpZCA9IG1fcGVlckhhbmRsZXItPnN0YXJ0SWNlKElj
ZU9wdGlvbnM6OmNyZWF0ZShvcHRpb24pKTsKKyAgICBpZiAoIXZhbGlkKQorICAgICAgICBlYyA9
IFNZTlRBWF9FUlI7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb24wMDo6cHJvY2Vzc0ljZU1lc3Nh
Z2UoUGFzc1JlZlB0cjxJY2VDYW5kaWRhdGU+IHBycEljZUNhbmRpZGF0ZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBDTE9TRUQpIHsKKyAgICAgICAgZWMg
PSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlZlB0
cjxJY2VDYW5kaWRhdGU+IGljZUNhbmRpZGF0ZSA9IHBycEljZUNhbmRpZGF0ZTsKKyAgICBpZiAo
IWljZUNhbmRpZGF0ZSkgeworICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgYm9vbCB2YWxpZCA9IG1fcGVlckhhbmRsZXItPnByb2Nl
c3NJY2VNZXNzYWdlKGljZUNhbmRpZGF0ZS0+ZGVzY3JpcHRvcigpKTsKKyAgICBpZiAoIXZhbGlk
KQorICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Cit9CisKK1BlZXJDb25uZWN0aW9uMDA6OlJlYWR5
U3RhdGUgUGVlckNvbm5lY3Rpb24wMDo6cmVhZHlTdGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fcmVhZHlTdGF0ZTsKK30KKworUGVlckNvbm5lY3Rpb24wMDo6SWNlU3RhdGUgUGVlckNvbm5l
Y3Rpb24wMDo6aWNlU3RhdGUoKSBjb25zdAoreworICAgIHJldHVybiBtX2ljZVN0YXRlOworfQor
Cit2b2lkIFBlZXJDb25uZWN0aW9uMDA6OmFkZFN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
PiBzdHJlYW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIFN0cmluZyBlbXB0eUhpbnRzOwor
ICAgIHJldHVybiBhZGRTdHJlYW0oc3RyZWFtLCBlbXB0eUhpbnRzLCBlYyk7Cit9CisKK3ZvaWQg
UGVlckNvbm5lY3Rpb24wMDo6YWRkU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IHBycFN0
cmVhbSwgY29uc3QgU3RyaW5nJiBtZWRpYVN0cmVhbUhpbnRzLCBFeGNlcHRpb25Db2RlJiBlYykK
K3sKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW0+IHN0cmVhbSA9IHBycFN0cmVhbTsKKyAgICBpZiAo
IXN0cmVhbSkgeworICAgICAgICBlYyA9ICBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VEKSB7CisgICAgICAg
IGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAobV9sb2NhbFN0cmVhbXMtPmNvbnRhaW5zKHN0cmVhbS5nZXQoKSkpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fbG9jYWxTdHJlYW1zLT5hcHBlbmQoc3RyZWFtKTsKKworICAgIC8vIEZJWE1F
OiBXaGVuIHRoZSBzcGVjIHNheXMgd2hhdCB0aGUgbWVkaWFTdHJlYW1IaW50cyBzaG91bGQgbG9v
ayBsaWtlIHNlbmQgaXQgZG93bi4KKyAgICBtX3BlZXJIYW5kbGVyLT5hZGRTdHJlYW0oc3RyZWFt
LT5kZXNjcmlwdG9yKCkpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uMDA6OnJlbW92ZVN0cmVh
bShNZWRpYVN0cmVhbSogc3RyZWFtLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAobV9y
ZWFkeVN0YXRlID09IENMT1NFRCkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFzdHJlYW0pIHsKKyAgICAgICAgZWMg
PSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICgh
bV9sb2NhbFN0cmVhbXMtPmNvbnRhaW5zKHN0cmVhbSkpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fbG9jYWxTdHJlYW1zLT5yZW1vdmUoc3RyZWFtKTsKKworICAgIG1fcGVlckhhbmRsZXItPnJl
bW92ZVN0cmVhbShzdHJlYW0tPmRlc2NyaXB0b3IoKSk7Cit9CisKK01lZGlhU3RyZWFtTGlzdCog
UGVlckNvbm5lY3Rpb24wMDo6bG9jYWxTdHJlYW1zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9s
b2NhbFN0cmVhbXMuZ2V0KCk7Cit9CisKK01lZGlhU3RyZWFtTGlzdCogUGVlckNvbm5lY3Rpb24w
MDo6cmVtb3RlU3RyZWFtcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVtb3RlU3RyZWFtcy5n
ZXQoKTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjAwOjpjbG9zZShFeGNlcHRpb25Db2RlJiBl
YykKK3sKKyAgICBpZiAobV9yZWFkeVN0YXRlID09IENMT1NFRCkgeworICAgICAgICBlYyA9IElO
VkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3RvcCgpOwor
fQorCit2b2lkIFBlZXJDb25uZWN0aW9uMDA6OmRpZEdlbmVyYXRlSWNlQ2FuZGlkYXRlKFBhc3NS
ZWZQdHI8SWNlQ2FuZGlkYXRlRGVzY3JpcHRvcj4gaWNlQ2FuZGlkYXRlRGVzY3JpcHRvciwgYm9v
bCBtb3JlVG9Gb2xsb3cpCit7CisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
aXNDb250ZXh0VGhyZWFkKCkpOworICAgIGlmICghaWNlQ2FuZGlkYXRlRGVzY3JpcHRvcikKKyAg
ICAgICAgbV9pY2VDYWxsYmFjay0+aGFuZGxlRXZlbnQoMCwgbW9yZVRvRm9sbG93LCB0aGlzKTsK
KyAgICBlbHNlIHsKKyAgICAgICAgUmVmUHRyPEljZUNhbmRpZGF0ZT4gaWNlQ2FuZGlkYXRlID0g
SWNlQ2FuZGlkYXRlOjpjcmVhdGUoaWNlQ2FuZGlkYXRlRGVzY3JpcHRvcik7CisgICAgICAgIG1f
aWNlQ2FsbGJhY2stPmhhbmRsZUV2ZW50KGljZUNhbmRpZGF0ZS5nZXQoKSwgbW9yZVRvRm9sbG93
LCB0aGlzKTsKKyAgICB9Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb24wMDo6ZGlkQ2hhbmdlUmVh
ZHlTdGF0ZSh1aW50MzJfdCBuZXdTdGF0ZSkKK3sKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgY2hhbmdlUmVhZHlTdGF0ZShzdGF0
aWNfY2FzdDxSZWFkeVN0YXRlPihuZXdTdGF0ZSkpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9u
MDA6OmRpZENoYW5nZUljZVN0YXRlKHVpbnQzMl90IG5ld1N0YXRlKQoreworICAgIEFTU0VSVChz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBjaGFuZ2VJ
Y2VTdGF0ZShzdGF0aWNfY2FzdDxJY2VTdGF0ZT4obmV3U3RhdGUpKTsKK30KKwordm9pZCBQZWVy
Q29ubmVjdGlvbjAwOjpkaWRBZGRSZW1vdGVTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURl
c2NyaXB0b3I+IHN0cmVhbURlc2NyaXB0b3IpCit7CisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpOworCisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9
PSBDTE9TRUQpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxNZWRpYVN0cmVhbT4gc3Ry
ZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHN0cmVh
bURlc2NyaXB0b3IpOworICAgIG1fcmVtb3RlU3RyZWFtcy0+YXBwZW5kKHN0cmVhbSk7CisKKyAg
ICBkaXNwYXRjaEV2ZW50KE1lZGlhU3RyZWFtRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYWRk
c3RyZWFtRXZlbnQsIGZhbHNlLCBmYWxzZSwgc3RyZWFtLnJlbGVhc2UoKSkpOworfQorCit2b2lk
IFBlZXJDb25uZWN0aW9uMDA6OmRpZFJlbW92ZVJlbW90ZVN0cmVhbShNZWRpYVN0cmVhbURlc2Ny
aXB0b3IqIHN0cmVhbURlc2NyaXB0b3IpCit7CisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpOworICAgIEFTU0VSVChzdHJlYW1EZXNjcmlwdG9y
LT5vd25lcigpKTsKKworICAgIFJlZlB0cjxNZWRpYVN0cmVhbT4gc3RyZWFtID0gc3RhdGljX2Nh
c3Q8TWVkaWFTdHJlYW0qPihzdHJlYW1EZXNjcmlwdG9yLT5vd25lcigpKTsKKyAgICBzdHJlYW0t
PnN0cmVhbUVuZGVkKCk7CisKKyAgICBpZiAobV9yZWFkeVN0YXRlID09IENMT1NFRCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgQVNTRVJUKG1fcmVtb3RlU3RyZWFtcy0+Y29udGFpbnMoc3RyZWFt
LmdldCgpKSk7CisgICAgbV9yZW1vdGVTdHJlYW1zLT5yZW1vdmUoc3RyZWFtLmdldCgpKTsKKwor
ICAgIGRpc3BhdGNoRXZlbnQoTWVkaWFTdHJlYW1FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5y
ZW1vdmVzdHJlYW1FdmVudCwgZmFsc2UsIGZhbHNlLCBzdHJlYW0ucmVsZWFzZSgpKSk7Cit9CisK
K2NvbnN0IEF0b21pY1N0cmluZyYgUGVlckNvbm5lY3Rpb24wMDo6aW50ZXJmYWNlTmFtZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JQZWVyQ29ubmVjdGlv
bjAwOworfQorCitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBQZWVyQ29ubmVjdGlvbjAwOjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gQWN0aXZlRE9NT2JqZWN0
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb24wMDo6
c3RvcCgpCit7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBDTE9TRUQpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChtX3BlZXJIYW5kbGVyKQorICAgICAgICBtX3BlZXJIYW5kbGVyLT5zdG9w
KCk7CisgICAgbV9wZWVySGFuZGxlci5jbGVhcigpOworCisgICAgY2hhbmdlUmVhZHlTdGF0ZShD
TE9TRUQpOworICAgIGNoYW5nZUljZVN0YXRlKElDRV9DTE9TRUQpOworfQorCitFdmVudFRhcmdl
dERhdGEqIFBlZXJDb25uZWN0aW9uMDA6OmV2ZW50VGFyZ2V0RGF0YSgpCit7CisgICAgcmV0dXJu
ICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30KKworRXZlbnRUYXJnZXREYXRhKiBQZWVyQ29ubmVjdGlv
bjAwOjplbnN1cmVFdmVudFRhcmdldERhdGEoKQoreworICAgIHJldHVybiAmbV9ldmVudFRhcmdl
dERhdGE7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb24wMDo6Y2hhbmdlUmVhZHlTdGF0ZShSZWFk
eVN0YXRlIHJlYWR5U3RhdGUpCit7CisgICAgaWYgKHJlYWR5U3RhdGUgPT0gbV9yZWFkeVN0YXRl
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3JlYWR5U3RhdGUgPSByZWFkeVN0YXRlOworCisg
ICAgc3dpdGNoIChtX3JlYWR5U3RhdGUpIHsKKyAgICBjYXNlIE5FR09USUFUSU5HOgorICAgICAg
ICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbm5lY3RpbmdFdmVu
dCwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQUNUSVZFOgorICAg
ICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLm9wZW5FdmVudCwg
ZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ0xPU0VEOgorICAgICAg
ICBicmVhazsKKyAgICBjYXNlIE5FVzoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuc3RhdGVjaGFuZ2VFdmVudCwgZmFsc2UsIGZhbHNlKSk7Cit9CisKK3ZvaWQg
UGVlckNvbm5lY3Rpb24wMDo6Y2hhbmdlSWNlU3RhdGUoSWNlU3RhdGUgaWNlU3RhdGUpCit7Cisg
ICAgaWYgKGljZVN0YXRlID09IG1faWNlU3RhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
aWNlU3RhdGUgPSBpY2VTdGF0ZTsKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLnN0YXRlY2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAw
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41MjBkNjFkOGRiMjgyYjNhOWY3NTZhMWYyNjZiM2ViNjJmYWJlNWRlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVy
Q29ubmVjdGlvbjAwLmgKQEAgLTAsMCArMSwxNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgor
ICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBlZXJDb25u
ZWN0aW9uMDBfaAorI2RlZmluZSBQZWVyQ29ubmVjdGlvbjAwX2gKKworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJFdmVu
dFRhcmdldC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkJhc2UuaCIKKyNpbmNsdWRlICJJY2VDYWxs
YmFjay5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1M
aXN0LmgiCisjaW5jbHVkZSAiUGVlckNvbm5lY3Rpb24wMEhhbmRsZXIuaCIKKyNpbmNsdWRlICJQ
ZWVyQ29ubmVjdGlvbjAwSGFuZGxlckNsaWVudC5oIgorI2luY2x1ZGUgIlNlc3Npb25EZXNjcmlw
dGlvbi5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
TWVkaWFIaW50czsKKworLy8gTm90ZToKKy8vIFNEUCBzdGFuZHMgZm9yIFNlc3Npb24gRGVzY3Jp
cHRpb24gUHJvdG9jb2wsIHdoaWNoIGlzIGludGVuZGVkIGZvciBkZXNjcmliaW5nCisvLyBtdWx0
aW1lZGlhIHNlc3Npb25zIGZvciB0aGUgcHVycG9zZXMgb2Ygc2Vzc2lvbiBhbm5vdW5jZW1lbnQs
IHNlc3Npb24KKy8vIGludml0YXRpb24sIGFuZCBvdGhlciBmb3JtcyBvZiBtdWx0aW1lZGlhIHNl
c3Npb24gaW5pdGlhdGlvbi4KKy8vCisvLyBNb3JlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBo
ZXJlOgorLy8gaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNDU2NgorLy8gaHR0cDovL2Vu
Lndpa2lwZWRpYS5vcmcvd2lraS9TZXNzaW9uX0Rlc2NyaXB0aW9uX1Byb3RvY29sCisKK2NsYXNz
IFBlZXJDb25uZWN0aW9uMDAgOiBwdWJsaWMgUmVmQ291bnRlZDxQZWVyQ29ubmVjdGlvbjAwPiwg
cHVibGljIFBlZXJDb25uZWN0aW9uMDBIYW5kbGVyQ2xpZW50LCBwdWJsaWMgRXZlbnRUYXJnZXQs
IHB1YmxpYyBBY3RpdmVET01PYmplY3QgeworcHVibGljOgorICAgIGVudW0gUmVhZHlTdGF0ZSB7
CisgICAgICAgIE5FVyA9IDAsCisgICAgICAgIE5FR09USUFUSU5HID0gMSwKKyAgICAgICAgQUNU
SVZFID0gMiwKKyAgICAgICAgQ0xPU0VEID0gMworICAgIH07CisKKyAgICBlbnVtIEFjdGlvbiB7
CisgICAgICAgIFNEUF9PRkZFUiA9IDB4MTAwLAorICAgICAgICBTRFBfUFJBTlNXRVIgPSAweDIw
MCwKKyAgICAgICAgU0RQX0FOU1dFUiA9IDB4MzAwCisgICAgfTsKKworICAgIGVudW0gSWNlU3Rh
dGUgeworICAgICAgICBJQ0VfR0FUSEVSSU5HID0gMHgxMDAsCisgICAgICAgIElDRV9XQUlUSU5H
ID0gMHgyMDAsCisgICAgICAgIElDRV9DSEVDS0lORyA9IDB4MzAwLAorICAgICAgICBJQ0VfQ09O
TkVDVEVEID0gMHg0MDAsCisgICAgICAgIElDRV9DT01QTEVURUQgPSAweDUwMCwKKyAgICAgICAg
SUNFX0ZBSUxFRCA9IDB4NjAwLAorICAgICAgICBJQ0VfQ0xPU0VEID0gMHg3MDAKKyAgICB9Owor
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGVlckNvbm5lY3Rpb24wMD4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHNlcnZlckNvbmZpZ3VyYXRpb24sIFBhc3NS
ZWZQdHI8SWNlQ2FsbGJhY2s+KTsKKyAgICB+UGVlckNvbm5lY3Rpb24wMCgpOworCisgICAgUGFz
c1JlZlB0cjxTZXNzaW9uRGVzY3JpcHRpb24+IGNyZWF0ZU9mZmVyKCk7CisgICAgUGFzc1JlZlB0
cjxTZXNzaW9uRGVzY3JpcHRpb24+IGNyZWF0ZU9mZmVyKGNvbnN0IFN0cmluZyYgbWVkaWFIaW50
cyk7CisgICAgUGFzc1JlZlB0cjxTZXNzaW9uRGVzY3JpcHRpb24+IGNyZWF0ZUFuc3dlcihjb25z
dCBTdHJpbmcmIG9mZmVyKTsKKyAgICBQYXNzUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbj4gY3Jl
YXRlQW5zd2VyKGNvbnN0IFN0cmluZyYgb2ZmZXIsIGNvbnN0IFN0cmluZyYgbWVkaWFIaW50cyk7
CisKKyAgICB2b2lkIHNldExvY2FsRGVzY3JpcHRpb24oaW50IGFjdGlvbiwgUGFzc1JlZlB0cjxT
ZXNzaW9uRGVzY3JpcHRpb24+LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZXRSZW1vdGVE
ZXNjcmlwdGlvbihpbnQgYWN0aW9uLCBQYXNzUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbj4sIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbj4gbG9jYWxE
ZXNjcmlwdGlvbigpOworICAgIFBhc3NSZWZQdHI8U2Vzc2lvbkRlc2NyaXB0aW9uPiByZW1vdGVE
ZXNjcmlwdGlvbigpOworCisgICAgdm9pZCBzdGFydEljZShFeGNlcHRpb25Db2RlJik7CisgICAg
dm9pZCBzdGFydEljZShjb25zdCBTdHJpbmcmIG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICB2b2lkIHByb2Nlc3NJY2VNZXNzYWdlKFBhc3NSZWZQdHI8SWNlQ2FuZGlkYXRlPiwgRXhjZXB0
aW9uQ29kZSYpOworCisgICAgSWNlU3RhdGUgaWNlU3RhdGUoKSBjb25zdDsKKyAgICBSZWFkeVN0
YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKKworICAgIHZvaWQgYWRkU3RyZWFtKGNvbnN0IFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW0+LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBhZGRTdHJlYW0o
Y29uc3QgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4sIGNvbnN0IFN0cmluZyYgbWVkaWFTdHJlYW1I
aW50cywgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcmVtb3ZlU3RyZWFtKE1lZGlhU3RyZWFt
KiwgRXhjZXB0aW9uQ29kZSYpOworICAgIE1lZGlhU3RyZWFtTGlzdCogbG9jYWxTdHJlYW1zKCkg
Y29uc3Q7CisgICAgTWVkaWFTdHJlYW1MaXN0KiByZW1vdGVTdHJlYW1zKCkgY29uc3Q7CisKKyAg
ICB2b2lkIGNsb3NlKEV4Y2VwdGlvbkNvZGUmKTsKKworICAgIERFRklORV9BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIoY29ubmVjdGluZyk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNU
RU5FUihvcGVuKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHN0YXRlY2hh
bmdlKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGFkZHN0cmVhbSk7Cisg
ICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihyZW1vdmVzdHJlYW0pOworCisgICAg
Ly8gUGVlckNvbm5lY3Rpb24wMEhhbmRsZXJDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgZGlkR2Vu
ZXJhdGVJY2VDYW5kaWRhdGUoUGFzc1JlZlB0cjxJY2VDYW5kaWRhdGVEZXNjcmlwdG9yPiwgYm9v
bCBtb3JlVG9Gb2xsb3cpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VSZWFk
eVN0YXRlKHVpbnQzMl90IHN0YXRlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hh
bmdlSWNlU3RhdGUodWludDMyX3Qgc3RhdGUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBk
aWRBZGRSZW1vdGVTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+KSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKE1lZGlhU3RyZWFt
RGVzY3JpcHRvciopIE9WRVJSSURFOworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFs
IGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0IE9WRVJSSURFOworICAg
IHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0IE9WRVJSSURFOworCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0CisgICAgdmlydHVhbCB2
b2lkIHN0b3AoKSBPVkVSUklERTsKKworICAgIHVzaW5nIFJlZkNvdW50ZWQ8UGVlckNvbm5lY3Rp
b24wMD46OnJlZjsKKyAgICB1c2luZyBSZWZDb3VudGVkPFBlZXJDb25uZWN0aW9uMDA+OjpkZXJl
ZjsKKworcHJpdmF0ZToKKyAgICBQZWVyQ29ubmVjdGlvbjAwKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBjb25zdCBTdHJpbmcmIHNlcnZlckNvbmZpZ3VyYXRpb24sIFBhc3NSZWZQdHI8SWNlQ2Fs
bGJhY2s+KTsKKworICAgIC8vIEV2ZW50VGFyZ2V0IGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1
YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKTsKKyAgICB2aXJ0dWFsIEV2ZW50
VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7CisgICAgdmlydHVhbCB2b2lkIHJl
ZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFy
Z2V0KCkgeyBkZXJlZigpOyB9CisgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRh
OworCisgICAgdm9pZCBjaGFuZ2VSZWFkeVN0YXRlKFJlYWR5U3RhdGUpOworICAgIHZvaWQgY2hh
bmdlSWNlU3RhdGUoSWNlU3RhdGUpOworICAgIGJvb2wgaGFzTG9jYWxBdWRpb1RyYWNrKCk7Cisg
ICAgYm9vbCBoYXNMb2NhbFZpZGVvVHJhY2soKTsKKyAgICBQYXNzUmVmUHRyPE1lZGlhSGludHM+
IHBhcnNlTWVkaWFIaW50cyhjb25zdCBTdHJpbmcmIG1lZGlhSGludHNTdHJpbmcpOworCisgICAg
UmVmUHRyPEljZUNhbGxiYWNrPiBtX2ljZUNhbGxiYWNrOworCisgICAgUmVhZHlTdGF0ZSBtX3Jl
YWR5U3RhdGU7CisgICAgSWNlU3RhdGUgbV9pY2VTdGF0ZTsKKworICAgIFJlZlB0cjxNZWRpYVN0
cmVhbUxpc3Q+IG1fbG9jYWxTdHJlYW1zOworICAgIFJlZlB0cjxNZWRpYVN0cmVhbUxpc3Q+IG1f
cmVtb3RlU3RyZWFtczsKKworICAgIE93blB0cjxQZWVyQ29ubmVjdGlvbjAwSGFuZGxlcj4gbV9w
ZWVySGFuZGxlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBQZWVyQ29ubmVjdGlvbjAwX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24w
MC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9u
MDAuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFkMmU1YTYzNjViMWMxZmViNzg2ODViM2MwYjQ2MzAzOWI2OWU4
YTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1BlZXJDb25uZWN0aW9uMDAuaWRsCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIHAy
cCB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0s
CisgICAgICAgIEFjdGl2ZURPTU9iamVjdCwKKyAgICAgICAgQ29uc3RydWN0b3IoaW4gRE9NU3Ry
aW5nIHNlcnZlckNvbmZpZ3VyYXRpb24sIGluIFtDYWxsYmFja10gSWNlQ2FsbGJhY2sgaWNlQ2Fs
bGJhY2spLAorICAgICAgICBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAorICAgICAg
ICBFdmVudFRhcmdldAorICAgIF0gUGVlckNvbm5lY3Rpb24wMCB7CisgICAgICAgIC8vIEZJWE1F
OiBNYWtlIG1lZGlhSGludHMgYW4gb2JqZWN0CisgICAgICAgIFNlc3Npb25EZXNjcmlwdGlvbiBj
cmVhdGVPZmZlcihpbiBbT3B0aW9uYWxdIERPTVN0cmluZyBtZWRpYUhpbnRzKTsKKworICAgICAg
ICAvLyBGSVhNRTogTWFrZSBtZWRpYUhpbnRzIGFuIG9iamVjdAorICAgICAgICBTZXNzaW9uRGVz
Y3JpcHRpb24gY3JlYXRlQW5zd2VyKGluIERPTVN0cmluZyBvZmZlciwgaW4gW09wdGlvbmFsXSBE
T01TdHJpbmcgbWVkaWFIaW50cyk7CisKKyAgICAgICAgLy8gQWN0aW9ucywgZm9yIHNldExvY2Fs
RGVzY3JpcHRpb24vc2V0UmVtb3RlRGVzY3JpcHRpb24uCisgICAgICAgIGNvbnN0IHVuc2lnbmVk
IHNob3J0IFNEUF9PRkZFUiA9IDB4MTAwOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBT
RFBfUFJBTlNXRVIgPSAweDIwMDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU0RQX0FO
U1dFUiA9IDB4MzAwOworCisgICAgICAgIHZvaWQgc2V0TG9jYWxEZXNjcmlwdGlvbihpbiB1bnNp
Z25lZCBzaG9ydCBhY3Rpb24sIGluIFNlc3Npb25EZXNjcmlwdGlvbiBkZXNjKQorICAgICAgICAg
ICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAgdm9pZCBzZXRSZW1vdGVEZXNjcmlw
dGlvbihpbiB1bnNpZ25lZCBzaG9ydCBhY3Rpb24sIGluIFNlc3Npb25EZXNjcmlwdGlvbiBkZXNj
KQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIFNlc3Npb25EZXNjcmlwdGlvbiBsb2NhbERlc2NyaXB0aW9uOworCisgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBTZXNzaW9uRGVzY3JpcHRpb24gcmVtb3RlRGVzY3JpcHRpb247
CisKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTkVXID0gMDsKKyAgICAgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgTkVHT1RJQVRJTkcgPSAxOworICAgICAgICBjb25zdCB1bnNpZ25lZCBz
aG9ydCBBQ1RJVkUgPSAyOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDTE9TRUQgPSAz
OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcmVhZHlTdGF0ZTsK
KworICAgICAgICAvLyBGSVhNRTogTWFrZSBpY2VPcHRpb25zIGFuIG9iamVjdAorICAgICAgICB2
b2lkIHN0YXJ0SWNlKGluIFtPcHRpb25hbF0gRE9NU3RyaW5nIGljZU9wdGlvbnMpCisgICAgICAg
ICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKworICAgICAgICB2b2lkIHByb2Nlc3NJY2VNZXNz
YWdlKGluIEljZUNhbmRpZGF0ZSBjYW5kaWRhdGUpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKKworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBJQ0VfR0FUSEVSSU5HID0g
MHgxMDA7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IElDRV9XQUlUSU5HID0gMHgyMDA7
CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IElDRV9DSEVDS0lORyA9IDB4MzAwOworICAg
ICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBJQ0VfQ09OTkVDVEVEID0gMHg0MDA7CisgICAgICAg
IGNvbnN0IHVuc2lnbmVkIHNob3J0IElDRV9DT01QTEVURUQgPSAweDUwMDsKKyAgICAgICAgY29u
c3QgdW5zaWduZWQgc2hvcnQgSUNFX0ZBSUxFRCA9IDB4NjAwOworICAgICAgICBjb25zdCB1bnNp
Z25lZCBzaG9ydCBJQ0VfQ0xPU0VEID0gMHg3MDA7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSB1bnNpZ25lZCBzaG9ydCBpY2VTdGF0ZTsKKworICAgICAgICAvLyBGSVhNRTogTWFrZSBtZWRp
YVN0cmVhbUhpbnRzIGFuIG9iamVjdAorICAgICAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lk
IGFkZFN0cmVhbShpbiBNZWRpYVN0cmVhbSBzdHJlYW0sIGluIFtPcHRpb25hbF0gRE9NU3RyaW5n
IG1lZGlhU3RyZWFtSGludHMpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAg
ICAgICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCByZW1vdmVTdHJlYW0oaW4gTWVkaWFTdHJl
YW0gc3RyZWFtKQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhU3RyZWFtTGlzdCBsb2NhbFN0cmVhbXM7CisgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVN0cmVhbUxpc3QgcmVtb3RlU3RyZWFtczsKKworICAg
ICAgICB2b2lkIGNsb3NlKCkKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworCisg
ICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uY29ubmVjdGluZzsKKyAgICAgICAgYXR0
cmlidXRlIEV2ZW50TGlzdGVuZXIgb25vcGVuOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0
ZW5lciBvbnN0YXRlY2hhbmdlOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmFk
ZHN0cmVhbTsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25yZW1vdmVzdHJlYW07
CisKKyAgICAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCisgICAgICAgIHZvaWQgYWRkRXZl
bnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIHZvaWQgcmVt
b3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAg
ICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldmVudCkKKyAgICAgICAgICAgIHJh
aXNlcyhFdmVudEV4Y2VwdGlvbik7CisgICAgfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TZXNzaW9uRGVzY3JpcHRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TZXNzaW9uRGVzY3JpcHRpb24uY3BwCmluZGV4
IDE4OGFlY2UzODM3YTE4ZmQzNjk1ZjY0YjQ1NGJmYjM1Njc2ZGE0OTMuLjk4MjcwN2E5ZjdmNTBm
ZTlhZjY2ZWZmNjE4NzFkZTZjZDMwODYzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlwdGlvbi5jcHAKQEAgLTQ4LDYg
KzQ4LDcgQEAgUGFzc1JlZlB0cjxTZXNzaW9uRGVzY3JpcHRpb24+IFNlc3Npb25EZXNjcmlwdGlv
bjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgc2RwKQogCiBQYXNzUmVmUHRyPFNlc3Npb25EZXNjcmlw
dGlvbj4gU2Vzc2lvbkRlc2NyaXB0aW9uOjpjcmVhdGUoUGFzc1JlZlB0cjxTZXNzaW9uRGVzY3Jp
cHRpb25EZXNjcmlwdG9yPiBkZXNjcmlwdG9yKQogeworICAgIEFTU0VSVCghIWRlc2NyaXB0b3Ip
OwogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2Vzc2lvbkRlc2NyaXB0aW9uKGRlc2NyaXB0b3Ip
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGI3NDFmMTBmNTBjYTUzY2EyMThjMzZjYzE0NTdm
MjNlZjI0ZWE2ZTguLjhjYzY1MjUxNTc0ZTNjMDQzZmNhZmJlN2Y3MDc5YmVmYThmOWExMGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKQEAgLTc5MCw2ICs3OTAsNyBAQAogICAgICAgICAgICAgJ01vZHVsZXMv
aW50ZW50cy9OYXZpZ2F0b3JJbnRlbnRzLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRp
YXN0cmVhbS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb24uaWRsJywKICAgICAgICAgICAgICdNb2R1
bGVzL21lZGlhc3RyZWFtL0RPTVdpbmRvd01lZGlhU3RyZWFtLmlkbCcsCisgICAgICAgICAgICAn
TW9kdWxlcy9tZWRpYXN0cmVhbS9JY2VDYWxsYmFjay5pZGwnLAogICAgICAgICAgICAgJ01vZHVs
ZXMvbWVkaWFzdHJlYW0vSWNlQ2FuZGlkYXRlLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9t
ZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwnLApAQCAtODAxLDYgKzgwMiw3IEBACiAgICAgICAg
ICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5pZGwnLAog
ICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JD
YWxsYmFjay5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9y
VXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmlkbCcsCisgICAgICAgICAgICAnTW9kdWxlcy9tZWRp
YXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRp
YXN0cmVhbS9TZXNzaW9uRGVzY3JpcHRpb24uaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL21l
ZGlhc3RyZWFtL1NpZ25hbGluZ0NhbGxiYWNrLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9z
cGVlY2gvRE9NV2luZG93U3BlZWNoLmlkbCcsCkBAIC0xNDU5LDYgKzE0NjEsNyBAQAogICAgICAg
ICAgICAgJ01vZHVsZXMvaW50ZW50cy9OYXZpZ2F0b3JJbnRlbnRzLmgnLAogICAgICAgICAgICAg
J01vZHVsZXMvbWVkaWFzdHJlYW0vRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uLmNwcCcsCiAgICAg
ICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb24uaCcs
CisgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9JY2VDYWxsYmFjay5oJywKICAgICAg
ICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL0ljZUNhbmRpZGF0ZS5jcHAnLAogICAgICAgICAg
ICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vSWNlQ2FuZGlkYXRlLmgnLAogICAgICAgICAgICAgJ01v
ZHVsZXMvbWVkaWFzdHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5jcHAnLApAQCAtMTQ4MCw2ICsxNDgz
LDggQEAKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRp
YUVycm9yLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNl
ck1lZGlhRXJyb3JDYWxsYmFjay5oJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFt
L05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5oJywKKyAgICAgICAgICAgICdNb2R1
bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuY3BwJywKKyAgICAgICAgICAgICdNb2R1
bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuaCcsCiAgICAgICAgICAgICAnTW9kdWxl
cy9tZWRpYXN0cmVhbS9TZXNzaW9uRGVzY3JpcHRpb24uY3BwJywKICAgICAgICAgICAgICdNb2R1
bGVzL21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlwdGlvbi5oJywKICAgICAgICAgICAgICdNb2R1
bGVzL21lZGlhc3RyZWFtL1NpZ25hbGluZ0NhbGxiYWNrLmgnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAppbmRl
eCBmMDE1NjQ2ZGZmMzkwOTViOTRkM2VlMWI2ZGMzNTczNWNlZTFlMWM1Li5hZWFiNWU0MzlmNzUx
ODBjYTZlZTk1ZDRkM2Y2ZjNiYzQ2MmNlY2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaApAQCAtMTg3LDYg
KzE4Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCB3ZWJraXRHZXRVc2VyTWVkaWFFbmFi
bGVkKCkgeyByZXR1cm4gaXNNZWRpYVN0cmVhbUVuYWJsZWQ7IH0KICAgICBzdGF0aWMgYm9vbCB3
ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb25FbmFibGVkKCkgeyByZXR1cm4gaXNNZWRpYVN0
cmVhbUVuYWJsZWQ7IH0KICAgICBzdGF0aWMgYm9vbCB3ZWJraXRNZWRpYVN0cmVhbUVuYWJsZWQo
KSB7IHJldHVybiBpc01lZGlhU3RyZWFtRW5hYmxlZDsgfQorICAgIHN0YXRpYyBib29sIHdlYmtp
dFBlZXJDb25uZWN0aW9uMDBFbmFibGVkKCkgeyByZXR1cm4gaXNNZWRpYVN0cmVhbUVuYWJsZWQ7
IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0RmFjdG9yeS5pbgppbmRleCBkOTk4YjQ2ZTdhMzFlNzhkODA3YzcxOTE0MjYwMjNkYzY1
NGI0ZmRkLi4yODBkMzk0ZjMyNTlmOGE5YmNhMTJiOGE1ZGJkZmZlNzNkMmZjODVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KQEAgLTIwLDYgKzIwLDcgQEAgTWVk
aWFTdHJlYW0gY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBNZXNzYWdlUG9ydAogTm9kZQogTm90
aWZpY2F0aW9uIGNvbmRpdGlvbmFsPU5PVElGSUNBVElPTlN8TEVHQUNZX05PVElGSUNBVElPTlMK
K1BlZXJDb25uZWN0aW9uMDAgY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBTaGFyZWRXb3JrZXIg
Y29uZGl0aW9uYWw9U0hBUkVEX1dPUktFUlMKIFNoYXJlZFdvcmtlckNvbnRleHQgY29uZGl0aW9u
YWw9U0hBUkVEX1dPUktFUlMKIFNwZWVjaFJlY29nbml0aW9uIGNvbmRpdGlvbmFsPVNDUklQVEVE
X1NQRUVDSAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>