<?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>28724</bug_id>
          
          <creation_ts>2009-08-25 16:47:04 -0700</creation_ts>
          <short_desc>[ES5] Implement getOwnPropertyDescriptor</short_desc>
          <delta_ts>2009-08-27 15:39:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>barraclough</cc>
    
    <cc>erights</cc>
    
    <cc>ggaren</cc>
    
    <cc>mjs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>142734</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-08-25 16:47:04 -0700</bug_when>
    <thetext>ES5 defines getOwnPropertyDescriptor to determine the values and attributes of a property.  In addition to being part of ES5, we need this API so that we can test other APIs in ES5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142742</commentid>
    <comment_count>1</comment_count>
      <attachid>38578</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-08-25 17:10:41 -0700</bug_when>
    <thetext>Created attachment 38578
JavaScriptCore portion of patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142743</commentid>
    <comment_count>2</comment_count>
      <attachid>38579</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-08-25 17:11:02 -0700</bug_when>
    <thetext>Created attachment 38579
Testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142744</commentid>
    <comment_count>3</comment_count>
      <attachid>38580</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-08-25 17:11:24 -0700</bug_when>
    <thetext>Created attachment 38580
WebCore portion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142774</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2009-08-25 20:52:41 -0700</bug_when>
    <thetext>I guess I could read up on this myself, but what is the distinction between a &quot;property descriptor&quot; and property attributes? In other words, why can&apos;t we just piggy back on getPropertyAttributes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142780</commentid>
    <comment_count>5</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-08-25 21:48:11 -0700</bug_when>
    <thetext>getOwnPropertySlot is insufficient for getPropertyDescriptor as getOwnPropertySlot doesn&apos;t provide the information needed for getters and setters (and QuarantinedObjectWrapper needs to do special work regardless).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142788</commentid>
    <comment_count>6</comment_count>
      <attachid>38579</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2009-08-25 22:47:07 -0700</bug_when>
    <thetext>Comment on attachment 38579
Testcase

r-.
Please to be removing __defineGetter__ from the JavaScript language.
Okay r+, but I do not approve.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142812</commentid>
    <comment_count>7</comment_count>
      <attachid>38580</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2009-08-26 02:21:47 -0700</bug_when>
    <thetext>Comment on attachment 38580
WebCore portion

&quot;This requires a custom implementation of getOwnPropertyDescriptor for every class with a custom implementation of getOwnPropertyDescriptor.&quot;

Well, none do right now ... so, nothing to be added then? ;-)
I guess you mean &quot;with a custom implementation of getOwnPropertySlot&quot;?

 87     if (JSGlobalObject::getOwnPropertyDescriptor(exec, propertyName, descriptor))
 88         return true;
 89     return false;

Um, isn&apos;t that  &quot;return JSGlobalObject::getOwnPropertyDescriptor(exec, propertyName, descriptor);&quot; ?

Could you rewrite the CodeGeneratorJS.pm script in a language other then Perl please? - perl sucks.

So, I share Geoff&apos;s concern that this duplicates all the getOwnPropertySlot methods.  I understand that they could not be used to implement getOwnPropertyDescriptor, since there is a loss of information re getters (they have already been resolved), but I wonder if we could structure it the other way around – only implement the full complex logic for getOwnPropertyDescriptor, and make gopSlot call this.  If the slot returned by getOwnPropertyDescriptor describes a getter, then gopSlot could invoke it.  Please cogitate and ruminate on this suggestion, and if you can&apos;t make it better, r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142815</commentid>
    <comment_count>8</comment_count>
      <attachid>38578</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2009-08-26 02:48:02 -0700</bug_when>
    <thetext>Comment on attachment 38578
JavaScriptCore portion of patch

&gt; +bool JSVariableObject::symbolTableGet(const Identifier&amp; propertyName, PropertyDescriptor&amp; descriptor)

I don&apos;t really like this name.  I expect get to just get values, whereas this gets a description.  It seems that all other methods that retrieve PropertyDescriptors have &apos;Descriptor&apos; in their name, so it seems like this method should too.

&gt;      /**
&gt; +     * Simplified version of getStaticPropertyDescriptor in case there are no functions, only &quot;values&quot;.
&gt; +     * Using this instead of getStaticPropertyDescriptor removes the need for a FuncImp class.
&gt; +     */

The phrase &quot;in case there are no functions&quot; reads oddly to me (and with a different meaning than I think you intend).  I would suggest that &quot;in cases where there are no functions&quot; reads very differently to me (and with a meaning closer to what I think you want).  The same goes for the comment on partner method for only functions.

&gt;  ObjectConstructor::ObjectConstructor(ExecState* exec, PassRefPtr&lt;Structure&gt; structure, ObjectPrototype* objectPrototype, Structure* prototypeFunctionStructure)
&gt; -    : InternalFunction(&amp;exec-&gt;globalData(), structure, Identifier(exec, &quot;Object&quot;))
&gt; +: InternalFunction(&amp;exec-&gt;globalData(), structure, Identifier(exec, &quot;Object&quot;))
&gt;  {
&gt;      // ECMA 15.2.3.1
&gt;      putDirectWithoutTransition(exec-&gt;propertyNames().prototype, objectPrototype, DontEnum | DontDelete | ReadOnly);
&gt; -
&gt; +    
&gt;      // no. of arguments for constructor
&gt;      putDirectWithoutTransition(exec-&gt;propertyNames().length, jsNumber(exec, 1), ReadOnly | DontEnum | DontDelete);
&gt; -
&gt; +    
&gt;      putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, prototypeFunctionStructure, 1, exec-&gt;propertyNames().getPrototypeOf, objectConstructorGetPrototypeOf), DontEnum);
&gt; +    putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, prototypeFunctionStructure, 2, exec-&gt;propertyNames().getOwnPropertyDescriptor, objectConstructorGetOwnPropertyDescriptor), DontEnum);
&gt;  }

3x garbled whitespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142876</commentid>
    <comment_count>9</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-08-26 10:00:22 -0700</bug_when>
    <thetext>Landed r47780</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142886</commentid>
    <comment_count>10</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-08-26 10:34:47 -0700</bug_when>
    <thetext>Followups in r47781 and r47782</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142896</commentid>
    <comment_count>11</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2009-08-26 11:00:36 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; getOwnPropertySlot is insufficient for getPropertyDescriptor as
&gt; getOwnPropertySlot doesn&apos;t provide the information needed for getters and
&gt; setters (and QuarantinedObjectWrapper needs to do special work regardless).

I didn&apos;t ask about getOwnPropertySlot. I asked about getPropertyAttributes.

I really don&apos;t like the approach of copying all the getOwnPropertySlot functions. Duplicate code is error prone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143136</commentid>
    <comment_count>12</comment_count>
    <who name="Mark S. Miller">erights</who>
    <bug_when>2009-08-27 09:49:45 -0700</bug_when>
    <thetext>Since the changeset that closed this out says:

&gt; ES5 is vague
&gt; about how getOwnPropertyDescriptor should work in the context of
&gt; &quot;host&quot; functions with polymorphic &apos;GetOwnProperty&apos;, so it seem okay that 
&gt; occasionally we &quot;guess&quot; what attributes -- eg. determining
&gt; whether a property is writable.

it is worth pointing out that, while ES5 gives some freedom, it also imposes some real constraints, especially on the writable and configurable attributes. The note at the end of 8.6.2 on page 34 of http://wiki.ecmascript.org/lib/exe/fetch.php?id=es3.1%3Aes3.1_proposal_working_draft&amp;cache=cache&amp;media=es3.1:es5-final-8-22.pdf says:

