<?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>150225</bug_id>
          
          <creation_ts>2015-10-16 00:59:48 -0700</creation_ts>
          <short_desc>Prototype custom element API</short_desc>
          <delta_ts>2016-03-01 21:45:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>150586</dependson>
    
    <dependson>153005</dependson>
    
    <dependson>153092</dependson>
    
    <dependson>153114</dependson>
    
    <dependson>153173</dependson>
    
    <dependson>153327</dependson>
    
    <dependson>153342</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>andrea.giammarchi</cc>
    
    <cc>barraclough</cc>
    
    <cc>cgarcia</cc>
    
    <cc>eoconnor</cc>
    
    <cc>ggaren</cc>
    
    <cc>koivisto</cc>
    
    <cc>mjs</cc>
    
    <cc>patrick.arlt</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilsonpage</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1133792</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-10-16 00:59:48 -0700</bug_when>
    <thetext>We should prototype custom element API in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133793</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-10-16 01:00:49 -0700</bug_when>
    <thetext>&lt;rdar://problem/22732164&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134151</commentid>
    <comment_count>2</comment_count>
      <attachid>263360</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-10-16 23:01:47 -0700</bug_when>
    <thetext>Created attachment 263360
Basic support for document.defineCustomElement

This WIP patch does the following:
- Added document.defineCustomElement(DOMString, CustomElementInterface)
- document.createElement support a custom element name
- HTMLElement constructible via custom element

With this, the following code does something useful:

class MyElement extends HTMLElement {
    constructor() {
        super(&apos;my-element&apos;);
        return this;
    }
}

document.defineCustomElement(&apos;my-element&apos;, MyElement);

new MyElement;
document.createElement(&apos;my-element&apos;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135176</commentid>
    <comment_count>3</comment_count>
    <who name="Andrea Giammarchi">andrea.giammarchi</who>
    <bug_when>2015-10-21 02:31:02 -0700</bug_when>
    <thetext>Thanks for moving forward, but as maintainer of the document.registerElement polyfill, the one used behind recent ampproject too, I need to ask a couple of questions:

  1) what about the current standard API? https://w3c.github.io/webcomponents/spec/custom/#dfn-document-registerElement
  2) is document.defineCustomElement compatible with ES3 like classes or it&apos;s locked in with ES6 classes only?
  3) is the current proposal compatible with HTMLInputElement and others &quot;special&quot; elements that don&apos;t inherits from HTMLElement?

Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136804</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-10-27 08:22:40 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Thanks for moving forward, but as maintainer of the document.registerElement
&gt; polyfill, the one used behind recent ampproject too, I need to ask a couple
&gt; of questions:
&gt; 
&gt;   1) what about the current standard API?
&gt; https://w3c.github.io/webcomponents/spec/custom/#dfn-document-registerElement

We don&apos;t have any plan to support the current proposal as it&apos;s fundamentally incompatible with ES6 class syntax.

&gt;   2) is document.defineCustomElement compatible with ES3 like classes or
&gt; it&apos;s locked in with ES6 classes only?

It&apos;s compatible with ES5 classes because ES6 class is simply a syntax sugar on top of ES5 classes.

&gt;   3) is the current proposal compatible with HTMLInputElement and others
&gt; &quot;special&quot; elements that don&apos;t inherits from HTMLElement?

We don&apos;t have a plan to support inheritance from a subclass of HTMLElement such as HTMLInputElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136805</commentid>
    <comment_count>5</comment_count>
    <who name="Andrea Giammarchi">andrea.giammarchi</who>
    <bug_when>2015-10-27 08:35:42 -0700</bug_when>
    <thetext>AFAIK the following syntax is not compatible with ES5, hence my question.

```
class MyElement extends HTMLElement {
    constructor() {
        super(&apos;my-element&apos;);
        return this;
    }
}
```

what would be the equivalent in ES5 for `super(&apos;my-element&apos;)` ?
Is that just a `document.createElement(&apos;my-element&apos;)` ?

Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136806</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-10-27 08:41:45 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; AFAIK the following syntax is not compatible with ES5, hence my question.
&gt; 
&gt; ```
&gt; class MyElement extends HTMLElement {
&gt;     constructor() {
&gt;         super(&apos;my-element&apos;);
&gt;         return this;
&gt;     }
&gt; }
&gt; ```
&gt; 
&gt; what would be the equivalent in ES5 for `super(&apos;my-element&apos;)` ?
&gt; Is that just a `document.createElement(&apos;my-element&apos;)` ?

Ah, I think we can work around that problem by not requiring the argument to super() when MyElement has exactly one tag name associated name since we can infer the tag name based on new.target if it&apos;s associated with exactly one tag name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136868</commentid>
    <comment_count>7</comment_count>
    <who name="Andrea Giammarchi">andrea.giammarchi</who>
    <bug_when>2015-10-27 11:37:52 -0700</bug_when>
    <thetext>Thanks again, please bear with me for last questions:

  1. is there any specification/document I can read about this implementation?
  2. is this statement correct: you can `extends HTMLElement` and HTMLElement only?
  3. can you define two elements with a different name, using the same class?
  4. are createdCallback, attachedCallback, detachedCallback, and attributeChangedCallback part of this implementation? If not, what else?


Thank you, I&apos;m planning to work on a `document.defineCustomElement` polyfill, based on document.registerElement one, to see how better it works for developers but I need to know more details.

Best Regards</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136891</commentid>
    <comment_count>8</comment_count>
    <who name="Patrick Arlt">patrick.arlt</who>
    <bug_when>2015-10-27 12:22:34 -0700</bug_when>
    <thetext>I also have some questions about this too. I recently have begun suggesting using the custom element spec as a way for my company to share common UI code among our apps.

1. Are other browser vendors considering an implementation of document.defineCustomElement
2. Is there a formal specification for this?
3. How would/could existing elements written for document.registerElement be used with this.

For example I&apos;ve been writing a set of custom elements like this:


```
class MyElement extends HTMLElement {
  createdCallback () {}
  attachedCallback () {}
  detachedCallback () {}
  attributeChangedCallback () {}
}

document.registerElement(&apos;my-element&apos;, MyElement);
```

and compiling with Babel. When used with Andreas polyfill this works great. Based on your answers to previous questions it seems like I could so this:

```
class MyElement extends HTMLElement {
  constructor() {
    this.createdCallback();
    return this;
  }
  createdCallback () {}
  attachedCallback () {}
  detachedCallback () {}
  attributeChangedCallback () {}
}

// polyfill 1 of these 2 things...
if (document.defineCustomElement) {
  document.defineCustomElement(&apos;my-element&apos;, MyElement);
} else {
  document.registerElement(&apos;my-element&apos;, MyElement);
}

```

and compile this with Babel and have it work.

I like the syntax you have. I always thought `createdCallback` was weird and that you couldn&apos;t just use `new MyElement()` but I don&apos;t want a nicer syntax to come along with sacrificing the native browser support in Chrome or having a bunch of special cases for Safari or have to add an abstraction layer to deal with large differences in the specs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137065</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-10-27 22:52:43 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Thanks again, please bear with me for last questions:
&gt; 
&gt;   1. is there any specification/document I can read about this
&gt; implementation?

No. The point of this prototype/experiment is to come up with a proposal for custom element API.

&gt;   2. is this statement correct: you can `extends HTMLElement` and
&gt; HTMLElement only?

Yes.

&gt;   3. can you define two elements with a different name, using the same class?

Yes, we&apos;re planning to allow that.

&gt;   4. are createdCallback, attachedCallback, detachedCallback, and
&gt; attributeChangedCallback part of this implementation? If not, what else?

No. Since we&apos;re using the constructor for creating, createdCallback won&apos;t be needed. We&apos;re likely renaming attachedCallback and detachedCallback as well since our callbacks&apos; semantics will be slightly different.  Finally, we&apos;re probably going to have callbacks for attribute changes and children changes.


(In reply to comment #8)
&gt; 1. Are other browser vendors considering an implementation of
&gt; document.defineCustomElement

No, since we haven&apos;t even made a proposal yet.

&gt; 2. Is there a formal specification for this?

Not yet.

&gt; 3. How would/could existing elements written for document.registerElement be
&gt; used with this.

It&apos;s too early in the prototyping stage to answer this question.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137086</commentid>
    <comment_count>10</comment_count>
    <who name="Andrea Giammarchi">andrea.giammarchi</who>
    <bug_when>2015-10-28 02:12:09 -0700</bug_when>
    <thetext>if I might, there is already an abstraction of mine that simplifies in a similar way the class definition and extends by default HTMLElement.

It&apos;s called dom-class
https://github.com/WebReflection/dom-class#custom-elements-callbacks

Maybe there&apos;s some possible hint in there too.

Thanks for coming back, please keep us updated with progresses.

Best Regards</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137444</commentid>
    <comment_count>11</comment_count>
      <attachid>264295</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-10-28 21:34:30 -0700</bug_when>
    <thetext>Created attachment 264295
Added basic support for Element.attributeChanged

Added Element.attibuteChanged symbol and called in setAttribute as well as
a subset of DOM APIs that modify element attributes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138152</commentid>
    <comment_count>12</comment_count>
      <attachid>264477</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-10-31 08:03:29 -0700</bug_when>
    <thetext>Created attachment 264477
Made tag name to super() optional

Made the tag name to super() call optional when a class defines exactly one element.
This allows constructor to be omitted in simple case.

e.g.
class MyElement extends HTMLElement {
    [Element.attributeChanged](name, oldValue, newValue) {
      ...
    }
};
document.defineCustomElement(&apos;my-element&apos;, MyElement);

will work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140212</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-11-07 16:19:43 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; AFAIK the following syntax is not compatible with ES5, hence my question.
&gt; &gt; 
&gt; &gt; ```
&gt; &gt; class MyElement extends HTMLElement {
&gt; &gt;     constructor() {
&gt; &gt;         super(&apos;my-element&apos;);
&gt; &gt;         return this;
&gt; &gt;     }
&gt; &gt; }
&gt; &gt; ```
&gt; &gt; 
&gt; &gt; what would be the equivalent in ES5 for `super(&apos;my-element&apos;)` ?
&gt; &gt; Is that just a `document.createElement(&apos;my-element&apos;)` ?
&gt; 
&gt; Ah, I think we can work around that problem by not requiring the argument to
&gt; super() when MyElement has exactly one tag name associated name since we can
&gt; infer the tag name based on new.target if it&apos;s associated with exactly one
&gt; tag name.

On more careful consideration, that still doesn&apos;t work because ES5 will use MyElement&apos;s [[Construct]] which doesn&apos;t create the underlying backing store.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141100</commentid>
    <comment_count>14</comment_count>
      <attachid>265285</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-11-11 07:03:57 -0800</bug_when>
    <thetext>Created attachment 265285
Updated for ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142776</commentid>
    <comment_count>15</comment_count>
      <attachid>265736</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-11-17 23:49:39 -0800</bug_when>
    <thetext>Created attachment 265736
Made Element.attributeChanged robust

Added an assertion to make sure every IDL method / interface creates the processing stack if needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169725</commentid>
    <comment_count>16</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-01 21:43:07 -0800</bug_when>
    <thetext>We&apos;re done prototyping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169728</commentid>
    <comment_count>17</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-01 21:45:56 -0800</bug_when>
    <thetext>The actual implementation of the API will take place in the bug 154907 instead.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263360</attachid>
            <date>2015-10-16 23:01:47 -0700</date>
            <delta_ts>2015-10-28 21:34:30 -0700</delta_ts>
            <desc>Basic support for document.defineCustomElement</desc>
            <filename>wip150225.patch</filename>
            <type>text/plain</type>
            <size>29168</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA5ZGNiYWVjLi5hYTMwZWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zODkzLDYgKzM4OTMsOSBAQAogCQk5QTUyOEU4
NDE3RDdGNTJGMDBBQTk1MTggLyogRmxvYXRpbmdPYmplY3RzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QTUyOEU4MjE3RDdGNTJGMDBBQTk1MTggLyog
RmxvYXRpbmdPYmplY3RzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJOUFCMUYzODAxOEUyNDg5QTAwNTM0NzQzIC8qIENTU1RvTGVuZ3RoQ29udmVy
c2lvbkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDlBQjFGMzdFMThFMjQ4OUEwMDUzNDc0MyAvKiBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmgg
Ki87IH07CiAJCTlBQjFGMzgxMThFMjQ4OUEwMDUzNDc0MyAvKiBDU1NUb0xlbmd0aENvbnZlcnNp
b25EYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDlBQjFGMzdGMThFMjQ4OUEwMDUzNDc0MyAvKiBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmNw
cCAqLzsgfTsKKwkJOUIxNDcxNTMxQkQwMUI4OTAwMzZERTA5IC8qIEN1c3RvbUVsZW1lbnRJbnRl
cmZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlC
MTQ3MTUxMUJEMDFCODkwMDM2REUwOSAvKiBDdXN0b21FbGVtZW50SW50ZXJmYWNlLmggKi87IHNl
dHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJOUIxNDcxNTYxQkQwMUU1NTAwMzZE
RTA5IC8qIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjE0NzE1NDFCRDAxRTU1MDAzNkRFMDkgLyogSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgp
OyB9OyB9OworCQk5QjE0NzE1NzFCRDAxRTU1MDAzNkRFMDkgLyogSlNDdXN0b21FbGVtZW50SW50
ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
QjE0NzE1NTFCRDAxRTU1MDAzNkRFMDkgLyogSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmggKi87
IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKIAkJOUIxQUIwN0MxNjQ4QzdDNDAw
NTFGM0YyIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIxQUIwN0IxNjQ4QzdDNDAw
NTFGM0YyIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwICovOyB9Owog
CQk5QjI0REU4RTE1MTk0Qjk1MDBDNTlDMjcgLyogSFRNTEJESUVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMjRERThDMTUxOTRCOTUwMEM1
OUMyNyAvKiBIVE1MQkRJRWxlbWVudC5oICovOyB9OwogCQk5QjJEOEE3OTE0OTk3Q0NGMDBFQ0VG
M0UgLyogVW5kb1N0ZXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDlCMkQ4QTc4MTQ5OTdDQ0YwMEVDRUYzRSAvKiBVbmRvU3RlcC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTM3MSw2ICsxMTM3NCw5
IEBACiAJCTlCMDNEODA2MUJCMzExMEQwMEI3NjREOSAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFs
c0J1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxlU3Ry
ZWFtSW50ZXJuYWxzQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIw
M0Q4MDcxQkIzMTEwRDAwQjc2NEQ4IC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnNXcmFwcGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtQnVpbHRpbnNX
cmFwcGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDNEODA3MUJCMzExMEQw
MEI3NjREQSAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zV3JhcHBlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0
aW5zV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QjE0NzE1MTFCRDAx
Qjg5MDAzNkRFMDkgLyogQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDdXN0b21FbGVtZW50SW50ZXJmYWNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTlCMTQ3MTU0MUJEMDFFNTUwMDM2REUwOSAvKiBKU0N1c3RvbUVsZW1l
bnRJbnRlcmZhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OUIxNDcxNTUxQkQwMUU1NTAwMzZERTA5IC8qIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIxOUI2N0UxQjk2NEU1MjAwMzQ4NzQ1
IC8qIFNoYWRvd1Jvb3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNoYWRvd1Jvb3QuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjFBQjA3OTE2NDhDNjlEMDA1MUYzRjIg
LyogSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIxQUIwN0IxNjQ4
QzdDNDAwNTFGM0YyIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbkN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTcxOCw4
ICsyMTcyNCw2IEBACiAJCQkJOEY5MzREODQxMTg5RjFFRTAwNTA4RDVEIC8qIEpTTWFpblRocmVh
ZEV4ZWNTdGF0ZS5jcHAgKi8sCiAJCQkJOEY5MzREODMxMTg5RjFFRTAwNTA4RDVEIC8qIEpTTWFp
blRocmVhZEV4ZWNTdGF0ZS5oICovLAogCQkJCUI1NjU3NkU0MTdEQTU5OUYwMEE1NkJEQyAvKiBK
U01haW5UaHJlYWRFeGVjU3RhdGVJbnN0cnVtZW50YXRpb24uaCAqLywKLQkJCQlDNkY0MjBBMDE2
QjcxNjRFMDA1MkE5RjIgLyogSlNNdXRhdGlvbkNhbGxiYWNrLmNwcCAqLywKLQkJCQlDNkY0MjBB
MTE2QjcxNjRFMDA1MkE5RjIgLyogSlNNdXRhdGlvbkNhbGxiYWNrLmggKi8sCiAJCQkJODNGMTIw
NkExQjhDMTAzNjAwRDc1RjYzIC8qIEpTTm9kZUZpbHRlckN1c3RvbS5jcHAgKi8sCiAJCQkJN0M5
MUEzOEQxQjQ5OEFCRTAwM0Y5RUZBIC8qIEpTTm9kZU9yU3RyaW5nLmNwcCAqLywKIAkJCQk3Qzkx
QTM4RTFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2RlT3JTdHJpbmcuaCAqLywKQEAgLTIyMjEyLDYg
KzIyMjE2LDEwIEBACiAJCQkJOTNCNzBENEUwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRXZlbnRMaXN0
ZW5lci5oICovLAogCQkJCTkzNUY0NTQwMEY3QzNCNUYwMEQ3QzFGQiAvKiBKU0xhenlFdmVudExp
c3RlbmVyLmNwcCAqLywKIAkJCQk5MzVGNDU0MTBGN0MzQjVGMDBEN0MxRkIgLyogSlNMYXp5RXZl
bnRMaXN0ZW5lci5oICovLAorCQkJCUM2RjQyMEEwMTZCNzE2NEUwMDUyQTlGMiAvKiBKU011dGF0
aW9uQ2FsbGJhY2suY3BwICovLAorCQkJCUM2RjQyMEExMTZCNzE2NEUwMDUyQTlGMiAvKiBKU011
dGF0aW9uQ2FsbGJhY2suaCAqLywKKwkJCQk5QjE0NzE1NDFCRDAxRTU1MDAzNkRFMDkgLyogSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcCAqLywKKwkJCQk5QjE0NzE1NTFCRDAxRTU1MDAzNkRF
MDkgLyogSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmggKi8sCiAJCQkpOwogCQkJbmFtZSA9ICJD
YWxsYmFjayBPYmplY3RzIjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yMzcwNyw2
ICsyMzcxNSw3IEBACiAJCQkJODUwMzFCMzEwQTQ0RUZDNzAwRjk5MkUwIC8qIE1vdXNlUmVsYXRl
ZEV2ZW50LmNwcCAqLywKIAkJCQk4NTAzMUIzMjBBNDRFRkM3MDBGOTkyRTAgLyogTW91c2VSZWxh
dGVkRXZlbnQuaCAqLywKIAkJCQlDNkYwOTAwMTE0MzI3QjYxMDA2ODU4NDkgLyogTXV0YXRpb25D
YWxsYmFjay5oICovLAorCQkJCTlCMTQ3MTUxMUJEMDFCODkwMDM2REUwOSAvKiBDdXN0b21FbGVt
ZW50SW50ZXJmYWNlLmggKi8sCiAJCQkJODUwMzFCMzMwQTQ0RUZDNzAwRjk5MkUwIC8qIE11dGF0
aW9uRXZlbnQuY3BwICovLAogCQkJCTg1MDMxQjM0MEE0NEVGQzcwMEY5OTJFMCAvKiBNdXRhdGlv
bkV2ZW50LmggKi8sCiAJCQkJOTNFRUMxRjMwOUMyODc3NzAwQzUxNUQxIC8qIE11dGF0aW9uRXZl
bnQuaWRsICovLApAQCAtMjQ0NjMsNiArMjQ0NzIsNyBAQAogCQkJCUJDNUVCNURCMEU4MUI3RUEw
MEIyNTk2NSAvKiBCb3JkZXJWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVEOEMzN0ExODNC
RkY4QzAwOUU1M0JEIC8qIEJveFNoYXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VBNDg1NTA5
N0Q5MzAyMDA5NEM5RTQgLyogYnJlYWtfbGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTlCMTQ3
MTU3MUJEMDFFNTUwMDM2REUwOSAvKiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzMzA5RERCMDk5RTY0OTIwMDU2RTU4MSAvKiBCcmVha0Jsb2NrcXVvdGVD
b21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk1OTlFNzU5MDExMDU1QTFGMDBEOTA0RkEgLyog
QnJpZGdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1OUI1OTc3NTExMDg2NTc5MDA3MTU5RTggLyog
QnJpZGdlSlNDLmggaW4gSGVhZGVycyAqLywKQEAgLTI1NDE1LDYgKzI1NDI1LDcgQEAKIAkJCQk0
OTlCM0VENzEyOENEMzE0MDBFNzI2QzIgLyogR3JhcGhpY3NMYXllckNBLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjU4MEIwRTBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNjk1OTMxNjFBMUU1MzAwMzczMkNCIC8qIEdyYXBoaWNz
TGF5ZXJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKKwkJCQk5QjE0NzE1MzFCRDAxQjg5MDAzNkRF
MDkgLyogQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBMjRE
N0ExNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDRUMzMzdBRjFBNDYwODZEMDA5Qjg1MjMgLyogR3JhcGhpY3NTZXJ2aWNlc1NQSS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQjJBMDE1QUIwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdyYXBoaWNz
VHlwZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMzExMzIsNiArMzExNDMsNyBAQAogCQkJCTAxRDND
Rjg2MTRCRDBBMzAwMEZFOTk3MCAvKiBXZWJHTFNoYXJlZE9iamVjdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk2Rjk5NUExNTFBNzA3NTYyMDBBNzM1RjQgLyogV2ViR0xTeW5jLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQ5QzdCOUU1MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTFRleHR1cmUuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJOUIxNDcxNTYxQkQwMUU1NTAwMzZERTA5IC8qIEpTQ3VzdG9t
RWxlbWVudEludGVyZmFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2Rjk5NUEyMzFBNzA3OEIx
MDBBNzM1RjQgLyogV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwQzNGMUY1QTEwQzg4NzEyMDBENzJDRTEgLyogV2ViR0xVbmlmb3JtTG9jYXRpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNkY5OTVBMjUxQTcwNzhCMTAwQTczNUY0IC8qIFdlYkdMVmVydGV4
QXJyYXlPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODA2YjhmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcApAQCAtMCww
ICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmgiCisKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5j
bHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0VsZW1lbnQuaCIKKyNpbmNs
dWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVj
U3RhdGVJbnN0cnVtZW50YXRpb24uaCIKKyNpbmNsdWRlICJKU011dGF0aW9uT2JzZXJ2ZXIuaCIK
KyNpbmNsdWRlICJKU011dGF0aW9uUmVjb3JkLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgorI2luY2x1ZGUgPGhlYXAvV2Vha0lubGluZXMuaD4KKyNpbmNsdWRlIDxydW50
aW1lL0pTTG9jay5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6SlNDdXN0b21FbGVtZW50SW50ZXJmYWNl
KEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
KyAgICA6IEFjdGl2ZURPTUNhbGxiYWNrKGdsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKQorICAgICwgbV9jb25zdHJ1Y3Rvcihjb25zdHJ1Y3RvcikKKyAgICAsIG1faXNvbGF0
ZWRXb3JsZCgmZ2xvYmFsT2JqZWN0LT53b3JsZCgpKQoreworfQorCitKU0N1c3RvbUVsZW1lbnRJ
bnRlcmZhY2U6On5KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UoKQoreworfQorCitSZWZQdHI8RWxl
bWVudD4gSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjpjb25zdHJ1Y3QoY29uc3QgQXRvbWljU3Ry
aW5nJiB0YWdOYW1lKQoreworICAgIGlmICghY2FuSW52b2tlQ2FsbGJhY2soKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBSZWY8SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlPiBwcm90
ZWN0KCp0aGlzKTsKKworICAgIEpTTG9ja0hvbGRlciBsb2NrKG1faXNvbGF0ZWRXb3JsZC0+dm0o
KSk7CisKKyAgICBpZiAoIW1fY29uc3RydWN0b3IpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSB0b0pTRE9NR2xvYmFsT2JqZWN0KGNvbnRleHQsICptX2lzb2xhdGVkV29y
bGQpOworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwor
CisvLyAgICBKU0Z1bmN0aW9uKiBjb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oT1Ao
MikuanNWYWx1ZSgpLmFzQ2VsbCgpKTsKKworICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0
YTsKKyAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBtX2NvbnN0cnVjdG9yLT5tZXRo
b2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRhKG1fY29uc3RydWN0b3IuZ2V0KCksIGNvbnN0cnVj
dERhdGEpOworICAgIGlmIChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGVOb25lKSB7Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOworICAgIGFyZ3MuYXBwZW5kKGpz
U3RyaW5nV2l0aENhY2hlKGV4ZWMsIHRhZ05hbWUpKTsKKworLy8gRklYTUU6IGFkZCBiYWNrIGlu
c3BlY3RvciBpbnN0cnVtZW50YXRpb24KKy8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSBjb29raWUgPSBKU01haW5UaHJlYWRFeGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbkNhbGwo
Y29udGV4dCwgY2FsbFR5cGUsIGNhbGxEYXRhKTsKKworICAgIC8vIEZJWE1FOiBTaG91bGQgd2Ug
ZG8gc29tZXRoaW5nIHNwZWNpYWwgZm9yIGV4Y2VwdGlvbnM/CisgICAgSlNWYWx1ZSBuZXdFbGVt
ZW50ID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjb25zdHJ1Y3QoZXhlYywgbV9jb25zdHJ1Y3Rv
ci5nZXQoKSwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgYXJncyk7CisgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworLy8gICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRDYWxsRnVuY3Rpb24oY29va2llLCBjb250ZXh0KTsKKworICAgIEVsZW1lbnQq
IGVsZW1lbnQgPSBKU0VsZW1lbnQ6OnRvV3JhcHBlZChuZXdFbGVtZW50KTsKKyAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIGRvIHNvZW10ZWhpbmcgc3BlY2lhbCB3aGVuIHRoZSBjb25zdHJ1Y3RvciBy
ZXR1cm5lZCBhIG5vbi1FbGVtZW50IG9iamVjdC4KKworICAgIHJldHVybiBlbGVtZW50OworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjEwMjFmNjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaApAQCAtMCwwICsxLDY0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEpTTXV0YXRpb25DYWxsYmFja19oCisjZGVmaW5lIEpTTXV0YXRp
b25DYWxsYmFja19oCisKKyNpbmNsdWRlICJBY3RpdmVET01DYWxsYmFjay5oIgorI2luY2x1ZGUg
IkRPTVdyYXBwZXJXb3JsZC5oIgorI2luY2x1ZGUgIkN1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCIK
KyNpbmNsdWRlIDxoZWFwL1dlYWsuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+Cisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBK
U0RPTUdsb2JhbE9iamVjdDsKKworY2xhc3MgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlIDogcHVi
bGljIEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UsIHB1YmxpYyBBY3RpdmVET01DYWxsYmFjayB7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZjxKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U+IGNyZWF0ZShK
U0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpTQ3VzdG9tRWxlbWVudEludGVy
ZmFjZShjYWxsYmFjaywgZ2xvYmFsT2JqZWN0KSk7CisgICAgfQorCisgICAgdmlydHVhbCB+SlND
dXN0b21FbGVtZW50SW50ZXJmYWNlKCk7CisKK3ByaXZhdGU6CisgICAgSlNDdXN0b21FbGVtZW50
SW50ZXJmYWNlKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCopOwor
CisgICAgdmlydHVhbCBSZWZQdHI8RWxlbWVudD4gY29uc3RydWN0KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdGFnTmFtZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBKU0M6OkpTT2JqZWN0KiBjb25zdHJ1
Y3RvcigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fY29uc3RydWN0b3IuZ2V0KCk7IH0KKworICAgIHZp
cnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7IH0KKworICAgIG11dGFibGUgSlNDOjpXZWFrPEpTQzo6SlNPYmpl
Y3Q+IG1fY29uc3RydWN0b3I7CisgICAgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gbV9pc29sYXRl
ZFdvcmxkOworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IGVj
MGI5YzIuLjliMGJhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9j
dW1lbnRDdXN0b20uY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIu
aCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJKU0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5oIgorI2luY2x1ZGUgIkpTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oIgogI2lu
Y2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAiSlNIVE1MRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJKU0xvY2F0aW9uLmgiCkBAIC0zNSw2ICszNiw5IEBACiAjaW5jbHVkZSAiU1ZH
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVG91
Y2hMaXN0LmgiCisKKyNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CisjaW5jbHVkZSA8cnVudGlt
ZS9Qcml2YXRlTmFtZS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KIAogI2lmIEVOQUJMRShX
RUJHTCkKQEAgLTEzMCw0ICsxMzQsNDAgQEAgSlNWYWx1ZSBKU0RvY3VtZW50OjpjcmVhdGVUb3Vj
aExpc3QoRXhlY1N0YXRlJiBzdGF0ZSkKIH0KICNlbmRpZgogCisKK0pTVmFsdWUgSlNEb2N1bWVu
dDo6ZGVmaW5lQ3VzdG9tRWxlbWVudChFeGVjU3RhdGUmIHN0YXRlKQoreworICAgIEF0b21pY1N0
cmluZyB0YWdOYW1lKHN0YXRlLmFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnRvQXRvbWlj
U3RyaW5nKCZzdGF0ZSkpOworICAgIGlmIChVTkxJS0VMWShzdGF0ZS5oYWRFeGNlcHRpb24oKSkp
CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgSlNPYmplY3QqIG9iamVjdCA9
IHN0YXRlLmFyZ3VtZW50KDEpLmdldE9iamVjdCgpOworICAgIENvbnN0cnVjdERhdGEgY2FsbERh
dGE7CisgICAgaWYgKCFvYmplY3QgfHwgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1
Y3REYXRhKG9iamVjdCwgY2FsbERhdGEpID09IENvbnN0cnVjdFR5cGVOb25lKQorICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCAiVGhlIHNlY29uZCBhcmd1bWVudCBtdXN0IGJl
IGEgY29uc3RydWN0b3IiKTsKKworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSB0b0pTRE9NR2xvYmFsT2JqZWN0KCZpbXBsKCksICZzdGF0ZSk7CisKKyAgICBEb2N1bWVudCYg
ZG9jdW1lbnQgPSBpbXBsKCk7CisgICAgc3dpdGNoIChkb2N1bWVudC5jaGVja0N1c3RvbUVsZW1l
bnROYW1lKHRhZ05hbWUpKSB7CisgICAgY2FzZSBDdXN0b21FbGVtZW50TmFtZVN0YXR1czo6VmFs
aWQ6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3VzdG9tRWxlbWVudE5hbWVTdGF0dXM6OkR1
cGxpY2F0ZToKKyAgICAgICAgcmV0dXJuIGNyZWF0ZURPTUV4Y2VwdGlvbigmc3RhdGUsIE5PVF9T
VVBQT1JURURfRVJSKTsKKyAgICBjYXNlIEN1c3RvbUVsZW1lbnROYW1lU3RhdHVzOjpDb25mbGlj
dHNXaXRoQnVpbHRpbk5hbWVzOgorICAgICAgICByZXR1cm4gdGhyb3dTeW50YXhFcnJvcigmc3Rh
dGUsICJDdXN0b20gZWxlbWVudCBuYW1lIGNhbm5vdCBiZSBzYW1lIGFzIG9uZSBvZiB0aGUgYnVp
bHRpbiBlbGVtZW50cyIpOworICAgIGNhc2UgQ3VzdG9tRWxlbWVudE5hbWVTdGF0dXM6Ok5vSHlw
aGVuOgorICAgICAgICByZXR1cm4gdGhyb3dTeW50YXhFcnJvcigmc3RhdGUsICJDdXN0b20gZWxl
bWVudCBuYW1lIG11c3QgY29udGFpbiBhIGh5cGhlbiIpOworICAgIGNhc2UgQ3VzdG9tRWxlbWVu
dE5hbWVTdGF0dXM6OkNvbnRhaW5zVXBwZXJDYXNlOgorICAgICAgICByZXR1cm4gdGhyb3dTeW50
YXhFcnJvcigmc3RhdGUsICJDdXN0b20gZWxlbWVudCBuYW1lIGNhbm5vdCBjb250YWluIGFuIHVw
cGVyIGNhc2UgbGV0dGVyIik7CisgICAgfQorCisgICAgZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxl
bWVudChRdWFsaWZpZWROYW1lKG51bGxBdG9tLCB0YWdOYW1lLCBIVE1MTmFtZXM6OnhodG1sTmFt
ZXNwYWNlVVJJKSwgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjpjcmVhdGUob2JqZWN0LCBnbG9i
YWxPYmplY3QpKTsKKyAgICBQcml2YXRlTmFtZSB1bmlxdWVQcml2YXRlTmFtZTsKKyAgICBnbG9i
YWxPYmplY3QtPnB1dERpcmVjdChnbG9iYWxPYmplY3QtPnZtKCksIHVuaXF1ZVByaXZhdGVOYW1l
LCBvYmplY3QpOworCisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxF
bGVtZW50Q3VzdG9tLmNwcAppbmRleCAzZDQ4ZGYwLi5mN2M3MmUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMTQgKzI2
LDU0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNIVE1MRWxlbWVudC5oIgog
CisjaW5jbHVkZSAiSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKKyNpbmNsdWRlIDxydW50aW1lL0Vy
cm9yLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU1dpdGhTY29wZS5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0SlNIVE1MRWxlbWVudChFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIERP
TUNvbnN0cnVjdG9yT2JqZWN0KiBqc0NvbnN0cnVjdG9yID0ganNDYXN0PERPTUNvbnN0cnVjdG9y
T2JqZWN0Kj4oc3RhdGUtPmNhbGxlZSgpKTsKKworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQgPSBqc0NvbnN0cnVjdG9yLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAg
aWYgKCFjb250ZXh0IHx8ICFjb250ZXh0LT5pc0RvY3VtZW50KCkpCisgICAgICAgIHJldHVybiB0
aHJvd0NvbnN0cnVjdG9yRG9jdW1lbnRVbmF2YWlsYWJsZUVycm9yKCpzdGF0ZSwgIkhUTUxFbGVt
ZW50Iik7CisgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQp
OworCisgICAgaWYgKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkp
OworCisgICAgU3RyaW5nIG5hbWU7CisgICAgaWYgKCFzdGF0ZS0+YXJndW1lbnQoMCkuZ2V0U3Ry
aW5nKHN0YXRlLCBuYW1lKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUs
ICJUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIGN1c3RvbSBlbGVtZW50IG5hbWUiKTsKKwor
ICAgIEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UqIGludGVyZmFjZSA9IGRvY3VtZW50LmZpbmRDdXN0
b21FbGVtZW50QnlOYW1lKG5hbWUpOworICAgIGlmICghaW50ZXJmYWNlKQorICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgIlRoZSBmaXJzdCBhcmd1bWVudCBpcyBub3QgYSB2
YWxpZCBjdXN0b20gZWxlbWVudCBuYW1lIik7CisKKyAgICBKU09iamVjdCogbmV3VGFyZ2V0ID0g
c3RhdGUtPnRoaXNWYWx1ZSgpLmdldE9iamVjdCgpOworICAgIGlmIChuZXdUYXJnZXQgIT0gaW50
ZXJmYWNlLT5jb25zdHJ1Y3RvcigpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSwgIkF0dGVtcHQgdG8gY29uc3RydWN0IGEgY3VzdG9tIGVsZW1lbnQgd2l0aCBhIHdyb25n
IGludGVyZmFjZSIpOworCisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgSlNWYWx1ZSBw
cm90b3R5cGVPYmplY3QgPSBuZXdUYXJnZXQtPmdldChzdGF0ZSwgdm0ucHJvcGVydHlOYW1lcy0+
cHJvdG90eXBlKTsKKyAgICBpZiAoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgYXV0byogZ2xvYmFsT2Jq
ZWN0ID0ganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCk7CisgICAgLy8gRklYTUU6IFdlIHNo
b3VsZG4ndCBjcmVhdGUgYSBuZXcgc3RydWN0dXJlIGVhY2ggdGltZS4gQ2FjaGUgaXQgb24gdGhl
IGNvbnN0cnVjdG9yIG9iamVjdCBvciBpbnRlcmZhY2Ugd3JhcHBlci4KKyAgICBhdXRvKiBuZXdF
bGVtZW50U3RydWN0dXJlID0gSlNIVE1MRWxlbWVudDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZU9iamVjdCk7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGdl
dCB0aGUgcXVhbGlmaWVkIG5hbWUgb3V0IG9mIHRoZSBpbnRlcmZhY2UuCisgICAgYXV0byoganNF
bGVtZW50ID0gSlNIVE1MRWxlbWVudDo6Y3JlYXRlKG5ld0VsZW1lbnRTdHJ1Y3R1cmUsIGdsb2Jh
bE9iamVjdCwgSFRNTEVsZW1lbnQ6OmNyZWF0ZShRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBuYW1l
LCBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJKSwgZG9jdW1lbnQpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzRWxlbWVudCk7Cit9CisKIEpTU2NvcGUqIEpTSFRNTEVsZW1lbnQ6
OnB1c2hFdmVudEhhbmRsZXJTY29wZShFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlKSBj
b25zdAogewogICAgIEhUTUxFbGVtZW50JiBlbGVtZW50ID0gaW1wbCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuaAppbmRleCAwOWU3
ZTViLi4yNmM2NmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01h
aW5UaHJlYWRFeGVjU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01h
aW5UaHJlYWRFeGVjU3RhdGUuaApAQCAtNTYsNiArNTYsMTMgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gSlNDOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsVHlwZSwgY2FsbERhdGEs
IHRoaXNWYWx1ZSwgYXJncywgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIH07CiAKKyAgICBzdGF0
aWMgSlNDOjpKU1ZhbHVlIGNvbnN0cnVjdChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1Zh
bHVlIGNvbnN0cnVjdG9yT2JqZWN0LCBKU0M6OkNvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSwg
Y29uc3QgSlNDOjpDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhLAorICAgICAgICBjb25zdCBK
U0M6OkFyZ0xpc3QmIGFyZ3MpCisgICAgeworICAgICAgICBKU01haW5UaHJlYWRFeGVjU3RhdGUg
Y3VycmVudFN0YXRlKGV4ZWMpOworICAgICAgICByZXR1cm4gSlNDOjpjb25zdHJ1Y3QoZXhlYywg
Y29uc3RydWN0b3JPYmplY3QsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3MpOwor
ICAgIH07CisKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlKEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIHNvdXJjZSwgSlNDOjpKU1ZhbHVlIHRoaXNW
YWx1ZSwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKICAgICB7
CiAgICAgICAgIEpTTWFpblRocmVhZEV4ZWNTdGF0ZSBjdXJyZW50U3RhdGUoZXhlYyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5hYTQ1ODI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaApAQCAtMCwwICsxLDUzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDdXN0b21F
bGVtZW50SW50ZXJmYWNlX2gKKyNkZWZpbmUgQ3VzdG9tRWxlbWVudEludGVyZmFjZV9oCisKKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTT2JqZWN0OworCit9CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgRWxlbWVudDsKKworY2xhc3MgQ3VzdG9tRWxlbWVudEludGVyZmFjZSA6IHB1
YmxpYyBSZWZDb3VudGVkPEN1c3RvbUVsZW1lbnRJbnRlcmZhY2U+IHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIH5DdXN0b21FbGVtZW50SW50ZXJmYWNlKCkgeyB9CisgICAgCisgICAgdmlydHVhbCBS
ZWZQdHI8RWxlbWVudD4gY29uc3RydWN0KGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSkgPSAw
OworICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEpTQzo6SlNPYmplY3QqIGNvbnN0cnVjdG9y
KCkgPSAwOworfTsKKworfQorCisjZW5kaWYgLy8gQ3VzdG9tRWxlbWVudEludGVyZmFjZV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA4N2JiY2ZmLi5lMGFhMzIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJDb21tZW50LmgiCiAjaW5j
bHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiQ29va2llSmFyLmgiCisj
aW5jbHVkZSAiQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oIgogI2luY2x1ZGUgIkRPTUltcGxlbWVu
dGF0aW9uLmgiCiAjaW5jbHVkZSAiRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oIgogI2luY2x1ZGUg
IkRPTVdpbmRvdy5oIgpAQCAtNjIwOSw2ICs2MjEwLDk5IEBAIHVuc2lnbmVkIERvY3VtZW50Ojp0
b3VjaEV2ZW50SGFuZGxlckNvdW50KCkgY29uc3QKICNlbmRpZgogfQogCitjbGFzcyBDdXN0b21F
bGVtZW50RGVmaW5pdGlvbnMgeworcHVibGljOgorICAgIHZvaWQgYWRkRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiBmdWxsTmFtZSwgUmVmPEN1c3RvbUVsZW1lbnRJbnRlcmZhY2U+JiYgaW50
ZXJmYWNlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbWFwLmZpbmQoZnVsbE5hbWUubG9jYWxO
YW1lKCkpID09IG1fbWFwLmVuZCgpKTsKKyAgICAgICAgbV9tYXAuYWRkKGZ1bGxOYW1lLmxvY2Fs
TmFtZSgpLCBDdXN0b21FbGVtZW50SW5mbyhmdWxsTmFtZSwgV1RGOjptb3ZlKGludGVyZmFjZSkp
KTsKKyAgICB9CisKKyAgICBDdXN0b21FbGVtZW50SW50ZXJmYWNlKiBmaW5kRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiBmdWxsTmFtZSkKKyAgICB7CisgICAgICAgIGF1dG8gaXQgPSBtX21h
cC5maW5kKGZ1bGxOYW1lLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgcmV0dXJuIGl0ID09IG1fbWFw
LmVuZCgpIHx8IGl0LT52YWx1ZS5mdWxsTmFtZSAhPSBmdWxsTmFtZSA/IG51bGxwdHIgOiBpdC0+
dmFsdWUuaW50ZXJmYWNlLmdldCgpOworICAgIH0KKworICAgIEN1c3RvbUVsZW1lbnRJbnRlcmZh
Y2UqIGZpbmRFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKKyAgICB7CisgICAgICAg
IGF1dG8gaXQgPSBtX21hcC5maW5kKG5hbWUpOworICAgICAgICByZXR1cm4gaXQgPT0gbV9tYXAu
ZW5kKCkgPyBudWxscHRyIDogaXQtPnZhbHVlLmludGVyZmFjZS5nZXQoKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgc3RydWN0IEN1c3RvbUVsZW1lbnRJbmZvIHsKKyAgICAgICAgUXVhbGlmaWVk
TmFtZSBmdWxsTmFtZTsKKyAgICAgICAgUmVmUHRyPEN1c3RvbUVsZW1lbnRJbnRlcmZhY2U+IGlu
dGVyZmFjZTsKKworICAgICAgICBDdXN0b21FbGVtZW50SW5mbygpCisgICAgICAgICAgICA6IGZ1
bGxOYW1lKG51bGxRTmFtZSgpKQorICAgICAgICB7IH0KKworICAgICAgICBDdXN0b21FbGVtZW50
SW5mbyhjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBSZWY8Q3VzdG9tRWxlbWVudEludGVyZmFj
ZT4mJiBpbnRlcmZhY2UpCisgICAgICAgICAgICA6IGZ1bGxOYW1lKG5hbWUpCisgICAgICAgICAg
ICAsIGludGVyZmFjZShXVEY6Om1vdmUoaW50ZXJmYWNlKSkKKyAgICAgICAgeyB9CisgICAgfTsK
KworICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBDdXN0b21FbGVtZW50SW5mbz4gbV9tYXA7Cit9
OworCitDdXN0b21FbGVtZW50TmFtZVN0YXR1cyBEb2N1bWVudDo6Y2hlY2tDdXN0b21FbGVtZW50
TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUpCit7CisgICAgYm9vbCBjb250YWluc0h5
cGhlbiA9IGZhbHNlOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0YWdOYW1lLmxlbmd0
aCgpOyBpKyspIHsKKyAgICAgICAgaWYgKGlzQVNDSUlVcHBlcih0YWdOYW1lW2ldKSkKKyAgICAg
ICAgICAgIHJldHVybiBDdXN0b21FbGVtZW50TmFtZVN0YXR1czo6Q29udGFpbnNVcHBlckNhc2U7
CisgICAgICAgIGVsc2UgaWYgKHRhZ05hbWVbaV0gPT0gJy0nKQorICAgICAgICAgICAgY29udGFp
bnNIeXBoZW4gPSB0cnVlOworICAgIH0KKyAgICAKKyAgICBpZiAoIWNvbnRhaW5zSHlwaGVuKQor
ICAgICAgICByZXR1cm4gQ3VzdG9tRWxlbWVudE5hbWVTdGF0dXM6Ok5vSHlwaGVuOworCisgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBiZSB0YWtpbmcgdGhlIGFkdmFudGFnZSBvZiBRdWFsaWZpZWRO
YW1lcyBpbiBTVkcgYW5kIE1hdGhNTC4KKyAgICBpZiAodGFnTmFtZSA9PSAiYW5ub3RhdGlvbi14
bWwiCisgICAgICAgIHx8IHRhZ05hbWUgPT0gImNvbG9yLXByb2ZpbGUiCisgICAgICAgIHx8IHRh
Z05hbWUgPT0gImZvbnQtZmFjZSIKKyAgICAgICAgfHwgdGFnTmFtZSA9PSAiZm9udC1mYWNlLXNy
YyIKKyAgICAgICAgfHwgdGFnTmFtZSA9PSAiZm9udC1mYWNlLXVyaSIKKyAgICAgICAgfHwgdGFn
TmFtZSA9PSAiZm9udC1mYWNlLWZvcm1hdCIKKyAgICAgICAgfHwgdGFnTmFtZSA9PSAiZm9udC1m
YWNlLW5hbWUiCisgICAgICAgIHx8IHRhZ05hbWUgPT0gIm1pc3NpbmctZ2x5cGgiKQorICAgICAg
ICByZXR1cm4gQ3VzdG9tRWxlbWVudE5hbWVTdGF0dXM6OkNvbmZsaWN0c1dpdGhCdWlsdGluTmFt
ZXM7CisKKyAgICBpZiAobV9jdXN0b21FbGVtZW50cyAmJiBtX2N1c3RvbUVsZW1lbnRzLT5maW5k
RWxlbWVudCh0YWdOYW1lKSkKKyAgICAgICAgcmV0dXJuIEN1c3RvbUVsZW1lbnROYW1lU3RhdHVz
OjpEdXBsaWNhdGU7CisKKyAgICByZXR1cm4gQ3VzdG9tRWxlbWVudE5hbWVTdGF0dXM6OlZhbGlk
OworfQorCit2b2lkIERvY3VtZW50OjpkZWZpbmVDdXN0b21FbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIFJlZjxDdXN0b21FbGVtZW50SW50ZXJmYWNlPiYmIGludGVyZmFjZSkK
K3sKKyAgICBBU1NFUlQoY2hlY2tDdXN0b21FbGVtZW50TmFtZSh0YWdOYW1lLmxvY2FsbmFtZSgp
KSA9PSBDdXN0b21FbGVtZW50TmFtZVN0YXR1czo6VmFsaWQpOworCisgICAgaWYgKCFtX2N1c3Rv
bUVsZW1lbnRzKQorICAgICAgICBtX2N1c3RvbUVsZW1lbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxD
dXN0b21FbGVtZW50RGVmaW5pdGlvbnM+KCk7CisKKyAgICBtX2N1c3RvbUVsZW1lbnRzLT5hZGRF
bGVtZW50KHRhZ05hbWUsIFdURjo6bW92ZShpbnRlcmZhY2UpKTsKK30KKworUmVmUHRyPEVsZW1l
bnQ+IERvY3VtZW50OjpjcmVhdGVDdXN0b21FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUpCit7CisgICAgaWYgKCFtX2N1c3RvbUVsZW1lbnRzKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICBhdXRvKiBpbnRlcmZhY2UgPSBtX2N1c3RvbUVsZW1lbnRzLT5maW5kRWxlbWVudChu
YW1lKTsKKyAgICBpZiAoIWludGVyZmFjZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
cmV0dXJuIGludGVyZmFjZS0+Y29uc3RydWN0KG5hbWUubG9jYWxOYW1lKCkpOworfQorCitDdXN0
b21FbGVtZW50SW50ZXJmYWNlKiBEb2N1bWVudDo6ZmluZEN1c3RvbUVsZW1lbnRCeU5hbWUoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBtX2N1c3RvbUVsZW1lbnRzID8g
bV9jdXN0b21FbGVtZW50cy0+ZmluZEVsZW1lbnQobmFtZSkgOiBudWxscHRyOworfQorCiBMYXlv
dXRSZWN0IERvY3VtZW50OjphYnNvbHV0ZUV2ZW50SGFuZGxlckJvdW5kcyhib29sJiBpbmNsdWRl
c0ZpeGVkUG9zaXRpb25FbGVtZW50cykKIHsKICAgICBpbmNsdWRlc0ZpeGVkUG9zaXRpb25FbGVt
ZW50cyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA1YWRjM2MyLi4xZTU2NzcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaApAQCAtODAsNiArODAsOCBAQCBjbGFzcyBDYWNoZWRTY3JpcHQ7
CiBjbGFzcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0OwogY2xhc3MgQ2hhcmFjdGVyRGF0YTsKIGNs
YXNzIENvbW1lbnQ7CitjbGFzcyBDdXN0b21FbGVtZW50RGVmaW5pdGlvbnM7CitjbGFzcyBDdXN0
b21FbGVtZW50SW50ZXJmYWNlOwogY2xhc3MgRE9NSW1wbGVtZW50YXRpb247CiBjbGFzcyBET01O
YW1lZEZsb3dDb2xsZWN0aW9uOwogY2xhc3MgRE9NU2VsZWN0aW9uOwpAQCAtMjgwLDYgKzI4Miw4
IEBAIGVudW0gY2xhc3MgSHR0cEVxdWl2UG9saWN5IHsKICAgICBEaXNhYmxlZEJ5Q29udGVudERp
c3Bvc2l0aW9uQXR0YWNobWVudFNhbmRib3gKIH07CiAKK2VudW0gY2xhc3MgQ3VzdG9tRWxlbWVu
dE5hbWVTdGF0dXMgeyBWYWxpZCwgRHVwbGljYXRlLCBDb25mbGljdHNXaXRoQnVpbHRpbk5hbWVz
LCBOb0h5cGhlbiwgQ29udGFpbnNVcHBlckNhc2UgfTsKKwogY2xhc3MgRG9jdW1lbnQgOiBwdWJs
aWMgQ29udGFpbmVyTm9kZSwgcHVibGljIFRyZWVTY29wZSwgcHVibGljIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIHB1YmxpYyBGb250U2VsZWN0b3JDbGllbnQgewogcHVibGljOgogICAgIHN0YXRp
YyBSZWY8RG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQpAQCAt
MTIwMCw2ICsxMjA0LDExIEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAorICAgIEN1c3RvbUVs
ZW1lbnROYW1lU3RhdHVzIGNoZWNrQ3VzdG9tRWxlbWVudE5hbWUoY29uc3QgQXRvbWljU3RyaW5n
Jik7CisgICAgdm9pZCBkZWZpbmVDdXN0b21FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBS
ZWY8Q3VzdG9tRWxlbWVudEludGVyZmFjZT4mJik7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGNyZWF0
ZUN1c3RvbUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIEN1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UqIGZpbmRDdXN0b21FbGVtZW50QnlOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYpOwor
CiAgICAgY29uc3QgRXZlbnRUYXJnZXRTZXQqIHdoZWVsRXZlbnRUYXJnZXRzKCkgY29uc3QgeyBy
ZXR1cm4gbV93aGVlbEV2ZW50VGFyZ2V0cy5nZXQoKTsgfQogCiAgICAgdHlwZWRlZiBzdGQ6OnBh
aXI8UmVnaW9uLCBib29sPiBSZWdpb25GaXhlZFBhaXI7CkBAIC0xNzIxLDYgKzE3MzAsOCBAQCBw
cml2YXRlOgogICAgIERvY3VtZW50KiBtX3RlbXBsYXRlRG9jdW1lbnRIb3N0OyAvLyBNYW51YWxs
eSBtYW5hZ2VkIHdlYWtyZWYgKGJhY2twb2ludGVyIGZyb20gbV90ZW1wbGF0ZURvY3VtZW50KS4K
ICNlbmRpZgogCisgICAgc3RkOjp1bmlxdWVfcHRyPEN1c3RvbUVsZW1lbnREZWZpbml0aW9ucz4g
bV9jdXN0b21FbGVtZW50czsKKwogICAgIFJlZlB0cjxDU1NGb250U2VsZWN0b3I+IG1fZm9udFNl
bGVjdG9yOwogCiAjaWYgRU5BQkxFKEZPTlRfTE9BRF9FVkVOVFMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmlkbAppbmRleCBlMjZlYzA0Li40OGJmNzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKQEAg
LTI4MSw2ICsyODEsMTEgQEAKICAgICBbTmV3T2JqZWN0LCBDdXN0b20sIFJhaXNlc0V4Y2VwdGlv
bl0gVG91Y2hMaXN0IGNyZWF0ZVRvdWNoTGlzdCgpOwogI2VuZGlmCiAKKyAgICAvLyBDdXN0b20g
ZWxlbWVudHMKKyNpZiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdFX0pB
VkFTQ1JJUFQKKyAgICBbQ3VzdG9tLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgZGVmaW5lQ3VzdG9t
RWxlbWVudChET01TdHJpbmcgdGFnTmFtZSwgQ3VzdG9tRWxlbWVudEludGVyZmFjZSBlbGVtZW50
SW50ZXJmYWNlKTsKKyNlbmRpZgorCiAgICAgLy8gUGFnZSB2aXNpYmlsaXR5IEFQSS4KICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZpc2liaWxpdHlTdGF0ZTsKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgYm9vbGVhbiBoaWRkZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vbWFrZV9uYW1lcy5wbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCmluZGV4
IDBkN2EzNmYuLjY1MzQwZmUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25h
bWVzLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCkBAIC0xMDE4LDYg
KzEwMTgsMTEgQEAgRU5ECiAgICAgfQogCiAgICAgcHJpbnQgRiA8PEVORAorICAgIGlmIChhdXRv
IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVDdXN0b21FbGVtZW50KG5hbWUpKSB7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGlzPFdlYkNvcmU6OiRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50
PigqZWxlbWVudCkpOworICAgICAgICByZXR1cm4gZG93bmNhc3Q8V2ViQ29yZTo6JHBhcmFtZXRl
cnN7bmFtZXNwYWNlfUVsZW1lbnQ+KCplbGVtZW50KTsKKyAgICB9CisKICAgICByZXR1cm4gJHBh
cmFtZXRlcnN7ZmFsbGJhY2tJbnRlcmZhY2VOYW1lfTo6Y3JlYXRlKG5hbWUsIGRvY3VtZW50KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbAppbmRleCA4ZWVmNmZmLi44YTkyNDFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbApAQCAtMTksNiArMTksNyBAQAogICov
CiAKIFsKKyAgICBDdXN0b21Db25zdHJ1Y3RvcihET01TdHJpbmcgbG9jYWxOYW1lKSwKICAgICBK
U0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCiAgICAgSlNDdXN0b21QdXNoRXZlbnRIYW5kbGVyU2Nv
cGUsCiBdIGludGVyZmFjZSBIVE1MRWxlbWVudCA6IEVsZW1lbnQgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264295</attachid>
            <date>2015-10-28 21:34:30 -0700</date>
            <delta_ts>2015-10-31 08:03:29 -0700</delta_ts>
            <desc>Added basic support for Element.attributeChanged</desc>
            <filename>wip150225b.patch</filename>
            <type>text/plain</type>
            <size>62000</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sLmgKaW5kZXggODNmNWRlMi4uZGRiNjhj
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sLmgKQEAgLTg2LDcgKzg2LDcg
QEAgcHJvdGVjdGVkOgogCiAgICAgU3ltYm9sKFZNJik7CiAgICAgU3ltYm9sKFZNJiwgY29uc3Qg
U3RyaW5nJik7Ci0gICAgU3ltYm9sKFZNJiwgU3ltYm9sSW1wbCYgdWlkKTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBTeW1ib2woVk0mLCBTeW1ib2xJbXBsJiB1aWQpOwogCiAgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDlkY2JhZWMuLmFiMGJhYjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM4
OTMsNiArMzg5Myw5IEBACiAJCTlBNTI4RTg0MTdEN0Y1MkYwMEFBOTUxOCAvKiBGbG9hdGluZ09i
amVjdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlB
NTI4RTgyMTdEN0Y1MkYwMEFBOTUxOCAvKiBGbG9hdGluZ09iamVjdHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5QUIxRjM4MDE4RTI0ODlBMDA1
MzQ3NDMgLyogQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUFCMUYzN0UxOEUyNDg5QTAwNTM0NzQzIC8qIENT
U1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaCAqLzsgfTsKIAkJOUFCMUYzODExOEUyNDg5QTAwNTM0
NzQzIC8qIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUFCMUYzN0YxOEUyNDg5QTAwNTM0NzQzIC8qIENT
U1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuY3BwICovOyB9OworCQk5QjE0NzE1MzFCRDAxQjg5MDAz
NkRFMDkgLyogQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIxNDcxNTExQkQwMUI4OTAwMzZERTA5IC8qIEN1c3Rv
bUVsZW1lbnRJbnRlcmZhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9
OworCQk5QjE0NzE1NjFCRDAxRTU1MDAzNkRFMDkgLyogSlNDdXN0b21FbGVtZW50SW50ZXJmYWNl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMTQ3
MTU0MUJEMDFFNTUwMDM2REUwOSAvKiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwICovOyBz
ZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CisJCTlCMTQ3MTU3MUJEMDFFNTUwMDM2
REUwOSAvKiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMTQ3MTU1MUJEMDFFNTUwMDM2REUwOSAvKiBKU0N1
c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9
OyB9OwogCQk5QjFBQjA3QzE2NDhDN0M0MDA1MUYzRjIgLyogSlNIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5QjFBQjA3QjE2NDhDN0M0MDA1MUYzRjIgLyogSlNIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbkN1c3RvbS5jcHAgKi87IH07CiAJCTlCMjRERThFMTUxOTRCOTUwMEM1OUMyNyAvKiBI
VE1MQkRJRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUIyNERFOEMxNTE5NEI5NTAwQzU5QzI3IC8qIEhUTUxCRElFbGVtZW50LmggKi87IH07
CiAJCTlCMkQ4QTc5MTQ5OTdDQ0YwMEVDRUYzRSAvKiBVbmRvU3RlcC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIyRDhBNzgxNDk5N0NDRjAwRUNFRjNF
IC8qIFVuZG9TdGVwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTM5MTEsNiArMzkxNCw4IEBACiAJCTlCNjlEM0I5MUI5OTEwMDcwMEUzNTEyQiAv
KiBKU0hUTUxTbG90RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOUI2OUQzQjcxQjk5MTAwNzAwRTM1MTJCIC8qIEpTSFRNTFNsb3RFbGVtZW50
LmggKi87IH07CiAJCTlCNkM0MTUzMTM0NDk0OTAwMDA4NUI2MiAvKiBTdHJpbmdXaXRoRGlyZWN0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjZD
NDE1MjEzNDQ5NDkwMDAwODVCNjIgLyogU3RyaW5nV2l0aERpcmVjdGlvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTlCQTI3M0Y0MTcyMjA2QkIw
MDk3Q0U0NyAvKiBMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkEyNzNGMzE3MjIwNkJCMDA5N0NFNDcg
LyogTG9naWNhbFNlbGVjdGlvbk9mZnNldENhY2hlcy5oICovOyB9OworCQk5QkE0NjZCNzFCREM3
MzRBMDBCQjc5OTAgLyogTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkE0NjZCNTFCREM3MzRBMDBCQjc5OTAg
LyogTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5jcHAgKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1Mg
PSAoKTsgfTsgfTsKKwkJOUJBNDY2QjgxQkRDNzM0QTAwQkI3OTkwIC8qIExpZmVjeWNsZUNhbGxi
YWNrUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDlCQTQ2NkI2MUJEQzczNEEwMEJCNzk5MCAvKiBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmggKi87
IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKIAkJOUJBQjZDNkMxMjU1MDYzMTAw
MTYyNkQ0IC8qIEVkaXRpbmdTdHlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOUJBQjZDNkExMjU1MDYzMTAwMTYyNkQ0IC8qIEVkaXRpbmdTdHlsZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTlCQUI2
QzZEMTI1NTA2MzEwMDE2MjZENCAvKiBFZGl0aW5nU3R5bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJBQjZDNkIxMjU1MDYzMTAwMTYyNkQ0IC8q
IEVkaXRpbmdTdHlsZS5jcHAgKi87IH07CiAJCTlCQUYzQjI0MTJDMUEzOTgwMDAxNEJGMSAvKiBX
cml0aW5nRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5QkFGM0IyMzEyQzFBMzk4MDAwMTRCRjEgLyogV3JpdGluZ0RpcmVjdGlvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTM3MSw2
ICsxMTM3Niw5IEBACiAJCTlCMDNEODA2MUJCMzExMEQwMEI3NjREOSAvKiBSZWFkYWJsZVN0cmVh
bUludGVybmFsc0J1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
YWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOUIwM0Q4MDcxQkIzMTEwRDAwQjc2NEQ4IC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnNX
cmFwcGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFt
QnVpbHRpbnNXcmFwcGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDNEODA3
MUJCMzExMEQwMEI3NjREQSAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zV3JhcHBl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkYWJsZVN0cmVhbUludGVy
bmFsc0J1aWx0aW5zV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QjE0
NzE1MTFCRDAxQjg5MDAzNkRFMDkgLyogQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21FbGVtZW50SW50ZXJmYWNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCMTQ3MTU0MUJEMDFFNTUwMDM2REUwOSAvKiBKU0N1
c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOUIxNDcxNTUxQkQwMUU1NTAwMzZERTA5IC8qIEpTQ3VzdG9tRWxlbWVudEludGVy
ZmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0N1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIxOUI2N0UxQjk2NEU1
MjAwMzQ4NzQ1IC8qIFNoYWRvd1Jvb3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNoYWRv
d1Jvb3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjFBQjA3OTE2NDhDNjlE
MDA1MUYzRjIgLyogSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIx
QUIwN0IxNjQ4QzdDNDAwNTFGM0YyIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0
b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xMTM5NSw2ICsxMTQwMyw4IEBACiAJCTlCNkJDOTYxMUI5NzU5NjYwMDVBRTFGMCAvKiBKU1No
YWRvd1Jvb3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTaGFkb3dSb290
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNkM0MTUyMTM0NDk0OTAwMDA4NUI2
MiAvKiBTdHJpbmdXaXRoRGlyZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN0cmluZ1dpdGhEaXJlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OUJBMjczRjMxNzIyMDZCQjAwOTdDRTQ3IC8qIExvZ2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNoZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9naWNhbFNlbGVjdGlvbk9mZnNl
dENhY2hlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QkE0NjZCNTFCREM3MzRB
MDBCQjc5OTAgLyogTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUJBNDY2QjYxQkRDNzM0QTAwQkI3OTkwIC8qIExpZmVjeWNs
ZUNhbGxiYWNrUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlmZWN5
Y2xlQ2FsbGJhY2tRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkFCNkM2
QTEyNTUwNjMxMDAxNjI2RDQgLyogRWRpdGluZ1N0eWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEVkaXRpbmdTdHlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5QkFCNkM2QjEyNTUwNjMxMDAxNjI2RDQgLyogRWRpdGluZ1N0eWxlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVkaXRpbmdTdHlsZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTlCQUYzQjIzMTJDMUEzOTgwMDAxNEJGMSAvKiBXcml0aW5nRGly
ZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdyaXRpbmdEaXJlY3Rp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNzE4LDggKzIxNzI4LDYgQEAK
IAkJCQk4RjkzNEQ4NDExODlGMUVFMDA1MDhENUQgLyogSlNNYWluVGhyZWFkRXhlY1N0YXRlLmNw
cCAqLywKIAkJCQk4RjkzNEQ4MzExODlGMUVFMDA1MDhENUQgLyogSlNNYWluVGhyZWFkRXhlY1N0
YXRlLmggKi8sCiAJCQkJQjU2NTc2RTQxN0RBNTk5RjAwQTU2QkRDIC8qIEpTTWFpblRocmVhZEV4
ZWNTdGF0ZUluc3RydW1lbnRhdGlvbi5oICovLAotCQkJCUM2RjQyMEEwMTZCNzE2NEUwMDUyQTlG
MiAvKiBKU011dGF0aW9uQ2FsbGJhY2suY3BwICovLAotCQkJCUM2RjQyMEExMTZCNzE2NEUwMDUy
QTlGMiAvKiBKU011dGF0aW9uQ2FsbGJhY2suaCAqLywKIAkJCQk4M0YxMjA2QTFCOEMxMDM2MDBE
NzVGNjMgLyogSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcCAqLywKIAkJCQk3QzkxQTM4RDFCNDk4QUJF
MDAzRjlFRkEgLyogSlNOb2RlT3JTdHJpbmcuY3BwICovLAogCQkJCTdDOTFBMzhFMUI0OThBQkUw
MDNGOUVGQSAvKiBKU05vZGVPclN0cmluZy5oICovLApAQCAtMjIyMTIsNiArMjIyMjAsMTAgQEAK
IAkJCQk5M0I3MEQ0RTA5RUIwQzdDMDA5RDg0NjggLyogSlNFdmVudExpc3RlbmVyLmggKi8sCiAJ
CQkJOTM1RjQ1NDAwRjdDM0I1RjAwRDdDMUZCIC8qIEpTTGF6eUV2ZW50TGlzdGVuZXIuY3BwICov
LAogCQkJCTkzNUY0NTQxMEY3QzNCNUYwMEQ3QzFGQiAvKiBKU0xhenlFdmVudExpc3RlbmVyLmgg
Ki8sCisJCQkJQzZGNDIwQTAxNkI3MTY0RTAwNTJBOUYyIC8qIEpTTXV0YXRpb25DYWxsYmFjay5j
cHAgKi8sCisJCQkJQzZGNDIwQTExNkI3MTY0RTAwNTJBOUYyIC8qIEpTTXV0YXRpb25DYWxsYmFj
ay5oICovLAorCQkJCTlCMTQ3MTU0MUJEMDFFNTUwMDM2REUwOSAvKiBKU0N1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UuY3BwICovLAorCQkJCTlCMTQ3MTU1MUJEMDFFNTUwMDM2REUwOSAvKiBKU0N1c3Rv
bUVsZW1lbnRJbnRlcmZhY2UuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gIkNhbGxiYWNrIE9iamVj
dHMiOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIzNzA3LDYgKzIzNzE5LDcgQEAK
IAkJCQk4NTAzMUIzMTBBNDRFRkM3MDBGOTkyRTAgLyogTW91c2VSZWxhdGVkRXZlbnQuY3BwICov
LAogCQkJCTg1MDMxQjMyMEE0NEVGQzcwMEY5OTJFMCAvKiBNb3VzZVJlbGF0ZWRFdmVudC5oICov
LAogCQkJCUM2RjA5MDAxMTQzMjdCNjEwMDY4NTg0OSAvKiBNdXRhdGlvbkNhbGxiYWNrLmggKi8s
CisJCQkJOUIxNDcxNTExQkQwMUI4OTAwMzZERTA5IC8qIEN1c3RvbUVsZW1lbnRJbnRlcmZhY2Uu
aCAqLywKIAkJCQk4NTAzMUIzMzBBNDRFRkM3MDBGOTkyRTAgLyogTXV0YXRpb25FdmVudC5jcHAg
Ki8sCiAJCQkJODUwMzFCMzQwQTQ0RUZDNzAwRjk5MkUwIC8qIE11dGF0aW9uRXZlbnQuaCAqLywK
IAkJCQk5M0VFQzFGMzA5QzI4Nzc3MDBDNTE1RDEgLyogTXV0YXRpb25FdmVudC5pZGwgKi8sCkBA
IC0yMzg4NCw2ICsyMzg5Nyw4IEBACiAJCQkJODUwMzFCM0EwQTQ0RUZDNzAwRjk5MkUwIC8qIFdo
ZWVsRXZlbnQuY3BwICovLAogCQkJCTg1MDMxQjNCMEE0NEVGQzcwMEY5OTJFMCAvKiBXaGVlbEV2
ZW50LmggKi8sCiAJCQkJOTNFRUMxRjcwOUMyODc3NzAwQzUxNUQxIC8qIFdoZWVsRXZlbnQuaWRs
ICovLAorCQkJCTlCQTQ2NkI1MUJEQzczNEEwMEJCNzk5MCAvKiBMaWZlY3ljbGVDYWxsYmFja1F1
ZXVlLmNwcCAqLywKKwkJCQk5QkE0NjZCNjFCREM3MzRBMDBCQjc5OTAgLyogTGlmZWN5Y2xlQ2Fs
bGJhY2tRdWV1ZS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBkb207CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtMjQ0NjMsNiArMjQ0NzgsNyBAQAogCQkJCUJDNUVCNURCMEU4MUI3RUEw
MEIyNTk2NSAvKiBCb3JkZXJWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVEOEMzN0ExODNC
RkY4QzAwOUU1M0JEIC8qIEJveFNoYXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VBNDg1NTA5
N0Q5MzAyMDA5NEM5RTQgLyogYnJlYWtfbGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTlCMTQ3
MTU3MUJEMDFFNTUwMDM2REUwOSAvKiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzMzA5RERCMDk5RTY0OTIwMDU2RTU4MSAvKiBCcmVha0Jsb2NrcXVvdGVD
b21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk1OTlFNzU5MDExMDU1QTFGMDBEOTA0RkEgLyog
QnJpZGdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1OUI1OTc3NTExMDg2NTc5MDA3MTU5RTggLyog
QnJpZGdlSlNDLmggaW4gSGVhZGVycyAqLywKQEAgLTI1NDE1LDYgKzI1NDMxLDcgQEAKIAkJCQk0
OTlCM0VENzEyOENEMzE0MDBFNzI2QzIgLyogR3JhcGhpY3NMYXllckNBLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjU4MEIwRTBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNjk1OTMxNjFBMUU1MzAwMzczMkNCIC8qIEdyYXBoaWNz
TGF5ZXJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKKwkJCQk5QjE0NzE1MzFCRDAxQjg5MDAzNkRF
MDkgLyogQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBMjRE
N0ExNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDRUMzMzdBRjFBNDYwODZEMDA5Qjg1MjMgLyogR3JhcGhpY3NTZXJ2aWNlc1NQSS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQjJBMDE1QUIwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdyYXBoaWNz
VHlwZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMjczMzUsNiArMjczNTIsNyBAQAogCQkJCUIyMjI3
QTAzMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRVNwb3RMaWdodEVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIyMjI3QTA2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRVRpbGVFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0EwOTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVUdXJi
dWxlbmNlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOUJBNDY2QjgxQkRDNzM0QTAwQkI3
OTkwIC8qIExpZmVjeWNsZUNhbGxiYWNrUXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NUU3
MkZDMEZEMjYyMzkwMEE4N0Q3OSAvKiBTVkdGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4
MUVCRjNCMEZEMzRGNDEwMERBNzU1OSAvKiBTVkdGaWx0ZXJCdWlsZGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCMjIyN0EwQzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRmlsdGVyRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zMDkxNCw2ICszMDkzMiw3IEBACiAJCQkJMjZGQUU0Q0UxODUyRTNB
NTAwNEM4QzQ2IC8qIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDUzOTBBRTBFQUZGNEI1MDAzNjk1QzggLyog
U3lzdGVtTWVtb3J5SU9TLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQTA3RkJEMThFMEExNkEw
MDQ2OTlGQSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTlC
QTQ2NkI3MUJEQzczNEEwMEJCNzk5MCAvKiBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUNEQTA3RkMxMThFMEEyMkIwMDQ2OTlGQSAvKiBTeXN0ZW1TbGVlcExp
c3RlbmVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUQ1OTc1QjQxOTYzNUYxMTAwRDAwODc4
IC8qIFN5c3RlbVZlcnNpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk0NjNFQjYyMjFCODc4OUUw
MDA5NkVENTEgLyogVGFnQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxMTMyLDYg
KzMxMTUxLDcgQEAKIAkJCQkwMUQzQ0Y4NjE0QkQwQTMwMDBGRTk5NzAgLyogV2ViR0xTaGFyZWRP
YmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkY5OTVBMTUxQTcwNzU2MjAwQTczNUY0IC8q
IFdlYkdMU3luYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUM3QjlFNTEwNDJEMzJGMDAwOUQ0
NDcgLyogV2ViR0xUZXh0dXJlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTlCMTQ3MTU2MUJEMDFF
NTUwMDM2REUwOSAvKiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNkY5OTVBMjMxQTcwNzhCMTAwQTczNUY0IC8qIFdlYkdMVHJhbnNmb3JtRmVlZGJhY2su
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEMzRjFGNUExMEM4ODcxMjAwRDcyQ0UxIC8qIFdlYkdM
VW5pZm9ybUxvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZGOTk1QTI1MUE3MDc4QjEw
MEE3MzVGNCAvKiBXZWJHTFZlcnRleEFycmF5T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJm
YWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVy
ZmFjZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzYwZmU0MAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVu
dEludGVyZmFjZS5jcHAKQEAgLTAsMCArMSwxNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oIgorCisjaW5j
bHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVk
ZSAiSlNFbGVtZW50LmgiCisjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCisjaW5j
bHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlSW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPGhlYXAvV2Vha0lubGluZXMuaD4K
KyNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6SlNDdXN0b21F
bGVtZW50SW50ZXJmYWNlKEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKKyAgICA6IEFjdGl2ZURPTUNhbGxiYWNrKGdsb2JhbE9iamVjdC0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICwgbV9jb25zdHJ1Y3Rvcihjb25zdHJ1Y3RvcikK
KyAgICAsIG1faXNvbGF0ZWRXb3JsZCgmZ2xvYmFsT2JqZWN0LT53b3JsZCgpKQoreworfQorCitK
U0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6On5KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UoKQorewor
fQorCitjb25zdCBKU0M6OlByaXZhdGVOYW1lJiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmF0
dHJpYnV0ZUNoYW5nZWRDYWxsYmFja05hbWUoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxjb25zdCBKU0M6OlByaXZhdGVOYW1lPiBuYW1lID0gSlNDOjpQcml2YXRlTmFtZSgKKyAgICAg
ICAgSlNDOjpQcml2YXRlTmFtZTo6RGVzY3JpcHRpb24sIEFTQ0lJTGl0ZXJhbCgiU3ltYm9sRWxl
bWVudEF0dHJpYnV0ZUNoYW5nZWQiKSk7CisgICAgcmV0dXJuIG5hbWUuZ2V0KCk7Cit9CisKK1Jl
ZlB0cjxFbGVtZW50PiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmNvbnN0cnVjdChjb25zdCBB
dG9taWNTdHJpbmcmIHRhZ05hbWUpCit7CisgICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJlZjxKU0N1c3RvbUVsZW1lbnRJbnRlcmZh
Y2U+IHByb3RlY3QoKnRoaXMpOworCisgICAgSlNMb2NrSG9sZGVyIGxvY2sobV9pc29sYXRlZFdv
cmxkLT52bSgpKTsKKworICAgIGlmICghbV9jb25zdHJ1Y3RvcikKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CisgICAgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNET01HbG9iYWxPYmplY3QoY29udGV4dCwgKm1faXNv
bGF0ZWRXb3JsZCk7CisgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCk7CisKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CisgICAgQ29uc3RydWN0
VHlwZSBjb25zdHJ1Y3RUeXBlID0gbV9jb25zdHJ1Y3Rvci0+bWV0aG9kVGFibGUoKS0+Z2V0Q29u
c3RydWN0RGF0YShtX2NvbnN0cnVjdG9yLmdldCgpLCBjb25zdHJ1Y3REYXRhKTsKKyAgICBpZiAo
Y29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlTm9uZSkgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgTWFya2Vk
QXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICBhcmdzLmFwcGVuZChqc1N0cmluZ1dpdGhDYWNoZShl
eGVjLCB0YWdOYW1lKSk7CisKKy8vIEZJWE1FOiBhZGQgYmFjayBpbnNwZWN0b3IgaW5zdHJ1bWVu
dGF0aW9uCisvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSlNNYWlu
VGhyZWFkRXhlY1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb25DYWxsKGNvbnRleHQsIGNhbGxUeXBl
LCBjYWxsRGF0YSk7CisKKyAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGRvIHNvbWV0aGluZyBzcGVj
aWFsIGZvciBleGNlcHRpb25zPworICAgIEpTVmFsdWUgbmV3RWxlbWVudCA9IEpTTWFpblRocmVh
ZEV4ZWNTdGF0ZTo6Y29uc3RydWN0KGV4ZWMsIG1fY29uc3RydWN0b3IuZ2V0KCksIGNvbnN0cnVj
dFR5cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3MpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkgeworICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICB9CisKKy8vICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1
bmN0aW9uKGNvb2tpZSwgY29udGV4dCk7CisKKyAgICBFbGVtZW50KiBlbGVtZW50ID0gSlNFbGVt
ZW50Ojp0b1dyYXBwZWQobmV3RWxlbWVudCk7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkbyBz
b2VtdGVoaW5nIHNwZWNpYWwgd2hlbiB0aGUgY29uc3RydWN0b3IgcmV0dXJuZWQgYSBub24tRWxl
bWVudCBvYmplY3QuCisKKyAgICByZXR1cm4gZWxlbWVudDsKK30KKwordm9pZCBKU0N1c3RvbUVs
ZW1lbnRJbnRlcmZhY2U6OmF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudCYgZWxlbWVudCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVl
LCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQoreworICAgIGlmICghY2FuSW52b2tlQ2Fs
bGJhY2soKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmPEpTQ3VzdG9tRWxlbWVudEludGVy
ZmFjZT4gcHJvdGVjdCgqdGhpcyk7CisKKyAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2lzb2xhdGVk
V29ybGQtPnZtKCkpOworCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVy
bjsKKworICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOworICAgIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTRE9NR2xvYmFsT2JqZWN0KGNvbnRleHQsICptX2lz
b2xhdGVkV29ybGQpOworICAgIEV4ZWNTdGF0ZSogc3RhdGUgPSBnbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKTsKKworICAgIEpTT2JqZWN0KiBqc0VsZW1lbnQgPSBhc09iamVjdCh0b0pTKHN0YXRl
LCBnbG9iYWxPYmplY3QsICZlbGVtZW50KSk7CisKKyAgICBKU1ZhbHVlIGNhbGxiYWNrID0ganNF
bGVtZW50LT5nZXQoc3RhdGUsIGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFja05hbWUoKSk7CisgICAg
Q2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShj
YWxsYmFjaywgY2FsbERhdGEpOworICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpCisg
ICAgICAgIHJldHVybjsKKworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgYXJn
cy5hcHBlbmQoanNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGF0dHJpYnV0ZU5hbWUpKTsKKyAgICBh
cmdzLmFwcGVuZChqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgb2xkVmFsdWUpKTsKKyAgICBhcmdz
LmFwcGVuZChqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgbmV3VmFsdWUpKTsKKworICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBKU01haW5UaHJlYWRFeGVjU3RhdGU6
Omluc3RydW1lbnRGdW5jdGlvbkNhbGwoY29udGV4dCwgY2FsbFR5cGUsIGNhbGxEYXRhKTsKKwor
ICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXhjZXB0aW9uOworICAgIEpTTWFpblRocmVhZEV4ZWNT
dGF0ZTo6Y2FsbChzdGF0ZSwgY2FsbGJhY2ssIGNhbGxUeXBlLCBjYWxsRGF0YSwganNFbGVtZW50
LCBhcmdzLCBleGNlcHRpb24pOworCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRD
YWxsRnVuY3Rpb24oY29va2llLCBjb250ZXh0KTsKKworICAgIGlmIChleGNlcHRpb24pCisgICAg
ICAgIHJlcG9ydEV4Y2VwdGlvbihzdGF0ZSwgZXhjZXB0aW9uKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0
b21FbGVtZW50SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3Rv
bUVsZW1lbnRJbnRlcmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4y
NzlhNGVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBKU011dGF0aW9uQ2FsbGJhY2tfaAorI2RlZmluZSBKU011dGF0aW9uQ2FsbGJhY2tfaAor
CisjaW5jbHVkZSAiQWN0aXZlRE9NQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJET01XcmFwcGVyV29y
bGQuaCIKKyNpbmNsdWRlICJDdXN0b21FbGVtZW50SW50ZXJmYWNlLmgiCisjaW5jbHVkZSA8aGVh
cC9XZWFrLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5oPgorI2luY2x1ZGUgPHJ1bnRp
bWUvUHJpdmF0ZU5hbWUuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEpTRE9NR2xvYmFsT2JqZWN0OworCitjbGFzcyBKU0N1c3RvbUVs
ZW1lbnRJbnRlcmZhY2UgOiBwdWJsaWMgQ3VzdG9tRWxlbWVudEludGVyZmFjZSwgcHVibGljIEFj
dGl2ZURPTUNhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEpTQ3VzdG9tRWxlbWVu
dEludGVyZmFjZT4gY3JlYXRlKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlKGNhbGxiYWNrLCBnbG9iYWxPYmplY3QpKTsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIH5KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UoKTsKKworICAgIHN0YXRp
YyBjb25zdCBKU0M6OlByaXZhdGVOYW1lJiBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2tOYW1lKCk7
CisKK3ByaXZhdGU6CisgICAgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlKEpTQzo6SlNPYmplY3Qq
IGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCopOworCisgICAgdmlydHVhbCBSZWZQdHI8RWxl
bWVudD4gY29uc3RydWN0KGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSkgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudCYgZWxlbWVudCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVl
LCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKSBvdmVycmlkZTsKKworICAgIHZpcnR1YWwg
SlNDOjpKU09iamVjdCogY29uc3RydWN0b3IoKSBvdmVycmlkZSB7IHJldHVybiBtX2NvbnN0cnVj
dG9yLmdldCgpOyB9CisKKyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisKKyAgICBtdXRhYmxl
IEpTQzo6V2VhazxKU0M6OkpTT2JqZWN0PiBtX2NvbnN0cnVjdG9yOworICAgIFJlZlB0cjxET01X
cmFwcGVyV29ybGQ+IG1faXNvbGF0ZWRXb3JsZDsKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01CaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5jcHAKaW5kZXggZTFiMGI1Yi4uODYxMzViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSFRNTFBh
cnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAi
SlNFeGNlcHRpb25CYXNlLmgiCisjaW5jbHVkZSAiTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5oIgog
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENh
bGxTdGFjay5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg+
CkBAIC02NjYsNCArNjY3LDI2IEBAIHZvaWQgRE9NQ29uc3RydWN0b3JKU0J1aWx0aW5PYmplY3Q6
OnZpc2l0Q2hpbGRyZW4oSlNDOjpKU0NlbGwqIGNlbGwsIEpTQzo6U2xvdFZpCiAgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW5pdGlhbGl6ZUZ1bmN0aW9uKTsKIH0KIAorTGlmZWN5
Y2xlQ2FsbGJhY2tRdWV1ZSogQ3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjazo6
ZW5zdXJlQ3VycmVudFF1ZXVlKCkKK3sKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUg
dG8gcmVtb3ZlIHRoaXMgZWFybHkgcmV0dXJuIG9uY2UgTmVlZHNQcm9jZXNzaW5nU3RhY2sgaXMg
YWRkZGVkIGV2ZXJ5d2hlcmUuCisgICAgaWYgKCFzX2N1cnJlbnRQcm9jZXNzaW5nU3RhY2spCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byomIHF1ZXVlID0gc19jdXJyZW50UHJv
Y2Vzc2luZ1N0YWNrLT5tX3F1ZXVlOworICAgIGlmICghcXVldWUpIC8vIFdlIHVzZSBhIHJhdyBw
b2ludGVyIHRvIGF2b2lkIGdlbmVhcmluZyBjb2RlIHRvIGRlbGV0ZSBpdCBpbiB+Q3VzdG9tRWxl
bWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjay4KKyAgICAgICAgcXVldWUgPSBuZXcgTGlmZWN5
Y2xlQ2FsbGJhY2tRdWV1ZTsKKyAgICByZXR1cm4gcXVldWU7Cit9CisKK3ZvaWQgQ3VzdG9tRWxl
bWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjazo6cHJvY2Vzc1F1ZXVlKCkKK3sKKyAgICBBU1NF
UlQobV9xdWV1ZSk7CisgICAgbV9xdWV1ZS0+aW52b2tlQWxsKCk7CisgICAgZGVsZXRlIG1fcXVl
dWU7CisgICAgbV9xdWV1ZSA9IG51bGxwdHI7Cit9CisKK0N1c3RvbUVsZW1lbnRMaWZlY3ljbGVQ
cm9jZXNzaW5nU3RhY2sqIEN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2s6OnNf
Y3VycmVudFByb2Nlc3NpbmdTdGFjayA9IG51bGxwdHI7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKaW5kZXggOGI5YjFj
Yy4uOTcwZjY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgK
QEAgLTYyLDYgKzYyLDcgQEAgY2xhc3MgQ2FjaGVkU2NyaXB0OwogY2xhc3MgRE9NU3RyaW5nTGlz
dDsKIGNsYXNzIERPTVdpbmRvdzsKIGNsYXNzIEZyYW1lOworY2xhc3MgTGlmZWN5Y2xlQ2FsbGJh
Y2tRdWV1ZTsKIGNsYXNzIFVSTDsKIGNsYXNzIE5vZGU7CiAKQEAgLTY3OCw2ICs2NzksMzMgQEAg
aW5saW5lIHZvaWQgc2V0UHJvcGVydHlUb09iamVjdChKU0M6OkV4ZWNTdGF0ZSYgZXhlYywgSlND
OjpKU09iamVjdCYgb2JqZWN0LCBjb24KICAgICBKU0M6OlB1dFByb3BlcnR5U2xvdCBwcm9wZXJ0
eVNsb3QoJm9iamVjdCk7CiAgICAgSlNDOjpKU09iamVjdDo6cHV0KCZvYmplY3QsICZleGVjLCBK
U0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMsIG5hbWUpLCB2YWx1ZSwgcHJvcGVydHlT
bG90KTsKIH0KKworY2xhc3MgQ3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayB7
CitwdWJsaWM6CisgICAgQ3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjaygpCisg
ICAgICAgIDogbV9wcmV2aW91c1Byb2Nlc3NpbmdTdGFjayhzX2N1cnJlbnRQcm9jZXNzaW5nU3Rh
Y2spCisgICAgeworICAgICAgICBzX2N1cnJlbnRQcm9jZXNzaW5nU3RhY2sgPSB0aGlzOworICAg
IH0KKworICAgIH5DdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrKCkKKyAgICB7
CisgICAgICAgIGlmIChVTkxJS0VMWShtX3F1ZXVlKSkKKyAgICAgICAgICAgIHByb2Nlc3NRdWV1
ZSgpOworICAgICAgICBzX2N1cnJlbnRQcm9jZXNzaW5nU3RhY2sgPSBtX3ByZXZpb3VzUHJvY2Vz
c2luZ1N0YWNrOworICAgIH0KKworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhIHJlZmVy
ZW5jZSBvbmNlICJlbnN1cmUiIHN0YXJ0cyB0byB3b3JrLgorICAgIHN0YXRpYyBMaWZlY3ljbGVD
YWxsYmFja1F1ZXVlKiBlbnN1cmVDdXJyZW50UXVldWUoKTsKKworcHJpdmF0ZToKKyAgICB2b2lk
IHByb2Nlc3NRdWV1ZSgpOworCisgICAgTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZSogbV9xdWV1ZSB7
IG51bGxwdHIgfTsKKyAgICBDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrKiBt
X3ByZXZpb3VzUHJvY2Vzc2luZ1N0YWNrOworCisgICAgc3RhdGljIEN1c3RvbUVsZW1lbnRMaWZl
Y3ljbGVQcm9jZXNzaW5nU3RhY2sqIHNfY3VycmVudFByb2Nlc3NpbmdTdGFjazsKK307CiAgICAg
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggZWMwYjljMi4uOWIwYmE5OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTI1LDYg
KzI1LDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgiCisjaW5jbHVkZSAi
SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3dDdXN0b20u
aCIKICNpbmNsdWRlICJKU0hUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkpTTG9jYXRpb24uaCIK
QEAgLTM1LDYgKzM2LDkgQEAKICNpbmNsdWRlICJTVkdEb2N1bWVudC5oIgogI2luY2x1ZGUgIlNj
cmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJUb3VjaExpc3QuaCIKKworI2luY2x1ZGUgPHJ1
bnRpbWUvRXJyb3IuaD4KKyNpbmNsdWRlIDxydW50aW1lL1ByaXZhdGVOYW1lLmg+CiAjaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPgogCiAjaWYgRU5BQkxFKFdFQkdMKQpAQCAtMTMwLDQgKzEzNCw0MCBA
QCBKU1ZhbHVlIEpTRG9jdW1lbnQ6OmNyZWF0ZVRvdWNoTGlzdChFeGVjU3RhdGUmIHN0YXRlKQog
fQogI2VuZGlmCiAKKworSlNWYWx1ZSBKU0RvY3VtZW50OjpkZWZpbmVDdXN0b21FbGVtZW50KEV4
ZWNTdGF0ZSYgc3RhdGUpCit7CisgICAgQXRvbWljU3RyaW5nIHRhZ05hbWUoc3RhdGUuYXJndW1l
bnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dG9BdG9taWNTdHJpbmcoJnN0YXRlKSk7CisgICAgaWYg
KFVOTElLRUxZKHN0YXRlLmhhZEV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CisKKyAgICBKU09iamVjdCogb2JqZWN0ID0gc3RhdGUuYXJndW1lbnQoMSkuZ2V0T2Jq
ZWN0KCk7CisgICAgQ29uc3RydWN0RGF0YSBjYWxsRGF0YTsKKyAgICBpZiAoIW9iamVjdCB8fCBv
YmplY3QtPm1ldGhvZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEob2JqZWN0LCBjYWxsRGF0YSkg
PT0gQ29uc3RydWN0VHlwZU5vbmUpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3Rh
dGUsICJUaGUgc2Vjb25kIGFyZ3VtZW50IG11c3QgYmUgYSBjb25zdHJ1Y3RvciIpOworCisgICAg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNET01HbG9iYWxPYmplY3QoJmlt
cGwoKSwgJnN0YXRlKTsKKworICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGltcGwoKTsKKyAgICBz
d2l0Y2ggKGRvY3VtZW50LmNoZWNrQ3VzdG9tRWxlbWVudE5hbWUodGFnTmFtZSkpIHsKKyAgICBj
YXNlIEN1c3RvbUVsZW1lbnROYW1lU3RhdHVzOjpWYWxpZDoKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBDdXN0b21FbGVtZW50TmFtZVN0YXR1czo6RHVwbGljYXRlOgorICAgICAgICByZXR1cm4g
Y3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwgTk9UX1NVUFBPUlRFRF9FUlIpOworICAgIGNhc2Ug
Q3VzdG9tRWxlbWVudE5hbWVTdGF0dXM6OkNvbmZsaWN0c1dpdGhCdWlsdGluTmFtZXM6CisgICAg
ICAgIHJldHVybiB0aHJvd1N5bnRheEVycm9yKCZzdGF0ZSwgIkN1c3RvbSBlbGVtZW50IG5hbWUg
Y2Fubm90IGJlIHNhbWUgYXMgb25lIG9mIHRoZSBidWlsdGluIGVsZW1lbnRzIik7CisgICAgY2Fz
ZSBDdXN0b21FbGVtZW50TmFtZVN0YXR1czo6Tm9IeXBoZW46CisgICAgICAgIHJldHVybiB0aHJv
d1N5bnRheEVycm9yKCZzdGF0ZSwgIkN1c3RvbSBlbGVtZW50IG5hbWUgbXVzdCBjb250YWluIGEg
aHlwaGVuIik7CisgICAgY2FzZSBDdXN0b21FbGVtZW50TmFtZVN0YXR1czo6Q29udGFpbnNVcHBl
ckNhc2U6CisgICAgICAgIHJldHVybiB0aHJvd1N5bnRheEVycm9yKCZzdGF0ZSwgIkN1c3RvbSBl
bGVtZW50IG5hbWUgY2Fubm90IGNvbnRhaW4gYW4gdXBwZXIgY2FzZSBsZXR0ZXIiKTsKKyAgICB9
CisKKyAgICBkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50KFF1YWxpZmllZE5hbWUobnVsbEF0
b20sIHRhZ05hbWUsIEhUTUxOYW1lczo6eGh0bWxOYW1lc3BhY2VVUkkpLCBKU0N1c3RvbUVsZW1l
bnRJbnRlcmZhY2U6OmNyZWF0ZShvYmplY3QsIGdsb2JhbE9iamVjdCkpOworICAgIFByaXZhdGVO
YW1lIHVuaXF1ZVByaXZhdGVOYW1lOworICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KGdsb2Jh
bE9iamVjdC0+dm0oKSwgdW5pcXVlUHJpdmF0ZU5hbWUsIG9iamVjdCk7CisKKyAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcAppbmRleCA3MmRkMzhlLi4y
M2Q3MTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0VsZW1lbnRD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3Rv
bS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJIVE1MRnJhbWVFbGVtZW50QmFzZS5o
IgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkpTQXR0ci5oIgorI2luY2x1ZGUg
IkpTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgog
I2luY2x1ZGUgIkpTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5oIgogI2luY2x1ZGUgIkpTTm9k
ZUxpc3QuaCIKQEAgLTQyLDYgKzQzLDcgQEAKICNpbmNsdWRlICJKU1NWR0VsZW1lbnRXcmFwcGVy
RmFjdG9yeS5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5o
IgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N5bWJvbEltcGwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIApAQCAtNTQsNyArNTYsMTAgQEAgSlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0
ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVsZW1lbnQqIGUKICAgICBpZiAo
IWVsZW1lbnQpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKIAotICAgIEFTU0VSVCghZ2V0Q2Fj
aGVkV3JhcHBlcihnbG9iYWxPYmplY3QtPndvcmxkKCksIGVsZW1lbnQpKTsKKyAgICAvLyBGSVhN
RTogQWRkIGJhY2sgdGhlIGFzc2VydGlvbiBmb3Igbm9uLWN1c3RvbSBlbGVtZW50cy4KKy8vICAg
IEFTU0VSVCghZ2V0Q2FjaGVkV3JhcHBlcihnbG9iYWxPYmplY3QtPndvcmxkKCksIGVsZW1lbnQp
KTsKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGdldENhY2hlZFdyYXBwZXIoZ2xvYmFsT2JqZWN0
LT53b3JsZCgpLCBlbGVtZW50KSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKICAgICBKU0RP
TVdyYXBwZXIqIHdyYXBwZXI7ICAgICAgICAKICAgICBpZiAoaXM8SFRNTEVsZW1lbnQ+KCplbGVt
ZW50KSkKQEAgLTY3LDYgKzcyLDExIEBAIEpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChFeGVjU3Rh
dGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbGVtZW50KiBlCiAgICAgcmV0
dXJuIHdyYXBwZXI7ICAgIAogfQogCitKU1ZhbHVlIEpTRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdl
ZChFeGVjU3RhdGUmIHN0YXRlKQoreworICAgIHJldHVybiBTeW1ib2w6OmNyZWF0ZShzdGF0ZS52
bSgpLCAqSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjphdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2tO
YW1lKCkudWlkKCkpOworfQorCiBKU1ZhbHVlIEpTRWxlbWVudDo6YmVmb3JlKEV4ZWNTdGF0ZSYg
c3RhdGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRDdXN0b20uY3BwCmluZGV4IDNkNDhkZjAuLjk0
MWY1YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVsZW1l
bnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVsZW1l
bnRDdXN0b20uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yNiwxNCArMjYsNTcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJKU0hUTUxFbGVtZW50LmgiCiAKKyNpbmNsdWRlICJKU0N1c3RvbUVsZW1lbnRJbnRlcmZh
Y2UuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5o
IgorI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTV2l0aFNj
b3BlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU0hUTUxFbGVtZW50KEV4ZWNT
dGF0ZSogc3RhdGUpCit7CisgICAgRE9NQ29uc3RydWN0b3JPYmplY3QqIGpzQ29uc3RydWN0b3Ig
PSBqc0Nhc3Q8RE9NQ29uc3RydWN0b3JPYmplY3QqPihzdGF0ZS0+Y2FsbGVlKCkpOworCisgICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGpzQ29uc3RydWN0b3ItPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQgfHwgIWNvbnRleHQtPmlzRG9jdW1l
bnQoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JEb2N1bWVudFVuYXZhaWxhYmxl
RXJyb3IoKnN0YXRlLCAiSFRNTEVsZW1lbnQiKTsKKyAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25j
YXN0PERvY3VtZW50PigqY29udGV4dCk7CisKKyAgICBpZiAoc3RhdGUtPmFyZ3VtZW50Q291bnQo
KSA8IDEpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisKKyAgICBTdHJpbmcgbmFtZTsKKyAgICBpZiAoIXN0
YXRlLT5hcmd1bWVudCgwKS5nZXRTdHJpbmcoc3RhdGUsIG5hbWUpKQorICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgIlRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgY3Vz
dG9tIGVsZW1lbnQgbmFtZSIpOworCisgICAgQ3VzdG9tRWxlbWVudEludGVyZmFjZSogaW50ZXJm
YWNlID0gZG9jdW1lbnQuZmluZEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UobmFtZSk7CisgICAgaWYg
KCFpbnRlcmZhY2UpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCAiVGhl
IGZpcnN0IGFyZ3VtZW50IGlzIG5vdCBhIHZhbGlkIGN1c3RvbSBlbGVtZW50IG5hbWUiKTsKKwor
ICAgIEpTT2JqZWN0KiBuZXdUYXJnZXQgPSBzdGF0ZS0+dGhpc1ZhbHVlKCkuZ2V0T2JqZWN0KCk7
CisgICAgaWYgKG5ld1RhcmdldCAhPSBpbnRlcmZhY2UtPmNvbnN0cnVjdG9yKCkpCisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCAiQXR0ZW1wdCB0byBjb25zdHJ1Y3QgYSBj
dXN0b20gZWxlbWVudCB3aXRoIGEgd3JvbmcgaW50ZXJmYWNlIik7CisKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBKU1ZhbHVlIHByb3RvdHlwZU9iamVjdCA9IG5ld1RhcmdldC0+Z2V0
KHN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpOworICAgIGlmIChzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisKKyAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmpl
Y3QoKTsKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGNyZWF0ZSBhIG5ldyBzdHJ1Y3R1cmUg
ZWFjaCB0aW1lLiBDYWNoZSBpdCBvbiB0aGUgY29uc3RydWN0b3Igb2JqZWN0IG9yIGludGVyZmFj
ZSB3cmFwcGVyLgorICAgIGF1dG8qIG5ld0VsZW1lbnRTdHJ1Y3R1cmUgPSBKU0hUTUxFbGVtZW50
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlT2JqZWN0KTsKKwor
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZ2V0IHRoZSBxdWFsaWZpZWQgbmFtZSBvdXQgb2YgdGhl
IGludGVyZmFjZS4KKyAgICBSZWY8SFRNTEVsZW1lbnQ+IGVsZW1lbnQgPSBIVE1MRWxlbWVudDo6
Y3JlYXRlKFF1YWxpZmllZE5hbWUobnVsbEF0b20sIG5hbWUsIEhUTUxOYW1lczo6eGh0bWxOYW1l
c3BhY2VVUkkpLCBkb2N1bWVudCk7CisgICAgZWxlbWVudC0+c2V0Q3VzdG9tRWxlbWVudCgpOwor
ICAgIGF1dG8qIGpzRWxlbWVudCA9IEpTSFRNTEVsZW1lbnQ6OmNyZWF0ZShuZXdFbGVtZW50U3Ry
dWN0dXJlLCBnbG9iYWxPYmplY3QsIGVsZW1lbnQuZ2V0KCkpOworICAgIGNhY2hlV3JhcHBlcihn
bG9iYWxPYmplY3QtPndvcmxkKCksIGVsZW1lbnQucHRyKCksIGpzRWxlbWVudCk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0VsZW1lbnQpOworfQorCiBKU1Njb3BlKiBKU0hUTUxFbGVt
ZW50OjpwdXNoRXZlbnRIYW5kbGVyU2NvcGUoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29w
ZSkgY29uc3QKIHsKICAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9IGltcGwoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgKaW5kZXgg
MDllN2U1Yi4uMjZjNjZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNNYWluVGhyZWFkRXhlY1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNNYWluVGhyZWFkRXhlY1N0YXRlLmgKQEAgLTU2LDYgKzU2LDEzIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIEpTQzo6Y2FsbChleGVjLCBmdW5jdGlvbk9iamVjdCwgY2FsbFR5cGUsIGNhbGxE
YXRhLCB0aGlzVmFsdWUsIGFyZ3MsIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICB9OwogCisgICAg
c3RhdGljIEpTQzo6SlNWYWx1ZSBjb25zdHJ1Y3QoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6
SlNWYWx1ZSBjb25zdHJ1Y3Rvck9iamVjdCwgSlNDOjpDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5
cGUsIGNvbnN0IEpTQzo6Q29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSwKKyAgICAgICAgY29u
c3QgSlNDOjpBcmdMaXN0JiBhcmdzKQorICAgIHsKKyAgICAgICAgSlNNYWluVGhyZWFkRXhlY1N0
YXRlIGN1cnJlbnRTdGF0ZShleGVjKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6Y29uc3RydWN0KGV4
ZWMsIGNvbnN0cnVjdG9yT2JqZWN0LCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdz
KTsKKyAgICB9OworCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZShKU0M6OkV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBzb3VyY2UsIEpTQzo6SlNWYWx1ZSB0
aGlzVmFsdWUsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pCiAg
ICAgewogICAgICAgICBKU01haW5UaHJlYWRFeGVjU3RhdGUgY3VycmVudFN0YXRlKGV4ZWMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQppbmRleCA0ZGQ4N2RjLi4xNTZiNzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTE0Myw3ICsxMTQzLDExIEBAIHN1
YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICAgICAgaWYgKEhhc0N1c3RvbUdldHRlcigkYXR0cmli
dXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcykpIHsKICAgICAgICAgICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29u
ZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgICAgICAgICAgbXkgJG1ldGhvZE5hbWUgPSAkY29kZUdl
bmVyYXRvci0+V0tfbGNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpOwotICAgICAg
ICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgSlNDOjpKU1ZhbHVlICIgLiAkbWV0
aG9kTmFtZSAuICIoSlNDOjpFeGVjU3RhdGUmKSBjb25zdDtcbiIpOworICAgICAgICAgICAgICAg
IGlmICgkYXR0cmlidXRlLT5pc1N0YXRpYykgeworICAgICAgICAgICAgICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgIiAuICRtZXRob2ROYW1lIC4g
IihKU0M6OkV4ZWNTdGF0ZSYpO1xuIik7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBKU0M6OkpTVmFsdWUgIiAu
ICRtZXRob2ROYW1lIC4gIihKU0M6OkV4ZWNTdGF0ZSYpIGNvbnN0O1xuIik7CisgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjZW5kaWZcbiIp
IGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChI
YXNDdXN0b21TZXR0ZXIoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMp
ICYmICFJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpKSB7CkBAIC0yMzc2LDcgKzIzODAsMTEgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIH0gIyBhdHRyaWJ1dGUgTm9uZGV0
ZXJtaW5pc3RpYwogCiAgICAgICAgICAgICBpZiAoSGFzQ3VzdG9tR2V0dGVyKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKSkgewotICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+JGlt
cGxHZXR0ZXJGdW5jdGlvbk5hbWUoKnN0YXRlKSk7XG4iKTsKKyAgICAgICAgICAgICAgICBpZiAo
JGF0dHJpYnV0ZS0+aXNTdGF0aWMpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSgke2NsYXNzTmFtZX06OiRpbXBsR2V0
dGVyRnVuY3Rpb25OYW1lKCpzdGF0ZSkpO1xuIik7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShjYXN0ZWRUaGlzLT4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgqc3RhdGUpKTtc
biIpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrU2VjdXJpdHlGb3JOb2RlIn0p
IHsKICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU0RPTUJpbmRpbmcuaCJ9ID0gMTsK
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpO1xuIik7CkBAIC0yOTA2LDYgKzI5MTQsMTAgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siPHJ1bnRpbWUvRXJy
b3IuaD4ifSA9IDE7CiAKKyAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Ik5lZWRzUHJvY2Vzc2luZ1N0YWNrIn0pIHsKKyAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vz
c2luZ1N0YWNrIGN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2s7XG4iKTsKKyAg
ICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+aXNTdGF0aWMpIHsKICAg
ICAgICAgICAgICAgICBpZiAoJGlzQ3VzdG9tKSB7CiAgICAgICAgICAgICAgICAgICAgIEdlbmVy
YXRlQXJndW1lbnRzQ291bnRDaGVjayhcQGltcGxDb250ZW50LCAkZnVuY3Rpb24sICRpbnRlcmZh
Y2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRy
aWJ1dGVzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRl
cy50eHQKaW5kZXggZGQxMDI3My4uMTllNDIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CkBAIC04OSw2ICs4OSw3IEBAIEpTR2Vu
ZXJhdGVUb05hdGl2ZU9iamVjdAogSlNMZWdhY3lQYXJlbnQ9KgogTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZAogTmFtZWRDb25zdHJ1Y3Rvcj0qCitOZWVkc1Byb2Nlc3NpbmdTdGFjawogTmV3SW1wdXJl
UHJvcGVydHlGaXJlc1dhdGNocG9pbnRzCiBOZXdPYmplY3QKIE5vSW50ZXJmYWNlT2JqZWN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwCmluZGV4IDNhMDg4MmMuLjAyMDE2ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0xNTMsNiArMTUz
LDcgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbigKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkRvbVN0cmluZ0xpc3RGdW5jdGlvbihK
U0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNl
KEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVu
Y2UyKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTmVlZHNQcm9jZXNzaW5nU3RhY2so
SlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldFNWR0RvY3VtZW50KEpTQzo6RXhlY1N0YXRlKik7CiBK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25Db252ZXJ0MShKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDIoSlNDOjpFeGVjU3RhdGUq
KTsKQEAgLTMwMSw2ICszMDIsNyBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakRlc2Ny
aXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6RQogSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpJZChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiB2b2lkIHNldEpTVGVzdE9i
aklkKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpIYXNo
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0
b3JBdHRyaWJ1dGVDaGFuZ2VkKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2Jq
ZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogdm9pZCBzZXRK
U1Rlc3RPYmpSZXBsYWNlYWJsZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVEb3VibGVBdHRyaWJ1dGUoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOwpAQCAtNDM5LDYgKzQ0MSw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rl
c3RPYmpDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQogICAgIHsgInN0YXRpY1JlYWRPbmx5TG9u
Z0F0dHIiLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQ29uc3RydWN0
b3JTdGF0aWNSZWFkT25seUxvbmdBdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgInN0YXRpY1N0cmluZ0F0dHIi
LCBEb250RGVsZXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakNvbnN0cnVjdG9yU3RhdGljU3RyaW5nQXR0
ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTVGVzdE9iakNvbnN0cnVjdG9yU3RhdGljU3RyaW5nQXR0cikgfSB9LAogICAgIHsgIlRl
c3RTdWJPYmoiLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQ29uc3Ry
dWN0b3JUZXN0U3ViT2JqKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAorICAgIHsgImF0dHJpYnV0ZUNoYW5nZWQiLCBEb250RGVs
ZXRlIHwgUmVhZE9ubHksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQ29uc3RydWN0b3JBdHRyaWJ1dGVDaGFu
Z2VkKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oMCkgfSB9LAogICAgIHsgInN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJn
IiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5h
dGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0
aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAic3Rh
dGljTWV0aG9kV2l0aENhbGxiYWNrQXJnIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpDb25zdHJ1Y3Rv
ckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJnKSwgKGludHB0cl90KSAoMSkgfSB9
LAogICAgIHsgImNsYXNzTWV0aG9kIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1
bmN0aW9uQ2xhc3NNZXRob2QpLCAoaW50cHRyX3QpICgwKSB9IH0sCkBAIC02OTUsNiArNjk4LDcg
QEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialByb3RvdHlwZVRhYmxlVmFs
dWVzW10gPQogICAgIHsgImRvbVN0cmluZ0xpc3RGdW5jdGlvbiIsIEpTQzo6RnVuY3Rpb24sIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25Eb21TdHJpbmdMaXN0RnVuY3Rpb24pLCAoaW50cHRyX3QpICgx
KSB9IH0sCiAgICAgeyAibWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlIiwgSlND
OjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1
bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBbmRXaXRob3V0TnVs
bGFibGVTZXF1ZW5jZSksIChpbnRwdHJfdCkgKDIpIH0gfSwKICAgICB7ICJtZXRob2RXaXRoQW5k
V2l0aG91dE51bGxhYmxlU2VxdWVuY2UyIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGFibGVTZXF1ZW5jZTIpLCAoaW50cHRyX3Qp
ICgyKSB9IH0sCisgICAgeyAibWV0aG9kV2l0aE5lZWRzUHJvY2Vzc2luZ1N0YWNrIiwgSlNDOjpG
dW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0
aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOZWVkc1Byb2Nlc3NpbmdT
dGFjayksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJnZXRTVkdEb2N1bWVudCIsIEpTQzo6
RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5j
dGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTVkdEb2N1bWVudCksIChpbnRwdHJf
dCkgKDApIH0gfSwKICAgICB7ICJjb252ZXJ0MSIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25Db252ZXJ0MSksIChpbnRwdHJfdCkgKDEpIH0gfSwKICAgICB7ICJjb252ZXJ0
MiIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxO
YXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MiksIChpbnRw
dHJfdCkgKDEpIH0gfSwKQEAgLTE3OTUsNiArMTc5OSwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpIYXNoKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpT
VmFsdQogfQogCiAKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yQXR0cmlidXRl
Q2hhbmdlZChFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CisgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKKyAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVl
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE9iajo6YXR0cmlidXRlQ2hhbmdl
ZCgqc3RhdGUpKTsKK30KKworCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZXBsYWNlYWJsZUF0
dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CkBAIC00NTY3LDYgKzQ1ODAsMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGEKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5lZWRzUHJv
Y2Vzc2luZ1N0YWNrKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgQ3VzdG9tRWxlbWVudExpZmVj
eWNsZVByb2Nlc3NpbmdTdGFjayBjdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNr
OworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOworICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsK
KyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE5lZWRzUHJvY2Vzc2luZ1N0
YWNrIik7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBp
bXBsLm1ldGhvZFdpdGhOZWVkc1Byb2Nlc3NpbmdTdGFjaygpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTVkdEb2N1bWVudChFeGVjU3RhdGUqIHN0
YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5o
CmluZGV4IDc2OWYxZWUuLjcxYjc0ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKQEAgLTU5LDYgKzU5LDcgQEAgcHVibGlj
OgogICAgIC8vIEN1c3RvbSBhdHRyaWJ1dGVzCiAgICAgSlNDOjpKU1ZhbHVlIGN1c3RvbUF0dHIo
SlNDOjpFeGVjU3RhdGUmKSBjb25zdDsKICAgICB2b2lkIHNldEN1c3RvbUF0dHIoSlNDOjpFeGVj
U3RhdGUmLCBKU0M6OkpTVmFsdWUpOworICAgIEpTQzo6SlNWYWx1ZSBhdHRyaWJ1dGVDaGFuZ2Vk
KEpTQzo6RXhlY1N0YXRlJikgY29uc3Q7CiAKICAgICAvLyBDdXN0b20gZnVuY3Rpb25zCiAgICAg
SlNDOjpKU1ZhbHVlIGN1c3RvbU1ldGhvZChKU0M6OkV4ZWNTdGF0ZSYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCmluZGV4IDM1ZDQ2MWYu
LmJlMzQwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0T2JqLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdE9iai5pZGwKQEAgLTIzNiw2ICsyMzYsOCBAQCBlbnVtIF9vcHRpb25hbCB7ICIiLCAiT3B0
aW9uYWxWYWx1ZTEiLCAiT3B0aW9uYWxWYWx1ZTIiLCAiT3B0aW9uYWxWYWx1ZTMiIH07CiAKICAg
ICB2b2lkIG1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGFibGVTZXF1ZW5jZShzZXF1ZW5jZTx1bnNp
Z25lZCBsb25nPiBhcnJheUFyZywgc2VxdWVuY2U8dW5zaWduZWQgbG9uZz4/IG51bGxhYmxlQXJy
YXlBcmcpOwogICAgIHZvaWQgbWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlMih1
bnNpZ25lZCBsb25nW10gYXJyYXlBcmcsIHVuc2lnbmVkIGxvbmdbXT8gbnVsbGFibGVBcnJheUFy
Zyk7CisKKyAgICBbTmVlZHNQcm9jZXNzaW5nU3RhY2tdIHZvaWQgbWV0aG9kV2l0aE5lZWRzUHJv
Y2Vzc2luZ1N0YWNrKCk7CiAjZW5kaWYKIAogICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gcmVh
ZG9ubHkgYXR0cmlidXRlIERvY3VtZW50IGNvbnRlbnREb2N1bWVudDsKQEAgLTI3OCw2ICsyODAs
MTAgQEAgZW51bSBfb3B0aW9uYWwgeyAiIiwgIk9wdGlvbmFsVmFsdWUxIiwgIk9wdGlvbmFsVmFs
dWUyIiwgIk9wdGlvbmFsVmFsdWUzIiB9OwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENPTlNU
X1ZBTFVFXzE0ID0gMHgxYWJjOwogICAgIFtSZWZsZWN0PUNPTlNUX0lNUExdIGNvbnN0IHVuc2ln
bmVkIHNob3J0IENPTlNUX0pBVkFTQ1JJUFQgPSAxNTsKIAorI2lmIGRlZmluZWQoVEVTVElOR19K
UykKKyAgICBbQ3VzdG9tXSBzdGF0aWMgcmVhZG9ubHkgYXR0cmlidXRlIFN5bWJvbCBhdHRyaWJ1
dGVDaGFuZ2VkOworI2VuZGlmCisKICAgICBbUmVwbGFjZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0
ZSBsb25nIHJlcGxhY2VhYmxlQXR0cmlidXRlOwogCiAgICAgdm9pZCB2YXJpYWRpY1N0cmluZ01l
dGhvZChET01TdHJpbmcgaGVhZCwgRE9NU3RyaW5nLi4uIHRhaWwpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DdXN0b21FbGVtZW50SW50ZXJmYWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNGY1NzVmOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
dXN0b21FbGVtZW50SW50ZXJmYWNlLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ3VzdG9tRWxlbWVudEludGVy
ZmFjZV9oCisjZGVmaW5lIEN1c3RvbUVsZW1lbnRJbnRlcmZhY2VfaAorCisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBKU09iamVjdDsKKworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEVsZW1lbnQ7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCitjbGFzcyBDdXN0b21F
bGVtZW50SW50ZXJmYWNlIDogcHVibGljIFJlZkNvdW50ZWQ8Q3VzdG9tRWxlbWVudEludGVyZmFj
ZT4geworcHVibGljOgorICAgIHZpcnR1YWwgfkN1c3RvbUVsZW1lbnRJbnRlcmZhY2UoKSB7IH0K
KworICAgIHZpcnR1YWwgUmVmUHRyPEVsZW1lbnQ+IGNvbnN0cnVjdChjb25zdCBBdG9taWNTdHJp
bmcmIHRhZ05hbWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChFbGVt
ZW50JiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpID0gMDsK
KworICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEpTQzo6SlNPYmplY3QqIGNvbnN0cnVjdG9y
KCkgPSAwOworfTsKKworfQorCisjZW5kaWYgLy8gQ3VzdG9tRWxlbWVudEludGVyZmFjZV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA4N2JiY2ZmLi5hNjY5NDE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJDb21tZW50LmgiCiAjaW5j
bHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiQ29va2llSmFyLmgiCisj
aW5jbHVkZSAiQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oIgogI2luY2x1ZGUgIkRPTUltcGxlbWVu
dGF0aW9uLmgiCiAjaW5jbHVkZSAiRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oIgogI2luY2x1ZGUg
IkRPTVdpbmRvdy5oIgpAQCAtOTgsNiArOTksNyBAQAogI2luY2x1ZGUgIkpTTGF6eUV2ZW50TGlz
dGVuZXIuaCIKICNpbmNsdWRlICJKU01vZHVsZUxvYWRlci5oIgogI2luY2x1ZGUgIkxhbmd1YWdl
LmgiCisjaW5jbHVkZSAiTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5oIgogI2luY2x1ZGUgIkxvYWRl
clN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1haW5GcmFtZS5o
IgpAQCAtNjIwOSw2ICs2MjExLDEwNCBAQCB1bnNpZ25lZCBEb2N1bWVudDo6dG91Y2hFdmVudEhh
bmRsZXJDb3VudCgpIGNvbnN0CiAjZW5kaWYKIH0KIAorY2xhc3MgQ3VzdG9tRWxlbWVudERlZmlu
aXRpb25zIHsKK3B1YmxpYzoKKyAgICB2b2lkIGFkZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgZnVsbE5hbWUsIFJlZjxDdXN0b21FbGVtZW50SW50ZXJmYWNlPiYmIGludGVyZmFjZSkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChtX21hcC5maW5kKGZ1bGxOYW1lLmxvY2FsTmFtZSgpKSA9PSBt
X21hcC5lbmQoKSk7CisgICAgICAgIG1fbWFwLmFkZChmdWxsTmFtZS5sb2NhbE5hbWUoKSwgQ3Vz
dG9tRWxlbWVudEluZm8oZnVsbE5hbWUsIFdURjo6bW92ZShpbnRlcmZhY2UpKSk7CisgICAgfQor
CisgICAgQ3VzdG9tRWxlbWVudEludGVyZmFjZSogZmluZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgZnVsbE5hbWUpCisgICAgeworICAgICAgICBhdXRvIGl0ID0gbV9tYXAuZmluZChmdWxs
TmFtZS5sb2NhbE5hbWUoKSk7CisgICAgICAgIHJldHVybiBpdCA9PSBtX21hcC5lbmQoKSB8fCBp
dC0+dmFsdWUuZnVsbE5hbWUgIT0gZnVsbE5hbWUgPyBudWxscHRyIDogaXQtPnZhbHVlLmludGVy
ZmFjZS5nZXQoKTsKKyAgICB9CisKKyAgICBDdXN0b21FbGVtZW50SW50ZXJmYWNlKiBmaW5kRWxl
bWVudChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCisgICAgeworICAgICAgICBhdXRvIGl0ID0g
bV9tYXAuZmluZChuYW1lKTsKKyAgICAgICAgcmV0dXJuIGl0ID09IG1fbWFwLmVuZCgpID8gbnVs
bHB0ciA6IGl0LT52YWx1ZS5pbnRlcmZhY2UuZ2V0KCk7CisgICAgfQorCitwcml2YXRlOgorICAg
IHN0cnVjdCBDdXN0b21FbGVtZW50SW5mbyB7CisgICAgICAgIFF1YWxpZmllZE5hbWUgZnVsbE5h
bWU7CisgICAgICAgIFJlZlB0cjxDdXN0b21FbGVtZW50SW50ZXJmYWNlPiBpbnRlcmZhY2U7CisK
KyAgICAgICAgQ3VzdG9tRWxlbWVudEluZm8oKQorICAgICAgICAgICAgOiBmdWxsTmFtZShudWxs
UU5hbWUoKSkKKyAgICAgICAgeyB9CisKKyAgICAgICAgQ3VzdG9tRWxlbWVudEluZm8oY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgUmVmPEN1c3RvbUVsZW1lbnRJbnRlcmZhY2U+JiYgaW50ZXJm
YWNlKQorICAgICAgICAgICAgOiBmdWxsTmFtZShuYW1lKQorICAgICAgICAgICAgLCBpbnRlcmZh
Y2UoV1RGOjptb3ZlKGludGVyZmFjZSkpCisgICAgICAgIHsgfQorICAgIH07CisKKyAgICBIYXNo
TWFwPEF0b21pY1N0cmluZywgQ3VzdG9tRWxlbWVudEluZm8+IG1fbWFwOworfTsKKworQ3VzdG9t
RWxlbWVudE5hbWVTdGF0dXMgRG9jdW1lbnQ6OmNoZWNrQ3VzdG9tRWxlbWVudE5hbWUoY29uc3Qg
QXRvbWljU3RyaW5nJiB0YWdOYW1lKQoreworICAgIGJvb2wgY29udGFpbnNIeXBoZW4gPSBmYWxz
ZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGFnTmFtZS5sZW5ndGgoKTsgaSsrKSB7
CisgICAgICAgIGlmIChpc0FTQ0lJVXBwZXIodGFnTmFtZVtpXSkpCisgICAgICAgICAgICByZXR1
cm4gQ3VzdG9tRWxlbWVudE5hbWVTdGF0dXM6OkNvbnRhaW5zVXBwZXJDYXNlOworICAgICAgICBl
bHNlIGlmICh0YWdOYW1lW2ldID09ICctJykKKyAgICAgICAgICAgIGNvbnRhaW5zSHlwaGVuID0g
dHJ1ZTsKKyAgICB9CisgICAgCisgICAgaWYgKCFjb250YWluc0h5cGhlbikKKyAgICAgICAgcmV0
dXJuIEN1c3RvbUVsZW1lbnROYW1lU3RhdHVzOjpOb0h5cGhlbjsKKworICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgYmUgdGFraW5nIHRoZSBhZHZhbnRhZ2Ugb2YgUXVhbGlmaWVkTmFtZXMgaW4gU1ZH
IGFuZCBNYXRoTUwuCisgICAgaWYgKHRhZ05hbWUgPT0gImFubm90YXRpb24teG1sIgorICAgICAg
ICB8fCB0YWdOYW1lID09ICJjb2xvci1wcm9maWxlIgorICAgICAgICB8fCB0YWdOYW1lID09ICJm
b250LWZhY2UiCisgICAgICAgIHx8IHRhZ05hbWUgPT0gImZvbnQtZmFjZS1zcmMiCisgICAgICAg
IHx8IHRhZ05hbWUgPT0gImZvbnQtZmFjZS11cmkiCisgICAgICAgIHx8IHRhZ05hbWUgPT0gImZv
bnQtZmFjZS1mb3JtYXQiCisgICAgICAgIHx8IHRhZ05hbWUgPT0gImZvbnQtZmFjZS1uYW1lIgor
ICAgICAgICB8fCB0YWdOYW1lID09ICJtaXNzaW5nLWdseXBoIikKKyAgICAgICAgcmV0dXJuIEN1
c3RvbUVsZW1lbnROYW1lU3RhdHVzOjpDb25mbGljdHNXaXRoQnVpbHRpbk5hbWVzOworCisgICAg
aWYgKG1fY3VzdG9tRWxlbWVudHMgJiYgbV9jdXN0b21FbGVtZW50cy0+ZmluZEVsZW1lbnQodGFn
TmFtZSkpCisgICAgICAgIHJldHVybiBDdXN0b21FbGVtZW50TmFtZVN0YXR1czo6RHVwbGljYXRl
OworCisgICAgcmV0dXJuIEN1c3RvbUVsZW1lbnROYW1lU3RhdHVzOjpWYWxpZDsKK30KKwordm9p
ZCBEb2N1bWVudDo6ZGVmaW5lQ3VzdG9tRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBSZWY8Q3VzdG9tRWxlbWVudEludGVyZmFjZT4mJiBpbnRlcmZhY2UpCit7CisgICAgQVNT
RVJUKGNoZWNrQ3VzdG9tRWxlbWVudE5hbWUodGFnTmFtZS5sb2NhbE5hbWUoKSkgPT0gQ3VzdG9t
RWxlbWVudE5hbWVTdGF0dXM6OlZhbGlkKTsKKworICAgIGlmICghbV9jdXN0b21FbGVtZW50cykK
KyAgICAgICAgbV9jdXN0b21FbGVtZW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VzdG9tRWxlbWVu
dERlZmluaXRpb25zPigpOworCisgICAgbV9jdXN0b21FbGVtZW50cy0+YWRkRWxlbWVudCh0YWdO
YW1lLCBXVEY6Om1vdmUoaW50ZXJmYWNlKSk7Cit9CisKK1JlZlB0cjxFbGVtZW50PiBEb2N1bWVu
dDo6Y3JlYXRlQ3VzdG9tRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQoreworICAg
IGlmICghbV9jdXN0b21FbGVtZW50cykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0
byogaW50ZXJmYWNlID0gbV9jdXN0b21FbGVtZW50cy0+ZmluZEVsZW1lbnQobmFtZSk7CisgICAg
aWYgKCFpbnRlcmZhY2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBpbnRl
cmZhY2UtPmNvbnN0cnVjdChuYW1lLmxvY2FsTmFtZSgpKTsKK30KKworQ3VzdG9tRWxlbWVudElu
dGVyZmFjZSogRG9jdW1lbnQ6OmZpbmRDdXN0b21FbGVtZW50SW50ZXJmYWNlKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gbV9jdXN0b21FbGVtZW50cyA/IG1fY3VzdG9t
RWxlbWVudHMtPmZpbmRFbGVtZW50KG5hbWUpIDogbnVsbHB0cjsKK30KKworQ3VzdG9tRWxlbWVu
dEludGVyZmFjZSogRG9jdW1lbnQ6OmZpbmRDdXN0b21FbGVtZW50SW50ZXJmYWNlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUpCit7CisgICAgcmV0dXJuIG1fY3VzdG9tRWxlbWVudHMgPyBtX2N1
c3RvbUVsZW1lbnRzLT5maW5kRWxlbWVudChuYW1lKSA6IG51bGxwdHI7Cit9CisKIExheW91dFJl
Y3QgRG9jdW1lbnQ6OmFic29sdXRlRXZlbnRIYW5kbGVyQm91bmRzKGJvb2wmIGluY2x1ZGVzRml4
ZWRQb3NpdGlvbkVsZW1lbnRzKQogewogICAgIGluY2x1ZGVzRml4ZWRQb3NpdGlvbkVsZW1lbnRz
ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDVhZGMzYzIuLjJmNGY5MTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCkBAIC04MCw2ICs4MCw4IEBAIGNsYXNzIENhY2hlZFNjcmlwdDsKIGNs
YXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ7CiBjbGFzcyBDaGFyYWN0ZXJEYXRhOwogY2xhc3Mg
Q29tbWVudDsKK2NsYXNzIEN1c3RvbUVsZW1lbnREZWZpbml0aW9uczsKK2NsYXNzIEN1c3RvbUVs
ZW1lbnRJbnRlcmZhY2U7CiBjbGFzcyBET01JbXBsZW1lbnRhdGlvbjsKIGNsYXNzIERPTU5hbWVk
Rmxvd0NvbGxlY3Rpb247CiBjbGFzcyBET01TZWxlY3Rpb247CkBAIC0yODAsNiArMjgyLDggQEAg
ZW51bSBjbGFzcyBIdHRwRXF1aXZQb2xpY3kgewogICAgIERpc2FibGVkQnlDb250ZW50RGlzcG9z
aXRpb25BdHRhY2htZW50U2FuZGJveAogfTsKIAorZW51bSBjbGFzcyBDdXN0b21FbGVtZW50TmFt
ZVN0YXR1cyB7IFZhbGlkLCBEdXBsaWNhdGUsIENvbmZsaWN0c1dpdGhCdWlsdGluTmFtZXMsIE5v
SHlwaGVuLCBDb250YWluc1VwcGVyQ2FzZSB9OworCiBjbGFzcyBEb2N1bWVudCA6IHB1YmxpYyBD
b250YWluZXJOb2RlLCBwdWJsaWMgVHJlZVNjb3BlLCBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgcHVibGljIEZvbnRTZWxlY3RvckNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCkBAIC0xMjAw
LDYgKzEyMDQsMTIgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCisgICAgQ3VzdG9tRWxlbWVu
dE5hbWVTdGF0dXMgY2hlY2tDdXN0b21FbGVtZW50TmFtZShjb25zdCBBdG9taWNTdHJpbmcmKTsK
KyAgICB2b2lkIGRlZmluZUN1c3RvbUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIFJlZjxD
dXN0b21FbGVtZW50SW50ZXJmYWNlPiYmKTsKKyAgICBSZWZQdHI8RWxlbWVudD4gY3JlYXRlQ3Vz
dG9tRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgQ3VzdG9tRWxlbWVudEludGVy
ZmFjZSogZmluZEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UoY29uc3QgQXRvbWljU3RyaW5nJik7Cisg
ICAgQ3VzdG9tRWxlbWVudEludGVyZmFjZSogZmluZEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOworCiAgICAgY29uc3QgRXZlbnRUYXJnZXRTZXQqIHdoZWVsRXZl
bnRUYXJnZXRzKCkgY29uc3QgeyByZXR1cm4gbV93aGVlbEV2ZW50VGFyZ2V0cy5nZXQoKTsgfQog
CiAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8UmVnaW9uLCBib29sPiBSZWdpb25GaXhlZFBhaXI7CkBA
IC0xNzIxLDYgKzE3MzEsOCBAQCBwcml2YXRlOgogICAgIERvY3VtZW50KiBtX3RlbXBsYXRlRG9j
dW1lbnRIb3N0OyAvLyBNYW51YWxseSBtYW5hZ2VkIHdlYWtyZWYgKGJhY2twb2ludGVyIGZyb20g
bV90ZW1wbGF0ZURvY3VtZW50KS4KICNlbmRpZgogCisgICAgc3RkOjp1bmlxdWVfcHRyPEN1c3Rv
bUVsZW1lbnREZWZpbml0aW9ucz4gbV9jdXN0b21FbGVtZW50czsKKwogICAgIFJlZlB0cjxDU1NG
b250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9yOwogCiAjaWYgRU5BQkxFKEZPTlRfTE9BRF9FVkVO
VFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAppbmRleCBlMjZlYzA0Li40OGJmNzQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5pZGwKQEAgLTI4MSw2ICsyODEsMTEgQEAKICAgICBbTmV3T2JqZWN0LCBD
dXN0b20sIFJhaXNlc0V4Y2VwdGlvbl0gVG91Y2hMaXN0IGNyZWF0ZVRvdWNoTGlzdCgpOwogI2Vu
ZGlmCiAKKyAgICAvLyBDdXN0b20gZWxlbWVudHMKKyNpZiBkZWZpbmVkKExBTkdVQUdFX0pBVkFT
Q1JJUFQpICYmIExBTkdVQUdFX0pBVkFTQ1JJUFQKKyAgICBbQ3VzdG9tLCBSYWlzZXNFeGNlcHRp
b25dIHZvaWQgZGVmaW5lQ3VzdG9tRWxlbWVudChET01TdHJpbmcgdGFnTmFtZSwgQ3VzdG9tRWxl
bWVudEludGVyZmFjZSBlbGVtZW50SW50ZXJmYWNlKTsKKyNlbmRpZgorCiAgICAgLy8gUGFnZSB2
aXNpYmlsaXR5IEFQSS4KICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZpc2liaWxp
dHlTdGF0ZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBoaWRkZW47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKaW5kZXggZDQ3NjY0Yy4uM2NkZjQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkNsaWVudFJlY3QuaCIKICNpbmNsdWRlICJD
bGllbnRSZWN0TGlzdC5oIgogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgiCisj
aW5jbHVkZSAiQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oIgogI2luY2x1ZGUgIkRPTVRva2VuTGlz
dC5oIgogI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJEb2N1bWVudFNoYXJlZE9i
amVjdFBvb2wuaCIKQEAgLTU2LDYgKzU3LDcgQEAKICNpbmNsdWRlICJIVE1MVGVtcGxhdGVFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAi
S2V5Ym9hcmRFdmVudC5oIgorI2luY2x1ZGUgIkxpZmVjeWNsZUNhbGxiYWNrUXVldWUuaCIKICNp
bmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RH
cm91cC5oIgogI2luY2x1ZGUgIk11dGF0aW9uUmVjb3JkLmgiCkBAIC0xMjQ5LDYgKzEyNTEsMTIg
QEAgdm9pZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21pY1N0cmluZyYgb2wKIAogICAgIGRvY3VtZW50KCkuaW5jRE9NVHJlZVZl
cnNpb24oKTsKIAorICAgIGlmIChVTkxJS0VMWShpc0N1c3RvbUVsZW1lbnQoKSkpIHsKKyAgICAg
ICAgYXV0byogaW50ZXJmYWNlID0gZG9jdW1lbnQoKS5maW5kQ3VzdG9tRWxlbWVudEludGVyZmFj
ZSh0YWdRTmFtZSgpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW50ZXJmYWNlKTsKKyAgICAg
ICAgTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZTo6ZW5xdWV1ZUF0dHJpYnV0ZUNoYW5nZWQoKnRoaXMs
ICppbnRlcmZhY2UsIG5hbWUsIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CisgICAgfQorCiAgICAgaWYg
KHZhbHVlSXNTYW1lQXNCZWZvcmUpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aWRsCmluZGV4IGYwOGRjMDQuLmFiNTFlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKQEAgLTI4
LDEyICsyOCwxMiBAQAogICAgIFtUcmVhdFJldHVybmVkTnVsbFN0cmluZ0FzPU51bGxdIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdGFnTmFtZTsKIAogICAgIFtUcmVhdFJldHVybmVkTnVs
bFN0cmluZ0FzPU51bGxdIERPTVN0cmluZyBnZXRBdHRyaWJ1dGUoW0RlZmF1bHQ9VW5kZWZpbmVk
XSBvcHRpb25hbCBET01TdHJpbmcgbmFtZSk7Ci0gICAgW09iakNMZWdhY3lVbm5hbWVkUGFyYW1l
dGVycywgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHNldEF0dHJpYnV0ZShbRGVmYXVsdD1VbmRlZmlu
ZWRdIG9wdGlvbmFsIERPTVN0cmluZyBuYW1lLAorICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFt
ZXRlcnMsIFJhaXNlc0V4Y2VwdGlvbiwgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIHZvaWQgc2V0QXR0
cmlidXRlKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIG5hbWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRp
b25hbCBET01TdHJpbmcgdmFsdWUpOwotICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlKFtEZWZhdWx0
PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIG5hbWUpOworICAgIFtOZWVkc1Byb2Nlc3Np
bmdTdGFja10gdm9pZCByZW1vdmVBdHRyaWJ1dGUoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25h
bCBET01TdHJpbmcgbmFtZSk7CiAgICAgQXR0ciBnZXRBdHRyaWJ1dGVOb2RlKFtEZWZhdWx0PVVu
ZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIG5hbWUpOwotICAgIFtSYWlzZXNFeGNlcHRpb25d
IEF0dHIgc2V0QXR0cmlidXRlTm9kZShbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIEF0dHIg
bmV3QXR0cik7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gQXR0ciByZW1vdmVBdHRyaWJ1dGVOb2Rl
KFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgQXR0ciBvbGRBdHRyKTsKKyAgICBbUmFpc2Vz
RXhjZXB0aW9uLCBOZWVkc1Byb2Nlc3NpbmdTdGFja10gQXR0ciBzZXRBdHRyaWJ1dGVOb2RlKFtE
ZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgQXR0ciBuZXdBdHRyKTsKKyAgICBbUmFpc2VzRXhj
ZXB0aW9uLCBOZWVkc1Byb2Nlc3NpbmdTdGFja10gQXR0ciByZW1vdmVBdHRyaWJ1dGVOb2RlKFtE
ZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgQXR0ciBvbGRBdHRyKTsKIAogI2lmIGRlZmluZWQo
TEFOR1VBR0VfT0JKRUNUSVZFX0MpICYmIExBTkdVQUdFX09CSkVDVElWRV9DCiAgICAgW0ltcGxl
bWVudGVkQXM9Z2V0RWxlbWVudHNCeVRhZ05hbWVGb3JPYmpDXSBOb2RlTGlzdCBnZXRFbGVtZW50
c0J5VGFnTmFtZShbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyBuYW1lKTsK
QEAgLTE3Myw2ICsxNzMsMTAgQEAKICAgICBbQ29uZGl0aW9uYWw9U0hBRE9XX0RPTSwgUmVmbGVj
dF0gYXR0cmlidXRlIERPTVN0cmluZyBzbG90OwogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKExBTkdV
QUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdFX0pBVkFTQ1JJUFQKKyAgICBbQ3VzdG9tXSBzdGF0
aWMgcmVhZG9ubHkgYXR0cmlidXRlIFN5bWJvbCBhdHRyaWJ1dGVDaGFuZ2VkOworI2VuZGlmCisK
ICAgICAvLyBFdmVudCBIYW5kbGVycwogCiAgICAgLy8gVW5pcXVlIHRvIEVsZW1lbnQgYW5kIERv
Y3VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTGlmZWN5Y2xlQ2FsbGJhY2tR
dWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjI0YzA0YQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9MaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmNwcApAQCAt
MCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxpZmVjeWNsZUNhbGxiYWNrUXVldWUu
aCIKKworI2luY2x1ZGUgIkN1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJFbGVt
ZW50LmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSA8d3RmL1JlZi5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIExpZmVjeWNsZVF1ZXVlSXRlbSB7CitwdWJs
aWM6CisgICAgTGlmZWN5Y2xlUXVldWVJdGVtKEVsZW1lbnQmIGVsZW1lbnQsIEN1c3RvbUVsZW1l
bnRJbnRlcmZhY2UmIGludGVyZmFjZSwKKyAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
bmV3VmFsdWUpCisgICAgICAgIDogbV90eXBlKFR5cGU6OkF0dHJpYnV0ZUNoYW5nZWQpCisgICAg
ICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCisgICAgICAgICwgbV9pbnRlcmZhY2UoaW50ZXJmYWNl
KQorICAgICAgICAsIG1fYXR0ck5hbWUoYXR0ck5hbWUpCisgICAgICAgICwgbV9vbGRWYWx1ZShv
bGRWYWx1ZSkKKyAgICAgICAgLCBtX25ld1ZhbHVlKG5ld1ZhbHVlKQorICAgIHsgfQorCisgICAg
dm9pZCBpbnZva2UoKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJs
eSBwYXNzIHRoZSBmdWxsIHF1YWxpZmllZCBhdHRyaWJ1dGUgbmFtZS4KKyAgICAgICAgbV9pbnRl
cmZhY2UtPmF0dHJpYnV0ZUNoYW5nZWQobV9lbGVtZW50LmdldCgpLCBtX2F0dHJOYW1lLmxvY2Fs
TmFtZSgpLCBtX29sZFZhbHVlLCBtX25ld1ZhbHVlKTsKKyAgICB9CisKKyAgICBlbnVtIGNsYXNz
IFR5cGUgeworICAgICAgICBJbnZhbGlkLAorICAgICAgICBJbnNlcnRlZCwKKyAgICAgICAgUmVt
b3ZlZCwKKyAgICAgICAgQ2hpbGRyZW5DaGFuZ2VkLAorICAgICAgICBBdHRyaWJ1dGVDaGFuZ2Vk
LAorICAgIH07CisKK3ByaXZhdGU6CisgICAgLy8gRklYTUU6IFdlIHNob3VkbG4ndCBoYXZlIHRv
IGR1cGxpY2F0ZSBFbGVtZW50LCBJbnRlcmZhY2UsIGFuZCBhIGJ1bmNoIG9mIEF0b21pY1N0cmlu
ZyBpbiBlYWNoIHF1ZXVlIGl0ZW0uCisgICAgVHlwZSBtX3R5cGUgeyBUeXBlOjpJbnZhbGlkIH07
CisgICAgUmVmPEVsZW1lbnQ+IG1fZWxlbWVudDsKKyAgICBSZWY8Q3VzdG9tRWxlbWVudEludGVy
ZmFjZT4gbV9pbnRlcmZhY2U7CisgICAgUXVhbGlmaWVkTmFtZSBtX2F0dHJOYW1lOworICAgIEF0
b21pY1N0cmluZyBtX29sZFZhbHVlOworICAgIEF0b21pY1N0cmluZyBtX25ld1ZhbHVlOworfTsK
KworTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZTo6TGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZSgpCit7Cit9
CisKK0xpZmVjeWNsZUNhbGxiYWNrUXVldWU6On5MaWZlY3ljbGVDYWxsYmFja1F1ZXVlKCkKK3sK
KyAgICBBU1NFUlQobV9pdGVtcy5pc0VtcHR5KCkpOworfQorCit2b2lkIExpZmVjeWNsZUNhbGxi
YWNrUXVldWU6OmVucXVldWVBdHRyaWJ1dGVDaGFuZ2VkKEVsZW1lbnQmIGVsZW1lbnQsIEN1c3Rv
bUVsZW1lbnRJbnRlcmZhY2UmIGludGVyZmFjZSwKKyAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5l
d1ZhbHVlKQoreworICAgIGlmIChhdXRvKiBxdWV1ZSA9IEN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQ
cm9jZXNzaW5nU3RhY2s6OmVuc3VyZUN1cnJlbnRRdWV1ZSgpKQorICAgICAgICBxdWV1ZS0+bV9p
dGVtcy5hcHBlbmQoTGlmZWN5Y2xlUXVldWVJdGVtKGVsZW1lbnQsIGludGVyZmFjZSwgbmFtZSwg
b2xkVmFsdWUsIG5ld1ZhbHVlKSk7Cit9CisKK3ZvaWQgTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZTo6
aW52b2tlQWxsKCkKK3sKKyAgICBWZWN0b3I8TGlmZWN5Y2xlUXVldWVJdGVtPiBpdGVtczsKKyAg
ICBpdGVtcy5zd2FwKG1faXRlbXMpOworICAgIGZvciAoYXV0byYgaXRlbTogaXRlbXMpCisgICAg
ICAgIGl0ZW0uaW52b2tlKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9MaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTGlmZWN5Y2xl
Q2FsbGJhY2tRdWV1ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3MzA3
YzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTGlmZWN5Y2xlQ2FsbGJh
Y2tRdWV1ZS5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIExpZmVjeWNsZUNhbGxiYWNrUXVldWVfaAorI2RlZmlu
ZSBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlX2gKKworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEN1c3RvbUVsZW1lbnRJbnRlcmZhY2U7CitjbGFzcyBFbGVtZW50OworY2xhc3Mg
UXVhbGlmaWVkTmFtZTsKK2NsYXNzIExpZmVjeWNsZVF1ZXVlSXRlbTsKKworY2xhc3MgTGlmZWN5
Y2xlQ2FsbGJhY2tRdWV1ZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTGlmZWN5Y2xlQ2Fs
bGJhY2tRdWV1ZSk7CitwdWJsaWM6CisgICAgTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZSgpOworICAg
IH5MaWZlY3ljbGVDYWxsYmFja1F1ZXVlKCk7CisKKyAgICBzdGF0aWMgdm9pZCBlbnF1ZXVlQXR0
cmlidXRlQ2hhbmdlZChFbGVtZW50JiwgQ3VzdG9tRWxlbWVudEludGVyZmFjZSYsCisgICAgICAg
IGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25z
dCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKTsKKworICAgIHZvaWQgaW52b2tlQWxsKCk7CisKK3By
aXZhdGU6CisgICAgVmVjdG9yPExpZmVjeWNsZVF1ZXVlSXRlbT4gbV9pdGVtczsKK307CisKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCBhNjRlMGM1Li40N2UyZWE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgK
QEAgLTI0MSw2ICsyNDEsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0hUTUxFbGVtZW50KCkgY29u
c3QgeyByZXR1cm4gZ2V0RmxhZyhJc0hUTUxGbGFnKTsgfQogICAgIGJvb2wgaXNTVkdFbGVtZW50
KCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJc1NWR0ZsYWcpOyB9CiAgICAgYm9vbCBpc01hdGhN
TEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElzTWF0aE1MRmxhZyk7IH0KKyAgICBi
b29sIGlzQ3VzdG9tRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNDdXN0b21FbGVt
ZW50KTsgfQorICAgIHZvaWQgc2V0Q3VzdG9tRWxlbWVudCgpIHsgc2V0RmxhZyhJc0N1c3RvbUVs
ZW1lbnQpOyB9CiAKICAgICBib29sIGlzUHNldWRvRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHBz
ZXVkb0lkKCkgIT0gTk9QU0VVRE87IH0KICAgICBib29sIGlzQmVmb3JlUHNldWRvRWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIHBzZXVkb0lkKCkgPT0gQkVGT1JFOyB9CkBAIC02MDAsNiArNjAyLDcg
QEAgcHJvdGVjdGVkOgogICAgICAgICBJc1N0eWxlZEVsZW1lbnRGbGFnID0gMSA8PCAzLAogICAg
ICAgICBJc0hUTUxGbGFnID0gMSA8PCA0LAogICAgICAgICBJc1NWR0ZsYWcgPSAxIDw8IDUsCisg
ICAgICAgIElzQ3VzdG9tRWxlbWVudCA9IDEgPDwgNiwKICAgICAgICAgQ2hpbGROZWVkc1N0eWxl
UmVjYWxjRmxhZyA9IDEgPDwgNywKICAgICAgICAgSW5Eb2N1bWVudEZsYWcgPSAxIDw8IDgsCiAg
ICAgICAgIElzTGlua0ZsYWcgPSAxIDw8IDksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vbWFrZV9uYW1lcy5wbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCmluZGV4
IDBkN2EzNmYuLjY1MzQwZmUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25h
bWVzLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCkBAIC0xMDE4LDYg
KzEwMTgsMTEgQEAgRU5ECiAgICAgfQogCiAgICAgcHJpbnQgRiA8PEVORAorICAgIGlmIChhdXRv
IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVDdXN0b21FbGVtZW50KG5hbWUpKSB7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGlzPFdlYkNvcmU6OiRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50
PigqZWxlbWVudCkpOworICAgICAgICByZXR1cm4gZG93bmNhc3Q8V2ViQ29yZTo6JHBhcmFtZXRl
cnN7bmFtZXNwYWNlfUVsZW1lbnQ+KCplbGVtZW50KTsKKyAgICB9CisKICAgICByZXR1cm4gJHBh
cmFtZXRlcnN7ZmFsbGJhY2tJbnRlcmZhY2VOYW1lfTo6Y3JlYXRlKG5hbWUsIGRvY3VtZW50KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbAppbmRleCA4ZWVmNmZmLi44YTkyNDFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbApAQCAtMTksNiArMTksNyBAQAogICov
CiAKIFsKKyAgICBDdXN0b21Db25zdHJ1Y3RvcihET01TdHJpbmcgbG9jYWxOYW1lKSwKICAgICBK
U0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCiAgICAgSlNDdXN0b21QdXNoRXZlbnRIYW5kbGVyU2Nv
cGUsCiBdIGludGVyZmFjZSBIVE1MRWxlbWVudCA6IEVsZW1lbnQgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264477</attachid>
            <date>2015-10-31 08:03:29 -0700</date>
            <delta_ts>2015-11-11 07:03:57 -0800</delta_ts>
            <desc>Made tag name to super() optional</desc>
            <filename>wip150225c.patch</filename>
            <type>text/plain</type>
            <size>71092</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5jcHAKaW5k
ZXggNjAxMGU2My4uOGFhMTY4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29uc3RydWN0RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29uc3RydWN0RGF0YS5jcHAKQEAgLTQwLDQgKzQwLDE2IEBAIEpTT2JqZWN0KiBjb25zdHJ1
Y3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGNvbnN0cnVjdG9yT2JqZWN0LCBDb25zdHJ1Y3RU
eXBlIGNvCiAgICAgcmV0dXJuIGV4ZWMtPmludGVycHJldGVyKCktPmV4ZWN1dGVDb25zdHJ1Y3Qo
ZXhlYywgYXNPYmplY3QoY29uc3RydWN0b3JPYmplY3QpLCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1
Y3REYXRhLCBhcmdzLCBuZXdUYXJnZXQpOwogfQogCitKU09iamVjdCogY29uc3RydWN0KEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBjb25zdHJ1Y3Rvck9iamVjdCwgQ29uc3RydWN0VHlwZSBjb25z
dHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhLCBjb25zdCBBcmdM
aXN0JiBhcmdzLCBOYWtlZFB0cjxFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKK3sKKyAg
ICBKU09iamVjdCogcmVzdWx0ID0gZXhlYy0+aW50ZXJwcmV0ZXIoKS0+ZXhlY3V0ZUNvbnN0cnVj
dChleGVjLCBhc09iamVjdChjb25zdHJ1Y3Rvck9iamVjdCksIGNvbnN0cnVjdFR5cGUsIGNvbnN0
cnVjdERhdGEsIGFyZ3MsIGNvbnN0cnVjdG9yT2JqZWN0KTsKKyAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpIHsKKyAgICAgICAgcmV0dXJuZWRFeGNlcHRpb24gPSBleGVjLT5leGNlcHRpb24o
KTsKKyAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db25zdHJ1Y3REYXRhLmgKaW5kZXggMTdlMWE1ZC4uZTg2YTI4OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaApAQCAtNTcsNiArNTcsNyBA
QCB1bmlvbiBDb25zdHJ1Y3REYXRhIHsKIH07CiAKIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0
KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSBjb25zdHJ1Y3RvciwgQ29uc3RydWN0VHlw
ZSwgY29uc3QgQ29uc3RydWN0RGF0YSYsIGNvbnN0IEFyZ0xpc3QmLCBKU1ZhbHVlIG5ld1Rhcmdl
dCk7CitKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY29uc3RydWN0KEV4ZWNTdGF0ZSosIEpT
VmFsdWUgY29uc3RydWN0b3IsIENvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmLCBj
b25zdCBBcmdMaXN0JiwgTmFrZWRQdHI8RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwog
CiBBTFdBWVNfSU5MSU5FIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIGNvbnN0cnVjdG9yT2JqZWN0LCBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUsIGNvbnN0
IENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5oCmluZGV4IDgzZjVkZTIuLmRkYjY4Y2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5oCkBAIC04Niw3ICs4Niw3IEBA
IHByb3RlY3RlZDoKIAogICAgIFN5bWJvbChWTSYpOwogICAgIFN5bWJvbChWTSYsIGNvbnN0IFN0
cmluZyYpOwotICAgIFN5bWJvbChWTSYsIFN5bWJvbEltcGwmIHVpZCk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgU3ltYm9sKFZNJiwgU3ltYm9sSW1wbCYgdWlkKTsKIAogICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mIHZtKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5ZGNiYWVjLi40MDNlNjJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zODkz
LDYgKzM4OTMsOSBAQAogCQk5QTUyOEU4NDE3RDdGNTJGMDBBQTk1MTggLyogRmxvYXRpbmdPYmpl
Y3RzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QTUy
OEU4MjE3RDdGNTJGMDBBQTk1MTggLyogRmxvYXRpbmdPYmplY3RzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOUFCMUYzODAxOEUyNDg5QTAwNTM0
NzQzIC8qIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlBQjFGMzdFMThFMjQ4OUEwMDUzNDc0MyAvKiBDU1NU
b0xlbmd0aENvbnZlcnNpb25EYXRhLmggKi87IH07CiAJCTlBQjFGMzgxMThFMjQ4OUEwMDUzNDc0
MyAvKiBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlBQjFGMzdGMThFMjQ4OUEwMDUzNDc0MyAvKiBDU1NU
b0xlbmd0aENvbnZlcnNpb25EYXRhLmNwcCAqLzsgfTsKKwkJOUIxNDcxNTMxQkQwMUI4OTAwMzZE
RTA5IC8qIEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMTQ3MTUxMUJEMDFCODkwMDM2REUwOSAvKiBDdXN0b21F
bGVtZW50SW50ZXJmYWNlLmggKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsK
KwkJOUIxNDcxNTYxQkQwMUU1NTAwMzZERTA5IC8qIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjE0NzE1
NDFCRDAxRTU1MDAzNkRFMDkgLyogSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcCAqLzsgc2V0
dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OworCQk5QjE0NzE1NzFCRDAxRTU1MDAzNkRF
MDkgLyogSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjE0NzE1NTFCRDAxRTU1MDAzNkRFMDkgLyogSlNDdXN0
b21FbGVtZW50SW50ZXJmYWNlLmggKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsg
fTsKIAkJOUIxQUIwN0MxNjQ4QzdDNDAwNTFGM0YyIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUIxQUIwN0IxNjQ4QzdDNDAwNTFGM0YyIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb25DdXN0b20uY3BwICovOyB9OwogCQk5QjI0REU4RTE1MTk0Qjk1MDBDNTlDMjcgLyogSFRN
TEJESUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDlCMjRERThDMTUxOTRCOTUwMEM1OUMyNyAvKiBIVE1MQkRJRWxlbWVudC5oICovOyB9Owog
CQk5QjJEOEE3OTE0OTk3Q0NGMDBFQ0VGM0UgLyogVW5kb1N0ZXAuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMkQ4QTc4MTQ5OTdDQ0YwMEVDRUYzRSAv
KiBVbmRvU3RlcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0zOTEwLDcgKzM5MTMsMTEgQEAKIAkJOUI2OUQzQjgxQjk5MTAwNzAwRTM1MTJCIC8q
IEpTSFRNTFNsb3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDlCNjlEM0I2MUI5OTEwMDcwMEUzNTEyQiAvKiBKU0hUTUxTbG90RWxlbWVu
dC5jcHAgKi87IH07CiAJCTlCNjlEM0I5MUI5OTEwMDcwMEUzNTEyQiAvKiBKU0hUTUxTbG90RWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI2
OUQzQjcxQjk5MTAwNzAwRTM1MTJCIC8qIEpTSFRNTFNsb3RFbGVtZW50LmggKi87IH07CiAJCTlC
NkM0MTUzMTM0NDk0OTAwMDA4NUI2MiAvKiBTdHJpbmdXaXRoRGlyZWN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjZDNDE1MjEzNDQ5NDkwMDAw
ODVCNjIgLyogU3RyaW5nV2l0aERpcmVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTlCOTNBMEU3MUJFMzEwREUwMDIzMUE4RSAvKiBDdXN0
b21FbGVtZW50RGVmaW5pdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOUI5M0EwRTUxQkUzMTBERTAwMjMxQThFIC8qIEN1c3RvbUVsZW1lbnRE
ZWZpbml0aW9ucy5jcHAgKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJ
OUI5M0EwRTgxQkUzMTBERTAwMjMxQThFIC8qIEN1c3RvbUVsZW1lbnREZWZpbml0aW9ucy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI5M0EwRTYxQkUz
MTBERTAwMjMxQThFIC8qIEN1c3RvbUVsZW1lbnREZWZpbml0aW9ucy5oICovOyBzZXR0aW5ncyA9
IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CiAJCTlCQTI3M0Y0MTcyMjA2QkIwMDk3Q0U0NyAvKiBM
b2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5QkEyNzNGMzE3MjIwNkJCMDA5N0NFNDcgLyogTG9naWNhbFNl
bGVjdGlvbk9mZnNldENhY2hlcy5oICovOyB9OworCQk5QkE0NjZCNzFCREM3MzRBMDBCQjc5OTAg
LyogTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5QkE0NjZCNTFCREM3MzRBMDBCQjc5OTAgLyogTGlmZWN5Y2xl
Q2FsbGJhY2tRdWV1ZS5jcHAgKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsK
KwkJOUJBNDY2QjgxQkRDNzM0QTAwQkI3OTkwIC8qIExpZmVjeWNsZUNhbGxiYWNrUXVldWUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCQTQ2NkI2MUJE
QzczNEEwMEJCNzk5MCAvKiBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmggKi87IHNldHRpbmdzID0g
e0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKIAkJOUJBQjZDNkMxMjU1MDYzMTAwMTYyNkQ0IC8qIEVk
aXRpbmdTdHlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOUJBQjZDNkExMjU1MDYzMTAwMTYyNkQ0IC8qIEVkaXRpbmdTdHlsZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTlCQUI2QzZEMTI1NTA2MzEw
MDE2MjZENCAvKiBFZGl0aW5nU3R5bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOUJBQjZDNkIxMjU1MDYzMTAwMTYyNkQ0IC8qIEVkaXRpbmdTdHls
ZS5jcHAgKi87IH07CiAJCTlCQUYzQjI0MTJDMUEzOTgwMDAxNEJGMSAvKiBXcml0aW5nRGlyZWN0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkFG
M0IyMzEyQzFBMzk4MDAwMTRCRjEgLyogV3JpdGluZ0RpcmVjdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTM3MSw2ICsxMTM3OCw5IEBA
CiAJCTlCMDNEODA2MUJCMzExMEQwMEI3NjREOSAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1
aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFt
SW50ZXJuYWxzQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwM0Q4
MDcxQkIzMTEwRDAwQjc2NEQ4IC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnNXcmFwcGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtQnVpbHRpbnNXcmFw
cGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDNEODA3MUJCMzExMEQwMEI3
NjREQSAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zV3JhcHBlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5z
V3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QjE0NzE1MTFCRDAxQjg5
MDAzNkRFMDkgLyogQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDdXN0b21FbGVtZW50SW50ZXJmYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTlCMTQ3MTU0MUJEMDFFNTUwMDM2REUwOSAvKiBKU0N1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDdXN0
b21FbGVtZW50SW50ZXJmYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUIx
NDcxNTUxQkQwMUU1NTAwMzZERTA5IC8qIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIxOUI2N0UxQjk2NEU1MjAwMzQ4NzQ1IC8q
IFNoYWRvd1Jvb3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNoYWRvd1Jvb3QuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjFBQjA3OTE2NDhDNjlEMDA1MUYzRjIgLyog
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIxQUIwN0IxNjQ4QzdD
NDAwNTFGM0YyIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbkN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTM5NCw3ICsx
MTQwNCwxMSBAQAogCQk5QjZCQzk2MDFCOTc1OTY2MDA1QUUxRjAgLyogSlNTaGFkb3dSb290LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2hhZG93Um9vdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNkJDOTYxMUI5NzU5NjYwMDVBRTFGMCAv
KiBKU1NoYWRvd1Jvb3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTaGFk
b3dSb290Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNkM0MTUyMTM0NDk0OTAw
MDA4NUI2MiAvKiBTdHJpbmdXaXRoRGlyZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0cmluZ1dpdGhEaXJlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOUI5M0EwRTUxQkUzMTBERTAwMjMxQThFIC8qIEN1c3RvbUVsZW1lbnREZWZpbml0aW9u
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDdXN0b21FbGVtZW50
RGVmaW5pdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QjkzQTBFNjFC
RTMxMERFMDAyMzFBOEUgLyogQ3VzdG9tRWxlbWVudERlZmluaXRpb25zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN1c3RvbUVsZW1lbnREZWZpbml0aW9ucy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5QkEyNzNGMzE3MjIwNkJCMDA5N0NFNDcgLyogTG9naWNh
bFNlbGVjdGlvbk9mZnNldENhY2hlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTlCQTQ2NkI1MUJEQzczNEEwMEJCNzk5MCAvKiBMaWZlY3ljbGVDYWxsYmFja1F1ZXVl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExpZmVjeWNsZUNhbGxi
YWNrUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QkE0NjZCNjFCREM3
MzRBMDBCQjc5OTAgLyogTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTlCQUI2QzZBMTI1NTA2MzEwMDE2MjZENCAvKiBFZGl0aW5nU3R5bGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdGluZ1N0eWxlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCQUI2QzZCMTI1NTA2MzEwMDE2MjZENCAvKiBFZGl0
aW5nU3R5bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRWRpdGlu
Z1N0eWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJBRjNCMjMxMkMxQTM5
ODAwMDE0QkYxIC8qIFdyaXRpbmdEaXJlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV3JpdGluZ0RpcmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjE3MTgsOCArMjE3MzIsNiBAQAogCQkJCThGOTM0RDg0MTE4OUYxRUUwMDUwOEQ1RCAvKiBK
U01haW5UaHJlYWRFeGVjU3RhdGUuY3BwICovLAogCQkJCThGOTM0RDgzMTE4OUYxRUUwMDUwOEQ1
RCAvKiBKU01haW5UaHJlYWRFeGVjU3RhdGUuaCAqLywKIAkJCQlCNTY1NzZFNDE3REE1OTlGMDBB
NTZCREMgLyogSlNNYWluVGhyZWFkRXhlY1N0YXRlSW5zdHJ1bWVudGF0aW9uLmggKi8sCi0JCQkJ
QzZGNDIwQTAxNkI3MTY0RTAwNTJBOUYyIC8qIEpTTXV0YXRpb25DYWxsYmFjay5jcHAgKi8sCi0J
CQkJQzZGNDIwQTExNkI3MTY0RTAwNTJBOUYyIC8qIEpTTXV0YXRpb25DYWxsYmFjay5oICovLAog
CQkJCTgzRjEyMDZBMUI4QzEwMzYwMEQ3NUY2MyAvKiBKU05vZGVGaWx0ZXJDdXN0b20uY3BwICov
LAogCQkJCTdDOTFBMzhEMUI0OThBQkUwMDNGOUVGQSAvKiBKU05vZGVPclN0cmluZy5jcHAgKi8s
CiAJCQkJN0M5MUEzOEUxQjQ5OEFCRTAwM0Y5RUZBIC8qIEpTTm9kZU9yU3RyaW5nLmggKi8sCkBA
IC0yMjIxMiw2ICsyMjIyNCwxMCBAQAogCQkJCTkzQjcwRDRFMDlFQjBDN0MwMDlEODQ2OCAvKiBK
U0V2ZW50TGlzdGVuZXIuaCAqLywKIAkJCQk5MzVGNDU0MDBGN0MzQjVGMDBEN0MxRkIgLyogSlNM
YXp5RXZlbnRMaXN0ZW5lci5jcHAgKi8sCiAJCQkJOTM1RjQ1NDEwRjdDM0I1RjAwRDdDMUZCIC8q
IEpTTGF6eUV2ZW50TGlzdGVuZXIuaCAqLywKKwkJCQlDNkY0MjBBMDE2QjcxNjRFMDA1MkE5RjIg
LyogSlNNdXRhdGlvbkNhbGxiYWNrLmNwcCAqLywKKwkJCQlDNkY0MjBBMTE2QjcxNjRFMDA1MkE5
RjIgLyogSlNNdXRhdGlvbkNhbGxiYWNrLmggKi8sCisJCQkJOUIxNDcxNTQxQkQwMUU1NTAwMzZE
RTA5IC8qIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAgKi8sCisJCQkJOUIxNDcxNTUxQkQw
MUU1NTAwMzZERTA5IC8qIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oICovLAogCQkJKTsKIAkJ
CW5hbWUgPSAiQ2FsbGJhY2sgT2JqZWN0cyI7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpA
QCAtMjM3MDcsNiArMjM3MjMsOSBAQAogCQkJCTg1MDMxQjMxMEE0NEVGQzcwMEY5OTJFMCAvKiBN
b3VzZVJlbGF0ZWRFdmVudC5jcHAgKi8sCiAJCQkJODUwMzFCMzIwQTQ0RUZDNzAwRjk5MkUwIC8q
IE1vdXNlUmVsYXRlZEV2ZW50LmggKi8sCiAJCQkJQzZGMDkwMDExNDMyN0I2MTAwNjg1ODQ5IC8q
IE11dGF0aW9uQ2FsbGJhY2suaCAqLywKKwkJCQk5QjE0NzE1MTFCRDAxQjg5MDAzNkRFMDkgLyog
Q3VzdG9tRWxlbWVudEludGVyZmFjZS5oICovLAorCQkJCTlCOTNBMEU1MUJFMzEwREUwMDIzMUE4
RSAvKiBDdXN0b21FbGVtZW50RGVmaW5pdGlvbnMuY3BwICovLAorCQkJCTlCOTNBMEU2MUJFMzEw
REUwMDIzMUE4RSAvKiBDdXN0b21FbGVtZW50RGVmaW5pdGlvbnMuaCAqLywKIAkJCQk4NTAzMUIz
MzBBNDRFRkM3MDBGOTkyRTAgLyogTXV0YXRpb25FdmVudC5jcHAgKi8sCiAJCQkJODUwMzFCMzQw
QTQ0RUZDNzAwRjk5MkUwIC8qIE11dGF0aW9uRXZlbnQuaCAqLywKIAkJCQk5M0VFQzFGMzA5QzI4
Nzc3MDBDNTE1RDEgLyogTXV0YXRpb25FdmVudC5pZGwgKi8sCkBAIC0yMzg4NCw2ICsyMzkwMyw4
IEBACiAJCQkJODUwMzFCM0EwQTQ0RUZDNzAwRjk5MkUwIC8qIFdoZWVsRXZlbnQuY3BwICovLAog
CQkJCTg1MDMxQjNCMEE0NEVGQzcwMEY5OTJFMCAvKiBXaGVlbEV2ZW50LmggKi8sCiAJCQkJOTNF
RUMxRjcwOUMyODc3NzAwQzUxNUQxIC8qIFdoZWVsRXZlbnQuaWRsICovLAorCQkJCTlCQTQ2NkI1
MUJEQzczNEEwMEJCNzk5MCAvKiBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmNwcCAqLywKKwkJCQk5
QkE0NjZCNjFCREM3MzRBMDBCQjc5OTAgLyogTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5oICovLAog
CQkJKTsKIAkJCXBhdGggPSBkb207CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjQ0
NjMsNiArMjQ0ODQsNyBAQAogCQkJCUJDNUVCNURCMEU4MUI3RUEwMEIyNTk2NSAvKiBCb3JkZXJW
YWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVEOEMzN0ExODNCRkY4QzAwOUU1M0JEIC8qIEJv
eFNoYXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VBNDg1NTA5N0Q5MzAyMDA5NEM5RTQgLyog
YnJlYWtfbGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTlCMTQ3MTU3MUJEMDFFNTUwMDM2REUw
OSAvKiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5
RERCMDk5RTY0OTIwMDU2RTU4MSAvKiBCcmVha0Jsb2NrcXVvdGVDb21tYW5kLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1OTlFNzU5MDExMDU1QTFGMDBEOTA0RkEgLyogQnJpZGdlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1OUI1OTc3NTExMDg2NTc5MDA3MTU5RTggLyogQnJpZGdlSlNDLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI1NDE1LDYgKzI1NDM3LDcgQEAKIAkJCQk0OTlCM0VENzEyOENEMzE0MDBF
NzI2QzIgLyogR3JhcGhpY3NMYXllckNBLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MEIwRTBG
MTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFDNjk1OTMxNjFBMUU1MzAwMzczMkNCIC8qIEdyYXBoaWNzTGF5ZXJGYWN0b3J5LmggaW4g
SGVhZGVycyAqLywKKwkJCQk5QjE0NzE1MzFCRDAxQjg5MDAzNkRFMDkgLyogQ3VzdG9tRWxlbWVu
dEludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBMjREN0ExNjJERjkxOTAwQTNGNEMw
IC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRUMzMzdBRjFB
NDYwODZEMDA5Qjg1MjMgLyogR3JhcGhpY3NTZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjJBMDE1QUIwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdyYXBoaWNzVHlwZXMuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjU1MDMsNiArMjU1MjYsNyBAQAogCQkJCUE4MTM2OUUwMDk3Mzc0RjYwMEQ3NDQ2
MyAvKiBIVE1MTGVnZW5kRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTc5RjYwQTE5
MTZERjAwQThFRjVGIC8qIEhUTUxMSUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NzFE
QzIwMEExNTIwNTcwMEIxMkE2OCAvKiBIVE1MTGlua0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTlCOTNBMEU4MUJFMzEwREUwMDIzMUE4RSAvKiBDdXN0b21FbGVtZW50RGVmaW5pdGlvbnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE3RDJDMEExOTM4NTUwMEE4RUY1RiAvKiBIVE1MTWFw
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTdDQUIwQTE5MkI5QzAwQThFRjVGIC8q
IEhUTUxNYXJxdWVlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0NjEzQTUwQ0Q2MzMx
MDAwRkFEQTc1IC8qIEhUTUxNZWRpYUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjczMzUs
NiArMjczNTksNyBAQAogCQkJCUIyMjI3QTAzMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRVNwb3RM
aWdodEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTA2MEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdGRVRpbGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0EwOTBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJOUJBNDY2QjgxQkRDNzM0QTAwQkI3OTkwIC8qIExpZmVjeWNsZUNhbGxiYWNrUXVldWUuaCBp
biBIZWFkZXJzICovLAogCQkJCTg0NUU3MkZDMEZEMjYyMzkwMEE4N0Q3OSAvKiBTVkdGaWx0ZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTA4MUVCRjNCMEZEMzRGNDEwMERBNzU1OSAvKiBTVkdGaWx0
ZXJCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0EwQzBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHRmlsdGVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODQ5Niw2ICsyODUyMSw3
IEBACiAJCQkJRkJENkFGOEIxNUVGMjVFNTAwOEI3MTEwIC8qIENTU0Jhc2ljU2hhcGVzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUUxNkE4NEY5MTRDODVDQ0MwMDI5NzdERiAvKiBDU1NCb3JkZXJJ
bWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzI3NEIzMTE0MEVCRUQ4MDBFQURGQTYgLyog
Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTlCOTNBMEU3
MUJFMzEwREUwMDIzMUE4RSAvKiBDdXN0b21FbGVtZW50RGVmaW5pdGlvbnMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDlBRTJEOEUxMzRFRTUwQzAwNzI5MjBBIC8qIENTU0NhbGN1bGF0aW9uVmFs
dWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM2MDRBNDMwREI1NjM0RTAwMjA0NzM5IC8qIENT
U0NhbnZhc1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxRUJCQkQ0MEFBQzlCODcwMDFG
RThFMiAvKiBDU1NDaGFyc2V0UnVsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwOTE0LDYgKzMw
OTQwLDcgQEAKIAkJCQkyNkZBRTRDRTE4NTJFM0E1MDA0QzhDNDYgLyogU3luY2hyb25vdXNSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUU0NTM5MEFFMEVBRkY0QjUwMDM2OTVDOCAvKiBTeXN0ZW1NZW1vcnlJT1MuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0RBMDdGQkQxOEUwQTE2QTAwNDY5OUZBIC8qIFN5c3RlbVNsZWVwTGlzdGVu
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOUJBNDY2QjcxQkRDNzM0QTAwQkI3OTkwIC8qIExp
ZmVjeWNsZUNhbGxiYWNrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBMDdGQzExOEUw
QTIyQjAwNDY5OUZBIC8qIFN5c3RlbVNsZWVwTGlzdGVuZXJNYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1RDU5NzVCNDE5NjM1RjExMDBEMDA4NzggLyogU3lzdGVtVmVyc2lvbi5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTQ2M0VCNjIyMUI4Nzg5RTAwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMzExMzIsNiArMzExNTksNyBAQAogCQkJCTAxRDNDRjg2MTRC
RDBBMzAwMEZFOTk3MCAvKiBXZWJHTFNoYXJlZE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk2Rjk5NUExNTFBNzA3NTYyMDBBNzM1RjQgLyogV2ViR0xTeW5jLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTQ5QzdCOUU1MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTFRleHR1cmUuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJOUIxNDcxNTYxQkQwMUU1NTAwMzZERTA5IC8qIEpTQ3VzdG9tRWxlbWVu
dEludGVyZmFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2Rjk5NUEyMzFBNzA3OEIxMDBBNzM1
RjQgLyogV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwQzNG
MUY1QTEwQzg4NzEyMDBENzJDRTEgLyogV2ViR0xVbmlmb3JtTG9jYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNkY5OTVBMjUxQTcwNzhCMTAwQTczNUY0IC8qIFdlYkdMVmVydGV4QXJyYXlP
YmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi42NWM5MTY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcApAQCAtMCwwICsxLDE0
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNDdXN0
b21FbGVtZW50SW50ZXJmYWNlLmgiCisKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAi
SlNET01HbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0VsZW1lbnQuaCIKKyNpbmNsdWRlICJK
U01haW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGVJ
bnN0cnVtZW50YXRpb24uaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisj
aW5jbHVkZSA8aGVhcC9XZWFrSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlNDdXN0
b21FbGVtZW50SW50ZXJmYWNlOjpKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UoSlNPYmplY3QqIGNv
bnN0cnVjdG9yLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIDogQWN0aXZl
RE9NQ2FsbGJhY2soZ2xvYmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAg
LCBtX2NvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKQorICAgICwgbV9pc29sYXRlZFdvcmxkKCZnbG9i
YWxPYmplY3QtPndvcmxkKCkpCit7Cit9CisKK0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6fkpT
Q3VzdG9tRWxlbWVudEludGVyZmFjZSgpCit7Cit9CisKK2NvbnN0IEpTQzo6UHJpdmF0ZU5hbWUm
IEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6YXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrTmFtZSgp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEpTQzo6UHJpdmF0ZU5hbWU+IG5h
bWUgPSBKU0M6OlByaXZhdGVOYW1lKAorICAgICAgICBKU0M6OlByaXZhdGVOYW1lOjpEZXNjcmlw
dGlvbiwgQVNDSUlMaXRlcmFsKCJTeW1ib2xFbGVtZW50QXR0cmlidXRlQ2hhbmdlZCIpKTsKKyAg
ICByZXR1cm4gbmFtZS5nZXQoKTsKK30KKworUmVmUHRyPEVsZW1lbnQ+IEpTQ3VzdG9tRWxlbWVu
dEludGVyZmFjZTo6Y29uc3RydWN0KGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSkKK3sKKyAg
ICBpZiAoIWNhbkludm9rZUNhbGxiYWNrKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgUmVmPEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZT4gcHJvdGVjdCgqdGhpcyk7CisKKyAgICBK
U0xvY2tIb2xkZXIgbG9jayhtX2lzb2xhdGVkV29ybGQtPnZtKCkpOworCisgICAgaWYgKCFtX2Nv
bnN0cnVjdG9yKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFj
b250ZXh0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBBU1NFUlQoY29udGV4dC0+aXNE
b2N1bWVudCgpKTsKKyAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdG9KU0RP
TUdsb2JhbE9iamVjdChjb250ZXh0LCAqbV9pc29sYXRlZFdvcmxkKTsKKyAgICBFeGVjU3RhdGUq
IGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKworICAgIENvbnN0cnVjdERhdGEg
Y29uc3RydWN0RGF0YTsKKyAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBtX2NvbnN0
cnVjdG9yLT5tZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRhKG1fY29uc3RydWN0b3IuZ2V0
KCksIGNvbnN0cnVjdERhdGEpOworICAgIGlmIChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5
cGVOb25lKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOworICAgIGFy
Z3MuYXBwZW5kKGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIHRhZ05hbWUpKTsKKworLy8gRklYTUU6
IGFkZCBiYWNrIGluc3BlY3RvciBpbnN0cnVtZW50YXRpb24KKy8vIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSBjb29raWUgPSBKU01haW5UaHJlYWRFeGVjU3RhdGU6Omluc3RydW1lbnRG
dW5jdGlvbkNhbGwoY29udGV4dCwgY2FsbFR5cGUsIGNhbGxEYXRhKTsKKworICAgIC8vIEZJWE1F
OiBTaG91bGQgd2UgZG8gc29tZXRoaW5nIHNwZWNpYWwgZm9yIGV4Y2VwdGlvbnM/CisgICAgTmFr
ZWRQdHI8RXhjZXB0aW9uPiBleGNlcHRpb247CisgICAgSlNWYWx1ZSBuZXdFbGVtZW50ID0gSlNN
YWluVGhyZWFkRXhlY1N0YXRlOjpjb25zdHJ1Y3QoZXhlYywgbV9jb25zdHJ1Y3Rvci5nZXQoKSwg
Y29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgYXJncywgZXhjZXB0aW9uKTsKKyAgICBpZiAo
bmV3RWxlbWVudC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisvLyAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5jdGlvbihjb29raWUsIGNvbnRleHQp
OworCisgICAgRWxlbWVudCogZWxlbWVudCA9IEpTRWxlbWVudDo6dG9XcmFwcGVkKG5ld0VsZW1l
bnQpOworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZG8gc29lbXRlaGluZyBzcGVjaWFsIHdoZW4g
dGhlIGNvbnN0cnVjdG9yIHJldHVybmVkIGEgbm9uLUVsZW1lbnQgb2JqZWN0LgorCisgICAgcmV0
dXJuIGVsZW1lbnQ7Cit9CisKK3ZvaWQgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjphdHRyaWJ1
dGVDaGFuZ2VkKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRl
TmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBu
ZXdWYWx1ZSkKK3sKKyAgICBpZiAoIWNhbkludm9rZUNhbGxiYWNrKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIFJlZjxKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U+IHByb3RlY3QoKnRoaXMpOwor
CisgICAgSlNMb2NrSG9sZGVyIGxvY2sobV9pc29sYXRlZFdvcmxkLT52bSgpKTsKKworICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoY29udGV4
dC0+aXNEb2N1bWVudCgpKTsKKyAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
dG9KU0RPTUdsb2JhbE9iamVjdChjb250ZXh0LCAqbV9pc29sYXRlZFdvcmxkKTsKKyAgICBFeGVj
U3RhdGUqIHN0YXRlID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisKKyAgICBKU09iamVj
dCoganNFbGVtZW50ID0gYXNPYmplY3QodG9KUyhzdGF0ZSwgZ2xvYmFsT2JqZWN0LCAmZWxlbWVu
dCkpOworCisgICAgSlNWYWx1ZSBjYWxsYmFjayA9IGpzRWxlbWVudC0+Z2V0KHN0YXRlLCBhdHRy
aWJ1dGVDaGFuZ2VkQ2FsbGJhY2tOYW1lKCkpOworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAg
IENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoY2FsbGJhY2ssIGNhbGxEYXRhKTsKKyAg
ICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQorICAgICAgICByZXR1cm47CisKKyAgICBN
YXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOworICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nV2l0aENh
Y2hlKHN0YXRlLCBhdHRyaWJ1dGVOYW1lKSk7CisgICAgYXJncy5hcHBlbmQoanNTdHJpbmdXaXRo
Q2FjaGUoc3RhdGUsIG9sZFZhbHVlKSk7CisgICAgYXJncy5hcHBlbmQoanNTdHJpbmdXaXRoQ2Fj
aGUoc3RhdGUsIG5ld1ZhbHVlKSk7CisKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgY29va2llID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb25DYWxs
KGNvbnRleHQsIGNhbGxUeXBlLCBjYWxsRGF0YSk7CisKKyAgICBOYWtlZFB0cjxFeGNlcHRpb24+
IGV4Y2VwdGlvbjsKKyAgICBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwoc3RhdGUsIGNhbGxi
YWNrLCBjYWxsVHlwZSwgY2FsbERhdGEsIGpzRWxlbWVudCwgYXJncywgZXhjZXB0aW9uKTsKKwor
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKGNvb2tpZSwgY29u
dGV4dCk7CisKKyAgICBpZiAoZXhjZXB0aW9uKQorICAgICAgICByZXBvcnRFeGNlcHRpb24oc3Rh
dGUsIGV4Y2VwdGlvbik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmFmYjFhNAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5o
CkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNDdXN0b21FbGVtZW50SW50
ZXJmYWNlX2gKKyNkZWZpbmUgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlX2gKKworI2luY2x1ZGUg
IkFjdGl2ZURPTUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCisjaW5j
bHVkZSAiQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oIgorI2luY2x1ZGUgPGhlYXAvV2Vhay5oPgor
I2luY2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4KKyNpbmNsdWRlIDxydW50aW1lL1ByaXZhdGVO
YW1lLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBKU0RPTUdsb2JhbE9iamVjdDsKKworY2xhc3MgSlNDdXN0b21FbGVtZW50SW50ZXJm
YWNlIDogcHVibGljIEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UsIHB1YmxpYyBBY3RpdmVET01DYWxs
YmFjayB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U+
IGNyZWF0ZShKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpTQ3VzdG9tRWxl
bWVudEludGVyZmFjZShjYWxsYmFjaywgZ2xvYmFsT2JqZWN0KSk7CisgICAgfQorCisgICAgdmly
dHVhbCB+SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlKCk7CisKKyAgICBzdGF0aWMgY29uc3QgSlND
OjpQcml2YXRlTmFtZSYgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrTmFtZSgpOworCitwcml2YXRl
OgorICAgIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZShKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywg
SlNET01HbG9iYWxPYmplY3QqKTsKKworICAgIHZpcnR1YWwgUmVmUHRyPEVsZW1lbnQ+IGNvbnN0
cnVjdChjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRv
bWljU3RyaW5nJiBuZXdWYWx1ZSkgb3ZlcnJpZGU7CisKKyAgICB2aXJ0dWFsIEpTQzo6SlNPYmpl
Y3QqIGNvbnN0cnVjdG9yKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb25zdHJ1Y3Rvci5nZXQoKTsg
fQorCisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2
ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQorCisgICAgbXV0YWJsZSBKU0M6OldlYWs8
SlNDOjpKU09iamVjdD4gbV9jb25zdHJ1Y3RvcjsKKyAgICBSZWZQdHI8RE9NV3JhcHBlcldvcmxk
PiBtX2lzb2xhdGVkV29ybGQ7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4
IGUxYjBiNWIuLjg2MTM1YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMu
aCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgogI2luY2x1ZGUgIkpTRXhjZXB0aW9u
QmFzZS5oIgorI2luY2x1ZGUgIkxpZmVjeWNsZUNhbGxiYWNrUXVldWUuaCIKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaD4K
ICNpbmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oPgpAQCAtNjY2LDQg
KzY2NywyNiBAQCB2b2lkIERPTUNvbnN0cnVjdG9ySlNCdWlsdGluT2JqZWN0Ojp2aXNpdENoaWxk
cmVuKEpTQzo6SlNDZWxsKiBjZWxsLCBKU0M6OlNsb3RWaQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX2luaXRpYWxpemVGdW5jdGlvbik7CiB9CiAKK0xpZmVjeWNsZUNhbGxiYWNr
UXVldWUqIEN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2s6OmVuc3VyZUN1cnJl
bnRRdWV1ZSgpCit7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIHJlbW92ZSB0
aGlzIGVhcmx5IHJldHVybiBvbmNlIE5lZWRzUHJvY2Vzc2luZ1N0YWNrIGlzIGFkZGRlZCBldmVy
eXdoZXJlLgorICAgIGlmICghc19jdXJyZW50UHJvY2Vzc2luZ1N0YWNrKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIGF1dG8qJiBxdWV1ZSA9IHNfY3VycmVudFByb2Nlc3NpbmdTdGFj
ay0+bV9xdWV1ZTsKKyAgICBpZiAoIXF1ZXVlKSAvLyBXZSB1c2UgYSByYXcgcG9pbnRlciB0byBh
dm9pZCBnZW5lYXJpbmcgY29kZSB0byBkZWxldGUgaXQgaW4gfkN1c3RvbUVsZW1lbnRMaWZlY3lj
bGVQcm9jZXNzaW5nU3RhY2suCisgICAgICAgIHF1ZXVlID0gbmV3IExpZmVjeWNsZUNhbGxiYWNr
UXVldWU7CisgICAgcmV0dXJuIHF1ZXVlOworfQorCit2b2lkIEN1c3RvbUVsZW1lbnRMaWZlY3lj
bGVQcm9jZXNzaW5nU3RhY2s6OnByb2Nlc3NRdWV1ZSgpCit7CisgICAgQVNTRVJUKG1fcXVldWUp
OworICAgIG1fcXVldWUtPmludm9rZUFsbCgpOworICAgIGRlbGV0ZSBtX3F1ZXVlOworICAgIG1f
cXVldWUgPSBudWxscHRyOworfQorCitDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0
YWNrKiBDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOjpzX2N1cnJlbnRQcm9j
ZXNzaW5nU3RhY2sgPSBudWxscHRyOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmluZGV4IDhiOWIxY2MuLjk3MGY2NTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC02Miw2ICs2
Miw3IEBAIGNsYXNzIENhY2hlZFNjcmlwdDsKIGNsYXNzIERPTVN0cmluZ0xpc3Q7CiBjbGFzcyBE
T01XaW5kb3c7CiBjbGFzcyBGcmFtZTsKK2NsYXNzIExpZmVjeWNsZUNhbGxiYWNrUXVldWU7CiBj
bGFzcyBVUkw7CiBjbGFzcyBOb2RlOwogCkBAIC02NzgsNiArNjc5LDMzIEBAIGlubGluZSB2b2lk
IHNldFByb3BlcnR5VG9PYmplY3QoSlNDOjpFeGVjU3RhdGUmIGV4ZWMsIEpTQzo6SlNPYmplY3Qm
IG9iamVjdCwgY29uCiAgICAgSlNDOjpQdXRQcm9wZXJ0eVNsb3QgcHJvcGVydHlTbG90KCZvYmpl
Y3QpOwogICAgIEpTQzo6SlNPYmplY3Q6OnB1dCgmb2JqZWN0LCAmZXhlYywgSlNDOjpJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZleGVjLCBuYW1lKSwgdmFsdWUsIHByb3BlcnR5U2xvdCk7CiB9CisK
K2NsYXNzIEN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2sgeworcHVibGljOgor
ICAgIEN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2soKQorICAgICAgICA6IG1f
cHJldmlvdXNQcm9jZXNzaW5nU3RhY2soc19jdXJyZW50UHJvY2Vzc2luZ1N0YWNrKQorICAgIHsK
KyAgICAgICAgc19jdXJyZW50UHJvY2Vzc2luZ1N0YWNrID0gdGhpczsKKyAgICB9CisKKyAgICB+
Q3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjaygpCisgICAgeworICAgICAgICBp
ZiAoVU5MSUtFTFkobV9xdWV1ZSkpCisgICAgICAgICAgICBwcm9jZXNzUXVldWUoKTsKKyAgICAg
ICAgc19jdXJyZW50UHJvY2Vzc2luZ1N0YWNrID0gbV9wcmV2aW91c1Byb2Nlc3NpbmdTdGFjazsK
KyAgICB9CisKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYSByZWZlcmVuY2Ugb25jZSAi
ZW5zdXJlIiBzdGFydHMgdG8gd29yay4KKyAgICBzdGF0aWMgTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1
ZSogZW5zdXJlQ3VycmVudFF1ZXVlKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBwcm9jZXNzUXVl
dWUoKTsKKworICAgIExpZmVjeWNsZUNhbGxiYWNrUXVldWUqIG1fcXVldWUgeyBudWxscHRyIH07
CisgICAgQ3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayogbV9wcmV2aW91c1By
b2Nlc3NpbmdTdGFjazsKKworICAgIHN0YXRpYyBDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vz
c2luZ1N0YWNrKiBzX2N1cnJlbnRQcm9jZXNzaW5nU3RhY2s7Cit9OwogICAgIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1l
bnRDdXN0b20uY3BwCmluZGV4IGVjMGI5YzIuLjkzYjZlNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCkBAIC0yMCwxMSArMjAsMTMgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU0RvY3VtZW50LmgiCiAKKyNpbmNsdWRl
ICJDdXN0b21FbGVtZW50RGVmaW5pdGlvbnMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUg
IkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgi
CisjaW5jbHVkZSAiSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSlNET01X
aW5kb3dDdXN0b20uaCIKICNpbmNsdWRlICJKU0hUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkpT
TG9jYXRpb24uaCIKQEAgLTM1LDYgKzM3LDkgQEAKICNpbmNsdWRlICJTVkdEb2N1bWVudC5oIgog
I2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJUb3VjaExpc3QuaCIKKwor
I2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KKyNpbmNsdWRlIDxydW50aW1lL1ByaXZhdGVOYW1l
Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogCiAjaWYgRU5BQkxFKFdFQkdMKQpAQCAtMTMw
LDQgKzEzNSw0NCBAQCBKU1ZhbHVlIEpTRG9jdW1lbnQ6OmNyZWF0ZVRvdWNoTGlzdChFeGVjU3Rh
dGUmIHN0YXRlKQogfQogI2VuZGlmCiAKKworSlNWYWx1ZSBKU0RvY3VtZW50OjpkZWZpbmVDdXN0
b21FbGVtZW50KEV4ZWNTdGF0ZSYgc3RhdGUpCit7CisgICAgQXRvbWljU3RyaW5nIHRhZ05hbWUo
c3RhdGUuYXJndW1lbnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dG9BdG9taWNTdHJpbmcoJnN0YXRl
KSk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLmhhZEV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICBKU09iamVjdCogb2JqZWN0ID0gc3RhdGUuYXJndW1l
bnQoMSkuZ2V0T2JqZWN0KCk7CisgICAgQ29uc3RydWN0RGF0YSBjYWxsRGF0YTsKKyAgICBpZiAo
IW9iamVjdCB8fCBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEob2JqZWN0
LCBjYWxsRGF0YSkgPT0gQ29uc3RydWN0VHlwZU5vbmUpCisgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcigmc3RhdGUsICJUaGUgc2Vjb25kIGFyZ3VtZW50IG11c3QgYmUgYSBjb25zdHJ1Y3Rv
ciIpOworCisgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNET01HbG9i
YWxPYmplY3QoJmltcGwoKSwgJnN0YXRlKTsKKworICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGlt
cGwoKTsKKyAgICBzd2l0Y2ggKEN1c3RvbUVsZW1lbnREZWZpbml0aW9uczo6Y2hlY2tOYW1lKHRh
Z05hbWUpKSB7CisgICAgY2FzZSBDdXN0b21FbGVtZW50RGVmaW5pdGlvbnM6Ok5hbWVTdGF0dXM6
OlZhbGlkOgorICAgIGJyZWFrOworICAgIGNhc2UgQ3VzdG9tRWxlbWVudERlZmluaXRpb25zOjpO
YW1lU3RhdHVzOjpDb25mbGljdHNXaXRoQnVpbHRpbk5hbWVzOgorICAgICAgICByZXR1cm4gdGhy
b3dTeW50YXhFcnJvcigmc3RhdGUsICJDdXN0b20gZWxlbWVudCBuYW1lIGNhbm5vdCBiZSBzYW1l
IGFzIG9uZSBvZiB0aGUgYnVpbHRpbiBlbGVtZW50cyIpOworICAgIGNhc2UgQ3VzdG9tRWxlbWVu
dERlZmluaXRpb25zOjpOYW1lU3RhdHVzOjpOb0h5cGhlbjoKKyAgICAgICAgcmV0dXJuIHRocm93
U3ludGF4RXJyb3IoJnN0YXRlLCAiQ3VzdG9tIGVsZW1lbnQgbmFtZSBtdXN0IGNvbnRhaW4gYSBo
eXBoZW4iKTsKKyAgICBjYXNlIEN1c3RvbUVsZW1lbnREZWZpbml0aW9uczo6TmFtZVN0YXR1czo6
Q29udGFpbnNVcHBlckNhc2U6CisgICAgICAgIHJldHVybiB0aHJvd1N5bnRheEVycm9yKCZzdGF0
ZSwgIkN1c3RvbSBlbGVtZW50IG5hbWUgY2Fubm90IGNvbnRhaW4gYW4gdXBwZXIgY2FzZSBsZXR0
ZXIiKTsKKyAgICB9CisKKyAgICBRdWFsaWZpZWROYW1lIG5hbWUobnVsbEF0b20sIHRhZ05hbWUs
IEhUTUxOYW1lczo6eGh0bWxOYW1lc3BhY2VVUkkpOworICAgIGF1dG8mIGRlZmluaXRpb25zID0g
ZG9jdW1lbnQuZW5zdXJlQ3VzdG9tRWxlbWVudERlZmluaXRpb25zKCk7CisgICAgaWYgKGRlZmlu
aXRpb25zLmZpbmRJbnRlcmZhY2UodGFnTmFtZSkpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9u
KCZzdGF0ZSwgTk9UX1NVUFBPUlRFRF9FUlIpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKKyAgICB9CisgICAgZGVmaW5pdGlvbnMuZGVmaW5lRWxlbWVudChuYW1lLCBKU0N1c3RvbUVs
ZW1lbnRJbnRlcmZhY2U6OmNyZWF0ZShvYmplY3QsIGdsb2JhbE9iamVjdCkpOworICAgIFByaXZh
dGVOYW1lIHVuaXF1ZVByaXZhdGVOYW1lOworICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KGds
b2JhbE9iamVjdC0+dm0oKSwgdW5pcXVlUHJpdmF0ZU5hbWUsIG9iamVjdCk7CisKKyAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcAppbmRleCA3MmRkMzhl
Li4xOWIxYjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0VsZW1l
bnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1
c3RvbS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJIVE1MRnJhbWVFbGVtZW50QmFz
ZS5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkpTQXR0ci5oIgorI2luY2x1
ZGUgIkpTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5o
IgogI2luY2x1ZGUgIkpTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5oIgogI2luY2x1ZGUgIkpT
Tm9kZUxpc3QuaCIKQEAgLTQyLDYgKzQzLDcgQEAKICNpbmNsdWRlICJKU1NWR0VsZW1lbnRXcmFw
cGVyRmFjdG9yeS5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVu
dC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N5bWJvbEltcGwuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIApAQCAtNTQsNyArNTYsMTAgQEAgSlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNT
dGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVsZW1lbnQqIGUKICAgICBp
ZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKIAotICAgIEFTU0VSVCghZ2V0
Q2FjaGVkV3JhcHBlcihnbG9iYWxPYmplY3QtPndvcmxkKCksIGVsZW1lbnQpKTsKKyAgICAvLyBG
SVhNRTogQWRkIGJhY2sgdGhlIGFzc2VydGlvbiBmb3Igbm9uLWN1c3RvbSBlbGVtZW50cy4KKyAg
ICBBU1NFUlQoZWxlbWVudC0+aXNDdXN0b21FbGVtZW50KCkgfHwgIWdldENhY2hlZFdyYXBwZXIo
Z2xvYmFsT2JqZWN0LT53b3JsZCgpLCBlbGVtZW50KSk7CisgICAgaWYgKGF1dG8qIHdyYXBwZXIg
PSBnZXRDYWNoZWRXcmFwcGVyKGdsb2JhbE9iamVjdC0+d29ybGQoKSwgZWxlbWVudCkpCisgICAg
ICAgIHJldHVybiB3cmFwcGVyOwogCiAgICAgSlNET01XcmFwcGVyKiB3cmFwcGVyOyAgICAgICAg
CiAgICAgaWYgKGlzPEhUTUxFbGVtZW50PigqZWxlbWVudCkpCkBAIC02Nyw2ICs3MiwxMSBAQCBK
U1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRWxlbWVudCogZQogICAgIHJldHVybiB3cmFwcGVyOyAgICAKIH0KIAorSlNW
YWx1ZSBKU0VsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoRXhlY1N0YXRlJiBzdGF0ZSkKK3sKKyAg
ICByZXR1cm4gU3ltYm9sOjpjcmVhdGUoc3RhdGUudm0oKSwgKkpTQ3VzdG9tRWxlbWVudEludGVy
ZmFjZTo6YXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrTmFtZSgpLnVpZCgpKTsKK30KKwogSlNWYWx1
ZSBKU0VsZW1lbnQ6OmJlZm9yZShFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
RWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVt
ZW50Q3VzdG9tLmNwcAppbmRleCAzZDQ4ZGYwLi41MzdmNzY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMTQgKzI2LDY5
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNIVE1MRWxlbWVudC5oIgogCisj
aW5jbHVkZSAiQ3VzdG9tRWxlbWVudERlZmluaXRpb25zLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKKyNpbmNsdWRlICJKU0N1c3RvbUVsZW1l
bnRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAjaW5jbHVkZSA8cnVu
dGltZS9KU1dpdGhTY29wZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNIVE1M
RWxlbWVudChFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIERPTUNvbnN0cnVjdG9yT2JqZWN0KiBq
c0NvbnN0cnVjdG9yID0ganNDYXN0PERPTUNvbnN0cnVjdG9yT2JqZWN0Kj4oc3RhdGUtPmNhbGxl
ZSgpKTsKKworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBqc0NvbnN0cnVj
dG9yLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0IHx8ICFjb250
ZXh0LT5pc0RvY3VtZW50KCkpCisgICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yRG9jdW1l
bnRVbmF2YWlsYWJsZUVycm9yKCpzdGF0ZSwgIkhUTUxFbGVtZW50Iik7CisgICAgYXV0byYgZG9j
dW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpOworCisgICAgYXV0byogZGVmaW5p
dGlvbnMgPSBkb2N1bWVudC5jdXN0b21FbGVtZW50RGVmaW5pdGlvbnMoKTsKKyAgICBpZiAoIWRl
ZmluaXRpb25zKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgIm5ldy50
YXJnZXQgaXMgbm90IGEgdmFsaWQgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3IiKTsKKworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIEpTT2JqZWN0KiBuZXdUYXJnZXQgPSBzdGF0ZS0+
dGhpc1ZhbHVlKCkuZ2V0T2JqZWN0KCk7CisgICAgUXVhbGlmaWVkTmFtZSBmdWxsTmFtZSA9IGRl
ZmluaXRpb25zLT5maW5kTmFtZShuZXdUYXJnZXQpOworICAgIGlmIChmdWxsTmFtZSA9PSBudWxs
UU5hbWUoKSkgeworICAgICAgICBpZiAoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAg
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOworICAgIH0KKworICAgIGlmIChzdGF0ZS0+YXJndW1lbnRDb3VudCgp
KSB7CisgICAgICAgIFN0cmluZyBuYW1lOworICAgICAgICBpZiAoIXN0YXRlLT5hcmd1bWVudCgw
KS5nZXRTdHJpbmcoc3RhdGUsIG5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3Ioc3RhdGUsICJUaGUgZmlyc3QgYXJndW1lbnQgaXMgbm90IGEgdmFsaWQgY3VzdG9tIGVs
ZW1lbnQgbmFtZSIpOworCisgICAgICAgIGF1dG8qIGludGVyZmFjZSA9IGRlZmluaXRpb25zLT5m
aW5kSW50ZXJmYWNlKG5hbWUpOworICAgICAgICBpZiAoIWludGVyZmFjZSkKKyAgICAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCAiVGhlIGZpcnN0IGFyZ3VtZW50IGlzIG5v
dCBhIHZhbGlkIGN1c3RvbSBlbGVtZW50IG5hbWUiKTsKKworICAgICAgICBpZiAobmV3VGFyZ2V0
ICE9IGludGVyZmFjZS0+Y29uc3RydWN0b3IoKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKHN0YXRlLCAiQXR0ZW1wdCB0byBjb25zdHJ1Y3QgYSBjdXN0b20gZWxlbWVudCB3
aXRoIGEgd3JvbmcgaW50ZXJmYWNlIik7CisKKyAgICAgICAgZnVsbE5hbWUgPSBRdWFsaWZpZWRO
YW1lKG51bGxBdG9tLCBuYW1lLCBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJKTsKKyAgICB9
CisKKyAgICBKU1ZhbHVlIHByb3RvdHlwZU9iamVjdCA9IG5ld1RhcmdldC0+Z2V0KHN0YXRlLCB2
bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpOworICAgIGlmIChzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAg
ICBhdXRvKiBnbG9iYWxPYmplY3QgPSBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKTsKKyAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGNyZWF0ZSBhIG5ldyBzdHJ1Y3R1cmUgZWFjaCB0aW1l
LiBDYWNoZSBpdCBvbiB0aGUgY29uc3RydWN0b3Igb2JqZWN0IG9yIGludGVyZmFjZSB3cmFwcGVy
LgorICAgIGF1dG8qIG5ld0VsZW1lbnRTdHJ1Y3R1cmUgPSBKU0hUTUxFbGVtZW50OjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlT2JqZWN0KTsKKworICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgZ2V0IHRoZSBxdWFsaWZpZWQgbmFtZSBvdXQgb2YgdGhlIGludGVyZmFj
ZS4KKyAgICBSZWY8SFRNTEVsZW1lbnQ+IGVsZW1lbnQgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKGZ1
bGxOYW1lLCBkb2N1bWVudCk7CisgICAgZWxlbWVudC0+c2V0Q3VzdG9tRWxlbWVudCgpOworICAg
IGF1dG8qIGpzRWxlbWVudCA9IEpTSFRNTEVsZW1lbnQ6OmNyZWF0ZShuZXdFbGVtZW50U3RydWN0
dXJlLCBnbG9iYWxPYmplY3QsIGVsZW1lbnQuZ2V0KCkpOworICAgIGNhY2hlV3JhcHBlcihnbG9i
YWxPYmplY3QtPndvcmxkKCksIGVsZW1lbnQucHRyKCksIGpzRWxlbWVudCk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0VsZW1lbnQpOworfQorCiBKU1Njb3BlKiBKU0hUTUxFbGVtZW50
OjpwdXNoRXZlbnRIYW5kbGVyU2NvcGUoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSkg
Y29uc3QKIHsKICAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9IGltcGwoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgKaW5kZXggMDll
N2U1Yi4uY2Y3OGNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
YWluVGhyZWFkRXhlY1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
YWluVGhyZWFkRXhlY1N0YXRlLmgKQEAgLTU2LDYgKzU2LDEzIEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIEpTQzo6Y2FsbChleGVjLCBmdW5jdGlvbk9iamVjdCwgY2FsbFR5cGUsIGNhbGxEYXRh
LCB0aGlzVmFsdWUsIGFyZ3MsIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICB9OwogCisgICAgc3Rh
dGljIEpTQzo6SlNWYWx1ZSBjb25zdHJ1Y3QoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNW
YWx1ZSBjb25zdHJ1Y3Rvck9iamVjdCwgSlNDOjpDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUs
IGNvbnN0IEpTQzo6Q29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSwKKyAgICAgICAgY29uc3Qg
SlNDOjpBcmdMaXN0JiBhcmdzLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhj
ZXB0aW9uKQorICAgIHsKKyAgICAgICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlIGN1cnJlbnRTdGF0
ZShleGVjKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6Y29uc3RydWN0KGV4ZWMsIGNvbnN0cnVjdG9y
T2JqZWN0LCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdzLCByZXR1cm5lZEV4Y2Vw
dGlvbik7CisgICAgfTsKKwogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZXZhbHVhdGUoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6U291cmNlQ29kZSYgc291cmNlLCBKU0M6OkpTVmFs
dWUgdGhpc1ZhbHVlLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9u
KQogICAgIHsKICAgICAgICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlIGN1cnJlbnRTdGF0ZShleGVj
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0KaW5kZXggNGRkODdkYy4uMTU2Yjc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTExNDMsNyArMTE0MywxMSBA
QCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgICAgIGlmIChIYXNDdXN0b21HZXR0ZXIoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMpKSB7CiAgICAgICAgICAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYg
JGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICAgICAgICAgIG15ICRtZXRob2ROYW1lID0gJGNv
ZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKTsKLSAg
ICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIEpTQzo6SlNWYWx1ZSAiIC4g
JG1ldGhvZE5hbWUgLiAiKEpTQzo6RXhlY1N0YXRlJikgY29uc3Q7XG4iKTsKKyAgICAgICAgICAg
ICAgICBpZiAoJGF0dHJpYnV0ZS0+aXNTdGF0aWMpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlICIgLiAkbWV0aG9kTmFt
ZSAuICIoSlNDOjpFeGVjU3RhdGUmKTtcbiIpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgSlNDOjpKU1ZhbHVl
ICIgLiAkbWV0aG9kTmFtZSAuICIoSlNDOjpFeGVjU3RhdGUmKSBjb25zdDtcbiIpOworICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2VuZGlm
XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBp
ZiAoSGFzQ3VzdG9tU2V0dGVyKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzKSAmJiAhSXNSZWFkb25seSgkYXR0cmlidXRlKSkgewpAQCAtMjM3Niw3ICsyMzgwLDExIEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICB9ICMgYXR0cmlidXRlIE5v
bmRldGVybWluaXN0aWMKIAogICAgICAgICAgICAgaWYgKEhhc0N1c3RvbUdldHRlcigkYXR0cmli
dXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcykpIHsKLSAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMt
PiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCpzdGF0ZSkpO1xuIik7CisgICAgICAgICAgICAgICAg
aWYgKCRhdHRyaWJ1dGUtPmlzU3RhdGljKSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoJHtjbGFzc05hbWV9OjokaW1w
bEdldHRlckZ1bmN0aW9uTmFtZSgqc3RhdGUpKTtcbiIpOworICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+JGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoKnN0YXRl
KSk7XG4iKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmli
dXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5Rm9yTm9k
ZSJ9KSB7CiAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNET01CaW5kaW5nLmgifSA9
IDE7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTtcbiIpOwpAQCAtMjkwNiw2ICsyOTE0LDEwIEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IjxydW50aW1l
L0Vycm9yLmg+In0gPSAxOwogCisgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOZWVkc1Byb2Nlc3NpbmdTdGFjayJ9KSB7CisgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQ3VzdG9tRWxlbWVudExpZmVjeWNsZVBy
b2Nlc3NpbmdTdGFjayBjdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrO1xuIik7
CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPmlzU3RhdGljKSB7
CiAgICAgICAgICAgICAgICAgaWYgKCRpc0N1c3RvbSkgewogICAgICAgICAgICAgICAgICAgICBH
ZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2soXEBpbXBsQ29udGVudCwgJGZ1bmN0aW9uLCAkaW50
ZXJmYWNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURM
QXR0cmlidXRlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJp
YnV0ZXMudHh0CmluZGV4IGRkMTAyNzMuLjE5ZTQyMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dApAQCAtODksNiArODksNyBAQCBK
U0dlbmVyYXRlVG9OYXRpdmVPYmplY3QKIEpTTGVnYWN5UGFyZW50PSoKIE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQKIE5hbWVkQ29uc3RydWN0b3I9KgorTmVlZHNQcm9jZXNzaW5nU3RhY2sKIE5ld0lt
cHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cwogTmV3T2JqZWN0CiBOb0ludGVyZmFjZU9iamVj
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcAppbmRleCAzYTA4ODJjLi4wMjAxNmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMTUzLDYg
KzE1Myw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24oCiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Eb21TdHJpbmdMaXN0RnVuY3Rp
b24oSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGFibGVTZXF1
ZW5jZShKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNl
cXVlbmNlMihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5lZWRzUHJvY2Vzc2luZ1N0
YWNrKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTVkdEb2N1bWVudChKU0M6OkV4ZWNTdGF0ZSop
OwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQ29udmVydDEoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQyKEpTQzo6RXhlY1N0
YXRlKik7CkBAIC0zMDEsNiArMzAyLDcgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpE
ZXNjcmlwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkUKIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSWQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogdm9pZCBzZXRKU1Rl
c3RPYmpJZChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
SGFzaChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0
cnVjdG9yQXR0cmlidXRlQ2hhbmdlZChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpK
U09iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIHZvaWQg
c2V0SlNUZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
T2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlRG91YmxlQXR0cmlidXRlKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKQEAgLTQzOSw2ICs0NDEsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUg
SlNUZXN0T2JqQ29uc3RydWN0b3JUYWJsZVZhbHVlc1tdID0KICAgICB7ICJzdGF0aWNSZWFkT25s
eUxvbmdBdHRyIiwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakNvbnN0
cnVjdG9yU3RhdGljUmVhZE9ubHlMb25nQXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJzdGF0aWNTdHJpbmdB
dHRyIiwgRG9udERlbGV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0cmlu
Z0F0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0cmluZ0F0dHIpIH0gfSwKICAgICB7
ICJUZXN0U3ViT2JqIiwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakNv
bnN0cnVjdG9yVGVzdFN1Yk9iaiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKKyAgICB7ICJhdHRyaWJ1dGVDaGFuZ2VkIiwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakNvbnN0cnVjdG9yQXR0cmlidXRl
Q2hhbmdlZCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25h
bEFyZyIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhv
ZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsg
InN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FyZyIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqQ29uc3Ry
dWN0b3JGdW5jdGlvblN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FyZyksIChpbnRwdHJfdCkgKDEp
IH0gfSwKICAgICB7ICJjbGFzc01ldGhvZCIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqQ29uc3RydWN0
b3JGdW5jdGlvbkNsYXNzTWV0aG9kKSwgKGludHB0cl90KSAoMCkgfSB9LApAQCAtNjk1LDYgKzY5
OCw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm90b3R5cGVUYWJs
ZVZhbHVlc1tdID0KICAgICB7ICJkb21TdHJpbmdMaXN0RnVuY3Rpb24iLCBKU0M6OkZ1bmN0aW9u
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRG9tU3RyaW5nTGlzdEZ1bmN0aW9uKSwgKGludHB0cl90
KSAoMSkgfSB9LAogICAgIHsgIm1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGFibGVTZXF1ZW5jZSIs
IEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRp
dmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQW5kV2l0aG91
dE51bGxhYmxlU2VxdWVuY2UpLCAoaW50cHRyX3QpICgyKSB9IH0sCiAgICAgeyAibWV0aG9kV2l0
aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlMiIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2UyKSwgKGludHB0
cl90KSAoMikgfSB9LAorICAgIHsgIm1ldGhvZFdpdGhOZWVkc1Byb2Nlc3NpbmdTdGFjayIsIEpT
Qzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVG
dW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTmVlZHNQcm9jZXNz
aW5nU3RhY2spLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAiZ2V0U1ZHRG9jdW1lbnQiLCBK
U0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZl
RnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0U1ZHRG9jdW1lbnQpLCAoaW50
cHRyX3QpICgwKSB9IH0sCiAgICAgeyAiY29udmVydDEiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQ29udmVydDEpLCAoaW50cHRyX3QpICgxKSB9IH0sCiAgICAgeyAiY29u
dmVydDIiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDIpLCAo
aW50cHRyX3QpICgxKSB9IH0sCkBAIC0xNzk1LDYgKzE3OTksMTUgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqSGFzaChFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29k
ZWRKU1ZhbHUKIH0KIAogCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckF0dHJp
YnV0ZUNoYW5nZWQoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOworICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CisgICAgVU5VU0VEX1BBUkFNKHRoaXNW
YWx1ZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPYmo6OmF0dHJpYnV0ZUNo
YW5nZWQoKnN0YXRlKSk7Cit9CisKKwogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVwbGFjZWFi
bGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOwpAQCAtNDU2Nyw2ICs0NTgwLDE5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQW5kV2l0aG91dE51bGxhCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOZWVk
c1Byb2Nlc3NpbmdTdGFjayhFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIEN1c3RvbUVsZW1lbnRM
aWZlY3ljbGVQcm9jZXNzaW5nU3RhY2sgY3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdT
dGFjazsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKKyAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1
ZSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhOZWVkc1Byb2Nlc3Np
bmdTdGFjayIpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgaW1wbC5tZXRob2RXaXRoTmVlZHNQcm9jZXNzaW5nU3RhY2soKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0U1ZHRG9jdW1lbnQoRXhlY1N0YXRl
KiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouaAppbmRleCA3NjlmMWVlLi43MWI3NGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCkBAIC01OSw2ICs1OSw3IEBAIHB1
YmxpYzoKICAgICAvLyBDdXN0b20gYXR0cmlidXRlcwogICAgIEpTQzo6SlNWYWx1ZSBjdXN0b21B
dHRyKEpTQzo6RXhlY1N0YXRlJikgY29uc3Q7CiAgICAgdm9pZCBzZXRDdXN0b21BdHRyKEpTQzo6
RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKKyAgICBKU0M6OkpTVmFsdWUgYXR0cmlidXRlQ2hh
bmdlZChKU0M6OkV4ZWNTdGF0ZSYpIGNvbnN0OwogCiAgICAgLy8gQ3VzdG9tIGZ1bmN0aW9ucwog
ICAgIEpTQzo6SlNWYWx1ZSBjdXN0b21NZXRob2QoSlNDOjpFeGVjU3RhdGUmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAppbmRleCAzNWQ0
NjFmLi5iZTM0MDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdE9iai5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RPYmouaWRsCkBAIC0yMzYsNiArMjM2LDggQEAgZW51bSBfb3B0aW9uYWwgeyAiIiwg
Ik9wdGlvbmFsVmFsdWUxIiwgIk9wdGlvbmFsVmFsdWUyIiwgIk9wdGlvbmFsVmFsdWUzIiB9Owog
CiAgICAgdm9pZCBtZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2Uoc2VxdWVuY2U8
dW5zaWduZWQgbG9uZz4gYXJyYXlBcmcsIHNlcXVlbmNlPHVuc2lnbmVkIGxvbmc+PyBudWxsYWJs
ZUFycmF5QXJnKTsKICAgICB2b2lkIG1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGFibGVTZXF1ZW5j
ZTIodW5zaWduZWQgbG9uZ1tdIGFycmF5QXJnLCB1bnNpZ25lZCBsb25nW10/IG51bGxhYmxlQXJy
YXlBcmcpOworCisgICAgW05lZWRzUHJvY2Vzc2luZ1N0YWNrXSB2b2lkIG1ldGhvZFdpdGhOZWVk
c1Byb2Nlc3NpbmdTdGFjaygpOwogI2VuZGlmCiAKICAgICBbQ2hlY2tTZWN1cml0eUZvck5vZGVd
IHJlYWRvbmx5IGF0dHJpYnV0ZSBEb2N1bWVudCBjb250ZW50RG9jdW1lbnQ7CkBAIC0yNzgsNiAr
MjgwLDEwIEBAIGVudW0gX29wdGlvbmFsIHsgIiIsICJPcHRpb25hbFZhbHVlMSIsICJPcHRpb25h
bFZhbHVlMiIsICJPcHRpb25hbFZhbHVlMyIgfTsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBD
T05TVF9WQUxVRV8xNCA9IDB4MWFiYzsKICAgICBbUmVmbGVjdD1DT05TVF9JTVBMXSBjb25zdCB1
bnNpZ25lZCBzaG9ydCBDT05TVF9KQVZBU0NSSVBUID0gMTU7CiAKKyNpZiBkZWZpbmVkKFRFU1RJ
TkdfSlMpCisgICAgW0N1c3RvbV0gc3RhdGljIHJlYWRvbmx5IGF0dHJpYnV0ZSBTeW1ib2wgYXR0
cmlidXRlQ2hhbmdlZDsKKyNlbmRpZgorCiAgICAgW1JlcGxhY2VhYmxlXSByZWFkb25seSBhdHRy
aWJ1dGUgbG9uZyByZXBsYWNlYWJsZUF0dHJpYnV0ZTsKIAogICAgIHZvaWQgdmFyaWFkaWNTdHJp
bmdNZXRob2QoRE9NU3RyaW5nIGhlYWQsIERPTVN0cmluZy4uLiB0YWlsKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50RGVmaW5pdGlvbnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnREZWZpbml0aW9ucy5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMjQ3MGQ0MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50RGVmaW5pdGlvbnMuY3BwCkBAIC0wLDAgKzEsMTA0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkN1c3RvbUVsZW1lbnREZWZpbml0aW9ucy5oIgorCisjaW5j
bHVkZSAiQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisj
aW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKKyNpbmNsdWRl
IDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDdXN0
b21FbGVtZW50RGVmaW5pdGlvbnM6Ok5hbWVTdGF0dXMgQ3VzdG9tRWxlbWVudERlZmluaXRpb25z
OjpjaGVja05hbWUoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKQoreworICAgIGJvb2wgY29u
dGFpbnNIeXBoZW4gPSBmYWxzZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGFnTmFt
ZS5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgIGlmIChpc0FTQ0lJVXBwZXIodGFnTmFtZVtpXSkp
CisgICAgICAgICAgICByZXR1cm4gTmFtZVN0YXR1czo6Q29udGFpbnNVcHBlckNhc2U7CisgICAg
ICAgIGVsc2UgaWYgKHRhZ05hbWVbaV0gPT0gJy0nKQorICAgICAgICAgICAgY29udGFpbnNIeXBo
ZW4gPSB0cnVlOworICAgIH0KKyAgICAKKyAgICBpZiAoIWNvbnRhaW5zSHlwaGVuKQorICAgICAg
ICByZXR1cm4gTmFtZVN0YXR1czo6Tm9IeXBoZW47CisgICAgCisgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBiZSB0YWtpbmcgdGhlIGFkdmFudGFnZSBvZiBRdWFsaWZpZWROYW1lcyBpbiBTVkcgYW5k
IE1hdGhNTC4KKyAgICBpZiAodGFnTmFtZSA9PSAiYW5ub3RhdGlvbi14bWwiCisgICAgICAgIHx8
IHRhZ05hbWUgPT0gImNvbG9yLXByb2ZpbGUiCisgICAgICAgIHx8IHRhZ05hbWUgPT0gImZvbnQt
ZmFjZSIKKyAgICAgICAgfHwgdGFnTmFtZSA9PSAiZm9udC1mYWNlLXNyYyIKKyAgICAgICAgfHwg
dGFnTmFtZSA9PSAiZm9udC1mYWNlLXVyaSIKKyAgICAgICAgfHwgdGFnTmFtZSA9PSAiZm9udC1m
YWNlLWZvcm1hdCIKKyAgICAgICAgfHwgdGFnTmFtZSA9PSAiZm9udC1mYWNlLW5hbWUiCisgICAg
ICAgIHx8IHRhZ05hbWUgPT0gIm1pc3NpbmctZ2x5cGgiKQorICAgICAgICByZXR1cm4gTmFtZVN0
YXR1czo6Q29uZmxpY3RzV2l0aEJ1aWx0aW5OYW1lczsKKworICAgIHJldHVybiBOYW1lU3RhdHVz
OjpWYWxpZDsKK30KKworYm9vbCBDdXN0b21FbGVtZW50RGVmaW5pdGlvbnM6OmRlZmluZUVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgZnVsbE5hbWUsIFJlZjxDdXN0b21FbGVtZW50SW50ZXJm
YWNlPiYmIGludGVyZmFjZSkKK3sKKyAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IGludGVyZmFjZS0+
Y29uc3RydWN0b3IoKTsKKworICAgIEFTU0VSVChtX25hbWVNYXAuZmluZChmdWxsTmFtZS5sb2Nh
bE5hbWUoKSkgPT0gbV9uYW1lTWFwLmVuZCgpKTsKKyAgICBtX25hbWVNYXAuYWRkKGZ1bGxOYW1l
LmxvY2FsTmFtZSgpLCBDdXN0b21FbGVtZW50SW5mbyhmdWxsTmFtZSwgV1RGOjptb3ZlKGludGVy
ZmFjZSkpKTsKKworICAgIGF1dG8gaXQgPSBtX2NvbnN0cnVjdG9yTWFwLmFkZChjb25zdHJ1Y3Rv
ciwgZnVsbE5hbWUpOworICAgIGlmICghaXQuaXNOZXdFbnRyeSkKKyAgICAgICAgaXQuaXRlcmF0
b3ItPnZhbHVlID0gbnVsbFFOYW1lKCk7IC8vIFRoZSBpbnRlcmZhY2UgaGFzIGFscmVhZHkgYmVl
biB1c2VkIHRvIGRlZmluZSBhbm90aGVyIGVsZW1lbnQuCisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworUmVmUHRyPEVsZW1lbnQ+IEN1c3RvbUVsZW1lbnREZWZpbml0aW9uczo6Y3JlYXRlQ3VzdG9t
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQoreworICAgIGF1dG8qIGludGVyZmFj
ZSA9IGZpbmRJbnRlcmZhY2UobmFtZSk7CisgICAgaWYgKCFpbnRlcmZhY2UpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIHJldHVybiBpbnRlcmZhY2UtPmNvbnN0cnVjdChuYW1lLmxvY2Fs
TmFtZSgpKTsKK30KKworQ3VzdG9tRWxlbWVudEludGVyZmFjZSogQ3VzdG9tRWxlbWVudERlZmlu
aXRpb25zOjpmaW5kSW50ZXJmYWNlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGZ1bGxOYW1lKSBjb25z
dAoreworICAgIGF1dG8gaXQgPSBtX25hbWVNYXAuZmluZChmdWxsTmFtZS5sb2NhbE5hbWUoKSk7
CisgICAgcmV0dXJuIGl0ID09IG1fbmFtZU1hcC5lbmQoKSB8fCBpdC0+dmFsdWUuZnVsbE5hbWUg
IT0gZnVsbE5hbWUgPyBudWxscHRyIDogaXQtPnZhbHVlLmludGVyZmFjZS5nZXQoKTsKK30KKwor
Q3VzdG9tRWxlbWVudEludGVyZmFjZSogQ3VzdG9tRWxlbWVudERlZmluaXRpb25zOjpmaW5kSW50
ZXJmYWNlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKK3sKKyAgICBhdXRvIGl0ID0g
bV9uYW1lTWFwLmZpbmQobmFtZSk7CisgICAgcmV0dXJuIGl0ID09IG1fbmFtZU1hcC5lbmQoKSA/
IG51bGxwdHIgOiBpdC0+dmFsdWUuaW50ZXJmYWNlLmdldCgpOworfQorCitjb25zdCBRdWFsaWZp
ZWROYW1lJiBDdXN0b21FbGVtZW50RGVmaW5pdGlvbnM6OmZpbmROYW1lKGNvbnN0IEpTQzo6SlNP
YmplY3QqIGNvbnN0cnVjdG9yKSBjb25zdAoreworICAgIGF1dG8gaXQgPSBtX2NvbnN0cnVjdG9y
TWFwLmZpbmQoY29uc3RydWN0b3IpOworICAgIHJldHVybiBpdCA9PSBtX2NvbnN0cnVjdG9yTWFw
LmVuZCgpID8gbnVsbFFOYW1lKCkgOiBpdC0+dmFsdWU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50RGVmaW5pdGlvbnMuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9DdXN0b21FbGVtZW50RGVmaW5pdGlvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4xYzhlMmJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0N1c3RvbUVsZW1lbnREZWZpbml0aW9ucy5oCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiQ3VzdG9tRWxl
bWVudEludGVyZmFjZS5oIgorI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KKworI2lmbmRlZiBDdXN0b21FbGVtZW50
RGVmaW5pdGlvbnNfaAorI2RlZmluZSBDdXN0b21FbGVtZW50RGVmaW5pdGlvbnNfaAorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgSlNPYmplY3Q7CisKK30KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBDdXN0b21FbGVtZW50SW50ZXJmYWNlOworY2xhc3MgRWxlbWVudDsKK2NsYXNz
IFF1YWxpZmllZE5hbWU7CisKK2NsYXNzIEN1c3RvbUVsZW1lbnREZWZpbml0aW9ucyB7CitwdWJs
aWM6CisgICAgYm9vbCBkZWZpbmVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIGZ1bGxOYW1l
LCBSZWY8Q3VzdG9tRWxlbWVudEludGVyZmFjZT4mJiBpbnRlcmZhY2UpOworCisgICAgQ3VzdG9t
RWxlbWVudEludGVyZmFjZSogZmluZEludGVyZmFjZShjb25zdCBRdWFsaWZpZWROYW1lJiBmdWxs
TmFtZSkgY29uc3Q7CisgICAgQ3VzdG9tRWxlbWVudEludGVyZmFjZSogZmluZEludGVyZmFjZShj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OworICAgIGNvbnN0IFF1YWxpZmllZE5hbWUm
IGZpbmROYW1lKGNvbnN0IEpTQzo6SlNPYmplY3QqKSBjb25zdDsKKworICAgIFJlZlB0cjxFbGVt
ZW50PiBjcmVhdGVDdXN0b21FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKworICAgIGVu
dW0gY2xhc3MgTmFtZVN0YXR1cyB7IFZhbGlkLCBDb25mbGljdHNXaXRoQnVpbHRpbk5hbWVzLCBO
b0h5cGhlbiwgQ29udGFpbnNVcHBlckNhc2UgfTsKKyAgICBzdGF0aWMgTmFtZVN0YXR1cyBjaGVj
a05hbWUoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKTsKKworcHJpdmF0ZToKKyAgICBjbGFz
cyBDdXN0b21FbGVtZW50SW5mbyB7CisgICAgcHVibGljOgorICAgICAgICBRdWFsaWZpZWROYW1l
IGZ1bGxOYW1lOworICAgICAgICBSZWZQdHI8Q3VzdG9tRWxlbWVudEludGVyZmFjZT4gaW50ZXJm
YWNlOworCisgICAgICAgIEN1c3RvbUVsZW1lbnRJbmZvKCkKKyAgICAgICAgICAgIDogZnVsbE5h
bWUobnVsbFFOYW1lKCkpCisgICAgICAgIHsgfQorCisgICAgICAgIEN1c3RvbUVsZW1lbnRJbmZv
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIFJlZjxDdXN0b21FbGVtZW50SW50ZXJmYWNlPiYm
IGludGVyZmFjZSkKKyAgICAgICAgICAgIDogZnVsbE5hbWUobmFtZSkKKyAgICAgICAgICAgICwg
aW50ZXJmYWNlKFdURjo6bW92ZShpbnRlcmZhY2UpKQorICAgICAgICB7IH0KKyAgICB9OworCisg
ICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIEN1c3RvbUVsZW1lbnRJbmZvPiBtX25hbWVNYXA7Cisg
ICAgSGFzaE1hcDxjb25zdCBKU0M6OkpTT2JqZWN0KiwgUXVhbGlmaWVkTmFtZT4gbV9jb25zdHJ1
Y3Rvck1hcDsKK307CisKK30KKworI2VuZGlmIC8qIEN1c3RvbUVsZW1lbnREZWZpbml0aW9uc19o
ICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudEludGVyZmFj
ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjdhZGQ1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaApAQCAtMCwwICsxLDU3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBDdXN0b21FbGVtZW50SW50ZXJmYWNlX2gKKyNkZWZpbmUgQ3VzdG9tRWxlbWVudEludGVyZmFj
ZV9oCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEpTT2JqZWN0OworCit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
RWxlbWVudDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisKK2NsYXNzIEN1c3RvbUVs
ZW1lbnRJbnRlcmZhY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxDdXN0b21FbGVtZW50SW50ZXJmYWNl
PiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q3VzdG9tRWxlbWVudEludGVyZmFjZSgpIHsgfQor
CisgICAgdmlydHVhbCBSZWZQdHI8RWxlbWVudD4gY29uc3RydWN0KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdGFnTmFtZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKEVsZW1l
bnQmIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkgPSAwOwor
CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSlNDOjpKU09iamVjdCogY29uc3RydWN0b3Io
KSA9IDA7Cit9OworCit9CisKKyNlbmRpZiAvLyBDdXN0b21FbGVtZW50SW50ZXJmYWNlX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDg3YmJjZmYuLmI0MDE2MTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIkNvbW1lbnQuaCIKICNpbmNs
dWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJDb29raWVKYXIuaCIKKyNp
bmNsdWRlICJDdXN0b21FbGVtZW50RGVmaW5pdGlvbnMuaCIKICNpbmNsdWRlICJET01JbXBsZW1l
bnRhdGlvbi5oIgogI2luY2x1ZGUgIkRPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaCIKICNpbmNsdWRl
ICJET01XaW5kb3cuaCIKQEAgLTk4LDYgKzk5LDcgQEAKICNpbmNsdWRlICJKU0xhenlFdmVudExp
c3RlbmVyLmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVMb2FkZXIuaCIKICNpbmNsdWRlICJMYW5ndWFn
ZS5oIgorI2luY2x1ZGUgIkxpZmVjeWNsZUNhbGxiYWNrUXVldWUuaCIKICNpbmNsdWRlICJMb2Fk
ZXJTdHJhdGVneS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNYWluRnJhbWUu
aCIKQEAgLTYyMDksNiArNjIxMSwxMyBAQCB1bnNpZ25lZCBEb2N1bWVudDo6dG91Y2hFdmVudEhh
bmRsZXJDb3VudCgpIGNvbnN0CiAjZW5kaWYKIH0KIAorQ3VzdG9tRWxlbWVudERlZmluaXRpb25z
JiBEb2N1bWVudDo6ZW5zdXJlQ3VzdG9tRWxlbWVudERlZmluaXRpb25zKCkKK3sKKyAgICBpZiAo
IW1fY3VzdG9tRWxlbWVudERlZmluaXRpb25zKQorICAgICAgICBtX2N1c3RvbUVsZW1lbnREZWZp
bml0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VzdG9tRWxlbWVudERlZmluaXRpb25zPigpOwor
ICAgIHJldHVybiAqbV9jdXN0b21FbGVtZW50RGVmaW5pdGlvbnM7Cit9CisKIExheW91dFJlY3Qg
RG9jdW1lbnQ6OmFic29sdXRlRXZlbnRIYW5kbGVyQm91bmRzKGJvb2wmIGluY2x1ZGVzRml4ZWRQ
b3NpdGlvbkVsZW1lbnRzKQogewogICAgIGluY2x1ZGVzRml4ZWRQb3NpdGlvbkVsZW1lbnRzID0g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDVhZGMzYzIuLmJhN2IxMDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCkBAIC04MCw2ICs4MCw4IEBAIGNsYXNzIENhY2hlZFNjcmlwdDsKIGNsYXNz
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ7CiBjbGFzcyBDaGFyYWN0ZXJEYXRhOwogY2xhc3MgQ29t
bWVudDsKK2NsYXNzIEN1c3RvbUVsZW1lbnREZWZpbml0aW9uczsKK2NsYXNzIEN1c3RvbUVsZW1l
bnRJbnRlcmZhY2U7CiBjbGFzcyBET01JbXBsZW1lbnRhdGlvbjsKIGNsYXNzIERPTU5hbWVkRmxv
d0NvbGxlY3Rpb247CiBjbGFzcyBET01TZWxlY3Rpb247CkBAIC0xMjAwLDYgKzEyMDIsOSBAQCBw
dWJsaWM6CiAjZW5kaWYKICAgICB9CiAKKyAgICBDdXN0b21FbGVtZW50RGVmaW5pdGlvbnMqIGN1
c3RvbUVsZW1lbnREZWZpbml0aW9ucygpIHsgcmV0dXJuIG1fY3VzdG9tRWxlbWVudERlZmluaXRp
b25zLmdldCgpOyB9CisgICAgQ3VzdG9tRWxlbWVudERlZmluaXRpb25zJiBlbnN1cmVDdXN0b21F
bGVtZW50RGVmaW5pdGlvbnMoKTsKKwogICAgIGNvbnN0IEV2ZW50VGFyZ2V0U2V0KiB3aGVlbEV2
ZW50VGFyZ2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fd2hlZWxFdmVudFRhcmdldHMuZ2V0KCk7IH0K
IAogICAgIHR5cGVkZWYgc3RkOjpwYWlyPFJlZ2lvbiwgYm9vbD4gUmVnaW9uRml4ZWRQYWlyOwpA
QCAtMTcyMSw2ICsxNzI2LDggQEAgcHJpdmF0ZToKICAgICBEb2N1bWVudCogbV90ZW1wbGF0ZURv
Y3VtZW50SG9zdDsgLy8gTWFudWFsbHkgbWFuYWdlZCB3ZWFrcmVmIChiYWNrcG9pbnRlciBmcm9t
IG1fdGVtcGxhdGVEb2N1bWVudCkuCiAjZW5kaWYKIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxDdXN0
b21FbGVtZW50RGVmaW5pdGlvbnM+IG1fY3VzdG9tRWxlbWVudERlZmluaXRpb25zOworCiAgICAg
UmVmUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2VsZWN0b3I7CiAKICNpZiBFTkFCTEUoRk9O
VF9MT0FEX0VWRU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCmluZGV4IGUyNmVjMDQuLjQ4YmY3
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbApAQCAtMjgxLDYgKzI4MSwxMSBAQAogICAgIFtO
ZXdPYmplY3QsIEN1c3RvbSwgUmFpc2VzRXhjZXB0aW9uXSBUb3VjaExpc3QgY3JlYXRlVG91Y2hM
aXN0KCk7CiAjZW5kaWYKIAorICAgIC8vIEN1c3RvbSBlbGVtZW50cworI2lmIGRlZmluZWQoTEFO
R1VBR0VfSkFWQVNDUklQVCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVAorICAgIFtDdXN0b20sIFJh
aXNlc0V4Y2VwdGlvbl0gdm9pZCBkZWZpbmVDdXN0b21FbGVtZW50KERPTVN0cmluZyB0YWdOYW1l
LCBDdXN0b21FbGVtZW50SW50ZXJmYWNlIGVsZW1lbnRJbnRlcmZhY2UpOworI2VuZGlmCisKICAg
ICAvLyBQYWdlIHZpc2liaWxpdHkgQVBJLgogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmcgdmlzaWJpbGl0eVN0YXRlOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGhpZGRl
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBkNDc2NjRjLi5iYTBhNzFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCkBAIC0zNCw2ICszNCw4IEBACiAjaW5jbHVkZSAiQ2xpZW50UmVjdC5oIgog
I2luY2x1ZGUgIkNsaWVudFJlY3RMaXN0LmgiCiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZUFsZ29y
aXRobXMuaCIKKyNpbmNsdWRlICJDdXN0b21FbGVtZW50RGVmaW5pdGlvbnMuaCIKKyNpbmNsdWRl
ICJDdXN0b21FbGVtZW50SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiRE9NVG9rZW5MaXN0LmgiCiAj
aW5jbHVkZSAiRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIkRvY3VtZW50U2hhcmVkT2JqZWN0UG9v
bC5oIgpAQCAtNTYsNiArNTgsNyBAQAogI2luY2x1ZGUgIkhUTUxUZW1wbGF0ZUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCIKICNpbmNsdWRlICJLZXlib2Fy
ZEV2ZW50LmgiCisjaW5jbHVkZSAiTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5oIgogI2luY2x1ZGUg
Ik1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmgi
CiAjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKQEAgLTEyNDksNiArMTI1MiwxMyBAQCB2b2lk
IEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29u
c3QgQXRvbWljU3RyaW5nJiBvbAogCiAgICAgZG9jdW1lbnQoKS5pbmNET01UcmVlVmVyc2lvbigp
OwogCisgICAgaWYgKFVOTElLRUxZKGlzQ3VzdG9tRWxlbWVudCgpKSkgeworICAgICAgICBhdXRv
KiBkZWZpbml0aW9ucyA9IGRvY3VtZW50KCkuY3VzdG9tRWxlbWVudERlZmluaXRpb25zKCk7Cisg
ICAgICAgIGF1dG8qIGludGVyZmFjZSA9IGRlZmluaXRpb25zLT5maW5kSW50ZXJmYWNlKHRhZ1FO
YW1lKCkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChpbnRlcmZhY2UpOworICAgICAgICBMaWZl
Y3ljbGVDYWxsYmFja1F1ZXVlOjplbnF1ZXVlQXR0cmlidXRlQ2hhbmdlZCgqdGhpcywgKmludGVy
ZmFjZSwgbmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKKyAgICB9CisKICAgICBpZiAodmFsdWVJ
c1NhbWVBc0JlZm9yZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKaW5k
ZXggZjA4ZGMwNC4uYWI1MWVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbApAQCAtMjgsMTIgKzI4
LDEyIEBACiAgICAgW1RyZWF0UmV0dXJuZWROdWxsU3RyaW5nQXM9TnVsbF0gcmVhZG9ubHkgYXR0
cmlidXRlIERPTVN0cmluZyB0YWdOYW1lOwogCiAgICAgW1RyZWF0UmV0dXJuZWROdWxsU3RyaW5n
QXM9TnVsbF0gRE9NU3RyaW5nIGdldEF0dHJpYnV0ZShbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlv
bmFsIERPTVN0cmluZyBuYW1lKTsKLSAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzLCBS
YWlzZXNFeGNlcHRpb25dIHZvaWQgc2V0QXR0cmlidXRlKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0
aW9uYWwgRE9NU3RyaW5nIG5hbWUsCisgICAgW09iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVycywg
UmFpc2VzRXhjZXB0aW9uLCBOZWVkc1Byb2Nlc3NpbmdTdGFja10gdm9pZCBzZXRBdHRyaWJ1dGUo
W0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJpbmcgbmFtZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERP
TVN0cmluZyB2YWx1ZSk7Ci0gICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoW0RlZmF1bHQ9VW5kZWZp
bmVkXSBvcHRpb25hbCBET01TdHJpbmcgbmFtZSk7CisgICAgW05lZWRzUHJvY2Vzc2luZ1N0YWNr
XSB2b2lkIHJlbW92ZUF0dHJpYnV0ZShbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0
cmluZyBuYW1lKTsKICAgICBBdHRyIGdldEF0dHJpYnV0ZU5vZGUoW0RlZmF1bHQ9VW5kZWZpbmVk
XSBvcHRpb25hbCBET01TdHJpbmcgbmFtZSk7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gQXR0ciBz
ZXRBdHRyaWJ1dGVOb2RlKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgQXR0ciBuZXdBdHRy
KTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSBBdHRyIHJlbW92ZUF0dHJpYnV0ZU5vZGUoW0RlZmF1
bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBBdHRyIG9sZEF0dHIpOworICAgIFtSYWlzZXNFeGNlcHRp
b24sIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSBBdHRyIHNldEF0dHJpYnV0ZU5vZGUoW0RlZmF1bHQ9
VW5kZWZpbmVkXSBvcHRpb25hbCBBdHRyIG5ld0F0dHIpOworICAgIFtSYWlzZXNFeGNlcHRpb24s
IE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSBBdHRyIHJlbW92ZUF0dHJpYnV0ZU5vZGUoW0RlZmF1bHQ9
VW5kZWZpbmVkXSBvcHRpb25hbCBBdHRyIG9sZEF0dHIpOwogCiAjaWYgZGVmaW5lZChMQU5HVUFH
RV9PQkpFQ1RJVkVfQykgJiYgTEFOR1VBR0VfT0JKRUNUSVZFX0MKICAgICBbSW1wbGVtZW50ZWRB
cz1nZXRFbGVtZW50c0J5VGFnTmFtZUZvck9iakNdIE5vZGVMaXN0IGdldEVsZW1lbnRzQnlUYWdO
YW1lKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIG5hbWUpOwpAQCAtMTcz
LDYgKzE3MywxMCBAQAogICAgIFtDb25kaXRpb25hbD1TSEFET1dfRE9NLCBSZWZsZWN0XSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIHNsb3Q7CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFW
QVNDUklQVCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVAorICAgIFtDdXN0b21dIHN0YXRpYyByZWFk
b25seSBhdHRyaWJ1dGUgU3ltYm9sIGF0dHJpYnV0ZUNoYW5nZWQ7CisjZW5kaWYKKwogICAgIC8v
IEV2ZW50IEhhbmRsZXJzCiAKICAgICAvLyBVbmlxdWUgdG8gRWxlbWVudCBhbmQgRG9jdW1lbnQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9MaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9MaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjRjMDRhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0xpZmVjeWNsZUNhbGxiYWNrUXVldWUuY3BwCkBAIC0wLDAgKzEs
OTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5oIgorCisj
aW5jbHVkZSAiQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIK
KyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTGlmZWN5Y2xlUXVldWVJdGVtIHsKK3B1YmxpYzoKKyAg
ICBMaWZlY3ljbGVRdWV1ZUl0ZW0oRWxlbWVudCYgZWxlbWVudCwgQ3VzdG9tRWxlbWVudEludGVy
ZmFjZSYgaW50ZXJmYWNlLAorICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1
ZSkKKyAgICAgICAgOiBtX3R5cGUoVHlwZTo6QXR0cmlidXRlQ2hhbmdlZCkKKyAgICAgICAgLCBt
X2VsZW1lbnQoZWxlbWVudCkKKyAgICAgICAgLCBtX2ludGVyZmFjZShpbnRlcmZhY2UpCisgICAg
ICAgICwgbV9hdHRyTmFtZShhdHRyTmFtZSkKKyAgICAgICAgLCBtX29sZFZhbHVlKG9sZFZhbHVl
KQorICAgICAgICAsIG1fbmV3VmFsdWUobmV3VmFsdWUpCisgICAgeyB9CisKKyAgICB2b2lkIGlu
dm9rZSgpCisgICAgeworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHByb2JhYmx5IHBhc3Mg
dGhlIGZ1bGwgcXVhbGlmaWVkIGF0dHJpYnV0ZSBuYW1lLgorICAgICAgICBtX2ludGVyZmFjZS0+
YXR0cmlidXRlQ2hhbmdlZChtX2VsZW1lbnQuZ2V0KCksIG1fYXR0ck5hbWUubG9jYWxOYW1lKCks
IG1fb2xkVmFsdWUsIG1fbmV3VmFsdWUpOworICAgIH0KKworICAgIGVudW0gY2xhc3MgVHlwZSB7
CisgICAgICAgIEludmFsaWQsCisgICAgICAgIEluc2VydGVkLAorICAgICAgICBSZW1vdmVkLAor
ICAgICAgICBDaGlsZHJlbkNoYW5nZWQsCisgICAgICAgIEF0dHJpYnV0ZUNoYW5nZWQsCisgICAg
fTsKKworcHJpdmF0ZToKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWRsbid0IGhhdmUgdG8gZHVwbGlj
YXRlIEVsZW1lbnQsIEludGVyZmFjZSwgYW5kIGEgYnVuY2ggb2YgQXRvbWljU3RyaW5nIGluIGVh
Y2ggcXVldWUgaXRlbS4KKyAgICBUeXBlIG1fdHlwZSB7IFR5cGU6OkludmFsaWQgfTsKKyAgICBS
ZWY8RWxlbWVudD4gbV9lbGVtZW50OworICAgIFJlZjxDdXN0b21FbGVtZW50SW50ZXJmYWNlPiBt
X2ludGVyZmFjZTsKKyAgICBRdWFsaWZpZWROYW1lIG1fYXR0ck5hbWU7CisgICAgQXRvbWljU3Ry
aW5nIG1fb2xkVmFsdWU7CisgICAgQXRvbWljU3RyaW5nIG1fbmV3VmFsdWU7Cit9OworCitMaWZl
Y3ljbGVDYWxsYmFja1F1ZXVlOjpMaWZlY3ljbGVDYWxsYmFja1F1ZXVlKCkKK3sKK30KKworTGlm
ZWN5Y2xlQ2FsbGJhY2tRdWV1ZTo6fkxpZmVjeWNsZUNhbGxiYWNrUXVldWUoKQoreworICAgIEFT
U0VSVChtX2l0ZW1zLmlzRW1wdHkoKSk7Cit9CisKK3ZvaWQgTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1
ZTo6ZW5xdWV1ZUF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudCYgZWxlbWVudCwgQ3VzdG9tRWxlbWVu
dEludGVyZmFjZSYgaW50ZXJmYWNlLAorICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUp
Cit7CisgICAgaWYgKGF1dG8qIHF1ZXVlID0gQ3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3Np
bmdTdGFjazo6ZW5zdXJlQ3VycmVudFF1ZXVlKCkpCisgICAgICAgIHF1ZXVlLT5tX2l0ZW1zLmFw
cGVuZChMaWZlY3ljbGVRdWV1ZUl0ZW0oZWxlbWVudCwgaW50ZXJmYWNlLCBuYW1lLCBvbGRWYWx1
ZSwgbmV3VmFsdWUpKTsKK30KKwordm9pZCBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlOjppbnZva2VB
bGwoKQoreworICAgIFZlY3RvcjxMaWZlY3ljbGVRdWV1ZUl0ZW0+IGl0ZW1zOworICAgIGl0ZW1z
LnN3YXAobV9pdGVtcyk7CisgICAgZm9yIChhdXRvJiBpdGVtOiBpdGVtcykKKyAgICAgICAgaXRl
bS5pbnZva2UoKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xpZmVj
eWNsZUNhbGxiYWNrUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9MaWZlY3ljbGVDYWxsYmFj
a1F1ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDczMDdjNwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9MaWZlY3ljbGVDYWxsYmFja1F1ZXVl
LmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZV9oCisjZGVmaW5lIExpZmVj
eWNsZUNhbGxiYWNrUXVldWVfaAorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgQ3VzdG9tRWxlbWVudEludGVyZmFjZTsKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBRdWFsaWZp
ZWROYW1lOworY2xhc3MgTGlmZWN5Y2xlUXVldWVJdGVtOworCitjbGFzcyBMaWZlY3ljbGVDYWxs
YmFja1F1ZXVlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMaWZlY3ljbGVDYWxsYmFja1F1
ZXVlKTsKK3B1YmxpYzoKKyAgICBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlKCk7CisgICAgfkxpZmVj
eWNsZUNhbGxiYWNrUXVldWUoKTsKKworICAgIHN0YXRpYyB2b2lkIGVucXVldWVBdHRyaWJ1dGVD
aGFuZ2VkKEVsZW1lbnQmLCBDdXN0b21FbGVtZW50SW50ZXJmYWNlJiwKKyAgICAgICAgY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmV3VmFsdWUpOworCisgICAgdm9pZCBpbnZva2VBbGwoKTsKKworcHJpdmF0ZToK
KyAgICBWZWN0b3I8TGlmZWN5Y2xlUXVldWVJdGVtPiBtX2l0ZW1zOworfTsKKworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5oCmluZGV4IGE2NGUwYzUuLjQ3ZTJlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMjQx
LDYgKzI0MSw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzSFRNTEVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiBnZXRGbGFnKElzSFRNTEZsYWcpOyB9CiAgICAgYm9vbCBpc1NWR0VsZW1lbnQoKSBjb25z
dCB7IHJldHVybiBnZXRGbGFnKElzU1ZHRmxhZyk7IH0KICAgICBib29sIGlzTWF0aE1MRWxlbWVu
dCgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNNYXRoTUxGbGFnKTsgfQorICAgIGJvb2wgaXND
dXN0b21FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJc0N1c3RvbUVsZW1lbnQpOyB9
CisgICAgdm9pZCBzZXRDdXN0b21FbGVtZW50KCkgeyBzZXRGbGFnKElzQ3VzdG9tRWxlbWVudCk7
IH0KIAogICAgIGJvb2wgaXNQc2V1ZG9FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gcHNldWRvSWQo
KSAhPSBOT1BTRVVETzsgfQogICAgIGJvb2wgaXNCZWZvcmVQc2V1ZG9FbGVtZW50KCkgY29uc3Qg
eyByZXR1cm4gcHNldWRvSWQoKSA9PSBCRUZPUkU7IH0KQEAgLTYwMCw2ICs2MDIsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgICAgIElzU3R5bGVkRWxlbWVudEZsYWcgPSAxIDw8IDMsCiAgICAgICAgIElz
SFRNTEZsYWcgPSAxIDw8IDQsCiAgICAgICAgIElzU1ZHRmxhZyA9IDEgPDwgNSwKKyAgICAgICAg
SXNDdXN0b21FbGVtZW50ID0gMSA8PCA2LAogICAgICAgICBDaGlsZE5lZWRzU3R5bGVSZWNhbGNG
bGFnID0gMSA8PCA3LAogICAgICAgICBJbkRvY3VtZW50RmxhZyA9IDEgPDwgOCwKICAgICAgICAg
SXNMaW5rRmxhZyA9IDEgPDwgOSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtl
X25hbWVzLnBsIGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKaW5kZXggMGQ3YTM2
Zi4uYzU2YmM2YSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKQEAgLTk2Miw2ICs5NjIsNyBA
QCBFTkQKIAogICAgIHByaW50IEYgPDxFTkQKIAorI2luY2x1ZGUgIkN1c3RvbUVsZW1lbnREZWZp
bml0aW9ucy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC0xMDE4LDYgKzEwMTksMTMg
QEAgRU5ECiAgICAgfQogCiAgICAgcHJpbnQgRiA8PEVORAorICAgIGlmIChhdXRvKiBkZWZpbml0
aW9ucyA9IGRvY3VtZW50LmN1c3RvbUVsZW1lbnREZWZpbml0aW9ucygpKSB7CisgICAgICAgIGlm
IChhdXRvIGVsZW1lbnQgPSBkZWZpbml0aW9ucy0+Y3JlYXRlQ3VzdG9tRWxlbWVudChuYW1lKSkg
eworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXM8V2ViQ29yZTo6JHBhcmFtZXRlcnN7bmFt
ZXNwYWNlfUVsZW1lbnQ+KCplbGVtZW50KSk7CisgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8
V2ViQ29yZTo6JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+KCplbGVtZW50KTsKKyAgICAg
ICAgfQorICAgIH0KKwogICAgIHJldHVybiAkcGFyYW1ldGVyc3tmYWxsYmFja0ludGVyZmFjZU5h
bWV9OjpjcmVhdGUobmFtZSwgZG9jdW1lbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuaWRsCmluZGV4IDhlZWY2ZmYuLjhhOTI0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuaWRsCkBAIC0xOSw2ICsxOSw3IEBACiAgKi8KIAogWworICAgIEN1c3RvbUNvbnN0cnVjdG9y
KERPTVN0cmluZyBsb2NhbE5hbWUpLAogICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKICAg
ICBKU0N1c3RvbVB1c2hFdmVudEhhbmRsZXJTY29wZSwKIF0gaW50ZXJmYWNlIEhUTUxFbGVtZW50
IDogRWxlbWVudCB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265285</attachid>
            <date>2015-11-11 07:03:57 -0800</date>
            <delta_ts>2015-11-17 23:49:39 -0800</delta_ts>
            <desc>Updated for ToT</desc>
            <filename>wip150225d.patch</filename>
            <type>text/plain</type>
            <size>71238</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5jcHAKaW5k
ZXggNjAxMGU2My4uOGFhMTY4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29uc3RydWN0RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29uc3RydWN0RGF0YS5jcHAKQEAgLTQwLDQgKzQwLDE2IEBAIEpTT2JqZWN0KiBjb25zdHJ1
Y3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGNvbnN0cnVjdG9yT2JqZWN0LCBDb25zdHJ1Y3RU
eXBlIGNvCiAgICAgcmV0dXJuIGV4ZWMtPmludGVycHJldGVyKCktPmV4ZWN1dGVDb25zdHJ1Y3Qo
ZXhlYywgYXNPYmplY3QoY29uc3RydWN0b3JPYmplY3QpLCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1
Y3REYXRhLCBhcmdzLCBuZXdUYXJnZXQpOwogfQogCitKU09iamVjdCogY29uc3RydWN0KEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBjb25zdHJ1Y3Rvck9iamVjdCwgQ29uc3RydWN0VHlwZSBjb25z
dHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhLCBjb25zdCBBcmdM
aXN0JiBhcmdzLCBOYWtlZFB0cjxFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKK3sKKyAg
ICBKU09iamVjdCogcmVzdWx0ID0gZXhlYy0+aW50ZXJwcmV0ZXIoKS0+ZXhlY3V0ZUNvbnN0cnVj
dChleGVjLCBhc09iamVjdChjb25zdHJ1Y3Rvck9iamVjdCksIGNvbnN0cnVjdFR5cGUsIGNvbnN0
cnVjdERhdGEsIGFyZ3MsIGNvbnN0cnVjdG9yT2JqZWN0KTsKKyAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpIHsKKyAgICAgICAgcmV0dXJuZWRFeGNlcHRpb24gPSBleGVjLT5leGNlcHRpb24o
KTsKKyAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db25zdHJ1Y3REYXRhLmgKaW5kZXggMTdlMWE1ZC4uZTg2YTI4OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaApAQCAtNTcsNiArNTcsNyBA
QCB1bmlvbiBDb25zdHJ1Y3REYXRhIHsKIH07CiAKIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0
KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSBjb25zdHJ1Y3RvciwgQ29uc3RydWN0VHlw
ZSwgY29uc3QgQ29uc3RydWN0RGF0YSYsIGNvbnN0IEFyZ0xpc3QmLCBKU1ZhbHVlIG5ld1Rhcmdl
dCk7CitKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY29uc3RydWN0KEV4ZWNTdGF0ZSosIEpT
VmFsdWUgY29uc3RydWN0b3IsIENvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmLCBj
b25zdCBBcmdMaXN0JiwgTmFrZWRQdHI8RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwog
CiBBTFdBWVNfSU5MSU5FIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIGNvbnN0cnVjdG9yT2JqZWN0LCBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUsIGNvbnN0
IENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5oCmluZGV4IDgzZjVkZTIuLmRkYjY4Y2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5oCkBAIC04Niw3ICs4Niw3IEBA
IHByb3RlY3RlZDoKIAogICAgIFN5bWJvbChWTSYpOwogICAgIFN5bWJvbChWTSYsIGNvbnN0IFN0
cmluZyYpOwotICAgIFN5bWJvbChWTSYsIFN5bWJvbEltcGwmIHVpZCk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgU3ltYm9sKFZNJiwgU3ltYm9sSW1wbCYgdWlkKTsKIAogICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mIHZtKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3MDZmMjY3Li5jNTczNDVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zOTIz
LDYgKzM5MjMsOSBAQAogCQk5QTUyOEU4NDE3RDdGNTJGMDBBQTk1MTggLyogRmxvYXRpbmdPYmpl
Y3RzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QTUy
OEU4MjE3RDdGNTJGMDBBQTk1MTggLyogRmxvYXRpbmdPYmplY3RzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOUFCMUYzODAxOEUyNDg5QTAwNTM0
NzQzIC8qIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlBQjFGMzdFMThFMjQ4OUEwMDUzNDc0MyAvKiBDU1NU
b0xlbmd0aENvbnZlcnNpb25EYXRhLmggKi87IH07CiAJCTlBQjFGMzgxMThFMjQ4OUEwMDUzNDc0
MyAvKiBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlBQjFGMzdGMThFMjQ4OUEwMDUzNDc0MyAvKiBDU1NU
b0xlbmd0aENvbnZlcnNpb25EYXRhLmNwcCAqLzsgfTsKKwkJOUIxNDcxNTMxQkQwMUI4OTAwMzZE
RTA5IC8qIEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMTQ3MTUxMUJEMDFCODkwMDM2REUwOSAvKiBDdXN0b21F
bGVtZW50SW50ZXJmYWNlLmggKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsK
KwkJOUIxNDcxNTYxQkQwMUU1NTAwMzZERTA5IC8qIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjE0NzE1
NDFCRDAxRTU1MDAzNkRFMDkgLyogSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcCAqLzsgc2V0
dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OworCQk5QjE0NzE1NzFCRDAxRTU1MDAzNkRF
MDkgLyogSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjE0NzE1NTFCRDAxRTU1MDAzNkRFMDkgLyogSlNDdXN0
b21FbGVtZW50SW50ZXJmYWNlLmggKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsg
fTsKIAkJOUIxQUIwN0MxNjQ4QzdDNDAwNTFGM0YyIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUIxQUIwN0IxNjQ4QzdDNDAwNTFGM0YyIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb25DdXN0b20uY3BwICovOyB9OwogCQk5QjI0REU4RTE1MTk0Qjk1MDBDNTlDMjcgLyogSFRN
TEJESUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDlCMjRERThDMTUxOTRCOTUwMEM1OUMyNyAvKiBIVE1MQkRJRWxlbWVudC5oICovOyB9Owog
CQk5QjJEOEE3OTE0OTk3Q0NGMDBFQ0VGM0UgLyogVW5kb1N0ZXAuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMkQ4QTc4MTQ5OTdDQ0YwMEVDRUYzRSAv
KiBVbmRvU3RlcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0zOTQwLDcgKzM5NDMsMTEgQEAKIAkJOUI2OUQzQjgxQjk5MTAwNzAwRTM1MTJCIC8q
IEpTSFRNTFNsb3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDlCNjlEM0I2MUI5OTEwMDcwMEUzNTEyQiAvKiBKU0hUTUxTbG90RWxlbWVu
dC5jcHAgKi87IH07CiAJCTlCNjlEM0I5MUI5OTEwMDcwMEUzNTEyQiAvKiBKU0hUTUxTbG90RWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI2
OUQzQjcxQjk5MTAwNzAwRTM1MTJCIC8qIEpTSFRNTFNsb3RFbGVtZW50LmggKi87IH07CiAJCTlC
NkM0MTUzMTM0NDk0OTAwMDA4NUI2MiAvKiBTdHJpbmdXaXRoRGlyZWN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjZDNDE1MjEzNDQ5NDkwMDAw
ODVCNjIgLyogU3RyaW5nV2l0aERpcmVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTlCOTNBMEU3MUJFMzEwREUwMDIzMUE4RSAvKiBDdXN0
b21FbGVtZW50RGVmaW5pdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOUI5M0EwRTUxQkUzMTBERTAwMjMxQThFIC8qIEN1c3RvbUVsZW1lbnRE
ZWZpbml0aW9ucy5jcHAgKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJ
OUI5M0EwRTgxQkUzMTBERTAwMjMxQThFIC8qIEN1c3RvbUVsZW1lbnREZWZpbml0aW9ucy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI5M0EwRTYxQkUz
MTBERTAwMjMxQThFIC8qIEN1c3RvbUVsZW1lbnREZWZpbml0aW9ucy5oICovOyBzZXR0aW5ncyA9
IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CiAJCTlCQTI3M0Y0MTcyMjA2QkIwMDk3Q0U0NyAvKiBM
b2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5QkEyNzNGMzE3MjIwNkJCMDA5N0NFNDcgLyogTG9naWNhbFNl
bGVjdGlvbk9mZnNldENhY2hlcy5oICovOyB9OworCQk5QkE0NjZCNzFCREM3MzRBMDBCQjc5OTAg
LyogTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5QkE0NjZCNTFCREM3MzRBMDBCQjc5OTAgLyogTGlmZWN5Y2xl
Q2FsbGJhY2tRdWV1ZS5jcHAgKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsK
KwkJOUJBNDY2QjgxQkRDNzM0QTAwQkI3OTkwIC8qIExpZmVjeWNsZUNhbGxiYWNrUXVldWUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCQTQ2NkI2MUJE
QzczNEEwMEJCNzk5MCAvKiBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmggKi87IHNldHRpbmdzID0g
e0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKIAkJOUJBQjZDNkMxMjU1MDYzMTAwMTYyNkQ0IC8qIEVk
aXRpbmdTdHlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOUJBQjZDNkExMjU1MDYzMTAwMTYyNkQ0IC8qIEVkaXRpbmdTdHlsZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTlCQUI2QzZEMTI1NTA2MzEw
MDE2MjZENCAvKiBFZGl0aW5nU3R5bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOUJBQjZDNkIxMjU1MDYzMTAwMTYyNkQ0IC8qIEVkaXRpbmdTdHls
ZS5jcHAgKi87IH07CiAJCTlCQUYzQjI0MTJDMUEzOTgwMDAxNEJGMSAvKiBXcml0aW5nRGlyZWN0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkFG
M0IyMzEyQzFBMzk4MDAwMTRCRjEgLyogV3JpdGluZ0RpcmVjdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTQ0OSw2ICsxMTQ1Niw5IEBA
CiAJCTlCMDNEODA2MUJCMzExMEQwMEI3NjREOSAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1
aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFt
SW50ZXJuYWxzQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwM0Q4
MDYxQkIzMTEwRDAwQjc2NEU4IC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RTkgLyogV3JpdGFi
bGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTlCMTQ3MTUxMUJEMDFCODkwMDM2REUwOSAvKiBDdXN0b21FbGVtZW50SW50
ZXJmYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUIxNDcxNTQxQkQwMUU1
NTAwMzZERTA5IC8qIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QjE0NzE1NTFCRDAxRTU1MDAzNkRFMDkgLyogSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5QjE5QjY3RTFCOTY0RTUyMDAzNDg3NDUgLyogU2hhZG93Um9vdC5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gU2hhZG93Um9vdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTlCMUFCMDc5MTY0OEM2OUQwMDUxRjNGMiAvKiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5QjFBQjA3QjE2NDhDN0M0MDA1MUYzRjIgLyogSlNIVE1MRm9ybUNvbnRy
b2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTExNDcyLDcgKzExNDgyLDExIEBACiAJCTlCNkJDOTYwMUI5NzU5
NjYwMDVBRTFGMCAvKiBKU1NoYWRvd1Jvb3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNTaGFkb3dSb290LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOUI2QkM5NjExQjk3NTk2NjAwNUFFMUYwIC8qIEpTU2hhZG93Um9vdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NoYWRvd1Jvb3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOUI2QzQxNTIxMzQ0OTQ5MDAwMDg1QjYyIC8qIFN0cmluZ1dpdGhEaXJlY3Rp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nV2l0aERpcmVjdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QjkzQTBFNTFCRTMxMERFMDAyMzFB
OEUgLyogQ3VzdG9tRWxlbWVudERlZmluaXRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEN1c3RvbUVsZW1lbnREZWZpbml0aW9ucy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTlCOTNBMEU2MUJFMzEwREUwMDIzMUE4RSAvKiBDdXN0b21FbGVt
ZW50RGVmaW5pdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3VzdG9t
RWxlbWVudERlZmluaXRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCQTI3
M0YzMTcyMjA2QkIwMDk3Q0U0NyAvKiBMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvZ2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNo
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUJBNDY2QjUxQkRDNzM0QTAwQkI3
OTkwIC8qIExpZmVjeWNsZUNhbGxiYWNrUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTlCQTQ2NkI2MUJEQzczNEEwMEJCNzk5MCAvKiBMaWZlY3ljbGVDYWxs
YmFja1F1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpZmVjeWNsZUNh
bGxiYWNrUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJBQjZDNkExMjU1
MDYzMTAwMTYyNkQ0IC8qIEVkaXRpbmdTdHlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBFZGl0aW5nU3R5bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJB
QjZDNkIxMjU1MDYzMTAwMTYyNkQ0IC8qIEVkaXRpbmdTdHlsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFZGl0aW5nU3R5bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5QkFGM0IyMzEyQzFBMzk4MDAwMTRCRjEgLyogV3JpdGluZ0RpcmVjdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXcml0aW5nRGlyZWN0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjM1MCw2ICsyMjM2NCwxMCBAQAogCQkJ
CTkzQjcwRDRFMDlFQjBDN0MwMDlEODQ2OCAvKiBKU0V2ZW50TGlzdGVuZXIuaCAqLywKIAkJCQk5
MzVGNDU0MDBGN0MzQjVGMDBEN0MxRkIgLyogSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAgKi8sCiAJ
CQkJOTM1RjQ1NDEwRjdDM0I1RjAwRDdDMUZCIC8qIEpTTGF6eUV2ZW50TGlzdGVuZXIuaCAqLywK
KwkJCQlDNkY0MjBBMDE2QjcxNjRFMDA1MkE5RjIgLyogSlNNdXRhdGlvbkNhbGxiYWNrLmNwcCAq
LywKKwkJCQlDNkY0MjBBMTE2QjcxNjRFMDA1MkE5RjIgLyogSlNNdXRhdGlvbkNhbGxiYWNrLmgg
Ki8sCisJCQkJOUIxNDcxNTQxQkQwMUU1NTAwMzZERTA5IC8qIEpTQ3VzdG9tRWxlbWVudEludGVy
ZmFjZS5jcHAgKi8sCisJCQkJOUIxNDcxNTUxQkQwMUU1NTAwMzZERTA5IC8qIEpTQ3VzdG9tRWxl
bWVudEludGVyZmFjZS5oICovLAogCQkJKTsKIAkJCW5hbWUgPSAiQ2FsbGJhY2sgT2JqZWN0cyI7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjM4NTgsNiArMjM4NzYsOSBAQAogCQkJ
CTg1MDMxQjMxMEE0NEVGQzcwMEY5OTJFMCAvKiBNb3VzZVJlbGF0ZWRFdmVudC5jcHAgKi8sCiAJ
CQkJODUwMzFCMzIwQTQ0RUZDNzAwRjk5MkUwIC8qIE1vdXNlUmVsYXRlZEV2ZW50LmggKi8sCiAJ
CQkJQzZGMDkwMDExNDMyN0I2MTAwNjg1ODQ5IC8qIE11dGF0aW9uQ2FsbGJhY2suaCAqLywKKwkJ
CQk5QjE0NzE1MTFCRDAxQjg5MDAzNkRFMDkgLyogQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oICov
LAorCQkJCTlCOTNBMEU1MUJFMzEwREUwMDIzMUE4RSAvKiBDdXN0b21FbGVtZW50RGVmaW5pdGlv
bnMuY3BwICovLAorCQkJCTlCOTNBMEU2MUJFMzEwREUwMDIzMUE4RSAvKiBDdXN0b21FbGVtZW50
RGVmaW5pdGlvbnMuaCAqLywKIAkJCQk4NTAzMUIzMzBBNDRFRkM3MDBGOTkyRTAgLyogTXV0YXRp
b25FdmVudC5jcHAgKi8sCiAJCQkJODUwMzFCMzQwQTQ0RUZDNzAwRjk5MkUwIC8qIE11dGF0aW9u
RXZlbnQuaCAqLywKIAkJCQk5M0VFQzFGMzA5QzI4Nzc3MDBDNTE1RDEgLyogTXV0YXRpb25FdmVu
dC5pZGwgKi8sCkBAIC0yNDAzMyw2ICsyNDA1NCw4IEBACiAJCQkJODUwMzFCM0EwQTQ0RUZDNzAw
Rjk5MkUwIC8qIFdoZWVsRXZlbnQuY3BwICovLAogCQkJCTg1MDMxQjNCMEE0NEVGQzcwMEY5OTJF
MCAvKiBXaGVlbEV2ZW50LmggKi8sCiAJCQkJOTNFRUMxRjcwOUMyODc3NzAwQzUxNUQxIC8qIFdo
ZWVsRXZlbnQuaWRsICovLAorCQkJCTlCQTQ2NkI1MUJEQzczNEEwMEJCNzk5MCAvKiBMaWZlY3lj
bGVDYWxsYmFja1F1ZXVlLmNwcCAqLywKKwkJCQk5QkE0NjZCNjFCREM3MzRBMDBCQjc5OTAgLyog
TGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBkb207CiAJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjQ2MDksNiArMjQ2MzIsNyBAQAogCQkJCUJDNUVC
NURCMEU4MUI3RUEwMEIyNTk2NSAvKiBCb3JkZXJWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NkVEOEMzN0ExODNCRkY4QzAwOUU1M0JEIC8qIEJveFNoYXBlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQ0VBNDg1NTA5N0Q5MzAyMDA5NEM5RTQgLyogYnJlYWtfbGluZXMuaCBpbiBIZWFkZXJzICov
LAorCQkJCTlCMTQ3MTU3MUJEMDFFNTUwMDM2REUwOSAvKiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZh
Y2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RERCMDk5RTY0OTIwMDU2RTU4MSAvKiBCcmVh
a0Jsb2NrcXVvdGVDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk1OTlFNzU5MDExMDU1QTFG
MDBEOTA0RkEgLyogQnJpZGdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1OUI1OTc3NTExMDg2NTc5
MDA3MTU5RTggLyogQnJpZGdlSlNDLmggaW4gSGVhZGVycyAqLywKQEAgLTI1NTU3LDYgKzI1NTgx
LDcgQEAKIAkJCQk0OTlCM0VENzEyOENEMzE0MDBFNzI2QzIgLyogR3JhcGhpY3NMYXllckNBLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MEIwRTBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NM
YXllckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNjk1OTMxNjFBMUU1MzAwMzczMkNC
IC8qIEdyYXBoaWNzTGF5ZXJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKKwkJCQk5QjE0NzE1MzFC
RDAxQjg5MDAzNkRFMDkgLyogQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZBMjREN0ExNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDRUMzMzdBRjFBNDYwODZEMDA5Qjg1MjMgLyogR3JhcGhpY3NT
ZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJBMDE1QUIwQUY2Q0Q1MzAwNkJDRTBF
IC8qIEdyYXBoaWNzVHlwZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMjU2NDMsNiArMjU2NjgsNyBA
QAogCQkJCUE4MTM2OUUwMDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MTGVnZW5kRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQThFQTc5RjYwQTE5MTZERjAwQThFRjVGIC8qIEhUTUxMSUVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NzFEQzIwMEExNTIwNTcwMEIxMkE2OCAvKiBIVE1M
TGlua0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTlCOTNBMEU4MUJFMzEwREUwMDIzMUE4
RSAvKiBDdXN0b21FbGVtZW50RGVmaW5pdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE3
RDJDMEExOTM4NTUwMEE4RUY1RiAvKiBIVE1MTWFwRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQThFQTdDQUIwQTE5MkI5QzAwQThFRjVGIC8qIEhUTUxNYXJxdWVlRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTQ0NjEzQTUwQ0Q2MzMxMDAwRkFEQTc1IC8qIEhUTUxNZWRpYUVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjc1MDAsNiArMjc1MjYsNyBAQAogCQkJCUIyMjI3QTAz
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRVNwb3RMaWdodEVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUIyMjI3QTA2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRVRpbGVFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMjIyN0EwOTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVUdXJidWxl
bmNlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOUJBNDY2QjgxQkRDNzM0QTAwQkI3OTkw
IC8qIExpZmVjeWNsZUNhbGxiYWNrUXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NUU3MkZD
MEZEMjYyMzkwMEE4N0Q3OSAvKiBTVkdGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4MUVC
RjNCMEZEMzRGNDEwMERBNzU1OSAvKiBTVkdGaWx0ZXJCdWlsZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMjIyN0EwQzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRmlsdGVyRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0yODY2Miw2ICsyODY4OSw3IEBACiAJCQkJRkJENkFGOEIxNUVGMjVFNTAw
OEI3MTEwIC8qIENTU0Jhc2ljU2hhcGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNkE4NEY5
MTRDODVDQ0MwMDI5NzdERiAvKiBDU1NCb3JkZXJJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQzI3NEIzMTE0MEVCRUQ4MDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTlCOTNBMEU3MUJFMzEwREUwMDIzMUE4RSAvKiBDdXN0b21F
bGVtZW50RGVmaW5pdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlBRTJEOEUxMzRFRTUw
QzAwNzI5MjBBIC8qIENTU0NhbGN1bGF0aW9uVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkM2MDRBNDMwREI1NjM0RTAwMjA0NzM5IC8qIENTU0NhbnZhc1ZhbHVlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUUxRUJCQkQ0MEFBQzlCODcwMDFGRThFMiAvKiBDU1NDaGFyc2V0UnVsZS5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTMxMTA3LDYgKzMxMTM1LDcgQEAKIAkJCQkyNkZBRTRDRTE4NTJF
M0E1MDA0QzhDNDYgLyogU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0NTM5MEFFMEVBRkY0QjUwMDM2OTVDOCAv
KiBTeXN0ZW1NZW1vcnlJT1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBMDdGQkQxOEUwQTE2
QTAwNDY5OUZBIC8qIFN5c3RlbVNsZWVwTGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
OUJBNDY2QjcxQkRDNzM0QTAwQkI3OTkwIC8qIExpZmVjeWNsZUNhbGxiYWNrUXVldWUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0RBMDdGQzExOEUwQTIyQjAwNDY5OUZBIC8qIFN5c3RlbVNsZWVw
TGlzdGVuZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1RDU5NzVCNDE5NjM1RjExMDBEMDA4
NzggLyogU3lzdGVtVmVyc2lvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQ2M0VCNjIyMUI4Nzg5
RTAwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzEzMjcs
NiArMzEzNTYsNyBAQAogCQkJCTAxRDNDRjg2MTRCRDBBMzAwMEZFOTk3MCAvKiBXZWJHTFNoYXJl
ZE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2Rjk5NUExNTFBNzA3NTYyMDBBNzM1RjQg
LyogV2ViR0xTeW5jLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5QzdCOUU1MTA0MkQzMkYwMDA5
RDQ0NyAvKiBXZWJHTFRleHR1cmUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOUIxNDcxNTYxQkQw
MUU1NTAwMzZERTA5IC8qIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk2Rjk5NUEyMzFBNzA3OEIxMDBBNzM1RjQgLyogV2ViR0xUcmFuc2Zvcm1GZWVkYmFj
ay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwQzNGMUY1QTEwQzg4NzEyMDBENzJDRTEgLyogV2Vi
R0xVbmlmb3JtTG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkY5OTVBMjUxQTcwNzhC
MTAwQTczNUY0IC8qIFdlYkdMVmVydGV4QXJyYXlPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRl
cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50
ZXJmYWNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWM0NDhiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVt
ZW50SW50ZXJmYWNlLmNwcApAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmgiCisKKyNp
bmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKKyNpbmNs
dWRlICJKU0VsZW1lbnQuaCIKKyNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNp
bmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGVJbnN0cnVtZW50YXRpb24uaCIKKyNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8aGVhcC9XZWFrSW5saW5lcy5o
PgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjpKU0N1c3Rv
bUVsZW1lbnRJbnRlcmZhY2UoSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQorICAgIDogQWN0aXZlRE9NQ2FsbGJhY2soZ2xvYmFsT2JqZWN0LT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgLCBtX2NvbnN0cnVjdG9yKGNvbnN0cnVjdG9y
KQorICAgICwgbV9pc29sYXRlZFdvcmxkKCZnbG9iYWxPYmplY3QtPndvcmxkKCkpCit7Cit9CisK
K0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6fkpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSgpCit7
Cit9CisKK1JlZlB0cjxFbGVtZW50PiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmNvbnN0cnVj
dChjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUpCit7CisgICAgaWYgKCFjYW5JbnZva2VDYWxs
YmFjaygpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJlZjxKU0N1c3RvbUVsZW1l
bnRJbnRlcmZhY2U+IHByb3RlY3QoKnRoaXMpOworCisgICAgSlNMb2NrSG9sZGVyIGxvY2sobV9p
c29sYXRlZFdvcmxkLT52bSgpKTsKKworICAgIGlmICghbV9jb25zdHJ1Y3RvcikKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0g
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CisgICAgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNET01HbG9iYWxPYmplY3QoY29udGV4
dCwgKm1faXNvbGF0ZWRXb3JsZCk7CisgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCk7CisKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CisgICAg
Q29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gbV9jb25zdHJ1Y3Rvci0+bWV0aG9kVGFibGUo
KS0+Z2V0Q29uc3RydWN0RGF0YShtX2NvbnN0cnVjdG9yLmdldCgpLCBjb25zdHJ1Y3REYXRhKTsK
KyAgICBpZiAoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlTm9uZSkgeworICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICBhcmdzLmFwcGVuZChqc1N0cmluZ1dp
dGhDYWNoZShleGVjLCB0YWdOYW1lKSk7CisKKy8vIEZJWE1FOiBhZGQgYmFjayBpbnNwZWN0b3Ig
aW5zdHJ1bWVudGF0aW9uCisvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2ll
ID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb25DYWxsKGNvbnRleHQs
IGNhbGxUeXBlLCBjYWxsRGF0YSk7CisKKyAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGRvIHNvbWV0
aGluZyBzcGVjaWFsIGZvciBleGNlcHRpb25zPworICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXhj
ZXB0aW9uOworICAgIEpTVmFsdWUgbmV3RWxlbWVudCA9IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6
Y29uc3RydWN0KGV4ZWMsIG1fY29uc3RydWN0b3IuZ2V0KCksIGNvbnN0cnVjdFR5cGUsIGNvbnN0
cnVjdERhdGEsIGFyZ3MsIGV4Y2VwdGlvbik7CisgICAgaWYgKG5ld0VsZW1lbnQuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworLy8gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRDYWxsRnVuY3Rpb24oY29va2llLCBjb250ZXh0KTsKKworICAgIEVsZW1lbnQqIGVs
ZW1lbnQgPSBKU0VsZW1lbnQ6OnRvV3JhcHBlZChuZXdFbGVtZW50KTsKKyAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGRvIHNvZW10ZWhpbmcgc3BlY2lhbCB3aGVuIHRoZSBjb25zdHJ1Y3RvciByZXR1
cm5lZCBhIG5vbi1FbGVtZW50IG9iamVjdC4KKworICAgIHJldHVybiBlbGVtZW50OworfQorCit2
b2lkIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6YXR0cmlidXRlQ2hhbmdlZChFbGVtZW50JiBl
bGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0
cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCit7CisgICAgaWYg
KCFjYW5JbnZva2VDYWxsYmFjaygpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWY8SlNDdXN0
b21FbGVtZW50SW50ZXJmYWNlPiBwcm90ZWN0KCp0aGlzKTsKKworICAgIEpTTG9ja0hvbGRlciBs
b2NrKG1faXNvbGF0ZWRXb3JsZC0+dm0oKSk7CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7Cisg
ICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNET01HbG9iYWxPYmplY3Qo
Y29udGV4dCwgKm1faXNvbGF0ZWRXb3JsZCk7CisgICAgRXhlY1N0YXRlKiBzdGF0ZSA9IGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpOworCisgICAgSlNPYmplY3QqIGpzRWxlbWVudCA9IGFzT2Jq
ZWN0KHRvSlMoc3RhdGUsIGdsb2JhbE9iamVjdCwgJmVsZW1lbnQpKTsKKworICAgIEpTVmFsdWUg
Y2FsbGJhY2sgPSBqc0VsZW1lbnQtPmdldChzdGF0ZSwgRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdl
ZENhbGxiYWNrTmFtZSgpKTsKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBj
YWxsVHlwZSA9IGdldENhbGxEYXRhKGNhbGxiYWNrLCBjYWxsRGF0YSk7CisgICAgaWYgKGNhbGxU
eXBlID09IENhbGxUeXBlTm9uZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTWFya2VkQXJndW1l
bnRCdWZmZXIgYXJnczsKKyAgICBhcmdzLmFwcGVuZChqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwg
YXR0cmlidXRlTmFtZSkpOworICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nV2l0aENhY2hlKHN0YXRl
LCBvbGRWYWx1ZSkpOworICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBu
ZXdWYWx1ZSkpOworCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9
IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uQ2FsbChjb250ZXh0LCBj
YWxsVHlwZSwgY2FsbERhdGEpOworCisgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBleGNlcHRpb247
CisgICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKHN0YXRlLCBjYWxsYmFjaywgY2FsbFR5
cGUsIGNhbGxEYXRhLCBqc0VsZW1lbnQsIGFyZ3MsIGV4Y2VwdGlvbik7CisKKyAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5jdGlvbihjb29raWUsIGNvbnRleHQpOworCisg
ICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgcmVwb3J0RXhjZXB0aW9uKHN0YXRlLCBleGNlcHRp
b24pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmYjJiY2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaApAQCAtMCwwICsx
LDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZV9oCisj
ZGVmaW5lIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZV9oCisKKyNpbmNsdWRlICJBY3RpdmVET01D
YWxsYmFjay5oIgorI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgorI2luY2x1ZGUgIkN1c3Rv
bUVsZW1lbnRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlIDxoZWFwL1dlYWsuaD4KKyNpbmNsdWRlIDxy
dW50aW1lL0pTT2JqZWN0Lmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIFByaXZhdGVOYW1lOworCit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgSlNET01HbG9iYWxPYmplY3Q7CisKK2NsYXNzIEpTQ3VzdG9tRWxlbWVudEludGVy
ZmFjZSA6IHB1YmxpYyBDdXN0b21FbGVtZW50SW50ZXJmYWNlLCBwdWJsaWMgQWN0aXZlRE9NQ2Fs
bGJhY2sgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8SlNDdXN0b21FbGVtZW50SW50ZXJmYWNl
PiBjcmVhdGUoSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU0N1c3RvbUVs
ZW1lbnRJbnRlcmZhY2UoY2FsbGJhY2ssIGdsb2JhbE9iamVjdCkpOworICAgIH0KKworICAgIHZp
cnR1YWwgfkpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSgpOworCitwcml2YXRlOgorICAgIEpTQ3Vz
dG9tRWxlbWVudEludGVyZmFjZShKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxP
YmplY3QqKTsKKworICAgIHZpcnR1YWwgUmVmUHRyPEVsZW1lbnQ+IGNvbnN0cnVjdChjb25zdCBB
dG9taWNTdHJpbmcmIHRhZ05hbWUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBhdHRyaWJ1
dGVDaGFuZ2VkKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRl
TmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBu
ZXdWYWx1ZSkgb3ZlcnJpZGU7CisKKyAgICB2aXJ0dWFsIEpTQzo6SlNPYmplY3QqIGNvbnN0cnVj
dG9yKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb25zdHJ1Y3Rvci5nZXQoKTsgfQorCisgICAgdmly
dHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsgfQorCisgICAgbXV0YWJsZSBKU0M6OldlYWs8SlNDOjpKU09iamVj
dD4gbV9jb25zdHJ1Y3RvcjsKKyAgICBSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBtX2lzb2xhdGVk
V29ybGQ7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4IDIwZWY2MDkuLjcy
NjJlMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcApA
QCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRl
ICJKU0RPTVdpbmRvd0N1c3RvbS5oIgogI2luY2x1ZGUgIkpTRXhjZXB0aW9uQmFzZS5oIgorI2lu
Y2x1ZGUgIkxpZmVjeWNsZUNhbGxiYWNrUXVldWUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaD4KICNpbmNsdWRlIDxp
bnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oPgpAQCAtNjczLDQgKzY3NCwyNiBAQCB2
b2lkIERPTUNvbnN0cnVjdG9ySlNCdWlsdGluT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQzo6SlND
ZWxsKiBjZWxsLCBKU0M6OlNsb3RWaQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X2luaXRpYWxpemVGdW5jdGlvbik7CiB9CiAKK0xpZmVjeWNsZUNhbGxiYWNrUXVldWUqIEN1c3Rv
bUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2s6OmVuc3VyZUN1cnJlbnRRdWV1ZSgpCit7
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIHJlbW92ZSB0aGlzIGVhcmx5IHJl
dHVybiBvbmNlIE5lZWRzUHJvY2Vzc2luZ1N0YWNrIGlzIGFkZGRlZCBldmVyeXdoZXJlLgorICAg
IGlmICghc19jdXJyZW50UHJvY2Vzc2luZ1N0YWNrKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIGF1dG8qJiBxdWV1ZSA9IHNfY3VycmVudFByb2Nlc3NpbmdTdGFjay0+bV9xdWV1ZTsK
KyAgICBpZiAoIXF1ZXVlKSAvLyBXZSB1c2UgYSByYXcgcG9pbnRlciB0byBhdm9pZCBnZW5lYXJp
bmcgY29kZSB0byBkZWxldGUgaXQgaW4gfkN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5n
U3RhY2suCisgICAgICAgIHF1ZXVlID0gbmV3IExpZmVjeWNsZUNhbGxiYWNrUXVldWU7CisgICAg
cmV0dXJuIHF1ZXVlOworfQorCit2b2lkIEN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5n
U3RhY2s6OnByb2Nlc3NRdWV1ZSgpCit7CisgICAgQVNTRVJUKG1fcXVldWUpOworICAgIG1fcXVl
dWUtPmludm9rZUFsbCgpOworICAgIGRlbGV0ZSBtX3F1ZXVlOworICAgIG1fcXVldWUgPSBudWxs
cHRyOworfQorCitDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrKiBDdXN0b21F
bGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOjpzX2N1cnJlbnRQcm9jZXNzaW5nU3RhY2sg
PSBudWxscHRyOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQmluZGluZy5oCmluZGV4IDJmOTIzMjIuLjM5NGEyNzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC02Miw2ICs2Miw3IEBAIGNsYXNz
IENhY2hlZFNjcmlwdDsKIGNsYXNzIERPTVN0cmluZ0xpc3Q7CiBjbGFzcyBET01XaW5kb3c7CiBj
bGFzcyBGcmFtZTsKK2NsYXNzIExpZmVjeWNsZUNhbGxiYWNrUXVldWU7CiBjbGFzcyBVUkw7CiBj
bGFzcyBOb2RlOwogCkBAIC02ODUsNiArNjg2LDMzIEBAIGlubGluZSB2b2lkIHNldFByb3BlcnR5
VG9PYmplY3QoSlNDOjpFeGVjU3RhdGUmIGV4ZWMsIEpTQzo6SlNPYmplY3QmIG9iamVjdCwgY29u
CiAgICAgSlNDOjpQdXRQcm9wZXJ0eVNsb3QgcHJvcGVydHlTbG90KCZvYmplY3QpOwogICAgIEpT
Qzo6SlNPYmplY3Q6OnB1dCgmb2JqZWN0LCAmZXhlYywgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZleGVjLCBuYW1lKSwgdmFsdWUsIHByb3BlcnR5U2xvdCk7CiB9CisKK2NsYXNzIEN1c3Rv
bUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2sgeworcHVibGljOgorICAgIEN1c3RvbUVs
ZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2soKQorICAgICAgICA6IG1fcHJldmlvdXNQcm9j
ZXNzaW5nU3RhY2soc19jdXJyZW50UHJvY2Vzc2luZ1N0YWNrKQorICAgIHsKKyAgICAgICAgc19j
dXJyZW50UHJvY2Vzc2luZ1N0YWNrID0gdGhpczsKKyAgICB9CisKKyAgICB+Q3VzdG9tRWxlbWVu
dExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjaygpCisgICAgeworICAgICAgICBpZiAoVU5MSUtFTFko
bV9xdWV1ZSkpCisgICAgICAgICAgICBwcm9jZXNzUXVldWUoKTsKKyAgICAgICAgc19jdXJyZW50
UHJvY2Vzc2luZ1N0YWNrID0gbV9wcmV2aW91c1Byb2Nlc3NpbmdTdGFjazsKKyAgICB9CisKKyAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYSByZWZlcmVuY2Ugb25jZSAiZW5zdXJlIiBzdGFy
dHMgdG8gd29yay4KKyAgICBzdGF0aWMgTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZSogZW5zdXJlQ3Vy
cmVudFF1ZXVlKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBwcm9jZXNzUXVldWUoKTsKKworICAg
IExpZmVjeWNsZUNhbGxiYWNrUXVldWUqIG1fcXVldWUgeyBudWxscHRyIH07CisgICAgQ3VzdG9t
RWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayogbV9wcmV2aW91c1Byb2Nlc3NpbmdTdGFj
azsKKworICAgIHN0YXRpYyBDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrKiBz
X2N1cnJlbnRQcm9jZXNzaW5nU3RhY2s7Cit9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3Bw
CmluZGV4IDA5NGNlM2UuLmQ0OGZlOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCkBAIC0yMCwxMSArMjAsMTMgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJKU0RvY3VtZW50LmgiCiAKKyNpbmNsdWRlICJDdXN0b21FbGVt
ZW50RGVmaW5pdGlvbnMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgiCisjaW5jbHVkZSAi
SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3dDdXN0b20u
aCIKICNpbmNsdWRlICJKU0hUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkpTTG9jYXRpb24uaCIK
QEAgLTM1LDYgKzM3LDkgQEAKICNpbmNsdWRlICJTVkdEb2N1bWVudC5oIgogI2luY2x1ZGUgIlNj
cmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJUb3VjaExpc3QuaCIKKworI2luY2x1ZGUgPHJ1
bnRpbWUvRXJyb3IuaD4KKyNpbmNsdWRlIDxydW50aW1lL1ByaXZhdGVOYW1lLmg+CiAjaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPgogCiAjaWYgRU5BQkxFKFdFQkdMKQpAQCAtMTMwLDQgKzEzNSw0MiBA
QCBKU1ZhbHVlIEpTRG9jdW1lbnQ6OmNyZWF0ZVRvdWNoTGlzdChFeGVjU3RhdGUmIHN0YXRlKQog
fQogI2VuZGlmCiAKKworSlNWYWx1ZSBKU0RvY3VtZW50OjpkZWZpbmVDdXN0b21FbGVtZW50KEV4
ZWNTdGF0ZSYgc3RhdGUpCit7CisgICAgQXRvbWljU3RyaW5nIHRhZ05hbWUoc3RhdGUuYXJndW1l
bnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dG9BdG9taWNTdHJpbmcoJnN0YXRlKSk7CisgICAgaWYg
KFVOTElLRUxZKHN0YXRlLmhhZEV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CisKKyAgICBKU09iamVjdCogb2JqZWN0ID0gc3RhdGUuYXJndW1lbnQoMSkuZ2V0T2Jq
ZWN0KCk7CisgICAgQ29uc3RydWN0RGF0YSBjYWxsRGF0YTsKKyAgICBpZiAoIW9iamVjdCB8fCBv
YmplY3QtPm1ldGhvZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEob2JqZWN0LCBjYWxsRGF0YSkg
PT0gQ29uc3RydWN0VHlwZU5vbmUpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3Rh
dGUsICJUaGUgc2Vjb25kIGFyZ3VtZW50IG11c3QgYmUgYSBjb25zdHJ1Y3RvciIpOworCisgICAg
RG9jdW1lbnQmIGRvY3VtZW50ID0gd3JhcHBlZCgpOworICAgIHN3aXRjaCAoQ3VzdG9tRWxlbWVu
dERlZmluaXRpb25zOjpjaGVja05hbWUodGFnTmFtZSkpIHsKKyAgICBjYXNlIEN1c3RvbUVsZW1l
bnREZWZpbml0aW9uczo6TmFtZVN0YXR1czo6VmFsaWQ6CisgICAgYnJlYWs7CisgICAgY2FzZSBD
dXN0b21FbGVtZW50RGVmaW5pdGlvbnM6Ok5hbWVTdGF0dXM6OkNvbmZsaWN0c1dpdGhCdWlsdGlu
TmFtZXM6CisgICAgICAgIHJldHVybiB0aHJvd1N5bnRheEVycm9yKCZzdGF0ZSwgIkN1c3RvbSBl
bGVtZW50IG5hbWUgY2Fubm90IGJlIHNhbWUgYXMgb25lIG9mIHRoZSBidWlsdGluIGVsZW1lbnRz
Iik7CisgICAgY2FzZSBDdXN0b21FbGVtZW50RGVmaW5pdGlvbnM6Ok5hbWVTdGF0dXM6Ok5vSHlw
aGVuOgorICAgICAgICByZXR1cm4gdGhyb3dTeW50YXhFcnJvcigmc3RhdGUsICJDdXN0b20gZWxl
bWVudCBuYW1lIG11c3QgY29udGFpbiBhIGh5cGhlbiIpOworICAgIGNhc2UgQ3VzdG9tRWxlbWVu
dERlZmluaXRpb25zOjpOYW1lU3RhdHVzOjpDb250YWluc1VwcGVyQ2FzZToKKyAgICAgICAgcmV0
dXJuIHRocm93U3ludGF4RXJyb3IoJnN0YXRlLCAiQ3VzdG9tIGVsZW1lbnQgbmFtZSBjYW5ub3Qg
Y29udGFpbiBhbiB1cHBlciBjYXNlIGxldHRlciIpOworICAgIH0KKworICAgIFF1YWxpZmllZE5h
bWUgbmFtZShudWxsQXRvbSwgdGFnTmFtZSwgSFRNTE5hbWVzOjp4aHRtbE5hbWVzcGFjZVVSSSk7
CisgICAgYXV0byYgZGVmaW5pdGlvbnMgPSBkb2N1bWVudC5lbnN1cmVDdXN0b21FbGVtZW50RGVm
aW5pdGlvbnMoKTsKKyAgICBpZiAoZGVmaW5pdGlvbnMuZmluZEludGVyZmFjZSh0YWdOYW1lKSkg
eworICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBOT1RfU1VQUE9SVEVEX0VSUik7Cisg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKyAgICBkZWZpbml0aW9ucy5kZWZp
bmVFbGVtZW50KG5hbWUsIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6Y3JlYXRlKG9iamVjdCwg
Z2xvYmFsT2JqZWN0KCkpKTsKKyAgICBQcml2YXRlTmFtZSB1bmlxdWVQcml2YXRlTmFtZTsKKyAg
ICBnbG9iYWxPYmplY3QoKS0+cHV0RGlyZWN0KGdsb2JhbE9iamVjdCgpLT52bSgpLCB1bmlxdWVQ
cml2YXRlTmFtZSwgb2JqZWN0KTsKKworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0VsZW1lbnRDdXN0b20uY3BwCmluZGV4IDFkNjUyNDIuLjdlMjU4NzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcApAQCAtMzUsNiArMzUsNyBA
QAogI2luY2x1ZGUgIkhUTUxGcmFtZUVsZW1lbnRCYXNlLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCiAjaW5jbHVkZSAiSlNBdHRyLmgiCisjaW5jbHVkZSAiSlNDdXN0b21FbGVtZW50SW50ZXJm
YWNlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNIVE1MRWxlbWVu
dFdyYXBwZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiSlNOb2RlTGlzdC5oIgpAQCAtNDIsNiArNDMs
NyBAQAogI2luY2x1ZGUgIkpTU1ZHRWxlbWVudFdyYXBwZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAi
Tm9kZUxpc3QuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL3RleHQv
U3ltYm9sSW1wbC5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCkBAIC01NCw3ICs1NiwxMCBA
QCBKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRWxlbWVudCogZQogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0
dXJuIGpzTnVsbCgpOwogCi0gICAgQVNTRVJUKCFnZXRDYWNoZWRXcmFwcGVyKGdsb2JhbE9iamVj
dC0+d29ybGQoKSwgZWxlbWVudCkpOworICAgIC8vIEZJWE1FOiBBZGQgYmFjayB0aGUgYXNzZXJ0
aW9uIGZvciBub24tY3VzdG9tIGVsZW1lbnRzLgorICAgIEFTU0VSVChlbGVtZW50LT5pc0N1c3Rv
bUVsZW1lbnQoKSB8fCAhZ2V0Q2FjaGVkV3JhcHBlcihnbG9iYWxPYmplY3QtPndvcmxkKCksIGVs
ZW1lbnQpKTsKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGdldENhY2hlZFdyYXBwZXIoZ2xvYmFs
T2JqZWN0LT53b3JsZCgpLCBlbGVtZW50KSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKICAg
ICBKU0RPTU9iamVjdCogd3JhcHBlcjsgICAgICAgIAogICAgIGlmIChpczxIVE1MRWxlbWVudD4o
KmVsZW1lbnQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
RWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVt
ZW50Q3VzdG9tLmNwcAppbmRleCA1ODM2YTEwLi5jYTJmZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMTQgKzI2LDY5
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNIVE1MRWxlbWVudC5oIgogCisj
aW5jbHVkZSAiQ3VzdG9tRWxlbWVudERlZmluaXRpb25zLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKKyNpbmNsdWRlICJKU0N1c3RvbUVsZW1l
bnRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAjaW5jbHVkZSA8cnVu
dGltZS9KU1dpdGhTY29wZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNIVE1M
RWxlbWVudChFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIERPTUNvbnN0cnVjdG9yT2JqZWN0KiBq
c0NvbnN0cnVjdG9yID0ganNDYXN0PERPTUNvbnN0cnVjdG9yT2JqZWN0Kj4oc3RhdGUtPmNhbGxl
ZSgpKTsKKworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBqc0NvbnN0cnVj
dG9yLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0IHx8ICFjb250
ZXh0LT5pc0RvY3VtZW50KCkpCisgICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yRG9jdW1l
bnRVbmF2YWlsYWJsZUVycm9yKCpzdGF0ZSwgIkhUTUxFbGVtZW50Iik7CisgICAgYXV0byYgZG9j
dW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpOworCisgICAgYXV0byogZGVmaW5p
dGlvbnMgPSBkb2N1bWVudC5jdXN0b21FbGVtZW50RGVmaW5pdGlvbnMoKTsKKyAgICBpZiAoIWRl
ZmluaXRpb25zKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgIm5ldy50
YXJnZXQgaXMgbm90IGEgdmFsaWQgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3IiKTsKKworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIEpTT2JqZWN0KiBuZXdUYXJnZXQgPSBzdGF0ZS0+
dGhpc1ZhbHVlKCkuZ2V0T2JqZWN0KCk7CisgICAgUXVhbGlmaWVkTmFtZSBmdWxsTmFtZSA9IGRl
ZmluaXRpb25zLT5maW5kTmFtZShuZXdUYXJnZXQpOworICAgIGlmIChmdWxsTmFtZSA9PSBudWxs
UU5hbWUoKSkgeworICAgICAgICBpZiAoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAg
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOworICAgIH0KKworICAgIGlmIChzdGF0ZS0+YXJndW1lbnRDb3VudCgp
KSB7CisgICAgICAgIFN0cmluZyBuYW1lOworICAgICAgICBpZiAoIXN0YXRlLT5hcmd1bWVudCgw
KS5nZXRTdHJpbmcoc3RhdGUsIG5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3Ioc3RhdGUsICJUaGUgZmlyc3QgYXJndW1lbnQgaXMgbm90IGEgdmFsaWQgY3VzdG9tIGVs
ZW1lbnQgbmFtZSIpOworCisgICAgICAgIGF1dG8qIGludGVyZmFjZSA9IGRlZmluaXRpb25zLT5m
aW5kSW50ZXJmYWNlKG5hbWUpOworICAgICAgICBpZiAoIWludGVyZmFjZSkKKyAgICAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCAiVGhlIGZpcnN0IGFyZ3VtZW50IGlzIG5v
dCBhIHZhbGlkIGN1c3RvbSBlbGVtZW50IG5hbWUiKTsKKworICAgICAgICBpZiAobmV3VGFyZ2V0
ICE9IGludGVyZmFjZS0+Y29uc3RydWN0b3IoKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKHN0YXRlLCAiQXR0ZW1wdCB0byBjb25zdHJ1Y3QgYSBjdXN0b20gZWxlbWVudCB3
aXRoIGEgd3JvbmcgaW50ZXJmYWNlIik7CisKKyAgICAgICAgZnVsbE5hbWUgPSBRdWFsaWZpZWRO
YW1lKG51bGxBdG9tLCBuYW1lLCBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJKTsKKyAgICB9
CisKKyAgICBKU1ZhbHVlIHByb3RvdHlwZU9iamVjdCA9IG5ld1RhcmdldC0+Z2V0KHN0YXRlLCB2
bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpOworICAgIGlmIChzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAg
ICBhdXRvKiBnbG9iYWxPYmplY3QgPSBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKTsKKyAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGNyZWF0ZSBhIG5ldyBzdHJ1Y3R1cmUgZWFjaCB0aW1l
LiBDYWNoZSBpdCBvbiB0aGUgY29uc3RydWN0b3Igb2JqZWN0IG9yIGludGVyZmFjZSB3cmFwcGVy
LgorICAgIGF1dG8qIG5ld0VsZW1lbnRTdHJ1Y3R1cmUgPSBKU0hUTUxFbGVtZW50OjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlT2JqZWN0KTsKKworICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgZ2V0IHRoZSBxdWFsaWZpZWQgbmFtZSBvdXQgb2YgdGhlIGludGVyZmFj
ZS4KKyAgICBSZWY8SFRNTEVsZW1lbnQ+IGVsZW1lbnQgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKGZ1
bGxOYW1lLCBkb2N1bWVudCk7CisgICAgZWxlbWVudC0+c2V0Q3VzdG9tRWxlbWVudCgpOworICAg
IGF1dG8qIGpzRWxlbWVudCA9IEpTSFRNTEVsZW1lbnQ6OmNyZWF0ZShuZXdFbGVtZW50U3RydWN0
dXJlLCBnbG9iYWxPYmplY3QsIGVsZW1lbnQuZ2V0KCkpOworICAgIGNhY2hlV3JhcHBlcihnbG9i
YWxPYmplY3QtPndvcmxkKCksIGVsZW1lbnQucHRyKCksIGpzRWxlbWVudCk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0VsZW1lbnQpOworfQorCiBKU1Njb3BlKiBKU0hUTUxFbGVtZW50
OjpwdXNoRXZlbnRIYW5kbGVyU2NvcGUoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSkg
Y29uc3QKIHsKICAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9IHdyYXBwZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgKaW5kZXgg
MDllN2U1Yi4uY2Y3OGNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNNYWluVGhyZWFkRXhlY1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNNYWluVGhyZWFkRXhlY1N0YXRlLmgKQEAgLTU2LDYgKzU2LDEzIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIEpTQzo6Y2FsbChleGVjLCBmdW5jdGlvbk9iamVjdCwgY2FsbFR5cGUsIGNhbGxE
YXRhLCB0aGlzVmFsdWUsIGFyZ3MsIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICB9OwogCisgICAg
c3RhdGljIEpTQzo6SlNWYWx1ZSBjb25zdHJ1Y3QoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6
SlNWYWx1ZSBjb25zdHJ1Y3Rvck9iamVjdCwgSlNDOjpDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5
cGUsIGNvbnN0IEpTQzo6Q29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSwKKyAgICAgICAgY29u
c3QgSlNDOjpBcmdMaXN0JiBhcmdzLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVk
RXhjZXB0aW9uKQorICAgIHsKKyAgICAgICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlIGN1cnJlbnRT
dGF0ZShleGVjKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6Y29uc3RydWN0KGV4ZWMsIGNvbnN0cnVj
dG9yT2JqZWN0LCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdzLCByZXR1cm5lZEV4
Y2VwdGlvbik7CisgICAgfTsKKwogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZXZhbHVhdGUoSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6U291cmNlQ29kZSYgc291cmNlLCBKU0M6OkpT
VmFsdWUgdGhpc1ZhbHVlLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0
aW9uKQogICAgIHsKICAgICAgICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlIGN1cnJlbnRTdGF0ZShl
eGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KaW5kZXggYjZlOGIyZi4uYjE1NTYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTExNDAsNyArMTE0MCwx
MSBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgICAgIGlmIChIYXNDdXN0b21HZXR0ZXIo
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMpKSB7CiAgICAgICAgICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikg
aWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICAgICAgICAgIG15ICRtZXRob2ROYW1lID0g
JGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKTsK
LSAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIEpTQzo6SlNWYWx1ZSAi
IC4gJG1ldGhvZE5hbWUgLiAiKEpTQzo6RXhlY1N0YXRlJikgY29uc3Q7XG4iKTsKKyAgICAgICAg
ICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+aXNTdGF0aWMpIHsKKyAgICAgICAgICAgICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlICIgLiAkbWV0aG9k
TmFtZSAuICIoSlNDOjpFeGVjU3RhdGUmKTtcbiIpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgSlNDOjpKU1Zh
bHVlICIgLiAkbWV0aG9kTmFtZSAuICIoSlNDOjpFeGVjU3RhdGUmKSBjb25zdDtcbiIpOworICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2Vu
ZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBpZiAoSGFzQ3VzdG9tU2V0dGVyKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzKSAmJiAhSXNSZWFkb25seSgkYXR0cmlidXRlKSkgewpAQCAtMjM4Miw3ICsyMzg2LDEx
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICB9ICMgYXR0cmlidXRl
IE5vbmRldGVybWluaXN0aWMKIAogICAgICAgICAgICAgaWYgKEhhc0N1c3RvbUdldHRlcigkYXR0
cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcykpIHsKLSAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRo
aXMtPiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCpzdGF0ZSkpO1xuIik7CisgICAgICAgICAgICAg
ICAgaWYgKCRhdHRyaWJ1dGUtPmlzU3RhdGljKSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoJHtjbGFzc05hbWV9Ojok
aW1wbEdldHRlckZ1bmN0aW9uTmFtZSgqc3RhdGUpKTtcbiIpOworICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+JGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoKnN0
YXRlKSk7XG4iKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2lmICgkYXR0
cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5Rm9y
Tm9kZSJ9KSB7CiAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNET01CaW5kaW5nLmgi
fSA9IDE7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTtcbiIpOwpAQCAtMjkxMiw2ICsyOTIwLDEwIEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7Ijxy
dW50aW1lL0Vycm9yLmg+In0gPSAxOwogCisgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOZWVkc1Byb2Nlc3NpbmdTdGFjayJ9KSB7Cisg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQ3VzdG9tRWxlbWVudExpZmVj
eWNsZVByb2Nlc3NpbmdTdGFjayBjdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNr
O1xuIik7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPmlzU3Rh
dGljKSB7CiAgICAgICAgICAgICAgICAgaWYgKCRpc0N1c3RvbSkgewogICAgICAgICAgICAgICAg
ICAgICBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2soXEBpbXBsQ29udGVudCwgJGZ1bmN0aW9u
LCAkaW50ZXJmYWNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvSURMQXR0cmlidXRlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lE
TEF0dHJpYnV0ZXMudHh0CmluZGV4IDQ3OTViMTAuLjQzOTY2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dApAQCAtODksNiArODks
NyBAQCBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QKIEpTTGVnYWN5UGFyZW50PSoKIE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQKIE5hbWVkQ29uc3RydWN0b3I9KgorTmVlZHNQcm9jZXNzaW5nU3RhY2sK
IE5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cwogTmV3T2JqZWN0CiBOb0ludGVyZmFj
ZU9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcAppbmRleCA3N2JhNGVkLi4yMzdjODAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAt
MTU3LDYgKzE1Nyw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24oCiBKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Eb21TdHJpbmdMaXN0
RnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGFi
bGVTZXF1ZW5jZShKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxs
YWJsZVNlcXVlbmNlMihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5lZWRzUHJvY2Vz
c2luZ1N0YWNrKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTVkdEb2N1bWVudChKU0M6OkV4ZWNT
dGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQ29udmVydDEoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQyKEpTQzo6
RXhlY1N0YXRlKik7CkBAIC0zMDcsNiArMzA4LDcgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpEZXNjcmlwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkUK
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSWQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
T2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogdm9pZCBz
ZXRKU1Rlc3RPYmpJZChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqSGFzaChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
akNvbnN0cnVjdG9yQXR0cmlidXRlQ2hhbmdlZChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU09iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
IHZvaWQgc2V0SlNUZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlRG91YmxlQXR0cmlidXRlKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
UHJvcGVydHlOYW1lKTsKQEAgLTQyNCw2ICs0MjYsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxl
VmFsdWUgSlNUZXN0T2JqQ29uc3RydWN0b3JUYWJsZVZhbHVlc1tdID0KICAgICB7ICJzdGF0aWNT
dHJpbmdBdHRyIiwgRG9udERlbGV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRp
Y1N0cmluZ0F0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0cmluZ0F0dHIpIH0gfSwK
ICAgICB7ICJUZXN0U3ViT2JqIiwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dE9iakNvbnN0cnVjdG9yVGVzdFN1Yk9iaiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJzdGF0aWNSZWFkT25seVN5
bWJvbEF0dHIiLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQ29uc3Ry
dWN0b3JTdGF0aWNSZWFkT25seVN5bWJvbEF0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisgICAgeyAiYXR0cmlidXRlQ2hh
bmdlZCIsIERvbnREZWxldGUgfCBSZWFkT25seSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpDb25zdHJ1Y3Rv
ckF0dHJpYnV0ZUNoYW5nZWQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAic3RhdGljTWV0aG9kV2l0aENhbGxiYWNr
QW5kT3B0aW9uYWxBcmciLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25T
dGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyksIChpbnRwdHJfdCkgKDApIH0g
fSwKICAgICB7ICJzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmciLCBKU0M6OkZ1bmN0aW9uLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVz
dE9iakNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmcpLCAoaW50
cHRyX3QpICgxKSB9IH0sCiAgICAgeyAiY2xhc3NNZXRob2QiLCBKU0M6OkZ1bmN0aW9uLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9i
akNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZCksIChpbnRwdHJfdCkgKDApIH0gfSwKQEAg
LTY2Nyw2ICs2NzAsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJv
dG90eXBlVGFibGVWYWx1ZXNbXSA9CiAgICAgeyAiZG9tU3RyaW5nTGlzdEZ1bmN0aW9uIiwgSlND
OjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1
bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkRvbVN0cmluZ0xpc3RGdW5jdGlvbiks
IChpbnRwdHJfdCkgKDEpIH0gfSwKICAgICB7ICJtZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxl
U2VxdWVuY2UiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlKSwgKGludHB0cl90KSAoMikgfSB9LAogICAgIHsg
Im1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGFibGVTZXF1ZW5jZTIiLCBKU0M6OkZ1bmN0aW9uLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNl
MiksIChpbnRwdHJfdCkgKDIpIH0gfSwKKyAgICB7ICJtZXRob2RXaXRoTmVlZHNQcm9jZXNzaW5n
U3RhY2siLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5l
ZWRzUHJvY2Vzc2luZ1N0YWNrKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgImdldFNWR0Rv
Y3VtZW50IiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldFNWR0RvY3Vt
ZW50KSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgImNvbnZlcnQxIiwgSlNDOjpGdW5jdGlv
biwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQxKSwgKGludHB0cl90KSAoMSkgfSB9LAog
ICAgIHsgImNvbnZlcnQyIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNv
bnZlcnQyKSwgKGludHB0cl90KSAoMSkgfSB9LApAQCAtMTc5Niw2ICsxODAwLDE1IEBAIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9iakhhc2goRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RC
YXNlLCBFbmNvZGVkSlNWYWx1CiB9CiAKIAorRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3Ry
dWN0b3JBdHRyaWJ1dGVDaGFuZ2VkKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFz
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKKyAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOworICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0T2JqOjph
dHRyaWJ1dGVDaGFuZ2VkKCpzdGF0ZSkpOworfQorCisKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alJlcGxhY2VhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFz
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKQEAgLTQ1ODUsNiArNDU5OCwxOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXRO
dWxsYQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoTmVlZHNQcm9jZXNzaW5nU3RhY2soRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICBDdXN0
b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrIGN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQ
cm9jZXNzaW5nU3RhY2s7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVl
KCk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
Pih0aGlzVmFsdWUpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoTmVl
ZHNQcm9jZXNzaW5nU3RhY2siKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGltcGwubWV0aG9kV2l0aE5lZWRzUHJvY2Vzc2luZ1N0YWNrKCk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKwogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldFNWR0RvY3VtZW50
KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhp
c1ZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmgKaW5kZXggZWYxNDA5Mi4uOWE2ZTc1MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaApAQCAtNTksNiAr
NTksNyBAQCBwdWJsaWM6CiAgICAgLy8gQ3VzdG9tIGF0dHJpYnV0ZXMKICAgICBKU0M6OkpTVmFs
dWUgY3VzdG9tQXR0cihKU0M6OkV4ZWNTdGF0ZSYpIGNvbnN0OwogICAgIHZvaWQgc2V0Q3VzdG9t
QXR0cihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CisgICAgSlNDOjpKU1ZhbHVlIGF0
dHJpYnV0ZUNoYW5nZWQoSlNDOjpFeGVjU3RhdGUmKSBjb25zdDsKIAogICAgIC8vIEN1c3RvbSBm
dW5jdGlvbnMKICAgICBKU0M6OkpTVmFsdWUgY3VzdG9tTWV0aG9kKEpTQzo6RXhlY1N0YXRlJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9i
ai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwK
aW5kZXggOWViNTYzMy4uZWI0ZDcwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtMjQzLDYgKzI0Myw4IEBAIGVudW0gX29wdGlv
bmFsIHsgIiIsICJPcHRpb25hbFZhbHVlMSIsICJPcHRpb25hbFZhbHVlMiIsICJPcHRpb25hbFZh
bHVlMyIgfTsKIAogICAgIHZvaWQgbWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNl
KHNlcXVlbmNlPHVuc2lnbmVkIGxvbmc+IGFycmF5QXJnLCBzZXF1ZW5jZTx1bnNpZ25lZCBsb25n
Pj8gbnVsbGFibGVBcnJheUFyZyk7CiAgICAgdm9pZCBtZXRob2RXaXRoQW5kV2l0aG91dE51bGxh
YmxlU2VxdWVuY2UyKHVuc2lnbmVkIGxvbmdbXSBhcnJheUFyZywgdW5zaWduZWQgbG9uZ1tdPyBu
dWxsYWJsZUFycmF5QXJnKTsKKworICAgIFtOZWVkc1Byb2Nlc3NpbmdTdGFja10gdm9pZCBtZXRo
b2RXaXRoTmVlZHNQcm9jZXNzaW5nU3RhY2soKTsKICNlbmRpZgogCiAgICAgW0NoZWNrU2VjdXJp
dHlGb3JOb2RlXSByZWFkb25seSBhdHRyaWJ1dGUgRG9jdW1lbnQgY29udGVudERvY3VtZW50OwpA
QCAtMjg1LDYgKzI4NywxMCBAQCBlbnVtIF9vcHRpb25hbCB7ICIiLCAiT3B0aW9uYWxWYWx1ZTEi
LCAiT3B0aW9uYWxWYWx1ZTIiLCAiT3B0aW9uYWxWYWx1ZTMiIH07CiAgICAgY29uc3QgdW5zaWdu
ZWQgc2hvcnQgQ09OU1RfVkFMVUVfMTQgPSAweDFhYmM7CiAgICAgW1JlZmxlY3Q9Q09OU1RfSU1Q
TF0gY29uc3QgdW5zaWduZWQgc2hvcnQgQ09OU1RfSkFWQVNDUklQVCA9IDE1OwogCisjaWYgZGVm
aW5lZChURVNUSU5HX0pTKQorICAgIFtDdXN0b21dIHN0YXRpYyByZWFkb25seSBhdHRyaWJ1dGUg
U3ltYm9sIGF0dHJpYnV0ZUNoYW5nZWQ7CisjZW5kaWYKKwogICAgIFtSZXBsYWNlYWJsZV0gcmVh
ZG9ubHkgYXR0cmlidXRlIGxvbmcgcmVwbGFjZWFibGVBdHRyaWJ1dGU7CiAKICAgICB2b2lkIHZh
cmlhZGljU3RyaW5nTWV0aG9kKERPTVN0cmluZyBoZWFkLCBET01TdHJpbmcuLi4gdGFpbCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudERlZmluaXRpb25zLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50RGVmaW5pdGlvbnMuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0NzBkNDMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudERlZmluaXRpb25zLmNwcApAQCAtMCww
ICsxLDEwNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDdXN0b21FbGVtZW50RGVmaW5pdGlvbnMu
aCIKKworI2luY2x1ZGUgIkN1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJEb2N1
bWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgi
CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworQ3VzdG9tRWxlbWVudERlZmluaXRpb25zOjpOYW1lU3RhdHVzIEN1c3RvbUVsZW1lbnRE
ZWZpbml0aW9uczo6Y2hlY2tOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSkKK3sKKyAg
ICBib29sIGNvbnRhaW5zSHlwaGVuID0gZmFsc2U7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHRhZ05hbWUubGVuZ3RoKCk7IGkrKykgeworICAgICAgICBpZiAoaXNBU0NJSVVwcGVyKHRh
Z05hbWVbaV0pKQorICAgICAgICAgICAgcmV0dXJuIE5hbWVTdGF0dXM6OkNvbnRhaW5zVXBwZXJD
YXNlOworICAgICAgICBlbHNlIGlmICh0YWdOYW1lW2ldID09ICctJykKKyAgICAgICAgICAgIGNv
bnRhaW5zSHlwaGVuID0gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgaWYgKCFjb250YWluc0h5cGhl
bikKKyAgICAgICAgcmV0dXJuIE5hbWVTdGF0dXM6Ok5vSHlwaGVuOworICAgIAorICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgYmUgdGFraW5nIHRoZSBhZHZhbnRhZ2Ugb2YgUXVhbGlmaWVkTmFtZXMg
aW4gU1ZHIGFuZCBNYXRoTUwuCisgICAgaWYgKHRhZ05hbWUgPT0gImFubm90YXRpb24teG1sIgor
ICAgICAgICB8fCB0YWdOYW1lID09ICJjb2xvci1wcm9maWxlIgorICAgICAgICB8fCB0YWdOYW1l
ID09ICJmb250LWZhY2UiCisgICAgICAgIHx8IHRhZ05hbWUgPT0gImZvbnQtZmFjZS1zcmMiCisg
ICAgICAgIHx8IHRhZ05hbWUgPT0gImZvbnQtZmFjZS11cmkiCisgICAgICAgIHx8IHRhZ05hbWUg
PT0gImZvbnQtZmFjZS1mb3JtYXQiCisgICAgICAgIHx8IHRhZ05hbWUgPT0gImZvbnQtZmFjZS1u
YW1lIgorICAgICAgICB8fCB0YWdOYW1lID09ICJtaXNzaW5nLWdseXBoIikKKyAgICAgICAgcmV0
dXJuIE5hbWVTdGF0dXM6OkNvbmZsaWN0c1dpdGhCdWlsdGluTmFtZXM7CisKKyAgICByZXR1cm4g
TmFtZVN0YXR1czo6VmFsaWQ7Cit9CisKK2Jvb2wgQ3VzdG9tRWxlbWVudERlZmluaXRpb25zOjpk
ZWZpbmVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIGZ1bGxOYW1lLCBSZWY8Q3VzdG9tRWxl
bWVudEludGVyZmFjZT4mJiBpbnRlcmZhY2UpCit7CisgICAgYXV0byogY29uc3RydWN0b3IgPSBp
bnRlcmZhY2UtPmNvbnN0cnVjdG9yKCk7CisKKyAgICBBU1NFUlQobV9uYW1lTWFwLmZpbmQoZnVs
bE5hbWUubG9jYWxOYW1lKCkpID09IG1fbmFtZU1hcC5lbmQoKSk7CisgICAgbV9uYW1lTWFwLmFk
ZChmdWxsTmFtZS5sb2NhbE5hbWUoKSwgQ3VzdG9tRWxlbWVudEluZm8oZnVsbE5hbWUsIFdURjo6
bW92ZShpbnRlcmZhY2UpKSk7CisKKyAgICBhdXRvIGl0ID0gbV9jb25zdHJ1Y3Rvck1hcC5hZGQo
Y29uc3RydWN0b3IsIGZ1bGxOYW1lKTsKKyAgICBpZiAoIWl0LmlzTmV3RW50cnkpCisgICAgICAg
IGl0Lml0ZXJhdG9yLT52YWx1ZSA9IG51bGxRTmFtZSgpOyAvLyBUaGUgaW50ZXJmYWNlIGhhcyBh
bHJlYWR5IGJlZW4gdXNlZCB0byBkZWZpbmUgYW5vdGhlciBlbGVtZW50LgorCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK1JlZlB0cjxFbGVtZW50PiBDdXN0b21FbGVtZW50RGVmaW5pdGlvbnM6OmNy
ZWF0ZUN1c3RvbUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKK3sKKyAgICBhdXRv
KiBpbnRlcmZhY2UgPSBmaW5kSW50ZXJmYWNlKG5hbWUpOworICAgIGlmICghaW50ZXJmYWNlKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gaW50ZXJmYWNlLT5jb25zdHJ1Y3Qo
bmFtZS5sb2NhbE5hbWUoKSk7Cit9CisKK0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UqIEN1c3RvbUVs
ZW1lbnREZWZpbml0aW9uczo6ZmluZEludGVyZmFjZShjb25zdCBRdWFsaWZpZWROYW1lJiBmdWxs
TmFtZSkgY29uc3QKK3sKKyAgICBhdXRvIGl0ID0gbV9uYW1lTWFwLmZpbmQoZnVsbE5hbWUubG9j
YWxOYW1lKCkpOworICAgIHJldHVybiBpdCA9PSBtX25hbWVNYXAuZW5kKCkgfHwgaXQtPnZhbHVl
LmZ1bGxOYW1lICE9IGZ1bGxOYW1lID8gbnVsbHB0ciA6IGl0LT52YWx1ZS5pbnRlcmZhY2UuZ2V0
KCk7Cit9CisKK0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UqIEN1c3RvbUVsZW1lbnREZWZpbml0aW9u
czo6ZmluZEludGVyZmFjZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0Cit7CisgICAg
YXV0byBpdCA9IG1fbmFtZU1hcC5maW5kKG5hbWUpOworICAgIHJldHVybiBpdCA9PSBtX25hbWVN
YXAuZW5kKCkgPyBudWxscHRyIDogaXQtPnZhbHVlLmludGVyZmFjZS5nZXQoKTsKK30KKworY29u
c3QgUXVhbGlmaWVkTmFtZSYgQ3VzdG9tRWxlbWVudERlZmluaXRpb25zOjpmaW5kTmFtZShjb25z
dCBKU0M6OkpTT2JqZWN0KiBjb25zdHJ1Y3RvcikgY29uc3QKK3sKKyAgICBhdXRvIGl0ID0gbV9j
b25zdHJ1Y3Rvck1hcC5maW5kKGNvbnN0cnVjdG9yKTsKKyAgICByZXR1cm4gaXQgPT0gbV9jb25z
dHJ1Y3Rvck1hcC5lbmQoKSA/IG51bGxRTmFtZSgpIDogaXQtPnZhbHVlOworfQorCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudERlZmluaXRpb25zLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudERlZmluaXRpb25zLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM4ZTJiZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50RGVmaW5pdGlvbnMuaApAQCAtMCwwICsxLDgyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
IkN1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCisj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CisKKyNpZm5kZWYgQ3Vz
dG9tRWxlbWVudERlZmluaXRpb25zX2gKKyNkZWZpbmUgQ3VzdG9tRWxlbWVudERlZmluaXRpb25z
X2gKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTT2JqZWN0OworCit9CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgQ3VzdG9tRWxlbWVudEludGVyZmFjZTsKK2NsYXNzIEVsZW1l
bnQ7CitjbGFzcyBRdWFsaWZpZWROYW1lOworCitjbGFzcyBDdXN0b21FbGVtZW50RGVmaW5pdGlv
bnMgeworcHVibGljOgorICAgIGJvb2wgZGVmaW5lRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiBmdWxsTmFtZSwgUmVmPEN1c3RvbUVsZW1lbnRJbnRlcmZhY2U+JiYgaW50ZXJmYWNlKTsKKwor
ICAgIEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UqIGZpbmRJbnRlcmZhY2UoY29uc3QgUXVhbGlmaWVk
TmFtZSYgZnVsbE5hbWUpIGNvbnN0OworICAgIEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UqIGZpbmRJ
bnRlcmZhY2UoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdDsKKyAgICBjb25zdCBRdWFs
aWZpZWROYW1lJiBmaW5kTmFtZShjb25zdCBKU0M6OkpTT2JqZWN0KikgY29uc3Q7CisKKyAgICBS
ZWZQdHI8RWxlbWVudD4gY3JlYXRlQ3VzdG9tRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJik7
CisKKyAgICBlbnVtIGNsYXNzIE5hbWVTdGF0dXMgeyBWYWxpZCwgQ29uZmxpY3RzV2l0aEJ1aWx0
aW5OYW1lcywgTm9IeXBoZW4sIENvbnRhaW5zVXBwZXJDYXNlIH07CisgICAgc3RhdGljIE5hbWVT
dGF0dXMgY2hlY2tOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSk7CisKK3ByaXZhdGU6
CisgICAgY2xhc3MgQ3VzdG9tRWxlbWVudEluZm8geworICAgIHB1YmxpYzoKKyAgICAgICAgUXVh
bGlmaWVkTmFtZSBmdWxsTmFtZTsKKyAgICAgICAgUmVmUHRyPEN1c3RvbUVsZW1lbnRJbnRlcmZh
Y2U+IGludGVyZmFjZTsKKworICAgICAgICBDdXN0b21FbGVtZW50SW5mbygpCisgICAgICAgICAg
ICA6IGZ1bGxOYW1lKG51bGxRTmFtZSgpKQorICAgICAgICB7IH0KKworICAgICAgICBDdXN0b21F
bGVtZW50SW5mbyhjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBSZWY8Q3VzdG9tRWxlbWVudElu
dGVyZmFjZT4mJiBpbnRlcmZhY2UpCisgICAgICAgICAgICA6IGZ1bGxOYW1lKG5hbWUpCisgICAg
ICAgICAgICAsIGludGVyZmFjZShXVEY6Om1vdmUoaW50ZXJmYWNlKSkKKyAgICAgICAgeyB9Cisg
ICAgfTsKKworICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBDdXN0b21FbGVtZW50SW5mbz4gbV9u
YW1lTWFwOworICAgIEhhc2hNYXA8Y29uc3QgSlNDOjpKU09iamVjdCosIFF1YWxpZmllZE5hbWU+
IG1fY29uc3RydWN0b3JNYXA7Cit9OworCit9CisKKyNlbmRpZiAvKiBDdXN0b21FbGVtZW50RGVm
aW5pdGlvbnNfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1l
bnRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50SW50ZXJmYWNl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTY3YWRkNQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50SW50ZXJmYWNlLmgKQEAg
LTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgQ3VzdG9tRWxlbWVudEludGVyZmFjZV9oCisjZGVmaW5lIEN1c3RvbUVsZW1l
bnRJbnRlcmZhY2VfaAorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBKU09iamVjdDsKKworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCitjbGFz
cyBDdXN0b21FbGVtZW50SW50ZXJmYWNlIDogcHVibGljIFJlZkNvdW50ZWQ8Q3VzdG9tRWxlbWVu
dEludGVyZmFjZT4geworcHVibGljOgorICAgIHZpcnR1YWwgfkN1c3RvbUVsZW1lbnRJbnRlcmZh
Y2UoKSB7IH0KKworICAgIHZpcnR1YWwgUmVmUHRyPEVsZW1lbnQ+IGNvbnN0cnVjdChjb25zdCBB
dG9taWNTdHJpbmcmIHRhZ05hbWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXR0cmlidXRlQ2hh
bmdlZChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZU5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFs
dWUpID0gMDsKKworICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEpTQzo6SlNPYmplY3QqIGNv
bnN0cnVjdG9yKCkgPSAwOworfTsKKworfQorCisjZW5kaWYgLy8gQ3VzdG9tRWxlbWVudEludGVy
ZmFjZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA4YzEwZDBlLi5kMjBhZDI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJDb21tZW50
LmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiQ29va2ll
SmFyLmgiCisjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudERlZmluaXRpb25zLmgiCiAjaW5jbHVkZSAi
RE9NSW1wbGVtZW50YXRpb24uaCIKICNpbmNsdWRlICJET01OYW1lZEZsb3dDb2xsZWN0aW9uLmgi
CiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCkBAIC05OCw2ICs5OSw3IEBACiAjaW5jbHVkZSAiSlNM
YXp5RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkpTTW9kdWxlTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiTGFuZ3VhZ2UuaCIKKyNpbmNsdWRlICJMaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmgiCiAjaW5j
bHVkZSAiTG9hZGVyU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
TWFpbkZyYW1lLmgiCkBAIC02MjEwLDYgKzYyMTIsMTMgQEAgdW5zaWduZWQgRG9jdW1lbnQ6OnRv
dWNoRXZlbnRIYW5kbGVyQ291bnQoKSBjb25zdAogI2VuZGlmCiB9CiAKK0N1c3RvbUVsZW1lbnRE
ZWZpbml0aW9ucyYgRG9jdW1lbnQ6OmVuc3VyZUN1c3RvbUVsZW1lbnREZWZpbml0aW9ucygpCit7
CisgICAgaWYgKCFtX2N1c3RvbUVsZW1lbnREZWZpbml0aW9ucykKKyAgICAgICAgbV9jdXN0b21F
bGVtZW50RGVmaW5pdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEN1c3RvbUVsZW1lbnREZWZpbml0
aW9ucz4oKTsKKyAgICByZXR1cm4gKm1fY3VzdG9tRWxlbWVudERlZmluaXRpb25zOworfQorCiBM
YXlvdXRSZWN0IERvY3VtZW50OjphYnNvbHV0ZUV2ZW50SGFuZGxlckJvdW5kcyhib29sJiBpbmNs
dWRlc0ZpeGVkUG9zaXRpb25FbGVtZW50cykKIHsKICAgICBpbmNsdWRlc0ZpeGVkUG9zaXRpb25F
bGVtZW50cyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA5NzZjZGExLi5jN2NkMjAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtODAsNiArODAsOCBAQCBjbGFzcyBDYWNoZWRTY3Jp
cHQ7CiBjbGFzcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0OwogY2xhc3MgQ2hhcmFjdGVyRGF0YTsK
IGNsYXNzIENvbW1lbnQ7CitjbGFzcyBDdXN0b21FbGVtZW50RGVmaW5pdGlvbnM7CitjbGFzcyBD
dXN0b21FbGVtZW50SW50ZXJmYWNlOwogY2xhc3MgRE9NSW1wbGVtZW50YXRpb247CiBjbGFzcyBE
T01OYW1lZEZsb3dDb2xsZWN0aW9uOwogY2xhc3MgRE9NU2VsZWN0aW9uOwpAQCAtMTIxMCw2ICsx
MjEyLDkgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCisgICAgQ3VzdG9tRWxlbWVudERlZmlu
aXRpb25zKiBjdXN0b21FbGVtZW50RGVmaW5pdGlvbnMoKSB7IHJldHVybiBtX2N1c3RvbUVsZW1l
bnREZWZpbml0aW9ucy5nZXQoKTsgfQorICAgIEN1c3RvbUVsZW1lbnREZWZpbml0aW9ucyYgZW5z
dXJlQ3VzdG9tRWxlbWVudERlZmluaXRpb25zKCk7CisKICAgICBjb25zdCBFdmVudFRhcmdldFNl
dCogd2hlZWxFdmVudFRhcmdldHMoKSBjb25zdCB7IHJldHVybiBtX3doZWVsRXZlbnRUYXJnZXRz
LmdldCgpOyB9CiAKICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxSZWdpb24sIGJvb2w+IFJlZ2lvbkZp
eGVkUGFpcjsKQEAgLTE3MzEsNiArMTczNiw4IEBAIHByaXZhdGU6CiAgICAgRG9jdW1lbnQqIG1f
dGVtcGxhdGVEb2N1bWVudEhvc3Q7IC8vIE1hbnVhbGx5IG1hbmFnZWQgd2Vha3JlZiAoYmFja3Bv
aW50ZXIgZnJvbSBtX3RlbXBsYXRlRG9jdW1lbnQpLgogI2VuZGlmCiAKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8Q3VzdG9tRWxlbWVudERlZmluaXRpb25zPiBtX2N1c3RvbUVsZW1lbnREZWZpbml0aW9u
czsKKwogICAgIFJlZlB0cjxDU1NGb250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9yOwogCiAjaWYg
RU5BQkxFKEZPTlRfTE9BRF9FVkVOVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAppbmRleCBlMjZl
YzA0Li40OGJmNzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKQEAgLTI4MSw2ICsyODEsMTEg
QEAKICAgICBbTmV3T2JqZWN0LCBDdXN0b20sIFJhaXNlc0V4Y2VwdGlvbl0gVG91Y2hMaXN0IGNy
ZWF0ZVRvdWNoTGlzdCgpOwogI2VuZGlmCiAKKyAgICAvLyBDdXN0b20gZWxlbWVudHMKKyNpZiBk
ZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdFX0pBVkFTQ1JJUFQKKyAgICBb
Q3VzdG9tLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgZGVmaW5lQ3VzdG9tRWxlbWVudChET01TdHJp
bmcgdGFnTmFtZSwgQ3VzdG9tRWxlbWVudEludGVyZmFjZSBlbGVtZW50SW50ZXJmYWNlKTsKKyNl
bmRpZgorCiAgICAgLy8gUGFnZSB2aXNpYmlsaXR5IEFQSS4KICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIHZpc2liaWxpdHlTdGF0ZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9v
bGVhbiBoaWRkZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggOThhNjEwZi4uNzRhYmY0OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMzUsNiArMzUsOCBAQAogI2luY2x1ZGUgIkNsaWVu
dFJlY3RMaXN0LmgiCiAjaW5jbHVkZSAiQ29tcG9zZWRUcmVlQW5jZXN0b3JJdGVyYXRvci5oIgog
I2luY2x1ZGUgIkNvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgiCisjaW5jbHVkZSAiQ3VzdG9tRWxl
bWVudERlZmluaXRpb25zLmgiCisjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oIgog
I2luY2x1ZGUgIkRPTVRva2VuTGlzdC5oIgogI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKICNpbmNs
dWRlICJEb2N1bWVudFNoYXJlZE9iamVjdFBvb2wuaCIKQEAgLTU3LDYgKzU5LDcgQEAKICNpbmNs
dWRlICJIVE1MVGVtcGxhdGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSWRUYXJnZXRPYnNlcnZlclJl
Z2lzdHJ5LmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgorI2luY2x1ZGUgIkxpZmVjeWNs
ZUNhbGxiYWNrUXVldWUuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJNdXRh
dGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5oIgogI2luY2x1ZGUgIk11dGF0aW9uUmVjb3JkLmgi
CkBAIC04Niw2ICs4OSw3IEBACiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKICNpbmNsdWRlICJodG1s
ZWRpdGluZy5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvUHJpdmF0
ZU5hbWUuaD4KICNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJl
bnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMTI1MCw2ICsxMjU0
LDEzIEBAIHZvaWQgRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sCiAKICAgICBkb2N1bWVudCgpLmluY0RPTVRy
ZWVWZXJzaW9uKCk7CiAKKyAgICBpZiAoVU5MSUtFTFkoaXNDdXN0b21FbGVtZW50KCkpKSB7Cisg
ICAgICAgIGF1dG8qIGRlZmluaXRpb25zID0gZG9jdW1lbnQoKS5jdXN0b21FbGVtZW50RGVmaW5p
dGlvbnMoKTsKKyAgICAgICAgYXV0byogaW50ZXJmYWNlID0gZGVmaW5pdGlvbnMtPmZpbmRJbnRl
cmZhY2UodGFnUU5hbWUoKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGludGVyZmFjZSk7Cisg
ICAgICAgIExpZmVjeWNsZUNhbGxiYWNrUXVldWU6OmVucXVldWVBdHRyaWJ1dGVDaGFuZ2VkKCp0
aGlzLCAqaW50ZXJmYWNlLCBuYW1lLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOworICAgIH0KKwogICAg
IGlmICh2YWx1ZUlzU2FtZUFzQmVmb3JlKQogICAgICAgICByZXR1cm47CiAKQEAgLTE0MDUsNiAr
MTQxNiwxMyBAQCBSZWY8UmVuZGVyU3R5bGU+IEVsZW1lbnQ6OnJlc29sdmVTdHlsZShSZW5kZXJT
dHlsZSogcGFyZW50U3R5bGUpCiAgICAgcmV0dXJuIHN0eWxlUmVzb2x2ZXIoKS5zdHlsZUZvckVs
ZW1lbnQodGhpcywgcGFyZW50U3R5bGUpOwogfQogCitjb25zdCBKU0M6OlByaXZhdGVOYW1lJiBF
bGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2tOYW1lKCkKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgSlNDOjpQcml2YXRlTmFtZT4gbmFtZSA9IEpTQzo6UHJpdmF0ZU5h
bWUoCisgICAgICAgIEpTQzo6UHJpdmF0ZU5hbWU6OkRlc2NyaXB0aW9uLCBBU0NJSUxpdGVyYWwo
IlN5bWJvbEVsZW1lbnRBdHRyaWJ1dGVDaGFuZ2VkIikpOworICAgIHJldHVybiBuYW1lLmdldCgp
OworfQorCiAvLyBSZXR1cm5zIHRydWUgaXMgdGhlIGdpdmVuIGF0dHJpYnV0ZSBpcyBhbiBldmVu
dCBoYW5kbGVyLgogLy8gV2UgY29uc2lkZXIgYW4gZXZlbnQgaGFuZGxlciBhbnkgYXR0cmlidXRl
IHRoYXQgYmVnaW5zIHdpdGggIm9uIi4KIC8vIEl0IGlzIGEgc2ltcGxlIHNvbHV0aW9uIHRoYXQg
aGFzIHRoZSBhZHZhbnRhZ2Ugb2Ygbm90IHJlcXVpcmluZyBhbnkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmlu
ZGV4IDlhNzI0MDcuLjhlOTkyMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMzQsNiArMzQsMTIg
QEAKICNpbmNsdWRlICJTaW11bGF0ZWRDbGlja09wdGlvbnMuaCIKICNpbmNsdWRlICJTdHlsZVJl
c29sdmVUcmVlLmgiCiAKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBQcml2YXRlTmFtZTsKKwor
fQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENsaWVudFJlY3Q7CkBAIC00OTQsNiAr
NTAwLDggQEAgcHVibGljOgogICAgIFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIoKTsKICAg
ICBSZWY8UmVuZGVyU3R5bGU+IHJlc29sdmVTdHlsZShSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUp
OwogCisgICAgc3RhdGljIGNvbnN0IEpTQzo6UHJpdmF0ZU5hbWUmIGF0dHJpYnV0ZUNoYW5nZWRD
YWxsYmFja05hbWUoKTsKKwogcHJvdGVjdGVkOgogICAgIEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50JiwgQ29uc3RydWN0aW9uVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Lmlk
bAppbmRleCBmMDhkYzA0Li5lZjNjOWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCkBAIC0yOCwx
MiArMjgsMTIgQEAKICAgICBbVHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcz1OdWxsXSByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHRhZ05hbWU7CiAKICAgICBbVHJlYXRSZXR1cm5lZE51bGxT
dHJpbmdBcz1OdWxsXSBET01TdHJpbmcgZ2V0QXR0cmlidXRlKFtEZWZhdWx0PVVuZGVmaW5lZF0g
b3B0aW9uYWwgRE9NU3RyaW5nIG5hbWUpOwotICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRl
cnMsIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCBzZXRBdHRyaWJ1dGUoW0RlZmF1bHQ9VW5kZWZpbmVk
XSBvcHRpb25hbCBET01TdHJpbmcgbmFtZSwKKyAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0
ZXJzLCBSYWlzZXNFeGNlcHRpb24sIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSB2b2lkIHNldEF0dHJp
YnV0ZShbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyBuYW1lLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9u
YWwgRE9NU3RyaW5nIHZhbHVlKTsKLSAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZShbRGVmYXVsdD1V
bmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyBuYW1lKTsKKyAgICBbTmVlZHNQcm9jZXNzaW5n
U3RhY2tdIHZvaWQgcmVtb3ZlQXR0cmlidXRlKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwg
RE9NU3RyaW5nIG5hbWUpOwogICAgIEF0dHIgZ2V0QXR0cmlidXRlTm9kZShbRGVmYXVsdD1VbmRl
ZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyBuYW1lKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSBB
dHRyIHNldEF0dHJpYnV0ZU5vZGUoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBBdHRyIG5l
d0F0dHIpOwotICAgIFtSYWlzZXNFeGNlcHRpb25dIEF0dHIgcmVtb3ZlQXR0cmlidXRlTm9kZShb
RGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIEF0dHIgb2xkQXR0cik7CisgICAgW1JhaXNlc0V4
Y2VwdGlvbiwgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIEF0dHIgc2V0QXR0cmlidXRlTm9kZShbRGVm
YXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIEF0dHIgbmV3QXR0cik7CisgICAgW1JhaXNlc0V4Y2Vw
dGlvbiwgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIEF0dHIgcmVtb3ZlQXR0cmlidXRlTm9kZShbRGVm
YXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIEF0dHIgb2xkQXR0cik7CiAKICNpZiBkZWZpbmVkKExB
TkdVQUdFX09CSkVDVElWRV9DKSAmJiBMQU5HVUFHRV9PQkpFQ1RJVkVfQwogICAgIFtJbXBsZW1l
bnRlZEFzPWdldEVsZW1lbnRzQnlUYWdOYW1lRm9yT2JqQ10gTm9kZUxpc3QgZ2V0RWxlbWVudHNC
eVRhZ05hbWUoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJpbmcgbmFtZSk7CkBA
IC0xNzMsNiArMTczLDggQEAKICAgICBbQ29uZGl0aW9uYWw9U0hBRE9XX0RPTSwgUmVmbGVjdF0g
YXR0cmlidXRlIERPTVN0cmluZyBzbG90OwogI2VuZGlmCiAKKyAgICBbSW1wbGVtZW50ZWRBcz1h
dHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2tOYW1lXSBzdGF0aWMgcmVhZG9ubHkgYXR0cmlidXRlIFN5
bWJvbCBhdHRyaWJ1dGVDaGFuZ2VkOworCiAgICAgLy8gRXZlbnQgSGFuZGxlcnMKIAogICAgIC8v
IFVuaXF1ZSB0byBFbGVtZW50IGFuZCBEb2N1bWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0xpZmVjeWNsZUNhbGxiYWNrUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0xp
ZmVjeWNsZUNhbGxiYWNrUXVldWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjIyNGMwNGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTGlmZWN5
Y2xlQ2FsbGJhY2tRdWV1ZS5jcHAKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJMaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmgiCisKKyNpbmNsdWRlICJDdXN0b21FbGVtZW50SW50
ZXJmYWNlLmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5o
IgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBM
aWZlY3ljbGVRdWV1ZUl0ZW0geworcHVibGljOgorICAgIExpZmVjeWNsZVF1ZXVlSXRlbShFbGVt
ZW50JiBlbGVtZW50LCBDdXN0b21FbGVtZW50SW50ZXJmYWNlJiBpbnRlcmZhY2UsCisgICAgICAg
IGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZh
bHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQorICAgICAgICA6IG1fdHlwZShUeXBl
OjpBdHRyaWJ1dGVDaGFuZ2VkKQorICAgICAgICAsIG1fZWxlbWVudChlbGVtZW50KQorICAgICAg
ICAsIG1faW50ZXJmYWNlKGludGVyZmFjZSkKKyAgICAgICAgLCBtX2F0dHJOYW1lKGF0dHJOYW1l
KQorICAgICAgICAsIG1fb2xkVmFsdWUob2xkVmFsdWUpCisgICAgICAgICwgbV9uZXdWYWx1ZShu
ZXdWYWx1ZSkKKyAgICB7IH0KKworICAgIHZvaWQgaW52b2tlKCkKKyAgICB7CisgICAgICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgcHJvYmFibHkgcGFzcyB0aGUgZnVsbCBxdWFsaWZpZWQgYXR0cmli
dXRlIG5hbWUuCisgICAgICAgIG1faW50ZXJmYWNlLT5hdHRyaWJ1dGVDaGFuZ2VkKG1fZWxlbWVu
dC5nZXQoKSwgbV9hdHRyTmFtZS5sb2NhbE5hbWUoKSwgbV9vbGRWYWx1ZSwgbV9uZXdWYWx1ZSk7
CisgICAgfQorCisgICAgZW51bSBjbGFzcyBUeXBlIHsKKyAgICAgICAgSW52YWxpZCwKKyAgICAg
ICAgSW5zZXJ0ZWQsCisgICAgICAgIFJlbW92ZWQsCisgICAgICAgIENoaWxkcmVuQ2hhbmdlZCwK
KyAgICAgICAgQXR0cmlidXRlQ2hhbmdlZCwKKyAgICB9OworCitwcml2YXRlOgorICAgIC8vIEZJ
WE1FOiBXZSBzaG91ZGxuJ3QgaGF2ZSB0byBkdXBsaWNhdGUgRWxlbWVudCwgSW50ZXJmYWNlLCBh
bmQgYSBidW5jaCBvZiBBdG9taWNTdHJpbmcgaW4gZWFjaCBxdWV1ZSBpdGVtLgorICAgIFR5cGUg
bV90eXBlIHsgVHlwZTo6SW52YWxpZCB9OworICAgIFJlZjxFbGVtZW50PiBtX2VsZW1lbnQ7Cisg
ICAgUmVmPEN1c3RvbUVsZW1lbnRJbnRlcmZhY2U+IG1faW50ZXJmYWNlOworICAgIFF1YWxpZmll
ZE5hbWUgbV9hdHRyTmFtZTsKKyAgICBBdG9taWNTdHJpbmcgbV9vbGRWYWx1ZTsKKyAgICBBdG9t
aWNTdHJpbmcgbV9uZXdWYWx1ZTsKK307CisKK0xpZmVjeWNsZUNhbGxiYWNrUXVldWU6OkxpZmVj
eWNsZUNhbGxiYWNrUXVldWUoKQoreworfQorCitMaWZlY3ljbGVDYWxsYmFja1F1ZXVlOjp+TGlm
ZWN5Y2xlQ2FsbGJhY2tRdWV1ZSgpCit7CisgICAgQVNTRVJUKG1faXRlbXMuaXNFbXB0eSgpKTsK
K30KKwordm9pZCBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlOjplbnF1ZXVlQXR0cmlidXRlQ2hhbmdl
ZChFbGVtZW50JiBlbGVtZW50LCBDdXN0b21FbGVtZW50SW50ZXJmYWNlJiBpbnRlcmZhY2UsCisg
ICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKK3sKKyAgICBpZiAoYXV0byogcXVldWUg
PSBDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOjplbnN1cmVDdXJyZW50UXVl
dWUoKSkKKyAgICAgICAgcXVldWUtPm1faXRlbXMuYXBwZW5kKExpZmVjeWNsZVF1ZXVlSXRlbShl
bGVtZW50LCBpbnRlcmZhY2UsIG5hbWUsIG9sZFZhbHVlLCBuZXdWYWx1ZSkpOworfQorCit2b2lk
IExpZmVjeWNsZUNhbGxiYWNrUXVldWU6Omludm9rZUFsbCgpCit7CisgICAgVmVjdG9yPExpZmVj
eWNsZVF1ZXVlSXRlbT4gaXRlbXM7CisgICAgaXRlbXMuc3dhcChtX2l0ZW1zKTsKKyAgICBmb3Ig
KGF1dG8mIGl0ZW06IGl0ZW1zKQorICAgICAgICBpdGVtLmludm9rZSgpOworfQorCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0xpZmVjeWNsZUNhbGxiYWNrUXVldWUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5kNzMwN2M3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0xpZmVjeWNsZUNhbGxiYWNrUXVldWUuaApAQCAtMCwwICsxLDU4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBMaWZlY3lj
bGVDYWxsYmFja1F1ZXVlX2gKKyNkZWZpbmUgTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZV9oCisKKyNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDdXN0b21FbGVtZW50SW50ZXJmYWNl
OworY2xhc3MgRWxlbWVudDsKK2NsYXNzIFF1YWxpZmllZE5hbWU7CitjbGFzcyBMaWZlY3ljbGVR
dWV1ZUl0ZW07CisKK2NsYXNzIExpZmVjeWNsZUNhbGxiYWNrUXVldWUgeworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKExpZmVjeWNsZUNhbGxiYWNrUXVldWUpOworcHVibGljOgorICAgIExpZmVj
eWNsZUNhbGxiYWNrUXVldWUoKTsKKyAgICB+TGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZSgpOworCisg
ICAgc3RhdGljIHZvaWQgZW5xdWV1ZUF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudCYsIEN1c3RvbUVs
ZW1lbnRJbnRlcmZhY2UmLAorICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRv
bWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSk7CisKKyAg
ICB2b2lkIGludm9rZUFsbCgpOworCitwcml2YXRlOgorICAgIFZlY3RvcjxMaWZlY3ljbGVRdWV1
ZUl0ZW0+IG1faXRlbXM7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggZWZmMDg2
YS4uODQwNmEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC0yNDEsNiArMjQxLDggQEAgcHVibGljOgogICAg
IGJvb2wgaXNIVE1MRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNIVE1MRmxhZyk7
IH0KICAgICBib29sIGlzU1ZHRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNTVkdG
bGFnKTsgfQogICAgIGJvb2wgaXNNYXRoTUxFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZ2V0Rmxh
ZyhJc01hdGhNTEZsYWcpOyB9CisgICAgYm9vbCBpc0N1c3RvbUVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiBnZXRGbGFnKElzQ3VzdG9tRWxlbWVudCk7IH0KKyAgICB2b2lkIHNldEN1c3RvbUVsZW1l
bnQoKSB7IHNldEZsYWcoSXNDdXN0b21FbGVtZW50KTsgfQogCiAgICAgYm9vbCBpc1BzZXVkb0Vs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBwc2V1ZG9JZCgpICE9IE5PUFNFVURPOyB9CiAgICAgYm9v
bCBpc0JlZm9yZVBzZXVkb0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBwc2V1ZG9JZCgpID09IEJF
Rk9SRTsgfQpAQCAtNTk5LDYgKzYwMSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgSXNTdHlsZWRF
bGVtZW50RmxhZyA9IDEgPDwgMywKICAgICAgICAgSXNIVE1MRmxhZyA9IDEgPDwgNCwKICAgICAg
ICAgSXNTVkdGbGFnID0gMSA8PCA1LAorICAgICAgICBJc0N1c3RvbUVsZW1lbnQgPSAxIDw8IDYs
CiAgICAgICAgIENoaWxkTmVlZHNTdHlsZVJlY2FsY0ZsYWcgPSAxIDw8IDcsCiAgICAgICAgIElu
RG9jdW1lbnRGbGFnID0gMSA8PCA4LAogICAgICAgICBJc0xpbmtGbGFnID0gMSA8PCA5LApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vbWFrZV9uYW1lcy5wbAppbmRleCBkNTJkM2M5Li4xY2U5YjkwIDEwMDc1NQotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
bWFrZV9uYW1lcy5wbApAQCAtOTYyLDYgKzk2Miw3IEBAIEVORAogCiAgICAgcHJpbnQgRiA8PEVO
RAogCisjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudERlZmluaXRpb25zLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAi
U2V0dGluZ3MuaCIKQEAgLTEwMTgsNiArMTAxOSwxMyBAQCBFTkQKICAgICB9CiAKICAgICBwcmlu
dCBGIDw8RU5ECisgICAgaWYgKGF1dG8qIGRlZmluaXRpb25zID0gZG9jdW1lbnQuY3VzdG9tRWxl
bWVudERlZmluaXRpb25zKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gZWxlbWVudCA9IGRlZmluaXRp
b25zLT5jcmVhdGVDdXN0b21FbGVtZW50KG5hbWUpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChpczxXZWJDb3JlOjokcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4oKmVsZW1lbnQp
KTsKKyAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxXZWJDb3JlOjokcGFyYW1ldGVyc3tuYW1l
c3BhY2V9RWxlbWVudD4oKmVsZW1lbnQpOworICAgICAgICB9CisgICAgfQorCiAgICAgcmV0dXJu
ICRwYXJhbWV0ZXJze2ZhbGxiYWNrSW50ZXJmYWNlTmFtZX06OmNyZWF0ZShuYW1lLCBkb2N1bWVu
dCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRs
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwKaW5kZXggOGVlZjZmZi4uOGE5
MjQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwKQEAgLTE5LDYgKzE5LDcgQEAK
ICAqLwogCiBbCisgICAgQ3VzdG9tQ29uc3RydWN0b3IoRE9NU3RyaW5nIGxvY2FsTmFtZSksCiAg
ICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAogICAgIEpTQ3VzdG9tUHVzaEV2ZW50SGFuZGxl
clNjb3BlLAogXSBpbnRlcmZhY2UgSFRNTEVsZW1lbnQgOiBFbGVtZW50IHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265736</attachid>
            <date>2015-11-17 23:49:39 -0800</date>
            <delta_ts>2015-11-17 23:49:39 -0800</delta_ts>
            <desc>Made Element.attributeChanged robust</desc>
            <filename>wip150225e.patch</filename>
            <type>text/plain</type>
            <size>242897</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5jcHAKaW5k
ZXggNjAxMGU2My4uOGFhMTY4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29uc3RydWN0RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29uc3RydWN0RGF0YS5jcHAKQEAgLTQwLDQgKzQwLDE2IEBAIEpTT2JqZWN0KiBjb25zdHJ1
Y3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGNvbnN0cnVjdG9yT2JqZWN0LCBDb25zdHJ1Y3RU
eXBlIGNvCiAgICAgcmV0dXJuIGV4ZWMtPmludGVycHJldGVyKCktPmV4ZWN1dGVDb25zdHJ1Y3Qo
ZXhlYywgYXNPYmplY3QoY29uc3RydWN0b3JPYmplY3QpLCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1
Y3REYXRhLCBhcmdzLCBuZXdUYXJnZXQpOwogfQogCitKU09iamVjdCogY29uc3RydWN0KEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBjb25zdHJ1Y3Rvck9iamVjdCwgQ29uc3RydWN0VHlwZSBjb25z
dHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhLCBjb25zdCBBcmdM
aXN0JiBhcmdzLCBOYWtlZFB0cjxFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKK3sKKyAg
ICBKU09iamVjdCogcmVzdWx0ID0gZXhlYy0+aW50ZXJwcmV0ZXIoKS0+ZXhlY3V0ZUNvbnN0cnVj
dChleGVjLCBhc09iamVjdChjb25zdHJ1Y3Rvck9iamVjdCksIGNvbnN0cnVjdFR5cGUsIGNvbnN0
cnVjdERhdGEsIGFyZ3MsIGNvbnN0cnVjdG9yT2JqZWN0KTsKKyAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpIHsKKyAgICAgICAgcmV0dXJuZWRFeGNlcHRpb24gPSBleGVjLT5leGNlcHRpb24o
KTsKKyAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db25zdHJ1Y3REYXRhLmgKaW5kZXggMTdlMWE1ZC4uZTg2YTI4OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaApAQCAtNTcsNiArNTcsNyBA
QCB1bmlvbiBDb25zdHJ1Y3REYXRhIHsKIH07CiAKIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0
KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSBjb25zdHJ1Y3RvciwgQ29uc3RydWN0VHlw
ZSwgY29uc3QgQ29uc3RydWN0RGF0YSYsIGNvbnN0IEFyZ0xpc3QmLCBKU1ZhbHVlIG5ld1Rhcmdl
dCk7CitKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY29uc3RydWN0KEV4ZWNTdGF0ZSosIEpT
VmFsdWUgY29uc3RydWN0b3IsIENvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmLCBj
b25zdCBBcmdMaXN0JiwgTmFrZWRQdHI8RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwog
CiBBTFdBWVNfSU5MSU5FIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIGNvbnN0cnVjdG9yT2JqZWN0LCBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUsIGNvbnN0
IENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5oCmluZGV4IDgzZjVkZTIuLmRkYjY4Y2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5oCkBAIC04Niw3ICs4Niw3IEBA
IHByb3RlY3RlZDoKIAogICAgIFN5bWJvbChWTSYpOwogICAgIFN5bWJvbChWTSYsIGNvbnN0IFN0
cmluZyYpOwotICAgIFN5bWJvbChWTSYsIFN5bWJvbEltcGwmIHVpZCk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgU3ltYm9sKFZNJiwgU3ltYm9sSW1wbCYgdWlkKTsKIAogICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mIHZtKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaWRsCmluZGV4IDRiMTY0YTcu
LmQ3OTgzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9s
cy9NZWRpYUNvbnRyb2xzSG9zdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmlkbApAQCAtNDIsNyArNDIsNyBAQCBlbnVtIERl
dmljZVR5cGUgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBUZXh0VHJhY2sgY2FwdGlvbk1lbnVB
dXRvbWF0aWNJdGVtOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgY2FwdGlvbkRp
c3BsYXlNb2RlOwogICAgIHZvaWQgc2V0U2VsZWN0ZWRUZXh0VHJhY2soVGV4dFRyYWNrIHRyYWNr
KTsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTEVsZW1lbnQgdGV4dFRyYWNrQ29udGFpbmVy
OworICAgIFtOZWVkc1Byb2Nlc3NpbmdTdGFja0luR2V0dGVyXSByZWFkb25seSBhdHRyaWJ1dGUg
SFRNTEVsZW1lbnQgdGV4dFRyYWNrQ29udGFpbmVyOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBi
b29sZWFuIGFsbG93c0lubGluZU1lZGlhUGxheWJhY2s7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGJvb2xlYW4gc3VwcG9ydHNGdWxsc2NyZWVuOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29s
ZWFuIHVzZXJHZXN0dXJlUmVxdWlyZWQ7CkBAIC01Miw3ICs1Miw3IEBAIGVudW0gRGV2aWNlVHlw
ZSB7CiAKICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBjb250cm9sc0RlcGVuZE9uUGFnZVNjYWxlRmFj
dG9yOwogICAgIAotICAgIHZvaWQgdXBkYXRlVGV4dFRyYWNrQ29udGFpbmVyKCk7CisgICAgW05l
ZWRzUHJvY2Vzc2luZ1N0YWNrXSB2b2lkIHVwZGF0ZVRleHRUcmFja0NvbnRhaW5lcigpOwogICAg
IHZvaWQgZW50ZXJlZEZ1bGxzY3JlZW4oKTsKICAgICB2b2lkIGV4aXRlZEZ1bGxzY3JlZW4oKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDcwNmYyNjcuLjNjMDIyZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM5MjMsNiArMzkyMyw5IEBACiAJCTlBNTI4
RTg0MTdEN0Y1MkYwMEFBOTUxOCAvKiBGbG9hdGluZ09iamVjdHMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlBNTI4RTgyMTdEN0Y1MkYwMEFBOTUxOCAv
KiBGbG9hdGluZ09iamVjdHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5QUIxRjM4MDE4RTI0ODlBMDA1MzQ3NDMgLyogQ1NTVG9MZW5ndGhDb252
ZXJzaW9uRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOUFCMUYzN0UxOEUyNDg5QTAwNTM0NzQzIC8qIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEu
aCAqLzsgfTsKIAkJOUFCMUYzODExOEUyNDg5QTAwNTM0NzQzIC8qIENTU1RvTGVuZ3RoQ29udmVy
c2lvbkRhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOUFCMUYzN0YxOEUyNDg5QTAwNTM0NzQzIC8qIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEu
Y3BwICovOyB9OworCQk5QjE0NzE1MzFCRDAxQjg5MDAzNkRFMDkgLyogQ3VzdG9tRWxlbWVudElu
dGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OUIxNDcxNTExQkQwMUI4OTAwMzZERTA5IC8qIEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCAqLzsg
c2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OworCQk5QjE0NzE1NjFCRDAxRTU1MDAz
NkRFMDkgLyogSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMTQ3MTU0MUJEMDFFNTUwMDM2REUwOSAvKiBK
U0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0g
KCk7IH07IH07CisJCTlCMTQ3MTU3MUJEMDFFNTUwMDM2REUwOSAvKiBKU0N1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDlCMTQ3MTU1MUJEMDFFNTUwMDM2REUwOSAvKiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OwogCQk5QjFBQjA3QzE2NDhDN0M0
MDA1MUYzRjIgLyogSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjFBQjA3QjE2NDhDN0M0
MDA1MUYzRjIgLyogSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAgKi87IH07
CiAJCTlCMjRERThFMTUxOTRCOTUwMEM1OUMyNyAvKiBIVE1MQkRJRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIyNERFOEMxNTE5NEI5NTAw
QzU5QzI3IC8qIEhUTUxCRElFbGVtZW50LmggKi87IH07CiAJCTlCMkQ4QTc5MTQ5OTdDQ0YwMEVD
RUYzRSAvKiBVbmRvU3RlcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOUIyRDhBNzgxNDk5N0NDRjAwRUNFRjNFIC8qIFVuZG9TdGVwLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM5NDAsNyArMzk0Mywx
MSBAQAogCQk5QjY5RDNCODFCOTkxMDA3MDBFMzUxMkIgLyogSlNIVE1MU2xvdEVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI2OUQzQjYx
Qjk5MTAwNzAwRTM1MTJCIC8qIEpTSFRNTFNsb3RFbGVtZW50LmNwcCAqLzsgfTsKIAkJOUI2OUQz
QjkxQjk5MTAwNzAwRTM1MTJCIC8qIEpTSFRNTFNsb3RFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjY5RDNCNzFCOTkxMDA3MDBFMzUxMkIg
LyogSlNIVE1MU2xvdEVsZW1lbnQuaCAqLzsgfTsKIAkJOUI2QzQxNTMxMzQ0OTQ5MDAwMDg1QjYy
IC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDlCNkM0MTUyMTM0NDk0OTAwMDA4NUI2MiAvKiBTdHJpbmdXaXRoRGly
ZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJOUI5M0EwRTcxQkUzMTBERTAwMjMxQThFIC8qIEN1c3RvbUVsZW1lbnREZWZpbml0aW9ucy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjkzQTBF
NTFCRTMxMERFMDAyMzFBOEUgLyogQ3VzdG9tRWxlbWVudERlZmluaXRpb25zLmNwcCAqLzsgc2V0
dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OworCQk5QjkzQTBFODFCRTMxMERFMDAyMzFB
OEUgLyogQ3VzdG9tRWxlbWVudERlZmluaXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjkzQTBFNjFCRTMxMERFMDAyMzFBOEUgLyogQ3VzdG9t
RWxlbWVudERlZmluaXRpb25zLmggKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsg
fTsKIAkJOUJBMjczRjQxNzIyMDZCQjAwOTdDRTQ3IC8qIExvZ2ljYWxTZWxlY3Rpb25PZmZzZXRD
YWNoZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlC
QTI3M0YzMTcyMjA2QkIwMDk3Q0U0NyAvKiBMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzLmgg
Ki87IH07CisJCTlCQTQ2NkI3MUJEQzczNEEwMEJCNzk5MCAvKiBMaWZlY3ljbGVDYWxsYmFja1F1
ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlC
QTQ2NkI1MUJEQzczNEEwMEJCNzk5MCAvKiBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmNwcCAqLzsg
c2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OworCQk5QkE0NjZCODFCREM3MzRBMDBC
Qjc5OTAgLyogTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJBNDY2QjYxQkRDNzM0QTAwQkI3OTkwIC8qIExpZmVj
eWNsZUNhbGxiYWNrUXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5QkFCNkM2QzEyNTUwNjMxMDAxNjI2RDQgLyogRWRpdGluZ1N0eWxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkFCNkM2QTEy
NTUwNjMxMDAxNjI2RDQgLyogRWRpdGluZ1N0eWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOUJBQjZDNkQxMjU1MDYzMTAwMTYyNkQ0IC8qIEVk
aXRpbmdTdHlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5QkFCNkM2QjEyNTUwNjMxMDAxNjI2RDQgLyogRWRpdGluZ1N0eWxlLmNwcCAqLzsgfTsK
IAkJOUJBRjNCMjQxMkMxQTM5ODAwMDE0QkYxIC8qIFdyaXRpbmdEaXJlY3Rpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCQUYzQjIzMTJDMUEzOTgw
MDAxNEJGMSAvKiBXcml0aW5nRGlyZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExNDQ5LDYgKzExNDU2LDkgQEAKIAkJOUIwM0Q4MDYx
QkIzMTEwRDAwQjc2NEQ5IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWls
dGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjAzRDgwNjFCQjMxMTBEMDBC
NzY0RTggLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTlCMDNEODA2MUJCMzExMEQwMEI3NjRFOSAvKiBXcml0YWJsZVN0cmVhbUludGVy
bmFsc0J1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdyaXRhYmxl
U3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OUIxNDcxNTExQkQwMUI4OTAwMzZERTA5IC8qIEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QjE0NzE1NDFCRDAxRTU1MDAzNkRFMDkgLyog
SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTlCMTQ3MTU1MUJEMDFFNTUwMDM2REUwOSAvKiBKU0N1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDdXN0b21FbGVt
ZW50SW50ZXJmYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMTlCNjdFMUI5
NjRFNTIwMDM0ODc0NSAvKiBTaGFkb3dSb290LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBT
aGFkb3dSb290LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIxQUIwNzkxNjQ4
QzY5RDAwNTFGM0YyIC8qIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTlCMUFCMDdCMTY0OEM3QzQwMDUxRjNGMiAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTE0NzIsNyArMTE0ODIsMTEgQEAKIAkJOUI2QkM5NjAxQjk3NTk2NjAwNUFFMUYwIC8q
IEpTU2hhZG93Um9vdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1NoYWRvd1Jvb3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjZCQzk2MTFC
OTc1OTY2MDA1QUUxRjAgLyogSlNTaGFkb3dSb290LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTU2hhZG93Um9vdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
QjZDNDE1MjEzNDQ5NDkwMDAwODVCNjIgLyogU3RyaW5nV2l0aERpcmVjdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdXaXRoRGlyZWN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCOTNBMEU1MUJFMzEwREUwMDIzMUE4RSAvKiBDdXN0b21F
bGVtZW50RGVmaW5pdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ3VzdG9tRWxlbWVudERlZmluaXRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOUI5M0EwRTYxQkUzMTBERTAwMjMxQThFIC8qIEN1c3RvbUVsZW1lbnREZWZpbml0aW9u
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21FbGVtZW50RGVmaW5p
dGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJBMjczRjMxNzIyMDZCQjAw
OTdDRTQ3IC8qIExvZ2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNoZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTG9naWNhbFNlbGVjdGlvbk9mZnNldENhY2hlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5QkE0NjZCNTFCREM3MzRBMDBCQjc5OTAgLyogTGlmZWN5
Y2xlQ2FsbGJhY2tRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOUJBNDY2QjYxQkRDNzM0QTAwQkI3OTkwIC8qIExpZmVjeWNsZUNhbGxiYWNrUXVldWUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkFCNkM2QTEyNTUwNjMxMDAxNjI2RDQg
LyogRWRpdGluZ1N0eWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRp
bmdTdHlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkFCNkM2QjEyNTUwNjMx
MDAxNjI2RDQgLyogRWRpdGluZ1N0eWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEVkaXRpbmdTdHlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTlCQUYzQjIzMTJDMUEzOTgwMDAxNEJGMSAvKiBXcml0aW5nRGlyZWN0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdyaXRpbmdEaXJlY3Rpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMzUwLDYgKzIyMzY0LDEwIEBACiAJCQkJOTNCNzBENEUwOUVC
MEM3QzAwOUQ4NDY4IC8qIEpTRXZlbnRMaXN0ZW5lci5oICovLAogCQkJCTkzNUY0NTQwMEY3QzNC
NUYwMEQ3QzFGQiAvKiBKU0xhenlFdmVudExpc3RlbmVyLmNwcCAqLywKIAkJCQk5MzVGNDU0MTBG
N0MzQjVGMDBEN0MxRkIgLyogSlNMYXp5RXZlbnRMaXN0ZW5lci5oICovLAorCQkJCUM2RjQyMEEw
MTZCNzE2NEUwMDUyQTlGMiAvKiBKU011dGF0aW9uQ2FsbGJhY2suY3BwICovLAorCQkJCUM2RjQy
MEExMTZCNzE2NEUwMDUyQTlGMiAvKiBKU011dGF0aW9uQ2FsbGJhY2suaCAqLywKKwkJCQk5QjE0
NzE1NDFCRDAxRTU1MDAzNkRFMDkgLyogSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcCAqLywK
KwkJCQk5QjE0NzE1NTFCRDAxRTU1MDAzNkRFMDkgLyogSlNDdXN0b21FbGVtZW50SW50ZXJmYWNl
LmggKi8sCiAJCQkpOwogCQkJbmFtZSA9ICJDYWxsYmFjayBPYmplY3RzIjsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CkBAIC0yMzg1OCw2ICsyMzg3Niw5IEBACiAJCQkJODUwMzFCMzEwQTQ0
RUZDNzAwRjk5MkUwIC8qIE1vdXNlUmVsYXRlZEV2ZW50LmNwcCAqLywKIAkJCQk4NTAzMUIzMjBB
NDRFRkM3MDBGOTkyRTAgLyogTW91c2VSZWxhdGVkRXZlbnQuaCAqLywKIAkJCQlDNkYwOTAwMTE0
MzI3QjYxMDA2ODU4NDkgLyogTXV0YXRpb25DYWxsYmFjay5oICovLAorCQkJCTlCMTQ3MTUxMUJE
MDFCODkwMDM2REUwOSAvKiBDdXN0b21FbGVtZW50SW50ZXJmYWNlLmggKi8sCisJCQkJOUI5M0Ew
RTUxQkUzMTBERTAwMjMxQThFIC8qIEN1c3RvbUVsZW1lbnREZWZpbml0aW9ucy5jcHAgKi8sCisJ
CQkJOUI5M0EwRTYxQkUzMTBERTAwMjMxQThFIC8qIEN1c3RvbUVsZW1lbnREZWZpbml0aW9ucy5o
ICovLAogCQkJCTg1MDMxQjMzMEE0NEVGQzcwMEY5OTJFMCAvKiBNdXRhdGlvbkV2ZW50LmNwcCAq
LywKIAkJCQk4NTAzMUIzNDBBNDRFRkM3MDBGOTkyRTAgLyogTXV0YXRpb25FdmVudC5oICovLAog
CQkJCTkzRUVDMUYzMDlDMjg3NzcwMEM1MTVEMSAvKiBNdXRhdGlvbkV2ZW50LmlkbCAqLywKQEAg
LTI0MDMzLDYgKzI0MDU0LDggQEAKIAkJCQk4NTAzMUIzQTBBNDRFRkM3MDBGOTkyRTAgLyogV2hl
ZWxFdmVudC5jcHAgKi8sCiAJCQkJODUwMzFCM0IwQTQ0RUZDNzAwRjk5MkUwIC8qIFdoZWVsRXZl
bnQuaCAqLywKIAkJCQk5M0VFQzFGNzA5QzI4Nzc3MDBDNTE1RDEgLyogV2hlZWxFdmVudC5pZGwg
Ki8sCisJCQkJOUJBNDY2QjUxQkRDNzM0QTAwQkI3OTkwIC8qIExpZmVjeWNsZUNhbGxiYWNrUXVl
dWUuY3BwICovLAorCQkJCTlCQTQ2NkI2MUJEQzczNEEwMEJCNzk5MCAvKiBMaWZlY3ljbGVDYWxs
YmFja1F1ZXVlLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGRvbTsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC0yNDYwOSw2ICsyNDYzMiw3IEBACiAJCQkJQkM1RUI1REIwRTgxQjdFQTAw
QjI1OTY1IC8qIEJvcmRlclZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RUQ4QzM3QTE4M0JG
RjhDMDA5RTUzQkQgLyogQm94U2hhcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUE0ODU1MDk3
RDkzMDIwMDk0QzlFNCAvKiBicmVha19saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOUIxNDcx
NTcxQkQwMUU1NTAwMzZERTA5IC8qIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTMzMDlEREIwOTlFNjQ5MjAwNTZFNTgxIC8qIEJyZWFrQmxvY2txdW90ZUNv
bW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU5OUU3NTkwMTEwNTVBMUYwMEQ5MDRGQSAvKiBC
cmlkZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTU5QjU5Nzc1MTEwODY1NzkwMDcxNTlFOCAvKiBC
cmlkZ2VKU0MuaCBpbiBIZWFkZXJzICovLApAQCAtMjU1NTcsNiArMjU1ODEsNyBAQAogCQkJCTQ5
OUIzRUQ3MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGNTgwQjBFMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUM2OTU5MzE2MUExRTUzMDAzNzMyQ0IgLyogR3JhcGhpY3NM
YXllckZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTlCMTQ3MTUzMUJEMDFCODkwMDM2REUw
OSAvKiBDdXN0b21FbGVtZW50SW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkEyNEQ3
QTE2MkRGOTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUNFQzMzN0FGMUE0NjA4NkQwMDlCODUyMyAvKiBHcmFwaGljc1NlcnZpY2VzU1BJLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCMkEwMTVBQjBBRjZDRDUzMDA2QkNFMEUgLyogR3JhcGhpY3NU
eXBlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTY0Myw2ICsyNTY2OCw3IEBACiAJCQkJQTgxMzY5
RTAwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxMZWdlbmRFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOEVBNzlGNjBBMTkxNkRGMDBBOEVGNUYgLyogSFRNTExJRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTg3MURDMjAwQTE1MjA1NzAwQjEyQTY4IC8qIEhUTUxMaW5rRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJOUI5M0EwRTgxQkUzMTBERTAwMjMxQThFIC8qIEN1c3RvbUVs
ZW1lbnREZWZpbml0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTdEMkMwQTE5Mzg1NTAw
QThFRjVGIC8qIEhUTUxNYXBFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBN0NBQjBB
MTkyQjlDMDBBOEVGNUYgLyogSFRNTE1hcnF1ZWVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFNDQ2MTNBNTBDRDYzMzEwMDBGQURBNzUgLyogSFRNTE1lZGlhRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNzUwMCw2ICsyNzUyNiw3IEBACiAJCQkJQjIyMjdBMDMwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR0ZFU3BvdExpZ2h0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdB
MDYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFVGlsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUIyMjI3QTA5MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk5QkE0NjZCODFCREM3MzRBMDBCQjc5OTAgLyogTGlmZWN5Y2xl
Q2FsbGJhY2tRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ1RTcyRkMwRkQyNjIzOTAwQTg3
RDc5IC8qIFNWR0ZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgxRUJGM0IwRkQzNEY0MTAw
REE3NTU5IC8qIFNWR0ZpbHRlckJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTBD
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGaWx0ZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAg
LTI4NjYyLDYgKzI4Njg5LDcgQEAKIAkJCQlGQkQ2QUY4QjE1RUYyNUU1MDA4QjcxMTAgLyogQ1NT
QmFzaWNTaGFwZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE2QTg0RjkxNEM4NUNDQzAwMjk3
N0RGIC8qIENTU0JvcmRlckltYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMjc0QjMxMTQw
RUJFRDgwMEVBREZBNiAvKiBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJOUI5M0EwRTcxQkUzMTBERTAwMjMxQThFIC8qIEN1c3RvbUVsZW1lbnREZWZpbml0
aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUFFMkQ4RTEzNEVFNTBDMDA3MjkyMEEgLyog
Q1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzYwNEE0MzBEQjU2
MzRFMDAyMDQ3MzkgLyogQ1NTQ2FudmFzVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFF
QkJCRDQwQUFDOUI4NzAwMUZFOEUyIC8qIENTU0NoYXJzZXRSdWxlLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMzExMDcsNiArMzExMzUsNyBAQAogCQkJCTI2RkFFNENFMTg1MkUzQTUwMDRDOEM0NiAv
KiBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRTQ1MzkwQUUwRUFGRjRCNTAwMzY5NUM4IC8qIFN5c3RlbU1lbW9y
eUlPUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREEwN0ZCRDE4RTBBMTZBMDA0Njk5RkEgLyog
U3lzdGVtU2xlZXBMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5QkE0NjZCNzFCREM3
MzRBMDBCQjc5OTAgLyogTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlDREEwN0ZDMTE4RTBBMjJCMDA0Njk5RkEgLyogU3lzdGVtU2xlZXBMaXN0ZW5lck1hYy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTVENTk3NUI0MTk2MzVGMTEwMEQwMDg3OCAvKiBTeXN0ZW1W
ZXJzaW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDYzRUI2MjIxQjg3ODlFMDAwOTZFRDUxIC8q
IFRhZ0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTMyNyw2ICszMTM1Niw3IEBA
CiAJCQkJMDFEM0NGODYxNEJEMEEzMDAwRkU5OTcwIC8qIFdlYkdMU2hhcmVkT2JqZWN0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTZGOTk1QTE1MUE3MDc1NjIwMEE3MzVGNCAvKiBXZWJHTFN5bmMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlDN0I5RTUxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdM
VGV4dHVyZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5QjE0NzE1NjFCRDAxRTU1MDAzNkRFMDkg
LyogSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZGOTk1
QTIzMUE3MDc4QjEwMEE3MzVGNCAvKiBXZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBDM0YxRjVBMTBDODg3MTIwMEQ3MkNFMSAvKiBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2Rjk5NUEyNTFBNzA3OEIxMDBBNzM1RjQgLyog
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggODZkMGYwZS4uZjUwYzhlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTU4LDYgKzU4LDcgQEAKICNpbXBv
cnQgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxOYW1lcy5oIgogI2ltcG9ydCAi
SFRNTFRleHRBcmVhRWxlbWVudC5oIgorI2ltcG9ydCAiTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5o
IgogI2ltcG9ydCAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2ltcG9ydCAiTWFpbkZyYW1lLmgiCiAj
aW1wb3J0ICJQYWdlLmgiCkBAIC0zNTcyLDYgKzM1NzMsOCBAQCAtICh2b2lkKV9hY2Nlc3NpYmls
aXR5U2V0VmFsdWU6KGlkKXZhbHVlIGZvckF0dHJpYnV0ZTooTlNTdHJpbmcqKWF0dHJpYnV0ZU5h
bWUKIC8vIEZvciB1c2Ugd2l0aCBEdW1wUmVuZGVyVHJlZSBvbmx5LgogLSAodm9pZClfYWNjZXNz
aWJpbGl0eVNldFRlc3RWYWx1ZTooaWQpdmFsdWUgZm9yQXR0cmlidXRlOihOU1N0cmluZyopYXR0
cmlidXRlTmFtZQogeworICAgIEN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2sg
Y3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjazsKKwogICAgIFtzZWxmIF9hY2Nl
c3NpYmlsaXR5U2V0VmFsdWU6dmFsdWUgZm9yQXR0cmlidXRlOmF0dHJpYnV0ZU5hbWVdOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NoYXJhY3RlckRhdGFD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDaGFyYWN0ZXJEYXRhQ3Vz
dG9tLmNwcAppbmRleCA2MDE3ZjFmLi41NmZhNzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NoYXJhY3RlckRhdGFDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ2hhcmFjdGVyRGF0YUN1c3RvbS5jcHAKQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJKU05vZGVPclN0cmlu
Zy5oIgorI2luY2x1ZGUgIkxpZmVjeWNsZUNhbGxiYWNrUXVldWUuaCIKIAogdXNpbmcgbmFtZXNw
YWNlIEpTQzsKIApAQCAtMzUsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTVmFs
dWUgSlNDaGFyYWN0ZXJEYXRhOjpiZWZvcmUoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBDdXN0
b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrIGN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQ
cm9jZXNzaW5nU3RhY2s7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgd3JhcHBlZCgp
LmJlZm9yZSh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRET01FeGNl
cHRpb24oJnN0YXRlLCBlYyk7CkBAIC00NCw2ICs0Niw3IEBAIEpTVmFsdWUgSlNDaGFyYWN0ZXJE
YXRhOjpiZWZvcmUoRXhlY1N0YXRlJiBzdGF0ZSkKIAogSlNWYWx1ZSBKU0NoYXJhY3RlckRhdGE6
OmFmdGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgQ3VzdG9tRWxlbWVudExpZmVjeWNsZVBy
b2Nlc3NpbmdTdGFjayBjdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOwogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHdyYXBwZWQoKS5hZnRlcih0b05vZGVPclN0cmlu
Z1ZlY3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CkBA
IC01Myw2ICs1Niw3IEBAIEpTVmFsdWUgSlNDaGFyYWN0ZXJEYXRhOjphZnRlcihFeGVjU3RhdGUm
IHN0YXRlKQogCiBKU1ZhbHVlIEpTQ2hhcmFjdGVyRGF0YTo6cmVwbGFjZVdpdGgoRXhlY1N0YXRl
JiBzdGF0ZSkKIHsKKyAgICBDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrIGN1
c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2s7CiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CiAgICAgd3JhcHBlZCgpLnJlcGxhY2VXaXRoKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0
YXRlKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxYzQ0OGIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZh
Y2UuY3BwCkBAIC0wLDAgKzEsMTQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCIKKworI2luY2x1ZGUgIkVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTRWxl
bWVudC5oIgorI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgorI2luY2x1ZGUgIkpT
TWFpblRocmVhZEV4ZWNTdGF0ZUluc3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxoZWFwL1dlYWtJbmxpbmVzLmg+CisjaW5jbHVk
ZSA8cnVudGltZS9KU0xvY2suaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OkpTQ3VzdG9tRWxlbWVudElu
dGVyZmFjZShKU09iamVjdCogY29uc3RydWN0b3IsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCisgICAgOiBBY3RpdmVET01DYWxsYmFjayhnbG9iYWxPYmplY3QtPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSkKKyAgICAsIG1fY29uc3RydWN0b3IoY29uc3RydWN0b3IpCisgICAgLCBt
X2lzb2xhdGVkV29ybGQoJmdsb2JhbE9iamVjdC0+d29ybGQoKSkKK3sKK30KKworSlNDdXN0b21F
bGVtZW50SW50ZXJmYWNlOjp+SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlKCkKK3sKK30KKworUmVm
UHRyPEVsZW1lbnQ+IEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6Y29uc3RydWN0KGNvbnN0IEF0
b21pY1N0cmluZyYgdGFnTmFtZSkKK3sKKyAgICBpZiAoIWNhbkludm9rZUNhbGxiYWNrKCkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgUmVmPEpTQ3VzdG9tRWxlbWVudEludGVyZmFj
ZT4gcHJvdGVjdCgqdGhpcyk7CisKKyAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2lzb2xhdGVkV29y
bGQtPnZtKCkpOworCisgICAgaWYgKCFtX2NvbnN0cnVjdG9yKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKKyAgICBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gdG9KU0RPTUdsb2JhbE9iamVjdChjb250ZXh0LCAqbV9pc29s
YXRlZFdvcmxkKTsKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKTsKKworICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKKyAgICBDb25zdHJ1Y3RU
eXBlIGNvbnN0cnVjdFR5cGUgPSBtX2NvbnN0cnVjdG9yLT5tZXRob2RUYWJsZSgpLT5nZXRDb25z
dHJ1Y3REYXRhKG1fY29uc3RydWN0b3IuZ2V0KCksIGNvbnN0cnVjdERhdGEpOworICAgIGlmIChj
b25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGVOb25lKSB7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBNYXJrZWRB
cmd1bWVudEJ1ZmZlciBhcmdzOworICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nV2l0aENhY2hlKGV4
ZWMsIHRhZ05hbWUpKTsKKworLy8gRklYTUU6IGFkZCBiYWNrIGluc3BlY3RvciBpbnN0cnVtZW50
YXRpb24KKy8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBKU01haW5U
aHJlYWRFeGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbkNhbGwoY29udGV4dCwgY2FsbFR5cGUs
IGNhbGxEYXRhKTsKKworICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgZG8gc29tZXRoaW5nIHNwZWNp
YWwgZm9yIGV4Y2VwdGlvbnM/CisgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBleGNlcHRpb247Cisg
ICAgSlNWYWx1ZSBuZXdFbGVtZW50ID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjb25zdHJ1Y3Qo
ZXhlYywgbV9jb25zdHJ1Y3Rvci5nZXQoKSwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwg
YXJncywgZXhjZXB0aW9uKTsKKyAgICBpZiAobmV3RWxlbWVudC5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisvLyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENh
bGxGdW5jdGlvbihjb29raWUsIGNvbnRleHQpOworCisgICAgRWxlbWVudCogZWxlbWVudCA9IEpT
RWxlbWVudDo6dG9XcmFwcGVkKG5ld0VsZW1lbnQpOworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
ZG8gc29lbXRlaGluZyBzcGVjaWFsIHdoZW4gdGhlIGNvbnN0cnVjdG9yIHJldHVybmVkIGEgbm9u
LUVsZW1lbnQgb2JqZWN0LgorCisgICAgcmV0dXJuIGVsZW1lbnQ7Cit9CisKK3ZvaWQgSlNDdXN0
b21FbGVtZW50SW50ZXJmYWNlOjphdHRyaWJ1dGVDaGFuZ2VkKEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRW
YWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKK3sKKyAgICBpZiAoIWNhbkludm9r
ZUNhbGxiYWNrKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZjxKU0N1c3RvbUVsZW1lbnRJ
bnRlcmZhY2U+IHByb3RlY3QoKnRoaXMpOworCisgICAgSlNMb2NrSG9sZGVyIGxvY2sobV9pc29s
YXRlZFdvcmxkLT52bSgpKTsKKworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQg
PSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKKyAgICBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdG9KU0RPTUdsb2JhbE9iamVjdChjb250ZXh0LCAq
bV9pc29sYXRlZFdvcmxkKTsKKyAgICBFeGVjU3RhdGUqIHN0YXRlID0gZ2xvYmFsT2JqZWN0LT5n
bG9iYWxFeGVjKCk7CisKKyAgICBKU09iamVjdCoganNFbGVtZW50ID0gYXNPYmplY3QodG9KUyhz
dGF0ZSwgZ2xvYmFsT2JqZWN0LCAmZWxlbWVudCkpOworCisgICAgSlNWYWx1ZSBjYWxsYmFjayA9
IGpzRWxlbWVudC0+Z2V0KHN0YXRlLCBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2tO
YW1lKCkpOworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0g
Z2V0Q2FsbERhdGEoY2FsbGJhY2ssIGNhbGxEYXRhKTsKKyAgICBpZiAoY2FsbFR5cGUgPT0gQ2Fs
bFR5cGVOb25lKQorICAgICAgICByZXR1cm47CisKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBh
cmdzOworICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBhdHRyaWJ1dGVO
YW1lKSk7CisgICAgYXJncy5hcHBlbmQoanNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIG9sZFZhbHVl
KSk7CisgICAgYXJncy5hcHBlbmQoanNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIG5ld1ZhbHVlKSk7
CisKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSlNNYWluVGhy
ZWFkRXhlY1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb25DYWxsKGNvbnRleHQsIGNhbGxUeXBlLCBj
YWxsRGF0YSk7CisKKyAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV4Y2VwdGlvbjsKKyAgICBKU01h
aW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwoc3RhdGUsIGNhbGxiYWNrLCBjYWxsVHlwZSwgY2FsbERh
dGEsIGpzRWxlbWVudCwgYXJncywgZXhjZXB0aW9uKTsKKworICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKGNvb2tpZSwgY29udGV4dCk7CisKKyAgICBpZiAoZXhj
ZXB0aW9uKQorICAgICAgICByZXBvcnRFeGNlcHRpb24oc3RhdGUsIGV4Y2VwdGlvbik7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZGZiMmJjZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oCkBAIC0wLDAgKzEsNzIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlX2gKKyNkZWZpbmUgSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlX2gKKworI2luY2x1ZGUgIkFjdGl2ZURPTUNhbGxiYWNrLmgi
CisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCisjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudElu
dGVyZmFjZS5oIgorI2luY2x1ZGUgPGhlYXAvV2Vhay5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNP
YmplY3QuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgUHJpdmF0ZU5hbWU7CisKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBK
U0RPTUdsb2JhbE9iamVjdDsKKworY2xhc3MgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlIDogcHVi
bGljIEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UsIHB1YmxpYyBBY3RpdmVET01DYWxsYmFjayB7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZjxKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U+IGNyZWF0ZShK
U0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpTQ3VzdG9tRWxlbWVudEludGVy
ZmFjZShjYWxsYmFjaywgZ2xvYmFsT2JqZWN0KSk7CisgICAgfQorCisgICAgdmlydHVhbCB+SlND
dXN0b21FbGVtZW50SW50ZXJmYWNlKCk7CisKK3ByaXZhdGU6CisgICAgSlNDdXN0b21FbGVtZW50
SW50ZXJmYWNlKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCopOwor
CisgICAgdmlydHVhbCBSZWZQdHI8RWxlbWVudD4gY29uc3RydWN0KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdGFnTmFtZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQo
RWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVOYW1lLCBjb25z
dCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKSBv
dmVycmlkZTsKKworICAgIHZpcnR1YWwgSlNDOjpKU09iamVjdCogY29uc3RydWN0b3IoKSBvdmVy
cmlkZSB7IHJldHVybiBtX2NvbnN0cnVjdG9yLmdldCgpOyB9CisKKyAgICB2aXJ0dWFsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOyB9CisKKyAgICBtdXRhYmxlIEpTQzo6V2VhazxKU0M6OkpTT2JqZWN0PiBtX2NvbnN0
cnVjdG9yOworICAgIFJlZlB0cjxET01XcmFwcGVyV29ybGQ+IG1faXNvbGF0ZWRXb3JsZDsKK307
CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKaW5kZXggMjBlZjYwOS4uNzI2MmUxOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkpTRE9NV2lu
ZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAiSlNFeGNlcHRpb25CYXNlLmgiCisjaW5jbHVkZSAiTGlm
ZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5j
bHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9T
Y3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg+CkBAIC02NzMsNCArNjc0LDI2IEBAIHZvaWQgRE9NQ29u
c3RydWN0b3JKU0J1aWx0aW5PYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDOjpKU0NlbGwqIGNlbGws
IEpTQzo6U2xvdFZpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW5pdGlhbGl6
ZUZ1bmN0aW9uKTsKIH0KIAorTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZSogQ3VzdG9tRWxlbWVudExp
ZmVjeWNsZVByb2Nlc3NpbmdTdGFjazo6ZW5zdXJlQ3VycmVudFF1ZXVlKCkKK3sKKyAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gcmVtb3ZlIHRoaXMgZWFybHkgcmV0dXJuIG9uY2Ug
TmVlZHNQcm9jZXNzaW5nU3RhY2sgaXMgYWRkZGVkIGV2ZXJ5d2hlcmUuCisgICAgaWYgKCFzX2N1
cnJlbnRQcm9jZXNzaW5nU3RhY2spCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0
byomIHF1ZXVlID0gc19jdXJyZW50UHJvY2Vzc2luZ1N0YWNrLT5tX3F1ZXVlOworICAgIGlmICgh
cXVldWUpIC8vIFdlIHVzZSBhIHJhdyBwb2ludGVyIHRvIGF2b2lkIGdlbmVhcmluZyBjb2RlIHRv
IGRlbGV0ZSBpdCBpbiB+Q3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjay4KKyAg
ICAgICAgcXVldWUgPSBuZXcgTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZTsKKyAgICByZXR1cm4gcXVl
dWU7Cit9CisKK3ZvaWQgQ3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjazo6cHJv
Y2Vzc1F1ZXVlKCkKK3sKKyAgICBBU1NFUlQobV9xdWV1ZSk7CisgICAgbV9xdWV1ZS0+aW52b2tl
QWxsKCk7CisgICAgZGVsZXRlIG1fcXVldWU7CisgICAgbV9xdWV1ZSA9IG51bGxwdHI7Cit9CisK
K0N1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2sqIEN1c3RvbUVsZW1lbnRMaWZl
Y3ljbGVQcm9jZXNzaW5nU3RhY2s6OnNfY3VycmVudFByb2Nlc3NpbmdTdGFjayA9IG51bGxwdHI7
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nLmgKaW5kZXggMmY5MjMyMi4uNzk2YWY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTYyLDYgKzYyLDcgQEAgY2xhc3MgQ2FjaGVkU2Ny
aXB0OwogY2xhc3MgRE9NU3RyaW5nTGlzdDsKIGNsYXNzIERPTVdpbmRvdzsKIGNsYXNzIEZyYW1l
OworY2xhc3MgTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZTsKIGNsYXNzIFVSTDsKIGNsYXNzIE5vZGU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFw
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3Vz
dG9tLmNwcAppbmRleCAyMjcxZmQ5Li5jN2QzMWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpbmNsdWRlICJET01TdHJpbmdNYXAuaCIKICNpbmNsdWRlICJKU05vZGUuaCIKKyNpbmNs
dWRlICJMaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmgiCiAjaW5jbHVkZSA8cnVudGltZS9JZGVudGlm
aWVySW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCkBAIC02
Miw2ICs2Myw4IEBAIHZvaWQgSlNET01TdHJpbmdNYXA6OmdldE93blByb3BlcnR5TmFtZXMoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wCiAKIGJvb2wgSlNET01TdHJpbmdN
YXA6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQogeworICAgIEN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNz
aW5nU3RhY2sgY3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjazsKKwogICAgIEpT
RE9NU3RyaW5nTWFwKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NU3RyaW5nTWFwKj4oY2VsbCk7
CiAgICAgaWYgKHByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gQmFzZTo6
ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKQEAgLTc1LDYg
Kzc4LDggQEAgYm9vbCBKU0RPTVN0cmluZ01hcDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ24KIAogYm9vbCBKU0RPTVN0cmluZ01hcDo6
cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQogeworICAgIEN1c3RvbUVsZW1lbnRMaWZl
Y3ljbGVQcm9jZXNzaW5nU3RhY2sgY3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFj
azsKKwogICAgIGlmIChwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRva2Vu
TGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRva2VuTGlz
dEN1c3RvbS5jcHAKaW5kZXggNTRmNzVkMC4uOTU5MWQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVG9rZW5MaXN0Q3VzdG9tLmNwcApAQCAtMjcsNiArMjcs
NyBAQAogI2luY2x1ZGUgIkpTRE9NVG9rZW5MaXN0LmgiCiAKICNpbmNsdWRlICJKU0RPTUJpbmRp
bmcuaCIKKyNpbmNsdWRlICJMaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmgiCiAjaW5jbHVkZSA8cnVu
dGltZS9FcnJvci5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCkBAIC0zNiw2ICszNyw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSlNWYWx1ZSBKU0RPTVRva2VuTGlzdDo6dG9nZ2xl
KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgQ3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3Np
bmdTdGFjayBjdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOworCiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gc3Rh
dGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKCZzdGF0ZSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0N1c3RvbS5jcHAKaW5kZXggMDBlNjJhNC4uOWIyNDlmZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtMzUsNiArMzUsNyBA
QAogI2luY2x1ZGUgIkpTTWVzc2FnZVBvcnRDdXN0b20uaCIKICNpbmNsdWRlICJKU1dvcmtlci5o
IgogI2luY2x1ZGUgIkxvY2F0aW9uLmgiCisjaW5jbHVkZSAiTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1
ZS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY2hl
ZHVsZWRBY3Rpb24uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtNDcyLDYgKzQ3Myw4IEBA
IGJvb2wgSlNET01XaW5kb3c6OmRlZmluZU93blByb3BlcnR5KEpTQzo6SlNPYmplY3QqIG9iamVj
dCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsCiAKIHZvaWQgSlNET01XaW5kb3c6OnNldExvY2F0aW9u
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgQ3VzdG9tRWxlbWVudExp
ZmVjeWNsZVByb2Nlc3NpbmdTdGFjayBjdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0
YWNrOworCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgIC8vIFRvIGF2b2lkIGJy
ZWFraW5nIG9sZCB3aWRnZXRzLCBtYWtlICJ2YXIgbG9jYXRpb24gPSIgaW4gYSB0b3AtbGV2ZWwg
ZnJhbWUgY3JlYXRlCiAgICAgLy8gYSBwcm9wZXJ0eSBuYW1lZCAibG9jYXRpb24iIGluc3RlYWQg
b2YgcGVyZm9ybWluZyBhIG5hdmlnYXRpb24gKDxyZGFyOi8vcHJvYmxlbS81Njg4MDM5PikuCkBA
IC01MjEsNiArNTI0LDggQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6dG91Y2hMaXN0KEV4ZWNTdGF0
ZSYgc3RhdGUpIGNvbnN0CiAKIEpTVmFsdWUgSlNET01XaW5kb3c6Om9wZW4oRXhlY1N0YXRlJiBz
dGF0ZSkKIHsKKyAgICBDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrIGN1c3Rv
bUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2s7CisKICAgICBTdHJpbmcgdXJsU3RyaW5n
ID0gdmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjaygmc3RhdGUsIHN0YXRlLmFy
Z3VtZW50KDApKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwpAQCAtNTc3LDYgKzU4Miw4IEBAIGlubGluZSBKU1ZhbHVlIERpYWxv
Z0hhbmRsZXI6OnJldHVyblZhbHVlKCkgY29uc3QKIAogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2hv
d01vZGFsRGlhbG9nKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgQ3VzdG9tRWxlbWVudExpZmVj
eWNsZVByb2Nlc3NpbmdTdGFjayBjdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNr
OworCiAgICAgU3RyaW5nIHVybFN0cmluZyA9IHZhbHVlVG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JO
dWxsQ2hlY2soJnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggMDk0Y2UzZS4uZmI3
NGMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3Rv
bS5jcHAKQEAgLTIwLDIxICsyMCwyNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkpTRG9jdW1lbnQuaCIKIAorI2luY2x1ZGUgIkN1c3RvbUVsZW1lbnREZWZpbml0aW9ucy5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUg
IkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiSlND
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCIKKyNpbmNsdWRlICJKU0N1c3RvbUVsZW1lbnRJbnRl
cmZhY2UuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgogI2luY2x1ZGUgIkpTSFRN
TERvY3VtZW50LmgiCiAjaW5jbHVkZSAiSlNMb2NhdGlvbi5oIgogI2luY2x1ZGUgIkpTTm9kZU9y
U3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNTVkdEb2N1bWVudC5oIgorI2luY2x1ZGUgIkxpZmVjeWNs
ZUNhbGxiYWNrUXVldWUuaCIKICNpbmNsdWRlICJMb2NhdGlvbi5oIgogI2luY2x1ZGUgIk5vZGVU
cmF2ZXJzYWwuaCIKICNpbmNsdWRlICJTVkdEb2N1bWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdENv
bnRyb2xsZXIuaCIKICNpbmNsdWRlICJUb3VjaExpc3QuaCIKKworI2luY2x1ZGUgPHJ1bnRpbWUv
RXJyb3IuaD4KKyNpbmNsdWRlIDxydW50aW1lL1ByaXZhdGVOYW1lLmg+CiAjaW5jbHVkZSA8d3Rm
L0dldFB0ci5oPgogCiAjaWYgRU5BQkxFKFdFQkdMKQpAQCAtMTAyLDYgKzEwOCw3IEBAIEpTVmFs
dWUgdG9KU05ld2x5Q3JlYXRlZChFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBEb2N1CiAKIEpTVmFsdWUgSlNEb2N1bWVudDo6cHJlcGVuZChFeGVjU3Rh
dGUmIHN0YXRlKQogeworICAgIEN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2sg
Y3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjazsKICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICB3cmFwcGVkKCkucHJlcGVuZCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0
ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CkBAIC0xMTEsNiArMTE4
LDcgQEAgSlNWYWx1ZSBKU0RvY3VtZW50OjpwcmVwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiAKIEpT
VmFsdWUgSlNEb2N1bWVudDo6YXBwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgQ3VzdG9t
RWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayBjdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJv
Y2Vzc2luZ1N0YWNrOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHdyYXBwZWQoKS5h
cHBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0
aW9uKCZzdGF0ZSwgZWMpOwpAQCAtMTMwLDQgKzEzOCw0MiBAQCBKU1ZhbHVlIEpTRG9jdW1lbnQ6
OmNyZWF0ZVRvdWNoTGlzdChFeGVjU3RhdGUmIHN0YXRlKQogfQogI2VuZGlmCiAKKworSlNWYWx1
ZSBKU0RvY3VtZW50OjpkZWZpbmVDdXN0b21FbGVtZW50KEV4ZWNTdGF0ZSYgc3RhdGUpCit7Cisg
ICAgQXRvbWljU3RyaW5nIHRhZ05hbWUoc3RhdGUuYXJndW1lbnQoMCkudG9TdHJpbmcoJnN0YXRl
KS0+dG9BdG9taWNTdHJpbmcoJnN0YXRlKSk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLmhhZEV4
Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICBKU09iamVj
dCogb2JqZWN0ID0gc3RhdGUuYXJndW1lbnQoMSkuZ2V0T2JqZWN0KCk7CisgICAgQ29uc3RydWN0
RGF0YSBjYWxsRGF0YTsKKyAgICBpZiAoIW9iamVjdCB8fCBvYmplY3QtPm1ldGhvZFRhYmxlKCkt
PmdldENvbnN0cnVjdERhdGEob2JqZWN0LCBjYWxsRGF0YSkgPT0gQ29uc3RydWN0VHlwZU5vbmUp
CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsICJUaGUgc2Vjb25kIGFyZ3Vt
ZW50IG11c3QgYmUgYSBjb25zdHJ1Y3RvciIpOworCisgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0g
d3JhcHBlZCgpOworICAgIHN3aXRjaCAoQ3VzdG9tRWxlbWVudERlZmluaXRpb25zOjpjaGVja05h
bWUodGFnTmFtZSkpIHsKKyAgICBjYXNlIEN1c3RvbUVsZW1lbnREZWZpbml0aW9uczo6TmFtZVN0
YXR1czo6VmFsaWQ6CisgICAgYnJlYWs7CisgICAgY2FzZSBDdXN0b21FbGVtZW50RGVmaW5pdGlv
bnM6Ok5hbWVTdGF0dXM6OkNvbmZsaWN0c1dpdGhCdWlsdGluTmFtZXM6CisgICAgICAgIHJldHVy
biB0aHJvd1N5bnRheEVycm9yKCZzdGF0ZSwgIkN1c3RvbSBlbGVtZW50IG5hbWUgY2Fubm90IGJl
IHNhbWUgYXMgb25lIG9mIHRoZSBidWlsdGluIGVsZW1lbnRzIik7CisgICAgY2FzZSBDdXN0b21F
bGVtZW50RGVmaW5pdGlvbnM6Ok5hbWVTdGF0dXM6Ok5vSHlwaGVuOgorICAgICAgICByZXR1cm4g
dGhyb3dTeW50YXhFcnJvcigmc3RhdGUsICJDdXN0b20gZWxlbWVudCBuYW1lIG11c3QgY29udGFp
biBhIGh5cGhlbiIpOworICAgIGNhc2UgQ3VzdG9tRWxlbWVudERlZmluaXRpb25zOjpOYW1lU3Rh
dHVzOjpDb250YWluc1VwcGVyQ2FzZToKKyAgICAgICAgcmV0dXJuIHRocm93U3ludGF4RXJyb3Io
JnN0YXRlLCAiQ3VzdG9tIGVsZW1lbnQgbmFtZSBjYW5ub3QgY29udGFpbiBhbiB1cHBlciBjYXNl
IGxldHRlciIpOworICAgIH0KKworICAgIFF1YWxpZmllZE5hbWUgbmFtZShudWxsQXRvbSwgdGFn
TmFtZSwgSFRNTE5hbWVzOjp4aHRtbE5hbWVzcGFjZVVSSSk7CisgICAgYXV0byYgZGVmaW5pdGlv
bnMgPSBkb2N1bWVudC5lbnN1cmVDdXN0b21FbGVtZW50RGVmaW5pdGlvbnMoKTsKKyAgICBpZiAo
ZGVmaW5pdGlvbnMuZmluZEludGVyZmFjZSh0YWdOYW1lKSkgeworICAgICAgICBzZXRET01FeGNl
cHRpb24oJnN0YXRlLCBOT1RfU1VQUE9SVEVEX0VSUik7CisgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworICAgIH0KKyAgICBkZWZpbml0aW9ucy5kZWZpbmVFbGVtZW50KG5hbWUsIEpTQ3Vz
dG9tRWxlbWVudEludGVyZmFjZTo6Y3JlYXRlKG9iamVjdCwgZ2xvYmFsT2JqZWN0KCkpKTsKKyAg
ICBQcml2YXRlTmFtZSB1bmlxdWVQcml2YXRlTmFtZTsKKyAgICBnbG9iYWxPYmplY3QoKS0+cHV0
RGlyZWN0KGdsb2JhbE9iamVjdCgpLT52bSgpLCB1bmlxdWVQcml2YXRlTmFtZSwgb2JqZWN0KTsK
KworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFn
bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50RnJh
Z21lbnRDdXN0b20uY3BwCmluZGV4IDdkYTM4NDcuLjk2MDAyYjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcApA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJK
U05vZGVPclN0cmluZy5oIgogI2luY2x1ZGUgIkpTU2hhZG93Um9vdC5oIgorI2luY2x1ZGUgIkxp
ZmVjeWNsZUNhbGxiYWNrUXVldWUuaCIKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApAQCAtMzYs
NiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTVmFsdWUgSlNEb2N1bWVudEZyYWdt
ZW50OjpwcmVwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgQ3VzdG9tRWxlbWVudExpZmVj
eWNsZVByb2Nlc3NpbmdTdGFjayBjdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNr
OwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHdyYXBwZWQoKS5wcmVwZW5kKHRvTm9k
ZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUs
IGVjKTsKQEAgLTQ1LDYgKzQ3LDcgQEAgSlNWYWx1ZSBKU0RvY3VtZW50RnJhZ21lbnQ6OnByZXBl
bmQoRXhlY1N0YXRlJiBzdGF0ZSkKIAogSlNWYWx1ZSBKU0RvY3VtZW50RnJhZ21lbnQ6OmFwcGVu
ZChFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIEN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNz
aW5nU3RhY2sgY3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjazsKICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKICAgICB3cmFwcGVkKCkuYXBwZW5kKHRvTm9kZU9yU3RyaW5nVmVj
dG9yKHN0YXRlKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRUeXBlQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcApp
bmRleCBhOTNkNjcxLi5kMjY3M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RvY3VtZW50VHlwZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNEb2N1bWVudFR5cGVDdXN0b20uY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiSlNOb2RlT3JTdHJpbmcuaCIKKyNpbmNs
dWRlICJMaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
QEAgLTM1LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTRG9jdW1l
bnRUeXBlOjpiZWZvcmUoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBDdXN0b21FbGVtZW50TGlm
ZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrIGN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3Rh
Y2s7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgd3JhcHBlZCgpLmJlZm9yZSh0b05v
ZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRl
LCBlYyk7CkBAIC00NCw2ICs0Niw3IEBAIEpTVmFsdWUgSlNEb2N1bWVudFR5cGU6OmJlZm9yZShF
eGVjU3RhdGUmIHN0YXRlKQogCiBKU1ZhbHVlIEpTRG9jdW1lbnRUeXBlOjphZnRlcihFeGVjU3Rh
dGUmIHN0YXRlKQogeworICAgIEN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2sg
Y3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjazsKICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICB3cmFwcGVkKCkuYWZ0ZXIodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUp
LCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwpAQCAtNTMsNiArNTYsNyBA
QCBKU1ZhbHVlIEpTRG9jdW1lbnRUeXBlOjphZnRlcihFeGVjU3RhdGUmIHN0YXRlKQogCiBKU1Zh
bHVlIEpTRG9jdW1lbnRUeXBlOjpyZXBsYWNlV2l0aChFeGVjU3RhdGUmIHN0YXRlKQogeworICAg
IEN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2sgY3VzdG9tRWxlbWVudExpZmVj
eWNsZVByb2Nlc3NpbmdTdGFjazsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICB3cmFw
cGVkKCkucmVwbGFjZVdpdGgodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CiAgICAg
c2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRWxlbWVudEN1c3RvbS5jcHAKaW5kZXggMWQ2NTI0Mi4uZjE4N2M3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwCkBAIC0zNSwxMyAr
MzUsMTYgQEAKICNpbmNsdWRlICJIVE1MRnJhbWVFbGVtZW50QmFzZS5oIgogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgogI2luY2x1ZGUgIkpTQXR0ci5oIgorI2luY2x1ZGUgIkpTQ3VzdG9tRWxlbWVu
dEludGVyZmFjZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTSFRN
TEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5oIgogI2luY2x1ZGUgIkpTTm9kZUxpc3QuaCIKICNpbmNs
dWRlICJKU05vZGVPclN0cmluZy5oIgogI2luY2x1ZGUgIkpTU1ZHRWxlbWVudFdyYXBwZXJGYWN0
b3J5LmgiCisjaW5jbHVkZSAiTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5oIgogI2luY2x1ZGUgIk5v
ZGVMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N5
bWJvbEltcGwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApAQCAtNTQsNyArNTcsMTAgQEAg
SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVsZW1lbnQqIGUKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVy
biBqc051bGwoKTsKIAotICAgIEFTU0VSVCghZ2V0Q2FjaGVkV3JhcHBlcihnbG9iYWxPYmplY3Qt
PndvcmxkKCksIGVsZW1lbnQpKTsKKyAgICAvLyBGSVhNRTogQWRkIGJhY2sgdGhlIGFzc2VydGlv
biBmb3Igbm9uLWN1c3RvbSBlbGVtZW50cy4KKyAgICBBU1NFUlQoZWxlbWVudC0+aXNDdXN0b21F
bGVtZW50KCkgfHwgIWdldENhY2hlZFdyYXBwZXIoZ2xvYmFsT2JqZWN0LT53b3JsZCgpLCBlbGVt
ZW50KSk7CisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBnZXRDYWNoZWRXcmFwcGVyKGdsb2JhbE9i
amVjdC0+d29ybGQoKSwgZWxlbWVudCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyOwogCiAgICAg
SlNET01PYmplY3QqIHdyYXBwZXI7ICAgICAgICAKICAgICBpZiAoaXM8SFRNTEVsZW1lbnQ+KCpl
bGVtZW50KSkKQEAgLTY5LDYgKzc1LDcgQEAgSlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNT
dGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVsZW1lbnQqIGUKIAogSlNW
YWx1ZSBKU0VsZW1lbnQ6OmJlZm9yZShFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIEN1c3RvbUVs
ZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2sgY3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nl
c3NpbmdTdGFjazsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICB3cmFwcGVkKCkuYmVm
b3JlKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlv
bigmc3RhdGUsIGVjKTsKQEAgLTc4LDYgKzg1LDcgQEAgSlNWYWx1ZSBKU0VsZW1lbnQ6OmJlZm9y
ZShFeGVjU3RhdGUmIHN0YXRlKQogCiBKU1ZhbHVlIEpTRWxlbWVudDo6YWZ0ZXIoRXhlY1N0YXRl
JiBzdGF0ZSkKIHsKKyAgICBDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrIGN1
c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2s7CiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CiAgICAgd3JhcHBlZCgpLmFmdGVyKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwg
ZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKQEAgLTg3LDYgKzk1LDcgQEAg
SlNWYWx1ZSBKU0VsZW1lbnQ6OmFmdGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiAKIEpTVmFsdWUgSlNF
bGVtZW50OjpyZXBsYWNlV2l0aChFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIEN1c3RvbUVsZW1l
bnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2sgY3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3Np
bmdTdGFjazsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICB3cmFwcGVkKCkucmVwbGFj
ZVdpdGgodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0
aW9uKCZzdGF0ZSwgZWMpOwpAQCAtOTYsNiArMTA1LDcgQEAgSlNWYWx1ZSBKU0VsZW1lbnQ6OnJl
cGxhY2VXaXRoKEV4ZWNTdGF0ZSYgc3RhdGUpCiAKIEpTVmFsdWUgSlNFbGVtZW50OjpwcmVwZW5k
KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgQ3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3Np
bmdTdGFjayBjdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOwogICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwogICAgIHdyYXBwZWQoKS5wcmVwZW5kKHRvTm9kZU9yU3RyaW5nVmVj
dG9yKHN0YXRlKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKQEAgLTEw
NSw2ICsxMTUsNyBAQCBKU1ZhbHVlIEpTRWxlbWVudDo6cHJlcGVuZChFeGVjU3RhdGUmIHN0YXRl
KQogCiBKU1ZhbHVlIEpTRWxlbWVudDo6YXBwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAg
Q3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayBjdXN0b21FbGVtZW50TGlmZWN5
Y2xlUHJvY2Vzc2luZ1N0YWNrOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHdyYXBw
ZWQoKS5hcHBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CiAgICAgc2V0RE9N
RXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IDE5MTJjMGIuLmNjZDkxZTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5j
cHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJKU0RPTVdpbmRvd1NoZWxsLmgiCiAjaW5j
bHVkZSAiSlNIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0
ZS5oIgorI2luY2x1ZGUgIkxpZmVjeWNsZUNhbGxiYWNrUXVldWUuaCIKICNpbmNsdWRlICJTZWdt
ZW50ZWRTdHJpbmcuaCIKICNpbmNsdWRlICJEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgPGlu
dGVycHJldGVyL1N0YWNrVmlzaXRvci5oPgpAQCAtMTM5LDYgKzE0MCw4IEBAIHN0YXRpYyBEb2N1
bWVudCogZmluZENhbGxpbmdEb2N1bWVudChFeGVjU3RhdGUmIHN0YXRlKQogCiBKU1ZhbHVlIEpT
SFRNTERvY3VtZW50OjpvcGVuKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgQ3VzdG9tRWxlbWVu
dExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayBjdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2lu
Z1N0YWNrOworCiAgICAgLy8gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvdGhlciBicm93c2Vycywg
cGFzcyBvcGVuIGNhbGxzIHdpdGggbW9yZSB0aGFuIDIgcGFyYW1ldGVycyB0byB0aGUgd2luZG93
LgogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPiAyKSB7CiAgICAgICAgIGlmIChGcmFt
ZSogZnJhbWUgPSB3cmFwcGVkKCkuZnJhbWUoKSkgewpAQCAtMTY4LDYgKzE3MSw4IEBAIGVudW0g
TmV3bGluZVJlcXVpcmVtZW50IHsgRG9Ob3RBZGROZXdsaW5lLCBEb0FkZE5ld2xpbmUgfTsKIAog
c3RhdGljIGlubGluZSB2b2lkIGRvY3VtZW50V3JpdGUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNIVE1M
RG9jdW1lbnQqIHRoaXNEb2N1bWVudCwgTmV3bGluZVJlcXVpcmVtZW50IGFkZE5ld2xpbmUpCiB7
CisgICAgQ3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayBjdXN0b21FbGVtZW50
TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOworCiAgICAgSFRNTERvY3VtZW50KiBkb2N1bWVudCA9
ICZ0aGlzRG9jdW1lbnQtPndyYXBwZWQoKTsKICAgICAvLyBET00gb25seSBzcGVjaWZpZXMgc2lu
Z2xlIHN0cmluZyBhcmd1bWVudCwgYnV0IGJyb3dzZXJzIGFsbG93IG11bHRpcGxlIG9yIG5vIGFy
Z3VtZW50cy4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
RWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVt
ZW50Q3VzdG9tLmNwcAppbmRleCA1ODM2YTEwLi5jYTJmZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMTQgKzI2LDY5
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNIVE1MRWxlbWVudC5oIgogCisj
aW5jbHVkZSAiQ3VzdG9tRWxlbWVudERlZmluaXRpb25zLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKKyNpbmNsdWRlICJKU0N1c3RvbUVsZW1l
bnRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAjaW5jbHVkZSA8cnVu
dGltZS9KU1dpdGhTY29wZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNIVE1M
RWxlbWVudChFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIERPTUNvbnN0cnVjdG9yT2JqZWN0KiBq
c0NvbnN0cnVjdG9yID0ganNDYXN0PERPTUNvbnN0cnVjdG9yT2JqZWN0Kj4oc3RhdGUtPmNhbGxl
ZSgpKTsKKworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBqc0NvbnN0cnVj
dG9yLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0IHx8ICFjb250
ZXh0LT5pc0RvY3VtZW50KCkpCisgICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yRG9jdW1l
bnRVbmF2YWlsYWJsZUVycm9yKCpzdGF0ZSwgIkhUTUxFbGVtZW50Iik7CisgICAgYXV0byYgZG9j
dW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpOworCisgICAgYXV0byogZGVmaW5p
dGlvbnMgPSBkb2N1bWVudC5jdXN0b21FbGVtZW50RGVmaW5pdGlvbnMoKTsKKyAgICBpZiAoIWRl
ZmluaXRpb25zKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgIm5ldy50
YXJnZXQgaXMgbm90IGEgdmFsaWQgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3IiKTsKKworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIEpTT2JqZWN0KiBuZXdUYXJnZXQgPSBzdGF0ZS0+
dGhpc1ZhbHVlKCkuZ2V0T2JqZWN0KCk7CisgICAgUXVhbGlmaWVkTmFtZSBmdWxsTmFtZSA9IGRl
ZmluaXRpb25zLT5maW5kTmFtZShuZXdUYXJnZXQpOworICAgIGlmIChmdWxsTmFtZSA9PSBudWxs
UU5hbWUoKSkgeworICAgICAgICBpZiAoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAg
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOworICAgIH0KKworICAgIGlmIChzdGF0ZS0+YXJndW1lbnRDb3VudCgp
KSB7CisgICAgICAgIFN0cmluZyBuYW1lOworICAgICAgICBpZiAoIXN0YXRlLT5hcmd1bWVudCgw
KS5nZXRTdHJpbmcoc3RhdGUsIG5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3Ioc3RhdGUsICJUaGUgZmlyc3QgYXJndW1lbnQgaXMgbm90IGEgdmFsaWQgY3VzdG9tIGVs
ZW1lbnQgbmFtZSIpOworCisgICAgICAgIGF1dG8qIGludGVyZmFjZSA9IGRlZmluaXRpb25zLT5m
aW5kSW50ZXJmYWNlKG5hbWUpOworICAgICAgICBpZiAoIWludGVyZmFjZSkKKyAgICAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCAiVGhlIGZpcnN0IGFyZ3VtZW50IGlzIG5v
dCBhIHZhbGlkIGN1c3RvbSBlbGVtZW50IG5hbWUiKTsKKworICAgICAgICBpZiAobmV3VGFyZ2V0
ICE9IGludGVyZmFjZS0+Y29uc3RydWN0b3IoKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKHN0YXRlLCAiQXR0ZW1wdCB0byBjb25zdHJ1Y3QgYSBjdXN0b20gZWxlbWVudCB3
aXRoIGEgd3JvbmcgaW50ZXJmYWNlIik7CisKKyAgICAgICAgZnVsbE5hbWUgPSBRdWFsaWZpZWRO
YW1lKG51bGxBdG9tLCBuYW1lLCBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJKTsKKyAgICB9
CisKKyAgICBKU1ZhbHVlIHByb3RvdHlwZU9iamVjdCA9IG5ld1RhcmdldC0+Z2V0KHN0YXRlLCB2
bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpOworICAgIGlmIChzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAg
ICBhdXRvKiBnbG9iYWxPYmplY3QgPSBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKTsKKyAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGNyZWF0ZSBhIG5ldyBzdHJ1Y3R1cmUgZWFjaCB0aW1l
LiBDYWNoZSBpdCBvbiB0aGUgY29uc3RydWN0b3Igb2JqZWN0IG9yIGludGVyZmFjZSB3cmFwcGVy
LgorICAgIGF1dG8qIG5ld0VsZW1lbnRTdHJ1Y3R1cmUgPSBKU0hUTUxFbGVtZW50OjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlT2JqZWN0KTsKKworICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgZ2V0IHRoZSBxdWFsaWZpZWQgbmFtZSBvdXQgb2YgdGhlIGludGVyZmFj
ZS4KKyAgICBSZWY8SFRNTEVsZW1lbnQ+IGVsZW1lbnQgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKGZ1
bGxOYW1lLCBkb2N1bWVudCk7CisgICAgZWxlbWVudC0+c2V0Q3VzdG9tRWxlbWVudCgpOworICAg
IGF1dG8qIGpzRWxlbWVudCA9IEpTSFRNTEVsZW1lbnQ6OmNyZWF0ZShuZXdFbGVtZW50U3RydWN0
dXJlLCBnbG9iYWxPYmplY3QsIGVsZW1lbnQuZ2V0KCkpOworICAgIGNhY2hlV3JhcHBlcihnbG9i
YWxPYmplY3QtPndvcmxkKCksIGVsZW1lbnQucHRyKCksIGpzRWxlbWVudCk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0VsZW1lbnQpOworfQorCiBKU1Njb3BlKiBKU0hUTUxFbGVtZW50
OjpwdXNoRXZlbnRIYW5kbGVyU2NvcGUoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSkg
Y29uc3QKIHsKICAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9IHdyYXBwZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20u
Y3BwCmluZGV4IDZmZDVhOTcuLjlmYTU0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MRnJhbWVFbGVtZW50Q3VzdG9tLmNwcApAQCAtMzQsNiArMzQs
NyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMu
aCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJMaWZlY3ljbGVDYWxsYmFj
a1F1ZXVlLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKQEAgLTUzLDYgKzU0LDggQEAgc3Rh
dGljIGlubGluZSBib29sIGFsbG93U2V0dGluZ0phdmFzY3JpcHRVUkwoRXhlY1N0YXRlJiBzdGF0
ZSwgSFRNTEZyYW1lRWxlbWVudCoKIAogdm9pZCBKU0hUTUxGcmFtZUVsZW1lbnQ6OnNldExvY2F0
aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgQ3VzdG9tRWxlbWVu
dExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayBjdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2lu
Z1N0YWNrOworCiAgICAgSFRNTEZyYW1lRWxlbWVudCYgaW1wID0gd3JhcHBlZCgpOwogICAgIFN0
cmluZyBsb2NhdGlvblZhbHVlID0gdmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soJnN0YXRlLCB2
YWx1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9w
dGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAppbmRleCA5MjM0NWU2Li42M2E2ZDdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25zQ29sbGVj
dGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT3B0
aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSlNI
VE1MU2VsZWN0RWxlbWVudC5oIgogI2luY2x1ZGUgIkpTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20u
aCIKICNpbmNsdWRlICJKU05vZGVMaXN0LmgiCisjaW5jbHVkZSAiTGlmZWN5Y2xlQ2FsbGJhY2tR
dWV1ZS5oIgogI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCiAKICNpbmNsdWRlIDx3dGYvTWF0
aEV4dHJhcy5oPgpAQCAtNDksNiArNTAsNyBAQCBib29sIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9u
OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TgogCiB2
b2lkIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpzZXRMZW5ndGgoRXhlY1N0YXRlJiBzdGF0ZSwg
SlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0
YWNrIGN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2s7CiAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CiAgICAgdW5zaWduZWQgbmV3TGVuZ3RoID0gMDsKICAgICBkb3VibGUgbGVu
Z3RoVmFsdWUgPSB2YWx1ZS50b051bWJlcigmc3RhdGUpOwpAQCAtNzIsNiArNzQsNyBAQCB2b2lk
IEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjppbmRleFNldHRlcihFeGVjU3RhdGUqIGV4ZWMsIHVu
c2lnbmVkIGluZGV4LCBKU1ZhbAogCiBKU1ZhbHVlIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpy
ZW1vdmUoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJv
Y2Vzc2luZ1N0YWNrIGN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2s7CiAgICAg
Ly8gVGhlIGFyZ3VtZW50IGNhbiBiZSBhbiBIVE1MT3B0aW9uRWxlbWVudCBvciBhbiBpbmRleC4K
ICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gc3RhdGUuYXJndW1lbnQoMCk7CiAgICAgaWYgKEhUTUxP
cHRpb25FbGVtZW50KiBvcHRpb24gPSBKU0hUTUxPcHRpb25FbGVtZW50Ojp0b1dyYXBwZWQoYXJn
dW1lbnQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MU2Vs
ZWN0RWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxT
ZWxlY3RFbGVtZW50Q3VzdG9tLmNwcAppbmRleCAzMGUzZWJiLi40N2MwNGU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxTZWxlY3RFbGVtZW50Q3Vz
dG9tLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTFNlbGVjdEVsZW1lbnQuaCIKICNpbmNsdWRlICJKU0hUTUxPcHRpb25F
bGVtZW50LmgiCisjaW5jbHVkZSAiTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTM0LDYgKzM1LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKIAogSlNWYWx1ZSBKU0hUTUxTZWxlY3RFbGVtZW50OjpyZW1vdmUoRXhlY1N0YXRlJiBzdGF0
ZSkKIHsKKyAgICBDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrIGN1c3RvbUVs
ZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2s7CiAgICAgSFRNTFNlbGVjdEVsZW1lbnQmIHNl
bGVjdCA9IHdyYXBwZWQoKTsKIAogICAgIGlmICghc3RhdGUuYXJndW1lbnRDb3VudCgpKSB7CkBA
IC01NCw2ICs1Niw3IEBAIEpTVmFsdWUgSlNIVE1MU2VsZWN0RWxlbWVudDo6cmVtb3ZlKEV4ZWNT
dGF0ZSYgc3RhdGUpCiAKIHZvaWQgc2VsZWN0SW5kZXhTZXR0ZXIoSFRNTFNlbGVjdEVsZW1lbnQq
IHNlbGVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKU0M6OkpTVmFs
dWUgdmFsdWUpCiB7CisgICAgQ3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayBj
dXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOwogICAgIGlmICh2YWx1ZS5pc1Vu
ZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICBzZWxlY3QtPnJlbW92ZUJ5SW5kZXgoaW5kZXgpOwog
ICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0
b3J5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3Rv
bS5jcHAKaW5kZXggMmJkMmY2ZC4uY2EzZGFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkxpZmVjeWNs
ZUNhbGxiYWNrUXVldWUuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNp
bmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4KIApAQCAtMTIxLDYgKzEyMiw4IEBAIEpTVmFs
dWUgSlNIaXN0b3J5OjpzdGF0ZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogCiBKU1ZhbHVlIEpT
SGlzdG9yeTo6cHVzaFN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgQ3VzdG9tRWxlbWVu
dExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayBjdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2lu
Z1N0YWNrOworCiAgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoJnN0YXRlLCB3cmFw
cGVkKCkuZnJhbWUoKSkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCkBAIC0xNTAs
NiArMTUzLDggQEAgSlNWYWx1ZSBKU0hpc3Rvcnk6OnB1c2hTdGF0ZShFeGVjU3RhdGUmIHN0YXRl
KQogCiBKU1ZhbHVlIEpTSGlzdG9yeTo6cmVwbGFjZVN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7
CisgICAgQ3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayBjdXN0b21FbGVtZW50
TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOworCiAgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1Rv
RnJhbWUoJnN0YXRlLCB3cmFwcGVkKCkuZnJhbWUoKSkpCiAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdl
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0
cnVjdG9yLmNwcAppbmRleCA4MWNkMWUyLi44MDgxZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAKQEAgLTI0LDYgKzI0LDcgQEAK
ICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNIVE1MSW1hZ2VFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCisjaW5jbHVkZSAiTGlmZWN5Y2xlQ2FsbGJhY2tR
dWV1ZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpT
QzsKQEAgLTQxLDYgKzQyLDcgQEAgdGVtcGxhdGU8PiB2b2lkIEpTSW1hZ2VDb25zdHJ1Y3Rvcjo6
aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamUKIAogdGVtcGxhdGU8
PiBFbmNvZGVkSlNWYWx1ZSBKU0ltYWdlQ29uc3RydWN0b3I6OmNvbnN0cnVjdChFeGVjU3RhdGUq
IHN0YXRlKQogeworICAgIEN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2sgY3Vz
dG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjazsKICAgICBKU0ltYWdlQ29uc3RydWN0
b3IqIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNJbWFnZUNvbnN0cnVjdG9yKj4oc3RhdGUtPmNh
bGxlZSgpKTsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBqc0NvbnN0cnVjdG9yLT5kb2N1bWVu
dCgpOwogICAgIGlmICghZG9jdW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oCmluZGV4IDA5ZTdlNWIuLmNmNzhjZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5o
CkBAIC01Niw2ICs1NiwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKU0M6OmNhbGwoZXhl
YywgZnVuY3Rpb25PYmplY3QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzLCBy
ZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgfTsKIAorICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgY29u
c3RydWN0KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgY29uc3RydWN0b3JPYmpl
Y3QsIEpTQzo6Q29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlLCBjb25zdCBKU0M6OkNvbnN0cnVj
dERhdGEmIGNvbnN0cnVjdERhdGEsCisgICAgICAgIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncywg
TmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKKyAgICB7CisgICAg
ICAgIEpTTWFpblRocmVhZEV4ZWNTdGF0ZSBjdXJyZW50U3RhdGUoZXhlYyk7CisgICAgICAgIHJl
dHVybiBKU0M6OmNvbnN0cnVjdChleGVjLCBjb25zdHJ1Y3Rvck9iamVjdCwgY29uc3RydWN0VHlw
ZSwgY29uc3RydWN0RGF0YSwgYXJncywgcmV0dXJuZWRFeGNlcHRpb24pOworICAgIH07CisKICAg
ICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25z
dCBKU0M6OlNvdXJjZUNvZGUmIHNvdXJjZSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgTmFrZWRQ
dHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKICAgICB7CiAgICAgICAgIEpT
TWFpblRocmVhZEV4ZWNTdGF0ZSBjdXJyZW50U3RhdGUoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAppbmRleCAzMTIzYzk0Li44NDNiZTliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKQEAgLTU3LDYgKzU3
LDcgQEAKICNpbmNsdWRlICJKU1NWR0VsZW1lbnRXcmFwcGVyRmFjdG9yeS5oIgogI2luY2x1ZGUg
IkpTU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIkpTVGV4dC5oIgorI2luY2x1ZGUgIkxpZmVjeWNs
ZUNhbGxiYWNrUXVldWUuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc2lu
Z0luc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCIKQEAg
LTExMyw2ICsxMTQsNyBAQCBib29sIEpTTm9kZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVS
b290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdgogCiBKU1ZhbHVlIEpTTm9k
ZTo6aW5zZXJ0QmVmb3JlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgQ3VzdG9tRWxlbWVudExp
ZmVjeWNsZVByb2Nlc3NpbmdTdGFjayBjdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0
YWNrOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGJvb2wgb2sgPSB3cmFwcGVkKCku
aW5zZXJ0QmVmb3JlKEpTTm9kZTo6dG9XcmFwcGVkKHN0YXRlLmFyZ3VtZW50KDApKSwgSlNOb2Rl
Ojp0b1dyYXBwZWQoc3RhdGUuYXJndW1lbnQoMSkpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9u
KCZzdGF0ZSwgZWMpOwpAQCAtMTIzLDYgKzEyNSw3IEBAIEpTVmFsdWUgSlNOb2RlOjppbnNlcnRC
ZWZvcmUoRXhlY1N0YXRlJiBzdGF0ZSkKIAogSlNWYWx1ZSBKU05vZGU6OnJlcGxhY2VDaGlsZChF
eGVjU3RhdGUmIHN0YXRlKQogeworICAgIEN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5n
U3RhY2sgY3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjazsKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKICAgICBib29sIG9rID0gd3JhcHBlZCgpLnJlcGxhY2VDaGlsZChKU05v
ZGU6OnRvV3JhcHBlZChzdGF0ZS5hcmd1bWVudCgwKSksIEpTTm9kZTo6dG9XcmFwcGVkKHN0YXRl
LmFyZ3VtZW50KDEpKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKQEAg
LTEzMyw2ICsxMzYsNyBAQCBKU1ZhbHVlIEpTTm9kZTo6cmVwbGFjZUNoaWxkKEV4ZWNTdGF0ZSYg
c3RhdGUpCiAKIEpTVmFsdWUgSlNOb2RlOjpyZW1vdmVDaGlsZChFeGVjU3RhdGUmIHN0YXRlKQog
eworICAgIEN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2sgY3VzdG9tRWxlbWVu
dExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjazsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICBib29sIG9rID0gd3JhcHBlZCgpLnJlbW92ZUNoaWxkKEpTTm9kZTo6dG9XcmFwcGVkKHN0YXRl
LmFyZ3VtZW50KDApKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKQEAg
LTE0Myw2ICsxNDcsNyBAQCBKU1ZhbHVlIEpTTm9kZTo6cmVtb3ZlQ2hpbGQoRXhlY1N0YXRlJiBz
dGF0ZSkKIAogSlNWYWx1ZSBKU05vZGU6OmFwcGVuZENoaWxkKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7
CisgICAgQ3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayBjdXN0b21FbGVtZW50
TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAg
IGJvb2wgb2sgPSB3cmFwcGVkKCkuYXBwZW5kQ2hpbGQoSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUu
YXJndW1lbnQoMCkpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9t
LmNwcAppbmRleCA4OWIzYmNmLi42Yjg1YzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcApAQCAtNDQsNiArNDQsNyBA
QAogI2luY2x1ZGUgIkpTRG9jdW1lbnQuaCIKICNpbmNsdWRlICJKU0V2ZW50LmgiCiAjaW5jbHVk
ZSAiSlNFdmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5o
IgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0LmgiCiAjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvU3Rh
Y2tWaXNpdG9yLmg+CiAjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgpAQCAtMTc5LDYg
KzE4MCw4IEBAIEpTVmFsdWUgSlNYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VUZXh0KEV4ZWNTdGF0
ZSYgc3RhdGUpIGNvbnN0CiAKIEpTVmFsdWUgSlNYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2UoRXhl
Y1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKKyAgICBDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vz
c2luZ1N0YWNrIGN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2s7CisKICAgICAv
LyBGSVhNRTogVXNlIENhY2hlZEF0dHJpYnV0ZSBmb3Igb3RoZXIgdHlwZXMgdGhhbiBKU09OIGFz
IHdlbGwuCiAgICAgaWYgKG1fcmVzcG9uc2UgJiYgd3JhcHBlZCgpLnJlc3BvbnNlQ2FjaGVJc1Zh
bGlkKCkpCiAgICAgICAgIHJldHVybiBtX3Jlc3BvbnNlLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBiNmU4YjJm
Li4zNTQ3NWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTE0MCw3ICsxMTQwLDExIEBAIHN1YiBHZW5lcmF0ZUhlYWRl
cgogICAgICAgICAgICAgaWYgKEhhc0N1c3RvbUdldHRlcigkYXR0cmlidXRlLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcykpIHsKICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7
CiAgICAgICAgICAgICAgICAgbXkgJG1ldGhvZE5hbWUgPSAkY29kZUdlbmVyYXRvci0+V0tfbGNm
aXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpOwotICAgICAgICAgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgSlNDOjpKU1ZhbHVlICIgLiAkbWV0aG9kTmFtZSAuICIoSlND
OjpFeGVjU3RhdGUmKSBjb25zdDtcbiIpOworICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRl
LT5pc1N0YXRpYykgeworICAgICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgIiAuICRtZXRob2ROYW1lIC4gIihKU0M6OkV4ZWNTdGF0
ZSYpO1xuIik7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBKU0M6OkpTVmFsdWUgIiAuICRtZXRob2ROYW1lIC4g
IihKU0M6OkV4ZWNTdGF0ZSYpIGNvbnN0O1xuIik7CisgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25h
bFN0cmluZzsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChIYXNDdXN0b21TZXR0ZXIo
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMpICYmICFJc1JlYWRvbmx5
KCRhdHRyaWJ1dGUpKSB7CkBAIC0yMjg4LDYgKzIyOTIsMTEgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiRW5jb2RlZEpTVmFsdWUg
JHtnZXRGdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpXG4iKTsKICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAKKyAgICAgICAgICAgIGlmICgkYXR0cmlidXRl
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOZWVkc1Byb2Nlc3NpbmdTdGFja0lu
R2V0dGVyIn0pIHsKKyAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiTGlmZWN5Y2xl
Q2FsbGJhY2tRdWV1ZS5oIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgQ3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayBjdXN0b21FbGVtZW50TGlm
ZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrO1xuIik7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7XG4iKTsKICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7XG4i
KTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpO1xuIik7CkBAIC0yMzgyLDcgKzIzOTEsMTEgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICAgICAgICAgIH0gIyBhdHRyaWJ1dGUgTm9uZGV0ZXJtaW5pc3RpYwogCiAgICAg
ICAgICAgICBpZiAoSGFzQ3VzdG9tR2V0dGVyKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzKSkgewotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+JGltcGxHZXR0ZXJGdW5jdGlvbk5h
bWUoKnN0YXRlKSk7XG4iKTsKKyAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+aXNTdGF0
aWMpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSgke2NsYXNzTmFtZX06OiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCpz
dGF0ZSkpO1xuIik7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRU
aGlzLT4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgqc3RhdGUpKTtcbiIpOworICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkNoZWNrU2VjdXJpdHlGb3JOb2RlIn0pIHsKICAgICAgICAgICAgICAg
ICAkaW1wbEluY2x1ZGVzeyJKU0RPTUJpbmRpbmcuaCJ9ID0gMTsKICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
O1xuIik7CkBAIC0yNjMyLDYgKzI2NDUsMTAgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiIHRoaXNWYWx1ZSIpIGlmICEkYXR0cmli
dXRlLT5pc1N0YXRpYzsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAie1xuIik7CisgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiTmVlZHNQcm9jZXNzaW5nU3RhY2sifSB8fCAkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZWZsZWN0In0pIHsKKyAgICAgICAgICAgICAg
ICAkaW1wbEluY2x1ZGVzeyJMaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmgifSA9IDE7CisgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQ3VzdG9tRWxlbWVudExpZmVjeWNsZVBy
b2Nlc3NpbmdTdGFjayBjdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrO1xuIik7
CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7XG4iKTsKICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShiYXNlT2JqZWN0KTtcbiIp
OwogICAgICAgICAgICAgaWYgKCEkYXR0cmlidXRlLT5pc1N0YXRpYykgewpAQCAtMjkxMiw2ICsy
OTI5LDExIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgICAgICRpbXBs
SW5jbHVkZXN7IjxydW50aW1lL0Vycm9yLmg+In0gPSAxOwogCisgICAgICAgICAgICBpZiAoJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOZWVkc1Byb2Nlc3NpbmdT
dGFjayJ9KSB7CisgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siTGlmZWN5Y2xlQ2FsbGJh
Y2tRdWV1ZS5oIn0gPSAxOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IEN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2sgY3VzdG9tRWxlbWVudExpZmVj
eWNsZVByb2Nlc3NpbmdTdGFjaztcbiIpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBp
ZiAoJGZ1bmN0aW9uLT5pc1N0YXRpYykgewogICAgICAgICAgICAgICAgIGlmICgkaXNDdXN0b20p
IHsKICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKFxAaW1w
bENvbnRlbnQsICRmdW5jdGlvbiwgJGludGVyZmFjZSk7CkBAIC00NzE0LDkgKzQ3MzYsMTUgQEAg
c3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uCiAgICAgICAgICAgICAkaW1wbEluY2x1
ZGVzeyJKU0RpY3Rpb25hcnkuaCJ9ID0gMTsKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7Ijxy
dW50aW1lL0Vycm9yLmg+In0gPSAxOwogCisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICJ0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtjb25zdHJ1Y3RvckNs
YXNzTmFtZX06OmNvbnN0cnVjdChFeGVjU3RhdGUqIHN0YXRlKSIpOworICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAieyIpOworCisgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Ik5lZWRzUHJvY2Vzc2luZ1N0YWNrSW5Db25zdHJ1Y3RvciJ9KSB7
CisgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5o
In0gPSAxOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEN1c3RvbUVs
ZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2sgY3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nl
c3NpbmdTdGFjaztcbiIpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksIDw8RU5EKTsKLXRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCi17
CiAgICAgYXV0byoganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDwke2NvbnN0cnVjdG9yQ2xhc3NOYW1l
fSo+KHN0YXRlLT5jYWxsZWUoKSk7CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzdGF0
ZXV0aW9uQ29udGV4dCA9IGpzQ29uc3RydWN0b3ItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
QEAgLTQ3OTUsNiArNDgyMywxMSBAQCBFTkQKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIntcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8qIGNh
c3RlZFRoaXMgPSBqc0Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0qPihzdGF0ZS0+Y2FsbGVl
KCkpO1xuIik7CiAKKyAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiTmVlZHNQcm9jZXNzaW5nU3RhY2tJbkNvbnN0cnVjdG9yIn0pIHsKKyAgICAgICAgICAg
ICAgICAkaW1wbEluY2x1ZGVzeyJMaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmgifSA9IDE7CisgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQ3VzdG9tRWxlbWVudExpZmVjeWNs
ZVByb2Nlc3NpbmdTdGFjayBjdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrO1xu
Iik7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIG15IEBjb25zdHJ1Y3RvckFyZ0xpc3Q7
CiAKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IjxydW50aW1lL0Vycm9yLmg+In0gPSAxOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQK
aW5kZXggNDc5NWIxMC4uMWY3OTE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CkBAIC04OSw2ICs4OSw5IEBAIEpTR2VuZXJhdGVU
b05hdGl2ZU9iamVjdAogSlNMZWdhY3lQYXJlbnQ9KgogTWFzcXVlcmFkZXNBc1VuZGVmaW5lZAog
TmFtZWRDb25zdHJ1Y3Rvcj0qCitOZWVkc1Byb2Nlc3NpbmdTdGFjaworTmVlZHNQcm9jZXNzaW5n
U3RhY2tJbkNvbnN0cnVjdG9yCitOZWVkc1Byb2Nlc3NpbmdTdGFja0luR2V0dGVyCiBOZXdJbXB1
cmVQcm9wZXJ0eUZpcmVzV2F0Y2hwb2ludHMKIE5ld09iamVjdAogTm9JbnRlcmZhY2VPYmplY3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5jcHAKaW5kZXggNzdiYTRlZC4uMjM3YzgwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTE1Nyw2ICsx
NTcsNyBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uKAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRG9tU3RyaW5nTGlzdEZ1bmN0aW9u
KEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVu
Y2UoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGFibGVTZXF1
ZW5jZTIoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOZWVkc1Byb2Nlc3NpbmdTdGFj
ayhKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0U1ZHRG9jdW1lbnQoSlNDOjpFeGVjU3RhdGUqKTsK
IEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkNvbnZlcnQxKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MihKU0M6OkV4ZWNTdGF0
ZSopOwpAQCAtMzA3LDYgKzMwOCw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqRGVz
Y3JpcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpFCiBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iaklkKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIHZvaWQgc2V0SlNUZXN0
T2JqSWQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakhh
c2goSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1
Y3RvckF0dHJpYnV0ZUNoYW5nZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpSZXBsYWNlYWJsZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNP
YmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiB2b2lkIHNl
dEpTVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09i
amVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZURvdWJsZUF0dHJpYnV0ZShKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5
TmFtZSk7CkBAIC00MjQsNiArNDI2LDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpT
VGVzdE9iakNvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9CiAgICAgeyAic3RhdGljU3RyaW5nQXR0
ciIsIERvbnREZWxldGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNTdHJpbmdB
dHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNTdHJpbmdBdHRyKSB9IH0sCiAgICAgeyAi
VGVzdFN1Yk9iaiIsIERvbnREZWxldGUgfCBSZWFkT25seSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpDb25z
dHJ1Y3RvclRlc3RTdWJPYmopLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAic3RhdGljUmVhZE9ubHlTeW1ib2xBdHRy
IiwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakNvbnN0cnVjdG9yU3Rh
dGljUmVhZE9ubHlTeW1ib2xBdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAorICAgIHsgImF0dHJpYnV0ZUNoYW5nZWQiLCBE
b250RGVsZXRlIHwgUmVhZE9ubHksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQ29uc3RydWN0b3JBdHRyaWJ1
dGVDaGFuZ2VkKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oMCkgfSB9LAogICAgIHsgInN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlv
bmFsQXJnIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0
aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAg
eyAic3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJnIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpDb25z
dHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJnKSwgKGludHB0cl90KSAo
MSkgfSB9LAogICAgIHsgImNsYXNzTWV0aG9kIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpDb25zdHJ1
Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2QpLCAoaW50cHRyX3QpICgwKSB9IH0sCkBAIC02NjcsNiAr
NjcwLDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialByb3RvdHlwZVRh
YmxlVmFsdWVzW10gPQogICAgIHsgImRvbVN0cmluZ0xpc3RGdW5jdGlvbiIsIEpTQzo6RnVuY3Rp
b24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4o
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Eb21TdHJpbmdMaXN0RnVuY3Rpb24pLCAoaW50cHRy
X3QpICgxKSB9IH0sCiAgICAgeyAibWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNl
IiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5h
dGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBbmRXaXRo
b3V0TnVsbGFibGVTZXF1ZW5jZSksIChpbnRwdHJfdCkgKDIpIH0gfSwKICAgICB7ICJtZXRob2RX
aXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2UyIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGFibGVTZXF1ZW5jZTIpLCAoaW50
cHRyX3QpICgyKSB9IH0sCisgICAgeyAibWV0aG9kV2l0aE5lZWRzUHJvY2Vzc2luZ1N0YWNrIiwg
SlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2
ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOZWVkc1Byb2Nl
c3NpbmdTdGFjayksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJnZXRTVkdEb2N1bWVudCIs
IEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRp
dmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTVkdEb2N1bWVudCksIChp
bnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJjb252ZXJ0MSIsIEpTQzo6RnVuY3Rpb24sIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MSksIChpbnRwdHJfdCkgKDEpIH0gfSwKICAgICB7ICJj
b252ZXJ0MiIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0Miks
IChpbnRwdHJfdCkgKDEpIH0gfSwKQEAgLTE3OTYsNiArMTgwMCwxNSBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpIYXNoKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5j
b2RlZEpTVmFsdQogfQogCiAKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yQXR0
cmlidXRlQ2hhbmdlZChFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CisgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKKyAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE9iajo6YXR0cmlidXRl
Q2hhbmdlZCgqc3RhdGUpKTsKK30KKworCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZXBsYWNl
YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CkBAIC00NTg1LDYgKzQ1OTgsMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGEKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5l
ZWRzUHJvY2Vzc2luZ1N0YWNrKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgQ3VzdG9tRWxlbWVu
dExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayBjdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2lu
Z1N0YWNrOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOworICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1Zh
bHVlKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE5lZWRzUHJvY2Vz
c2luZ1N0YWNrIik7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U1Rlc3RPYmo6OmluZm8oKSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBpbXBsLm1ldGhvZFdpdGhOZWVkc1Byb2Nlc3NpbmdTdGFjaygpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTVkdEb2N1bWVudChFeGVjU3Rh
dGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5oCmluZGV4IGVmMTQwOTIuLjlhNmU3NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKQEAgLTU5LDYgKzU5LDcgQEAg
cHVibGljOgogICAgIC8vIEN1c3RvbSBhdHRyaWJ1dGVzCiAgICAgSlNDOjpKU1ZhbHVlIGN1c3Rv
bUF0dHIoSlNDOjpFeGVjU3RhdGUmKSBjb25zdDsKICAgICB2b2lkIHNldEN1c3RvbUF0dHIoSlND
OjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOworICAgIEpTQzo6SlNWYWx1ZSBhdHRyaWJ1dGVD
aGFuZ2VkKEpTQzo6RXhlY1N0YXRlJikgY29uc3Q7CiAKICAgICAvLyBDdXN0b20gZnVuY3Rpb25z
CiAgICAgSlNDOjpKU1ZhbHVlIGN1c3RvbU1ldGhvZChKU0M6OkV4ZWNTdGF0ZSYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCmluZGV4IDll
YjU2MzMuLmViNGQ3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdE9iai5pZGwKQEAgLTI0Myw2ICsyNDMsOCBAQCBlbnVtIF9vcHRpb25hbCB7ICIi
LCAiT3B0aW9uYWxWYWx1ZTEiLCAiT3B0aW9uYWxWYWx1ZTIiLCAiT3B0aW9uYWxWYWx1ZTMiIH07
CiAKICAgICB2b2lkIG1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGFibGVTZXF1ZW5jZShzZXF1ZW5j
ZTx1bnNpZ25lZCBsb25nPiBhcnJheUFyZywgc2VxdWVuY2U8dW5zaWduZWQgbG9uZz4/IG51bGxh
YmxlQXJyYXlBcmcpOwogICAgIHZvaWQgbWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVl
bmNlMih1bnNpZ25lZCBsb25nW10gYXJyYXlBcmcsIHVuc2lnbmVkIGxvbmdbXT8gbnVsbGFibGVB
cnJheUFyZyk7CisKKyAgICBbTmVlZHNQcm9jZXNzaW5nU3RhY2tdIHZvaWQgbWV0aG9kV2l0aE5l
ZWRzUHJvY2Vzc2luZ1N0YWNrKCk7CiAjZW5kaWYKIAogICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9k
ZV0gcmVhZG9ubHkgYXR0cmlidXRlIERvY3VtZW50IGNvbnRlbnREb2N1bWVudDsKQEAgLTI4NSw2
ICsyODcsMTAgQEAgZW51bSBfb3B0aW9uYWwgeyAiIiwgIk9wdGlvbmFsVmFsdWUxIiwgIk9wdGlv
bmFsVmFsdWUyIiwgIk9wdGlvbmFsVmFsdWUzIiB9OwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0
IENPTlNUX1ZBTFVFXzE0ID0gMHgxYWJjOwogICAgIFtSZWZsZWN0PUNPTlNUX0lNUExdIGNvbnN0
IHVuc2lnbmVkIHNob3J0IENPTlNUX0pBVkFTQ1JJUFQgPSAxNTsKIAorI2lmIGRlZmluZWQoVEVT
VElOR19KUykKKyAgICBbQ3VzdG9tXSBzdGF0aWMgcmVhZG9ubHkgYXR0cmlidXRlIFN5bWJvbCBh
dHRyaWJ1dGVDaGFuZ2VkOworI2VuZGlmCisKICAgICBbUmVwbGFjZWFibGVdIHJlYWRvbmx5IGF0
dHJpYnV0ZSBsb25nIHJlcGxhY2VhYmxlQXR0cmlidXRlOwogCiAgICAgdm9pZCB2YXJpYWRpY1N0
cmluZ01ldGhvZChET01TdHJpbmcgaGVhZCwgRE9NU3RyaW5nLi4uIHRhaWwpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaWRsIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaWRsCmluZGV4IGQwOGI2NTkuLjQ5YmMwMTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwKQEAgLTI4LDEz
ICsyOCwxMyBAQAogICAgIEN1c3RvbUVudW1lcmF0ZVByb3BlcnR5LAogICAgIFNraXBWVGFibGVW
YWxpZGF0aW9uLAogXSBpbnRlcmZhY2UgQ1NTU3R5bGVEZWNsYXJhdGlvbiB7Ci0gICAgW1RyZWF0
UmV0dXJuZWROdWxsU3RyaW5nQXM9TnVsbCwgVHJlYXROdWxsQXM9TnVsbFN0cmluZywgU2V0dGVy
UmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNzc1RleHQ7CisgICAgW1RyZWF0
UmV0dXJuZWROdWxsU3RyaW5nQXM9TnVsbCwgVHJlYXROdWxsQXM9TnVsbFN0cmluZywgU2V0dGVy
UmFpc2VzRXhjZXB0aW9uLCBOZWVkc1Byb2Nlc3NpbmdTdGFja10gYXR0cmlidXRlIERPTVN0cmlu
ZyBjc3NUZXh0OwogCiAgICAgRE9NU3RyaW5nIGdldFByb3BlcnR5VmFsdWUoW0RlZmF1bHQ9VW5k
ZWZpbmVkXSBET01TdHJpbmcgcHJvcGVydHlOYW1lKTsKICAgICBbQ3VzdG9tXSBDU1NWYWx1ZSAg
ICAgICAgICAgZ2V0UHJvcGVydHlDU1NWYWx1ZShbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFs
IERPTVN0cmluZyBwcm9wZXJ0eU5hbWUpOwotICAgIFtUcmVhdFJldHVybmVkTnVsbFN0cmluZ0Fz
PU51bGwsIFJhaXNlc0V4Y2VwdGlvbl0gRE9NU3RyaW5nICAgICAgICAgIHJlbW92ZVByb3BlcnR5
KFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIHByb3BlcnR5TmFtZSk7Cisg
ICAgW1RyZWF0UmV0dXJuZWROdWxsU3RyaW5nQXM9TnVsbCwgUmFpc2VzRXhjZXB0aW9uLCBOZWVk
c1Byb2Nlc3NpbmdTdGFja10gRE9NU3RyaW5nICAgICAgICAgIHJlbW92ZVByb3BlcnR5KFtEZWZh
dWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIHByb3BlcnR5TmFtZSk7CiAgICAgW1Ry
ZWF0UmV0dXJuZWROdWxsU3RyaW5nQXM9TnVsbF0gRE9NU3RyaW5nICAgICAgICAgIGdldFByb3Bl
cnR5UHJpb3JpdHkoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJpbmcgcHJvcGVy
dHlOYW1lKTsKLSAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzLCBSYWlzZXNFeGNlcHRp
b25dIHZvaWQgc2V0UHJvcGVydHkoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJp
bmcgcHJvcGVydHlOYW1lLCAKKyAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzLCBSYWlz
ZXNFeGNlcHRpb24sIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSB2b2lkIHNldFByb3BlcnR5KFtEZWZh
dWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIHByb3BlcnR5TmFtZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBEZWZh
dWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIHZhbHVlLCAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3Ry
aW5nIHByaW9yaXR5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVl
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5pZGwKaW5kZXggZjdmNzY2Yy4uNWM2
YTkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaWRsCkBAIC0zMiw3ICszMiw3IEBACiAgICAgY29u
c3QgdW5zaWduZWQgc2hvcnQgQ1NTX1ZBTFVFX0xJU1QgICAgICA9IDI7CiAgICAgY29uc3QgdW5z
aWduZWQgc2hvcnQgQ1NTX0NVU1RPTSAgICAgICAgICA9IDM7CiAKLSAgICBbVHJlYXRSZXR1cm5l
ZE51bGxTdHJpbmdBcz1OdWxsLCBUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBTZXR0ZXJSYWlzZXNF
eGNlcHRpb25dIGF0dHJpYnV0ZSBET01TdHJpbmcgY3NzVGV4dDsKKyAgICBbVHJlYXRSZXR1cm5l
ZE51bGxTdHJpbmdBcz1OdWxsLCBUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBTZXR0ZXJSYWlzZXNF
eGNlcHRpb24sIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNzc1Rl
eHQ7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgY3NzVmFsdWVUeXBl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQXR0ci5pZGwKaW5kZXggZjcxOWQxMy4uMzVhNTFiOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0F0dHIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmlk
bApAQCAtMzAsNyArMzAsNyBAQAogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gc3Bl
Y2lmaWVkOwogCi0gICAgW1RyZWF0UmV0dXJuZWROdWxsU3RyaW5nQXM9TnVsbCwgVHJlYXROdWxs
QXM9TnVsbFN0cmluZywgU2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IHZhbHVlOworICAgIFtUcmVhdFJldHVybmVkTnVsbFN0cmluZ0FzPU51bGwsIFRyZWF0TnVsbEFz
PU51bGxTdHJpbmcsIFNldHRlclJhaXNlc0V4Y2VwdGlvbiwgTmVlZHNQcm9jZXNzaW5nU3RhY2td
IGF0dHJpYnV0ZSBET01TdHJpbmcgdmFsdWU7CiAKICAgICAvLyBET00gTGV2ZWwgMgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ2hhcmFjdGVyRGF0YS5pZGwKaW5kZXggOTlhYjdkMS4uYWQ4YTIyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmlkbApAQCAtMTksMTkgKzE5LDE5IEBACiAKIGludGVy
ZmFjZSBDaGFyYWN0ZXJEYXRhIDogTm9kZSB7CiAKLSAgICBbVHJlYXROdWxsQXM9TnVsbFN0cmlu
ZywgU2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRhdGE7CisgICAg
W1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFNldHRlclJhaXNlc0V4Y2VwdGlvbiwgTmVlZHNQcm9j
ZXNzaW5nU3RhY2tdIGF0dHJpYnV0ZSBET01TdHJpbmcgZGF0YTsKIAogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICAKLSAgICBbVHJlYXRSZXR1cm5lZE51
bGxTdHJpbmdBcz1OdWxsLCBPYmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRlcnMsIFJhaXNlc0V4Y2Vw
dGlvbl0gRE9NU3RyaW5nIHN1YnN0cmluZ0RhdGEodW5zaWduZWQgbG9uZyBvZmZzZXQsIHVuc2ln
bmVkIGxvbmcgbGVuZ3RoKTsKKyAgICBbVHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcz1OdWxsLCBP
YmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRlcnMsIFJhaXNlc0V4Y2VwdGlvbiwgTmVlZHNQcm9jZXNz
aW5nU3RhY2tdIERPTVN0cmluZyBzdWJzdHJpbmdEYXRhKHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1
bnNpZ25lZCBsb25nIGxlbmd0aCk7CiAKLSAgICB2b2lkIGFwcGVuZERhdGEoRE9NU3RyaW5nIGRh
dGEpOworICAgIFtOZWVkc1Byb2Nlc3NpbmdTdGFja10gdm9pZCBhcHBlbmREYXRhKERPTVN0cmlu
ZyBkYXRhKTsKIAotICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRlcnMsIFJhaXNlc0V4Y2Vw
dGlvbl0gdm9pZCBpbnNlcnREYXRhKHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBET01TdHJpbmcgZGF0
YSk7CisgICAgW09iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVycywgUmFpc2VzRXhjZXB0aW9uLCBO
ZWVkc1Byb2Nlc3NpbmdTdGFja10gdm9pZCBpbnNlcnREYXRhKHVuc2lnbmVkIGxvbmcgb2Zmc2V0
LCBET01TdHJpbmcgZGF0YSk7CiAKLSAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzLCBS
YWlzZXNFeGNlcHRpb25dIHZvaWQgZGVsZXRlRGF0YSh1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5z
aWduZWQgbG9uZyBsZW5ndGgpOworICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRlcnMsIFJh
aXNlc0V4Y2VwdGlvbiwgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIHZvaWQgZGVsZXRlRGF0YSh1bnNp
Z25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBsZW5ndGgpOwogCi0gICAgW09iakNMZWdh
Y3lVbm5hbWVkUGFyYW1ldGVycywgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHJlcGxhY2VEYXRhKHVu
c2lnbmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIGxlbmd0aCwgRE9NU3RyaW5nIGRhdGEp
OworICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRlcnMsIFJhaXNlc0V4Y2VwdGlvbiwgTmVl
ZHNQcm9jZXNzaW5nU3RhY2tdIHZvaWQgcmVwbGFjZURhdGEodW5zaWduZWQgbG9uZyBvZmZzZXQs
IHVuc2lnbmVkIGxvbmcgbGVuZ3RoLCBET01TdHJpbmcgZGF0YSk7CiB9OwogCiBDaGFyYWN0ZXJE
YXRhIGltcGxlbWVudHMgQ2hpbGROb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0NoaWxkTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlLmlkbAppbmRleCAw
ZjMxYzU2Li43ODA5MzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGROb2Rl
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlLmlkbApAQCAtMjcsNSArMjcs
NSBAQAogICAgIFtVbnNjb3BlYWJsZSwgUmFpc2VzRXhjZXB0aW9uLCBDdXN0b21dIHZvaWQgYWZ0
ZXIoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7CiAgICAgW1Vuc2NvcGVhYmxlLCBSYWlz
ZXNFeGNlcHRpb24sIEN1c3RvbV0gdm9pZCByZXBsYWNlV2l0aCgoTm9kZSBvciBET01TdHJpbmcp
Li4uIG5vZGVzKTsKICNlbmRpZgotICAgIFtVbnNjb3BlYWJsZSwgUmFpc2VzRXhjZXB0aW9uXSB2
b2lkIHJlbW92ZSgpOworICAgIFtVbnNjb3BlYWJsZSwgUmFpc2VzRXhjZXB0aW9uLCBOZWVkc1By
b2Nlc3NpbmdTdGFja10gdm9pZCByZW1vdmUoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ3VzdG9tRWxlbWVudERlZmluaXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DdXN0b21FbGVtZW50RGVmaW5pdGlvbnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjI0NzBkNDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q3VzdG9tRWxlbWVudERlZmluaXRpb25zLmNwcApAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJDdXN0b21FbGVtZW50RGVmaW5pdGlvbnMuaCIKKworI2luY2x1ZGUgIkN1c3Rv
bUVsZW1lbnRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCisjaW5jbHVkZSA8d3RmL3RleHQv
QXRvbWljU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ3VzdG9tRWxlbWVudERl
ZmluaXRpb25zOjpOYW1lU3RhdHVzIEN1c3RvbUVsZW1lbnREZWZpbml0aW9uczo6Y2hlY2tOYW1l
KGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSkKK3sKKyAgICBib29sIGNvbnRhaW5zSHlwaGVu
ID0gZmFsc2U7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRhZ05hbWUubGVuZ3RoKCk7
IGkrKykgeworICAgICAgICBpZiAoaXNBU0NJSVVwcGVyKHRhZ05hbWVbaV0pKQorICAgICAgICAg
ICAgcmV0dXJuIE5hbWVTdGF0dXM6OkNvbnRhaW5zVXBwZXJDYXNlOworICAgICAgICBlbHNlIGlm
ICh0YWdOYW1lW2ldID09ICctJykKKyAgICAgICAgICAgIGNvbnRhaW5zSHlwaGVuID0gdHJ1ZTsK
KyAgICB9CisgICAgCisgICAgaWYgKCFjb250YWluc0h5cGhlbikKKyAgICAgICAgcmV0dXJuIE5h
bWVTdGF0dXM6Ok5vSHlwaGVuOworICAgIAorICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgdGFr
aW5nIHRoZSBhZHZhbnRhZ2Ugb2YgUXVhbGlmaWVkTmFtZXMgaW4gU1ZHIGFuZCBNYXRoTUwuCisg
ICAgaWYgKHRhZ05hbWUgPT0gImFubm90YXRpb24teG1sIgorICAgICAgICB8fCB0YWdOYW1lID09
ICJjb2xvci1wcm9maWxlIgorICAgICAgICB8fCB0YWdOYW1lID09ICJmb250LWZhY2UiCisgICAg
ICAgIHx8IHRhZ05hbWUgPT0gImZvbnQtZmFjZS1zcmMiCisgICAgICAgIHx8IHRhZ05hbWUgPT0g
ImZvbnQtZmFjZS11cmkiCisgICAgICAgIHx8IHRhZ05hbWUgPT0gImZvbnQtZmFjZS1mb3JtYXQi
CisgICAgICAgIHx8IHRhZ05hbWUgPT0gImZvbnQtZmFjZS1uYW1lIgorICAgICAgICB8fCB0YWdO
YW1lID09ICJtaXNzaW5nLWdseXBoIikKKyAgICAgICAgcmV0dXJuIE5hbWVTdGF0dXM6OkNvbmZs
aWN0c1dpdGhCdWlsdGluTmFtZXM7CisKKyAgICByZXR1cm4gTmFtZVN0YXR1czo6VmFsaWQ7Cit9
CisKK2Jvb2wgQ3VzdG9tRWxlbWVudERlZmluaXRpb25zOjpkZWZpbmVFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIGZ1bGxOYW1lLCBSZWY8Q3VzdG9tRWxlbWVudEludGVyZmFjZT4mJiBpbnRl
cmZhY2UpCit7CisgICAgYXV0byogY29uc3RydWN0b3IgPSBpbnRlcmZhY2UtPmNvbnN0cnVjdG9y
KCk7CisKKyAgICBBU1NFUlQobV9uYW1lTWFwLmZpbmQoZnVsbE5hbWUubG9jYWxOYW1lKCkpID09
IG1fbmFtZU1hcC5lbmQoKSk7CisgICAgbV9uYW1lTWFwLmFkZChmdWxsTmFtZS5sb2NhbE5hbWUo
KSwgQ3VzdG9tRWxlbWVudEluZm8oZnVsbE5hbWUsIFdURjo6bW92ZShpbnRlcmZhY2UpKSk7CisK
KyAgICBhdXRvIGl0ID0gbV9jb25zdHJ1Y3Rvck1hcC5hZGQoY29uc3RydWN0b3IsIGZ1bGxOYW1l
KTsKKyAgICBpZiAoIWl0LmlzTmV3RW50cnkpCisgICAgICAgIGl0Lml0ZXJhdG9yLT52YWx1ZSA9
IG51bGxRTmFtZSgpOyAvLyBUaGUgaW50ZXJmYWNlIGhhcyBhbHJlYWR5IGJlZW4gdXNlZCB0byBk
ZWZpbmUgYW5vdGhlciBlbGVtZW50LgorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK1JlZlB0cjxF
bGVtZW50PiBDdXN0b21FbGVtZW50RGVmaW5pdGlvbnM6OmNyZWF0ZUN1c3RvbUVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKK3sKKyAgICBhdXRvKiBpbnRlcmZhY2UgPSBmaW5kSW50
ZXJmYWNlKG5hbWUpOworICAgIGlmICghaW50ZXJmYWNlKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICByZXR1cm4gaW50ZXJmYWNlLT5jb25zdHJ1Y3QobmFtZS5sb2NhbE5hbWUoKSk7Cit9
CisKK0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UqIEN1c3RvbUVsZW1lbnREZWZpbml0aW9uczo6Zmlu
ZEludGVyZmFjZShjb25zdCBRdWFsaWZpZWROYW1lJiBmdWxsTmFtZSkgY29uc3QKK3sKKyAgICBh
dXRvIGl0ID0gbV9uYW1lTWFwLmZpbmQoZnVsbE5hbWUubG9jYWxOYW1lKCkpOworICAgIHJldHVy
biBpdCA9PSBtX25hbWVNYXAuZW5kKCkgfHwgaXQtPnZhbHVlLmZ1bGxOYW1lICE9IGZ1bGxOYW1l
ID8gbnVsbHB0ciA6IGl0LT52YWx1ZS5pbnRlcmZhY2UuZ2V0KCk7Cit9CisKK0N1c3RvbUVsZW1l
bnRJbnRlcmZhY2UqIEN1c3RvbUVsZW1lbnREZWZpbml0aW9uczo6ZmluZEludGVyZmFjZShjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0Cit7CisgICAgYXV0byBpdCA9IG1fbmFtZU1hcC5m
aW5kKG5hbWUpOworICAgIHJldHVybiBpdCA9PSBtX25hbWVNYXAuZW5kKCkgPyBudWxscHRyIDog
aXQtPnZhbHVlLmludGVyZmFjZS5nZXQoKTsKK30KKworY29uc3QgUXVhbGlmaWVkTmFtZSYgQ3Vz
dG9tRWxlbWVudERlZmluaXRpb25zOjpmaW5kTmFtZShjb25zdCBKU0M6OkpTT2JqZWN0KiBjb25z
dHJ1Y3RvcikgY29uc3QKK3sKKyAgICBhdXRvIGl0ID0gbV9jb25zdHJ1Y3Rvck1hcC5maW5kKGNv
bnN0cnVjdG9yKTsKKyAgICByZXR1cm4gaXQgPT0gbV9jb25zdHJ1Y3Rvck1hcC5lbmQoKSA/IG51
bGxRTmFtZSgpIDogaXQtPnZhbHVlOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ3VzdG9tRWxlbWVudERlZmluaXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3Vz
dG9tRWxlbWVudERlZmluaXRpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMWM4ZTJiZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21F
bGVtZW50RGVmaW5pdGlvbnMuaApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIkN1c3RvbUVsZW1lbnRJbnRlcmZh
Y2UuaCIKKyNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9BdG9taWNTdHJpbmdIYXNoLmg+CisKKyNpZm5kZWYgQ3VzdG9tRWxlbWVudERlZmluaXRpb25z
X2gKKyNkZWZpbmUgQ3VzdG9tRWxlbWVudERlZmluaXRpb25zX2gKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEpTT2JqZWN0OworCit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
Q3VzdG9tRWxlbWVudEludGVyZmFjZTsKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBRdWFsaWZpZWRO
YW1lOworCitjbGFzcyBDdXN0b21FbGVtZW50RGVmaW5pdGlvbnMgeworcHVibGljOgorICAgIGJv
b2wgZGVmaW5lRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBmdWxsTmFtZSwgUmVmPEN1c3Rv
bUVsZW1lbnRJbnRlcmZhY2U+JiYgaW50ZXJmYWNlKTsKKworICAgIEN1c3RvbUVsZW1lbnRJbnRl
cmZhY2UqIGZpbmRJbnRlcmZhY2UoY29uc3QgUXVhbGlmaWVkTmFtZSYgZnVsbE5hbWUpIGNvbnN0
OworICAgIEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UqIGZpbmRJbnRlcmZhY2UoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lKSBjb25zdDsKKyAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBmaW5kTmFtZShj
b25zdCBKU0M6OkpTT2JqZWN0KikgY29uc3Q7CisKKyAgICBSZWZQdHI8RWxlbWVudD4gY3JlYXRl
Q3VzdG9tRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJik7CisKKyAgICBlbnVtIGNsYXNzIE5h
bWVTdGF0dXMgeyBWYWxpZCwgQ29uZmxpY3RzV2l0aEJ1aWx0aW5OYW1lcywgTm9IeXBoZW4sIENv
bnRhaW5zVXBwZXJDYXNlIH07CisgICAgc3RhdGljIE5hbWVTdGF0dXMgY2hlY2tOYW1lKGNvbnN0
IEF0b21pY1N0cmluZyYgdGFnTmFtZSk7CisKK3ByaXZhdGU6CisgICAgY2xhc3MgQ3VzdG9tRWxl
bWVudEluZm8geworICAgIHB1YmxpYzoKKyAgICAgICAgUXVhbGlmaWVkTmFtZSBmdWxsTmFtZTsK
KyAgICAgICAgUmVmUHRyPEN1c3RvbUVsZW1lbnRJbnRlcmZhY2U+IGludGVyZmFjZTsKKworICAg
ICAgICBDdXN0b21FbGVtZW50SW5mbygpCisgICAgICAgICAgICA6IGZ1bGxOYW1lKG51bGxRTmFt
ZSgpKQorICAgICAgICB7IH0KKworICAgICAgICBDdXN0b21FbGVtZW50SW5mbyhjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBSZWY8Q3VzdG9tRWxlbWVudEludGVyZmFjZT4mJiBpbnRlcmZhY2Up
CisgICAgICAgICAgICA6IGZ1bGxOYW1lKG5hbWUpCisgICAgICAgICAgICAsIGludGVyZmFjZShX
VEY6Om1vdmUoaW50ZXJmYWNlKSkKKyAgICAgICAgeyB9CisgICAgfTsKKworICAgIEhhc2hNYXA8
QXRvbWljU3RyaW5nLCBDdXN0b21FbGVtZW50SW5mbz4gbV9uYW1lTWFwOworICAgIEhhc2hNYXA8
Y29uc3QgSlNDOjpKU09iamVjdCosIFF1YWxpZmllZE5hbWU+IG1fY29uc3RydWN0b3JNYXA7Cit9
OworCit9CisKKyNlbmRpZiAvKiBDdXN0b21FbGVtZW50RGVmaW5pdGlvbnNfaCAqLwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50SW50ZXJmYWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNTY3YWRkNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9DdXN0b21FbGVtZW50SW50ZXJmYWNlLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ3VzdG9tRWxl
bWVudEludGVyZmFjZV9oCisjZGVmaW5lIEN1c3RvbUVsZW1lbnRJbnRlcmZhY2VfaAorCisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBK
U09iamVjdDsKKworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEVsZW1lbnQ7Citj
bGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCitjbGFzcyBDdXN0b21FbGVtZW50SW50ZXJm
YWNlIDogcHVibGljIFJlZkNvdW50ZWQ8Q3VzdG9tRWxlbWVudEludGVyZmFjZT4geworcHVibGlj
OgorICAgIHZpcnR1YWwgfkN1c3RvbUVsZW1lbnRJbnRlcmZhY2UoKSB7IH0KKworICAgIHZpcnR1
YWwgUmVmUHRyPEVsZW1lbnQ+IGNvbnN0cnVjdChjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChFbGVtZW50JiBlbGVtZW50
LCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
b2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpID0gMDsKKworICAgIHZpcnR1
YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIEpTQzo6SlNPYmplY3QqIGNvbnN0cnVjdG9yKCkgPSAwOworfTsK
KworfQorCisjZW5kaWYgLy8gQ3VzdG9tRWxlbWVudEludGVyZmFjZV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAppbmRleCA4YzEwZDBlLi5kMjBhZDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
QEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJDb21tZW50LmgiCiAjaW5jbHVkZSAiQ29udGVu
dFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiQ29va2llSmFyLmgiCisjaW5jbHVkZSAiQ3Vz
dG9tRWxlbWVudERlZmluaXRpb25zLmgiCiAjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIK
ICNpbmNsdWRlICJET01OYW1lZEZsb3dDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93
LmgiCkBAIC05OCw2ICs5OSw3IEBACiAjaW5jbHVkZSAiSlNMYXp5RXZlbnRMaXN0ZW5lci5oIgog
I2luY2x1ZGUgIkpTTW9kdWxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKKyNpbmNs
dWRlICJMaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmgiCiAjaW5jbHVkZSAiTG9hZGVyU3RyYXRlZ3ku
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCkBAIC02MjEw
LDYgKzYyMTIsMTMgQEAgdW5zaWduZWQgRG9jdW1lbnQ6OnRvdWNoRXZlbnRIYW5kbGVyQ291bnQo
KSBjb25zdAogI2VuZGlmCiB9CiAKK0N1c3RvbUVsZW1lbnREZWZpbml0aW9ucyYgRG9jdW1lbnQ6
OmVuc3VyZUN1c3RvbUVsZW1lbnREZWZpbml0aW9ucygpCit7CisgICAgaWYgKCFtX2N1c3RvbUVs
ZW1lbnREZWZpbml0aW9ucykKKyAgICAgICAgbV9jdXN0b21FbGVtZW50RGVmaW5pdGlvbnMgPSBz
dGQ6Om1ha2VfdW5pcXVlPEN1c3RvbUVsZW1lbnREZWZpbml0aW9ucz4oKTsKKyAgICByZXR1cm4g
Km1fY3VzdG9tRWxlbWVudERlZmluaXRpb25zOworfQorCiBMYXlvdXRSZWN0IERvY3VtZW50Ojph
YnNvbHV0ZUV2ZW50SGFuZGxlckJvdW5kcyhib29sJiBpbmNsdWRlc0ZpeGVkUG9zaXRpb25FbGVt
ZW50cykKIHsKICAgICBpbmNsdWRlc0ZpeGVkUG9zaXRpb25FbGVtZW50cyA9IGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAppbmRleCA5NzZjZGExLi5jN2NkMjAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aApAQCAtODAsNiArODAsOCBAQCBjbGFzcyBDYWNoZWRTY3JpcHQ7CiBjbGFzcyBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0OwogY2xhc3MgQ2hhcmFjdGVyRGF0YTsKIGNsYXNzIENvbW1lbnQ7CitjbGFz
cyBDdXN0b21FbGVtZW50RGVmaW5pdGlvbnM7CitjbGFzcyBDdXN0b21FbGVtZW50SW50ZXJmYWNl
OwogY2xhc3MgRE9NSW1wbGVtZW50YXRpb247CiBjbGFzcyBET01OYW1lZEZsb3dDb2xsZWN0aW9u
OwogY2xhc3MgRE9NU2VsZWN0aW9uOwpAQCAtMTIxMCw2ICsxMjEyLDkgQEAgcHVibGljOgogI2Vu
ZGlmCiAgICAgfQogCisgICAgQ3VzdG9tRWxlbWVudERlZmluaXRpb25zKiBjdXN0b21FbGVtZW50
RGVmaW5pdGlvbnMoKSB7IHJldHVybiBtX2N1c3RvbUVsZW1lbnREZWZpbml0aW9ucy5nZXQoKTsg
fQorICAgIEN1c3RvbUVsZW1lbnREZWZpbml0aW9ucyYgZW5zdXJlQ3VzdG9tRWxlbWVudERlZmlu
aXRpb25zKCk7CisKICAgICBjb25zdCBFdmVudFRhcmdldFNldCogd2hlZWxFdmVudFRhcmdldHMo
KSBjb25zdCB7IHJldHVybiBtX3doZWVsRXZlbnRUYXJnZXRzLmdldCgpOyB9CiAKICAgICB0eXBl
ZGVmIHN0ZDo6cGFpcjxSZWdpb24sIGJvb2w+IFJlZ2lvbkZpeGVkUGFpcjsKQEAgLTE3MzEsNiAr
MTczNiw4IEBAIHByaXZhdGU6CiAgICAgRG9jdW1lbnQqIG1fdGVtcGxhdGVEb2N1bWVudEhvc3Q7
IC8vIE1hbnVhbGx5IG1hbmFnZWQgd2Vha3JlZiAoYmFja3BvaW50ZXIgZnJvbSBtX3RlbXBsYXRl
RG9jdW1lbnQpLgogI2VuZGlmCiAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3VzdG9tRWxlbWVudERl
ZmluaXRpb25zPiBtX2N1c3RvbUVsZW1lbnREZWZpbml0aW9uczsKKwogICAgIFJlZlB0cjxDU1NG
b250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9yOwogCiAjaWYgRU5BQkxFKEZPTlRfTE9BRF9FVkVO
VFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAppbmRleCBlMjZlYzA0Li4yNjY1NTZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5pZGwKQEAgLTMxLDcgKzMxLDcgQEAKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NSW1wbGVtZW50YXRpb24gaW1wbGVtZW50YXRpb247CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIEVsZW1lbnQgZG9jdW1lbnRFbGVtZW50OwogCi0gICAgW05ld09iamVjdCwgUmFpc2VzRXhj
ZXB0aW9uXSBFbGVtZW50IGNyZWF0ZUVsZW1lbnQoRE9NU3RyaW5nIHRhZ05hbWUpOworICAgIFtO
ZXdPYmplY3QsIFJhaXNlc0V4Y2VwdGlvbiwgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIEVsZW1lbnQg
Y3JlYXRlRWxlbWVudChET01TdHJpbmcgdGFnTmFtZSk7CiAgICAgW05ld09iamVjdF0gRG9jdW1l
bnRGcmFnbWVudCAgIGNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICBbTmV3T2JqZWN0XSBU
ZXh0IGNyZWF0ZVRleHROb2RlKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5n
IGRhdGEpOwogICAgIFtOZXdPYmplY3RdIENvbW1lbnQgY3JlYXRlQ29tbWVudChbRGVmYXVsdD1V
bmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyBkYXRhKTsKQEAgLTUyLDkgKzUyLDEwIEBACiAK
ICAgICAvLyBJbnRyb2R1Y2VkIGluIERPTSBMZXZlbCAyOgogCi0gICAgW09iakNMZWdhY3lVbm5h
bWVkUGFyYW1ldGVycywgTmV3T2JqZWN0LCBSYWlzZXNFeGNlcHRpb25dIE5vZGUgaW1wb3J0Tm9k
ZShbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIE5vZGUgaW1wb3J0ZWROb2RlLAorICAgIFtP
YmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRlcnMsIE5ld09iamVjdCwgUmFpc2VzRXhjZXB0aW9uLCBO
ZWVkc1Byb2Nlc3NpbmdTdGFja10KKyAgICBOb2RlIGltcG9ydE5vZGUoW0RlZmF1bHQ9VW5kZWZp
bmVkXSBvcHRpb25hbCBOb2RlIGltcG9ydGVkTm9kZSwKICAgICAgICAgICAgICAgICAgICAgb3B0
aW9uYWwgYm9vbGVhbiBkZWVwKTsKLSAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzLCBO
ZXdPYmplY3QsIFJhaXNlc0V4Y2VwdGlvbl0gRWxlbWVudCBjcmVhdGVFbGVtZW50TlMoW1RyZWF0
TnVsbEFzPU51bGxTdHJpbmcsRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyBu
YW1lc3BhY2VVUkksCisgICAgW09iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVycywgTmV3T2JqZWN0
LCBSYWlzZXNFeGNlcHRpb24sIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSBFbGVtZW50IGNyZWF0ZUVs
ZW1lbnROUyhbVHJlYXROdWxsQXM9TnVsbFN0cmluZyxEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9u
YWwgRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
VHJlYXROdWxsQXM9TnVsbFN0cmluZyxEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3Ry
aW5nIHF1YWxpZmllZE5hbWUpOwogICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRlcnMsIE5l
d09iamVjdCwgUmFpc2VzRXhjZXB0aW9uXSBBdHRyIGNyZWF0ZUF0dHJpYnV0ZU5TKFtUcmVhdE51
bGxBcz1OdWxsU3RyaW5nLERlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJpbmcgbmFt
ZXNwYWNlVVJJLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbVHJlYXROdWxsQXM9TnVsbFN0cmluZyxEZWZh
dWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpOwpAQCAtNzAs
MTAgKzcxLDEwIEBACiAgICAgW0ltcGxlbWVudGVkQXM9Y2hhcmFjdGVyU2V0V2l0aFVURjhGYWxs
YmFja10gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBpbnB1dEVuY29kaW5nOwogCiAgICAg
W1RyZWF0UmV0dXJuZWROdWxsU3RyaW5nQXM9TnVsbF0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZyB4bWxFbmNvZGluZzsKLSAgICBbVHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcz1OdWxsLCBU
cmVhdE51bGxBcz1OdWxsU3RyaW5nLCBTZXR0ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSBE
T01TdHJpbmcgeG1sVmVyc2lvbjsKLSAgICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1
dGUgYm9vbGVhbiB4bWxTdGFuZGFsb25lOworICAgIFtUcmVhdFJldHVybmVkTnVsbFN0cmluZ0Fz
PU51bGwsIFRyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFNldHRlclJhaXNlc0V4Y2VwdGlvbiwgTmVl
ZHNQcm9jZXNzaW5nU3RhY2tdIGF0dHJpYnV0ZSBET01TdHJpbmcgeG1sVmVyc2lvbjsKKyAgICBb
U2V0dGVyUmFpc2VzRXhjZXB0aW9uLCBOZWVkc1Byb2Nlc3NpbmdTdGFja10gYXR0cmlidXRlIGJv
b2xlYW4geG1sU3RhbmRhbG9uZTsKIAotICAgIFtSYWlzZXNFeGNlcHRpb25dIE5vZGUgICAgICAg
ICAgICAgICBhZG9wdE5vZGUoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBOb2RlIHNvdXJj
ZSk7CisgICAgW1JhaXNlc0V4Y2VwdGlvbiwgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIE5vZGUgICAg
ICAgICAgICAgICBhZG9wdE5vZGUoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBOb2RlIHNv
dXJjZSk7CiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSAmJiBMQU5HVUFHRV9P
QkpFQ1RJVkVfQyB8fCBkZWZpbmVkKExBTkdVQUdFX0dPQkpFQ1QpICYmIExBTkdVQUdFX0dPQkpF
Q1QKICAgICAvLyBkb2N1bWVudC5kb2N1bWVudFVSSSB3YXMgd3JpdGFibGUgaW4gRE9NMyBDb3Jl
LCBidXQgaXMgcmVhZC1vbmx5IGluIERPTTQKQEAgLTEyOSwxNyArMTMwLDE3IEBACiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBjb250ZW50VHlwZTsKIAogICAgIC8vIERPTSBMZXZl
bCAzIFhQYXRoIChYUGF0aEV2YWx1YXRvciBpbnRlcmZhY2UpCi0gICAgW09iakNMZWdhY3lVbm5h
bWVkUGFyYW1ldGVycywgUmFpc2VzRXhjZXB0aW9uXSBYUGF0aEV4cHJlc3Npb24gY3JlYXRlRXhw
cmVzc2lvbihbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyBleHByZXNzaW9u
LAorICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRlcnMsIFJhaXNlc0V4Y2VwdGlvbiwgTmVl
ZHNQcm9jZXNzaW5nU3RhY2tdIFhQYXRoRXhwcmVzc2lvbiBjcmVhdGVFeHByZXNzaW9uKFtEZWZh
dWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIGV4cHJlc3Npb24sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0RlZmF1bHQ9VW5kZWZp
bmVkXSBvcHRpb25hbCBYUGF0aE5TUmVzb2x2ZXIgcmVzb2x2ZXIpOwogICAgIFhQYXRoTlNSZXNv
bHZlciAgICBjcmVhdGVOU1Jlc29sdmVyKE5vZGUgbm9kZVJlc29sdmVyKTsKLSAgICBbT2JqQ0xl
Z2FjeVVubmFtZWRQYXJhbWV0ZXJzLCBSYWlzZXNFeGNlcHRpb25dIFhQYXRoUmVzdWx0IGV2YWx1
YXRlKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIGV4cHJlc3Npb24sCisg
ICAgW09iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVycywgUmFpc2VzRXhjZXB0aW9uLCBOZWVkc1By
b2Nlc3NpbmdTdGFja10gWFBhdGhSZXN1bHQgZXZhbHVhdGUoW0RlZmF1bHQ9VW5kZWZpbmVkXSBv
cHRpb25hbCBET01TdHJpbmcgZXhwcmVzc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBOb2Rl
IGNvbnRleHROb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIFhQYXRoTlNSZXNvbHZlciByZXNv
bHZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
W0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCB0eXBlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbRGVmYXVsdD1VbmRl
ZmluZWRdIG9wdGlvbmFsIFhQYXRoUmVzdWx0IGluUmVzdWx0KTsKIAogICAgIC8vIENvbW1vbiBl
eHRlbnNpb25zCi0gICAgYm9vbGVhbiAgICAgICAgICAgIGV4ZWNDb21tYW5kKFtEZWZhdWx0PVVu
ZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIGNvbW1hbmQsCisgICAgW05lZWRzUHJvY2Vzc2lu
Z1N0YWNrXSBib29sZWFuICAgICAgICAgICAgZXhlY0NvbW1hbmQoW0RlZmF1bHQ9VW5kZWZpbmVk
XSBvcHRpb25hbCBET01TdHJpbmcgY29tbWFuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBib29sZWFuIHVzZXJJbnRlcmZh
Y2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtUcmVhdE51bGxBcz1OdWxs
U3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJpbmcsIERlZmF1bHQ9VW5kZWZpbmVkXSBv
cHRpb25hbCBET01TdHJpbmcgdmFsdWUpOwogCkBAIC0xNTgsNyArMTU5LDcgQEAKIAogICAgIC8v
IE1vdmVkIGRvd24gZnJvbSBIVE1MRG9jdW1lbnQKIAotICAgICAgICAgICAgIFtUcmVhdE51bGxB
cz1OdWxsU3RyaW5nXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHRpdGxlOworICAgIFtUcmVhdE51bGxB
cz1OdWxsU3RyaW5nLCBOZWVkc1Byb2Nlc3NpbmdTdGFja10gYXR0cmlidXRlIERPTVN0cmluZyB0
aXRsZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHJlZmVycmVyOwogI2lmIGRl
ZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVAogICAgIFtU
cmVhdE51bGxBcz1OdWxsU3RyaW5nLCBTZXR0ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSBE
T01TdHJpbmcgZG9tYWluOwpAQCAtMTY5LDcgKzE3MCw3IEBACiAKICAgICBbVHJlYXROdWxsQXM9
TnVsbFN0cmluZywgR2V0dGVyUmFpc2VzRXhjZXB0aW9uLCBTZXR0ZXJSYWlzZXNFeGNlcHRpb25d
IGF0dHJpYnV0ZSBET01TdHJpbmcgY29va2llOwogCi0gICAgW1NldHRlclJhaXNlc0V4Y2VwdGlv
biwgSW1wbGVtZW50ZWRBcz1ib2R5T3JGcmFtZXNldCwgU3RyaWN0VHlwZUNoZWNraW5nXSBhdHRy
aWJ1dGUgSFRNTEVsZW1lbnQgYm9keTsKKyAgICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9uLCBJbXBs
ZW1lbnRlZEFzPWJvZHlPckZyYW1lc2V0LCBTdHJpY3RUeXBlQ2hlY2tpbmcsIE5lZWRzUHJvY2Vz
c2luZ1N0YWNrXSBhdHRyaWJ1dGUgSFRNTEVsZW1lbnQgYm9keTsKIAogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBIVE1MSGVhZEVsZW1lbnQgaGVhZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRN
TENvbGxlY3Rpb24gaW1hZ2VzOwpAQCAtMTg3LDcgKzE4OCw3IEBACiAKICAgICAvLyBJRSBleHRl
bnNpb25zCiAKLSAgICAgICAgICAgICBbVHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcz1VbmRlZmlu
ZWQsIFRyZWF0TnVsbEFzPU51bGxTdHJpbmddIGF0dHJpYnV0ZSBET01TdHJpbmcgY2hhcnNldDsK
KyAgICAgICAgW1RyZWF0UmV0dXJuZWROdWxsU3RyaW5nQXM9VW5kZWZpbmVkLCBUcmVhdE51bGxB
cz1OdWxsU3RyaW5nXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNoYXJzZXQ7CiAgICAgW1RyZWF0UmV0
dXJuZWROdWxsU3RyaW5nQXM9VW5kZWZpbmVkXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IGRlZmF1bHRDaGFyc2V0OwogICAgIFtUcmVhdFJldHVybmVkTnVsbFN0cmluZ0FzPVVuZGVmaW5l
ZF0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyByZWFkeVN0YXRlOwogCkBAIC0yMjcsNyAr
MjI4LDcgQEAKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpIHx8
ICFMQU5HVUFHRV9PQkpFQ1RJVkVfQwotICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgZ2V0Q1NT
Q2FudmFzQ29udGV4dChET01TdHJpbmcgY29udGV4dElkLCBET01TdHJpbmcgbmFtZSwgbG9uZyB3
aWR0aCwgbG9uZyBoZWlnaHQpOworICAgIFtOZWVkc1Byb2Nlc3NpbmdTdGFja10gQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dCBnZXRDU1NDYW52YXNDb250ZXh0KERPTVN0cmluZyBjb250ZXh0SWQsIERP
TVN0cmluZyBuYW1lLCBsb25nIHdpZHRoLCBsb25nIGhlaWdodCk7CiAjZW5kaWYKIAogICAgIC8v
IEhUTUwgNQpAQCAtMjgxLDYgKzI4MiwxMSBAQAogICAgIFtOZXdPYmplY3QsIEN1c3RvbSwgUmFp
c2VzRXhjZXB0aW9uXSBUb3VjaExpc3QgY3JlYXRlVG91Y2hMaXN0KCk7CiAjZW5kaWYKIAorICAg
IC8vIEN1c3RvbSBlbGVtZW50cworI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkgJiYg
TEFOR1VBR0VfSkFWQVNDUklQVAorICAgIFtDdXN0b20sIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCBk
ZWZpbmVDdXN0b21FbGVtZW50KERPTVN0cmluZyB0YWdOYW1lLCBDdXN0b21FbGVtZW50SW50ZXJm
YWNlIGVsZW1lbnRJbnRlcmZhY2UpOworI2VuZGlmCisKICAgICAvLyBQYWdlIHZpc2liaWxpdHkg
QVBJLgogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdmlzaWJpbGl0eVN0YXRlOwog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGhpZGRlbjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAppbmRleCA5OGE2MTBmLi4yNTUzZTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0zNSw2
ICszNSw4IEBACiAjaW5jbHVkZSAiQ2xpZW50UmVjdExpc3QuaCIKICNpbmNsdWRlICJDb21wb3Nl
ZFRyZWVBbmNlc3Rvckl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZUFsZ29yaXRo
bXMuaCIKKyNpbmNsdWRlICJDdXN0b21FbGVtZW50RGVmaW5pdGlvbnMuaCIKKyNpbmNsdWRlICJD
dXN0b21FbGVtZW50SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiRE9NVG9rZW5MaXN0LmgiCiAjaW5j
bHVkZSAiRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIkRvY3VtZW50U2hhcmVkT2JqZWN0UG9vbC5o
IgpAQCAtNTcsNiArNTksNyBAQAogI2luY2x1ZGUgIkhUTUxUZW1wbGF0ZUVsZW1lbnQuaCIKICNp
bmNsdWRlICJJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2
ZW50LmgiCisjaW5jbHVkZSAiTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5oIgogI2luY2x1ZGUgIk1h
aW5GcmFtZS5oIgogI2luY2x1ZGUgIk11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmgiCiAj
aW5jbHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKQEAgLTg2LDYgKzg5LDcgQEAKICNpbmNsdWRlICJY
TUxOYW1lcy5oIgogI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiCiAjaW5jbHVkZSAibWFya3VwLmgi
CisjaW5jbHVkZSA8cnVudGltZS9Qcml2YXRlTmFtZS5oPgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CkBAIC0xMjUwLDYgKzEyNTQsMTQgQEAgdm9pZCBFbGVtZW50OjphdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgb2wK
IAogICAgIGRvY3VtZW50KCkuaW5jRE9NVHJlZVZlcnNpb24oKTsKIAorICAgIEFTU0VSVChMaWZl
Y3ljbGVDYWxsYmFja1F1ZXVlOjppc1Byb2Nlc3NpbmdTdGFja1ByZXNlbnRPck5vdENhbGxlZEZy
b21KYXZhU2NyaXB0KGRvY3VtZW50KCkpKTsKKyAgICBpZiAoVU5MSUtFTFkoaXNDdXN0b21FbGVt
ZW50KCkpKSB7CisgICAgICAgIGF1dG8qIGRlZmluaXRpb25zID0gZG9jdW1lbnQoKS5jdXN0b21F
bGVtZW50RGVmaW5pdGlvbnMoKTsKKyAgICAgICAgYXV0byogaW50ZXJmYWNlID0gZGVmaW5pdGlv
bnMtPmZpbmRJbnRlcmZhY2UodGFnUU5hbWUoKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlu
dGVyZmFjZSk7CisgICAgICAgIExpZmVjeWNsZUNhbGxiYWNrUXVldWU6OmVucXVldWVBdHRyaWJ1
dGVDaGFuZ2VkKCp0aGlzLCAqaW50ZXJmYWNlLCBuYW1lLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOwor
ICAgIH0KKwogICAgIGlmICh2YWx1ZUlzU2FtZUFzQmVmb3JlKQogICAgICAgICByZXR1cm47CiAK
QEAgLTE0MDUsNiArMTQxNywxMyBAQCBSZWY8UmVuZGVyU3R5bGU+IEVsZW1lbnQ6OnJlc29sdmVT
dHlsZShSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpCiAgICAgcmV0dXJuIHN0eWxlUmVzb2x2ZXIo
KS5zdHlsZUZvckVsZW1lbnQodGhpcywgcGFyZW50U3R5bGUpOwogfQogCitjb25zdCBKU0M6OlBy
aXZhdGVOYW1lJiBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2tOYW1lKCkKK3sKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgSlNDOjpQcml2YXRlTmFtZT4gbmFtZSA9IEpT
Qzo6UHJpdmF0ZU5hbWUoCisgICAgICAgIEpTQzo6UHJpdmF0ZU5hbWU6OkRlc2NyaXB0aW9uLCBB
U0NJSUxpdGVyYWwoIlN5bWJvbEVsZW1lbnRBdHRyaWJ1dGVDaGFuZ2VkIikpOworICAgIHJldHVy
biBuYW1lLmdldCgpOworfQorCiAvLyBSZXR1cm5zIHRydWUgaXMgdGhlIGdpdmVuIGF0dHJpYnV0
ZSBpcyBhbiBldmVudCBoYW5kbGVyLgogLy8gV2UgY29uc2lkZXIgYW4gZXZlbnQgaGFuZGxlciBh
bnkgYXR0cmlidXRlIHRoYXQgYmVnaW5zIHdpdGggIm9uIi4KIC8vIEl0IGlzIGEgc2ltcGxlIHNv
bHV0aW9uIHRoYXQgaGFzIHRoZSBhZHZhbnRhZ2Ugb2Ygbm90IHJlcXVpcmluZyBhbnkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oCmluZGV4IDlhNzI0MDcuLjhlOTkyMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAt
MzQsNiArMzQsMTIgQEAKICNpbmNsdWRlICJTaW11bGF0ZWRDbGlja09wdGlvbnMuaCIKICNpbmNs
dWRlICJTdHlsZVJlc29sdmVUcmVlLmgiCiAKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBQcml2
YXRlTmFtZTsKKworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENsaWVudFJlY3Q7
CkBAIC00OTQsNiArNTAwLDggQEAgcHVibGljOgogICAgIFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVz
b2x2ZXIoKTsKICAgICBSZWY8UmVuZGVyU3R5bGU+IHJlc29sdmVTdHlsZShSZW5kZXJTdHlsZSog
cGFyZW50U3R5bGUpOwogCisgICAgc3RhdGljIGNvbnN0IEpTQzo6UHJpdmF0ZU5hbWUmIGF0dHJp
YnV0ZUNoYW5nZWRDYWxsYmFja05hbWUoKTsKKwogcHJvdGVjdGVkOgogICAgIEVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgQ29uc3RydWN0aW9uVHlwZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmlkbAppbmRleCBmMDhkYzA0Li4yZmY5MWE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aWRsCkBAIC0yOCwxMiArMjgsMTIgQEAKICAgICBbVHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcz1O
dWxsXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHRhZ05hbWU7CiAKICAgICBbVHJlYXRS
ZXR1cm5lZE51bGxTdHJpbmdBcz1OdWxsXSBET01TdHJpbmcgZ2V0QXR0cmlidXRlKFtEZWZhdWx0
PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIG5hbWUpOwotICAgIFtPYmpDTGVnYWN5VW5u
YW1lZFBhcmFtZXRlcnMsIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCBzZXRBdHRyaWJ1dGUoW0RlZmF1
bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJpbmcgbmFtZSwKKyAgICBbT2JqQ0xlZ2FjeVVu
bmFtZWRQYXJhbWV0ZXJzLCBSYWlzZXNFeGNlcHRpb24sIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSB2
b2lkIHNldEF0dHJpYnV0ZShbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyBu
YW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVm
aW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIHZhbHVlKTsKLSAgICB2b2lkIHJlbW92ZUF0dHJpYnV0
ZShbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyBuYW1lKTsKKyAgICBbTmVl
ZHNQcm9jZXNzaW5nU3RhY2tdIHZvaWQgcmVtb3ZlQXR0cmlidXRlKFtEZWZhdWx0PVVuZGVmaW5l
ZF0gb3B0aW9uYWwgRE9NU3RyaW5nIG5hbWUpOwogICAgIEF0dHIgZ2V0QXR0cmlidXRlTm9kZShb
RGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyBuYW1lKTsKLSAgICBbUmFpc2Vz
RXhjZXB0aW9uXSBBdHRyIHNldEF0dHJpYnV0ZU5vZGUoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRp
b25hbCBBdHRyIG5ld0F0dHIpOwotICAgIFtSYWlzZXNFeGNlcHRpb25dIEF0dHIgcmVtb3ZlQXR0
cmlidXRlTm9kZShbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIEF0dHIgb2xkQXR0cik7Cisg
ICAgW1JhaXNlc0V4Y2VwdGlvbiwgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIEF0dHIgc2V0QXR0cmli
dXRlTm9kZShbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIEF0dHIgbmV3QXR0cik7CisgICAg
W1JhaXNlc0V4Y2VwdGlvbiwgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIEF0dHIgcmVtb3ZlQXR0cmli
dXRlTm9kZShbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIEF0dHIgb2xkQXR0cik7CiAKICNp
ZiBkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSAmJiBMQU5HVUFHRV9PQkpFQ1RJVkVfQwog
ICAgIFtJbXBsZW1lbnRlZEFzPWdldEVsZW1lbnRzQnlUYWdOYW1lRm9yT2JqQ10gTm9kZUxpc3Qg
Z2V0RWxlbWVudHNCeVRhZ05hbWUoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJp
bmcgbmFtZSk7CkBAIC01MSwxMCArNTEsMTAgQEAKIAogICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBh
cmFtZXRlcnMsIFRyZWF0UmV0dXJuZWROdWxsU3RyaW5nQXM9TnVsbF0gRE9NU3RyaW5nIGdldEF0
dHJpYnV0ZU5TKFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxT
dHJpbmcsIERlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJpbmcgbmFtZXNwYWNlVVJJ
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbRGVmYXVsdD1V
bmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyBsb2NhbE5hbWUpOwotICAgIFtPYmpDTGVnYWN5
VW5uYW1lZFBhcmFtZXRlcnMsIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCBzZXRBdHRyaWJ1dGVOUyhb
VHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5nLCBEZWZh
dWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwKKyAgICBbT2Jq
Q0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzLCBSYWlzZXNFeGNlcHRpb24sIE5lZWRzUHJvY2Vzc2lu
Z1N0YWNrXSB2b2lkIHNldEF0dHJpYnV0ZU5TKFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVh
dFVuZGVmaW5lZEFzPU51bGxTdHJpbmcsIERlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01T
dHJpbmcgbmFtZXNwYWNlVVJJLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJpbmcgcXVhbGlmaWVkTmFtZSwg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbRGVmYXVsdD1VbmRlZmlu
ZWRdIG9wdGlvbmFsIERPTVN0cmluZyB2YWx1ZSk7Ci0gICAgW09iakNMZWdhY3lVbm5hbWVkUGFy
YW1ldGVyc10gdm9pZCByZW1vdmVBdHRyaWJ1dGVOUyhbVHJlYXROdWxsQXM9TnVsbFN0cmluZywg
VHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAorICAg
IFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRlcnMsIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSB2b2lk
IHJlbW92ZUF0dHJpYnV0ZU5TKFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5l
ZEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBuYW1lc3BhY2VVUkksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBET01TdHJpbmcgbG9jYWxOYW1lKTsKIAogI2lmIGRl
ZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpICYmIExBTkdVQUdFX09CSkVDVElWRV9DCkBAIC02
NCw3ICs2NCw3IEBACiAjZW5kaWYKICAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzXSBB
dHRyIGdldEF0dHJpYnV0ZU5vZGVOUyhbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRl
ZmluZWRBcz1OdWxsU3RyaW5nLCBEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5n
IG5hbWVzcGFjZVVSSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyBsb2NhbE5hbWUpOwotICAg
IFtSYWlzZXNFeGNlcHRpb25dIEF0dHIgc2V0QXR0cmlidXRlTm9kZU5TKFtEZWZhdWx0PVVuZGVm
aW5lZF0gb3B0aW9uYWwgQXR0ciBuZXdBdHRyKTsKKyAgICBbUmFpc2VzRXhjZXB0aW9uLCBOZWVk
c1Byb2Nlc3NpbmdTdGFja10gQXR0ciBzZXRBdHRyaWJ1dGVOb2RlTlMoW0RlZmF1bHQ9VW5kZWZp
bmVkXSBvcHRpb25hbCBBdHRyIG5ld0F0dHIpOwogICAgIGJvb2xlYW4gaGFzQXR0cmlidXRlKERP
TVN0cmluZyBuYW1lKTsKICAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzXSBib29sZWFu
IGhhc0F0dHJpYnV0ZU5TKFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFz
PU51bGxTdHJpbmcsIERlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJpbmcgbmFtZXNw
YWNlVVJJLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0RlZmF1
bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJpbmcgbG9jYWxOYW1lKTsKQEAgLTEyMSw4ICsx
MjEsOCBAQAogI2Vsc2UKICAgICBIVE1MQ29sbGVjdGlvbiBnZXRFbGVtZW50c0J5Q2xhc3NOYW1l
KFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIG5hbWUpOwogI2VuZGlmCi0g
ICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFNldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmli
dXRlIERPTVN0cmluZyBpbm5lckhUTUw7Ci0gICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFNl
dHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0cmluZyBvdXRlckhUTUw7CisgICAg
W1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFNldHRlclJhaXNlc0V4Y2VwdGlvbiwgTmVlZHNQcm9j
ZXNzaW5nU3RhY2tdIGF0dHJpYnV0ZSBET01TdHJpbmcgaW5uZXJIVE1MOworICAgIFtUcmVhdE51
bGxBcz1OdWxsU3RyaW5nLCBTZXR0ZXJSYWlzZXNFeGNlcHRpb24sIE5lZWRzUHJvY2Vzc2luZ1N0
YWNrXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG91dGVySFRNTDsKICAgICAgICAgICAgICAKIAogICAg
IFtSZWZsZWN0PWNsYXNzXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNsYXNzTmFtZTsKQEAgLTE3Myw2
ICsxNzMsOCBAQAogICAgIFtDb25kaXRpb25hbD1TSEFET1dfRE9NLCBSZWZsZWN0XSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIHNsb3Q7CiAjZW5kaWYKIAorICAgIFtJbXBsZW1lbnRlZEFzPWF0dHJpYnV0
ZUNoYW5nZWRDYWxsYmFja05hbWVdIHN0YXRpYyByZWFkb25seSBhdHRyaWJ1dGUgU3ltYm9sIGF0
dHJpYnV0ZUNoYW5nZWQ7CisKICAgICAvLyBFdmVudCBIYW5kbGVycwogCiAgICAgLy8gVW5pcXVl
IHRvIEVsZW1lbnQgYW5kIERvY3VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmlkbAppbmRl
eCBlZWFlN2E2Li5hY2RlYzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRU
YXJnZXQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5pZGwKQEAgLTI4
LDUgKzI4LDUgQEAKIF0gaW50ZXJmYWNlIEV2ZW50VGFyZ2V0IHsKICAgICBbT2JqQ0xlZ2FjeVVu
bmFtZWRQYXJhbWV0ZXJzXSB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoRE9NU3RyaW5nIHR5cGUsIEV2
ZW50TGlzdGVuZXIgbGlzdGVuZXIsIG9wdGlvbmFsIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CiAgICAg
W09iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVyc10gdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKERP
TVN0cmluZyB0eXBlLCBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCBvcHRpb25hbCBib29sZWFuIHVz
ZUNhcHR1cmUpOwotICAgIFtSYWlzZXNFeGNlcHRpb25dIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChF
dmVudCBldmVudCk7CisgICAgW1JhaXNlc0V4Y2VwdGlvbiwgTmVlZHNQcm9jZXNzaW5nU3RhY2td
IGJvb2xlYW4gZGlzcGF0Y2hFdmVudChFdmVudCBldmVudCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0xpZmVjeWNsZUNhbGxiYWNrUXVldWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0xpZmVjeWNsZUNhbGxiYWNrUXVldWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjA0Mjc3ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5jcHAKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5oIgorCisjaW5jbHVkZSAiQ3VzdG9t
RWxlbWVudEludGVyZmFjZS5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWxl
bWVudC5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgPGhlYXAvSGVhcC5o
PgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBM
aWZlY3ljbGVRdWV1ZUl0ZW0geworcHVibGljOgorICAgIExpZmVjeWNsZVF1ZXVlSXRlbShFbGVt
ZW50JiBlbGVtZW50LCBDdXN0b21FbGVtZW50SW50ZXJmYWNlJiBpbnRlcmZhY2UsCisgICAgICAg
IGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZh
bHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQorICAgICAgICA6IG1fdHlwZShUeXBl
OjpBdHRyaWJ1dGVDaGFuZ2VkKQorICAgICAgICAsIG1fZWxlbWVudChlbGVtZW50KQorICAgICAg
ICAsIG1faW50ZXJmYWNlKGludGVyZmFjZSkKKyAgICAgICAgLCBtX2F0dHJOYW1lKGF0dHJOYW1l
KQorICAgICAgICAsIG1fb2xkVmFsdWUob2xkVmFsdWUpCisgICAgICAgICwgbV9uZXdWYWx1ZShu
ZXdWYWx1ZSkKKyAgICB7IH0KKworICAgIHZvaWQgaW52b2tlKCkKKyAgICB7CisgICAgICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgcHJvYmFibHkgcGFzcyB0aGUgZnVsbCBxdWFsaWZpZWQgYXR0cmli
dXRlIG5hbWUuCisgICAgICAgIG1faW50ZXJmYWNlLT5hdHRyaWJ1dGVDaGFuZ2VkKG1fZWxlbWVu
dC5nZXQoKSwgbV9hdHRyTmFtZS5sb2NhbE5hbWUoKSwgbV9vbGRWYWx1ZSwgbV9uZXdWYWx1ZSk7
CisgICAgfQorCisgICAgZW51bSBjbGFzcyBUeXBlIHsKKyAgICAgICAgSW52YWxpZCwKKyAgICAg
ICAgSW5zZXJ0ZWQsCisgICAgICAgIFJlbW92ZWQsCisgICAgICAgIENoaWxkcmVuQ2hhbmdlZCwK
KyAgICAgICAgQXR0cmlidXRlQ2hhbmdlZCwKKyAgICB9OworCitwcml2YXRlOgorICAgIC8vIEZJ
WE1FOiBXZSBzaG91ZGxuJ3QgaGF2ZSB0byBkdXBsaWNhdGUgRWxlbWVudCwgSW50ZXJmYWNlLCBh
bmQgYSBidW5jaCBvZiBBdG9taWNTdHJpbmcgaW4gZWFjaCBxdWV1ZSBpdGVtLgorICAgIFR5cGUg
bV90eXBlIHsgVHlwZTo6SW52YWxpZCB9OworICAgIFJlZjxFbGVtZW50PiBtX2VsZW1lbnQ7Cisg
ICAgUmVmPEN1c3RvbUVsZW1lbnRJbnRlcmZhY2U+IG1faW50ZXJmYWNlOworICAgIFF1YWxpZmll
ZE5hbWUgbV9hdHRyTmFtZTsKKyAgICBBdG9taWNTdHJpbmcgbV9vbGRWYWx1ZTsKKyAgICBBdG9t
aWNTdHJpbmcgbV9uZXdWYWx1ZTsKK307CisKK0xpZmVjeWNsZUNhbGxiYWNrUXVldWU6OkxpZmVj
eWNsZUNhbGxiYWNrUXVldWUoKQoreworfQorCitMaWZlY3ljbGVDYWxsYmFja1F1ZXVlOjp+TGlm
ZWN5Y2xlQ2FsbGJhY2tRdWV1ZSgpCit7CisgICAgQVNTRVJUKG1faXRlbXMuaXNFbXB0eSgpKTsK
K30KKwordm9pZCBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlOjplbnF1ZXVlQXR0cmlidXRlQ2hhbmdl
ZChFbGVtZW50JiBlbGVtZW50LCBDdXN0b21FbGVtZW50SW50ZXJmYWNlJiBpbnRlcmZhY2UsCisg
ICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKK3sKKyAgICBpZiAoYXV0byogcXVldWUg
PSBDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOjplbnN1cmVDdXJyZW50UXVl
dWUoKSkKKyAgICAgICAgcXVldWUtPm1faXRlbXMuYXBwZW5kKExpZmVjeWNsZVF1ZXVlSXRlbShl
bGVtZW50LCBpbnRlcmZhY2UsIG5hbWUsIG9sZFZhbHVlLCBuZXdWYWx1ZSkpOworfQorCit2b2lk
IExpZmVjeWNsZUNhbGxiYWNrUXVldWU6Omludm9rZUFsbCgpCit7CisgICAgVmVjdG9yPExpZmVj
eWNsZVF1ZXVlSXRlbT4gaXRlbXM7CisgICAgaXRlbXMuc3dhcChtX2l0ZW1zKTsKKyAgICBmb3Ig
KGF1dG8mIGl0ZW06IGl0ZW1zKQorICAgICAgICBpdGVtLmludm9rZSgpOworfQorCisjaWYgIUFT
U0VSVF9ESVNBQkxFRAorYm9vbCBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlOjppc1Byb2Nlc3NpbmdT
dGFja1ByZXNlbnRPck5vdENhbGxlZEZyb21KYXZhU2NyaXB0KERvY3VtZW50JiBkb2N1bWVudCkK
K3sKKyAgICBhdXRvJiB2bSA9IGRvY3VtZW50LnZtKCk7CisgICAgcmV0dXJuICF2bS5lbnRyeVNj
b3BlCisgICAgICAgIHx8IHZtLmhlYXAub3BlcmF0aW9uSW5Qcm9ncmVzcygpICE9IEpTQzo6Tm9P
cGVyYXRpb24KKyAgICAgICAgfHwgQ3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFj
azo6aGFzQ3VycmVudFByb2Nlc3NpbmdTdGFjaygpCisgICAgICAgIHx8IFNWR1VzZUVsZW1lbnRT
aGFkb3dUcmVlVXBkYXRlU3RhY2s6OmlzVXBkYXRlSW5Qcm9ncmVzcygpOworfQorI2VuZGlmCisK
K3Vuc2lnbmVkIFNWR1VzZUVsZW1lbnRTaGFkb3dUcmVlVXBkYXRlU3RhY2s6OnNfY291bnQgPSAw
OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTGlmZWN5Y2xlQ2FsbGJhY2tR
dWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0xpZmVjeWNsZUNhbGxiYWNrUXVldWUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDkwM2U3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0xpZmVjeWNsZUNhbGxiYWNrUXVldWUuaApAQCAtMCwwICsx
LDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZV9oCisjZGVmaW5lIExpZmVjeWNsZUNhbGxiYWNr
UXVldWVfaAorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
QXRvbWljU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ3VzdG9tRWxl
bWVudEludGVyZmFjZTsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgRWxlbWVudDsKK2NsYXNzIFF1
YWxpZmllZE5hbWU7CitjbGFzcyBMaWZlY3ljbGVRdWV1ZUl0ZW07CisKK2NsYXNzIExpZmVjeWNs
ZUNhbGxiYWNrUXVldWUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExpZmVjeWNsZUNhbGxi
YWNrUXVldWUpOworcHVibGljOgorICAgIExpZmVjeWNsZUNhbGxiYWNrUXVldWUoKTsKKyAgICB+
TGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZSgpOworCisgICAgc3RhdGljIHZvaWQgZW5xdWV1ZUF0dHJp
YnV0ZUNoYW5nZWQoRWxlbWVudCYsIEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UmLAorICAgICAgICBj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBuZXdWYWx1ZSk7CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgc3Rh
dGljIGJvb2wgaXNQcm9jZXNzaW5nU3RhY2tQcmVzZW50T3JOb3RDYWxsZWRGcm9tSmF2YVNjcmlw
dChEb2N1bWVudCYpOworI2VuZGlmCisKKyAgICB2b2lkIGludm9rZUFsbCgpOworCitwcml2YXRl
OgorICAgIFZlY3RvcjxMaWZlY3ljbGVRdWV1ZUl0ZW0+IG1faXRlbXM7Cit9OworCitjbGFzcyBD
dXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrIHsKK3B1YmxpYzoKKyAgICBDdXN0
b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrKCkKKyAgICAgICAgOiBtX3ByZXZpb3Vz
UHJvY2Vzc2luZ1N0YWNrKHNfY3VycmVudFByb2Nlc3NpbmdTdGFjaykKKyAgICB7CisgICAgICAg
IHNfY3VycmVudFByb2Nlc3NpbmdTdGFjayA9IHRoaXM7CisgICAgfQorCisgICAgfkN1c3RvbUVs
ZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2soKQorICAgIHsKKyAgICAgICAgaWYgKFVOTElL
RUxZKG1fcXVldWUpKQorICAgICAgICAgICAgcHJvY2Vzc1F1ZXVlKCk7CisgICAgICAgIHNfY3Vy
cmVudFByb2Nlc3NpbmdTdGFjayA9IG1fcHJldmlvdXNQcm9jZXNzaW5nU3RhY2s7CisgICAgfQor
CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEgcmVmZXJlbmNlIG9uY2UgImVuc3VyZSIg
c3RhcnRzIHRvIHdvcmsuCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIExpZmVjeWNsZUNhbGxi
YWNrUXVldWUqIGVuc3VyZUN1cnJlbnRRdWV1ZSgpOworCisgICAgc3RhdGljIGJvb2wgaGFzQ3Vy
cmVudFByb2Nlc3NpbmdTdGFjaygpIHsgcmV0dXJuIHNfY3VycmVudFByb2Nlc3NpbmdTdGFjazsg
fQorCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJvY2Vzc1F1ZXVlKCk7CisK
KyAgICBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlKiBtX3F1ZXVlIHsgbnVsbHB0ciB9OworICAgIEN1
c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2sqIG1fcHJldmlvdXNQcm9jZXNzaW5n
U3RhY2s7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ3VzdG9tRWxlbWVudExpZmVjeWNs
ZVByb2Nlc3NpbmdTdGFjayogc19jdXJyZW50UHJvY2Vzc2luZ1N0YWNrOworfTsKKworY2xhc3Mg
U1ZHVXNlRWxlbWVudFNoYWRvd1RyZWVVcGRhdGVTdGFjayB7CitwdWJsaWM6CisgICAgU1ZHVXNl
RWxlbWVudFNoYWRvd1RyZWVVcGRhdGVTdGFjaygpIHsgc19jb3VudCsrOyB9CisgICAgflNWR1Vz
ZUVsZW1lbnRTaGFkb3dUcmVlVXBkYXRlU3RhY2soKSB7IEFTU0VSVChzX2NvdW50KTsgc19jb3Vu
dC0tOyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc1VwZGF0ZUluUHJvZ3Jlc3MoKSB7IHJldHVybiBz
X2NvdW50OyB9CisKK3ByaXZhdGU6CisgICAgc3RhdGljIHVuc2lnbmVkIHNfY291bnQ7Cit9Owor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1h
cC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmlkbAppbmRleCA4ZjNlZjg5
Li5hZDQxMmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmlkbApAQCAtMjUsOSArMjUs
OSBAQAogCiAgICAgZ2V0dGVyIE5vZGUgZ2V0TmFtZWRJdGVtKFtEZWZhdWx0PVVuZGVmaW5lZF0g
b3B0aW9uYWwgRE9NU3RyaW5nIG5hbWUpOwogCi0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gTm9kZSBz
ZXROYW1lZEl0ZW0oW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBOb2RlIG5vZGUpOworICAg
IFtSYWlzZXNFeGNlcHRpb24sIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSBOb2RlIHNldE5hbWVkSXRl
bShbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIE5vZGUgbm9kZSk7CiAKLSAgICBbUmFpc2Vz
RXhjZXB0aW9uXSBOb2RlIHJlbW92ZU5hbWVkSXRlbShbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlv
bmFsIERPTVN0cmluZyBuYW1lKTsKKyAgICBbUmFpc2VzRXhjZXB0aW9uLCBOZWVkc1Byb2Nlc3Np
bmdTdGFja10gTm9kZSByZW1vdmVOYW1lZEl0ZW0oW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25h
bCBET01TdHJpbmcgbmFtZSk7CiAKICAgICBnZXR0ZXIgTm9kZSBpdGVtKFtEZWZhdWx0PVVuZGVm
aW5lZF0gb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBpbmRleCk7CiAgICAgCkBAIC0zOSw5ICszOSwx
MCBAQAogICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRlcnNdIE5vZGUgZ2V0TmFtZWRJdGVt
TlMoW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERP
TVN0cmluZyBuYW1lc3BhY2VVUkksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJpbmcgbG9jYWxOYW1lKTsK
IAotICAgIFtSYWlzZXNFeGNlcHRpb25dIE5vZGUgc2V0TmFtZWRJdGVtTlMoW0RlZmF1bHQ9VW5k
ZWZpbmVkXSBvcHRpb25hbCBOb2RlIG5vZGUpOworICAgIFtSYWlzZXNFeGNlcHRpb24sIE5lZWRz
UHJvY2Vzc2luZ1N0YWNrXSBOb2RlIHNldE5hbWVkSXRlbU5TKFtEZWZhdWx0PVVuZGVmaW5lZF0g
b3B0aW9uYWwgTm9kZSBub2RlKTsKIAotICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRlcnMs
IFJhaXNlc0V4Y2VwdGlvbl0gTm9kZSByZW1vdmVOYW1lZEl0ZW1OUyhbVHJlYXROdWxsQXM9TnVs
bFN0cmluZyxEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIG5hbWVzcGFjZVVS
SSwgCisgICAgW09iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVycywgUmFpc2VzRXhjZXB0aW9uLCBO
ZWVkc1Byb2Nlc3NpbmdTdGFja10KKyAgICBOb2RlIHJlbW92ZU5hbWVkSXRlbU5TKFtUcmVhdE51
bGxBcz1OdWxsU3RyaW5nLERlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJpbmcgbmFt
ZXNwYWNlVVJJLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0Rl
ZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJpbmcgbG9jYWxOYW1lKTsKIAogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oCmluZGV4IGVmZjA4NmEuLjg0MDZhMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMjQxLDYgKzI0
MSw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzSFRNTEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBn
ZXRGbGFnKElzSFRNTEZsYWcpOyB9CiAgICAgYm9vbCBpc1NWR0VsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiBnZXRGbGFnKElzU1ZHRmxhZyk7IH0KICAgICBib29sIGlzTWF0aE1MRWxlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIGdldEZsYWcoSXNNYXRoTUxGbGFnKTsgfQorICAgIGJvb2wgaXNDdXN0b21F
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJc0N1c3RvbUVsZW1lbnQpOyB9CisgICAg
dm9pZCBzZXRDdXN0b21FbGVtZW50KCkgeyBzZXRGbGFnKElzQ3VzdG9tRWxlbWVudCk7IH0KIAog
ICAgIGJvb2wgaXNQc2V1ZG9FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gcHNldWRvSWQoKSAhPSBO
T1BTRVVETzsgfQogICAgIGJvb2wgaXNCZWZvcmVQc2V1ZG9FbGVtZW50KCkgY29uc3QgeyByZXR1
cm4gcHNldWRvSWQoKSA9PSBCRUZPUkU7IH0KQEAgLTU5OSw2ICs2MDEsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgICAgIElzU3R5bGVkRWxlbWVudEZsYWcgPSAxIDw8IDMsCiAgICAgICAgIElzSFRNTEZs
YWcgPSAxIDw8IDQsCiAgICAgICAgIElzU1ZHRmxhZyA9IDEgPDwgNSwKKyAgICAgICAgSXNDdXN0
b21FbGVtZW50ID0gMSA8PCA2LAogICAgICAgICBDaGlsZE5lZWRzU3R5bGVSZWNhbGNGbGFnID0g
MSA8PCA3LAogICAgICAgICBJbkRvY3VtZW50RmxhZyA9IDEgPDwgOCwKICAgICAgICAgSXNMaW5r
RmxhZyA9IDEgPDwgOSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmlkbAppbmRleCBmYTQ4NzFiLi5hZWEyYzBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuaWRsCkBAIC00OSw3ICs0OSw3IEBACiAgICAgW1RyZWF0UmV0dXJuZWROdWxsU3Ry
aW5nQXM9TnVsbF0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyAgICAgICAgbm9kZU5hbWU7
CiAKICAgICAvLyBGSVhNRTogdGhlIHNwZWMgc2F5cyB0aGlzIGNhbiBhbHNvIHJhaXNlIG9uIHJl
dHJpZXZhbC4KLSAgICBbVHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcz1OdWxsLCBUcmVhdE51bGxB
cz1OdWxsU3RyaW5nLCBTZXR0ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSBET01TdHJpbmcg
bm9kZVZhbHVlOworICAgIFtUcmVhdFJldHVybmVkTnVsbFN0cmluZ0FzPU51bGwsIFRyZWF0TnVs
bEFzPU51bGxTdHJpbmcsIFNldHRlclJhaXNlc0V4Y2VwdGlvbiwgTmVlZHNQcm9jZXNzaW5nU3Rh
Y2tdIGF0dHJpYnV0ZSBET01TdHJpbmcgbm9kZVZhbHVlOwogCiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIHVuc2lnbmVkIHNob3J0ICAgbm9kZVR5cGU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5v
ZGUgICAgICAgICAgICAgcGFyZW50Tm9kZTsKQEAgLTY4LDggKzY4LDggQEAKICAgICBbQ3VzdG9t
LCBSYWlzZXNFeGNlcHRpb25dIE5vZGUgYXBwZW5kQ2hpbGQoW0N1c3RvbVJldHVybl0gTm9kZSBu
ZXdDaGlsZCk7CiAKICAgICBib29sZWFuICAgICAgICAgICAgaGFzQ2hpbGROb2RlcygpOwotICAg
IFtOZXdPYmplY3RdIE5vZGUgY2xvbmVOb2RlKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwg
Ym9vbGVhbiBkZWVwKTsKLSAgICB2b2lkICAgICAgICAgICAgICAgbm9ybWFsaXplKCk7CisgICAg
W05ld09iamVjdCwgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIE5vZGUgY2xvbmVOb2RlKFtEZWZhdWx0
PVVuZGVmaW5lZF0gb3B0aW9uYWwgYm9vbGVhbiBkZWVwKTsKKyAgICBbTmVlZHNQcm9jZXNzaW5n
U3RhY2tdIHZvaWQgICAgICAgICAgICAgICBub3JtYWxpemUoKTsKIAogICAgIC8vIEludHJvZHVj
ZWQgaW4gRE9NIExldmVsIDI6CiAKQEAgLTc3LDcgKzc3LDcgQEAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLERlZmF1bHQ9VW5k
ZWZpbmVkXSBvcHRpb25hbCBET01TdHJpbmcgdmVyc2lvbik7CiAKICAgICBbVHJlYXRSZXR1cm5l
ZE51bGxTdHJpbmdBcz1OdWxsXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nICAgICAgICBu
YW1lc3BhY2VVUkk7Ci0gICAgW1RyZWF0UmV0dXJuZWROdWxsU3RyaW5nQXM9TnVsbCwgVHJlYXRO
dWxsQXM9TnVsbFN0cmluZywgU2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIHByZWZpeDsKKyAgICBbVHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcz1OdWxsLCBUcmVhdE51
bGxBcz1OdWxsU3RyaW5nLCBTZXR0ZXJSYWlzZXNFeGNlcHRpb24sIE5lZWRzUHJvY2Vzc2luZ1N0
YWNrXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHByZWZpeDsKICAgICBbVHJlYXRSZXR1cm5lZE51bGxT
dHJpbmdBcz1OdWxsXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nICAgICAgICBsb2NhbE5h
bWU7CiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKQpAQCAtOTEsNyArOTEsNyBA
QAogICAgIFtUcmVhdFJldHVybmVkTnVsbFN0cmluZ0FzPU51bGxdIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01TdHJpbmcgICAgICAgYmFzZVVSSTsKIAogICAgIC8vIEZJWE1FOiB0aGUgc3BlYyBzYXlz
IHRoaXMgY2FuIGFsc28gcmFpc2Ugb24gcmV0cmlldmFsLgotICAgIFtUcmVhdFJldHVybmVkTnVs
bFN0cmluZ0FzPU51bGwsIFRyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9
TnVsbFN0cmluZywgU2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHRl
eHRDb250ZW50OworICAgIFtUcmVhdFJldHVybmVkTnVsbFN0cmluZ0FzPU51bGwsIFRyZWF0TnVs
bEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZywgU2V0dGVyUmFpc2Vz
RXhjZXB0aW9uLCBOZWVkc1Byb2Nlc3NpbmdTdGFja10gYXR0cmlidXRlIERPTVN0cmluZyB0ZXh0
Q29udGVudDsKIAogICAgIGJvb2xlYW4gICAgICAgICAgICBpc1NhbWVOb2RlKFtEZWZhdWx0PVVu
ZGVmaW5lZF0gb3B0aW9uYWwgTm9kZSBvdGhlcik7CiAgICAgYm9vbGVhbiAgICAgICAgICAgIGlz
RXF1YWxOb2RlKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgTm9kZSBvdGhlcik7CkBAIC0x
MjUsNyArMTI1LDcgQEAKICNpZiAhZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgfHwgIUxB
TkdVQUdFX09CSkVDVElWRV9DCiAgICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKERPTVN0cmluZyB0
eXBlLCBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCBvcHRpb25hbCBib29sZWFuIHVzZUNhcHR1cmUp
OwogICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihET01TdHJpbmcgdHlwZSwgRXZlbnRMaXN0
ZW5lciBsaXN0ZW5lciwgb3B0aW9uYWwgYm9vbGVhbiB1c2VDYXB0dXJlKTsKLSAgICBbUmFpc2Vz
RXhjZXB0aW9uXSBib29sZWFuIGRpc3BhdGNoRXZlbnQoRXZlbnQgZXZlbnQpOworICAgIFtSYWlz
ZXNFeGNlcHRpb24sIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSBib29sZWFuIGRpc3BhdGNoRXZlbnQo
RXZlbnQgZXZlbnQpOwogI2VuZGlmCiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vUmFuZ2UuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmlkbAppbmRleCBkYzhhZWQ0
Li42MmMwM2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5pZGwKQEAgLTUyLDEyICs1MiwxMiBAQAogCiAgICAg
W09iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVycywgUmFpc2VzRXhjZXB0aW9uLCBJbXBsZW1lbnRl
ZEFzPWNvbXBhcmVCb3VuZGFyeVBvaW50c0ZvckJpbmRpbmdzXSBzaG9ydCBjb21wYXJlQm91bmRh
cnlQb2ludHMoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCBob3cs
IFJhbmdlIHNvdXJjZVJhbmdlKTsKIAotICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQgZGVsZXRl
Q29udGVudHMoKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uLCBOZXdPYmplY3RdIERvY3VtZW50RnJh
Z21lbnQgZXh0cmFjdENvbnRlbnRzKCk7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbiwgTmV3T2JqZWN0
XSBEb2N1bWVudEZyYWdtZW50IGNsb25lQ29udGVudHMoKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9u
XSB2b2lkIGluc2VydE5vZGUoTm9kZSBuZXdOb2RlKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSB2
b2lkIHN1cnJvdW5kQ29udGVudHMoTm9kZSBuZXdQYXJlbnQpOwotICAgIFtOZXdPYmplY3RdIFJh
bmdlIGNsb25lUmFuZ2UoKTsKKyAgICBbUmFpc2VzRXhjZXB0aW9uLCBOZWVkc1Byb2Nlc3NpbmdT
dGFja10gdm9pZCBkZWxldGVDb250ZW50cygpOworICAgIFtSYWlzZXNFeGNlcHRpb24sIE5ld09i
amVjdCwgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIERvY3VtZW50RnJhZ21lbnQgZXh0cmFjdENvbnRl
bnRzKCk7CisgICAgW1JhaXNlc0V4Y2VwdGlvbiwgTmV3T2JqZWN0LCBOZWVkc1Byb2Nlc3NpbmdT
dGFja10gRG9jdW1lbnRGcmFnbWVudCBjbG9uZUNvbnRlbnRzKCk7CisgICAgW1JhaXNlc0V4Y2Vw
dGlvbiwgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIHZvaWQgaW5zZXJ0Tm9kZShOb2RlIG5ld05vZGUp
OworICAgIFtSYWlzZXNFeGNlcHRpb24sIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSB2b2lkIHN1cnJv
dW5kQ29udGVudHMoTm9kZSBuZXdQYXJlbnQpOworICAgIFtOZXdPYmplY3QsIE5lZWRzUHJvY2Vz
c2luZ1N0YWNrXSBSYW5nZSBjbG9uZVJhbmdlKCk7CiAgICAgRE9NU3RyaW5nIHRvU3RyaW5nKCk7
CiAKICAgICB2b2lkIGRldGFjaCgpOwpAQCAtNzEsNyArNzEsNyBAQAogCiAgICAgLy8gZXh0ZW5z
aW9ucwogCi0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gRG9jdW1lbnRGcmFnbWVudCBjcmVhdGVDb250
ZXh0dWFsRnJhZ21lbnQoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJpbmcgaHRt
bCk7CisgICAgW1JhaXNlc0V4Y2VwdGlvbiwgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIERvY3VtZW50
RnJhZ21lbnQgY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0
aW9uYWwgRE9NU3RyaW5nIGh0bWwpOwogCiAgICAgLy8gV2ViS2l0IGV4dGVuc2lvbnMKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaWRsIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuaWRsCmluZGV4IDViYmI1NzAuLjYxZGQ5ZTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Um9vdC5pZGwKQEAgLTMwLDYgKzMwLDYgQEAKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRWxlbWVudCAgICAgICAgICBhY3RpdmVFbGVtZW50OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBFbGVtZW50ICAgICAgICAgIGhvc3Q7CiAKLSAgICBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywg
U2V0dGVyUmFpc2VzRXhjZXB0aW9uXQorICAgIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBTZXR0
ZXJSYWlzZXNFeGNlcHRpb24sIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXQogICAgIGF0dHJpYnV0ZSBE
T01TdHJpbmcgICAgICAgICAgICAgICAgIGlubmVySFRNTDsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5pZGwKaW5k
ZXggOWRmODJhMi4uMDI2MDdlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmlkbApAQCAtMjMsMTAgKzIzLDEwIEBA
CiAKICAgICAvLyBET00gTGV2ZWwgMQogCi0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gVGV4dCBzcGxp
dFRleHQodW5zaWduZWQgbG9uZyBvZmZzZXQpOworICAgIFtSYWlzZXNFeGNlcHRpb24sIE5lZWRz
UHJvY2Vzc2luZ1N0YWNrXSBUZXh0IHNwbGl0VGV4dCh1bnNpZ25lZCBsb25nIG9mZnNldCk7CiAK
ICAgICAvLyBJbnRyb2R1Y2VkIGluIERPTSBMZXZlbCAzOgogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01TdHJpbmcgICAgICAgd2hvbGVUZXh0OwotICAgIFtSYWlzZXNFeGNlcHRpb25dIFRleHQg
ICAgICAgICAgICAgICByZXBsYWNlV2hvbGVUZXh0KFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9u
YWwgRE9NU3RyaW5nIGNvbnRlbnQpOworICAgIFtSYWlzZXNFeGNlcHRpb24sIE5lZWRzUHJvY2Vz
c2luZ1N0YWNrXSBUZXh0ICAgICAgICAgICAgICAgcmVwbGFjZVdob2xlVGV4dChbRGVmYXVsdD1V
bmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyBjb250ZW50KTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsIGIvU291cmNlL1dlYkNvcmUvZG9tL21h
a2VfbmFtZXMucGwKaW5kZXggZDUyZDNjOS4uMWNlOWI5MCAxMDA3NTUKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL21ha2VfbmFtZXMucGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFt
ZXMucGwKQEAgLTk2Miw2ICs5NjIsNyBAQCBFTkQKIAogICAgIHByaW50IEYgPDxFTkQKIAorI2lu
Y2x1ZGUgIkN1c3RvbUVsZW1lbnREZWZpbml0aW9ucy5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCkBAIC0xMDE4LDYgKzEwMTksMTMgQEAgRU5ECiAgICAgfQogCiAgICAgcHJpbnQgRiA8PEVO
RAorICAgIGlmIChhdXRvKiBkZWZpbml0aW9ucyA9IGRvY3VtZW50LmN1c3RvbUVsZW1lbnREZWZp
bml0aW9ucygpKSB7CisgICAgICAgIGlmIChhdXRvIGVsZW1lbnQgPSBkZWZpbml0aW9ucy0+Y3Jl
YXRlQ3VzdG9tRWxlbWVudChuYW1lKSkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXM8
V2ViQ29yZTo6JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+KCplbGVtZW50KSk7CisgICAg
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8V2ViQ29yZTo6JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVs
ZW1lbnQ+KCplbGVtZW50KTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHJldHVybiAkcGFyYW1l
dGVyc3tmYWxsYmFja0ludGVyZmFjZU5hbWV9OjpjcmVhdGUobmFtZSwgZG9jdW1lbnQpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVNldHRhYmxlVG9rZW5MaXN0Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NU2V0dGFibGVUb2tlbkxpc3QuaWRsCmluZGV4IDU5
ZDBiZTIuLjhjZTQ0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NU2V0dGFi
bGVUb2tlbkxpc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NU2V0dGFibGVUb2tl
bkxpc3QuaWRsCkBAIC0yNiw3ICsyNiw3IEBACiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCiAg
ICAgU2tpcFZUYWJsZVZhbGlkYXRpb24sCiBdIGludGVyZmFjZSBET01TZXR0YWJsZVRva2VuTGlz
dCA6IERPTVRva2VuTGlzdCB7Ci0gICAgYXR0cmlidXRlIERPTVN0cmluZyB2YWx1ZTsKKyAgICBb
TmVlZHNQcm9jZXNzaW5nU3RhY2tdIGF0dHJpYnV0ZSBET01TdHJpbmcgdmFsdWU7CiAKICAgICBb
VHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcz1OdWxsXSBnZXR0ZXIgRE9NU3RyaW5nICh1bnNpZ25l
ZCBsb25nIGluZGV4KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRv
a2VuTGlzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5pZGwKaW5kZXgg
MzIyNzE4Yi4uODNlY2NkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tl
bkxpc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmlkbApAQCAt
MjksOCArMjksOCBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0
aDsKICAgICBbVHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcz1OdWxsXSBnZXR0ZXIgRE9NU3RyaW5n
IGl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7CiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gYm9vbGVh
biBjb250YWlucyhET01TdHJpbmcgdG9rZW4pOwotICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQg
YWRkKERPTVN0cmluZy4uLiB0b2tlbnMpOwotICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQgcmVt
b3ZlKERPTVN0cmluZy4uLiB0b2tlbnMpOworICAgIFtSYWlzZXNFeGNlcHRpb24sIE5lZWRzUHJv
Y2Vzc2luZ1N0YWNrXSB2b2lkIGFkZChET01TdHJpbmcuLi4gdG9rZW5zKTsKKyAgICBbUmFpc2Vz
RXhjZXB0aW9uLCBOZWVkc1Byb2Nlc3NpbmdTdGFja10gdm9pZCByZW1vdmUoRE9NU3RyaW5nLi4u
IHRva2Vucyk7CiAgICAgW1JhaXNlc0V4Y2VwdGlvbiwgQ3VzdG9tXSBib29sZWFuIHRvZ2dsZShE
T01TdHJpbmcgdG9rZW4sIG9wdGlvbmFsIGJvb2xlYW4gZm9yY2UpOwogCiAjaWYgZGVmaW5lZChM
QU5HVUFHRV9KQVZBU0NSSVBUKSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBUCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaWRsCmluZGV4IDA3MzJkN2IuLjY0NDNkYTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaWRsCkBAIC01MCwxNSArNTAsMTUg
QEAgaW50ZXJmYWNlIEhUTUxBbmNob3JFbGVtZW50IDogSFRNTEVsZW1lbnQgewogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgc2VhcmNoOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmcgdGV4dDsKICNlbHNlCi0gICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmddIGF0dHJp
YnV0ZSBET01TdHJpbmcgaGFzaDsKLSAgICBbVHJlYXROdWxsQXM9TnVsbFN0cmluZ10gYXR0cmli
dXRlIERPTVN0cmluZyBob3N0OwotICAgIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nXSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIGhvc3RuYW1lOwotICAgIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nXSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIHBhdGhuYW1lOwotICAgIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nXSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIHBvcnQ7Ci0gICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmddIGF0
dHJpYnV0ZSBET01TdHJpbmcgcHJvdG9jb2w7Ci0gICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmdd
IGF0dHJpYnV0ZSBET01TdHJpbmcgc2VhcmNoOwotICAgIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5n
XSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG9yaWdpbjsKLSAgICBbU2V0dGVyUmFpc2Vz
RXhjZXB0aW9uXSAgYXR0cmlidXRlIERPTVN0cmluZyB0ZXh0OworICAgIFtUcmVhdE51bGxBcz1O
dWxsU3RyaW5nLCBOZWVkc1Byb2Nlc3NpbmdTdGFja10gYXR0cmlidXRlIERPTVN0cmluZyBoYXNo
OworICAgIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBOZWVkc1Byb2Nlc3NpbmdTdGFja10gYXR0
cmlidXRlIERPTVN0cmluZyBob3N0OworICAgIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBOZWVk
c1Byb2Nlc3NpbmdTdGFja10gYXR0cmlidXRlIERPTVN0cmluZyBob3N0bmFtZTsKKyAgICBbVHJl
YXROdWxsQXM9TnVsbFN0cmluZywgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIGF0dHJpYnV0ZSBET01T
dHJpbmcgcGF0aG5hbWU7CisgICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIE5lZWRzUHJvY2Vz
c2luZ1N0YWNrXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHBvcnQ7CisgICAgW1RyZWF0TnVsbEFzPU51
bGxTdHJpbmcsIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHByb3Rv
Y29sOworICAgIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBOZWVkc1Byb2Nlc3NpbmdTdGFja10g
YXR0cmlidXRlIERPTVN0cmluZyBzZWFyY2g7CisgICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcs
IE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG9yaWdp
bjsKKyAgICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9uLCBOZWVkc1Byb2Nlc3NpbmdTdGFja10gIGF0
dHJpYnV0ZSBET01TdHJpbmcgdGV4dDsKICNlbmRpZgogCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9K
QVZBU0NSSVBUKSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBUCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXVkaW9FbGVtZW50LmlkbAppbmRleCAzMGU1ZDkwLi40ZGU0NzljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5pZGwKQEAgLTI2LDYgKzI2LDcgQEAKIFsKICAgICBFbmFi
bGVkQXRSdW50aW1lLAogICAgIENvbmRpdGlvbmFsPVZJREVPLAorICAgIE5lZWRzUHJvY2Vzc2lu
Z1N0YWNrSW5Db25zdHJ1Y3RvciwKICAgICBOYW1lZENvbnN0cnVjdG9yPUF1ZGlvKFtEZWZhdWx0
PU51bGxTdHJpbmddIG9wdGlvbmFsIERPTVN0cmluZyBzcmMpCiBdIGludGVyZmFjZSBIVE1MQXVk
aW9FbGVtZW50IDogSFRNTE1lZGlhRWxlbWVudCB7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QmFzZUVsZW1lbnQuaWRsCmluZGV4IDRkOWQzOWYuLjEzYWEwM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxCYXNlRWxlbWVudC5pZGwKQEAgLTE4LDYgKzE4LDYgQEAKICAqLwogCiBpbnRlcmZh
Y2UgSFRNTEJhc2VFbGVtZW50IDogSFRNTEVsZW1lbnQgewotICAgIFtUcmVhdE51bGxBcz1OdWxs
U3RyaW5nXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGhyZWY7CisgICAgW1RyZWF0TnVsbEFzPU51bGxT
dHJpbmcsIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGhyZWY7CiAg
ICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgdGFyZ2V0OwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5pZGwKaW5kZXggYThjNmM1Mi4uYmQzZDlhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5pZGwKQEAgLTIzLDEyICsyMywx
MiBAQCBpbnRlcmZhY2UgSFRNTEJ1dHRvbkVsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAgICAgW1Jl
ZmxlY3RdIGF0dHJpYnV0ZSBib29sZWFuIGRpc2FibGVkOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBIVE1MRm9ybUVsZW1lbnQgZm9ybTsKICAgICBbUmVmbGVjdCwgVVJMXSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGZvcm1BY3Rpb247Ci0gICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmddIGF0dHJpYnV0
ZSBET01TdHJpbmcgZm9ybUVuY3R5cGU7Ci0gICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmddIGF0
dHJpYnV0ZSBET01TdHJpbmcgZm9ybU1ldGhvZDsKKyAgICBbVHJlYXROdWxsQXM9TnVsbFN0cmlu
ZywgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIGF0dHJpYnV0ZSBET01TdHJpbmcgZm9ybUVuY3R5cGU7
CisgICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIGZvcm1NZXRob2Q7CiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBib29s
ZWFuIGZvcm1Ob1ZhbGlkYXRlOwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZv
cm1UYXJnZXQ7CiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsKLSAgICBb
VHJlYXROdWxsQXM9TnVsbFN0cmluZ10gYXR0cmlidXRlIERPTVN0cmluZyB0eXBlOworICAgIFtU
cmVhdE51bGxBcz1OdWxsU3RyaW5nLCBOZWVkc1Byb2Nlc3NpbmdTdGFja10gYXR0cmlidXRlIERP
TVN0cmluZyB0eXBlOwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZhbHVlOwog
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2lsbFZhbGlkYXRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmlkbAppbmRleCBhYTM0NmVmLi41YTEwYjdhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmlkbApAQCAtMjksOCArMjks
OCBAQAogICAgIFJlcG9ydEV4dHJhTWVtb3J5Q29zdAogXSBpbnRlcmZhY2UgSFRNTENhbnZhc0Vs
ZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAKLSAgICBhdHRyaWJ1dGUgbG9uZyB3aWR0aDsKLSAgICBh
dHRyaWJ1dGUgbG9uZyBoZWlnaHQ7CisgICAgW05lZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1
dGUgbG9uZyB3aWR0aDsKKyAgICBbTmVlZHNQcm9jZXNzaW5nU3RhY2tdIGF0dHJpYnV0ZSBsb25n
IGhlaWdodDsKIAogICAgIFtDdXN0b20sIFJhaXNlc0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHRvRGF0
YVVSTChbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5n
LERlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJpbmcgdHlwZSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTERvY3VtZW50LmlkbAppbmRleCA3NzU4NzEzLi4wMWNkYzE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRG9jdW1lbnQuaWRsCkBAIC0yNCw4ICsyNCw4IEBACiAgICAgTmV3SW1wdXJl
UHJvcGVydHlGaXJlc1dhdGNocG9pbnRzLAogICAgIE92ZXJyaWRlQnVpbHRpbnMsCiBdIGludGVy
ZmFjZSBIVE1MRG9jdW1lbnQgOiBEb2N1bWVudCB7Ci0gICAgW0N1c3RvbSwgRm9yd2FyZERlY2xh
cmVJbkhlYWRlcl0gdm9pZCBvcGVuKCk7Ci0gICAgdm9pZCBjbG9zZSgpOworICAgIFtDdXN0b20s
IEZvcndhcmREZWNsYXJlSW5IZWFkZXIsIF0gdm9pZCBvcGVuKCk7CisgICAgW05lZWRzUHJvY2Vz
c2luZ1N0YWNrXSB2b2lkIGNsb3NlKCk7CiAgICAgW0N1c3RvbV0gdm9pZCB3cml0ZShbRGVmYXVs
dD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyB0ZXh0KTsKICAgICBbQ3VzdG9tXSB2b2lk
IHdyaXRlbG4oW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJpbmcgdGV4dCk7CiAK
QEAgLTQ3LDE1ICs0NywxNSBAQAogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgd2lkdGg7
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgaGVpZ2h0OwotICAgICAgICAgICAgIFtUcmVh
dE51bGxBcz1OdWxsU3RyaW5nXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRpcjsKKyAgICAgICAgICAg
ICBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIGF0dHJpYnV0
ZSBET01TdHJpbmcgZGlyOwogICAgICAgICAgICAgIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nXSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIGRlc2lnbk1vZGU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyBjb21wYXRNb2RlOwogCiAgICAgLy8gRGVwcmVjYXRlZCBhdHRyaWJ1dGVzCi0gICAg
ICAgICAgICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmddIGF0dHJpYnV0ZSBET01TdHJpbmcgYmdD
b2xvcjsKLSAgICAgICAgICAgICBbVHJlYXROdWxsQXM9TnVsbFN0cmluZ10gYXR0cmlidXRlIERP
TVN0cmluZyBmZ0NvbG9yOwotICAgICAgICAgICAgIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nXSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIGFsaW5rQ29sb3I7Ci0gICAgICAgICAgICAgW1RyZWF0TnVsbEFz
PU51bGxTdHJpbmddIGF0dHJpYnV0ZSBET01TdHJpbmcgbGlua0NvbG9yOwotICAgICAgICAgICAg
IFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZsaW5rQ29sb3I7
CisgICAgICAgICAgICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIE5lZWRzUHJvY2Vzc2luZ1N0
YWNrXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGJnQ29sb3I7CisgICAgICAgICAgICAgW1RyZWF0TnVs
bEFzPU51bGxTdHJpbmcsIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IGZnQ29sb3I7CisgICAgICAgICAgICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIE5lZWRzUHJv
Y2Vzc2luZ1N0YWNrXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFsaW5rQ29sb3I7CisgICAgICAgICAg
ICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIGxpbmtDb2xvcjsKKyAgICAgICAgICAgICBbVHJlYXROdWxsQXM9TnVsbFN0
cmluZywgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIGF0dHJpYnV0ZSBET01TdHJpbmcgdmxpbmtDb2xv
cjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRs
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwKaW5kZXggOGVlZjZmZi4uY2Rm
YjdkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwKQEAgLTE5LDYgKzE5LDcgQEAK
ICAqLwogCiBbCisgICAgQ3VzdG9tQ29uc3RydWN0b3IoRE9NU3RyaW5nIGxvY2FsTmFtZSksCiAg
ICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAogICAgIEpTQ3VzdG9tUHVzaEV2ZW50SGFuZGxl
clNjb3BlLAogXSBpbnRlcmZhY2UgSFRNTEVsZW1lbnQgOiBFbGVtZW50IHsKQEAgLTI4LDExICsy
OSwxMSBAQAogI2VuZGlmCiAgICAgICAgICAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJp
bmcgdGl0bGU7CiAgICAgICAgICAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgbGFu
ZzsKLSAgICAgICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgICAgICB0cmFuc2xhdGU7
Ci0gICAgICAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBkaXI7CisgICAgICAgICAgICAgW05l
ZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgICAgICB0cmFuc2xh
dGU7CisgICAgICAgICAgICAgW05lZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGRpcjsKIAotICAgICAgICAgICAgIGF0dHJpYnV0ZSBsb25nICAgICAgICAgICAgICB0YWJJ
bmRleDsKLSAgICAgICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgICAgZHJhZ2dhYmxl
OworICAgICAgICAgICAgIFtOZWVkc1Byb2Nlc3NpbmdTdGFja10gYXR0cmlidXRlIGxvbmcgICAg
ICAgICAgICAgIHRhYkluZGV4OworICAgICAgICAgICAgIFtOZWVkc1Byb2Nlc3NpbmdTdGFja10g
YXR0cmlidXRlIGJvb2xlYW4gICAgICAgICAgIGRyYWdnYWJsZTsKIAogICAgICAgICAgICAgIFtS
ZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHdlYmtpdGRyb3B6b25lOwogICAgICAgICAgICAg
IC8vIEZJWE1FOiBTdXBwb3J0IHRoZSBzdGFuZGFyZCBIVE1MIGVxdWl2YWxlbnQuCkBAIC00Miwy
NCArNDMsMjQgQEAKICAgICAgICAgICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBh
Y2Nlc3NLZXk7CiAKICAgICAvLyBFeHRlbnNpb25zCi0gICAgW1RyZWF0TnVsbEFzPU51bGxTdHJp
bmcsIFNldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0cmluZyBpbm5lclRleHQ7
Ci0gICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFNldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0
cmlidXRlIERPTVN0cmluZyBvdXRlclRleHQ7CisgICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcs
IFNldHRlclJhaXNlc0V4Y2VwdGlvbiwgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIGF0dHJpYnV0ZSBE
T01TdHJpbmcgaW5uZXJUZXh0OworICAgIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBTZXR0ZXJS
YWlzZXNFeGNlcHRpb24sIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IG91dGVyVGV4dDsKICAgICAgICAgICAgICAKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSBFbGVtZW50
IGluc2VydEFkamFjZW50RWxlbWVudChbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0
cmluZyB3aGVyZSwKKyAgICBbUmFpc2VzRXhjZXB0aW9uLCBOZWVkc1Byb2Nlc3NpbmdTdGFja10g
RWxlbWVudCBpbnNlcnRBZGphY2VudEVsZW1lbnQoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25h
bCBET01TdHJpbmcgd2hlcmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0Rl
ZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBFbGVtZW50IGVsZW1lbnQpOwotICAgIFtSYWlzZXNF
eGNlcHRpb25dIHZvaWQgaW5zZXJ0QWRqYWNlbnRIVE1MKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0
aW9uYWwgRE9NU3RyaW5nIHdoZXJlLAorICAgIFtSYWlzZXNFeGNlcHRpb24sIE5lZWRzUHJvY2Vz
c2luZ1N0YWNrXSB2b2lkIGluc2VydEFkamFjZW50SFRNTChbRGVmYXVsdD1VbmRlZmluZWRdIG9w
dGlvbmFsIERPTVN0cmluZyB3aGVyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbRGVm
YXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyBodG1sKTsKLSAgICBbUmFpc2VzRXhj
ZXB0aW9uXSB2b2lkIGluc2VydEFkamFjZW50VGV4dChbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlv
bmFsIERPTVN0cmluZyB3aGVyZSwKKyAgICBbUmFpc2VzRXhjZXB0aW9uLCBOZWVkc1Byb2Nlc3Np
bmdTdGFja10gdm9pZCBpbnNlcnRBZGphY2VudFRleHQoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRp
b25hbCBET01TdHJpbmcgd2hlcmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0RlZmF1
bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJpbmcgdGV4dCk7CiAKICNpZiBkZWZpbmVkKExB
TkdVQUdFX09CSkVDVElWRV9DKSAmJiBMQU5HVUFHRV9PQkpFQ1RJVkVfQwogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBIVE1MQ29sbGVjdGlvbiBjaGlsZHJlbjsKICNlbmRpZgogCi0gICAgICAgICAg
ICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFNldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmli
dXRlIERPTVN0cmluZyBjb250ZW50RWRpdGFibGU7CisgICAgICAgICAgICAgW1RyZWF0TnVsbEFz
PU51bGxTdHJpbmcsIFNldHRlclJhaXNlc0V4Y2VwdGlvbiwgTmVlZHNQcm9jZXNzaW5nU3RhY2td
IGF0dHJpYnV0ZSBET01TdHJpbmcgY29udGVudEVkaXRhYmxlOwogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBib29sZWFuIGlzQ29udGVudEVkaXRhYmxlOwogCi0gICAgICAgICAgICAgYXR0cmlidXRl
IGJvb2xlYW4gc3BlbGxjaGVjazsKKyAgICAgICAgICAgICBbTmVlZHNQcm9jZXNzaW5nU3RhY2td
IGF0dHJpYnV0ZSBib29sZWFuIHNwZWxsY2hlY2s7CiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX09C
SkVDVElWRV9DKSAmJiBMQU5HVUFHRV9PQkpFQ1RJVkVfQwogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01TdHJpbmcgdGl0bGVEaXNwbGF5U3RyaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUVsZW1lbnQuaWRsCmluZGV4IDVmNGM4N2YuLmQxMzViODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtRWxlbWVudC5pZGwKQEAgLTI1LDkgKzI1LDkgQEAKICAgICBbUmVmbGVjdD1hY2Nl
cHRfY2hhcnNldF0gYXR0cmlidXRlIERPTVN0cmluZyBhY2NlcHRDaGFyc2V0OwogICAgIFtSZWZs
ZWN0LCBVUkxdIGF0dHJpYnV0ZSBET01TdHJpbmcgYWN0aW9uOwogICAgIFtSZWZsZWN0XSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIGF1dG9jb21wbGV0ZTsKLSAgICBbVHJlYXROdWxsQXM9TnVsbFN0cmlu
Z10gYXR0cmlidXRlIERPTVN0cmluZyBlbmN0eXBlOwotICAgIFtUcmVhdE51bGxBcz1OdWxsU3Ry
aW5nXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGVuY29kaW5nOwotICAgIFtUcmVhdE51bGxBcz1OdWxs
U3RyaW5nXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG1ldGhvZDsKKyAgICBbVHJlYXROdWxsQXM9TnVs
bFN0cmluZywgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIGF0dHJpYnV0ZSBET01TdHJpbmcgZW5jdHlw
ZTsKKyAgICBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIGF0
dHJpYnV0ZSBET01TdHJpbmcgZW5jb2Rpbmc7CisgICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcs
IE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG1ldGhvZDsKICAgICBb
UmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBuYW1lOwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1
dGUgYm9vbGVhbiBub1ZhbGlkYXRlOwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IHRhcmdldDsKQEAgLTQxLDggKzQxLDggQEAKIAogICAgIGdldHRlciBFbGVtZW50ICh1bnNpZ25l
ZCBsb25nIGluZGV4KTsKIAotICAgIFtDb25kaXRpb25hbD1JT1NfQVVUT0NPUlJFQ1RfQU5EX0FV
VE9DQVBJVEFMSVpFXSBhdHRyaWJ1dGUgYm9vbGVhbiBhdXRvY29ycmVjdDsKLSAgICBbQ29uZGl0
aW9uYWw9SU9TX0FVVE9DT1JSRUNUX0FORF9BVVRPQ0FQSVRBTElaRSwgVHJlYXROdWxsQXM9TnVs
bFN0cmluZ10gYXR0cmlidXRlIERPTVN0cmluZyBhdXRvY2FwaXRhbGl6ZTsKKyAgICBbQ29uZGl0
aW9uYWw9SU9TX0FVVE9DT1JSRUNUX0FORF9BVVRPQ0FQSVRBTElaRSwgTmVlZHNQcm9jZXNzaW5n
U3RhY2tdIGF0dHJpYnV0ZSBib29sZWFuIGF1dG9jb3JyZWN0OworICAgIFtDb25kaXRpb25hbD1J
T1NfQVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpFLCBUcmVhdE51bGxBcz1OdWxsU3RyaW5n
LCBOZWVkc1Byb2Nlc3NpbmdTdGFja10gYXR0cmlidXRlIERPTVN0cmluZyBhdXRvY2FwaXRhbGl6
ZTsKIAogI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkgJiYgTEFOR1VBR0VfSkFWQVND
UklQVAogICAgIFtJbXBsZW1lbnRlZEFzPXN1Ym1pdEZyb21KYXZhU2NyaXB0XSB2b2lkIHN1Ym1p
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbAppbmRleCA3ZmU3
ODIwLi40ZDlmMzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVF
bGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50Lmlk
bApAQCAtMzAsNyArMzAsNyBAQCBpbnRlcmZhY2UgSFRNTElGcmFtZUVsZW1lbnQgOiBIVE1MRWxl
bWVudCB7CiAjaWYgZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgJiYgTEFOR1VBR0VfT0JK
RUNUSVZFX0MgfHwgZGVmaW5lZChMQU5HVUFHRV9HT0JKRUNUKSAmJiBMQU5HVUFHRV9HT0JKRUNU
CiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgc2FuZGJveDsKICNlbHNlCi0gICAg
W1B1dEZvcndhcmRzPXZhbHVlXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU2V0dGFibGVUb2tlbkxp
c3Qgc2FuZGJveDsKKyAgICBbUHV0Rm9yd2FyZHM9dmFsdWUsIE5lZWRzUHJvY2Vzc2luZ1N0YWNr
XSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU2V0dGFibGVUb2tlbkxpc3Qgc2FuZGJveDsKICNlbmRp
ZgogCiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgc2Nyb2xsaW5nOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5pZGwKaW5kZXggZGM2MzM5MC4uZDY4YTRjYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsCkBAIC0yNiw3ICsyNiw3
IEBACiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgYWx0OwogICAgIFtSZWZsZWN0
XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGJvcmRlcjsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERP
TVN0cmluZyBjcm9zc09yaWdpbjsKLSAgICBhdHRyaWJ1dGUgbG9uZyBoZWlnaHQ7CisgICAgW05l
ZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1dGUgbG9uZyBoZWlnaHQ7CiAgICAgW1JlZmxlY3Rd
IGF0dHJpYnV0ZSBsb25nIGhzcGFjZTsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIGJvb2xlYW4g
aXNNYXA7CiAgICAgW1JlZmxlY3QsIFVSTF0gYXR0cmlidXRlIERPTVN0cmluZyBsb25nRGVzYzsK
QEAgLTM4LDcgKzM4LDcgQEAKICNlbmRpZgogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIHVzZU1hcDsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIGxvbmcgdnNwYWNlOwotICAgIGF0
dHJpYnV0ZSBsb25nIHdpZHRoOworICAgIFtOZWVkc1Byb2Nlc3NpbmdTdGFja10gYXR0cmlidXRl
IGxvbmcgd2lkdGg7CiAKICAgICAvLyBFeHRlbnNpb25zCiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGJvb2xlYW4gY29tcGxldGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmlk
bAppbmRleCBkZTEyZjhjLi5mNGMxOWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5pZGwKQEAgLTIyLDI0ICsyMiwyNCBAQAogaW50ZXJmYWNlIEhUTUxJbnB1dEVsZW1l
bnQgOiBIVE1MRWxlbWVudCB7CiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgYWNj
ZXB0OwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFsdDsKLSAgICBhdHRyaWJ1
dGUgRE9NU3RyaW5nIGF1dG9jb21wbGV0ZTsKKyAgICBbTmVlZHNQcm9jZXNzaW5nU3RhY2tdIGF0
dHJpYnV0ZSBET01TdHJpbmcgYXV0b2NvbXBsZXRlOwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUg
Ym9vbGVhbiBhdXRvZm9jdXM7CiAgICAgW1JlZmxlY3Q9Y2hlY2tlZF0gYXR0cmlidXRlIGJvb2xl
YW4gZGVmYXVsdENoZWNrZWQ7Ci0gICAgYXR0cmlidXRlIGJvb2xlYW4gY2hlY2tlZDsKKyAgICBb
TmVlZHNQcm9jZXNzaW5nU3RhY2tdIGF0dHJpYnV0ZSBib29sZWFuIGNoZWNrZWQ7CiAgICAgW1Jl
ZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgZGlyTmFtZTsKICAgICBbUmVmbGVjdF0gYXR0cmli
dXRlIGJvb2xlYW4gZGlzYWJsZWQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxGb3JtRWxl
bWVudCBmb3JtOwogICAgIGF0dHJpYnV0ZSBGaWxlTGlzdCBmaWxlczsKICAgICBbUmVmbGVjdCwg
VVJMXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZvcm1BY3Rpb247Ci0gICAgW1RyZWF0TnVsbEFzPU51
bGxTdHJpbmddIGF0dHJpYnV0ZSBET01TdHJpbmcgZm9ybUVuY3R5cGU7Ci0gICAgW1RyZWF0TnVs
bEFzPU51bGxTdHJpbmddIGF0dHJpYnV0ZSBET01TdHJpbmcgZm9ybU1ldGhvZDsKKyAgICBbVHJl
YXROdWxsQXM9TnVsbFN0cmluZywgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIGF0dHJpYnV0ZSBET01T
dHJpbmcgZm9ybUVuY3R5cGU7CisgICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIE5lZWRzUHJv
Y2Vzc2luZ1N0YWNrXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZvcm1NZXRob2Q7CiAgICAgW1JlZmxl
Y3RdIGF0dHJpYnV0ZSBib29sZWFuIGZvcm1Ob1ZhbGlkYXRlOwogICAgIFtSZWZsZWN0XSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIGZvcm1UYXJnZXQ7Ci0gICAgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcg
aGVpZ2h0OwotICAgIGF0dHJpYnV0ZSBib29sZWFuIGluZGV0ZXJtaW5hdGU7CisgICAgW05lZWRz
UHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBoZWlnaHQ7CisgICAgW05l
ZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1dGUgYm9vbGVhbiBpbmRldGVybWluYXRlOwogICAg
IFtDb25kaXRpb25hbD1EQVRBTElTVF9FTEVNRU5UXSByZWFkb25seSBhdHRyaWJ1dGUgSFRNTEVs
ZW1lbnQgbGlzdDsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBtYXg7Ci0gICAg
W1NldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIGxvbmcgbWF4TGVuZ3RoOworICAgIFtT
ZXR0ZXJSYWlzZXNFeGNlcHRpb24sIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1dGUgbG9u
ZyBtYXhMZW5ndGg7CiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgbWluOwogICAg
IFtSZWZsZWN0XSBhdHRyaWJ1dGUgYm9vbGVhbiBtdWx0aXBsZTsKICAgICBbUmVmbGVjdF0gYXR0
cmlidXRlIERPTVN0cmluZyBuYW1lOwpAQCAtNTAsMjUgKzUwLDI1IEBAIGludGVyZmFjZSBIVE1M
SW5wdXRFbGVtZW50IDogSFRNTEVsZW1lbnQgewogI2lmIGRlZmluZWQoTEFOR1VBR0VfT0JKRUNU
SVZFX0MpICYmIExBTkdVQUdFX09CSkVDVElWRV9DCiAgICAgW09iakNJbXBsZW1lbnRlZEFzVW5z
aWduZWRMb25nXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNpemU7IC8vIERPTSBsZXZlbCAyIGNoYW5n
ZWQgdGhpcyB0byBhIGxvbmcsIGJ1dCBPYmpDIEFQSSBpcyBhIHN0cmluZwogI2Vsc2UKLSAgICBb
U2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBzaXplOyAvLyBD
aGFuZ2VkIHN0cmluZyAtPiBsb25nIC0+IHVuc2lnbmVkIGxvbmcKKyAgICBbU2V0dGVyUmFpc2Vz
RXhjZXB0aW9uLCBOZWVkc1Byb2Nlc3NpbmdTdGFja10gYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcg
c2l6ZTsgLy8gQ2hhbmdlZCBzdHJpbmcgLT4gbG9uZyAtPiB1bnNpZ25lZCBsb25nCiAjZW5kaWYK
ICAgICBbUmVmbGVjdCwgVVJMXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNyYzsKICAgICBbUmVmbGVj
dF0gYXR0cmlidXRlIERPTVN0cmluZyBzdGVwOwotICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgdHlw
ZTsgLy8gcmVhZG9ubHkgZHJvcHBlZCBhcyBwYXJ0IG9mIERPTSBsZXZlbCAyCi0gICAgW1RyZWF0
TnVsbEFzPU51bGxTdHJpbmddIGF0dHJpYnV0ZSBET01TdHJpbmcgZGVmYXVsdFZhbHVlOworICAg
IFtOZWVkc1Byb2Nlc3NpbmdTdGFja10gYXR0cmlidXRlIERPTVN0cmluZyB0eXBlOyAvLyByZWFk
b25seSBkcm9wcGVkIGFzIHBhcnQgb2YgRE9NIGxldmVsIDIKKyAgICBbVHJlYXROdWxsQXM9TnVs
bFN0cmluZywgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIGF0dHJpYnV0ZSBET01TdHJpbmcgZGVmYXVs
dFZhbHVlOwogICAgIC8vIFNlZSB0aGUgZGlzY3Vzc2lvbiBpbiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMDg1CiAjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NS
SVBUKSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBUCi0gICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcs
IFNldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0cmluZyB2YWx1ZTsKKyAgICBb
VHJlYXROdWxsQXM9TnVsbFN0cmluZywgU2V0dGVyUmFpc2VzRXhjZXB0aW9uLCBOZWVkc1Byb2Nl
c3NpbmdTdGFja10gYXR0cmlidXRlIERPTVN0cmluZyB2YWx1ZTsKICNlbHNlCiAgICAgW1RyZWF0
TnVsbEFzPU51bGxTdHJpbmddIGF0dHJpYnV0ZSBET01TdHJpbmcgdmFsdWU7CiAjZW5kaWYKICAg
ICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgRGF0ZSB2YWx1ZUFzRGF0ZTsKICAg
ICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSB2
YWx1ZUFzTnVtYmVyOwogCi0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCBzdGVwVXAob3B0aW9u
YWwgbG9uZyBuID0gMSk7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCBzdGVwRG93bihvcHRp
b25hbCBsb25nIG4gPSAxKTsKKyAgICBbUmFpc2VzRXhjZXB0aW9uLCBOZWVkc1Byb2Nlc3NpbmdT
dGFja10gdm9pZCBzdGVwVXAob3B0aW9uYWwgbG9uZyBuID0gMSk7CisgICAgW1JhaXNlc0V4Y2Vw
dGlvbiwgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIHZvaWQgc3RlcERvd24ob3B0aW9uYWwgbG9uZyBu
ID0gMSk7CiAKLSAgICBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB3aWR0aDsKKyAgICBbTmVlZHNQ
cm9jZXNzaW5nU3RhY2tdIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHdpZHRoOwogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBib29sZWFuIHdpbGxWYWxpZGF0ZTsKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgVmFsaWRpdHlTdGF0ZSB2YWxpZGl0eTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIHZhbGlkYXRpb25NZXNzYWdlOwpAQCAtODIsOCArODIsOCBAQCBpbnRlcmZhY2UgSFRNTElu
cHV0RWxlbWVudCA6IEhUTUxFbGVtZW50IHsKICAgICBbQ3VzdG9tXSBhdHRyaWJ1dGUgbG9uZyBz
ZWxlY3Rpb25FbmQ7CiAgICAgW0N1c3RvbV0gYXR0cmlidXRlIERPTVN0cmluZyBzZWxlY3Rpb25E
aXJlY3Rpb247CiAKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHNldFJhbmdlVGV4dChET01T
dHJpbmcgcmVwbGFjZW1lbnQpOwotICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQgc2V0UmFuZ2VU
ZXh0KERPTVN0cmluZyByZXBsYWNlbWVudCwKKyAgICBbUmFpc2VzRXhjZXB0aW9uLCBOZWVkc1By
b2Nlc3NpbmdTdGFja10gdm9pZCBzZXRSYW5nZVRleHQoRE9NU3RyaW5nIHJlcGxhY2VtZW50KTsK
KyAgICBbUmFpc2VzRXhjZXB0aW9uLCBOZWVkc1Byb2Nlc3NpbmdTdGFja10gdm9pZCBzZXRSYW5n
ZVRleHQoRE9NU3RyaW5nIHJlcGxhY2VtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgbG9uZyBzdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg
ZW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgW0RlZmF1bHQ9TnVsbFN0cmluZ10gb3B0aW9u
YWwgRE9NU3RyaW5nIHNlbGVjdGlvbk1vZGUpOwpAQCAtMTE5LDggKzExOSw4IEBAIGludGVyZmFj
ZSBIVE1MSW5wdXRFbGVtZW50IDogSFRNTEVsZW1lbnQgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBVUkwgYWJzb2x1dGVJbWFnZVVSTDsKICNlbmRpZgogCi0gICAgW0NvbmRpdGlvbmFsPUlPU19B
VVRPQ09SUkVDVF9BTkRfQVVUT0NBUElUQUxJWkVdIGF0dHJpYnV0ZSBib29sZWFuIGF1dG9jb3Jy
ZWN0OwotICAgIFtDb25kaXRpb25hbD1JT1NfQVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpF
LCBUcmVhdE51bGxBcz1OdWxsU3RyaW5nXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGF1dG9jYXBpdGFs
aXplOworICAgIFtDb25kaXRpb25hbD1JT1NfQVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpF
LCBOZWVkc1Byb2Nlc3NpbmdTdGFja10gYXR0cmlidXRlIGJvb2xlYW4gYXV0b2NvcnJlY3Q7Cisg
ICAgW0NvbmRpdGlvbmFsPUlPU19BVVRPQ09SUkVDVF9BTkRfQVVUT0NBUElUQUxJWkUsIFRyZWF0
TnVsbEFzPU51bGxTdHJpbmcsIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGF1dG9jYXBpdGFsaXplOwogCiAgICAgLy8gU2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0
bWwtbWVkaWEtY2FwdHVyZS8KICAgICBbQ29uZGl0aW9uYWw9TUVESUFfQ0FQVFVSRSwgUmVmbGVj
dF0gYXR0cmlidXRlIGJvb2xlYW4gY2FwdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTExpbmtFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtF
bGVtZW50LmlkbAppbmRleCBiZDkyNWMzLi5hZjJmZjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTGlua0VsZW1lbnQuaWRsCkBAIC0yOCw3ICsyOCw3IEBAIGludGVyZmFjZSBIVE1MTGlua0Vs
ZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcg
cmVsOwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHJldjsKICNpZiAoZGVmaW5l
ZChMQU5HVUFHRV9KQVZBU0NSSVBUKSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBUKSB8fCAoZGVmaW5l
ZChMQU5HVUFHRV9HT0JKRUNUKSB8fCBMQU5HVUFHRV9HT0JKRUNUKQotICAgIFtQdXRGb3J3YXJk
cz12YWx1ZV0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVNldHRhYmxlVG9rZW5MaXN0IHNpemVzOwor
ICAgIFtQdXRGb3J3YXJkcz12YWx1ZSwgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TZXR0YWJsZVRva2VuTGlzdCBzaXplczsKICNlbmRpZgogICAgIFtSZWZsZWN0
XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHRhcmdldDsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERP
TVN0cmluZyB0eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVl
ZUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuaWRs
CmluZGV4IGE4MDU2MTQuLmQ4YTFmOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1hcnF1ZWVFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJx
dWVlRWxlbWVudC5pZGwKQEAgLTI2LDkgKzI2LDkgQEAgaW50ZXJmYWNlIEhUTUxNYXJxdWVlRWxl
bWVudCA6IEhUTUxFbGVtZW50IHsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBk
aXJlY3Rpb247CiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgaGVpZ2h0OwogICAg
IFtSZWZsZWN0XSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBoc3BhY2U7Ci0gICAgW1NldHRlclJh
aXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIGxvbmcgbG9vcDsKLSAgICBbU2V0dGVyUmFpc2VzRXhj
ZXB0aW9uXSBhdHRyaWJ1dGUgbG9uZyBzY3JvbGxBbW91bnQ7Ci0gICAgW1NldHRlclJhaXNlc0V4
Y2VwdGlvbl0gYXR0cmlidXRlIGxvbmcgc2Nyb2xsRGVsYXk7CisgICAgW1NldHRlclJhaXNlc0V4
Y2VwdGlvbiwgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIGF0dHJpYnV0ZSBsb25nIGxvb3A7CisgICAg
W1NldHRlclJhaXNlc0V4Y2VwdGlvbiwgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIGF0dHJpYnV0ZSBs
b25nIHNjcm9sbEFtb3VudDsKKyAgICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9uLCBOZWVkc1Byb2Nl
c3NpbmdTdGFja10gYXR0cmlidXRlIGxvbmcgc2Nyb2xsRGVsYXk7CiAgICAgW1JlZmxlY3RdIGF0
dHJpYnV0ZSBib29sZWFuIHRydWVTcGVlZDsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIHVuc2ln
bmVkIGxvbmcgdnNwYWNlOwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHdpZHRo
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKaW5kZXggMjZjZmM4Yi4u
MDRlMjQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCkBAIC00
MSw3ICs0MSw3IEBACiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTkVUV09SS19MT0FESU5HID0g
MjsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBORVRXT1JLX05PX1NPVVJDRSA9IDM7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IG5ldHdvcmtTdGF0ZTsKLSAgICBhdHRy
aWJ1dGUgRE9NU3RyaW5nIHByZWxvYWQ7CisgICAgW05lZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIHByZWxvYWQ7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgVGltZVJh
bmdlcyBidWZmZXJlZDsKICAgICB2b2lkIGxvYWQoKTsKQEAgLTc5LDcgKzc5LDcgQEAKICAgICB2
b2lkIGZhc3RTZWVrKHVucmVzdHJpY3RlZCBkb3VibGUgdGltZSk7CiAKICAgICAvLyBjb250cm9s
cwotICAgIGF0dHJpYnV0ZSBib29sZWFuIGNvbnRyb2xzOworICAgIFtOZWVkc1Byb2Nlc3NpbmdT
dGFja10gYXR0cmlidXRlIGJvb2xlYW4gY29udHJvbHM7CiAgICAgW1NldHRlclJhaXNlc0V4Y2Vw
dGlvbl0gYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgdm9sdW1lOwogICAgIGF0dHJpYnV0
ZSBib29sZWFuIG11dGVkOwogICAgIFtSZWZsZWN0PW11dGVkXSBhdHRyaWJ1dGUgYm9vbGVhbiBk
ZWZhdWx0TXV0ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVs
ZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmlkbAppbmRl
eCA2Mjg3ZTE5Li5hMDE1ZjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZXRlckVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVu
dC5pZGwKQEAgLTIwLDExICsyMCwxMSBAQAogWwogICAgIENvbmRpdGlvbmFsPU1FVEVSX0VMRU1F
TlQKIF0gaW50ZXJmYWNlIEhUTUxNZXRlckVsZW1lbnQgOiBIVE1MRWxlbWVudCB7Ci0gICAgW1Nl
dHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgdmFsdWU7
Ci0gICAgW1NldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3Vi
bGUgbWluOwotICAgIFtTZXR0ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSB1bnJlc3RyaWN0
ZWQgZG91YmxlIG1heDsKLSAgICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgdW5y
ZXN0cmljdGVkIGRvdWJsZSBsb3c7Ci0gICAgW1NldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmli
dXRlIHVucmVzdHJpY3RlZCBkb3VibGUgaGlnaDsKLSAgICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9u
XSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBvcHRpbXVtOworICAgIFtTZXR0ZXJSYWlz
ZXNFeGNlcHRpb24sIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVk
IGRvdWJsZSB2YWx1ZTsKKyAgICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9uLCBOZWVkc1Byb2Nlc3Np
bmdTdGFja10gYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgbWluOworICAgIFtTZXR0ZXJS
YWlzZXNFeGNlcHRpb24sIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1dGUgdW5yZXN0cmlj
dGVkIGRvdWJsZSBtYXg7CisgICAgW1NldHRlclJhaXNlc0V4Y2VwdGlvbiwgTmVlZHNQcm9jZXNz
aW5nU3RhY2tdIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGxvdzsKKyAgICBbU2V0dGVy
UmFpc2VzRXhjZXB0aW9uLCBOZWVkc1Byb2Nlc3NpbmdTdGFja10gYXR0cmlidXRlIHVucmVzdHJp
Y3RlZCBkb3VibGUgaGlnaDsKKyAgICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9uLCBOZWVkc1Byb2Nl
c3NpbmdTdGFja10gYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgb3B0aW11bTsKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgTm9kZUxpc3QgbGFiZWxzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPTGlzdEVsZW1lbnQuaWRsCmluZGV4IDFlNTE2MTUuLjI1OWNmZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmlkbApAQCAtMTksNyArMTksNyBAQAogCiBpbnRl
cmZhY2UgSFRNTE9MaXN0RWxlbWVudCA6IEhUTUxFbGVtZW50IHsKICAgICBbUmVmbGVjdF0gYXR0
cmlidXRlIGJvb2xlYW4gY29tcGFjdDsKLSAgICBhdHRyaWJ1dGUgbG9uZyBzdGFydDsKKyAgICBb
TmVlZHNQcm9jZXNzaW5nU3RhY2tdIGF0dHJpYnV0ZSBsb25nIHN0YXJ0OwogICAgIFtSZWZsZWN0
XSBhdHRyaWJ1dGUgYm9vbGVhbiByZXZlcnNlZDsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERP
TVN0cmluZyB0eXBlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9w
dGlvbkVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5p
ZGwKaW5kZXggZWVhZmE0Mi4uZjMzNDNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3B0aW9uRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0
aW9uRWxlbWVudC5pZGwKQEAgLTIwLDE1ICsyMCwxNiBAQAogCiBbCiAgICAgSlNHZW5lcmF0ZVRv
TmF0aXZlT2JqZWN0LAorICAgIE5lZWRzUHJvY2Vzc2luZ1N0YWNrSW5Db25zdHJ1Y3RvciwKICAg
ICBOYW1lZENvbnN0cnVjdG9yPU9wdGlvbihbRGVmYXVsdD1OdWxsU3RyaW5nXSBvcHRpb25hbCBE
T01TdHJpbmcgZGF0YSwgW0RlZmF1bHQ9TnVsbFN0cmluZ10gb3B0aW9uYWwgRE9NU3RyaW5nIHZh
bHVlLCBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGJvb2xlYW4gZGVmYXVsdFNlbGVjdGVk
LCBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGJvb2xlYW4gc2VsZWN0ZWQpLAogICAgIENv
bnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9uCiBdIGludGVyZmFjZSBIVE1MT3B0aW9uRWxlbWVudCA6
IEhUTUxFbGVtZW50IHsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIGJvb2xlYW4gZGlzYWJsZWQ7
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxGb3JtRWxlbWVudCBmb3JtOwotICAgIGF0dHJp
YnV0ZSBET01TdHJpbmcgbGFiZWw7CisgICAgW05lZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIGxhYmVsOwogICAgIFtSZWZsZWN0PXNlbGVjdGVkXSBhdHRyaWJ1dGUgYm9v
bGVhbiBkZWZhdWx0U2VsZWN0ZWQ7Ci0gICAgYXR0cmlidXRlIGJvb2xlYW4gc2VsZWN0ZWQ7Ci0g
ICAgYXR0cmlidXRlIERPTVN0cmluZyB2YWx1ZTsKKyAgICBbTmVlZHNQcm9jZXNzaW5nU3RhY2td
IGF0dHJpYnV0ZSBib29sZWFuIHNlbGVjdGVkOworICAgIFtOZWVkc1Byb2Nlc3NpbmdTdGFja10g
YXR0cmlidXRlIERPTVN0cmluZyB2YWx1ZTsKIAogI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFWQVND
UklQVCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVAogICAgIFtTZXR0ZXJSYWlzZXNFeGNlcHRpb25d
IGF0dHJpYnV0ZSBET01TdHJpbmcgdGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9w
dGlvbnNDb2xsZWN0aW9uLmlkbAppbmRleCBiYWU5OGIwLi41YzIxODIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaWRsCkBAIC0yMyw3ICsyMyw3IEBA
CiAgICAgQ3VzdG9tSW5kZXhlZFNldHRlciwKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxP
d25lck5vZGVSb290LAogXSBpbnRlcmZhY2UgSFRNTE9wdGlvbnNDb2xsZWN0aW9uIDogSFRNTENv
bGxlY3Rpb24gewotICAgIGF0dHJpYnV0ZSBsb25nIHNlbGVjdGVkSW5kZXg7CisgICAgW05lZWRz
UHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1dGUgbG9uZyBzZWxlY3RlZEluZGV4OwogICAgIFtDdXN0
b21TZXR0ZXIsIFNldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcg
bGVuZ3RoOwogCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgJiYgTEFOR1VBR0Vf
T0JKRUNUSVZFX0MgfHwgZGVmaW5lZChMQU5HVUFHRV9HT0JKRUNUKSAmJiBMQU5HVUFHRV9HT0JK
RUNUCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuaWRsCmluZGV4IGJkY2Iw
YmQuLjRkOWIzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVs
ZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuaWRs
CkBAIC0yMywxNCArMjMsMTQgQEAKICAqLwogCiBpbnRlcmZhY2UgSFRNTE91dHB1dEVsZW1lbnQg
OiBIVE1MRWxlbWVudCB7Ci0gICAgW1B1dEZvcndhcmRzPXZhbHVlXSByZWFkb25seSBhdHRyaWJ1
dGUgRE9NU2V0dGFibGVUb2tlbkxpc3QgaHRtbEZvcjsKKyAgICBbUHV0Rm9yd2FyZHM9dmFsdWUs
IE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU2V0dGFibGVUb2tl
bkxpc3QgaHRtbEZvcjsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MRm9ybUVsZW1lbnQg
Zm9ybTsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBuYW1lOwogCiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB0eXBlOwotICAgIFtUcmVhdE51bGxBcz1OdWxsU3Ry
aW5nXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRlZmF1bHRWYWx1ZTsKLSAgICBbVHJlYXROdWxsQXM9
TnVsbFN0cmluZ10gYXR0cmlidXRlIERPTVN0cmluZyB2YWx1ZTsKKyAgICBbVHJlYXROdWxsQXM9
TnVsbFN0cmluZywgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIGF0dHJpYnV0ZSBET01TdHJpbmcgZGVm
YXVsdFZhbHVlOworICAgIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBOZWVkc1Byb2Nlc3NpbmdT
dGFja10gYXR0cmlidXRlIERPTVN0cmluZyB2YWx1ZTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBib29sZWFuIHdpbGxWYWxpZGF0ZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgVmFsaWRpdHlT
dGF0ZSB2YWxpZGl0eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dy
ZXNzRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQu
aWRsCmluZGV4IGVmZjk5NzguLmE2NjZhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFByb2dyZXNzRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UHJvZ3Jlc3NFbGVtZW50LmlkbApAQCAtMTgsOCArMTgsOCBAQAogICovCiAKIGludGVyZmFjZSBI
VE1MUHJvZ3Jlc3NFbGVtZW50IDogSFRNTEVsZW1lbnQgewotICAgIFtTZXR0ZXJSYWlzZXNFeGNl
cHRpb25dIGF0dHJpYnV0ZSAgdW5yZXN0cmljdGVkIGRvdWJsZSB2YWx1ZTsKLSAgICBbU2V0dGVy
UmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgIHVucmVzdHJpY3RlZCBkb3VibGUgbWF4OworICAg
IFtTZXR0ZXJSYWlzZXNFeGNlcHRpb24sIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1dGUg
IHVucmVzdHJpY3RlZCBkb3VibGUgdmFsdWU7CisgICAgW1NldHRlclJhaXNlc0V4Y2VwdGlvbiwg
TmVlZHNQcm9jZXNzaW5nU3RhY2tdIGF0dHJpYnV0ZSAgdW5yZXN0cmljdGVkIGRvdWJsZSBtYXg7
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlICB1bnJlc3RyaWN0ZWQgZG91YmxlICAgICAgICAgICAg
ICAgIHBvc2l0aW9uOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSAgTm9kZUxpc3QgICAgICAgICAg
ICAgIGxhYmVsczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3Jp
cHRFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaWRs
CmluZGV4IDEzNjVkMTIuLjlkNGRkYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFNjcmlwdEVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlw
dEVsZW1lbnQuaWRsCkBAIC0xOCwxMSArMTgsMTEgQEAKICAqLwogCiBpbnRlcmZhY2UgSFRNTFNj
cmlwdEVsZW1lbnQgOiBIVE1MRWxlbWVudCB7Ci0gICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmdd
IGF0dHJpYnV0ZSBET01TdHJpbmcgdGV4dDsKKyAgICBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywg
TmVlZHNQcm9jZXNzaW5nU3RhY2tdIGF0dHJpYnV0ZSBET01TdHJpbmcgdGV4dDsKICAgICBbUmVm
bGVjdD1mb3JdIGF0dHJpYnV0ZSBET01TdHJpbmcgaHRtbEZvcjsKICAgICBbUmVmbGVjdF0gYXR0
cmlidXRlIERPTVN0cmluZyBldmVudDsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmlu
ZyBjaGFyc2V0OwotICAgIGF0dHJpYnV0ZSBib29sZWFuIGFzeW5jOworICAgIFtOZWVkc1Byb2Nl
c3NpbmdTdGFja10gYXR0cmlidXRlIGJvb2xlYW4gYXN5bmM7CiAgICAgW1JlZmxlY3RdIGF0dHJp
YnV0ZSBib29sZWFuIGRlZmVyOwogICAgIFtSZWZsZWN0LCBVUkxdIGF0dHJpYnV0ZSBET01TdHJp
bmcgc3JjOwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHR5cGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRsCmluZGV4IDk5NTZjODkuLjE3MWQ4ZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRsCkBAIC0yNCwxMCAr
MjQsMTAgQEAKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIGJvb2xlYW4gYXV0b2ZvY3VzOwogICAg
IFtSZWZsZWN0XSBhdHRyaWJ1dGUgYm9vbGVhbiBkaXNhYmxlZDsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgSFRNTEZvcm1FbGVtZW50IGZvcm07Ci0gICAgYXR0cmlidXRlIGJvb2xlYW4gbXVsdGlw
bGU7CisgICAgW05lZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1dGUgYm9vbGVhbiBtdWx0aXBs
ZTsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBuYW1lOwogICAgIFtSZWZsZWN0
XSBhdHRyaWJ1dGUgYm9vbGVhbiByZXF1aXJlZDsKLSAgICBhdHRyaWJ1dGUgbG9uZyBzaXplOwor
ICAgIFtOZWVkc1Byb2Nlc3NpbmdTdGFja10gYXR0cmlidXRlIGxvbmcgc2l6ZTsKIAogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdHlwZTsKIApAQCAtMzcsNyArMzcsNyBAQAogICAg
IC8vIGZvciBjb21wYXRpYmlsaXR5IHdlIGtlZXAgRE9NIExldmVsIDEgZGVmaW5pdGlvbi4KICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBsZW5ndGg7CiAjZWxzZQotICAgIFtTZXR0ZXJSYWlz
ZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKKyAgICBbU2V0dGVy
UmFpc2VzRXhjZXB0aW9uLCBOZWVkc1Byb2Nlc3NpbmdTdGFja10gYXR0cmlidXRlIHVuc2lnbmVk
IGxvbmcgbGVuZ3RoOwogI2VuZGlmCiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9D
KSAmJiBMQU5HVUFHRV9PQkpFQ1RJVkVfQyB8fCBkZWZpbmVkKExBTkdVQUdFX0dPQkpFQ1QpICYm
IExBTkdVQUdFX0dPQkpFQ1QKQEAgLTQ4LDkgKzQ4LDkgQEAKICAgICBIVE1MT3B0aW9uRWxlbWVu
dCBuYW1lZEl0ZW0oW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJpbmcgbmFtZSk7
CiAjZW5kaWYKIAotICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRlcnMsIFJhaXNlc0V4Y2Vw
dGlvbl0gdm9pZCBhZGQoSFRNTEVsZW1lbnQgZWxlbWVudCwgW0RlZmF1bHQ9VW5kZWZpbmVkXSBv
cHRpb25hbCBIVE1MRWxlbWVudD8gYmVmb3JlKTsKKyAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJh
bWV0ZXJzLCBSYWlzZXNFeGNlcHRpb24sIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSB2b2lkIGFkZChI
VE1MRWxlbWVudCBlbGVtZW50LCBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIEhUTUxFbGVt
ZW50PyBiZWZvcmUpOwogI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkgJiYgTEFOR1VB
R0VfSkFWQVNDUklQVAotICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQgYWRkKEhUTUxFbGVtZW50
IGVsZW1lbnQsIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgbG9uZyBpbmRleCk7CisgICAg
W1JhaXNlc0V4Y2VwdGlvbiwgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIHZvaWQgYWRkKEhUTUxFbGVt
ZW50IGVsZW1lbnQsIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgbG9uZyBpbmRleCk7CiAg
ICAgLy8gSW4gSmF2YVNjcmlwdCwgd2Ugc3VwcG9ydCBib3RoIG9wdGlvbiBpbmRleCBhbmQgb3B0
aW9uIG9iamVjdCBwYXJhbWV0ZXJzLgogICAgIC8vIEFzIG9mIHRoaXMgd3JpdGluZyB0aGlzIGNh
bm5vdCBiZSBhdXRvLWdlbmVyYXRlZC4KICAgICBbQ3VzdG9tXSB2b2lkIHJlbW92ZSgvKiBpbmRl
eE9yT3B0aW9uICovKTsKQEAgLTU4LDggKzU4LDggQEAKICAgICBbSW1wbGVtZW50ZWRBcz1yZW1v
dmVCeUluZGV4XSB2b2lkIHJlbW92ZShsb25nIGluZGV4KTsKICNlbmRpZgogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBIVE1MQ29sbGVjdGlvbiBzZWxlY3RlZE9wdGlvbnM7Ci0gICAgYXR0cmlidXRl
IGxvbmcgc2VsZWN0ZWRJbmRleDsKLSAgICBbVHJlYXROdWxsQXM9TnVsbFN0cmluZ10gYXR0cmli
dXRlIERPTVN0cmluZyB2YWx1ZTsKKyAgICBbTmVlZHNQcm9jZXNzaW5nU3RhY2tdIGF0dHJpYnV0
ZSBsb25nIHNlbGVjdGVkSW5kZXg7CisgICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIE5lZWRz
UHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZhbHVlOwogCiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGJvb2xlYW4gd2lsbFZhbGlkYXRlOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBWYWxpZGl0eVN0YXRlIHZhbGlkaXR5OwpAQCAtNjksNSArNjksNSBAQAogCiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIE5vZGVMaXN0IGxhYmVsczsKIAotICAgIGF0dHJpYnV0ZSBET01TdHJpbmcg
YXV0b2NvbXBsZXRlOworICAgIFtOZWVkc1Byb2Nlc3NpbmdTdGFja10gYXR0cmlidXRlIERPTVN0
cmluZyBhdXRvY29tcGxldGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU291cmNlRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVt
ZW50LmlkbAppbmRleCBjZWVkMzVlLi5lNzEyZmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTb3VyY2VFbGVtZW50LmlkbApAQCAtMjcsNiArMjcsNiBAQAogICAgIENvbmRpdGlvbmFsPVZJ
REVPLAogXSBpbnRlcmZhY2UgSFRNTFNvdXJjZUVsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiBbUmVm
bGVjdCwgVVJMXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNyYzsKLWF0dHJpYnV0ZSBET01TdHJpbmcg
dHlwZTsKLWF0dHJpYnV0ZSBET01TdHJpbmcgbWVkaWE7CitbTmVlZHNQcm9jZXNzaW5nU3RhY2td
IGF0dHJpYnV0ZSBET01TdHJpbmcgdHlwZTsKK1tOZWVkc1Byb2Nlc3NpbmdTdGFja10gYXR0cmli
dXRlIERPTVN0cmluZyBtZWRpYTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTdHlsZUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVt
ZW50LmlkbAppbmRleCA3YWJmMzgzOS4uYjI4N2ZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTdHlsZUVsZW1lbnQuaWRsCkBAIC0xOSw3ICsxOSw3IEBACiAgKi8KIAogaW50ZXJmYWNlIEhU
TUxTdHlsZUVsZW1lbnQgOiBIVE1MRWxlbWVudCB7Ci0gICAgYXR0cmlidXRlIGJvb2xlYW4gZGlz
YWJsZWQ7CisgICAgW05lZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1dGUgYm9vbGVhbiBkaXNh
YmxlZDsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBtZWRpYTsKICAgICBbUmVm
bGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyB0eXBlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRhYmxlQ2VsbEVsZW1lbnQuaWRsCmluZGV4IGI3NmJhMjUuLmVlMjMxMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaWRsCkBAIC0yNSw3ICsyNSw3
IEBAIGludGVyZmFjZSBIVE1MVGFibGVDZWxsRWxlbWVudCA6IEhUTUxFbGVtZW50IHsKICAgICBb
UmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBiZ0NvbG9yOwogICAgIFtSZWZsZWN0PWNoYXJd
IGF0dHJpYnV0ZSBET01TdHJpbmcgY2g7CiAgICAgW1JlZmxlY3Q9Y2hhcm9mZl0gYXR0cmlidXRl
IERPTVN0cmluZyBjaE9mZjsKLSAgICBhdHRyaWJ1dGUgbG9uZyBjb2xTcGFuOworICAgIFtOZWVk
c1Byb2Nlc3NpbmdTdGFja10gYXR0cmlidXRlIGxvbmcgY29sU3BhbjsKIAogICAgIC8vIEZJWE1F
OiBUaGlzIGlzIHN1cHBvc2VkIHRvIGJlOgogICAgIC8vIFtQdXRGb3J3YXJkcz12YWx1ZV0gcmVh
ZG9ubHkgYXR0cmlidXRlIERPTVNldHRhYmxlVG9rZW5MaXN0IGhlYWRlcnM7CkBAIC0zMyw3ICsz
Myw3IEBAIGludGVyZmFjZSBIVE1MVGFibGVDZWxsRWxlbWVudCA6IEhUTUxFbGVtZW50IHsKIAog
ICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGhlaWdodDsKICAgICBbUmVmbGVjdF0g
YXR0cmlidXRlIGJvb2xlYW4gbm9XcmFwOwotICAgIGF0dHJpYnV0ZSBsb25nIHJvd1NwYW47Cisg
ICAgW05lZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1dGUgbG9uZyByb3dTcGFuOwogICAgIFtS
ZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZBbGlnbjsKICAgICBbUmVmbGVjdF0gYXR0cmli
dXRlIERPTVN0cmluZyB3aWR0aDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGFibGVDb2xFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29s
RWxlbWVudC5pZGwKaW5kZXggNzI1ZTA1ZC4uNjEzNGM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuaWRsCkBAIC0yMiw3ICsyMiw3IEBAIGludGVyZmFjZSBI
VE1MVGFibGVDb2xFbGVtZW50IDogSFRNTEVsZW1lbnQgewogICAgIFtSZWZsZWN0XSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIGFsaWduOwogICAgIFtSZWZsZWN0PWNoYXJdIGF0dHJpYnV0ZSBET01TdHJp
bmcgY2g7CiAgICAgW1JlZmxlY3Q9Y2hhcm9mZl0gYXR0cmlidXRlIERPTVN0cmluZyBjaE9mZjsK
LSAgICBhdHRyaWJ1dGUgbG9uZyBzcGFuOworICAgIFtOZWVkc1Byb2Nlc3NpbmdTdGFja10gYXR0
cmlidXRlIGxvbmcgc3BhbjsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyB2QWxp
Z247CiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgd2lkdGg7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5pZGwKaW5kZXggNzYzNzdlOS4uM2UyY2VkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaWRsCkBAIC0xOSw5ICsxOSw5
IEBACiAgKi8KIAogaW50ZXJmYWNlIEhUTUxUYWJsZUVsZW1lbnQgOiBIVE1MRWxlbWVudCB7Ci0g
ICAgW1NldHRlclJhaXNlc0V4Y2VwdGlvbiwgU3RyaWN0VHlwZUNoZWNraW5nXSBhdHRyaWJ1dGUg
SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQgY2FwdGlvbjsKLSAgICBbU2V0dGVyUmFpc2VzRXhjZXB0
aW9uLCBTdHJpY3RUeXBlQ2hlY2tpbmddIGF0dHJpYnV0ZSBIVE1MVGFibGVTZWN0aW9uRWxlbWVu
dCB0SGVhZDsKLSAgICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9uLCBTdHJpY3RUeXBlQ2hlY2tpbmdd
IGF0dHJpYnV0ZSBIVE1MVGFibGVTZWN0aW9uRWxlbWVudCB0Rm9vdDsKKyAgICBbU2V0dGVyUmFp
c2VzRXhjZXB0aW9uLCBTdHJpY3RUeXBlQ2hlY2tpbmcsIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSBh
dHRyaWJ1dGUgSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQgY2FwdGlvbjsKKyAgICBbU2V0dGVyUmFp
c2VzRXhjZXB0aW9uLCBTdHJpY3RUeXBlQ2hlY2tpbmcsIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSBh
dHRyaWJ1dGUgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQgdEhlYWQ7CisgICAgW1NldHRlclJhaXNl
c0V4Y2VwdGlvbiwgU3RyaWN0VHlwZUNoZWNraW5nLCBOZWVkc1Byb2Nlc3NpbmdTdGFja10gYXR0
cmlidXRlIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50IHRGb290OwogCiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIEhUTUxDb2xsZWN0aW9uIHJvd3M7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxD
b2xsZWN0aW9uIHRCb2RpZXM7CkBAIC0zNywxNSArMzcsMTUgQEAgaW50ZXJmYWNlIEhUTUxUYWJs
ZUVsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJp
bmcgc3VtbWFyeTsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyB3aWR0aDsKIAot
ICAgIEhUTUxFbGVtZW50IGNyZWF0ZVRIZWFkKCk7Ci0gICAgdm9pZCBkZWxldGVUSGVhZCgpOwot
ICAgIEhUTUxFbGVtZW50IGNyZWF0ZVRGb290KCk7Ci0gICAgdm9pZCBkZWxldGVURm9vdCgpOwot
ICAgIEhUTUxFbGVtZW50IGNyZWF0ZVRCb2R5KCk7Ci0gICAgSFRNTEVsZW1lbnQgY3JlYXRlQ2Fw
dGlvbigpOwotICAgIHZvaWQgZGVsZXRlQ2FwdGlvbigpOworICAgIFtOZWVkc1Byb2Nlc3NpbmdT
dGFja10gSFRNTEVsZW1lbnQgY3JlYXRlVEhlYWQoKTsKKyAgICBbTmVlZHNQcm9jZXNzaW5nU3Rh
Y2tdIHZvaWQgZGVsZXRlVEhlYWQoKTsKKyAgICBbTmVlZHNQcm9jZXNzaW5nU3RhY2tdIEhUTUxF
bGVtZW50IGNyZWF0ZVRGb290KCk7CisgICAgW05lZWRzUHJvY2Vzc2luZ1N0YWNrXSB2b2lkIGRl
bGV0ZVRGb290KCk7CisgICAgW05lZWRzUHJvY2Vzc2luZ1N0YWNrXSBIVE1MRWxlbWVudCBjcmVh
dGVUQm9keSgpOworICAgIFtOZWVkc1Byb2Nlc3NpbmdTdGFja10gSFRNTEVsZW1lbnQgY3JlYXRl
Q2FwdGlvbigpOworICAgIFtOZWVkc1Byb2Nlc3NpbmdTdGFja10gdm9pZCBkZWxldGVDYXB0aW9u
KCk7CiAKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSBIVE1MRWxlbWVudCBpbnNlcnRSb3cob3B0aW9u
YWwgbG9uZyBpbmRleCA9IC0xKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIGRlbGV0ZVJv
dyhbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGxvbmcgaW5kZXgpOworICAgIFtSYWlzZXNF
eGNlcHRpb24sIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSBIVE1MRWxlbWVudCBpbnNlcnRSb3cob3B0
aW9uYWwgbG9uZyBpbmRleCA9IC0xKTsKKyAgICBbUmFpc2VzRXhjZXB0aW9uLCBOZWVkc1Byb2Nl
c3NpbmdTdGFja10gdm9pZCBkZWxldGVSb3coW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBs
b25nIGluZGV4KTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlU2VjdGlvbkVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0
aW9uRWxlbWVudC5pZGwKaW5kZXggMDAyZmU4Mi4uYmZiNmQ3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5pZGwKQEAgLTI2LDcgKzI2LDcgQEAK
ICAgICBbUmVmbGVjdD1jaGFyb2ZmXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNoT2ZmOwogICAgIFtS
ZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZBbGlnbjsKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgSFRNTENvbGxlY3Rpb24gcm93czsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSBIVE1MRWxlbWVu
dCBpbnNlcnRSb3cob3B0aW9uYWwgbG9uZyBpbmRleCA9IC0xKTsKLSAgICBbUmFpc2VzRXhjZXB0
aW9uXSB2b2lkIGRlbGV0ZVJvdyhbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGxvbmcgaW5k
ZXgpOworICAgIFtSYWlzZXNFeGNlcHRpb24sIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSBIVE1MRWxl
bWVudCBpbnNlcnRSb3cob3B0aW9uYWwgbG9uZyBpbmRleCA9IC0xKTsKKyAgICBbUmFpc2VzRXhj
ZXB0aW9uLCBOZWVkc1Byb2Nlc3NpbmdTdGFja10gdm9pZCBkZWxldGVSb3coW0RlZmF1bHQ9VW5k
ZWZpbmVkXSBvcHRpb25hbCBsb25nIGluZGV4KTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsCmluZGV4IDIyYjgyODYuLjIxMjM2YmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbApAQCAtMjEsMjEgKzIxLDIx
IEBACiAKIGludGVyZmFjZSBIVE1MVGV4dEFyZWFFbGVtZW50IDogSFRNTEVsZW1lbnQgewogICAg
IFtSZWZsZWN0XSBhdHRyaWJ1dGUgYm9vbGVhbiBhdXRvZm9jdXM7Ci0gICAgYXR0cmlidXRlIGxv
bmcgY29sczsKKyAgICBbTmVlZHNQcm9jZXNzaW5nU3RhY2tdIGF0dHJpYnV0ZSBsb25nIGNvbHM7
CiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgZGlyTmFtZTsKICAgICBbUmVmbGVj
dF0gYXR0cmlidXRlIGJvb2xlYW4gZGlzYWJsZWQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEhU
TUxGb3JtRWxlbWVudCBmb3JtOwotICAgIFtTZXR0ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0
ZSBsb25nIG1heExlbmd0aDsKKyAgICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9uLCBOZWVkc1Byb2Nl
c3NpbmdTdGFja10gYXR0cmlidXRlIGxvbmcgbWF4TGVuZ3RoOwogICAgIFtSZWZsZWN0XSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIG5hbWU7CiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcg
cGxhY2Vob2xkZXI7CiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBib29sZWFuIHJlYWRPbmx5Owog
ICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgYm9vbGVhbiByZXF1aXJlZDsKLSAgICBhdHRyaWJ1dGUg
bG9uZyByb3dzOworICAgIFtOZWVkc1Byb2Nlc3NpbmdTdGFja10gYXR0cmlidXRlIGxvbmcgcm93
czsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyB3cmFwOwogCiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyB0eXBlOwotICAgIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5n
XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRlZmF1bHRWYWx1ZTsKLSAgICBbVHJlYXROdWxsQXM9TnVs
bFN0cmluZ10gYXR0cmlidXRlIERPTVN0cmluZyB2YWx1ZTsKKyAgICBbVHJlYXROdWxsQXM9TnVs
bFN0cmluZywgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIGF0dHJpYnV0ZSBET01TdHJpbmcgZGVmYXVs
dFZhbHVlOworICAgIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBOZWVkc1Byb2Nlc3NpbmdTdGFj
a10gYXR0cmlidXRlIERPTVN0cmluZyB2YWx1ZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5z
aWduZWQgbG9uZyB0ZXh0TGVuZ3RoOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4g
d2lsbFZhbGlkYXRlOwpAQCAtNDYsMTMgKzQ2LDEzIEBAIGludGVyZmFjZSBIVE1MVGV4dEFyZWFF
bGVtZW50IDogSFRNTEVsZW1lbnQgewogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5vZGVMaXN0
IGxhYmVsczsKIAotICAgIHZvaWQgc2VsZWN0KCk7CisgICAgW112b2lkIHNlbGVjdCgpOwogICAg
IGF0dHJpYnV0ZSBsb25nIHNlbGVjdGlvblN0YXJ0OwogICAgIGF0dHJpYnV0ZSBsb25nIHNlbGVj
dGlvbkVuZDsKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNlbGVjdGlvbkRpcmVjdGlvbjsKIAot
ICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQgc2V0UmFuZ2VUZXh0KERPTVN0cmluZyByZXBsYWNl
bWVudCk7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCBzZXRSYW5nZVRleHQoRE9NU3RyaW5n
IHJlcGxhY2VtZW50LAorICAgIFtSYWlzZXNFeGNlcHRpb24sIE5lZWRzUHJvY2Vzc2luZ1N0YWNr
XSB2b2lkIHNldFJhbmdlVGV4dChET01TdHJpbmcgcmVwbGFjZW1lbnQpOworICAgIFtSYWlzZXNF
eGNlcHRpb24sIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSB2b2lkIHNldFJhbmdlVGV4dChET01TdHJp
bmcgcmVwbGFjZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHN0
YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBlbmQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBbRGVmYXVsdD1OdWxsU3RyaW5nXSBvcHRpb25hbCBET01TdHJpbmcg
c2VsZWN0aW9uTW9kZSk7CkBAIC02NSwxMiArNjUsMTIgQEAgaW50ZXJmYWNlIEhUTUxUZXh0QXJl
YUVsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRp
b25hbCBET01TdHJpbmcgZGlyZWN0aW9uKTsKICNlbmRpZgogCi0gICAgW0NvbmRpdGlvbmFsPUlP
U19BVVRPQ09SUkVDVF9BTkRfQVVUT0NBUElUQUxJWkVdIGF0dHJpYnV0ZSBib29sZWFuIGF1dG9j
b3JyZWN0OwotICAgIFtDb25kaXRpb25hbD1JT1NfQVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJVEFM
SVpFLCBUcmVhdE51bGxBcz1OdWxsU3RyaW5nXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGF1dG9jYXBp
dGFsaXplOworICAgIFtDb25kaXRpb25hbD1JT1NfQVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJVEFM
SVpFLCBOZWVkc1Byb2Nlc3NpbmdTdGFja10gYXR0cmlidXRlIGJvb2xlYW4gYXV0b2NvcnJlY3Q7
CisgICAgW0NvbmRpdGlvbmFsPUlPU19BVVRPQ09SUkVDVF9BTkRfQVVUT0NBUElUQUxJWkUsIFRy
ZWF0TnVsbEFzPU51bGxTdHJpbmcsIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGF1dG9jYXBpdGFsaXplOwogCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVf
QykgJiYgTEFOR1VBR0VfT0JKRUNUSVZFX0MKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0
cmluZyBhY2Nlc3NLZXk7CiAjZW5kaWYKIAotICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgYXV0b2Nv
bXBsZXRlOworICAgIFtOZWVkc1Byb2Nlc3NpbmdTdGFja10gYXR0cmlidXRlIERPTVN0cmluZyBh
dXRvY29tcGxldGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0
bGVFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5pZGwK
aW5kZXggMmIzMTJmNS4uYWIyYjA5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGl0bGVFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVs
ZW1lbnQuaWRsCkBAIC0xOCw2ICsxOCw2IEBACiAgKi8KIAogaW50ZXJmYWNlIEhUTUxUaXRsZUVs
ZW1lbnQgOiBIVE1MRWxlbWVudCB7Ci0gICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmddIGF0dHJp
YnV0ZSBET01TdHJpbmcgICAgICAgICAgICB0ZXh0OworICAgIFtUcmVhdE51bGxBcz1OdWxsU3Ry
aW5nLCBOZWVkc1Byb2Nlc3NpbmdTdGFja10gYXR0cmlidXRlIERPTVN0cmluZyAgICAgICAgICAg
IHRleHQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0Vs
ZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmlkbAppbmRl
eCAwMjNjNzA2Li4zYWNhMmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
cmFja0VsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVu
dC5pZGwKQEAgLTI2LDEwICsyNiwxMCBAQAogWwogICAgIENvbmRpdGlvbmFsPVZJREVPX1RSQUNL
LAogXSBpbnRlcmZhY2UgSFRNTFRyYWNrRWxlbWVudCA6IEhUTUxFbGVtZW50IHsKLSAgICBhdHRy
aWJ1dGUgRE9NU3RyaW5nIGtpbmQ7CisgICAgW05lZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIGtpbmQ7CiAgICAgW1JlZmxlY3QsIFVSTF0gYXR0cmlidXRlIERPTVN0cmlu
ZyBzcmM7Ci0gICAgYXR0cmlidXRlIERPTVN0cmluZyBzcmNsYW5nOwotICAgIGF0dHJpYnV0ZSBE
T01TdHJpbmcgbGFiZWw7CisgICAgW05lZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIHNyY2xhbmc7CisgICAgW05lZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGxhYmVsOwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgYm9vbGVhbiBkZWZhdWx0Owog
CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTk9ORSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRp
b05vZGVMaXN0LmlkbAppbmRleCAyMzRkNDU1Li5lMzMyOGU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UmFkaW9Ob2RlTGlzdC5pZGwKQEAgLTI2LDcgKzI2LDcgQEAKIFsKICAgICBKU0dlbmVyYXRlVG9K
U09iamVjdCwKIF0gaW50ZXJmYWNlIFJhZGlvTm9kZUxpc3QgOiBOb2RlTGlzdCB7Ci0gICAgYXR0
cmlidXRlIERPTVN0cmluZyB2YWx1ZTsKKyAgICBbTmVlZHNQcm9jZXNzaW5nU3RhY2tdIGF0dHJp
YnV0ZSBET01TdHJpbmcgdmFsdWU7CiAKICAgICBnZXR0ZXIgSFRNTEVsZW1lbnQgKHVuc2lnbmVk
IGxvbmcgaW5kZXgpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrQ3VlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3Vl
LmlkbAppbmRleCBiNzcyYmI2Li4yYmEwYTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFja0N1ZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2tDdWUuaWRsCkBAIC0zNyw4ICszNyw4IEBACiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIFRleHRUcmFjayB0cmFjazsKIAogICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7Ci0gICAg
W1NldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgc3Rh
cnRUaW1lOwotICAgIFtTZXR0ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSB1bnJlc3RyaWN0
ZWQgZG91YmxlIGVuZFRpbWU7CisgICAgW1NldHRlclJhaXNlc0V4Y2VwdGlvbiwgTmVlZHNQcm9j
ZXNzaW5nU3RhY2tdIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIHN0YXJ0VGltZTsKKyAg
ICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9uLCBOZWVkc1Byb2Nlc3NpbmdTdGFja10gYXR0cmlidXRl
IHVucmVzdHJpY3RlZCBkb3VibGUgZW5kVGltZTsKICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBwYXVz
ZU9uRXhpdDsKIAogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25lbnRlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVlRUQ3VlLmlkbAppbmRleCA0YzkxYjlmLi5kODNlOGUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9WVFRDdWUuaWRsCkBAIC0zNSw4ICszNSw4IEBACiAgICAgW1NldHRlclJh
aXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgcG9zaXRpb247CiAg
ICAgW1NldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUg
c2l6ZTsKICAgICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFs
aWduOwotICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgdGV4dDsKLSAgICBEb2N1bWVudEZyYWdtZW50
IGdldEN1ZUFzSFRNTCgpOworICAgIFtOZWVkc1Byb2Nlc3NpbmdTdGFja10gYXR0cmlidXRlIERP
TVN0cmluZyB0ZXh0OworICAgIFtOZWVkc1Byb2Nlc3NpbmdTdGFja10gRG9jdW1lbnRGcmFnbWVu
dCBnZXRDdWVBc0hUTUwoKTsKIAogICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgcmVnaW9uSWQ7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCmluZGV4
IDkyNzQ1YjEuLjNhNDVkZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRm9udC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkZvbnREZXNjcmlw
dGlvbi5oIgogI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIKKyNpbmNsdWRlICJMaWZlY3lj
bGVDYWxsYmFja1F1ZXVlLmgiCiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKICNpbmNsdWRlICJT
VkdGb250RGF0YS5oIgogI2luY2x1ZGUgIlNWR0ZvbnRFbGVtZW50LmgiCkBAIC03NSw2ICs3Niw4
IEBAIEZvbnRQbGF0Zm9ybURhdGEgQ2FjaGVkU1ZHRm9udDo6cGxhdGZvcm1EYXRhRnJvbUN1c3Rv
bURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uCiAKIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJl
Q3VzdG9tRm9udERhdGEoYm9vbCBleHRlcm5hbFNWRywgY29uc3QgQXRvbWljU3RyaW5nJiByZW1v
dGVVUkkpCiB7CisgICAgU1ZHVXNlRWxlbWVudFNoYWRvd1RyZWVVcGRhdGVTdGFjayB1cGRhdGVT
dGFjazsKKwogICAgIGlmICghZXh0ZXJuYWxTVkcpCiAgICAgICAgIHJldHVybiBDYWNoZWRGb250
OjplbnN1cmVDdXN0b21Gb250RGF0YShleHRlcm5hbFNWRywgcmVtb3RlVVJJKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uaWRsIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01TZWxlY3Rpb24uaWRsCmluZGV4IGNiODlmZDQuLjFlMThjYTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVNlbGVjdGlvbi5pZGwKQEAgLTQ2LDcgKzQ2LDcgQEAKICAgICBbUmFpc2Vz
RXhjZXB0aW9uXSB2b2lkIGNvbGxhcHNlVG9FbmQoKTsKICAgICBbUmFpc2VzRXhjZXB0aW9uXSB2
b2lkIGNvbGxhcHNlVG9TdGFydCgpOwogCi0gICAgdm9pZCBkZWxldGVGcm9tRG9jdW1lbnQoKTsK
KyAgICBbTmVlZHNQcm9jZXNzaW5nU3RhY2tdIHZvaWQgZGVsZXRlRnJvbURvY3VtZW50KCk7CiAg
ICAgYm9vbGVhbiBjb250YWluc05vZGUoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBOb2Rl
IG5vZGUsIAogICAgICAgICAgICAgICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0
aW9uYWwgYm9vbGVhbiBhbGxvd1BhcnRpYWwpOwogICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQg
c2VsZWN0QWxsQ2hpbGRyZW4oW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBOb2RlIG5vZGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IGVjNWVjMmQuLjUwYjFjNGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKQEAgLTYxLDEwICs2MSwxMCBAQAogCiAgICAgW0RvTm90
Q2hlY2tTZWN1cml0eSwgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRm9yd2FyZERl
Y2xhcmVJbkhlYWRlcl0gdm9pZCBmb2N1cygpOwogICAgIFtEb05vdENoZWNrU2VjdXJpdHksIEZv
cndhcmREZWNsYXJlSW5IZWFkZXJdIHZvaWQgYmx1cigpOwotICAgIFtEb05vdENoZWNrU2VjdXJp
dHksIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEZvcndhcmREZWNsYXJlSW5IZWFk
ZXJdIHZvaWQgY2xvc2UoKTsKKyAgICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBDYWxsV2l0aD1TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyLCBOZWVkc1Byb2Nlc3Np
bmdTdGFja10gdm9pZCBjbG9zZSgpOwogCiAgICAgdm9pZCBwcmludCgpOwotICAgIHZvaWQgc3Rv
cCgpOworICAgIFtOZWVkc1Byb2Nlc3NpbmdTdGFja10gdm9pZCBzdG9wKCk7CiAKICAgICBbQ3Vz
dG9tXSBET01XaW5kb3cgb3BlbihET01TdHJpbmcgdXJsLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERPTVN0cmluZyBuYW1lLApAQCAtMTg5LDcgKzE4OSw3IEBACiAgICAgLy8gRXZlbnRU
YXJnZXQgaW50ZXJmYWNlCiAgICAgW0N1c3RvbV0gdm9pZCBhZGRFdmVudExpc3RlbmVyKERPTVN0
cmluZyB0eXBlLCBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCBvcHRpb25hbCBib29sZWFuIHVzZUNh
cHR1cmUpOwogICAgIFtDdXN0b21dIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihET01TdHJpbmcg
dHlwZSwgRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgb3B0aW9uYWwgYm9vbGVhbiB1c2VDYXB0dXJl
KTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSBib29sZWFuIGRpc3BhdGNoRXZlbnQoRXZlbnQgZXZl
bnQpOworICAgIFtSYWlzZXNFeGNlcHRpb24sIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSBib29sZWFu
IGRpc3BhdGNoRXZlbnQoRXZlbnQgZXZlbnQpOwogCiAgICAgdm9pZCBjYXB0dXJlRXZlbnRzKC8q
aW4gbG9uZyBldmVudEZsYWdzKi8pOwogICAgIHZvaWQgcmVsZWFzZUV2ZW50cygvKmluIGxvbmcg
ZXZlbnRGbGFncyovKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaWRsCmluZGV4IGJiZGMzNzQuLjk0NjJi
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmlkbApAQCAtMzMsOSArMzMsOSBAQAogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICBbQ2FjaGVkQXR0cmlidXRl
LCBDdXN0b21dIHJlYWRvbmx5IGF0dHJpYnV0ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgc3RhdGU7
CiAKLSAgICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSB2b2lkIGJhY2soKTsKLSAgICBbRG9Ob3RDaGVj
a1NlY3VyaXR5LCBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBGb3J3YXJkRGVjbGFy
ZUluSGVhZGVyXSB2b2lkIGZvcndhcmQoKTsKLSAgICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBDYWxs
V2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSB2b2lk
IGdvKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgbG9uZyBkaXN0YW5jZSk7CisgICAgW0Rv
Tm90Q2hlY2tTZWN1cml0eSwgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRm9yd2Fy
ZERlY2xhcmVJbkhlYWRlciwgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIHZvaWQgYmFjaygpOworICAg
IFtEb05vdENoZWNrU2VjdXJpdHksIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEZv
cndhcmREZWNsYXJlSW5IZWFkZXIsIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSB2b2lkIGZvcndhcmQo
KTsKKyAgICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyLCBOZWVkc1Byb2Nlc3NpbmdTdGFja10gdm9pZCBn
byhbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGxvbmcgZGlzdGFuY2UpOwogCiAgICAgW0N1
c3RvbSwgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHB1c2hTdGF0ZShhbnkgZGF0YSwgRE9NU3RyaW5n
IHRpdGxlLCBvcHRpb25hbCBET01TdHJpbmcgdXJsKTsKICAgICBbQ3VzdG9tLCBSYWlzZXNFeGNl
cHRpb25dIHZvaWQgcmVwbGFjZVN0YXRlKGFueSBkYXRhLCBET01TdHJpbmcgdGl0bGUsIG9wdGlv
bmFsIERPTVN0cmluZyB1cmwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2Nh
dGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAppbmRleCA5MzAyNWM4
Li45N2I2NTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbApAQCAtMzcsMjAgKzM3LDIwIEBA
CiAgICAgSlNDdXN0b21EZWZpbmVPd25Qcm9wZXJ0eU9uUHJvdG90eXBlLAogICAgIFVuZm9yZ2Vh
YmxlCiBdIGludGVyZmFjZSBMb2NhdGlvbiB7Ci0gICAgW1NldHRlckNhbGxXaXRoPUFjdGl2ZVdp
bmRvdyZGaXJzdFdpbmRvd10gYXR0cmlidXRlIERPTVN0cmluZyBocmVmOworICAgIFtTZXR0ZXJD
YWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3csIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIGhyZWY7CiAKLSAgICBbQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZp
cnN0V2luZG93LCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSB2b2lkIGFzc2lnbihbRGVmYXVsdD1V
bmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyB1cmwpOwotICAgIFtDYWxsV2l0aD1BY3RpdmVX
aW5kb3cmRmlyc3RXaW5kb3csIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHZvaWQgcmVwbGFjZShb
RGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyB1cmwpOwotICAgIFtDYWxsV2l0
aD1BY3RpdmVXaW5kb3csIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHZvaWQgcmVsb2FkKCk7Cisg
ICAgW0NhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvdywgRm9yd2FyZERlY2xhcmVJbkhl
YWRlciwgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIHZvaWQgYXNzaWduKFtEZWZhdWx0PVVuZGVmaW5l
ZF0gb3B0aW9uYWwgRE9NU3RyaW5nIHVybCk7CisgICAgW0NhbGxXaXRoPUFjdGl2ZVdpbmRvdyZG
aXJzdFdpbmRvdywgRm9yd2FyZERlY2xhcmVJbkhlYWRlciwgTmVlZHNQcm9jZXNzaW5nU3RhY2td
IHZvaWQgcmVwbGFjZShbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyB1cmwp
OworICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5kb3csIEZvcndhcmREZWNsYXJlSW5IZWFkZXIsIE5l
ZWRzUHJvY2Vzc2luZ1N0YWNrXSB2b2lkIHJlbG9hZCgpOwogCiAgICAgLy8gVVJJIGRlY29tcG9z
aXRpb24gYXR0cmlidXRlcwotICAgIFtTZXR0ZXJDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RX
aW5kb3csIFNldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0cmluZyBwcm90b2Nv
bDsKLSAgICBbU2V0dGVyQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93XSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIGhvc3Q7Ci0gICAgW1NldHRlckNhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJz
dFdpbmRvd10gYXR0cmlidXRlIERPTVN0cmluZyBob3N0bmFtZTsKLSAgICBbU2V0dGVyQ2FsbFdp
dGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHBvcnQ7Ci0g
ICAgW1NldHRlckNhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvd10gYXR0cmlidXRlIERP
TVN0cmluZyBwYXRobmFtZTsKLSAgICBbU2V0dGVyQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0
V2luZG93XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNlYXJjaDsKLSAgICBbU2V0dGVyQ2FsbFdpdGg9
QWN0aXZlV2luZG93JkZpcnN0V2luZG93XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGhhc2g7CisgICAg
W1NldHRlckNhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvdywgU2V0dGVyUmFpc2VzRXhj
ZXB0aW9uLCBOZWVkc1Byb2Nlc3NpbmdTdGFja10gYXR0cmlidXRlIERPTVN0cmluZyBwcm90b2Nv
bDsKKyAgICBbU2V0dGVyQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93LCBOZWVkc1By
b2Nlc3NpbmdTdGFja10gYXR0cmlidXRlIERPTVN0cmluZyBob3N0OworICAgIFtTZXR0ZXJDYWxs
V2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3csIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIGhvc3RuYW1lOworICAgIFtTZXR0ZXJDYWxsV2l0aD1BY3RpdmVXaW5k
b3cmRmlyc3RXaW5kb3csIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IHBvcnQ7CisgICAgW1NldHRlckNhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvdywgTmVl
ZHNQcm9jZXNzaW5nU3RhY2tdIGF0dHJpYnV0ZSBET01TdHJpbmcgcGF0aG5hbWU7CisgICAgW1Nl
dHRlckNhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvdywgTmVlZHNQcm9jZXNzaW5nU3Rh
Y2tdIGF0dHJpYnV0ZSBET01TdHJpbmcgc2VhcmNoOworICAgIFtTZXR0ZXJDYWxsV2l0aD1BY3Rp
dmVXaW5kb3cmRmlyc3RXaW5kb3csIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGhhc2g7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG9yaWdpbjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW5BcnJheS5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFycmF5LmlkbAppbmRleCA4NWQwNTIy
Li4yYjdhZWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFy
cmF5LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFycmF5LmlkbApA
QCAtMjUsNiArMjUsNiBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxl
bmd0aDsKICAgICBnZXR0ZXIgRE9NUGx1Z2luIGl0ZW0oW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRp
b25hbCB1bnNpZ25lZCBsb25nIGluZGV4KTsKICAgICBnZXR0ZXIgRE9NUGx1Z2luIG5hbWVkSXRl
bShbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyBuYW1lKTsKLSAgICB2b2lk
IHJlZnJlc2goW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBib29sZWFuIHJlbG9hZCk7Cisg
ICAgW05lZWRzUHJvY2Vzc2luZ1N0YWNrXSB2b2lkIHJlZnJlc2goW0RlZmF1bHQ9VW5kZWZpbmVk
XSBvcHRpb25hbCBib29sZWFuIHJlbG9hZCk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5nbGUuaWRsIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlLmlkbApp
bmRleCBkZjcxYzYyLi4zNzkyMDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5nbGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZS5pZGwKQEAgLTI5LDEz
ICsyOSwxMyBAQCBpbnRlcmZhY2UgU1ZHQW5nbGUgewogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0
IFNWR19BTkdMRVRZUEVfR1JBRCA9IDQ7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWdu
ZWQgc2hvcnQgdW5pdFR5cGU7Ci0gICAgW1N0cmljdFR5cGVDaGVja2luZ10gYXR0cmlidXRlIHVu
cmVzdHJpY3RlZCBmbG9hdCB2YWx1ZTsKLSAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSBhdHRyaWJ1
dGUgdW5yZXN0cmljdGVkIGZsb2F0IHZhbHVlSW5TcGVjaWZpZWRVbml0czsKKyAgICBbU3RyaWN0
VHlwZUNoZWNraW5nLCBOZWVkc1Byb2Nlc3NpbmdTdGFja10gYXR0cmlidXRlIHVucmVzdHJpY3Rl
ZCBmbG9hdCB2YWx1ZTsKKyAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBOZWVkc1Byb2Nlc3NpbmdT
dGFja10gYXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHM7
CiAKLSAgICBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgU2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIHZhbHVlQXNTdHJpbmc7CisgICAgW1RyZWF0TnVsbEFzPU51bGxT
dHJpbmcsIFNldHRlclJhaXNlc0V4Y2VwdGlvbiwgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIGF0dHJp
YnV0ZSBET01TdHJpbmcgdmFsdWVBc1N0cmluZzsKIAotICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcs
IFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCBuZXdWYWx1ZVNwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNo
b3J0IHVuaXRUeXBlLCB1bnJlc3RyaWN0ZWQgZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRzKTsK
KyAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRpb24sIE5lZWRzUHJvY2Vzc2lu
Z1N0YWNrXSB2b2lkIG5ld1ZhbHVlU3BlY2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQgdW5pdFR5
cGUsIHVucmVzdHJpY3RlZCBmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMpOwogCi0gICAgW1N0
cmljdFR5cGVDaGVja2luZywgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIGNvbnZlcnRUb1NwZWNpZmll
ZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlKTsKKyAgICBbU3RyaWN0VHlwZUNoZWNraW5n
LCBSYWlzZXNFeGNlcHRpb24sIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSB2b2lkIGNvbnZlcnRUb1Nw
ZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlKTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEJvb2xlYW4uaWRsIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbi5pZGwKaW5kZXggNjE3MmNjYy4uNzFhMTUxZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbi5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbi5pZGwKQEAgLTI2LDcgKzI2LDcg
QEAKIFsKICAgICBTa2lwVlRhYmxlVmFsaWRhdGlvbgogXSBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRC
b29sZWFuIHsKLSAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBTZXR0ZXJSYWlzZXNFeGNlcHRpb25d
IGF0dHJpYnV0ZSBib29sZWFuIGJhc2VWYWw7CisgICAgW1N0cmljdFR5cGVDaGVja2luZywgU2V0
dGVyUmFpc2VzRXhjZXB0aW9uLCBOZWVkc1Byb2Nlc3NpbmdTdGFja10gYXR0cmlidXRlIGJvb2xl
YW4gYmFzZVZhbDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBhbmltVmFsOwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkRW51bWVyYXRpb24u
aWRsIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkRW51bWVyYXRpb24uaWRsCmluZGV4
IDZiMjBkNDMuLjBlNDM4N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZEVudW1lcmF0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvbi5pZGwKQEAgLTI2LDcgKzI2LDcgQEAKIFsKICAgICBTa2lwVlRhYmxlVmFsaWRh
dGlvbgogXSBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB7Ci0gICAgW1N0cmljdFR5
cGVDaGVja2luZywgU2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hv
cnQgYmFzZVZhbDsKKyAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBTZXR0ZXJSYWlzZXNFeGNlcHRp
b24sIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgYmFzZVZh
bDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgYW5pbVZhbDsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXIuaWRsIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5pZGwKaW5kZXggM2U1NWNiZi4u
ZTcyZGMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdl
ci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5pZGwKQEAg
LTI2LDcgKzI2LDcgQEAKIFsKICAgICBTa2lwVlRhYmxlVmFsaWRhdGlvbgogXSBpbnRlcmZhY2Ug
U1ZHQW5pbWF0ZWRJbnRlZ2VyIHsKLSAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBTZXR0ZXJSYWlz
ZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSBsb25nIGJhc2VWYWw7CisgICAgW1N0cmljdFR5cGVDaGVj
a2luZywgU2V0dGVyUmFpc2VzRXhjZXB0aW9uLCBOZWVkc1Byb2Nlc3NpbmdTdGFja10gYXR0cmli
dXRlIGxvbmcgYmFzZVZhbDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBhbmltVmFsOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5pZGwKaW5kZXggNmQ0Y2M2
Yi4uZjUzZDcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVt
YmVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIuaWRsCkBA
IC0yNyw3ICsyNyw3IEBACiBbCiAgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24KIF0gaW50ZXJmYWNl
IFNWR0FuaW1hdGVkTnVtYmVyIHsKLSAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBTZXR0ZXJSYWlz
ZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZmxvYXQgYmFzZVZhbDsKKyAgICBb
U3RyaWN0VHlwZUNoZWNraW5nLCBTZXR0ZXJSYWlzZXNFeGNlcHRpb24sIE5lZWRzUHJvY2Vzc2lu
Z1N0YWNrXSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGZsb2F0IGJhc2VWYWw7CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCBhbmltVmFsOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkU3RyaW5nLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZFN0cmluZy5pZGwKaW5kZXggYzA3YTJlNC4uMTU4ZGI5YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkU3RyaW5nLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaWRsCkBAIC0yNiw3ICsyNiw3IEBA
CiBbCiAgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24KIF0gaW50ZXJmYWNlIFNWR0FuaW1hdGVkU3Ry
aW5nIHsKLSAgICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGJh
c2VWYWw7CisgICAgW1NldHRlclJhaXNlc0V4Y2VwdGlvbiwgTmVlZHNQcm9jZXNzaW5nU3RhY2td
IGF0dHJpYnV0ZSBET01TdHJpbmcgYmFzZVZhbDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGFuaW1WYWw7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0aW9uRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxl
bWVudC5pZGwKaW5kZXggMTkxYzIzZS4uNGUxNjJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRpb25FbGVtZW50LmlkbApAQCAtMzEsMTAgKzMxLDEwIEBAIGludGVyZmFjZSBTVkdB
bmltYXRpb25FbGVtZW50IDogU1ZHRWxlbWVudCB7CiAgICAgdW5yZXN0cmljdGVkIGZsb2F0IGdl
dEN1cnJlbnRUaW1lKCk7CiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gdW5yZXN0cmljdGVkIGZsb2F0
IGdldFNpbXBsZUR1cmF0aW9uKCk7CiAKLSAgICB2b2lkIGJlZ2luRWxlbWVudCgpOwotICAgIHZv
aWQgYmVnaW5FbGVtZW50QXQoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCB1bnJlc3RyaWN0
ZWQgZmxvYXQgb2Zmc2V0KTsKLSAgICB2b2lkIGVuZEVsZW1lbnQoKTsKLSAgICB2b2lkIGVuZEVs
ZW1lbnRBdChbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBmbG9hdCBv
ZmZzZXQpOworICAgIFtOZWVkc1Byb2Nlc3NpbmdTdGFja10gdm9pZCBiZWdpbkVsZW1lbnQoKTsK
KyAgICBbTmVlZHNQcm9jZXNzaW5nU3RhY2tdIHZvaWQgYmVnaW5FbGVtZW50QXQoW0RlZmF1bHQ9
VW5kZWZpbmVkXSBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgb2Zmc2V0KTsKKyAgICBbTmVl
ZHNQcm9jZXNzaW5nU3RhY2tdIHZvaWQgZW5kRWxlbWVudCgpOworICAgIFtOZWVkc1Byb2Nlc3Np
bmdTdGFja10gdm9pZCBlbmRFbGVtZW50QXQoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCB1
bnJlc3RyaWN0ZWQgZmxvYXQgb2Zmc2V0KTsKIH07CiAKIFNWR0FuaW1hdGlvbkVsZW1lbnQgaW1w
bGVtZW50cyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnQuaWRsCmluZGV4IDgzYzM5NGEuLmYxNDk5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5p
ZGwKQEAgLTI0LDcgKzI0LDcgQEAKICAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCiBdIGlu
dGVyZmFjZSBTVkdFbGVtZW50IDogRWxlbWVudCB7CiAgICAgLy8gRklYTUU6IHRoZSB4bWxiYXNl
IGF0dHJpYnV0ZSBpcyBubyBsb25nZXIgcGFydCBvZiBTVkcyIGFuZCBDaHJvbWUgYWxyZWFkeSBk
cm9wcGVkIGl0LgotICAgIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBTZXR0ZXJSYWlzZXNFeGNl
cHRpb25dIGF0dHJpYnV0ZSBET01TdHJpbmcgeG1sYmFzZTsKKyAgICBbVHJlYXROdWxsQXM9TnVs
bFN0cmluZywgU2V0dGVyUmFpc2VzRXhjZXB0aW9uLCBOZWVkc1Byb2Nlc3NpbmdTdGFja10gYXR0
cmlidXRlIERPTVN0cmluZyB4bWxiYXNlOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR1NW
R0VsZW1lbnQgb3duZXJTVkdFbGVtZW50OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdFbGVt
ZW50IHZpZXdwb3J0RWxlbWVudDsKQEAgLTM1LDcgKzM1LDcgQEAKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgY2xhc3NOYW1lOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBDU1NTdHlsZURlY2xhcmF0aW9uIHN0eWxlOwogCi0gICAgYXR0cmlidXRlIGxvbmcgdGFiSW5k
ZXg7CisgICAgW05lZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1dGUgbG9uZyB0YWJJbmRleDsK
IAogICAgIENTU1ZhbHVlIGdldFByZXNlbnRhdGlvbkF0dHJpYnV0ZShbRGVmYXVsdD1VbmRlZmlu
ZWRdIG9wdGlvbmFsIERPTVN0cmluZyBuYW1lKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHR2x5cGhSZWZFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdH
bHlwaFJlZkVsZW1lbnQuaWRsCmluZGV4IDE3ZDM5Y2UuLmJjYjVjZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaFJlZkVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdHbHlwaFJlZkVsZW1lbnQuaWRsCkBAIC0yMSwxMiArMjEsMTIgQEAKICAgICBD
b25kaXRpb25hbD1TVkdfRk9OVFMKIF0gaW50ZXJmYWNlIFNWR0dseXBoUmVmRWxlbWVudCA6IFNW
R0VsZW1lbnQgewogICAgIC8vIEZJWE1FOiBVc2UgW1JlZmxlY3RdIGFmdGVyIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDg0MyBpcyBmaXhlZC4KLSAgICBbU2V0dGVy
UmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGdseXBoUmVmOworICAgIFtTZXR0
ZXJSYWlzZXNFeGNlcHRpb24sIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGdseXBoUmVmOwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZvcm1hdDsK
LSAgICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGZsb2F0
IHg7Ci0gICAgW1NldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIHVucmVzdHJpY3RlZCBm
bG9hdCB5OwotICAgIFtTZXR0ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSB1bnJlc3RyaWN0
ZWQgZmxvYXQgZHg7Ci0gICAgW1NldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIHVucmVz
dHJpY3RlZCBmbG9hdCBkeTsKKyAgICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9uLCBOZWVkc1Byb2Nl
c3NpbmdTdGFja10gYXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCB4OworICAgIFtTZXR0ZXJS
YWlzZXNFeGNlcHRpb24sIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1dGUgdW5yZXN0cmlj
dGVkIGZsb2F0IHk7CisgICAgW1NldHRlclJhaXNlc0V4Y2VwdGlvbiwgTmVlZHNQcm9jZXNzaW5n
U3RhY2tdIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZmxvYXQgZHg7CisgICAgW1NldHRlclJhaXNl
c0V4Y2VwdGlvbiwgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQg
ZmxvYXQgZHk7CiB9OwogCiBTVkdHbHlwaFJlZkVsZW1lbnQgaW1wbGVtZW50cyBTVkdVUklSZWZl
cmVuY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTnVtYmVyLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXIuaWRsCmluZGV4IDYxOGJlZmIuLmRlYTBiNDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXIuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdOdW1iZXIuaWRsCkBAIC0yMSw2ICsyMSw2IEBACiAgKi8KIAogaW50ZXJm
YWNlIFNWR051bWJlciB7Ci0gICAgW1N0cmljdFR5cGVDaGVja2luZ10gYXR0cmlidXRlIHVucmVz
dHJpY3RlZCBmbG9hdCB2YWx1ZTsKKyAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBOZWVkc1Byb2Nl
c3NpbmdTdGFja10gYXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCB2YWx1ZTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmlkbAppbmRleCA0OTcxNWY4Li5lZWI0NDU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaWRsCkBAIC0yOCw4ICsyOCw4IEBAIGludGVyZmFj
ZSBTVkdTVkdFbGVtZW50IDogU1ZHR3JhcGhpY3NFbGVtZW50IHsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggeTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5p
bWF0ZWRMZW5ndGggd2lkdGg7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVu
Z3RoIGhlaWdodDsKLSAgICAgICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNvbnRlbnRTY3Jp
cHRUeXBlOwotICAgICAgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgY29udGVudFN0eWxlVHlw
ZTsKKyAgICAgICAgICAgICBbTmVlZHNQcm9jZXNzaW5nU3RhY2tdIGF0dHJpYnV0ZSBET01TdHJp
bmcgY29udGVudFNjcmlwdFR5cGU7CisgICAgICAgICAgICAgW05lZWRzUHJvY2Vzc2luZ1N0YWNr
XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNvbnRlbnRTdHlsZVR5cGU7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIFNWR1JlY3Qgdmlld3BvcnQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJp
Y3RlZCBmbG9hdCBwaXhlbFVuaXRUb01pbGxpbWV0ZXJYOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSB1bnJlc3RyaWN0ZWQgZmxvYXQgcGl4ZWxVbml0VG9NaWxsaW1ldGVyWTsKQEAgLTQ4LDcgKzQ4
LDcgQEAgaW50ZXJmYWNlIFNWR1NWR0VsZW1lbnQgOiBTVkdHcmFwaGljc0VsZW1lbnQgewogICAg
IHZvaWQgdW5wYXVzZUFuaW1hdGlvbnMoKTsKICAgICBib29sZWFuIGFuaW1hdGlvbnNQYXVzZWQo
KTsKICAgICB1bnJlc3RyaWN0ZWQgZmxvYXQgZ2V0Q3VycmVudFRpbWUoKTsKLSAgICB2b2lkIHNl
dEN1cnJlbnRUaW1lKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZs
b2F0IHNlY29uZHMpOworICAgIFtOZWVkc1Byb2Nlc3NpbmdTdGFja10gdm9pZCBzZXRDdXJyZW50
VGltZShbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBmbG9hdCBzZWNv
bmRzKTsKICAgICBOb2RlTGlzdCBnZXRJbnRlcnNlY3Rpb25MaXN0KFtEZWZhdWx0PVVuZGVmaW5l
ZF0gb3B0aW9uYWwgU1ZHUmVjdCByZWN0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgU1ZHRWxlbWVudCByZWZlcmVuY2VFbGVt
ZW50KTsKICAgICBOb2RlTGlzdCBnZXRFbmNsb3N1cmVMaXN0KFtEZWZhdWx0PVVuZGVmaW5lZF0g
b3B0aW9uYWwgU1ZHUmVjdCByZWN0LCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTdHlsZUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5p
ZGwKaW5kZXggNzI5MDJjMi4uZjdkYjAyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1N0eWxlRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxl
bWVudC5pZGwKQEAgLTI1LDkgKzI1LDkgQEAKICAqLwogCiBpbnRlcmZhY2UgU1ZHU3R5bGVFbGVt
ZW50IDogU1ZHRWxlbWVudCB7Ci0gICAgICAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gZGlzYWJs
ZWQ7Ci0gICAgICAgICAgICAgW1NldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0
cmluZyB0eXBlOwotICAgICAgICAgICAgIFtTZXR0ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0
ZSBET01TdHJpbmcgbWVkaWE7Ci0gICAgICAgICAgICAgW1NldHRlclJhaXNlc0V4Y2VwdGlvbl0g
YXR0cmlidXRlIERPTVN0cmluZyB0aXRsZTsKKyAgICAgICAgICAgICBbTmVlZHNQcm9jZXNzaW5n
U3RhY2tdIGF0dHJpYnV0ZSBib29sZWFuIGRpc2FibGVkOworICAgICAgICAgICAgIFtTZXR0ZXJS
YWlzZXNFeGNlcHRpb24sIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IHR5cGU7CisgICAgICAgICAgICAgW1NldHRlclJhaXNlc0V4Y2VwdGlvbiwgTmVlZHNQcm9jZXNz
aW5nU3RhY2tdIGF0dHJpYnV0ZSBET01TdHJpbmcgbWVkaWE7CisgICAgICAgICAgICAgW1NldHRl
clJhaXNlc0V4Y2VwdGlvbiwgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIGF0dHJpYnV0ZSBET01TdHJp
bmcgdGl0bGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKaW5kZXggMWJk
MDU5Yi4uZDFkNTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcApAQCAtMzAs
NiArMzAsNyBAQAogI2luY2x1ZGUgIkNhY2hlZFNWR0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxl
bWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJMaWZlY3ljbGVD
YWxsYmFja1F1ZXVlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2UuaCIKICNpbmNsdWRl
ICJSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9v
dC5oIgpAQCAtMjIyLDYgKzIyMyw4IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6YnVpbGRQZW5kaW5n
UmVzb3VyY2UoKQogCiB2b2lkIFNWR1VzZUVsZW1lbnQ6OnVwZGF0ZVNoYWRvd1RyZWUoKQogewor
ICAgIFNWR1VzZUVsZW1lbnRTaGFkb3dUcmVlVXBkYXRlU3RhY2sgdXBkYWV0U3RhY2s7CisKICAg
ICBtX3NoYWRvd1RyZWVOZWVkc1VwZGF0ZSA9IGZhbHNlOwogCiAgICAgLy8gRklYTUU6IEl0J3Mg
ZXhwZW5zaXZlIHRvIHJlLWNsb25lIHRoZSBlbnRpcmUgdHJlZSBldmVyeSB0aW1lLiBXZSBzaG91
bGQgZmluZCBhIG1vcmUgZWZmaWNpZW50IHdheSB0byBoYW5kbGUgdGhpcy4KQEAgLTQwNiw2ICs0
MDksNyBAQCBTVkdFbGVtZW50KiBTVkdVc2VFbGVtZW50OjpmaW5kVGFyZ2V0KFN0cmluZyogdGFy
Z2V0SUQpIGNvbnN0CiAKIHZvaWQgU1ZHVXNlRWxlbWVudDo6Y2xvbmVUYXJnZXQoQ29udGFpbmVy
Tm9kZSYgY29udGFpbmVyLCBTVkdFbGVtZW50JiB0YXJnZXQpIGNvbnN0CiB7CisgICAgLy8gRklY
TUU6IFdlIHNob3VsZCBub3QgaW5zdGFudGlhdGUgY3VzdG9tIGVsZW1lbnRzIGhlcmUuCiAgICAg
UmVmPFNWR0VsZW1lbnQ+IHRhcmdldENsb25lID0gc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCY+KHRh
cmdldC5jbG9uZUVsZW1lbnRXaXRoQ2hpbGRyZW4oZG9jdW1lbnQoKSkuZ2V0KCkpOwogICAgIGFz
c29jaWF0ZUNsb25lc1dpdGhPcmlnaW5hbHModGFyZ2V0Q2xvbmUuZ2V0KCksIHRhcmdldCk7CiAg
ICAgcmVtb3ZlRGlzYWxsb3dlZEVsZW1lbnRzRnJvbVN1YnRyZWUodGFyZ2V0Q2xvbmUuZ2V0KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDM1NmU5ODYuLjdjOGQ2ZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTg1LDE1ICs4NSwxNSBAQCBl
bnVtIE1lZGlhQ29udHJvbEV2ZW50IHsKIAogICAgIFtSYWlzZXNFeGNlcHRpb25dIENTU1N0eWxl
RGVjbGFyYXRpb24gY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKE5vZGUgbm9kZSk7
CiAKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSBOb2RlIGVuc3VyZVNoYWRvd1Jvb3QoRWxlbWVudCBo
b3N0KTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSBOb2RlIGVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jv
b3QoRWxlbWVudCBob3N0KTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSBOb2RlIGNyZWF0ZVNoYWRv
d1Jvb3QoRWxlbWVudCBob3N0KTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSBOb2RlIHNoYWRvd1Jv
b3QoRWxlbWVudCBob3N0KTsKKyAgICBbUmFpc2VzRXhjZXB0aW9uLCBOZWVkc1Byb2Nlc3NpbmdT
dGFja10gTm9kZSBlbnN1cmVTaGFkb3dSb290KEVsZW1lbnQgaG9zdCk7CisgICAgW1JhaXNlc0V4
Y2VwdGlvbiwgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIE5vZGUgZW5zdXJlVXNlckFnZW50U2hhZG93
Um9vdChFbGVtZW50IGhvc3QpOworICAgIFtSYWlzZXNFeGNlcHRpb24sIE5lZWRzUHJvY2Vzc2lu
Z1N0YWNrXSBOb2RlIGNyZWF0ZVNoYWRvd1Jvb3QoRWxlbWVudCBob3N0KTsKKyAgICBbUmFpc2Vz
RXhjZXB0aW9uLCBOZWVkc1Byb2Nlc3NpbmdTdGFja10gTm9kZSBzaGFkb3dSb290KEVsZW1lbnQg
aG9zdCk7CiAKICAgICBbUmFpc2VzRXhjZXB0aW9uXSBET01TdHJpbmcgc2hhZG93Um9vdFR5cGUo
Tm9kZSByb290KTsKICAgICBbUmFpc2VzRXhjZXB0aW9uXSBFbGVtZW50IGluY2x1ZGVyRm9yKE5v
ZGUgbm9kZSk7CiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHNoYWRvd1BzZXVkb0lk
KEVsZW1lbnQgZWxlbWVudCk7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCBzZXRTaGFkb3dQ
c2V1ZG9JZChFbGVtZW50IGVsZW1lbnQsIERPTVN0cmluZyBpZCk7CisgICAgW1JhaXNlc0V4Y2Vw
dGlvbiwgTmVlZHNQcm9jZXNzaW5nU3RhY2tdIHZvaWQgc2V0U2hhZG93UHNldWRvSWQoRWxlbWVu
dCBlbGVtZW50LCBET01TdHJpbmcgaWQpOwogICAgIFtSYWlzZXNFeGNlcHRpb25dIE5vZGUgdHJl
ZVNjb3BlUm9vdE5vZGUoTm9kZSBub2RlKTsKICAgICBbUmFpc2VzRXhjZXB0aW9uXSBOb2RlIHBh
cmVudFRyZWVTY29wZShOb2RlIG5vZGUpOwogCkBAIC0xMTUsNyArMTE1LDcgQEAgZW51bSBNZWRp
YUNvbnRyb2xFdmVudCB7CiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gYm9vbGVhbiBhdHRhY2hlZChO
b2RlIG5vZGUpOwogCiAgICAgRE9NU3RyaW5nIHZpc2libGVQbGFjZWhvbGRlcihFbGVtZW50IGVs
ZW1lbnQpOwotICAgIHZvaWQgc2VsZWN0Q29sb3JJbkNvbG9yQ2hvb3NlcihFbGVtZW50IGVsZW1l
bnQsIERPTVN0cmluZyBjb2xvclZhbHVlKTsKKyAgICBbTmVlZHNQcm9jZXNzaW5nU3RhY2tdIHZv
aWQgc2VsZWN0Q29sb3JJbkNvbG9yQ2hvb3NlcihFbGVtZW50IGVsZW1lbnQsIERPTVN0cmluZyBj
b2xvclZhbHVlKTsKICAgICBbUmFpc2VzRXhjZXB0aW9uXSBET01TdHJpbmdbXSBmb3JtQ29udHJv
bFN0YXRlT2ZQcmV2aW91c0hpc3RvcnlJdGVtKCk7CiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9p
ZCBzZXRGb3JtQ29udHJvbFN0YXRlT2ZQcmV2aW91c0hpc3RvcnlJdGVtKHNlcXVlbmNlPERPTVN0
cmluZz4gdmFsdWVzKTsKIApAQCAtMTQ5LDkgKzE0OSw5IEBAIGVudW0gTWVkaWFDb250cm9sRXZl
bnQgewogCiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gYm9vbGVhbiB3YXNMYXN0Q2hhbmdlVXNlckVk
aXQoRWxlbWVudCB0ZXh0RmllbGQpOwogICAgIFtSYWlzZXNFeGNlcHRpb25dIGJvb2xlYW4gZWxl
bWVudFNob3VsZEF1dG9Db21wbGV0ZShFbGVtZW50IGlucHV0RWxlbWVudCk7Ci0gICAgW1JhaXNl
c0V4Y2VwdGlvbl0gdm9pZCBzZXRFZGl0aW5nVmFsdWUoRWxlbWVudCBpbnB1dEVsZW1lbnQsIERP
TVN0cmluZyB2YWx1ZSk7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCBzZXRBdXRvZmlsbGVk
KEVsZW1lbnQgaW5wdXRFbGVtZW50LCBib29sZWFuIGVuYWJsZWQpOwotICAgIFtSYWlzZXNFeGNl
cHRpb25dIHZvaWQgc2V0U2hvd0F1dG9GaWxsQnV0dG9uKEVsZW1lbnQgaW5wdXRFbGVtZW50LCBi
b29sZWFuIGVuYWJsZWQpOworICAgIFtSYWlzZXNFeGNlcHRpb24sIE5lZWRzUHJvY2Vzc2luZ1N0
YWNrXSB2b2lkIHNldEVkaXRpbmdWYWx1ZShFbGVtZW50IGlucHV0RWxlbWVudCwgRE9NU3RyaW5n
IHZhbHVlKTsKKyAgICBbUmFpc2VzRXhjZXB0aW9uLCBOZWVkc1Byb2Nlc3NpbmdTdGFja10gdm9p
ZCBzZXRBdXRvZmlsbGVkKEVsZW1lbnQgaW5wdXRFbGVtZW50LCBib29sZWFuIGVuYWJsZWQpOwor
ICAgIFtSYWlzZXNFeGNlcHRpb24sIE5lZWRzUHJvY2Vzc2luZ1N0YWNrXSB2b2lkIHNldFNob3dB
dXRvRmlsbEJ1dHRvbihFbGVtZW50IGlucHV0RWxlbWVudCwgYm9vbGVhbiBlbmFibGVkKTsKICAg
ICBbUmFpc2VzRXhjZXB0aW9uXSB1bnNpZ25lZCBsb25nIGNvdW50TWF0Y2hlc0ZvclRleHQoRE9N
U3RyaW5nIHRleHQsIHVuc2lnbmVkIGxvbmcgZmluZE9wdGlvbnMsIERPTVN0cmluZyBtYXJrTWF0
Y2hlcyk7CiAKICAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHBhaW50Q29udHJvbFRpbnRzKCk7
CkBAIC0zMjcsNyArMzI3LDcgQEAgZW51bSBNZWRpYUNvbnRyb2xFdmVudCB7CiAKICAgICB2b2lk
IHNldFVzZXNPdmVybGF5U2Nyb2xsYmFycyhib29sZWFuIGVuYWJsZWQpOwogCi0gICAgdm9pZCBm
b3JjZVJlbG9hZChib29sZWFuIGVuZFRvRW5kKTsKKyAgICBbTmVlZHNQcm9jZXNzaW5nU3RhY2td
IHZvaWQgZm9yY2VSZWxvYWQoYm9vbGVhbiBlbmRUb0VuZCk7CiAKICAgICB2b2lkIGVuYWJsZUF1
dG9TaXplTW9kZShib29sZWFuIGVuYWJsZWQsIGxvbmcgbWluaW11bVdpZHRoLCBsb25nIG1pbmlt
dW1IZWlnaHQsIGxvbmcgbWF4aW11bVdpZHRoLCBsb25nIG1heGltdW1IZWlnaHQpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9ET01QYXJzZXIuaWRsCmluZGV4IDk0MDQ5NmIuLjY2YzlkMGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9ET01QYXJzZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9E
T01QYXJzZXIuaWRsCkBAIC0yMSw2ICsyMSw3IEBACiAgICAgQ29uc3RydWN0b3IsCiAgICAgSW1w
bGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKIF0gaW50ZXJmYWNlIERPTVBhcnNlciB7Ci0gICAgW1Jh
aXNlc0V4Y2VwdGlvbl0gRG9jdW1lbnQgcGFyc2VGcm9tU3RyaW5nKFtEZWZhdWx0PVVuZGVmaW5l
ZF0gb3B0aW9uYWwgRE9NU3RyaW5nIHN0ciwKKyAgICBbUmFpc2VzRXhjZXB0aW9uLCBOZWVkc1By
b2Nlc3NpbmdTdGFja10KKyAgICBEb2N1bWVudCBwYXJzZUZyb21TdHJpbmcoW0RlZmF1bHQ9VW5k
ZWZpbmVkXSBvcHRpb25hbCBET01TdHJpbmcgc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyBjb250ZW50VHlwZSk7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5pZGwKaW5kZXggNDQzMjJmMS4uZTE5
MWU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaWRsCkBAIC04MCw3ICs4MCw3
IEBAIGVudW0gWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGUgewogICAgIFtUcmVhdFJldHVybmVk
TnVsbFN0cmluZ0FzPVVuZGVmaW5lZF0gRE9NU3RyaW5nIGdldEFsbFJlc3BvbnNlSGVhZGVycygp
OwogICAgIFtUcmVhdFJldHVybmVkTnVsbFN0cmluZ0FzPU51bGxdIERPTVN0cmluZyBnZXRSZXNw
b25zZUhlYWRlcihET01TdHJpbmcgaGVhZGVyKTsKICAgICBbR2V0dGVyUmFpc2VzRXhjZXB0aW9u
LCBDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgcmVzcG9uc2VUZXh0
OyAvLyBUaGUgY3VzdG9tIGdldHRlciBpbXBsZW1lbnRzIFRyZWF0UmV0dXJuZWROdWxsU3RyaW5n
QXM9TnVsbAotICAgIFtHZXR0ZXJSYWlzZXNFeGNlcHRpb25dIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
b2N1bWVudCByZXNwb25zZVhNTDsKKyAgICBbR2V0dGVyUmFpc2VzRXhjZXB0aW9uLCBOZWVkc1By
b2Nlc3NpbmdTdGFja0luR2V0dGVyXSByZWFkb25seSBhdHRyaWJ1dGUgRG9jdW1lbnQgcmVzcG9u
c2VYTUw7CiAKICAgICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgWE1MSHR0cFJl
cXVlc3RSZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlOwogICAgIFtHZXR0ZXJSYWlzZXNFeGNlcHRp
b24sIENhY2hlZEF0dHJpYnV0ZSwgQ3VzdG9tR2V0dGVyXSByZWFkb25seSBhdHRyaWJ1dGUgT2Jq
ZWN0IHJlc3BvbnNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNz
b3IuaWRsIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuaWRsCmluZGV4IDFlY2Q2
MWYuLjQyYjkxZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29y
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5pZGwKQEAgLTM3LDgg
KzM3LDggQEAKIF0gaW50ZXJmYWNlIFhTTFRQcm9jZXNzb3IgewogICAgIAogICAgIHZvaWQgaW1w
b3J0U3R5bGVzaGVldChbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIE5vZGUgc3R5bGVzaGVl
dCk7Ci0gICAgRG9jdW1lbnRGcmFnbWVudCB0cmFuc2Zvcm1Ub0ZyYWdtZW50KFtEZWZhdWx0PVVu
ZGVmaW5lZF0gb3B0aW9uYWwgTm9kZSBzb3VyY2UsIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9u
YWwgRG9jdW1lbnQgZG9jVmFsKTsKLSAgICBEb2N1bWVudCB0cmFuc2Zvcm1Ub0RvY3VtZW50KFtE
ZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgTm9kZSBzb3VyY2UpOworICAgIFtOZWVkc1Byb2Nl
c3NpbmdTdGFja10gRG9jdW1lbnRGcmFnbWVudCB0cmFuc2Zvcm1Ub0ZyYWdtZW50KFtEZWZhdWx0
PVVuZGVmaW5lZF0gb3B0aW9uYWwgTm9kZSBzb3VyY2UsIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0
aW9uYWwgRG9jdW1lbnQgZG9jVmFsKTsKKyAgICBbTmVlZHNQcm9jZXNzaW5nU3RhY2tdIERvY3Vt
ZW50IHRyYW5zZm9ybVRvRG9jdW1lbnQoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBOb2Rl
IHNvdXJjZSk7CiAKICAgICBbQ3VzdG9tXSB2b2lkIHNldFBhcmFtZXRlcihET01TdHJpbmcgbmFt
ZXNwYWNlVVJJLCBET01TdHJpbmcgbG9jYWxOYW1lLCBET01TdHJpbmcgdmFsdWUpOwogICAgIFtD
dXN0b20sIFRyZWF0UmV0dXJuZWROdWxsU3RyaW5nQXM9VW5kZWZpbmVkXSBET01TdHJpbmcgZ2V0
UGFyYW1ldGVyKERPTVN0cmluZyBuYW1lc3BhY2VVUkksIERPTVN0cmluZyBsb2NhbE5hbWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4IDAwN2U0MTQuLjlmNTVlODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VPdmVybGF5Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0xp
ZmVjeWNsZUNhbGxiYWNrUXVldWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgpAQCAtMzExLDYgKzMxMiw4IEBAIFdLU3RyaW5nUmVmIFdLQnVuZGxlUGFnZUNv
cHlSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkZvclByaW50aW5nKFdLQnVuZGxlCiAK
IHZvaWQgV0tCdW5kbGVQYWdlRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdLQnVuZGxlUGFnZVJlZiBw
YWdlUmVmLCBXS1N0cmluZ1JlZiBuYW1lLCBXS1N0cmluZ1JlZiBhcmd1bWVudCkKIHsKKyAgICBX
ZWJDb3JlOjpDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrIGN1c3RvbUVsZW1l
bnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2s7CisKICAgICB0b0ltcGwocGFnZVJlZiktPmV4ZWN1
dGVFZGl0aW5nQ29tbWFuZCh0b1dURlN0cmluZyhuYW1lKSwgdG9XVEZTdHJpbmcoYXJndW1lbnQp
KTsKIH0KIApAQCAtNjA4LDYgKzYxMSw4IEBAIHZvaWQgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2Uo
V0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lUmVmCiAKIHZv
aWQgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZUZvclRlc3RpbmcoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lUmVmLCBXS1R5cGVSZWYgbWVz
c2FnZUJvZHlSZWYsIFdLVHlwZVJlZiogcmV0dXJuRGF0YVJlZikKIHsKKyAgICBXZWJDb3JlOjpD
dXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrIGN1c3RvbUVsZW1lbnRMaWZlY3lj
bGVQcm9jZXNzaW5nU3RhY2s7CisKICAgICBXZWJQYWdlKiBwYWdlID0gdG9JbXBsKHBhZ2VSZWYp
OwogICAgIHBhZ2UtPmxheW91dElmTmVlZGVkKCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDU3MWY4ODMuLmUwZjA0NDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTA2LDcgKzEwNiw3IEBACiAJCUJDQTE4QjI2MEM5QjAxNUMwMDExNDM2OSAvKiBXb3JrUXVldWVJ
dGVtTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNBMThCMjUwQzlCMDE1QzAwMTE0MzY5IC8qIFdvcmtRdWV1ZUl0ZW1NYWMubW0gKi87IH07CiAJ
CUJDQTE4QjMyMEM5QjAxQjQwMDExNDM2OSAvKiBPYmpDQ29udHJvbGxlci5tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBMThCMzAwQzlCMDFCNDAwMTE0
MzY5IC8qIE9iakNDb250cm9sbGVyLm0gKi87IH07CiAJCUJDQTE4QjM5MEM5QjAyMTkwMDExNDM2
OSAvKiBBcHBsZVNjcmlwdENvbnRyb2xsZXIubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTE4QjM3MEM5QjAyMTkwMDExNDM2OSAvKiBBcHBsZVNjcmlw
dENvbnRyb2xsZXIubSAqLzsgfTsKLQkJQkNBMThCNDkwQzlCMDJDNDAwMTE0MzY5IC8qIFRleHRJ
bnB1dENvbnRyb2xsZXIubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDQTE4QjQ4MEM5QjAyQzQwMDExNDM2OSAvKiBUZXh0SW5wdXRDb250cm9sbGVyLm0g
Ki87IH07CisJCUJDQTE4QjQ5MEM5QjAyQzQwMDExNDM2OSAvKiBUZXh0SW5wdXRDb250cm9sbGVy
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBMThC
NDgwQzlCMDJDNDAwMTE0MzY5IC8qIFRleHRJbnB1dENvbnRyb2xsZXIubW0gKi87IH07CiAJCUJD
QTE4QjYyMEM5QjA4QzIwMDExNDM2OSAvKiBFZGl0aW5nRGVsZWdhdGUubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0ExOEI1ODBDOUIwOEMyMDAxMTQz
NjkgLyogRWRpdGluZ0RlbGVnYXRlLm1tICovOyB9OwogCQlCQ0ExOEI2NDBDOUIwOEMyMDAxMTQz
NjkgLyogRnJhbWVMb2FkRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQ0ExOEI1QTBDOUIwOEMyMDAxMTQzNjkgLyogRnJhbWVMb2FkRGVs
ZWdhdGUubW0gKi87IH07CiAJCUJDQTE4QjY2MEM5QjA4QzIwMDExNDM2OSAvKiBQb2xpY3lEZWxl
Z2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
QTE4QjVDMEM5QjA4QzIwMDExNDM2OSAvKiBQb2xpY3lEZWxlZ2F0ZS5tbSAqLzsgfTsKQEAgLTMz
Miw3ICszMzIsNyBAQAogCQlCQ0ExOEIzNjBDOUIwMjE5MDAxMTQzNjkgLyogQXBwbGVTY3JpcHRD
b250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBcHBsZVNjcmlw
dENvbnRyb2xsZXIuaDsgcGF0aCA9IG1hYy9BcHBsZVNjcmlwdENvbnRyb2xsZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBMThCMzcwQzlCMDIxOTAwMTE0MzY5IC8qIEFwcGxl
U2NyaXB0Q29udHJvbGxlci5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBuYW1lID0g
QXBwbGVTY3JpcHRDb250cm9sbGVyLm07IHBhdGggPSBtYWMvQXBwbGVTY3JpcHRDb250cm9sbGVy
Lm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQTE4QjNBMEM5QjAyNDkwMDExNDM2
OSAvKiBUZXh0SW5wdXRDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBUZXh0SW5wdXRDb250cm9sbGVyLmg7IHBhdGggPSBtYWMvVGV4dElucHV0Q29udHJvbGxl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQ0ExOEI0ODBDOUIwMkM0MDAxMTQz
NjkgLyogVGV4dElucHV0Q29udHJvbGxlci5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpj
OyBuYW1lID0gVGV4dElucHV0Q29udHJvbGxlci5tOyBwYXRoID0gbWFjL1RleHRJbnB1dENvbnRy
b2xsZXIubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNBMThCNDgwQzlCMDJDNDAw
MTE0MzY5IC8qIFRleHRJbnB1dENvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lm9iamNwcDsgbmFtZSA9IFRleHRJbnB1dENvbnRyb2xsZXIubW07IHBhdGggPSBtYWMvVGV4dElu
cHV0Q29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBMThCNTcw
QzlCMDhDMjAwMTE0MzY5IC8qIEVkaXRpbmdEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gRWRpdGluZ0RlbGVnYXRlLmg7IHBhdGggPSBtYWMvRWRpdGluZ0RlbGVn
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQTE4QjU4MEM5QjA4QzIwMDEx
NDM2OSAvKiBFZGl0aW5nRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBuYW1lID0gRWRpdGluZ0RlbGVnYXRlLm1tOyBwYXRoID0gbWFjL0VkaXRpbmdEZWxlZ2F0
ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBMThCNTkwQzlCMDhDMjAwMTE0
MzY5IC8qIEZyYW1lTG9hZERlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBGcmFtZUxvYWREZWxlZ2F0ZS5oOyBwYXRoID0gbWFjL0ZyYW1lTG9hZERlbGVnYXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MjIsNyArNTIyLDcgQEAKIAkJCQlCQzAx
MzFEOTBDOTc3MjAxMDA4NzMxN0QgLyogVGVzdFJ1bm5lci5oICovLAogCQkJCUJDQTE4QjIyMEM5
QjAxNEIwMDExNDM2OSAvKiBUZXN0UnVubmVyTWFjLm1tICovLAogCQkJCUJDQTE4QjNBMEM5QjAy
NDkwMDExNDM2OSAvKiBUZXh0SW5wdXRDb250cm9sbGVyLmggKi8sCi0JCQkJQkNBMThCNDgwQzlC
MDJDNDAwMTE0MzY5IC8qIFRleHRJbnB1dENvbnRyb2xsZXIubSAqLywKKwkJCQlCQ0ExOEI0ODBD
OUIwMkM0MDAxMTQzNjkgLyogVGV4dElucHV0Q29udHJvbGxlci5tbSAqLywKIAkJCSk7CiAJCQlu
YW1lID0gQ29udHJvbGxlcnM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtOTk3LDcg
Kzk5Nyw3IEBACiAJCQkJQkNBMThCNjgwQzlCMDhDMjAwMTE0MzY5IC8qIFJlc291cmNlTG9hZERl
bGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwMTMxREEwQzk3NzIwMTAwODczMTdEIC8q
IFRlc3RSdW5uZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBMThCMjQwQzlCMDE0QjAwMTE0
MzY5IC8qIFRlc3RSdW5uZXJNYWMubW0gaW4gU291cmNlcyAqLywKLQkJCQlCQ0ExOEI0OTBDOUIw
MkM0MDAxMTQzNjkgLyogVGV4dElucHV0Q29udHJvbGxlci5tIGluIFNvdXJjZXMgKi8sCisJCQkJ
QkNBMThCNDkwQzlCMDJDNDAwMTE0MzY5IC8qIFRleHRJbnB1dENvbnRyb2xsZXIubW0gaW4gU291
cmNlcyAqLywKIAkJCQlCQ0ExOEI2QTBDOUIwOEMyMDAxMTQzNjkgLyogVUlEZWxlZ2F0ZS5tbSBp
biBTb3VyY2VzICovLAogCQkJCTQ0Mzc3MzBFMTI1Q0JDMzYwMEFBRTAyQyAvKiBXZWJBcmNoaXZl
RHVtcFN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDQwNTkwNzExMjY4NDUzODAwQ0ZE
NDhEIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydE1hYy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9UZXN0UnVubmVyLmNwcAppbmRleCBiNTI3MGRjLi4zNTUxYzlkZiAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NUZXN0UnVubmVyVXRpbHMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU09iamVjdFJlZi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9MaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmg+CiAjaW5jbHVkZSA8
Y3N0cmluZz4KICNpbmNsdWRlIDxsb2NhbGUuaD4KICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVm
ZmVyVmlldy5oPgpAQCAtNTQ0LDYgKzU0NSw4IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGVuY29kZUhv
c3ROYW1lQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0CiAK
IHN0YXRpYyBKU1ZhbHVlUmVmIGV4ZWNDb21tYW5kQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3Qg
YXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKQogeworICAgIFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNz
aW5nU3RhY2sgY3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjazsKKwogICAgIC8v
IEhhcyBNYWMgJiBXaW5kb3dzIGltcGxlbWVudGF0aW9ucy4KICAgICBpZiAoYXJndW1lbnRDb3Vu
dCA8IDEpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKQEAg
LTE4MzcsNiArMTg0MCw4IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNpbXVsYXRlTGVnYWN5V2ViTm90
aWZpY2F0aW9uQ2xpY2tDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4CiAKIHN0YXRpYyBKU1Zh
bHVlUmVmIHNldFRleHREaXJlY3Rpb25DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNP
YmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVu
dENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRp
b24pCiB7CisgICAgV2ViQ29yZTo6Q3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFj
ayBjdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOworCiAgICAgaWYgKGFyZ3Vt
ZW50Q291bnQgPT0gMSkgewogICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gZGlyZWN0
aW9uKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhj
ZXB0aW9uKSk7CiAgICAgICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxU
ZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KaW5kZXggYjkw
M2VhNy4uNjhiNzgyMyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50
U2VuZGluZ0NvbnRyb2xsZXIubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50
U2VuZGluZ0NvbnRyb2xsZXIubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIkR1bXBSZW5k
ZXJUcmVlRHJhZ2dpbmdJbmZvLmgiCiAjaW1wb3J0ICJEdW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2lu
Z1NvdXJjZS5oIgogI2ltcG9ydCAiV2ViQ29yZVRlc3RTdXBwb3J0LmgiCisjaW1wb3J0IDxXZWJD
b3JlL0xpZmVjeWNsZUNhbGxiYWNrUXVldWUuaD4KICNpbXBvcnQgPFdlYktpdC9ET01Qcml2YXRl
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViVmlld1By
aXZhdGUuaD4KQEAgLTM4OSw2ICszOTAsOCBAQCBzdGF0aWMgTlNFdmVudFR5cGUgZXZlbnRUeXBl
Rm9yTW91c2VCdXR0b25BbmRBY3Rpb24oaW50IGJ1dHRvbiwgTW91c2VBY3Rpb24gYWN0aQogCiAt
ICh2b2lkKWJlZ2luRHJhZ1dpdGhGaWxlczooV2ViU2NyaXB0T2JqZWN0Kilqc0ZpbGVQYXRocwog
eworICAgIFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2sgY3Vz
dG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjazsKKwogICAgIGFzc2VydCghZHJhZ2dp
bmdJbmZvKTsKICAgICBhc3NlcnQoW2pzRmlsZVBhdGhzIGlzS2luZE9mQ2xhc3M6W1dlYlNjcmlw
dE9iamVjdCBjbGFzc11dKTsKIApAQCAtNDczLDYgKzQ3Niw4IEBAIHN0YXRpYyBpbnQgYnVpbGRN
b2RpZmllckZsYWdzKGNvbnN0IFdlYlNjcmlwdE9iamVjdCogbW9kaWZpZXJzKQogCiAtICh2b2lk
KW1vdXNlRG93bjooaW50KWJ1dHRvbk51bWJlciB3aXRoTW9kaWZpZXJzOihXZWJTY3JpcHRPYmpl
Y3QqKW1vZGlmaWVycwogeworICAgIFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9j
ZXNzaW5nU3RhY2sgY3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjazsKKwogICAg
IFtbW21haW5GcmFtZSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld10gbGF5b3V0XTsKICAgICBbc2Vs
ZiB1cGRhdGVDbGlja0NvdW50Rm9yQnV0dG9uOmJ1dHRvbk51bWJlcl07CiAgICAgCkBAIC01NDcs
NiArNTUyLDggQEAgLSAodm9pZClzY2FsZVBhZ2VCeTooZmxvYXQpc2NhbGUgYXRYOihmbG9hdCl4
IGFuZFk6KGZsb2F0KXkKIAogLSAodm9pZCltb3VzZVVwOihpbnQpYnV0dG9uTnVtYmVyIHdpdGhN
b2RpZmllcnM6KFdlYlNjcmlwdE9iamVjdCopbW9kaWZpZXJzCiB7CisgICAgV2ViQ29yZTo6Q3Vz
dG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayBjdXN0b21FbGVtZW50TGlmZWN5Y2xl
UHJvY2Vzc2luZ1N0YWNrOworCiAgICAgaWYgKGRyYWdNb2RlICYmICFyZXBsYXlpbmdTYXZlZEV2
ZW50cykgewogICAgICAgICBOU0ludm9jYXRpb24gKmludm9jYXRpb24gPSBbTlNJbnZvY2F0aW9u
IGludm9jYXRpb25XaXRoTWV0aG9kU2lnbmF0dXJlOltFdmVudFNlbmRpbmdDb250cm9sbGVyIGlu
c3RhbmNlTWV0aG9kU2lnbmF0dXJlRm9yU2VsZWN0b3I6QHNlbGVjdG9yKG1vdXNlVXA6d2l0aE1v
ZGlmaWVyczopXV07CiAgICAgICAgIFtpbnZvY2F0aW9uIHNldFRhcmdldDpzZWxmXTsKQEAgLTYy
NSw2ICs2MzIsOCBAQCAtICh2b2lkKW1vdXNlVXA6KGludClidXR0b25OdW1iZXIKIAogLSAodm9p
ZCltb3VzZU1vdmVUb1g6KGludCl4IFk6KGludCl5CiB7CisgICAgV2ViQ29yZTo6Q3VzdG9tRWxl
bWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayBjdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vz
c2luZ1N0YWNrOworCiAgICAgaWYgKGRyYWdNb2RlICYmIGxlZnRNb3VzZUJ1dHRvbkRvd24gJiYg
IXJlcGxheWluZ1NhdmVkRXZlbnRzKSB7CiAgICAgICAgIE5TSW52b2NhdGlvbiAqaW52b2NhdGlv
biA9IFtOU0ludm9jYXRpb24gaW52b2NhdGlvbldpdGhNZXRob2RTaWduYXR1cmU6W0V2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXIgaW5zdGFuY2VNZXRob2RTaWduYXR1cmVGb3JTZWxlY3RvcjpAc2VsZWN0
b3IobW91c2VNb3ZlVG9YOlk6KV1dOwogICAgICAgICBbaW52b2NhdGlvbiBzZXRUYXJnZXQ6c2Vs
Zl07CkBAIC02ODUsNiArNjk0LDggQEAgLSAodm9pZCltb3VzZU1vdmVUb1g6KGludCl4IFk6KGlu
dCl5CiAtICh2b2lkKW1vdXNlU2Nyb2xsQnlYOihpbnQpeCBhbmRZOihpbnQpeSBjb250aW51b3Vz
bHk6KEJPT0wpY29udGludW91c2x5CiB7CiAjaWYgIVBMQVRGT1JNKElPUykKKyAgICBXZWJDb3Jl
OjpDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrIGN1c3RvbUVsZW1lbnRMaWZl
Y3ljbGVQcm9jZXNzaW5nU3RhY2s7CisKICAgICBDR1Njcm9sbEV2ZW50VW5pdCB1bml0ID0gY29u
dGludW91c2x5ID8ga0NHU2Nyb2xsRXZlbnRVbml0UGl4ZWwgOiBrQ0dTY3JvbGxFdmVudFVuaXRM
aW5lOwogICAgIENHRXZlbnRSZWYgY2dTY3JvbGxFdmVudCA9IENHRXZlbnRDcmVhdGVTY3JvbGxX
aGVlbEV2ZW50KE5VTEwsIHVuaXQsIDIsIHksIHgpOwogICAgIApAQCAtNzIwLDYgKzczMSw4IEBA
IC0gKHZvaWQpbW91c2VTY3JvbGxCeVg6KGludCl4IGFuZFk6KGludCl5CiAtICh2b2lkKW1vdXNl
U2Nyb2xsQnlYOihpbnQpeCBhbmRZOihpbnQpeSB3aXRoV2hlZWw6KE5TU3RyaW5nKilwaGFzZU5h
bWUgYW5kTW9tZW50dW1QaGFzZXM6KE5TU3RyaW5nKiltb21lbnR1bU5hbWUKIHsKICNpZiBQTEFU
Rk9STShNQUMpCisgICAgV2ViQ29yZTo6Q3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdT
dGFjayBjdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOworCiAgICAgdWludDMy
X3QgcGhhc2UgPSAwOwogICAgIGlmIChbcGhhc2VOYW1lIGlzRXF1YWxUb1N0cmluZzogQCJub25l
Il0pCiAgICAgICAgIHBoYXNlID0gMDsKQEAgLTc3MCw2ICs3ODMsOCBAQCAtICh2b2lkKW1vdXNl
U2Nyb2xsQnlYOihpbnQpeCBhbmRZOihpbnQpeSB3aXRoV2hlZWw6KE5TU3RyaW5nKilwaGFzZU5h
bWUgYW5kTW9tZQogLSAoTlNBcnJheSAqKWNvbnRleHRDbGljawogewogI2lmIFBMQVRGT1JNKE1B
QykKKyAgICBXZWJDb3JlOjpDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrIGN1
c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2s7CisKICAgICBbW1ttYWluRnJhbWUg
ZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddIGxheW91dF07CiAgICAgW3NlbGYgdXBkYXRlQ2xpY2tD
b3VudEZvckJ1dHRvbjpSaWdodE1vdXNlQnV0dG9uXTsKIApAQCAtODQyLDYgKzg1Nyw4IEBAICsg
KHZvaWQpY2xlYXJTYXZlZEV2ZW50cwogCiAtICh2b2lkKWtleURvd246KE5TU3RyaW5nICopY2hh
cmFjdGVyIHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9iamVjdCAqKW1vZGlmaWVycyB3aXRoTG9j
YXRpb246KHVuc2lnbmVkIGxvbmcpbG9jYXRpb24KIHsKKyAgICBXZWJDb3JlOjpDdXN0b21FbGVt
ZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrIGN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNz
aW5nU3RhY2s7CisKICAgICBOU1N0cmluZyAqZXZlbnRDaGFyYWN0ZXIgPSBjaGFyYWN0ZXI7CiAg
ICAgdW5zaWduZWQgc2hvcnQga2V5Q29kZSA9IDA7CiAgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAibGVmdEFycm93Il0pIHsKQEAgLTEzNTYsNiArMTM3Myw4IEBAIC0gKHZvaWQp
c2V0VG91Y2hNb2RpZmllcjooTlNTdHJpbmcqKW1vZGlmaWVyTmFtZSB2YWx1ZTooQk9PTClmbGFn
CiAKIC0gKHZvaWQpc2VudFRvdWNoRXZlbnRPZlR5cGU6KFdlYkV2ZW50VHlwZSl0eXBlCiB7Cisg
ICAgV2ViQ29yZTo6Q3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayBjdXN0b21F
bGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOworCiAgICAgTlNNdXRhYmxlQXJyYXkgKnRv
dWNoTG9jYXRpb25zID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpb
dG91Y2hlcyBjb3VudF1dOwogICAgIE5TTXV0YWJsZUFycmF5ICp0b3VjaElkZW50aWZpZXJzID0g
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpbdG91Y2hlcyBjb3VudF1d
OwogICAgIE5TTXV0YWJsZUFycmF5ICp0b3VjaFBoYXNlcyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRXaXRoQ2FwYWNpdHk6W3RvdWNoZXMgY291bnRdXTsKQEAgLTE0MDcsMTYgKzE0MjYs
MjIgQEAgLSAodm9pZClzZW50VG91Y2hFdmVudE9mVHlwZTooV2ViRXZlbnRUeXBlKXR5cGUKIAog
LSAodm9pZCl0b3VjaFN0YXJ0CiB7CisgICAgV2ViQ29yZTo6Q3VzdG9tRWxlbWVudExpZmVjeWNs
ZVByb2Nlc3NpbmdTdGFjayBjdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOwor
CiAgICAgW3NlbGYgc2VudFRvdWNoRXZlbnRPZlR5cGU6V2ViRXZlbnRUb3VjaEJlZ2luXTsKIH0K
IAogLSAodm9pZCl0b3VjaE1vdmUKIHsKKyAgICBXZWJDb3JlOjpDdXN0b21FbGVtZW50TGlmZWN5
Y2xlUHJvY2Vzc2luZ1N0YWNrIGN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2s7
CisKICAgICBbc2VsZiBzZW50VG91Y2hFdmVudE9mVHlwZTpXZWJFdmVudFRvdWNoQ2hhbmdlXTsK
IH0KIAogLSAodm9pZCl0b3VjaEVuZAogeworICAgIFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRMaWZl
Y3ljbGVQcm9jZXNzaW5nU3RhY2sgY3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFj
azsKKwogICAgIFtzZWxmIHNlbnRUb3VjaEV2ZW50T2ZUeXBlOldlYkV2ZW50VG91Y2hFbmRdOwog
CiAgICAgTlNNdXRhYmxlQXJyYXkgKnRvdWNoZXNUb1JlbW92ZSA9IFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRdOwpAQCAtMTQzMSw2ICsxNDU2LDggQEAgLSAodm9pZCl0b3VjaEVuZAogCiAt
ICh2b2lkKXRvdWNoQ2FuY2VsCiB7CisgICAgV2ViQ29yZTo6Q3VzdG9tRWxlbWVudExpZmVjeWNs
ZVByb2Nlc3NpbmdTdGFjayBjdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOwor
CiAgICAgW3NlbGYgc2VudFRvdWNoRXZlbnRPZlR5cGU6V2ViRXZlbnRUb3VjaENhbmNlbF07CiAK
ICAgICBOU011dGFibGVBcnJheSAqdG91Y2hlc1RvUmVtb3ZlID0gW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdF07CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGV4dElu
cHV0Q29udHJvbGxlci5tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1RleHRJbnB1dENvbnRy
b2xsZXIubQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzkwMWRhYS4uMDAwMDAwMAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGV4dElucHV0Q29udHJvbGxlci5tCisrKyAv
ZGV2L251bGwKQEAgLTEsNTUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIw
MDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAot
ICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwot
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAi
VGV4dElucHV0Q29udHJvbGxlci5oIgotCi0jaWYgUExBVEZPUk0oTUFDKQotLy8gRklYTUU6IDxy
ZGFyOi8vcHJvYmxlbS81MTA2Mjg3PiBEdW1wUmVuZGVyVHJlZTogZml4IFRleHRJbnB1dENvbnRy
b2xsZXIgdG8gd29yayB3aXRoIGlPUyBhbmQgcmUtZW5hYmxlIHRlc3RzCi0KLSNpbXBvcnQgIkR1
bXBSZW5kZXJUcmVlTWFjLmgiCi0jaW1wb3J0IDxBcHBLaXQvTlNJbnB1dE1hbmFnZXIuaD4KLSNp
bXBvcnQgPEFwcEtpdC9OU1RleHRBbHRlcm5hdGl2ZXMuaD4KLQotI2lmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAwCi0jZGVmaW5lIFNVUFBPUlRfSU5TRVJUSU9OX1VO
RE9fR1JPVVBJTkcKLSNpZiBfX2hhc19pbmNsdWRlKDxBcHBLaXQvTlNUZXh0SW5wdXRDb250ZXh0
X1ByaXZhdGUuaD4pCi0jaW1wb3J0IDxBcHBLaXQvTlNUZXh0SW5wdXRDb250ZXh0X1ByaXZhdGUu
aD4KLSNlbHNlCi1OU1N0cmluZyAqTlNUZXh0SW5zZXJ0aW9uVW5kb2FibGVBdHRyaWJ1dGVOYW1l
OwotI2VuZGlmCi0jZW5kaWYKLQotI2ltcG9ydCA8V2ViS2l0L1dlYkRvY3VtZW50Lmg+Ci0jaW1w
b3J0IDxXZWJLaXQvV2ViRnJhbWUuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJGcmFtZVByaXZhdGUu
aD4KLSNpbXBvcnQgPFdlYktpdC9XZWJGcmFtZVZpZXcuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJI
VE1MVmlld1ByaXZhdGUuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJTY3JpcHRPYmplY3QuaD4KLSNp
bXBvcnQgPFdlYktpdC9XZWJUeXBlc0ludGVybmFsLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViVmll
dy5oPgotCi1AaW50ZXJmYWNlIFRleHRJbnB1dENvbnRyb2xsZXIgKER1bXBSZW5kZXJUcmVlSW5w
dXRNZXRob2RIYW5kbGVyKQotLSAoQk9PTClpbnRlcnByZXRLZXlFdmVudHM6KE5TQXJyYXkgKill
dmVudEFycmF5IHdpdGhTZW5kZXI6KFdlYkhUTUxWaWV3ICopc2VuZGVyOwotQGVuZAotCi1AaW50
ZXJmYWNlIFdlYkhUTUxWaWV3IChEdW1wUmVuZGVyVHJlZUlucHV0TWV0aG9kSGFuZGxlcikKLS0g
KHZvaWQpaW50ZXJwcmV0S2V5RXZlbnRzOihOU0FycmF5ICopZXZlbnRBcnJheTsKLUBlbmQKLQot
QGludGVyZmFjZSBXZWJIVE1MVmlldyAoV2ViS2l0U2VjcmV0c1RleHRJbnB1dENvbnRyb2xsZXJJ
c0F3YXJlT2YpCi0tIChXZWJGcmFtZSAqKV9mcmFtZTsKLS0gKE5TQXR0cmlidXRlZFN0cmluZyAq
KV9hdHRyaWJ1dGVTdHJpbmdGcm9tRE9NUmFuZ2U6KERPTVJhbmdlICopcmFuZ2U7Ci1AZW5kCi0K
LUBpbXBsZW1lbnRhdGlvbiBXZWJIVE1MVmlldyAoRHVtcFJlbmRlclRyZWVJbnB1dE1ldGhvZEhh
bmRsZXIpCi0tICh2b2lkKWludGVycHJldEtleUV2ZW50czooTlNBcnJheSAqKWV2ZW50QXJyYXkK
LXsKLSAgICBXZWJTY3JpcHRPYmplY3QgKm9iaiA9IFtbc2VsZiBfZnJhbWVdIHdpbmRvd09iamVj
dF07Ci0gICAgVGV4dElucHV0Q29udHJvbGxlciAqdGljID0gW29iaiB2YWx1ZUZvcktleTpAInRl
eHRJbnB1dENvbnRyb2xsZXIiXTsKLSAgICBpZiAoIVt0aWMgaW50ZXJwcmV0S2V5RXZlbnRzOmV2
ZW50QXJyYXkgd2l0aFNlbmRlcjpzZWxmXSkKLSAgICAgICAgW3N1cGVyIGludGVycHJldEtleUV2
ZW50czpldmVudEFycmF5XTsKLX0KLUBlbmQKLQotQGludGVyZmFjZSBXZWJOU1JhbmdlIDogTlNP
YmplY3QgewotQHByaXZhdGUKLSAgICBOU1JhbmdlIF9yYW5nZTsKLX0KLS0gKGlkKWluaXRXaXRo
TlNSYW5nZTooTlNSYW5nZSlyYW5nZTsKLS0gKHVuc2lnbmVkKWxvY2F0aW9uOwotLSAodW5zaWdu
ZWQpbGVuZ3RoOwotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gV2ViTlNSYW5nZQotCi0tIChpZClp
bml0V2l0aE5TUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRd
OwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJuIHNlbGY7Ci0KLSAgICBfcmFuZ2UgPSBy
YW5nZTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodW5zaWduZWQpbG9jYXRpb24KLXsKLSAg
ICByZXR1cm4gX3JhbmdlLmxvY2F0aW9uOwotfQotCi0tICh1bnNpZ25lZClsZW5ndGgKLXsKLSAg
ICByZXR1cm4gX3JhbmdlLmxlbmd0aDsKLX0KLQotKyAoQk9PTClpc1NlbGVjdG9yRXhjbHVkZWRG
cm9tV2ViU2NyaXB0OihTRUwpc2VsZWN0b3IKLXsKLSAgICByZXR1cm4gIShzZWxlY3RvciA9PSBA
c2VsZWN0b3IobG9jYXRpb24pIHx8IHNlbGVjdG9yID09IEBzZWxlY3RvcihsZW5ndGgpKTsKLX0K
LQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAoVGV4
dElucHV0Q29udHJvbGxlcikKLQotKyAoQk9PTClpc1NlbGVjdG9yRXhjbHVkZWRGcm9tV2ViU2Ny
aXB0OihTRUwpYVNlbGVjdG9yCi17Ci0gICAgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3Ioc3Ry
aW5nKQotICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihnZXRMZW5ndGgpCi0g
ICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHJhbmdlcykKLSAgICAgICAgICAg
IHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoYXR0cmlidXRlTmFtZXNBdEluZGV4OikKLSAgICAg
ICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IodmFsdWVPZkF0dHJpYnV0ZTphdEluZGV4
OikKLSAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoYWRkQXR0cmlidXRlOnZh
bHVlOikKLSAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoYWRkQXR0cmlidXRl
OnZhbHVlOmZyb206bGVuZ3RoOikKLSAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0
b3IoYWRkQ29sb3JBdHRyaWJ1dGU6cmVkOmdyZWVuOmJsdWU6YWxwaGE6KQotICAgICAgICAgICAg
fHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihhZGRDb2xvckF0dHJpYnV0ZTpyZWQ6Z3JlZW46Ymx1
ZTphbHBoYTpmcm9tOmxlbmd0aDopCi0gICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVj
dG9yKGFkZEZvbnRBdHRyaWJ1dGU6Zm9udE5hbWU6c2l6ZTopCi0gICAgICAgICAgICB8fCBhU2Vs
ZWN0b3IgPT0gQHNlbGVjdG9yKGFkZEZvbnRBdHRyaWJ1dGU6Zm9udE5hbWU6c2l6ZTpmcm9tOmxl
bmd0aDopKQotICAgICAgICByZXR1cm4gTk87Ci0gICAgcmV0dXJuIFlFUzsKLX0KLQotKyAoTlNT
dHJpbmcgKil3ZWJTY3JpcHROYW1lRm9yU2VsZWN0b3I6KFNFTClhU2VsZWN0b3IKLXsKLSAgICBp
ZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihnZXRMZW5ndGgpKQotICAgICAgICByZXR1cm4gQCJs
ZW5ndGgiOwotICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHJhbmdlcykpCi0gICAgICAg
IHJldHVybiBAInJhbmdlcyI7Ci0gICAgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoYXR0cmli
dXRlTmFtZXNBdEluZGV4OikpCi0gICAgICAgIHJldHVybiBAImdldEF0dHJpYnV0ZU5hbWVzQXRJ
bmRleCI7Ci0gICAgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3IodmFsdWVPZkF0dHJpYnV0ZTph
dEluZGV4OikpCi0gICAgICAgIHJldHVybiBAImdldEF0dHJpYnV0ZVZhbHVlQXRJbmRleCI7Ci0g
ICAgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoYWRkQXR0cmlidXRlOnZhbHVlOikpCi0gICAg
ICAgIHJldHVybiBAImFkZEF0dHJpYnV0ZSI7Ci0gICAgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0
b3IoYWRkQXR0cmlidXRlOnZhbHVlOmZyb206bGVuZ3RoOikpCi0gICAgICAgIHJldHVybiBAImFk
ZEF0dHJpYnV0ZUZvclJhbmdlIjsKLSAgICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihhZGRD
b2xvckF0dHJpYnV0ZTpyZWQ6Z3JlZW46Ymx1ZTphbHBoYTopKQotICAgICAgICByZXR1cm4gQCJh
ZGRDb2xvckF0dHJpYnV0ZSI7Ci0gICAgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoYWRkQ29s
b3JBdHRyaWJ1dGU6cmVkOmdyZWVuOmJsdWU6YWxwaGE6ZnJvbTpsZW5ndGg6KSkKLSAgICAgICAg
cmV0dXJuIEAiYWRkQ29sb3JBdHRyaWJ1dGVGb3JSYW5nZSI7Ci0gICAgaWYgKGFTZWxlY3RvciA9
PSBAc2VsZWN0b3IoYWRkRm9udEF0dHJpYnV0ZTpmb250TmFtZTpzaXplOikpCi0gICAgICAgIHJl
dHVybiBAImFkZEZvbnRBdHRyaWJ1dGUiOwotICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9y
KGFkZEZvbnRBdHRyaWJ1dGU6Zm9udE5hbWU6c2l6ZTpmcm9tOmxlbmd0aDopKQotICAgICAgICBy
ZXR1cm4gQCJhZGRGb250QXR0cmlidXRlRm9yUmFuZ2UiOwotCi0gICAgcmV0dXJuIG5pbDsKLX0K
LQotLSAoaW50KWdldExlbmd0aAotewotICAgIHJldHVybiAoaW50KVtzZWxmIGxlbmd0aF07Ci19
Ci0KLS0gKE5TQXJyYXkgKilyYW5nZXMKLXsKLSAgICBOU011dGFibGVBcnJheSAqYXJyYXkgPSBb
TlNNdXRhYmxlQXJyYXkgYXJyYXldOwotICAgIFtzZWxmIGVudW1lcmF0ZUF0dHJpYnV0ZXNJblJh
bmdlOk5TTWFrZVJhbmdlKDAsIFtzZWxmIGxlbmd0aF0pIG9wdGlvbnM6MCB1c2luZ0Jsb2NrOl4o
TlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzLCBOU1JhbmdlIHJhbmdlLCBCT09MICpzdG9wKSB7Ci0g
ICAgICAgIFdlYk5TUmFuZ2UgKndlYlJhbmdlID0gW1tXZWJOU1JhbmdlIGFsbG9jXSBpbml0V2l0
aE5TUmFuZ2U6cmFuZ2VdOwotICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OndlYlJhbmdlXTsKLSAg
ICAgICAgW3dlYlJhbmdlIHJlbGVhc2VdOwotICAgIH1dOwotICAgIHJldHVybiBhcnJheTsKLX0K
LQotLSAoTlNBcnJheSAqKWF0dHJpYnV0ZU5hbWVzQXRJbmRleDooaW50KWluZGV4Ci17Ci0gICAg
TlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzID0gW3NlbGYgYXR0cmlidXRlc0F0SW5kZXg6KHVuc2ln
bmVkKWluZGV4IGVmZmVjdGl2ZVJhbmdlOm5pbF07Ci0gICAgcmV0dXJuIFthdHRyaWJ1dGVzIGFs
bEtleXNdOwotfQotCi0tIChpZCl2YWx1ZU9mQXR0cmlidXRlOihOU1N0cmluZyAqKWF0dHJOYW1l
IGF0SW5kZXg6KGludClpbmRleAotewotICAgIHJldHVybiBbc2VsZiBhdHRyaWJ1dGU6YXR0ck5h
bWUgYXRJbmRleDoodW5zaWduZWQpaW5kZXggZWZmZWN0aXZlUmFuZ2U6bmlsXTsKLX0KLQotLSAo
dm9pZClhZGRBdHRyaWJ1dGU6KE5TU3RyaW5nICopYXR0ck5hbWUgdmFsdWU6KGlkKXZhbHVlCi17
Ci0gICAgW3NlbGYgYWRkQXR0cmlidXRlOmF0dHJOYW1lIHZhbHVlOnZhbHVlIHJhbmdlOk5TTWFr
ZVJhbmdlKDAsIFtzZWxmIGxlbmd0aF0pXTsKLX0KLQotLSAodm9pZClhZGRBdHRyaWJ1dGU6KE5T
U3RyaW5nICopYXR0ck5hbWUgdmFsdWU6KGlkKXZhbHVlIGZyb206KGludClmcm9tIGxlbmd0aDoo
aW50KWxlbmd0aAotewotICAgIFtzZWxmIGFkZEF0dHJpYnV0ZTphdHRyTmFtZSB2YWx1ZTp2YWx1
ZSByYW5nZTpOU01ha2VSYW5nZSgodW5zaWduZWQpZnJvbSwgKHVuc2lnbmVkKWxlbmd0aCldOwot
fQotCi0tICh2b2lkKWFkZENvbG9yQXR0cmlidXRlOihOU1N0cmluZyAqKWF0dHJOYW1lIHJlZDoo
ZmxvYXQpcmVkIGdyZWVuOihmbG9hdClncmVlbiBibHVlOihmbG9hdClibHVlIGFscGhhOihmbG9h
dClhbHBoYQotewotICAgIFtzZWxmIGFkZEF0dHJpYnV0ZTphdHRyTmFtZSB2YWx1ZTpbTlNDb2xv
ciBjb2xvcldpdGhEZXZpY2VSZWQ6cmVkIGdyZWVuOmdyZWVuIGJsdWU6Ymx1ZSBhbHBoYTphbHBo
YV0gcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3NlbGYgbGVuZ3RoXSldOwotfQotCi0tICh2b2lkKWFk
ZENvbG9yQXR0cmlidXRlOihOU1N0cmluZyAqKWF0dHJOYW1lIHJlZDooZmxvYXQpcmVkIGdyZWVu
OihmbG9hdClncmVlbiBibHVlOihmbG9hdClibHVlIGFscGhhOihmbG9hdClhbHBoYSBmcm9tOihp
bnQpZnJvbSBsZW5ndGg6KGludClsZW5ndGgKLXsKLSAgICBbc2VsZiBhZGRBdHRyaWJ1dGU6YXR0
ck5hbWUgdmFsdWU6W05TQ29sb3IgY29sb3JXaXRoRGV2aWNlUmVkOnJlZCBncmVlbjpncmVlbiBi
bHVlOmJsdWUgYWxwaGE6YWxwaGFdIHJhbmdlOk5TTWFrZVJhbmdlKCh1bnNpZ25lZClmcm9tLCAo
dW5zaWduZWQpbGVuZ3RoKV07Ci19Ci0KLS0gKHZvaWQpYWRkRm9udEF0dHJpYnV0ZTooTlNTdHJp
bmcgKilhdHRyTmFtZSBmb250TmFtZTooTlNTdHJpbmcgKilmb250TmFtZSBzaXplOihmbG9hdClm
b250U2l6ZQotewotICAgIFtzZWxmIGFkZEF0dHJpYnV0ZTphdHRyTmFtZSB2YWx1ZTpbTlNGb250
IGZvbnRXaXRoTmFtZTpmb250TmFtZSBzaXplOmZvbnRTaXplXSByYW5nZTpOU01ha2VSYW5nZSgw
LCBbc2VsZiBsZW5ndGhdKV07Ci19Ci0KLS0gKHZvaWQpYWRkRm9udEF0dHJpYnV0ZTooTlNTdHJp
bmcgKilhdHRyTmFtZSBmb250TmFtZTooTlNTdHJpbmcgKilmb250TmFtZSBzaXplOihmbG9hdClm
b250U2l6ZSBmcm9tOihpbnQpZnJvbSBsZW5ndGg6KGludClsZW5ndGgKLXsKLSAgICBbc2VsZiBh
ZGRBdHRyaWJ1dGU6YXR0ck5hbWUgdmFsdWU6W05TRm9udCBmb250V2l0aE5hbWU6Zm9udE5hbWUg
c2l6ZTpmb250U2l6ZV0gcmFuZ2U6TlNNYWtlUmFuZ2UoKHVuc2lnbmVkKWZyb20sICh1bnNpZ25l
ZClsZW5ndGgpXTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gVGV4dElucHV0Q29udHJv
bGxlcgotCi0rIChCT09MKWlzU2VsZWN0b3JFeGNsdWRlZEZyb21XZWJTY3JpcHQ6KFNFTClhU2Vs
ZWN0b3IKLXsKLSAgICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihpbnNlcnRUZXh0OikKLSAg
ICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoZG9Db21tYW5kOikKLSAgICAgICAg
ICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3Ioc2V0TWFya2VkVGV4dDpzZWxlY3RlZEZyb206
bGVuZ3RoOikKLSAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IodW5tYXJrVGV4
dCkKLSAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoaGFzTWFya2VkVGV4dCkK
LSAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoY29udmVyc2F0aW9uSWRlbnRp
ZmllcikKLSAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3Ioc3Vic3RyaW5nRnJv
bTpsZW5ndGg6KQotICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihhdHRyaWJ1
dGVkU3Vic3RyaW5nRnJvbTpsZW5ndGg6KQotICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBz
ZWxlY3RvcihsZWdhY3lBdHRyaWJ1dGVkU3RyaW5nOikKLSAgICAgICAgICAgIHx8IGFTZWxlY3Rv
ciA9PSBAc2VsZWN0b3IobWFya2VkUmFuZ2UpCi0gICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0g
QHNlbGVjdG9yKHNlbGVjdGVkUmFuZ2UpCi0gICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNl
bGVjdG9yKGZpcnN0UmVjdEZvckNoYXJhY3RlcnNGcm9tOmxlbmd0aDopCi0gICAgICAgICAgICB8
fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGNoYXJhY3RlckluZGV4Rm9yUG9pbnRYOlk6KQotICAg
ICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3Rvcih2YWxpZEF0dHJpYnV0ZXNGb3JNYXJr
ZWRUZXh0KQotICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihhdHRyaWJ1dGVk
U3RyaW5nV2l0aFN0cmluZzopCi0gICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9y
KHNldElucHV0TWV0aG9kSGFuZGxlcjopCi0gICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNl
bGVjdG9yKGRpY3RhdGVkU3RyaW5nV2l0aFByaW1hcnlTdHJpbmc6YWx0ZXJuYXRpdmU6YWx0ZXJu
YXRpdmVPZmZzZXQ6YWx0ZXJuYXRpdmVMZW5ndGg6KQotICAgICAgICAgICAgfHwgYVNlbGVjdG9y
ID09IEBzZWxlY3RvcihzdHJpbmdXaXRoVW5kb0dyb3VwaW5nSW5zZXJ0aW9uOikpCi0gICAgICAg
IHJldHVybiBOTzsKLSAgICByZXR1cm4gWUVTOwotfQotCi0rIChOU1N0cmluZyAqKXdlYlNjcmlw
dE5hbWVGb3JTZWxlY3RvcjooU0VMKWFTZWxlY3RvcgotewotICAgIGlmIChhU2VsZWN0b3IgPT0g
QHNlbGVjdG9yKGluc2VydFRleHQ6KSkKLSAgICAgICAgcmV0dXJuIEAiaW5zZXJ0VGV4dCI7Ci0g
ICAgZWxzZSBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3Rvcihkb0NvbW1hbmQ6KSkKLSAgICAgICAg
cmV0dXJuIEAiZG9Db21tYW5kIjsKLSAgICBlbHNlIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9y
KHNldE1hcmtlZFRleHQ6c2VsZWN0ZWRGcm9tOmxlbmd0aDopKQotICAgICAgICByZXR1cm4gQCJz
ZXRNYXJrZWRUZXh0IjsKLSAgICBlbHNlIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHN1YnN0
cmluZ0Zyb206bGVuZ3RoOikpCi0gICAgICAgIHJldHVybiBAInN1YnN0cmluZ0Zyb21SYW5nZSI7
Ci0gICAgZWxzZSBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihhdHRyaWJ1dGVkU3Vic3RyaW5n
RnJvbTpsZW5ndGg6KSkKLSAgICAgICAgcmV0dXJuIEAiYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21S
YW5nZSI7Ci0gICAgZWxzZSBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihsZWdhY3lBdHRyaWJ1
dGVkU3RyaW5nOikpCi0gICAgICAgIHJldHVybiBAImxlZ2FjeUF0dHJpYnV0ZWRTdHJpbmciOwot
ICAgIGVsc2UgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoZmlyc3RSZWN0Rm9yQ2hhcmFjdGVy
c0Zyb206bGVuZ3RoOikpCi0gICAgICAgIHJldHVybiBAImZpcnN0UmVjdEZvckNoYXJhY3RlclJh
bmdlIjsKLSAgICBlbHNlIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGNoYXJhY3RlckluZGV4
Rm9yUG9pbnRYOlk6KSkKLSAgICAgICAgcmV0dXJuIEAiY2hhcmFjdGVySW5kZXhGb3JQb2ludCI7
Ci0gICAgZWxzZSBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihhdHRyaWJ1dGVkU3RyaW5nV2l0
aFN0cmluZzopKQotICAgICAgICByZXR1cm4gQCJtYWtlQXR0cmlidXRlZFN0cmluZyI7IC8vIGp1
c3QgYSBmYWN0b3J5IG1ldGhvZCwgZG9lc24ndCBjYWxsIGludG8gTlNUZXh0SW5wdXQKLSAgICBl
bHNlIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHNldElucHV0TWV0aG9kSGFuZGxlcjopKQot
ICAgICAgICByZXR1cm4gQCJzZXRJbnB1dE1ldGhvZEhhbmRsZXIiOwotICAgIGVsc2UgaWYgKGFT
ZWxlY3RvciA9PSBAc2VsZWN0b3IoZGljdGF0ZWRTdHJpbmdXaXRoUHJpbWFyeVN0cmluZzphbHRl
cm5hdGl2ZTphbHRlcm5hdGl2ZU9mZnNldDphbHRlcm5hdGl2ZUxlbmd0aDopKQotICAgICAgICBy
ZXR1cm4gQCJtYWtlRGljdGF0ZWRTdHJpbmciOwotICAgIGVsc2UgaWYgKGFTZWxlY3RvciA9PSBA
c2VsZWN0b3Ioc3RyaW5nV2l0aFVuZG9Hcm91cGluZ0luc2VydGlvbjopKQotICAgICAgICByZXR1
cm4gQCJtYWtlVW5kb0dyb3VwaW5nSW5zZXJ0aW9uU3RyaW5nIjsKLQotICAgIHJldHVybiBuaWw7
Ci19Ci0KLS0gKGlkKWluaXRXaXRoV2ViVmlldzooV2ViVmlldyAqKXd2Ci17Ci0gICAgc2VsZiA9
IFtzdXBlciBpbml0XTsKLSAgICB3ZWJWaWV3ID0gd3Y7Ci0gICAgaW5wdXRNZXRob2RWaWV3ID0g
bmlsOwotICAgIGlucHV0TWV0aG9kSGFuZGxlciA9IG5pbDsKLSAgICByZXR1cm4gc2VsZjsKLX0K
LQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW2lucHV0TWV0aG9kSGFuZGxlciByZWxlYXNlXTsK
LSAgICBpbnB1dE1ldGhvZEhhbmRsZXIgPSBuaWw7Ci0gICAgCi0gICAgW3N1cGVyIGRlYWxsb2Nd
OwotfQotCi0tIChOU09iamVjdCA8TlNUZXh0SW5wdXQ+ICopdGV4dElucHV0Ci17Ci0gICAgTlNW
aWV3IDxOU1RleHRJbnB1dD4gKnZpZXcgPSBpbnB1dE1ldGhvZFZpZXcgPyBpbnB1dE1ldGhvZFZp
ZXcgOiAoaWQpW1tbd2ViVmlldyBtYWluRnJhbWVdIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XTsK
LSAgICByZXR1cm4gW3ZpZXcgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChOU1RleHRJbnB1
dCldID8gdmlldyA6IG5pbDsKLX0KLQotLSAodm9pZClpbnNlcnRUZXh0OihpZClhU3RyaW5nCi17
Ci0gICAgTlNPYmplY3QgPE5TVGV4dElucHV0PiAqdGV4dElucHV0ID0gW3NlbGYgdGV4dElucHV0
XTsKLQotICAgIGlmICh0ZXh0SW5wdXQpCi0gICAgICAgIFt0ZXh0SW5wdXQgaW5zZXJ0VGV4dDph
U3RyaW5nXTsKLX0KLQotLSAodm9pZClkb0NvbW1hbmQ6KE5TU3RyaW5nICopYUNvbW1hbmQKLXsK
LSAgICBOU09iamVjdCA8TlNUZXh0SW5wdXQ+ICp0ZXh0SW5wdXQgPSBbc2VsZiB0ZXh0SW5wdXRd
OwotCi0gICAgaWYgKHRleHRJbnB1dCkKLSAgICAgICAgW3RleHRJbnB1dCBkb0NvbW1hbmRCeVNl
bGVjdG9yOk5TU2VsZWN0b3JGcm9tU3RyaW5nKGFDb21tYW5kKV07Ci19Ci0KLS0gKHZvaWQpc2V0
TWFya2VkVGV4dDooTlNTdHJpbmcgKilhU3RyaW5nIHNlbGVjdGVkRnJvbTooaW50KWZyb20gbGVu
Z3RoOihpbnQpbGVuZ3RoCi17Ci0gICAgTlNPYmplY3QgPE5TVGV4dElucHV0PiAqdGV4dElucHV0
ID0gW3NlbGYgdGV4dElucHV0XTsKLSAKLSAgICBpZiAodGV4dElucHV0KQotICAgICAgICBbdGV4
dElucHV0IHNldE1hcmtlZFRleHQ6YVN0cmluZyBzZWxlY3RlZFJhbmdlOk5TTWFrZVJhbmdlKGZy
b20sIGxlbmd0aCldOwotfQotCi0tICh2b2lkKXVubWFya1RleHQKLXsKLSAgICBOU09iamVjdCA8
TlNUZXh0SW5wdXQ+ICp0ZXh0SW5wdXQgPSBbc2VsZiB0ZXh0SW5wdXRdOwotCi0gICAgaWYgKHRl
eHRJbnB1dCkKLSAgICAgICAgW3RleHRJbnB1dCB1bm1hcmtUZXh0XTsKLX0KLQotLSAoQk9PTClo
YXNNYXJrZWRUZXh0Ci17Ci0gICAgTlNPYmplY3QgPE5TVGV4dElucHV0PiAqdGV4dElucHV0ID0g
W3NlbGYgdGV4dElucHV0XTsKLQotICAgIGlmICh0ZXh0SW5wdXQpCi0gICAgICAgIHJldHVybiBb
dGV4dElucHV0IGhhc01hcmtlZFRleHRdOwotCi0gICAgcmV0dXJuIEZBTFNFOwotfQotCi0tIChs
b25nKWNvbnZlcnNhdGlvbklkZW50aWZpZXIKLXsKLSAgICBOU09iamVjdCA8TlNUZXh0SW5wdXQ+
ICp0ZXh0SW5wdXQgPSBbc2VsZiB0ZXh0SW5wdXRdOwotCi0gICAgaWYgKHRleHRJbnB1dCkKLSAg
ICAgICAgcmV0dXJuIFt0ZXh0SW5wdXQgY29udmVyc2F0aW9uSWRlbnRpZmllcl07Ci0KLSAgICBy
ZXR1cm4gMDsKLX0KLQotLSAoTlNTdHJpbmcgKilzdWJzdHJpbmdGcm9tOihpbnQpZnJvbSBsZW5n
dGg6KGludClsZW5ndGgKLXsKLSAgICBOU09iamVjdCA8TlNUZXh0SW5wdXQ+ICp0ZXh0SW5wdXQg
PSBbc2VsZiB0ZXh0SW5wdXRdOwotCi0gICAgaWYgKHRleHRJbnB1dCkKLSAgICAgICAgcmV0dXJu
IFtbdGV4dElucHV0IGF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoZnJv
bSwgbGVuZ3RoKV0gc3RyaW5nXTsKLSAgICAKLSAgICByZXR1cm4gQCIiOwotfQotCi0tIChOU011
dGFibGVBdHRyaWJ1dGVkU3RyaW5nICopYXR0cmlidXRlZFN1YnN0cmluZ0Zyb206KGludClmcm9t
IGxlbmd0aDooaW50KWxlbmd0aAotewotICAgIE5TT2JqZWN0IDxOU1RleHRJbnB1dD4gKnRleHRJ
bnB1dCA9IFtzZWxmIHRleHRJbnB1dF07Ci0KLSAgICBOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5n
ICpyZXQgPSBbW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0XSBhdXRvcmVs
ZWFzZV07Ci0KLSAgICBpZiAodGV4dElucHV0KQotICAgICAgICBbcmV0IHNldEF0dHJpYnV0ZWRT
dHJpbmc6W3RleHRJbnB1dCBhdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlOk5TTWFrZVJhbmdl
KGZyb20sIGxlbmd0aCldXTsKLSAgICAKLSAgICByZXR1cm4gcmV0OwotfQotCi0tIChOU011dGFi
bGVBdHRyaWJ1dGVkU3RyaW5nICopbGVnYWN5QXR0cmlidXRlZFN0cmluZzooRE9NUmFuZ2UqKXJh
bmdlCi17Ci0gICAgTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nID0gW1tbTlNNdXRh
YmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgIGlkIGRv
Y3VtZW50VmlldyA9IFtbW3dlYlZpZXcgbWFpbkZyYW1lXSBmcmFtZVZpZXddIGRvY3VtZW50Vmll
d107Ci0gICAgaWYgKCFbZG9jdW1lbnRWaWV3IGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNs
YXNzXV0pCi0gICAgICAgIHJldHVybiBzdHJpbmc7Ci0KLSAgICBbc3RyaW5nIHNldEF0dHJpYnV0
ZWRTdHJpbmc6WyhXZWJIVE1MVmlldyAqKWRvY3VtZW50VmlldyBfYXR0cmlidXRlU3RyaW5nRnJv
bURPTVJhbmdlOnJhbmdlXV07Ci0gICAgcmV0dXJuIHN0cmluZzsKLX0KLQotLSAoTlNBcnJheSAq
KW1hcmtlZFJhbmdlCi17Ci0gICAgTlNPYmplY3QgPE5TVGV4dElucHV0PiAqdGV4dElucHV0ID0g
W3NlbGYgdGV4dElucHV0XTsKLQotICAgIGlmICh0ZXh0SW5wdXQpIHsKLSAgICAgICAgTlNSYW5n
ZSByYW5nZSA9IFt0ZXh0SW5wdXQgbWFya2VkUmFuZ2VdOwotICAgICAgICByZXR1cm4gW05TQXJy
YXkgYXJyYXlXaXRoT2JqZWN0czpbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OnJhbmdl
LmxvY2F0aW9uXSwgW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDpyYW5nZS5sZW5ndGhd
LCBuaWxdOwotICAgIH0KLQotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKE5TQXJyYXkgKilzZWxl
Y3RlZFJhbmdlCi17Ci0gICAgTlNPYmplY3QgPE5TVGV4dElucHV0PiAqdGV4dElucHV0ID0gW3Nl
bGYgdGV4dElucHV0XTsKLQotICAgIGlmICh0ZXh0SW5wdXQpIHsKLSAgICAgICAgTlNSYW5nZSBy
YW5nZSA9IFt0ZXh0SW5wdXQgc2VsZWN0ZWRSYW5nZV07Ci0gICAgICAgIHJldHVybiBbTlNBcnJh
eSBhcnJheVdpdGhPYmplY3RzOltOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6cmFuZ2Uu
bG9jYXRpb25dLCBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OnJhbmdlLmxlbmd0aF0s
IG5pbF07Ci0gICAgfQotCi0gICAgcmV0dXJuIG5pbDsKLX0KLSAgCi0KLS0gKE5TQXJyYXkgKilm
aXJzdFJlY3RGb3JDaGFyYWN0ZXJzRnJvbTooaW50KWZyb20gbGVuZ3RoOihpbnQpbGVuZ3RoCi17
Ci0gICAgTlNPYmplY3QgPE5TVGV4dElucHV0PiAqdGV4dElucHV0ID0gW3NlbGYgdGV4dElucHV0
XTsKLQotICAgIGlmICh0ZXh0SW5wdXQpIHsKLSAgICAgICAgTlNSZWN0IHJlY3QgPSBbdGV4dElu
cHV0IGZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlOk5TTWFrZVJhbmdlKGZyb20sIGxlbmd0aCld
OwotICAgICAgICBpZiAocmVjdC5vcmlnaW4ueCB8fCByZWN0Lm9yaWdpbi55IHx8IHJlY3Quc2l6
ZS53aWR0aCB8fCByZWN0LnNpemUuaGVpZ2h0KSB7Ci0gICAgICAgICAgICByZWN0Lm9yaWdpbiA9
IFtbd2ViVmlldyB3aW5kb3ddIGNvbnZlcnRTY3JlZW5Ub0Jhc2U6cmVjdC5vcmlnaW5dOwotICAg
ICAgICAgICAgcmVjdCA9IFt3ZWJWaWV3IGNvbnZlcnRSZWN0OnJlY3QgZnJvbVZpZXc6bmlsXTsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czoKLSAg
ICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpyZWN0Lm9yaWdpbi54
XSwKLSAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpyZWN0Lm9y
aWdpbi55XSwKLSAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpy
ZWN0LnNpemUud2lkdGhdLAotICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aEZsb2F0OnJlY3Quc2l6ZS5oZWlnaHRdLAotICAgICAgICAgICAgICAgICAgICBuaWxdOwotICAg
IH0KLQotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKE5TSW50ZWdlciljaGFyYWN0ZXJJbmRleEZv
clBvaW50WDooZmxvYXQpeCBZOihmbG9hdCl5Ci17Ci0gICAgTlNPYmplY3QgPE5TVGV4dElucHV0
PiAqdGV4dElucHV0ID0gW3NlbGYgdGV4dElucHV0XTsKLQotICAgIGlmICh0ZXh0SW5wdXQpIHsK
LSAgICAgICAgTlNQb2ludCBwb2ludCA9IE5TTWFrZVBvaW50KHgsIHkpOwotICAgICAgICBwb2lu
dCA9IFt3ZWJWaWV3IGNvbnZlcnRQb2ludDpwb2ludCB0b1ZpZXc6bmlsXTsKLSAgICAgICAgcG9p
bnQgPSBbW3dlYlZpZXcgd2luZG93XSBjb252ZXJ0QmFzZVRvU2NyZWVuOnBvaW50XTsKLSAgICAg
ICAgTlNJbnRlZ2VyIGluZGV4ID0gW3RleHRJbnB1dCBjaGFyYWN0ZXJJbmRleEZvclBvaW50OnBv
aW50XTsKLSAgICAgICAgaWYgKGluZGV4ID09IE5TTm90Rm91bmQpCi0gICAgICAgICAgICByZXR1
cm4gLTE7Ci0KLSAgICAgICAgcmV0dXJuIGluZGV4OwotICAgIH0KLQotICAgIHJldHVybiAwOwot
fQotCi0tIChOU0FycmF5ICopdmFsaWRBdHRyaWJ1dGVzRm9yTWFya2VkVGV4dAotewotICAgIE5T
T2JqZWN0IDxOU1RleHRJbnB1dD4gKnRleHRJbnB1dCA9IFtzZWxmIHRleHRJbnB1dF07Ci0KLSAg
ICBpZiAodGV4dElucHV0KQotICAgICAgICByZXR1cm4gW3RleHRJbnB1dCB2YWxpZEF0dHJpYnV0
ZXNGb3JNYXJrZWRUZXh0XTsKLQotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKE5TTXV0YWJsZUF0
dHJpYnV0ZWRTdHJpbmcgKilhdHRyaWJ1dGVkU3RyaW5nV2l0aFN0cmluZzooTlNTdHJpbmcgKilh
U3RyaW5nCi17Ci0gICAgcmV0dXJuIFtbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoU3RyaW5nOmFTdHJpbmddIGF1dG9yZWxlYXNlXTsKLX0KLQotLSAoTlNNdXRhYmxl
QXR0cmlidXRlZFN0cmluZyopc3RyaW5nV2l0aFVuZG9Hcm91cGluZ0luc2VydGlvbjooTlNTdHJp
bmcqKWFTdHJpbmcKLXsKLSNpZiBkZWZpbmVkKFNVUFBPUlRfSU5TRVJUSU9OX1VORE9fR1JPVVBJ
TkcpCi0gICAgTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0cmlidXRlZFN0cmluZyA9IFtz
ZWxmIGRpY3RhdGVkU3RyaW5nV2l0aFByaW1hcnlTdHJpbmc6YVN0cmluZyBhbHRlcm5hdGl2ZTpA
InRlc3QiIGFsdGVybmF0aXZlT2Zmc2V0OjAgYWx0ZXJuYXRpdmVMZW5ndGg6MV07Ci0gICAgW2F0
dHJpYnV0ZWRTdHJpbmcgYWRkQXR0cmlidXRlOk5TVGV4dEluc2VydGlvblVuZG9hYmxlQXR0cmli
dXRlTmFtZSB2YWx1ZTpAWUVTIHJhbmdlOk5TTWFrZVJhbmdlKDAsIFthdHRyaWJ1dGVkU3RyaW5n
IGxlbmd0aF0pXTsKLSAgICByZXR1cm4gYXR0cmlidXRlZFN0cmluZzsKLSNlbHNlCi0gICAgcmV0
dXJuIG5pbDsKLSNlbmRpZgotfQotCi0tIChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKilkaWN0
YXRlZFN0cmluZ1dpdGhQcmltYXJ5U3RyaW5nOihOU1N0cmluZyopYVN0cmluZyBhbHRlcm5hdGl2
ZTooTlNTdHJpbmcqKWFsdGVybmF0aXZlIGFsdGVybmF0aXZlT2Zmc2V0OihpbnQpb2Zmc2V0IGFs
dGVybmF0aXZlTGVuZ3RoOihpbnQpbGVuZ3RoCi17Ci0gICAgTlNNdXRhYmxlQXR0cmlidXRlZFN0
cmluZyogZGljdGF0ZWRTdHJpbmcgPSBbc2VsZiBhdHRyaWJ1dGVkU3RyaW5nV2l0aFN0cmluZzph
U3RyaW5nXTsKLSAgICBOU1JhbmdlIHJhbmdlV2l0aEFsdGVybmF0aXZlID0gTlNNYWtlUmFuZ2Uo
KE5TVUludGVnZXIpb2Zmc2V0LCAoTlNVSW50ZWdlcilsZW5ndGgpOwotICAgIE5TU3RyaW5nKiBz
dWJTdHJpbmdXaXRoQWx0ZXJuYXRpdmUgPSBbYVN0cmluZyBzdWJzdHJpbmdXaXRoUmFuZ2U6cmFu
Z2VXaXRoQWx0ZXJuYXRpdmVdOwotICAgIGlmICghc3ViU3RyaW5nV2l0aEFsdGVybmF0aXZlKQot
ICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbHRlcm5hdGl2
ZU9iamVjdCA9IFtbW05TVGV4dEFsdGVybmF0aXZlcyBhbGxvY10gaW5pdFdpdGhQcmltYXJ5U3Ry
aW5nOnN1YlN0cmluZ1dpdGhBbHRlcm5hdGl2ZSBhbHRlcm5hdGl2ZVN0cmluZ3M6W05TQXJyYXkg
YXJyYXlXaXRoT2JqZWN0OmFsdGVybmF0aXZlXV0gYXV0b3JlbGVhc2VdOwotICAgIGlmICghYWx0
ZXJuYXRpdmVPYmplY3QpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBbZGljdGF0ZWRTdHJp
bmcgYWRkQXR0cmlidXRlOk5TVGV4dEFsdGVybmF0aXZlc0F0dHJpYnV0ZU5hbWUgdmFsdWU6YWx0
ZXJuYXRpdmVPYmplY3QgcmFuZ2U6cmFuZ2VXaXRoQWx0ZXJuYXRpdmVdOwotCi0gICAgcmV0dXJu
IGRpY3RhdGVkU3RyaW5nOwotfQotCi0tICh2b2lkKXNldElucHV0TWV0aG9kSGFuZGxlcjooV2Vi
U2NyaXB0T2JqZWN0ICopaGFuZGxlcgotewotICAgIGlmIChpbnB1dE1ldGhvZEhhbmRsZXIgPT0g
aGFuZGxlcikKLSAgICAgICAgcmV0dXJuOwotICAgIFtoYW5kbGVyIHJldGFpbl07Ci0gICAgW2lu
cHV0TWV0aG9kSGFuZGxlciByZWxlYXNlXTsKLSAgICBpbnB1dE1ldGhvZEhhbmRsZXIgPSBoYW5k
bGVyOwotfQotCi0tIChCT09MKWludGVycHJldEtleUV2ZW50czooTlNBcnJheSAqKWV2ZW50QXJy
YXkgd2l0aFNlbmRlcjooV2ViSFRNTFZpZXcgKilzZW5kZXIKLXsKLSAgICBpZiAoIWlucHV0TWV0
aG9kSGFuZGxlcikKLSAgICAgICAgcmV0dXJuIE5POwotICAgIAotICAgIGlucHV0TWV0aG9kVmll
dyA9IHNlbmRlcjsKLSAgICAKLSAgICBOU0V2ZW50ICpldmVudCA9IFtldmVudEFycmF5IG9iamVj
dEF0SW5kZXg6MF07Ci0gICAgdW5zaWduZWQgbW9kaWZpZXJGbGFncyA9IFtldmVudCBtb2RpZmll
ckZsYWdzXTsgCi0gICAgTlNNdXRhYmxlQXJyYXkgKm1vZGlmaWVycyA9IFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRdOwotICAgIGlmIChtb2RpZmllckZsYWdzICYgTlNBbHBoYVNoaWZ0S2V5
TWFzaykKLSAgICAgICAgW21vZGlmaWVycyBhZGRPYmplY3Q6QCJOU0FscGhhU2hpZnRLZXlNYXNr
Il07Ci0gICAgaWYgKG1vZGlmaWVyRmxhZ3MgJiBOU1NoaWZ0S2V5TWFzaykKLSAgICAgICAgW21v
ZGlmaWVycyBhZGRPYmplY3Q6QCJOU1NoaWZ0S2V5TWFzayJdOwotICAgIGlmIChtb2RpZmllckZs
YWdzICYgTlNDb250cm9sS2V5TWFzaykKLSAgICAgICAgW21vZGlmaWVycyBhZGRPYmplY3Q6QCJO
U0NvbnRyb2xLZXlNYXNrIl07Ci0gICAgaWYgKG1vZGlmaWVyRmxhZ3MgJiBOU0FsdGVybmF0ZUtl
eU1hc2spCi0gICAgICAgIFttb2RpZmllcnMgYWRkT2JqZWN0OkAiTlNBbHRlcm5hdGVLZXlNYXNr
Il07Ci0gICAgaWYgKG1vZGlmaWVyRmxhZ3MgJiBOU0NvbW1hbmRLZXlNYXNrKQotICAgICAgICBb
bW9kaWZpZXJzIGFkZE9iamVjdDpAIk5TQ29tbWFuZEtleU1hc2siXTsKLSAgICBpZiAobW9kaWZp
ZXJGbGFncyAmIE5TTnVtZXJpY1BhZEtleU1hc2spCi0gICAgICAgIFttb2RpZmllcnMgYWRkT2Jq
ZWN0OkAiTlNOdW1lcmljUGFkS2V5TWFzayJdOwotICAgIGlmIChtb2RpZmllckZsYWdzICYgTlNI
ZWxwS2V5TWFzaykKLSAgICAgICAgW21vZGlmaWVycyBhZGRPYmplY3Q6QCJOU0hlbHBLZXlNYXNr
Il07Ci0gICAgaWYgKG1vZGlmaWVyRmxhZ3MgJiBOU0Z1bmN0aW9uS2V5TWFzaykKLSAgICAgICAg
W21vZGlmaWVycyBhZGRPYmplY3Q6QCJOU0Z1bmN0aW9uS2V5TWFzayJdOwotICAgIAotICAgIFdl
YlNjcmlwdE9iamVjdCogZXZlbnRQYXJhbSA9IFtpbnB1dE1ldGhvZEhhbmRsZXIgZXZhbHVhdGVX
ZWJTY3JpcHQ6QCJuZXcgT2JqZWN0KCk7Il07Ci0gICAgW2V2ZW50UGFyYW0gc2V0VmFsdWU6W2V2
ZW50IGNoYXJhY3RlcnNdIGZvcktleTpAImNoYXJhY3RlcnMiXTsKLSAgICBbZXZlbnRQYXJhbSBz
ZXRWYWx1ZTpbZXZlbnQgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzXSBmb3JLZXk6QCJjaGFy
YWN0ZXJzSWdub3JpbmdNb2RpZmllcnMiXTsKLSAgICBbZXZlbnRQYXJhbSBzZXRWYWx1ZTpbTlNO
dW1iZXIgbnVtYmVyV2l0aEJvb2w6W2V2ZW50IGlzQVJlcGVhdF1dIGZvcktleTpAImlzQVJlcGVh
dCJdOwotICAgIFtldmVudFBhcmFtIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoVW5zaWdu
ZWRTaG9ydDpbZXZlbnQga2V5Q29kZV1dIGZvcktleTpAImtleUNvZGUiXTsKLSAgICBbZXZlbnRQ
YXJhbSBzZXRWYWx1ZTptb2RpZmllcnMgZm9yS2V5OkAibW9kaWZpZXJGbGFncyJdOwotCi0gICAg
W21vZGlmaWVycyByZWxlYXNlXTsKLSAgICAKLSAgICBpZCByZXN1bHQgPSBbaW5wdXRNZXRob2RI
YW5kbGVyIGNhbGxXZWJTY3JpcHRNZXRob2Q6QCJjYWxsIiB3aXRoQXJndW1lbnRzOltOU0FycmF5
IGFycmF5V2l0aE9iamVjdHM6aW5wdXRNZXRob2RIYW5kbGVyLCBldmVudFBhcmFtLCBuaWxdXTsK
LSAgICBpZiAoIVtyZXN1bHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihib29sVmFsdWUp
XSB8fCAhW3Jlc3VsdCBib29sVmFsdWVdKSB7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVz
aAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5kZWNsYXJlZC1zZWxlY3Rv
ciIKLSAgICAgICAgW3NlbmRlciBkb0NvbW1hbmRCeVNlbGVjdG9yOkBzZWxlY3Rvcihub29wOild
OyAvLyBBcHBLaXQgc2VuZHMgbm9vcDogaWYgdGhlIGltZSBkb2VzIG5vdCBoYW5kbGUgYW4gZXZl
bnQKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSAgICB9Ci0KLSAgICBpbnB1dE1ldGhv
ZFZpZXcgPSBuaWw7Ci0gICAgcmV0dXJuIFlFUzsKLX0KLQotQGVuZAotCi0jZW5kaWYgLy8gIVBM
QVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXh0SW5w
dXRDb250cm9sbGVyLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1RleHRJbnB1dENvbnRy
b2xsZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzkxMGRmNwotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXh0SW5wdXRDb250cm9s
bGVyLm1tCkBAIC0wLDAgKzEsNTU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA3
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlRl
eHRJbnB1dENvbnRyb2xsZXIuaCIKKworI2lmIFBMQVRGT1JNKE1BQykKKy8vIEZJWE1FOiA8cmRh
cjovL3Byb2JsZW0vNTEwNjI4Nz4gRHVtcFJlbmRlclRyZWU6IGZpeCBUZXh0SW5wdXRDb250cm9s
bGVyIHRvIHdvcmsgd2l0aCBpT1MgYW5kIHJlLWVuYWJsZSB0ZXN0cworCisjaW1wb3J0ICJEdW1w
UmVuZGVyVHJlZU1hYy5oIgorI2ltcG9ydCA8QXBwS2l0L05TSW5wdXRNYW5hZ2VyLmg+CisjaW1w
b3J0IDxBcHBLaXQvTlNUZXh0QWx0ZXJuYXRpdmVzLmg+CisKKyNpZiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMTAwMAorI2RlZmluZSBTVVBQT1JUX0lOU0VSVElPTl9VTkRP
X0dST1VQSU5HCisjaWYgX19oYXNfaW5jbHVkZSg8QXBwS2l0L05TVGV4dElucHV0Q29udGV4dF9Q
cml2YXRlLmg+KQorI2ltcG9ydCA8QXBwS2l0L05TVGV4dElucHV0Q29udGV4dF9Qcml2YXRlLmg+
CisjZWxzZQorTlNTdHJpbmcgKk5TVGV4dEluc2VydGlvblVuZG9hYmxlQXR0cmlidXRlTmFtZTsK
KyNlbmRpZgorI2VuZGlmCisKKyNpbXBvcnQgPFdlYkNvcmUvTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1
ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYkRvY3VtZW50Lmg+CisjaW1wb3J0IDxXZWJLaXQvV2Vi
RnJhbWUuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJGcmFtZVByaXZhdGUuaD4KKyNpbXBvcnQgPFdl
YktpdC9XZWJGcmFtZVZpZXcuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJIVE1MVmlld1ByaXZhdGUu
aD4KKyNpbXBvcnQgPFdlYktpdC9XZWJTY3JpcHRPYmplY3QuaD4KKyNpbXBvcnQgPFdlYktpdC9X
ZWJUeXBlc0ludGVybmFsLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViVmlldy5oPgorCitAaW50ZXJm
YWNlIFRleHRJbnB1dENvbnRyb2xsZXIgKER1bXBSZW5kZXJUcmVlSW5wdXRNZXRob2RIYW5kbGVy
KQorLSAoQk9PTClpbnRlcnByZXRLZXlFdmVudHM6KE5TQXJyYXkgKilldmVudEFycmF5IHdpdGhT
ZW5kZXI6KFdlYkhUTUxWaWV3ICopc2VuZGVyOworQGVuZAorCitAaW50ZXJmYWNlIFdlYkhUTUxW
aWV3IChEdW1wUmVuZGVyVHJlZUlucHV0TWV0aG9kSGFuZGxlcikKKy0gKHZvaWQpaW50ZXJwcmV0
S2V5RXZlbnRzOihOU0FycmF5ICopZXZlbnRBcnJheTsKK0BlbmQKKworQGludGVyZmFjZSBXZWJI
VE1MVmlldyAoV2ViS2l0U2VjcmV0c1RleHRJbnB1dENvbnRyb2xsZXJJc0F3YXJlT2YpCistIChX
ZWJGcmFtZSAqKV9mcmFtZTsKKy0gKE5TQXR0cmlidXRlZFN0cmluZyAqKV9hdHRyaWJ1dGVTdHJp
bmdGcm9tRE9NUmFuZ2U6KERPTVJhbmdlICopcmFuZ2U7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlv
biBXZWJIVE1MVmlldyAoRHVtcFJlbmRlclRyZWVJbnB1dE1ldGhvZEhhbmRsZXIpCistICh2b2lk
KWludGVycHJldEtleUV2ZW50czooTlNBcnJheSAqKWV2ZW50QXJyYXkKK3sKKyAgICBXZWJTY3Jp
cHRPYmplY3QgKm9iaiA9IFtbc2VsZiBfZnJhbWVdIHdpbmRvd09iamVjdF07CisgICAgVGV4dElu
cHV0Q29udHJvbGxlciAqdGljID0gW29iaiB2YWx1ZUZvcktleTpAInRleHRJbnB1dENvbnRyb2xs
ZXIiXTsKKyAgICBpZiAoIVt0aWMgaW50ZXJwcmV0S2V5RXZlbnRzOmV2ZW50QXJyYXkgd2l0aFNl
bmRlcjpzZWxmXSkKKyAgICAgICAgW3N1cGVyIGludGVycHJldEtleUV2ZW50czpldmVudEFycmF5
XTsKK30KK0BlbmQKKworQGludGVyZmFjZSBXZWJOU1JhbmdlIDogTlNPYmplY3QgeworQHByaXZh
dGUKKyAgICBOU1JhbmdlIF9yYW5nZTsKK30KKy0gKGlkKWluaXRXaXRoTlNSYW5nZTooTlNSYW5n
ZSlyYW5nZTsKKy0gKHVuc2lnbmVkKWxvY2F0aW9uOworLSAodW5zaWduZWQpbGVuZ3RoOworQGVu
ZAorCitAaW1wbGVtZW50YXRpb24gV2ViTlNSYW5nZQorCistIChpZClpbml0V2l0aE5TUmFuZ2U6
KE5TUmFuZ2UpcmFuZ2UKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2Vs
ZikKKyAgICAgICAgcmV0dXJuIHNlbGY7CisKKyAgICBfcmFuZ2UgPSByYW5nZTsKKyAgICByZXR1
cm4gc2VsZjsKK30KKworLSAodW5zaWduZWQpbG9jYXRpb24KK3sKKyAgICByZXR1cm4gX3Jhbmdl
LmxvY2F0aW9uOworfQorCistICh1bnNpZ25lZClsZW5ndGgKK3sKKyAgICByZXR1cm4gX3Jhbmdl
Lmxlbmd0aDsKK30KKworKyAoQk9PTClpc1NlbGVjdG9yRXhjbHVkZWRGcm9tV2ViU2NyaXB0OihT
RUwpc2VsZWN0b3IKK3sKKyAgICByZXR1cm4gIShzZWxlY3RvciA9PSBAc2VsZWN0b3IobG9jYXRp
b24pIHx8IHNlbGVjdG9yID09IEBzZWxlY3RvcihsZW5ndGgpKTsKK30KKworQGVuZAorCitAaW1w
bGVtZW50YXRpb24gTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAoVGV4dElucHV0Q29udHJvbGxl
cikKKworKyAoQk9PTClpc1NlbGVjdG9yRXhjbHVkZWRGcm9tV2ViU2NyaXB0OihTRUwpYVNlbGVj
dG9yCit7CisgICAgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3Ioc3RyaW5nKQorICAgICAgICAg
ICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihnZXRMZW5ndGgpCisgICAgICAgICAgICB8fCBh
U2VsZWN0b3IgPT0gQHNlbGVjdG9yKHJhbmdlcykKKyAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9
PSBAc2VsZWN0b3IoYXR0cmlidXRlTmFtZXNBdEluZGV4OikKKyAgICAgICAgICAgIHx8IGFTZWxl
Y3RvciA9PSBAc2VsZWN0b3IodmFsdWVPZkF0dHJpYnV0ZTphdEluZGV4OikKKyAgICAgICAgICAg
IHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoYWRkQXR0cmlidXRlOnZhbHVlOikKKyAgICAgICAg
ICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoYWRkQXR0cmlidXRlOnZhbHVlOmZyb206bGVu
Z3RoOikKKyAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoYWRkQ29sb3JBdHRy
aWJ1dGU6cmVkOmdyZWVuOmJsdWU6YWxwaGE6KQorICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09
IEBzZWxlY3RvcihhZGRDb2xvckF0dHJpYnV0ZTpyZWQ6Z3JlZW46Ymx1ZTphbHBoYTpmcm9tOmxl
bmd0aDopCisgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGFkZEZvbnRBdHRy
aWJ1dGU6Zm9udE5hbWU6c2l6ZTopCisgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVj
dG9yKGFkZEZvbnRBdHRyaWJ1dGU6Zm9udE5hbWU6c2l6ZTpmcm9tOmxlbmd0aDopKQorICAgICAg
ICByZXR1cm4gTk87CisgICAgcmV0dXJuIFlFUzsKK30KKworKyAoTlNTdHJpbmcgKil3ZWJTY3Jp
cHROYW1lRm9yU2VsZWN0b3I6KFNFTClhU2VsZWN0b3IKK3sKKyAgICBpZiAoYVNlbGVjdG9yID09
IEBzZWxlY3RvcihnZXRMZW5ndGgpKQorICAgICAgICByZXR1cm4gQCJsZW5ndGgiOworICAgIGlm
IChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHJhbmdlcykpCisgICAgICAgIHJldHVybiBAInJhbmdl
cyI7CisgICAgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoYXR0cmlidXRlTmFtZXNBdEluZGV4
OikpCisgICAgICAgIHJldHVybiBAImdldEF0dHJpYnV0ZU5hbWVzQXRJbmRleCI7CisgICAgaWYg
KGFTZWxlY3RvciA9PSBAc2VsZWN0b3IodmFsdWVPZkF0dHJpYnV0ZTphdEluZGV4OikpCisgICAg
ICAgIHJldHVybiBAImdldEF0dHJpYnV0ZVZhbHVlQXRJbmRleCI7CisgICAgaWYgKGFTZWxlY3Rv
ciA9PSBAc2VsZWN0b3IoYWRkQXR0cmlidXRlOnZhbHVlOikpCisgICAgICAgIHJldHVybiBAImFk
ZEF0dHJpYnV0ZSI7CisgICAgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoYWRkQXR0cmlidXRl
OnZhbHVlOmZyb206bGVuZ3RoOikpCisgICAgICAgIHJldHVybiBAImFkZEF0dHJpYnV0ZUZvclJh
bmdlIjsKKyAgICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihhZGRDb2xvckF0dHJpYnV0ZTpy
ZWQ6Z3JlZW46Ymx1ZTphbHBoYTopKQorICAgICAgICByZXR1cm4gQCJhZGRDb2xvckF0dHJpYnV0
ZSI7CisgICAgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoYWRkQ29sb3JBdHRyaWJ1dGU6cmVk
OmdyZWVuOmJsdWU6YWxwaGE6ZnJvbTpsZW5ndGg6KSkKKyAgICAgICAgcmV0dXJuIEAiYWRkQ29s
b3JBdHRyaWJ1dGVGb3JSYW5nZSI7CisgICAgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoYWRk
Rm9udEF0dHJpYnV0ZTpmb250TmFtZTpzaXplOikpCisgICAgICAgIHJldHVybiBAImFkZEZvbnRB
dHRyaWJ1dGUiOworICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGFkZEZvbnRBdHRyaWJ1
dGU6Zm9udE5hbWU6c2l6ZTpmcm9tOmxlbmd0aDopKQorICAgICAgICByZXR1cm4gQCJhZGRGb250
QXR0cmlidXRlRm9yUmFuZ2UiOworCisgICAgcmV0dXJuIG5pbDsKK30KKworLSAoaW50KWdldExl
bmd0aAoreworICAgIHJldHVybiAoaW50KVtzZWxmIGxlbmd0aF07Cit9CisKKy0gKE5TQXJyYXkg
KilyYW5nZXMKK3sKKyAgICBOU011dGFibGVBcnJheSAqYXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkg
YXJyYXldOworICAgIFtzZWxmIGVudW1lcmF0ZUF0dHJpYnV0ZXNJblJhbmdlOk5TTWFrZVJhbmdl
KDAsIFtzZWxmIGxlbmd0aF0pIG9wdGlvbnM6MCB1c2luZ0Jsb2NrOl4oTlNEaWN0aW9uYXJ5ICph
dHRyaWJ1dGVzLCBOU1JhbmdlIHJhbmdlLCBCT09MICpzdG9wKSB7CisgICAgICAgIFdlYk5TUmFu
Z2UgKndlYlJhbmdlID0gW1tXZWJOU1JhbmdlIGFsbG9jXSBpbml0V2l0aE5TUmFuZ2U6cmFuZ2Vd
OworICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OndlYlJhbmdlXTsKKyAgICAgICAgW3dlYlJhbmdl
IHJlbGVhc2VdOworICAgIH1dOworICAgIHJldHVybiBhcnJheTsKK30KKworLSAoTlNBcnJheSAq
KWF0dHJpYnV0ZU5hbWVzQXRJbmRleDooaW50KWluZGV4Cit7CisgICAgTlNEaWN0aW9uYXJ5ICph
dHRyaWJ1dGVzID0gW3NlbGYgYXR0cmlidXRlc0F0SW5kZXg6KHVuc2lnbmVkKWluZGV4IGVmZmVj
dGl2ZVJhbmdlOm5pbF07CisgICAgcmV0dXJuIFthdHRyaWJ1dGVzIGFsbEtleXNdOworfQorCist
IChpZCl2YWx1ZU9mQXR0cmlidXRlOihOU1N0cmluZyAqKWF0dHJOYW1lIGF0SW5kZXg6KGludClp
bmRleAoreworICAgIHJldHVybiBbc2VsZiBhdHRyaWJ1dGU6YXR0ck5hbWUgYXRJbmRleDoodW5z
aWduZWQpaW5kZXggZWZmZWN0aXZlUmFuZ2U6bmlsXTsKK30KKworLSAodm9pZClhZGRBdHRyaWJ1
dGU6KE5TU3RyaW5nICopYXR0ck5hbWUgdmFsdWU6KGlkKXZhbHVlCit7CisgICAgW3NlbGYgYWRk
QXR0cmlidXRlOmF0dHJOYW1lIHZhbHVlOnZhbHVlIHJhbmdlOk5TTWFrZVJhbmdlKDAsIFtzZWxm
IGxlbmd0aF0pXTsKK30KKworLSAodm9pZClhZGRBdHRyaWJ1dGU6KE5TU3RyaW5nICopYXR0ck5h
bWUgdmFsdWU6KGlkKXZhbHVlIGZyb206KGludClmcm9tIGxlbmd0aDooaW50KWxlbmd0aAorewor
ICAgIFtzZWxmIGFkZEF0dHJpYnV0ZTphdHRyTmFtZSB2YWx1ZTp2YWx1ZSByYW5nZTpOU01ha2VS
YW5nZSgodW5zaWduZWQpZnJvbSwgKHVuc2lnbmVkKWxlbmd0aCldOworfQorCistICh2b2lkKWFk
ZENvbG9yQXR0cmlidXRlOihOU1N0cmluZyAqKWF0dHJOYW1lIHJlZDooZmxvYXQpcmVkIGdyZWVu
OihmbG9hdClncmVlbiBibHVlOihmbG9hdClibHVlIGFscGhhOihmbG9hdClhbHBoYQoreworICAg
IFtzZWxmIGFkZEF0dHJpYnV0ZTphdHRyTmFtZSB2YWx1ZTpbTlNDb2xvciBjb2xvcldpdGhEZXZp
Y2VSZWQ6cmVkIGdyZWVuOmdyZWVuIGJsdWU6Ymx1ZSBhbHBoYTphbHBoYV0gcmFuZ2U6TlNNYWtl
UmFuZ2UoMCwgW3NlbGYgbGVuZ3RoXSldOworfQorCistICh2b2lkKWFkZENvbG9yQXR0cmlidXRl
OihOU1N0cmluZyAqKWF0dHJOYW1lIHJlZDooZmxvYXQpcmVkIGdyZWVuOihmbG9hdClncmVlbiBi
bHVlOihmbG9hdClibHVlIGFscGhhOihmbG9hdClhbHBoYSBmcm9tOihpbnQpZnJvbSBsZW5ndGg6
KGludClsZW5ndGgKK3sKKyAgICBbc2VsZiBhZGRBdHRyaWJ1dGU6YXR0ck5hbWUgdmFsdWU6W05T
Q29sb3IgY29sb3JXaXRoRGV2aWNlUmVkOnJlZCBncmVlbjpncmVlbiBibHVlOmJsdWUgYWxwaGE6
YWxwaGFdIHJhbmdlOk5TTWFrZVJhbmdlKCh1bnNpZ25lZClmcm9tLCAodW5zaWduZWQpbGVuZ3Ro
KV07Cit9CisKKy0gKHZvaWQpYWRkRm9udEF0dHJpYnV0ZTooTlNTdHJpbmcgKilhdHRyTmFtZSBm
b250TmFtZTooTlNTdHJpbmcgKilmb250TmFtZSBzaXplOihmbG9hdClmb250U2l6ZQoreworICAg
IFtzZWxmIGFkZEF0dHJpYnV0ZTphdHRyTmFtZSB2YWx1ZTpbTlNGb250IGZvbnRXaXRoTmFtZTpm
b250TmFtZSBzaXplOmZvbnRTaXplXSByYW5nZTpOU01ha2VSYW5nZSgwLCBbc2VsZiBsZW5ndGhd
KV07Cit9CisKKy0gKHZvaWQpYWRkRm9udEF0dHJpYnV0ZTooTlNTdHJpbmcgKilhdHRyTmFtZSBm
b250TmFtZTooTlNTdHJpbmcgKilmb250TmFtZSBzaXplOihmbG9hdClmb250U2l6ZSBmcm9tOihp
bnQpZnJvbSBsZW5ndGg6KGludClsZW5ndGgKK3sKKyAgICBbc2VsZiBhZGRBdHRyaWJ1dGU6YXR0
ck5hbWUgdmFsdWU6W05TRm9udCBmb250V2l0aE5hbWU6Zm9udE5hbWUgc2l6ZTpmb250U2l6ZV0g
cmFuZ2U6TlNNYWtlUmFuZ2UoKHVuc2lnbmVkKWZyb20sICh1bnNpZ25lZClsZW5ndGgpXTsKK30K
KworQGVuZAorCitAaW1wbGVtZW50YXRpb24gVGV4dElucHV0Q29udHJvbGxlcgorCisrIChCT09M
KWlzU2VsZWN0b3JFeGNsdWRlZEZyb21XZWJTY3JpcHQ6KFNFTClhU2VsZWN0b3IKK3sKKyAgICBp
ZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihpbnNlcnRUZXh0OikKKyAgICAgICAgICAgIHx8IGFT
ZWxlY3RvciA9PSBAc2VsZWN0b3IoZG9Db21tYW5kOikKKyAgICAgICAgICAgIHx8IGFTZWxlY3Rv
ciA9PSBAc2VsZWN0b3Ioc2V0TWFya2VkVGV4dDpzZWxlY3RlZEZyb206bGVuZ3RoOikKKyAgICAg
ICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IodW5tYXJrVGV4dCkKKyAgICAgICAgICAg
IHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoaGFzTWFya2VkVGV4dCkKKyAgICAgICAgICAgIHx8
IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoY29udmVyc2F0aW9uSWRlbnRpZmllcikKKyAgICAgICAg
ICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3Ioc3Vic3RyaW5nRnJvbTpsZW5ndGg6KQorICAg
ICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihhdHRyaWJ1dGVkU3Vic3RyaW5nRnJv
bTpsZW5ndGg6KQorICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihsZWdhY3lB
dHRyaWJ1dGVkU3RyaW5nOikKKyAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3Io
bWFya2VkUmFuZ2UpCisgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHNlbGVj
dGVkUmFuZ2UpCisgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGZpcnN0UmVj
dEZvckNoYXJhY3RlcnNGcm9tOmxlbmd0aDopCisgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0g
QHNlbGVjdG9yKGNoYXJhY3RlckluZGV4Rm9yUG9pbnRYOlk6KQorICAgICAgICAgICAgfHwgYVNl
bGVjdG9yID09IEBzZWxlY3Rvcih2YWxpZEF0dHJpYnV0ZXNGb3JNYXJrZWRUZXh0KQorICAgICAg
ICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihhdHRyaWJ1dGVkU3RyaW5nV2l0aFN0cmlu
ZzopCisgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHNldElucHV0TWV0aG9k
SGFuZGxlcjopCisgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGRpY3RhdGVk
U3RyaW5nV2l0aFByaW1hcnlTdHJpbmc6YWx0ZXJuYXRpdmU6YWx0ZXJuYXRpdmVPZmZzZXQ6YWx0
ZXJuYXRpdmVMZW5ndGg6KQorICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3Rvcihz
dHJpbmdXaXRoVW5kb0dyb3VwaW5nSW5zZXJ0aW9uOikpCisgICAgICAgIHJldHVybiBOTzsKKyAg
ICByZXR1cm4gWUVTOworfQorCisrIChOU1N0cmluZyAqKXdlYlNjcmlwdE5hbWVGb3JTZWxlY3Rv
cjooU0VMKWFTZWxlY3RvcgoreworICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGluc2Vy
dFRleHQ6KSkKKyAgICAgICAgcmV0dXJuIEAiaW5zZXJ0VGV4dCI7CisgICAgZWxzZSBpZiAoYVNl
bGVjdG9yID09IEBzZWxlY3Rvcihkb0NvbW1hbmQ6KSkKKyAgICAgICAgcmV0dXJuIEAiZG9Db21t
YW5kIjsKKyAgICBlbHNlIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHNldE1hcmtlZFRleHQ6
c2VsZWN0ZWRGcm9tOmxlbmd0aDopKQorICAgICAgICByZXR1cm4gQCJzZXRNYXJrZWRUZXh0IjsK
KyAgICBlbHNlIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHN1YnN0cmluZ0Zyb206bGVuZ3Ro
OikpCisgICAgICAgIHJldHVybiBAInN1YnN0cmluZ0Zyb21SYW5nZSI7CisgICAgZWxzZSBpZiAo
YVNlbGVjdG9yID09IEBzZWxlY3RvcihhdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbTpsZW5ndGg6KSkK
KyAgICAgICAgcmV0dXJuIEAiYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSI7CisgICAgZWxz
ZSBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihsZWdhY3lBdHRyaWJ1dGVkU3RyaW5nOikpCisg
ICAgICAgIHJldHVybiBAImxlZ2FjeUF0dHJpYnV0ZWRTdHJpbmciOworICAgIGVsc2UgaWYgKGFT
ZWxlY3RvciA9PSBAc2VsZWN0b3IoZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyc0Zyb206bGVuZ3RoOikp
CisgICAgICAgIHJldHVybiBAImZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlIjsKKyAgICBlbHNl
IGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGNoYXJhY3RlckluZGV4Rm9yUG9pbnRYOlk6KSkK
KyAgICAgICAgcmV0dXJuIEAiY2hhcmFjdGVySW5kZXhGb3JQb2ludCI7CisgICAgZWxzZSBpZiAo
YVNlbGVjdG9yID09IEBzZWxlY3RvcihhdHRyaWJ1dGVkU3RyaW5nV2l0aFN0cmluZzopKQorICAg
ICAgICByZXR1cm4gQCJtYWtlQXR0cmlidXRlZFN0cmluZyI7IC8vIGp1c3QgYSBmYWN0b3J5IG1l
dGhvZCwgZG9lc24ndCBjYWxsIGludG8gTlNUZXh0SW5wdXQKKyAgICBlbHNlIGlmIChhU2VsZWN0
b3IgPT0gQHNlbGVjdG9yKHNldElucHV0TWV0aG9kSGFuZGxlcjopKQorICAgICAgICByZXR1cm4g
QCJzZXRJbnB1dE1ldGhvZEhhbmRsZXIiOworICAgIGVsc2UgaWYgKGFTZWxlY3RvciA9PSBAc2Vs
ZWN0b3IoZGljdGF0ZWRTdHJpbmdXaXRoUHJpbWFyeVN0cmluZzphbHRlcm5hdGl2ZTphbHRlcm5h
dGl2ZU9mZnNldDphbHRlcm5hdGl2ZUxlbmd0aDopKQorICAgICAgICByZXR1cm4gQCJtYWtlRGlj
dGF0ZWRTdHJpbmciOworICAgIGVsc2UgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3Ioc3RyaW5n
V2l0aFVuZG9Hcm91cGluZ0luc2VydGlvbjopKQorICAgICAgICByZXR1cm4gQCJtYWtlVW5kb0dy
b3VwaW5nSW5zZXJ0aW9uU3RyaW5nIjsKKworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKGlkKWlu
aXRXaXRoV2ViVmlldzooV2ViVmlldyAqKXd2Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsK
KyAgICB3ZWJWaWV3ID0gd3Y7CisgICAgaW5wdXRNZXRob2RWaWV3ID0gbmlsOworICAgIGlucHV0
TWV0aG9kSGFuZGxlciA9IG5pbDsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClkZWFs
bG9jCit7CisgICAgW2lucHV0TWV0aG9kSGFuZGxlciByZWxlYXNlXTsKKyAgICBpbnB1dE1ldGhv
ZEhhbmRsZXIgPSBuaWw7CisgICAgCisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistIChOU09i
amVjdCA8TlNUZXh0SW5wdXQ+ICopdGV4dElucHV0Cit7CisgICAgTlNWaWV3IDxOU1RleHRJbnB1
dD4gKnZpZXcgPSBpbnB1dE1ldGhvZFZpZXcgPyBpbnB1dE1ldGhvZFZpZXcgOiAoaWQpW1tbd2Vi
VmlldyBtYWluRnJhbWVdIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XTsKKyAgICByZXR1cm4gW3Zp
ZXcgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChOU1RleHRJbnB1dCldID8gdmlldyA6IG5p
bDsKK30KKworLSAodm9pZClpbnNlcnRUZXh0OihpZClhU3RyaW5nCit7CisgICAgV2ViQ29yZTo6
Q3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayBjdXN0b21FbGVtZW50TGlmZWN5
Y2xlUHJvY2Vzc2luZ1N0YWNrOworICAgIE5TT2JqZWN0IDxOU1RleHRJbnB1dD4gKnRleHRJbnB1
dCA9IFtzZWxmIHRleHRJbnB1dF07CisKKyAgICBpZiAodGV4dElucHV0KQorICAgICAgICBbdGV4
dElucHV0IGluc2VydFRleHQ6YVN0cmluZ107Cit9CisKKy0gKHZvaWQpZG9Db21tYW5kOihOU1N0
cmluZyAqKWFDb21tYW5kCit7CisgICAgV2ViQ29yZTo6Q3VzdG9tRWxlbWVudExpZmVjeWNsZVBy
b2Nlc3NpbmdTdGFjayBjdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOworICAg
IE5TT2JqZWN0IDxOU1RleHRJbnB1dD4gKnRleHRJbnB1dCA9IFtzZWxmIHRleHRJbnB1dF07CisK
KyAgICBpZiAodGV4dElucHV0KQorICAgICAgICBbdGV4dElucHV0IGRvQ29tbWFuZEJ5U2VsZWN0
b3I6TlNTZWxlY3RvckZyb21TdHJpbmcoYUNvbW1hbmQpXTsKK30KKworLSAodm9pZClzZXRNYXJr
ZWRUZXh0OihOU1N0cmluZyAqKWFTdHJpbmcgc2VsZWN0ZWRGcm9tOihpbnQpZnJvbSBsZW5ndGg6
KGludClsZW5ndGgKK3sKKyAgICBXZWJDb3JlOjpDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vz
c2luZ1N0YWNrIGN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2s7CisgICAgTlNP
YmplY3QgPE5TVGV4dElucHV0PiAqdGV4dElucHV0ID0gW3NlbGYgdGV4dElucHV0XTsKKyAKKyAg
ICBpZiAodGV4dElucHV0KQorICAgICAgICBbdGV4dElucHV0IHNldE1hcmtlZFRleHQ6YVN0cmlu
ZyBzZWxlY3RlZFJhbmdlOk5TTWFrZVJhbmdlKGZyb20sIGxlbmd0aCldOworfQorCistICh2b2lk
KXVubWFya1RleHQKK3sKKyAgICBXZWJDb3JlOjpDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vz
c2luZ1N0YWNrIGN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2s7CisgICAgTlNP
YmplY3QgPE5TVGV4dElucHV0PiAqdGV4dElucHV0ID0gW3NlbGYgdGV4dElucHV0XTsKKworICAg
IGlmICh0ZXh0SW5wdXQpCisgICAgICAgIFt0ZXh0SW5wdXQgdW5tYXJrVGV4dF07Cit9CisKKy0g
KEJPT0wpaGFzTWFya2VkVGV4dAoreworICAgIE5TT2JqZWN0IDxOU1RleHRJbnB1dD4gKnRleHRJ
bnB1dCA9IFtzZWxmIHRleHRJbnB1dF07CisKKyAgICBpZiAodGV4dElucHV0KQorICAgICAgICBy
ZXR1cm4gW3RleHRJbnB1dCBoYXNNYXJrZWRUZXh0XTsKKworICAgIHJldHVybiBGQUxTRTsKK30K
KworLSAobG9uZyljb252ZXJzYXRpb25JZGVudGlmaWVyCit7CisgICAgTlNPYmplY3QgPE5TVGV4
dElucHV0PiAqdGV4dElucHV0ID0gW3NlbGYgdGV4dElucHV0XTsKKworICAgIGlmICh0ZXh0SW5w
dXQpCisgICAgICAgIHJldHVybiBbdGV4dElucHV0IGNvbnZlcnNhdGlvbklkZW50aWZpZXJdOwor
CisgICAgcmV0dXJuIDA7Cit9CisKKy0gKE5TU3RyaW5nICopc3Vic3RyaW5nRnJvbTooaW50KWZy
b20gbGVuZ3RoOihpbnQpbGVuZ3RoCit7CisgICAgTlNPYmplY3QgPE5TVGV4dElucHV0PiAqdGV4
dElucHV0ID0gW3NlbGYgdGV4dElucHV0XTsKKworICAgIGlmICh0ZXh0SW5wdXQpCisgICAgICAg
IHJldHVybiBbW3RleHRJbnB1dCBhdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlOk5TTWFrZVJh
bmdlKGZyb20sIGxlbmd0aCldIHN0cmluZ107CisgICAgCisgICAgcmV0dXJuIEAiIjsKK30KKwor
LSAoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAqKWF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tOihp
bnQpZnJvbSBsZW5ndGg6KGludClsZW5ndGgKK3sKKyAgICBOU09iamVjdCA8TlNUZXh0SW5wdXQ+
ICp0ZXh0SW5wdXQgPSBbc2VsZiB0ZXh0SW5wdXRdOworCisgICAgTlNNdXRhYmxlQXR0cmlidXRl
ZFN0cmluZyAqcmV0ID0gW1tbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdF0g
YXV0b3JlbGVhc2VdOworCisgICAgaWYgKHRleHRJbnB1dCkKKyAgICAgICAgW3JldCBzZXRBdHRy
aWJ1dGVkU3RyaW5nOlt0ZXh0SW5wdXQgYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZTpOU01h
a2VSYW5nZShmcm9tLCBsZW5ndGgpXV07CisgICAgCisgICAgcmV0dXJuIHJldDsKK30KKworLSAo
TlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAqKWxlZ2FjeUF0dHJpYnV0ZWRTdHJpbmc6KERPTVJh
bmdlKilyYW5nZQoreworICAgIE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZyA9IFtb
W05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAg
ICBpZCBkb2N1bWVudFZpZXcgPSBbW1t3ZWJWaWV3IG1haW5GcmFtZV0gZnJhbWVWaWV3XSBkb2N1
bWVudFZpZXddOworICAgIGlmICghW2RvY3VtZW50VmlldyBpc0tpbmRPZkNsYXNzOltXZWJIVE1M
VmlldyBjbGFzc11dKQorICAgICAgICByZXR1cm4gc3RyaW5nOworCisgICAgW3N0cmluZyBzZXRB
dHRyaWJ1dGVkU3RyaW5nOlsoV2ViSFRNTFZpZXcgKilkb2N1bWVudFZpZXcgX2F0dHJpYnV0ZVN0
cmluZ0Zyb21ET01SYW5nZTpyYW5nZV1dOworICAgIHJldHVybiBzdHJpbmc7Cit9CisKKy0gKE5T
QXJyYXkgKiltYXJrZWRSYW5nZQoreworICAgIE5TT2JqZWN0IDxOU1RleHRJbnB1dD4gKnRleHRJ
bnB1dCA9IFtzZWxmIHRleHRJbnB1dF07CisKKyAgICBpZiAodGV4dElucHV0KSB7CisgICAgICAg
IE5TUmFuZ2UgcmFuZ2UgPSBbdGV4dElucHV0IG1hcmtlZFJhbmdlXTsKKyAgICAgICAgcmV0dXJu
IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6W05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZElu
dDpyYW5nZS5sb2NhdGlvbl0sIFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6cmFuZ2Uu
bGVuZ3RoXSwgbmlsXTsKKyAgICB9CisKKyAgICByZXR1cm4gbmlsOworfQorCistIChOU0FycmF5
ICopc2VsZWN0ZWRSYW5nZQoreworICAgIE5TT2JqZWN0IDxOU1RleHRJbnB1dD4gKnRleHRJbnB1
dCA9IFtzZWxmIHRleHRJbnB1dF07CisKKyAgICBpZiAodGV4dElucHV0KSB7CisgICAgICAgIE5T
UmFuZ2UgcmFuZ2UgPSBbdGV4dElucHV0IHNlbGVjdGVkUmFuZ2VdOworICAgICAgICByZXR1cm4g
W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50
OnJhbmdlLmxvY2F0aW9uXSwgW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDpyYW5nZS5s
ZW5ndGhdLCBuaWxdOworICAgIH0KKworICAgIHJldHVybiBuaWw7Cit9CisgIAorCistIChOU0Fy
cmF5ICopZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyc0Zyb206KGludClmcm9tIGxlbmd0aDooaW50KWxl
bmd0aAoreworICAgIE5TT2JqZWN0IDxOU1RleHRJbnB1dD4gKnRleHRJbnB1dCA9IFtzZWxmIHRl
eHRJbnB1dF07CisKKyAgICBpZiAodGV4dElucHV0KSB7CisgICAgICAgIE5TUmVjdCByZWN0ID0g
W3RleHRJbnB1dCBmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZTpOU01ha2VSYW5nZShmcm9tLCBs
ZW5ndGgpXTsKKyAgICAgICAgaWYgKHJlY3Qub3JpZ2luLnggfHwgcmVjdC5vcmlnaW4ueSB8fCBy
ZWN0LnNpemUud2lkdGggfHwgcmVjdC5zaXplLmhlaWdodCkgeworICAgICAgICAgICAgcmVjdC5v
cmlnaW4gPSBbW3dlYlZpZXcgd2luZG93XSBjb252ZXJ0U2NyZWVuVG9CYXNlOnJlY3Qub3JpZ2lu
XTsKKyAgICAgICAgICAgIHJlY3QgPSBbd2ViVmlldyBjb252ZXJ0UmVjdDpyZWN0IGZyb21WaWV3
Om5pbF07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVj
dHM6CisgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6cmVjdC5v
cmlnaW4ueF0sCisgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6
cmVjdC5vcmlnaW4ueV0sCisgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRo
RmxvYXQ6cmVjdC5zaXplLndpZHRoXSwKKyAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51
bWJlcldpdGhGbG9hdDpyZWN0LnNpemUuaGVpZ2h0XSwKKyAgICAgICAgICAgICAgICAgICAgbmls
XTsKKyAgICB9CisKKyAgICByZXR1cm4gbmlsOworfQorCistIChOU0ludGVnZXIpY2hhcmFjdGVy
SW5kZXhGb3JQb2ludFg6KGZsb2F0KXggWTooZmxvYXQpeQoreworICAgIE5TT2JqZWN0IDxOU1Rl
eHRJbnB1dD4gKnRleHRJbnB1dCA9IFtzZWxmIHRleHRJbnB1dF07CisKKyAgICBpZiAodGV4dElu
cHV0KSB7CisgICAgICAgIE5TUG9pbnQgcG9pbnQgPSBOU01ha2VQb2ludCh4LCB5KTsKKyAgICAg
ICAgcG9pbnQgPSBbd2ViVmlldyBjb252ZXJ0UG9pbnQ6cG9pbnQgdG9WaWV3Om5pbF07CisgICAg
ICAgIHBvaW50ID0gW1t3ZWJWaWV3IHdpbmRvd10gY29udmVydEJhc2VUb1NjcmVlbjpwb2ludF07
CisgICAgICAgIE5TSW50ZWdlciBpbmRleCA9IFt0ZXh0SW5wdXQgY2hhcmFjdGVySW5kZXhGb3JQ
b2ludDpwb2ludF07CisgICAgICAgIGlmIChpbmRleCA9PSBOU05vdEZvdW5kKQorICAgICAgICAg
ICAgcmV0dXJuIC0xOworCisgICAgICAgIHJldHVybiBpbmRleDsKKyAgICB9CisKKyAgICByZXR1
cm4gMDsKK30KKworLSAoTlNBcnJheSAqKXZhbGlkQXR0cmlidXRlc0Zvck1hcmtlZFRleHQKK3sK
KyAgICBOU09iamVjdCA8TlNUZXh0SW5wdXQ+ICp0ZXh0SW5wdXQgPSBbc2VsZiB0ZXh0SW5wdXRd
OworCisgICAgaWYgKHRleHRJbnB1dCkKKyAgICAgICAgcmV0dXJuIFt0ZXh0SW5wdXQgdmFsaWRB
dHRyaWJ1dGVzRm9yTWFya2VkVGV4dF07CisKKyAgICByZXR1cm4gbmlsOworfQorCistIChOU011
dGFibGVBdHRyaWJ1dGVkU3RyaW5nICopYXR0cmlidXRlZFN0cmluZ1dpdGhTdHJpbmc6KE5TU3Ry
aW5nICopYVN0cmluZworeworICAgIHJldHVybiBbW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5n
IGFsbG9jXSBpbml0V2l0aFN0cmluZzphU3RyaW5nXSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKE5T
TXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqKXN0cmluZ1dpdGhVbmRvR3JvdXBpbmdJbnNlcnRpb246
KE5TU3RyaW5nKilhU3RyaW5nCit7CisjaWYgZGVmaW5lZChTVVBQT1JUX0lOU0VSVElPTl9VTkRP
X0dST1VQSU5HKQorICAgIE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJpYnV0ZWRTdHJp
bmcgPSBbc2VsZiBkaWN0YXRlZFN0cmluZ1dpdGhQcmltYXJ5U3RyaW5nOmFTdHJpbmcgYWx0ZXJu
YXRpdmU6QCJ0ZXN0IiBhbHRlcm5hdGl2ZU9mZnNldDowIGFsdGVybmF0aXZlTGVuZ3RoOjFdOwor
ICAgIFthdHRyaWJ1dGVkU3RyaW5nIGFkZEF0dHJpYnV0ZTpOU1RleHRJbnNlcnRpb25VbmRvYWJs
ZUF0dHJpYnV0ZU5hbWUgdmFsdWU6QFlFUyByYW5nZTpOU01ha2VSYW5nZSgwLCBbYXR0cmlidXRl
ZFN0cmluZyBsZW5ndGhdKV07CisgICAgcmV0dXJuIGF0dHJpYnV0ZWRTdHJpbmc7CisjZWxzZQor
ICAgIHJldHVybiBuaWw7CisjZW5kaWYKK30KKworLSAoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmlu
ZyopZGljdGF0ZWRTdHJpbmdXaXRoUHJpbWFyeVN0cmluZzooTlNTdHJpbmcqKWFTdHJpbmcgYWx0
ZXJuYXRpdmU6KE5TU3RyaW5nKilhbHRlcm5hdGl2ZSBhbHRlcm5hdGl2ZU9mZnNldDooaW50KW9m
ZnNldCBhbHRlcm5hdGl2ZUxlbmd0aDooaW50KWxlbmd0aAoreworICAgIE5TTXV0YWJsZUF0dHJp
YnV0ZWRTdHJpbmcqIGRpY3RhdGVkU3RyaW5nID0gW3NlbGYgYXR0cmlidXRlZFN0cmluZ1dpdGhT
dHJpbmc6YVN0cmluZ107CisgICAgTlNSYW5nZSByYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IE5TTWFr
ZVJhbmdlKChOU1VJbnRlZ2VyKW9mZnNldCwgKE5TVUludGVnZXIpbGVuZ3RoKTsKKyAgICBOU1N0
cmluZyogc3ViU3RyaW5nV2l0aEFsdGVybmF0aXZlID0gW2FTdHJpbmcgc3Vic3RyaW5nV2l0aFJh
bmdlOnJhbmdlV2l0aEFsdGVybmF0aXZlXTsKKyAgICBpZiAoIXN1YlN0cmluZ1dpdGhBbHRlcm5h
dGl2ZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIE5TVGV4dEFsdGVybmF0aXZlcyogYWx0
ZXJuYXRpdmVPYmplY3QgPSBbW1tOU1RleHRBbHRlcm5hdGl2ZXMgYWxsb2NdIGluaXRXaXRoUHJp
bWFyeVN0cmluZzpzdWJTdHJpbmdXaXRoQWx0ZXJuYXRpdmUgYWx0ZXJuYXRpdmVTdHJpbmdzOltO
U0FycmF5IGFycmF5V2l0aE9iamVjdDphbHRlcm5hdGl2ZV1dIGF1dG9yZWxlYXNlXTsKKyAgICBp
ZiAoIWFsdGVybmF0aXZlT2JqZWN0KQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgW2RpY3Rh
dGVkU3RyaW5nIGFkZEF0dHJpYnV0ZTpOU1RleHRBbHRlcm5hdGl2ZXNBdHRyaWJ1dGVOYW1lIHZh
bHVlOmFsdGVybmF0aXZlT2JqZWN0IHJhbmdlOnJhbmdlV2l0aEFsdGVybmF0aXZlXTsKKworICAg
IHJldHVybiBkaWN0YXRlZFN0cmluZzsKK30KKworLSAodm9pZClzZXRJbnB1dE1ldGhvZEhhbmRs
ZXI6KFdlYlNjcmlwdE9iamVjdCAqKWhhbmRsZXIKK3sKKyAgICBpZiAoaW5wdXRNZXRob2RIYW5k
bGVyID09IGhhbmRsZXIpCisgICAgICAgIHJldHVybjsKKyAgICBbaGFuZGxlciByZXRhaW5dOwor
ICAgIFtpbnB1dE1ldGhvZEhhbmRsZXIgcmVsZWFzZV07CisgICAgaW5wdXRNZXRob2RIYW5kbGVy
ID0gaGFuZGxlcjsKK30KKworLSAoQk9PTClpbnRlcnByZXRLZXlFdmVudHM6KE5TQXJyYXkgKill
dmVudEFycmF5IHdpdGhTZW5kZXI6KFdlYkhUTUxWaWV3ICopc2VuZGVyCit7CisgICAgaWYgKCFp
bnB1dE1ldGhvZEhhbmRsZXIpCisgICAgICAgIHJldHVybiBOTzsKKyAgICAKKyAgICBpbnB1dE1l
dGhvZFZpZXcgPSBzZW5kZXI7CisgICAgCisgICAgTlNFdmVudCAqZXZlbnQgPSBbZXZlbnRBcnJh
eSBvYmplY3RBdEluZGV4OjBdOworICAgIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MgPSBbZXZlbnQg
bW9kaWZpZXJGbGFnc107IAorICAgIE5TTXV0YWJsZUFycmF5ICptb2RpZmllcnMgPSBbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKKyAgICBpZiAobW9kaWZpZXJGbGFncyAmIE5TQWxwaGFT
aGlmdEtleU1hc2spCisgICAgICAgIFttb2RpZmllcnMgYWRkT2JqZWN0OkAiTlNBbHBoYVNoaWZ0
S2V5TWFzayJdOworICAgIGlmIChtb2RpZmllckZsYWdzICYgTlNTaGlmdEtleU1hc2spCisgICAg
ICAgIFttb2RpZmllcnMgYWRkT2JqZWN0OkAiTlNTaGlmdEtleU1hc2siXTsKKyAgICBpZiAobW9k
aWZpZXJGbGFncyAmIE5TQ29udHJvbEtleU1hc2spCisgICAgICAgIFttb2RpZmllcnMgYWRkT2Jq
ZWN0OkAiTlNDb250cm9sS2V5TWFzayJdOworICAgIGlmIChtb2RpZmllckZsYWdzICYgTlNBbHRl
cm5hdGVLZXlNYXNrKQorICAgICAgICBbbW9kaWZpZXJzIGFkZE9iamVjdDpAIk5TQWx0ZXJuYXRl
S2V5TWFzayJdOworICAgIGlmIChtb2RpZmllckZsYWdzICYgTlNDb21tYW5kS2V5TWFzaykKKyAg
ICAgICAgW21vZGlmaWVycyBhZGRPYmplY3Q6QCJOU0NvbW1hbmRLZXlNYXNrIl07CisgICAgaWYg
KG1vZGlmaWVyRmxhZ3MgJiBOU051bWVyaWNQYWRLZXlNYXNrKQorICAgICAgICBbbW9kaWZpZXJz
IGFkZE9iamVjdDpAIk5TTnVtZXJpY1BhZEtleU1hc2siXTsKKyAgICBpZiAobW9kaWZpZXJGbGFn
cyAmIE5TSGVscEtleU1hc2spCisgICAgICAgIFttb2RpZmllcnMgYWRkT2JqZWN0OkAiTlNIZWxw
S2V5TWFzayJdOworICAgIGlmIChtb2RpZmllckZsYWdzICYgTlNGdW5jdGlvbktleU1hc2spCisg
ICAgICAgIFttb2RpZmllcnMgYWRkT2JqZWN0OkAiTlNGdW5jdGlvbktleU1hc2siXTsKKyAgICAK
KyAgICBXZWJTY3JpcHRPYmplY3QqIGV2ZW50UGFyYW0gPSBbaW5wdXRNZXRob2RIYW5kbGVyIGV2
YWx1YXRlV2ViU2NyaXB0OkAibmV3IE9iamVjdCgpOyJdOworICAgIFtldmVudFBhcmFtIHNldFZh
bHVlOltldmVudCBjaGFyYWN0ZXJzXSBmb3JLZXk6QCJjaGFyYWN0ZXJzIl07CisgICAgW2V2ZW50
UGFyYW0gc2V0VmFsdWU6W2V2ZW50IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyc10gZm9yS2V5
OkAiY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIl07CisgICAgW2V2ZW50UGFyYW0gc2V0VmFs
dWU6W05TTnVtYmVyIG51bWJlcldpdGhCb29sOltldmVudCBpc0FSZXBlYXRdXSBmb3JLZXk6QCJp
c0FSZXBlYXQiXTsKKyAgICBbZXZlbnRQYXJhbSBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0
aFVuc2lnbmVkU2hvcnQ6W2V2ZW50IGtleUNvZGVdXSBmb3JLZXk6QCJrZXlDb2RlIl07CisgICAg
W2V2ZW50UGFyYW0gc2V0VmFsdWU6bW9kaWZpZXJzIGZvcktleTpAIm1vZGlmaWVyRmxhZ3MiXTsK
KworICAgIFttb2RpZmllcnMgcmVsZWFzZV07CisgICAgCisgICAgaWQgcmVzdWx0ID0gW2lucHV0
TWV0aG9kSGFuZGxlciBjYWxsV2ViU2NyaXB0TWV0aG9kOkAiY2FsbCIgd2l0aEFyZ3VtZW50czpb
TlNBcnJheSBhcnJheVdpdGhPYmplY3RzOmlucHV0TWV0aG9kSGFuZGxlciwgZXZlbnRQYXJhbSwg
bmlsXV07CisgICAgaWYgKCFbcmVzdWx0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYm9v
bFZhbHVlKV0gfHwgIVtyZXN1bHQgYm9vbFZhbHVlXSkgeworI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VuZGVjbGFyZWQt
c2VsZWN0b3IiCisgICAgICAgIFtzZW5kZXIgZG9Db21tYW5kQnlTZWxlY3RvcjpAc2VsZWN0b3Io
bm9vcDopXTsgLy8gQXBwS2l0IHNlbmRzIG5vb3A6IGlmIHRoZSBpbWUgZG9lcyBub3QgaGFuZGxl
IGFuIGV2ZW50CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisgICAgfQorCisgICAgaW5w
dXRNZXRob2RWaWV3ID0gbmlsOworICAgIHJldHVybiBZRVM7Cit9CisKK0BlbmQKKworI2VuZGlm
IC8vICFQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
RXZlbnRTZW5kZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0V2ZW50U2VuZGVyLmNw
cAppbmRleCA5MDExZDUzLi5kMWU5NGYxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vRXZlbnRTZW5kZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9FdmVu
dFNlbmRlci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0xpZmVjeWNsZUNhbGxiYWNrUXVldWUuaD4KICNpbmNsdWRlIDxXZWJLaXQvV2Vi
S2l0Lmg+CiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+
CkBAIC0xMzcsNiArMTM4LDggQEAgc3RhdGljIExSRVNVTFQgZGlzcGF0Y2hNZXNzYWdlKGNvbnN0
IE1TRyogbXNnKQogCiBzdGF0aWMgSlNWYWx1ZVJlZiBjb250ZXh0Q2xpY2tDYWxsYmFjayhKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNP
YmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1td
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CisgICAgV2ViQ29yZTo6Q3VzdG9tRWxlbWVudExp
ZmVjeWNsZVByb2Nlc3NpbmdTdGFjayBjdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0
YWNrOworCiAgICAgQ09NUHRyPElXZWJGcmFtZVByaXZhdGU+IGZyYW1lUHJpdmF0ZTsKICAgICBp
ZiAoU1VDQ0VFREVEKGZyYW1lLT5RdWVyeUludGVyZmFjZSgmZnJhbWVQcml2YXRlKSkpCiAgICAg
ICAgIGZyYW1lUHJpdmF0ZS0+bGF5b3V0KCk7CkBAIC0xNzcsNiArMTgwLDggQEAgc3RhdGljIFdQ
QVJBTSBidWlsZE1vZGlmaWVyRmxhZ3MoSlNDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IEpTVmFs
dWVSZWYgbW9kaWZpZXIKIAogc3RhdGljIEpTVmFsdWVSZWYgbW91c2VEb3duQ2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlz
T2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNb
XSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogeworICAgIFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRM
aWZlY3ljbGVQcm9jZXNzaW5nU3RhY2sgY3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdT
dGFjazsKKwogICAgIENPTVB0cjxJV2ViRnJhbWVQcml2YXRlPiBmcmFtZVByaXZhdGU7CiAgICAg
aWYgKFNVQ0NFRURFRChmcmFtZS0+UXVlcnlJbnRlcmZhY2UoJmZyYW1lUHJpdmF0ZSkpKQogICAg
ICAgICBmcmFtZVByaXZhdGUtPmxheW91dCgpOwpAQCAtMjY4LDYgKzI3Myw4IEBAIHN0YXRpYyB2
b2lkIGRvTW91c2VVcChNU0cgbXNnLCBIUkVTVUxUKiBvbGVEcmFnQW5kRHJvcFJldHVyblZhbHVl
ID0gMCkKIAogc3RhdGljIEpTVmFsdWVSZWYgbW91c2VVcENhbGxiYWNrKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6
ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikKIHsKKyAgICBXZWJDb3JlOjpDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJv
Y2Vzc2luZ1N0YWNrIGN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2s7CisKICAg
ICBpbnQgbW91c2VUeXBlID0gV01fTEJVVFRPTlVQOwogICAgIGlmIChhcmd1bWVudENvdW50ID49
IDEpIHsKICAgICAgICAgaW50IG1vdXNlTnVtYmVyID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQs
IGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKTsKQEAgLTMzNSw2ICszNDIsOCBAQCBzdGF0aWMgdm9p
ZCBkb01vdXNlTW92ZShNU0cgbXNnKQogCiBzdGF0aWMgSlNWYWx1ZVJlZiBtb3VzZU1vdmVUb0Nh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmpl
Y3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYg
YXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKKyAgICBXZWJDb3JlOjpDdXN0
b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrIGN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQ
cm9jZXNzaW5nU3RhY2s7CisKICAgICBpZiAoYXJndW1lbnRDb3VudCA8IDIpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIApAQCAtNDQ5LDYgKzQ1OCw4IEBA
IHN0YXRpYyBpbnQgbWFrZUtleURhdGFGb3JTY2FuQ29kZShpbnQgdmlydHVhbEtleUNvZGUpCiAK
IHN0YXRpYyBKU1ZhbHVlUmVmIGtleURvd25DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwg
SlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1
bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pCiB7CisgICAgV2ViQ29yZTo6Q3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdT
dGFjayBjdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOworCiAgICAgaWYgKGFy
Z3VtZW50Q291bnQgPCAxKQogICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29u
dGV4dCk7CiAKQEAgLTY2OCw2ICs2NzksOCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiB6b29tUGFnZU91
dENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbgogCiBz
dGF0aWMgSlNWYWx1ZVJlZiBiZWdpbkRyYWdXaXRoRmlsZXNDYWxsYmFjayhKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNp
emVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pCiB7CisgICAgV2ViQ29yZTo6Q3VzdG9tRWxlbWVudExpZmVjeWNsZVBy
b2Nlc3NpbmdTdGFjayBjdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOworCiAg
ICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQogICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY29udGV4dCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9U
ZXh0SW5wdXRDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXh0SW5w
dXRDb250cm9sbGVyLmNwcAppbmRleCBkYTVmZGY2Li5lYWE5NTQ2IDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vVGV4dElucHV0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL1RleHRJbnB1dENvbnRyb2xsZXIuY3BwCkBAIC0zMSwxMiArMzEs
MTUgQEAKICNpbmNsdWRlICJUZXh0SW5wdXRDb250cm9sbGVyLmgiCiAKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTGlmZWN5Y2xlQ2Fs
bGJhY2tRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogLy8gU3RhdGljIEZ1bmN0
aW9ucwogCiBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRNYXJrZWRUZXh0Q2FsbGJhY2soSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0
LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKQogeworICAgIFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRMaWZlY3lj
bGVQcm9jZXNzaW5nU3RhY2sgY3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjazsK
KwogICAgIGlmIChhcmd1bWVudENvdW50IDwgMykKICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpOwogCkBAIC02OSw2ICs3Miw4IEBAIHN0YXRpYyBKU1ZhbHVlUmVm
IGhhc01hcmtlZFRleHRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYg
ZnVuY3RpCiAKIHN0YXRpYyBKU1ZhbHVlUmVmIHVubWFya1RleHRDYWxsYmFjayhKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3Qs
IHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pCiB7CisgICAgV2ViQ29yZTo6Q3VzdG9tRWxlbWVudExpZmVjeWNs
ZVByb2Nlc3NpbmdTdGFjayBjdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOwor
CiAgICAgVGV4dElucHV0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PFRleHRJ
bnB1dENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwogICAgIGlm
IChjb250cm9sbGVyKQogICAgICAgICBjb250cm9sbGVyLT51bm1hcmtUZXh0KCk7CkBAIC05NCw2
ICs5OSw4IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIG1hcmtlZFJhbmdlQ2FsbGJhY2soSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uCiAKIHN0YXRpYyBKU1ZhbHVlUmVmIGlu
c2VydFRleHRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rp
b24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBK
U1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CisgICAgV2Vi
Q29yZTo6Q3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayBjdXN0b21FbGVtZW50
TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOworCiAgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQ29kZUdl
bmVyYXRvclRlc3RSdW5uZXIucG0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL0NvZGVHZW5lcmF0b3JUZXN0UnVubmVyLnBtCmluZGV4IDE5NDg2YzQuLmNk
M2YwMTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QmluZGluZ3MvQ29kZUdlbmVyYXRvclRlc3RSdW5uZXIucG0KKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9Db2RlR2VuZXJhdG9yVGVzdFJ1bm5lci5w
bQpAQCAtMjMwLDYgKzIzMCw3IEBAIEVPRgogCiAgICAgcHVzaChAY29udGVudHMsIDw8RU9GKTsK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KIAog
bmFtZXNwYWNlIFdUUiB7CkBAIC0yNzQsNiArMjc1LDggQEAgRU9GCiAKIEpTVmFsdWVSZWYgJHtj
bGFzc05hbWV9OjpAe1skZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZV19KEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3Vt
ZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikKIHsKKyAgICBXZWJDb3JlOjpDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0
YWNrIGN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2s7CisKICAgICAke2ltcGxl
bWVudGF0aW9uQ2xhc3NOYW1lfSogaW1wbCA9IHRvJHtpbXBsZW1lbnRhdGlvbkNsYXNzTmFtZX0o
Y29udGV4dCwgdGhpc09iamVjdCk7CiAgICAgaWYgKCFpbXBsKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CkBAIC0zMjIsNiArMzI1LDggQEAgRU9GCiAKIEpT
VmFsdWVSZWYgJHtjbGFzc05hbWV9Ojoke2dldHRlck5hbWV9KEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
CiB7CisgICAgV2ViQ29yZTo6Q3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayBj
dXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOworCiAgICAgJHtpbXBsZW1lbnRh
dGlvbkNsYXNzTmFtZX0qIGltcGwgPSB0byR7aW1wbGVtZW50YXRpb25DbGFzc05hbWV9KGNvbnRl
eHQsIG9iamVjdCk7CiAgICAgaWYgKCFpbXBsKQogICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY29udGV4dCk7CkBAIC0zMzUsNiArMzQwLDggQEAgRU9GCiAKIGJvb2wgJHtjbGFz
c05hbWV9OjpAe1skc2VsZi0+X3NldHRlck5hbWUoJGF0dHJpYnV0ZSldfShKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiB2YWx1
ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogeworICAgIFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRM
aWZlY3ljbGVQcm9jZXNzaW5nU3RhY2sgY3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdT
dGFjazsKKwogICAgICR7aW1wbGVtZW50YXRpb25DbGFzc05hbWV9KiBpbXBsID0gdG8ke2ltcGxl
bWVudGF0aW9uQ2xhc3NOYW1lfShjb250ZXh0LCBvYmplY3QpOwogICAgIGlmICghaW1wbCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>