<?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>146137</bug_id>
          
          <creation_ts>2015-06-18 21:18:41 -0700</creation_ts>
          <short_desc>Object.getOwnPropertySymbols on large list takes very long</short_desc>
          <delta_ts>2015-07-24 14:32:50 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>147268</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>alecflett</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>mark.lam</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1103156</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-06-18 21:18:41 -0700</bug_when>
    <thetext>* SUMMARY
Object.getOwnPropertySymbols can take a very long time on an object without Symbols but lots of properties. Other browsers take 0ms.

* TEST
&lt;script&gt;
// Likewise with just a large Array...
var buffer = new ArrayBuffer(10000000);
var int8View = new Int8Array(buffer);
var start = Date.now();
var list = Object.getOwnPropertySymbols(int8View);
var end = Date.now();
console.log(&quot;Symbols&quot;, list, &quot;Time&quot;, end-start);
&lt;/script&gt;

* NOTES
- Firefox - 0ms
- Chrome - 0ms
- WebKit - 10703ms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103220</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-19 02:20:21 -0700</bug_when>
    <thetext>This is because,

1. Object.getOwnPropertySymbols once create the array contains all symbols / non-symbol names.
2. And filter it in the getOwnPropertySymbols function.

So if there&apos;s a lot of names (not-symbol), it produces a large array once.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103222</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-19 02:29:39 -0700</bug_when>
    <thetext>Linux `perf report` result.

Samples: 38K of event &apos;cycles&apos;, Event count (approx.): 34269853476
 25.82%  jsc  libjavascriptcoregtk-4.0.so.18.2.1  [.] WTF::HashTable&lt;WTF::StringImpl*, WTF::StringImpl*, WTF::IdentityExtractor, WTF::StringHash, WTF::HashTraits&lt;WTF::StringImpl*&gt;, WTF::HashTraits&lt;WTF::StringImpl*&gt; &gt;::rehash(unsigned int, WTF:
 20.38%  jsc  libjavascriptcoregtk-4.0.so.18.2.1  [.] WTF::equal(WTF::StringImpl const&amp;, WTF::StringImpl const&amp;)
 12.60%  jsc  libjavascriptcoregtk-4.0.so.18.2.1  [.] WTF::HashTableConstIterator&lt;WTF::StringImpl*, WTF::StringImpl*, WTF::IdentityExtractor, WTF::StringHash, WTF::HashTraits&lt;WTF::StringImpl*&gt;, WTF::HashTraits&lt;WTF::StringImpl*&gt; &gt; WTF::HashTabl
 10.98%  jsc  libjavascriptcoregtk-4.0.so.18.2.1  [.] WTF::AtomicStringImpl::addSlowCase(WTF::StringImpl&amp;)
  8.59%  jsc  libjavascriptcoregtk-4.0.so.18.2.1  [.] JSC::JSGenericTypedArrayView&lt;JSC::Int8Adaptor&gt;::getOwnPropertyNames(JSC::JSObject*, JSC::ExecState*, JSC::PropertyNameArray&amp;, JSC::EnumerationMode)
  7.04%  jsc  [kernel.kallsyms]                   [k] 0xffffffff8104f45a
  5.45%  jsc  libjavascriptcoregtk-4.0.so.18.2.1  [.] WTF::HashTable&lt;WTF::UniquedStringImpl*, WTF::UniquedStringImpl*, WTF::IdentityExtractor, WTF::PtrHash&lt;WTF::UniquedStringImpl*&gt;, WTF::HashTraits&lt;WTF::UniquedStringImpl*&gt;, WTF::HashTraits&lt;WTF
  1.24%  jsc  libjavascriptcoregtk-4.0.so.18.2.1  [.] WTF::String::number(unsigned int)
  1.13%  jsc  libjavascriptcoregtk-4.0.so.18.2.1  [.] JSC::Identifier::from(JSC::ExecState*, unsigned int)
  1.03%  jsc  libjavascriptcoregtk-4.0.so.18.2.1  [.] WTF::StringImpl::hashSlowCase() const
  0.81%  jsc  libpthread-2.19.so                  [.] pthread_getspecific
  0.67%  jsc  libc-2.19.so                        [.] __memcpy_sse2_unaligned
  0.59%  jsc  libc-2.19.so                        [.] memset
  0.44%  jsc  libjavascriptcoregtk-4.0.so.18.2.1  [.] JSC::objectConstructorGetOwnPropertySymbols(JSC::ExecState*)


Generating AtomicStringImpl that is used for representing names takes a lot of cost.
Avoiding this when symbols are required makes the performance better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1111563</commentid>
    <comment_count>3</comment_count>
      <attachid>257334</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-22 20:38:31 -0700</bug_when>
    <thetext>Created attachment 257334
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1111564</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-22 20:39:43 -0700</bug_when>
    <thetext>OK, the proposed patch makes the JoePeck&apos;s example 0ms!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1111583</commentid>
    <comment_count>5</comment_count>
      <attachid>257337</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-22 21:54:08 -0700</bug_when>
    <thetext>Created attachment 257337
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1111584</commentid>
    <comment_count>6</comment_count>
      <attachid>257338</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-22 21:58:57 -0700</bug_when>
    <thetext>Created attachment 257338
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1111586</commentid>
    <comment_count>7</comment_count>
      <attachid>257339</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-22 22:06:03 -0700</bug_when>
    <thetext>Created attachment 257339
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1111590</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-22 22:11:40 -0700</bug_when>
    <thetext>OK, patch is ready for review.
build-webkit, run-webkit-tests onto js/regress &amp; run-javascriptcore-tests are passed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1111789</commentid>
    <comment_count>9</comment_count>
      <attachid>257339</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-07-23 15:42:31 -0700</bug_when>
    <thetext>Comment on attachment 257339
Patch

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

Looks like you have removed all uses of SymbolPropertiesMode.  You should also remove its definition from EnumerationMode.h.

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        Before this patch, Object.getOwnPropertySymbols once collects the all names including strings.

Replace &quot;once collects the all names&quot; with &quot;collects all the names&quot;.

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        But it&apos;s so much time consuming if the given object is a large non-holed array since it has

Replace &quot;it&apos;s so much time consuming&quot; with &quot;it&apos;s so time consuming&quot;.

&gt; Source/JavaScriptCore/ChangeLog:11
&gt; +        many indexed properties and all the properties are once converted to uniqued strings and collected.

Replace &quot;all the properties are once converted to uniqued strings and collected&quot; with &quot;all the indexes have to be converted to uniqued_strings for this one purpose, and then GC&apos;ed thereafter&quot;.  I think that&apos;s what you meant.  If not, please correct me.

&gt; Source/JavaScriptCore/ChangeLog:35
&gt; +

In this patch, there&apos;s a concept in use that is not clear just from reading the code, and hence should be documented here.  That is: when selecting the PropertiesTypeMode for the PropertyNameArray to be instantiated, you applied the following logic:
1. Only JavaScriptCore code is aware of ES6 Symbols.  We can assume that pre-existing external code that interfaces JSC are only looking for string named properties.  This includes:
    a. WebCore bindings
    b. Serializer bindings
    c. NPAPI bindings
    d. Objective C bindings

2. In JSC, code that compute object storage space needs to iterate both Symbol and String named properties.  Hence, use PropertiesTypeMode::Both.
3. In JSC, ES6 APIs that work with Symbols should use PropertiesTypeMode::Symbols.
4. In JSC, ES6 APIs that work with String named properties should use PropertiesTypeMode::Strings.

Please add a comment here to document this reasoning.

&gt; LayoutTests/js/regress/script-tests/object-get-own-property-symbols-on-large-array.js:1
&gt; +function trial()

I think you&apos;re expecting this test to not time out.  If so, can you put a comment above to indicate that &quot;This test should not time out&quot;?  Alternatively, you can measure the time it takes to run trial() (using Date.now() before and after) and verify that the delta is less than some generous amount of time ... maybe 1 second?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1111809</commentid>
    <comment_count>10</comment_count>
      <attachid>257339</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-07-23 16:12:04 -0700</bug_when>
    <thetext>Comment on attachment 257339
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:11
&gt;&gt; +        many indexed properties and all the properties are once converted to uniqued strings and collected.
&gt; 
&gt; Replace &quot;all the properties are once converted to uniqued strings and collected&quot; with &quot;all the indexes have to be converted to uniqued_strings for this one purpose, and then GC&apos;ed thereafter&quot;.  I think that&apos;s what you meant.  If not, please correct me.

Per our offline discussion, let me revise my suggestion here.

Please replace &quot;all the properties are once converted to uniqued strings and collected&quot; with &quot;all the indexes have to be converted to uniqued_strings and added to the collection of property names (though they may not be of the requested type and will be filtered out later)&quot;.

&gt; Source/JavaScriptCore/ChangeLog:18
&gt; +        It makes that PropertyNameArray doesn&apos;t become so large.

I suggest replacing &quot;It makes that ... so large&quot; with &quot;It ensures that ... so large in the pathological case&quot;.

&gt; Source/JavaScriptCore/ChangeLog:34
&gt; +        But we don&apos;t heavily rely on this system; it means that getOwnPropertyNames may add wrong typed
&gt; +        keys (adding the string keys in the context requiring the symbol keys) because relying on the
&gt; +        careful coding in the getOwnPropertyNames side is much error prone. Users may add the string key
&gt; +        in the context only requiring the symbol keys.
&gt; +        So the guarantee such as &quot;only symbols are included if the PropertiesTypeMode is Symbols&quot; is
&gt; +        ensured in the PropertyNameArray side.

How about rephrasing this as:
&quot;But we cannot exclusively rely on these caller side checks because it would require that we exhaustively add the checks to all custom implementations of getOwnPropertyNames as well.  This process requires manual inspection of many pieces of code, and is error prone.  Instead, we only apply the caller side check in a few strategic places where it is known to yield performance benefits; and we rely on the filter in PropertyNameArray::add() to reject the wrong types of properties for all other calls to PropertyNameArray::add().&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1111812</commentid>
    <comment_count>11</comment_count>
      <attachid>257339</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-07-23 16:14:42 -0700</bug_when>
    <thetext>Comment on attachment 257339
Patch

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

&gt; Source/JavaScriptCore/runtime/EnumerationMode.h:31
&gt; +enum class PropertiesTypeMode {

Since this is just a hint, let&apos;s call it PropertyTypeHint. Otherwise, it seems like it&apos;s an error to disobey the mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1111844</commentid>
    <comment_count>12</comment_count>
      <attachid>257339</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-23 17:11:07 -0700</bug_when>
    <thetext>Comment on attachment 257339
Patch

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

Thank you for your review, Mark &amp; Geoff!

&gt;&gt; Source/JavaScriptCore/ChangeLog:8
&gt;&gt; +        Before this patch, Object.getOwnPropertySymbols once collects the all names including strings.
&gt; 
&gt; Replace &quot;once collects the all names&quot; with &quot;collects all the names&quot;.

Fixed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:10
&gt;&gt; +        But it&apos;s so much time consuming if the given object is a large non-holed array since it has
&gt; 
&gt; Replace &quot;it&apos;s so much time consuming&quot; with &quot;it&apos;s so time consuming&quot;.

Fixed.

&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:11
&gt;&gt;&gt; +        many indexed properties and all the properties are once converted to uniqued strings and collected.
&gt;&gt; 
&gt;&gt; Replace &quot;all the properties are once converted to uniqued strings and collected&quot; with &quot;all the indexes have to be converted to uniqued_strings for this one purpose, and then GC&apos;ed thereafter&quot;.  I think that&apos;s what you meant.  If not, please correct me.
&gt; 
&gt; Per our offline discussion, let me revise my suggestion here.
&gt; 
&gt; Please replace &quot;all the properties are once converted to uniqued strings and collected&quot; with &quot;all the indexes have to be converted to uniqued_strings and added to the collection of property names (though they may not be of the requested type and will be filtered out later)&quot;.

Sounds nice. I&apos;ll change it.

&gt;&gt; Source/JavaScriptCore/ChangeLog:18
&gt;&gt; +        It makes that PropertyNameArray doesn&apos;t become so large.
&gt; 
&gt; I suggest replacing &quot;It makes that ... so large&quot; with &quot;It ensures that ... so large in the pathological case&quot;.

Sounds nice! Fixed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:34
&gt;&gt; +        ensured in the PropertyNameArray side.
&gt; 
&gt; How about rephrasing this as:
&gt; &quot;But we cannot exclusively rely on these caller side checks because it would require that we exhaustively add the checks to all custom implementations of getOwnPropertyNames as well.  This process requires manual inspection of many pieces of code, and is error prone.  Instead, we only apply the caller side check in a few strategic places where it is known to yield performance benefits; and we rely on the filter in PropertyNameArray::add() to reject the wrong types of properties for all other calls to PropertyNameArray::add().&quot;

Looks great! Fixed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:35
&gt;&gt; +
&gt; 
&gt; In this patch, there&apos;s a concept in use that is not clear just from reading the code, and hence should be documented here.  That is: when selecting the PropertiesTypeMode for the PropertyNameArray to be instantiated, you applied the following logic:
&gt; 1. Only JavaScriptCore code is aware of ES6 Symbols.  We can assume that pre-existing external code that interfaces JSC are only looking for string named properties.  This includes:
&gt;     a. WebCore bindings
&gt;     b. Serializer bindings
&gt;     c. NPAPI bindings
&gt;     d. Objective C bindings
&gt; 
&gt; 2. In JSC, code that compute object storage space needs to iterate both Symbol and String named properties.  Hence, use PropertiesTypeMode::Both.
&gt; 3. In JSC, ES6 APIs that work with Symbols should use PropertiesTypeMode::Symbols.
&gt; 4. In JSC, ES6 APIs that work with String named properties should use PropertiesTypeMode::Strings.
&gt; 
&gt; Please add a comment here to document this reasoning.

Your reasoning is looks perfect. I&apos;ve added this here.

&gt;&gt; Source/JavaScriptCore/runtime/EnumerationMode.h:31
&gt;&gt; +enum class PropertiesTypeMode {
&gt; 
&gt; Since this is just a hint, let&apos;s call it PropertyTypeHint. Otherwise, it seems like it&apos;s an error to disobey the mode.

This mode is used as a hint in the caller side (getOwnPropertyNames), but it&apos;s used as an invariant in the callee side (PropertyNameArray).
Typical users use it as the `PropertyNameArray array(exec, PropertiesTypeMode::Strings)`. So I think keeping this name is preferable.
What do you think of it? I&apos;d like to hear your opinion :)

&gt;&gt; LayoutTests/js/regress/script-tests/object-get-own-property-symbols-on-large-array.js:1
&gt;&gt; +function trial()
&gt; 
&gt; I think you&apos;re expecting this test to not time out.  If so, can you put a comment above to indicate that &quot;This test should not time out&quot;?  Alternatively, you can measure the time it takes to run trial() (using Date.now() before and after) and verify that the delta is less than some generous amount of time ... maybe 1 second?

Measuring the delta is nice to me. Time out in LayoutTests needs longer time and adjusting the test to it may lead the test flaky.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1111857</commentid>
    <comment_count>13</comment_count>
      <attachid>257414</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-23 17:56:53 -0700</bug_when>
    <thetext>Created attachment 257414
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1111998</commentid>
    <comment_count>14</comment_count>
      <attachid>257414</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-07-24 10:05:47 -0700</bug_when>
    <thetext>Comment on attachment 257414
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        Before this patch, Object.getOwnPropertySymbols collects the all names including strings.

typo: &quot;collects the all&quot; ==&gt; &quot;collect all the&quot;.

&gt; Source/JavaScriptCore/ChangeLog:40
&gt; +        In this patch, there&apos;s a concept in use that is not clear just from reading the code, and hence
&gt; +        should be documented here. That is: when selecting the PropertiesTypeMode for the PropertyNameArray
&gt; +        to be instantiated, you applied the following logic:

Please replace this with:
&quot;When selecting the PropertiesTypeMode for the PropertyNameArray to be instantiated, we apply the following logic:&quot;

&gt; Source/JavaScriptCore/ChangeLog:50
&gt; +        1. Only JavaScriptCore code is aware of ES6 Symbols.
&gt; +        We can assume that pre-existing external code that interfaces JSC are only looking for string named properties. This includes:
&gt; +            a. WebCore bindings
&gt; +            b. Serializer bindings
&gt; +            c. NPAPI bindings
&gt; +            d. Objective C bindings
&gt; +        2. In JSC, code that compute object storage space needs to iterate both Symbol and String named properties. Hence, use PropertiesTypeMode::Both.
&gt; +        3. In JSC, ES6 APIs that work with Symbols should use PropertiesTypeMode::Symbols.
&gt; +        4. In JSC, ES6 APIs that work with String named properties should use PropertiesTypeMode::Strings.

After thinking about this some more, I&apos;m wondering if this is the right approach.  Will talk with you offline to discuss the issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112003</commentid>
    <comment_count>15</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-07-24 10:39:40 -0700</bug_when>
    <thetext>&gt; &gt;&gt; Source/JavaScriptCore/runtime/EnumerationMode.h:31
&gt; &gt;&gt; +enum class PropertiesTypeMode {
&gt; &gt; 
&gt; &gt; Since this is just a hint, let&apos;s call it PropertyTypeHint. Otherwise, it seems like it&apos;s an error to disobey the mode.
&gt; 
&gt; This mode is used as a hint in the caller side (getOwnPropertyNames), but
&gt; it&apos;s used as an invariant in the callee side (PropertyNameArray).
&gt; Typical users use it as the `PropertyNameArray array(exec,
&gt; PropertiesTypeMode::Strings)`. So I think keeping this name is preferable.
&gt; What do you think of it? I&apos;d like to hear your opinion :)

I see.

OK, Mode sounds good to me.

Maybe PropertyNameMode, to match PropertyNameArray?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112019</commentid>
    <comment_count>16</comment_count>
      <attachid>257414</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-07-24 11:15:07 -0700</bug_when>
    <thetext>Comment on attachment 257414
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:50
&gt;&gt; +        4. In JSC, ES6 APIs that work with String named properties should use PropertiesTypeMode::Strings.
&gt; 
&gt; After thinking about this some more, I&apos;m wondering if this is the right approach.  Will talk with you offline to discuss the issues.

I changed my mind.  This logic works.

&gt; Source/JavaScriptCore/runtime/EnumerationMode.h:35
&gt; +enum class PropertiesTypeMode {
&gt; +    Symbols = 1,
&gt; +    Strings = 2,
&gt; +    Both = 3,
&gt; +};

I agree with Geoff: PropertyNameMode is a better name.

On another detail, according to includeSymbolProperties() and includeStringProperties(), PropertyNameMode is supposed to be bit maskable.  Would it be clearer about this intent is we express the enum as follows?

enum class PropertyNameMode {
    Symbols = 1 &lt;&lt; 0,
    Strings = 1 &lt;&lt; 1,
    Both = Symbols | Strings
};</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112025</commentid>
    <comment_count>17</comment_count>
      <attachid>257414</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-24 11:22:24 -0700</bug_when>
    <thetext>Comment on attachment 257414
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:8
&gt;&gt; +        Before this patch, Object.getOwnPropertySymbols collects the all names including strings.
&gt; 
&gt; typo: &quot;collects the all&quot; ==&gt; &quot;collect all the&quot;.

Fixed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:40
&gt;&gt; +        to be instantiated, you applied the following logic:
&gt; 
&gt; Please replace this with:
&gt; &quot;When selecting the PropertiesTypeMode for the PropertyNameArray to be instantiated, we apply the following logic:&quot;

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/EnumerationMode.h:35
&gt;&gt; +};
&gt; 
&gt; I agree with Geoff: PropertyNameMode is a better name.
&gt; 
&gt; On another detail, according to includeSymbolProperties() and includeStringProperties(), PropertyNameMode is supposed to be bit maskable.  Would it be clearer about this intent is we express the enum as follows?
&gt; 
&gt; enum class PropertyNameMode {
&gt;     Symbols = 1 &lt;&lt; 0,
&gt;     Strings = 1 &lt;&lt; 1,
&gt;     Both = Symbols | Strings
&gt; };

Completely agreed. It looks more readable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112028</commentid>
    <comment_count>18</comment_count>
      <attachid>257462</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-24 11:28:19 -0700</bug_when>
    <thetext>Created attachment 257462
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112034</commentid>
    <comment_count>19</comment_count>
      <attachid>257462</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-07-24 11:35:34 -0700</bug_when>
    <thetext>Comment on attachment 257462
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112037</commentid>
    <comment_count>20</comment_count>
      <attachid>257462</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-24 11:40:08 -0700</bug_when>
    <thetext>Comment on attachment 257462
Patch

Thanks for your reviews! I&apos;ve checked cq+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112056</commentid>
    <comment_count>21</comment_count>
      <attachid>257462</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-24 12:32:39 -0700</bug_when>
    <thetext>Comment on attachment 257462
Patch

Clearing flags on attachment: 257462

Committed r187355: &lt;http://trac.webkit.org/changeset/187355&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112057</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-24 12:32:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112092</commentid>
    <comment_count>23</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-24 14:28:50 -0700</bug_when>
    <thetext>It may occur windows build failing.
I&apos;m now investigating...
(Maybe, JSC:: namespace specifying is missing)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112097</commentid>
    <comment_count>24</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-24 14:32:50 -0700</bug_when>
    <thetext>Ah, I thought since I saw the failing in win EWS.
But seeing the buildbot, it seems that the patch passed the build.

If you found some build issues after this patch, please ping me.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257334</attachid>
            <date>2015-07-22 20:38:31 -0700</date>
            <delta_ts>2015-07-22 21:54:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146137-20150722203716.patch</filename>
            <type>text/plain</type>
            <size>43380</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3MjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
OWRiNWRiNjc5YjMyNGE5MTBjZTJhYzI1YjA3NjgyM2I5ZDdiMDIzLi43OTgxNjUyZGEwNDZhM2E3
ZGZmMTU3MTU4Y2Y2M2ZhYWRhZTIzN2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw4OSBAQAogMjAxNS0wNy0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzIG9uIGxhcmdlIGxp
c3QgdGFrZXMgdmVyeSBsb25nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDYxMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBCZWZvcmUgdGhpcyBwYXRjaCwgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9s
cyBvbmNlIGNvbGxlY3RzIHRoZSBhbGwgbmFtZXMgaW5jbHVkaW5nIHN0cmluZ3MuCisgICAgICAg
IEFuZCBhZnRlciBpdCdzIGRvbmUsIGZpbHRlciB0aGUgbmFtZXMgdG8gb25seSByZXRyaWV2ZSB0
aGUgc3ltYm9scy4KKyAgICAgICAgQnV0IGl0J3Mgc28gbXVjaCB0aW1lIGNvbnN1bWluZyBpZiB0
aGUgZ2l2ZW4gb2JqZWN0IGlzIGEgbGFyZ2Ugbm9uLWhvbGVkIGFycmF5IHNpbmNlIGl0IGhhcwor
ICAgICAgICBtYW55IGluZGV4ZWQgcHJvcGVydGllcyBhbmQgYWxsIHRoZSBwcm9wZXJ0aWVzIGFy
ZSBvbmNlIGNvbnZlcnRlZCB0byB1bmlxdWVkIHN0cmluZ3MgYW5kIGNvbGxlY3RlZC4KKworICAg
ICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgUHJvcGVydGllc1R5cGVNb2RlLgorICAgICAgICBX
ZSBsZXZlcmFnZSB0aGlzIG1vZGUgaW4gMiBwbGFjZXMuCisKKyAgICAgICAgMS4gUHJvcGVydHlO
YW1lQXJyYXkgc2lkZQorICAgICAgICBJdCBpcyBzZXQgaW4gUHJvcGVydHlOYW1lQXJyYXkgYW5k
IGl0IGZpbHRlcnMgdGhlIGluY29taW5nIGFkZGVkIGlkZW50aWZpZXJzIGJhc2VkIG9uIHRoZSBt
b2RlLgorICAgICAgICBJdCBtYWtlcyB0aGF0IFByb3BlcnR5TmFtZUFycmF5IGRvZXNuJ3QgYmVj
b21lIHNvIGxhcmdlLgorICAgICAgICBBbmQgaXQgZW5zdXJlcyB0aGF0IG5vbi1leHBlY3RlZCB0
eXBlZCBrZXlzIGJ5IHRoZSBmaWx0ZXIgKFN5bWJvbHMgb3IgU3RyaW5ncykgYXJlIG5ldmVyIGFk
ZGVkCisgICAgICAgIHRvIHRoZSBwcm9wZXJ0eSBuYW1lIGFycmF5IGNvbGxlY3Rpb25zLgorICAg
ICAgICBIb3dldmVyIGl0IGRvZXMgbm90IHNvbHZlIHRoZSB3aG9sZSBwcm9ibGVtIGJlY2F1c2Ug
dGhlIGh1Z2UgYXJyYXkgc3RpbGwgaW5jdXJzIHRoZSBtYW55CisgICAgICAgICJpbmRleGVkIHBy
b3BlcnR5IHRvIHVuaXF1ZWQgc3RyaW5nIiBjb252ZXJzaW9uIGFuZCB0aGUgbGFyZ2UgaXRlcmF0
aW9uIGJlZm9yZSBhZGRpbmcgdGhlIGtleXMKKyAgICAgICAgdG8gdGhlIHByb3BlcnR5IG5hbWUg
YXJyYXkuCisKKyAgICAgICAgMi4gZ2V0T3duUHJvcGVydHlOYW1lcyBzaWRlCisgICAgICAgIFNv
IHdlIGNhbiB1c2UgdGhlIFByb3BlcnRpZXNUeXBlTW9kZSBpbiB0aGUgY2FsbGVyIHNpZGUgKGdl
dE93blByb3BlcnR5TmFtZXMpIGFzIGEgKipoaW50KiouCisgICAgICAgIFdoZW4gdGhlIGxhcmdl
IGl0ZXJhdGlvbiBtYXkgb2NjdXIsIHRoZSBjYWxsZXIgc2lkZSBjYW4gdXNlIHRoZSBQcm9wZXJ0
aWVzVHlwZU1vZGUgYXMgYSBoaW50IHRvCisgICAgICAgIGF2b2lkIHRoZSBpdGVyYXRpb24uCisg
ICAgICAgIEJ1dCB3ZSBkb24ndCBoZWF2aWx5IHJlbHkgb24gdGhpcyBzeXN0ZW07IGl0IG1lYW5z
IHRoYXQgZ2V0T3duUHJvcGVydHlOYW1lcyBtYXkgYWRkIHdyb25nIHR5cGVkCisgICAgICAgIGtl
eXMgKGFkZGluZyB0aGUgc3RyaW5nIGtleXMgaW4gdGhlIGNvbnRleHQgcmVxdWlyaW5nIHRoZSBz
eW1ib2wga2V5cykgYmVjYXVzZSByZWx5aW5nIG9uIHRoZQorICAgICAgICBjYXJlZnVsIGNvZGlu
ZyBpbiB0aGUgZ2V0T3duUHJvcGVydHlOYW1lcyBzaWRlIGlzIG11Y2ggZXJyb3IgcHJvbmUuIFVz
ZXJzIG1heSBhZGQgdGhlIHN0cmluZyBrZXkKKyAgICAgICAgaW4gdGhlIGNvbnRleHQgb25seSBy
ZXF1aXJpbmcgdGhlIHN5bWJvbCBrZXlzLgorICAgICAgICBTbyB0aGUgZ3VhcmFudGVlIHN1Y2gg
YXMgIm9ubHkgc3ltYm9scyBhcmUgaW5jbHVkZWQgaWYgdGhlIFByb3BlcnRpZXNUeXBlTW9kZSBp
cyBTeW1ib2xzIiBpcworICAgICAgICBlbnN1cmVkIGluIHRoZSBQcm9wZXJ0eU5hbWVBcnJheSBz
aWRlLgorCisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTT2JqZWN0
Q29weVByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcDoK
KyAgICAgICAgKERlcHJlY2F0ZWQ6OmpzVG9JbnNwZWN0b3JWYWx1ZSk6CisgICAgICAgICogYnl0
ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxs
b2NhdGlvblByb2ZpbGU6OnBvc3NpYmxlRGVmYXVsdFByb3BlcnR5Q291bnQpOgorICAgICAgICAq
IHJ1bnRpbWUvRW51bWVyYXRpb25Nb2RlLmg6CisgICAgICAgIChKU0M6OkVudW1lcmF0aW9uTW9k
ZTo6RW51bWVyYXRpb25Nb2RlKToKKyAgICAgICAgKEpTQzo6RW51bWVyYXRpb25Nb2RlOjppbmNs
dWRlU3ltYm9sUHJvcGVydGllcyk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9HZW5lcmlj
QXJndW1lbnRzSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpHZW5lcmljQXJndW1lbnRzPFR5cGU+
OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9KU0xl
eGljYWxFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVudmlyb25tZW50
OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPTk9i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjpTdHJpbmdpZmllcik6CisgICAg
ICAgIChKU0M6OlN0cmluZ2lmaWVyOjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eSk6CisgICAg
ICAgIChKU0M6OldhbGtlcjo6d2Fsayk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAg
KiBydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpT
UHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJv
cGVydHlOYW1lRW51bWVyYXRvci5oOgorICAgICAgICAoSlNDOjpwcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpKU1N5bWJvbFRhYmxlT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMp
OgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlND
OjpvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpv
YmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9scyk6CisgICAgICAgIChKU0M6Om9i
amVjdENvbnN0cnVjdG9yS2V5cyk6CisgICAgICAgIChKU0M6OmRlZmluZVByb3BlcnRpZXMpOgor
ICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvclNlYWwpOgorICAgICAgICAoSlNDOjpvYmpl
Y3RDb25zdHJ1Y3RvckZyZWV6ZSk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9ySXNT
ZWFsZWQpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcklzRnJvemVuKToKKyAgICAg
ICAgKiBydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5Lmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5
TmFtZUFycmF5OjpQcm9wZXJ0eU5hbWVBcnJheSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFt
ZUFycmF5Ojp0eXBlTW9kZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZUFycmF5OjphZGRL
bm93blVuaXF1ZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZUFycmF5OjphZGQpOgorICAg
ICAgICAoSlNDOjpQcm9wZXJ0eU5hbWVBcnJheTo6aXNVaWRNYXRjaGVkVG9UeXBlTW9kZSk6Cisg
ICAgICAgIChKU0M6OlByb3BlcnR5TmFtZUFycmF5OjppbmNsdWRlU3ltYm9sUHJvcGVydGllcyk6
CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZUFycmF5OjppbmNsdWRlU3RyaW5nUHJvcGVydGll
cyk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpT
dHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvU3Ry
dWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzRnJv
bVN0cnVjdHVyZSk6CisKKzIwMTUtMDctMjIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisKICAgICAgICAgSW50cm9kdWNpbmcgY29uc3RydWN0IGFiaWxpdHkgaW50byBK
UyBleGVjdXRhYmxlcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQ3MTgzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3ZWY2YjVjZTNiMjU1MjRjMWU4YWYzNTQyNDMy
NDkxM2NmMDMzNjA1Li45NWMxZGQxNjQ4ZjM0MzYwOTZkMjVmOTQ4OGNmMDY4NDA3OTY5NWMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTUtMDctMjIgIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5U3lt
Ym9scyBvbiBsYXJnZSBsaXN0IHRha2VzIHZlcnkgbG9uZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2MTM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6OmdldE93blByb3BlcnRpZXNBc1N0cmluZ0hh
c2hNYXApOgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6Z2V0T3duUHJvcGVydHlOYW1l
cyk6CisgICAgICAgICogYnJpZGdlL05QX2pzb2JqZWN0LmNwcDoKKyAgICAgICAgKF9OUE5fRW51
bWVyYXRlKToKKwogMjAxNS0wNy0yMiAgTWF0dGhldyBEYWl0ZXIgIDxtZGFpdGVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBSYW5rIHNvdXJjZXMgZm9yIGZpdG5lc3MgZm9yIFVJRHMgaW4gYmVzdFNv
dXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA5ZWMzMTc1OTNi
ZDA0NmU5M2YwOTYyZThiZWZkNDU4ZmZkNjJhMTM0Li5hOWVlNjRlYjc1ODZmOGQ4YTUyNmI4MzQx
YzYwMDUyMzZhZTE2YTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUt
MDctMjIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAg
T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyBvbiBsYXJnZSBsaXN0IHRha2VzIHZlcnkgbG9u
ZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2MTM3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVn
aW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06CisgICAgICAgIChXZWJL
aXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZW51bWVyYXRlKToKKwogMjAxNS0wNy0y
MSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IFtNYWNdICJPcGVuIEltYWdlIEluIE5ldyBXaW5kb3ciIGNvbnRleHQgbWVudSBp
dGVtIGRvZXMgbm90aGluZyBvbiBhbiBpbWFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGZhMmVkMmUzY2M3N2Rj
ZmViN2MxZTJhZjQ4ZWZjMjQzOWNkMWM4ZDMuLmVkZjJjNTU0ZWM5ZGZhY2FmMDdmMzBlYjJiZGNk
NWNmZDQ5MmM1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0wNy0yMiAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBPYmplY3QuZ2V0
T3duUHJvcGVydHlTeW1ib2xzIG9uIGxhcmdlIGxpc3QgdGFrZXMgdmVyeSBsb25nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDYxMzcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBKU09iamVj
dDo6ZW51bWVyYXRlKToKKwogMjAxNS0wNy0yMiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVl
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE4NzE5Ni4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKaW5kZXggZmFmMzhmZjhj
MjNlOWRmMDhhMDMwMGE1OTQxZTE3YTM1NDZkN2ViNC4uODNiYTM4MTU1MDI5NjkzMTg5NzVkN2Fh
OWVhYjE2ZTQzNDU1ZGJiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U09iamVjdFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJl
Zi5jcHAKQEAgLTYyMiw3ICs2MjIsNyBAQCBKU1Byb3BlcnR5TmFtZUFycmF5UmVmIEpTT2JqZWN0
Q29weVByb3BlcnR5TmFtZXMoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgbwogCiAgICAg
SlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwogICAgIEpTUHJvcGVydHlOYW1lQXJy
YXlSZWYgcHJvcGVydHlOYW1lcyA9IG5ldyBPcGFxdWVKU1Byb3BlcnR5TmFtZUFycmF5KHZtKTsK
LSAgICBQcm9wZXJ0eU5hbWVBcnJheSBhcnJheSh2bSk7CisgICAgUHJvcGVydHlOYW1lQXJyYXkg
YXJyYXkodm0sIFByb3BlcnRpZXNUeXBlTW9kZTo6U3RyaW5ncyk7CiAgICAganNPYmplY3QtPm1l
dGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMoanNPYmplY3QsIGV4ZWMsIGFycmF5LCBFbnVt
ZXJhdGlvbk1vZGUoKSk7CiAKICAgICBzaXplX3Qgc2l6ZSA9IGFycmF5LnNpemUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCmluZGV4IDE1M2Iw
MzNhMTE3ODBlMDFkMGZjYjM0YjVmNTlkYWY3ZDFjZDdjZDguLmFiNGNjYzJmYjg1MjJkODA5YjNi
ZWQyZmM0YzBjY2EyMzA4ZGEzYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
aW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRp
bmdzL1NjcmlwdFZhbHVlLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHN0YXRpYyBSZWZQdHI8SW5z
cGVjdG9yVmFsdWU+IGpzVG9JbnNwZWN0b3JWYWx1ZShFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBK
U1ZhbHVlCiAgICAgICAgIH0KICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gaW5zcGVjdG9y
T2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgSlNPYmplY3QqIG9i
amVjdCA9IHZhbHVlLmdldE9iamVjdCgpOwotICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9w
ZXJ0eU5hbWVzKHNjcmlwdFN0YXRlKTsKKyAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVy
dHlOYW1lcyhzY3JpcHRTdGF0ZSwgUHJvcGVydGllc1R5cGVNb2RlOjpTdHJpbmdzKTsKICAgICAg
ICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgc2Ny
aXB0U3RhdGUsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSgpKTsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzLnNpemUoKTsgaSsrKSB7CiAgICAgICAg
ICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lID0gcHJvcGVydHlOYW1lc1tpXTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmls
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9m
aWxlLmgKaW5kZXggY2I0MTQ4ZWU0ZjUzMjg2MzFmZWM0YzE0OGZkZjRjMzM1NGZjNzNkYy4uYzE2
NWIyMTFiZGFhZTI5MGFmOTRmMTYxNWJiNzY5OWRjZDhiMTFiNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlLmgK
QEAgLTEyNyw3ICsxMjcsNyBAQCBjbGFzcyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSB7CiAgICAg
ICAgICAgICByZXR1cm4gMDsKIAogICAgICAgICBzaXplX3QgY291bnQgPSAwOwotICAgICAgICBQ
cm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVBcnJheSgmdm0pOworICAgICAgICBQcm9wZXJ0
eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVBcnJheSgmdm0sIFByb3BlcnRpZXNUeXBlTW9kZTo6Qm90
aCk7CiAgICAgICAgIHByb3RvdHlwZS0+c3RydWN0dXJlKCktPmdldFByb3BlcnR5TmFtZXNGcm9t
U3RydWN0dXJlKHZtLCBwcm9wZXJ0eU5hbWVBcnJheSwgRW51bWVyYXRpb25Nb2RlKCkpOwogICAg
ICAgICBQcm9wZXJ0eU5hbWVBcnJheURhdGE6OlByb3BlcnR5TmFtZVZlY3RvciYgcHJvcGVydHlO
YW1lVmVjdG9yID0gcHJvcGVydHlOYW1lQXJyYXkuZGF0YSgpLT5wcm9wZXJ0eU5hbWVWZWN0b3Io
KTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVWZWN0b3Iuc2l6
ZSgpOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vu
dW1lcmF0aW9uTW9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRW51bWVyYXRp
b25Nb2RlLmgKaW5kZXggM2U5NWVkMzJmNmI0ZDEyMDE0NjkwMzQ0MDhmNjNhYjUwYmZlNjUzMC4u
MmVlMTUzNmRmYmFkYWIwMGEwYTk1MzEzYTVkOTgzOWVlYjY1NDRjNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRW51bWVyYXRpb25Nb2RlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRW51bWVyYXRpb25Nb2RlLmgKQEAgLTI4LDYgKzI4LDEy
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitlbnVtIGNsYXNzIFByb3BlcnRpZXNUeXBlTW9kZSB7
CisgICAgU3ltYm9scyA9IDEsCisgICAgU3RyaW5ncyA9IDIsCisgICAgQm90aCA9IDMsCit9Owor
CiBlbnVtIGNsYXNzIERvbnRFbnVtUHJvcGVydGllc01vZGUgewogICAgIEluY2x1ZGUsCiAgICAg
RXhjbHVkZQpAQCAtNDUsMTYgKzUxLDE0IEBAIGVudW0gY2xhc3MgSlNPYmplY3RQcm9wZXJ0aWVz
TW9kZSB7CiAKIGNsYXNzIEVudW1lcmF0aW9uTW9kZSB7CiBwdWJsaWM6Ci0gICAgRW51bWVyYXRp
b25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01vZGUgZG9udEVudW1Qcm9wZXJ0aWVzTW9kZSA9IERv
bnRFbnVtUHJvcGVydGllc01vZGU6OkV4Y2x1ZGUsIFN5bWJvbFByb3BlcnRpZXNNb2RlIHN5bWJv
bFByb3BlcnRpZXNNb2RlID0gU3ltYm9sUHJvcGVydGllc01vZGU6OkV4Y2x1ZGUsIEpTT2JqZWN0
UHJvcGVydGllc01vZGUganNPYmplY3RQcm9wZXJ0aWVzTW9kZSA9IEpTT2JqZWN0UHJvcGVydGll
c01vZGU6OkluY2x1ZGUpCisgICAgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01v
ZGUgZG9udEVudW1Qcm9wZXJ0aWVzTW9kZSA9IERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4Y2x1
ZGUsIEpTT2JqZWN0UHJvcGVydGllc01vZGUganNPYmplY3RQcm9wZXJ0aWVzTW9kZSA9IEpTT2Jq
ZWN0UHJvcGVydGllc01vZGU6OkluY2x1ZGUpCiAgICAgICAgIDogbV9kb250RW51bVByb3BlcnRp
ZXNNb2RlKGRvbnRFbnVtUHJvcGVydGllc01vZGUpCi0gICAgICAgICwgbV9zeW1ib2xQcm9wZXJ0
aWVzTW9kZShzeW1ib2xQcm9wZXJ0aWVzTW9kZSkKICAgICAgICAgLCBtX2pzT2JqZWN0UHJvcGVy
dGllc01vZGUoanNPYmplY3RQcm9wZXJ0aWVzTW9kZSkKICAgICB7CiAgICAgfQogCiAgICAgRW51
bWVyYXRpb25Nb2RlKGNvbnN0IEVudW1lcmF0aW9uTW9kZSYgbW9kZSwgSlNPYmplY3RQcm9wZXJ0
aWVzTW9kZSBqc09iamVjdFByb3BlcnRpZXNNb2RlKQogICAgICAgICA6IG1fZG9udEVudW1Qcm9w
ZXJ0aWVzTW9kZShtb2RlLm1fZG9udEVudW1Qcm9wZXJ0aWVzTW9kZSkKLSAgICAgICAgLCBtX3N5
bWJvbFByb3BlcnRpZXNNb2RlKG1vZGUubV9zeW1ib2xQcm9wZXJ0aWVzTW9kZSkKICAgICAgICAg
LCBtX2pzT2JqZWN0UHJvcGVydGllc01vZGUoanNPYmplY3RQcm9wZXJ0aWVzTW9kZSkKICAgICB7
CiAgICAgfQpAQCAtNjYsMTEgKzcwLDYgQEAgY2xhc3MgRW51bWVyYXRpb25Nb2RlIHsKICAgICAg
ICAgcmV0dXJuIG1fZG9udEVudW1Qcm9wZXJ0aWVzTW9kZSA9PSBEb250RW51bVByb3BlcnRpZXNN
b2RlOjpJbmNsdWRlOwogICAgIH0KIAotICAgIGJvb2wgaW5jbHVkZVN5bWJvbFByb3BlcnRpZXMo
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc3ltYm9sUHJvcGVydGllc01vZGUgPT0gU3ltYm9s
UHJvcGVydGllc01vZGU6OkluY2x1ZGU7Ci0gICAgfQotCiAgICAgYm9vbCBpbmNsdWRlSlNPYmpl
Y3RQcm9wZXJ0aWVzKCkKICAgICB7CiAgICAgICAgIHJldHVybiBtX2pzT2JqZWN0UHJvcGVydGll
c01vZGUgPT0gSlNPYmplY3RQcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZTsKQEAgLTc4LDcgKzc3LDYg
QEAgY2xhc3MgRW51bWVyYXRpb25Nb2RlIHsKIAogcHJpdmF0ZToKICAgICBEb250RW51bVByb3Bl
cnRpZXNNb2RlIG1fZG9udEVudW1Qcm9wZXJ0aWVzTW9kZTsKLSAgICBTeW1ib2xQcm9wZXJ0aWVz
TW9kZSBtX3N5bWJvbFByb3BlcnRpZXNNb2RlOwogICAgIEpTT2JqZWN0UHJvcGVydGllc01vZGUg
bV9qc09iamVjdFByb3BlcnRpZXNNb2RlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKaW5kZXggNWY5NTJj
NmYyYmZlZGI3OWY0YmI0NTkzNTE2MTRlYjE4ZjZmYTgwNy4uOWIxODAwMTg1NzgxMDVjNTUxNjk3
MjBhZTU4NzdjM2UzZTI0NmRlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oCkBAIC03OCwxNiArNzgsMTkgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KIHZvaWQgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6Z2V0
T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZUFycmF5JiBhcnJheSwgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7CiAgICAgVHlwZSog
dGhpc09iamVjdCA9IGpzQ2FzdDxUeXBlKj4ob2JqZWN0KTsKLSAgICAKLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgdGhpc09iamVjdC0+aW50ZXJuYWxMZW5ndGgoKTsgKytpKSB7Ci0gICAg
ICAgIGlmICghdGhpc09iamVjdC0+Y2FuQWNjZXNzSW5kZXhRdWlja2x5KGkpKQotICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIGFycmF5LmFkZChJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkp
KTsKKworICAgIGlmIChhcnJheS5pbmNsdWRlU3RyaW5nUHJvcGVydGllcygpKSB7CisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0aGlzT2JqZWN0LT5pbnRlcm5hbExlbmd0aCgpOyAr
K2kpIHsKKyAgICAgICAgICAgIGlmICghdGhpc09iamVjdC0+Y2FuQWNjZXNzSW5kZXhRdWlja2x5
KGkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgYXJyYXkuYWRkKElk
ZW50aWZpZXI6OmZyb20oZXhlYywgaSkpOworICAgICAgICB9CiAgICAgfQorCiAgICAgaWYgKG1v
ZGUuaW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpICYmICF0aGlzT2JqZWN0LT5vdmVycm9kZVRo
aW5ncygpKSB7CiAgICAgICAgIGFycmF5LmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3Ro
KTsKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZWUpOwotICAg
ICAgICBpZiAobW9kZS5pbmNsdWRlU3ltYm9sUHJvcGVydGllcygpKQorICAgICAgICBpZiAoYXJy
YXkuaW5jbHVkZVN5bWJvbFByb3BlcnRpZXMoKSkKICAgICAgICAgICAgIGFycmF5LmFkZChleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wpOwogICAgIH0KICAgICBCYXNlOjpnZXRP
d25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIGFycmF5LCBtb2RlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdJbmxpbmVzLmgKaW5kZXggZWM2NTNkY2RjNDg4OWQ0ZTk1YzE0YmQ0OWJhOGQ4MjEx
MmM5NTdmMC4uZTllZDFlOTk4YWE5YTUwOGQxYWVmMDUzZmFlODgyZjQyNjNkYzlkMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTQyMyw5ICs0MjMsMTEgQEAgdm9pZCBKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Z2V0T3duUHJvcGVydHlOYW1lcygKICAgICBKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBhcnJheSwg
RW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7CiAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihvYmplY3QpOwotICAg
IAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0aGlzT2JqZWN0LT5tX2xlbmd0aDsgKytp
KQotICAgICAgICBhcnJheS5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7CisKKyAgICBp
ZiAoYXJyYXkuaW5jbHVkZVN0cmluZ1Byb3BlcnRpZXMoKSkgeworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgdGhpc09iamVjdC0+bV9sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIGFy
cmF5LmFkZChJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTsKKyAgICB9CiAgICAgCiAgICAgcmV0
dXJuIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBhcnJheSwgbW9kZSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxF
bnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxF
bnZpcm9ubWVudC5jcHAKaW5kZXggNjA3Njg3NDYwMTA3YTBkOGIwMTljZDdmYTdjZWEyOTI0ZmI1
NjJmYS4uNDdhODFiNWYzNzBhMmUwNjhiMmZjMjJkMmQwZTY3ZDY0ZDEyZGEyNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50
LmNwcApAQCAtOTksNyArOTksNyBAQCB2b2lkIEpTTGV4aWNhbEVudmlyb25tZW50OjpnZXRPd25O
b25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKCF0aGlzT2JqZWN0LT5pc1ZhbGlkKGl0
LT52YWx1ZS5zY29wZU9mZnNldCgpKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgIGlmIChpdC0+a2V5LT5pc1N5bWJvbCgpICYmICFtb2RlLmluY2x1ZGVTeW1ib2xQcm9w
ZXJ0aWVzKCkpCisgICAgICAgICAgICBpZiAoaXQtPmtleS0+aXNTeW1ib2woKSAmJiAhcHJvcGVy
dHlOYW1lcy5pbmNsdWRlU3ltYm9sUHJvcGVydGllcygpKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbVVpZChl
eGVjLCBpdC0+a2V5LmdldCgpKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKaW5kZXggNjFkYzA0NmIwZDJiOTFkZWNhZTdiODc5OGYy
MDU3MDJkZGQ1MmY1Yi4uYTI1YThmODQzYjVkNGVhZWU3NWUzODM1ZWRmMWQxYjRiZWIwOTBkMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKQEAgLTIw
NSw3ICsyMDUsNyBAQCBTdHJpbmdpZmllcjo6U3RyaW5naWZpZXIoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBMb2NhbDxVbmtub3duPiYgcmVwbGFjZXIsIGNvbnN0CiAgICAgOiBtX2V4ZWMoZXhlYykK
ICAgICAsIG1fcmVwbGFjZXIocmVwbGFjZXIpCiAgICAgLCBtX3VzaW5nQXJyYXlSZXBsYWNlcihm
YWxzZSkKLSAgICAsIG1fYXJyYXlSZXBsYWNlclByb3BlcnR5TmFtZXMoZXhlYykKKyAgICAsIG1f
YXJyYXlSZXBsYWNlclByb3BlcnR5TmFtZXMoZXhlYywgUHJvcGVydGllc1R5cGVNb2RlOjpTdHJp
bmdzKQogICAgICwgbV9yZXBsYWNlckNhbGxUeXBlKENhbGxUeXBlTm9uZSkKICAgICAsIG1fZ2Fw
KGdhcChleGVjLCBzcGFjZS5nZXQoKSkpCiB7CkBAIC00MjcsNyArNDI3LDcgQEAgYm9vbCBTdHJp
bmdpZmllcjo6SG9sZGVyOjphcHBlbmROZXh0UHJvcGVydHkoU3RyaW5naWZpZXImIHN0cmluZ2lm
aWVyLCBTdHJpbmdCdWkKICAgICAgICAgICAgIGlmIChzdHJpbmdpZmllci5tX3VzaW5nQXJyYXlS
ZXBsYWNlcikKICAgICAgICAgICAgICAgICBtX3Byb3BlcnR5TmFtZXMgPSBzdHJpbmdpZmllci5t
X2FycmF5UmVwbGFjZXJQcm9wZXJ0eU5hbWVzLmRhdGEoKTsKICAgICAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5IG9iamVjdFByb3BlcnR5TmFtZXMoZXhl
Yyk7CisgICAgICAgICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgb2JqZWN0UHJvcGVydHlOYW1l
cyhleGVjLCBQcm9wZXJ0aWVzVHlwZU1vZGU6OlN0cmluZ3MpOwogICAgICAgICAgICAgICAgIG1f
b2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG1fb2JqZWN0LmdldCgp
LCBleGVjLCBvYmplY3RQcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUoKSk7CiAgICAgICAg
ICAgICAgICAgbV9wcm9wZXJ0eU5hbWVzID0gb2JqZWN0UHJvcGVydHlOYW1lcy5yZWxlYXNlRGF0
YSgpOwogICAgICAgICAgICAgfQpAQCAtNjQ0LDcgKzY0NCw3IEBAIE5FVkVSX0lOTElORSBKU1Zh
bHVlIFdhbGtlcjo6d2FsayhKU1ZhbHVlIHVuZmlsdGVyZWQpCiAgICAgICAgICAgICAgICAgSlNP
YmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGluVmFsdWUpOwogICAgICAgICAgICAgICAgIG9iamVj
dFN0YWNrLnB1c2gob2JqZWN0KTsKICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmFwcGVuZCgw
KTsKLSAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0YWNrLmFwcGVuZChQcm9wZXJ0eU5hbWVBcnJh
eShtX2V4ZWMpKTsKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0YWNrLmFwcGVuZChQcm9wZXJ0
eU5hbWVBcnJheShtX2V4ZWMsIFByb3BlcnRpZXNUeXBlTW9kZTo6U3RyaW5ncykpOwogICAgICAg
ICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmpl
Y3QsIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEVudW1lcmF0aW9uTW9kZSgpKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIG9iamVjdFN0YXJ0VmlzaXRNZW1iZXI6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggZDIwZGFhMjA0NTFkMmZi
ZWYzM2JjZDkxMzQ5MTA0ZjFmYmNiNTg3My4uYTU0ZmFjYmRjMTMwZDNiNDEzMjE5NmIyOTM2ZWE1
OWQwZjA0MTc1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNw
cApAQCAtMTUwMiw2NyArMTUwMiw2OSBAQCB2b2lkIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gQWRkIG51bWVyaWMgcHJvcGVydGllcyBmaXJzdC4g
VGhhdCBhcHBlYXJzIHRvIGJlIHRoZSBhY2NlcHRlZCBjb252ZW50aW9uLgotICAgIC8vIEZJWE1F
OiBGaWxsaW5nIFByb3BlcnR5TmFtZUFycmF5IHdpdGggYW4gaWRlbnRpZmllciBmb3IgZXZlcnkg
aW50ZWdlcgotICAgIC8vIGlzIGluY3JlZGlibHkgaW5lZmZpY2llbnQgZm9yIGxhcmdlIGFycmF5
cy4gV2UgbmVlZCBhIGRpZmZlcmVudCBhcHByb2FjaCwKLSAgICAvLyB3aGljaCBhbG1vc3QgY2Vy
dGFpbmx5IG1lYW5zIGEgZGlmZmVyZW50IHN0cnVjdHVyZSBmb3IgUHJvcGVydHlOYW1lQXJyYXku
Ci0gICAgc3dpdGNoIChvYmplY3QtPmluZGV4aW5nVHlwZSgpKSB7Ci0gICAgY2FzZSBBTExfQkxB
TktfSU5ERVhJTkdfVFlQRVM6Ci0gICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVT
OgotICAgICAgICBicmVhazsKLSAgICAgICAgCi0gICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdf
VFlQRVM6Ci0gICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzogewotICAgICAg
ICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IG9iamVjdC0+YnV0dGVyZmx5KCk7Ci0gICAgICAgIHVu
c2lnbmVkIHVzZWRMZW5ndGggPSBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpOwotICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdXNlZExlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBp
ZiAoIWJ1dHRlcmZseS0+Y29udGlndW91cygpW2ldKQotICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoaSk7Ci0gICAgICAgIH0KLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotICAgICAgICAKLSAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQ
RVM6IHsKLSAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBvYmplY3QtPmJ1dHRlcmZseSgp
OwotICAgICAgICB1bnNpZ25lZCB1c2VkTGVuZ3RoID0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgo
KTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHVzZWRMZW5ndGg7ICsraSkgewot
ICAgICAgICAgICAgZG91YmxlIHZhbHVlID0gYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClb
aV07Ci0gICAgICAgICAgICBpZiAodmFsdWUgIT0gdmFsdWUpCi0gICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChpKTsKKyAgICBpZiAocHJvcGVy
dHlOYW1lcy5pbmNsdWRlU3RyaW5nUHJvcGVydGllcygpKSB7CisgICAgICAgIC8vIEFkZCBudW1l
cmljIHByb3BlcnRpZXMgZmlyc3QuIFRoYXQgYXBwZWFycyB0byBiZSB0aGUgYWNjZXB0ZWQgY29u
dmVudGlvbi4KKyAgICAgICAgLy8gRklYTUU6IEZpbGxpbmcgUHJvcGVydHlOYW1lQXJyYXkgd2l0
aCBhbiBpZGVudGlmaWVyIGZvciBldmVyeSBpbnRlZ2VyCisgICAgICAgIC8vIGlzIGluY3JlZGli
bHkgaW5lZmZpY2llbnQgZm9yIGxhcmdlIGFycmF5cy4gV2UgbmVlZCBhIGRpZmZlcmVudCBhcHBy
b2FjaCwKKyAgICAgICAgLy8gd2hpY2ggYWxtb3N0IGNlcnRhaW5seSBtZWFucyBhIGRpZmZlcmVu
dCBzdHJ1Y3R1cmUgZm9yIFByb3BlcnR5TmFtZUFycmF5LgorICAgICAgICBzd2l0Y2ggKG9iamVj
dC0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQ
RVM6CisgICAgICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5H
X1RZUEVTOgorICAgICAgICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOiB7Cisg
ICAgICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IG9iamVjdC0+YnV0dGVyZmx5KCk7Cisg
ICAgICAgICAgICB1bnNpZ25lZCB1c2VkTGVuZ3RoID0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgo
KTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB1c2VkTGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgICAgICAgICBpZiAoIWJ1dHRlcmZseS0+Y29udGlndW91cygpW2ldKQorICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVz
LmFkZChpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLSAgICAgICAgCi0gICAgY2FzZSBBTExfQVJSQVlfU1RPUkFH
RV9JTkRFWElOR19UWVBFUzogewotICAgICAgICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSBvYmpl
Y3QtPm1fYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKTsKLSAgICAgICAgCi0gICAgICAgIHVuc2ln
bmVkIHVzZWRWZWN0b3JMZW5ndGggPSBzdGQ6Om1pbihzdG9yYWdlLT5sZW5ndGgoKSwgc3RvcmFn
ZS0+dmVjdG9yTGVuZ3RoKCkpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdXNl
ZFZlY3Rvckxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoc3RvcmFnZS0+bV92ZWN0b3Jb
aV0pCisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVT
OiB7CisgICAgICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IG9iamVjdC0+YnV0dGVyZmx5
KCk7CisgICAgICAgICAgICB1bnNpZ25lZCB1c2VkTGVuZ3RoID0gYnV0dGVyZmx5LT5wdWJsaWNM
ZW5ndGgoKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB1c2VkTGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgICAgICAgICBkb3VibGUgdmFsdWUgPSBidXR0ZXJmbHktPmNvbnRp
Z3VvdXNEb3VibGUoKVtpXTsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUgIT0gdmFsdWUpCisg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIHByb3BlcnR5TmFt
ZXMuYWRkKGkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIGlmIChTcGFyc2VBcnJheVZhbHVlTWFwKiBtYXAgPSBzdG9yYWdl
LT5tX3NwYXJzZU1hcC5nZXQoKSkgewotICAgICAgICAgICAgVmVjdG9yPHVuc2lnbmVkLCAwLCBV
bnNhZmVWZWN0b3JPdmVyZmxvdz4ga2V5czsKLSAgICAgICAgICAgIGtleXMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShtYXAtPnNpemUoKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIFNwYXJz
ZUFycmF5VmFsdWVNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1hcC0+ZW5kKCk7Ci0gICAgICAg
ICAgICBmb3IgKFNwYXJzZUFycmF5VmFsdWVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWFwLT5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgICAgICBpZiAobW9kZS5pbmNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkgfHwgIShpdC0+dmFsdWUuYXR0cmlidXRlcyAmIERvbnRF
bnVtKSkKLSAgICAgICAgICAgICAgICAgICAga2V5cy51bmNoZWNrZWRBcHBlbmQoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGl0LT5rZXkpKTsKKyAgICAgICAgY2FzZSBBTExfQVJSQVlfU1RPUkFHRV9J
TkRFWElOR19UWVBFUzogeworICAgICAgICAgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gb2Jq
ZWN0LT5tX2J1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIHVuc2lnbmVkIHVzZWRWZWN0b3JMZW5ndGggPSBzdGQ6Om1pbihzdG9yYWdlLT5sZW5ndGgo
KSwgc3RvcmFnZS0+dmVjdG9yTGVuZ3RoKCkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHVzZWRWZWN0b3JMZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChz
dG9yYWdlLT5tX3ZlY3RvcltpXSkKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5h
ZGQoaSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHN0ZDo6c29y
dChrZXlzLmJlZ2luKCksIGtleXMuZW5kKCkpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGtleXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAgICAgcHJvcGVydHlOYW1l
cy5hZGQoa2V5c1tpXSk7CisgICAgICAgICAgICBpZiAoU3BhcnNlQXJyYXlWYWx1ZU1hcCogbWFw
ID0gc3RvcmFnZS0+bV9zcGFyc2VNYXAuZ2V0KCkpIHsKKyAgICAgICAgICAgICAgICBWZWN0b3I8
dW5zaWduZWQsIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBrZXlzOworICAgICAgICAgICAgICAg
IGtleXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtYXAtPnNpemUoKSk7CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gbWFwLT5lbmQoKTsKKyAgICAgICAgICAgICAgICBmb3IgKFNwYXJzZUFycmF5VmFsdWVN
YXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGUuaW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygp
IHx8ICEoaXQtPnZhbHVlLmF0dHJpYnV0ZXMgJiBEb250RW51bSkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBrZXlzLnVuY2hlY2tlZEFwcGVuZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaXQtPmtl
eSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICBzdGQ6OnNvcnQoa2V5cy5iZWdpbigpLCBrZXlzLmVuZCgpKTsKKyAgICAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwga2V5cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICAg
ICAgICAgcHJvcGVydHlOYW1lcy5hZGQoa2V5c1tpXSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9Ci0gICAg
ICAgIGJyZWFrOwotICAgIH0KLSAgICAgICAgCi0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKICAgICBvYmplY3QtPm1ldGhvZFRhYmxl
KGV4ZWMtPnZtKCkpLT5nZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWVzLCBtb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwCmluZGV4IDdlN2QxYWMzNmM5
YWJjMjkxNDE5OWIzMTJmOWMwMzcyNjQ1ODdhNjUuLjlmMDgxY2UxYTlhOWQ2ZDViNDY0MWQ4ZTZj
MDg4M2IyNzI4ZDc2OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcApAQCAtMzYsNyArMzYsNyBAQCBj
b25zdCBDbGFzc0luZm8gSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpzX2luZm8gPSB7ICJKU1By
b3BlcnR5TmFtZUVudW1lcmF0b3IiLAogSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3I6OmNyZWF0ZShWTSYgdm0pCiB7CiAgICAgaWYgKCF2bS5lbXB0eVBy
b3BlcnR5TmFtZUVudW1lcmF0b3IuZ2V0KCkpIHsKLSAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkg
cHJvcGVydHlOYW1lcygmdm0pOworICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5h
bWVzKCZ2bSwgUHJvcGVydGllc1R5cGVNb2RlOjpTdHJpbmdzKTsKICAgICAgICAgdm0uZW1wdHlQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yID0gU3Ryb25nPEpTQ2VsbD4odm0sIGNyZWF0ZSh2bSwgMCwg
MCwgMCwgcHJvcGVydHlOYW1lcykpOwogICAgIH0KICAgICByZXR1cm4ganNDYXN0PEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvcio+KHZtLmVtcHR5UHJvcGVydHlOYW1lRW51bWVyYXRvci5nZXQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlO
YW1lRW51bWVyYXRvci5oCmluZGV4IDk0YjAzNDM1Yjk0OGE3MDAxOGY0YTk2ZDYwODhlYjVmOWFi
NTlkZDYuLmMyZTBhYWEyZTQyZjI2YjdkY2RhYmYxZjE3NGZkODVmZDY0YWZjMjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51
bWVyYXRvci5oCkBAIC0xMTUsNyArMTE1LDcgQEAgaW5saW5lIEpTUHJvcGVydHlOYW1lRW51bWVy
YXRvciogcHJvcGVydHlOYW1lRW51bWVyYXRvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWMKIAog
ICAgIHVpbnQzMl90IG51bWJlclN0cnVjdHVyZVByb3BlcnRpZXMgPSAwOwogCi0gICAgUHJvcGVy
dHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKKyAgICBQcm9wZXJ0eU5hbWVBcnJheSBw
cm9wZXJ0eU5hbWVzKGV4ZWMsIFByb3BlcnRpZXNUeXBlTW9kZTo6U3RyaW5ncyk7CiAKICAgICBp
ZiAoc3RydWN0dXJlLT5jYW5BY2Nlc3NQcm9wZXJ0aWVzUXVpY2tseSgpICYmIGluZGV4ZWRMZW5n
dGggPT0gYmFzZS0+Z2V0QXJyYXlMZW5ndGgoKSkgewogICAgICAgICBiYXNlLT5tZXRob2RUYWJs
ZSh2bSktPmdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoYmFzZSwgZXhlYywgcHJvcGVydHlOYW1l
cywgRW51bWVyYXRpb25Nb2RlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAppbmRleCBjMDhmZjU5NDg3YmY4ZGU3Mjdj
YWFlNmE1ODM5YTI0Yzg4ZmU0NWZmLi4yMGI2NzNhNzA0NTBmYTU5OWIzNWFjMTg0NzdiZTI3MTBm
MjAwNDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJv
bFRhYmxlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5
bWJvbFRhYmxlT2JqZWN0LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIEpTU3ltYm9sVGFibGVP
YmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdAogICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBlbmQgPSB0aGlzT2JqZWN0
LT5zeW1ib2xUYWJsZSgpLT5lbmQobG9ja2VyKTsKICAgICAgICAgZm9yIChTeW1ib2xUYWJsZTo6
TWFwOjppdGVyYXRvciBpdCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmJlZ2luKGxvY2tl
cik7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgaWYgKCEoaXQtPnZhbHVlLmdldEF0
dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCBtb2RlLmluY2x1ZGVEb250RW51bVByb3BlcnRpZXMo
KSkgewotICAgICAgICAgICAgICAgIGlmIChpdC0+a2V5LT5pc1N5bWJvbCgpICYmICFtb2RlLmlu
Y2x1ZGVTeW1ib2xQcm9wZXJ0aWVzKCkpCisgICAgICAgICAgICAgICAgaWYgKGl0LT5rZXktPmlz
U3ltYm9sKCkgJiYgIXByb3BlcnR5TmFtZXMuaW5jbHVkZVN5bWJvbFByb3BlcnRpZXMoKSkKICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1l
cy5hZGQoSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBpdC0+a2V5LmdldCgpKSk7CiAgICAgICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggMWExMWUyOGQ3MjU1YjRjZGE3MTBjMWE5Y2JiNDk5ZGZmYWUxMjM1
My4uOGRkN2IxZDIxNjM5NWZmZmYzZjRkZWEyYmFjZDEyMDg2ZWEzMDY1MSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApAQCAt
MjUzLDcgKzI1Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3Ry
dWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlCiAgICAgSlNPYmplY3QqIG9i
amVjdCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGV4ZWMpOwogICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7
Ci0gICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKKyAgICBQcm9wZXJ0eU5h
bWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMsIFByb3BlcnRpZXNUeXBlTW9kZTo6U3RyaW5ncyk7CiAg
ICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhv
YmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3BlcnRp
ZXNNb2RlOjpJbmNsdWRlKSk7CiAgICAgSlNBcnJheSogbmFtZXMgPSBjb25zdHJ1Y3RFbXB0eUFy
cmF5KGV4ZWMsIDApOwogICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5zaXpl
KCk7CkBAIC0yNjgsOCArMjY4LDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9scyhFeGVjU3RhdGUqIGUKICAgICBKU09i
amVjdCogb2JqZWN0ID0gZXhlYy0+YXJndW1lbnQoMCkudG9PYmplY3QoZXhlYyk7CiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVsbCgpKTsKLSAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAgIG9i
amVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0
LCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGUoRG9udEVudW1Qcm9wZXJ0aWVzTW9k
ZTo6SW5jbHVkZSwgU3ltYm9sUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsKKyAgICBQcm9wZXJ0
eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMsIFByb3BlcnRpZXNUeXBlTW9kZTo6U3ltYm9scyk7
CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1l
cyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3Bl
cnRpZXNNb2RlOjpJbmNsdWRlKSk7CiAgICAgSlNBcnJheSogbmFtZXMgPSBjb25zdHJ1Y3RFbXB0
eUFycmF5KGV4ZWMsIDApOwogICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5z
aXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspIHsK
QEAgLTI4Niw3ICsyODYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENv
bnN0cnVjdG9yS2V5cyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGV4
ZWMtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7Ci0gICAgUHJv
cGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKKyAgICBQcm9wZXJ0eU5hbWVBcnJheSBw
cm9wZXJ0aWVzKGV4ZWMsIFByb3BlcnRpZXNUeXBlTW9kZTo6U3RyaW5ncyk7CiAgICAgb2JqZWN0
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4
ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZSgpKTsKICAgICBKU0FycmF5KiBrZXlzID0g
Y29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9
IHByb3BlcnRpZXMuc2l6ZSgpOwpAQCAtMzk3LDggKzM5Nyw4IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4
ZWMpCiAKIHN0YXRpYyBKU1ZhbHVlIGRlZmluZVByb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogb2JqZWN0LCBKU09iamVjdCogcHJvcGVydGllcykKIHsKLSAgICBQcm9wZXJ0eU5h
bWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgIGFzT2JqZWN0KHByb3BlcnRpZXMpLT5t
ZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChwcm9w
ZXJ0aWVzKSwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJv
cGVydGllc01vZGU6OkV4Y2x1ZGUsIFN5bWJvbFByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSk7Cisg
ICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjLCBQcm9wZXJ0aWVzVHlwZU1v
ZGU6OkJvdGgpOworICAgIGFzT2JqZWN0KHByb3BlcnRpZXMpLT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChwcm9wZXJ0aWVzKSwgZXhlYywgcHJv
cGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4Y2x1
ZGUpKTsKICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9IHByb3BlcnR5TmFtZXMuc2l6ZSgpOwog
ICAgIFZlY3RvcjxQcm9wZXJ0eURlc2NyaXB0b3I+IGRlc2NyaXB0b3JzOwogICAgIE1hcmtlZEFy
Z3VtZW50QnVmZmVyIG1hcmtCdWZmZXI7CkBAIC00NjcsOCArNDY3LDggQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclNlYWwoRXhlY1N0YXRlKiBleGVjKQog
ICAgIH0KIAogICAgIC8vIDIuIEZvciBlYWNoIG5hbWVkIG93biBwcm9wZXJ0eSBuYW1lIFAgb2Yg
TywKLSAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAgIG9iamVjdC0+
bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVj
LCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGUoRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5j
bHVkZSwgU3ltYm9sUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsKKyAgICBQcm9wZXJ0eU5hbWVB
cnJheSBwcm9wZXJ0aWVzKGV4ZWMsIFByb3BlcnRpZXNUeXBlTW9kZTo6Qm90aCk7CisgICAgb2Jq
ZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3Qs
IGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3BlcnRpZXNNb2Rl
OjpJbmNsdWRlKSk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IHByb3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRl
cmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewog
ICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9ICppdGVyOwpAQCAtNTAxLDggKzUwMSw4
IEBAIEpTT2JqZWN0KiBvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBvYmplY3QpCiAgICAgfQogCiAgICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQgb3duIHBy
b3BlcnR5IG5hbWUgUCBvZiBPLAotICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhl
Yyk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlO
YW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVBy
b3BlcnRpZXNNb2RlOjpJbmNsdWRlLCBTeW1ib2xQcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpOwor
ICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYywgUHJvcGVydGllc1R5cGVNb2Rl
OjpCb3RoKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9w
ZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlKERvbnRF
bnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gcHJvcGVydGllcy5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5TmFt
ZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBpdGVyICE9
IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gKml0ZXI7
CkBAIC01NjEsOCArNTYxLDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RD
b25zdHJ1Y3RvcklzU2VhbGVkKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0Jvb2xlYW4ob2JqZWN0LT5pc1NlYWxlZChleGVjLT52bSgpKSkpOwogCiAg
ICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQgb3duIHByb3BlcnR5IG5hbWUgUCBvZiBPLAotICAgIFBy
b3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJs
ZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRp
ZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlLCBTeW1i
b2xQcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpOworICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3Bl
cnRpZXMoZXhlYywgUHJvcGVydGllc1R5cGVNb2RlOjpCb3RoKTsKKyAgICBvYmplY3QtPm1ldGhv
ZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJv
cGVydGllcywgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUp
KTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcHJvcGVydGll
cy5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdGVy
ID0gcHJvcGVydGllcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIElk
ZW50aWZpZXIgcHJvcGVydHlOYW1lID0gKml0ZXI7CkBAIC01OTQsOCArNTk0LDggQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzRnJvemVuKEV4ZWNTdGF0
ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ob2JqZWN0
LT5pc0Zyb3plbihleGVjLT52bSgpKSkpOwogCiAgICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQgb3du
IHByb3BlcnR5IG5hbWUgUCBvZiBPLAotICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMo
ZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVy
dHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51
bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlLCBTeW1ib2xQcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkp
OworICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYywgUHJvcGVydGllc1R5cGVN
b2RlOjpCb3RoKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Q
cm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlKERv
bnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gcHJvcGVydGllcy5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5
TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBpdGVy
ICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gKml0
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5h
bWVBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJy
YXkuaAppbmRleCBjMmYxM2Q4YzM3MjlhZTVhYjdiZDM5ZGI3NGUzNDU4ODNlNGM4NjcyLi4yMTA4
NzZjNWZiZDUxNmJjZGM0ZTFjMjFiNWMzYjFjNDU2MTFkOTIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgKQEAgLTQ4LDE1ICs0OCwx
NSBAQCBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxQcm9w
ZXJ0eU5hbWVBcnJheURhdGE+IHsKIC8vIEZJWE1FOiBSZW5hbWUgdG8gUHJvcGVydHlOYW1lQXJy
YXlCdWlsZGVyLgogY2xhc3MgUHJvcGVydHlOYW1lQXJyYXkgewogcHVibGljOgotICAgIFByb3Bl
cnR5TmFtZUFycmF5KFZNKiB2bSkKKyAgICBQcm9wZXJ0eU5hbWVBcnJheShWTSogdm0sIFByb3Bl
cnRpZXNUeXBlTW9kZSB0eXBlTW9kZSkKICAgICAgICAgOiBtX2RhdGEoUHJvcGVydHlOYW1lQXJy
YXlEYXRhOjpjcmVhdGUoKSkKICAgICAgICAgLCBtX3ZtKHZtKQorICAgICAgICAsIG1fdHlwZU1v
ZGUodHlwZU1vZGUpCiAgICAgewogICAgIH0KIAotICAgIFByb3BlcnR5TmFtZUFycmF5KEV4ZWNT
dGF0ZSogZXhlYykKLSAgICAgICAgOiBtX2RhdGEoUHJvcGVydHlOYW1lQXJyYXlEYXRhOjpjcmVh
dGUoKSkKLSAgICAgICAgLCBtX3ZtKCZleGVjLT52bSgpKQorICAgIFByb3BlcnR5TmFtZUFycmF5
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydGllc1R5cGVNb2RlIHR5cGVNb2RlKQorICAgICAgICA6
IFByb3BlcnR5TmFtZUFycmF5KCZleGVjLT52bSgpLCB0eXBlTW9kZSkKICAgICB7CiAgICAgfQog
CkBAIC04NSwxMCArODUsMTcgQEAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXkgewogICAgIGNvbnN0
X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0
b3IoKS5iZWdpbigpOyB9CiAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKS5lbmQoKTsgfQogCisgICAgUHJvcGVydGllc1R5
cGVNb2RlIHR5cGVNb2RlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlTW9kZTsgfQorICAgIGJvb2wg
aW5jbHVkZVN5bWJvbFByb3BlcnRpZXMoKSBjb25zdDsKKyAgICBib29sIGluY2x1ZGVTdHJpbmdQ
cm9wZXJ0aWVzKCkgY29uc3Q7CisKIHByaXZhdGU6CisgICAgYm9vbCBpc1VpZE1hdGNoZWRUb1R5
cGVNb2RlKFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudGlmaWVyKTsKKwogICAgIFJlZlB0cjxQcm9w
ZXJ0eU5hbWVBcnJheURhdGE+IG1fZGF0YTsKICAgICBIYXNoU2V0PFVuaXF1ZWRTdHJpbmdJbXBs
Kj4gbV9zZXQ7CiAgICAgVk0qIG1fdm07CisgICAgUHJvcGVydGllc1R5cGVNb2RlIG1fdHlwZU1v
ZGU7CiB9OwogCiBBTFdBWVNfSU5MSU5FIHZvaWQgUHJvcGVydHlOYW1lQXJyYXk6OmFkZChjb25z
dCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQpAQCAtOTgsNiArMTA1LDggQEAgQUxXQVlTX0lOTElO
RSB2b2lkIFByb3BlcnR5TmFtZUFycmF5OjphZGQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmll
cikKIAogQUxXQVlTX0lOTElORSB2b2lkIFByb3BlcnR5TmFtZUFycmF5OjphZGRLbm93blVuaXF1
ZShVbmlxdWVkU3RyaW5nSW1wbCogaWRlbnRpZmllcikKIHsKKyAgICBpZiAoIWlzVWlkTWF0Y2hl
ZFRvVHlwZU1vZGUoaWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKICAgICBtX2RhdGEtPnBy
b3BlcnR5TmFtZVZlY3RvcigpLmFwcGVuZChJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIGlkZW50
aWZpZXIpKTsKIH0KIApAQCAtMTA3LDYgKzExNiw5IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBQcm9w
ZXJ0eU5hbWVBcnJheTo6YWRkKFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudGlmaWVyKQogCiAgICAg
QVNTRVJUKGlkZW50aWZpZXIpOwogCisgICAgaWYgKCFpc1VpZE1hdGNoZWRUb1R5cGVNb2RlKGlk
ZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoc2l6ZSgpIDwgc2V0VGhyZXNo
b2xkKSB7CiAgICAgICAgIGlmIChtX2RhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpLmNvbnRhaW5z
KGlkZW50aWZpZXIpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTIyLDYgKzEzNCwyMyBAQCBB
TFdBWVNfSU5MSU5FIHZvaWQgUHJvcGVydHlOYW1lQXJyYXk6OmFkZChVbmlxdWVkU3RyaW5nSW1w
bCogaWRlbnRpZmllcikKICAgICBhZGRLbm93blVuaXF1ZShpZGVudGlmaWVyKTsKIH0KIAorQUxX
QVlTX0lOTElORSBib29sIFByb3BlcnR5TmFtZUFycmF5Ojppc1VpZE1hdGNoZWRUb1R5cGVNb2Rl
KFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudGlmaWVyKQoreworICAgIGlmIChpZGVudGlmaWVyLT5p
c1N5bWJvbCgpKQorICAgICAgICByZXR1cm4gaW5jbHVkZVN5bWJvbFByb3BlcnRpZXMoKTsKKyAg
ICByZXR1cm4gaW5jbHVkZVN0cmluZ1Byb3BlcnRpZXMoKTsKK30KKworQUxXQVlTX0lOTElORSBi
b29sIFByb3BlcnR5TmFtZUFycmF5OjppbmNsdWRlU3ltYm9sUHJvcGVydGllcygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190eXBlPFByb3BlcnRpZXNU
eXBlTW9kZT46OnR5cGU+KG1fdHlwZU1vZGUpICYgc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5n
X3R5cGU8UHJvcGVydGllc1R5cGVNb2RlPjo6dHlwZT4oUHJvcGVydGllc1R5cGVNb2RlOjpTeW1i
b2xzKTsKK30KKworQUxXQVlTX0lOTElORSBib29sIFByb3BlcnR5TmFtZUFycmF5OjppbmNsdWRl
U3RyaW5nUHJvcGVydGllcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6
dW5kZXJseWluZ190eXBlPFByb3BlcnRpZXNUeXBlTW9kZT46OnR5cGU+KG1fdHlwZU1vZGUpICYg
c3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGU8UHJvcGVydGllc1R5cGVNb2RlPjo6dHlw
ZT4oUHJvcGVydGllc1R5cGVNb2RlOjpTdHJpbmdzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlND
CiAKICNlbmRpZiAvLyBQcm9wZXJ0eU5hbWVBcnJheV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAppbmRleCBlYjc0MzBlYjU1M2FkNzYwNzQ3ODU0
YjJmNjRlZWJlYjdlNTA4NzgyLi5iNWFhM2Y3MmQxMTBmNTkzZTEzZWE5YWRjZTE5ZjZkMWQyZTM4
OTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5j
cHAKQEAgLTE0Niw5ICsxNDYsMTEgQEAgYm9vbCBTdHJpbmdPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQKIHZvaWQgU3Ry
aW5nT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9k
ZSBtb2RlKQogewogICAgIFN0cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJpbmdP
YmplY3QqPihvYmplY3QpOwotICAgIGludCBzaXplID0gdGhpc09iamVjdC0+aW50ZXJuYWxWYWx1
ZSgpLT5sZW5ndGgoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAg
ICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7CisgICAgaWYg
KHByb3BlcnR5TmFtZXMuaW5jbHVkZVN0cmluZ1Byb3BlcnRpZXMoKSkgeworICAgICAgICBpbnQg
c2l6ZSA9IHRoaXNPYmplY3QtPmludGVybmFsVmFsdWUoKS0+bGVuZ3RoKCk7CisgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5h
ZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7CisgICAgfQogICAgIGlmIChtb2RlLmluY2x1
ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+
cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CiAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggY2EwOTdmN2M4MjM2
Mzg5NmY2MGJhODgyZjExYmJmZDJmNjA0MDYyNC4uOThkM2ZjMjAxNmIxNDE3ODlkNzVhNTVhMWFj
ZmRkMGE2ZjZhMzlhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwCkBAIC05NDcsNyArOTQ3LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OmdldFByb3BlcnR5TmFt
ZXNGcm9tU3RydWN0dXJlKFZNJiB2bSwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnQKICAgICBm
b3IgKFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0eVRhYmxlKCktPmJlZ2lu
KCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgQVNTRVJUKGhhc05vbkVudW1lcmFi
bGVQcm9wZXJ0aWVzKCkgfHwgIShpdGVyLT5hdHRyaWJ1dGVzICYgRG9udEVudW0pKTsKICAgICAg
ICAgaWYgKCEoaXRlci0+YXR0cmlidXRlcyAmIERvbnRFbnVtKSB8fCBtb2RlLmluY2x1ZGVEb250
RW51bVByb3BlcnRpZXMoKSkgewotICAgICAgICAgICAgaWYgKGl0ZXItPmtleS0+aXNTeW1ib2wo
KSAmJiAhbW9kZS5pbmNsdWRlU3ltYm9sUHJvcGVydGllcygpKQorICAgICAgICAgICAgaWYgKGl0
ZXItPmtleS0+aXNTeW1ib2woKSAmJiAhcHJvcGVydHlOYW1lcy5pbmNsdWRlU3ltYm9sUHJvcGVy
dGllcygpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKGtub3du
VW5pcXVlKQogICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkS25vd25VbmlxdWUoaXRl
ci0+a2V5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25h
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKaW5kZXgg
NWMyNDM2YTk0MjhlNjhhYzIzNDUwY2YzNGMzNDQ0ODg3Y2ExYWM4Zi4uNTI0MjQzMTBmMDAyMGY1
MTFmYjg4MWQ1OWViZGEwYTNkODc5NzFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
RGljdGlvbmFyeS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXRPd25Q
cm9wZXJ0aWVzQXNTdHJpbmdIYXNoTWFwKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBtYXApIGMK
ICAgICBKU09iamVjdCogb2JqZWN0ID0gIG1fZGljdGlvbmFyeS5pbml0aWFsaXplck9iamVjdCgp
OwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZGljdGlvbmFyeS5leGVjU3RhdGUoKTsKIAotICAg
IFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYyk7CisgICAgUHJvcGVydHlOYW1l
QXJyYXkgcHJvcGVydHlOYW1lcyhleGVjLCBQcm9wZXJ0aWVzVHlwZU1vZGU6OlN0cmluZ3MpOwog
ICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lcywgRW51bWVyYXRpb25Nb2RlKCkpOwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gcHJvcGVydHlOYW1lcy5iZWdpbigpOyBpdCAhPSBwcm9wZXJ0eU5h
bWVzLmVuZCgpOyArK2l0KSB7CiAgICAgICAgIFN0cmluZyBzdHJpbmdLZXkgPSBpdC0+c3RyaW5n
KCk7CkBAIC04Nyw3ICs4Nyw3IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0T3duUHJvcGVydHlOYW1l
cyhWZWN0b3I8U3RyaW5nPiYgbmFtZXMpIGNvbnN0CiAgICAgSlNPYmplY3QqIG9iamVjdCA9ICBt
X2RpY3Rpb25hcnkuaW5pdGlhbGl6ZXJPYmplY3QoKTsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBt
X2RpY3Rpb25hcnkuZXhlY1N0YXRlKCk7CiAKLSAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0
eU5hbWVzKGV4ZWMpOworICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYywg
UHJvcGVydGllc1R5cGVNb2RlOjpTdHJpbmdzKTsKICAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVy
dHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSgpKTsK
ICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdCA9IHByb3BlcnR5
TmFtZXMuYmVnaW4oKTsgaXQgIT0gcHJvcGVydHlOYW1lcy5lbmQoKTsgKytpdCkgewogICAgICAg
ICBTdHJpbmcgc3RyaW5nS2V5ID0gaXQtPnN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9q
c29iamVjdC5jcHAKaW5kZXggMDk0YjFhZWQ4NjNmMTY3YTgwNzY2NzBiYjQ1ZDY5ZTg4MDRmNmJj
YS4uMGU4Mjk0MTAyMDQ1YzczNWU3MTY3NjFjYjFiZGZjYzU0ZWI1NjBjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCkBAIC00NDUsNyArNDQ1LDcgQEAgYm9vbCBfTlBOX0Vu
dW1lcmF0ZShOUFAsIE5QT2JqZWN0KiBvLCBOUElkZW50aWZpZXIqKiBpZGVudGlmaWVyLCB1aW50
MzJfdCogY291bnQKICAgICAgICAgCiAgICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHJvb3RPYmpl
Y3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7CiAgICAgICAgIEpTTG9ja0hvbGRlciBs
b2NrKGV4ZWMpOwotICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMp
OworICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMsIFByb3BlcnRp
ZXNUeXBlTW9kZTo6U3RyaW5ncyk7CiAKICAgICAgICAgb2JqLT5pbXAtPm1ldGhvZFRhYmxlKCkt
PmdldFByb3BlcnR5TmFtZXMob2JqLT5pbXAsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0
aW9uTW9kZSgpKTsKICAgICAgICAgdW5zaWduZWQgc2l6ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
Pihwcm9wZXJ0eU5hbWVzLnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9Q
bHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5k
ZXggYWJhZTc4MTEwMWFiM2JhYTUzNmIyMmQxYjNjM2YxYjlmOTAzYWM0OS4uZGNiNjhkZTYxNDQ0
YzBiYzA5MjI3ZDI0YTkwOGJiM2VlNjBiZDMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eS5tbQpAQCAtMTIzMCw3ICsxMjMwLDcgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHk6OmVudW1lcmF0ZSh1aW50MzJfdCBvYmplY3RJRCwgZGF0YV90JiByZXN1bHREYXQKICAgICBF
eGVjU3RhdGUqIGV4ZWMgPSBmcmFtZS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHBsdWdpbldvcmxk
KCkpLT5nbG9iYWxFeGVjKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgCi0gICAg
UHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKKyAgICBQcm9wZXJ0eU5hbWVB
cnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMsIFByb3BlcnRpZXNUeXBlTW9kZTo6U3RyaW5ncyk7CiAg
ICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKCkpOwogCiAgICAgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5Kj4gYXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRd
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OUEpTT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OUEpTT2JqZWN0LmNwcAppbmRleCAyMGRjNGQ4ZmI0Yjk5NDkzNzhjMGVkNGMzNGIwYzUy
OWQzMTE3OTE2Li43YjEzZWRmYWIwNzAzZGQ3NDQ3Nzg4OTIwNDBlZjg4MGQ5ZTA3Mzk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05QSlNPYmplY3QuY3BwCkBAIC0yMzksNyArMjM5LDcgQEAgYm9vbCBOUEpTT2JqZWN0OjplbnVt
ZXJhdGUoTlBJZGVudGlmaWVyKiogaWRlbnRpZmllcnMsIHVpbnQzMl90KiBpZGVudGlmaWVyQ291
bnQKICAgICAKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKIAotICAgIFByb3BlcnR5TmFt
ZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYyk7CisgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVy
dHlOYW1lcyhleGVjLCBQcm9wZXJ0aWVzVHlwZU1vZGU6OlN0cmluZ3MpOwogICAgIG1fanNPYmpl
Y3QtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMobV9qc09iamVjdC5nZXQoKSwgZXhl
YywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKCkpOwogCiAgICAgTlBJZGVudGlmaWVy
KiBuYW1lSWRlbnRpZmllcnMgPSBucG5NZW1OZXdBcnJheTxOUElkZW50aWZpZXI+KHByb3BlcnR5
TmFtZXMuc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwZWIzYWNkYmM4YjhjMTA1ZmI5ODQyZDVhYmUxMDVkNmQ3
YTA4YzU5Li5lMTNlMzUxYWQ5NGMxMGEyZDdkN2ZlZDlmYjk0MDQ5OTI5MTIxZDlkIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTUtMDctMjIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisKKyAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyBvbiBsYXJn
ZSBsaXN0IHRha2VzIHZlcnkgbG9uZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ2MTM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBqcy9yZWdyZXNzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJv
bHMtb24tbGFyZ2UtYXJyYXktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdy
ZXNzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMtb24tbGFyZ2UtYXJyYXkuaHRtbDog
QWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvb2JqZWN0LWdldC1vd24t
cHJvcGVydHktc3ltYm9scy1vbi1sYXJnZS1hcnJheS5qczogQWRkZWQuCisgICAgICAgICh0cmlh
bCk6CisKIDIwMTUtMDctMjIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNv
bT4KIAogICAgICAgICBbRWwgQ2FwaXRhbl0gVGVzdCBHYXJkZW5pbmcKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2pzL3JlZ3Jlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy1vbi1s
YXJnZS1hcnJheS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL29iamVjdC1n
ZXQtb3duLXByb3BlcnR5LXN5bWJvbHMtb24tbGFyZ2UtYXJyYXktZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmEzYmViNmZkZGM3OTNlNGY3YzY1ZGQ4MDQwNTRlZDRlZjJmMGQ4MmQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL29iamVjdC1nZXQtb3duLXByb3BlcnR5
LXN5bWJvbHMtb24tbGFyZ2UtYXJyYXktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK0pT
UmVncmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLW9uLWxhcmdlLWFycmF5CisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24K
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5
bWJvbHMtb24tbGFyZ2UtYXJyYXkuaHRtbCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvb2JqZWN0
LWdldC1vd24tcHJvcGVydHktc3ltYm9scy1vbi1sYXJnZS1hcnJheS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmE5MTQ0ZTQ3YjY0ZWUwZmIzOTc1NmU5MWIyZjk5MTY0MjcyMTdkMjcKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJv
bHMtb24tbGFyZ2UtYXJyYXkuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1z
eW1ib2xzLW9uLWxhcmdlLWFycmF5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL29iamVjdC1nZXQt
b3duLXByb3BlcnR5LXN5bWJvbHMtb24tbGFyZ2UtYXJyYXkuanMgYi9MYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3NjcmlwdC10ZXN0cy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLW9uLWxh
cmdlLWFycmF5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyNjZiMTFkOTViZTI4NWIxMjEyMmU5NWE2Y2JmNGQ4
YjYxNDQ3ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Njcmlw
dC10ZXN0cy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLW9uLWxhcmdlLWFycmF5Lmpz
CkBAIC0wLDAgKzEsOSBAQAorZnVuY3Rpb24gdHJpYWwoKQoreworICAgIHZhciBidWZmZXIgPSBu
ZXcgQXJyYXlCdWZmZXIoMTAwMDAwMDApOworICAgIHZhciBpbnQ4VmlldyA9IG5ldyBJbnQ4QXJy
YXkoYnVmZmVyKTsKKyAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhpbnQ4
Vmlldyk7Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpCisgICAgdHJpYWwo
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257337</attachid>
            <date>2015-07-22 21:54:08 -0700</date>
            <delta_ts>2015-07-22 21:58:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146137-20150723135252.patch</filename>
            <type>text/plain</type>
            <size>46084</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3MjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
OWRiNWRiNjc5YjMyNGE5MTBjZTJhYzI1YjA3NjgyM2I5ZDdiMDIzLi43OTgxNjUyZGEwNDZhM2E3
ZGZmMTU3MTU4Y2Y2M2ZhYWRhZTIzN2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw4OSBAQAogMjAxNS0wNy0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzIG9uIGxhcmdlIGxp
c3QgdGFrZXMgdmVyeSBsb25nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDYxMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBCZWZvcmUgdGhpcyBwYXRjaCwgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9s
cyBvbmNlIGNvbGxlY3RzIHRoZSBhbGwgbmFtZXMgaW5jbHVkaW5nIHN0cmluZ3MuCisgICAgICAg
IEFuZCBhZnRlciBpdCdzIGRvbmUsIGZpbHRlciB0aGUgbmFtZXMgdG8gb25seSByZXRyaWV2ZSB0
aGUgc3ltYm9scy4KKyAgICAgICAgQnV0IGl0J3Mgc28gbXVjaCB0aW1lIGNvbnN1bWluZyBpZiB0
aGUgZ2l2ZW4gb2JqZWN0IGlzIGEgbGFyZ2Ugbm9uLWhvbGVkIGFycmF5IHNpbmNlIGl0IGhhcwor
ICAgICAgICBtYW55IGluZGV4ZWQgcHJvcGVydGllcyBhbmQgYWxsIHRoZSBwcm9wZXJ0aWVzIGFy
ZSBvbmNlIGNvbnZlcnRlZCB0byB1bmlxdWVkIHN0cmluZ3MgYW5kIGNvbGxlY3RlZC4KKworICAg
ICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgUHJvcGVydGllc1R5cGVNb2RlLgorICAgICAgICBX
ZSBsZXZlcmFnZSB0aGlzIG1vZGUgaW4gMiBwbGFjZXMuCisKKyAgICAgICAgMS4gUHJvcGVydHlO
YW1lQXJyYXkgc2lkZQorICAgICAgICBJdCBpcyBzZXQgaW4gUHJvcGVydHlOYW1lQXJyYXkgYW5k
IGl0IGZpbHRlcnMgdGhlIGluY29taW5nIGFkZGVkIGlkZW50aWZpZXJzIGJhc2VkIG9uIHRoZSBt
b2RlLgorICAgICAgICBJdCBtYWtlcyB0aGF0IFByb3BlcnR5TmFtZUFycmF5IGRvZXNuJ3QgYmVj
b21lIHNvIGxhcmdlLgorICAgICAgICBBbmQgaXQgZW5zdXJlcyB0aGF0IG5vbi1leHBlY3RlZCB0
eXBlZCBrZXlzIGJ5IHRoZSBmaWx0ZXIgKFN5bWJvbHMgb3IgU3RyaW5ncykgYXJlIG5ldmVyIGFk
ZGVkCisgICAgICAgIHRvIHRoZSBwcm9wZXJ0eSBuYW1lIGFycmF5IGNvbGxlY3Rpb25zLgorICAg
ICAgICBIb3dldmVyIGl0IGRvZXMgbm90IHNvbHZlIHRoZSB3aG9sZSBwcm9ibGVtIGJlY2F1c2Ug
dGhlIGh1Z2UgYXJyYXkgc3RpbGwgaW5jdXJzIHRoZSBtYW55CisgICAgICAgICJpbmRleGVkIHBy
b3BlcnR5IHRvIHVuaXF1ZWQgc3RyaW5nIiBjb252ZXJzaW9uIGFuZCB0aGUgbGFyZ2UgaXRlcmF0
aW9uIGJlZm9yZSBhZGRpbmcgdGhlIGtleXMKKyAgICAgICAgdG8gdGhlIHByb3BlcnR5IG5hbWUg
YXJyYXkuCisKKyAgICAgICAgMi4gZ2V0T3duUHJvcGVydHlOYW1lcyBzaWRlCisgICAgICAgIFNv
IHdlIGNhbiB1c2UgdGhlIFByb3BlcnRpZXNUeXBlTW9kZSBpbiB0aGUgY2FsbGVyIHNpZGUgKGdl
dE93blByb3BlcnR5TmFtZXMpIGFzIGEgKipoaW50KiouCisgICAgICAgIFdoZW4gdGhlIGxhcmdl
IGl0ZXJhdGlvbiBtYXkgb2NjdXIsIHRoZSBjYWxsZXIgc2lkZSBjYW4gdXNlIHRoZSBQcm9wZXJ0
aWVzVHlwZU1vZGUgYXMgYSBoaW50IHRvCisgICAgICAgIGF2b2lkIHRoZSBpdGVyYXRpb24uCisg
ICAgICAgIEJ1dCB3ZSBkb24ndCBoZWF2aWx5IHJlbHkgb24gdGhpcyBzeXN0ZW07IGl0IG1lYW5z
IHRoYXQgZ2V0T3duUHJvcGVydHlOYW1lcyBtYXkgYWRkIHdyb25nIHR5cGVkCisgICAgICAgIGtl
eXMgKGFkZGluZyB0aGUgc3RyaW5nIGtleXMgaW4gdGhlIGNvbnRleHQgcmVxdWlyaW5nIHRoZSBz
eW1ib2wga2V5cykgYmVjYXVzZSByZWx5aW5nIG9uIHRoZQorICAgICAgICBjYXJlZnVsIGNvZGlu
ZyBpbiB0aGUgZ2V0T3duUHJvcGVydHlOYW1lcyBzaWRlIGlzIG11Y2ggZXJyb3IgcHJvbmUuIFVz
ZXJzIG1heSBhZGQgdGhlIHN0cmluZyBrZXkKKyAgICAgICAgaW4gdGhlIGNvbnRleHQgb25seSBy
ZXF1aXJpbmcgdGhlIHN5bWJvbCBrZXlzLgorICAgICAgICBTbyB0aGUgZ3VhcmFudGVlIHN1Y2gg
YXMgIm9ubHkgc3ltYm9scyBhcmUgaW5jbHVkZWQgaWYgdGhlIFByb3BlcnRpZXNUeXBlTW9kZSBp
cyBTeW1ib2xzIiBpcworICAgICAgICBlbnN1cmVkIGluIHRoZSBQcm9wZXJ0eU5hbWVBcnJheSBz
aWRlLgorCisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTT2JqZWN0
Q29weVByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcDoK
KyAgICAgICAgKERlcHJlY2F0ZWQ6OmpzVG9JbnNwZWN0b3JWYWx1ZSk6CisgICAgICAgICogYnl0
ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxs
b2NhdGlvblByb2ZpbGU6OnBvc3NpYmxlRGVmYXVsdFByb3BlcnR5Q291bnQpOgorICAgICAgICAq
IHJ1bnRpbWUvRW51bWVyYXRpb25Nb2RlLmg6CisgICAgICAgIChKU0M6OkVudW1lcmF0aW9uTW9k
ZTo6RW51bWVyYXRpb25Nb2RlKToKKyAgICAgICAgKEpTQzo6RW51bWVyYXRpb25Nb2RlOjppbmNs
dWRlU3ltYm9sUHJvcGVydGllcyk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9HZW5lcmlj
QXJndW1lbnRzSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpHZW5lcmljQXJndW1lbnRzPFR5cGU+
OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9KU0xl
eGljYWxFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVudmlyb25tZW50
OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPTk9i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjpTdHJpbmdpZmllcik6CisgICAg
ICAgIChKU0M6OlN0cmluZ2lmaWVyOjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eSk6CisgICAg
ICAgIChKU0M6OldhbGtlcjo6d2Fsayk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAg
KiBydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpT
UHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJv
cGVydHlOYW1lRW51bWVyYXRvci5oOgorICAgICAgICAoSlNDOjpwcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpKU1N5bWJvbFRhYmxlT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMp
OgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlND
OjpvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpv
YmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9scyk6CisgICAgICAgIChKU0M6Om9i
amVjdENvbnN0cnVjdG9yS2V5cyk6CisgICAgICAgIChKU0M6OmRlZmluZVByb3BlcnRpZXMpOgor
ICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvclNlYWwpOgorICAgICAgICAoSlNDOjpvYmpl
Y3RDb25zdHJ1Y3RvckZyZWV6ZSk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9ySXNT
ZWFsZWQpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcklzRnJvemVuKToKKyAgICAg
ICAgKiBydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5Lmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5
TmFtZUFycmF5OjpQcm9wZXJ0eU5hbWVBcnJheSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFt
ZUFycmF5Ojp0eXBlTW9kZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZUFycmF5OjphZGRL
bm93blVuaXF1ZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZUFycmF5OjphZGQpOgorICAg
ICAgICAoSlNDOjpQcm9wZXJ0eU5hbWVBcnJheTo6aXNVaWRNYXRjaGVkVG9UeXBlTW9kZSk6Cisg
ICAgICAgIChKU0M6OlByb3BlcnR5TmFtZUFycmF5OjppbmNsdWRlU3ltYm9sUHJvcGVydGllcyk6
CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZUFycmF5OjppbmNsdWRlU3RyaW5nUHJvcGVydGll
cyk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpT
dHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvU3Ry
dWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzRnJv
bVN0cnVjdHVyZSk6CisKKzIwMTUtMDctMjIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisKICAgICAgICAgSW50cm9kdWNpbmcgY29uc3RydWN0IGFiaWxpdHkgaW50byBK
UyBleGVjdXRhYmxlcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQ3MTgzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0YjM3ZmVjYTIxMjQ3ODE2ODk4YzAzYmQ2OGI1
NzhjNjgwMDI2YjZiLi5hOGI0ZWZhOWU5MzA1ODRkZTBkMDVhNzI4NzUwZDBmOGY0MThkMjg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTUtMDctMjIgIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5U3lt
Ym9scyBvbiBsYXJnZSBsaXN0IHRha2VzIHZlcnkgbG9uZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2MTM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6OmdldE93blByb3BlcnRpZXNBc1N0cmluZ0hh
c2hNYXApOgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6Z2V0T3duUHJvcGVydHlOYW1l
cyk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKToKKyAgICAgICAgKiBi
cmlkZ2UvTlBfanNvYmplY3QuY3BwOgorICAgICAgICAoX05QTl9FbnVtZXJhdGUpOgorCiAyMDE1
LTA3LTIyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAg
IENvb3JkaW5hdGVzLWJhc2VkIHNuYXAgb2Zmc2V0cyBkb24ndCB1cGRhdGUgY29ycmVjdGx5IHdo
ZW4gY29udGFpbmVyIGlzIHNjcm9sbGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggOWVjMzE3NTkzYmQw
NDZlOTNmMDk2MmU4YmVmZDQ1OGZmZDYyYTEzNC4uYTllZTY0ZWI3NTg2ZjhkOGE1MjZiODM0MWM2
MDA1MjM2YWUxNmE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTA3
LTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIE9i
amVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgb24gbGFyZ2UgbGlzdCB0YWtlcyB2ZXJ5IGxvbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjEzNwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lu
cy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0
OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmVudW1lcmF0ZSk6CisKIDIwMTUtMDctMjEg
IEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBbTWFjXSAiT3BlbiBJbWFnZSBJbiBOZXcgV2luZG93IiBjb250ZXh0IG1lbnUgaXRl
bSBkb2VzIG5vdGhpbmcgb24gYW4gaW1hZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmYTJlZDJlM2NjNzdkY2Zl
YjdjMWUyYWY0OGVmYzI0MzljZDFjOGQzLi5lZGYyYzU1NGVjOWRmYWNhZjA3ZjMwZWIyYmRjZDVj
ZmQ0OTJjNTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDctMjIgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgT2JqZWN0LmdldE93
blByb3BlcnR5U3ltYm9scyBvbiBsYXJnZSBsaXN0IHRha2VzIHZlcnkgbG9uZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2MTM3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QSlNPYmplY3Q6
OmVudW1lcmF0ZSk6CisKIDIwMTUtMDctMjIgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxODcxOTYuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4IGZhZjM4ZmY4YzIz
ZTlkZjA4YTAzMDBhNTk0MWUxN2EzNTQ2ZDdlYjQuLjgzYmEzODE1NTAyOTY5MzE4OTc1ZDdhYTll
YWIxNmU0MzQ1NWRiYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNP
YmplY3RSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYu
Y3BwCkBAIC02MjIsNyArNjIyLDcgQEAgSlNQcm9wZXJ0eU5hbWVBcnJheVJlZiBKU09iamVjdENv
cHlQcm9wZXJ0eU5hbWVzKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG8KIAogICAgIEpT
T2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKICAgICBKU1Byb3BlcnR5TmFtZUFycmF5
UmVmIHByb3BlcnR5TmFtZXMgPSBuZXcgT3BhcXVlSlNQcm9wZXJ0eU5hbWVBcnJheSh2bSk7Ci0g
ICAgUHJvcGVydHlOYW1lQXJyYXkgYXJyYXkodm0pOworICAgIFByb3BlcnR5TmFtZUFycmF5IGFy
cmF5KHZtLCBQcm9wZXJ0aWVzVHlwZU1vZGU6OlN0cmluZ3MpOwogICAgIGpzT2JqZWN0LT5tZXRo
b2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKGpzT2JqZWN0LCBleGVjLCBhcnJheSwgRW51bWVy
YXRpb25Nb2RlKCkpOwogCiAgICAgc2l6ZV90IHNpemUgPSBhcnJheS5zaXplKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAppbmRleCAxNTNiMDMz
YTExNzgwZTAxZDBmY2IzNGI1ZjU5ZGFmN2QxY2Q3Y2Q4Li5hYjRjY2MyZmI4NTIyZDgwOWIzYmVk
MmZjNGMwY2NhMjMwOGRhM2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmlu
ZGluZ3MvU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5n
cy9TY3JpcHRWYWx1ZS5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCBib29sIFNjcmlwdFZhbHVlOjpp
c0Z1bmN0aW9uKCkgY29uc3QKICAgICAgICAgfQogICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0
PiBpbnNwZWN0b3JPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICBK
U09iamVjdCogb2JqZWN0ID0gdmFsdWUuZ2V0T2JqZWN0KCk7Ci0gICAgICAgIFByb3BlcnR5TmFt
ZUFycmF5IHByb3BlcnR5TmFtZXMoc2NyaXB0U3RhdGUpOworICAgICAgICBQcm9wZXJ0eU5hbWVB
cnJheSBwcm9wZXJ0eU5hbWVzKHNjcmlwdFN0YXRlLCBQcm9wZXJ0aWVzVHlwZU1vZGU6OlN0cmlu
Z3MpOwogICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMo
b2JqZWN0LCBzY3JpcHRTdGF0ZSwgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKCkpOwog
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3BlcnR5TmFtZXMuc2l6ZSgpOyBpKysp
IHsKICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUgPSBwcm9wZXJ0eU5hbWVzW2ld
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9j
YXRpb25Qcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0QWxs
b2NhdGlvblByb2ZpbGUuaAppbmRleCBjYjQxNDhlZTRmNTMyODYzMWZlYzRjMTQ4ZmRmNGMzMzU0
ZmM3M2RjLi5jMTY1YjIxMWJkYWFlMjkwYWY5NGYxNjE1YmI3Njk5ZGNkOGIxMWI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlv
blByb2ZpbGUuaApAQCAtMTI3LDcgKzEyNyw3IEBAIGNsYXNzIE9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlIHsKICAgICAgICAgICAgIHJldHVybiAwOwogCiAgICAgICAgIHNpemVfdCBjb3VudCA9IDA7
Ci0gICAgICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZUFycmF5KCZ2bSk7CisgICAg
ICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZUFycmF5KCZ2bSwgUHJvcGVydGllc1R5
cGVNb2RlOjpCb3RoKTsKICAgICAgICAgcHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+Z2V0UHJvcGVy
dHlOYW1lc0Zyb21TdHJ1Y3R1cmUodm0sIHByb3BlcnR5TmFtZUFycmF5LCBFbnVtZXJhdGlvbk1v
ZGUoKSk7CiAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5RGF0YTo6UHJvcGVydHlOYW1lVmVjdG9y
JiBwcm9wZXJ0eU5hbWVWZWN0b3IgPSBwcm9wZXJ0eU5hbWVBcnJheS5kYXRhKCktPnByb3BlcnR5
TmFtZVZlY3RvcigpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3BlcnR5TmFt
ZVZlY3Rvci5zaXplKCk7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRW51bWVyYXRpb25Nb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FbnVtZXJhdGlvbk1vZGUuaAppbmRleCAzZTk1ZWQzMmY2YjRkMTIwMTQ2OTAzNDQwOGY2M2Fi
NTBiZmU2NTMwLi4yZWUxNTM2ZGZiYWRhYjAwYTBhOTUzMTNhNWQ5ODM5ZWViNjU0NGM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FbnVtZXJhdGlvbk1vZGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FbnVtZXJhdGlvbk1vZGUuaApAQCAt
MjgsNiArMjgsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2VudW0gY2xhc3MgUHJvcGVydGll
c1R5cGVNb2RlIHsKKyAgICBTeW1ib2xzID0gMSwKKyAgICBTdHJpbmdzID0gMiwKKyAgICBCb3Ro
ID0gMywKK307CisKIGVudW0gY2xhc3MgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZSB7CiAgICAgSW5j
bHVkZSwKICAgICBFeGNsdWRlCkBAIC00NSwxNiArNTEsMTQgQEAgZW51bSBjbGFzcyBKU09iamVj
dFByb3BlcnRpZXNNb2RlIHsKIAogY2xhc3MgRW51bWVyYXRpb25Nb2RlIHsKIHB1YmxpYzoKLSAg
ICBFbnVtZXJhdGlvbk1vZGUoRG9udEVudW1Qcm9wZXJ0aWVzTW9kZSBkb250RW51bVByb3BlcnRp
ZXNNb2RlID0gRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6RXhjbHVkZSwgU3ltYm9sUHJvcGVydGll
c01vZGUgc3ltYm9sUHJvcGVydGllc01vZGUgPSBTeW1ib2xQcm9wZXJ0aWVzTW9kZTo6RXhjbHVk
ZSwgSlNPYmplY3RQcm9wZXJ0aWVzTW9kZSBqc09iamVjdFByb3BlcnRpZXNNb2RlID0gSlNPYmpl
Y3RQcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkKKyAgICBFbnVtZXJhdGlvbk1vZGUoRG9udEVudW1Q
cm9wZXJ0aWVzTW9kZSBkb250RW51bVByb3BlcnRpZXNNb2RlID0gRG9udEVudW1Qcm9wZXJ0aWVz
TW9kZTo6RXhjbHVkZSwgSlNPYmplY3RQcm9wZXJ0aWVzTW9kZSBqc09iamVjdFByb3BlcnRpZXNN
b2RlID0gSlNPYmplY3RQcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkKICAgICAgICAgOiBtX2RvbnRF
bnVtUHJvcGVydGllc01vZGUoZG9udEVudW1Qcm9wZXJ0aWVzTW9kZSkKLSAgICAgICAgLCBtX3N5
bWJvbFByb3BlcnRpZXNNb2RlKHN5bWJvbFByb3BlcnRpZXNNb2RlKQogICAgICAgICAsIG1fanNP
YmplY3RQcm9wZXJ0aWVzTW9kZShqc09iamVjdFByb3BlcnRpZXNNb2RlKQogICAgIHsKICAgICB9
CiAKICAgICBFbnVtZXJhdGlvbk1vZGUoY29uc3QgRW51bWVyYXRpb25Nb2RlJiBtb2RlLCBKU09i
amVjdFByb3BlcnRpZXNNb2RlIGpzT2JqZWN0UHJvcGVydGllc01vZGUpCiAgICAgICAgIDogbV9k
b250RW51bVByb3BlcnRpZXNNb2RlKG1vZGUubV9kb250RW51bVByb3BlcnRpZXNNb2RlKQotICAg
ICAgICAsIG1fc3ltYm9sUHJvcGVydGllc01vZGUobW9kZS5tX3N5bWJvbFByb3BlcnRpZXNNb2Rl
KQogICAgICAgICAsIG1fanNPYmplY3RQcm9wZXJ0aWVzTW9kZShqc09iamVjdFByb3BlcnRpZXNN
b2RlKQogICAgIHsKICAgICB9CkBAIC02NiwxMSArNzAsNiBAQCBjbGFzcyBFbnVtZXJhdGlvbk1v
ZGUgewogICAgICAgICByZXR1cm4gbV9kb250RW51bVByb3BlcnRpZXNNb2RlID09IERvbnRFbnVt
UHJvcGVydGllc01vZGU6OkluY2x1ZGU7CiAgICAgfQogCi0gICAgYm9vbCBpbmNsdWRlU3ltYm9s
UHJvcGVydGllcygpCi0gICAgewotICAgICAgICByZXR1cm4gbV9zeW1ib2xQcm9wZXJ0aWVzTW9k
ZSA9PSBTeW1ib2xQcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZTsKLSAgICB9Ci0KICAgICBib29sIGlu
Y2x1ZGVKU09iamVjdFByb3BlcnRpZXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fanNPYmpl
Y3RQcm9wZXJ0aWVzTW9kZSA9PSBKU09iamVjdFByb3BlcnRpZXNNb2RlOjpJbmNsdWRlOwpAQCAt
NzgsNyArNzcsNiBAQCBjbGFzcyBFbnVtZXJhdGlvbk1vZGUgewogCiBwcml2YXRlOgogICAgIERv
bnRFbnVtUHJvcGVydGllc01vZGUgbV9kb250RW51bVByb3BlcnRpZXNNb2RlOwotICAgIFN5bWJv
bFByb3BlcnRpZXNNb2RlIG1fc3ltYm9sUHJvcGVydGllc01vZGU7CiAgICAgSlNPYmplY3RQcm9w
ZXJ0aWVzTW9kZSBtX2pzT2JqZWN0UHJvcGVydGllc01vZGU7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaApp
bmRleCA1Zjk1MmM2ZjJiZmVkYjc5ZjRiYjQ1OTM1MTYxNGViMThmNmZhODA3Li45YjE4MDAxODU3
ODEwNWM1NTE2OTcyMGFlNTg3N2MzZTNlMjQ2ZGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKQEAgLTc4LDE2
ICs3OCwxOSBAQAogdm9pZCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpnZXRPd25Qcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkm
IGFycmF5LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKICAgICBUeXBlKiB0aGlzT2JqZWN0ID0g
anNDYXN0PFR5cGUqPihvYmplY3QpOwotICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0aGlzT2JqZWN0LT5pbnRlcm5hbExlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgaWYgKCF0aGlz
T2JqZWN0LT5jYW5BY2Nlc3NJbmRleFF1aWNrbHkoaSkpCi0gICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgYXJyYXkuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkpOworCisgICAgaWYg
KGFycmF5LmluY2x1ZGVTdHJpbmdQcm9wZXJ0aWVzKCkpIHsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHRoaXNPYmplY3QtPmludGVybmFsTGVuZ3RoKCk7ICsraSkgeworICAgICAg
ICAgICAgaWYgKCF0aGlzT2JqZWN0LT5jYW5BY2Nlc3NJbmRleFF1aWNrbHkoaSkpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBhcnJheS5hZGQoSWRlbnRpZmllcjo6ZnJv
bShleGVjLCBpKSk7CisgICAgICAgIH0KICAgICB9CisKICAgICBpZiAobW9kZS5pbmNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzKCkgJiYgIXRoaXNPYmplY3QtPm92ZXJyb2RlVGhpbmdzKCkpIHsKICAg
ICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpOwogICAgICAgICBh
cnJheS5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxlZSk7Ci0gICAgICAgIGlmIChtb2Rl
LmluY2x1ZGVTeW1ib2xQcm9wZXJ0aWVzKCkpCisgICAgICAgIGlmIChhcnJheS5pbmNsdWRlU3lt
Ym9sUHJvcGVydGllcygpKQogICAgICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5pdGVyYXRvclN5bWJvbCk7CiAgICAgfQogICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFt
ZXModGhpc09iamVjdCwgZXhlYywgYXJyYXksIG1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGlu
ZXMuaAppbmRleCBlYzY1M2RjZGM0ODg5ZDRlOTVjMTRiZDQ5YmE4ZDgyMTEyYzk1N2YwLi5lOWVk
MWU5OThhYTlhNTA4ZDFhZWYwNTNmYWU4ODJmNDI2M2RjOWQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
d0lubGluZXMuaApAQCAtNDIzLDkgKzQyMywxMSBAQAogICAgIEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIGFycmF5LCBFbnVtZXJhdGlvbk1vZGUg
bW9kZSkKIHsKICAgICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyo+KG9iamVjdCk7Ci0gICAgCi0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHRoaXNPYmplY3QtPm1fbGVuZ3RoOyArK2kpCi0gICAgICAgIGFycmF5
LmFkZChJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTsKKworICAgIGlmIChhcnJheS5pbmNsdWRl
U3RyaW5nUHJvcGVydGllcygpKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0
aGlzT2JqZWN0LT5tX2xlbmd0aDsgKytpKQorICAgICAgICAgICAgYXJyYXkuYWRkKElkZW50aWZp
ZXI6OmZyb20oZXhlYywgaSkpOworICAgIH0KICAgICAKICAgICByZXR1cm4gQmFzZTo6Z2V0T3du
UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIGFycmF5LCBtb2RlKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcApp
bmRleCA2MDc2ODc0NjAxMDdhMGQ4YjAxOWNkN2ZhN2NlYTI5MjRmYjU2MmZhLi40N2E4MWI1ZjM3
MGEyZTA2OGIyZmMyMmQyZDBlNjdkNjRkMTJkYTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCkBAIC05OSw3ICs5
OSw3IEBAIHZvaWQgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICBpZiAoIXRoaXNPYmplY3QtPmlzVmFsaWQoaXQtPnZhbHVlLnNjb3BlT2Zm
c2V0KCkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKGl0LT5r
ZXktPmlzU3ltYm9sKCkgJiYgIW1vZGUuaW5jbHVkZVN5bWJvbFByb3BlcnRpZXMoKSkKKyAgICAg
ICAgICAgIGlmIChpdC0+a2V5LT5pc1N5bWJvbCgpICYmICFwcm9wZXJ0eU5hbWVzLmluY2x1ZGVT
eW1ib2xQcm9wZXJ0aWVzKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIGl0LT5rZXkuZ2V0
KCkpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPTk9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2Jq
ZWN0LmNwcAppbmRleCA2MWRjMDQ2YjBkMmI5MWRlY2FlN2I4Nzk4ZjIwNTcwMmRkZDUyZjViLi5h
MjVhOGY4NDNiNWQ0ZWFlZTc1ZTM4MzVlZGYxZDFiNGJlYjA5MGQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIEpT
VmFsdWUgUHJvcGVydHlOYW1lRm9yRnVuY3Rpb25DYWxsOjp2YWx1ZShFeGVjU3RhdGUqIGV4ZWMp
IGNvbnN0CiAgICAgOiBtX2V4ZWMoZXhlYykKICAgICAsIG1fcmVwbGFjZXIocmVwbGFjZXIpCiAg
ICAgLCBtX3VzaW5nQXJyYXlSZXBsYWNlcihmYWxzZSkKLSAgICAsIG1fYXJyYXlSZXBsYWNlclBy
b3BlcnR5TmFtZXMoZXhlYykKKyAgICAsIG1fYXJyYXlSZXBsYWNlclByb3BlcnR5TmFtZXMoZXhl
YywgUHJvcGVydGllc1R5cGVNb2RlOjpTdHJpbmdzKQogICAgICwgbV9yZXBsYWNlckNhbGxUeXBl
KENhbGxUeXBlTm9uZSkKICAgICAsIG1fZ2FwKGdhcChleGVjLCBzcGFjZS5nZXQoKSkpCiB7CkBA
IC00MjcsNyArNDI3LDcgQEAgYm9vbCBTdHJpbmdpZmllcjo6SG9sZGVyOjphcHBlbmROZXh0UHJv
cGVydHkoU3RyaW5naWZpZXImIHN0cmluZ2lmaWVyLCBTdHJpbmdCdWkKICAgICAgICAgICAgIGlm
IChzdHJpbmdpZmllci5tX3VzaW5nQXJyYXlSZXBsYWNlcikKICAgICAgICAgICAgICAgICBtX3By
b3BlcnR5TmFtZXMgPSBzdHJpbmdpZmllci5tX2FycmF5UmVwbGFjZXJQcm9wZXJ0eU5hbWVzLmRh
dGEoKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIFByb3BlcnR5TmFtZUFy
cmF5IG9iamVjdFByb3BlcnR5TmFtZXMoZXhlYyk7CisgICAgICAgICAgICAgICAgUHJvcGVydHlO
YW1lQXJyYXkgb2JqZWN0UHJvcGVydHlOYW1lcyhleGVjLCBQcm9wZXJ0aWVzVHlwZU1vZGU6OlN0
cmluZ3MpOwogICAgICAgICAgICAgICAgIG1fb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Q
cm9wZXJ0eU5hbWVzKG1fb2JqZWN0LmdldCgpLCBleGVjLCBvYmplY3RQcm9wZXJ0eU5hbWVzLCBF
bnVtZXJhdGlvbk1vZGUoKSk7CiAgICAgICAgICAgICAgICAgbV9wcm9wZXJ0eU5hbWVzID0gb2Jq
ZWN0UHJvcGVydHlOYW1lcy5yZWxlYXNlRGF0YSgpOwogICAgICAgICAgICAgfQpAQCAtNjQ0LDcg
KzY0NCw3IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHVlIHVuZmls
dGVyZWQpCiAgICAgICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGluVmFs
dWUpOwogICAgICAgICAgICAgICAgIG9iamVjdFN0YWNrLnB1c2gob2JqZWN0KTsKICAgICAgICAg
ICAgICAgICBpbmRleFN0YWNrLmFwcGVuZCgwKTsKLSAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0
YWNrLmFwcGVuZChQcm9wZXJ0eU5hbWVBcnJheShtX2V4ZWMpKTsKKyAgICAgICAgICAgICAgICBw
cm9wZXJ0eVN0YWNrLmFwcGVuZChQcm9wZXJ0eU5hbWVBcnJheShtX2V4ZWMsIFByb3BlcnRpZXNU
eXBlTW9kZTo6U3RyaW5ncykpOwogICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUo
KS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0
KCksIEVudW1lcmF0aW9uTW9kZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG9iamVj
dFN0YXJ0VmlzaXRNZW1iZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5jcHAKaW5kZXggZDIwZGFhMjA0NTFkMmZiZWYzM2JjZDkxMzQ5MTA0ZjFmYmNiNTg3My4uYTU0
ZmFjYmRjMTMwZDNiNDEzMjE5NmIyOTM2ZWE1OWQwZjA0MTc1NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtMTUwMiw2NyArMTUwMiw2OSBAQCB2b2lk
IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gQWRk
IG51bWVyaWMgcHJvcGVydGllcyBmaXJzdC4gVGhhdCBhcHBlYXJzIHRvIGJlIHRoZSBhY2NlcHRl
ZCBjb252ZW50aW9uLgotICAgIC8vIEZJWE1FOiBGaWxsaW5nIFByb3BlcnR5TmFtZUFycmF5IHdp
dGggYW4gaWRlbnRpZmllciBmb3IgZXZlcnkgaW50ZWdlcgotICAgIC8vIGlzIGluY3JlZGlibHkg
aW5lZmZpY2llbnQgZm9yIGxhcmdlIGFycmF5cy4gV2UgbmVlZCBhIGRpZmZlcmVudCBhcHByb2Fj
aCwKLSAgICAvLyB3aGljaCBhbG1vc3QgY2VydGFpbmx5IG1lYW5zIGEgZGlmZmVyZW50IHN0cnVj
dHVyZSBmb3IgUHJvcGVydHlOYW1lQXJyYXkuCi0gICAgc3dpdGNoIChvYmplY3QtPmluZGV4aW5n
VHlwZSgpKSB7Ci0gICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6Ci0gICAgY2FzZSBB
TExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgotICAgICAgICBicmVhazsKLSAgICAgICAgCi0g
ICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6Ci0gICAgY2FzZSBBTExfQ09OVElHVU9V
U19JTkRFWElOR19UWVBFUzogewotICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IG9iamVj
dC0+YnV0dGVyZmx5KCk7Ci0gICAgICAgIHVuc2lnbmVkIHVzZWRMZW5ndGggPSBidXR0ZXJmbHkt
PnB1YmxpY0xlbmd0aCgpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdXNlZExl
bmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoIWJ1dHRlcmZseS0+Y29udGlndW91cygpW2ld
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5h
ZGQoaSk7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgICAgICAKLSAgICBj
YXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6IHsKLSAgICAgICAgQnV0dGVyZmx5KiBidXR0
ZXJmbHkgPSBvYmplY3QtPmJ1dHRlcmZseSgpOwotICAgICAgICB1bnNpZ25lZCB1c2VkTGVuZ3Ro
ID0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHVzZWRMZW5ndGg7ICsraSkgewotICAgICAgICAgICAgZG91YmxlIHZhbHVlID0gYnV0
dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV07Ci0gICAgICAgICAgICBpZiAodmFsdWUgIT0g
dmFsdWUpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBwcm9wZXJ0eU5h
bWVzLmFkZChpKTsKKyAgICBpZiAocHJvcGVydHlOYW1lcy5pbmNsdWRlU3RyaW5nUHJvcGVydGll
cygpKSB7CisgICAgICAgIC8vIEFkZCBudW1lcmljIHByb3BlcnRpZXMgZmlyc3QuIFRoYXQgYXBw
ZWFycyB0byBiZSB0aGUgYWNjZXB0ZWQgY29udmVudGlvbi4KKyAgICAgICAgLy8gRklYTUU6IEZp
bGxpbmcgUHJvcGVydHlOYW1lQXJyYXkgd2l0aCBhbiBpZGVudGlmaWVyIGZvciBldmVyeSBpbnRl
Z2VyCisgICAgICAgIC8vIGlzIGluY3JlZGlibHkgaW5lZmZpY2llbnQgZm9yIGxhcmdlIGFycmF5
cy4gV2UgbmVlZCBhIGRpZmZlcmVudCBhcHByb2FjaCwKKyAgICAgICAgLy8gd2hpY2ggYWxtb3N0
IGNlcnRhaW5seSBtZWFucyBhIGRpZmZlcmVudCBzdHJ1Y3R1cmUgZm9yIFByb3BlcnR5TmFtZUFy
cmF5LgorICAgICAgICBzd2l0Y2ggKG9iamVjdC0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAg
Y2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CisgICAgICAgIGNhc2UgQUxMX1VOREVDSURF
RF9JTkRFWElOR19UWVBFUzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAg
ICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgorICAgICAgICBjYXNlIEFMTF9DT05U
SUdVT1VTX0lOREVYSU5HX1RZUEVTOiB7CisgICAgICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZs
eSA9IG9iamVjdC0+YnV0dGVyZmx5KCk7CisgICAgICAgICAgICB1bnNpZ25lZCB1c2VkTGVuZ3Ro
ID0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCB1c2VkTGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWJ1dHRl
cmZseS0+Y29udGlndW91cygpW2ldKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChpKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICAgICAg
Ci0gICAgY2FzZSBBTExfQVJSQVlfU1RPUkFHRV9JTkRFWElOR19UWVBFUzogewotICAgICAgICBB
cnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSBvYmplY3QtPm1fYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2Uo
KTsKLSAgICAgICAgCi0gICAgICAgIHVuc2lnbmVkIHVzZWRWZWN0b3JMZW5ndGggPSBzdGQ6Om1p
bihzdG9yYWdlLT5sZW5ndGgoKSwgc3RvcmFnZS0+dmVjdG9yTGVuZ3RoKCkpOwotICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdXNlZFZlY3Rvckxlbmd0aDsgKytpKSB7Ci0gICAgICAg
ICAgICBpZiAoc3RvcmFnZS0+bV92ZWN0b3JbaV0pCisgICAgICAgICAgICAKKyAgICAgICAgY2Fz
ZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7CisgICAgICAgICAgICBCdXR0ZXJmbHkqIGJ1
dHRlcmZseSA9IG9iamVjdC0+YnV0dGVyZmx5KCk7CisgICAgICAgICAgICB1bnNpZ25lZCB1c2Vk
TGVuZ3RoID0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsKKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCB1c2VkTGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBkb3Vi
bGUgdmFsdWUgPSBidXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXTsKKyAgICAgICAgICAg
ICAgICBpZiAodmFsdWUgIT0gdmFsdWUpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGkpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChTcGFyc2VB
cnJheVZhbHVlTWFwKiBtYXAgPSBzdG9yYWdlLT5tX3NwYXJzZU1hcC5nZXQoKSkgewotICAgICAg
ICAgICAgVmVjdG9yPHVuc2lnbmVkLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4ga2V5czsKLSAg
ICAgICAgICAgIGtleXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtYXAtPnNpemUoKSk7CiAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IG1hcC0+ZW5kKCk7Ci0gICAgICAgICAgICBmb3IgKFNwYXJzZUFycmF5VmFsdWVNYXA6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAg
ICAgICAgICAgICAgICBpZiAobW9kZS5pbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkgfHwgIShp
dC0+dmFsdWUuYXR0cmlidXRlcyAmIERvbnRFbnVtKSkKLSAgICAgICAgICAgICAgICAgICAga2V5
cy51bmNoZWNrZWRBcHBlbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGl0LT5rZXkpKTsKKyAgICAg
ICAgY2FzZSBBTExfQVJSQVlfU1RPUkFHRV9JTkRFWElOR19UWVBFUzogeworICAgICAgICAgICAg
QXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gb2JqZWN0LT5tX2J1dHRlcmZseS0+YXJyYXlTdG9yYWdl
KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHVuc2lnbmVkIHVzZWRWZWN0b3JMZW5ndGgg
PSBzdGQ6Om1pbihzdG9yYWdlLT5sZW5ndGgoKSwgc3RvcmFnZS0+dmVjdG9yTGVuZ3RoKCkpOwor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHVzZWRWZWN0b3JMZW5ndGg7ICsr
aSkgeworICAgICAgICAgICAgICAgIGlmIChzdG9yYWdlLT5tX3ZlY3RvcltpXSkKKyAgICAgICAg
ICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoaSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIHN0ZDo6c29ydChrZXlzLmJlZ2luKCksIGtleXMuZW5kKCkpOwot
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGtleXMuc2l6ZSgpOyArK2kpCi0g
ICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoa2V5c1tpXSk7CisgICAgICAgICAgICBp
ZiAoU3BhcnNlQXJyYXlWYWx1ZU1hcCogbWFwID0gc3RvcmFnZS0+bV9zcGFyc2VNYXAuZ2V0KCkp
IHsKKyAgICAgICAgICAgICAgICBWZWN0b3I8dW5zaWduZWQsIDAsIFVuc2FmZVZlY3Rvck92ZXJm
bG93PiBrZXlzOworICAgICAgICAgICAgICAgIGtleXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSht
YXAtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgU3BhcnNlQXJy
YXlWYWx1ZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbWFwLT5lbmQoKTsKKyAgICAgICAgICAg
ICAgICBmb3IgKFNwYXJzZUFycmF5VmFsdWVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWFwLT5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGUu
aW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpIHx8ICEoaXQtPnZhbHVlLmF0dHJpYnV0ZXMgJiBE
b250RW51bSkpCisgICAgICAgICAgICAgICAgICAgICAgICBrZXlzLnVuY2hlY2tlZEFwcGVuZChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oaXQtPmtleSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBzdGQ6OnNvcnQoa2V5cy5iZWdpbigpLCBrZXlz
LmVuZCgpKTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwga2V5cy5z
aXplKCk7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoa2V5c1tp
XSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICAgICAgCi0g
ICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9
CiAKICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Ob25JbmRleFBy
b3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IuY3BwCmluZGV4IDdlN2QxYWMzNmM5YWJjMjkxNDE5OWIzMTJmOWMwMzcyNjQ1ODdhNjUu
LjlmMDgxY2UxYTlhOWQ2ZDViNDY0MWQ4ZTZjMDg4M2IyNzI4ZDc2OWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yLmNwcApAQCAtMzYsNyArMzYsNyBAQAogSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBKU1By
b3BlcnR5TmFtZUVudW1lcmF0b3I6OmNyZWF0ZShWTSYgdm0pCiB7CiAgICAgaWYgKCF2bS5lbXB0
eVByb3BlcnR5TmFtZUVudW1lcmF0b3IuZ2V0KCkpIHsKLSAgICAgICAgUHJvcGVydHlOYW1lQXJy
YXkgcHJvcGVydHlOYW1lcygmdm0pOworICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0
eU5hbWVzKCZ2bSwgUHJvcGVydGllc1R5cGVNb2RlOjpTdHJpbmdzKTsKICAgICAgICAgdm0uZW1w
dHlQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yID0gU3Ryb25nPEpTQ2VsbD4odm0sIGNyZWF0ZSh2bSwg
MCwgMCwgMCwgcHJvcGVydHlOYW1lcykpOwogICAgIH0KICAgICByZXR1cm4ganNDYXN0PEpTUHJv
cGVydHlOYW1lRW51bWVyYXRvcio+KHZtLmVtcHR5UHJvcGVydHlOYW1lRW51bWVyYXRvci5nZXQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVy
dHlOYW1lRW51bWVyYXRvci5oCmluZGV4IDk0YjAzNDM1Yjk0OGE3MDAxOGY0YTk2ZDYwODhlYjVm
OWFiNTlkZDYuLmMyZTBhYWEyZTQyZjI2YjdkY2RhYmYxZjE3NGZkODVmZDY0YWZjMjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVy
YXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1l
RW51bWVyYXRvci5oCkBAIC0xMTUsNyArMTE1LDcgQEAgaW5saW5lIEpTUHJvcGVydHlOYW1lRW51
bWVyYXRvciogcHJvcGVydHlOYW1lRW51bWVyYXRvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWMK
IAogICAgIHVpbnQzMl90IG51bWJlclN0cnVjdHVyZVByb3BlcnRpZXMgPSAwOwogCi0gICAgUHJv
cGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKKyAgICBQcm9wZXJ0eU5hbWVBcnJh
eSBwcm9wZXJ0eU5hbWVzKGV4ZWMsIFByb3BlcnRpZXNUeXBlTW9kZTo6U3RyaW5ncyk7CiAKICAg
ICBpZiAoc3RydWN0dXJlLT5jYW5BY2Nlc3NQcm9wZXJ0aWVzUXVpY2tseSgpICYmIGluZGV4ZWRM
ZW5ndGggPT0gYmFzZS0+Z2V0QXJyYXlMZW5ndGgoKSkgewogICAgICAgICBiYXNlLT5tZXRob2RU
YWJsZSh2bSktPmdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoYmFzZSwgZXhlYywgcHJvcGVydHlO
YW1lcywgRW51bWVyYXRpb25Nb2RlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAppbmRleCBjMDhmZjU5NDg3YmY4ZGU3
MjdjYWFlNmE1ODM5YTI0Yzg4ZmU0NWZmLi4yMGI2NzNhNzA0NTBmYTU5OWIzNWFjMTg0NzdiZTI3
MTBmMjAwNDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5
bWJvbFRhYmxlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N5bWJvbFRhYmxlT2JqZWN0LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIEpTU3ltYm9sVGFi
bGVPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdAogICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBlbmQgPSB0aGlzT2Jq
ZWN0LT5zeW1ib2xUYWJsZSgpLT5lbmQobG9ja2VyKTsKICAgICAgICAgZm9yIChTeW1ib2xUYWJs
ZTo6TWFwOjppdGVyYXRvciBpdCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmJlZ2luKGxv
Y2tlcik7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgaWYgKCEoaXQtPnZhbHVlLmdl
dEF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCBtb2RlLmluY2x1ZGVEb250RW51bVByb3BlcnRp
ZXMoKSkgewotICAgICAgICAgICAgICAgIGlmIChpdC0+a2V5LT5pc1N5bWJvbCgpICYmICFtb2Rl
LmluY2x1ZGVTeW1ib2xQcm9wZXJ0aWVzKCkpCisgICAgICAgICAgICAgICAgaWYgKGl0LT5rZXkt
PmlzU3ltYm9sKCkgJiYgIXByb3BlcnR5TmFtZXMuaW5jbHVkZVN5bWJvbFByb3BlcnRpZXMoKSkK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgcHJvcGVydHlO
YW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBpdC0+a2V5LmdldCgpKSk7CiAgICAg
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5jcHAKaW5kZXggMWExMWUyOGQ3MjU1YjRjZGE3MTBjMWE5Y2JiNDk5ZGZmYWUx
MjM1My4uOGRkN2IxZDIxNjM5NWZmZmYzZjRkZWEyYmFjZDEyMDg2ZWEzMDY1MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApA
QCAtMjUzLDcgKzI1Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29u
c3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlCiAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGV4ZWMpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwo
KSk7Ci0gICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKKyAgICBQcm9wZXJ0
eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMsIFByb3BlcnRpZXNUeXBlTW9kZTo6U3RyaW5ncyk7
CiAgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1l
cyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3Bl
cnRpZXNNb2RlOjpJbmNsdWRlKSk7CiAgICAgSlNBcnJheSogbmFtZXMgPSBjb25zdHJ1Y3RFbXB0
eUFycmF5KGV4ZWMsIDApOwogICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5z
aXplKCk7CkBAIC0yNjgsOCArMjY4LDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9scyhFeGVjU3RhdGUqIGUKICAgICBK
U09iamVjdCogb2JqZWN0ID0gZXhlYy0+YXJndW1lbnQoMCkudG9PYmplY3QoZXhlYyk7CiAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVsbCgpKTsKLSAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAg
IG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGUoRG9udEVudW1Qcm9wZXJ0aWVz
TW9kZTo6SW5jbHVkZSwgU3ltYm9sUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsKKyAgICBQcm9w
ZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMsIFByb3BlcnRpZXNUeXBlTW9kZTo6U3ltYm9s
cyk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlO
YW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVBy
b3BlcnRpZXNNb2RlOjpJbmNsdWRlKSk7CiAgICAgSlNBcnJheSogbmFtZXMgPSBjb25zdHJ1Y3RF
bXB0eUFycmF5KGV4ZWMsIDApOwogICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGll
cy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKysp
IHsKQEAgLTI4Niw3ICsyODYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dENvbnN0cnVjdG9yS2V5cyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNPYmplY3QqIG9iamVjdCA9
IGV4ZWMtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7Ci0gICAg
UHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKKyAgICBQcm9wZXJ0eU5hbWVBcnJh
eSBwcm9wZXJ0aWVzKGV4ZWMsIFByb3BlcnRpZXNUeXBlTW9kZTo6U3RyaW5ncyk7CiAgICAgb2Jq
ZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3Qs
IGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZSgpKTsKICAgICBKU0FycmF5KiBrZXlz
ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKICAgICBzaXplX3QgbnVtUHJvcGVydGll
cyA9IHByb3BlcnRpZXMuc2l6ZSgpOwpAQCAtMzk3LDggKzM5Nyw4IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUq
IGV4ZWMpCiAKIHN0YXRpYyBKU1ZhbHVlIGRlZmluZVByb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogb2JqZWN0LCBKU09iamVjdCogcHJvcGVydGllcykKIHsKLSAgICBQcm9wZXJ0
eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgIGFzT2JqZWN0KHByb3BlcnRpZXMp
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChw
cm9wZXJ0aWVzKSwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVt
UHJvcGVydGllc01vZGU6OkV4Y2x1ZGUsIFN5bWJvbFByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSk7
CisgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjLCBQcm9wZXJ0aWVzVHlw
ZU1vZGU6OkJvdGgpOworICAgIGFzT2JqZWN0KHByb3BlcnRpZXMpLT5tZXRob2RUYWJsZShleGVj
LT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChwcm9wZXJ0aWVzKSwgZXhlYywg
cHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4
Y2x1ZGUpKTsKICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9IHByb3BlcnR5TmFtZXMuc2l6ZSgp
OwogICAgIFZlY3RvcjxQcm9wZXJ0eURlc2NyaXB0b3I+IGRlc2NyaXB0b3JzOwogICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIG1hcmtCdWZmZXI7CkBAIC00NjcsOCArNDY3LDggQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclNlYWwoRXhlY1N0YXRlKiBleGVj
KQogICAgIH0KIAogICAgIC8vIDIuIEZvciBlYWNoIG5hbWVkIG93biBwcm9wZXJ0eSBuYW1lIFAg
b2YgTywKLSAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAgIG9iamVj
dC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBl
eGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGUoRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6
SW5jbHVkZSwgU3ltYm9sUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsKKyAgICBQcm9wZXJ0eU5h
bWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMsIFByb3BlcnRpZXNUeXBlTW9kZTo6Qm90aCk7CisgICAg
b2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmpl
Y3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3BlcnRpZXNN
b2RlOjpJbmNsdWRlKSk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IHByb3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3Rf
aXRlcmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikg
ewogICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9ICppdGVyOwpAQCAtNTAxLDggKzUw
MSw4IEBAIEpTT2JqZWN0KiBvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiBvYmplY3QpCiAgICAgfQogCiAgICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQgb3du
IHByb3BlcnR5IG5hbWUgUCBvZiBPLAotICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMo
ZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVy
dHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51
bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlLCBTeW1ib2xQcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkp
OworICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYywgUHJvcGVydGllc1R5cGVN
b2RlOjpCb3RoKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Q
cm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlKERv
bnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gcHJvcGVydGllcy5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5
TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBpdGVy
ICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gKml0
ZXI7CkBAIC01NjEsOCArNTYxLDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RDb25zdHJ1Y3RvcklzU2VhbGVkKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ob2JqZWN0LT5pc1NlYWxlZChleGVjLT52bSgpKSkpOwog
CiAgICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQgb3duIHByb3BlcnR5IG5hbWUgUCBvZiBPLAotICAg
IFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRob2RU
YWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3Bl
cnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlLCBT
eW1ib2xQcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpOworICAgIFByb3BlcnR5TmFtZUFycmF5IHBy
b3BlcnRpZXMoZXhlYywgUHJvcGVydGllc1R5cGVNb2RlOjpCb3RoKTsKKyAgICBvYmplY3QtPm1l
dGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywg
cHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1
ZGUpKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcHJvcGVy
dGllcy5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBp
dGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAg
IElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gKml0ZXI7CkBAIC01OTQsOCArNTk0LDggQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzRnJvemVuKEV4ZWNT
dGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ob2Jq
ZWN0LT5pc0Zyb3plbihleGVjLT52bSgpKSkpOwogCiAgICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQg
b3duIHByb3BlcnR5IG5hbWUgUCBvZiBPLAotICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRp
ZXMoZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJv
cGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250
RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlLCBTeW1ib2xQcm9wZXJ0aWVzTW9kZTo6SW5jbHVk
ZSkpOworICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYywgUHJvcGVydGllc1R5
cGVNb2RlOjpCb3RoKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRP
d25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2Rl
KERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJh
eTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcHJvcGVydGllcy5lbmQoKTsKICAgICBmb3IgKFByb3Bl
cnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBp
dGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0g
Kml0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eU5hbWVBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1l
QXJyYXkuaAppbmRleCBjMmYxM2Q4YzM3MjlhZTVhYjdiZDM5ZGI3NGUzNDU4ODNlNGM4NjcyLi4y
MTA4NzZjNWZiZDUxNmJjZGM0ZTFjMjFiNWMzYjFjNDU2MTFkOTIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgKQEAgLTQ4LDE1ICs0
OCwxNSBAQCBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxQ
cm9wZXJ0eU5hbWVBcnJheURhdGE+IHsKIC8vIEZJWE1FOiBSZW5hbWUgdG8gUHJvcGVydHlOYW1l
QXJyYXlCdWlsZGVyLgogY2xhc3MgUHJvcGVydHlOYW1lQXJyYXkgewogcHVibGljOgotICAgIFBy
b3BlcnR5TmFtZUFycmF5KFZNKiB2bSkKKyAgICBQcm9wZXJ0eU5hbWVBcnJheShWTSogdm0sIFBy
b3BlcnRpZXNUeXBlTW9kZSB0eXBlTW9kZSkKICAgICAgICAgOiBtX2RhdGEoUHJvcGVydHlOYW1l
QXJyYXlEYXRhOjpjcmVhdGUoKSkKICAgICAgICAgLCBtX3ZtKHZtKQorICAgICAgICAsIG1fdHlw
ZU1vZGUodHlwZU1vZGUpCiAgICAgewogICAgIH0KIAotICAgIFByb3BlcnR5TmFtZUFycmF5KEV4
ZWNTdGF0ZSogZXhlYykKLSAgICAgICAgOiBtX2RhdGEoUHJvcGVydHlOYW1lQXJyYXlEYXRhOjpj
cmVhdGUoKSkKLSAgICAgICAgLCBtX3ZtKCZleGVjLT52bSgpKQorICAgIFByb3BlcnR5TmFtZUFy
cmF5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydGllc1R5cGVNb2RlIHR5cGVNb2RlKQorICAgICAg
ICA6IFByb3BlcnR5TmFtZUFycmF5KCZleGVjLT52bSgpLCB0eXBlTW9kZSkKICAgICB7CiAgICAg
fQogCkBAIC04NSwxMCArODUsMTcgQEAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXkgewogICAgIGNv
bnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLT5wcm9wZXJ0eU5hbWVW
ZWN0b3IoKS5iZWdpbigpOyB9CiAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKS5lbmQoKTsgfQogCisgICAgUHJvcGVydGll
c1R5cGVNb2RlIHR5cGVNb2RlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlTW9kZTsgfQorICAgIGJv
b2wgaW5jbHVkZVN5bWJvbFByb3BlcnRpZXMoKSBjb25zdDsKKyAgICBib29sIGluY2x1ZGVTdHJp
bmdQcm9wZXJ0aWVzKCkgY29uc3Q7CisKIHByaXZhdGU6CisgICAgYm9vbCBpc1VpZE1hdGNoZWRU
b1R5cGVNb2RlKFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudGlmaWVyKTsKKwogICAgIFJlZlB0cjxQ
cm9wZXJ0eU5hbWVBcnJheURhdGE+IG1fZGF0YTsKICAgICBIYXNoU2V0PFVuaXF1ZWRTdHJpbmdJ
bXBsKj4gbV9zZXQ7CiAgICAgVk0qIG1fdm07CisgICAgUHJvcGVydGllc1R5cGVNb2RlIG1fdHlw
ZU1vZGU7CiB9OwogCiBBTFdBWVNfSU5MSU5FIHZvaWQgUHJvcGVydHlOYW1lQXJyYXk6OmFkZChj
b25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQpAQCAtOTgsNiArMTA1LDggQEAgQUxXQVlTX0lO
TElORSB2b2lkIFByb3BlcnR5TmFtZUFycmF5OjphZGQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRp
ZmllcikKIAogQUxXQVlTX0lOTElORSB2b2lkIFByb3BlcnR5TmFtZUFycmF5OjphZGRLbm93blVu
aXF1ZShVbmlxdWVkU3RyaW5nSW1wbCogaWRlbnRpZmllcikKIHsKKyAgICBpZiAoIWlzVWlkTWF0
Y2hlZFRvVHlwZU1vZGUoaWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKICAgICBtX2RhdGEt
PnByb3BlcnR5TmFtZVZlY3RvcigpLmFwcGVuZChJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIGlk
ZW50aWZpZXIpKTsKIH0KIApAQCAtMTA3LDYgKzExNiw5IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBQ
cm9wZXJ0eU5hbWVBcnJheTo6YWRkKFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudGlmaWVyKQogCiAg
ICAgQVNTRVJUKGlkZW50aWZpZXIpOwogCisgICAgaWYgKCFpc1VpZE1hdGNoZWRUb1R5cGVNb2Rl
KGlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoc2l6ZSgpIDwgc2V0VGhy
ZXNob2xkKSB7CiAgICAgICAgIGlmIChtX2RhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpLmNvbnRh
aW5zKGlkZW50aWZpZXIpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTIyLDYgKzEzNCwyMyBA
QCBBTFdBWVNfSU5MSU5FIHZvaWQgUHJvcGVydHlOYW1lQXJyYXk6OmFkZChVbmlxdWVkU3RyaW5n
SW1wbCogaWRlbnRpZmllcikKICAgICBhZGRLbm93blVuaXF1ZShpZGVudGlmaWVyKTsKIH0KIAor
QUxXQVlTX0lOTElORSBib29sIFByb3BlcnR5TmFtZUFycmF5Ojppc1VpZE1hdGNoZWRUb1R5cGVN
b2RlKFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudGlmaWVyKQoreworICAgIGlmIChpZGVudGlmaWVy
LT5pc1N5bWJvbCgpKQorICAgICAgICByZXR1cm4gaW5jbHVkZVN5bWJvbFByb3BlcnRpZXMoKTsK
KyAgICByZXR1cm4gaW5jbHVkZVN0cmluZ1Byb3BlcnRpZXMoKTsKK30KKworQUxXQVlTX0lOTElO
RSBib29sIFByb3BlcnR5TmFtZUFycmF5OjppbmNsdWRlU3ltYm9sUHJvcGVydGllcygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190eXBlPFByb3BlcnRp
ZXNUeXBlTW9kZT46OnR5cGU+KG1fdHlwZU1vZGUpICYgc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5
aW5nX3R5cGU8UHJvcGVydGllc1R5cGVNb2RlPjo6dHlwZT4oUHJvcGVydGllc1R5cGVNb2RlOjpT
eW1ib2xzKTsKK30KKworQUxXQVlTX0lOTElORSBib29sIFByb3BlcnR5TmFtZUFycmF5OjppbmNs
dWRlU3RyaW5nUHJvcGVydGllcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0
ZDo6dW5kZXJseWluZ190eXBlPFByb3BlcnRpZXNUeXBlTW9kZT46OnR5cGU+KG1fdHlwZU1vZGUp
ICYgc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGU8UHJvcGVydGllc1R5cGVNb2RlPjo6
dHlwZT4oUHJvcGVydGllc1R5cGVNb2RlOjpTdHJpbmdzKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKICNlbmRpZiAvLyBQcm9wZXJ0eU5hbWVBcnJheV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAppbmRleCBlYjc0MzBlYjU1M2FkNzYwNzQ3
ODU0YjJmNjRlZWJlYjdlNTA4NzgyLi5iNWFhM2Y3MmQxMTBmNTkzZTEzZWE5YWRjZTE5ZjZkMWQy
ZTM4OTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVj
dC5jcHAKQEAgLTE0Niw5ICsxNDYsMTEgQEAgYm9vbCBTdHJpbmdPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQKIHZvaWQg
U3RyaW5nT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9u
TW9kZSBtb2RlKQogewogICAgIFN0cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJp
bmdPYmplY3QqPihvYmplY3QpOwotICAgIGludCBzaXplID0gdGhpc09iamVjdC0+aW50ZXJuYWxW
YWx1ZSgpLT5sZW5ndGgoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAg
ICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7CisgICAg
aWYgKHByb3BlcnR5TmFtZXMuaW5jbHVkZVN0cmluZ1Byb3BlcnRpZXMoKSkgeworICAgICAgICBp
bnQgc2l6ZSA9IHRoaXNPYmplY3QtPmludGVybmFsVmFsdWUoKS0+bGVuZ3RoKCk7CisgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgcHJvcGVydHlOYW1l
cy5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7CisgICAgfQogICAgIGlmIChtb2RlLmlu
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CiAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggY2EwOTdmN2M4
MjM2Mzg5NmY2MGJhODgyZjExYmJmZDJmNjA0MDYyNC4uOThkM2ZjMjAxNmIxNDE3ODlkNzVhNTVh
MWFjZmRkMGE2ZjZhMzlhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwCkBAIC05NDcsNyArOTQ3LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OmdldFByb3BlcnR5
TmFtZXNGcm9tU3RydWN0dXJlKFZNJiB2bSwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnQKICAg
ICBmb3IgKFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0eVRhYmxlKCktPmJl
Z2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgQVNTRVJUKGhhc05vbkVudW1l
cmFibGVQcm9wZXJ0aWVzKCkgfHwgIShpdGVyLT5hdHRyaWJ1dGVzICYgRG9udEVudW0pKTsKICAg
ICAgICAgaWYgKCEoaXRlci0+YXR0cmlidXRlcyAmIERvbnRFbnVtKSB8fCBtb2RlLmluY2x1ZGVE
b250RW51bVByb3BlcnRpZXMoKSkgewotICAgICAgICAgICAgaWYgKGl0ZXItPmtleS0+aXNTeW1i
b2woKSAmJiAhbW9kZS5pbmNsdWRlU3ltYm9sUHJvcGVydGllcygpKQorICAgICAgICAgICAgaWYg
KGl0ZXItPmtleS0+aXNTeW1ib2woKSAmJiAhcHJvcGVydHlOYW1lcy5pbmNsdWRlU3ltYm9sUHJv
cGVydGllcygpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKGtu
b3duVW5pcXVlKQogICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkS25vd25VbmlxdWUo
aXRlci0+a2V5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rp
b25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKaW5k
ZXggNWMyNDM2YTk0MjhlNjhhYzIzNDUwY2YzNGMzNDQ0ODg3Y2ExYWM4Zi4uNTI0MjQzMTBmMDAy
MGY1MTFmYjg4MWQ1OWViZGEwYTNkODc5NzFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvRGljdGlvbmFyeS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXRP
d25Qcm9wZXJ0aWVzQXNTdHJpbmdIYXNoTWFwKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBtYXAp
IGMKICAgICBKU09iamVjdCogb2JqZWN0ID0gIG1fZGljdGlvbmFyeS5pbml0aWFsaXplck9iamVj
dCgpOwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZGljdGlvbmFyeS5leGVjU3RhdGUoKTsKIAot
ICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYyk7CisgICAgUHJvcGVydHlO
YW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjLCBQcm9wZXJ0aWVzVHlwZU1vZGU6OlN0cmluZ3Mp
OwogICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKCkpOwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcHJvcGVydHlOYW1lcy5iZWdpbigpOyBpdCAhPSBwcm9wZXJ0
eU5hbWVzLmVuZCgpOyArK2l0KSB7CiAgICAgICAgIFN0cmluZyBzdHJpbmdLZXkgPSBpdC0+c3Ry
aW5nKCk7CkBAIC04Nyw3ICs4Nyw3IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0T3duUHJvcGVydHlO
YW1lcyhWZWN0b3I8U3RyaW5nPiYgbmFtZXMpIGNvbnN0CiAgICAgSlNPYmplY3QqIG9iamVjdCA9
ICBtX2RpY3Rpb25hcnkuaW5pdGlhbGl6ZXJPYmplY3QoKTsKICAgICBFeGVjU3RhdGUqIGV4ZWMg
PSBtX2RpY3Rpb25hcnkuZXhlY1N0YXRlKCk7CiAKLSAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9w
ZXJ0eU5hbWVzKGV4ZWMpOworICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhl
YywgUHJvcGVydGllc1R5cGVNb2RlOjpTdHJpbmdzKTsKICAgICBKU09iamVjdDo6Z2V0T3duUHJv
cGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSgp
KTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdCA9IHByb3Bl
cnR5TmFtZXMuYmVnaW4oKTsgaXQgIT0gcHJvcGVydHlOYW1lcy5lbmQoKTsgKytpdCkgewogICAg
ICAgICBTdHJpbmcgc3RyaW5nS2V5ID0gaXQtPnN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggNjc4NjEx
OTA2OTgwNWU3NWI3Yzk0YWRkY2Q3MTUyN2ZhZmQ3ZWJlMy4uNGRjOWRiNjE2MGJlZDk5N2MzYWFh
OTRmMmM5ZWJjNDU4YjAzNTg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0xMjU0LDcgKzEyNTQsNyBAQCBTZXJp
YWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVlIGlu
KQogICAgICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLnJlbW92ZUxhc3QoKTsKICAgICAgICAg
ICAgICAgICAgICAgbGVuZ3RoU3RhY2sucmVtb3ZlTGFzdCgpOwogCi0gICAgICAgICAgICAgICAg
ICAgIHByb3BlcnR5U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYykpOworICAg
ICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0YWNrLmFwcGVuZChQcm9wZXJ0eU5hbWVBcnJheSht
X2V4ZWMsIFByb3BlcnRpZXNUeXBlTW9kZTo6U3RyaW5nKSk7CiAgICAgICAgICAgICAgICAgICAg
IGFycmF5LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoYXJyYXks
IG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEVudW1lcmF0aW9uTW9kZSgpKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5U3RhY2subGFzdCgpLnNpemUoKSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgd3JpdGUoTm9uSW5kZXhQcm9wZXJ0aWVzVGFnKTsKQEAgLTEzMDQs
NyArMTMwNCw3IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2Vy
aWFsaXplKEpTVmFsdWUgaW4pCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBEYXRhQ2xvbmVF
cnJvcjsKICAgICAgICAgICAgICAgICBpbnB1dE9iamVjdFN0YWNrLmFwcGVuZChpbk9iamVjdCk7
CiAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5hcHBlbmQoMCk7Ci0gICAgICAgICAgICAgICAg
cHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjKSk7CisgICAgICAg
ICAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjLCBQ
cm9wZXJ0aWVzVHlwZU1vZGU6OlN0cmluZykpOwogICAgICAgICAgICAgICAgIGluT2JqZWN0LT5t
ZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGluT2JqZWN0LCBtX2V4ZWMsIHByb3Bl
cnR5U3RhY2subGFzdCgpLCBFbnVtZXJhdGlvbk1vZGUoKSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBvYmplY3RTdGFydFZpc2l0TWVtYmVyOgpAQCAtMTM3Miw3ICsxMzcyLDcgQEAgU2Vy
aWFsaXphdGlvblJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoSlNWYWx1ZSBp
bikKICAgICAgICAgICAgICAgICAgICAgbWFwSXRlcmF0b3JTdGFjay5yZW1vdmVMYXN0KCk7CiAg
ICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBpbnB1dE9iamVjdFN0YWNrLmxh
c3QoKTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNNYXAqPihv
YmplY3QpKTsKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVy
dHlOYW1lQXJyYXkobV9leGVjKSk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5U3RhY2su
YXBwZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYywgUHJvcGVydGllc1R5cGVNb2RlOjpTdHJp
bmcpKTsKICAgICAgICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Q
cm9wZXJ0eU5hbWVzKG9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwgRW51bWVy
YXRpb25Nb2RlKCkpOwogICAgICAgICAgICAgICAgICAgICB3cml0ZShOb25NYXBQcm9wZXJ0aWVz
VGFnKTsKICAgICAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5hcHBlbmQoMCk7CkBAIC0xNDE2
LDcgKzE0MTYsNyBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNl
cmlhbGl6ZShKU1ZhbHVlIGluKQogICAgICAgICAgICAgICAgICAgICBzZXRJdGVyYXRvclN0YWNr
LnJlbW92ZUxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGlu
cHV0T2JqZWN0U3RhY2subGFzdCgpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoanNEeW5h
bWljQ2FzdDxKU1NldCo+KG9iamVjdCkpOwotICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0
YWNrLmFwcGVuZChQcm9wZXJ0eU5hbWVBcnJheShtX2V4ZWMpKTsKKyAgICAgICAgICAgICAgICAg
ICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjLCBQcm9wZXJ0
aWVzVHlwZU1vZGU6OlN0cmluZykpOwogICAgICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhv
ZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3Rh
Y2subGFzdCgpLCBFbnVtZXJhdGlvbk1vZGUoKSk7CiAgICAgICAgICAgICAgICAgICAgIHdyaXRl
KE5vblNldFByb3BlcnRpZXNUYWcpOwogICAgICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmFw
cGVuZCgwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCmluZGV4IDA5NGIxYWVk
ODYzZjE2N2E4MDc2NjcwYmI0NWQ2OWU4ODA0ZjZiY2EuLjBlODI5NDEwMjA0NWM3MzVlNzE2NzYx
Y2IxYmRmY2M1NGViNTYwYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9q
c29iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcApA
QCAtNDQ1LDcgKzQ0NSw3IEBAIGJvb2wgX05QTl9FbnVtZXJhdGUoTlBQLCBOUE9iamVjdCogbywg
TlBJZGVudGlmaWVyKiogaWRlbnRpZmllciwgdWludDMyX3QqIGNvdW50CiAgICAgICAgIAogICAg
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSByb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFs
RXhlYygpOwogICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICAgICAgUHJvcGVy
dHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKKyAgICAgICAgUHJvcGVydHlOYW1lQXJy
YXkgcHJvcGVydHlOYW1lcyhleGVjLCBQcm9wZXJ0aWVzVHlwZU1vZGU6OlN0cmluZ3MpOwogCiAg
ICAgICAgIG9iai0+aW1wLT5tZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKG9iai0+aW1w
LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUoKSk7CiAgICAgICAgIHVuc2ln
bmVkIHNpemUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHJvcGVydHlOYW1lcy5zaXplKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCmluZGV4IGFiYWU3ODExMDFhYjNiYWE1MzZiMjJk
MWIzYzNmMWI5ZjkwM2FjNDkuLmRjYjY4ZGU2MTQ0NGMwYmMwOTIyN2QyNGE5MDhiYjNlZTYwYmQz
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KQEAgLTEyMzAsNyArMTIzMCw3IEBA
IGJvb2wgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjplbnVtZXJhdGUodWludDMyX3Qgb2Jq
ZWN0SUQsIGRhdGFfdCYgcmVzdWx0RGF0CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZnJhbWUtPnNj
cmlwdCgpLmdsb2JhbE9iamVjdChwbHVnaW5Xb3JsZCgpKS0+Z2xvYmFsRXhlYygpOwogICAgIEpT
TG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogIAotICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5
TmFtZXMoZXhlYyk7CisgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjLCBQ
cm9wZXJ0aWVzVHlwZU1vZGU6OlN0cmluZ3MpOwogICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+
Z2V0UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9u
TW9kZSgpKTsKIAogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheSo+IGFycmF5ID0gYWRvcHRO
UyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKaW5kZXgg
MjBkYzRkOGZiNGI5OTQ5Mzc4YzBlZDRjMzRiMGM1MjlkMzExNzkxNi4uN2IxM2VkZmFiMDcwM2Rk
NzQ0Nzc4ODkyMDQwZWY4ODBkOWUwNzM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcApAQCAtMjM5LDcg
KzIzOSw3IEBAIGJvb2wgTlBKU09iamVjdDo6ZW51bWVyYXRlKE5QSWRlbnRpZmllcioqIGlkZW50
aWZpZXJzLCB1aW50MzJfdCogaWRlbnRpZmllckNvdW50CiAgICAgCiAgICAgSlNMb2NrSG9sZGVy
IGxvY2soZXhlYyk7CiAKLSAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMp
OworICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYywgUHJvcGVydGllc1R5
cGVNb2RlOjpTdHJpbmdzKTsKICAgICBtX2pzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRQcm9w
ZXJ0eU5hbWVzKG1fanNPYmplY3QuZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0
aW9uTW9kZSgpKTsKIAogICAgIE5QSWRlbnRpZmllciogbmFtZUlkZW50aWZpZXJzID0gbnBuTWVt
TmV3QXJyYXk8TlBJZGVudGlmaWVyPihwcm9wZXJ0eU5hbWVzLnNpemUoKSk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMDc2
ZmNiMjVhNDBjMWJiZTU5Y2MwOGRkOWY0YmVhODU1NDk5NzdkYi4uYTVjMzE3YmVjYTYwZTg3ZjVh
ZGU2NWFiZjliMTc2Yzc4YjU1NjRjYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE1LTA3LTIy
ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIE9iamVj
dC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgb24gbGFyZ2UgbGlzdCB0YWtlcyB2ZXJ5IGxvbmcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjEzNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganMvcmVncmVz
cy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLW9uLWxhcmdlLWFycmF5LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0
eS1zeW1ib2xzLW9uLWxhcmdlLWFycmF5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jl
c3Mvc2NyaXB0LXRlc3RzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMtb24tbGFyZ2Ut
YXJyYXkuanM6IEFkZGVkLgorICAgICAgICAodHJpYWwpOgorCiAyMDE1LTA3LTIyICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIENvb3JkaW5hdGVzLWJh
c2VkIHNuYXAgb2Zmc2V0cyBkb24ndCB1cGRhdGUgY29ycmVjdGx5IHdoZW4gY29udGFpbmVyIGlz
IHNjcm9sbGVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL29iamVjdC1nZXQt
b3duLXByb3BlcnR5LXN5bWJvbHMtb24tbGFyZ2UtYXJyYXktZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLW9uLWxhcmdl
LWFycmF5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hM2JlYjZmZGRjNzkzZTRmN2M2NWRkODA0
MDU0ZWQ0ZWYyZjBkODJkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLW9uLWxhcmdlLWFycmF5LWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHkt
c3ltYm9scy1vbi1sYXJnZS1hcnJheQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9v
YmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLW9uLWxhcmdlLWFycmF5Lmh0bWwgYi9MYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMtb24tbGFy
Z2UtYXJyYXkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTE0NGU0N2I2NGVlMGZiMzk3NTZlOTFiMmY5OTE2
NDI3MjE3ZDI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9vYmpl
Y3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLW9uLWxhcmdlLWFycmF5Lmh0bWwKQEAgLTAsMCAr
MSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMv
b2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy1vbi1sYXJnZS1hcnJheS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3NjcmlwdC10ZXN0cy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLW9uLWxhcmdlLWFy
cmF5LmpzIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvb2JqZWN0LWdldC1v
d24tcHJvcGVydHktc3ltYm9scy1vbi1sYXJnZS1hcnJheS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjY2YjEx
ZDk1YmUyODViMTIxMjJlOTVhNmNiZjRkOGI2MTQ0N2ZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHkt
c3ltYm9scy1vbi1sYXJnZS1hcnJheS5qcwpAQCAtMCwwICsxLDkgQEAKK2Z1bmN0aW9uIHRyaWFs
KCkKK3sKKyAgICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDEwMDAwMDAwKTsKKyAgICB2
YXIgaW50OFZpZXcgPSBuZXcgSW50OEFycmF5KGJ1ZmZlcik7CisgICAgcmV0dXJuIE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaW50OFZpZXcpOworfQorCitmb3IgKHZhciBpID0gMDsgaSA8
IDEwMDAwMDsgKytpKQorICAgIHRyaWFsKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257338</attachid>
            <date>2015-07-22 21:58:57 -0700</date>
            <delta_ts>2015-07-22 22:05:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146137-20150723045741.patch</filename>
            <type>text/plain</type>
            <size>46088</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3MjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
OWRiNWRiNjc5YjMyNGE5MTBjZTJhYzI1YjA3NjgyM2I5ZDdiMDIzLi43OTgxNjUyZGEwNDZhM2E3
ZGZmMTU3MTU4Y2Y2M2ZhYWRhZTIzN2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw4OSBAQAogMjAxNS0wNy0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzIG9uIGxhcmdlIGxp
c3QgdGFrZXMgdmVyeSBsb25nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDYxMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBCZWZvcmUgdGhpcyBwYXRjaCwgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9s
cyBvbmNlIGNvbGxlY3RzIHRoZSBhbGwgbmFtZXMgaW5jbHVkaW5nIHN0cmluZ3MuCisgICAgICAg
IEFuZCBhZnRlciBpdCdzIGRvbmUsIGZpbHRlciB0aGUgbmFtZXMgdG8gb25seSByZXRyaWV2ZSB0
aGUgc3ltYm9scy4KKyAgICAgICAgQnV0IGl0J3Mgc28gbXVjaCB0aW1lIGNvbnN1bWluZyBpZiB0
aGUgZ2l2ZW4gb2JqZWN0IGlzIGEgbGFyZ2Ugbm9uLWhvbGVkIGFycmF5IHNpbmNlIGl0IGhhcwor
ICAgICAgICBtYW55IGluZGV4ZWQgcHJvcGVydGllcyBhbmQgYWxsIHRoZSBwcm9wZXJ0aWVzIGFy
ZSBvbmNlIGNvbnZlcnRlZCB0byB1bmlxdWVkIHN0cmluZ3MgYW5kIGNvbGxlY3RlZC4KKworICAg
ICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgUHJvcGVydGllc1R5cGVNb2RlLgorICAgICAgICBX
ZSBsZXZlcmFnZSB0aGlzIG1vZGUgaW4gMiBwbGFjZXMuCisKKyAgICAgICAgMS4gUHJvcGVydHlO
YW1lQXJyYXkgc2lkZQorICAgICAgICBJdCBpcyBzZXQgaW4gUHJvcGVydHlOYW1lQXJyYXkgYW5k
IGl0IGZpbHRlcnMgdGhlIGluY29taW5nIGFkZGVkIGlkZW50aWZpZXJzIGJhc2VkIG9uIHRoZSBt
b2RlLgorICAgICAgICBJdCBtYWtlcyB0aGF0IFByb3BlcnR5TmFtZUFycmF5IGRvZXNuJ3QgYmVj
b21lIHNvIGxhcmdlLgorICAgICAgICBBbmQgaXQgZW5zdXJlcyB0aGF0IG5vbi1leHBlY3RlZCB0
eXBlZCBrZXlzIGJ5IHRoZSBmaWx0ZXIgKFN5bWJvbHMgb3IgU3RyaW5ncykgYXJlIG5ldmVyIGFk
ZGVkCisgICAgICAgIHRvIHRoZSBwcm9wZXJ0eSBuYW1lIGFycmF5IGNvbGxlY3Rpb25zLgorICAg
ICAgICBIb3dldmVyIGl0IGRvZXMgbm90IHNvbHZlIHRoZSB3aG9sZSBwcm9ibGVtIGJlY2F1c2Ug
dGhlIGh1Z2UgYXJyYXkgc3RpbGwgaW5jdXJzIHRoZSBtYW55CisgICAgICAgICJpbmRleGVkIHBy
b3BlcnR5IHRvIHVuaXF1ZWQgc3RyaW5nIiBjb252ZXJzaW9uIGFuZCB0aGUgbGFyZ2UgaXRlcmF0
aW9uIGJlZm9yZSBhZGRpbmcgdGhlIGtleXMKKyAgICAgICAgdG8gdGhlIHByb3BlcnR5IG5hbWUg
YXJyYXkuCisKKyAgICAgICAgMi4gZ2V0T3duUHJvcGVydHlOYW1lcyBzaWRlCisgICAgICAgIFNv
IHdlIGNhbiB1c2UgdGhlIFByb3BlcnRpZXNUeXBlTW9kZSBpbiB0aGUgY2FsbGVyIHNpZGUgKGdl
dE93blByb3BlcnR5TmFtZXMpIGFzIGEgKipoaW50KiouCisgICAgICAgIFdoZW4gdGhlIGxhcmdl
IGl0ZXJhdGlvbiBtYXkgb2NjdXIsIHRoZSBjYWxsZXIgc2lkZSBjYW4gdXNlIHRoZSBQcm9wZXJ0
aWVzVHlwZU1vZGUgYXMgYSBoaW50IHRvCisgICAgICAgIGF2b2lkIHRoZSBpdGVyYXRpb24uCisg
ICAgICAgIEJ1dCB3ZSBkb24ndCBoZWF2aWx5IHJlbHkgb24gdGhpcyBzeXN0ZW07IGl0IG1lYW5z
IHRoYXQgZ2V0T3duUHJvcGVydHlOYW1lcyBtYXkgYWRkIHdyb25nIHR5cGVkCisgICAgICAgIGtl
eXMgKGFkZGluZyB0aGUgc3RyaW5nIGtleXMgaW4gdGhlIGNvbnRleHQgcmVxdWlyaW5nIHRoZSBz
eW1ib2wga2V5cykgYmVjYXVzZSByZWx5aW5nIG9uIHRoZQorICAgICAgICBjYXJlZnVsIGNvZGlu
ZyBpbiB0aGUgZ2V0T3duUHJvcGVydHlOYW1lcyBzaWRlIGlzIG11Y2ggZXJyb3IgcHJvbmUuIFVz
ZXJzIG1heSBhZGQgdGhlIHN0cmluZyBrZXkKKyAgICAgICAgaW4gdGhlIGNvbnRleHQgb25seSBy
ZXF1aXJpbmcgdGhlIHN5bWJvbCBrZXlzLgorICAgICAgICBTbyB0aGUgZ3VhcmFudGVlIHN1Y2gg
YXMgIm9ubHkgc3ltYm9scyBhcmUgaW5jbHVkZWQgaWYgdGhlIFByb3BlcnRpZXNUeXBlTW9kZSBp
cyBTeW1ib2xzIiBpcworICAgICAgICBlbnN1cmVkIGluIHRoZSBQcm9wZXJ0eU5hbWVBcnJheSBz
aWRlLgorCisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTT2JqZWN0
Q29weVByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcDoK
KyAgICAgICAgKERlcHJlY2F0ZWQ6OmpzVG9JbnNwZWN0b3JWYWx1ZSk6CisgICAgICAgICogYnl0
ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxs
b2NhdGlvblByb2ZpbGU6OnBvc3NpYmxlRGVmYXVsdFByb3BlcnR5Q291bnQpOgorICAgICAgICAq
IHJ1bnRpbWUvRW51bWVyYXRpb25Nb2RlLmg6CisgICAgICAgIChKU0M6OkVudW1lcmF0aW9uTW9k
ZTo6RW51bWVyYXRpb25Nb2RlKToKKyAgICAgICAgKEpTQzo6RW51bWVyYXRpb25Nb2RlOjppbmNs
dWRlU3ltYm9sUHJvcGVydGllcyk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9HZW5lcmlj
QXJndW1lbnRzSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpHZW5lcmljQXJndW1lbnRzPFR5cGU+
OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9KU0xl
eGljYWxFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVudmlyb25tZW50
OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPTk9i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjpTdHJpbmdpZmllcik6CisgICAg
ICAgIChKU0M6OlN0cmluZ2lmaWVyOjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eSk6CisgICAg
ICAgIChKU0M6OldhbGtlcjo6d2Fsayk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAg
KiBydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpT
UHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJv
cGVydHlOYW1lRW51bWVyYXRvci5oOgorICAgICAgICAoSlNDOjpwcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpKU1N5bWJvbFRhYmxlT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMp
OgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlND
OjpvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpv
YmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9scyk6CisgICAgICAgIChKU0M6Om9i
amVjdENvbnN0cnVjdG9yS2V5cyk6CisgICAgICAgIChKU0M6OmRlZmluZVByb3BlcnRpZXMpOgor
ICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvclNlYWwpOgorICAgICAgICAoSlNDOjpvYmpl
Y3RDb25zdHJ1Y3RvckZyZWV6ZSk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9ySXNT
ZWFsZWQpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcklzRnJvemVuKToKKyAgICAg
ICAgKiBydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5Lmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5
TmFtZUFycmF5OjpQcm9wZXJ0eU5hbWVBcnJheSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFt
ZUFycmF5Ojp0eXBlTW9kZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZUFycmF5OjphZGRL
bm93blVuaXF1ZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZUFycmF5OjphZGQpOgorICAg
ICAgICAoSlNDOjpQcm9wZXJ0eU5hbWVBcnJheTo6aXNVaWRNYXRjaGVkVG9UeXBlTW9kZSk6Cisg
ICAgICAgIChKU0M6OlByb3BlcnR5TmFtZUFycmF5OjppbmNsdWRlU3ltYm9sUHJvcGVydGllcyk6
CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZUFycmF5OjppbmNsdWRlU3RyaW5nUHJvcGVydGll
cyk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpT
dHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvU3Ry
dWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzRnJv
bVN0cnVjdHVyZSk6CisKKzIwMTUtMDctMjIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisKICAgICAgICAgSW50cm9kdWNpbmcgY29uc3RydWN0IGFiaWxpdHkgaW50byBK
UyBleGVjdXRhYmxlcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQ3MTgzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0YjM3ZmVjYTIxMjQ3ODE2ODk4YzAzYmQ2OGI1
NzhjNjgwMDI2YjZiLi5hOGI0ZWZhOWU5MzA1ODRkZTBkMDVhNzI4NzUwZDBmOGY0MThkMjg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTUtMDctMjIgIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5U3lt
Ym9scyBvbiBsYXJnZSBsaXN0IHRha2VzIHZlcnkgbG9uZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2MTM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6OmdldE93blByb3BlcnRpZXNBc1N0cmluZ0hh
c2hNYXApOgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6Z2V0T3duUHJvcGVydHlOYW1l
cyk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKToKKyAgICAgICAgKiBi
cmlkZ2UvTlBfanNvYmplY3QuY3BwOgorICAgICAgICAoX05QTl9FbnVtZXJhdGUpOgorCiAyMDE1
LTA3LTIyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAg
IENvb3JkaW5hdGVzLWJhc2VkIHNuYXAgb2Zmc2V0cyBkb24ndCB1cGRhdGUgY29ycmVjdGx5IHdo
ZW4gY29udGFpbmVyIGlzIHNjcm9sbGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggOWVjMzE3NTkzYmQw
NDZlOTNmMDk2MmU4YmVmZDQ1OGZmZDYyYTEzNC4uYTllZTY0ZWI3NTg2ZjhkOGE1MjZiODM0MWM2
MDA1MjM2YWUxNmE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTA3
LTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIE9i
amVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgb24gbGFyZ2UgbGlzdCB0YWtlcyB2ZXJ5IGxvbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjEzNwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lu
cy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0
OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmVudW1lcmF0ZSk6CisKIDIwMTUtMDctMjEg
IEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBbTWFjXSAiT3BlbiBJbWFnZSBJbiBOZXcgV2luZG93IiBjb250ZXh0IG1lbnUgaXRl
bSBkb2VzIG5vdGhpbmcgb24gYW4gaW1hZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmYTJlZDJlM2NjNzdkY2Zl
YjdjMWUyYWY0OGVmYzI0MzljZDFjOGQzLi5lZGYyYzU1NGVjOWRmYWNhZjA3ZjMwZWIyYmRjZDVj
ZmQ0OTJjNTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDctMjIgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgT2JqZWN0LmdldE93
blByb3BlcnR5U3ltYm9scyBvbiBsYXJnZSBsaXN0IHRha2VzIHZlcnkgbG9uZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2MTM3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QSlNPYmplY3Q6
OmVudW1lcmF0ZSk6CisKIDIwMTUtMDctMjIgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxODcxOTYuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4IGZhZjM4ZmY4YzIz
ZTlkZjA4YTAzMDBhNTk0MWUxN2EzNTQ2ZDdlYjQuLjgzYmEzODE1NTAyOTY5MzE4OTc1ZDdhYTll
YWIxNmU0MzQ1NWRiYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNP
YmplY3RSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYu
Y3BwCkBAIC02MjIsNyArNjIyLDcgQEAgSlNQcm9wZXJ0eU5hbWVBcnJheVJlZiBKU09iamVjdENv
cHlQcm9wZXJ0eU5hbWVzKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG8KIAogICAgIEpT
T2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKICAgICBKU1Byb3BlcnR5TmFtZUFycmF5
UmVmIHByb3BlcnR5TmFtZXMgPSBuZXcgT3BhcXVlSlNQcm9wZXJ0eU5hbWVBcnJheSh2bSk7Ci0g
ICAgUHJvcGVydHlOYW1lQXJyYXkgYXJyYXkodm0pOworICAgIFByb3BlcnR5TmFtZUFycmF5IGFy
cmF5KHZtLCBQcm9wZXJ0aWVzVHlwZU1vZGU6OlN0cmluZ3MpOwogICAgIGpzT2JqZWN0LT5tZXRo
b2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKGpzT2JqZWN0LCBleGVjLCBhcnJheSwgRW51bWVy
YXRpb25Nb2RlKCkpOwogCiAgICAgc2l6ZV90IHNpemUgPSBhcnJheS5zaXplKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAppbmRleCAxNTNiMDMz
YTExNzgwZTAxZDBmY2IzNGI1ZjU5ZGFmN2QxY2Q3Y2Q4Li5hYjRjY2MyZmI4NTIyZDgwOWIzYmVk
MmZjNGMwY2NhMjMwOGRhM2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmlu
ZGluZ3MvU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5n
cy9TY3JpcHRWYWx1ZS5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCBib29sIFNjcmlwdFZhbHVlOjpp
c0Z1bmN0aW9uKCkgY29uc3QKICAgICAgICAgfQogICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0
PiBpbnNwZWN0b3JPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICBK
U09iamVjdCogb2JqZWN0ID0gdmFsdWUuZ2V0T2JqZWN0KCk7Ci0gICAgICAgIFByb3BlcnR5TmFt
ZUFycmF5IHByb3BlcnR5TmFtZXMoc2NyaXB0U3RhdGUpOworICAgICAgICBQcm9wZXJ0eU5hbWVB
cnJheSBwcm9wZXJ0eU5hbWVzKHNjcmlwdFN0YXRlLCBQcm9wZXJ0aWVzVHlwZU1vZGU6OlN0cmlu
Z3MpOwogICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMo
b2JqZWN0LCBzY3JpcHRTdGF0ZSwgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKCkpOwog
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3BlcnR5TmFtZXMuc2l6ZSgpOyBpKysp
IHsKICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUgPSBwcm9wZXJ0eU5hbWVzW2ld
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9j
YXRpb25Qcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0QWxs
b2NhdGlvblByb2ZpbGUuaAppbmRleCBjYjQxNDhlZTRmNTMyODYzMWZlYzRjMTQ4ZmRmNGMzMzU0
ZmM3M2RjLi5jMTY1YjIxMWJkYWFlMjkwYWY5NGYxNjE1YmI3Njk5ZGNkOGIxMWI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlv
blByb2ZpbGUuaApAQCAtMTI3LDcgKzEyNyw3IEBAIGNsYXNzIE9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlIHsKICAgICAgICAgICAgIHJldHVybiAwOwogCiAgICAgICAgIHNpemVfdCBjb3VudCA9IDA7
Ci0gICAgICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZUFycmF5KCZ2bSk7CisgICAg
ICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZUFycmF5KCZ2bSwgUHJvcGVydGllc1R5
cGVNb2RlOjpCb3RoKTsKICAgICAgICAgcHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+Z2V0UHJvcGVy
dHlOYW1lc0Zyb21TdHJ1Y3R1cmUodm0sIHByb3BlcnR5TmFtZUFycmF5LCBFbnVtZXJhdGlvbk1v
ZGUoKSk7CiAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5RGF0YTo6UHJvcGVydHlOYW1lVmVjdG9y
JiBwcm9wZXJ0eU5hbWVWZWN0b3IgPSBwcm9wZXJ0eU5hbWVBcnJheS5kYXRhKCktPnByb3BlcnR5
TmFtZVZlY3RvcigpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3BlcnR5TmFt
ZVZlY3Rvci5zaXplKCk7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRW51bWVyYXRpb25Nb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FbnVtZXJhdGlvbk1vZGUuaAppbmRleCAzZTk1ZWQzMmY2YjRkMTIwMTQ2OTAzNDQwOGY2M2Fi
NTBiZmU2NTMwLi4yZWUxNTM2ZGZiYWRhYjAwYTBhOTUzMTNhNWQ5ODM5ZWViNjU0NGM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FbnVtZXJhdGlvbk1vZGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FbnVtZXJhdGlvbk1vZGUuaApAQCAt
MjgsNiArMjgsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2VudW0gY2xhc3MgUHJvcGVydGll
c1R5cGVNb2RlIHsKKyAgICBTeW1ib2xzID0gMSwKKyAgICBTdHJpbmdzID0gMiwKKyAgICBCb3Ro
ID0gMywKK307CisKIGVudW0gY2xhc3MgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZSB7CiAgICAgSW5j
bHVkZSwKICAgICBFeGNsdWRlCkBAIC00NSwxNiArNTEsMTQgQEAgZW51bSBjbGFzcyBKU09iamVj
dFByb3BlcnRpZXNNb2RlIHsKIAogY2xhc3MgRW51bWVyYXRpb25Nb2RlIHsKIHB1YmxpYzoKLSAg
ICBFbnVtZXJhdGlvbk1vZGUoRG9udEVudW1Qcm9wZXJ0aWVzTW9kZSBkb250RW51bVByb3BlcnRp
ZXNNb2RlID0gRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6RXhjbHVkZSwgU3ltYm9sUHJvcGVydGll
c01vZGUgc3ltYm9sUHJvcGVydGllc01vZGUgPSBTeW1ib2xQcm9wZXJ0aWVzTW9kZTo6RXhjbHVk
ZSwgSlNPYmplY3RQcm9wZXJ0aWVzTW9kZSBqc09iamVjdFByb3BlcnRpZXNNb2RlID0gSlNPYmpl
Y3RQcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkKKyAgICBFbnVtZXJhdGlvbk1vZGUoRG9udEVudW1Q
cm9wZXJ0aWVzTW9kZSBkb250RW51bVByb3BlcnRpZXNNb2RlID0gRG9udEVudW1Qcm9wZXJ0aWVz
TW9kZTo6RXhjbHVkZSwgSlNPYmplY3RQcm9wZXJ0aWVzTW9kZSBqc09iamVjdFByb3BlcnRpZXNN
b2RlID0gSlNPYmplY3RQcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkKICAgICAgICAgOiBtX2RvbnRF
bnVtUHJvcGVydGllc01vZGUoZG9udEVudW1Qcm9wZXJ0aWVzTW9kZSkKLSAgICAgICAgLCBtX3N5
bWJvbFByb3BlcnRpZXNNb2RlKHN5bWJvbFByb3BlcnRpZXNNb2RlKQogICAgICAgICAsIG1fanNP
YmplY3RQcm9wZXJ0aWVzTW9kZShqc09iamVjdFByb3BlcnRpZXNNb2RlKQogICAgIHsKICAgICB9
CiAKICAgICBFbnVtZXJhdGlvbk1vZGUoY29uc3QgRW51bWVyYXRpb25Nb2RlJiBtb2RlLCBKU09i
amVjdFByb3BlcnRpZXNNb2RlIGpzT2JqZWN0UHJvcGVydGllc01vZGUpCiAgICAgICAgIDogbV9k
b250RW51bVByb3BlcnRpZXNNb2RlKG1vZGUubV9kb250RW51bVByb3BlcnRpZXNNb2RlKQotICAg
ICAgICAsIG1fc3ltYm9sUHJvcGVydGllc01vZGUobW9kZS5tX3N5bWJvbFByb3BlcnRpZXNNb2Rl
KQogICAgICAgICAsIG1fanNPYmplY3RQcm9wZXJ0aWVzTW9kZShqc09iamVjdFByb3BlcnRpZXNN
b2RlKQogICAgIHsKICAgICB9CkBAIC02NiwxMSArNzAsNiBAQCBjbGFzcyBFbnVtZXJhdGlvbk1v
ZGUgewogICAgICAgICByZXR1cm4gbV9kb250RW51bVByb3BlcnRpZXNNb2RlID09IERvbnRFbnVt
UHJvcGVydGllc01vZGU6OkluY2x1ZGU7CiAgICAgfQogCi0gICAgYm9vbCBpbmNsdWRlU3ltYm9s
UHJvcGVydGllcygpCi0gICAgewotICAgICAgICByZXR1cm4gbV9zeW1ib2xQcm9wZXJ0aWVzTW9k
ZSA9PSBTeW1ib2xQcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZTsKLSAgICB9Ci0KICAgICBib29sIGlu
Y2x1ZGVKU09iamVjdFByb3BlcnRpZXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fanNPYmpl
Y3RQcm9wZXJ0aWVzTW9kZSA9PSBKU09iamVjdFByb3BlcnRpZXNNb2RlOjpJbmNsdWRlOwpAQCAt
NzgsNyArNzcsNiBAQCBjbGFzcyBFbnVtZXJhdGlvbk1vZGUgewogCiBwcml2YXRlOgogICAgIERv
bnRFbnVtUHJvcGVydGllc01vZGUgbV9kb250RW51bVByb3BlcnRpZXNNb2RlOwotICAgIFN5bWJv
bFByb3BlcnRpZXNNb2RlIG1fc3ltYm9sUHJvcGVydGllc01vZGU7CiAgICAgSlNPYmplY3RQcm9w
ZXJ0aWVzTW9kZSBtX2pzT2JqZWN0UHJvcGVydGllc01vZGU7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaApp
bmRleCA1Zjk1MmM2ZjJiZmVkYjc5ZjRiYjQ1OTM1MTYxNGViMThmNmZhODA3Li45YjE4MDAxODU3
ODEwNWM1NTE2OTcyMGFlNTg3N2MzZTNlMjQ2ZGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKQEAgLTc4LDE2
ICs3OCwxOSBAQAogdm9pZCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpnZXRPd25Qcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkm
IGFycmF5LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKICAgICBUeXBlKiB0aGlzT2JqZWN0ID0g
anNDYXN0PFR5cGUqPihvYmplY3QpOwotICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0aGlzT2JqZWN0LT5pbnRlcm5hbExlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgaWYgKCF0aGlz
T2JqZWN0LT5jYW5BY2Nlc3NJbmRleFF1aWNrbHkoaSkpCi0gICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgYXJyYXkuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkpOworCisgICAgaWYg
KGFycmF5LmluY2x1ZGVTdHJpbmdQcm9wZXJ0aWVzKCkpIHsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHRoaXNPYmplY3QtPmludGVybmFsTGVuZ3RoKCk7ICsraSkgeworICAgICAg
ICAgICAgaWYgKCF0aGlzT2JqZWN0LT5jYW5BY2Nlc3NJbmRleFF1aWNrbHkoaSkpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBhcnJheS5hZGQoSWRlbnRpZmllcjo6ZnJv
bShleGVjLCBpKSk7CisgICAgICAgIH0KICAgICB9CisKICAgICBpZiAobW9kZS5pbmNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzKCkgJiYgIXRoaXNPYmplY3QtPm92ZXJyb2RlVGhpbmdzKCkpIHsKICAg
ICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpOwogICAgICAgICBh
cnJheS5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxlZSk7Ci0gICAgICAgIGlmIChtb2Rl
LmluY2x1ZGVTeW1ib2xQcm9wZXJ0aWVzKCkpCisgICAgICAgIGlmIChhcnJheS5pbmNsdWRlU3lt
Ym9sUHJvcGVydGllcygpKQogICAgICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5pdGVyYXRvclN5bWJvbCk7CiAgICAgfQogICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFt
ZXModGhpc09iamVjdCwgZXhlYywgYXJyYXksIG1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGlu
ZXMuaAppbmRleCBlYzY1M2RjZGM0ODg5ZDRlOTVjMTRiZDQ5YmE4ZDgyMTEyYzk1N2YwLi5lOWVk
MWU5OThhYTlhNTA4ZDFhZWYwNTNmYWU4ODJmNDI2M2RjOWQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
d0lubGluZXMuaApAQCAtNDIzLDkgKzQyMywxMSBAQAogICAgIEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIGFycmF5LCBFbnVtZXJhdGlvbk1vZGUg
bW9kZSkKIHsKICAgICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyo+KG9iamVjdCk7Ci0gICAgCi0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHRoaXNPYmplY3QtPm1fbGVuZ3RoOyArK2kpCi0gICAgICAgIGFycmF5
LmFkZChJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTsKKworICAgIGlmIChhcnJheS5pbmNsdWRl
U3RyaW5nUHJvcGVydGllcygpKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0
aGlzT2JqZWN0LT5tX2xlbmd0aDsgKytpKQorICAgICAgICAgICAgYXJyYXkuYWRkKElkZW50aWZp
ZXI6OmZyb20oZXhlYywgaSkpOworICAgIH0KICAgICAKICAgICByZXR1cm4gQmFzZTo6Z2V0T3du
UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIGFycmF5LCBtb2RlKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcApp
bmRleCA2MDc2ODc0NjAxMDdhMGQ4YjAxOWNkN2ZhN2NlYTI5MjRmYjU2MmZhLi40N2E4MWI1ZjM3
MGEyZTA2OGIyZmMyMmQyZDBlNjdkNjRkMTJkYTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCkBAIC05OSw3ICs5
OSw3IEBAIHZvaWQgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICBpZiAoIXRoaXNPYmplY3QtPmlzVmFsaWQoaXQtPnZhbHVlLnNjb3BlT2Zm
c2V0KCkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKGl0LT5r
ZXktPmlzU3ltYm9sKCkgJiYgIW1vZGUuaW5jbHVkZVN5bWJvbFByb3BlcnRpZXMoKSkKKyAgICAg
ICAgICAgIGlmIChpdC0+a2V5LT5pc1N5bWJvbCgpICYmICFwcm9wZXJ0eU5hbWVzLmluY2x1ZGVT
eW1ib2xQcm9wZXJ0aWVzKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIGl0LT5rZXkuZ2V0
KCkpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPTk9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2Jq
ZWN0LmNwcAppbmRleCA2MWRjMDQ2YjBkMmI5MWRlY2FlN2I4Nzk4ZjIwNTcwMmRkZDUyZjViLi5h
MjVhOGY4NDNiNWQ0ZWFlZTc1ZTM4MzVlZGYxZDFiNGJlYjA5MGQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIEpT
VmFsdWUgUHJvcGVydHlOYW1lRm9yRnVuY3Rpb25DYWxsOjp2YWx1ZShFeGVjU3RhdGUqIGV4ZWMp
IGNvbnN0CiAgICAgOiBtX2V4ZWMoZXhlYykKICAgICAsIG1fcmVwbGFjZXIocmVwbGFjZXIpCiAg
ICAgLCBtX3VzaW5nQXJyYXlSZXBsYWNlcihmYWxzZSkKLSAgICAsIG1fYXJyYXlSZXBsYWNlclBy
b3BlcnR5TmFtZXMoZXhlYykKKyAgICAsIG1fYXJyYXlSZXBsYWNlclByb3BlcnR5TmFtZXMoZXhl
YywgUHJvcGVydGllc1R5cGVNb2RlOjpTdHJpbmdzKQogICAgICwgbV9yZXBsYWNlckNhbGxUeXBl
KENhbGxUeXBlTm9uZSkKICAgICAsIG1fZ2FwKGdhcChleGVjLCBzcGFjZS5nZXQoKSkpCiB7CkBA
IC00MjcsNyArNDI3LDcgQEAgYm9vbCBTdHJpbmdpZmllcjo6SG9sZGVyOjphcHBlbmROZXh0UHJv
cGVydHkoU3RyaW5naWZpZXImIHN0cmluZ2lmaWVyLCBTdHJpbmdCdWkKICAgICAgICAgICAgIGlm
IChzdHJpbmdpZmllci5tX3VzaW5nQXJyYXlSZXBsYWNlcikKICAgICAgICAgICAgICAgICBtX3By
b3BlcnR5TmFtZXMgPSBzdHJpbmdpZmllci5tX2FycmF5UmVwbGFjZXJQcm9wZXJ0eU5hbWVzLmRh
dGEoKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIFByb3BlcnR5TmFtZUFy
cmF5IG9iamVjdFByb3BlcnR5TmFtZXMoZXhlYyk7CisgICAgICAgICAgICAgICAgUHJvcGVydHlO
YW1lQXJyYXkgb2JqZWN0UHJvcGVydHlOYW1lcyhleGVjLCBQcm9wZXJ0aWVzVHlwZU1vZGU6OlN0
cmluZ3MpOwogICAgICAgICAgICAgICAgIG1fb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Q
cm9wZXJ0eU5hbWVzKG1fb2JqZWN0LmdldCgpLCBleGVjLCBvYmplY3RQcm9wZXJ0eU5hbWVzLCBF
bnVtZXJhdGlvbk1vZGUoKSk7CiAgICAgICAgICAgICAgICAgbV9wcm9wZXJ0eU5hbWVzID0gb2Jq
ZWN0UHJvcGVydHlOYW1lcy5yZWxlYXNlRGF0YSgpOwogICAgICAgICAgICAgfQpAQCAtNjQ0LDcg
KzY0NCw3IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHVlIHVuZmls
dGVyZWQpCiAgICAgICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGluVmFs
dWUpOwogICAgICAgICAgICAgICAgIG9iamVjdFN0YWNrLnB1c2gob2JqZWN0KTsKICAgICAgICAg
ICAgICAgICBpbmRleFN0YWNrLmFwcGVuZCgwKTsKLSAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0
YWNrLmFwcGVuZChQcm9wZXJ0eU5hbWVBcnJheShtX2V4ZWMpKTsKKyAgICAgICAgICAgICAgICBw
cm9wZXJ0eVN0YWNrLmFwcGVuZChQcm9wZXJ0eU5hbWVBcnJheShtX2V4ZWMsIFByb3BlcnRpZXNU
eXBlTW9kZTo6U3RyaW5ncykpOwogICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUo
KS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0
KCksIEVudW1lcmF0aW9uTW9kZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG9iamVj
dFN0YXJ0VmlzaXRNZW1iZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5jcHAKaW5kZXggZDIwZGFhMjA0NTFkMmZiZWYzM2JjZDkxMzQ5MTA0ZjFmYmNiNTg3My4uYTU0
ZmFjYmRjMTMwZDNiNDEzMjE5NmIyOTM2ZWE1OWQwZjA0MTc1NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtMTUwMiw2NyArMTUwMiw2OSBAQCB2b2lk
IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gQWRk
IG51bWVyaWMgcHJvcGVydGllcyBmaXJzdC4gVGhhdCBhcHBlYXJzIHRvIGJlIHRoZSBhY2NlcHRl
ZCBjb252ZW50aW9uLgotICAgIC8vIEZJWE1FOiBGaWxsaW5nIFByb3BlcnR5TmFtZUFycmF5IHdp
dGggYW4gaWRlbnRpZmllciBmb3IgZXZlcnkgaW50ZWdlcgotICAgIC8vIGlzIGluY3JlZGlibHkg
aW5lZmZpY2llbnQgZm9yIGxhcmdlIGFycmF5cy4gV2UgbmVlZCBhIGRpZmZlcmVudCBhcHByb2Fj
aCwKLSAgICAvLyB3aGljaCBhbG1vc3QgY2VydGFpbmx5IG1lYW5zIGEgZGlmZmVyZW50IHN0cnVj
dHVyZSBmb3IgUHJvcGVydHlOYW1lQXJyYXkuCi0gICAgc3dpdGNoIChvYmplY3QtPmluZGV4aW5n
VHlwZSgpKSB7Ci0gICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6Ci0gICAgY2FzZSBB
TExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgotICAgICAgICBicmVhazsKLSAgICAgICAgCi0g
ICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6Ci0gICAgY2FzZSBBTExfQ09OVElHVU9V
U19JTkRFWElOR19UWVBFUzogewotICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IG9iamVj
dC0+YnV0dGVyZmx5KCk7Ci0gICAgICAgIHVuc2lnbmVkIHVzZWRMZW5ndGggPSBidXR0ZXJmbHkt
PnB1YmxpY0xlbmd0aCgpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdXNlZExl
bmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoIWJ1dHRlcmZseS0+Y29udGlndW91cygpW2ld
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5h
ZGQoaSk7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgICAgICAKLSAgICBj
YXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6IHsKLSAgICAgICAgQnV0dGVyZmx5KiBidXR0
ZXJmbHkgPSBvYmplY3QtPmJ1dHRlcmZseSgpOwotICAgICAgICB1bnNpZ25lZCB1c2VkTGVuZ3Ro
ID0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHVzZWRMZW5ndGg7ICsraSkgewotICAgICAgICAgICAgZG91YmxlIHZhbHVlID0gYnV0
dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV07Ci0gICAgICAgICAgICBpZiAodmFsdWUgIT0g
dmFsdWUpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBwcm9wZXJ0eU5h
bWVzLmFkZChpKTsKKyAgICBpZiAocHJvcGVydHlOYW1lcy5pbmNsdWRlU3RyaW5nUHJvcGVydGll
cygpKSB7CisgICAgICAgIC8vIEFkZCBudW1lcmljIHByb3BlcnRpZXMgZmlyc3QuIFRoYXQgYXBw
ZWFycyB0byBiZSB0aGUgYWNjZXB0ZWQgY29udmVudGlvbi4KKyAgICAgICAgLy8gRklYTUU6IEZp
bGxpbmcgUHJvcGVydHlOYW1lQXJyYXkgd2l0aCBhbiBpZGVudGlmaWVyIGZvciBldmVyeSBpbnRl
Z2VyCisgICAgICAgIC8vIGlzIGluY3JlZGlibHkgaW5lZmZpY2llbnQgZm9yIGxhcmdlIGFycmF5
cy4gV2UgbmVlZCBhIGRpZmZlcmVudCBhcHByb2FjaCwKKyAgICAgICAgLy8gd2hpY2ggYWxtb3N0
IGNlcnRhaW5seSBtZWFucyBhIGRpZmZlcmVudCBzdHJ1Y3R1cmUgZm9yIFByb3BlcnR5TmFtZUFy
cmF5LgorICAgICAgICBzd2l0Y2ggKG9iamVjdC0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAg
Y2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CisgICAgICAgIGNhc2UgQUxMX1VOREVDSURF
RF9JTkRFWElOR19UWVBFUzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAg
ICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgorICAgICAgICBjYXNlIEFMTF9DT05U
SUdVT1VTX0lOREVYSU5HX1RZUEVTOiB7CisgICAgICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZs
eSA9IG9iamVjdC0+YnV0dGVyZmx5KCk7CisgICAgICAgICAgICB1bnNpZ25lZCB1c2VkTGVuZ3Ro
ID0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCB1c2VkTGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWJ1dHRl
cmZseS0+Y29udGlndW91cygpW2ldKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChpKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICAgICAg
Ci0gICAgY2FzZSBBTExfQVJSQVlfU1RPUkFHRV9JTkRFWElOR19UWVBFUzogewotICAgICAgICBB
cnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSBvYmplY3QtPm1fYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2Uo
KTsKLSAgICAgICAgCi0gICAgICAgIHVuc2lnbmVkIHVzZWRWZWN0b3JMZW5ndGggPSBzdGQ6Om1p
bihzdG9yYWdlLT5sZW5ndGgoKSwgc3RvcmFnZS0+dmVjdG9yTGVuZ3RoKCkpOwotICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdXNlZFZlY3Rvckxlbmd0aDsgKytpKSB7Ci0gICAgICAg
ICAgICBpZiAoc3RvcmFnZS0+bV92ZWN0b3JbaV0pCisgICAgICAgICAgICAKKyAgICAgICAgY2Fz
ZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7CisgICAgICAgICAgICBCdXR0ZXJmbHkqIGJ1
dHRlcmZseSA9IG9iamVjdC0+YnV0dGVyZmx5KCk7CisgICAgICAgICAgICB1bnNpZ25lZCB1c2Vk
TGVuZ3RoID0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsKKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCB1c2VkTGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBkb3Vi
bGUgdmFsdWUgPSBidXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXTsKKyAgICAgICAgICAg
ICAgICBpZiAodmFsdWUgIT0gdmFsdWUpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGkpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChTcGFyc2VB
cnJheVZhbHVlTWFwKiBtYXAgPSBzdG9yYWdlLT5tX3NwYXJzZU1hcC5nZXQoKSkgewotICAgICAg
ICAgICAgVmVjdG9yPHVuc2lnbmVkLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4ga2V5czsKLSAg
ICAgICAgICAgIGtleXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtYXAtPnNpemUoKSk7CiAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IG1hcC0+ZW5kKCk7Ci0gICAgICAgICAgICBmb3IgKFNwYXJzZUFycmF5VmFsdWVNYXA6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAg
ICAgICAgICAgICAgICBpZiAobW9kZS5pbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkgfHwgIShp
dC0+dmFsdWUuYXR0cmlidXRlcyAmIERvbnRFbnVtKSkKLSAgICAgICAgICAgICAgICAgICAga2V5
cy51bmNoZWNrZWRBcHBlbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGl0LT5rZXkpKTsKKyAgICAg
ICAgY2FzZSBBTExfQVJSQVlfU1RPUkFHRV9JTkRFWElOR19UWVBFUzogeworICAgICAgICAgICAg
QXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gb2JqZWN0LT5tX2J1dHRlcmZseS0+YXJyYXlTdG9yYWdl
KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHVuc2lnbmVkIHVzZWRWZWN0b3JMZW5ndGgg
PSBzdGQ6Om1pbihzdG9yYWdlLT5sZW5ndGgoKSwgc3RvcmFnZS0+dmVjdG9yTGVuZ3RoKCkpOwor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHVzZWRWZWN0b3JMZW5ndGg7ICsr
aSkgeworICAgICAgICAgICAgICAgIGlmIChzdG9yYWdlLT5tX3ZlY3RvcltpXSkKKyAgICAgICAg
ICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoaSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIHN0ZDo6c29ydChrZXlzLmJlZ2luKCksIGtleXMuZW5kKCkpOwot
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGtleXMuc2l6ZSgpOyArK2kpCi0g
ICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoa2V5c1tpXSk7CisgICAgICAgICAgICBp
ZiAoU3BhcnNlQXJyYXlWYWx1ZU1hcCogbWFwID0gc3RvcmFnZS0+bV9zcGFyc2VNYXAuZ2V0KCkp
IHsKKyAgICAgICAgICAgICAgICBWZWN0b3I8dW5zaWduZWQsIDAsIFVuc2FmZVZlY3Rvck92ZXJm
bG93PiBrZXlzOworICAgICAgICAgICAgICAgIGtleXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSht
YXAtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgU3BhcnNlQXJy
YXlWYWx1ZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbWFwLT5lbmQoKTsKKyAgICAgICAgICAg
ICAgICBmb3IgKFNwYXJzZUFycmF5VmFsdWVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWFwLT5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGUu
aW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpIHx8ICEoaXQtPnZhbHVlLmF0dHJpYnV0ZXMgJiBE
b250RW51bSkpCisgICAgICAgICAgICAgICAgICAgICAgICBrZXlzLnVuY2hlY2tlZEFwcGVuZChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oaXQtPmtleSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBzdGQ6OnNvcnQoa2V5cy5iZWdpbigpLCBrZXlz
LmVuZCgpKTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwga2V5cy5z
aXplKCk7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoa2V5c1tp
XSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICAgICAgCi0g
ICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9
CiAKICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Ob25JbmRleFBy
b3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IuY3BwCmluZGV4IDdlN2QxYWMzNmM5YWJjMjkxNDE5OWIzMTJmOWMwMzcyNjQ1ODdhNjUu
LjlmMDgxY2UxYTlhOWQ2ZDViNDY0MWQ4ZTZjMDg4M2IyNzI4ZDc2OWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yLmNwcApAQCAtMzYsNyArMzYsNyBAQAogSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBKU1By
b3BlcnR5TmFtZUVudW1lcmF0b3I6OmNyZWF0ZShWTSYgdm0pCiB7CiAgICAgaWYgKCF2bS5lbXB0
eVByb3BlcnR5TmFtZUVudW1lcmF0b3IuZ2V0KCkpIHsKLSAgICAgICAgUHJvcGVydHlOYW1lQXJy
YXkgcHJvcGVydHlOYW1lcygmdm0pOworICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0
eU5hbWVzKCZ2bSwgUHJvcGVydGllc1R5cGVNb2RlOjpTdHJpbmdzKTsKICAgICAgICAgdm0uZW1w
dHlQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yID0gU3Ryb25nPEpTQ2VsbD4odm0sIGNyZWF0ZSh2bSwg
MCwgMCwgMCwgcHJvcGVydHlOYW1lcykpOwogICAgIH0KICAgICByZXR1cm4ganNDYXN0PEpTUHJv
cGVydHlOYW1lRW51bWVyYXRvcio+KHZtLmVtcHR5UHJvcGVydHlOYW1lRW51bWVyYXRvci5nZXQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVy
dHlOYW1lRW51bWVyYXRvci5oCmluZGV4IDk0YjAzNDM1Yjk0OGE3MDAxOGY0YTk2ZDYwODhlYjVm
OWFiNTlkZDYuLmMyZTBhYWEyZTQyZjI2YjdkY2RhYmYxZjE3NGZkODVmZDY0YWZjMjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVy
YXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1l
RW51bWVyYXRvci5oCkBAIC0xMTUsNyArMTE1LDcgQEAgaW5saW5lIEpTUHJvcGVydHlOYW1lRW51
bWVyYXRvciogcHJvcGVydHlOYW1lRW51bWVyYXRvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWMK
IAogICAgIHVpbnQzMl90IG51bWJlclN0cnVjdHVyZVByb3BlcnRpZXMgPSAwOwogCi0gICAgUHJv
cGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKKyAgICBQcm9wZXJ0eU5hbWVBcnJh
eSBwcm9wZXJ0eU5hbWVzKGV4ZWMsIFByb3BlcnRpZXNUeXBlTW9kZTo6U3RyaW5ncyk7CiAKICAg
ICBpZiAoc3RydWN0dXJlLT5jYW5BY2Nlc3NQcm9wZXJ0aWVzUXVpY2tseSgpICYmIGluZGV4ZWRM
ZW5ndGggPT0gYmFzZS0+Z2V0QXJyYXlMZW5ndGgoKSkgewogICAgICAgICBiYXNlLT5tZXRob2RU
YWJsZSh2bSktPmdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoYmFzZSwgZXhlYywgcHJvcGVydHlO
YW1lcywgRW51bWVyYXRpb25Nb2RlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAppbmRleCBjMDhmZjU5NDg3YmY4ZGU3
MjdjYWFlNmE1ODM5YTI0Yzg4ZmU0NWZmLi4yMGI2NzNhNzA0NTBmYTU5OWIzNWFjMTg0NzdiZTI3
MTBmMjAwNDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5
bWJvbFRhYmxlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N5bWJvbFRhYmxlT2JqZWN0LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIEpTU3ltYm9sVGFi
bGVPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdAogICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBlbmQgPSB0aGlzT2Jq
ZWN0LT5zeW1ib2xUYWJsZSgpLT5lbmQobG9ja2VyKTsKICAgICAgICAgZm9yIChTeW1ib2xUYWJs
ZTo6TWFwOjppdGVyYXRvciBpdCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmJlZ2luKGxv
Y2tlcik7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgaWYgKCEoaXQtPnZhbHVlLmdl
dEF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCBtb2RlLmluY2x1ZGVEb250RW51bVByb3BlcnRp
ZXMoKSkgewotICAgICAgICAgICAgICAgIGlmIChpdC0+a2V5LT5pc1N5bWJvbCgpICYmICFtb2Rl
LmluY2x1ZGVTeW1ib2xQcm9wZXJ0aWVzKCkpCisgICAgICAgICAgICAgICAgaWYgKGl0LT5rZXkt
PmlzU3ltYm9sKCkgJiYgIXByb3BlcnR5TmFtZXMuaW5jbHVkZVN5bWJvbFByb3BlcnRpZXMoKSkK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgcHJvcGVydHlO
YW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBpdC0+a2V5LmdldCgpKSk7CiAgICAg
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5jcHAKaW5kZXggMWExMWUyOGQ3MjU1YjRjZGE3MTBjMWE5Y2JiNDk5ZGZmYWUx
MjM1My4uOGRkN2IxZDIxNjM5NWZmZmYzZjRkZWEyYmFjZDEyMDg2ZWEzMDY1MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApA
QCAtMjUzLDcgKzI1Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29u
c3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlCiAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGV4ZWMpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwo
KSk7Ci0gICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKKyAgICBQcm9wZXJ0
eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMsIFByb3BlcnRpZXNUeXBlTW9kZTo6U3RyaW5ncyk7
CiAgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1l
cyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3Bl
cnRpZXNNb2RlOjpJbmNsdWRlKSk7CiAgICAgSlNBcnJheSogbmFtZXMgPSBjb25zdHJ1Y3RFbXB0
eUFycmF5KGV4ZWMsIDApOwogICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5z
aXplKCk7CkBAIC0yNjgsOCArMjY4LDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9scyhFeGVjU3RhdGUqIGUKICAgICBK
U09iamVjdCogb2JqZWN0ID0gZXhlYy0+YXJndW1lbnQoMCkudG9PYmplY3QoZXhlYyk7CiAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVsbCgpKTsKLSAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAg
IG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGUoRG9udEVudW1Qcm9wZXJ0aWVz
TW9kZTo6SW5jbHVkZSwgU3ltYm9sUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsKKyAgICBQcm9w
ZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMsIFByb3BlcnRpZXNUeXBlTW9kZTo6U3ltYm9s
cyk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlO
YW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVBy
b3BlcnRpZXNNb2RlOjpJbmNsdWRlKSk7CiAgICAgSlNBcnJheSogbmFtZXMgPSBjb25zdHJ1Y3RF
bXB0eUFycmF5KGV4ZWMsIDApOwogICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGll
cy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKysp
IHsKQEAgLTI4Niw3ICsyODYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dENvbnN0cnVjdG9yS2V5cyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNPYmplY3QqIG9iamVjdCA9
IGV4ZWMtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7Ci0gICAg
UHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKKyAgICBQcm9wZXJ0eU5hbWVBcnJh
eSBwcm9wZXJ0aWVzKGV4ZWMsIFByb3BlcnRpZXNUeXBlTW9kZTo6U3RyaW5ncyk7CiAgICAgb2Jq
ZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3Qs
IGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZSgpKTsKICAgICBKU0FycmF5KiBrZXlz
ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKICAgICBzaXplX3QgbnVtUHJvcGVydGll
cyA9IHByb3BlcnRpZXMuc2l6ZSgpOwpAQCAtMzk3LDggKzM5Nyw4IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUq
IGV4ZWMpCiAKIHN0YXRpYyBKU1ZhbHVlIGRlZmluZVByb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogb2JqZWN0LCBKU09iamVjdCogcHJvcGVydGllcykKIHsKLSAgICBQcm9wZXJ0
eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgIGFzT2JqZWN0KHByb3BlcnRpZXMp
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChw
cm9wZXJ0aWVzKSwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVt
UHJvcGVydGllc01vZGU6OkV4Y2x1ZGUsIFN5bWJvbFByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSk7
CisgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjLCBQcm9wZXJ0aWVzVHlw
ZU1vZGU6OkJvdGgpOworICAgIGFzT2JqZWN0KHByb3BlcnRpZXMpLT5tZXRob2RUYWJsZShleGVj
LT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChwcm9wZXJ0aWVzKSwgZXhlYywg
cHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4
Y2x1ZGUpKTsKICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9IHByb3BlcnR5TmFtZXMuc2l6ZSgp
OwogICAgIFZlY3RvcjxQcm9wZXJ0eURlc2NyaXB0b3I+IGRlc2NyaXB0b3JzOwogICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIG1hcmtCdWZmZXI7CkBAIC00NjcsOCArNDY3LDggQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclNlYWwoRXhlY1N0YXRlKiBleGVj
KQogICAgIH0KIAogICAgIC8vIDIuIEZvciBlYWNoIG5hbWVkIG93biBwcm9wZXJ0eSBuYW1lIFAg
b2YgTywKLSAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAgIG9iamVj
dC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBl
eGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGUoRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6
SW5jbHVkZSwgU3ltYm9sUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsKKyAgICBQcm9wZXJ0eU5h
bWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMsIFByb3BlcnRpZXNUeXBlTW9kZTo6Qm90aCk7CisgICAg
b2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmpl
Y3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3BlcnRpZXNN
b2RlOjpJbmNsdWRlKSk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IHByb3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3Rf
aXRlcmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikg
ewogICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9ICppdGVyOwpAQCAtNTAxLDggKzUw
MSw4IEBAIEpTT2JqZWN0KiBvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiBvYmplY3QpCiAgICAgfQogCiAgICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQgb3du
IHByb3BlcnR5IG5hbWUgUCBvZiBPLAotICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMo
ZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVy
dHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51
bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlLCBTeW1ib2xQcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkp
OworICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYywgUHJvcGVydGllc1R5cGVN
b2RlOjpCb3RoKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Q
cm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlKERv
bnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gcHJvcGVydGllcy5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5
TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBpdGVy
ICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gKml0
ZXI7CkBAIC01NjEsOCArNTYxLDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RDb25zdHJ1Y3RvcklzU2VhbGVkKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ob2JqZWN0LT5pc1NlYWxlZChleGVjLT52bSgpKSkpOwog
CiAgICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQgb3duIHByb3BlcnR5IG5hbWUgUCBvZiBPLAotICAg
IFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRob2RU
YWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3Bl
cnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlLCBT
eW1ib2xQcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpOworICAgIFByb3BlcnR5TmFtZUFycmF5IHBy
b3BlcnRpZXMoZXhlYywgUHJvcGVydGllc1R5cGVNb2RlOjpCb3RoKTsKKyAgICBvYmplY3QtPm1l
dGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywg
cHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1
ZGUpKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcHJvcGVy
dGllcy5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBp
dGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAg
IElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gKml0ZXI7CkBAIC01OTQsOCArNTk0LDggQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzRnJvemVuKEV4ZWNT
dGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ob2Jq
ZWN0LT5pc0Zyb3plbihleGVjLT52bSgpKSkpOwogCiAgICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQg
b3duIHByb3BlcnR5IG5hbWUgUCBvZiBPLAotICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRp
ZXMoZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJv
cGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250
RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlLCBTeW1ib2xQcm9wZXJ0aWVzTW9kZTo6SW5jbHVk
ZSkpOworICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYywgUHJvcGVydGllc1R5
cGVNb2RlOjpCb3RoKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRP
d25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2Rl
KERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJh
eTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcHJvcGVydGllcy5lbmQoKTsKICAgICBmb3IgKFByb3Bl
cnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBp
dGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0g
Kml0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eU5hbWVBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1l
QXJyYXkuaAppbmRleCBjMmYxM2Q4YzM3MjlhZTVhYjdiZDM5ZGI3NGUzNDU4ODNlNGM4NjcyLi4y
MTA4NzZjNWZiZDUxNmJjZGM0ZTFjMjFiNWMzYjFjNDU2MTFkOTIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgKQEAgLTQ4LDE1ICs0
OCwxNSBAQCBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxQ
cm9wZXJ0eU5hbWVBcnJheURhdGE+IHsKIC8vIEZJWE1FOiBSZW5hbWUgdG8gUHJvcGVydHlOYW1l
QXJyYXlCdWlsZGVyLgogY2xhc3MgUHJvcGVydHlOYW1lQXJyYXkgewogcHVibGljOgotICAgIFBy
b3BlcnR5TmFtZUFycmF5KFZNKiB2bSkKKyAgICBQcm9wZXJ0eU5hbWVBcnJheShWTSogdm0sIFBy
b3BlcnRpZXNUeXBlTW9kZSB0eXBlTW9kZSkKICAgICAgICAgOiBtX2RhdGEoUHJvcGVydHlOYW1l
QXJyYXlEYXRhOjpjcmVhdGUoKSkKICAgICAgICAgLCBtX3ZtKHZtKQorICAgICAgICAsIG1fdHlw
ZU1vZGUodHlwZU1vZGUpCiAgICAgewogICAgIH0KIAotICAgIFByb3BlcnR5TmFtZUFycmF5KEV4
ZWNTdGF0ZSogZXhlYykKLSAgICAgICAgOiBtX2RhdGEoUHJvcGVydHlOYW1lQXJyYXlEYXRhOjpj
cmVhdGUoKSkKLSAgICAgICAgLCBtX3ZtKCZleGVjLT52bSgpKQorICAgIFByb3BlcnR5TmFtZUFy
cmF5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydGllc1R5cGVNb2RlIHR5cGVNb2RlKQorICAgICAg
ICA6IFByb3BlcnR5TmFtZUFycmF5KCZleGVjLT52bSgpLCB0eXBlTW9kZSkKICAgICB7CiAgICAg
fQogCkBAIC04NSwxMCArODUsMTcgQEAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXkgewogICAgIGNv
bnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLT5wcm9wZXJ0eU5hbWVW
ZWN0b3IoKS5iZWdpbigpOyB9CiAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKS5lbmQoKTsgfQogCisgICAgUHJvcGVydGll
c1R5cGVNb2RlIHR5cGVNb2RlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlTW9kZTsgfQorICAgIGJv
b2wgaW5jbHVkZVN5bWJvbFByb3BlcnRpZXMoKSBjb25zdDsKKyAgICBib29sIGluY2x1ZGVTdHJp
bmdQcm9wZXJ0aWVzKCkgY29uc3Q7CisKIHByaXZhdGU6CisgICAgYm9vbCBpc1VpZE1hdGNoZWRU
b1R5cGVNb2RlKFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudGlmaWVyKTsKKwogICAgIFJlZlB0cjxQ
cm9wZXJ0eU5hbWVBcnJheURhdGE+IG1fZGF0YTsKICAgICBIYXNoU2V0PFVuaXF1ZWRTdHJpbmdJ
bXBsKj4gbV9zZXQ7CiAgICAgVk0qIG1fdm07CisgICAgUHJvcGVydGllc1R5cGVNb2RlIG1fdHlw
ZU1vZGU7CiB9OwogCiBBTFdBWVNfSU5MSU5FIHZvaWQgUHJvcGVydHlOYW1lQXJyYXk6OmFkZChj
b25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQpAQCAtOTgsNiArMTA1LDggQEAgQUxXQVlTX0lO
TElORSB2b2lkIFByb3BlcnR5TmFtZUFycmF5OjphZGQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRp
ZmllcikKIAogQUxXQVlTX0lOTElORSB2b2lkIFByb3BlcnR5TmFtZUFycmF5OjphZGRLbm93blVu
aXF1ZShVbmlxdWVkU3RyaW5nSW1wbCogaWRlbnRpZmllcikKIHsKKyAgICBpZiAoIWlzVWlkTWF0
Y2hlZFRvVHlwZU1vZGUoaWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKICAgICBtX2RhdGEt
PnByb3BlcnR5TmFtZVZlY3RvcigpLmFwcGVuZChJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIGlk
ZW50aWZpZXIpKTsKIH0KIApAQCAtMTA3LDYgKzExNiw5IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBQ
cm9wZXJ0eU5hbWVBcnJheTo6YWRkKFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudGlmaWVyKQogCiAg
ICAgQVNTRVJUKGlkZW50aWZpZXIpOwogCisgICAgaWYgKCFpc1VpZE1hdGNoZWRUb1R5cGVNb2Rl
KGlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoc2l6ZSgpIDwgc2V0VGhy
ZXNob2xkKSB7CiAgICAgICAgIGlmIChtX2RhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpLmNvbnRh
aW5zKGlkZW50aWZpZXIpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTIyLDYgKzEzNCwyMyBA
QCBBTFdBWVNfSU5MSU5FIHZvaWQgUHJvcGVydHlOYW1lQXJyYXk6OmFkZChVbmlxdWVkU3RyaW5n
SW1wbCogaWRlbnRpZmllcikKICAgICBhZGRLbm93blVuaXF1ZShpZGVudGlmaWVyKTsKIH0KIAor
QUxXQVlTX0lOTElORSBib29sIFByb3BlcnR5TmFtZUFycmF5Ojppc1VpZE1hdGNoZWRUb1R5cGVN
b2RlKFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudGlmaWVyKQoreworICAgIGlmIChpZGVudGlmaWVy
LT5pc1N5bWJvbCgpKQorICAgICAgICByZXR1cm4gaW5jbHVkZVN5bWJvbFByb3BlcnRpZXMoKTsK
KyAgICByZXR1cm4gaW5jbHVkZVN0cmluZ1Byb3BlcnRpZXMoKTsKK30KKworQUxXQVlTX0lOTElO
RSBib29sIFByb3BlcnR5TmFtZUFycmF5OjppbmNsdWRlU3ltYm9sUHJvcGVydGllcygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190eXBlPFByb3BlcnRp
ZXNUeXBlTW9kZT46OnR5cGU+KG1fdHlwZU1vZGUpICYgc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5
aW5nX3R5cGU8UHJvcGVydGllc1R5cGVNb2RlPjo6dHlwZT4oUHJvcGVydGllc1R5cGVNb2RlOjpT
eW1ib2xzKTsKK30KKworQUxXQVlTX0lOTElORSBib29sIFByb3BlcnR5TmFtZUFycmF5OjppbmNs
dWRlU3RyaW5nUHJvcGVydGllcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0
ZDo6dW5kZXJseWluZ190eXBlPFByb3BlcnRpZXNUeXBlTW9kZT46OnR5cGU+KG1fdHlwZU1vZGUp
ICYgc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGU8UHJvcGVydGllc1R5cGVNb2RlPjo6
dHlwZT4oUHJvcGVydGllc1R5cGVNb2RlOjpTdHJpbmdzKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKICNlbmRpZiAvLyBQcm9wZXJ0eU5hbWVBcnJheV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAppbmRleCBlYjc0MzBlYjU1M2FkNzYwNzQ3
ODU0YjJmNjRlZWJlYjdlNTA4NzgyLi5iNWFhM2Y3MmQxMTBmNTkzZTEzZWE5YWRjZTE5ZjZkMWQy
ZTM4OTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVj
dC5jcHAKQEAgLTE0Niw5ICsxNDYsMTEgQEAgYm9vbCBTdHJpbmdPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQKIHZvaWQg
U3RyaW5nT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9u
TW9kZSBtb2RlKQogewogICAgIFN0cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJp
bmdPYmplY3QqPihvYmplY3QpOwotICAgIGludCBzaXplID0gdGhpc09iamVjdC0+aW50ZXJuYWxW
YWx1ZSgpLT5sZW5ndGgoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAg
ICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7CisgICAg
aWYgKHByb3BlcnR5TmFtZXMuaW5jbHVkZVN0cmluZ1Byb3BlcnRpZXMoKSkgeworICAgICAgICBp
bnQgc2l6ZSA9IHRoaXNPYmplY3QtPmludGVybmFsVmFsdWUoKS0+bGVuZ3RoKCk7CisgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgcHJvcGVydHlOYW1l
cy5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7CisgICAgfQogICAgIGlmIChtb2RlLmlu
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CiAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggY2EwOTdmN2M4
MjM2Mzg5NmY2MGJhODgyZjExYmJmZDJmNjA0MDYyNC4uOThkM2ZjMjAxNmIxNDE3ODlkNzVhNTVh
MWFjZmRkMGE2ZjZhMzlhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwCkBAIC05NDcsNyArOTQ3LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OmdldFByb3BlcnR5
TmFtZXNGcm9tU3RydWN0dXJlKFZNJiB2bSwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnQKICAg
ICBmb3IgKFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0eVRhYmxlKCktPmJl
Z2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgQVNTRVJUKGhhc05vbkVudW1l
cmFibGVQcm9wZXJ0aWVzKCkgfHwgIShpdGVyLT5hdHRyaWJ1dGVzICYgRG9udEVudW0pKTsKICAg
ICAgICAgaWYgKCEoaXRlci0+YXR0cmlidXRlcyAmIERvbnRFbnVtKSB8fCBtb2RlLmluY2x1ZGVE
b250RW51bVByb3BlcnRpZXMoKSkgewotICAgICAgICAgICAgaWYgKGl0ZXItPmtleS0+aXNTeW1i
b2woKSAmJiAhbW9kZS5pbmNsdWRlU3ltYm9sUHJvcGVydGllcygpKQorICAgICAgICAgICAgaWYg
KGl0ZXItPmtleS0+aXNTeW1ib2woKSAmJiAhcHJvcGVydHlOYW1lcy5pbmNsdWRlU3ltYm9sUHJv
cGVydGllcygpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKGtu
b3duVW5pcXVlKQogICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkS25vd25VbmlxdWUo
aXRlci0+a2V5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rp
b25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKaW5k
ZXggNWMyNDM2YTk0MjhlNjhhYzIzNDUwY2YzNGMzNDQ0ODg3Y2ExYWM4Zi4uNTI0MjQzMTBmMDAy
MGY1MTFmYjg4MWQ1OWViZGEwYTNkODc5NzFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvRGljdGlvbmFyeS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXRP
d25Qcm9wZXJ0aWVzQXNTdHJpbmdIYXNoTWFwKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBtYXAp
IGMKICAgICBKU09iamVjdCogb2JqZWN0ID0gIG1fZGljdGlvbmFyeS5pbml0aWFsaXplck9iamVj
dCgpOwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZGljdGlvbmFyeS5leGVjU3RhdGUoKTsKIAot
ICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYyk7CisgICAgUHJvcGVydHlO
YW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjLCBQcm9wZXJ0aWVzVHlwZU1vZGU6OlN0cmluZ3Mp
OwogICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKCkpOwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcHJvcGVydHlOYW1lcy5iZWdpbigpOyBpdCAhPSBwcm9wZXJ0
eU5hbWVzLmVuZCgpOyArK2l0KSB7CiAgICAgICAgIFN0cmluZyBzdHJpbmdLZXkgPSBpdC0+c3Ry
aW5nKCk7CkBAIC04Nyw3ICs4Nyw3IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0T3duUHJvcGVydHlO
YW1lcyhWZWN0b3I8U3RyaW5nPiYgbmFtZXMpIGNvbnN0CiAgICAgSlNPYmplY3QqIG9iamVjdCA9
ICBtX2RpY3Rpb25hcnkuaW5pdGlhbGl6ZXJPYmplY3QoKTsKICAgICBFeGVjU3RhdGUqIGV4ZWMg
PSBtX2RpY3Rpb25hcnkuZXhlY1N0YXRlKCk7CiAKLSAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9w
ZXJ0eU5hbWVzKGV4ZWMpOworICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhl
YywgUHJvcGVydGllc1R5cGVNb2RlOjpTdHJpbmdzKTsKICAgICBKU09iamVjdDo6Z2V0T3duUHJv
cGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSgp
KTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdCA9IHByb3Bl
cnR5TmFtZXMuYmVnaW4oKTsgaXQgIT0gcHJvcGVydHlOYW1lcy5lbmQoKTsgKytpdCkgewogICAg
ICAgICBTdHJpbmcgc3RyaW5nS2V5ID0gaXQtPnN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggNjc4NjEx
OTA2OTgwNWU3NWI3Yzk0YWRkY2Q3MTUyN2ZhZmQ3ZWJlMy4uMzM5NDI0YWQzNzgzMmQ4OGVlNGZj
ZDQyZmZjZjI4ZDM0MzY4MjhlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0xMjU0LDcgKzEyNTQsNyBAQCBTZXJp
YWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVlIGlu
KQogICAgICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLnJlbW92ZUxhc3QoKTsKICAgICAgICAg
ICAgICAgICAgICAgbGVuZ3RoU3RhY2sucmVtb3ZlTGFzdCgpOwogCi0gICAgICAgICAgICAgICAg
ICAgIHByb3BlcnR5U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYykpOworICAg
ICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0YWNrLmFwcGVuZChQcm9wZXJ0eU5hbWVBcnJheSht
X2V4ZWMsIFByb3BlcnRpZXNUeXBlTW9kZTo6U3RyaW5ncykpOwogICAgICAgICAgICAgICAgICAg
ICBhcnJheS0+bWV0aG9kVGFibGUoKS0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKGFycmF5
LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFbnVtZXJhdGlvbk1vZGUoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eVN0YWNrLmxhc3QoKS5zaXplKCkpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHdyaXRlKE5vbkluZGV4UHJvcGVydGllc1RhZyk7CkBAIC0xMzA0
LDcgKzEzMDQsNyBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNl
cmlhbGl6ZShKU1ZhbHVlIGluKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gRGF0YUNsb25l
RXJyb3I7CiAgICAgICAgICAgICAgICAgaW5wdXRPYmplY3RTdGFjay5hcHBlbmQoaW5PYmplY3Qp
OwogICAgICAgICAgICAgICAgIGluZGV4U3RhY2suYXBwZW5kKDApOwotICAgICAgICAgICAgICAg
IHByb3BlcnR5U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYykpOworICAgICAg
ICAgICAgICAgIHByb3BlcnR5U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYywg
UHJvcGVydGllc1R5cGVNb2RlOjpTdHJpbmdzKSk7CiAgICAgICAgICAgICAgICAgaW5PYmplY3Qt
Pm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMoaW5PYmplY3QsIG1fZXhlYywgcHJv
cGVydHlTdGFjay5sYXN0KCksIEVudW1lcmF0aW9uTW9kZSgpKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIG9iamVjdFN0YXJ0VmlzaXRNZW1iZXI6CkBAIC0xMzcyLDcgKzEzNzIsNyBAQCBT
ZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVl
IGluKQogICAgICAgICAgICAgICAgICAgICBtYXBJdGVyYXRvclN0YWNrLnJlbW92ZUxhc3QoKTsK
ICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGlucHV0T2JqZWN0U3RhY2su
bGFzdCgpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU01hcCo+
KG9iamVjdCkpOwotICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0YWNrLmFwcGVuZChQcm9w
ZXJ0eU5hbWVBcnJheShtX2V4ZWMpKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdGFj
ay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjLCBQcm9wZXJ0aWVzVHlwZU1vZGU6OlN0
cmluZ3MpKTsKICAgICAgICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRP
d25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwgRW51
bWVyYXRpb25Nb2RlKCkpOwogICAgICAgICAgICAgICAgICAgICB3cml0ZShOb25NYXBQcm9wZXJ0
aWVzVGFnKTsKICAgICAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5hcHBlbmQoMCk7CkBAIC0x
NDE2LDcgKzE0MTYsNyBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6
OnNlcmlhbGl6ZShKU1ZhbHVlIGluKQogICAgICAgICAgICAgICAgICAgICBzZXRJdGVyYXRvclN0
YWNrLnJlbW92ZUxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9
IGlucHV0T2JqZWN0U3RhY2subGFzdCgpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoanNE
eW5hbWljQ2FzdDxKU1NldCo+KG9iamVjdCkpOwotICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0
eVN0YWNrLmFwcGVuZChQcm9wZXJ0eU5hbWVBcnJheShtX2V4ZWMpKTsKKyAgICAgICAgICAgICAg
ICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjLCBQcm9w
ZXJ0aWVzVHlwZU1vZGU6OlN0cmluZ3MpKTsKICAgICAgICAgICAgICAgICAgICAgb2JqZWN0LT5t
ZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbV9leGVjLCBwcm9wZXJ0
eVN0YWNrLmxhc3QoKSwgRW51bWVyYXRpb25Nb2RlKCkpOwogICAgICAgICAgICAgICAgICAgICB3
cml0ZShOb25TZXRQcm9wZXJ0aWVzVGFnKTsKICAgICAgICAgICAgICAgICAgICAgaW5kZXhTdGFj
ay5hcHBlbmQoMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAppbmRleCAwOTRi
MWFlZDg2M2YxNjdhODA3NjY3MGJiNDVkNjllODgwNGY2YmNhLi4wZTgyOTQxMDIwNDVjNzM1ZTcx
Njc2MWNiMWJkZmNjNTRlYjU2MGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
TlBfanNvYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5j
cHAKQEAgLTQ0NSw3ICs0NDUsNyBAQCBib29sIF9OUE5fRW51bWVyYXRlKE5QUCwgTlBPYmplY3Qq
IG8sIE5QSWRlbnRpZmllcioqIGlkZW50aWZpZXIsIHVpbnQzMl90KiBjb3VudAogICAgICAgICAK
ICAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gcm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmds
b2JhbEV4ZWMoKTsKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgICAgIFBy
b3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYyk7CisgICAgICAgIFByb3BlcnR5TmFt
ZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYywgUHJvcGVydGllc1R5cGVNb2RlOjpTdHJpbmdzKTsK
IAogICAgICAgICBvYmotPmltcC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyhvYmot
PmltcCwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKCkpOwogICAgICAgICB1
bnNpZ25lZCBzaXplID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHByb3BlcnR5TmFtZXMuc2l6ZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVk
L05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQppbmRleCBhYmFlNzgxMTAxYWIzYmFhNTM2
YjIyZDFiM2MzZjFiOWY5MDNhYzQ5Li5kY2I2OGRlNjE0NDRjMGJjMDkyMjdkMjRhOTA4YmIzZWU2
MGJkMzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCkBAIC0xMjMwLDcgKzEyMzAs
NyBAQCBib29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZW51bWVyYXRlKHVpbnQzMl90
IG9iamVjdElELCBkYXRhX3QmIHJlc3VsdERhdAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGZyYW1l
LT5zY3JpcHQoKS5nbG9iYWxPYmplY3QocGx1Z2luV29ybGQoKSktPmdsb2JhbEV4ZWMoKTsKICAg
ICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAKLSAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9w
ZXJ0eU5hbWVzKGV4ZWMpOworICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhl
YywgUHJvcGVydGllc1R5cGVNb2RlOjpTdHJpbmdzKTsKICAgICBvYmplY3QtPm1ldGhvZFRhYmxl
KCktPmdldFByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJh
dGlvbk1vZGUoKSk7CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXkqPiBhcnJheSA9IGFk
b3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwCmlu
ZGV4IDIwZGM0ZDhmYjRiOTk0OTM3OGMwZWQ0YzM0YjBjNTI5ZDMxMTc5MTYuLjdiMTNlZGZhYjA3
MDNkZDc0NDc3ODg5MjA0MGVmODgwZDllMDczOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKQEAgLTIz
OSw3ICsyMzksNyBAQCBib29sIE5QSlNPYmplY3Q6OmVudW1lcmF0ZShOUElkZW50aWZpZXIqKiBp
ZGVudGlmaWVycywgdWludDMyX3QqIGlkZW50aWZpZXJDb3VudAogICAgIAogICAgIEpTTG9ja0hv
bGRlciBsb2NrKGV4ZWMpOwogCi0gICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhl
eGVjKTsKKyAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMsIFByb3BlcnRp
ZXNUeXBlTW9kZTo6U3RyaW5ncyk7CiAgICAgbV9qc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0
UHJvcGVydHlOYW1lcyhtX2pzT2JqZWN0LmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFbnVt
ZXJhdGlvbk1vZGUoKSk7CiAKICAgICBOUElkZW50aWZpZXIqIG5hbWVJZGVudGlmaWVycyA9IG5w
bk1lbU5ld0FycmF5PE5QSWRlbnRpZmllcj4ocHJvcGVydHlOYW1lcy5zaXplKCkpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDA3NmZjYjI1YTQwYzFiYmU1OWNjMDhkZDlmNGJlYTg1NTQ5OTc3ZGIuLmE1YzMxN2JlY2E2MGU4
N2Y1YWRlNjVhYmY5YjE3NmM3OGI1NTY0Y2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0w
Ny0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBP
YmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzIG9uIGxhcmdlIGxpc3QgdGFrZXMgdmVyeSBsb25n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDYxMzcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL3Jl
Z3Jlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy1vbi1sYXJnZS1hcnJheS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvb2JqZWN0LWdldC1vd24tcHJv
cGVydHktc3ltYm9scy1vbi1sYXJnZS1hcnJheS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9y
ZWdyZXNzL3NjcmlwdC10ZXN0cy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLW9uLWxh
cmdlLWFycmF5LmpzOiBBZGRlZC4KKyAgICAgICAgKHRyaWFsKToKKwogMjAxNS0wNy0yMiAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBDb29yZGluYXRl
cy1iYXNlZCBzbmFwIG9mZnNldHMgZG9uJ3QgdXBkYXRlIGNvcnJlY3RseSB3aGVuIGNvbnRhaW5l
ciBpcyBzY3JvbGxlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9vYmplY3Qt
Z2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLW9uLWxhcmdlLWFycmF5LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2pzL3JlZ3Jlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy1vbi1s
YXJnZS1hcnJheS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTNiZWI2ZmRkYzc5M2U0ZjdjNjVk
ZDgwNDA1NGVkNGVmMmYwZDgyZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Jl
Z3Jlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy1vbi1sYXJnZS1hcnJheS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL29iamVjdC1nZXQtb3duLXByb3Bl
cnR5LXN5bWJvbHMtb24tbGFyZ2UtYXJyYXkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jl
c3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy1vbi1sYXJnZS1hcnJheS5odG1sIGIv
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLW9u
LWxhcmdlLWFycmF5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTkxNDRlNDdiNjRlZTBmYjM5NzU2ZTkxYjJm
OTkxNjQyNzIxN2QyNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
b2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy1vbi1sYXJnZS1hcnJheS5odG1sCkBAIC0w
LDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRl
c3RzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMtb24tbGFyZ2UtYXJyYXkuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zY3JpcHQtdGVzdHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy1vbi1sYXJn
ZS1hcnJheS5qcyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL29iamVjdC1n
ZXQtb3duLXByb3BlcnR5LXN5bWJvbHMtb24tbGFyZ2UtYXJyYXkuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI2
NmIxMWQ5NWJlMjg1YjEyMTIyZTk1YTZjYmY0ZDhiNjE0NDdmZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL29iamVjdC1nZXQtb3duLXByb3Bl
cnR5LXN5bWJvbHMtb24tbGFyZ2UtYXJyYXkuanMKQEAgLTAsMCArMSw5IEBACitmdW5jdGlvbiB0
cmlhbCgpCit7CisgICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcigxMDAwMDAwMCk7Cisg
ICAgdmFyIGludDhWaWV3ID0gbmV3IEludDhBcnJheShidWZmZXIpOworICAgIHJldHVybiBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGludDhWaWV3KTsKK30KKworZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDAwMDA7ICsraSkKKyAgICB0cmlhbCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257339</attachid>
            <date>2015-07-22 22:06:03 -0700</date>
            <delta_ts>2015-07-23 17:56:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146137-20150723140447.patch</filename>
            <type>text/plain</type>
            <size>46050</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3MjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
OWRiNWRiNjc5YjMyNGE5MTBjZTJhYzI1YjA3NjgyM2I5ZDdiMDIzLi43OTgxNjUyZGEwNDZhM2E3
ZGZmMTU3MTU4Y2Y2M2ZhYWRhZTIzN2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw4OSBAQAogMjAxNS0wNy0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzIG9uIGxhcmdlIGxp
c3QgdGFrZXMgdmVyeSBsb25nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDYxMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBCZWZvcmUgdGhpcyBwYXRjaCwgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9s
cyBvbmNlIGNvbGxlY3RzIHRoZSBhbGwgbmFtZXMgaW5jbHVkaW5nIHN0cmluZ3MuCisgICAgICAg
IEFuZCBhZnRlciBpdCdzIGRvbmUsIGZpbHRlciB0aGUgbmFtZXMgdG8gb25seSByZXRyaWV2ZSB0
aGUgc3ltYm9scy4KKyAgICAgICAgQnV0IGl0J3Mgc28gbXVjaCB0aW1lIGNvbnN1bWluZyBpZiB0
aGUgZ2l2ZW4gb2JqZWN0IGlzIGEgbGFyZ2Ugbm9uLWhvbGVkIGFycmF5IHNpbmNlIGl0IGhhcwor
ICAgICAgICBtYW55IGluZGV4ZWQgcHJvcGVydGllcyBhbmQgYWxsIHRoZSBwcm9wZXJ0aWVzIGFy
ZSBvbmNlIGNvbnZlcnRlZCB0byB1bmlxdWVkIHN0cmluZ3MgYW5kIGNvbGxlY3RlZC4KKworICAg
ICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgUHJvcGVydGllc1R5cGVNb2RlLgorICAgICAgICBX
ZSBsZXZlcmFnZSB0aGlzIG1vZGUgaW4gMiBwbGFjZXMuCisKKyAgICAgICAgMS4gUHJvcGVydHlO
YW1lQXJyYXkgc2lkZQorICAgICAgICBJdCBpcyBzZXQgaW4gUHJvcGVydHlOYW1lQXJyYXkgYW5k
IGl0IGZpbHRlcnMgdGhlIGluY29taW5nIGFkZGVkIGlkZW50aWZpZXJzIGJhc2VkIG9uIHRoZSBt
b2RlLgorICAgICAgICBJdCBtYWtlcyB0aGF0IFByb3BlcnR5TmFtZUFycmF5IGRvZXNuJ3QgYmVj
b21lIHNvIGxhcmdlLgorICAgICAgICBBbmQgaXQgZW5zdXJlcyB0aGF0IG5vbi1leHBlY3RlZCB0
eXBlZCBrZXlzIGJ5IHRoZSBmaWx0ZXIgKFN5bWJvbHMgb3IgU3RyaW5ncykgYXJlIG5ldmVyIGFk
ZGVkCisgICAgICAgIHRvIHRoZSBwcm9wZXJ0eSBuYW1lIGFycmF5IGNvbGxlY3Rpb25zLgorICAg
ICAgICBIb3dldmVyIGl0IGRvZXMgbm90IHNvbHZlIHRoZSB3aG9sZSBwcm9ibGVtIGJlY2F1c2Ug
dGhlIGh1Z2UgYXJyYXkgc3RpbGwgaW5jdXJzIHRoZSBtYW55CisgICAgICAgICJpbmRleGVkIHBy
b3BlcnR5IHRvIHVuaXF1ZWQgc3RyaW5nIiBjb252ZXJzaW9uIGFuZCB0aGUgbGFyZ2UgaXRlcmF0
aW9uIGJlZm9yZSBhZGRpbmcgdGhlIGtleXMKKyAgICAgICAgdG8gdGhlIHByb3BlcnR5IG5hbWUg
YXJyYXkuCisKKyAgICAgICAgMi4gZ2V0T3duUHJvcGVydHlOYW1lcyBzaWRlCisgICAgICAgIFNv
IHdlIGNhbiB1c2UgdGhlIFByb3BlcnRpZXNUeXBlTW9kZSBpbiB0aGUgY2FsbGVyIHNpZGUgKGdl
dE93blByb3BlcnR5TmFtZXMpIGFzIGEgKipoaW50KiouCisgICAgICAgIFdoZW4gdGhlIGxhcmdl
IGl0ZXJhdGlvbiBtYXkgb2NjdXIsIHRoZSBjYWxsZXIgc2lkZSBjYW4gdXNlIHRoZSBQcm9wZXJ0
aWVzVHlwZU1vZGUgYXMgYSBoaW50IHRvCisgICAgICAgIGF2b2lkIHRoZSBpdGVyYXRpb24uCisg
ICAgICAgIEJ1dCB3ZSBkb24ndCBoZWF2aWx5IHJlbHkgb24gdGhpcyBzeXN0ZW07IGl0IG1lYW5z
IHRoYXQgZ2V0T3duUHJvcGVydHlOYW1lcyBtYXkgYWRkIHdyb25nIHR5cGVkCisgICAgICAgIGtl
eXMgKGFkZGluZyB0aGUgc3RyaW5nIGtleXMgaW4gdGhlIGNvbnRleHQgcmVxdWlyaW5nIHRoZSBz
eW1ib2wga2V5cykgYmVjYXVzZSByZWx5aW5nIG9uIHRoZQorICAgICAgICBjYXJlZnVsIGNvZGlu
ZyBpbiB0aGUgZ2V0T3duUHJvcGVydHlOYW1lcyBzaWRlIGlzIG11Y2ggZXJyb3IgcHJvbmUuIFVz
ZXJzIG1heSBhZGQgdGhlIHN0cmluZyBrZXkKKyAgICAgICAgaW4gdGhlIGNvbnRleHQgb25seSBy
ZXF1aXJpbmcgdGhlIHN5bWJvbCBrZXlzLgorICAgICAgICBTbyB0aGUgZ3VhcmFudGVlIHN1Y2gg
YXMgIm9ubHkgc3ltYm9scyBhcmUgaW5jbHVkZWQgaWYgdGhlIFByb3BlcnRpZXNUeXBlTW9kZSBp
cyBTeW1ib2xzIiBpcworICAgICAgICBlbnN1cmVkIGluIHRoZSBQcm9wZXJ0eU5hbWVBcnJheSBz
aWRlLgorCisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTT2JqZWN0
Q29weVByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcDoK
KyAgICAgICAgKERlcHJlY2F0ZWQ6OmpzVG9JbnNwZWN0b3JWYWx1ZSk6CisgICAgICAgICogYnl0
ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxs
b2NhdGlvblByb2ZpbGU6OnBvc3NpYmxlRGVmYXVsdFByb3BlcnR5Q291bnQpOgorICAgICAgICAq
IHJ1bnRpbWUvRW51bWVyYXRpb25Nb2RlLmg6CisgICAgICAgIChKU0M6OkVudW1lcmF0aW9uTW9k
ZTo6RW51bWVyYXRpb25Nb2RlKToKKyAgICAgICAgKEpTQzo6RW51bWVyYXRpb25Nb2RlOjppbmNs
dWRlU3ltYm9sUHJvcGVydGllcyk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9HZW5lcmlj
QXJndW1lbnRzSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpHZW5lcmljQXJndW1lbnRzPFR5cGU+
OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9KU0xl
eGljYWxFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVudmlyb25tZW50
OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPTk9i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjpTdHJpbmdpZmllcik6CisgICAg
ICAgIChKU0M6OlN0cmluZ2lmaWVyOjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eSk6CisgICAg
ICAgIChKU0M6OldhbGtlcjo6d2Fsayk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAg
KiBydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpT
UHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJv
cGVydHlOYW1lRW51bWVyYXRvci5oOgorICAgICAgICAoSlNDOjpwcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpKU1N5bWJvbFRhYmxlT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMp
OgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlND
OjpvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpv
YmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9scyk6CisgICAgICAgIChKU0M6Om9i
amVjdENvbnN0cnVjdG9yS2V5cyk6CisgICAgICAgIChKU0M6OmRlZmluZVByb3BlcnRpZXMpOgor
ICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvclNlYWwpOgorICAgICAgICAoSlNDOjpvYmpl
Y3RDb25zdHJ1Y3RvckZyZWV6ZSk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9ySXNT
ZWFsZWQpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcklzRnJvemVuKToKKyAgICAg
ICAgKiBydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5Lmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5
TmFtZUFycmF5OjpQcm9wZXJ0eU5hbWVBcnJheSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFt
ZUFycmF5Ojp0eXBlTW9kZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZUFycmF5OjphZGRL
bm93blVuaXF1ZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZUFycmF5OjphZGQpOgorICAg
ICAgICAoSlNDOjpQcm9wZXJ0eU5hbWVBcnJheTo6aXNVaWRNYXRjaGVkVG9UeXBlTW9kZSk6Cisg
ICAgICAgIChKU0M6OlByb3BlcnR5TmFtZUFycmF5OjppbmNsdWRlU3ltYm9sUHJvcGVydGllcyk6
CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZUFycmF5OjppbmNsdWRlU3RyaW5nUHJvcGVydGll
cyk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpT
dHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvU3Ry
dWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzRnJv
bVN0cnVjdHVyZSk6CisKKzIwMTUtMDctMjIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisKICAgICAgICAgSW50cm9kdWNpbmcgY29uc3RydWN0IGFiaWxpdHkgaW50byBK
UyBleGVjdXRhYmxlcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQ3MTgzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0YjM3ZmVjYTIxMjQ3ODE2ODk4YzAzYmQ2OGI1
NzhjNjgwMDI2YjZiLi5hOGI0ZWZhOWU5MzA1ODRkZTBkMDVhNzI4NzUwZDBmOGY0MThkMjg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTUtMDctMjIgIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5U3lt
Ym9scyBvbiBsYXJnZSBsaXN0IHRha2VzIHZlcnkgbG9uZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2MTM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6OmdldE93blByb3BlcnRpZXNBc1N0cmluZ0hh
c2hNYXApOgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6Z2V0T3duUHJvcGVydHlOYW1l
cyk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKToKKyAgICAgICAgKiBi
cmlkZ2UvTlBfanNvYmplY3QuY3BwOgorICAgICAgICAoX05QTl9FbnVtZXJhdGUpOgorCiAyMDE1
LTA3LTIyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAg
IENvb3JkaW5hdGVzLWJhc2VkIHNuYXAgb2Zmc2V0cyBkb24ndCB1cGRhdGUgY29ycmVjdGx5IHdo
ZW4gY29udGFpbmVyIGlzIHNjcm9sbGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggOWVjMzE3NTkzYmQw
NDZlOTNmMDk2MmU4YmVmZDQ1OGZmZDYyYTEzNC4uYTllZTY0ZWI3NTg2ZjhkOGE1MjZiODM0MWM2
MDA1MjM2YWUxNmE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTA3
LTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIE9i
amVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgb24gbGFyZ2UgbGlzdCB0YWtlcyB2ZXJ5IGxvbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjEzNwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lu
cy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0
OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmVudW1lcmF0ZSk6CisKIDIwMTUtMDctMjEg
IEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBbTWFjXSAiT3BlbiBJbWFnZSBJbiBOZXcgV2luZG93IiBjb250ZXh0IG1lbnUgaXRl
bSBkb2VzIG5vdGhpbmcgb24gYW4gaW1hZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmYTJlZDJlM2NjNzdkY2Zl
YjdjMWUyYWY0OGVmYzI0MzljZDFjOGQzLi5lZGYyYzU1NGVjOWRmYWNhZjA3ZjMwZWIyYmRjZDVj
ZmQ0OTJjNTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDctMjIgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgT2JqZWN0LmdldE93
blByb3BlcnR5U3ltYm9scyBvbiBsYXJnZSBsaXN0IHRha2VzIHZlcnkgbG9uZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2MTM3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QSlNPYmplY3Q6
OmVudW1lcmF0ZSk6CisKIDIwMTUtMDctMjIgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxODcxOTYuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4IGZhZjM4ZmY4YzIz
ZTlkZjA4YTAzMDBhNTk0MWUxN2EzNTQ2ZDdlYjQuLjgzYmEzODE1NTAyOTY5MzE4OTc1ZDdhYTll
YWIxNmU0MzQ1NWRiYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNP
YmplY3RSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYu
Y3BwCkBAIC02MjIsNyArNjIyLDcgQEAgSlNQcm9wZXJ0eU5hbWVBcnJheVJlZiBKU09iamVjdENv
cHlQcm9wZXJ0eU5hbWVzKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG8KIAogICAgIEpT
T2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKICAgICBKU1Byb3BlcnR5TmFtZUFycmF5
UmVmIHByb3BlcnR5TmFtZXMgPSBuZXcgT3BhcXVlSlNQcm9wZXJ0eU5hbWVBcnJheSh2bSk7Ci0g
ICAgUHJvcGVydHlOYW1lQXJyYXkgYXJyYXkodm0pOworICAgIFByb3BlcnR5TmFtZUFycmF5IGFy
cmF5KHZtLCBQcm9wZXJ0aWVzVHlwZU1vZGU6OlN0cmluZ3MpOwogICAgIGpzT2JqZWN0LT5tZXRo
b2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKGpzT2JqZWN0LCBleGVjLCBhcnJheSwgRW51bWVy
YXRpb25Nb2RlKCkpOwogCiAgICAgc2l6ZV90IHNpemUgPSBhcnJheS5zaXplKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAppbmRleCAxNTNiMDMz
YTExNzgwZTAxZDBmY2IzNGI1ZjU5ZGFmN2QxY2Q3Y2Q4Li5hYjRjY2MyZmI4NTIyZDgwOWIzYmVk
MmZjNGMwY2NhMjMwOGRhM2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmlu
ZGluZ3MvU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5n
cy9TY3JpcHRWYWx1ZS5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCBib29sIFNjcmlwdFZhbHVlOjpp
c0Z1bmN0aW9uKCkgY29uc3QKICAgICAgICAgfQogICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0
PiBpbnNwZWN0b3JPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICBK
U09iamVjdCogb2JqZWN0ID0gdmFsdWUuZ2V0T2JqZWN0KCk7Ci0gICAgICAgIFByb3BlcnR5TmFt
ZUFycmF5IHByb3BlcnR5TmFtZXMoc2NyaXB0U3RhdGUpOworICAgICAgICBQcm9wZXJ0eU5hbWVB
cnJheSBwcm9wZXJ0eU5hbWVzKHNjcmlwdFN0YXRlLCBQcm9wZXJ0aWVzVHlwZU1vZGU6OlN0cmlu
Z3MpOwogICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMo
b2JqZWN0LCBzY3JpcHRTdGF0ZSwgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKCkpOwog
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3BlcnR5TmFtZXMuc2l6ZSgpOyBpKysp
IHsKICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUgPSBwcm9wZXJ0eU5hbWVzW2ld
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9j
YXRpb25Qcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0QWxs
b2NhdGlvblByb2ZpbGUuaAppbmRleCBjYjQxNDhlZTRmNTMyODYzMWZlYzRjMTQ4ZmRmNGMzMzU0
ZmM3M2RjLi5jMTY1YjIxMWJkYWFlMjkwYWY5NGYxNjE1YmI3Njk5ZGNkOGIxMWI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlv
blByb2ZpbGUuaApAQCAtMTI3LDcgKzEyNyw3IEBAIGNsYXNzIE9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlIHsKICAgICAgICAgICAgIHJldHVybiAwOwogCiAgICAgICAgIHNpemVfdCBjb3VudCA9IDA7
Ci0gICAgICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZUFycmF5KCZ2bSk7CisgICAg
ICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZUFycmF5KCZ2bSwgUHJvcGVydGllc1R5
cGVNb2RlOjpCb3RoKTsKICAgICAgICAgcHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+Z2V0UHJvcGVy
dHlOYW1lc0Zyb21TdHJ1Y3R1cmUodm0sIHByb3BlcnR5TmFtZUFycmF5LCBFbnVtZXJhdGlvbk1v
ZGUoKSk7CiAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5RGF0YTo6UHJvcGVydHlOYW1lVmVjdG9y
JiBwcm9wZXJ0eU5hbWVWZWN0b3IgPSBwcm9wZXJ0eU5hbWVBcnJheS5kYXRhKCktPnByb3BlcnR5
TmFtZVZlY3RvcigpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3BlcnR5TmFt
ZVZlY3Rvci5zaXplKCk7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRW51bWVyYXRpb25Nb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FbnVtZXJhdGlvbk1vZGUuaAppbmRleCAzZTk1ZWQzMmY2YjRkMTIwMTQ2OTAzNDQwOGY2M2Fi
NTBiZmU2NTMwLi4yZWUxNTM2ZGZiYWRhYjAwYTBhOTUzMTNhNWQ5ODM5ZWViNjU0NGM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FbnVtZXJhdGlvbk1vZGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FbnVtZXJhdGlvbk1vZGUuaApAQCAt
MjgsNiArMjgsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2VudW0gY2xhc3MgUHJvcGVydGll
c1R5cGVNb2RlIHsKKyAgICBTeW1ib2xzID0gMSwKKyAgICBTdHJpbmdzID0gMiwKKyAgICBCb3Ro
ID0gMywKK307CisKIGVudW0gY2xhc3MgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZSB7CiAgICAgSW5j
bHVkZSwKICAgICBFeGNsdWRlCkBAIC00NSwxNiArNTEsMTQgQEAgZW51bSBjbGFzcyBKU09iamVj
dFByb3BlcnRpZXNNb2RlIHsKIAogY2xhc3MgRW51bWVyYXRpb25Nb2RlIHsKIHB1YmxpYzoKLSAg
ICBFbnVtZXJhdGlvbk1vZGUoRG9udEVudW1Qcm9wZXJ0aWVzTW9kZSBkb250RW51bVByb3BlcnRp
ZXNNb2RlID0gRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6RXhjbHVkZSwgU3ltYm9sUHJvcGVydGll
c01vZGUgc3ltYm9sUHJvcGVydGllc01vZGUgPSBTeW1ib2xQcm9wZXJ0aWVzTW9kZTo6RXhjbHVk
ZSwgSlNPYmplY3RQcm9wZXJ0aWVzTW9kZSBqc09iamVjdFByb3BlcnRpZXNNb2RlID0gSlNPYmpl
Y3RQcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkKKyAgICBFbnVtZXJhdGlvbk1vZGUoRG9udEVudW1Q
cm9wZXJ0aWVzTW9kZSBkb250RW51bVByb3BlcnRpZXNNb2RlID0gRG9udEVudW1Qcm9wZXJ0aWVz
TW9kZTo6RXhjbHVkZSwgSlNPYmplY3RQcm9wZXJ0aWVzTW9kZSBqc09iamVjdFByb3BlcnRpZXNN
b2RlID0gSlNPYmplY3RQcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkKICAgICAgICAgOiBtX2RvbnRF
bnVtUHJvcGVydGllc01vZGUoZG9udEVudW1Qcm9wZXJ0aWVzTW9kZSkKLSAgICAgICAgLCBtX3N5
bWJvbFByb3BlcnRpZXNNb2RlKHN5bWJvbFByb3BlcnRpZXNNb2RlKQogICAgICAgICAsIG1fanNP
YmplY3RQcm9wZXJ0aWVzTW9kZShqc09iamVjdFByb3BlcnRpZXNNb2RlKQogICAgIHsKICAgICB9
CiAKICAgICBFbnVtZXJhdGlvbk1vZGUoY29uc3QgRW51bWVyYXRpb25Nb2RlJiBtb2RlLCBKU09i
amVjdFByb3BlcnRpZXNNb2RlIGpzT2JqZWN0UHJvcGVydGllc01vZGUpCiAgICAgICAgIDogbV9k
b250RW51bVByb3BlcnRpZXNNb2RlKG1vZGUubV9kb250RW51bVByb3BlcnRpZXNNb2RlKQotICAg
ICAgICAsIG1fc3ltYm9sUHJvcGVydGllc01vZGUobW9kZS5tX3N5bWJvbFByb3BlcnRpZXNNb2Rl
KQogICAgICAgICAsIG1fanNPYmplY3RQcm9wZXJ0aWVzTW9kZShqc09iamVjdFByb3BlcnRpZXNN
b2RlKQogICAgIHsKICAgICB9CkBAIC02NiwxMSArNzAsNiBAQCBjbGFzcyBFbnVtZXJhdGlvbk1v
ZGUgewogICAgICAgICByZXR1cm4gbV9kb250RW51bVByb3BlcnRpZXNNb2RlID09IERvbnRFbnVt
UHJvcGVydGllc01vZGU6OkluY2x1ZGU7CiAgICAgfQogCi0gICAgYm9vbCBpbmNsdWRlU3ltYm9s
UHJvcGVydGllcygpCi0gICAgewotICAgICAgICByZXR1cm4gbV9zeW1ib2xQcm9wZXJ0aWVzTW9k
ZSA9PSBTeW1ib2xQcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZTsKLSAgICB9Ci0KICAgICBib29sIGlu
Y2x1ZGVKU09iamVjdFByb3BlcnRpZXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fanNPYmpl
Y3RQcm9wZXJ0aWVzTW9kZSA9PSBKU09iamVjdFByb3BlcnRpZXNNb2RlOjpJbmNsdWRlOwpAQCAt
NzgsNyArNzcsNiBAQCBjbGFzcyBFbnVtZXJhdGlvbk1vZGUgewogCiBwcml2YXRlOgogICAgIERv
bnRFbnVtUHJvcGVydGllc01vZGUgbV9kb250RW51bVByb3BlcnRpZXNNb2RlOwotICAgIFN5bWJv
bFByb3BlcnRpZXNNb2RlIG1fc3ltYm9sUHJvcGVydGllc01vZGU7CiAgICAgSlNPYmplY3RQcm9w
ZXJ0aWVzTW9kZSBtX2pzT2JqZWN0UHJvcGVydGllc01vZGU7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaApp
bmRleCA1Zjk1MmM2ZjJiZmVkYjc5ZjRiYjQ1OTM1MTYxNGViMThmNmZhODA3Li45YjE4MDAxODU3
ODEwNWM1NTE2OTcyMGFlNTg3N2MzZTNlMjQ2ZGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKQEAgLTc4LDE2
ICs3OCwxOSBAQAogdm9pZCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpnZXRPd25Qcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkm
IGFycmF5LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKICAgICBUeXBlKiB0aGlzT2JqZWN0ID0g
anNDYXN0PFR5cGUqPihvYmplY3QpOwotICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0aGlzT2JqZWN0LT5pbnRlcm5hbExlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgaWYgKCF0aGlz
T2JqZWN0LT5jYW5BY2Nlc3NJbmRleFF1aWNrbHkoaSkpCi0gICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgYXJyYXkuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkpOworCisgICAgaWYg
KGFycmF5LmluY2x1ZGVTdHJpbmdQcm9wZXJ0aWVzKCkpIHsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHRoaXNPYmplY3QtPmludGVybmFsTGVuZ3RoKCk7ICsraSkgeworICAgICAg
ICAgICAgaWYgKCF0aGlzT2JqZWN0LT5jYW5BY2Nlc3NJbmRleFF1aWNrbHkoaSkpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBhcnJheS5hZGQoSWRlbnRpZmllcjo6ZnJv
bShleGVjLCBpKSk7CisgICAgICAgIH0KICAgICB9CisKICAgICBpZiAobW9kZS5pbmNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzKCkgJiYgIXRoaXNPYmplY3QtPm92ZXJyb2RlVGhpbmdzKCkpIHsKICAg
ICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpOwogICAgICAgICBh
cnJheS5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxlZSk7Ci0gICAgICAgIGlmIChtb2Rl
LmluY2x1ZGVTeW1ib2xQcm9wZXJ0aWVzKCkpCisgICAgICAgIGlmIChhcnJheS5pbmNsdWRlU3lt
Ym9sUHJvcGVydGllcygpKQogICAgICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5pdGVyYXRvclN5bWJvbCk7CiAgICAgfQogICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFt
ZXModGhpc09iamVjdCwgZXhlYywgYXJyYXksIG1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGlu
ZXMuaAppbmRleCBlYzY1M2RjZGM0ODg5ZDRlOTVjMTRiZDQ5YmE4ZDgyMTEyYzk1N2YwLi5lOWVk
MWU5OThhYTlhNTA4ZDFhZWYwNTNmYWU4ODJmNDI2M2RjOWQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
d0lubGluZXMuaApAQCAtNDIzLDkgKzQyMywxMSBAQAogICAgIEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIGFycmF5LCBFbnVtZXJhdGlvbk1vZGUg
bW9kZSkKIHsKICAgICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyo+KG9iamVjdCk7Ci0gICAgCi0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHRoaXNPYmplY3QtPm1fbGVuZ3RoOyArK2kpCi0gICAgICAgIGFycmF5
LmFkZChJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTsKKworICAgIGlmIChhcnJheS5pbmNsdWRl
U3RyaW5nUHJvcGVydGllcygpKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0
aGlzT2JqZWN0LT5tX2xlbmd0aDsgKytpKQorICAgICAgICAgICAgYXJyYXkuYWRkKElkZW50aWZp
ZXI6OmZyb20oZXhlYywgaSkpOworICAgIH0KICAgICAKICAgICByZXR1cm4gQmFzZTo6Z2V0T3du
UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIGFycmF5LCBtb2RlKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcApp
bmRleCA2MDc2ODc0NjAxMDdhMGQ4YjAxOWNkN2ZhN2NlYTI5MjRmYjU2MmZhLi40N2E4MWI1ZjM3
MGEyZTA2OGIyZmMyMmQyZDBlNjdkNjRkMTJkYTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCkBAIC05OSw3ICs5
OSw3IEBAIHZvaWQgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICBpZiAoIXRoaXNPYmplY3QtPmlzVmFsaWQoaXQtPnZhbHVlLnNjb3BlT2Zm
c2V0KCkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKGl0LT5r
ZXktPmlzU3ltYm9sKCkgJiYgIW1vZGUuaW5jbHVkZVN5bWJvbFByb3BlcnRpZXMoKSkKKyAgICAg
ICAgICAgIGlmIChpdC0+a2V5LT5pc1N5bWJvbCgpICYmICFwcm9wZXJ0eU5hbWVzLmluY2x1ZGVT
eW1ib2xQcm9wZXJ0aWVzKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIGl0LT5rZXkuZ2V0
KCkpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPTk9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2Jq
ZWN0LmNwcAppbmRleCA2MWRjMDQ2YjBkMmI5MWRlY2FlN2I4Nzk4ZjIwNTcwMmRkZDUyZjViLi5h
MjVhOGY4NDNiNWQ0ZWFlZTc1ZTM4MzVlZGYxZDFiNGJlYjA5MGQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIEpT
VmFsdWUgUHJvcGVydHlOYW1lRm9yRnVuY3Rpb25DYWxsOjp2YWx1ZShFeGVjU3RhdGUqIGV4ZWMp
IGNvbnN0CiAgICAgOiBtX2V4ZWMoZXhlYykKICAgICAsIG1fcmVwbGFjZXIocmVwbGFjZXIpCiAg
ICAgLCBtX3VzaW5nQXJyYXlSZXBsYWNlcihmYWxzZSkKLSAgICAsIG1fYXJyYXlSZXBsYWNlclBy
b3BlcnR5TmFtZXMoZXhlYykKKyAgICAsIG1fYXJyYXlSZXBsYWNlclByb3BlcnR5TmFtZXMoZXhl
YywgUHJvcGVydGllc1R5cGVNb2RlOjpTdHJpbmdzKQogICAgICwgbV9yZXBsYWNlckNhbGxUeXBl
KENhbGxUeXBlTm9uZSkKICAgICAsIG1fZ2FwKGdhcChleGVjLCBzcGFjZS5nZXQoKSkpCiB7CkBA
IC00MjcsNyArNDI3LDcgQEAgYm9vbCBTdHJpbmdpZmllcjo6SG9sZGVyOjphcHBlbmROZXh0UHJv
cGVydHkoU3RyaW5naWZpZXImIHN0cmluZ2lmaWVyLCBTdHJpbmdCdWkKICAgICAgICAgICAgIGlm
IChzdHJpbmdpZmllci5tX3VzaW5nQXJyYXlSZXBsYWNlcikKICAgICAgICAgICAgICAgICBtX3By
b3BlcnR5TmFtZXMgPSBzdHJpbmdpZmllci5tX2FycmF5UmVwbGFjZXJQcm9wZXJ0eU5hbWVzLmRh
dGEoKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIFByb3BlcnR5TmFtZUFy
cmF5IG9iamVjdFByb3BlcnR5TmFtZXMoZXhlYyk7CisgICAgICAgICAgICAgICAgUHJvcGVydHlO
YW1lQXJyYXkgb2JqZWN0UHJvcGVydHlOYW1lcyhleGVjLCBQcm9wZXJ0aWVzVHlwZU1vZGU6OlN0
cmluZ3MpOwogICAgICAgICAgICAgICAgIG1fb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Q
cm9wZXJ0eU5hbWVzKG1fb2JqZWN0LmdldCgpLCBleGVjLCBvYmplY3RQcm9wZXJ0eU5hbWVzLCBF
bnVtZXJhdGlvbk1vZGUoKSk7CiAgICAgICAgICAgICAgICAgbV9wcm9wZXJ0eU5hbWVzID0gb2Jq
ZWN0UHJvcGVydHlOYW1lcy5yZWxlYXNlRGF0YSgpOwogICAgICAgICAgICAgfQpAQCAtNjQ0LDcg
KzY0NCw3IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHVlIHVuZmls
dGVyZWQpCiAgICAgICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGluVmFs
dWUpOwogICAgICAgICAgICAgICAgIG9iamVjdFN0YWNrLnB1c2gob2JqZWN0KTsKICAgICAgICAg
ICAgICAgICBpbmRleFN0YWNrLmFwcGVuZCgwKTsKLSAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0
YWNrLmFwcGVuZChQcm9wZXJ0eU5hbWVBcnJheShtX2V4ZWMpKTsKKyAgICAgICAgICAgICAgICBw
cm9wZXJ0eVN0YWNrLmFwcGVuZChQcm9wZXJ0eU5hbWVBcnJheShtX2V4ZWMsIFByb3BlcnRpZXNU
eXBlTW9kZTo6U3RyaW5ncykpOwogICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUo
KS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0
KCksIEVudW1lcmF0aW9uTW9kZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG9iamVj
dFN0YXJ0VmlzaXRNZW1iZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5jcHAKaW5kZXggZDIwZGFhMjA0NTFkMmZiZWYzM2JjZDkxMzQ5MTA0ZjFmYmNiNTg3My4uYTU0
ZmFjYmRjMTMwZDNiNDEzMjE5NmIyOTM2ZWE1OWQwZjA0MTc1NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtMTUwMiw2NyArMTUwMiw2OSBAQCB2b2lk
IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gQWRk
IG51bWVyaWMgcHJvcGVydGllcyBmaXJzdC4gVGhhdCBhcHBlYXJzIHRvIGJlIHRoZSBhY2NlcHRl
ZCBjb252ZW50aW9uLgotICAgIC8vIEZJWE1FOiBGaWxsaW5nIFByb3BlcnR5TmFtZUFycmF5IHdp
dGggYW4gaWRlbnRpZmllciBmb3IgZXZlcnkgaW50ZWdlcgotICAgIC8vIGlzIGluY3JlZGlibHkg
aW5lZmZpY2llbnQgZm9yIGxhcmdlIGFycmF5cy4gV2UgbmVlZCBhIGRpZmZlcmVudCBhcHByb2Fj
aCwKLSAgICAvLyB3aGljaCBhbG1vc3QgY2VydGFpbmx5IG1lYW5zIGEgZGlmZmVyZW50IHN0cnVj
dHVyZSBmb3IgUHJvcGVydHlOYW1lQXJyYXkuCi0gICAgc3dpdGNoIChvYmplY3QtPmluZGV4aW5n
VHlwZSgpKSB7Ci0gICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6Ci0gICAgY2FzZSBB
TExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgotICAgICAgICBicmVhazsKLSAgICAgICAgCi0g
ICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6Ci0gICAgY2FzZSBBTExfQ09OVElHVU9V
U19JTkRFWElOR19UWVBFUzogewotICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IG9iamVj
dC0+YnV0dGVyZmx5KCk7Ci0gICAgICAgIHVuc2lnbmVkIHVzZWRMZW5ndGggPSBidXR0ZXJmbHkt
PnB1YmxpY0xlbmd0aCgpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdXNlZExl
bmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoIWJ1dHRlcmZseS0+Y29udGlndW91cygpW2ld
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5h
ZGQoaSk7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgICAgICAKLSAgICBj
YXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6IHsKLSAgICAgICAgQnV0dGVyZmx5KiBidXR0
ZXJmbHkgPSBvYmplY3QtPmJ1dHRlcmZseSgpOwotICAgICAgICB1bnNpZ25lZCB1c2VkTGVuZ3Ro
ID0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHVzZWRMZW5ndGg7ICsraSkgewotICAgICAgICAgICAgZG91YmxlIHZhbHVlID0gYnV0
dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV07Ci0gICAgICAgICAgICBpZiAodmFsdWUgIT0g
dmFsdWUpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBwcm9wZXJ0eU5h
bWVzLmFkZChpKTsKKyAgICBpZiAocHJvcGVydHlOYW1lcy5pbmNsdWRlU3RyaW5nUHJvcGVydGll
cygpKSB7CisgICAgICAgIC8vIEFkZCBudW1lcmljIHByb3BlcnRpZXMgZmlyc3QuIFRoYXQgYXBw
ZWFycyB0byBiZSB0aGUgYWNjZXB0ZWQgY29udmVudGlvbi4KKyAgICAgICAgLy8gRklYTUU6IEZp
bGxpbmcgUHJvcGVydHlOYW1lQXJyYXkgd2l0aCBhbiBpZGVudGlmaWVyIGZvciBldmVyeSBpbnRl
Z2VyCisgICAgICAgIC8vIGlzIGluY3JlZGlibHkgaW5lZmZpY2llbnQgZm9yIGxhcmdlIGFycmF5
cy4gV2UgbmVlZCBhIGRpZmZlcmVudCBhcHByb2FjaCwKKyAgICAgICAgLy8gd2hpY2ggYWxtb3N0
IGNlcnRhaW5seSBtZWFucyBhIGRpZmZlcmVudCBzdHJ1Y3R1cmUgZm9yIFByb3BlcnR5TmFtZUFy
cmF5LgorICAgICAgICBzd2l0Y2ggKG9iamVjdC0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAg
Y2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CisgICAgICAgIGNhc2UgQUxMX1VOREVDSURF
RF9JTkRFWElOR19UWVBFUzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAg
ICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgorICAgICAgICBjYXNlIEFMTF9DT05U
SUdVT1VTX0lOREVYSU5HX1RZUEVTOiB7CisgICAgICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZs
eSA9IG9iamVjdC0+YnV0dGVyZmx5KCk7CisgICAgICAgICAgICB1bnNpZ25lZCB1c2VkTGVuZ3Ro
ID0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCB1c2VkTGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWJ1dHRl
cmZseS0+Y29udGlndW91cygpW2ldKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChpKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICAgICAg
Ci0gICAgY2FzZSBBTExfQVJSQVlfU1RPUkFHRV9JTkRFWElOR19UWVBFUzogewotICAgICAgICBB
cnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSBvYmplY3QtPm1fYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2Uo
KTsKLSAgICAgICAgCi0gICAgICAgIHVuc2lnbmVkIHVzZWRWZWN0b3JMZW5ndGggPSBzdGQ6Om1p
bihzdG9yYWdlLT5sZW5ndGgoKSwgc3RvcmFnZS0+dmVjdG9yTGVuZ3RoKCkpOwotICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdXNlZFZlY3Rvckxlbmd0aDsgKytpKSB7Ci0gICAgICAg
ICAgICBpZiAoc3RvcmFnZS0+bV92ZWN0b3JbaV0pCisgICAgICAgICAgICAKKyAgICAgICAgY2Fz
ZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7CisgICAgICAgICAgICBCdXR0ZXJmbHkqIGJ1
dHRlcmZseSA9IG9iamVjdC0+YnV0dGVyZmx5KCk7CisgICAgICAgICAgICB1bnNpZ25lZCB1c2Vk
TGVuZ3RoID0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsKKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCB1c2VkTGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBkb3Vi
bGUgdmFsdWUgPSBidXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXTsKKyAgICAgICAgICAg
ICAgICBpZiAodmFsdWUgIT0gdmFsdWUpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGkpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChTcGFyc2VB
cnJheVZhbHVlTWFwKiBtYXAgPSBzdG9yYWdlLT5tX3NwYXJzZU1hcC5nZXQoKSkgewotICAgICAg
ICAgICAgVmVjdG9yPHVuc2lnbmVkLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4ga2V5czsKLSAg
ICAgICAgICAgIGtleXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtYXAtPnNpemUoKSk7CiAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IG1hcC0+ZW5kKCk7Ci0gICAgICAgICAgICBmb3IgKFNwYXJzZUFycmF5VmFsdWVNYXA6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAg
ICAgICAgICAgICAgICBpZiAobW9kZS5pbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkgfHwgIShp
dC0+dmFsdWUuYXR0cmlidXRlcyAmIERvbnRFbnVtKSkKLSAgICAgICAgICAgICAgICAgICAga2V5
cy51bmNoZWNrZWRBcHBlbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGl0LT5rZXkpKTsKKyAgICAg
ICAgY2FzZSBBTExfQVJSQVlfU1RPUkFHRV9JTkRFWElOR19UWVBFUzogeworICAgICAgICAgICAg
QXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gb2JqZWN0LT5tX2J1dHRlcmZseS0+YXJyYXlTdG9yYWdl
KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHVuc2lnbmVkIHVzZWRWZWN0b3JMZW5ndGgg
PSBzdGQ6Om1pbihzdG9yYWdlLT5sZW5ndGgoKSwgc3RvcmFnZS0+dmVjdG9yTGVuZ3RoKCkpOwor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHVzZWRWZWN0b3JMZW5ndGg7ICsr
aSkgeworICAgICAgICAgICAgICAgIGlmIChzdG9yYWdlLT5tX3ZlY3RvcltpXSkKKyAgICAgICAg
ICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoaSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIHN0ZDo6c29ydChrZXlzLmJlZ2luKCksIGtleXMuZW5kKCkpOwot
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGtleXMuc2l6ZSgpOyArK2kpCi0g
ICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoa2V5c1tpXSk7CisgICAgICAgICAgICBp
ZiAoU3BhcnNlQXJyYXlWYWx1ZU1hcCogbWFwID0gc3RvcmFnZS0+bV9zcGFyc2VNYXAuZ2V0KCkp
IHsKKyAgICAgICAgICAgICAgICBWZWN0b3I8dW5zaWduZWQsIDAsIFVuc2FmZVZlY3Rvck92ZXJm
bG93PiBrZXlzOworICAgICAgICAgICAgICAgIGtleXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSht
YXAtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgU3BhcnNlQXJy
YXlWYWx1ZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbWFwLT5lbmQoKTsKKyAgICAgICAgICAg
ICAgICBmb3IgKFNwYXJzZUFycmF5VmFsdWVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWFwLT5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGUu
aW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpIHx8ICEoaXQtPnZhbHVlLmF0dHJpYnV0ZXMgJiBE
b250RW51bSkpCisgICAgICAgICAgICAgICAgICAgICAgICBrZXlzLnVuY2hlY2tlZEFwcGVuZChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oaXQtPmtleSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBzdGQ6OnNvcnQoa2V5cy5iZWdpbigpLCBrZXlz
LmVuZCgpKTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwga2V5cy5z
aXplKCk7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoa2V5c1tp
XSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICAgICAgCi0g
ICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9
CiAKICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Ob25JbmRleFBy
b3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IuY3BwCmluZGV4IDdlN2QxYWMzNmM5YWJjMjkxNDE5OWIzMTJmOWMwMzcyNjQ1ODdhNjUu
LjlmMDgxY2UxYTlhOWQ2ZDViNDY0MWQ4ZTZjMDg4M2IyNzI4ZDc2OWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yLmNwcApAQCAtMzYsNyArMzYsNyBAQAogSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBKU1By
b3BlcnR5TmFtZUVudW1lcmF0b3I6OmNyZWF0ZShWTSYgdm0pCiB7CiAgICAgaWYgKCF2bS5lbXB0
eVByb3BlcnR5TmFtZUVudW1lcmF0b3IuZ2V0KCkpIHsKLSAgICAgICAgUHJvcGVydHlOYW1lQXJy
YXkgcHJvcGVydHlOYW1lcygmdm0pOworICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0
eU5hbWVzKCZ2bSwgUHJvcGVydGllc1R5cGVNb2RlOjpTdHJpbmdzKTsKICAgICAgICAgdm0uZW1w
dHlQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yID0gU3Ryb25nPEpTQ2VsbD4odm0sIGNyZWF0ZSh2bSwg
MCwgMCwgMCwgcHJvcGVydHlOYW1lcykpOwogICAgIH0KICAgICByZXR1cm4ganNDYXN0PEpTUHJv
cGVydHlOYW1lRW51bWVyYXRvcio+KHZtLmVtcHR5UHJvcGVydHlOYW1lRW51bWVyYXRvci5nZXQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVy
dHlOYW1lRW51bWVyYXRvci5oCmluZGV4IDk0YjAzNDM1Yjk0OGE3MDAxOGY0YTk2ZDYwODhlYjVm
OWFiNTlkZDYuLmMyZTBhYWEyZTQyZjI2YjdkY2RhYmYxZjE3NGZkODVmZDY0YWZjMjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVy
YXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1l
RW51bWVyYXRvci5oCkBAIC0xMTUsNyArMTE1LDcgQEAgaW5saW5lIEpTUHJvcGVydHlOYW1lRW51
bWVyYXRvciogcHJvcGVydHlOYW1lRW51bWVyYXRvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWMK
IAogICAgIHVpbnQzMl90IG51bWJlclN0cnVjdHVyZVByb3BlcnRpZXMgPSAwOwogCi0gICAgUHJv
cGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKKyAgICBQcm9wZXJ0eU5hbWVBcnJh
eSBwcm9wZXJ0eU5hbWVzKGV4ZWMsIFByb3BlcnRpZXNUeXBlTW9kZTo6U3RyaW5ncyk7CiAKICAg
ICBpZiAoc3RydWN0dXJlLT5jYW5BY2Nlc3NQcm9wZXJ0aWVzUXVpY2tseSgpICYmIGluZGV4ZWRM
ZW5ndGggPT0gYmFzZS0+Z2V0QXJyYXlMZW5ndGgoKSkgewogICAgICAgICBiYXNlLT5tZXRob2RU
YWJsZSh2bSktPmdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoYmFzZSwgZXhlYywgcHJvcGVydHlO
YW1lcywgRW51bWVyYXRpb25Nb2RlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAppbmRleCBjMDhmZjU5NDg3YmY4ZGU3
MjdjYWFlNmE1ODM5YTI0Yzg4ZmU0NWZmLi4yMGI2NzNhNzA0NTBmYTU5OWIzNWFjMTg0NzdiZTI3
MTBmMjAwNDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5
bWJvbFRhYmxlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N5bWJvbFRhYmxlT2JqZWN0LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIEpTU3ltYm9sVGFi
bGVPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdAogICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBlbmQgPSB0aGlzT2Jq
ZWN0LT5zeW1ib2xUYWJsZSgpLT5lbmQobG9ja2VyKTsKICAgICAgICAgZm9yIChTeW1ib2xUYWJs
ZTo6TWFwOjppdGVyYXRvciBpdCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmJlZ2luKGxv
Y2tlcik7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgaWYgKCEoaXQtPnZhbHVlLmdl
dEF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCBtb2RlLmluY2x1ZGVEb250RW51bVByb3BlcnRp
ZXMoKSkgewotICAgICAgICAgICAgICAgIGlmIChpdC0+a2V5LT5pc1N5bWJvbCgpICYmICFtb2Rl
LmluY2x1ZGVTeW1ib2xQcm9wZXJ0aWVzKCkpCisgICAgICAgICAgICAgICAgaWYgKGl0LT5rZXkt
PmlzU3ltYm9sKCkgJiYgIXByb3BlcnR5TmFtZXMuaW5jbHVkZVN5bWJvbFByb3BlcnRpZXMoKSkK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgcHJvcGVydHlO
YW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBpdC0+a2V5LmdldCgpKSk7CiAgICAg
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5jcHAKaW5kZXggMWExMWUyOGQ3MjU1YjRjZGE3MTBjMWE5Y2JiNDk5ZGZmYWUx
MjM1My4uOGRkN2IxZDIxNjM5NWZmZmYzZjRkZWEyYmFjZDEyMDg2ZWEzMDY1MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApA
QCAtMjUzLDcgKzI1Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29u
c3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlCiAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGV4ZWMpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwo
KSk7Ci0gICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKKyAgICBQcm9wZXJ0
eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMsIFByb3BlcnRpZXNUeXBlTW9kZTo6U3RyaW5ncyk7
CiAgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1l
cyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3Bl
cnRpZXNNb2RlOjpJbmNsdWRlKSk7CiAgICAgSlNBcnJheSogbmFtZXMgPSBjb25zdHJ1Y3RFbXB0
eUFycmF5KGV4ZWMsIDApOwogICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5z
aXplKCk7CkBAIC0yNjgsOCArMjY4LDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9scyhFeGVjU3RhdGUqIGUKICAgICBK
U09iamVjdCogb2JqZWN0ID0gZXhlYy0+YXJndW1lbnQoMCkudG9PYmplY3QoZXhlYyk7CiAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVsbCgpKTsKLSAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAg
IG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGUoRG9udEVudW1Qcm9wZXJ0aWVz
TW9kZTo6SW5jbHVkZSwgU3ltYm9sUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsKKyAgICBQcm9w
ZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMsIFByb3BlcnRpZXNUeXBlTW9kZTo6U3ltYm9s
cyk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlO
YW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVBy
b3BlcnRpZXNNb2RlOjpJbmNsdWRlKSk7CiAgICAgSlNBcnJheSogbmFtZXMgPSBjb25zdHJ1Y3RF
bXB0eUFycmF5KGV4ZWMsIDApOwogICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGll
cy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKysp
IHsKQEAgLTI4Niw3ICsyODYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dENvbnN0cnVjdG9yS2V5cyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNPYmplY3QqIG9iamVjdCA9
IGV4ZWMtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7Ci0gICAg
UHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKKyAgICBQcm9wZXJ0eU5hbWVBcnJh
eSBwcm9wZXJ0aWVzKGV4ZWMsIFByb3BlcnRpZXNUeXBlTW9kZTo6U3RyaW5ncyk7CiAgICAgb2Jq
ZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3Qs
IGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZSgpKTsKICAgICBKU0FycmF5KiBrZXlz
ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKICAgICBzaXplX3QgbnVtUHJvcGVydGll
cyA9IHByb3BlcnRpZXMuc2l6ZSgpOwpAQCAtMzk3LDggKzM5Nyw4IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUq
IGV4ZWMpCiAKIHN0YXRpYyBKU1ZhbHVlIGRlZmluZVByb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogb2JqZWN0LCBKU09iamVjdCogcHJvcGVydGllcykKIHsKLSAgICBQcm9wZXJ0
eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgIGFzT2JqZWN0KHByb3BlcnRpZXMp
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChw
cm9wZXJ0aWVzKSwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVt
UHJvcGVydGllc01vZGU6OkV4Y2x1ZGUsIFN5bWJvbFByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSk7
CisgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjLCBQcm9wZXJ0aWVzVHlw
ZU1vZGU6OkJvdGgpOworICAgIGFzT2JqZWN0KHByb3BlcnRpZXMpLT5tZXRob2RUYWJsZShleGVj
LT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChwcm9wZXJ0aWVzKSwgZXhlYywg
cHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4
Y2x1ZGUpKTsKICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9IHByb3BlcnR5TmFtZXMuc2l6ZSgp
OwogICAgIFZlY3RvcjxQcm9wZXJ0eURlc2NyaXB0b3I+IGRlc2NyaXB0b3JzOwogICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIG1hcmtCdWZmZXI7CkBAIC00NjcsOCArNDY3LDggQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclNlYWwoRXhlY1N0YXRlKiBleGVj
KQogICAgIH0KIAogICAgIC8vIDIuIEZvciBlYWNoIG5hbWVkIG93biBwcm9wZXJ0eSBuYW1lIFAg
b2YgTywKLSAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAgIG9iamVj
dC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBl
eGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGUoRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6
SW5jbHVkZSwgU3ltYm9sUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsKKyAgICBQcm9wZXJ0eU5h
bWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMsIFByb3BlcnRpZXNUeXBlTW9kZTo6Qm90aCk7CisgICAg
b2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmpl
Y3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3BlcnRpZXNN
b2RlOjpJbmNsdWRlKSk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IHByb3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3Rf
aXRlcmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikg
ewogICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9ICppdGVyOwpAQCAtNTAxLDggKzUw
MSw4IEBAIEpTT2JqZWN0KiBvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiBvYmplY3QpCiAgICAgfQogCiAgICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQgb3du
IHByb3BlcnR5IG5hbWUgUCBvZiBPLAotICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMo
ZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVy
dHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51
bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlLCBTeW1ib2xQcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkp
OworICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYywgUHJvcGVydGllc1R5cGVN
b2RlOjpCb3RoKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Q
cm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlKERv
bnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gcHJvcGVydGllcy5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5
TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBpdGVy
ICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gKml0
ZXI7CkBAIC01NjEsOCArNTYxLDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RDb25zdHJ1Y3RvcklzU2VhbGVkKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ob2JqZWN0LT5pc1NlYWxlZChleGVjLT52bSgpKSkpOwog
CiAgICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQgb3duIHByb3BlcnR5IG5hbWUgUCBvZiBPLAotICAg
IFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRob2RU
YWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3Bl
cnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlLCBT
eW1ib2xQcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpOworICAgIFByb3BlcnR5TmFtZUFycmF5IHBy
b3BlcnRpZXMoZXhlYywgUHJvcGVydGllc1R5cGVNb2RlOjpCb3RoKTsKKyAgICBvYmplY3QtPm1l
dGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywg
cHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1
ZGUpKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcHJvcGVy
dGllcy5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBp
dGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAg
IElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gKml0ZXI7CkBAIC01OTQsOCArNTk0LDggQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzRnJvemVuKEV4ZWNT
dGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ob2Jq
ZWN0LT5pc0Zyb3plbihleGVjLT52bSgpKSkpOwogCiAgICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQg
b3duIHByb3BlcnR5IG5hbWUgUCBvZiBPLAotICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRp
ZXMoZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJv
cGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250
RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlLCBTeW1ib2xQcm9wZXJ0aWVzTW9kZTo6SW5jbHVk
ZSkpOworICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYywgUHJvcGVydGllc1R5
cGVNb2RlOjpCb3RoKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRP
d25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2Rl
KERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJh
eTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcHJvcGVydGllcy5lbmQoKTsKICAgICBmb3IgKFByb3Bl
cnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBp
dGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0g
Kml0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eU5hbWVBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1l
QXJyYXkuaAppbmRleCBjMmYxM2Q4YzM3MjlhZTVhYjdiZDM5ZGI3NGUzNDU4ODNlNGM4NjcyLi4y
MTA4NzZjNWZiZDUxNmJjZGM0ZTFjMjFiNWMzYjFjNDU2MTFkOTIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgKQEAgLTQ4LDE1ICs0
OCwxNSBAQCBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxQ
cm9wZXJ0eU5hbWVBcnJheURhdGE+IHsKIC8vIEZJWE1FOiBSZW5hbWUgdG8gUHJvcGVydHlOYW1l
QXJyYXlCdWlsZGVyLgogY2xhc3MgUHJvcGVydHlOYW1lQXJyYXkgewogcHVibGljOgotICAgIFBy
b3BlcnR5TmFtZUFycmF5KFZNKiB2bSkKKyAgICBQcm9wZXJ0eU5hbWVBcnJheShWTSogdm0sIFBy
b3BlcnRpZXNUeXBlTW9kZSB0eXBlTW9kZSkKICAgICAgICAgOiBtX2RhdGEoUHJvcGVydHlOYW1l
QXJyYXlEYXRhOjpjcmVhdGUoKSkKICAgICAgICAgLCBtX3ZtKHZtKQorICAgICAgICAsIG1fdHlw
ZU1vZGUodHlwZU1vZGUpCiAgICAgewogICAgIH0KIAotICAgIFByb3BlcnR5TmFtZUFycmF5KEV4
ZWNTdGF0ZSogZXhlYykKLSAgICAgICAgOiBtX2RhdGEoUHJvcGVydHlOYW1lQXJyYXlEYXRhOjpj
cmVhdGUoKSkKLSAgICAgICAgLCBtX3ZtKCZleGVjLT52bSgpKQorICAgIFByb3BlcnR5TmFtZUFy
cmF5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydGllc1R5cGVNb2RlIHR5cGVNb2RlKQorICAgICAg
ICA6IFByb3BlcnR5TmFtZUFycmF5KCZleGVjLT52bSgpLCB0eXBlTW9kZSkKICAgICB7CiAgICAg
fQogCkBAIC04NSwxMCArODUsMTcgQEAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXkgewogICAgIGNv
bnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLT5wcm9wZXJ0eU5hbWVW
ZWN0b3IoKS5iZWdpbigpOyB9CiAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKS5lbmQoKTsgfQogCisgICAgUHJvcGVydGll
c1R5cGVNb2RlIHR5cGVNb2RlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlTW9kZTsgfQorICAgIGJv
b2wgaW5jbHVkZVN5bWJvbFByb3BlcnRpZXMoKSBjb25zdDsKKyAgICBib29sIGluY2x1ZGVTdHJp
bmdQcm9wZXJ0aWVzKCkgY29uc3Q7CisKIHByaXZhdGU6CisgICAgYm9vbCBpc1VpZE1hdGNoZWRU
b1R5cGVNb2RlKFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudGlmaWVyKTsKKwogICAgIFJlZlB0cjxQ
cm9wZXJ0eU5hbWVBcnJheURhdGE+IG1fZGF0YTsKICAgICBIYXNoU2V0PFVuaXF1ZWRTdHJpbmdJ
bXBsKj4gbV9zZXQ7CiAgICAgVk0qIG1fdm07CisgICAgUHJvcGVydGllc1R5cGVNb2RlIG1fdHlw
ZU1vZGU7CiB9OwogCiBBTFdBWVNfSU5MSU5FIHZvaWQgUHJvcGVydHlOYW1lQXJyYXk6OmFkZChj
b25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQpAQCAtOTgsNiArMTA1LDggQEAgQUxXQVlTX0lO
TElORSB2b2lkIFByb3BlcnR5TmFtZUFycmF5OjphZGQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRp
ZmllcikKIAogQUxXQVlTX0lOTElORSB2b2lkIFByb3BlcnR5TmFtZUFycmF5OjphZGRLbm93blVu
aXF1ZShVbmlxdWVkU3RyaW5nSW1wbCogaWRlbnRpZmllcikKIHsKKyAgICBpZiAoIWlzVWlkTWF0
Y2hlZFRvVHlwZU1vZGUoaWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKICAgICBtX2RhdGEt
PnByb3BlcnR5TmFtZVZlY3RvcigpLmFwcGVuZChJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIGlk
ZW50aWZpZXIpKTsKIH0KIApAQCAtMTA3LDYgKzExNiw5IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBQ
cm9wZXJ0eU5hbWVBcnJheTo6YWRkKFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudGlmaWVyKQogCiAg
ICAgQVNTRVJUKGlkZW50aWZpZXIpOwogCisgICAgaWYgKCFpc1VpZE1hdGNoZWRUb1R5cGVNb2Rl
KGlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoc2l6ZSgpIDwgc2V0VGhy
ZXNob2xkKSB7CiAgICAgICAgIGlmIChtX2RhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpLmNvbnRh
aW5zKGlkZW50aWZpZXIpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTIyLDYgKzEzNCwyMyBA
QCBBTFdBWVNfSU5MSU5FIHZvaWQgUHJvcGVydHlOYW1lQXJyYXk6OmFkZChVbmlxdWVkU3RyaW5n
SW1wbCogaWRlbnRpZmllcikKICAgICBhZGRLbm93blVuaXF1ZShpZGVudGlmaWVyKTsKIH0KIAor
QUxXQVlTX0lOTElORSBib29sIFByb3BlcnR5TmFtZUFycmF5Ojppc1VpZE1hdGNoZWRUb1R5cGVN
b2RlKFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudGlmaWVyKQoreworICAgIGlmIChpZGVudGlmaWVy
LT5pc1N5bWJvbCgpKQorICAgICAgICByZXR1cm4gaW5jbHVkZVN5bWJvbFByb3BlcnRpZXMoKTsK
KyAgICByZXR1cm4gaW5jbHVkZVN0cmluZ1Byb3BlcnRpZXMoKTsKK30KKworQUxXQVlTX0lOTElO
RSBib29sIFByb3BlcnR5TmFtZUFycmF5OjppbmNsdWRlU3ltYm9sUHJvcGVydGllcygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190eXBlPFByb3BlcnRp
ZXNUeXBlTW9kZT46OnR5cGU+KG1fdHlwZU1vZGUpICYgc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5
aW5nX3R5cGU8UHJvcGVydGllc1R5cGVNb2RlPjo6dHlwZT4oUHJvcGVydGllc1R5cGVNb2RlOjpT
eW1ib2xzKTsKK30KKworQUxXQVlTX0lOTElORSBib29sIFByb3BlcnR5TmFtZUFycmF5OjppbmNs
dWRlU3RyaW5nUHJvcGVydGllcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0
ZDo6dW5kZXJseWluZ190eXBlPFByb3BlcnRpZXNUeXBlTW9kZT46OnR5cGU+KG1fdHlwZU1vZGUp
ICYgc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGU8UHJvcGVydGllc1R5cGVNb2RlPjo6
dHlwZT4oUHJvcGVydGllc1R5cGVNb2RlOjpTdHJpbmdzKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKICNlbmRpZiAvLyBQcm9wZXJ0eU5hbWVBcnJheV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAppbmRleCBlYjc0MzBlYjU1M2FkNzYwNzQ3
ODU0YjJmNjRlZWJlYjdlNTA4NzgyLi5iNWFhM2Y3MmQxMTBmNTkzZTEzZWE5YWRjZTE5ZjZkMWQy
ZTM4OTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVj
dC5jcHAKQEAgLTE0Niw5ICsxNDYsMTEgQEAgYm9vbCBTdHJpbmdPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQKIHZvaWQg
U3RyaW5nT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9u
TW9kZSBtb2RlKQogewogICAgIFN0cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJp
bmdPYmplY3QqPihvYmplY3QpOwotICAgIGludCBzaXplID0gdGhpc09iamVjdC0+aW50ZXJuYWxW
YWx1ZSgpLT5sZW5ndGgoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAg
ICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7CisgICAg
aWYgKHByb3BlcnR5TmFtZXMuaW5jbHVkZVN0cmluZ1Byb3BlcnRpZXMoKSkgeworICAgICAgICBp
bnQgc2l6ZSA9IHRoaXNPYmplY3QtPmludGVybmFsVmFsdWUoKS0+bGVuZ3RoKCk7CisgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgcHJvcGVydHlOYW1l
cy5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7CisgICAgfQogICAgIGlmIChtb2RlLmlu
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CiAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggY2EwOTdmN2M4
MjM2Mzg5NmY2MGJhODgyZjExYmJmZDJmNjA0MDYyNC4uOThkM2ZjMjAxNmIxNDE3ODlkNzVhNTVh
MWFjZmRkMGE2ZjZhMzlhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwCkBAIC05NDcsNyArOTQ3LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OmdldFByb3BlcnR5
TmFtZXNGcm9tU3RydWN0dXJlKFZNJiB2bSwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnQKICAg
ICBmb3IgKFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0eVRhYmxlKCktPmJl
Z2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgQVNTRVJUKGhhc05vbkVudW1l
cmFibGVQcm9wZXJ0aWVzKCkgfHwgIShpdGVyLT5hdHRyaWJ1dGVzICYgRG9udEVudW0pKTsKICAg
ICAgICAgaWYgKCEoaXRlci0+YXR0cmlidXRlcyAmIERvbnRFbnVtKSB8fCBtb2RlLmluY2x1ZGVE
b250RW51bVByb3BlcnRpZXMoKSkgewotICAgICAgICAgICAgaWYgKGl0ZXItPmtleS0+aXNTeW1i
b2woKSAmJiAhbW9kZS5pbmNsdWRlU3ltYm9sUHJvcGVydGllcygpKQorICAgICAgICAgICAgaWYg
KGl0ZXItPmtleS0+aXNTeW1ib2woKSAmJiAhcHJvcGVydHlOYW1lcy5pbmNsdWRlU3ltYm9sUHJv
cGVydGllcygpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKGtu
b3duVW5pcXVlKQogICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkS25vd25VbmlxdWUo
aXRlci0+a2V5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rp
b25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKaW5k
ZXggNWMyNDM2YTk0MjhlNjhhYzIzNDUwY2YzNGMzNDQ0ODg3Y2ExYWM4Zi4uNTI0MjQzMTBmMDAy
MGY1MTFmYjg4MWQ1OWViZGEwYTNkODc5NzFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvRGljdGlvbmFyeS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXRP
d25Qcm9wZXJ0aWVzQXNTdHJpbmdIYXNoTWFwKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBtYXAp
IGMKICAgICBKU09iamVjdCogb2JqZWN0ID0gIG1fZGljdGlvbmFyeS5pbml0aWFsaXplck9iamVj
dCgpOwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZGljdGlvbmFyeS5leGVjU3RhdGUoKTsKIAot
ICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYyk7CisgICAgUHJvcGVydHlO
YW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjLCBQcm9wZXJ0aWVzVHlwZU1vZGU6OlN0cmluZ3Mp
OwogICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKCkpOwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcHJvcGVydHlOYW1lcy5iZWdpbigpOyBpdCAhPSBwcm9wZXJ0
eU5hbWVzLmVuZCgpOyArK2l0KSB7CiAgICAgICAgIFN0cmluZyBzdHJpbmdLZXkgPSBpdC0+c3Ry
aW5nKCk7CkBAIC04Nyw3ICs4Nyw3IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0T3duUHJvcGVydHlO
YW1lcyhWZWN0b3I8U3RyaW5nPiYgbmFtZXMpIGNvbnN0CiAgICAgSlNPYmplY3QqIG9iamVjdCA9
ICBtX2RpY3Rpb25hcnkuaW5pdGlhbGl6ZXJPYmplY3QoKTsKICAgICBFeGVjU3RhdGUqIGV4ZWMg
PSBtX2RpY3Rpb25hcnkuZXhlY1N0YXRlKCk7CiAKLSAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9w
ZXJ0eU5hbWVzKGV4ZWMpOworICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhl
YywgUHJvcGVydGllc1R5cGVNb2RlOjpTdHJpbmdzKTsKICAgICBKU09iamVjdDo6Z2V0T3duUHJv
cGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSgp
KTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdCA9IHByb3Bl
cnR5TmFtZXMuYmVnaW4oKTsgaXQgIT0gcHJvcGVydHlOYW1lcy5lbmQoKTsgKytpdCkgewogICAg
ICAgICBTdHJpbmcgc3RyaW5nS2V5ID0gaXQtPnN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggNjc4NjEx
OTA2OTgwNWU3NWI3Yzk0YWRkY2Q3MTUyN2ZhZmQ3ZWJlMy4uMzM5NDI0YWQzNzgzMmQ4OGVlNGZj
ZDQyZmZjZjI4ZDM0MzY4MjhlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0xMjU0LDcgKzEyNTQsNyBAQCBTZXJp
YWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVlIGlu
KQogICAgICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLnJlbW92ZUxhc3QoKTsKICAgICAgICAg
ICAgICAgICAgICAgbGVuZ3RoU3RhY2sucmVtb3ZlTGFzdCgpOwogCi0gICAgICAgICAgICAgICAg
ICAgIHByb3BlcnR5U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYykpOworICAg
ICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0YWNrLmFwcGVuZChQcm9wZXJ0eU5hbWVBcnJheSht
X2V4ZWMsIFByb3BlcnRpZXNUeXBlTW9kZTo6U3RyaW5ncykpOwogICAgICAgICAgICAgICAgICAg
ICBhcnJheS0+bWV0aG9kVGFibGUoKS0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKGFycmF5
LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFbnVtZXJhdGlvbk1vZGUoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eVN0YWNrLmxhc3QoKS5zaXplKCkpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHdyaXRlKE5vbkluZGV4UHJvcGVydGllc1RhZyk7CkBAIC0xMzA0
LDcgKzEzMDQsNyBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNl
cmlhbGl6ZShKU1ZhbHVlIGluKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gRGF0YUNsb25l
RXJyb3I7CiAgICAgICAgICAgICAgICAgaW5wdXRPYmplY3RTdGFjay5hcHBlbmQoaW5PYmplY3Qp
OwogICAgICAgICAgICAgICAgIGluZGV4U3RhY2suYXBwZW5kKDApOwotICAgICAgICAgICAgICAg
IHByb3BlcnR5U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYykpOworICAgICAg
ICAgICAgICAgIHByb3BlcnR5U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYywg
UHJvcGVydGllc1R5cGVNb2RlOjpTdHJpbmdzKSk7CiAgICAgICAgICAgICAgICAgaW5PYmplY3Qt
Pm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMoaW5PYmplY3QsIG1fZXhlYywgcHJv
cGVydHlTdGFjay5sYXN0KCksIEVudW1lcmF0aW9uTW9kZSgpKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIG9iamVjdFN0YXJ0VmlzaXRNZW1iZXI6CkBAIC0xMzcyLDcgKzEzNzIsNyBAQCBT
ZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVl
IGluKQogICAgICAgICAgICAgICAgICAgICBtYXBJdGVyYXRvclN0YWNrLnJlbW92ZUxhc3QoKTsK
ICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGlucHV0T2JqZWN0U3RhY2su
bGFzdCgpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU01hcCo+
KG9iamVjdCkpOwotICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0YWNrLmFwcGVuZChQcm9w
ZXJ0eU5hbWVBcnJheShtX2V4ZWMpKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdGFj
ay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjLCBQcm9wZXJ0aWVzVHlwZU1vZGU6OlN0
cmluZ3MpKTsKICAgICAgICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRP
d25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwgRW51
bWVyYXRpb25Nb2RlKCkpOwogICAgICAgICAgICAgICAgICAgICB3cml0ZShOb25NYXBQcm9wZXJ0
aWVzVGFnKTsKICAgICAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5hcHBlbmQoMCk7CkBAIC0x
NDE2LDcgKzE0MTYsNyBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6
OnNlcmlhbGl6ZShKU1ZhbHVlIGluKQogICAgICAgICAgICAgICAgICAgICBzZXRJdGVyYXRvclN0
YWNrLnJlbW92ZUxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9
IGlucHV0T2JqZWN0U3RhY2subGFzdCgpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoanNE
eW5hbWljQ2FzdDxKU1NldCo+KG9iamVjdCkpOwotICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0
eVN0YWNrLmFwcGVuZChQcm9wZXJ0eU5hbWVBcnJheShtX2V4ZWMpKTsKKyAgICAgICAgICAgICAg
ICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjLCBQcm9w
ZXJ0aWVzVHlwZU1vZGU6OlN0cmluZ3MpKTsKICAgICAgICAgICAgICAgICAgICAgb2JqZWN0LT5t
ZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbV9leGVjLCBwcm9wZXJ0
eVN0YWNrLmxhc3QoKSwgRW51bWVyYXRpb25Nb2RlKCkpOwogICAgICAgICAgICAgICAgICAgICB3
cml0ZShOb25TZXRQcm9wZXJ0aWVzVGFnKTsKICAgICAgICAgICAgICAgICAgICAgaW5kZXhTdGFj
ay5hcHBlbmQoMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAppbmRleCAwOTRi
MWFlZDg2M2YxNjdhODA3NjY3MGJiNDVkNjllODgwNGY2YmNhLi4wZTgyOTQxMDIwNDVjNzM1ZTcx
Njc2MWNiMWJkZmNjNTRlYjU2MGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
TlBfanNvYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5j
cHAKQEAgLTQ0NSw3ICs0NDUsNyBAQCBib29sIF9OUE5fRW51bWVyYXRlKE5QUCwgTlBPYmplY3Qq
IG8sIE5QSWRlbnRpZmllcioqIGlkZW50aWZpZXIsIHVpbnQzMl90KiBjb3VudAogICAgICAgICAK
ICAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gcm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmds
b2JhbEV4ZWMoKTsKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgICAgIFBy
b3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYyk7CisgICAgICAgIFByb3BlcnR5TmFt
ZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYywgUHJvcGVydGllc1R5cGVNb2RlOjpTdHJpbmdzKTsK
IAogICAgICAgICBvYmotPmltcC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyhvYmot
PmltcCwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKCkpOwogICAgICAgICB1
bnNpZ25lZCBzaXplID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHByb3BlcnR5TmFtZXMuc2l6ZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVk
L05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQppbmRleCBhYmFlNzgxMTAxYWIzYmFhNTM2
YjIyZDFiM2MzZjFiOWY5MDNhYzQ5Li5kY2I2OGRlNjE0NDRjMGJjMDkyMjdkMjRhOTA4YmIzZWU2
MGJkMzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCkBAIC0xMjMwLDcgKzEyMzAs
NyBAQCBib29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZW51bWVyYXRlKHVpbnQzMl90
IG9iamVjdElELCBkYXRhX3QmIHJlc3VsdERhdAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGZyYW1l
LT5zY3JpcHQoKS5nbG9iYWxPYmplY3QocGx1Z2luV29ybGQoKSktPmdsb2JhbEV4ZWMoKTsKICAg
ICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAKLSAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9w
ZXJ0eU5hbWVzKGV4ZWMpOworICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhl
YywgUHJvcGVydGllc1R5cGVNb2RlOjpTdHJpbmdzKTsKICAgICBvYmplY3QtPm1ldGhvZFRhYmxl
KCktPmdldFByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJh
dGlvbk1vZGUoKSk7CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXkqPiBhcnJheSA9IGFk
b3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwCmlu
ZGV4IDIwZGM0ZDhmYjRiOTk0OTM3OGMwZWQ0YzM0YjBjNTI5ZDMxMTc5MTYuLjdiMTNlZGZhYjA3
MDNkZDc0NDc3ODg5MjA0MGVmODgwZDllMDczOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKQEAgLTIz
OSw3ICsyMzksNyBAQCBib29sIE5QSlNPYmplY3Q6OmVudW1lcmF0ZShOUElkZW50aWZpZXIqKiBp
ZGVudGlmaWVycywgdWludDMyX3QqIGlkZW50aWZpZXJDb3VudAogICAgIAogICAgIEpTTG9ja0hv
bGRlciBsb2NrKGV4ZWMpOwogCi0gICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhl
eGVjKTsKKyAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMsIFByb3BlcnRp
ZXNUeXBlTW9kZTo6U3RyaW5ncyk7CiAgICAgbV9qc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0
UHJvcGVydHlOYW1lcyhtX2pzT2JqZWN0LmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFbnVt
ZXJhdGlvbk1vZGUoKSk7CiAKICAgICBOUElkZW50aWZpZXIqIG5hbWVJZGVudGlmaWVycyA9IG5w
bk1lbU5ld0FycmF5PE5QSWRlbnRpZmllcj4ocHJvcGVydHlOYW1lcy5zaXplKCkpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDA3NmZjYjI1YTQwYzFiYmU1OWNjMDhkZDlmNGJlYTg1NTQ5OTc3ZGIuLmE1YzMxN2JlY2E2MGU4
N2Y1YWRlNjVhYmY5YjE3NmM3OGI1NTY0Y2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0w
Ny0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBP
YmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzIG9uIGxhcmdlIGxpc3QgdGFrZXMgdmVyeSBsb25n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDYxMzcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL3Jl
Z3Jlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy1vbi1sYXJnZS1hcnJheS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvb2JqZWN0LWdldC1vd24tcHJv
cGVydHktc3ltYm9scy1vbi1sYXJnZS1hcnJheS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9y
ZWdyZXNzL3NjcmlwdC10ZXN0cy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLW9uLWxh
cmdlLWFycmF5LmpzOiBBZGRlZC4KKyAgICAgICAgKHRyaWFsKToKKwogMjAxNS0wNy0yMiAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBDb29yZGluYXRl
cy1iYXNlZCBzbmFwIG9mZnNldHMgZG9uJ3QgdXBkYXRlIGNvcnJlY3RseSB3aGVuIGNvbnRhaW5l
ciBpcyBzY3JvbGxlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9vYmplY3Qt
Z2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLW9uLWxhcmdlLWFycmF5LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2pzL3JlZ3Jlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy1vbi1s
YXJnZS1hcnJheS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTNiZWI2ZmRkYzc5M2U0ZjdjNjVk
ZDgwNDA1NGVkNGVmMmYwZDgyZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Jl
Z3Jlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy1vbi1sYXJnZS1hcnJheS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL29iamVjdC1nZXQtb3duLXByb3Bl
cnR5LXN5bWJvbHMtb24tbGFyZ2UtYXJyYXkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jl
c3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy1vbi1sYXJnZS1hcnJheS5odG1sIGIv
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLW9u
LWxhcmdlLWFycmF5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTkxNDRlNDdiNjRlZTBmYjM5NzU2ZTkxYjJm
OTkxNjQyNzIxN2QyNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
b2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy1vbi1sYXJnZS1hcnJheS5odG1sCkBAIC0w
LDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRl
c3RzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMtb24tbGFyZ2UtYXJyYXkuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zY3JpcHQtdGVzdHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy1vbi1sYXJn
ZS1hcnJheS5qcyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL29iamVjdC1n
ZXQtb3duLXByb3BlcnR5LXN5bWJvbHMtb24tbGFyZ2UtYXJyYXkuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ4
OTIyNGI1YzQyM2UzZGE1NWI4OGU1MjM0YmUyMDE3MWM0ZWFhYwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL29iamVjdC1nZXQtb3duLXByb3Bl
cnR5LXN5bWJvbHMtb24tbGFyZ2UtYXJyYXkuanMKQEAgLTAsMCArMSw4IEBACitmdW5jdGlvbiB0
cmlhbCgpCit7CisgICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcigxMDAwMDAwMCk7Cisg
ICAgdmFyIGludDhWaWV3ID0gbmV3IEludDhBcnJheShidWZmZXIpOworICAgIHJldHVybiBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGludDhWaWV3KTsKK30KKwordHJpYWwoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257414</attachid>
            <date>2015-07-23 17:56:53 -0700</date>
            <delta_ts>2015-07-24 11:28:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146137-20150723175538.patch</filename>
            <type>text/plain</type>
            <size>47504</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3Mjc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZmY2YzFkZGMxZjhkZmUyMDJmNGRmYzcxMjFjMTk0M2Y3OTBhZTQ2Li5hNzdkN2IyODc4YTYwMGRm
YWY2YjgzZmJiNWYxMGQyOTg0MDljYzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDMgQEAKKzIwMTUtMDctMjMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyBvbiBsYXJnZSBs
aXN0IHRha2VzIHZlcnkgbG9uZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQ2MTM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQmVmb3JlIHRoaXMgcGF0Y2gsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJv
bHMgY29sbGVjdHMgdGhlIGFsbCBuYW1lcyBpbmNsdWRpbmcgc3RyaW5ncy4KKyAgICAgICAgQW5k
IGFmdGVyIGl0J3MgZG9uZSwgZmlsdGVyIHRoZSBuYW1lcyB0byBvbmx5IHJldHJpZXZlIHRoZSBz
eW1ib2xzLgorICAgICAgICBCdXQgaXQncyBzbyB0aW1lIGNvbnN1bWluZyBpZiB0aGUgZ2l2ZW4g
b2JqZWN0IGlzIGEgbGFyZ2Ugbm9uLWhvbGVkIGFycmF5IHNpbmNlIGl0IGhhcworICAgICAgICBt
YW55IGluZGV4ZWQgcHJvcGVydGllcyBhbmQgYWxsIHRoZSBpbmRleGVzIGhhdmUgdG8gYmUgY29u
dmVydGVkIHRvIHVuaXF1ZWRfc3RyaW5ncyBhbmQKKyAgICAgICAgYWRkZWQgdG8gdGhlIGNvbGxl
Y3Rpb24gb2YgcHJvcGVydHkgbmFtZXMgKHRob3VnaCB0aGV5IG1heSBub3QgYmUgb2YgdGhlIHJl
cXVlc3RlZCB0eXBlCisgICAgICAgIGFuZCB3aWxsIGJlIGZpbHRlcmVkIG91dCBsYXRlcikKKwor
ICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgUHJvcGVydGllc1R5cGVNb2RlLgorICAgICAg
ICBXZSBsZXZlcmFnZSB0aGlzIG1vZGUgaW4gMiBwbGFjZXMuCisKKyAgICAgICAgMS4gUHJvcGVy
dHlOYW1lQXJyYXkgc2lkZQorICAgICAgICBJdCBpcyBzZXQgaW4gUHJvcGVydHlOYW1lQXJyYXkg
YW5kIGl0IGZpbHRlcnMgdGhlIGluY29taW5nIGFkZGVkIGlkZW50aWZpZXJzIGJhc2VkIG9uIHRo
ZSBtb2RlLgorICAgICAgICBJdCBlbnN1cmVzIHRoYXQgUHJvcGVydHlOYW1lQXJyYXkgZG9lc24n
dCBiZWNvbWUgc28gbGFyZ2UgaW4gdGhlIHBhdGhvbG9naWNhbCBjYXNlLgorICAgICAgICBBbmQg
aXQgZW5zdXJlcyB0aGF0IG5vbi1leHBlY3RlZCB0eXBlZCBrZXlzIGJ5IHRoZSBmaWx0ZXIgKFN5
bWJvbHMgb3IgU3RyaW5ncykgYXJlIG5ldmVyIGFkZGVkCisgICAgICAgIHRvIHRoZSBwcm9wZXJ0
eSBuYW1lIGFycmF5IGNvbGxlY3Rpb25zLgorICAgICAgICBIb3dldmVyIGl0IGRvZXMgbm90IHNv
bHZlIHRoZSB3aG9sZSBwcm9ibGVtIGJlY2F1c2UgdGhlIGh1Z2UgYXJyYXkgc3RpbGwgaW5jdXJz
IHRoZSBtYW55CisgICAgICAgICJpbmRleGVkIHByb3BlcnR5IHRvIHVuaXF1ZWQgc3RyaW5nIiBj
b252ZXJzaW9uIGFuZCB0aGUgbGFyZ2UgaXRlcmF0aW9uIGJlZm9yZSBhZGRpbmcgdGhlIGtleXMK
KyAgICAgICAgdG8gdGhlIHByb3BlcnR5IG5hbWUgYXJyYXkuCisKKyAgICAgICAgMi4gZ2V0T3du
UHJvcGVydHlOYW1lcyBzaWRlCisgICAgICAgIFNvIHdlIGNhbiB1c2UgdGhlIFByb3BlcnRpZXNU
eXBlTW9kZSBpbiB0aGUgY2FsbGVyIHNpZGUgKGdldE93blByb3BlcnR5TmFtZXMpIGFzIGEgKipo
aW50KiouCisgICAgICAgIFdoZW4gdGhlIGxhcmdlIGl0ZXJhdGlvbiBtYXkgb2NjdXIsIHRoZSBj
YWxsZXIgc2lkZSBjYW4gdXNlIHRoZSBQcm9wZXJ0aWVzVHlwZU1vZGUgYXMgYSBoaW50IHRvCisg
ICAgICAgIGF2b2lkIHRoZSBpdGVyYXRpb24uCisgICAgICAgIEJ1dCB3ZSBjYW5ub3QgZXhjbHVz
aXZlbHkgcmVseSBvbiB0aGVzZSBjYWxsZXIgc2lkZSBjaGVja3MgYmVjYXVzZSBpdCB3b3VsZCBy
ZXF1aXJlIHRoYXQgd2UKKyAgICAgICAgZXhoYXVzdGl2ZWx5IGFkZCB0aGUgY2hlY2tzIHRvIGFs
bCBjdXN0b20gaW1wbGVtZW50YXRpb25zIG9mIGdldE93blByb3BlcnR5TmFtZXMgYXMgd2VsbC4K
KyAgICAgICAgVGhpcyBwcm9jZXNzIHJlcXVpcmVzIG1hbnVhbCBpbnNwZWN0aW9uIG9mIG1hbnkg
cGllY2VzIG9mIGNvZGUsIGFuZCBpcyBlcnJvciBwcm9uZS4gSW5zdGVhZCwKKyAgICAgICAgd2Ug
b25seSBhcHBseSB0aGUgY2FsbGVyIHNpZGUgY2hlY2sgaW4gYSBmZXcgc3RyYXRlZ2ljIHBsYWNl
cyB3aGVyZSBpdCBpcyBrbm93biB0byB5aWVsZAorICAgICAgICBwZXJmb3JtYW5jZSBiZW5lZml0
czsgYW5kIHdlIHJlbHkgb24gdGhlIGZpbHRlciBpbiBQcm9wZXJ0eU5hbWVBcnJheTo6YWRkKCkg
dG8gcmVqZWN0IHRoZSB3cm9uZworICAgICAgICB0eXBlcyBvZiBwcm9wZXJ0aWVzIGZvciBhbGwg
b3RoZXIgY2FsbHMgdG8gUHJvcGVydHlOYW1lQXJyYXk6OmFkZCgpLgorCisgICAgICAgIEluIHRo
aXMgcGF0Y2gsIHRoZXJlJ3MgYSBjb25jZXB0IGluIHVzZSB0aGF0IGlzIG5vdCBjbGVhciBqdXN0
IGZyb20gcmVhZGluZyB0aGUgY29kZSwgYW5kIGhlbmNlCisgICAgICAgIHNob3VsZCBiZSBkb2N1
bWVudGVkIGhlcmUuIFRoYXQgaXM6IHdoZW4gc2VsZWN0aW5nIHRoZSBQcm9wZXJ0aWVzVHlwZU1v
ZGUgZm9yIHRoZSBQcm9wZXJ0eU5hbWVBcnJheQorICAgICAgICB0byBiZSBpbnN0YW50aWF0ZWQs
IHlvdSBhcHBsaWVkIHRoZSBmb2xsb3dpbmcgbG9naWM6CisKKyAgICAgICAgMS4gT25seSBKYXZh
U2NyaXB0Q29yZSBjb2RlIGlzIGF3YXJlIG9mIEVTNiBTeW1ib2xzLgorICAgICAgICBXZSBjYW4g
YXNzdW1lIHRoYXQgcHJlLWV4aXN0aW5nIGV4dGVybmFsIGNvZGUgdGhhdCBpbnRlcmZhY2VzIEpT
QyBhcmUgb25seSBsb29raW5nIGZvciBzdHJpbmcgbmFtZWQgcHJvcGVydGllcy4gVGhpcyBpbmNs
dWRlczoKKyAgICAgICAgICAgIGEuIFdlYkNvcmUgYmluZGluZ3MKKyAgICAgICAgICAgIGIuIFNl
cmlhbGl6ZXIgYmluZGluZ3MKKyAgICAgICAgICAgIGMuIE5QQVBJIGJpbmRpbmdzCisgICAgICAg
ICAgICBkLiBPYmplY3RpdmUgQyBiaW5kaW5ncworICAgICAgICAyLiBJbiBKU0MsIGNvZGUgdGhh
dCBjb21wdXRlIG9iamVjdCBzdG9yYWdlIHNwYWNlIG5lZWRzIHRvIGl0ZXJhdGUgYm90aCBTeW1i
b2wgYW5kIFN0cmluZyBuYW1lZCBwcm9wZXJ0aWVzLiBIZW5jZSwgdXNlIFByb3BlcnRpZXNUeXBl
TW9kZTo6Qm90aC4KKyAgICAgICAgMy4gSW4gSlNDLCBFUzYgQVBJcyB0aGF0IHdvcmsgd2l0aCBT
eW1ib2xzIHNob3VsZCB1c2UgUHJvcGVydGllc1R5cGVNb2RlOjpTeW1ib2xzLgorICAgICAgICA0
LiBJbiBKU0MsIEVTNiBBUElzIHRoYXQgd29yayB3aXRoIFN0cmluZyBuYW1lZCBwcm9wZXJ0aWVz
IHNob3VsZCB1c2UgUHJvcGVydGllc1R5cGVNb2RlOjpTdHJpbmdzLgorCisgICAgICAgICogQVBJ
L0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTT2JqZWN0Q29weVByb3BlcnR5TmFtZXMpOgor
ICAgICAgICAqIGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKERlcHJlY2F0ZWQ6
OmpzVG9JbnNwZWN0b3JWYWx1ZSk6CisgICAgICAgICogYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlv
blByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OnBvc3Np
YmxlRGVmYXVsdFByb3BlcnR5Q291bnQpOgorICAgICAgICAqIHJ1bnRpbWUvRW51bWVyYXRpb25N
b2RlLmg6CisgICAgICAgIChKU0M6OkVudW1lcmF0aW9uTW9kZTo6RW51bWVyYXRpb25Nb2RlKToK
KyAgICAgICAgKEpTQzo6RW51bWVyYXRpb25Nb2RlOjppbmNsdWRlU3ltYm9sUHJvcGVydGllcyk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Z2V0T3duUHJv
cGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHA6
CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVudmlyb25tZW50OjpnZXRPd25Ob25JbmRleFByb3Bl
cnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OlN0cmluZ2lmaWVyOjpTdHJpbmdpZmllcik6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVy
OjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OldhbGtlcjo6d2Fs
ayk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlO
YW1lRW51bWVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1lRW51bWVyYXRv
cjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5o
OgorICAgICAgICAoSlNDOjpwcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKToKKyAgICAgICAgKiBydW50
aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU1N5bWJvbFRhYmxl
T2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUv
T2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3Rvckdl
dE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldE93
blByb3BlcnR5U3ltYm9scyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yS2V5cyk6
CisgICAgICAgIChKU0M6OmRlZmluZVByb3BlcnRpZXMpOgorICAgICAgICAoSlNDOjpvYmplY3RD
b25zdHJ1Y3RvclNlYWwpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZSk6
CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9ySXNTZWFsZWQpOgorICAgICAgICAoSlND
OjpvYmplY3RDb25zdHJ1Y3RvcklzRnJvemVuKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5
TmFtZUFycmF5Lmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZUFycmF5OjpQcm9wZXJ0eU5h
bWVBcnJheSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZUFycmF5Ojp0eXBlTW9kZSk6Cisg
ICAgICAgIChKU0M6OlByb3BlcnR5TmFtZUFycmF5OjphZGRLbm93blVuaXF1ZSk6CisgICAgICAg
IChKU0M6OlByb3BlcnR5TmFtZUFycmF5OjphZGQpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU5h
bWVBcnJheTo6aXNVaWRNYXRjaGVkVG9UeXBlTW9kZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5
TmFtZUFycmF5OjppbmNsdWRlU3ltYm9sUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6OlByb3Bl
cnR5TmFtZUFycmF5OjppbmNsdWRlU3RyaW5nUHJvcGVydGllcyk6CisgICAgICAgICogcnVudGlt
ZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6OmdldE93blBy
b3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnVjdHVyZSk6CisKIDIwMTUt
MDctMjMgIFN1a29sc2FrIFNha3NodXdvbmcgIDxzdWtvbHNha0BnbWFpbC5jb20+CiAKICAgICAg
ICAgSW1wbGVtZW50IFdlYkFzc2VtYmx5IG1vZHVsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5ZWRiMDY2YWM5
ODIxY2FmZTkyY2JiMTQzZWJlOGVmOWRlNGQ4NDliLi4xNTY0MDYyNWFiNjQ0ZGFiOThhN2M4NDM4
ZjE5NzNkNzVlOWNkOTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTUtMDctMjMg
IFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgT2JqZWN0
LmdldE93blByb3BlcnR5U3ltYm9scyBvbiBsYXJnZSBsaXN0IHRha2VzIHZlcnkgbG9uZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2MTM3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9EaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6OmdldE93blBy
b3BlcnRpZXNBc1N0cmluZ0hhc2hNYXApOgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6
Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6c2VyaWFs
aXplKToKKyAgICAgICAgKiBicmlkZ2UvTlBfanNvYmplY3QuY3BwOgorICAgICAgICAoX05QTl9F
bnVtZXJhdGUpOgorCiAyMDE1LTA3LTIzICBUaW1vdGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9u
QGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBGcmFtZSBzbmFwc2hvdHMgZG9uJ3QgZmFjdG9y
IGluIHBhZ2Ugc2NhbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA2NzUyMzJlN2M2ZTU1YjA4MTYyMDlk
MjQwNzgzZGFkOWJmMWY1ODc0Li4wMjZiZDU0ZjgzZTE4MWI2ZDJjZjg0YTk2ODFiOWNlMzlmZTBi
N2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDctMjMgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgT2JqZWN0LmdldE93
blByb3BlcnR5U3ltYm9scyBvbiBsYXJnZSBsaXN0IHRha2VzIHZlcnkgbG9uZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2MTM3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9O
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eTo6ZW51bWVyYXRlKToKKwogMjAxNS0wNy0yMiAgU3Vrb2xzYWsg
U2Frc2h1d29uZyAgPHN1a29sc2FrQGdtYWlsLmNvbT4KIAogICAgICAgICBBZGQgRU5BQkxFX1dF
QkFTU0VNQkxZIGZlYXR1cmUgZmxhZyBmb3IgV2ViQXNzZW1ibHkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmNmVl
NGU2OTY2NGUxNTIxMjk1NGU3YzA1MzZlMDNjMmI0ZjU0NTc0Li43ZjNhOGQyNjk1YjJiM2UzNTgw
M2I4NjJhY2IxNjRhZmM3ZWEyNWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUt
MDctMjMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAg
T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyBvbiBsYXJnZSBsaXN0IHRha2VzIHZlcnkgbG9u
ZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2MTM3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5QSlNPYmplY3Q6OmVudW1lcmF0ZSk6CisKIDIwMTUtMDctMjEgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgTm90aWZ5IHRoZSBVSSBkZWxlZ2F0ZSB3aGVuIGEg
TWVkaWFEb2N1bWVudCdzIG5hdHVyYWwgc2l6ZSBjaGFuZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4IGZhZjM4ZmY4YzIzZTlkZjA4YTAzMDBhNTk0MWUx
N2EzNTQ2ZDdlYjQuLjgzYmEzODE1NTAyOTY5MzE4OTc1ZDdhYTllYWIxNmU0MzQ1NWRiYjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCkBAIC02MjIsNyArNjIy
LDcgQEAgSlNQcm9wZXJ0eU5hbWVBcnJheVJlZiBKU09iamVjdENvcHlQcm9wZXJ0eU5hbWVzKEpT
Q29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG8KIAogICAgIEpTT2JqZWN0KiBqc09iamVjdCA9
IHRvSlMob2JqZWN0KTsKICAgICBKU1Byb3BlcnR5TmFtZUFycmF5UmVmIHByb3BlcnR5TmFtZXMg
PSBuZXcgT3BhcXVlSlNQcm9wZXJ0eU5hbWVBcnJheSh2bSk7Ci0gICAgUHJvcGVydHlOYW1lQXJy
YXkgYXJyYXkodm0pOworICAgIFByb3BlcnR5TmFtZUFycmF5IGFycmF5KHZtLCBQcm9wZXJ0aWVz
VHlwZU1vZGU6OlN0cmluZ3MpOwogICAgIGpzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRQcm9w
ZXJ0eU5hbWVzKGpzT2JqZWN0LCBleGVjLCBhcnJheSwgRW51bWVyYXRpb25Nb2RlKCkpOwogCiAg
ICAgc2l6ZV90IHNpemUgPSBhcnJheS5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAppbmRleCAxNTNiMDMzYTExNzgwZTAxZDBmY2IzNGI1
ZjU5ZGFmN2QxY2Q3Y2Q4Li5hYjRjY2MyZmI4NTIyZDgwOWIzYmVkMmZjNGMwY2NhMjMwOGRhM2M2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAK
QEAgLTEzNiw3ICsxMzYsNyBAQCBzdGF0aWMgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBqc1RvSW5z
cGVjdG9yVmFsdWUoRXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgSlNWYWx1ZQogICAgICAgICB9CiAg
ICAgICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGluc3BlY3Rvck9iamVjdCA9IEluc3BlY3Rvck9i
amVjdDo6Y3JlYXRlKCk7CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSB2YWx1ZS5nZXRPYmpl
Y3QoKTsKLSAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhzY3JpcHRTdGF0
ZSk7CisgICAgICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoc2NyaXB0U3RhdGUs
IFByb3BlcnRpZXNUeXBlTW9kZTo6U3RyaW5ncyk7CiAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFi
bGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIHNjcmlwdFN0YXRlLCBwcm9wZXJ0eU5h
bWVzLCBFbnVtZXJhdGlvbk1vZGUoKSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
cHJvcGVydHlOYW1lcy5zaXplKCk7IGkrKykgewogICAgICAgICAgICAgY29uc3QgSWRlbnRpZmll
ciYgbmFtZSA9IHByb3BlcnR5TmFtZXNbaV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oCmluZGV4IGNiNDE0OGVl
NGY1MzI4NjMxZmVjNGMxNDhmZGY0YzMzNTRmYzczZGMuLmMxNjViMjExYmRhYWUyOTBhZjk0ZjE2
MTViYjc2OTlkY2Q4YjExYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oCkBAIC0xMjcsNyArMTI3LDcgQEAg
Y2xhc3MgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUgewogICAgICAgICAgICAgcmV0dXJuIDA7CiAK
ICAgICAgICAgc2l6ZV90IGNvdW50ID0gMDsKLSAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJv
cGVydHlOYW1lQXJyYXkoJnZtKTsKKyAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlO
YW1lQXJyYXkoJnZtLCBQcm9wZXJ0aWVzVHlwZU1vZGU6OkJvdGgpOwogICAgICAgICBwcm90b3R5
cGUtPnN0cnVjdHVyZSgpLT5nZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnVjdHVyZSh2bSwgcHJvcGVy
dHlOYW1lQXJyYXksIEVudW1lcmF0aW9uTW9kZSgpKTsKICAgICAgICAgUHJvcGVydHlOYW1lQXJy
YXlEYXRhOjpQcm9wZXJ0eU5hbWVWZWN0b3ImIHByb3BlcnR5TmFtZVZlY3RvciA9IHByb3BlcnR5
TmFtZUFycmF5LmRhdGEoKS0+cHJvcGVydHlOYW1lVmVjdG9yKCk7CiAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lVmVjdG9yLnNpemUoKTsgKytpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FbnVtZXJhdGlvbk1vZGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VudW1lcmF0aW9uTW9kZS5oCmluZGV4IDNlOTVl
ZDMyZjZiNGQxMjAxNDY5MDM0NDA4ZjYzYWI1MGJmZTY1MzAuLjJlZTE1MzZkZmJhZGFiMDBhMGE5
NTMxM2E1ZDk4MzllZWI2NTQ0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0VudW1lcmF0aW9uTW9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0VudW1lcmF0aW9uTW9kZS5oCkBAIC0yOCw2ICsyOCwxMiBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAorZW51bSBjbGFzcyBQcm9wZXJ0aWVzVHlwZU1vZGUgeworICAgIFN5bWJvbHMgPSAxLAor
ICAgIFN0cmluZ3MgPSAyLAorICAgIEJvdGggPSAzLAorfTsKKwogZW51bSBjbGFzcyBEb250RW51
bVByb3BlcnRpZXNNb2RlIHsKICAgICBJbmNsdWRlLAogICAgIEV4Y2x1ZGUKQEAgLTQ1LDE2ICs1
MSwxNCBAQCBlbnVtIGNsYXNzIEpTT2JqZWN0UHJvcGVydGllc01vZGUgewogCiBjbGFzcyBFbnVt
ZXJhdGlvbk1vZGUgewogcHVibGljOgotICAgIEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3Bl
cnRpZXNNb2RlIGRvbnRFbnVtUHJvcGVydGllc01vZGUgPSBEb250RW51bVByb3BlcnRpZXNNb2Rl
OjpFeGNsdWRlLCBTeW1ib2xQcm9wZXJ0aWVzTW9kZSBzeW1ib2xQcm9wZXJ0aWVzTW9kZSA9IFN5
bWJvbFByb3BlcnRpZXNNb2RlOjpFeGNsdWRlLCBKU09iamVjdFByb3BlcnRpZXNNb2RlIGpzT2Jq
ZWN0UHJvcGVydGllc01vZGUgPSBKU09iamVjdFByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKQorICAg
IEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3BlcnRpZXNNb2RlIGRvbnRFbnVtUHJvcGVydGll
c01vZGUgPSBEb250RW51bVByb3BlcnRpZXNNb2RlOjpFeGNsdWRlLCBKU09iamVjdFByb3BlcnRp
ZXNNb2RlIGpzT2JqZWN0UHJvcGVydGllc01vZGUgPSBKU09iamVjdFByb3BlcnRpZXNNb2RlOjpJ
bmNsdWRlKQogICAgICAgICA6IG1fZG9udEVudW1Qcm9wZXJ0aWVzTW9kZShkb250RW51bVByb3Bl
cnRpZXNNb2RlKQotICAgICAgICAsIG1fc3ltYm9sUHJvcGVydGllc01vZGUoc3ltYm9sUHJvcGVy
dGllc01vZGUpCiAgICAgICAgICwgbV9qc09iamVjdFByb3BlcnRpZXNNb2RlKGpzT2JqZWN0UHJv
cGVydGllc01vZGUpCiAgICAgewogICAgIH0KIAogICAgIEVudW1lcmF0aW9uTW9kZShjb25zdCBF
bnVtZXJhdGlvbk1vZGUmIG1vZGUsIEpTT2JqZWN0UHJvcGVydGllc01vZGUganNPYmplY3RQcm9w
ZXJ0aWVzTW9kZSkKICAgICAgICAgOiBtX2RvbnRFbnVtUHJvcGVydGllc01vZGUobW9kZS5tX2Rv
bnRFbnVtUHJvcGVydGllc01vZGUpCi0gICAgICAgICwgbV9zeW1ib2xQcm9wZXJ0aWVzTW9kZSht
b2RlLm1fc3ltYm9sUHJvcGVydGllc01vZGUpCiAgICAgICAgICwgbV9qc09iamVjdFByb3BlcnRp
ZXNNb2RlKGpzT2JqZWN0UHJvcGVydGllc01vZGUpCiAgICAgewogICAgIH0KQEAgLTY2LDExICs3
MCw2IEBAIGNsYXNzIEVudW1lcmF0aW9uTW9kZSB7CiAgICAgICAgIHJldHVybiBtX2RvbnRFbnVt
UHJvcGVydGllc01vZGUgPT0gRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZTsKICAgICB9
CiAKLSAgICBib29sIGluY2x1ZGVTeW1ib2xQcm9wZXJ0aWVzKCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtX3N5bWJvbFByb3BlcnRpZXNNb2RlID09IFN5bWJvbFByb3BlcnRpZXNNb2RlOjpJbmNs
dWRlOwotICAgIH0KLQogICAgIGJvb2wgaW5jbHVkZUpTT2JqZWN0UHJvcGVydGllcygpCiAgICAg
ewogICAgICAgICByZXR1cm4gbV9qc09iamVjdFByb3BlcnRpZXNNb2RlID09IEpTT2JqZWN0UHJv
cGVydGllc01vZGU6OkluY2x1ZGU7CkBAIC03OCw3ICs3Nyw2IEBAIGNsYXNzIEVudW1lcmF0aW9u
TW9kZSB7CiAKIHByaXZhdGU6CiAgICAgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZSBtX2RvbnRFbnVt
UHJvcGVydGllc01vZGU7Ci0gICAgU3ltYm9sUHJvcGVydGllc01vZGUgbV9zeW1ib2xQcm9wZXJ0
aWVzTW9kZTsKICAgICBKU09iamVjdFByb3BlcnRpZXNNb2RlIG1fanNPYmplY3RQcm9wZXJ0aWVz
TW9kZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyaWNBcmd1bWVudHNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmljQXJndW1lbnRzSW5saW5lcy5oCmluZGV4IDVmOTUyYzZmMmJmZWRiNzlmNGJiNDU5MzUx
NjE0ZWIxOGY2ZmE4MDcuLjliMTgwMDE4NTc4MTA1YzU1MTY5NzIwYWU1ODc3YzNlM2UyNDZkZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVu
dHNJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0Fy
Z3VtZW50c0lubGluZXMuaApAQCAtNzgsMTYgKzc4LDE5IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFR5
cGU+CiB2b2lkIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmdldE93blByb3BlcnR5TmFtZXMoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgYXJyYXks
IEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewogICAgIFR5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
VHlwZSo+KG9iamVjdCk7Ci0gICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRoaXNP
YmplY3QtPmludGVybmFsTGVuZ3RoKCk7ICsraSkgewotICAgICAgICBpZiAoIXRoaXNPYmplY3Qt
PmNhbkFjY2Vzc0luZGV4UXVpY2tseShpKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICBhcnJheS5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7CisKKyAgICBpZiAoYXJyYXku
aW5jbHVkZVN0cmluZ1Byb3BlcnRpZXMoKSkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgdGhpc09iamVjdC0+aW50ZXJuYWxMZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBp
ZiAoIXRoaXNPYmplY3QtPmNhbkFjY2Vzc0luZGV4UXVpY2tseShpKSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIGFycmF5LmFkZChJZGVudGlmaWVyOjpmcm9tKGV4ZWMs
IGkpKTsKKyAgICAgICAgfQogICAgIH0KKwogICAgIGlmIChtb2RlLmluY2x1ZGVEb250RW51bVBy
b3BlcnRpZXMoKSAmJiAhdGhpc09iamVjdC0+b3ZlcnJvZGVUaGluZ3MoKSkgewogICAgICAgICBh
cnJheS5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CiAgICAgICAgIGFycmF5LmFk
ZChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVlKTsKLSAgICAgICAgaWYgKG1vZGUuaW5jbHVk
ZVN5bWJvbFByb3BlcnRpZXMoKSkKKyAgICAgICAgaWYgKGFycmF5LmluY2x1ZGVTeW1ib2xQcm9w
ZXJ0aWVzKCkpCiAgICAgICAgICAgICBhcnJheS5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLml0
ZXJhdG9yU3ltYm9sKTsKICAgICB9CiAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlz
T2JqZWN0LCBleGVjLCBhcnJheSwgbW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmlu
ZGV4IGVjNjUzZGNkYzQ4ODlkNGU5NWMxNGJkNDliYThkODIxMTJjOTU3ZjAuLmU5ZWQxZTk5OGFh
OWE1MDhkMWFlZjA1M2ZhZTg4MmY0MjYzZGM5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5l
cy5oCkBAIC00MjMsOSArNDIzLDExIEBAIHZvaWQgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OmdldE93blByb3BlcnR5TmFtZXMoCiAgICAgSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgYXJyYXksIEVudW1lcmF0aW9uTW9kZSBtb2Rl
KQogewogICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3Kj4ob2JqZWN0KTsKLSAgICAKLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgdGhpc09iamVjdC0+bV9sZW5ndGg7ICsraSkKLSAgICAgICAgYXJyYXkuYWRk
KElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkpOworCisgICAgaWYgKGFycmF5LmluY2x1ZGVTdHJp
bmdQcm9wZXJ0aWVzKCkpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRoaXNP
YmplY3QtPm1fbGVuZ3RoOyArK2kpCisgICAgICAgICAgICBhcnJheS5hZGQoSWRlbnRpZmllcjo6
ZnJvbShleGVjLCBpKSk7CisgICAgfQogICAgIAogICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgYXJyYXksIG1vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCmluZGV4
IDYwNzY4NzQ2MDEwN2EwZDhiMDE5Y2Q3ZmE3Y2VhMjkyNGZiNTYyZmEuLjQ3YTgxYjVmMzcwYTJl
MDY4YjJmYzIyZDJkMGU2N2Q2NGQxMmRhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKQEAgLTk5LDcgKzk5LDcg
QEAgdm9pZCBKU0xleGljYWxFbnZpcm9ubWVudDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGEKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIGlmICghdGhpc09iamVjdC0+aXNWYWxpZChpdC0+dmFsdWUuc2NvcGVPZmZzZXQo
KSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAoaXQtPmtleS0+
aXNTeW1ib2woKSAmJiAhbW9kZS5pbmNsdWRlU3ltYm9sUHJvcGVydGllcygpKQorICAgICAgICAg
ICAgaWYgKGl0LT5rZXktPmlzU3ltYm9sKCkgJiYgIXByb3BlcnR5TmFtZXMuaW5jbHVkZVN5bWJv
bFByb3BlcnRpZXMoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIHBy
b3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgaXQtPmtleS5nZXQoKSkp
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3Qu
Y3BwCmluZGV4IDYxZGMwNDZiMGQyYjkxZGVjYWU3Yjg3OThmMjA1NzAyZGRkNTJmNWIuLmEyNWE4
Zjg0M2I1ZDRlYWVlNzVlMzgzNWVkZjFkMWI0YmViMDkwZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAgU3RyaW5n
aWZpZXI6OlN0cmluZ2lmaWVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTG9jYWw8VW5rbm93bj4m
IHJlcGxhY2VyLCBjb25zdAogICAgIDogbV9leGVjKGV4ZWMpCiAgICAgLCBtX3JlcGxhY2VyKHJl
cGxhY2VyKQogICAgICwgbV91c2luZ0FycmF5UmVwbGFjZXIoZmFsc2UpCi0gICAgLCBtX2FycmF5
UmVwbGFjZXJQcm9wZXJ0eU5hbWVzKGV4ZWMpCisgICAgLCBtX2FycmF5UmVwbGFjZXJQcm9wZXJ0
eU5hbWVzKGV4ZWMsIFByb3BlcnRpZXNUeXBlTW9kZTo6U3RyaW5ncykKICAgICAsIG1fcmVwbGFj
ZXJDYWxsVHlwZShDYWxsVHlwZU5vbmUpCiAgICAgLCBtX2dhcChnYXAoZXhlYywgc3BhY2UuZ2V0
KCkpKQogewpAQCAtNDI3LDcgKzQyNyw3IEBAIGJvb2wgU3RyaW5naWZpZXI6OkhvbGRlcjo6YXBw
ZW5kTmV4dFByb3BlcnR5KFN0cmluZ2lmaWVyJiBzdHJpbmdpZmllciwgU3RyaW5nQnVpCiAgICAg
ICAgICAgICBpZiAoc3RyaW5naWZpZXIubV91c2luZ0FycmF5UmVwbGFjZXIpCiAgICAgICAgICAg
ICAgICAgbV9wcm9wZXJ0eU5hbWVzID0gc3RyaW5naWZpZXIubV9hcnJheVJlcGxhY2VyUHJvcGVy
dHlOYW1lcy5kYXRhKCk7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBQcm9w
ZXJ0eU5hbWVBcnJheSBvYmplY3RQcm9wZXJ0eU5hbWVzKGV4ZWMpOworICAgICAgICAgICAgICAg
IFByb3BlcnR5TmFtZUFycmF5IG9iamVjdFByb3BlcnR5TmFtZXMoZXhlYywgUHJvcGVydGllc1R5
cGVNb2RlOjpTdHJpbmdzKTsKICAgICAgICAgICAgICAgICBtX29iamVjdC0+bWV0aG9kVGFibGUo
KS0+Z2V0T3duUHJvcGVydHlOYW1lcyhtX29iamVjdC5nZXQoKSwgZXhlYywgb2JqZWN0UHJvcGVy
dHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKCkpOwogICAgICAgICAgICAgICAgIG1fcHJvcGVydHlO
YW1lcyA9IG9iamVjdFByb3BlcnR5TmFtZXMucmVsZWFzZURhdGEoKTsKICAgICAgICAgICAgIH0K
QEAgLTY0NCw3ICs2NDQsNyBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNW
YWx1ZSB1bmZpbHRlcmVkKQogICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09i
amVjdChpblZhbHVlKTsKICAgICAgICAgICAgICAgICBvYmplY3RTdGFjay5wdXNoKG9iamVjdCk7
CiAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5hcHBlbmQoMCk7Ci0gICAgICAgICAgICAgICAg
cHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjKSk7CisgICAgICAg
ICAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjLCBQ
cm9wZXJ0aWVzVHlwZU1vZGU6OlN0cmluZ3MpKTsKICAgICAgICAgICAgICAgICBvYmplY3QtPm1l
dGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5
U3RhY2subGFzdCgpLCBFbnVtZXJhdGlvbk1vZGUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBvYmplY3RTdGFydFZpc2l0TWVtYmVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCmluZGV4IGQyMGRhYTIwNDUxZDJmYmVmMzNiY2Q5MTM0OTEwNGYxZmJj
YjU4NzMuLmE1NGZhY2JkYzEzMGQzYjQxMzIxOTZiMjkzNmVhNTlkMGYwNDE3NTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTE1MDIsNjcgKzE1MDIs
NjkgQEAgdm9pZCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmEKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIC8vIEFkZCBudW1lcmljIHByb3BlcnRpZXMgZmlyc3QuIFRoYXQgYXBwZWFycyB0byBiZSB0
aGUgYWNjZXB0ZWQgY29udmVudGlvbi4KLSAgICAvLyBGSVhNRTogRmlsbGluZyBQcm9wZXJ0eU5h
bWVBcnJheSB3aXRoIGFuIGlkZW50aWZpZXIgZm9yIGV2ZXJ5IGludGVnZXIKLSAgICAvLyBpcyBp
bmNyZWRpYmx5IGluZWZmaWNpZW50IGZvciBsYXJnZSBhcnJheXMuIFdlIG5lZWQgYSBkaWZmZXJl
bnQgYXBwcm9hY2gsCi0gICAgLy8gd2hpY2ggYWxtb3N0IGNlcnRhaW5seSBtZWFucyBhIGRpZmZl
cmVudCBzdHJ1Y3R1cmUgZm9yIFByb3BlcnR5TmFtZUFycmF5LgotICAgIHN3aXRjaCAob2JqZWN0
LT5pbmRleGluZ1R5cGUoKSkgewotICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgot
ICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKLSAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIAotICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgotICAgIGNhc2UgQUxM
X0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6IHsKLSAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJm
bHkgPSBvYmplY3QtPmJ1dHRlcmZseSgpOwotICAgICAgICB1bnNpZ25lZCB1c2VkTGVuZ3RoID0g
YnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHVzZWRMZW5ndGg7ICsraSkgewotICAgICAgICAgICAgaWYgKCFidXR0ZXJmbHktPmNvbnRp
Z3VvdXMoKVtpXSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHByb3Bl
cnR5TmFtZXMuYWRkKGkpOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICAg
ICAgCi0gICAgY2FzZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7Ci0gICAgICAgIEJ1dHRl
cmZseSogYnV0dGVyZmx5ID0gb2JqZWN0LT5idXR0ZXJmbHkoKTsKLSAgICAgICAgdW5zaWduZWQg
dXNlZExlbmd0aCA9IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCk7Ci0gICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCB1c2VkTGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGRvdWJsZSB2
YWx1ZSA9IGJ1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ldOwotICAgICAgICAgICAgaWYg
KHZhbHVlICE9IHZhbHVlKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
cHJvcGVydHlOYW1lcy5hZGQoaSk7CisgICAgaWYgKHByb3BlcnR5TmFtZXMuaW5jbHVkZVN0cmlu
Z1Byb3BlcnRpZXMoKSkgeworICAgICAgICAvLyBBZGQgbnVtZXJpYyBwcm9wZXJ0aWVzIGZpcnN0
LiBUaGF0IGFwcGVhcnMgdG8gYmUgdGhlIGFjY2VwdGVkIGNvbnZlbnRpb24uCisgICAgICAgIC8v
IEZJWE1FOiBGaWxsaW5nIFByb3BlcnR5TmFtZUFycmF5IHdpdGggYW4gaWRlbnRpZmllciBmb3Ig
ZXZlcnkgaW50ZWdlcgorICAgICAgICAvLyBpcyBpbmNyZWRpYmx5IGluZWZmaWNpZW50IGZvciBs
YXJnZSBhcnJheXMuIFdlIG5lZWQgYSBkaWZmZXJlbnQgYXBwcm9hY2gsCisgICAgICAgIC8vIHdo
aWNoIGFsbW9zdCBjZXJ0YWlubHkgbWVhbnMgYSBkaWZmZXJlbnQgc3RydWN0dXJlIGZvciBQcm9w
ZXJ0eU5hbWVBcnJheS4KKyAgICAgICAgc3dpdGNoIChvYmplY3QtPmluZGV4aW5nVHlwZSgpKSB7
CisgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgorICAgICAgICBjYXNlIEFM
TF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIAorICAgICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoKKyAgICAgICAgY2Fz
ZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzogeworICAgICAgICAgICAgQnV0dGVyZmx5
KiBidXR0ZXJmbHkgPSBvYmplY3QtPmJ1dHRlcmZseSgpOworICAgICAgICAgICAgdW5zaWduZWQg
dXNlZExlbmd0aCA9IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCk7CisgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgdXNlZExlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAg
aWYgKCFidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKVtpXSkKKyAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoaSk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICB9
Ci0gICAgICAgIAotICAgIGNhc2UgQUxMX0FSUkFZX1NUT1JBR0VfSU5ERVhJTkdfVFlQRVM6IHsK
LSAgICAgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gb2JqZWN0LT5tX2J1dHRlcmZseS0+YXJy
YXlTdG9yYWdlKCk7Ci0gICAgICAgIAotICAgICAgICB1bnNpZ25lZCB1c2VkVmVjdG9yTGVuZ3Ro
ID0gc3RkOjptaW4oc3RvcmFnZS0+bGVuZ3RoKCksIHN0b3JhZ2UtPnZlY3Rvckxlbmd0aCgpKTsK
LSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHVzZWRWZWN0b3JMZW5ndGg7ICsraSkg
ewotICAgICAgICAgICAgaWYgKHN0b3JhZ2UtPm1fdmVjdG9yW2ldKQorICAgICAgICAgICAgCisg
ICAgICAgIGNhc2UgQUxMX0RPVUJMRV9JTkRFWElOR19UWVBFUzogeworICAgICAgICAgICAgQnV0
dGVyZmx5KiBidXR0ZXJmbHkgPSBvYmplY3QtPmJ1dHRlcmZseSgpOworICAgICAgICAgICAgdW5z
aWduZWQgdXNlZExlbmd0aCA9IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCk7CisgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdXNlZExlbmd0aDsgKytpKSB7CisgICAgICAgICAg
ICAgICAgZG91YmxlIHZhbHVlID0gYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV07Cisg
ICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9IHZhbHVlKQorICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBp
ZiAoU3BhcnNlQXJyYXlWYWx1ZU1hcCogbWFwID0gc3RvcmFnZS0+bV9zcGFyc2VNYXAuZ2V0KCkp
IHsKLSAgICAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+
IGtleXM7Ci0gICAgICAgICAgICBrZXlzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobWFwLT5zaXpl
KCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBTcGFyc2VBcnJheVZhbHVlTWFwOjpjb25z
dF9pdGVyYXRvciBlbmQgPSBtYXAtPmVuZCgpOwotICAgICAgICAgICAgZm9yIChTcGFyc2VBcnJh
eVZhbHVlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1vZGUuaW5jbHVkZURvbnRFbnVtUHJvcGVydGll
cygpIHx8ICEoaXQtPnZhbHVlLmF0dHJpYnV0ZXMgJiBEb250RW51bSkpCi0gICAgICAgICAgICAg
ICAgICAgIGtleXMudW5jaGVja2VkQXBwZW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpdC0+a2V5
KSk7CisgICAgICAgIGNhc2UgQUxMX0FSUkFZX1NUT1JBR0VfSU5ERVhJTkdfVFlQRVM6IHsKKyAg
ICAgICAgICAgIEFycmF5U3RvcmFnZSogc3RvcmFnZSA9IG9iamVjdC0+bV9idXR0ZXJmbHktPmFy
cmF5U3RvcmFnZSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICB1bnNpZ25lZCB1c2VkVmVj
dG9yTGVuZ3RoID0gc3RkOjptaW4oc3RvcmFnZS0+bGVuZ3RoKCksIHN0b3JhZ2UtPnZlY3Rvckxl
bmd0aCgpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB1c2VkVmVjdG9y
TGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3RvcmFnZS0+bV92ZWN0b3JbaV0p
CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGkpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgCi0gICAgICAgICAgICBzdGQ6OnNvcnQoa2V5cy5iZWdpbigpLCBrZXlz
LmVuZCgpKTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBrZXlzLnNpemUo
KTsgKytpKQotICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGtleXNbaV0pOworICAg
ICAgICAgICAgaWYgKFNwYXJzZUFycmF5VmFsdWVNYXAqIG1hcCA9IHN0b3JhZ2UtPm1fc3BhcnNl
TWFwLmdldCgpKSB7CisgICAgICAgICAgICAgICAgVmVjdG9yPHVuc2lnbmVkLCAwLCBVbnNhZmVW
ZWN0b3JPdmVyZmxvdz4ga2V5czsKKyAgICAgICAgICAgICAgICBrZXlzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkobWFwLT5zaXplKCkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
IFNwYXJzZUFycmF5VmFsdWVNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1hcC0+ZW5kKCk7Cisg
ICAgICAgICAgICAgICAgZm9yIChTcGFyc2VBcnJheVZhbHVlTWFwOjpjb25zdF9pdGVyYXRvciBp
dCA9IG1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChtb2RlLmluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSB8fCAhKGl0LT52YWx1ZS5hdHRy
aWJ1dGVzICYgRG9udEVudW0pKQorICAgICAgICAgICAgICAgICAgICAgICAga2V5cy51bmNoZWNr
ZWRBcHBlbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGl0LT5rZXkpKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgc3RkOjpzb3J0KGtleXMuYmVn
aW4oKSwga2V5cy5lbmQoKSk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGtleXMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMu
YWRkKGtleXNbaV0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgICAgIAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICB9Ci0g
ICAgICAgIAotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgfQogCiAgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3du
Tm9uSW5kZXhQcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yLmNwcAppbmRleCA3ZTdkMWFjMzZjOWFiYzI5MTQxOTliMzEyZjljMDM3
MjY0NTg3YTY1Li45ZjA4MWNlMWE5YTlkNmQ1YjQ2NDFkOGU2YzA4ODNiMjcyOGQ3NjlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlO
YW1lRW51bWVyYXRvci5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTUHJv
cGVydHlOYW1lRW51bWVyYXRvcjo6c19pbmZvID0geyAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
IiwKIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpj
cmVhdGUoVk0mIHZtKQogewogICAgIGlmICghdm0uZW1wdHlQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
LmdldCgpKSB7Ci0gICAgICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoJnZtKTsK
KyAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcygmdm0sIFByb3BlcnRpZXNU
eXBlTW9kZTo6U3RyaW5ncyk7CiAgICAgICAgIHZtLmVtcHR5UHJvcGVydHlOYW1lRW51bWVyYXRv
ciA9IFN0cm9uZzxKU0NlbGw+KHZtLCBjcmVhdGUodm0sIDAsIDAsIDAsIHByb3BlcnR5TmFtZXMp
KTsKICAgICB9CiAgICAgcmV0dXJuIGpzQ2FzdDxKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqPih2
bS5lbXB0eVByb3BlcnR5TmFtZUVudW1lcmF0b3IuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaAppbmRl
eCA5NGIwMzQzNWI5NDhhNzAwMThmNGE5NmQ2MDg4ZWI1ZjlhYjU5ZGQ2Li5jMmUwYWFhMmU0MmYy
NmI3ZGNkYWJmMWYxNzRmZDg1ZmQ2NGFmYzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaApAQCAtMTE1LDcg
KzExNSw3IEBAIGlubGluZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIHByb3BlcnR5TmFtZUVu
dW1lcmF0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjCiAKICAgICB1aW50MzJfdCBudW1iZXJT
dHJ1Y3R1cmVQcm9wZXJ0aWVzID0gMDsKIAotICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5
TmFtZXMoZXhlYyk7CisgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjLCBQ
cm9wZXJ0aWVzVHlwZU1vZGU6OlN0cmluZ3MpOwogCiAgICAgaWYgKHN0cnVjdHVyZS0+Y2FuQWNj
ZXNzUHJvcGVydGllc1F1aWNrbHkoKSAmJiBpbmRleGVkTGVuZ3RoID09IGJhc2UtPmdldEFycmF5
TGVuZ3RoKCkpIHsKICAgICAgICAgYmFzZS0+bWV0aG9kVGFibGUodm0pLT5nZXRTdHJ1Y3R1cmVQ
cm9wZXJ0eU5hbWVzKGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFi
bGVPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJs
ZU9iamVjdC5jcHAKaW5kZXggYzA4ZmY1OTQ4N2JmOGRlNzI3Y2FhZTZhNTgzOWEyNGM4OGZlNDVm
Zi4uMjBiNjczYTcwNDUwZmE1OTliMzVhYzE4NDc3YmUyNzEwZjIwMDQ0OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAK
QEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpnZXRPd25Ob25JbmRl
eFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXQKICAgICAgICAgU3ltYm9s
VGFibGU6Ok1hcDo6aXRlcmF0b3IgZW5kID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+ZW5k
KGxvY2tlcik7CiAgICAgICAgIGZvciAoU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXQgPSB0
aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5iZWdpbihsb2NrZXIpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKICAgICAgICAgICAgIGlmICghKGl0LT52YWx1ZS5nZXRBdHRyaWJ1dGVzKCkgJiBEb250RW51
bSkgfHwgbW9kZS5pbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoaXQtPmtleS0+aXNTeW1ib2woKSAmJiAhbW9kZS5pbmNsdWRlU3ltYm9sUHJvcGVydGll
cygpKQorICAgICAgICAgICAgICAgIGlmIChpdC0+a2V5LT5pc1N5bWJvbCgpICYmICFwcm9wZXJ0
eU5hbWVzLmluY2x1ZGVTeW1ib2xQcm9wZXJ0aWVzKCkpCiAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZy
b21VaWQoZXhlYywgaXQtPmtleS5nZXQoKSkpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDFh
MTFlMjhkNzI1NWI0Y2RhNzEwYzFhOWNiYjQ5OWRmZmFlMTIzNTMuLjhkZDdiMWQyMTYzOTVmZmZm
M2Y0ZGVhMmJhY2QxMjA4NmVhMzA2NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTI1Myw3ICsyNTMsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlO
YW1lcyhFeGVjU3RhdGUqIGV4ZQogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBleGVjLT5hcmd1bWVu
dCgwKS50b09iamVjdChleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwotICAgIFByb3BlcnR5TmFtZUFy
cmF5IHByb3BlcnRpZXMoZXhlYyk7CisgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhl
eGVjLCBQcm9wZXJ0aWVzVHlwZU1vZGU6OlN0cmluZ3MpOwogICAgIG9iamVjdC0+bWV0aG9kVGFi
bGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0
aWVzLCBFbnVtZXJhdGlvbk1vZGUoRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpOwog
ICAgIEpTQXJyYXkqIG5hbWVzID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKICAgICBz
aXplX3QgbnVtUHJvcGVydGllcyA9IHByb3BlcnRpZXMuc2l6ZSgpOwpAQCAtMjY4LDggKzI2OCw4
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Q
cm9wZXJ0eVN5bWJvbHMoRXhlY1N0YXRlKiBlCiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGV4ZWMt
PmFyZ3VtZW50KDApLnRvT2JqZWN0KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7Ci0gICAgUHJvcGVy
dHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4
ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywg
RW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUsIFN5bWJvbFBy
b3BlcnRpZXNNb2RlOjpJbmNsdWRlKSk7CisgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGll
cyhleGVjLCBQcm9wZXJ0aWVzVHlwZU1vZGU6OlN5bWJvbHMpOworICAgIG9iamVjdC0+bWV0aG9k
VGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9w
ZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGUoRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkp
OwogICAgIEpTQXJyYXkqIG5hbWVzID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKICAg
ICBzaXplX3QgbnVtUHJvcGVydGllcyA9IHByb3BlcnRpZXMuc2l6ZSgpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgaSsrKSB7CkBAIC0yODYsNyArMjg2LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcktleXMoRXhlY1N0
YXRlKiBleGVjKQogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBleGVjLT5hcmd1bWVudCgwKS50b09i
amVjdChleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwotICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3Bl
cnRpZXMoZXhlYyk7CisgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjLCBQcm9w
ZXJ0aWVzVHlwZU1vZGU6OlN0cmluZ3MpOwogICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+
dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVt
ZXJhdGlvbk1vZGUoKSk7CiAgICAgSlNBcnJheSoga2V5cyA9IGNvbnN0cnVjdEVtcHR5QXJyYXko
ZXhlYywgMCk7CiAgICAgc2l6ZV90IG51bVByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLnNpemUoKTsK
QEAgLTM5Nyw4ICszOTcsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENv
bnN0cnVjdG9yRGVmaW5lUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjKQogCiBzdGF0aWMgSlNWYWx1
ZSBkZWZpbmVQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwgSlNP
YmplY3QqIHByb3BlcnRpZXMpCiB7Ci0gICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1l
cyhleGVjKTsKLSAgICBhc09iamVjdChwcm9wZXJ0aWVzKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPmdldE93blByb3BlcnR5TmFtZXMoYXNPYmplY3QocHJvcGVydGllcyksIGV4ZWMsIHByb3Bl
cnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3BlcnRpZXNNb2RlOjpFeGNsdWRl
LCBTeW1ib2xQcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpOworICAgIFByb3BlcnR5TmFtZUFycmF5
IHByb3BlcnR5TmFtZXMoZXhlYywgUHJvcGVydGllc1R5cGVNb2RlOjpCb3RoKTsKKyAgICBhc09i
amVjdChwcm9wZXJ0aWVzKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5
TmFtZXMoYXNPYmplY3QocHJvcGVydGllcyksIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0
aW9uTW9kZShEb250RW51bVByb3BlcnRpZXNNb2RlOjpFeGNsdWRlKSk7CiAgICAgc2l6ZV90IG51
bVByb3BlcnRpZXMgPSBwcm9wZXJ0eU5hbWVzLnNpemUoKTsKICAgICBWZWN0b3I8UHJvcGVydHlE
ZXNjcmlwdG9yPiBkZXNjcmlwdG9yczsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBtYXJrQnVm
ZmVyOwpAQCAtNDY3LDggKzQ2Nyw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2Jq
ZWN0Q29uc3RydWN0b3JTZWFsKEV4ZWNTdGF0ZSogZXhlYykKICAgICB9CiAKICAgICAvLyAyLiBG
b3IgZWFjaCBuYW1lZCBvd24gcHJvcGVydHkgbmFtZSBQIG9mIE8sCi0gICAgUHJvcGVydHlOYW1l
QXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZt
KCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgRW51bWVy
YXRpb25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUsIFN5bWJvbFByb3BlcnRp
ZXNNb2RlOjpJbmNsdWRlKSk7CisgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVj
LCBQcm9wZXJ0aWVzVHlwZU1vZGU6OkJvdGgpOworICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhl
Yy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBF
bnVtZXJhdGlvbk1vZGUoRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpOwogICAgIFBy
b3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBwcm9wZXJ0aWVzLmVuZCgpOwog
ICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0
aWVzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgSWRlbnRpZmllciBw
cm9wZXJ0eU5hbWUgPSAqaXRlcjsKQEAgLTUwMSw4ICs1MDEsOCBAQCBKU09iamVjdCogb2JqZWN0
Q29uc3RydWN0b3JGcmVlemUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0KQogICAg
IH0KIAogICAgIC8vIDIuIEZvciBlYWNoIG5hbWVkIG93biBwcm9wZXJ0eSBuYW1lIFAgb2YgTywK
LSAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAgIG9iamVjdC0+bWV0
aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBw
cm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGUoRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVk
ZSwgU3ltYm9sUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsKKyAgICBQcm9wZXJ0eU5hbWVBcnJh
eSBwcm9wZXJ0aWVzKGV4ZWMsIFByb3BlcnRpZXNUeXBlTW9kZTo6Qm90aCk7CisgICAgb2JqZWN0
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4
ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3BlcnRpZXNNb2RlOjpJ
bmNsdWRlKSk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHBy
b3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0
b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAg
ICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9ICppdGVyOwpAQCAtNTYxLDggKzU2MSw4IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc1NlYWxlZChF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KG9iamVjdC0+aXNTZWFsZWQoZXhlYy0+dm0oKSkpKTsKIAogICAgIC8vIDIuIEZvciBlYWNoIG5h
bWVkIG93biBwcm9wZXJ0eSBuYW1lIFAgb2YgTywKLSAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9w
ZXJ0aWVzKGV4ZWMpOwotICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93
blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGUo
RG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSwgU3ltYm9sUHJvcGVydGllc01vZGU6Oklu
Y2x1ZGUpKTsKKyAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMsIFByb3BlcnRp
ZXNUeXBlTW9kZTo6Qm90aCk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+
Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9u
TW9kZShEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSk7CiAgICAgUHJvcGVydHlOYW1l
QXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHByb3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQ
cm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4o
KTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFt
ZSA9ICppdGVyOwpAQCAtNTk0LDggKzU5NCw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0Q29uc3RydWN0b3JJc0Zyb3plbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKG9iamVjdC0+aXNGcm96ZW4oZXhlYy0+dm0o
KSkpKTsKIAogICAgIC8vIDIuIEZvciBlYWNoIG5hbWVkIG93biBwcm9wZXJ0eSBuYW1lIFAgb2Yg
TywKLSAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAgIG9iamVjdC0+
bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVj
LCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGUoRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5j
bHVkZSwgU3ltYm9sUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsKKyAgICBQcm9wZXJ0eU5hbWVB
cnJheSBwcm9wZXJ0aWVzKGV4ZWMsIFByb3BlcnRpZXNUeXBlTW9kZTo6Qm90aCk7CisgICAgb2Jq
ZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3Qs
IGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3BlcnRpZXNNb2Rl
OjpJbmNsdWRlKSk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IHByb3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRl
cmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewog
ICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9ICppdGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgKaW5kZXggYzJmMTNkOGMz
NzI5YWU1YWI3YmQzOWRiNzRlMzQ1ODgzZTRjODY3Mi4uMjEwODc2YzVmYmQ1MTZiY2RjNGUxYzIx
YjVjM2IxYzQ1NjExZDkyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlOYW1lQXJyYXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCkBAIC00OCwxNSArNDgsMTUgQEAgY2xhc3MgUHJvcGVydHlO
YW1lQXJyYXlEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8UHJvcGVydHlOYW1lQXJyYXlEYXRhPiB7
CiAvLyBGSVhNRTogUmVuYW1lIHRvIFByb3BlcnR5TmFtZUFycmF5QnVpbGRlci4KIGNsYXNzIFBy
b3BlcnR5TmFtZUFycmF5IHsKIHB1YmxpYzoKLSAgICBQcm9wZXJ0eU5hbWVBcnJheShWTSogdm0p
CisgICAgUHJvcGVydHlOYW1lQXJyYXkoVk0qIHZtLCBQcm9wZXJ0aWVzVHlwZU1vZGUgdHlwZU1v
ZGUpCiAgICAgICAgIDogbV9kYXRhKFByb3BlcnR5TmFtZUFycmF5RGF0YTo6Y3JlYXRlKCkpCiAg
ICAgICAgICwgbV92bSh2bSkKKyAgICAgICAgLCBtX3R5cGVNb2RlKHR5cGVNb2RlKQogICAgIHsK
ICAgICB9CiAKLSAgICBQcm9wZXJ0eU5hbWVBcnJheShFeGVjU3RhdGUqIGV4ZWMpCi0gICAgICAg
IDogbV9kYXRhKFByb3BlcnR5TmFtZUFycmF5RGF0YTo6Y3JlYXRlKCkpCi0gICAgICAgICwgbV92
bSgmZXhlYy0+dm0oKSkKKyAgICBQcm9wZXJ0eU5hbWVBcnJheShFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnRpZXNUeXBlTW9kZSB0eXBlTW9kZSkKKyAgICAgICAgOiBQcm9wZXJ0eU5hbWVBcnJheSgm
ZXhlYy0+dm0oKSwgdHlwZU1vZGUpCiAgICAgewogICAgIH0KIApAQCAtODUsMTAgKzg1LDE3IEBA
IGNsYXNzIFByb3BlcnR5TmFtZUFycmF5IHsKICAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCkuYmVnaW4oKTsgfQogICAg
IGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS0+cHJvcGVydHlOYW1l
VmVjdG9yKCkuZW5kKCk7IH0KIAorICAgIFByb3BlcnRpZXNUeXBlTW9kZSB0eXBlTW9kZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdHlwZU1vZGU7IH0KKyAgICBib29sIGluY2x1ZGVTeW1ib2xQcm9wZXJ0
aWVzKCkgY29uc3Q7CisgICAgYm9vbCBpbmNsdWRlU3RyaW5nUHJvcGVydGllcygpIGNvbnN0Owor
CiBwcml2YXRlOgorICAgIGJvb2wgaXNVaWRNYXRjaGVkVG9UeXBlTW9kZShVbmlxdWVkU3RyaW5n
SW1wbCogaWRlbnRpZmllcik7CisKICAgICBSZWZQdHI8UHJvcGVydHlOYW1lQXJyYXlEYXRhPiBt
X2RhdGE7CiAgICAgSGFzaFNldDxVbmlxdWVkU3RyaW5nSW1wbCo+IG1fc2V0OwogICAgIFZNKiBt
X3ZtOworICAgIFByb3BlcnRpZXNUeXBlTW9kZSBtX3R5cGVNb2RlOwogfTsKIAogQUxXQVlTX0lO
TElORSB2b2lkIFByb3BlcnR5TmFtZUFycmF5OjphZGQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRp
ZmllcikKQEAgLTk4LDYgKzEwNSw4IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBQcm9wZXJ0eU5hbWVB
cnJheTo6YWRkKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiAKIEFMV0FZU19JTkxJTkUg
dm9pZCBQcm9wZXJ0eU5hbWVBcnJheTo6YWRkS25vd25VbmlxdWUoVW5pcXVlZFN0cmluZ0ltcGwq
IGlkZW50aWZpZXIpCiB7CisgICAgaWYgKCFpc1VpZE1hdGNoZWRUb1R5cGVNb2RlKGlkZW50aWZp
ZXIpKQorICAgICAgICByZXR1cm47CiAgICAgbV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKS5h
cHBlbmQoSWRlbnRpZmllcjo6ZnJvbVVpZChtX3ZtLCBpZGVudGlmaWVyKSk7CiB9CiAKQEAgLTEw
Nyw2ICsxMTYsOSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgUHJvcGVydHlOYW1lQXJyYXk6OmFkZChV
bmlxdWVkU3RyaW5nSW1wbCogaWRlbnRpZmllcikKIAogICAgIEFTU0VSVChpZGVudGlmaWVyKTsK
IAorICAgIGlmICghaXNVaWRNYXRjaGVkVG9UeXBlTW9kZShpZGVudGlmaWVyKSkKKyAgICAgICAg
cmV0dXJuOworCiAgICAgaWYgKHNpemUoKSA8IHNldFRocmVzaG9sZCkgewogICAgICAgICBpZiAo
bV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKS5jb250YWlucyhpZGVudGlmaWVyKSkKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTEyMiw2ICsxMzQsMjMgQEAgQUxXQVlTX0lOTElORSB2b2lkIFBy
b3BlcnR5TmFtZUFycmF5OjphZGQoVW5pcXVlZFN0cmluZ0ltcGwqIGlkZW50aWZpZXIpCiAgICAg
YWRkS25vd25VbmlxdWUoaWRlbnRpZmllcik7CiB9CiAKK0FMV0FZU19JTkxJTkUgYm9vbCBQcm9w
ZXJ0eU5hbWVBcnJheTo6aXNVaWRNYXRjaGVkVG9UeXBlTW9kZShVbmlxdWVkU3RyaW5nSW1wbCog
aWRlbnRpZmllcikKK3sKKyAgICBpZiAoaWRlbnRpZmllci0+aXNTeW1ib2woKSkKKyAgICAgICAg
cmV0dXJuIGluY2x1ZGVTeW1ib2xQcm9wZXJ0aWVzKCk7CisgICAgcmV0dXJuIGluY2x1ZGVTdHJp
bmdQcm9wZXJ0aWVzKCk7Cit9CisKK0FMV0FZU19JTkxJTkUgYm9vbCBQcm9wZXJ0eU5hbWVBcnJh
eTo6aW5jbHVkZVN5bWJvbFByb3BlcnRpZXMoKSBjb25zdAoreworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxzdGQ6OnVuZGVybHlpbmdfdHlwZTxQcm9wZXJ0aWVzVHlwZU1vZGU+Ojp0eXBlPihtX3R5
cGVNb2RlKSAmIHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190eXBlPFByb3BlcnRpZXNUeXBl
TW9kZT46OnR5cGU+KFByb3BlcnRpZXNUeXBlTW9kZTo6U3ltYm9scyk7Cit9CisKK0FMV0FZU19J
TkxJTkUgYm9vbCBQcm9wZXJ0eU5hbWVBcnJheTo6aW5jbHVkZVN0cmluZ1Byb3BlcnRpZXMoKSBj
b25zdAoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlpbmdfdHlwZTxQcm9w
ZXJ0aWVzVHlwZU1vZGU+Ojp0eXBlPihtX3R5cGVNb2RlKSAmIHN0YXRpY19jYXN0PHN0ZDo6dW5k
ZXJseWluZ190eXBlPFByb3BlcnRpZXNUeXBlTW9kZT46OnR5cGU+KFByb3BlcnRpZXNUeXBlTW9k
ZTo6U3RyaW5ncyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gUHJvcGVy
dHlOYW1lQXJyYXlfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09i
amVjdC5jcHAKaW5kZXggZWI3NDMwZWI1NTNhZDc2MDc0Nzg1NGIyZjY0ZWViZWI3ZTUwODc4Mi4u
YjVhYTNmNzJkMTEwZjU5M2UxM2VhOWFkY2UxOWY2ZDFkMmUzODkzNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCkBAIC0xNDYsOSArMTQ2LDEx
IEBAIGJvb2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkCiB2b2lkIFN0cmluZ09iamVjdDo6Z2V0T3duUHJv
cGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKICAgICBTdHJp
bmdPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8U3RyaW5nT2JqZWN0Kj4ob2JqZWN0KTsKLSAg
ICBpbnQgc2l6ZSA9IHRoaXNPYmplY3QtPmludGVybmFsVmFsdWUoKS0+bGVuZ3RoKCk7Ci0gICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHByb3BlcnR5TmFtZXMuYWRk
KElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkpOworICAgIGlmIChwcm9wZXJ0eU5hbWVzLmluY2x1
ZGVTdHJpbmdQcm9wZXJ0aWVzKCkpIHsKKyAgICAgICAgaW50IHNpemUgPSB0aGlzT2JqZWN0LT5p
bnRlcm5hbFZhbHVlKCktPmxlbmd0aCgpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNp
emU7ICsraSkKKyAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20o
ZXhlYywgaSkpOworICAgIH0KICAgICBpZiAobW9kZS5pbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KCkpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5n
dGgpOwogICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IGNhMDk3ZjdjODIzNjM4OTZmNjBiYTg4MmYxMWJiZmQy
ZjYwNDA2MjQuLjk4ZDNmYzIwMTZiMTQxNzg5ZDc1YTU1YTFhY2ZkZDBhNmY2YTM5YTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtOTQ3LDcgKzk0
Nyw3IEBAIHZvaWQgU3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnVjdHVyZShWTSYg
dm0sIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0CiAgICAgZm9yIChQcm9wZXJ0eVRhYmxlOjpp
dGVyYXRvciBpdGVyID0gcHJvcGVydHlUYWJsZSgpLT5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytp
dGVyKSB7CiAgICAgICAgIEFTU0VSVChoYXNOb25FbnVtZXJhYmxlUHJvcGVydGllcygpIHx8ICEo
aXRlci0+YXR0cmlidXRlcyAmIERvbnRFbnVtKSk7CiAgICAgICAgIGlmICghKGl0ZXItPmF0dHJp
YnV0ZXMgJiBEb250RW51bSkgfHwgbW9kZS5pbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpIHsK
LSAgICAgICAgICAgIGlmIChpdGVyLT5rZXktPmlzU3ltYm9sKCkgJiYgIW1vZGUuaW5jbHVkZVN5
bWJvbFByb3BlcnRpZXMoKSkKKyAgICAgICAgICAgIGlmIChpdGVyLT5rZXktPmlzU3ltYm9sKCkg
JiYgIXByb3BlcnR5TmFtZXMuaW5jbHVkZVN5bWJvbFByb3BlcnRpZXMoKSkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChrbm93blVuaXF1ZSkKICAgICAgICAgICAg
ICAgICBwcm9wZXJ0eU5hbWVzLmFkZEtub3duVW5pcXVlKGl0ZXItPmtleSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuY3BwCmluZGV4IDVjMjQzNmE5NDI4ZTY4YWMyMzQ1
MGNmMzRjMzQ0NDg4N2NhMWFjOGYuLjUyNDI0MzEwZjAwMjBmNTExZmI4ODFkNTllYmRhMGEzZDg3
OTcxZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuY3BwCkBAIC02
Miw3ICs2Miw3IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0T3duUHJvcGVydGllc0FzU3RyaW5nSGFz
aE1hcChIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgbWFwKSBjCiAgICAgSlNPYmplY3QqIG9iamVj
dCA9ICBtX2RpY3Rpb25hcnkuaW5pdGlhbGl6ZXJPYmplY3QoKTsKICAgICBFeGVjU3RhdGUqIGV4
ZWMgPSBtX2RpY3Rpb25hcnkuZXhlY1N0YXRlKCk7CiAKLSAgICBQcm9wZXJ0eU5hbWVBcnJheSBw
cm9wZXJ0eU5hbWVzKGV4ZWMpOworICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMo
ZXhlYywgUHJvcGVydGllc1R5cGVNb2RlOjpTdHJpbmdzKTsKICAgICBKU09iamVjdDo6Z2V0T3du
UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9k
ZSgpKTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdCA9IHBy
b3BlcnR5TmFtZXMuYmVnaW4oKTsgaXQgIT0gcHJvcGVydHlOYW1lcy5lbmQoKTsgKytpdCkgewog
ICAgICAgICBTdHJpbmcgc3RyaW5nS2V5ID0gaXQtPnN0cmluZygpOwpAQCAtODcsNyArODcsNyBA
QCBib29sIERpY3Rpb25hcnk6OmdldE93blByb3BlcnR5TmFtZXMoVmVjdG9yPFN0cmluZz4mIG5h
bWVzKSBjb25zdAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSAgbV9kaWN0aW9uYXJ5LmluaXRpYWxp
emVyT2JqZWN0KCk7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gbV9kaWN0aW9uYXJ5LmV4ZWNTdGF0
ZSgpOwogCi0gICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKKyAgICBQ
cm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMsIFByb3BlcnRpZXNUeXBlTW9kZTo6
U3RyaW5ncyk7CiAgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUoKSk7CiAgICAgZm9yIChQcm9wZXJ0eU5h
bWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwcm9wZXJ0eU5hbWVzLmJlZ2luKCk7IGl0ICE9
IHByb3BlcnR5TmFtZXMuZW5kKCk7ICsraXQpIHsKICAgICAgICAgU3RyaW5nIHN0cmluZ0tleSA9
IGl0LT5zdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDY3ODYxMTkwNjk4MDVlNzViN2M5NGFkZGNkNzE1
MjdmYWZkN2ViZTMuLjMzOTQyNGFkMzc4MzJkODhlZTRmY2Q0MmZmY2YyOGQzNDM2ODI4ZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcApAQCAtMTI1NCw3ICsxMjU0LDcgQEAgU2VyaWFsaXphdGlvblJldHVybkNvZGUgQ2xv
bmVTZXJpYWxpemVyOjpzZXJpYWxpemUoSlNWYWx1ZSBpbikKICAgICAgICAgICAgICAgICAgICAg
aW5kZXhTdGFjay5yZW1vdmVMYXN0KCk7CiAgICAgICAgICAgICAgICAgICAgIGxlbmd0aFN0YWNr
LnJlbW92ZUxhc3QoKTsKIAotICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0YWNrLmFwcGVu
ZChQcm9wZXJ0eU5hbWVBcnJheShtX2V4ZWMpKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVy
dHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjLCBQcm9wZXJ0aWVzVHlwZU1v
ZGU6OlN0cmluZ3MpKTsKICAgICAgICAgICAgICAgICAgICAgYXJyYXktPm1ldGhvZFRhYmxlKCkt
PmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhhcnJheSwgbV9leGVjLCBwcm9wZXJ0eVN0YWNr
Lmxhc3QoKSwgRW51bWVyYXRpb25Nb2RlKCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAocHJv
cGVydHlTdGFjay5sYXN0KCkuc2l6ZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB3cml0
ZShOb25JbmRleFByb3BlcnRpZXNUYWcpOwpAQCAtMTMwNCw3ICsxMzA0LDcgQEAgU2VyaWFsaXph
dGlvblJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoSlNWYWx1ZSBpbikKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIERhdGFDbG9uZUVycm9yOwogICAgICAgICAgICAgICAg
IGlucHV0T2JqZWN0U3RhY2suYXBwZW5kKGluT2JqZWN0KTsKICAgICAgICAgICAgICAgICBpbmRl
eFN0YWNrLmFwcGVuZCgwKTsKLSAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0YWNrLmFwcGVuZChQ
cm9wZXJ0eU5hbWVBcnJheShtX2V4ZWMpKTsKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0YWNr
LmFwcGVuZChQcm9wZXJ0eU5hbWVBcnJheShtX2V4ZWMsIFByb3BlcnRpZXNUeXBlTW9kZTo6U3Ry
aW5ncykpOwogICAgICAgICAgICAgICAgIGluT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Q
cm9wZXJ0eU5hbWVzKGluT2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFbnVt
ZXJhdGlvbk1vZGUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBvYmplY3RTdGFydFZp
c2l0TWVtYmVyOgpAQCAtMTM3Miw3ICsxMzcyLDcgQEAgU2VyaWFsaXphdGlvblJldHVybkNvZGUg
Q2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoSlNWYWx1ZSBpbikKICAgICAgICAgICAgICAgICAg
ICAgbWFwSXRlcmF0b3JTdGFjay5yZW1vdmVMYXN0KCk7CiAgICAgICAgICAgICAgICAgICAgIEpT
T2JqZWN0KiBvYmplY3QgPSBpbnB1dE9iamVjdFN0YWNrLmxhc3QoKTsKICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNNYXAqPihvYmplY3QpKTsKLSAgICAgICAgICAg
ICAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjKSk7
CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFy
cmF5KG1fZXhlYywgUHJvcGVydGllc1R5cGVNb2RlOjpTdHJpbmdzKSk7CiAgICAgICAgICAgICAg
ICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3Qs
IG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEVudW1lcmF0aW9uTW9kZSgpKTsKICAgICAg
ICAgICAgICAgICAgICAgd3JpdGUoTm9uTWFwUHJvcGVydGllc1RhZyk7CiAgICAgICAgICAgICAg
ICAgICAgIGluZGV4U3RhY2suYXBwZW5kKDApOwpAQCAtMTQxNiw3ICsxNDE2LDcgQEAgU2VyaWFs
aXphdGlvblJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoSlNWYWx1ZSBpbikK
ICAgICAgICAgICAgICAgICAgICAgc2V0SXRlcmF0b3JTdGFjay5yZW1vdmVMYXN0KCk7CiAgICAg
ICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBpbnB1dE9iamVjdFN0YWNrLmxhc3Qo
KTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNTZXQqPihvYmpl
Y3QpKTsKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlO
YW1lQXJyYXkobV9leGVjKSk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5U3RhY2suYXBw
ZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYywgUHJvcGVydGllc1R5cGVNb2RlOjpTdHJpbmdz
KSk7CiAgICAgICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJv
cGVydHlOYW1lcyhvYmplY3QsIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEVudW1lcmF0
aW9uTW9kZSgpKTsKICAgICAgICAgICAgICAgICAgICAgd3JpdGUoTm9uU2V0UHJvcGVydGllc1Rh
Zyk7CiAgICAgICAgICAgICAgICAgICAgIGluZGV4U3RhY2suYXBwZW5kKDApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9OUF9qc29iamVjdC5jcHAKaW5kZXggMDk0YjFhZWQ4NjNmMTY3YTgwNzY2NzBiYjQ1
ZDY5ZTg4MDRmNmJjYS4uMGU4Mjk0MTAyMDQ1YzczNWU3MTY3NjFjYjFiZGZjYzU0ZWI1NjBjOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCkBAIC00NDUsNyArNDQ1LDcgQEAg
Ym9vbCBfTlBOX0VudW1lcmF0ZShOUFAsIE5QT2JqZWN0KiBvLCBOUElkZW50aWZpZXIqKiBpZGVu
dGlmaWVyLCB1aW50MzJfdCogY291bnQKICAgICAgICAgCiAgICAgICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7CiAgICAgICAgIEpT
TG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0
eU5hbWVzKGV4ZWMpOworICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4
ZWMsIFByb3BlcnRpZXNUeXBlTW9kZTo6U3RyaW5ncyk7CiAKICAgICAgICAgb2JqLT5pbXAtPm1l
dGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMob2JqLT5pbXAsIGV4ZWMsIHByb3BlcnR5TmFt
ZXMsIEVudW1lcmF0aW9uTW9kZSgpKTsKICAgICAgICAgdW5zaWduZWQgc2l6ZSA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihwcm9wZXJ0eU5hbWVzLnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHkubW0KaW5kZXggYWJhZTc4MTEwMWFiM2JhYTUzNmIyMmQxYjNjM2YxYjlmOTAzYWM0OS4u
ZGNiNjhkZTYxNDQ0YzBiYzA5MjI3ZDI0YTkwOGJiM2VlNjBiZDMzYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eS5tbQpAQCAtMTIzMCw3ICsxMjMwLDcgQEAgYm9vbCBOZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHk6OmVudW1lcmF0ZSh1aW50MzJfdCBvYmplY3RJRCwgZGF0YV90JiByZXN1
bHREYXQKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBmcmFtZS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0
KHBsdWdpbldvcmxkKCkpLT5nbG9iYWxFeGVjKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhl
Yyk7CiAgCi0gICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKKyAgICBQ
cm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMsIFByb3BlcnRpZXNUeXBlTW9kZTo6
U3RyaW5ncyk7CiAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKG9i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKCkpOwogCiAgICAgUmV0
YWluUHRyPE5TTXV0YWJsZUFycmF5Kj4gYXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcAppbmRleCAyMGRjNGQ4ZmI0Yjk5NDkzNzhj
MGVkNGMzNGIwYzUyOWQzMTE3OTE2Li43YjEzZWRmYWIwNzAzZGQ3NDQ3Nzg4OTIwNDBlZjg4MGQ5
ZTA3Mzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTlBKU09iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwCkBAIC0yMzksNyArMjM5LDcgQEAgYm9vbCBOUEpT
T2JqZWN0OjplbnVtZXJhdGUoTlBJZGVudGlmaWVyKiogaWRlbnRpZmllcnMsIHVpbnQzMl90KiBp
ZGVudGlmaWVyQ291bnQKICAgICAKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKIAotICAg
IFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYyk7CisgICAgUHJvcGVydHlOYW1l
QXJyYXkgcHJvcGVydHlOYW1lcyhleGVjLCBQcm9wZXJ0aWVzVHlwZU1vZGU6OlN0cmluZ3MpOwog
ICAgIG1fanNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMobV9qc09iamVj
dC5nZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKCkpOwogCiAgICAg
TlBJZGVudGlmaWVyKiBuYW1lSWRlbnRpZmllcnMgPSBucG5NZW1OZXdBcnJheTxOUElkZW50aWZp
ZXI+KHByb3BlcnR5TmFtZXMuc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhYmYzMWVmYjRjODFlY2NhN2I3MmI0
YmVkNTcwZjhkMmY5MzAyMWIwLi5mNTVkNDM4YmQyNGEyM2Y3NGQ0NzBjYTEyYWY3M2JmZmY2Nzg3
ZWE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMDctMjMgIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5U3lt
Ym9scyBvbiBsYXJnZSBsaXN0IHRha2VzIHZlcnkgbG9uZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2MTM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9yZWdyZXNzL29iamVjdC1nZXQtb3duLXBy
b3BlcnR5LXN5bWJvbHMtb24tbGFyZ2UtYXJyYXktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9yZWdyZXNzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMtb24tbGFyZ2Ut
YXJyYXkuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvb2Jq
ZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy1vbi1sYXJnZS1hcnJheS5qczogQWRkZWQuCisg
ICAgICAgICh0cmlhbCk6CisKIDIwMTUtMDctMjIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgTGF5ZXIgei1vcmRlcmluZyBpcyBpbmNvcnJlY3Qgd2hl
biBzY3JvbGxpbmcgb24gcGFnZSB3aXRpaCBwb3NpdGlvbjpmaXhlZApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLW9uLWxh
cmdlLWFycmF5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvb2JqZWN0LWdl
dC1vd24tcHJvcGVydHktc3ltYm9scy1vbi1sYXJnZS1hcnJheS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTNiZWI2ZmRkYzc5M2U0ZjdjNjVkZDgwNDA1NGVkNGVmMmYwZDgyZAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHkt
c3ltYm9scy1vbi1sYXJnZS1hcnJheS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorSlNS
ZWdyZXNzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMtb24tbGFyZ2UtYXJyYXkKKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3lt
Ym9scy1vbi1sYXJnZS1hcnJheS5odG1sIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9vYmplY3Qt
Z2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLW9uLWxhcmdlLWFycmF5Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTkxNDRlNDdiNjRlZTBmYjM5NzU2ZTkxYjJmOTkxNjQyNzIxN2QyNwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9s
cy1vbi1sYXJnZS1hcnJheS5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5
bWJvbHMtb24tbGFyZ2UtYXJyYXkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvb2JqZWN0LWdldC1v
d24tcHJvcGVydHktc3ltYm9scy1vbi1sYXJnZS1hcnJheS5qcyBiL0xheW91dFRlc3RzL2pzL3Jl
Z3Jlc3Mvc2NyaXB0LXRlc3RzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMtb24tbGFy
Z2UtYXJyYXkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmFhNDg1ODVmNDVlMDhkNjI2NTg3MTlmMjBlNmJiODlh
Mjc4ZGYzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0
LXRlc3RzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMtb24tbGFyZ2UtYXJyYXkuanMK
QEAgLTAsMCArMSwxMyBAQAorZnVuY3Rpb24gdHJpYWwoKQoreworICAgIHZhciBidWZmZXIgPSBu
ZXcgQXJyYXlCdWZmZXIoMTAwMDAwMDApOworICAgIHZhciBpbnQ4VmlldyA9IG5ldyBJbnQ4QXJy
YXkoYnVmZmVyKTsKKyAgICB2YXIgc3RhcnQgPSBEYXRlLm5vdygpOworICAgIHZhciByZXN1bHQg
PSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGludDhWaWV3KTsKKyAgICB2YXIgZGVsdGEg
PSBEYXRlLm5vdygpIC0gc3RhcnQ7CisgICAgaWYgKGRlbHRhID4gMTAwMCkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGB0aW1lIGNvbnN1bWluZyAoJHtkZWx0YX1tcylgKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCit0cmlhbCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257462</attachid>
            <date>2015-07-24 11:28:19 -0700</date>
            <delta_ts>2015-07-24 12:32:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146137-20150724112704.patch</filename>
            <type>text/plain</type>
            <size>47356</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3MzQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZGM3MWNhODBiZDE5ZTJjZmZmZGVkMjNkM2RiMDEyNzk0ZjcwMDlkLi5mODRjODIxOWMyZTliNjEx
NWU2MmVlMjQyMmM1MDM3ZmRlNzM0YmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDMgQEAKKzIwMTUtMDctMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyBvbiBsYXJnZSBs
aXN0IHRha2VzIHZlcnkgbG9uZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQ2MTM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQmVmb3JlIHRoaXMgcGF0Y2gsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJv
bHMgY29sbGVjdHMgYWxsIHRoZSBuYW1lcyBpbmNsdWRpbmcgc3RyaW5ncy4KKyAgICAgICAgQW5k
IGFmdGVyIGl0J3MgZG9uZSwgZmlsdGVyIHRoZSBuYW1lcyB0byBvbmx5IHJldHJpZXZlIHRoZSBz
eW1ib2xzLgorICAgICAgICBCdXQgaXQncyBzbyB0aW1lIGNvbnN1bWluZyBpZiB0aGUgZ2l2ZW4g
b2JqZWN0IGlzIGEgbGFyZ2Ugbm9uLWhvbGVkIGFycmF5IHNpbmNlIGl0IGhhcworICAgICAgICBt
YW55IGluZGV4ZWQgcHJvcGVydGllcyBhbmQgYWxsIHRoZSBpbmRleGVzIGhhdmUgdG8gYmUgY29u
dmVydGVkIHRvIHVuaXF1ZWRfc3RyaW5ncyBhbmQKKyAgICAgICAgYWRkZWQgdG8gdGhlIGNvbGxl
Y3Rpb24gb2YgcHJvcGVydHkgbmFtZXMgKHRob3VnaCB0aGV5IG1heSBub3QgYmUgb2YgdGhlIHJl
cXVlc3RlZCB0eXBlCisgICAgICAgIGFuZCB3aWxsIGJlIGZpbHRlcmVkIG91dCBsYXRlcikKKwor
ICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgUHJvcGVydHlOYW1lTW9kZS4KKyAgICAgICAg
V2UgbGV2ZXJhZ2UgdGhpcyBtb2RlIGluIDIgcGxhY2VzLgorCisgICAgICAgIDEuIFByb3BlcnR5
TmFtZUFycmF5IHNpZGUKKyAgICAgICAgSXQgaXMgc2V0IGluIFByb3BlcnR5TmFtZUFycmF5IGFu
ZCBpdCBmaWx0ZXJzIHRoZSBpbmNvbWluZyBhZGRlZCBpZGVudGlmaWVycyBiYXNlZCBvbiB0aGUg
bW9kZS4KKyAgICAgICAgSXQgZW5zdXJlcyB0aGF0IFByb3BlcnR5TmFtZUFycmF5IGRvZXNuJ3Qg
YmVjb21lIHNvIGxhcmdlIGluIHRoZSBwYXRob2xvZ2ljYWwgY2FzZS4KKyAgICAgICAgQW5kIGl0
IGVuc3VyZXMgdGhhdCBub24tZXhwZWN0ZWQgdHlwZWQga2V5cyBieSB0aGUgZmlsdGVyIChTeW1i
b2xzIG9yIFN0cmluZ3MpIGFyZSBuZXZlciBhZGRlZAorICAgICAgICB0byB0aGUgcHJvcGVydHkg
bmFtZSBhcnJheSBjb2xsZWN0aW9ucy4KKyAgICAgICAgSG93ZXZlciBpdCBkb2VzIG5vdCBzb2x2
ZSB0aGUgd2hvbGUgcHJvYmxlbSBiZWNhdXNlIHRoZSBodWdlIGFycmF5IHN0aWxsIGluY3VycyB0
aGUgbWFueQorICAgICAgICAiaW5kZXhlZCBwcm9wZXJ0eSB0byB1bmlxdWVkIHN0cmluZyIgY29u
dmVyc2lvbiBhbmQgdGhlIGxhcmdlIGl0ZXJhdGlvbiBiZWZvcmUgYWRkaW5nIHRoZSBrZXlzCisg
ICAgICAgIHRvIHRoZSBwcm9wZXJ0eSBuYW1lIGFycmF5LgorCisgICAgICAgIDIuIGdldE93blBy
b3BlcnR5TmFtZXMgc2lkZQorICAgICAgICBTbyB3ZSBjYW4gdXNlIHRoZSBQcm9wZXJ0eU5hbWVN
b2RlIGluIHRoZSBjYWxsZXIgc2lkZSAoZ2V0T3duUHJvcGVydHlOYW1lcykgYXMgYSAqKmhpbnQq
Ki4KKyAgICAgICAgV2hlbiB0aGUgbGFyZ2UgaXRlcmF0aW9uIG1heSBvY2N1ciwgdGhlIGNhbGxl
ciBzaWRlIGNhbiB1c2UgdGhlIFByb3BlcnR5TmFtZU1vZGUgYXMgYSBoaW50IHRvCisgICAgICAg
IGF2b2lkIHRoZSBpdGVyYXRpb24uCisgICAgICAgIEJ1dCB3ZSBjYW5ub3QgZXhjbHVzaXZlbHkg
cmVseSBvbiB0aGVzZSBjYWxsZXIgc2lkZSBjaGVja3MgYmVjYXVzZSBpdCB3b3VsZCByZXF1aXJl
IHRoYXQgd2UKKyAgICAgICAgZXhoYXVzdGl2ZWx5IGFkZCB0aGUgY2hlY2tzIHRvIGFsbCBjdXN0
b20gaW1wbGVtZW50YXRpb25zIG9mIGdldE93blByb3BlcnR5TmFtZXMgYXMgd2VsbC4KKyAgICAg
ICAgVGhpcyBwcm9jZXNzIHJlcXVpcmVzIG1hbnVhbCBpbnNwZWN0aW9uIG9mIG1hbnkgcGllY2Vz
IG9mIGNvZGUsIGFuZCBpcyBlcnJvciBwcm9uZS4gSW5zdGVhZCwKKyAgICAgICAgd2Ugb25seSBh
cHBseSB0aGUgY2FsbGVyIHNpZGUgY2hlY2sgaW4gYSBmZXcgc3RyYXRlZ2ljIHBsYWNlcyB3aGVy
ZSBpdCBpcyBrbm93biB0byB5aWVsZAorICAgICAgICBwZXJmb3JtYW5jZSBiZW5lZml0czsgYW5k
IHdlIHJlbHkgb24gdGhlIGZpbHRlciBpbiBQcm9wZXJ0eU5hbWVBcnJheTo6YWRkKCkgdG8gcmVq
ZWN0IHRoZSB3cm9uZworICAgICAgICB0eXBlcyBvZiBwcm9wZXJ0aWVzIGZvciBhbGwgb3RoZXIg
Y2FsbHMgdG8gUHJvcGVydHlOYW1lQXJyYXk6OmFkZCgpLgorCisgICAgICAgIEluIHRoaXMgcGF0
Y2gsIHRoZXJlJ3MgYSBjb25jZXB0IGluIHVzZSB0aGF0IGlzIG5vdCBjbGVhciBqdXN0IGZyb20g
cmVhZGluZyB0aGUgY29kZSwgYW5kIGhlbmNlCisgICAgICAgIHNob3VsZCBiZSBkb2N1bWVudGVk
IGhlcmUuIFdoZW4gc2VsZWN0aW5nIHRoZSBQcm9wZXJ0eU5hbWVNb2RlIGZvciB0aGUgUHJvcGVy
dHlOYW1lQXJyYXkgdG8gYmUKKyAgICAgICAgaW5zdGFudGlhdGVkLCB3ZSBhcHBseSB0aGUgZm9s
bG93aW5nIGxvZ2ljOgorCisgICAgICAgIDEuIE9ubHkgSmF2YVNjcmlwdENvcmUgY29kZSBpcyBh
d2FyZSBvZiBFUzYgU3ltYm9scy4KKyAgICAgICAgV2UgY2FuIGFzc3VtZSB0aGF0IHByZS1leGlz
dGluZyBleHRlcm5hbCBjb2RlIHRoYXQgaW50ZXJmYWNlcyBKU0MgYXJlIG9ubHkgbG9va2luZyBm
b3Igc3RyaW5nIG5hbWVkIHByb3BlcnRpZXMuIFRoaXMgaW5jbHVkZXM6CisgICAgICAgICAgICBh
LiBXZWJDb3JlIGJpbmRpbmdzCisgICAgICAgICAgICBiLiBTZXJpYWxpemVyIGJpbmRpbmdzCisg
ICAgICAgICAgICBjLiBOUEFQSSBiaW5kaW5ncworICAgICAgICAgICAgZC4gT2JqZWN0aXZlIEMg
YmluZGluZ3MKKyAgICAgICAgMi4gSW4gSlNDLCBjb2RlIHRoYXQgY29tcHV0ZSBvYmplY3Qgc3Rv
cmFnZSBzcGFjZSBuZWVkcyB0byBpdGVyYXRlIGJvdGggU3ltYm9sIGFuZCBTdHJpbmcgbmFtZWQg
cHJvcGVydGllcy4gSGVuY2UsIHVzZSBQcm9wZXJ0eU5hbWVNb2RlOjpCb3RoLgorICAgICAgICAz
LiBJbiBKU0MsIEVTNiBBUElzIHRoYXQgd29yayB3aXRoIFN5bWJvbHMgc2hvdWxkIHVzZSBQcm9w
ZXJ0eU5hbWVNb2RlOjpTeW1ib2xzLgorICAgICAgICA0LiBJbiBKU0MsIEVTNiBBUElzIHRoYXQg
d29yayB3aXRoIFN0cmluZyBuYW1lZCBwcm9wZXJ0aWVzIHNob3VsZCB1c2UgUHJvcGVydHlOYW1l
TW9kZTo6U3RyaW5ncy4KKworICAgICAgICAqIEFQSS9KU09iamVjdFJlZi5jcHA6CisgICAgICAg
IChKU09iamVjdENvcHlQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRW
YWx1ZS5jcHA6CisgICAgICAgIChEZXByZWNhdGVkOjpqc1RvSW5zcGVjdG9yVmFsdWUpOgorICAg
ICAgICAqIGJ5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlLmg6CisgICAgICAgIChKU0M6
Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpwb3NzaWJsZURlZmF1bHRQcm9wZXJ0eUNvdW50KToK
KyAgICAgICAgKiBydW50aW1lL0VudW1lcmF0aW9uTW9kZS5oOgorICAgICAgICAoSlNDOjpFbnVt
ZXJhdGlvbk1vZGU6OkVudW1lcmF0aW9uTW9kZSk6CisgICAgICAgIChKU0M6OkVudW1lcmF0aW9u
TW9kZTo6aW5jbHVkZVN5bWJvbFByb3BlcnRpZXMpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRp
bWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6R2VuZXJpY0FyZ3Vt
ZW50czxUeXBlPjo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwOgorICAgICAgICAoSlNDOjpKU0xleGljYWxF
bnZpcm9ubWVudDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50
aW1lL0pTT05PYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdpZmllcjo6U3RyaW5naWZp
ZXIpOgorICAgICAgICAoSlNDOjpTdHJpbmdpZmllcjo6SG9sZGVyOjphcHBlbmROZXh0UHJvcGVy
dHkpOgorICAgICAgICAoSlNDOjpXYWxrZXI6OndhbGspOgorICAgICAgICAqIHJ1bnRpbWUvSlNP
YmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6
CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVu
dGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6cHJvcGVydHlO
YW1lRW51bWVyYXRvcik6CisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9w
ZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAg
ICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMpOgorICAgICAg
ICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcktleXMpOgorICAgICAgICAoSlNDOjpkZWZpbmVQcm9w
ZXJ0aWVzKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JTZWFsKToKKyAgICAgICAg
KEpTQzo6b2JqZWN0Q29uc3RydWN0b3JGcmVlemUpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25z
dHJ1Y3RvcklzU2VhbGVkKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JJc0Zyb3pl
bik6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oOgorICAgICAgICAoSlND
OjpQcm9wZXJ0eU5hbWVBcnJheTo6UHJvcGVydHlOYW1lQXJyYXkpOgorICAgICAgICAoSlNDOjpQ
cm9wZXJ0eU5hbWVBcnJheTo6bW9kZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZUFycmF5
OjphZGRLbm93blVuaXF1ZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZUFycmF5OjphZGQp
OgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU5hbWVBcnJheTo6aXNVaWRNYXRjaGVkVG9UeXBlTW9k
ZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZUFycmF5OjppbmNsdWRlU3ltYm9sUHJvcGVy
dGllcyk6CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZUFycmF5OjppbmNsdWRlU3RyaW5nUHJv
cGVydGllcyk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAgICAo
SlNDOjpTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5h
bWVzRnJvbVN0cnVjdHVyZSk6CisKIDIwMTUtMDctMjMgIFN1a29sc2FrIFNha3NodXdvbmcgIDxz
dWtvbHNha0BnbWFpbC5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IFdlYkFzc2VtYmx5IG1vZHVs
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBlNDMyZjJmOWVkZTQwYTU5OTg0MmM4YWFkNjBkN2RlNzU1OTE3Yjk4
Li5mOWJiZjE2NWY0MDM4ZDhlZWFjOGRlNjBkYmZjM2VlMGY5OTYwNWRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTUtMDctMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisKKyAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyBvbiBsYXJn
ZSBsaXN0IHRha2VzIHZlcnkgbG9uZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ2MTM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpY3Rpb25hcnk6OmdldE93blByb3BlcnRpZXNBc1N0cmluZ0hhc2hNYXApOgorICAg
ICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAg
ICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKToKKyAgICAgICAgKiBicmlkZ2UvTlBfanNv
YmplY3QuY3BwOgorICAgICAgICAoX05QTl9FbnVtZXJhdGUpOgorCiAyMDE1LTA3LTI0ICBKb3Nl
cGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgQ1NTICJjb250ZW50
IiBwcm9wZXJ0eSBpcyBtaXNzaW5nIGluIGdldENvbXB1dGVkU3R5bGVzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
aW5kZXggMTE5YjFmMjdiNTUwMDc0MDhhOTI4YjJmZTFiNWI2NTNiZmI5ZjJkNC4uMDdiZTUwY2Uy
NThjMDQ3NDc0MzY4NTU3OGM5NDk0MTE3ZTA5MDM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDE1LTA3LTI0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgorCisgICAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgb24gbGFyZ2UgbGlz
dCB0YWtlcyB2ZXJ5IGxvbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0NjEzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1t
OgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmVudW1lcmF0
ZSk6CisKIDIwMTUtMDctMjMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBSZW1vdmUgY29tcGlsZSBhbmQgcnVudGltZSBmbGFncyBmb3IgcHJv
bWlzZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDQzMzYyNzFlZWNhOTY5MTU1ZTdiNTNjNDU2NzM3Yzg1ZDcz
Y2IyNy4uZjJlZTg4YzIxY2IxNDAzMTE0MDU1NDlkN2E5NTEzNTg0NDIxMjgyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTA3LTI0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgorCisgICAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgb24g
bGFyZ2UgbGlzdCB0YWtlcyB2ZXJ5IGxvbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0NjEzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpOUEpTT2JqZWN0OjplbnVtZXJhdGUpOgorCiAyMDE1
LTA3LTI0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR1N0cmVhbWVyXSBDcmFzaGVzIGR1cmluZyBwbHVnaW4gaW5zdGFsbGF0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4IGZhZjM4ZmY4YzIzZTlk
ZjA4YTAzMDBhNTk0MWUxN2EzNTQ2ZDdlYjQuLmUwNWZiYmJkZGZkZjIyNWVmZWE5NTAxMzAxNWRm
MWY5MjhkYTI5Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmpl
Y3RSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3Bw
CkBAIC02MjIsNyArNjIyLDcgQEAgSlNQcm9wZXJ0eU5hbWVBcnJheVJlZiBKU09iamVjdENvcHlQ
cm9wZXJ0eU5hbWVzKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG8KIAogICAgIEpTT2Jq
ZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKICAgICBKU1Byb3BlcnR5TmFtZUFycmF5UmVm
IHByb3BlcnR5TmFtZXMgPSBuZXcgT3BhcXVlSlNQcm9wZXJ0eU5hbWVBcnJheSh2bSk7Ci0gICAg
UHJvcGVydHlOYW1lQXJyYXkgYXJyYXkodm0pOworICAgIFByb3BlcnR5TmFtZUFycmF5IGFycmF5
KHZtLCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzKTsKICAgICBqc09iamVjdC0+bWV0aG9kVGFi
bGUoKS0+Z2V0UHJvcGVydHlOYW1lcyhqc09iamVjdCwgZXhlYywgYXJyYXksIEVudW1lcmF0aW9u
TW9kZSgpKTsKIAogICAgIHNpemVfdCBzaXplID0gYXJyYXkuc2l6ZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAKaW5kZXggMTUzYjAzM2ExMTc4
MGUwMWQwZmNiMzRiNWY1OWRhZjdkMWNkN2NkOC4uMDJlZjM2ZTJkNTc4YzQwMjYxNmM0ZTllYmMy
NDc0YjRiOGFmY2JlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdz
L1NjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2Ny
aXB0VmFsdWUuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgc3RhdGljIFJlZlB0cjxJbnNwZWN0b3JW
YWx1ZT4ganNUb0luc3BlY3RvclZhbHVlKEV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIEpTVmFsdWUK
ICAgICAgICAgfQogICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBpbnNwZWN0b3JPYmplY3Qg
PSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0g
dmFsdWUuZ2V0T2JqZWN0KCk7Ci0gICAgICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFt
ZXMoc2NyaXB0U3RhdGUpOworICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVz
KHNjcmlwdFN0YXRlLCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzKTsKICAgICAgICAgb2JqZWN0
LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgc2NyaXB0U3RhdGUs
IHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSgpKTsKICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICBjb25z
dCBJZGVudGlmaWVyJiBuYW1lID0gcHJvcGVydHlOYW1lc1tpXTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlLmgKaW5k
ZXggY2I0MTQ4ZWU0ZjUzMjg2MzFmZWM0YzE0OGZkZjRjMzM1NGZjNzNkYy4uYzA0MTk0YzQ2Mjhm
NGZhNGFkYTAwNWViMThiOTgyNDhkMTg4NzNkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlLmgKQEAgLTEyNyw3
ICsxMjcsNyBAQCBjbGFzcyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSB7CiAgICAgICAgICAgICBy
ZXR1cm4gMDsKIAogICAgICAgICBzaXplX3QgY291bnQgPSAwOwotICAgICAgICBQcm9wZXJ0eU5h
bWVBcnJheSBwcm9wZXJ0eU5hbWVBcnJheSgmdm0pOworICAgICAgICBQcm9wZXJ0eU5hbWVBcnJh
eSBwcm9wZXJ0eU5hbWVBcnJheSgmdm0sIFByb3BlcnR5TmFtZU1vZGU6OkJvdGgpOwogICAgICAg
ICBwcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5nZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnVjdHVyZSh2
bSwgcHJvcGVydHlOYW1lQXJyYXksIEVudW1lcmF0aW9uTW9kZSgpKTsKICAgICAgICAgUHJvcGVy
dHlOYW1lQXJyYXlEYXRhOjpQcm9wZXJ0eU5hbWVWZWN0b3ImIHByb3BlcnR5TmFtZVZlY3RvciA9
IHByb3BlcnR5TmFtZUFycmF5LmRhdGEoKS0+cHJvcGVydHlOYW1lVmVjdG9yKCk7CiAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lVmVjdG9yLnNpemUoKTsgKytpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FbnVtZXJhdGlvbk1v
ZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VudW1lcmF0aW9uTW9kZS5oCmlu
ZGV4IDNlOTVlZDMyZjZiNGQxMjAxNDY5MDM0NDA4ZjYzYWI1MGJmZTY1MzAuLjgzYzA1Njg5OTZm
YjliYWNlNTEyNmQ1MDc1ZDZiM2Y3YTg5ZWU1MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0VudW1lcmF0aW9uTW9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0VudW1lcmF0aW9uTW9kZS5oCkBAIC0yOCw2ICsyOCwxMiBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAorZW51bSBjbGFzcyBQcm9wZXJ0eU5hbWVNb2RlIHsKKyAgICBTeW1ib2xz
ID0gMSA8PCAwLAorICAgIFN0cmluZ3MgPSAxIDw8IDEsCisgICAgQm90aCA9IFN5bWJvbHMgfCBT
dHJpbmdzLAorfTsKKwogZW51bSBjbGFzcyBEb250RW51bVByb3BlcnRpZXNNb2RlIHsKICAgICBJ
bmNsdWRlLAogICAgIEV4Y2x1ZGUKQEAgLTQ1LDE2ICs1MSwxNCBAQCBlbnVtIGNsYXNzIEpTT2Jq
ZWN0UHJvcGVydGllc01vZGUgewogCiBjbGFzcyBFbnVtZXJhdGlvbk1vZGUgewogcHVibGljOgot
ICAgIEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3BlcnRpZXNNb2RlIGRvbnRFbnVtUHJvcGVy
dGllc01vZGUgPSBEb250RW51bVByb3BlcnRpZXNNb2RlOjpFeGNsdWRlLCBTeW1ib2xQcm9wZXJ0
aWVzTW9kZSBzeW1ib2xQcm9wZXJ0aWVzTW9kZSA9IFN5bWJvbFByb3BlcnRpZXNNb2RlOjpFeGNs
dWRlLCBKU09iamVjdFByb3BlcnRpZXNNb2RlIGpzT2JqZWN0UHJvcGVydGllc01vZGUgPSBKU09i
amVjdFByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKQorICAgIEVudW1lcmF0aW9uTW9kZShEb250RW51
bVByb3BlcnRpZXNNb2RlIGRvbnRFbnVtUHJvcGVydGllc01vZGUgPSBEb250RW51bVByb3BlcnRp
ZXNNb2RlOjpFeGNsdWRlLCBKU09iamVjdFByb3BlcnRpZXNNb2RlIGpzT2JqZWN0UHJvcGVydGll
c01vZGUgPSBKU09iamVjdFByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKQogICAgICAgICA6IG1fZG9u
dEVudW1Qcm9wZXJ0aWVzTW9kZShkb250RW51bVByb3BlcnRpZXNNb2RlKQotICAgICAgICAsIG1f
c3ltYm9sUHJvcGVydGllc01vZGUoc3ltYm9sUHJvcGVydGllc01vZGUpCiAgICAgICAgICwgbV9q
c09iamVjdFByb3BlcnRpZXNNb2RlKGpzT2JqZWN0UHJvcGVydGllc01vZGUpCiAgICAgewogICAg
IH0KIAogICAgIEVudW1lcmF0aW9uTW9kZShjb25zdCBFbnVtZXJhdGlvbk1vZGUmIG1vZGUsIEpT
T2JqZWN0UHJvcGVydGllc01vZGUganNPYmplY3RQcm9wZXJ0aWVzTW9kZSkKICAgICAgICAgOiBt
X2RvbnRFbnVtUHJvcGVydGllc01vZGUobW9kZS5tX2RvbnRFbnVtUHJvcGVydGllc01vZGUpCi0g
ICAgICAgICwgbV9zeW1ib2xQcm9wZXJ0aWVzTW9kZShtb2RlLm1fc3ltYm9sUHJvcGVydGllc01v
ZGUpCiAgICAgICAgICwgbV9qc09iamVjdFByb3BlcnRpZXNNb2RlKGpzT2JqZWN0UHJvcGVydGll
c01vZGUpCiAgICAgewogICAgIH0KQEAgLTY2LDExICs3MCw2IEBAIGNsYXNzIEVudW1lcmF0aW9u
TW9kZSB7CiAgICAgICAgIHJldHVybiBtX2RvbnRFbnVtUHJvcGVydGllc01vZGUgPT0gRG9udEVu
dW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZTsKICAgICB9CiAKLSAgICBib29sIGluY2x1ZGVTeW1i
b2xQcm9wZXJ0aWVzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3N5bWJvbFByb3BlcnRpZXNN
b2RlID09IFN5bWJvbFByb3BlcnRpZXNNb2RlOjpJbmNsdWRlOwotICAgIH0KLQogICAgIGJvb2wg
aW5jbHVkZUpTT2JqZWN0UHJvcGVydGllcygpCiAgICAgewogICAgICAgICByZXR1cm4gbV9qc09i
amVjdFByb3BlcnRpZXNNb2RlID09IEpTT2JqZWN0UHJvcGVydGllc01vZGU6OkluY2x1ZGU7CkBA
IC03OCw3ICs3Nyw2IEBAIGNsYXNzIEVudW1lcmF0aW9uTW9kZSB7CiAKIHByaXZhdGU6CiAgICAg
RG9udEVudW1Qcm9wZXJ0aWVzTW9kZSBtX2RvbnRFbnVtUHJvcGVydGllc01vZGU7Ci0gICAgU3lt
Ym9sUHJvcGVydGllc01vZGUgbV9zeW1ib2xQcm9wZXJ0aWVzTW9kZTsKICAgICBKU09iamVjdFBy
b3BlcnRpZXNNb2RlIG1fanNPYmplY3RQcm9wZXJ0aWVzTW9kZTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5o
CmluZGV4IDVmOTUyYzZmMmJmZWRiNzlmNGJiNDU5MzUxNjE0ZWIxOGY2ZmE4MDcuLjliMTgwMDE4
NTc4MTA1YzU1MTY5NzIwYWU1ODc3YzNlM2UyNDZkZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaApAQCAtNzgs
MTYgKzc4LDE5IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CiB2b2lkIEdlbmVyaWNBcmd1bWVu
dHM8VHlwZT46OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgYXJyYXksIEVudW1lcmF0aW9uTW9kZSBtb2RlKQog
ewogICAgIFR5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8VHlwZSo+KG9iamVjdCk7Ci0gICAgCi0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRoaXNPYmplY3QtPmludGVybmFsTGVuZ3RoKCk7
ICsraSkgewotICAgICAgICBpZiAoIXRoaXNPYmplY3QtPmNhbkFjY2Vzc0luZGV4UXVpY2tseShp
KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhcnJheS5hZGQoSWRlbnRpZmllcjo6
ZnJvbShleGVjLCBpKSk7CisKKyAgICBpZiAoYXJyYXkuaW5jbHVkZVN0cmluZ1Byb3BlcnRpZXMo
KSkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGhpc09iamVjdC0+aW50ZXJu
YWxMZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAoIXRoaXNPYmplY3QtPmNhbkFjY2Vz
c0luZGV4UXVpY2tseShpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IGFycmF5LmFkZChJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTsKKyAgICAgICAgfQogICAgIH0K
KwogICAgIGlmIChtb2RlLmluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSAmJiAhdGhpc09iamVj
dC0+b3ZlcnJvZGVUaGluZ3MoKSkgewogICAgICAgICBhcnJheS5hZGQoZXhlYy0+cHJvcGVydHlO
YW1lcygpLmxlbmd0aCk7CiAgICAgICAgIGFycmF5LmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCku
Y2FsbGVlKTsKLSAgICAgICAgaWYgKG1vZGUuaW5jbHVkZVN5bWJvbFByb3BlcnRpZXMoKSkKKyAg
ICAgICAgaWYgKGFycmF5LmluY2x1ZGVTeW1ib2xQcm9wZXJ0aWVzKCkpCiAgICAgICAgICAgICBh
cnJheS5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLml0ZXJhdG9yU3ltYm9sKTsKICAgICB9CiAg
ICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBhcnJheSwgbW9k
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IGVjNjUzZGNkYzQ4ODlkNGU5NWMx
NGJkNDliYThkODIxMTJjOTU3ZjAuLmU5ZWQxZTk5OGFhOWE1MDhkMWFlZjA1M2ZhZTg4MmY0MjYz
ZGM5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC00MjMsOSArNDIzLDExIEBA
IHZvaWQgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmdldE93blByb3BlcnR5TmFt
ZXMoCiAgICAgSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVB
cnJheSYgYXJyYXksIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewogICAgIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Kj4o
b2JqZWN0KTsKLSAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGhpc09iamVjdC0+
bV9sZW5ndGg7ICsraSkKLSAgICAgICAgYXJyYXkuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywg
aSkpOworCisgICAgaWYgKGFycmF5LmluY2x1ZGVTdHJpbmdQcm9wZXJ0aWVzKCkpIHsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRoaXNPYmplY3QtPm1fbGVuZ3RoOyArK2kpCisg
ICAgICAgICAgICBhcnJheS5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7CisgICAgfQog
ICAgIAogICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywg
YXJyYXksIG1vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCmluZGV4IDYwNzY4NzQ2MDEwN2EwZDhiMDE5Y2Q3
ZmE3Y2VhMjkyNGZiNTYyZmEuLjQ3YTgxYjVmMzcwYTJlMDY4YjJmYzIyZDJkMGU2N2Q2NGQxMmRh
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVu
dmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGlj
YWxFbnZpcm9ubWVudC5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBKU0xleGljYWxFbnZpcm9u
bWVudDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGEKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmICghdGhpc09iamVj
dC0+aXNWYWxpZChpdC0+dmFsdWUuc2NvcGVPZmZzZXQoKSkpCiAgICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICBpZiAoaXQtPmtleS0+aXNTeW1ib2woKSAmJiAhbW9kZS5pbmNs
dWRlU3ltYm9sUHJvcGVydGllcygpKQorICAgICAgICAgICAgaWYgKGl0LT5rZXktPmlzU3ltYm9s
KCkgJiYgIXByb3BlcnR5TmFtZXMuaW5jbHVkZVN5bWJvbFByb3BlcnRpZXMoKSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZp
ZXI6OmZyb21VaWQoZXhlYywgaXQtPmtleS5nZXQoKSkpOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IDYxZGMwNDZiMGQyYjkx
ZGVjYWU3Yjg3OThmMjA1NzAyZGRkNTJmNWIuLjQ5ZDZiMTU4OTIxNTlmMTBkZGVkYjQ1ZDJjZmIw
NjRhYTFhNTg4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T05PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmpl
Y3QuY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAgU3RyaW5naWZpZXI6OlN0cmluZ2lmaWVyKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgTG9jYWw8VW5rbm93bj4mIHJlcGxhY2VyLCBjb25zdAogICAgIDog
bV9leGVjKGV4ZWMpCiAgICAgLCBtX3JlcGxhY2VyKHJlcGxhY2VyKQogICAgICwgbV91c2luZ0Fy
cmF5UmVwbGFjZXIoZmFsc2UpCi0gICAgLCBtX2FycmF5UmVwbGFjZXJQcm9wZXJ0eU5hbWVzKGV4
ZWMpCisgICAgLCBtX2FycmF5UmVwbGFjZXJQcm9wZXJ0eU5hbWVzKGV4ZWMsIFByb3BlcnR5TmFt
ZU1vZGU6OlN0cmluZ3MpCiAgICAgLCBtX3JlcGxhY2VyQ2FsbFR5cGUoQ2FsbFR5cGVOb25lKQog
ICAgICwgbV9nYXAoZ2FwKGV4ZWMsIHNwYWNlLmdldCgpKSkKIHsKQEAgLTQyNyw3ICs0MjcsNyBA
QCBib29sIFN0cmluZ2lmaWVyOjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eShTdHJpbmdpZmll
ciYgc3RyaW5naWZpZXIsIFN0cmluZ0J1aQogICAgICAgICAgICAgaWYgKHN0cmluZ2lmaWVyLm1f
dXNpbmdBcnJheVJlcGxhY2VyKQogICAgICAgICAgICAgICAgIG1fcHJvcGVydHlOYW1lcyA9IHN0
cmluZ2lmaWVyLm1fYXJyYXlSZXBsYWNlclByb3BlcnR5TmFtZXMuZGF0YSgpOwogICAgICAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgb2JqZWN0UHJvcGVy
dHlOYW1lcyhleGVjKTsKKyAgICAgICAgICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBvYmplY3RQ
cm9wZXJ0eU5hbWVzKGV4ZWMsIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MpOwogICAgICAgICAg
ICAgICAgIG1fb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG1fb2Jq
ZWN0LmdldCgpLCBleGVjLCBvYmplY3RQcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUoKSk7
CiAgICAgICAgICAgICAgICAgbV9wcm9wZXJ0eU5hbWVzID0gb2JqZWN0UHJvcGVydHlOYW1lcy5y
ZWxlYXNlRGF0YSgpOwogICAgICAgICAgICAgfQpAQCAtNjQ0LDcgKzY0NCw3IEBAIE5FVkVSX0lO
TElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHVlIHVuZmlsdGVyZWQpCiAgICAgICAgICAg
ICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGluVmFsdWUpOwogICAgICAgICAgICAg
ICAgIG9iamVjdFN0YWNrLnB1c2gob2JqZWN0KTsKICAgICAgICAgICAgICAgICBpbmRleFN0YWNr
LmFwcGVuZCgwKTsKLSAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0YWNrLmFwcGVuZChQcm9wZXJ0
eU5hbWVBcnJheShtX2V4ZWMpKTsKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0YWNrLmFwcGVu
ZChQcm9wZXJ0eU5hbWVBcnJheShtX2V4ZWMsIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MpKTsK
ICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFt
ZXMob2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFbnVtZXJhdGlvbk1vZGUo
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBvYmplY3RTdGFydFZpc2l0TWVtYmVyOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IGQyMGRhYTIw
NDUxZDJmYmVmMzNiY2Q5MTM0OTEwNGYxZmJjYjU4NzMuLmE1NGZhY2JkYzEzMGQzYjQxMzIxOTZi
MjkzNmVhNTlkMGYwNDE3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5jcHAKQEAgLTE1MDIsNjcgKzE1MDIsNjkgQEAgdm9pZCBKU09iamVjdDo6Z2V0T3duUHJv
cGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmEK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIEFkZCBudW1lcmljIHByb3BlcnRpZXMg
Zmlyc3QuIFRoYXQgYXBwZWFycyB0byBiZSB0aGUgYWNjZXB0ZWQgY29udmVudGlvbi4KLSAgICAv
LyBGSVhNRTogRmlsbGluZyBQcm9wZXJ0eU5hbWVBcnJheSB3aXRoIGFuIGlkZW50aWZpZXIgZm9y
IGV2ZXJ5IGludGVnZXIKLSAgICAvLyBpcyBpbmNyZWRpYmx5IGluZWZmaWNpZW50IGZvciBsYXJn
ZSBhcnJheXMuIFdlIG5lZWQgYSBkaWZmZXJlbnQgYXBwcm9hY2gsCi0gICAgLy8gd2hpY2ggYWxt
b3N0IGNlcnRhaW5seSBtZWFucyBhIGRpZmZlcmVudCBzdHJ1Y3R1cmUgZm9yIFByb3BlcnR5TmFt
ZUFycmF5LgotICAgIHN3aXRjaCAob2JqZWN0LT5pbmRleGluZ1R5cGUoKSkgewotICAgIGNhc2Ug
QUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgotICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElO
R19UWVBFUzoKLSAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgIGNhc2UgQUxMX0lOVDMyX0lO
REVYSU5HX1RZUEVTOgotICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6IHsK
LSAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBvYmplY3QtPmJ1dHRlcmZseSgpOwotICAg
ICAgICB1bnNpZ25lZCB1c2VkTGVuZ3RoID0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsKLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHVzZWRMZW5ndGg7ICsraSkgewotICAgICAg
ICAgICAgaWYgKCFidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKVtpXSkKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGkpOwotICAgICAgICB9Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLSAgICAgICAgCi0gICAgY2FzZSBBTExfRE9VQkxFX0lOREVY
SU5HX1RZUEVTOiB7Ci0gICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gb2JqZWN0LT5idXR0
ZXJmbHkoKTsKLSAgICAgICAgdW5zaWduZWQgdXNlZExlbmd0aCA9IGJ1dHRlcmZseS0+cHVibGlj
TGVuZ3RoKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB1c2VkTGVuZ3RoOyAr
K2kpIHsKLSAgICAgICAgICAgIGRvdWJsZSB2YWx1ZSA9IGJ1dHRlcmZseS0+Y29udGlndW91c0Rv
dWJsZSgpW2ldOwotICAgICAgICAgICAgaWYgKHZhbHVlICE9IHZhbHVlKQotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoaSk7CisgICAgaWYg
KHByb3BlcnR5TmFtZXMuaW5jbHVkZVN0cmluZ1Byb3BlcnRpZXMoKSkgeworICAgICAgICAvLyBB
ZGQgbnVtZXJpYyBwcm9wZXJ0aWVzIGZpcnN0LiBUaGF0IGFwcGVhcnMgdG8gYmUgdGhlIGFjY2Vw
dGVkIGNvbnZlbnRpb24uCisgICAgICAgIC8vIEZJWE1FOiBGaWxsaW5nIFByb3BlcnR5TmFtZUFy
cmF5IHdpdGggYW4gaWRlbnRpZmllciBmb3IgZXZlcnkgaW50ZWdlcgorICAgICAgICAvLyBpcyBp
bmNyZWRpYmx5IGluZWZmaWNpZW50IGZvciBsYXJnZSBhcnJheXMuIFdlIG5lZWQgYSBkaWZmZXJl
bnQgYXBwcm9hY2gsCisgICAgICAgIC8vIHdoaWNoIGFsbW9zdCBjZXJ0YWlubHkgbWVhbnMgYSBk
aWZmZXJlbnQgc3RydWN0dXJlIGZvciBQcm9wZXJ0eU5hbWVBcnJheS4KKyAgICAgICAgc3dpdGNo
IChvYmplY3QtPmluZGV4aW5nVHlwZSgpKSB7CisgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lOREVY
SU5HX1RZUEVTOgorICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEFMTF9JTlQzMl9J
TkRFWElOR19UWVBFUzoKKyAgICAgICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBF
UzogeworICAgICAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBvYmplY3QtPmJ1dHRlcmZs
eSgpOworICAgICAgICAgICAgdW5zaWduZWQgdXNlZExlbmd0aCA9IGJ1dHRlcmZseS0+cHVibGlj
TGVuZ3RoKCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdXNlZExlbmd0
aDsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKVtp
XSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgcHJvcGVy
dHlOYW1lcy5hZGQoaSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgICAgIAotICAgIGNhc2UgQUxMX0FSUkFZ
X1NUT1JBR0VfSU5ERVhJTkdfVFlQRVM6IHsKLSAgICAgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdl
ID0gb2JqZWN0LT5tX2J1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCk7Ci0gICAgICAgIAotICAgICAg
ICB1bnNpZ25lZCB1c2VkVmVjdG9yTGVuZ3RoID0gc3RkOjptaW4oc3RvcmFnZS0+bGVuZ3RoKCks
IHN0b3JhZ2UtPnZlY3Rvckxlbmd0aCgpKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHVzZWRWZWN0b3JMZW5ndGg7ICsraSkgewotICAgICAgICAgICAgaWYgKHN0b3JhZ2UtPm1f
dmVjdG9yW2ldKQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQUxMX0RPVUJMRV9JTkRFWElO
R19UWVBFUzogeworICAgICAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBvYmplY3QtPmJ1
dHRlcmZseSgpOworICAgICAgICAgICAgdW5zaWduZWQgdXNlZExlbmd0aCA9IGJ1dHRlcmZseS0+
cHVibGljTGVuZ3RoKCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdXNl
ZExlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgZG91YmxlIHZhbHVlID0gYnV0dGVyZmx5
LT5jb250aWd1b3VzRG91YmxlKClbaV07CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9IHZh
bHVlKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBwcm9w
ZXJ0eU5hbWVzLmFkZChpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoU3BhcnNlQXJyYXlWYWx1ZU1hcCogbWFwID0g
c3RvcmFnZS0+bV9zcGFyc2VNYXAuZ2V0KCkpIHsKLSAgICAgICAgICAgIFZlY3Rvcjx1bnNpZ25l
ZCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IGtleXM7Ci0gICAgICAgICAgICBrZXlzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkobWFwLT5zaXplKCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAg
ICBTcGFyc2VBcnJheVZhbHVlTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtYXAtPmVuZCgpOwot
ICAgICAgICAgICAgZm9yIChTcGFyc2VBcnJheVZhbHVlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IG1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1v
ZGUuaW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpIHx8ICEoaXQtPnZhbHVlLmF0dHJpYnV0ZXMg
JiBEb250RW51bSkpCi0gICAgICAgICAgICAgICAgICAgIGtleXMudW5jaGVja2VkQXBwZW5kKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihpdC0+a2V5KSk7CisgICAgICAgIGNhc2UgQUxMX0FSUkFZX1NU
T1JBR0VfSU5ERVhJTkdfVFlQRVM6IHsKKyAgICAgICAgICAgIEFycmF5U3RvcmFnZSogc3RvcmFn
ZSA9IG9iamVjdC0+bV9idXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpOworICAgICAgICAgICAgCisg
ICAgICAgICAgICB1bnNpZ25lZCB1c2VkVmVjdG9yTGVuZ3RoID0gc3RkOjptaW4oc3RvcmFnZS0+
bGVuZ3RoKCksIHN0b3JhZ2UtPnZlY3Rvckxlbmd0aCgpKTsKKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCB1c2VkVmVjdG9yTGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoc3RvcmFnZS0+bV92ZWN0b3JbaV0pCisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5
TmFtZXMuYWRkKGkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBz
dGQ6OnNvcnQoa2V5cy5iZWdpbigpLCBrZXlzLmVuZCgpKTsKLSAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBrZXlzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgICAgIHByb3Bl
cnR5TmFtZXMuYWRkKGtleXNbaV0pOworICAgICAgICAgICAgaWYgKFNwYXJzZUFycmF5VmFsdWVN
YXAqIG1hcCA9IHN0b3JhZ2UtPm1fc3BhcnNlTWFwLmdldCgpKSB7CisgICAgICAgICAgICAgICAg
VmVjdG9yPHVuc2lnbmVkLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4ga2V5czsKKyAgICAgICAg
ICAgICAgICBrZXlzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobWFwLT5zaXplKCkpOworICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IG1hcC0+ZW5kKCk7CisgICAgICAgICAgICAgICAgZm9yIChTcGFyc2VBcnJh
eVZhbHVlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtb2RlLmluY2x1ZGVEb250RW51bVByb3Bl
cnRpZXMoKSB8fCAhKGl0LT52YWx1ZS5hdHRyaWJ1dGVzICYgRG9udEVudW0pKQorICAgICAgICAg
ICAgICAgICAgICAgICAga2V5cy51bmNoZWNrZWRBcHBlbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGl0LT5rZXkpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgc3RkOjpzb3J0KGtleXMuYmVnaW4oKSwga2V5cy5lbmQoKSk7CisgICAgICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGtleXMuc2l6ZSgpOyArK2kpCisgICAgICAg
ICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGtleXNbaV0pOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
fQotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgICAgIAotICAgIGRlZmF1bHQ6Ci0gICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCiAgICAgb2JqZWN0LT5tZXRo
b2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKG9iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcAppbmRleCA3ZTdk
MWFjMzZjOWFiYzI5MTQxOTliMzEyZjljMDM3MjY0NTg3YTY1Li42OTA5MjBmMGM0NWNhNjM2ZGM4
ZWMzZWE2ODU5M2Y4YzNkMzAxNTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAKQEAgLTM2LDcgKzM2
LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6c19pbmZvID0g
eyAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yIiwKIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciog
SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpjcmVhdGUoVk0mIHZtKQogewogICAgIGlmICghdm0u
ZW1wdHlQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmdldCgpKSB7Ci0gICAgICAgIFByb3BlcnR5TmFt
ZUFycmF5IHByb3BlcnR5TmFtZXMoJnZtKTsKKyAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJv
cGVydHlOYW1lcygmdm0sIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MpOwogICAgICAgICB2bS5l
bXB0eVByb3BlcnR5TmFtZUVudW1lcmF0b3IgPSBTdHJvbmc8SlNDZWxsPih2bSwgY3JlYXRlKHZt
LCAwLCAwLCAwLCBwcm9wZXJ0eU5hbWVzKSk7CiAgICAgfQogICAgIHJldHVybiBqc0Nhc3Q8SlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yKj4odm0uZW1wdHlQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmdl
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVy
dHlOYW1lRW51bWVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yLmgKaW5kZXggOTRiMDM0MzViOTQ4YTcwMDE4ZjRhOTZkNjA4OGVi
NWY5YWI1OWRkNi4uYzllY2UxMWFiYmY1NTYzMzU3NGIxMDNhNjk4OTNlNTM3MWNlNTBiNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yLmgKQEAgLTExNSw3ICsxMTUsNyBAQCBpbmxpbmUgSlNQcm9wZXJ0eU5hbWVF
bnVtZXJhdG9yKiBwcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
YwogCiAgICAgdWludDMyX3QgbnVtYmVyU3RydWN0dXJlUHJvcGVydGllcyA9IDA7CiAKLSAgICBQ
cm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOworICAgIFByb3BlcnR5TmFtZUFy
cmF5IHByb3BlcnR5TmFtZXMoZXhlYywgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncyk7CiAKICAg
ICBpZiAoc3RydWN0dXJlLT5jYW5BY2Nlc3NQcm9wZXJ0aWVzUXVpY2tseSgpICYmIGluZGV4ZWRM
ZW5ndGggPT0gYmFzZS0+Z2V0QXJyYXlMZW5ndGgoKSkgewogICAgICAgICBiYXNlLT5tZXRob2RU
YWJsZSh2bSktPmdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoYmFzZSwgZXhlYywgcHJvcGVydHlO
YW1lcywgRW51bWVyYXRpb25Nb2RlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAppbmRleCBjMDhmZjU5NDg3YmY4ZGU3
MjdjYWFlNmE1ODM5YTI0Yzg4ZmU0NWZmLi4yMGI2NzNhNzA0NTBmYTU5OWIzNWFjMTg0NzdiZTI3
MTBmMjAwNDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5
bWJvbFRhYmxlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N5bWJvbFRhYmxlT2JqZWN0LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIEpTU3ltYm9sVGFi
bGVPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdAogICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBlbmQgPSB0aGlzT2Jq
ZWN0LT5zeW1ib2xUYWJsZSgpLT5lbmQobG9ja2VyKTsKICAgICAgICAgZm9yIChTeW1ib2xUYWJs
ZTo6TWFwOjppdGVyYXRvciBpdCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmJlZ2luKGxv
Y2tlcik7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgaWYgKCEoaXQtPnZhbHVlLmdl
dEF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCBtb2RlLmluY2x1ZGVEb250RW51bVByb3BlcnRp
ZXMoKSkgewotICAgICAgICAgICAgICAgIGlmIChpdC0+a2V5LT5pc1N5bWJvbCgpICYmICFtb2Rl
LmluY2x1ZGVTeW1ib2xQcm9wZXJ0aWVzKCkpCisgICAgICAgICAgICAgICAgaWYgKGl0LT5rZXkt
PmlzU3ltYm9sKCkgJiYgIXByb3BlcnR5TmFtZXMuaW5jbHVkZVN5bWJvbFByb3BlcnRpZXMoKSkK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgcHJvcGVydHlO
YW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBpdC0+a2V5LmdldCgpKSk7CiAgICAg
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5jcHAKaW5kZXggMWExMWUyOGQ3MjU1YjRjZGE3MTBjMWE5Y2JiNDk5ZGZmYWUx
MjM1My4uZjJlMWU1YTIxNTQ5N2JjMGVmMWE5MDgzYjBiNjM4ZTA4NzhhODE5YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApA
QCAtMjUzLDcgKzI1Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29u
c3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlCiAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGV4ZWMpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwo
KSk7Ci0gICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKKyAgICBQcm9wZXJ0
eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMsIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MpOwog
ICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMo
b2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGUoRG9udEVudW1Qcm9wZXJ0
aWVzTW9kZTo6SW5jbHVkZSkpOwogICAgIEpTQXJyYXkqIG5hbWVzID0gY29uc3RydWN0RW1wdHlB
cnJheShleGVjLCAwKTsKICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9IHByb3BlcnRpZXMuc2l6
ZSgpOwpAQCAtMjY4LDggKzI2OCw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2Jq
ZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMoRXhlY1N0YXRlKiBlCiAgICAgSlNP
YmplY3QqIG9iamVjdCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGV4ZWMpOwogICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c051bGwoKSk7Ci0gICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBv
YmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVj
dCwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01v
ZGU6OkluY2x1ZGUsIFN5bWJvbFByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSk7CisgICAgUHJvcGVy
dHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjLCBQcm9wZXJ0eU5hbWVNb2RlOjpTeW1ib2xzKTsK
KyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVz
KG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVy
dGllc01vZGU6OkluY2x1ZGUpKTsKICAgICBKU0FycmF5KiBuYW1lcyA9IGNvbnN0cnVjdEVtcHR5
QXJyYXkoZXhlYywgMCk7CiAgICAgc2l6ZV90IG51bVByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLnNp
emUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7IGkrKykgewpA
QCAtMjg2LDcgKzI4Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29u
c3RydWN0b3JLZXlzKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU09iamVjdCogb2JqZWN0ID0gZXhl
Yy0+YXJndW1lbnQoMCkudG9PYmplY3QoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKLSAgICBQcm9w
ZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOworICAgIFByb3BlcnR5TmFtZUFycmF5IHBy
b3BlcnRpZXMoZXhlYywgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncyk7CiAgICAgb2JqZWN0LT5t
ZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMs
IHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZSgpKTsKICAgICBKU0FycmF5KiBrZXlzID0gY29u
c3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9IHBy
b3BlcnRpZXMuc2l6ZSgpOwpAQCAtMzk3LDggKzM5Nyw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMp
CiAKIHN0YXRpYyBKU1ZhbHVlIGRlZmluZVByb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogb2JqZWN0LCBKU09iamVjdCogcHJvcGVydGllcykKIHsKLSAgICBQcm9wZXJ0eU5hbWVB
cnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgIGFzT2JqZWN0KHByb3BlcnRpZXMpLT5tZXRo
b2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChwcm9wZXJ0
aWVzKSwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVy
dGllc01vZGU6OkV4Y2x1ZGUsIFN5bWJvbFByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSk7CisgICAg
UHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjLCBQcm9wZXJ0eU5hbWVNb2RlOjpC
b3RoKTsKKyAgICBhc09iamVjdChwcm9wZXJ0aWVzKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSkt
PmdldE93blByb3BlcnR5TmFtZXMoYXNPYmplY3QocHJvcGVydGllcyksIGV4ZWMsIHByb3BlcnR5
TmFtZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3BlcnRpZXNNb2RlOjpFeGNsdWRlKSk7
CiAgICAgc2l6ZV90IG51bVByb3BlcnRpZXMgPSBwcm9wZXJ0eU5hbWVzLnNpemUoKTsKICAgICBW
ZWN0b3I8UHJvcGVydHlEZXNjcmlwdG9yPiBkZXNjcmlwdG9yczsKICAgICBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBtYXJrQnVmZmVyOwpAQCAtNDY3LDggKzQ2Nyw4IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JTZWFsKEV4ZWNTdGF0ZSogZXhlYykKICAgICB9
CiAKICAgICAvLyAyLiBGb3IgZWFjaCBuYW1lZCBvd24gcHJvcGVydHkgbmFtZSBQIG9mIE8sCi0g
ICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBvYmplY3QtPm1ldGhv
ZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJv
cGVydGllcywgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUs
IFN5bWJvbFByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSk7CisgICAgUHJvcGVydHlOYW1lQXJyYXkg
cHJvcGVydGllcyhleGVjLCBQcm9wZXJ0eU5hbWVNb2RlOjpCb3RoKTsKKyAgICBvYmplY3QtPm1l
dGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywg
cHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1
ZGUpKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcHJvcGVy
dGllcy5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBp
dGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAg
IElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gKml0ZXI7CkBAIC01MDEsOCArNTAxLDggQEAgSlNP
YmplY3QqIG9iamVjdENvbnN0cnVjdG9yRnJlZXplKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IG9iamVjdCkKICAgICB9CiAKICAgICAvLyAyLiBGb3IgZWFjaCBuYW1lZCBvd24gcHJvcGVydHkg
bmFtZSBQIG9mIE8sCi0gICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAg
ICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9i
amVjdCwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVydGll
c01vZGU6OkluY2x1ZGUsIFN5bWJvbFByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSk7CisgICAgUHJv
cGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjLCBQcm9wZXJ0eU5hbWVNb2RlOjpCb3RoKTsK
KyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVz
KG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVy
dGllc01vZGU6OkluY2x1ZGUpKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gcHJvcGVydGllcy5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpj
b25zdF9pdGVyYXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytp
dGVyKSB7CiAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gKml0ZXI7CkBAIC01NjEs
OCArNTYxLDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rv
cklzU2VhbGVkKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4ob2JqZWN0LT5pc1NlYWxlZChleGVjLT52bSgpKSkpOwogCiAgICAgLy8gMi4g
Rm9yIGVhY2ggbmFtZWQgb3duIHByb3BlcnR5IG5hbWUgUCBvZiBPLAotICAgIFByb3BlcnR5TmFt
ZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1l
cmF0aW9uTW9kZShEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlLCBTeW1ib2xQcm9wZXJ0
aWVzTW9kZTo6SW5jbHVkZSkpOworICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhl
YywgUHJvcGVydHlOYW1lTW9kZTo6Qm90aCk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVj
LT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVu
dW1lcmF0aW9uTW9kZShEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSk7CiAgICAgUHJv
cGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHByb3BlcnRpZXMuZW5kKCk7CiAg
ICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHByb3BlcnRp
ZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICBJZGVudGlmaWVyIHBy
b3BlcnR5TmFtZSA9ICppdGVyOwpAQCAtNTk0LDggKzU5NCw4IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc0Zyb3plbihFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKG9iamVjdC0+aXNGcm96ZW4o
ZXhlYy0+dm0oKSkpKTsKIAogICAgIC8vIDIuIEZvciBlYWNoIG5hbWVkIG93biBwcm9wZXJ0eSBu
YW1lIFAgb2YgTywKLSAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAg
IG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGUoRG9udEVudW1Qcm9wZXJ0aWVz
TW9kZTo6SW5jbHVkZSwgU3ltYm9sUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsKKyAgICBQcm9w
ZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMsIFByb3BlcnR5TmFtZU1vZGU6OkJvdGgpOwor
ICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMo
b2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGUoRG9udEVudW1Qcm9wZXJ0
aWVzTW9kZTo6SW5jbHVkZSkpOwogICAgIFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRv
ciBlbmQgPSBwcm9wZXJ0aWVzLmVuZCgpOwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNv
bnN0X2l0ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0aWVzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0
ZXIpIHsKICAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSAqaXRlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCmluZGV4IGMy
ZjEzZDhjMzcyOWFlNWFiN2JkMzlkYjc0ZTM0NTg4M2U0Yzg2NzIuLjE0ZjZmNzg1YzEwMmEwMWM3
ZGI4ZTI1ZWViODgxZDkzMmRlMjJkZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaApAQCAtNDgsMTUgKzQ4LDE1IEBAIGNsYXNzIFBy
b3BlcnR5TmFtZUFycmF5RGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFByb3BlcnR5TmFtZUFycmF5
RGF0YT4gewogLy8gRklYTUU6IFJlbmFtZSB0byBQcm9wZXJ0eU5hbWVBcnJheUJ1aWxkZXIuCiBj
bGFzcyBQcm9wZXJ0eU5hbWVBcnJheSB7CiBwdWJsaWM6Ci0gICAgUHJvcGVydHlOYW1lQXJyYXko
Vk0qIHZtKQorICAgIFByb3BlcnR5TmFtZUFycmF5KFZNKiB2bSwgUHJvcGVydHlOYW1lTW9kZSBt
b2RlKQogICAgICAgICA6IG1fZGF0YShQcm9wZXJ0eU5hbWVBcnJheURhdGE6OmNyZWF0ZSgpKQog
ICAgICAgICAsIG1fdm0odm0pCisgICAgICAgICwgbV9tb2RlKG1vZGUpCiAgICAgewogICAgIH0K
IAotICAgIFByb3BlcnR5TmFtZUFycmF5KEV4ZWNTdGF0ZSogZXhlYykKLSAgICAgICAgOiBtX2Rh
dGEoUHJvcGVydHlOYW1lQXJyYXlEYXRhOjpjcmVhdGUoKSkKLSAgICAgICAgLCBtX3ZtKCZleGVj
LT52bSgpKQorICAgIFByb3BlcnR5TmFtZUFycmF5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lTW9kZSBtb2RlKQorICAgICAgICA6IFByb3BlcnR5TmFtZUFycmF5KCZleGVjLT52bSgpLCBt
b2RlKQogICAgIHsKICAgICB9CiAKQEAgLTg1LDEwICs4NSwxNyBAQCBjbGFzcyBQcm9wZXJ0eU5h
bWVBcnJheSB7CiAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2Rh
dGEtPnByb3BlcnR5TmFtZVZlY3RvcigpLmJlZ2luKCk7IH0KICAgICBjb25zdF9pdGVyYXRvciBl
bmQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpLmVuZCgpOyB9
CiAKKyAgICBQcm9wZXJ0eU5hbWVNb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0K
KyAgICBib29sIGluY2x1ZGVTeW1ib2xQcm9wZXJ0aWVzKCkgY29uc3Q7CisgICAgYm9vbCBpbmNs
dWRlU3RyaW5nUHJvcGVydGllcygpIGNvbnN0OworCiBwcml2YXRlOgorICAgIGJvb2wgaXNVaWRN
YXRjaGVkVG9UeXBlTW9kZShVbmlxdWVkU3RyaW5nSW1wbCogaWRlbnRpZmllcik7CisKICAgICBS
ZWZQdHI8UHJvcGVydHlOYW1lQXJyYXlEYXRhPiBtX2RhdGE7CiAgICAgSGFzaFNldDxVbmlxdWVk
U3RyaW5nSW1wbCo+IG1fc2V0OwogICAgIFZNKiBtX3ZtOworICAgIFByb3BlcnR5TmFtZU1vZGUg
bV9tb2RlOwogfTsKIAogQUxXQVlTX0lOTElORSB2b2lkIFByb3BlcnR5TmFtZUFycmF5OjphZGQo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKQEAgLTk4LDYgKzEwNSw4IEBAIEFMV0FZU19J
TkxJTkUgdm9pZCBQcm9wZXJ0eU5hbWVBcnJheTo6YWRkKGNvbnN0IElkZW50aWZpZXImIGlkZW50
aWZpZXIpCiAKIEFMV0FZU19JTkxJTkUgdm9pZCBQcm9wZXJ0eU5hbWVBcnJheTo6YWRkS25vd25V
bmlxdWUoVW5pcXVlZFN0cmluZ0ltcGwqIGlkZW50aWZpZXIpCiB7CisgICAgaWYgKCFpc1VpZE1h
dGNoZWRUb1R5cGVNb2RlKGlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CiAgICAgbV9kYXRh
LT5wcm9wZXJ0eU5hbWVWZWN0b3IoKS5hcHBlbmQoSWRlbnRpZmllcjo6ZnJvbVVpZChtX3ZtLCBp
ZGVudGlmaWVyKSk7CiB9CiAKQEAgLTEwNyw2ICsxMTYsOSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQg
UHJvcGVydHlOYW1lQXJyYXk6OmFkZChVbmlxdWVkU3RyaW5nSW1wbCogaWRlbnRpZmllcikKIAog
ICAgIEFTU0VSVChpZGVudGlmaWVyKTsKIAorICAgIGlmICghaXNVaWRNYXRjaGVkVG9UeXBlTW9k
ZShpZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKHNpemUoKSA8IHNldFRo
cmVzaG9sZCkgewogICAgICAgICBpZiAobV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKS5jb250
YWlucyhpZGVudGlmaWVyKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEyMiw2ICsxMzQsMjMg
QEAgQUxXQVlTX0lOTElORSB2b2lkIFByb3BlcnR5TmFtZUFycmF5OjphZGQoVW5pcXVlZFN0cmlu
Z0ltcGwqIGlkZW50aWZpZXIpCiAgICAgYWRkS25vd25VbmlxdWUoaWRlbnRpZmllcik7CiB9CiAK
K0FMV0FZU19JTkxJTkUgYm9vbCBQcm9wZXJ0eU5hbWVBcnJheTo6aXNVaWRNYXRjaGVkVG9UeXBl
TW9kZShVbmlxdWVkU3RyaW5nSW1wbCogaWRlbnRpZmllcikKK3sKKyAgICBpZiAoaWRlbnRpZmll
ci0+aXNTeW1ib2woKSkKKyAgICAgICAgcmV0dXJuIGluY2x1ZGVTeW1ib2xQcm9wZXJ0aWVzKCk7
CisgICAgcmV0dXJuIGluY2x1ZGVTdHJpbmdQcm9wZXJ0aWVzKCk7Cit9CisKK0FMV0FZU19JTkxJ
TkUgYm9vbCBQcm9wZXJ0eU5hbWVBcnJheTo6aW5jbHVkZVN5bWJvbFByb3BlcnRpZXMoKSBjb25z
dAoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlpbmdfdHlwZTxQcm9wZXJ0
eU5hbWVNb2RlPjo6dHlwZT4obV9tb2RlKSAmIHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190
eXBlPFByb3BlcnR5TmFtZU1vZGU+Ojp0eXBlPihQcm9wZXJ0eU5hbWVNb2RlOjpTeW1ib2xzKTsK
K30KKworQUxXQVlTX0lOTElORSBib29sIFByb3BlcnR5TmFtZUFycmF5OjppbmNsdWRlU3RyaW5n
UHJvcGVydGllcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJs
eWluZ190eXBlPFByb3BlcnR5TmFtZU1vZGU+Ojp0eXBlPihtX21vZGUpICYgc3RhdGljX2Nhc3Q8
c3RkOjp1bmRlcmx5aW5nX3R5cGU8UHJvcGVydHlOYW1lTW9kZT46OnR5cGU+KFByb3BlcnR5TmFt
ZU1vZGU6OlN0cmluZ3MpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFBy
b3BlcnR5TmFtZUFycmF5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdPYmplY3QuY3BwCmluZGV4IGViNzQzMGViNTUzYWQ3NjA3NDc4NTRiMmY2NGVlYmViN2U1MDg3
ODIuLmI1YWEzZjcyZDExMGY1OTNlMTNlYTlhZGNlMTlmNmQxZDJlMzg5MzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAtMTQ2LDkgKzE0
NiwxMSBAQCBib29sIFN0cmluZ09iamVjdDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZAogdm9pZCBTdHJpbmdPYmplY3Q6OmdldE93
blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7CiAgICAg
U3RyaW5nT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFN0cmluZ09iamVjdCo+KG9iamVjdCk7
Ci0gICAgaW50IHNpemUgPSB0aGlzT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCktPmxlbmd0aCgpOwot
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBwcm9wZXJ0eU5hbWVz
LmFkZChJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTsKKyAgICBpZiAocHJvcGVydHlOYW1lcy5p
bmNsdWRlU3RyaW5nUHJvcGVydGllcygpKSB7CisgICAgICAgIGludCBzaXplID0gdGhpc09iamVj
dC0+aW50ZXJuYWxWYWx1ZSgpLT5sZW5ndGgoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBzaXplOyArK2kpCisgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpm
cm9tKGV4ZWMsIGkpKTsKKyAgICB9CiAgICAgaWYgKG1vZGUuaW5jbHVkZURvbnRFbnVtUHJvcGVy
dGllcygpKQogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCku
bGVuZ3RoKTsKICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXModGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCBjYTA5N2Y3YzgyMzYzODk2ZjYwYmE4ODJmMTFi
YmZkMmY2MDQwNjI0Li45OGQzZmMyMDE2YjE0MTc4OWQ3NWE1NWExYWNmZGQwYTZmNmEzOWE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTk0Nyw3
ICs5NDcsNyBAQCB2b2lkIFN0cnVjdHVyZTo6Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUo
Vk0mIHZtLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydAogICAgIGZvciAoUHJvcGVydHlUYWJs
ZTo6aXRlcmF0b3IgaXRlciA9IHByb3BlcnR5VGFibGUoKS0+YmVnaW4oKTsgaXRlciAhPSBlbmQ7
ICsraXRlcikgewogICAgICAgICBBU1NFUlQoaGFzTm9uRW51bWVyYWJsZVByb3BlcnRpZXMoKSB8
fCAhKGl0ZXItPmF0dHJpYnV0ZXMgJiBEb250RW51bSkpOwogICAgICAgICBpZiAoIShpdGVyLT5h
dHRyaWJ1dGVzICYgRG9udEVudW0pIHx8IG1vZGUuaW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygp
KSB7Ci0gICAgICAgICAgICBpZiAoaXRlci0+a2V5LT5pc1N5bWJvbCgpICYmICFtb2RlLmluY2x1
ZGVTeW1ib2xQcm9wZXJ0aWVzKCkpCisgICAgICAgICAgICBpZiAoaXRlci0+a2V5LT5pc1N5bWJv
bCgpICYmICFwcm9wZXJ0eU5hbWVzLmluY2x1ZGVTeW1ib2xQcm9wZXJ0aWVzKCkpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoa25vd25VbmlxdWUpCiAgICAgICAg
ICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGRLbm93blVuaXF1ZShpdGVyLT5rZXkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcAppbmRleCA1YzI0MzZhOTQyOGU2OGFj
MjM0NTBjZjM0YzM0NDQ4ODdjYTFhYzhmLi45MzkwNDAwOWQ3ZTA4YmJjNWQ5MjIyMGM3OTUyNWNm
ZjA3ZjBhOWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9u
YXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcApA
QCAtNjIsNyArNjIsNyBAQCBib29sIERpY3Rpb25hcnk6OmdldE93blByb3BlcnRpZXNBc1N0cmlu
Z0hhc2hNYXAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIG1hcCkgYwogICAgIEpTT2JqZWN0KiBv
YmplY3QgPSAgbV9kaWN0aW9uYXJ5LmluaXRpYWxpemVyT2JqZWN0KCk7CiAgICAgRXhlY1N0YXRl
KiBleGVjID0gbV9kaWN0aW9uYXJ5LmV4ZWNTdGF0ZSgpOwogCi0gICAgUHJvcGVydHlOYW1lQXJy
YXkgcHJvcGVydHlOYW1lcyhleGVjKTsKKyAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5h
bWVzKGV4ZWMsIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MpOwogICAgIEpTT2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25N
b2RlKCkpOwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
cHJvcGVydHlOYW1lcy5iZWdpbigpOyBpdCAhPSBwcm9wZXJ0eU5hbWVzLmVuZCgpOyArK2l0KSB7
CiAgICAgICAgIFN0cmluZyBzdHJpbmdLZXkgPSBpdC0+c3RyaW5nKCk7CkBAIC04Nyw3ICs4Nyw3
IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0T3duUHJvcGVydHlOYW1lcyhWZWN0b3I8U3RyaW5nPiYg
bmFtZXMpIGNvbnN0CiAgICAgSlNPYmplY3QqIG9iamVjdCA9ICBtX2RpY3Rpb25hcnkuaW5pdGlh
bGl6ZXJPYmplY3QoKTsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBtX2RpY3Rpb25hcnkuZXhlY1N0
YXRlKCk7CiAKLSAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOworICAg
IFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYywgUHJvcGVydHlOYW1lTW9kZTo6
U3RyaW5ncyk7CiAgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUoKSk7CiAgICAgZm9yIChQcm9wZXJ0eU5h
bWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwcm9wZXJ0eU5hbWVzLmJlZ2luKCk7IGl0ICE9
IHByb3BlcnR5TmFtZXMuZW5kKCk7ICsraXQpIHsKICAgICAgICAgU3RyaW5nIHN0cmluZ0tleSA9
IGl0LT5zdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDY3ODYxMTkwNjk4MDVlNzViN2M5NGFkZGNkNzE1
MjdmYWZkN2ViZTMuLmRlMGM1MmIxMjgxOTliYjU1OWEzMjE5NzJlNTQ4MjdhZjAzYmY5ZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcApAQCAtMTI1NCw3ICsxMjU0LDcgQEAgU2VyaWFsaXphdGlvblJldHVybkNvZGUgQ2xv
bmVTZXJpYWxpemVyOjpzZXJpYWxpemUoSlNWYWx1ZSBpbikKICAgICAgICAgICAgICAgICAgICAg
aW5kZXhTdGFjay5yZW1vdmVMYXN0KCk7CiAgICAgICAgICAgICAgICAgICAgIGxlbmd0aFN0YWNr
LnJlbW92ZUxhc3QoKTsKIAotICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0YWNrLmFwcGVu
ZChQcm9wZXJ0eU5hbWVBcnJheShtX2V4ZWMpKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVy
dHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjLCBQcm9wZXJ0eU5hbWVNb2Rl
OjpTdHJpbmdzKSk7CiAgICAgICAgICAgICAgICAgICAgIGFycmF5LT5tZXRob2RUYWJsZSgpLT5n
ZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoYXJyYXksIG1fZXhlYywgcHJvcGVydHlTdGFjay5s
YXN0KCksIEVudW1lcmF0aW9uTW9kZSgpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3Bl
cnR5U3RhY2subGFzdCgpLnNpemUoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGUo
Tm9uSW5kZXhQcm9wZXJ0aWVzVGFnKTsKQEAgLTEzMDQsNyArMTMwNCw3IEBAIFNlcmlhbGl6YXRp
b25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUgaW4pCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBEYXRhQ2xvbmVFcnJvcjsKICAgICAgICAgICAgICAgICBp
bnB1dE9iamVjdFN0YWNrLmFwcGVuZChpbk9iamVjdCk7CiAgICAgICAgICAgICAgICAgaW5kZXhT
dGFjay5hcHBlbmQoMCk7Ci0gICAgICAgICAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJv
cGVydHlOYW1lQXJyYXkobV9leGVjKSk7CisgICAgICAgICAgICAgICAgcHJvcGVydHlTdGFjay5h
cHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjLCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdz
KSk7CiAgICAgICAgICAgICAgICAgaW5PYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3Bl
cnR5TmFtZXMoaW5PYmplY3QsIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEVudW1lcmF0
aW9uTW9kZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG9iamVjdFN0YXJ0VmlzaXRN
ZW1iZXI6CkBAIC0xMzcyLDcgKzEzNzIsNyBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9u
ZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVlIGluKQogICAgICAgICAgICAgICAgICAgICBt
YXBJdGVyYXRvclN0YWNrLnJlbW92ZUxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAgSlNPYmpl
Y3QqIG9iamVjdCA9IGlucHV0T2JqZWN0U3RhY2subGFzdCgpOwogICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU01hcCo+KG9iamVjdCkpOwotICAgICAgICAgICAgICAg
ICAgICBwcm9wZXJ0eVN0YWNrLmFwcGVuZChQcm9wZXJ0eU5hbWVBcnJheShtX2V4ZWMpKTsKKyAg
ICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXko
bV9leGVjLCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzKSk7CiAgICAgICAgICAgICAgICAgICAg
IG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIG1fZXhl
YywgcHJvcGVydHlTdGFjay5sYXN0KCksIEVudW1lcmF0aW9uTW9kZSgpKTsKICAgICAgICAgICAg
ICAgICAgICAgd3JpdGUoTm9uTWFwUHJvcGVydGllc1RhZyk7CiAgICAgICAgICAgICAgICAgICAg
IGluZGV4U3RhY2suYXBwZW5kKDApOwpAQCAtMTQxNiw3ICsxNDE2LDcgQEAgU2VyaWFsaXphdGlv
blJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoSlNWYWx1ZSBpbikKICAgICAg
ICAgICAgICAgICAgICAgc2V0SXRlcmF0b3JTdGFjay5yZW1vdmVMYXN0KCk7CiAgICAgICAgICAg
ICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBpbnB1dE9iamVjdFN0YWNrLmxhc3QoKTsKICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNTZXQqPihvYmplY3QpKTsK
LSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJy
YXkobV9leGVjKSk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5U3RhY2suYXBwZW5kKFBy
b3BlcnR5TmFtZUFycmF5KG1fZXhlYywgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncykpOwogICAg
ICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFt
ZXMob2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFbnVtZXJhdGlvbk1vZGUo
KSk7CiAgICAgICAgICAgICAgICAgICAgIHdyaXRlKE5vblNldFByb3BlcnRpZXNUYWcpOwogICAg
ICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmFwcGVuZCgwKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
TlBfanNvYmplY3QuY3BwCmluZGV4IDA5NGIxYWVkODYzZjE2N2E4MDc2NjcwYmI0NWQ2OWU4ODA0
ZjZiY2EuLjU5YzljNzQyZDJmZDAzODJkNjRjZjdhNzQ4MzIyZjNmMWMzMTFmMTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcApAQCAtNDQ1LDcgKzQ0NSw3IEBAIGJvb2wgX05Q
Tl9FbnVtZXJhdGUoTlBQLCBOUE9iamVjdCogbywgTlBJZGVudGlmaWVyKiogaWRlbnRpZmllciwg
dWludDMyX3QqIGNvdW50CiAgICAgICAgIAogICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSByb290
T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOwogICAgICAgICBKU0xvY2tIb2xk
ZXIgbG9jayhleGVjKTsKLSAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhl
eGVjKTsKKyAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjLCBQcm9w
ZXJ0eU5hbWVNb2RlOjpTdHJpbmdzKTsKIAogICAgICAgICBvYmotPmltcC0+bWV0aG9kVGFibGUo
KS0+Z2V0UHJvcGVydHlOYW1lcyhvYmotPmltcCwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVy
YXRpb25Nb2RlKCkpOwogICAgICAgICB1bnNpZ25lZCBzaXplID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHByb3BlcnR5TmFtZXMuc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpp
bmRleCBhYmFlNzgxMTAxYWIzYmFhNTM2YjIyZDFiM2MzZjFiOWY5MDNhYzQ5Li43NmM0NjU1ZDU3
ZmJkOTE2ZGYwOWM2Y2MzN2UwZTU4ZWRmOWE0NGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5Lm1tCkBAIC0xMjMwLDcgKzEyMzAsNyBAQCBib29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eTo6ZW51bWVyYXRlKHVpbnQzMl90IG9iamVjdElELCBkYXRhX3QmIHJlc3VsdERhdAogICAg
IEV4ZWNTdGF0ZSogZXhlYyA9IGZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3QocGx1Z2luV29y
bGQoKSktPmdsb2JhbEV4ZWMoKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAKLSAg
ICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOworICAgIFByb3BlcnR5TmFt
ZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYywgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncyk7CiAg
ICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKCkpOwogCiAgICAgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5Kj4gYXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRd
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OUEpTT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OUEpTT2JqZWN0LmNwcAppbmRleCAyMGRjNGQ4ZmI0Yjk5NDkzNzhjMGVkNGMzNGIwYzUy
OWQzMTE3OTE2Li5mZmM3NzkzZGI5OGIwMzZjZmVkMzdjNThhMDI5ZjUyNDBmNjQ1MzRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05QSlNPYmplY3QuY3BwCkBAIC0yMzksNyArMjM5LDcgQEAgYm9vbCBOUEpTT2JqZWN0OjplbnVt
ZXJhdGUoTlBJZGVudGlmaWVyKiogaWRlbnRpZmllcnMsIHVpbnQzMl90KiBpZGVudGlmaWVyQ291
bnQKICAgICAKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKIAotICAgIFByb3BlcnR5TmFt
ZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYyk7CisgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVy
dHlOYW1lcyhleGVjLCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzKTsKICAgICBtX2pzT2JqZWN0
LT5tZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKG1fanNPYmplY3QuZ2V0KCksIGV4ZWMs
IHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSgpKTsKIAogICAgIE5QSWRlbnRpZmllciog
bmFtZUlkZW50aWZpZXJzID0gbnBuTWVtTmV3QXJyYXk8TlBJZGVudGlmaWVyPihwcm9wZXJ0eU5h
bWVzLnNpemUoKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTI2OWM1NTMwZmRlN2VjZDdkYzYxMmExNzVkMzQzMjVjZmVm
NmZjZS4uNjRhYzkzZWUyN2JiYWM0MmYzMDQ0MTkzNDA2ZWU5NDk5M2YzYzdlOCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDE1LTA3LTI0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorCisgICAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgb24gbGFyZ2Ug
bGlzdCB0YWtlcyB2ZXJ5IGxvbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0NjEzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICoganMvcmVncmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xz
LW9uLWxhcmdlLWFycmF5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVz
cy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLW9uLWxhcmdlLWFycmF5Lmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL29iamVjdC1nZXQtb3duLXBy
b3BlcnR5LXN5bWJvbHMtb24tbGFyZ2UtYXJyYXkuanM6IEFkZGVkLgorICAgICAgICAodHJpYWwp
OgorCiAyMDE1LTA3LTI0ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgQ1NTICJjb250ZW50IiBwcm9wZXJ0eSBpcyBtaXNzaW5nIGluIGdldENvbXB1dGVk
U3R5bGVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL29iamVjdC1nZXQtb3du
LXByb3BlcnR5LXN5bWJvbHMtb24tbGFyZ2UtYXJyYXktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLW9uLWxhcmdlLWFy
cmF5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hM2JlYjZmZGRjNzkzZTRmN2M2NWRkODA0MDU0
ZWQ0ZWYyZjBkODJkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9v
YmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLW9uLWxhcmdlLWFycmF5LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3lt
Ym9scy1vbi1sYXJnZS1hcnJheQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9vYmpl
Y3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLW9uLWxhcmdlLWFycmF5Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMtb24tbGFyZ2Ut
YXJyYXkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTE0NGU0N2I2NGVlMGZiMzk3NTZlOTFiMmY5OTE2NDI3
MjE3ZDI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9vYmplY3Qt
Z2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLW9uLWxhcmdlLWFycmF5Lmh0bWwKQEAgLTAsMCArMSwx
MiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvb2Jq
ZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy1vbi1sYXJnZS1hcnJheS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Nj
cmlwdC10ZXN0cy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLW9uLWxhcmdlLWFycmF5
LmpzIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvb2JqZWN0LWdldC1vd24t
cHJvcGVydHktc3ltYm9scy1vbi1sYXJnZS1hcnJheS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYWE0ODU4NWY0
NWUwOGQ2MjY1ODcxOWYyMGU2YmI4OWEyNzhkZjMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3lt
Ym9scy1vbi1sYXJnZS1hcnJheS5qcwpAQCAtMCwwICsxLDEzIEBACitmdW5jdGlvbiB0cmlhbCgp
Cit7CisgICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcigxMDAwMDAwMCk7CisgICAgdmFy
IGludDhWaWV3ID0gbmV3IEludDhBcnJheShidWZmZXIpOworICAgIHZhciBzdGFydCA9IERhdGUu
bm93KCk7CisgICAgdmFyIHJlc3VsdCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaW50
OFZpZXcpOworICAgIHZhciBkZWx0YSA9IERhdGUubm93KCkgLSBzdGFydDsKKyAgICBpZiAoZGVs
dGEgPiAxMDAwKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHRpbWUgY29uc3VtaW5nICgke2Rl
bHRhfW1zKWApOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RyaWFsKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>