-------------------
The [[GetOwnProperty]] internal method of a host object must conform to the following invariants for each property of the host object:

    * If a property is described as a data property and it may return different values over time, then either or both of the [[Writable]] and [[Configurable] attributes must be true even if no mechanism to change the value is exposed via the other internal methods.
    * If a property is described as a data property and its [[Writable]] and [[Configurable]] are both false, then the SameValue (according to 9.12) must be returned for the [[Value]] attribute of the property on all calls to [[GetOwnProperty]].
    * If the attributes other than [[Writable]] may change over time or if the property might disappear, then the [[Configurable]] attribute must be true.
    * If the [[Writable]] attribute may change from false to true, then the [[Configurable]] attribute must be true.
    * If the value of the host object‘s [[Extensible]] internal property is has been observed by ECMAScript code to be false, then if a call to [[GetOwnProperty]] describes a property as non-existent all subsequent calls must also describe that property as non-existent.

The [[DefineOwnProperty]] internal method of a host object must not permit the addition of a new property to a host object if the [[Extensible]] internal property of that host object has been observed by ECMAScript code to be false.
    If the [[Extensible]] internal property of that host object has been observed by ECMAScript code to be false then it must not subsequently become true.
-------------------


If the changeset in question does not conform to these constraints, I ask that this bug be reopened.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143152</commentid>
    <comment_count>13</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-08-27 11:03:25 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Since the changeset that closed this out says:
&gt; 
&gt; &gt; ES5 is vague
&gt; &gt; about how getOwnPropertyDescriptor should work in the context of
&gt; &gt; &quot;host&quot; functions with polymorphic &apos;GetOwnProperty&apos;, so it seem okay that 
&gt; &gt; occasionally we &quot;guess&quot; what attributes -- eg. determining
&gt; &gt; whether a property is writable.
&gt; 
&gt; it is worth pointing out that, while ES5 gives some freedom, it also imposes
&gt; some real constraints, especially on the writable and configurable attributes.
&gt; The note at the end of 8.6.2 on page 34 of
&gt; http://wiki.ecmascript.org/lib/exe/fetch.php?id=es3.1%3Aes3.1_proposal_working_draft&amp;cache=cache&amp;media=es3.1:es5-final-8-22.pdf
&gt; says:
&gt; 
&gt; -------------------
&gt; The [[GetOwnProperty]] internal method of a host object must conform to the
&gt; following invariants for each property of the host object:
&gt; 
&gt;     * If a property is described as a data property and it may return different
&gt; values over time, then either or both of the [[Writable]] and [[Configurable]
&gt; attributes must be true even if no mechanism to change the value is exposed via
&gt; the other internal methods.
&gt;     * If a property is described as a data property and its [[Writable]] and
&gt; [[Configurable]] are both false, then the SameValue (according to 9.12) must be
&gt; returned for the [[Value]] attribute of the property on all calls to
&gt; [[GetOwnProperty]].
&gt;     * If the attributes other than [[Writable]] may change over time or if the
&gt; property might disappear, then the [[Configurable]] attribute must be true.
&gt;     * If the [[Writable]] attribute may change from false to true, then the
&gt; [[Configurable]] attribute must be true.
&gt;     * If the value of the host object‘s [[Extensible]] internal property is has
&gt; been observed by ECMAScript code to be false, then if a call to
&gt; [[GetOwnProperty]] describes a property as non-existent all subsequent calls
&gt; must also describe that property as non-existent.

The reality is that it is highly likely that this is something that we can guarantee will be true in all cases, more over we cannot even be sure that the behaviour (on the DOM) will match anyone elses in future  -- getOwnPropertyDescriptor is going to be a world of pain for things like the DOM as basically it exposes the underlying implementation in a way that should never have been allowed. eg. nothing in any spec defines how style.offsetLeft is implemented, but getOwnPropertyDescriptor will expose whether it&apos;s implemented as a value (what we do) or as getter/setter (as firefox _likely_) does.  It gets better -- due to security constraints accessing proeprties of the same object from a different origin may give you wholly different values.  Weee!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143215</commentid>
    <comment_count>14</comment_count>
    <who name="Mark S. Miller">erights</who>
    <bug_when>2009-08-27 15:31:30 -0700</bug_when>
    <thetext>Regarding the ES5 constraints quoted in comment #12 and the reply in #13 
  &gt; The reality is that it is highly likely that this is something that we 
  &gt; can guarantee will be true in all cases...
you can always trivially meet the stated requirements: For these host objects, always say that &apos;writable&apos;, &apos;configurable&apos;, and [[Extensible]] are true. This does not mean that these properties/objects can necessarily be written, configured, or extended. It just avoids making a promise that they can&apos;t. Any of these as false does make such a promise. Don&apos;t make promises you can&apos;t keep.

Of course the remaining issue is a quality of implementation issue. If you do know that a property&apos;s value and attributes will never change, it is more useful but not required to say {writable: false, configurable: false}. Likewise if you know an object will never be extended it is more useful for [[Extensible]] to be false.


&gt; expose whether it&apos;s implemented as a value [..] or as getter/setter

Within these constraints the spec does allow getter/setter implementations to describe themselves via getOwnPropertyDescriptor as a data/value property, and vice versa. The joining of non-strict &apos;arguments&apos; to parameter variables is specified in terms of getter/setters. But the behavior of getOwnPropertyDescriptor on non-strict arguments is specified to &quot;lie&quot; about this and explain these properties as if they were data properties. Host objects are free to use the same subterfuge.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143217</commentid>
    <comment_count>15</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-08-27 15:39:38 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt;  Likewise if you know an object will never be extended it is more useful for
&gt; [[Extensible]] to be false.
[[Extensible]] will not be an issue as that is a property of the object not of an individual property

&gt; 
&gt; 
&gt; &gt; expose whether it&apos;s implemented as a value [..] or as getter/setter
&gt; 
&gt; Within these constraints the spec does allow getter/setter implementations to
&gt; describe themselves via getOwnPropertyDescriptor as a data/value property, and
&gt; vice versa. The joining of non-strict &apos;arguments&apos; to parameter variables is
&gt; specified in terms of getter/setters. But the behavior of
&gt; getOwnPropertyDescriptor on non-strict arguments is specified to &quot;lie&quot; about
&gt; this and explain these properties as if they were data properties. Host objects
&gt; are free to use the same subterfuge.
Arguments is defined in strict mode as having getter/setters so that has to be exposed -- the specific issue is the DOM which is not defined by ECMA, and the mechanism of implementation of a DOM lookup is completely undefined.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38578</attachid>
            <date>2009-08-25 17:10:41 -0700</date>
            <delta_ts>2009-08-26 02:48:02 -0700</delta_ts>
            <desc>JavaScriptCore portion of patch</desc>
            <filename>getOwnPropertyDescriptor-jsc.patch</filename>
            <type>text/plain</type>
            <size>60390</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA4ZmNiZGFmLi4xZGY2MTJlIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA1
IEBACisyMDA5LTA4LTI1ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0VTNV0gSW1wbGVtZW50
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mjg3MjQKKworICAgICAgICBJbXBsZW1lbnQgdGhlIGNvcmUgcnVu
dGltZSBzdXBwb3J0IGZvciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuCisgICAgICAgIFRoaXMg
YWRkcyBhIHZpcnR1YWwgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIG1ldGhvZCB0byBldmVyeSBj
bGFzcworICAgICAgICB0aGF0IGltcGxlbWVudHMgZ2V0T3duUHJvcGVydHlTbG90IHRoYXQgc2hh
ZG93cyB0aGUgYmVoYXZpb3VyIG9mCisgICAgICAgIGdldE93blByb3BlcnR5U2xvdC4gIFRoZSBh
bHRlcm5hdGl2ZSB3b3VsZCBiZSB0byBtYWtlIGdldE93blByb3BlcnR5U2xvdAorICAgICAgICAo
b3IgUHJvcGVydHlTbG90cyBpbiBnZW5lcmFsKSBwcm92aWRlIHByb3BlcnR5IGF0dHJpYnV0ZSBp
bmZvcm1hdGlvbiwKKyAgICAgICAgYnV0IHF1aWNrIHRlc3Rpbmcgc2hvd2VkIHRoaXMgdG8gYmUg
YSByZWdyZXNzaW9uLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhwOgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcnVu
dGltZS9Bcmd1bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAg
KiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5
cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9BcnJheVBy
b3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAg
ICAgKiBydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpEYXRlUHJvdG90
eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZVBy
b3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6
OkpTQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9K
U0FycmF5Lmg6CisgICAgICAgICogcnVudGltZS9KU0J5dGVBcnJheS5jcHA6CisgICAgICAgIChK
U0M6OkpTQnl0ZUFycmF5OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNCeXRlQXJyYXkuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgor
ICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9KU05vdEFuT2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNOb3RBbk9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAg
KiBydW50aW1lL0pTTm90QW5PYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU09OT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoSlNDOjpKU09OT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldFByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICog
cnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuY3BwOgorICAg
ICAgICAoSlNDOjpKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAg
ICAgKEpTQzo6SlNTdHJpbmc6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICog
cnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OkpTVmFyaWFibGVPYmplY3Q6OnN5bWJvbFRhYmxlR2V0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0xv
b2t1cC5oOgorICAgICAgICAoSlNDOjpnZXRTdGF0aWNQcm9wZXJ0eURlc2NyaXB0b3IpOgorICAg
ICAgICAoSlNDOjpnZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpn
ZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3IpOgorICAgICAgICAgIEFkZCBwcm9wZXJ0eSBkZXNjcmlw
dG9yIGVxdWl2YWxlbnRzIG9mIHRoZSBsb29rdXAKKyAgICAgICAgICB0YWJsZSBhY2Nlc3MgZnVu
Y3Rpb25zCisKKyAgICAgICAgKiBydW50aW1lL01hdGhPYmplY3QuY3BwOgorICAgICAgICAoSlND
OjpNYXRoT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpNYXRoT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvTWF0aE9i
amVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpOdW1iZXJDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAg
ICAgICAgKiBydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9P
YmplY3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0cnVjdG9yOjpP
YmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRv
ci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3I6OndyaXRhYmxl
KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yOjplbnVtZXJhYmxlKToKKyAgICAg
ICAgKEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yOjpjb25maWd1cmFibGUpOgorICAgICAgICAoSlND
OjpQcm9wZXJ0eURlc2NyaXB0b3I6Omhhc0FjY2Vzc29ycyk6CisgICAgICAgIChKU0M6OlByb3Bl
cnR5RGVzY3JpcHRvcjo6c2V0VW5kZWZpbmVkKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlEZXNj
cmlwdG9yOjpnZXR0ZXIpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3I6OnNldHRl
cik6CisgICAgICAgIChKU0M6OlByb3BlcnR5RGVzY3JpcHRvcjo6c2V0RGVzY3JpcHRvcik6Cisg
ICAgICAgIChKU0M6OlByb3BlcnR5RGVzY3JpcHRvcjo6c2V0QWNjZXNzb3JEZXNjcmlwdG9yKToK
KyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yOjpQcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAo
SlNDOjpQcm9wZXJ0eURlc2NyaXB0b3I6OmF0dHJpYnV0ZXMpOgorICAgICAgICAoSlNDOjpQcm9w
ZXJ0eURlc2NyaXB0b3I6OmlzVmFsaWQpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eURlc2NyaXB0
b3I6OnZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6UmVnRXhwQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6
CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRp
bWUvUmVnRXhwTWF0Y2hlc0FycmF5Lmg6CisgICAgICAgIChKU0M6OlJlZ0V4cE1hdGNoZXNBcnJh
eTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5oOgorICAgICAgICAqIHJ1
bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0Lmg6
CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpT
dHJpbmdQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVu
dGltZS9TdHJpbmdQcm90b3R5cGUuaDoKKwogMjAwOS0wOC0yNSAgQnJlbnQgRnVsZ2hhbSAgPGJm
dWxnaGFtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChCdWlsZGZp
eCkuCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAgYi9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKaW5kZXggYmI3NWI0NS4uNzQ3MDIyYSAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCisrKyBiL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cApAQCAtMTE3LDYgKzExNyw3IEBAIF9fWk4zSlNDMTJT
dHJpbmdPYmplY3QxNHRvVGhpc0pTU3RyaW5nRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0MxMlN0
cmluZ09iamVjdDE2Z2V0UHJvcGVydHlOYW1lc0VQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0
eU5hbWVBcnJheUUKIF9fWk4zSlNDMTJTdHJpbmdPYmplY3QxOGdldE93blByb3BlcnR5U2xvdEVQ
TlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMTJQcm9wZXJ0eVNsb3RFCiBfX1pO
M0pTQzEyU3RyaW5nT2JqZWN0MThnZXRPd25Qcm9wZXJ0eVNsb3RFUE5TXzlFeGVjU3RhdGVFalJO
U18xMlByb3BlcnR5U2xvdEUKK19fWk4zSlNDMTJTdHJpbmdPYmplY3QyNGdldE93blByb3BlcnR5
RGVzY3JpcHRvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMThQcm9wZXJ0
eURlc2NyaXB0b3JFCiBfX1pOM0pTQzEyU3RyaW5nT2JqZWN0M3B1dEVQTlNfOUV4ZWNTdGF0ZUVS
S05TXzEwSWRlbnRpZmllckVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFCiBfX1pO
M0pTQzEyU3RyaW5nT2JqZWN0NGluZm9FCiBfX1pOM0pTQzEyU3RyaW5nT2JqZWN0QzJFUE5TXzlF
eGVjU3RhdGVFTjNXVEYxMFBhc3NSZWZQdHJJTlNfOVN0cnVjdHVyZUVFRVJLTlNfN1VTdHJpbmdF
CkBAIC0xNDYsNiArMTQ3LDcgQEAgX19aTjNKU0MxNkludGVybmFsRnVuY3Rpb240aW5mb0UKIF9f
Wk4zSlNDMTZJbnRlcm5hbEZ1bmN0aW9uNG5hbWVFUE5TXzEySlNHbG9iYWxEYXRhRQogX19aTjNK
U0MxNkludGVybmFsRnVuY3Rpb25DMkVQTlNfMTJKU0dsb2JhbERhdGFFTjNXVEYxMFBhc3NSZWZQ
dHJJTlNfOVN0cnVjdHVyZUVFRVJLTlNfMTBJZGVudGlmaWVyRQogX19aTjNKU0MxNkpTVmFyaWFi
bGVPYmplY3QxNGRlbGV0ZVByb3BlcnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVy
RQorX19aTjNKU0MxNkpTVmFyaWFibGVPYmplY3QxNHN5bWJvbFRhYmxlR2V0RVJLTlNfMTBJZGVu
dGlmaWVyRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDMTZKU1ZhcmlhYmxlT2Jq
ZWN0MTZnZXRQcm9wZXJ0eU5hbWVzRVBOU185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFy
cmF5RQogX19aTjNKU0MxNnRvVUludDMyU2xvd0Nhc2VFZFJiCiBfX1pOM0pTQzE3Qnl0ZWNvZGVH
ZW5lcmF0b3IyMXNldER1bXBzR2VuZXJhdGVkQ29kZUViCkBAIC0xNTQsNiArMTU2LDExIEBAIF9f
Wk4zSlNDMTdQcm90b3R5cGVGdW5jdGlvbkMxRVBOU185RXhlY1N0YXRlRU4zV1RGMTBQYXNzUmVm
UHRySU5TXzlTdHJ1Y3R1cmVFRUVpCiBfX1pOM0pTQzE3UHJvdG90eXBlRnVuY3Rpb25DMUVQTlNf
OUV4ZWNTdGF0ZUVpUktOU18xMElkZW50aWZpZXJFUEZOU183SlNWYWx1ZUVTMl9QTlNfOEpTT2Jq
ZWN0RVM2X1JLTlNfN0FyZ0xpc3RFRQogX19aTjNKU0MxN2NvbnN0cnVjdEZ1bmN0aW9uRVBOU185
RXhlY1N0YXRlRVJLTlNfN0FyZ0xpc3RFUktOU18xMElkZW50aWZpZXJFUktOU183VVN0cmluZ0Vp
CiBfX1pOM0pTQzE4RGVidWdnZXJBY3RpdmF0aW9uQzFFUE5TXzhKU09iamVjdEUKK19fWk4zSlND
MThQcm9wZXJ0eURlc2NyaXB0b3IxMnNldFVuZGVmaW5lZEV2CitfX1pOM0pTQzE4UHJvcGVydHlE
ZXNjcmlwdG9yMTNzZXREZXNjcmlwdG9yRU5TXzdKU1ZhbHVlRWoKK19fWk4zSlNDMThQcm9wZXJ0
eURlc2NyaXB0b3IyMXNldEFjY2Vzc29yRGVzY3JpcHRvckVOU183SlNWYWx1ZUVTMV9qCitfX1pO
SzNKU0MxOFByb3BlcnR5RGVzY3JpcHRvcjZzZXR0ZXJFdgorX19aTkszSlNDMThQcm9wZXJ0eURl
c2NyaXB0b3I2Z2V0dGVyRXYKIF9fWk4zSlNDMTljb25zdHJ1Y3RFbXB0eUFycmF5RVBOU185RXhl
Y1N0YXRlRQogX19aTjNKU0MxOWluaXRpYWxpemVUaHJlYWRpbmdFdgogX19aTjNKU0MyME1hcmtl
ZEFyZ3VtZW50QnVmZmVyMTBzbG93QXBwZW5kRU5TXzdKU1ZhbHVlRQpAQCAtMjQ0LDggKzI1MSwx
MCBAQCBfX1pOM0pTQzhKU09iamVjdDE3cHV0V2l0aEF0dHJpYnV0ZXNFUE5TXzlFeGVjU3RhdGVF
UktOU18xMElkZW50aWZpZXJFTlNfN0pTVmFsdQogX19aTjNKU0M4SlNPYmplY3QxN3B1dFdpdGhB
dHRyaWJ1dGVzRVBOU185RXhlY1N0YXRlRWpOU183SlNWYWx1ZUVqCiBfX1pOM0pTQzhKU09iamVj
dDE4Z2V0T3duUHJvcGVydHlTbG90RVBOU185RXhlY1N0YXRlRWpSTlNfMTJQcm9wZXJ0eVNsb3RF
CiBfX1pOM0pTQzhKU09iamVjdDE4Z2V0UHJpbWl0aXZlTnVtYmVyRVBOU185RXhlY1N0YXRlRVJk
Uk5TXzdKU1ZhbHVlRQorX19aTjNKU0M4SlNPYmplY3QyMWdldFByb3BlcnR5RGVzY3JpcHRvckVQ
TlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JF
CiBfX1pOM0pTQzhKU09iamVjdDIyZmlsbEdldHRlclByb3BlcnR5U2xvdEVSTlNfMTJQcm9wZXJ0
eVNsb3RFUE5TXzdKU1ZhbHVlRSAgCiBfX1pOM0pTQzhKU09iamVjdDIzYWxsb2NhdGVQcm9wZXJ0
eVN0b3JhZ2VFbW0KK19fWk4zSlNDOEpTT2JqZWN0MjRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JF
UE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUk5TXzE4UHJvcGVydHlEZXNjcmlwdG9y
RQogX19aTjNKU0M4SlNPYmplY3QzcHV0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVy
RU5TXzdKU1ZhbHVlRVJOU18xNVB1dFByb3BlcnR5U2xvdEUKIF9fWk4zSlNDOEpTT2JqZWN0M3B1
dEVQTlNfOUV4ZWNTdGF0ZUVqTlNfN0pTVmFsdWVFICAKIF9fWk4zSlNDOFByb2ZpbGVyMTNzdG9w
UHJvZmlsaW5nRVBOU185RXhlY1N0YXRlRVJLTlNfN1VTdHJpbmdFCkBAIC0zMzcsNiArMzQ2LDcg
QEAgX19aTkszSlNDMTdEZWJ1Z2dlckNhbGxGcmFtZTEyZnVuY3Rpb25OYW1lRXYKIF9fWk5LM0pT
QzE3RGVidWdnZXJDYWxsRnJhbWUyMmNhbGN1bGF0ZWRGdW5jdGlvbk5hbWVFdgogX19aTkszSlND
MTdEZWJ1Z2dlckNhbGxGcmFtZTR0eXBlRXYKIF9fWk5LM0pTQzE3RGVidWdnZXJDYWxsRnJhbWU4
ZXZhbHVhdGVFUktOU183VVN0cmluZ0VSTlNfN0pTVmFsdWVFCitfX1pOSzNKU0MxOFByb3BlcnR5
RGVzY3JpcHRvcjEyaGFzQWNjZXNzb3JzRXYKIF9fWk5LM0pTQzRIZWFwMTBzdGF0aXN0aWNzRXYK
IF9fWk5LM0pTQzZKU0NlbGwxMnRvVGhpc09iamVjdEVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk5LM0pT
QzZKU0NlbGwxMnRvVGhpc1N0cmluZ0VQTlNfOUV4ZWNTdGF0ZUUKZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDc2NDdiMDkuLjFiNjJhZDAgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE1LDYgKzIxNSw4IEBACiAJ
CUE3RTJFQTZDMEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RTJFQTZBMEZCNDYwQ0YwMDYw
MUYwNiAvKiBMaXRlcmFsUGFyc2VyLmNwcCAqLzsgfTsKIAkJQTdGOTkzNUYwRkQ3MzI1MTAwQTBC
MkQwIC8qIEpTT05PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3Rjk5MzVEMEZENzMyNTEwMEEwQjJEMCAvKiBKU09OT2JqZWN0LmggKi87IH07
CiAJCUE3Rjk5MzYwMEZENzMyNTEwMEEwQjJEMCAvKiBKU09OT2JqZWN0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Rjk5MzVFMEZENzMyNTEwMEEw
QjJEMCAvKiBKU09OT2JqZWN0LmNwcCAqLzsgfTsKKwkJQTdGQjYwQTQxMDNGN0RDMjAwMTdBMjg2
IC8qIFByb3BlcnR5RGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBN0ZCNjBBMzEwM0Y3REMyMDAxN0EyODYgLyogUHJvcGVydHlEZXNj
cmlwdG9yLmNwcCAqLzsgfTsKKwkJQTdGQjYxMDAxMDQwQzM4QjAwMTdBMjg2IC8qIFByb3BlcnR5
RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTdGQjYwNEIxMDNGNUVBQjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMDJFOTBEMEUx
ODM5REIwMDBGOTI5NyAvKiBFcnJvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAyRTkwNTBFMTgzOURCMDAwRjkyOTcgLyogRXJy
b3JDb25zdHJ1Y3Rvci5oICovOyB9OwogCQlCQzAyRTkwRjBFMTgzOURCMDAwRjkyOTcgLyogRXJy
b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMDJFOTA3MEUxODM5REIwMDBGOTI5NyAvKiBFcnJvclByb3RvdHlwZS5oICovOyB9Owog
CQlCQzAyRTkxMTBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMkU5MDkwRTE4
MzlEQjAwMEY5Mjk3IC8qIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCAqLzsgfTsKQEAgLTc2OCw2
ICs3NzAsOCBAQAogCQlBN0Y5OTM1RDBGRDczMjUxMDBBMEIyRDAgLyogSlNPTk9iamVjdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU09OT2JqZWN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE3Rjk5MzVFMEZENzMyNTEwMEEwQjJEMCAvKiBKU09OT2JqZWN0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTT05PYmplY3QuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0Y5OTQ5QTBGRDc0NkEzMDBBMEIyRDAg
LyogSlNPTk9iamVjdC5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNP
Tk9iamVjdC5sdXQuaDsgcGF0aCA9IC9Vc2Vycy9vbGl2ZXIvYnVpbGRzL0RlYnVnL0Rlcml2ZWRT
b3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTT05PYmplY3QubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGFi
c29sdXRlPiI7IH07CisJCUE3RkI2MDRCMTAzRjVFQUIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2Ny
aXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvcGVydHlEZXNjcmlw
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RkI2MEEzMTAzRjdEQzIwMDE3
QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUHJvcGVydHlEZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQThFODk0MzEwQ0QwNjAyNDAwMzY3MTc5IC8qIEpTQ2FsbGJhY2tPYmplY3RGdW5j
dGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDYWxsYmFja09iamVj
dEZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEU4OTQzMzBDRDA2
MDNGMDAzNjcxNzkgLyogSlNHbG9iYWxPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNHbG9iYWxPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkMwMkU5MDQwRTE4MzlEQjAwMEY5Mjk3IC8qIEVycm9yQ29uc3RydWN0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXJyb3JDb25zdHJ1Y3Rvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzM4LDYgKzEzNDIsNyBAQAogCQk3RUY2RTBCQjBF
QjdBMUVDMDA3OUFGQUYgLyogcnVudGltZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJQTdGQjYwNEIxMDNGNUVBQjAwMTdBMjg2IC8qIFByb3BlcnR5RGVz
Y3JpcHRvci5oICovLAogCQkJCUJDRjYwNTExMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNw
cCAqLywKIAkJCQlCQ0Y2MDUxMjBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oICovLAogCQkJ
CUJDMjU3REU1MEUxRjUxQzUwMDE2QjZDOSAvKiBBcmd1bWVudHMuY3BwICovLApAQCAtMTUxMCw2
ICsxNTE1LDcgQEAKIAkJCQlBNzc5NTU4RjEwMUE3NEQ1MDAxMTRFNTUgLyogTWFya1N0YWNrLmgg
Ki8sCiAJCQkJQTdDNTMwRTMxMDJBMzgxMzAwNUJDNzQxIC8qIE1hcmtTdGFja1Bvc2l4LmNwcCAq
LywKIAkJCQlBNzRCMzQ5ODEwMkE1RjhFMDAzMkFCOTggLyogTWFya1N0YWNrLmNwcCAqLywKKwkJ
CQlBN0ZCNjBBMzEwM0Y3REMyMDAxN0EyODYgLyogUHJvcGVydHlEZXNjcmlwdG9yLmNwcCAqLywK
IAkJCSk7CiAJCQlwYXRoID0gcnVudGltZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBA
IC0xOTE1LDYgKzE5MjEsNyBAQAogCQkJCUE3RDY0OUFBMTAxNTIyNEUwMDlCMkUxQiAvKiBQb3Nz
aWJseU51bGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2Q0FGRUUzMTAzNURERTYwMDI4QTYwOSAv
KiBFeGVjdXRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDJEMzkzOTEwM0U0NTYwMDA3RENC
NTIgLyogTnVtZXJpY1N0cmluZ3MuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3RkI2MTAwMTA0MEMz
OEIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjI4
NCw2ICsyMjkxLDcgQEAKIAkJCQlBN0M1MzBFNDEwMkEzODEzMDA1QkM3NDEgLyogTWFya1N0YWNr
UG9zaXguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc0QjM0OTkxMDJBNUY4RTAwMzJBQjk4IC8q
IE1hcmtTdGFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkNBMDMyRTEwMzhFODQ0MDAyOEE2
MDkgLyogRXhlY3V0YWJsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBN0ZCNjBBNDEwM0Y3REMy
MDAxN0EyODYgLyogUHJvcGVydHlEZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwIGIvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCmluZGV4IGVjOWM0NTAuLjg2YThmMGEgMTAwNjQ0Ci0t
LSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAorKysgYi9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKQEAgLTE3OSw2ICsxNzksMzEgQEAgYm9vbCBBcmd1
bWVudHM6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmEKICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCitib29sIEFyZ3VtZW50czo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgYm9vbCBpc0Fy
cmF5SW5kZXg7CisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgoJmlz
QXJyYXlJbmRleCk7CisgICAgaWYgKGlzQXJyYXlJbmRleCAmJiBpIDwgZC0+bnVtQXJndW1lbnRz
ICYmICghZC0+ZGVsZXRlZEFyZ3VtZW50cyB8fCAhZC0+ZGVsZXRlZEFyZ3VtZW50c1tpXSkpIHsK
KyAgICAgICAgaWYgKGkgPCBkLT5udW1QYXJhbWV0ZXJzKSB7CisgICAgICAgICAgICBkZXNjcmlw
dG9yLnNldERlc2NyaXB0b3IoZC0+cmVnaXN0ZXJzW2QtPmZpcnN0UGFyYW1ldGVySW5kZXggKyBp
XS5qc1ZhbHVlKCksIERvbnRFbnVtKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBkZXNj
cmlwdG9yLnNldERlc2NyaXB0b3IoZC0+ZXh0cmFBcmd1bWVudHNbaSAtIGQtPm51bVBhcmFtZXRl
cnNdLmpzVmFsdWUoKSwgRG9udEVudW0pOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisg
ICAgCisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3Ro
ICYmIExJS0VMWSghZC0+b3ZlcnJvZGVMZW5ndGgpKSB7CisgICAgICAgIGRlc2NyaXB0b3Iuc2V0
RGVzY3JpcHRvcihqc051bWJlcihleGVjLCBkLT5udW1Bcmd1bWVudHMpLCBEb250RW51bSk7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICBpZiAocHJvcGVydHlOYW1lID09
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZWUgJiYgTElLRUxZKCFkLT5vdmVycm9kZUNhbGxl
ZSkpIHsKKyAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKGQtPmNhbGxlZSwgRG9udEVu
dW0pOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIEpTT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlw
dG9yKTsKK30KKwogdm9pZCBBcmd1bWVudHM6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IGksIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBpZiAoaSA8
IGQtPm51bUFyZ3VtZW50cyAmJiAoIWQtPmRlbGV0ZWRBcmd1bWVudHMgfHwgIWQtPmRlbGV0ZWRB
cmd1bWVudHNbaV0pKSB7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3Vt
ZW50cy5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAppbmRleCA4NmI2ZDVk
Li41YmU4NGEyIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5o
CisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKQEAgLTkyLDYgKzkyLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZ2V0QXJndW1lbnRzRGF0YShDYWxsRnJh
bWUqLCBKU0Z1bmN0aW9uKiYsIHB0cmRpZmZfdCYgZmlyc3RQYXJhbWV0ZXJJbmRleCwgUmVnaXN0
ZXIqJiBhcmd2LCBpbnQmIGFyZ2MpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0
YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgdmly
dHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwdXQo
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2
aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQ
cm90b3R5cGUuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAK
aW5kZXggNGVhODJjNC4uZTFiMWYzNCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVBy
b3RvdHlwZS5jcHAKQEAgLTEyNSw2ICsxMjUsMTEgQEAgYm9vbCBBcnJheVByb3RvdHlwZTo6Z2V0
T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGUK
ICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEpTQXJyYXk+KGV4ZWMsIEV4ZWNTdGF0
ZTo6YXJyYXlUYWJsZShleGVjKSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAorYm9v
bCBBcnJheVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcjxKU0Fy
cmF5PihleGVjLCBFeGVjU3RhdGU6OmFycmF5VGFibGUoZXhlYyksIHRoaXMsIHByb3BlcnR5TmFt
ZSwgZGVzY3JpcHRvcik7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBB
cnJheSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvLyBIZWxwZXIg
ZnVuY3Rpb24KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5
cGUuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaAppbmRleCAyMTY1
MDg5Li42ZjdlZDEyIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJv
dG90eXBlLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oCkBA
IC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBleHBsaWNpdCBBcnJheVBy
b3RvdHlwZShQYXNzUmVmUHRyPFN0cnVjdHVyZT4pOwogCiAgICAgICAgIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsK
KyAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgdmly
dHVhbCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZpbmZvOyB9
CiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gaW5mbzsKZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCA2NzhlMTA5Li44ZDVkNTdhIDEwMDY0NAot
LS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0zNywxMiArMzcsMTYg
QEAKICAgICBtYWNybyhjYWxsZWUpIFwKICAgICBtYWNybyhjYWxsZXIpIFwKICAgICBtYWNybyhj
b21waWxlKSBcCisgICAgbWFjcm8oY29uZmlndXJhYmxlKSBcCiAgICAgbWFjcm8oY29uc3RydWN0
b3IpIFwKKyAgICBtYWNybyhlbnVtZXJhYmxlKSBcCiAgICAgbWFjcm8oZXZhbCkgXAogICAgIG1h
Y3JvKGV4ZWMpIFwKICAgICBtYWNybyhmcm9tQ2hhckNvZGUpIFwKICAgICBtYWNybyhnbG9iYWwp
IFwKKyAgICBtYWNybyhnZXQpIFwKICAgICBtYWNybyhnZXRQcm90b3R5cGVPZikgXAorICAgIG1h
Y3JvKGdldE93blByb3BlcnR5RGVzY3JpcHRvcikgXAogICAgIG1hY3JvKGhhc093blByb3BlcnR5
KSBcCiAgICAgbWFjcm8oaWdub3JlQ2FzZSkgXAogICAgIG1hY3JvKGluZGV4KSBcCkBAIC01Nyw2
ICs2MSw3IEBACiAgICAgbWFjcm8ocGFyc2UpIFwKICAgICBtYWNybyhwcm9wZXJ0eUlzRW51bWVy
YWJsZSkgXAogICAgIG1hY3JvKHByb3RvdHlwZSkgXAorICAgIG1hY3JvKHNldCkgXAogICAgIG1h
Y3JvKHNvdXJjZSkgXAogICAgIG1hY3JvKHRlc3QpIFwKICAgICBtYWNybyh0b0V4cG9uZW50aWFs
KSBcCkBAIC02Nyw3ICs3Miw5IEBACiAgICAgbWFjcm8odG9QcmVjaXNpb24pIFwKICAgICBtYWNy
byh0b1N0cmluZykgXAogICAgIG1hY3JvKFVUQykgXAorICAgIG1hY3JvKHZhbHVlKSBcCiAgICAg
bWFjcm8odmFsdWVPZikgXAorICAgIG1hY3JvKHdyaXRhYmxlKSBcCiAgICAgbWFjcm8oZGlzcGxh
eU5hbWUpCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRlUHJvdG90eXBlLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3Rv
dHlwZS5jcHAKaW5kZXggNTRkM2NmMy4uMTcwOGQ0NCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGVQcm90b3R5cGUuY3BwCkBAIC00MDcsNiArNDA3LDEyIEBAIGJvb2wgRGF0ZVByb3RvdHlw
ZTo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVyCiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywg
RXhlY1N0YXRlOjpkYXRlVGFibGUoZXhlYyksIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9
CiAKKworYm9vbCBEYXRlUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlw
dG9yPEpTT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6OmRhdGVUYWJsZShleGVjKSwgdGhpcywgcHJv
cGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKK30KKwogLy8gRnVuY3Rpb25zCiAKIEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCosIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JikKZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRlUHJvdG90eXBlLmgKaW5kZXggNWY0ZDBlYy4uMDIzMjQ1OSAxMDA2NDQKLS0tIGEvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmgKKysrIGIvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRlUHJvdG90eXBlLmgKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIERhdGVQcm90b3R5cGUoRXhlY1N0YXRlKiwgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
KTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgdmlydHVhbCBib29s
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwg
UHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgdmlydHVhbCBjb25zdCBDbGFzc0luZm8q
IGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZpbmZvOyB9CiAgICAgICAgIHN0YXRpYyBjb25z
dCBDbGFzc0luZm8gaW5mbzsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCmluZGV4IGNjMDAz
MzAuLjRmYjg4NzAgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5j
cHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtMjQxLDYgKzI0
MSwzNyBAQCBib29sIEpTQXJyYXk6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZQogICAgIHJldHVybiBKU09iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKK2Jvb2wgSlNB
cnJheTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7
CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7
CisgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihqc051bWJlcihleGVjLCBsZW5ndGgo
KSksIERvbnREZWxldGUgfCBEb250RW51bSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyAgICAKKyAgICBib29sIGlzQXJyYXlJbmRleDsKKyAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlO
YW1lLnRvQXJyYXlJbmRleCgmaXNBcnJheUluZGV4KTsKKyAgICBpZiAoaXNBcnJheUluZGV4KSB7
CisgICAgICAgIGlmIChpID49IG1fc3RvcmFnZS0+bV9sZW5ndGgpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIGlmIChpIDwgbV9zdG9yYWdlLT5tX3ZlY3Rvckxlbmd0aCkgewor
ICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG1fc3RvcmFnZS0+bV92ZWN0b3JbaV07CisgICAg
ICAgICAgICBpZiAodmFsdWUpIHsKKyAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLnNldERlc2Ny
aXB0b3IodmFsdWUsIDApOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgfQorICAgICAgICB9IGVsc2UgaWYgKFNwYXJzZUFycmF5VmFsdWVNYXAqIG1hcCA9IG1fc3Rv
cmFnZS0+bV9zcGFyc2VWYWx1ZU1hcCkgeworICAgICAgICAgICAgaWYgKGkgPj0gTUlOX1NQQVJT
RV9BUlJBWV9JTkRFWCkgeworICAgICAgICAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0
ZXJhdG9yIGl0ID0gbWFwLT5maW5kKGkpOworICAgICAgICAgICAgICAgIGlmIChpdCAhPSBtYXAt
PmVuZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihp
dC0+c2Vjb25kLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBK
U09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVz
Y3JpcHRvcik7Cit9CisKIC8vIEVDTUEgMTUuNC41LjEKIHZvaWQgSlNBcnJheTo6cHV0KEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCmluZGV4
IDg4ZDhlZTQuLmIwNDEwY2IgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCkBAIC00Nyw2ICs0
Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVj
U3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICB2
aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHB1
dChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUpOyAvLyBGSVhNRTog
TWFrZSBwcm90ZWN0ZWQgYW5kIGFkZCBzZXRJdGVtLgogCiAgICAgICAgIHN0YXRpYyBKU19FWFBP
UlREQVRBIGNvbnN0IENsYXNzSW5mbyBpbmZvOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0J5dGVBcnJheS5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFy
cmF5LmNwcAppbmRleCBmODMyNTc4Li5hMzBmMjM4IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQnl0ZUFycmF5LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Qnl0ZUFycmF5LmNwcApAQCAtNTksNyArNTksMTggQEAgYm9vbCBKU0J5dGVBcnJheTo6Z2V0T3du
UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkK
ICAgICB9CiAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJv
cGVydHlOYW1lLCBzbG90KTsKIH0KLSAgICAKKworYm9vbCBKU0J5dGVBcnJheTo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgYm9vbCBvazsK
KyAgICB1bnNpZ25lZCBpbmRleCA9IHByb3BlcnR5TmFtZS50b1VJbnQzMigmb2ssIGZhbHNlKTsK
KyAgICBpZiAob2sgJiYgY2FuQWNjZXNzSW5kZXgoaW5kZXgpKSB7CisgICAgICAgIGRlc2NyaXB0
b3Iuc2V0RGVzY3JpcHRvcihnZXRJbmRleChleGVjLCBpbmRleCksIERvbnREZWxldGUpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKK30KKwogYm9v
bCBKU0J5dGVBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgaWYgKGNhbkFjY2Vz
c0luZGV4KHByb3BlcnR5TmFtZSkpIHsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNCeXRlQXJyYXkuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaApp
bmRleCBhNTZhY2E2Li42NmZiNjdlIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQnl0ZUFycmF5LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5o
CkBAIC03OCw2ICs3OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgdmly
dHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgICAgICB2
aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHB1dChKU0M6OkV4ZWNT
dGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUs
IEpTQzo6UHV0UHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoSlNDOjpF
eGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSk7CiAKZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDU3YmJlOTguLjg5OTUxOGUgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtMTc3LDYgKzE3NywzNSBAQCBib29s
IEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TgogICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
ZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAorICAgIGJvb2wgSlNGdW5jdGlvbjo6Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCisgICAgeworICAg
ICAgICBpZiAoaXNIb3N0RnVuY3Rpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBCYXNlOjpnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKKyAg
ICAgICAgCisgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygp
LnByb3RvdHlwZSkgeworICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgICAg
ICBnZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAg
ICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlO
YW1lLCBkZXNjcmlwdG9yKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzKSB7CisgICAgICAgICAg
ICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3IoZXhlYy0+aW50ZXJwcmV0ZXIoKS0+cmV0cmlldmVB
cmd1bWVudHMoZXhlYywgdGhpcyksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBp
ZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKKyAgICAg
ICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihqc051bWJlcihleGVjLCBqc0V4ZWN1dGFi
bGUoKS0+cGFyYW1ldGVyQ291bnQoKSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRl
KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZXIpIHsKKyAg
ICAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihleGVjLT5pbnRlcnByZXRlcigpLT5y
ZXRyaWV2ZUNhbGxlcihleGVjLCB0aGlzKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxl
dGUpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlO
YW1lLCBkZXNjcmlwdG9yKTsKKyAgICB9CisgICAgCiB2b2lkIEpTRnVuY3Rpb246OnB1dChFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGlmIChpc0hvc3RGdW5jdGlvbigpKSB7
CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDI0ZWIyZjkuLjAxOWQ4M2IgMTAw
NjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC03OCw2ICs3OCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CiAK
ICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3Bl
cnR5RGVzY3JpcHRvciYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKaW5kZXggY2MzNmFkYS4uZDExNTBjYyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaApAQCAtMTcwLDYgKzE3MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2aXJ0dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOwogCiAgICAgICAgIHZp
cnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYsIFByb3BlcnR5U2xvdCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0
b3ImKTsKICAgICAgICAgdmlydHVhbCBib29sIGhhc093blByb3BlcnR5Rm9yV3JpdGUoRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRl
cyk7CkBAIC0zMjYsNiArMzI3LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4g
c3ltYm9sVGFibGVHZXQocHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAKKyAgICBpbmxpbmUg
Ym9vbCBKU0dsb2JhbE9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCisgICAgeworICAgICAgICBpZiAoc3ltYm9sVGFibGVHZXQocHJvcGVydHlO
YW1lLCBkZXNjcmlwdG9yKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1
cm4gSlNWYXJpYWJsZU9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIHByb3Bl
cnR5TmFtZSwgZGVzY3JpcHRvcik7CisgICAgfQorCiAgICAgaW5saW5lIGJvb2wgSlNHbG9iYWxP
YmplY3Q6Omhhc093blByb3BlcnR5Rm9yV3JpdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiAgICAgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsK
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAgYi9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuY3BwCmluZGV4IGE1NDJhOWYuLmY5
OTgyYjggMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5j
cHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmNwcApAQCAtOTMs
NiArOTMsMTIgQEAgYm9vbCBKU05vdEFuT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0
YXRlKiBleGVjLCB1bnNpZ25lZCwgUHJvcGVydHlTbG90JikKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKK2Jvb2wgSlNOb3RBbk9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpCit7CisgICAg
QVNTRVJUX1VOVVNFRChleGVjLCBleGVjLT5oYWRFeGNlcHRpb24oKSAmJiBleGVjLT5leGNlcHRp
b24oKSA9PSBtX2V4Y2VwdGlvbik7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIEpTTm90
QW5PYmplY3Q6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImICwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90JikKIHsKICAgICBBU1NFUlRfVU5VU0VEKGV4ZWMsIGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpICYmIGV4ZWMtPmV4Y2VwdGlvbigpID09IG1fZXhjZXB0aW9uKTsKZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oIGIvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgKaW5kZXggYjY1ZmY1Zi4uYzM5NDlkOCAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgKKysrIGIvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgKQEAgLTgwLDYgKzgwLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIEpTT2JqZWN0IG1ldGhvZHMKICAgICAgICAgdmlydHVh
bCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IHB1dChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUpOwpkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKaW5kZXggZmVkOWZjMy4uYmFlOWY1OSAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAorKysgYi9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBAIC01ODEsMTMgKzU4MSwxMiBAQCBjb25z
dCBDbGFzc0luZm8gSlNPTk9iamVjdDo6aW5mbyA9IHsgIkpTT04iLCAwLCAwLCBFeGVjU3RhdGU6
Ompzb25UYWJsZSB9OwogCiBib29sIEpTT05PYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQogewotICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSBFeGVjU3RhdGU6Ompzb25U
YWJsZShleGVjKS0+ZW50cnkoZXhlYywgcHJvcGVydHlOYW1lKTsKLSAgICBpZiAoIWVudHJ5KQot
ICAgICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+
KGV4ZWMsIEV4ZWNTdGF0ZTo6anNvblRhYmxlKGV4ZWMpLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOworfQogCi0gICAgQVNTRVJUKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbik7Ci0g
ICAgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoZXhlYywgZW50cnksIHRoaXMsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7Ci0gICAgcmV0dXJuIHRydWU7Citib29sIEpTT05PYmplY3Q6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBnZXRT
dGF0aWNGdW5jdGlvbkRlc2NyaXB0b3I8SlNPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6anNvblRh
YmxlKGV4ZWMpLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQogCiB2b2lkIEpT
T05PYmplY3Q6Om1hcmtTdHJpbmdpZmllcnMoTWFya1N0YWNrJiBtYXJrU3RhY2ssIFN0cmluZ2lm
aWVyKiBzdHJpbmdpZmllcikKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
Tk9iamVjdC5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmgKaW5kZXggYzYx
YjBkZC4uOGU5MDIxZiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2Jq
ZWN0LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmgKQEAgLTQ4LDYg
KzQ4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFs
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQ
cm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7
CiAKICAgICAgICAgdmlydHVhbCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsg
cmV0dXJuICZpbmZvOyB9CiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gaW5mbzsKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggNTc2MjRmYi4uZmEzYjdjYiAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIk5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eURlc2NyaXB0b3Iu
aCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgog
I2luY2x1ZGUgIk5vZGVzLmgiCkBAIC01MDQsNCArNTA1LDI3IEBAIEpTT2JqZWN0KiBjb25zdHJ1
Y3RFbXB0eU9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIG5ldyAoZXhlYykgSlNP
YmplY3QoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5lbXB0eU9iamVjdFN0cnVjdHVyZSgp
KTsKIH0KIAorYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQoreworICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwOworICAgIEpTQ2VsbCog
Y2VsbCA9IDA7CisgICAgc2l6ZV90IG9mZnNldCA9IG1fc3RydWN0dXJlLT5nZXQocHJvcGVydHlO
YW1lLCBhdHRyaWJ1dGVzLCBjZWxsKTsKKyAgICBpZiAob2Zmc2V0ID09IFdURjo6bm90Rm91bmQp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3IoZ2V0
RGlyZWN0T2Zmc2V0KG9mZnNldCksIGF0dHJpYnV0ZXMpOworICAgIHJldHVybiB0cnVlOworfQor
Citib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvcikKK3sKKyAgICBKU09iamVjdCogb2JqZWN0ID0gdGhpczsKKyAgICB3aGlsZSAodHJ1ZSkg
eworICAgICAgICBpZiAob2JqZWN0LT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJv
cGVydHlOYW1lLCBkZXNjcmlwdG9yKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICBKU1ZhbHVlIHByb3RvdHlwZSA9IG9iamVjdC0+cHJvdG90eXBlKCk7CisgICAgICAgIGlmICgh
cHJvdG90eXBlLmlzT2JqZWN0KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IG9iamVjdCA9IGFzT2JqZWN0KHByb3RvdHlwZSk7CisgICAgfQorfQogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggZjUxYjY4OS4uZmVjYzhkNSAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAKICAgICBjbGFzcyBIYXNoRW50cnk7CiAgICAgY2xhc3MgSW50ZXJuYWxGdW5jdGlv
bjsKKyAgICBjbGFzcyBQcm9wZXJ0eURlc2NyaXB0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1l
QXJyYXk7CiAgICAgY2xhc3MgU3RydWN0dXJlOwogICAgIHN0cnVjdCBIYXNoVGFibGU7CkBAIC05
NSw5ICs5NiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGdldFByb3BlcnR5
U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpOwogICAgICAgICBib29sIGdldFByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBib29sIGdldFByb3BlcnR5
RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3Rh
dGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICB2aXJ0
dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRl
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKTsKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5jcHAKaW5kZXggODZmOTVlMC4uOTFkZGFlYiAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5jcHAKQEAgLTEwMyw2ICsxMDMsMzMgQEAgYm9vbCBKU1N0cmluZzo6Z2V0T3du
UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVy
dHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgaWYgKHByb3BlcnR5
TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CisgICAgICAgIGRlc2NyaXB0
b3Iuc2V0RGVzY3JpcHRvcihqc051bWJlcihleGVjLCBtX3ZhbHVlLnNpemUoKSksIERvbnRFbnVt
IHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICAgIAorICAgIGJvb2wgaXNTdHJpY3RVSW50MzI7CisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5
TmFtZS50b1N0cmljdFVJbnQzMigmaXNTdHJpY3RVSW50MzIpOworICAgIGlmIChpc1N0cmljdFVJ
bnQzMiAmJiBpIDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fdmFsdWUuc2l6ZSgpKSkgeworICAg
ICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3IoanNTaW5nbGVDaGFyYWN0ZXJTdWJzdHJpbmco
ZXhlYywgbV92YWx1ZSwgaSksIERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgSlNTdHJp
bmc6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorewor
ICAgIGlmIChnZXRTdHJpbmdQcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBk
ZXNjcmlwdG9yKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHByb3BlcnR5TmFtZSAh
PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKS0+c3RyaW5nUHJvdG90eXBlKCksIERvbnRFbnVtKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogYm9vbCBKU1N0cmluZzo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywg
dW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgLy8gVGhl
IHNlbWFudGljcyBoZXJlIGFyZSByZWFsbHkgZ2V0UHJvcGVydHlTbG90LCBub3QgZ2V0T3duUHJv
cGVydHlTbG90LgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5o
IGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCmluZGV4IDY0MTViMjkuLjFlNDY1
NTEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs
dWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJKU051bWJlckNlbGwuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eURlc2NyaXB0b3IuaCIKICNp
bmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC04Niw2ICs4Nyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGJvb2wgZ2V0U3RyaW5nUHJvcGVydHlTbG90
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7CiAgICAgICAgIGJvb2wgZ2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIGJvb2wgZ2V0U3RyaW5n
UHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgYm9vbCBjYW5HZXRJbmRleCh1
bnNpZ25lZCBpKSB7IHJldHVybiBpIDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fdmFsdWUuc2l6
ZSgpKTsgfQogICAgICAgICBKU1N0cmluZyogZ2V0SW5kZXgoSlNHbG9iYWxEYXRhKiwgdW5zaWdu
ZWQpOwpAQCAtMTEzLDYgKzExNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyBBY3R1
YWxseSBnZXRQcm9wZXJ0eVNsb3QsIG5vdCBnZXRPd25Qcm9wZXJ0eVNsb3QgKHNlZSBKU0NlbGwp
LgogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNj
cmlwdG9yJik7CiAKICAgICAgICAgVVN0cmluZyBtX3ZhbHVlOwogICAgIH07CmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuY3BwIGIvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmNwcAppbmRleCBhMzZjZWZhLi5hOTJlN2Mw
IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuY3Bw
CisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5jcHAKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJKU1ZhcmlhYmxlT2JqZWN0LmgiCiAKICNpbmNsdWRlICJQ
cm9wZXJ0eU5hbWVBcnJheS5oIgorI2luY2x1ZGUgIlByb3BlcnR5RGVzY3JpcHRvci5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKIApAQCAtNjcsNCArNjgsMTQgQEAgYm9vbCBKU1ZhcmlhYmxlT2JqZWN0
Ojppc1ZhcmlhYmxlT2JqZWN0KCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBK
U1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZUdldChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICBTeW1ib2xUYWJs
ZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnVzdHJp
bmcoKS5yZXAoKSk7CisgICAgaWYgKCFlbnRyeS5pc051bGwoKSkgeworICAgICAgICBkZXNjcmlw
dG9yLnNldERlc2NyaXB0b3IocmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgpKS5qc1ZhbHVlKCks
IGVudHJ5LmdldEF0dHJpYnV0ZXMoKSB8IERvbnREZWxldGUpOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oIGIvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgKaW5kZXggYjk2OWRhNS4uMzQ4
YzEzNiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0
LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgKQEAgLTg5
LDYgKzg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgc2V0UmVnaXN0ZXJzKFJl
Z2lzdGVyKiByLCBSZWdpc3RlciogcmVnaXN0ZXJBcnJheSk7CiAKICAgICAgICAgYm9vbCBzeW1i
b2xUYWJsZUdldChjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIGJv
b2wgc3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYp
OwogICAgICAgICBib29sIHN5bWJvbFRhYmxlR2V0KGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0
eVNsb3QmLCBib29sJiBzbG90SXNXcml0ZWFibGUpOwogICAgICAgICBib29sIHN5bWJvbFRhYmxl
UHV0KGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlKTsKICAgICAgICAgYm9vbCBzeW1ib2xUYWJs
ZVB1dFdpdGhBdHRyaWJ1dGVzKGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgg
Yi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCmluZGV4IDE2N2YyYmMuLjY3ZmQxZTIg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKKysrIGIvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Mb29rdXAuaApAQCAtMTg2LDYgKzE4NiwyNCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgdGVtcGxhdGUgPGNsYXNz
IFRoaXNJbXAsIGNsYXNzIFBhcmVudEltcD4KKyAgICBpbmxpbmUgYm9vbCBnZXRTdGF0aWNQcm9w
ZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoVGFibGUqIHRhYmxlLCBU
aGlzSW1wKiB0aGlzT2JqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKKyAgICB7CisgICAgICAgIGNvbnN0IEhhc2hFbnRyeSog
ZW50cnkgPSB0YWJsZS0+ZW50cnkoZXhlYywgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgCisgICAg
ICAgIGlmICghZW50cnkpIC8vIG5vdCBmb3VuZCwgZm9yd2FyZCB0byBwYXJlbnQKKyAgICAgICAg
ICAgIHJldHVybiB0aGlzT2JqLT5QYXJlbnRJbXA6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihl
eGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOworIAorICAgICAgICBQcm9wZXJ0eVNsb3Qg
c2xvdDsKKyAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikKKyAgICAg
ICAgICAgIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KGV4ZWMsIGVudHJ5LCB0aGlzT2JqLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzbG90LnNldEN1c3Rv
bSh0aGlzT2JqLCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSk7CisKKyAgICAgICAgZGVzY3JpcHRv
ci5zZXREZXNjcmlwdG9yKHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKSwgZW50cnkt
PmF0dHJpYnV0ZXMoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIC8qKgog
ICAgICAqIFNpbXBsaWZpZWQgdmVyc2lvbiBvZiBnZXRTdGF0aWNQcm9wZXJ0eVNsb3QgaW4gY2Fz
ZSB0aGVyZSBhcmUgb25seSBmdW5jdGlvbnMuCiAgICAgICogVXNpbmcgdGhpcyBpbnN0ZWFkIG9m
IGdldFN0YXRpY1Byb3BlcnR5U2xvdCBhbGxvd3MgJ3RoaXMnIHRvIGF2b2lkIGltcGxlbWVudGlu
ZwpAQCAtMjA0LDYgKzIyMiwyNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc2V0VXBTdGF0
aWNGdW5jdGlvblNsb3QoZXhlYywgZW50cnksIHRoaXNPYmosIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBTaW1w
bGlmaWVkIHZlcnNpb24gb2YgZ2V0U3RhdGljUHJvcGVydHlEZXNjcmlwdG9yIGluIGNhc2UgdGhl
cmUgYXJlIG9ubHkgZnVuY3Rpb25zLgorICAgICAqIFVzaW5nIHRoaXMgaW5zdGVhZCBvZiBnZXRT
dGF0aWNQcm9wZXJ0eURlc2NyaXB0b3IgYWxsb3dzICd0aGlzJyB0byBhdm9pZCBpbXBsZW1lbnRp
bmcKKyAgICAgKiBhIGR1bW15IGdldFZhbHVlUHJvcGVydHkuCisgICAgICovCisgICAgdGVtcGxh
dGUgPGNsYXNzIFBhcmVudEltcD4KKyAgICBpbmxpbmUgYm9vbCBnZXRTdGF0aWNGdW5jdGlvbkRl
c2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoVGFibGUqIHRhYmxlLCBKU09iamVj
dCogdGhpc09iaiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCisgICAgeworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8UGFyZW50
SW1wKj4odGhpc09iaiktPlBhcmVudEltcDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMs
IHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcikpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgCisgICAgICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSB0YWJsZS0+ZW50cnkoZXhl
YywgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgaWYgKCFlbnRyeSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBz
ZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChleGVjLCBlbnRyeSwgdGhpc09iaiwgcHJvcGVydHlOYW1l
LCBzbG90KTsKKyAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHNsb3QuZ2V0VmFsdWUo
ZXhlYywgcHJvcGVydHlOYW1lKSwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KIAogICAgIC8qKgogICAgICAqIFNpbXBsaWZpZWQgdmVyc2lvbiBvZiBn
ZXRTdGF0aWNQcm9wZXJ0eVNsb3QgaW4gY2FzZSB0aGVyZSBhcmUgbm8gZnVuY3Rpb25zLCBvbmx5
ICJ2YWx1ZXMiLgpAQCAtMjI0LDYgKzI2MywyNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9CiAK
ICAgICAvKioKKyAgICAgKiBTaW1wbGlmaWVkIHZlcnNpb24gb2YgZ2V0U3RhdGljUHJvcGVydHlE
ZXNjcmlwdG9yIGluIGNhc2UgdGhlcmUgYXJlIG5vIGZ1bmN0aW9ucywgb25seSAidmFsdWVzIi4K
KyAgICAgKiBVc2luZyB0aGlzIGluc3RlYWQgb2YgZ2V0U3RhdGljUHJvcGVydHlEZXNjcmlwdG9y
IHJlbW92ZXMgdGhlIG5lZWQgZm9yIGEgRnVuY0ltcCBjbGFzcy4KKyAgICAgKi8KKyAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVGhpc0ltcCwgY2xhc3MgUGFyZW50SW1wPgorICAgIGlubGluZSBib29sIGdl
dFN0YXRpY1ZhbHVlRGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hUYWJsZSog
dGFibGUsIFRoaXNJbXAqIHRoaXNPYmosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorICAgIHsKKyAgICAgICAgY29uc3QgSGFz
aEVudHJ5KiBlbnRyeSA9IHRhYmxlLT5lbnRyeShleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgICAg
ICAKKyAgICAgICAgaWYgKCFlbnRyeSkgLy8gbm90IGZvdW5kLCBmb3J3YXJkIHRvIHBhcmVudAor
ICAgICAgICAgICAgcmV0dXJuIHRoaXNPYmotPlBhcmVudEltcDo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CisgICAgICAgIAorICAgICAg
ICBBU1NFUlQoIShlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pKTsKKyAgICAgICAgUHJv
cGVydHlTbG90IHNsb3Q7CisgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmosIGVudHJ5LT5w
cm9wZXJ0eUdldHRlcigpKTsKKyAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHNsb3Qu
Z2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKSwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8qKgogICAgICAqIFRoaXMgb25lIGlzIGZv
ciAicHV0Ii4KICAgICAgKiBJdCBsb29rcyB1cCBhIGhhc2ggZW50cnkgZm9yIHRoZSBwcm9wZXJ0
eSB0byBiZSBzZXQuICBJZiBhbiBlbnRyeQogICAgICAqIGlzIGZvdW5kIGl0IHNldHMgdGhlIHZh
bHVlIGFuZCByZXR1cm5zIHRydWUsIGVsc2UgaXQgcmV0dXJucyBmYWxzZS4KZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAgYi9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hdGhPYmplY3QuY3BwCmluZGV4IDI1NzJiYzkuLjM2NzcxYWIgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAKKysrIGIvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcApAQCAtMTAzLDE0ICsxMDMsMTIgQEAgTWF0aE9iamVj
dDo6TWF0aE9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1
Y3R1cmUpCiAKIGJvb2wgTWF0aE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3Qp
CiB7Ci0gICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IEV4ZWNTdGF0ZTo6bWF0aFRhYmxlKGV4
ZWMpLT5lbnRyeShleGVjLCBwcm9wZXJ0eU5hbWUpOwotCi0gICAgaWYgKCFlbnRyeSkKLSAgICAg
ICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1l
LCBzbG90KTsKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEpTT2JqZWN0PihleGVj
LCBFeGVjU3RhdGU6Om1hdGhUYWJsZShleGVjKSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTsK
K30KIAotICAgIEFTU0VSVChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pOwotICAgIHNl
dFVwU3RhdGljRnVuY3Rpb25TbG90KGV4ZWMsIGVudHJ5LCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwotICAgIHJldHVybiB0cnVlOworYm9vbCBNYXRoT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGlj
RnVuY3Rpb25EZXNjcmlwdG9yPEpTT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6Om1hdGhUYWJsZShl
eGVjKSwgdGhpcywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0Lmgg
Yi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaAppbmRleCAwNmFhNTRiLi41ODQ3
OGJmIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaAorKysg
Yi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaApAQCAtMzAsNiArMzAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWF0aE9iamVjdChFeGVjU3RhdGUqLCBQYXNzUmVmUHRy
PFN0cnVjdHVyZT4pOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOworICAgICAgICB2
aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgICAgICB2aXJ0dWFsIGNvbnN0
IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJmluZm87IH0KICAgICAgICAg
c3RhdGljIGNvbnN0IENsYXNzSW5mbyBpbmZvOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bWJlckNvbnN0cnVjdG9yLmNwcAppbmRleCAyODQwYmYwLi5hOTUxMDZkIDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcAorKysgYi9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcApAQCAtNjgsNiArNjgsMTEgQEAg
Ym9vbCBOdW1iZXJDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHIKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PE51
bWJlckNvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6Om51bWJl
clRhYmxlKGV4ZWMpLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCitib29sIE51bWJl
ckNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvcikKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVEZXNjcmlwdG9yPE51bWJlckNvbnN0
cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6Om51bWJlclRhYmxlKGV4
ZWMpLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOworfQorCiBzdGF0aWMgSlNWYWx1
ZSBudW1iZXJDb25zdHJ1Y3Rvck5hTlZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpCiB7CiAgICAgcmV0dXJuIGpzTmFOKGV4ZWMpOwpk
aWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oIGIv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCmluZGV4IDZlNjc4NDAu
LjU5MmViZmQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3Ry
dWN0b3IuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmgK
QEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE51bWJlckNvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSosIFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgTnVtYmVyUHJvdG90eXBlKik7
CiAKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFBy
b3BlcnR5RGVzY3JpcHRvciYpOwogICAgICAgICBKU1ZhbHVlIGdldFZhbHVlUHJvcGVydHkoRXhl
Y1N0YXRlKiwgaW50IHRva2VuKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJ
bmZvIGluZm87CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0
cnVjdG9yLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3Bw
CmluZGV4IGIwNWI5MTAuLjVhMzRmMjAgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90
eXBlLmgiCisjaW5jbHVkZSAiUHJvcGVydHlEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiUHJvdG90
eXBlRnVuY3Rpb24uaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zMiwxNyArMzMsMTkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKE9iamVjdENvbnN0cnVjdG9y
KTsKIAogc3RhdGljIEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldFBy
b3RvdHlwZU9mKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSwgY29uc3QgQXJnTGlzdCYp
Oworc3RhdGljIEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUsIGNvbnN0IEFy
Z0xpc3QmKTsKIAogT2JqZWN0Q29uc3RydWN0b3I6Ok9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogZXhlYywgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgT2JqZWN0UHJvdG90eXBl
KiBvYmplY3RQcm90b3R5cGUsIFN0cnVjdHVyZSogcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUp
Ci0gICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSwg
SWRlbnRpZmllcihleGVjLCAiT2JqZWN0IikpCis6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmds
b2JhbERhdGEoKSwgc3RydWN0dXJlLCBJZGVudGlmaWVyKGV4ZWMsICJPYmplY3QiKSkKIHsKICAg
ICAvLyBFQ01BIDE1LjIuMy4xCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+
cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgb2JqZWN0UHJvdG90eXBlLCBEb250RW51bSB8IERv
bnREZWxldGUgfCBSZWFkT25seSk7Ci0KKyAgICAKICAgICAvLyBuby4gb2YgYXJndW1lbnRzIGZv
ciBjb25zdHJ1Y3RvcgogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGV4ZWMsIDEpLCBSZWFkT25seSB8IERvbnRFbnVt
IHwgRG9udERlbGV0ZSk7Ci0KKyAgICAKICAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIHByb3Rv
dHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2V0UHJvdG90
eXBlT2YsIG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2YpLCBEb250RW51bSk7CisgICAg
cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2
ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgMiwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmdldE93blByb3BlcnR5RGVzY3JpcHRvciwgb2JqZWN0Q29uc3Ry
dWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpLCBEb250RW51bSk7CiB9CiAKIC8vIEVDTUEg
MTUuMi4yCkBAIC04Myw0ICs4NiwzNCBAQCBKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29u
c3RydWN0b3JHZXRQcm90b3R5cGVPZihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KgogICAgIHJl
dHVybiBhc09iamVjdChhcmdzLmF0KDApKS0+cHJvdG90eXBlKCk7CiB9CiAKK0pTVmFsdWUgSlND
X0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgSlNWYWx1ZSwgY29uc3QgQXJnTGlzdCYgYXJncykKK3sK
KyAgICBpZiAoIWFyZ3MuYXQoMCkuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJy
b3IoZXhlYywgVHlwZUVycm9yLCAiUmVxdWVzdGVkIHByb3BlcnR5IGRlc2NyaXB0b3Igb2YgYSB2
YWx1ZSB0aGF0IGlzIG5vdCBhbiBvYmplY3QuIik7CisgICAgVVN0cmluZyBwcm9wZXJ0eU5hbWUg
PSBhcmdzLmF0KDEpLnRvU3RyaW5nKGV4ZWMpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKKyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09i
amVjdChhcmdzLmF0KDApKTsKKyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKKyAg
ICBpZiAoIW9iamVjdC0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIElkZW50aWZpZXIo
ZXhlYywgcHJvcGVydHlOYW1lKSwgZGVzY3JpcHRvcikpCisgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisgICAgQVNTRVJUKGRlc2NyaXB0b3IuaXNWYWxpZCgpKTsKKworICAgIEpT
T2JqZWN0KiBkZXNjcmlwdGlvbiA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAgIGlm
ICghZGVzY3JpcHRvci5oYXNBY2Nlc3NvcnMoKSkgeworICAgICAgICBkZXNjcmlwdGlvbi0+cHV0
RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZSwgZGVzY3JpcHRvci52YWx1ZSgpLCAw
KTsKKyAgICAgICAgZGVzY3JpcHRpb24tPnB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCku
d3JpdGFibGUsIGpzQm9vbGVhbihkZXNjcmlwdG9yLndyaXRhYmxlKCkpLCAwKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBkZXNjcmlwdGlvbi0+cHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5nZXQsIGRlc2NyaXB0b3IuZ2V0dGVyKCksIDApOworICAgICAgICBkZXNjcmlwdGlvbi0+cHV0
RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5zZXQsIGRlc2NyaXB0b3Iuc2V0dGVyKCksIDAp
OworICAgIH0KKyAgICAKKyAgICBkZXNjcmlwdGlvbi0+cHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5lbnVtZXJhYmxlLCBqc0Jvb2xlYW4oZGVzY3JpcHRvci5lbnVtZXJhYmxlKCkpLCAw
KTsKKyAgICBkZXNjcmlwdGlvbi0+cHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25m
aWd1cmFibGUsIGpzQm9vbGVhbihkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpKSwgMCk7CisKKyAg
ICByZXR1cm4gZGVzY3JpcHRpb247Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuY3BwIGIvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmQ4OTJlMGEKLS0tIC9kZXYvbnVsbAorKysgYi9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5jcHAKQEAgLTAsMCArMSwxMDMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpbmNsdWRlICJQcm9wZXJ0eURlc2NyaXB0b3IuaCIKKworI2luY2x1ZGUg
IkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0Mg
eworYm9vbCBQcm9wZXJ0eURlc2NyaXB0b3I6OndyaXRhYmxlKCkgY29uc3QKK3sKKyAgICBBU1NF
UlQoIWhhc0FjY2Vzc29ycygpKTsKKyAgICByZXR1cm4gIShtX2F0dHJpYnV0ZXMgJiBSZWFkT25s
eSk7Cit9CisKK2Jvb2wgUHJvcGVydHlEZXNjcmlwdG9yOjplbnVtZXJhYmxlKCkgY29uc3QKK3sK
KyAgICBBU1NFUlQoaXNWYWxpZCgpKTsKKyAgICByZXR1cm4gIShtX2F0dHJpYnV0ZXMgJiBEb250
RW51bSk7Cit9CisKK2Jvb2wgUHJvcGVydHlEZXNjcmlwdG9yOjpjb25maWd1cmFibGUoKSBjb25z
dAoreworICAgIEFTU0VSVChpc1ZhbGlkKCkpOworICAgIHJldHVybiAhKG1fYXR0cmlidXRlcyAm
IERvbnREZWxldGUpOworfQorCitib29sIFByb3BlcnR5RGVzY3JpcHRvcjo6aGFzQWNjZXNzb3Jz
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gISEobV9hdHRyaWJ1dGVzICYgKEdldHRlciB8IFNldHRl
cikpOworfQorCit2b2lkIFByb3BlcnR5RGVzY3JpcHRvcjo6c2V0VW5kZWZpbmVkKCkKK3sKKyAg
ICBtX3ZhbHVlID0ganNVbmRlZmluZWQoKTsKKyAgICBtX2F0dHJpYnV0ZXMgPSBSZWFkT25seSB8
IERvbnREZWxldGUgfCBEb250RW51bTsKK30KKworSlNWYWx1ZSBQcm9wZXJ0eURlc2NyaXB0b3I6
OmdldHRlcigpIGNvbnN0Cit7CisgICAgQVNTRVJUKGhhc0FjY2Vzc29ycygpKTsKKyAgICBpZiAo
IW1fZ2V0dGVyKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICByZXR1cm4gbV9n
ZXR0ZXI7Cit9CisKK0pTVmFsdWUgUHJvcGVydHlEZXNjcmlwdG9yOjpzZXR0ZXIoKSBjb25zdAor
eworICAgIEFTU0VSVChoYXNBY2Nlc3NvcnMoKSk7CisgICAgaWYgKCFtX3NldHRlcikKKyAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIG1fc2V0dGVyOworfQorCit2b2lk
IFByb3BlcnR5RGVzY3JpcHRvcjo6c2V0RGVzY3JpcHRvcihKU1ZhbHVlIHZhbHVlLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKQoreworICAgIEFTU0VSVCh2YWx1ZSk7CisgICAgaWYgKGF0dHJpYnV0ZXMg
JiAoR2V0dGVyIHwgU2V0dGVyKSkgeworICAgICAgICBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29yID0g
YXNHZXR0ZXJTZXR0ZXIodmFsdWUpOworICAgICAgICBtX2dldHRlciA9IGFjY2Vzc29yLT5nZXR0
ZXIoKTsKKyAgICAgICAgbV9zZXR0ZXIgPSBhY2Nlc3Nvci0+c2V0dGVyKCk7CisgICAgICAgIEFT
U0VSVChtX2dldHRlciB8fCBtX3NldHRlcik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV92YWx1
ZSA9IHZhbHVlOworICAgIH0KKyAgICBtX2F0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzOworfQorCit2
b2lkIFByb3BlcnR5RGVzY3JpcHRvcjo6c2V0QWNjZXNzb3JEZXNjcmlwdG9yKEpTVmFsdWUgZ2V0
dGVyLCBKU1ZhbHVlIHNldHRlciwgdW5zaWduZWQgYXR0cmlidXRlcykKK3sKKyAgICBBU1NFUlQo
YXR0cmlidXRlcyAmIChHZXR0ZXIgfCBTZXR0ZXIpKTsKKyAgICBBU1NFUlQoZ2V0dGVyIHx8IHNl
dHRlcik7CisgICAgbV9hdHRyaWJ1dGVzID0gYXR0cmlidXRlczsKKyAgICBtX2dldHRlciA9IGdl
dHRlcjsKKyAgICBtX3NldHRlciA9IHNldHRlcjsKK30KKworfQpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaCBiL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uYWQ3YzA1NgotLS0gL2Rldi9udWxsCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlEZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFByb3BlcnR5RGVzY3JpcHRvcl9o
CisjZGVmaW5lIFByb3BlcnR5RGVzY3JpcHRvcl9oCisKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisK
K25hbWVzcGFjZSBKU0MgeworICAgIGNsYXNzIFByb3BlcnR5RGVzY3JpcHRvciB7CisgICAgcHVi
bGljOgorICAgICAgICBQcm9wZXJ0eURlc2NyaXB0b3IoKQorICAgICAgICAgICAgOiBtX2F0dHJp
YnV0ZXMoMCkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIGJvb2wgd3JpdGFibGUoKSBj
b25zdDsKKyAgICAgICAgYm9vbCBlbnVtZXJhYmxlKCkgY29uc3Q7CisgICAgICAgIGJvb2wgY29u
ZmlndXJhYmxlKCkgY29uc3Q7CisgICAgICAgIGJvb2wgaGFzQWNjZXNzb3JzKCkgY29uc3Q7Cisg
ICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXM7
IH0KKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJu
IG1fdmFsdWUgfHwgKChtX2dldHRlciB8fCBtX3NldHRlcikgJiYgaGFzQWNjZXNzb3JzKCkpOyB9
CisjZW5kaWYKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSgpIGNvbnN0IHsgQVNTRVJUKG1fdmFsdWUp
OyByZXR1cm4gbV92YWx1ZTsgfQorICAgICAgICBKU1ZhbHVlIGdldHRlcigpIGNvbnN0OworICAg
ICAgICBKU1ZhbHVlIHNldHRlcigpIGNvbnN0OworICAgICAgICB2b2lkIHNldFVuZGVmaW5lZCgp
OworICAgICAgICB2b2lkIHNldERlc2NyaXB0b3IoSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0
cmlidXRlcyk7CisgICAgICAgIHZvaWQgc2V0QWNjZXNzb3JEZXNjcmlwdG9yKEpTVmFsdWUgZ2V0
dGVyLCBKU1ZhbHVlIHNldHRlciwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgcHJpdmF0ZToK
KyAgICAgICAgLy8gTWF5IGJlIGEgZ2V0dGVyL3NldHRlcgorICAgICAgICBKU1ZhbHVlIG1fdmFs
dWU7CisgICAgICAgIEpTVmFsdWUgbV9nZXR0ZXI7CisgICAgICAgIEpTVmFsdWUgbV9zZXR0ZXI7
CisgICAgICAgIHVuc2lnbmVkIG1fYXR0cmlidXRlczsKKyAgICB9OworfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwIGIv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNjJkNTZl
OS4uMWM5NTE3NSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25z
dHJ1Y3Rvci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTIzNCw2ICsyMzQsMTEgQEAgYm9vbCBSZWdFeHBDb25zdHJ1Y3Rvcjo6Z2V0T3du
UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHIKICAgICBy
ZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PFJlZ0V4cENvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0
aW9uPihleGVjLCBFeGVjU3RhdGU6OnJlZ0V4cENvbnN0cnVjdG9yVGFibGUoZXhlYyksIHRoaXMs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKK2Jvb2wgUmVnRXhwQ29uc3RydWN0b3I6OmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQoreworICAgIHJldHVy
biBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8UmVnRXhwQ29uc3RydWN0b3IsIEludGVybmFsRnVu
Y3Rpb24+KGV4ZWMsIEV4ZWNTdGF0ZTo6cmVnRXhwQ29uc3RydWN0b3JUYWJsZShleGVjKSwgdGhp
cywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKK30KKwogSlNWYWx1ZSByZWdFeHBDb25zdHJ1
Y3RvckRvbGxhcjEoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBhc1JlZ0V4cENvbnN0cnVjdG9yKHNsb3Qu
c2xvdEJhc2UoKSktPmdldEJhY2tyZWYoZXhlYywgMSk7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cENvbnN0cnVjdG9yLmgKaW5kZXggMzBiOTc1MC4uYTM3ZjhiYiAxMDA2NDQKLS0tIGEv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCisrKyBiL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaApAQCAtNDEsNiArNDEsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgdmlydHVh
bCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNz
SW5mbyBpbmZvOwogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1h
dGNoZXNBcnJheS5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXku
aAppbmRleCA5YWUxOGI5Li40NDQ4ZjU3IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwTWF0Y2hlc0FycmF5LmgKQEAgLTQ0LDYgKzQ0LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgcmV0dXJuIEpTQXJyYXk6OmdldE93blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogICAgICAgICB9CiAKKyAgICAgICAgdmlydHVhbCBib29sIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAobGF6eUNyZWF0aW9uRGF0YSgpKQorICAgICAgICAgICAgICAgIGZpbGxBcnJh
eUluc3RhbmNlKGV4ZWMpOworICAgICAgICAgICAgcmV0dXJuIEpTQXJyYXk6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOworICAgICAgICB9
CisKICAgICAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGlmIChsYXp5Q3JlYXRpb25EYXRhKCkpCmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAgYi9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKaW5kZXggNjg3ODQ0ZS4uOWQ5ZGQ3ZCAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCisrKyBiL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcApAQCAtNzIsNiArNzIsMTEgQEAgYm9v
bCBSZWdFeHBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnQKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PFJlZ0V4
cE9iamVjdCwgSlNPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6cmVnRXhwVGFibGUoZXhlYyksIHRo
aXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKK2Jvb2wgUmVnRXhwT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4g
Z2V0U3RhdGljVmFsdWVEZXNjcmlwdG9yPFJlZ0V4cE9iamVjdCwgSlNPYmplY3Q+KGV4ZWMsIEV4
ZWNTdGF0ZTo6cmVnRXhwVGFibGUoZXhlYyksIHRoaXMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRv
cik7Cit9CisKIEpTVmFsdWUgcmVnRXhwT2JqZWN0R2xvYmFsKEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgcmV0dXJuIGpzQm9v
bGVhbihhc1JlZ0V4cE9iamVjdChzbG90LnNsb3RCYXNlKCkpLT5yZWdFeHAoKS0+Z2xvYmFsKCkp
OwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaCBiL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKaW5kZXggNWNhM2IzZi4uZWQ3OWU0
MiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAorKysg
Yi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCkBAIC00MSw2ICs0MSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU1ZhbHVlIGV4ZWMoRXhlY1N0YXRlKiwgY29uc3Qg
QXJnTGlzdCYpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
KyAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgICAgICB2aXJ0dWFsIGNvbnN0IENsYXNz
SW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJmluZm87IH0KZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAppbmRleCBmYjQ0NDk4Li40YmJkMWM5IDEwMDY0NAotLS0g
YS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKKysrIGIvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCkBAIC02MSw2ICs2MSwxMyBAQCBib29sIFN0
cmluZ09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBQcgogICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90
KGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwgc2xvdCk7CiB9CiAK
K2Jvb2wgU3RyaW5nT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYg
ZGVzY3JpcHRvcikKK3sKKyAgICBpZiAoaW50ZXJuYWxWYWx1ZSgpLT5nZXRTdHJpbmdQcm9wZXJ0
eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7ICAgIAorICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7Cit9CisKIHZvaWQgU3RyaW5nT2Jq
ZWN0OjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBpZiAocHJvcGVy
dHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpCmRpZmYgLS1naXQgYS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdPYmplY3QuaAppbmRleCBlYTNhMDQ1Li40Yzg4YTczIDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nT2JqZWN0LmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0
dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwog
ICAgICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJv
dG90eXBlLmNwcAppbmRleCBhZjE3NDcxLi5jOWEzMmI2IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC0xMzMsNiArMTMzLDExIEBAIGJvb2wgU3RyaW5n
UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wCiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxTdHJpbmdPYmpl
Y3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6c3RyaW5nVGFibGUoZXhlYyksIHRoaXMsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiB9CiAKK2Jvb2wgU3RyaW5nUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVu
Y3Rpb25EZXNjcmlwdG9yPFN0cmluZ09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpzdHJpbmdUYWJs
ZShleGVjKSwgdGhpcywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKK30KKwogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCiBzdGF0aWMgaW5saW5lIFVTdHJpbmcgc3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2VzKGNv
bnN0IFVTdHJpbmcmIHJlcGxhY2VtZW50LCBjb25zdCBVU3RyaW5nJiBzb3VyY2UsIGNvbnN0IGlu
dCogb3ZlY3RvciwgUmVnRXhwKiByZWcpCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90
b3R5cGUuaAppbmRleCA2ZjUzNDRlLi41ODBlMTNkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nUHJvdG90eXBlLmgKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFN0cmluZ1Byb3RvdHlwZShFeGVjU3RhdGUqLCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4pOwog
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgdmly
dHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgdmlydHVhbCBjb25zdCBD
bGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZpbmZvOyB9CiAgICAgICAgIHN0
YXRpYyBjb25zdCBDbGFzc0luZm8gaW5mbzsK
</data>
<flag name="review"
          id="19585"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38579</attachid>
            <date>2009-08-25 17:11:02 -0700</date>
            <delta_ts>2009-08-25 22:47:07 -0700</delta_ts>
            <desc>Testcase</desc>
            <filename>getOwnPropertyDescriptor-test.patch</filename>
            <type>text/plain</type>
            <size>26739</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzNmUzMDBhLi5lNzg4NjM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDktMDgt
MjUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbRVM1XSBJbXBsZW1lbnQgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yODcyNAorCisgICAgICAgIEFkZCB0ZXN0cyBmb3IgZ2V0T3duUHJvZXBydHlEZXNjcmlw
dG9yCisKKyAgICAgICAgKiBmYXN0L2pzL2dldE93blByb3BlcnR5RGVzY3JpcHRvci1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvcmVzb3VyY2VzL2dldE93blByb3BlcnR5
RGVzY3JpcHRvci5qczogQWRkZWQuCisgICAgICAgICgpOgorCiAyMDA5LTA4LTI1ICBNYWRzIEFn
ZXIgIDxhZ2VyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRo
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3ItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5
NGRmY2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL2dldE93blByb3Bl
cnR5RGVzY3JpcHRvci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMTEgQEAKK1Rlc3QgdG8gZW5z
dXJlIGNvcnJlY3QgYmVoYXZpb3VyIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IK
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcih7fSwgJ3VuZGVmaW5lZFByb3BlcnR5JykgaXMgdW5kZWZpbmVkLgorUEFT
UyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHtkZWZpbmVkUHJvcGVydHk6J2RlZmlu
ZWQnfSwgJ2RlZmluZWRQcm9wZXJ0eScpLnZhbHVlIGlzICJkZWZpbmVkIgorUEFTUyBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHtkZWZpbmVkUHJvcGVydHk6J2RlZmluZWQnfSwgJ2Rl
ZmluZWRQcm9wZXJ0eScpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQorUEFTUyBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHtkZWZpbmVkUHJvcGVydHk6J2RlZmluZWQnfSwg
J2RlZmluZWRQcm9wZXJ0eScpLmhhc093blByb3BlcnR5KCdzZXQnKSBpcyBmYWxzZQorUEFTUyBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHtkZWZpbmVkUHJvcGVydHk6J2RlZmluZWQn
fSwgJ2RlZmluZWRQcm9wZXJ0eScpLmVudW1lcmFibGUgaXMgdHJ1ZQorUEFTUyBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKHtkZWZpbmVkUHJvcGVydHk6J2RlZmluZWQnfSwgJ2RlZmlu
ZWRQcm9wZXJ0eScpLmNvbmZpZ3VyYWJsZSBpcyB0cnVlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoQXJyYXkucHJvdG90eXBlLCAnY29uY2F0JykudmFsdWUgaXMgQXJyYXku
cHJvdG90eXBlLmNvbmNhdAorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEFy
cmF5LnByb3RvdHlwZSwgJ2NvbmNhdCcpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQor
UEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEFycmF5LnByb3RvdHlwZSwgJ2Nv
bmNhdCcpLmhhc093blByb3BlcnR5KCdzZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEFycmF5LnByb3RvdHlwZSwgJ2NvbmNhdCcpLmVudW1lcmFibGUg
aXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihBcnJheS5wcm90
b3R5cGUsICdjb25jYXQnKS5jb25maWd1cmFibGUgaXMgdHJ1ZQorUEFTUyBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKERhdGUucHJvdG90eXBlLCAndG9JU09TdHJpbmcnKS52YWx1ZSBp
cyBEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZworUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKERhdGUucHJvdG90eXBlLCAndG9JU09TdHJpbmcnKS5oYXNPd25Qcm9wZXJ0eSgn
Z2V0JykgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihEYXRl
LnByb3RvdHlwZSwgJ3RvSVNPU3RyaW5nJykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlzIGZhbHNl
CitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRGF0ZS5wcm90b3R5cGUsICd0
b0lTT1N0cmluZycpLmVudW1lcmFibGUgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihEYXRlLnByb3RvdHlwZSwgJ3RvSVNPU3RyaW5nJykuY29uZmlndXJhYmxl
IGlzIHRydWUKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihTdHJpbmcucHJv
dG90eXBlLCAnY29uY2F0JykudmFsdWUgaXMgU3RyaW5nLnByb3RvdHlwZS5jb25jYXQKK1BBU1Mg
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihTdHJpbmcucHJvdG90eXBlLCAnY29uY2F0
JykuaGFzT3duUHJvcGVydHkoJ2dldCcpIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoU3RyaW5nLnByb3RvdHlwZSwgJ2NvbmNhdCcpLmhhc093blByb3BlcnR5
KCdzZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFN0
cmluZy5wcm90b3R5cGUsICdjb25jYXQnKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoU3RyaW5nLnByb3RvdHlwZSwgJ2NvbmNhdCcpLmNv
bmZpZ3VyYWJsZSBpcyB0cnVlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
UmVnRXhwLnByb3RvdHlwZSwgJ2V4ZWMnKS52YWx1ZSBpcyBSZWdFeHAucHJvdG90eXBlLmV4ZWMK
K1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihSZWdFeHAucHJvdG90eXBlLCAn
ZXhlYycpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKFJlZ0V4cC5wcm90b3R5cGUsICdleGVjJykuaGFzT3duUHJvcGVy
dHkoJ3NldCcpIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
UmVnRXhwLnByb3RvdHlwZSwgJ2V4ZWMnKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoUmVnRXhwLnByb3RvdHlwZSwgJ2V4ZWMnKS5jb25m
aWd1cmFibGUgaXMgdHJ1ZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGRv
Y3VtZW50Ll9fcHJvdG9fXy5fX3Byb3RvX18sICdjcmVhdGVFbGVtZW50JykudmFsdWUgaXMgZG9j
dW1lbnQuY3JlYXRlRWxlbWVudAorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KGRvY3VtZW50Ll9fcHJvdG9fXy5fX3Byb3RvX18sICdjcmVhdGVFbGVtZW50JykuaGFzT3duUHJv
cGVydHkoJ2dldCcpIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoZG9jdW1lbnQuX19wcm90b19fLl9fcHJvdG9fXywgJ2NyZWF0ZUVsZW1lbnQnKS5oYXNPd25Q
cm9wZXJ0eSgnc2V0JykgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihkb2N1bWVudC5fX3Byb3RvX18uX19wcm90b19fLCAnY3JlYXRlRWxlbWVudCcpLmVudW1l
cmFibGUgaXMgdHJ1ZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGRvY3Vt
ZW50Ll9fcHJvdG9fXy5fX3Byb3RvX18sICdjcmVhdGVFbGVtZW50JykuY29uZmlndXJhYmxlIGlz
IGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTnVtYmVyLCAnTkVH
QVRJVkVfSU5GSU5JVFknKS52YWx1ZSBpcyBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkKK1BBU1Mg
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihOdW1iZXIsICdORUdBVElWRV9JTkZJTklU
WScpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKE51bWJlciwgJ05FR0FUSVZFX0lORklOSVRZJykuaGFzT3duUHJvcGVy
dHkoJ3NldCcpIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
TnVtYmVyLCAnTkVHQVRJVkVfSU5GSU5JVFknKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTnVtYmVyLCAnTkVHQVRJVkVfSU5GSU5JVFkn
KS5jb25maWd1cmFibGUgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihSZWdFeHAsICckXycpLnZhbHVlIGlzIFJlZ0V4cC4kXworUEFTUyBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKFJlZ0V4cCwgJyRfJykuaGFzT3duUHJvcGVydHkoJ2dldCcpIGlz
IGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoUmVnRXhwLCAnJF8n
KS5oYXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihSZWdFeHAsICckXycpLmVudW1lcmFibGUgaXMgZmFsc2UKK1BBU1MgT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihSZWdFeHAsICckXycpLmNvbmZpZ3VyYWJsZSBp
cyB0cnVlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoL2EvZywgJ2dsb2Jh
bCcpLnZhbHVlIGlzIHRydWUKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcigv
YS9nLCAnZ2xvYmFsJykuaGFzT3duUHJvcGVydHkoJ2dldCcpIGlzIGZhbHNlCitQQVNTIE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoL2EvZywgJ2dsb2JhbCcpLmhhc093blByb3BlcnR5
KCdzZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKC9h
L2csICdnbG9iYWwnKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoL2EvZywgJ2dsb2JhbCcpLmNvbmZpZ3VyYWJsZSBpcyBmYWxzZQorUEFT
UyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE5vZGUsICdET0NVTUVOVF9QT1NJVElP
Tl9ESVNDT05ORUNURUQnKS52YWx1ZSBpcyBOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0RJU0NPTk5F
Q1RFRAorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE5vZGUsICdET0NVTUVO
VF9QT1NJVElPTl9ESVNDT05ORUNURUQnKS5oYXNPd25Qcm9wZXJ0eSgnZ2V0JykgaXMgZmFsc2UK
K1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihOb2RlLCAnRE9DVU1FTlRfUE9T
SVRJT05fRElTQ09OTkVDVEVEJykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlzIGZhbHNlCitQQVNT
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTm9kZSwgJ0RPQ1VNRU5UX1BPU0lUSU9O
X0RJU0NPTk5FQ1RFRCcpLmVudW1lcmFibGUgaXMgdHJ1ZQorUEFTUyBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKE5vZGUsICdET0NVTUVOVF9QT1NJVElPTl9ESVNDT05ORUNURUQnKS5j
b25maWd1cmFibGUgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihNYXRoLCAnc2luJykudmFsdWUgaXMgTWF0aC5zaW4KK1BBU1MgT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihNYXRoLCAnc2luJykuaGFzT3duUHJvcGVydHkoJ2dldCcpIGlzIGZhbHNl
CitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTWF0aCwgJ3NpbicpLmhhc093
blByb3BlcnR5KCdzZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKE1hdGgsICdzaW4nKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoTWF0aCwgJ3NpbicpLmNvbmZpZ3VyYWJsZSBpcyB0cnVlCitQ
QVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoWzEsMiwzXSwgMCkudmFsdWUgaXMg
MQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFsxLDIsM10sIDApLmhhc093
blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKFsxLDIsM10sIDApLmhhc093blByb3BlcnR5KCdzZXQnKSBpcyBmYWxzZQorUEFTUyBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFsxLDIsM10sIDApLmVudW1lcmFibGUgaXMg
dHJ1ZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFsxLDIsM10sIDApLmNv
bmZpZ3VyYWJsZSBpcyB0cnVlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
WzEsMiwzXSwgJ2xlbmd0aCcpLnZhbHVlIGlzIDMKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihbMSwyLDNdLCAnbGVuZ3RoJykuaGFzT3duUHJvcGVydHkoJ2dldCcpIGlzIGZh
bHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoWzEsMiwzXSwgJ2xlbmd0
aCcpLmhhc093blByb3BlcnR5KCdzZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKFsxLDIsM10sICdsZW5ndGgnKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQ
QVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoWzEsMiwzXSwgJ2xlbmd0aCcpLmNv
bmZpZ3VyYWJsZSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KFsxLDIsM10sICdsZW5ndGgnKS52YWx1ZSBpcyAzCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoWzEsMiwzXSwgJ2xlbmd0aCcpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBm
YWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFsxLDIsM10sICdsZW5n
dGgnKS5oYXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihbMSwyLDNdLCAnbGVuZ3RoJykuZW51bWVyYWJsZSBpcyBmYWxzZQor
UEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFsxLDIsM10sICdsZW5ndGgnKS5j
b25maWd1cmFibGUgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cigvKGEpKi9nLmV4ZWMoJ2EnKSwgMCkudmFsdWUgaXMgJ2EnCitQQVNTIE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoLyhhKSovZy5leGVjKCdhJyksIDApLmhhc093blByb3BlcnR5KCdn
ZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKC8oYSkq
L2cuZXhlYygnYScpLCAwKS5oYXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMgZmFsc2UKK1BBU1MgT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcigvKGEpKi9nLmV4ZWMoJ2EnKSwgMCkuZW51bWVy
YWJsZSBpcyB0cnVlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoLyhhKSov
Zy5leGVjKCdhJyksIDApLmNvbmZpZ3VyYWJsZSBpcyB0cnVlCitQQVNTIE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoLyhhKSovZy5leGVjKCdhJyksICdsZW5ndGgnKS52YWx1ZSBpcyAy
CitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoLyhhKSovZy5leGVjKCdhJyks
ICdsZW5ndGgnKS5oYXNPd25Qcm9wZXJ0eSgnZ2V0JykgaXMgZmFsc2UKK1BBU1MgT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcigvKGEpKi9nLmV4ZWMoJ2EnKSwgJ2xlbmd0aCcpLmhhc093
blByb3BlcnR5KCdzZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKC8oYSkqL2cuZXhlYygnYScpLCAnbGVuZ3RoJykuZW51bWVyYWJsZSBpcyBmYWxzZQor
UEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKC8oYSkqL2cuZXhlYygnYScpLCAn
bGVuZ3RoJykuY29uZmlndXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoZnVuY3Rpb24oKXt9LCAnbGVuZ3RoJykudmFsdWUgaXMgMAorUEFTUyBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGZ1bmN0aW9uKCl7fSwgJ2xlbmd0aCcpLmhhc093
blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKGZ1bmN0aW9uKCl7fSwgJ2xlbmd0aCcpLmhhc093blByb3BlcnR5KCdzZXQnKSBpcyBm
YWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGZ1bmN0aW9uKCl7fSwg
J2xlbmd0aCcpLmVudW1lcmFibGUgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihmdW5jdGlvbigpe30sICdsZW5ndGgnKS5jb25maWd1cmFibGUgaXMgZmFsc2UK
K1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihNYXRoLnNpbiwgJ2xlbmd0aCcp
LnZhbHVlIGlzIDEKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihNYXRoLnNp
biwgJ2xlbmd0aCcpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE1hdGguc2luLCAnbGVuZ3RoJykuaGFzT3duUHJvcGVy
dHkoJ3NldCcpIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
TWF0aC5zaW4sICdsZW5ndGgnKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoTWF0aC5zaW4sICdsZW5ndGgnKS5jb25maWd1cmFibGUgaXMg
ZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihNYXRoLnNpbiwgJ25h
bWUnKS52YWx1ZSBpcyAnc2luJworUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KE1hdGguc2luLCAnbmFtZScpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQorUEFTUyBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE1hdGguc2luLCAnbmFtZScpLmhhc093blBy
b3BlcnR5KCdzZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKE1hdGguc2luLCAnbmFtZScpLmVudW1lcmFibGUgaXMgZmFsc2UKK1BBU1MgT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihNYXRoLnNpbiwgJ25hbWUnKS5jb25maWd1cmFibGUgaXMg
ZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdnbG9i
YWwnKS52YWx1ZSBpcyBnbG9iYWwKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihnbG9iYWwsICdnbG9iYWwnKS5oYXNPd25Qcm9wZXJ0eSgnZ2V0JykgaXMgZmFsc2UKK1BBU1Mg
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdnbG9iYWwnKS5oYXNPd25Q
cm9wZXJ0eSgnc2V0JykgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihnbG9iYWwsICdnbG9iYWwnKS5lbnVtZXJhYmxlIGlzIHRydWUKK1BBU1MgT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdnbG9iYWwnKS5jb25maWd1cmFibGUgaXMg
ZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICd3aW5k
b3cnKS52YWx1ZSBpcyBnbG9iYWwKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihnbG9iYWwsICd3aW5kb3cnKS5oYXNPd25Qcm9wZXJ0eSgnZ2V0JykgaXMgZmFsc2UKK1BBU1Mg
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICd3aW5kb3cnKS5oYXNPd25Q
cm9wZXJ0eSgnc2V0JykgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihnbG9iYWwsICd3aW5kb3cnKS5lbnVtZXJhYmxlIGlzIHRydWUKK1BBU1MgT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICd3aW5kb3cnKS5jb25maWd1cmFibGUgaXMg
ZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdYTUxI
dHRwUmVxdWVzdCcpLnZhbHVlIGlzIFhNTEh0dHBSZXF1ZXN0CitQQVNTIE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnWE1MSHR0cFJlcXVlc3QnKS5oYXNPd25Qcm9wZXJ0
eSgnZ2V0JykgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihn
bG9iYWwsICdYTUxIdHRwUmVxdWVzdCcpLmhhc093blByb3BlcnR5KCdzZXQnKSBpcyBmYWxzZQor
UEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ1hNTEh0dHBSZXF1
ZXN0JykuZW51bWVyYWJsZSBpcyB0cnVlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoZ2xvYmFsLCAnWE1MSHR0cFJlcXVlc3QnKS5jb25maWd1cmFibGUgaXMgZmFsc2UKK1BB
U1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdsZW5ndGgnKS52YWx1
ZSBpcyBnbG9iYWwubGVuZ3RoCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
Z2xvYmFsLCAnbGVuZ3RoJykuaGFzT3duUHJvcGVydHkoJ2dldCcpIGlzIGZhbHNlCitQQVNTIE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnbGVuZ3RoJykuaGFzT3duUHJv
cGVydHkoJ3NldCcpIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoZ2xvYmFsLCAnbGVuZ3RoJykuZW51bWVyYWJsZSBpcyB0cnVlCitQQVNTIE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnbGVuZ3RoJykuY29uZmlndXJhYmxlIGlzIGZh
bHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAwKS52YWx1
ZSBpcyBnbG9iYWxbMF0KK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9i
YWwsIDApLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgMCkuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlzIGZh
bHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAwKS5lbnVt
ZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xv
YmFsLCAwKS5jb25maWd1cmFibGUgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2JyksICdsZW5ndGgn
KS52YWx1ZSBpcyAxCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2RpdicpLCAnbGVuZ3RoJykuaGFzT3duUHJvcGVydHko
J2dldCcpIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2RpdicpLCAnbGVuZ3RoJykuaGFzT3duUHJvcGVy
dHkoJ3NldCcpIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2RpdicpLCAnbGVuZ3RoJykuZW51bWVyYWJs
ZSBpcyB0cnVlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ2RpdicpLCAnbGVuZ3RoJykuY29uZmlndXJhYmxlIGlzIGZh
bHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoJ2RpdicpLCAwKS52YWx1ZSBpcyBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgnZGl2JylbMF0KK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2JyksIDApLmhhc093blByb3BlcnR5KCdn
ZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdkaXYnKSwgMCkuaGFzT3duUHJvcGVydHkoJ3NldCcp
IGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ2RpdicpLCAwKS5lbnVtZXJhYmxlIGlzIHRydWUKK1BBU1Mg
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgnZGl2JyksIDApLmNvbmZpZ3VyYWJsZSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3Bhc3Mn
KSwgMCkudmFsdWUgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgncGFzcycpWzBd
CitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZSgncGFzcycpLCAwKS5oYXNPd25Qcm9wZXJ0eSgnZ2V0JykgaXMgZmFsc2UK
K1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkb2N1bWVudC5nZXRFbGVtZW50
c0J5Q2xhc3NOYW1lKCdwYXNzJyksIDApLmhhc093blByb3BlcnR5KCdzZXQnKSBpcyBmYWxzZQor
UEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGRvY3VtZW50LmdldEVsZW1lbnRz
QnlDbGFzc05hbWUoJ3Bhc3MnKSwgMCkuZW51bWVyYWJsZSBpcyB0cnVlCitQQVNTIE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgn
cGFzcycpLCAwKS5jb25maWd1cmFibGUgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdwYXNzJyksICds
ZW5ndGgnKS52YWx1ZSBpcyBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdwYXNzJyku
bGVuZ3RoCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeUNsYXNzTmFtZSgncGFzcycpLCAnbGVuZ3RoJykuaGFzT3duUHJvcGVydHkoJ2dl
dCcpIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgncGFzcycpLCAnbGVuZ3RoJykuaGFzT3duUHJvcGVy
dHkoJ3NldCcpIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgncGFzcycpLCAnbGVuZ3RoJykuZW51bWVy
YWJsZSBpcyB0cnVlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgncGFzcycpLCAnbGVuZ3RoJykuY29uZmlndXJhYmxl
IGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoY2FudmFzUGl4
ZWxBcnJheSwgJ2xlbmd0aCcpLnZhbHVlIGlzIGNhbnZhc1BpeGVsQXJyYXkubGVuZ3RoCitQQVNT
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoY2FudmFzUGl4ZWxBcnJheSwgJ2xlbmd0
aCcpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKGNhbnZhc1BpeGVsQXJyYXksICdsZW5ndGgnKS5oYXNPd25Qcm9wZXJ0
eSgnc2V0JykgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihj
YW52YXNQaXhlbEFycmF5LCAnbGVuZ3RoJykuZW51bWVyYWJsZSBpcyB0cnVlCitQQVNTIE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoY2FudmFzUGl4ZWxBcnJheSwgJ2xlbmd0aCcpLmNv
bmZpZ3VyYWJsZSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KGNhbnZhc1BpeGVsQXJyYXksIDApLnZhbHVlIGlzIGNhbnZhc1BpeGVsQXJyYXlbMF0KK1BBU1Mg
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjYW52YXNQaXhlbEFycmF5LCAwKS5oYXNP
d25Qcm9wZXJ0eSgnZ2V0JykgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihjYW52YXNQaXhlbEFycmF5LCAwKS5oYXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMgZmFs
c2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjYW52YXNQaXhlbEFycmF5
LCAwKS5lbnVtZXJhYmxlIGlzIHRydWUKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihjYW52YXNQaXhlbEFycmF5LCAwKS5jb25maWd1cmFibGUgaXMgZmFsc2UKK1BBU1MgT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzZWxlY3QsICdsZW5ndGgnKS52YWx1ZSBpcyBz
ZWxlY3QubGVuZ3RoCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc2VsZWN0
LCAnbGVuZ3RoJykuaGFzT3duUHJvcGVydHkoJ2dldCcpIGlzIGZhbHNlCitQQVNTIE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc2VsZWN0LCAnbGVuZ3RoJykuaGFzT3duUHJvcGVydHko
J3NldCcpIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc2Vs
ZWN0LCAnbGVuZ3RoJykuZW51bWVyYWJsZSBpcyB0cnVlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3Ioc2VsZWN0LCAnbGVuZ3RoJykuY29uZmlndXJhYmxlIGlzIGZhbHNlCitQ
QVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc2VsZWN0LCAwKS52YWx1ZSBpcyBz
ZWxlY3RbMF0KK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzZWxlY3QsIDAp
Lmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKHNlbGVjdCwgMCkuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlzIGZhbHNlCitQ
QVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc2VsZWN0LCAwKS5lbnVtZXJhYmxl
IGlzIHRydWUKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzZWxlY3QsIDAp
LmNvbmZpZ3VyYWJsZSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKG9iamVjdFdpdGhHZXR0ZXIsICdnZXR0ZXInKS5nZXQgaXMgZ2V0dGVyRnVuYworUEFTUyBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdFdpdGhHZXR0ZXIsICdnZXR0ZXIn
KS5zZXQgaXMgdW5kZWZpbmVkCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
b2JqZWN0V2l0aEdldHRlciwgJ2dldHRlcicpLmhhc093blByb3BlcnR5KCd2YWx1ZScpIGlzIGZh
bHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0V2l0aEdldHRl
ciwgJ2dldHRlcicpLmhhc093blByb3BlcnR5KCd3cml0YWJsZScpIGlzIGZhbHNlCitQQVNTIE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0V2l0aEdldHRlciwgJ2dldHRlcicp
LmVudW1lcmFibGUgaXMgdHJ1ZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KG9iamVjdFdpdGhHZXR0ZXIsICdnZXR0ZXInKS5jb25maWd1cmFibGUgaXMgdHJ1ZQorUEFTUyBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdFdpdGhTZXR0ZXIsICdzZXR0ZXIn
KS5nZXQgaXMgdW5kZWZpbmVkCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
b2JqZWN0V2l0aFNldHRlciwgJ3NldHRlcicpLnNldCBpcyBzZXR0ZXJGdW5jCitQQVNTIE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0V2l0aFNldHRlciwgJ3NldHRlcicpLmhh
c093blByb3BlcnR5KCd2YWx1ZScpIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3Iob2JqZWN0V2l0aFNldHRlciwgJ3NldHRlcicpLmhhc093blByb3BlcnR5KCd3
cml0YWJsZScpIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
b2JqZWN0V2l0aFNldHRlciwgJ3NldHRlcicpLmVudW1lcmFibGUgaXMgdHJ1ZQorUEFTUyBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdFdpdGhTZXR0ZXIsICdzZXR0ZXInKS5j
b25maWd1cmFibGUgaXMgdHJ1ZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KG9iamVjdFdpdGhBY2Nlc3NvciwgJ2FjY2Vzc29yJykuZ2V0IGlzIGdldHRlckZ1bmMKK1BBU1Mg
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3RXaXRoQWNjZXNzb3IsICdhY2Nl
c3NvcicpLnNldCBpcyBzZXR0ZXJGdW5jCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3Iob2JqZWN0V2l0aEFjY2Vzc29yLCAnYWNjZXNzb3InKS5oYXNPd25Qcm9wZXJ0eSgndmFs
dWUnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVj
dFdpdGhBY2Nlc3NvciwgJ2FjY2Vzc29yJykuaGFzT3duUHJvcGVydHkoJ3dyaXRhYmxlJykgaXMg
ZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3RXaXRoQWNj
ZXNzb3IsICdhY2Nlc3NvcicpLmVudW1lcmFibGUgaXMgdHJ1ZQorUEFTUyBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdFdpdGhBY2Nlc3NvciwgJ2FjY2Vzc29yJykuY29uZmln
dXJhYmxlIGlzIHRydWUKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihudWxs
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBSZXF1ZXN0ZWQgcHJvcGVydHkgZGVzY3JpcHRv
ciBvZiBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIG9iamVjdC4uCitQQVNTIE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBS
ZXF1ZXN0ZWQgcHJvcGVydHkgZGVzY3JpcHRvciBvZiBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIG9i
amVjdC4uCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoMSkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogUmVxdWVzdGVkIHByb3BlcnR5IGRlc2NyaXB0b3Igb2YgYSB2YWx1
ZSB0aGF0IGlzIG5vdCBhbiBvYmplY3QuLgorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKCcnKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBSZXF1ZXN0ZWQgcHJvcGVydHkg
ZGVzY3JpcHRvciBvZiBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIG9iamVjdC4uCitQQVNTIE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodHJ1ZSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogUmVxdWVzdGVkIHByb3BlcnR5IGRlc2NyaXB0b3Igb2YgYSB2YWx1ZSB0aGF0IGlzIG5vdCBh
biBvYmplY3QuLgorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGZhbHNlKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBSZXF1ZXN0ZWQgcHJvcGVydHkgZGVzY3JpcHRvciBv
ZiBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIG9iamVjdC4uCitDaGVja2luZyBwcm9wZXJ0eSBvcmRl
cmluZworUEFTUyBwcm9wZXJ0eSBpcyAndmFsdWUnCitQQVNTIHByb3BlcnR5IGlzICd3cml0YWJs
ZScKK1BBU1MgcHJvcGVydHkgaXMgJ2VudW1lcmFibGUnCitQQVNTIHByb3BlcnR5IGlzICdjb25m
aWd1cmFibGUnCitQQVNTIHByb3BlcnR5IGlzICdnZXQnCitQQVNTIHByb3BlcnR5IGlzICdzZXQn
CitQQVNTIHByb3BlcnR5IGlzICdlbnVtZXJhYmxlJworUEFTUyBwcm9wZXJ0eSBpcyAnY29uZmln
dXJhYmxlJworUEFTUyBwcm9wZXJ0eSBpcyAnZ2V0JworUEFTUyBwcm9wZXJ0eSBpcyAnc2V0Jwor
UEFTUyBwcm9wZXJ0eSBpcyAnZW51bWVyYWJsZScKK1BBU1MgcHJvcGVydHkgaXMgJ2NvbmZpZ3Vy
YWJsZScKK1BBU1MgcHJvcGVydHkgaXMgJ2dldCcKK1BBU1MgcHJvcGVydHkgaXMgJ3NldCcKK1BB
U1MgcHJvcGVydHkgaXMgJ2VudW1lcmFibGUnCitQQVNTIHByb3BlcnR5IGlzICdjb25maWd1cmFi
bGUnCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvanMvZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWU1MzAxYgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLmh0bWwK
QEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24i
PjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGlmcmFtZT48L2lmcmFtZT4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL2dl
dE93blByb3BlcnR5RGVzY3JpcHRvci5qcyBiL0xheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2Vz
L2dldE93blByb3BlcnR5RGVzY3JpcHRvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi44ODBhZWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9y
ZXNvdXJjZXMvZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLmpzCkBAIC0wLDAgKzEsOTUgQEAKK2Rl
c2NyaXB0aW9uKCJUZXN0IHRvIGVuc3VyZSBjb3JyZWN0IGJlaGF2aW91ciBvZiBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yIik7CisKK2Z1bmN0aW9uIGRlc2NyaXB0b3JTaG91bGRCZShv
YmplY3QsIHByb3BlcnR5LCBleHBlY3RlZCkgeworICAgIHZhciB0ZXN0ID0gJ09iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoJytvYmplY3QrIiwgIitwcm9wZXJ0eSsnKSc7CisgICAgaWYg
KCJ3cml0YWJsZSIgaW4gZXhwZWN0ZWQpIHsKKyAgICAgIC8vICBzaG91bGRCZSh0ZXN0Kycud3Jp
dGFibGUnLCAnJyArIGV4cGVjdGVkLndyaXRhYmxlKTsKKyAgICAgICAgc2hvdWxkQmUodGVzdCsn
LnZhbHVlJywgJycgKyBleHBlY3RlZC52YWx1ZSk7CisgICAgICAgIHNob3VsZEJlRmFsc2UodGVz
dCsiLmhhc093blByb3BlcnR5KCdnZXQnKSIpOworICAgICAgICBzaG91bGRCZUZhbHNlKHRlc3Qr
Ii5oYXNPd25Qcm9wZXJ0eSgnc2V0JykiKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzaG91bGRC
ZSh0ZXN0KycuZ2V0JywgJycgKyBleHBlY3RlZC5nZXQpOworICAgICAgICBzaG91bGRCZSh0ZXN0
Kycuc2V0JywgJycgKyBleHBlY3RlZC5zZXQpOworICAgICAgICBzaG91bGRCZUZhbHNlKHRlc3Qr
Ii5oYXNPd25Qcm9wZXJ0eSgndmFsdWUnKSIpOworICAgICAgICBzaG91bGRCZUZhbHNlKHRlc3Qr
Ii5oYXNPd25Qcm9wZXJ0eSgnd3JpdGFibGUnKSIpOworICAgIH0KKyAgICBzaG91bGRCZSh0ZXN0
KycuZW51bWVyYWJsZScsICcnICsgZXhwZWN0ZWQuZW51bWVyYWJsZSk7CisgICAgc2hvdWxkQmUo
dGVzdCsnLmNvbmZpZ3VyYWJsZScsICcnICsgZXhwZWN0ZWQuY29uZmlndXJhYmxlKTsKK30KKwor
c2hvdWxkQmVVbmRlZmluZWQoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioe30sICd1
bmRlZmluZWRQcm9wZXJ0eScpIik7CitkZXNjcmlwdG9yU2hvdWxkQmUoIntkZWZpbmVkUHJvcGVy
dHk6J2RlZmluZWQnfSIsICInZGVmaW5lZFByb3BlcnR5JyIsIHt3cml0YWJsZTogdHJ1ZSwgZW51
bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZTonImRlZmluZWQiJ30pOwor
ZGVzY3JpcHRvclNob3VsZEJlKCJBcnJheS5wcm90b3R5cGUiLCAiJ2NvbmNhdCciLCB7d3JpdGFi
bGU6IHRydWUsIGVudW1lcmFibGU6IGZhbHNlLCBjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiJB
cnJheS5wcm90b3R5cGUuY29uY2F0In0pOworZGVzY3JpcHRvclNob3VsZEJlKCJEYXRlLnByb3Rv
dHlwZSIsICIndG9JU09TdHJpbmcnIiwge3dyaXRhYmxlOiB0cnVlLCBlbnVtZXJhYmxlOiBmYWxz
ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZTogIkRhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5n
In0pOworZGVzY3JpcHRvclNob3VsZEJlKCJTdHJpbmcucHJvdG90eXBlIiwgIidjb25jYXQnIiwg
e3dyaXRhYmxlOiB0cnVlLCBlbnVtZXJhYmxlOiBmYWxzZSwgY29uZmlndXJhYmxlOiB0cnVlLCB2
YWx1ZToiU3RyaW5nLnByb3RvdHlwZS5jb25jYXQifSk7CitkZXNjcmlwdG9yU2hvdWxkQmUoIlJl
Z0V4cC5wcm90b3R5cGUiLCAiJ2V4ZWMnIiwge3dyaXRhYmxlOiB0cnVlLCBlbnVtZXJhYmxlOiBm
YWxzZSwgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZToiUmVnRXhwLnByb3RvdHlwZS5leGVjIn0p
OworZGVzY3JpcHRvclNob3VsZEJlKCJkb2N1bWVudC5fX3Byb3RvX18uX19wcm90b19fIiwgIidj
cmVhdGVFbGVtZW50JyIsIHt3cml0YWJsZTogdHJ1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmln
dXJhYmxlOiBmYWxzZSwgdmFsdWU6ImRvY3VtZW50LmNyZWF0ZUVsZW1lbnQifSk7CitkZXNjcmlw
dG9yU2hvdWxkQmUoIk51bWJlciIsICInTkVHQVRJVkVfSU5GSU5JVFknIiwge3dyaXRhYmxlOiBm
YWxzZSwgZW51bWVyYWJsZTogZmFsc2UsIGNvbmZpZ3VyYWJsZTogZmFsc2UsIHZhbHVlOiJOdW1i
ZXIuTkVHQVRJVkVfSU5GSU5JVFkifSk7CitkZXNjcmlwdG9yU2hvdWxkQmUoIlJlZ0V4cCIsICIn
JF8nIiwge3dyaXRhYmxlOiB0cnVlLCBlbnVtZXJhYmxlOiBmYWxzZSwgY29uZmlndXJhYmxlOiB0
cnVlLCB2YWx1ZToiUmVnRXhwLiRfIn0pOworZGVzY3JpcHRvclNob3VsZEJlKCIvYS9nIiwgIidn
bG9iYWwnIiwge3dyaXRhYmxlOiB0cnVlLCBlbnVtZXJhYmxlOiBmYWxzZSwgY29uZmlndXJhYmxl
OiBmYWxzZSwgdmFsdWU6dHJ1ZX0pOworZGVzY3JpcHRvclNob3VsZEJlKCJOb2RlIiwgIidET0NV
TUVOVF9QT1NJVElPTl9ESVNDT05ORUNURUQnIiwge3dyaXRhYmxlOiBmYWxzZSwgZW51bWVyYWJs
ZTogdHJ1ZSwgY29uZmlndXJhYmxlOiBmYWxzZSwgdmFsdWU6Ik5vZGUuRE9DVU1FTlRfUE9TSVRJ
T05fRElTQ09OTkVDVEVEIn0pOworZGVzY3JpcHRvclNob3VsZEJlKCJNYXRoIiwgIidzaW4nIiwg
e3dyaXRhYmxlOiB0cnVlLCBlbnVtZXJhYmxlOiBmYWxzZSwgY29uZmlndXJhYmxlOiB0cnVlLCB2
YWx1ZToiTWF0aC5zaW4ifSk7CitkZXNjcmlwdG9yU2hvdWxkQmUoIlsxLDIsM10iLCAiMCIsIHt3
cml0YWJsZTogdHJ1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1
ZToiMSJ9KTsKK2Rlc2NyaXB0b3JTaG91bGRCZSgiWzEsMiwzXSIsICInbGVuZ3RoJyIsIHt3cml0
YWJsZTogdHJ1ZSwgZW51bWVyYWJsZTogZmFsc2UsIGNvbmZpZ3VyYWJsZTogZmFsc2UsIHZhbHVl
OiIzIn0pOworZGVzY3JpcHRvclNob3VsZEJlKCJbMSwyLDNdIiwgIidsZW5ndGgnIiwge3dyaXRh
YmxlOiB0cnVlLCBlbnVtZXJhYmxlOiBmYWxzZSwgY29uZmlndXJhYmxlOiBmYWxzZSwgdmFsdWU6
IjMifSk7CitkZXNjcmlwdG9yU2hvdWxkQmUoIi8oYSkqL2cuZXhlYygnYScpIiwgIjAiLCB7d3Jp
dGFibGU6IHRydWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6
IidhJyJ9KTsKK2Rlc2NyaXB0b3JTaG91bGRCZSgiLyhhKSovZy5leGVjKCdhJykiLCAiJ2xlbmd0
aCciLCB7d3JpdGFibGU6IHRydWUsIGVudW1lcmFibGU6IGZhbHNlLCBjb25maWd1cmFibGU6IGZh
bHNlLCB2YWx1ZToyfSk7CitkZXNjcmlwdG9yU2hvdWxkQmUoImZ1bmN0aW9uKCl7fSIsICInbGVu
Z3RoJyIsIHt3cml0YWJsZTogZmFsc2UsIGVudW1lcmFibGU6IGZhbHNlLCBjb25maWd1cmFibGU6
IGZhbHNlLCB2YWx1ZTowfSk7CitkZXNjcmlwdG9yU2hvdWxkQmUoIk1hdGguc2luIiwgIidsZW5n
dGgnIiwge3dyaXRhYmxlOiBmYWxzZSwgZW51bWVyYWJsZTogZmFsc2UsIGNvbmZpZ3VyYWJsZTog
ZmFsc2UsIHZhbHVlOjF9KTsKK2Rlc2NyaXB0b3JTaG91bGRCZSgiTWF0aC5zaW4iLCAiJ25hbWUn
Iiwge3dyaXRhYmxlOiBmYWxzZSwgZW51bWVyYWJsZTogZmFsc2UsIGNvbmZpZ3VyYWJsZTogZmFs
c2UsIHZhbHVlOiInc2luJyJ9KTsKK3ZhciBnbG9iYWwgPSB0aGlzOworZGVzY3JpcHRvclNob3Vs
ZEJlKCJnbG9iYWwiLCAiJ2dsb2JhbCciLCB7d3JpdGFibGU6IHRydWUsIGVudW1lcmFibGU6IHRy
dWUsIGNvbmZpZ3VyYWJsZTogZmFsc2UsIHZhbHVlOiJnbG9iYWwifSk7CitkZXNjcmlwdG9yU2hv
dWxkQmUoImdsb2JhbCIsICInd2luZG93JyIsIHt3cml0YWJsZTogZmFsc2UsIGVudW1lcmFibGU6
IHRydWUsIGNvbmZpZ3VyYWJsZTogZmFsc2UsIHZhbHVlOiJnbG9iYWwifSk7CitkZXNjcmlwdG9y
U2hvdWxkQmUoImdsb2JhbCIsICInWE1MSHR0cFJlcXVlc3QnIiwge3dyaXRhYmxlOiB0cnVlLCBl
bnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IGZhbHNlLCB2YWx1ZToiWE1MSHR0cFJlcXVl
c3QifSk7CitkZXNjcmlwdG9yU2hvdWxkQmUoImdsb2JhbCIsICInbGVuZ3RoJyIsIHt3cml0YWJs
ZTogdHJ1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiBmYWxzZSwgdmFsdWU6Imds
b2JhbC5sZW5ndGgifSk7CitkZXNjcmlwdG9yU2hvdWxkQmUoImdsb2JhbCIsICIwIiwge3dyaXRh
YmxlOiB0cnVlLCBlbnVtZXJhYmxlOiBmYWxzZSwgY29uZmlndXJhYmxlOiBmYWxzZSwgdmFsdWU6
Imdsb2JhbFswXSJ9KTsKK2Rlc2NyaXB0b3JTaG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoJ2RpdicpIiwgIidsZW5ndGgnIiwge3dyaXRhYmxlOiBmYWxzZSwgZW51bWVyYWJs
ZTogdHJ1ZSwgY29uZmlndXJhYmxlOiBmYWxzZSwgdmFsdWU6IjEifSk7CitkZXNjcmlwdG9yU2hv
dWxkQmUoImRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdkaXYnKSIsICIwIiwge3dyaXRh
YmxlOiBmYWxzZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiBmYWxzZSwgdmFsdWU6
ImRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdkaXYnKVswXSJ9KTsKK2Rlc2NyaXB0b3JT
aG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgncGFzcycpIiwgIjAiLCB7
d3JpdGFibGU6IGZhbHNlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IGZhbHNlLCB2
YWx1ZToiZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgncGFzcycpWzBdIn0pOworZGVz
Y3JpcHRvclNob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdwYXNzJyki
LCAiJ2xlbmd0aCciLCB7d3JpdGFibGU6IGZhbHNlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1
cmFibGU6IGZhbHNlLCB2YWx1ZToiZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgncGFz
cycpLmxlbmd0aCJ9KTsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52
YXMiKTsKK3ZhciBjYW52YXNQaXhlbEFycmF5ID0gY2FudmFzLmdldENvbnRleHQoIjJkIikuY3Jl
YXRlSW1hZ2VEYXRhKDEwLDEwKS5kYXRhOworZGVzY3JpcHRvclNob3VsZEJlKCJjYW52YXNQaXhl
bEFycmF5IiwgIidsZW5ndGgnIiwge3dyaXRhYmxlOiBmYWxzZSwgZW51bWVyYWJsZTogdHJ1ZSwg
Y29uZmlndXJhYmxlOiBmYWxzZSwgdmFsdWU6ImNhbnZhc1BpeGVsQXJyYXkubGVuZ3RoIn0pOwor
ZGVzY3JpcHRvclNob3VsZEJlKCJjYW52YXNQaXhlbEFycmF5IiwgIjAiLCB7d3JpdGFibGU6IHRy
dWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogZmFsc2UsIHZhbHVlOiJjYW52YXNQ
aXhlbEFycmF5WzBdIn0pOwordmFyIHNlbGVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNl
bGVjdCIpOworc2VsZWN0LmlubmVySFRNTCA9ICI8b3B0aW9uPmZvbzwvb3B0aW9uPiI7CitkZXNj
cmlwdG9yU2hvdWxkQmUoInNlbGVjdCIsICInbGVuZ3RoJyIsIHt3cml0YWJsZTogZmFsc2UsIGVu
dW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogZmFsc2UsIHZhbHVlOiJzZWxlY3QubGVuZ3Ro
In0pOworZGVzY3JpcHRvclNob3VsZEJlKCJzZWxlY3QiLCAiMCIsIHt3cml0YWJsZTogdHJ1ZSwg
ZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiBmYWxzZSwgdmFsdWU6InNlbGVjdFswXSJ9
KTsKKwordmFyIG9iamVjdFdpdGhHZXR0ZXIgPSB7fTsKK2Z1bmN0aW9uIGdldHRlckZ1bmMoKXt9
Oworb2JqZWN0V2l0aEdldHRlci5fX2RlZmluZUdldHRlcl9fKCJnZXR0ZXIiLCBnZXR0ZXJGdW5j
KTsKK2Rlc2NyaXB0b3JTaG91bGRCZSgib2JqZWN0V2l0aEdldHRlciIsICInZ2V0dGVyJyIsIHsi
Z2V0IjogImdldHRlckZ1bmMiLCAic2V0IjogdW5kZWZpbmVkLCBlbnVtZXJhYmxlOiB0cnVlLCBj
b25maWd1cmFibGU6IHRydWV9KTsKK3ZhciBvYmplY3RXaXRoU2V0dGVyID0ge307CitmdW5jdGlv
biBzZXR0ZXJGdW5jKCl7fTsKK29iamVjdFdpdGhTZXR0ZXIuX19kZWZpbmVTZXR0ZXJfXygic2V0
dGVyIiwgc2V0dGVyRnVuYyk7CitkZXNjcmlwdG9yU2hvdWxkQmUoIm9iamVjdFdpdGhTZXR0ZXIi
LCAiJ3NldHRlciciLCB7InNldCI6ICJzZXR0ZXJGdW5jIiwgImdldCI6IHVuZGVmaW5lZCwgZW51
bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlfSk7Cit2YXIgb2JqZWN0V2l0aEFjY2Vz
c29yID0ge307CitvYmplY3RXaXRoQWNjZXNzb3IuX19kZWZpbmVTZXR0ZXJfXygiYWNjZXNzb3Ii
LCBzZXR0ZXJGdW5jKTsKK29iamVjdFdpdGhBY2Nlc3Nvci5fX2RlZmluZUdldHRlcl9fKCJhY2Nl
c3NvciIsIGdldHRlckZ1bmMpOworZGVzY3JpcHRvclNob3VsZEJlKCJvYmplY3RXaXRoQWNjZXNz
b3IiLCAiJ2FjY2Vzc29yJyIsIHsic2V0IjogInNldHRlckZ1bmMiLCAiZ2V0IjogImdldHRlckZ1
bmMiLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWV9KTsKKworc2hvdWxkVGhy
b3coIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobnVsbCkiKTsKK3Nob3VsZFRocm93
KCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHVuZGVmaW5lZCkiKTsKK3Nob3VsZFRo
cm93KCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKDEpIik7CitzaG91bGRUaHJvdygi
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcignJykiKTsKK3Nob3VsZFRocm93KCJPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRydWUpIik7CitzaG91bGRUaHJvdygiT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihmYWxzZSkiKTsKKworZGVidWcoIkNoZWNraW5nIHBy
b3BlcnR5IG9yZGVyaW5nIik7Cit2YXIgbm9ybWFsT3JkZXIgPSBbIid2YWx1ZSciLCAiJ3dyaXRh
YmxlJyIsICInZW51bWVyYWJsZSciLCAiJ2NvbmZpZ3VyYWJsZSciXTsKK3ZhciBhY2Nlc3Nvck9y
ZGVyID0gWyInZ2V0JyIsICInc2V0JyIsICInZW51bWVyYWJsZSciLCAiJ2NvbmZpZ3VyYWJsZSci
XTsKK3ZhciBpID0gMDsKK2ZvciAodmFyIHByb3BlcnR5IGluIE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoTWF0aCwgInNpbiIpKQorICAgIHNob3VsZEJlKCdwcm9wZXJ0eScsIG5vcm1h
bE9yZGVyW2krK10pOworaSA9IDA7Citmb3IgKHZhciBwcm9wZXJ0eSBpbiBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdFdpdGhHZXR0ZXIsICJnZXR0ZXIiKSkKKyAgICBzaG91
bGRCZSgncHJvcGVydHknLCBhY2Nlc3Nvck9yZGVyW2krK10pOworaSA9IDA7Citmb3IgKHZhciBw
cm9wZXJ0eSBpbiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdFdpdGhTZXR0
ZXIsICJzZXR0ZXIiKSkKKyAgICBzaG91bGRCZSgncHJvcGVydHknLCBhY2Nlc3Nvck9yZGVyW2kr
K10pOworaSA9IDA7Citmb3IgKHZhciBwcm9wZXJ0eSBpbiBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKG9iamVjdFdpdGhBY2Nlc3NvciwgImFjY2Vzc29yIikpCisgICAgc2hvdWxkQmUo
J3Byb3BlcnR5JywgYWNjZXNzb3JPcmRlcltpKytdKTsKKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsK
</data>
<flag name="review"
          id="19586"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38580</attachid>
            <date>2009-08-25 17:11:24 -0700</date>
            <delta_ts>2009-08-26 02:21:46 -0700</delta_ts>
            <desc>WebCore portion</desc>
            <filename>getOwnPropertyDescriptor-wc.patch</filename>
            <type>text/plain</type>
            <size>50822</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YWU2ZjljOC4uODg1ODFhZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NiBAQAorMjAwOS0wOC0yNSAgT2xpdmVyIEh1bnQg
IDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFtFUzVdIEltcGxlbWVudCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4NzI0CisKKyAg
ICAgICAgSW1wbGVtZW50IHRoZSBXZWJDb3JlIHNpZGUgb2YgZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yLiAgVGhpcworICAgICAgICByZXF1aXJlcyBhIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiBvZiBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IKKyAgICAgICAgZm9yIGV2ZXJ5IGNsYXNzIHdpdGggYSBj
dXN0b20gaW1wbGVtZW50YXRpb24gb2YgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLgorCisgICAg
ICAgIFRoZSBiaW5kaW5ncyBnZW5lcmF0b3IgaGFzIGJlZW4gdXBkYXRlZCB0byBnZW5lcmF0ZSBh
cHByb3ByaWF0ZQorICAgICAgICB2ZXJzaW9ucyBvZiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ig
Zm9yIHRoZSBnZW5lcmFsIGNhc2Ugd2hlcmUKKyAgICAgICAgYSBjdXN0b20gZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yIGlzIG5vdCBuZWVkZWQuICBFUzUgaXMgdmFndWUKKyAgICAgICAgYWJvdXQg
aG93IGdldE93blByb3BlcnR5RGVzY3JpcHRvciBzaG91bGQgd29yayBpbiB0aGUgY29udGV4dCBv
ZgorICAgICAgICAiaG9zdCIgZnVuY3Rpb25zIHdpdGggcG9seW1vcnBoaWMgW1tHZXRPd25Qcm9w
ZXJ0eV1dLCBzbyBpdCBzZWVtcworICAgICAgICBva2F5IHRoYXQgb2NjYXNpb25hbGx5IHdlICJn
dWVzcyIgd2hhdCBhdHRyaWJ1dGVzIC0tIGVnLiBkZXRlcm1pbmluZworICAgICAgICB3aGV0aGVy
IGEgcHJvcGVydHkgaXMgd3JpdGFibGUuCisKKyAgICAgICAgVGVzdDogZmFzdC9qcy9nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IuaHRtbAorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjpnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTSFRNTEFwcGxldEVsZW1lbnQ6OmdldE93blByb3BlcnR5RGVzY3JpcHRv
ckRlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRW1iZWRFbGVtZW50OjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MT2Jq
ZWN0RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxPYmplY3RFbGVt
ZW50OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSGlzdG9yeTo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTTG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
TmFtZWROb2Rlc0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOYW1lZE5vZGVz
Q29sbGVjdGlvbjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU05hbWVkTm9kZXNDb2xsZWN0aW9uLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNQ
bHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJ1bnRpbWVPYmpl
Y3RDdXN0b21HZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUXVh
cmFudGluZWRPYmplY3RXcmFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTUXVhcmFudGlu
ZWRPYmplY3RXcmFwcGVyOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTUXVhcmFudGluZWRPYmplY3RXcmFwcGVyLmg6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29y
a2VyQ29udGV4dDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdhdGUpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAqIGJyaWRnZS9v
YmpjL29iamNfcnVudGltZS5oOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5t
bToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6Z2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZS5oOgorICAgICAg
ICAoSlNDOjpCaW5kaW5nczo6SW5zdGFuY2U6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6Cisg
ICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpSdW50aW1l
QXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogYnJpZGdlL3J1bnRp
bWVfYXJyYXkuaDoKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9tZXRob2QuY3BwOgorICAgICAg
ICAoSlNDOjpSdW50aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAg
ICAqIGJyaWRnZS9ydW50aW1lX21ldGhvZC5oOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OlJ1bnRpbWVPYmplY3RJbXA6OmdldE93blByb3BlcnR5
RGVzY3JpcHRvcik6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0Lmg6CisKIDIwMDkt
MDgtMjUgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhdmlkIExldmluLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0N1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cAppbmRleCA4YWFlZmM0Li5lZmQzMTE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcApAQCAtMjc5LDYgKzI3OSwxNTAgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0
T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHkKICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiB9CiAKK2Jvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQoreworICAgIC8vIFdoZW4gYWNjZXNzaW5nIGEgV2lu
ZG93IGNyb3NzLWRvbWFpbiwgZnVuY3Rpb25zIGFyZSBhbHdheXMgdGhlIG5hdGl2ZSBidWlsdC1p
biBvbmVzLCBhbmQgdGhleQorICAgIC8vIGFyZSBub3QgYWZmZWN0ZWQgYnkgcHJvcGVydGllcyBj
aGFuZ2VkIG9uIHRoZSBXaW5kb3cgb3IgYW55dGhpbmcgaW4gaXRzIHByb3RvdHlwZSBjaGFpbi4K
KyAgICAvLyBUaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgYmVoYXZpb3Igb2YgRmlyZWZveC4K
KyAgICAKKyAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5OworICAgIAorICAgIC8vIFdlIGRvbid0
IHdhbnQgYW55IHByb3BlcnRpZXMgb3RoZXIgdGhhbiAiY2xvc2UiIGFuZCAiY2xvc2VkIiBvbiBh
IGNsb3NlZCB3aW5kb3cuCisgICAgaWYgKCFpbXBsKCktPmZyYW1lKCkpIHsKKyAgICAgICAgLy8g
VGhlIGZvbGxvd2luZyBjb2RlIGlzIHNhZmUgZm9yIGNyb3NzLWRvbWFpbiBhbmQgc2FtZSBkb21h
aW4gdXNlLgorICAgICAgICAvLyBJdCBpZ25vcmVzIGFueSBjdXN0b20gcHJvcGVydGllcyB0aGF0
IG1pZ2h0IGJlIHNldCBvbiB0aGUgRE9NV2luZG93IChpbmNsdWRpbmcgYSBjdXN0b20gcHJvdG90
eXBlKS4KKyAgICAgICAgZW50cnkgPSBzX2luZm8ucHJvcEhhc2hUYWJsZShleGVjKS0+ZW50cnko
ZXhlYywgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgaWYgKGVudHJ5ICYmICEoZW50cnktPmF0dHJp
YnV0ZXMoKSAmIEZ1bmN0aW9uKSAmJiBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSA9PSBqc0RPTVdp
bmRvd0Nsb3NlZCkgeworICAgICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKGpzQm9v
bGVhbih0cnVlKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOworICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgZW50cnkgPSBKU0RPTVdpbmRvd1By
b3RvdHlwZTo6c19pbmZvLnByb3BIYXNoVGFibGUoZXhlYyktPmVudHJ5KGV4ZWMsIHByb3BlcnR5
TmFtZSk7CisgICAgICAgIGlmIChlbnRyeSAmJiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0
aW9uKSAmJiBlbnRyeS0+ZnVuY3Rpb24oKSA9PSBqc0RPTVdpbmRvd1Byb3RvdHlwZUZ1bmN0aW9u
Q2xvc2UpIHsKKyAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90OworICAgICAgICAgICAgc2xv
dC5zZXRDdXN0b20odGhpcywgbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVyPGpzRE9NV2lu
ZG93UHJvdG90eXBlRnVuY3Rpb25DbG9zZSwgMD4pOworICAgICAgICAgICAgZGVzY3JpcHRvci5z
ZXREZXNjcmlwdG9yKHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKSwgUmVhZE9ubHkg
fCBEb250RGVsZXRlIHwgRG9udEVudW0pOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH0KKyAgICAgICAgZGVzY3JpcHRvci5zZXRVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCisgICAgU3RyaW5nIGVycm9yTWVzc2FnZTsKKyAgICBib29sIGFsbG93
c0FjY2VzcyA9IGFsbG93c0FjY2Vzc0Zyb20oZXhlYywgZXJyb3JNZXNzYWdlKTsKKyAgICBpZiAo
YWxsb3dzQWNjZXNzICYmIEpTR2xvYmFsT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
ZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICAvLyBXZSBuZWVkIHRoaXMgY29kZSBoZXJlIGJlY2F1c2Ugb3RoZXJ3aXNlIEpTRE9NV2lu
ZG93QmFzZSB3aWxsIHN0b3AgdGhlIHNlYXJjaCBiZWZvcmUgd2UgZXZlbiBnZXQgdG8gdGhlCisg
ICAgLy8gcHJvdG90eXBlIGR1ZSB0byB0aGUgYmxhbmtldCBzYW1lIG9yaWdpbiAoYWxsb3dzQWNj
ZXNzRnJvbSkgY2hlY2sgYXQgdGhlIGVuZCBvZiBnZXRPd25Qcm9wZXJ0eVNsb3QuCisgICAgLy8g
QWxzbywgaXQncyBpbXBvcnRhbnQgdG8gZ2V0IHRoZSBpbXBsZW1lbnRhdGlvbiBzdHJhaWdodCBv
dXQgb2YgdGhlIERPTVdpbmRvdyBwcm90b3R5cGUgcmVnYXJkbGVzcyBvZgorICAgIC8vIHdoYXQg
cHJvdG90eXBlIGlzIGFjdHVhbGx5IHNldCBvbiB0aGlzIG9iamVjdC4KKyAgICBlbnRyeSA9IEpT
RE9NV2luZG93UHJvdG90eXBlOjpzX2luZm8ucHJvcEhhc2hUYWJsZShleGVjKS0+ZW50cnkoZXhl
YywgcHJvcGVydHlOYW1lKTsKKyAgICBpZiAoZW50cnkpIHsKKyAgICAgICAgaWYgKGVudHJ5LT5h
dHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikgeworICAgICAgICAgICAgaWYgKGVudHJ5LT5mdW5jdGlv
bigpID09IGpzRE9NV2luZG93UHJvdG90eXBlRnVuY3Rpb25CbHVyKSB7CisgICAgICAgICAgICAg
ICAgaWYgKCFhbGxvd3NBY2Nlc3MpIHsKKyAgICAgICAgICAgICAgICAgICAgUHJvcGVydHlTbG90
IHNsb3Q7CisgICAgICAgICAgICAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXMsIG5vbkNhY2hp
bmdTdGF0aWNGdW5jdGlvbkdldHRlcjxqc0RPTVdpbmRvd1Byb3RvdHlwZUZ1bmN0aW9uQmx1ciwg
MD4pOworICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3Ioc2xvdC5n
ZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250
RW51bSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZW50cnktPmZ1bmN0aW9uKCkgPT0ganNET01XaW5k
b3dQcm90b3R5cGVGdW5jdGlvbkNsb3NlKSB7CisgICAgICAgICAgICAgICAgaWYgKCFhbGxvd3NB
Y2Nlc3MpIHsKKyAgICAgICAgICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAg
ICAgICAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXMsIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlv
bkdldHRlcjxqc0RPTVdpbmRvd1Byb3RvdHlwZUZ1bmN0aW9uQ2xvc2UsIDA+KTsKKyAgICAgICAg
ICAgICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHNsb3QuZ2V0VmFsdWUoZXhlYywg
cHJvcGVydHlOYW1lKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKGVudHJ5LT5mdW5jdGlvbigpID09IGpzRE9NV2luZG93UHJvdG90eXBlRnVu
Y3Rpb25Gb2N1cykgeworICAgICAgICAgICAgICAgIGlmICghYWxsb3dzQWNjZXNzKSB7CisgICAg
ICAgICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90OworICAgICAgICAgICAgICAgICAgICBz
bG90LnNldEN1c3RvbSh0aGlzLCBub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXI8anNET01X
aW5kb3dQcm90b3R5cGVGdW5jdGlvbkZvY3VzLCAwPik7CisgICAgICAgICAgICAgICAgICAgIGRl
c2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihzbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSks
IFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChl
bnRyeS0+ZnVuY3Rpb24oKSA9PSBqc0RPTVdpbmRvd1Byb3RvdHlwZUZ1bmN0aW9uUG9zdE1lc3Nh
Z2UpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWFsbG93c0FjY2VzcykgeworICAgICAgICAgICAg
ICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgICAgICAgICAgICAgc2xvdC5zZXRD
dXN0b20odGhpcywgbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVyPGpzRE9NV2luZG93UHJv
dG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZSwgMj4pOworICAgICAgICAgICAgICAgICAgICBkZXNj
cmlwdG9yLnNldERlc2NyaXB0b3Ioc2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpLCBS
ZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZW50
cnktPmZ1bmN0aW9uKCkgPT0ganNET01XaW5kb3dQcm90b3R5cGVGdW5jdGlvblNob3dNb2RhbERp
YWxvZykgeworICAgICAgICAgICAgICAgIGlmICghRE9NV2luZG93OjpjYW5TaG93TW9kYWxEaWFs
b2coaW1wbCgpLT5mcmFtZSgpKSkgeworICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLnNl
dFVuZGVmaW5lZCgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAg
ICAvLyBBbGxvdyBhY2Nlc3MgdG8gdG9TdHJpbmcoKSBjcm9zcy1kb21haW4sIGJ1dCBhbHdheXMg
T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy4KKyAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcpIHsKKyAgICAgICAgICAgIGlmICghYWxsb3dz
QWNjZXNzKSB7CisgICAgICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgICAg
ICAgICAgc2xvdC5zZXRDdXN0b20odGhpcywgb2JqZWN0VG9TdHJpbmdGdW5jdGlvbkdldHRlcik7
CisgICAgICAgICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHNsb3QuZ2V0VmFsdWUo
ZXhlYywgcHJvcGVydHlOYW1lKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOwor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorICAgIAorICAgIGVudHJ5ID0gSlNET01XaW5kb3c6OnNfaW5mby5wcm9wSGFzaFRhYmxl
KGV4ZWMpLT5lbnRyeShleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgIGlmIChlbnRyeSkgeworICAg
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpcywgZW50
cnktPnByb3BlcnR5R2V0dGVyKCkpOworICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3Io
c2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpLCBlbnRyeS0+YXR0cmlidXRlcygpKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIC8vIENoZWNrIGZvciBjaGls
ZCBmcmFtZXMgYnkgbmFtZSBiZWZvcmUgYnVpbHQtaW4gcHJvcGVydGllcyB0bworICAgIC8vIG1h
dGNoIE1vemlsbGEuIFRoaXMgZG9lcyBub3QgbWF0Y2ggSUUsIGJ1dCBzb21lIHNpdGVzIGVuZCB1
cAorICAgIC8vIG5hbWluZyBmcmFtZXMgdGhpbmdzIHRoYXQgY29uZmxpY3Qgd2l0aCB3aW5kb3cg
cHJvcGVydGllcyB0aGF0CisgICAgLy8gYXJlIGluIE1veiBidXQgbm90IElFLiBTaW5jZSB3ZSBo
YXZlIHNvbWUgb2YgdGhlc2UsIHdlIGhhdmUgdG8gZG8KKyAgICAvLyBpdCB0aGUgTW96IHdheS4K
KyAgICBpZiAoaW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPmNoaWxkKHByb3BlcnR5TmFtZSkpIHsK
KyAgICAgICAgUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXMs
IGNoaWxkRnJhbWVHZXR0ZXIpOworICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3Ioc2xv
dC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBE
b250RW51bSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICAvLyBEbyBw
cm90b3R5cGUgbG9va3VwIGVhcmx5IHNvIHRoYXQgZnVuY3Rpb25zIGFuZCBhdHRyaWJ1dGVzIGlu
IHRoZSBwcm90b3R5cGUgY2FuIGhhdmUKKyAgICAvLyBwcmVjZWRlbmNlIG92ZXIgdGhlIGluZGV4
IGFuZCBuYW1lIGdldHRlcnMuICAKKyAgICBKU1ZhbHVlIHByb3RvID0gcHJvdG90eXBlKCk7Cisg
ICAgaWYgKHByb3RvLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgaWYgKGFzT2JqZWN0KHByb3RvKS0+
Z2V0UHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcikpIHsK
KyAgICAgICAgICAgIGlmICghYWxsb3dzQWNjZXNzKSB7CisgICAgICAgICAgICAgICAgcHJpbnRF
cnJvck1lc3NhZ2UoZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLnNl
dFVuZGVmaW5lZCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBib29sIG9rOworICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0
eU5hbWUudG9BcnJheUluZGV4KCZvayk7CisgICAgaWYgKG9rICYmIGkgPCBpbXBsKCktPmZyYW1l
KCktPnRyZWUoKS0+Y2hpbGRDb3VudCgpKSB7CisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90Owor
ICAgICAgICBzbG90LnNldEN1c3RvbUluZGV4KHRoaXMsIGksIGluZGV4R2V0dGVyKTsKKyAgICAg
ICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlO
YW1lKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKKyAgICAvLyBBbGxvdyBzaG9ydGN1dHMgbGlrZSAnSW1hZ2UxJyBpbnN0
ZWFkIG9mIGRvY3VtZW50LmltYWdlcy5JbWFnZTEKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBp
bXBsKCktPmZyYW1lKCktPmRvY3VtZW50KCk7CisgICAgaWYgKGRvY3VtZW50LT5pc0hUTUxEb2N1
bWVudCgpKSB7CisgICAgICAgIEF0b21pY1N0cmluZ0ltcGwqIGF0b21pY1Byb3BlcnR5TmFtZSA9
IEF0b21pY1N0cmluZzo6ZmluZChwcm9wZXJ0eU5hbWUpOworICAgICAgICBpZiAoYXRvbWljUHJv
cGVydHlOYW1lICYmIChzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihkb2N1bWVudCktPmhhc05h
bWVkSXRlbShhdG9taWNQcm9wZXJ0eU5hbWUpIHx8IGRvY3VtZW50LT5oYXNFbGVtZW50V2l0aElk
KGF0b21pY1Byb3BlcnR5TmFtZSkpKSB7CisgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsK
KyAgICAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXMsIG5hbWVkSXRlbUdldHRlcik7CisgICAg
ICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3Ioc2xvdC5nZXRWYWx1ZShleGVjLCBwcm9w
ZXJ0eU5hbWUpLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gQmFzZTo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7
Cit9CisKIHZvaWQgSlNET01XaW5kb3c6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIGlmICghaW1wbCgpLT5mcmFtZSgpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dTaGVsbC5jcHAKaW5kZXggZWZmZmQ0Mi4uNGIyYTdkYyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCkBAIC04OCw2ICs4OCwxMSBAQCBib29sIEpTRE9NV2lu
ZG93U2hlbGw6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHBybwogICAgIHJldHVybiBtX3dpbmRvdy0+Z2V0T3duUHJvcGVydHlTbG90KGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKK2Jvb2wgSlNET01XaW5kb3dTaGVsbDo6Z2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJu
IG1fd2luZG93LT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBk
ZXNjcmlwdG9yKTsKK30KKwogdm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpwdXQoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBtX3dpbmRvdy0+cHV0KGV4ZWMsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIHNsb3QpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd1NoZWxsLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaAppbmRl
eCAwNTA2MjgzLi43MTZmYzE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93U2hlbGwuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwu
aApAQCAtNjcsNiArNjcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBtYXJrQ2hpbGRyZW4oSlNDOjpNYXJrU3RhY2smKTsKICAgICAgICAgdmlydHVhbCBKU0M6
OlVTdHJpbmcgY2xhc3NOYW1lKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgdmlydHVhbCBib29sIGdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgcHV0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlND
OjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgdW5zaWduZWQgYXR0cmli
dXRlcyk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkV4ZWNTdGF0
ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAgYi9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwCmluZGV4IDM3NTYxYWYu
LjMwODkyZTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxl
bWVudEN1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBcHBsZXRFbGVt
ZW50Q3VzdG9tLmNwcApAQCAtMzgsNiArMzgsMTEgQEAgYm9vbCBKU0hUTUxBcHBsZXRFbGVtZW50
OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW4K
ICAgICByZXR1cm4gcnVudGltZU9iamVjdEN1c3RvbUdldE93blByb3BlcnR5U2xvdChleGVjLCBw
cm9wZXJ0eU5hbWUsIHNsb3QsIHRoaXMpOwogfQogCitib29sIEpTSFRNTEFwcGxldEVsZW1lbnQ6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvckRlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Ip
Cit7CisgICAgcmV0dXJuIHJ1bnRpbWVPYmplY3RDdXN0b21HZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aGlzKTsKK30KKwogYm9vbCBKU0hU
TUxBcHBsZXRFbGVtZW50OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIHJldHVybiBydW50aW1lT2JqZWN0Q3VzdG9tUHV0KGV4ZWMsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIGltcGwoKSwgc2xvdCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRN
TEVtYmVkRWxlbWVudEN1c3RvbS5jcHAKaW5kZXggMjU3MGJjNi4uYmNlM2ZmYiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcApAQCAtMzgs
NiArMzgsMTEgQEAgYm9vbCBKU0hUTUxFbWJlZEVsZW1lbnQ6OmdldE93blByb3BlcnR5U2xvdERl
bGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnQKICAgICByZXR1cm4gcnVudGltZU9i
amVjdEN1c3RvbUdldE93blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHRo
aXMpOwogfQogCitib29sIEpTSFRNTEVtYmVkRWxlbWVudDo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yRGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gcnVudGlt
ZU9iamVjdEN1c3RvbUdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUs
IGRlc2NyaXB0b3IsIHRoaXMpOworfQorCiBib29sIEpTSFRNTEVtYmVkRWxlbWVudDo6cHV0RGVs
ZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICByZXR1cm4gcnVudGlt
ZU9iamVjdEN1c3RvbVB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBpbXBsKCksIHNsb3Qp
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVtZW50Q3Vz
dG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5j
cHAKaW5kZXggYTk5ZTQ2Yy4uMWJmYjUxZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwCkBAIC0zOCw2ICszOCwxMSBAQCBib29sIEpT
SFRNTE9iamVjdEVsZW1lbnQ6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbgogICAgIHJldHVybiBydW50aW1lT2JqZWN0Q3VzdG9tR2V0T3duUHJv
cGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCwgdGhpcyk7CiB9CiAKK2Jvb2wgSlNI
VE1MT2JqZWN0RWxlbWVudDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdhdGUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gcnVudGltZU9iamVjdEN1c3RvbUdldE93
blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRoaXMp
OworfQorCiBib29sIEpTSFRNTE9iamVjdEVsZW1lbnQ6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgcmV0dXJuIHJ1bnRpbWVPYmplY3RDdXN0b21QdXQo
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgaW1wbCgpLCBzbG90KTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIaXN0b3J5Q3VzdG9tLmNwcAppbmRleCBhMTEyNjZkLi41MGZmNWMzIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwCkBAIC05Myw2ICs5Myw1MiBAQCBib29sIEpT
SGlzdG9yeTo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcgogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIEpTSGlzdG9yeTo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
K3sKKyAgICAvLyBXaGVuIGFjY2Vzc2luZyBIaXN0b3J5IGNyb3NzLWRvbWFpbiwgZnVuY3Rpb25z
IGFyZSBhbHdheXMgdGhlIG5hdGl2ZSBidWlsdC1pbiBvbmVzLgorICAgIC8vIFNlZSBKU0RPTVdp
bmRvdzo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUgZm9yIGFkZGl0aW9uYWwgZGV0YWlscy4K
KyAgICAKKyAgICAvLyBPdXIgY3VzdG9tIGNvZGUgaXMgb25seSBuZWVkZWQgdG8gaW1wbGVtZW50
IHRoZSBXaW5kb3cgY3Jvc3MtZG9tYWluIHNjaGVtZSwgc28gaWYgYWNjZXNzIGlzCisgICAgLy8g
YWxsb3dlZCwgcmV0dXJuIGZhbHNlIHNvIHRoZSBub3JtYWwgbG9va3VwIHdpbGwgdGFrZSBwbGFj
ZS4KKyAgICBTdHJpbmcgbWVzc2FnZTsKKyAgICBpZiAoYWxsb3dzQWNjZXNzRnJvbUZyYW1lKGV4
ZWMsIGltcGwoKS0+ZnJhbWUoKSwgbWVzc2FnZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKKyAgICAvLyBDaGVjayBmb3IgdGhlIGZldyBmdW5jdGlvbnMgdGhhdCB3ZSBhbGxvdywgZXZl
biB3aGVuIGNhbGxlZCBjcm9zcy1kb21haW4uCisgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9
IEpTSGlzdG9yeVByb3RvdHlwZTo6c19pbmZvLnByb3BIYXNoVGFibGUoZXhlYyktPmVudHJ5KGV4
ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgaWYgKGVudHJ5KSB7CisgICAgICAgIFByb3BlcnR5U2xv
dCBzbG90OworICAgICAgICAvLyBBbGxvdyBhY2Nlc3MgdG8gYmFjaygpLCBmb3J3YXJkKCkgYW5k
IGdvKCkgZnJvbSBhbnkgZnJhbWUuCisgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYg
RnVuY3Rpb24pIHsKKyAgICAgICAgICAgIGlmIChlbnRyeS0+ZnVuY3Rpb24oKSA9PSBqc0hpc3Rv
cnlQcm90b3R5cGVGdW5jdGlvbkJhY2spIHsKKyAgICAgICAgICAgICAgICBzbG90LnNldEN1c3Rv
bSh0aGlzLCBub25DYWNoaW5nU3RhdGljQmFja0Z1bmN0aW9uR2V0dGVyKTsKKyAgICAgICAgICAg
ICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3Ioc2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0
eU5hbWUpLCBlbnRyeS0+YXR0cmlidXRlcygpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZW50cnktPmZ1bmN0aW9uKCkgPT0ganNIaXN0b3J5
UHJvdG90eXBlRnVuY3Rpb25Gb3J3YXJkKSB7CisgICAgICAgICAgICAgICAgc2xvdC5zZXRDdXN0
b20odGhpcywgbm9uQ2FjaGluZ1N0YXRpY0ZvcndhcmRGdW5jdGlvbkdldHRlcik7CisgICAgICAg
ICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJv
cGVydHlOYW1lKSwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGVudHJ5LT5mdW5jdGlvbigpID09IGpzSGlz
dG9yeVByb3RvdHlwZUZ1bmN0aW9uR28pIHsKKyAgICAgICAgICAgICAgICBzbG90LnNldEN1c3Rv
bSh0aGlzLCBub25DYWNoaW5nU3RhdGljR29GdW5jdGlvbkdldHRlcik7CisgICAgICAgICAgICAg
ICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlO
YW1lKSwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICAvLyBBbGxv
dyBhY2Nlc3MgdG8gdG9TdHJpbmcoKSBjcm9zcy1kb21haW4sIGJ1dCBhbHdheXMgT2JqZWN0LnRv
U3RyaW5nLgorICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS50b1N0cmluZykgeworICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgICAg
ICBzbG90LnNldEN1c3RvbSh0aGlzLCBvYmplY3RUb1N0cmluZ0Z1bmN0aW9uR2V0dGVyKTsKKyAg
ICAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihzbG90LmdldFZhbHVlKGV4ZWMsIHBy
b3BlcnR5TmFtZSksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHJpbnRFcnJvck1lc3NhZ2VGb3JGcmFt
ZShpbXBsKCktPmZyYW1lKCksIG1lc3NhZ2UpOworICAgIGRlc2NyaXB0b3Iuc2V0VW5kZWZpbmVk
KCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgSlNIaXN0b3J5OjpwdXREZWxlZ2F0ZShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKQogewogICAgIC8vIE9ubHkgYWxsb3cgcHV0dGluZyBieSBmcmFtZXMgaW4gdGhlIHNhbWUg
b3JpZ2luLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9t
LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKaW5kZXggMDI4
OWJjMC4uNzZjOWVhNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9u
Q3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3Bw
CkBAIC05NCw2ICs5NCw1MSBAQCBib29sIEpTTG9jYXRpb246OmdldE93blByb3BlcnR5U2xvdERl
bGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcAogICAgIHJldHVybiB0
cnVlOwogfQogCitib29sIEpTTG9jYXRpb246OmdldE93blByb3BlcnR5RGVzY3JpcHRvckRlbGVn
YXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgRnJhbWUqIGZyYW1lID0gaW1wbCgp
LT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpIHsKKyAgICAgICAgZGVzY3JpcHRvci5zZXRVbmRl
ZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIC8vIFdoZW4g
YWNjZXNzaW5nIExvY2F0aW9uIGNyb3NzLWRvbWFpbiwgZnVuY3Rpb25zIGFyZSBhbHdheXMgdGhl
IG5hdGl2ZSBidWlsdC1pbiBvbmVzLgorICAgIC8vIFNlZSBKU0RPTVdpbmRvdzo6Z2V0T3duUHJv
cGVydHlTbG90RGVsZWdhdGUgZm9yIGFkZGl0aW9uYWwgZGV0YWlscy4KKyAgICAKKyAgICAvLyBP
dXIgY3VzdG9tIGNvZGUgaXMgb25seSBuZWVkZWQgdG8gaW1wbGVtZW50IHRoZSBXaW5kb3cgY3Jv
c3MtZG9tYWluIHNjaGVtZSwgc28gaWYgYWNjZXNzIGlzCisgICAgLy8gYWxsb3dlZCwgcmV0dXJu
IGZhbHNlIHNvIHRoZSBub3JtYWwgbG9va3VwIHdpbGwgdGFrZSBwbGFjZS4KKyAgICBTdHJpbmcg
bWVzc2FnZTsKKyAgICBpZiAoYWxsb3dzQWNjZXNzRnJvbUZyYW1lKGV4ZWMsIGZyYW1lLCBtZXNz
YWdlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIC8vIENoZWNrIGZvciB0aGUg
ZmV3IGZ1bmN0aW9ucyB0aGF0IHdlIGFsbG93LCBldmVuIHdoZW4gY2FsbGVkIGNyb3NzLWRvbWFp
bi4KKyAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gSlNMb2NhdGlvblByb3RvdHlwZTo6c19p
bmZvLnByb3BIYXNoVGFibGUoZXhlYyktPmVudHJ5KGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAg
UHJvcGVydHlTbG90IHNsb3Q7CisgICAgaWYgKGVudHJ5ICYmIChlbnRyeS0+YXR0cmlidXRlcygp
ICYgRnVuY3Rpb24pKSB7CisgICAgICAgIGlmIChlbnRyeS0+ZnVuY3Rpb24oKSA9PSBqc0xvY2F0
aW9uUHJvdG90eXBlRnVuY3Rpb25SZXBsYWNlKSB7CisgICAgICAgICAgICBzbG90LnNldEN1c3Rv
bSh0aGlzLCBub25DYWNoaW5nU3RhdGljUmVwbGFjZUZ1bmN0aW9uR2V0dGVyKTsKKyAgICAgICAg
ICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihzbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5
TmFtZSksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0gZWxzZSBpZiAoZW50cnktPmZ1bmN0aW9uKCkgPT0ganNMb2NhdGlvblByb3RvdHlw
ZUZ1bmN0aW9uUmVsb2FkKSB7CisgICAgICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzLCBub25D
YWNoaW5nU3RhdGljUmVsb2FkRnVuY3Rpb25HZXR0ZXIpOworICAgICAgICAgICAgZGVzY3JpcHRv
ci5zZXREZXNjcmlwdG9yKHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKSwgZW50cnkt
PmF0dHJpYnV0ZXMoKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSBlbHNl
IGlmIChlbnRyeS0+ZnVuY3Rpb24oKSA9PSBqc0xvY2F0aW9uUHJvdG90eXBlRnVuY3Rpb25Bc3Np
Z24pIHsKKyAgICAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXMsIG5vbkNhY2hpbmdTdGF0aWNB
c3NpZ25GdW5jdGlvbkdldHRlcik7CisgICAgICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0
b3Ioc2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpLCBlbnRyeS0+YXR0cmlidXRlcygp
KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIAorICAg
IC8vIEZJWE1FOiBPdGhlciBpbXBsZW1lbnRlcnMgb2YgdGhlIFdpbmRvdyBjcm9zcy1kb21haW4g
c2NoZW1lIChXaW5kb3csIEhpc3RvcnkpIGFsbG93IHRvU3RyaW5nLAorICAgIC8vIGJ1dCBmb3Ig
bm93IHdlIGhhdmUgZGVjaWRlZCBub3QgdG8sIHBhcnRseSBiZWNhdXNlIGl0IHNlZW1zIHNpbGx5
IHRvIHJldHVybiAiW09iamVjdCBMb2NhdGlvbl0iIGluCisgICAgLy8gc3VjaCBjYXNlcyB3aGVu
IG5vcm1hbGx5IHRoZSBzdHJpbmcgZm9ybSBvZiBMb2NhdGlvbiB3b3VsZCBiZSB0aGUgVVJMLgor
ICAgIAorICAgIHByaW50RXJyb3JNZXNzYWdlRm9yRnJhbWUoZnJhbWUsIG1lc3NhZ2UpOworICAg
IGRlc2NyaXB0b3Iuc2V0VW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wg
SlNMb2NhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICBGcmFtZSogZnJhbWUgPSBpbXBsKCktPmZyYW1lKCk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTmFtZWROb2Rlc0NvbGxlY3Rpb24uY3BwIGIvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU05hbWVkTm9kZXNDb2xsZWN0aW9uLmNwcAppbmRleCBmMzZhN2Q2Li5hMWNiMjAyIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2Rlc0NvbGxlY3Rpb24uY3Bw
CisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVzQ29sbGVjdGlvbi5jcHAKQEAg
LTg5LDQgKzg5LDM3IEBAIGJvb2wgSlNOYW1lZE5vZGVzQ29sbGVjdGlvbjo6Z2V0T3duUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllCiAgICAgcmV0dXJuIERPTU9i
amVjdFdpdGhHbG9iYWxQb2ludGVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlO
YW1lLCBzbG90KTsKIH0KIAorYm9vbCBKU05hbWVkTm9kZXNDb2xsZWN0aW9uOjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICBpZiAocHJvcGVy
dHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKKyAgICAgICAgZGVzY3Jp
cHRvci5zZXREZXNjcmlwdG9yKGpzTnVtYmVyKGV4ZWMsIG1fbm9kZXMtPnNpemUoKSksIFJlYWRP
bmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorICAgIAorICAgIGJvb2wgb2s7CisgICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUu
dG9VSW50MzIoJm9rKTsKKyAgICBpZiAob2sgJiYgaW5kZXggPCBtX25vZGVzLT5zaXplKCkpIHsK
KyAgICAgICAgUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIHNsb3Quc2V0Q3VzdG9tSW5kZXgo
dGhpcywgaW5kZXgsIGluZGV4R2V0dGVyKTsKKyAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlw
dG9yKHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKSwgUmVhZE9ubHkgfCBEb250RGVs
ZXRlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIC8vIEZvciBJRSBj
b21wYXRpYmlsaXR5LCB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gbG9vayB1cCBlbGVtZW50cyBpbiBh
CisgICAgLy8gZG9jdW1lbnQuZm9ybU5hbWUubmFtZSByZXN1bHQgYnkgaWQgYXMgd2VsbCBhcyBi
ZSBpbmRleC4KKyAgICAKKyAgICBBdG9taWNTdHJpbmcgYXRvbWljUHJvcGVydHlOYW1lID0gcHJv
cGVydHlOYW1lOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX25vZGVzLT5zaXplKCk7
IGkrKykgeworICAgICAgICBOb2RlKiBub2RlID0gKCptX25vZGVzKVtpXS5nZXQoKTsKKyAgICAg
ICAgaWYgKG5vZGUtPmhhc0F0dHJpYnV0ZXMoKSAmJiBub2RlLT5hdHRyaWJ1dGVzKCktPmlkKCkg
PT0gYXRvbWljUHJvcGVydHlOYW1lKSB7CisgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsK
KyAgICAgICAgICAgIHNsb3Quc2V0Q3VzdG9tSW5kZXgodGhpcywgaSwgaW5kZXhHZXR0ZXIpOwor
ICAgICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHNsb3QuZ2V0VmFsdWUoZXhlYywg
cHJvcGVydHlOYW1lKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiBET01PYmplY3RXaXRo
R2xvYmFsUG9pbnRlcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFt
ZSwgZGVzY3JpcHRvcik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVzQ29sbGVjdGlvbi5oIGIvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU05hbWVkTm9kZXNDb2xsZWN0aW9uLmgKaW5kZXggY2Q2YzJjYi4uZmM2Mjlk
OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hbWVkTm9kZXNDb2xsZWN0aW9u
LmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hbWVkTm9kZXNDb2xsZWN0aW9uLmgKQEAg
LTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBKU05hbWVkTm9kZXND
b2xsZWN0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBjb25zdCBWZWN0
b3I8UmVmUHRyPE5vZGU+ID4mKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9w
ZXJ0eVNsb3QmKTsKKyAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlE
ZXNjcmlwdG9yJik7CiAKICAgICAgICAgdmlydHVhbCBjb25zdCBKU0M6OkNsYXNzSW5mbyogY2xh
c3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnNfaW5mbzsgfQogICAgICAgICBzdGF0aWMgY29uc3Qg
SlNDOjpDbGFzc0luZm8gc19pbmZvOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdp
bkVsZW1lbnRGdW5jdGlvbnMuY3BwCmluZGV4IDU2YjBlY2EuLmFkYTJhNzcgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcAorKysgYi9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKQEAgLTg2LDYg
Kzg2LDIyIEBAIGJvb2wgcnVudGltZU9iamVjdEN1c3RvbUdldE93blByb3BlcnR5U2xvdChFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
K2Jvb2wgcnVudGltZU9iamVjdEN1c3RvbUdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yLCBKU0hUTUxFbGVtZW50KiBlbGVtZW50KQoreworICAgIFJ1bnRpbWVP
YmplY3RJbXAqIHJ1bnRpbWVPYmplY3QgPSBnZXRSdW50aW1lT2JqZWN0KGV4ZWMsIGVsZW1lbnQt
PmltcGwoKSk7CisgICAgaWYgKCFydW50aW1lT2JqZWN0KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKCFydW50aW1lT2JqZWN0LT5oYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgUHJvcGVydHlTbG90IHNsb3Q7CisgICAgc2xv
dC5zZXRDdXN0b20oZWxlbWVudCwgcnVudGltZU9iamVjdFByb3BlcnR5R2V0dGVyKTsKKyAgICAv
LyBXaGlsZSB3ZSBkb24ndCBrbm93IHdoYXQgdGhlIHBsdWdpbiBhbGxvd3MsIHdlIGRvIGtub3cg
dGhhdCB3ZSBwcmV2ZW50CisgICAgLy8gZW51bWVyYXRpb24gb3IgZGVsZXRpb24gb2YgcHJvcGVy
dGllcywgc28gd2UgbWFyayBwbHVnaW4gcHJvcGVydGllcworICAgIC8vIGFzIERvbnRFbnVtIHwg
RG9udERlbGV0ZQorICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihzbG90LmdldFZhbHVlKGV4
ZWMsIHByb3BlcnR5TmFtZSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKIGJvb2wgcnVudGltZU9iamVjdEN1c3RvbVB1dChFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgSFRNTEVsZW1lbnQq
IGVsZW1lbnQsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBSdW50aW1lT2JqZWN0SW1w
KiBydW50aW1lT2JqZWN0ID0gZ2V0UnVudGltZU9iamVjdChleGVjLCBlbGVtZW50KTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmggYi9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oCmluZGV4IDhjOWRm
YTcuLmE1YTMyM2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVt
ZW50RnVuY3Rpb25zLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRG
dW5jdGlvbnMuaApAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgSlND
OjpKU1ZhbHVlIHJ1bnRpbWVPYmplY3RHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6
OklkZW50aWZpZXImLCBjb25zdCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIEpTQzo6SlNWYWx1
ZSBydW50aW1lT2JqZWN0UHJvcGVydHlHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6
OklkZW50aWZpZXImLCBjb25zdCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIGJvb2wgcnVudGlt
ZU9iamVjdEN1c3RvbUdldE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpT
Qzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlTbG90JiwgSlNIVE1MRWxlbWVudCopOworICAg
IGJvb2wgcnVudGltZU9iamVjdEN1c3RvbUdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkV4
ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9y
JiwgSlNIVE1MRWxlbWVudCopOwogICAgIGJvb2wgcnVudGltZU9iamVjdEN1c3RvbVB1dChKU0M6
OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6SlNWYWx1ZSwgSFRNTEVs
ZW1lbnQqLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOwogICAgIEpTQzo6Q2FsbFR5cGUgcnVudGlt
ZU9iamVjdEdldENhbGxEYXRhKEhUTUxFbGVtZW50KiwgSlNDOjpDYWxsRGF0YSYpOwogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUXVhcmFudGluZWRPYmplY3RXcmFwcGVyLmNw
cCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIuY3BwCmlu
ZGV4IDVmNGRmZDQuLmQ0YWQzODMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNR
dWFyYW50aW5lZE9iamVjdFdyYXBwZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNR
dWFyYW50aW5lZE9iamVjdFdyYXBwZXIuY3BwCkBAIC0xMzgsNiArMTM4LDI2IEBAIGJvb2wgSlNR
dWFyYW50aW5lZE9iamVjdFdyYXBwZXI6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4
ZWMsIHVuc2lnbmVkIGlkCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorYm9vbCBKU1F1YXJhbnRp
bmVkT2JqZWN0V3JhcHBlcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKQoreworICAgIGlmICghYWxsb3dzR2V0UHJvcGVydHkoKSkgeworICAgICAgICBkZXNj
cmlwdG9yLnNldFVuZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAg
ICBQcm9wZXJ0eURlc2NyaXB0b3IgdW53cmFwcGVkRGVzY3JpcHRvcjsKKyAgICBib29sIHJlc3Vs
dCA9IG1fdW53cmFwcGVkT2JqZWN0LT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodW53cmFwcGVk
RXhlY1N0YXRlKCksIGlkZW50aWZpZXIsIHVud3JhcHBlZERlc2NyaXB0b3IpOworCisgICAgaWYg
KHVud3JhcHBlZERlc2NyaXB0b3IuaGFzQWNjZXNzb3JzKCkpIHsKKyAgICAgICAgZGVzY3JpcHRv
ci5zZXRBY2Nlc3NvckRlc2NyaXB0b3Iod3JhcE91dGdvaW5nVmFsdWUodW53cmFwcGVkRXhlY1N0
YXRlKCksIHVud3JhcHBlZERlc2NyaXB0b3IuZ2V0dGVyKCkpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3cmFwT3V0Z29pbmdWYWx1ZSh1bndyYXBwZWRFeGVjU3Rh
dGUoKSwgdW53cmFwcGVkRGVzY3JpcHRvci5zZXR0ZXIoKSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVud3JhcHBlZERlc2NyaXB0b3IuYXR0cmlidXRlcygpKTsK
KyAgICB9IGVsc2UKKyAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHdyYXBPdXRnb2lu
Z1ZhbHVlKHVud3JhcHBlZEV4ZWNTdGF0ZSgpLCB1bndyYXBwZWREZXNjcmlwdG9yLnZhbHVlKCkp
LCB1bndyYXBwZWREZXNjcmlwdG9yLmF0dHJpYnV0ZXMoKSk7CisgICAgdHJhbnNmZXJFeGNlcHRp
b25Ub0V4ZWNTdGF0ZShleGVjKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB2b2lkIEpTUXVh
cmFudGluZWRPYmplY3RXcmFwcGVyOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgaWYgKCFhbGxvd3NTZXRQcm9wZXJ0eSgpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlci5oIGIvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlci5oCmluZGV4IDA4OTM1ZTcuLmVmNGI2NTcgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIu
aAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUXVhcmFudGluZWRPYmplY3RXcmFwcGVyLmgK
QEAgLTU4LDYgKzU4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25z
dCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFs
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQsIEpTQzo6
UHJvcGVydHlTbG90Jik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3Bl
cnR5RGVzY3JpcHRvciYpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoSlNDOjpFeGVjU3Rh
dGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVy
dHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoSlNDOjpFeGVjU3RhdGUqLCB1bnNp
Z25lZCwgSlNDOjpKU1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
b3JrZXJDb250ZXh0Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250
ZXh0Q3VzdG9tLmNwcAppbmRleCA3ZWNlN2EwLi41MmQzM2ZkIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCkBAIC04MSw2ICs4MSwxNCBAQCBib29s
IEpTV29ya2VyQ29udGV4dDo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBKU1dvcmtl
ckNvbnRleHQ6OmdldE93blByb3BlcnR5RGVzY3JpcHRvckRlbGVnYXRlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IpCit7CisgICAgLy8gTG9vayBmb3Igb3ZlcnJpZGVzIGJlZm9yZSBsb29raW5nIGF0
IGFueSBvZiBvdXIgb3duIHByb3BlcnRpZXMuCisgICAgaWYgKEpTR2xvYmFsT2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiAjaWYgRU5BQkxFKEVW
RU5UU09VUkNFKQogSlNWYWx1ZSBKU1dvcmtlckNvbnRleHQ6OmV2ZW50U291cmNlKEV4ZWNTdGF0
ZSogZXhlYykgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0gYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCmluZGV4IGY2ZGU1MGUuLmNjYjk0YjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMzQ4LDYgKzM0OCw5OSBAQCBzdWIgR2VuZXJhdGVH
ZXRPd25Qcm9wZXJ0eVNsb3RCb2R5CiAgICAgcmV0dXJuIEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBs
OwogfQogCitzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JCb2R5Cit7CisgICAg
bXkgKCRkYXRhTm9kZSwgJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRpbXBsQ2xhc3NOYW1l
LCAkaGFzQXR0cmlidXRlcywgJGlubGluZWQpID0gQF87CisgICAgCisgICAgbXkgJG5hbWVzcGFj
ZU1heWJlID0gKCRpbmxpbmVkID8gIkpTQzo6IiA6ICIiKTsKKyAgICAKKyAgICBteSBAZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9ySW1wbCA9ICgpOworICAgIAorICAgIGlmICgkaW50ZXJmYWNlTmFt
ZSBlcSAiTmFtZWROb2RlTWFwIiBvciAkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTENvbGxlY3Rpb24i
KSB7CisgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAgJHtu
YW1lc3BhY2VNYXliZX1KU1ZhbHVlIHByb3RvID0gcHJvdG90eXBlKCk7XG4iKTsKKyAgICAgICAg
cHVzaChAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ySW1wbCwgIiAgICBpZiAocHJvdG8uaXNPYmpl
Y3QoKSAmJiBzdGF0aWNfY2FzdDwke25hbWVzcGFjZU1heWJlfUpTT2JqZWN0Kj4oYXNPYmplY3Qo
cHJvdG8pKS0+aGFzUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lKSlcbiIpOworICAgICAgICBw
dXNoKEBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JJbXBsLCAiICAgICAgICByZXR1cm4gZmFsc2U7
XG5cbiIpOworICAgIH0KKyAgICAKKyAgICBteSAkbWFudWFsTG9va3VwR2V0dGVyR2VuZXJhdGlv
biA9IHN1YiB7CisgICAgICAgIG15ICRyZXF1aXJlc01hbnVhbExvb2t1cCA9ICRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0luZGV4R2V0dGVyIn0gfHwgJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiSGFzTmFtZUdldHRlciJ9OworICAgICAgICBpZiAoJHJlcXVpcmVz
TWFudWFsTG9va3VwKSB7CisgICAgICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3JJbXBsLCAiICAgIGNvbnN0ICR7bmFtZXNwYWNlTWF5YmV9SGFzaEVudHJ5KiBlbnRyeSA9ICR7
Y2xhc3NOYW1lfVRhYmxlLmVudHJ5KGV4ZWMsIHByb3BlcnR5TmFtZSk7XG4iKTsKKyAgICAgICAg
ICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAgaWYgKGVudHJ5KSB7
XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIg
ICAgICAgIFByb3BlcnR5U2xvdCBzbG90O1xuIik7CisgICAgICAgICAgICBwdXNoKEBnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3JJbXBsLCAiICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzLCBlbnRy
eS0+cHJvcGVydHlHZXR0ZXIoKSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGdldE93blByb3Bl
cnR5RGVzY3JpcHRvckltcGwsICIgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihzbG90
LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpO1xuIik7
CisgICAgICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JJbXBsLCAiICAgICAg
ICByZXR1cm4gdHJ1ZTtcbiIpOworICAgICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9ySW1wbCwgIiAgICB9XG4iKTsKKyAgICAgICAgfQorICAgIH07CisgICAgCisgICAgaWYg
KCEkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNPdmVycmlkaW5nTmFtZUdldHRl
ciJ9KSB7CisgICAgICAgICYkbWFudWFsTG9va3VwR2V0dGVyR2VuZXJhdGlvbigpOworICAgIH0K
KyAgICAKKyAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzSW5kZXhH
ZXR0ZXIifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNDdXN0b21JbmRl
eEdldHRlciJ9KSB7CisgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGws
ICIgICAgYm9vbCBvaztcbiIpOworICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3JJbXBsLCAiICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLnRvVUludDMyKCZvaywg
ZmFsc2UpO1xuIik7CisgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGws
ICIgICAgaWYgKG9rICYmIGluZGV4IDwgc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPihpbXBs
KCkpLT5sZW5ndGgoKSkge1xuIik7CisgICAgICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJIYXNDdXN0b21JbmRleEdldHRlciJ9KSB7CisgICAgICAgICAgICAjIEFzc3Vt
ZSB0aGF0IGlmIHRoZXJlJ3MgYSBzZXR0ZXIsIHRoZSBpbmRleCB3aWxsIGJlIHdyaXRhYmxlCisg
ICAgICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzSW5kZXhT
ZXR0ZXIifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNDdXN0b21JbmRl
eFNldHRlciJ9KSB7CisgICAgICAgICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9ySW1wbCwgIiAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKGdldEJ5SW5kZXgoZXhl
YywgaW5kZXgpLCAke25hbWVzcGFjZU1heWJlfURvbnREZWxldGUpO1xuIik7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRv
ckltcGwsICIgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihnZXRCeUluZGV4KGV4ZWMs
IGluZGV4KSwgJHtuYW1lc3BhY2VNYXliZX1Eb250RGVsZXRlIHwgJHtuYW1lc3BhY2VNYXliZX1S
ZWFkT25seSk7XG4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAgICAgICR7bmFtZXNw
YWNlTWF5YmV9UHJvcGVydHlTbG90IHNsb3Q7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGdldE93
blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAgICAgIHNsb3Quc2V0Q3VzdG9tSW5kZXgodGhp
cywgaW5kZXgsIGluZGV4R2V0dGVyKTtcbiIpOworICAgICAgICAgICAgIyBBc3N1bWUgdGhhdCBp
ZiB0aGVyZSdzIGEgc2V0dGVyLCB0aGUgaW5kZXggd2lsbCBiZSB3cml0YWJsZQorICAgICAgICAg
ICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0luZGV4U2V0dGVyIn0g
fHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzQ3VzdG9tSW5kZXhTZXR0ZXIi
fSkgeworICAgICAgICAgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGws
ICIgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihzbG90LmdldFZhbHVlKGV4ZWMsIHBy
b3BlcnR5TmFtZSksICR7bmFtZXNwYWNlTWF5YmV9RG9udERlbGV0ZSk7XG4iKTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9ySW1wbCwgIiAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHNsb3QuZ2V0VmFsdWUo
ZXhlYywgcHJvcGVydHlOYW1lKSwgJHtuYW1lc3BhY2VNYXliZX1Eb250RGVsZXRlIHwgJHtuYW1l
c3BhY2VNYXliZX1SZWFkT25seSk7XG4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JJbXBsLCAiICAgICAgICByZXR1cm4g
dHJ1ZTtcbiIpOworICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JJbXBsLCAi
ICAgIH1cbiIpOworICAgIH0KKyAgICAKKyAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiSGFzTmFtZUdldHRlciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Ikhhc092ZXJyaWRpbmdOYW1lR2V0dGVyIn0pIHsKKyAgICAgICAgcHVzaChAZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9ySW1wbCwgIiAgICBpZiAoY2FuR2V0SXRlbXNGb3JOYW1lKGV4ZWMsIHN0
YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4oaW1wbCgpKSwgcHJvcGVydHlOYW1lKSkge1xuIik7
CisgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAgICAgICR7
bmFtZXNwYWNlTWF5YmV9UHJvcGVydHlTbG90IHNsb3Q7XG4iKTsKKyAgICAgICAgcHVzaChAZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9ySW1wbCwgIiAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpcywg
bmFtZUdldHRlcik7XG4iKTsKKyAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
SW1wbCwgIiAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHNsb3QuZ2V0VmFsdWUoZXhl
YywgcHJvcGVydHlOYW1lKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pO1xuIik7
CisgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAgICAgIHJl
dHVybiB0cnVlO1xuIik7CisgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvcklt
cGwsICIgICAgfVxuIik7CisgICAgICAgIGlmICgkaW5saW5lZCkgeworICAgICAgICAgICAgJGhl
YWRlckluY2x1ZGVzeyJBdG9taWNTdHJpbmcuaCJ9ID0gMTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkF0b21pY1N0cmluZy5oIn0gPSAxOworICAgICAgICB9
CisgICAgfQorICAgIAorICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJI
YXNPdmVycmlkaW5nTmFtZUdldHRlciJ9KSB7CisgICAgICAgICYkbWFudWFsTG9va3VwR2V0dGVy
R2VuZXJhdGlvbigpOworICAgIH0KKyAgICAKKyAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiRGVsZWdhdGluZ0dldE93blByb3BlcnR5U2xvdCJ9KSB7CisgICAgICAgIHB1
c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAgaWYgKGdldE93blByb3BlcnR5
RGVzY3JpcHRvckRlbGVnYXRlKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcikpXG4iKTsK
KyAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ySW1wbCwgIiAgICAgICAgcmV0
dXJuIHRydWU7XG4iKTsKKyAgICB9CisgICAgCisgICAgaWYgKCRoYXNBdHRyaWJ1dGVzKSB7Cisg
ICAgICAgIGlmICgkaW5saW5lZCkgeworICAgICAgICAgICAgZGllICJDYW5ub3QgaW5saW5lIGlm
IE5vU3RhdGljVGFibGVzIGlzIHNldC4iIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJOb1N0YXRpY1RhYmxlcyJ9KTsKKyAgICAgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5
RGVzY3JpcHRvckltcGwsICIgICAgcmV0dXJuICR7bmFtZXNwYWNlTWF5YmV9Z2V0U3RhdGljVmFs
dWVEZXNjcmlwdG9yPCRjbGFzc05hbWUsIEJhc2U+KGV4ZWMsIHNfaW5mby5zdGF0aWNQcm9wSGFz
aFRhYmxlLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpO1xuIik7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JJbXBsLCAi
ICAgIHJldHVybiAke25hbWVzcGFjZU1heWJlfWdldFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjwkY2xh
c3NOYW1lLCBCYXNlPihleGVjLCAiIC4gaGFzaFRhYmxlQWNjZXNzb3IoJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiTm9TdGF0aWNUYWJsZXMifSwgJGNsYXNzTmFtZSkgLiAiLCB0aGlz
LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpO1xuIik7CisgICAgICAgIH0KKyAgICB9IGVsc2Ug
eworICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JJbXBsLCAiICAgIHJldHVy
biBCYXNlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNj
cmlwdG9yKTtcbiIpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gQGdldE93blByb3BlcnR5RGVz
Y3JpcHRvckltcGw7Cit9CisKIHN1YiBHZW5lcmF0ZUhlYWRlcgogewogICAgIG15ICRvYmplY3Qg
PSBzaGlmdDsKQEAgLTQ2MCw4ICs1NTMsMTAgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgIyBH
ZXR0ZXJzCiAgICAgaWYgKCRoYXNHZXR0ZXIpIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwg
Y29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7
XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIGJvb2wgZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7XG4iKTsKICAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5
U2xvdCYpO1xuIikgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0luZGV4
R2V0dGVyIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzQ3VzdG9tSW5k
ZXhHZXR0ZXIifSkgJiYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc092ZXJy
aWRpbmdOYW1lR2V0dGVyIn07CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6
SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlTbG90Jik7XG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJEZWxlZ2F0aW5nR2V0T3duUHJvcGVydHlTbG90In07CisgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JE
ZWxlZ2F0ZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJv
cGVydHlEZXNjcmlwdG9yJik7XG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJEZWxlZ2F0aW5nR2V0T3duUHJvcGVydHlTbG90In07CiAgICAgfQogCiAgICAgIyBDaGVjayBp
ZiB3ZSBoYXZlIGFueSB3cml0YWJsZSBwcm9wZXJ0aWVzCkBAIC02MjEsNiArNzE2LDEwIEBAIHN1
YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAie1xuIik7CiAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9k
eSgkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW1wbENsYXNzTmFtZSwg
JG51bUF0dHJpYnV0ZXMgPiAwLCAxKSk7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJ9
XG5cbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiQUxXQVlTX0lOTElORSBib29s
ICR7Y2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6RXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IpXG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IntcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCBHZW5lcmF0ZUdldE93blByb3Bl
cnR5RGVzY3JpcHRvckJvZHkoJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwg
JGltcGxDbGFzc05hbWUsICRudW1BdHRyaWJ1dGVzID4gMCwgMSkpOworICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAifVxuXG4iKTsKICAgICB9CiAKICAgICBpZiAoISRoYXNQYXJlbnQgfHwg
JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiR2VuZXJhdGVUb0pTIn0gfHwgJGRhdGFO
b2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tVG9KUyJ9KSB7CkBAIC02NjIsNyArNzYx
LDkgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBz
dGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvO1xuIik7CiAgICAgaWYgKCRudW1GdW5j
dGlvbnMgPiAwIHx8ICRudW1Db25zdGFudHMgPiAwIHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkRlbGVnYXRpbmdQcm90b3R5cGVHZXRPd25Qcm9wZXJ0eVNsb3QifSkgewogICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3Bl
cnR5U2xvdCYpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVh
bCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpT
Qzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7XG4iKTsKICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBib29sIGdldE93blByb3BlcnR5U2xvdERlbGVnYXRl
KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNs
b3QmKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRlbGVnYXRpbmdQ
cm90b3R5cGVHZXRPd25Qcm9wZXJ0eVNsb3QifTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvckRlbGVnYXRlKEpTQzo6RXhlY1N0
YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTtc
biIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRlbGVnYXRpbmdQcm90b3R5
cGVHZXRPd25Qcm9wZXJ0eVNsb3QifTsKIAogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LAog
ICAgICAgICAgICAgIiAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4gY3JlYXRl
U3RydWN0dXJlKEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpXG4iIC4KQEAgLTkzOSw2ICsxMDQwLDI1
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICByZXR1cm4gZ2V0U3RhdGljUHJvcGVydHlTbG90PCR7Y2xhc3NOYW1lfVByb3Rv
dHlwZSwgSlNPYmplY3Q+KGV4ZWMsICIgLiBwcm90b3R5cGVIYXNoVGFibGVBY2Nlc3NvcigkZGF0
YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOb1N0YXRpY1RhYmxlcyJ9LCAkY2xhc3NOYW1l
KSAuICIsIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsKICAgICAgICAgfQogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CisKKyAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJib29sICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ7XG4iKTsKKyAgICAgICAgCisgICAgICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJEZWxlZ2F0aW5nUHJvdG90eXBlR2V0T3duUHJvcGVydHlTbG90In0pIHsKKyAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3JEZWxlZ2F0ZShleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpKVxuIik7CisgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRydWU7XG4iKTsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKCRudW1Db25zdGFudHMgZXEgMCAmJiAkbnVtRnVu
Y3Rpb25zIGVxIDApIHsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVy
biBCYXNlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNj
cmlwdG9yKTtcbiIpOyAgICAgICAgCisgICAgICAgIH0gZWxzaWYgKCRudW1Db25zdGFudHMgZXEg
MCkgeworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldFN0YXRp
Y0Z1bmN0aW9uRGVzY3JpcHRvcjxKU09iamVjdD4oZXhlYywgIiAuIHByb3RvdHlwZUhhc2hUYWJs
ZUFjY2Vzc29yKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5vU3RhdGljVGFibGVz
In0sICRjbGFzc05hbWUpIC4gIiwgdGhpcywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTtcbiIp
OworICAgICAgICB9IGVsc2lmICgkbnVtRnVuY3Rpb25zIGVxIDApIHsKKyAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8JHtj
bGFzc05hbWV9UHJvdG90eXBlLCBKU09iamVjdD4oZXhlYywgIiAuIHByb3RvdHlwZUhhc2hUYWJs
ZUFjY2Vzc29yKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5vU3RhdGljVGFibGVz
In0sICRjbGFzc05hbWUpIC4gIiwgdGhpcywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTtcbiIp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cmV0dXJuIGdldFN0YXRpY1Byb3BlcnR5RGVzY3JpcHRvcjwke2NsYXNzTmFtZX1Qcm90b3R5cGUs
IEpTT2JqZWN0PihleGVjLCAiIC4gcHJvdG90eXBlSGFzaFRhYmxlQWNjZXNzb3IoJGRhdGFOb2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTm9TdGF0aWNUYWJsZXMifSwgJGNsYXNzTmFtZSkgLiAi
LCB0aGlzLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpO1xuIik7CisgICAgICAgIH0KKyAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgIH0KIAogICAgIGlmICgkZGF0YU5v
ZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEZWxlZ2F0aW5nUHJvdG90eXBlUHV0RnVuY3Rpb24i
fSkgewpAQCAtMTA2Nyw2ICsxMTg3LDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keSgkZGF0YU5vZGUsICRp
bnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW1wbENsYXNzTmFtZSwgJG51bUF0dHJpYnV0ZXMg
PiAwLCAwKSk7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CisgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9OjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcilcbiIpOworICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCBHZW5lcmF0ZUdldE93blByb3BlcnR5RGVzY3JpcHRvckJvZHkoJGRhdGFOb2RlLCAkaW50ZXJm
YWNlTmFtZSwgJGNsYXNzTmFtZSwgJGltcGxDbGFzc05hbWUsICRudW1BdHRyaWJ1dGVzID4gMCwg
MCkpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKCgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNJbmRl
eEdldHRlciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0N1c3RvbUlu
ZGV4R2V0dGVyIn0pIApAQCAtMjA0Nyw2ICsyMTcxLDcgQEAgcHVibGljOgogICAgICAgICBwdXRE
aXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgJHtwcm90b0NsYXNzTmFtZX06
OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgTm9uZSk7CiAgICAgfQogICAgIHZpcnR1YWwgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3Bl
cnR5U2xvdCYpOworICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIHZp
cnR1YWwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmc19pbmZv
OyB9CiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKQEAgLTIwODAsNiArMjIw
NSwxMSBAQCBib29sICR7Y29uc3RydWN0b3JDbGFzc05hbWV9OjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaQogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1
ZVNsb3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0sIERPTU9iamVjdD4oZXhlYywgJiR7Y29uc3Ry
dWN0b3JDbGFzc05hbWV9VGFibGUsIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKK2Jv
b2wgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0
b3I8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0sIERPTU9iamVjdD4oZXhlYywgJiR7Y29uc3RydWN0
b3JDbGFzc05hbWV9VGFibGUsIHRoaXMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7Cit9CisK
IEVPRgogCiAgICAgJGltcGxKU0NJbmNsdWRleyJKU051bWJlckNlbGwuaCJ9ID0gMTsgIyBGSVhN
RTogV2hhdCBpcyB0aGlzIGZvcj8KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYnJpZGdlL29iamMvb2Jq
Y19ydW50aW1lLmggYi9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCmluZGV4IDgy
ZDU2M2IuLjdjNzcyYTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50
aW1lLmgKKysrIGIvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaApAQCAtMTA5LDYg
KzEwOSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsK
KyAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICB2aXJ0dWFsIHZvaWQg
cHV0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7CiAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxs
RGF0YSYpOwogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9icmlkZ2Uv
b2JqYy9vYmpjX3J1bnRpbWUubW0gYi9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5t
bQppbmRleCA2N2JkMmEzLi41ZWZjODY1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JyaWRnZS9vYmpj
L29iamNfcnVudGltZS5tbQorKysgYi9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5t
bQpAQCAtMjAzLDYgKzIwMywxMyBAQCBib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6Z2V0T3du
UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcgogICAgIHJldHVy
biB0cnVlOwogfQogCitib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IpCit7CisgICAgLy8ga2VlcCB0aGUgcHJvdG90eXBlIGZyb20gZ2V0dGlu
ZyBjYWxsZWQgaW5zdGVhZCBvZiBqdXN0IHJldHVybmluZyBmYWxzZQorICAgIGRlc2NyaXB0b3Iu
c2V0VW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgT2JqY0ZhbGxiYWNr
T2JqZWN0SW1wOjpwdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpCiB7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JyaWRnZS9ydW50aW1l
LmggYi9XZWJDb3JlL2JyaWRnZS9ydW50aW1lLmgKaW5kZXggMmY3NGE0ZS4uZTAyODAyMCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9icmlkZ2UvcnVudGltZS5oCisrKyBiL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWUuaApAQCAtMTExLDYgKzExMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbnN0YW5j
ZSgpOwogCiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJikgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgcHV0KEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpIHsgfQogCiBw
cm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcCBi
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCmluZGV4IDI4NDk4MjIuLmZlYWRiMDcg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCisrKyBiL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCkBAIC03NSw2ICs3NSwyOSBAQCBib29sIFJ1bnRp
bWVBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydAogICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KGV4
ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKK2Jvb2wgUnVudGltZUFycmF5OjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICBpZiAocHJv
cGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKKyAgICAgICAgUHJv
cGVydHlTbG90IHNsb3Q7CisgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXMsIGxlbmd0aEdldHRl
cik7CisgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihzbG90LmdldFZhbHVlKGV4ZWMs
IHByb3BlcnR5TmFtZSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIGJvb2wgb2s7CisgICAgdW5zaWduZWQg
aW5kZXggPSBwcm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KCZvayk7CisgICAgaWYgKG9rKSB7Cisg
ICAgICAgIGlmIChpbmRleCA8IGdldExlbmd0aCgpKSB7CisgICAgICAgICAgICBQcm9wZXJ0eVNs
b3Qgc2xvdDsKKyAgICAgICAgICAgIHNsb3Quc2V0Q3VzdG9tSW5kZXgodGhpcywgaW5kZXgsIGlu
ZGV4R2V0dGVyKTsKKyAgICAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihzbG90Lmdl
dFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSksIERvbnREZWxldGUgfCBEb250RW51bSk7CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4g
SlNPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRl
c2NyaXB0b3IpOworfQorCiBib29sIFJ1bnRpbWVBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KEV4
ZWNTdGF0ZSAqZXhlYywgdW5zaWduZWQgaW5kZXgsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAg
ICBpZiAoaW5kZXggPCBnZXRMZW5ndGgoKSkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9hcnJheS5oIGIvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCmluZGV4IDVh
ODZlOWQuLmY2MTRmN2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXku
aAorKysgYi9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKQEAgLTM3LDYgKzM3LDcgQEAg
cHVibGljOgogICAgIAogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0
YXRlICosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKICAgICB2aXJ0dWFsIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSAqLCB1bnNpZ25lZCwgUHJvcGVydHlTbG90
Jik7CisgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUg
KiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIHZpcnR1YWwg
dm9pZCBwdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7CiAgICAgCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAgYi9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21l
dGhvZC5jcHAKaW5kZXggMTVlYTU4Mi4uZmZlNGMwYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9tZXRob2QuY3BwCisrKyBiL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9k
LmNwcApAQCAtNzMsNiArNzMsMTggQEAgYm9vbCBSdW50aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXIKICAgICByZXR1
cm4gSW50ZXJuYWxGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiB9CiAKK2Jvb2wgUnVudGltZU1ldGhvZDo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eURlc2NyaXB0b3IgJmRlc2NyaXB0b3IpCit7CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90
OworICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzLCBsZW5ndGhHZXR0ZXIpOworICAgICAgICBk
ZXNjcmlwdG9yLnNldERlc2NyaXB0b3Ioc2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUp
LCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKyAgICAKKyAgICByZXR1cm4gSW50ZXJuYWxGdW5jdGlvbjo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7Cit9CisKIHN0YXRp
YyBKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJ1bnRpbWVNZXRob2QoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogZnVuY3Rpb24sIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBh
cmdzKQogewogICAgIFJ1bnRpbWVNZXRob2QqIG1ldGhvZCA9IHN0YXRpY19jYXN0PFJ1bnRpbWVN
ZXRob2QqPihmdW5jdGlvbik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21l
dGhvZC5oIGIvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAppbmRleCA1MzMzYzE0Li4z
MjMzZmZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCisrKyBi
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgKQEAgLTUzLDYgKzUzLDcgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBzdGF0aWMgSlNWYWx1ZSBsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwogICAgIHZpcnR1YWwgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3Bl
cnR5U2xvdCYpOworICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIHZp
cnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKTsKIAogICAgIE93blB0cjxCaW5k
aW5nczo6TWV0aG9kTGlzdD4gX21ldGhvZExpc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX29iamVjdC5jcHAgYi9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAK
aW5kZXggMzg1ZjkxNC4uOTFiZTFhMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9vYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcApAQCAt
MTY3LDYgKzE2Nyw1NCBAQCBib29sIFJ1bnRpbWVPYmplY3RJbXA6OmdldE93blByb3BlcnR5U2xv
dChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBybwogICAgIHJldHVybiBpbnN0
YW5jZS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiB9CiAKK2Jvb2wgUnVudGltZU9iamVjdEltcDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4
ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgaWYgKCFpbnN0YW5jZSkgeworICAgICAgICB0
aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICAKKyAgICBpbnN0YW5jZS0+YmVnaW4oKTsKKyAgICAKKyAgICBDbGFzcyAqYUNsYXNz
ID0gaW5zdGFuY2UtPmdldENsYXNzKCk7CisgICAgCisgICAgaWYgKGFDbGFzcykgeworICAgICAg
ICAvLyBTZWUgaWYgdGhlIGluc3RhbmNlIGhhcyBhIGZpZWxkIHdpdGggdGhlIHNwZWNpZmllZCBu
YW1lLgorICAgICAgICBGaWVsZCAqYUZpZWxkID0gYUNsYXNzLT5maWVsZE5hbWVkKHByb3BlcnR5
TmFtZSwgaW5zdGFuY2UuZ2V0KCkpOworICAgICAgICBpZiAoYUZpZWxkKSB7CisgICAgICAgICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXMsIGZp
ZWxkR2V0dGVyKTsKKyAgICAgICAgICAgIGluc3RhbmNlLT5lbmQoKTsKKyAgICAgICAgICAgIGRl
c2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihzbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSks
IERvbnREZWxldGUpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAvLyBOb3cgY2hlY2sgaWYgYSBtZXRob2Qgd2l0aCBzcGVjaWZpZWQgbmFt
ZSBleGlzdHMsIGlmIHNvIHJldHVybiBhIGZ1bmN0aW9uIG9iamVjdCBmb3IKKyAgICAgICAgICAg
IC8vIHRoYXQgbWV0aG9kLgorICAgICAgICAgICAgTWV0aG9kTGlzdCBtZXRob2RMaXN0ID0gYUNs
YXNzLT5tZXRob2RzTmFtZWQocHJvcGVydHlOYW1lLCBpbnN0YW5jZS5nZXQoKSk7CisgICAgICAg
ICAgICBpZiAobWV0aG9kTGlzdC5zaXplKCkgPiAwKSB7CisgICAgICAgICAgICAgICAgUHJvcGVy
dHlTbG90IHNsb3Q7CisgICAgICAgICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpcywgbWV0aG9k
R2V0dGVyKTsKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+ZW5kKCk7CisgICAgICAgICAgICAg
ICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlO
YW1lKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gVHJ5IGEg
ZmFsbGJhY2sgb2JqZWN0LgorICAgICAgICBpZiAoIWFDbGFzcy0+ZmFsbGJhY2tPYmplY3QoZXhl
YywgaW5zdGFuY2UuZ2V0KCksIHByb3BlcnR5TmFtZSkuaXNVbmRlZmluZWQoKSkgeworICAgICAg
ICAgICAgUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlz
LCBmYWxsYmFja09iamVjdEdldHRlcik7CisgICAgICAgICAgICBpbnN0YW5jZS0+ZW5kKCk7Cisg
ICAgICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3Ioc2xvdC5nZXRWYWx1ZShleGVjLCBw
cm9wZXJ0eU5hbWUpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBpbnN0YW5jZS0+
ZW5kKCk7CisgICAgCisgICAgcmV0dXJuIGluc3RhbmNlLT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IodGhpcywgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKK30KKwogdm9pZCBSdW50
aW1lT2JqZWN0SW1wOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBp
ZiAoIWluc3RhbmNlKSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVj
dC5oIGIvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAppbmRleCBmMDFmZTFlLi40YTlj
Mzk2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCisrKyBiL1dl
YkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKQEAgLTM4LDYgKzM4LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgflJ1bnRpbWVPYmplY3RJbXAoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlE
ZXNjcmlwdG9yJik7CiAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHZp
cnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqICwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lKTsKICAgICB2aXJ0dWFsIEpTVmFsdWUgZGVmYXVsdFZhbHVlKEV4ZWNTdGF0
ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0Owo=
</data>
<flag name="review"
          id="19587"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>