<?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>143276</bug_id>
          
          <creation_ts>2015-03-31 14:05:07 -0700</creation_ts>
          <short_desc>Clean up EnumerationMode to easily extend</short_desc>
          <delta_ts>2015-04-02 11:54:25 -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>141106</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1081774</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-31 14:05:07 -0700</bug_when>
    <thetext>Spawned from Object.getOwnPropertySymbols patch https://bugs.webkit.org/show_bug.cgi?id=141106.
After this patch, we&apos;ll extend it with a new flag, IncludeSymbols.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081797</commentid>
    <comment_count>1</comment_count>
      <attachid>249860</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-31 15:17:55 -0700</bug_when>
    <thetext>Created attachment 249860
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081837</commentid>
    <comment_count>2</comment_count>
      <attachid>249860</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-03-31 17:14:20 -0700</bug_when>
    <thetext>Comment on attachment 249860
Patch

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

&gt; Source/JavaScriptCore/runtime/EnumerationMode.h:40
&gt; +class EnumerationMode {
&gt; +public:
&gt; +    static const unsigned s_flagIncludeDontEnumProperties = 1u &lt;&lt; 0;
&gt; +    static const unsigned s_flagSkipJSObject = 1u &lt;&lt; 1;
&gt; +
&gt; +    enum EnumerationModeRepresentationTag : unsigned {
&gt; +        ExcludeDontEnumProperties = 0,
&gt; +        IncludeDontEnumProperties = s_flagIncludeDontEnumProperties,
&gt; +    };
&gt; +

Since our goal is cleanup, I should say that I don&apos;t really love this new design. Mixing an enumeration and a class and a set of flags feels haphazard.

I guess the goal here is to encapsulate enumeration mode into a class in order to gain better control over defaults, and to switch from enumerated values to flags because otherwise adding ExcludeSymbols would produce combinatorial explosion. I think I support those goals. I would do that like so:

enum class DontEnumPropertiesMode {
    Include,
    Exclude
}

enum class JSObjectPropertiesMode {
    Include,
    Exclude
}

enum class SymbolPropertiesMode {
    Include,
    Exclude
}

class EnumerationMode {
public:
    EnumerationMode(DontEnumPropertiesMode = Exclude, JSObjectPropertiesMode = Include, SymbolPropertiesMode = Exclude) { ... }
    EnumerationMode(const EnumerationMode&amp;, JSObjectPropertiesMode) // Convenience for creating a derivative mode to skip JSObject properties
    // Add other constructors as needed for convenience
    
    bool includeDontEnumProperties() { return m_dontEnumPropertiesMode == Include; }
    bool includeJSObjectProperties() { return m_jsObjectPropertiesMode == Include; }
    bool includeSymbolProperties() { return symbolPropertiesMode == Include; }

private:
    DontEnumPropertiesMode m_dontEnumPropertiesMode;
    JSObjectPropertiesMode m_jsObjectPropertiesMode;
    SymbolPropertiesMode m_ symbolPropertiesMode;
};

I think this structure is clearer than having a class, an enum, and a set of flags.

I think it&apos;s OK that this structure is slightly larger because it is always stored on the stack. If benchmarks prove that we need to, we can pack our three enums into an unsigned using shifting and masking, and still keep the rest of this interface the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081977</commentid>
    <comment_count>3</comment_count>
      <attachid>249915</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-01 06:01:07 -0700</bug_when>
    <thetext>Created attachment 249915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081978</commentid>
    <comment_count>4</comment_count>
      <attachid>249860</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-01 06:02:28 -0700</bug_when>
    <thetext>Comment on attachment 249860
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/EnumerationMode.h:40
&gt;&gt; +
&gt; 
&gt; Since our goal is cleanup, I should say that I don&apos;t really love this new design. Mixing an enumeration and a class and a set of flags feels haphazard.
&gt; 
&gt; I guess the goal here is to encapsulate enumeration mode into a class in order to gain better control over defaults, and to switch from enumerated values to flags because otherwise adding ExcludeSymbols would produce combinatorial explosion. I think I support those goals. I would do that like so:
&gt; 
&gt; enum class DontEnumPropertiesMode {
&gt;     Include,
&gt;     Exclude
&gt; }
&gt; 
&gt; enum class JSObjectPropertiesMode {
&gt;     Include,
&gt;     Exclude
&gt; }
&gt; 
&gt; enum class SymbolPropertiesMode {
&gt;     Include,
&gt;     Exclude
&gt; }
&gt; 
&gt; class EnumerationMode {
&gt; public:
&gt;     EnumerationMode(DontEnumPropertiesMode = Exclude, JSObjectPropertiesMode = Include, SymbolPropertiesMode = Exclude) { ... }
&gt;     EnumerationMode(const EnumerationMode&amp;, JSObjectPropertiesMode) // Convenience for creating a derivative mode to skip JSObject properties
&gt;     // Add other constructors as needed for convenience
&gt;     
&gt;     bool includeDontEnumProperties() { return m_dontEnumPropertiesMode == Include; }
&gt;     bool includeJSObjectProperties() { return m_jsObjectPropertiesMode == Include; }
&gt;     bool includeSymbolProperties() { return symbolPropertiesMode == Include; }
&gt; 
&gt; private:
&gt;     DontEnumPropertiesMode m_dontEnumPropertiesMode;
&gt;     JSObjectPropertiesMode m_jsObjectPropertiesMode;
&gt;     SymbolPropertiesMode m_ symbolPropertiesMode;
&gt; };
&gt; 
&gt; I think this structure is clearer than having a class, an enum, and a set of flags.
&gt; 
&gt; I think it&apos;s OK that this structure is slightly larger because it is always stored on the stack. If benchmarks prove that we need to, we can pack our three enums into an unsigned using shifting and masking, and still keep the rest of this interface the same.

Looks nice. OK, so, I&apos;ll use the above style EnumerationMode and use EnumerationMode() when the default mode is required.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082063</commentid>
    <comment_count>5</comment_count>
      <attachid>249915</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-04-01 11:33:50 -0700</bug_when>
    <thetext>Comment on attachment 249915
Patch

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

r=me, but this doesn&apos;t build correctly yet.

&gt; Source/JavaScriptCore/bindings/ScriptValue.cpp:140
&gt; +        object-&gt;methodTable()-&gt;getOwnPropertyNames(object, scriptState, propertyNames, EnuemrationMode());

Maybe getOwnPropertyNames should make EnumerationMode() the default, so we don&apos;t have to specify it in all these places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082163</commentid>
    <comment_count>6</comment_count>
      <attachid>249915</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-01 20:35:58 -0700</bug_when>
    <thetext>Comment on attachment 249915
Patch

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

&gt;&gt; Source/JavaScriptCore/bindings/ScriptValue.cpp:140
&gt;&gt; +        object-&gt;methodTable()-&gt;getOwnPropertyNames(object, scriptState, propertyNames, EnuemrationMode());
&gt; 
&gt; Maybe getOwnPropertyNames should make EnumerationMode() the default, so we don&apos;t have to specify it in all these places.

Right. So I&apos;ll drop the EnumerationMode() :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082164</commentid>
    <comment_count>7</comment_count>
      <attachid>249915</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-01 20:58:11 -0700</bug_when>
    <thetext>Comment on attachment 249915
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/bindings/ScriptValue.cpp:140
&gt;&gt;&gt; +        object-&gt;methodTable()-&gt;getOwnPropertyNames(object, scriptState, propertyNames, EnuemrationMode());
&gt;&gt; 
&gt;&gt; Maybe getOwnPropertyNames should make EnumerationMode() the default, so we don&apos;t have to specify it in all these places.
&gt; 
&gt; Right. So I&apos;ll drop the EnumerationMode() :)

Oops. Since this `methodTable()-&gt;getOwnPropertyNames` is function pointer, we cannot call it with default parameter.
I&apos;ll fix the build error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082165</commentid>
    <comment_count>8</comment_count>
      <attachid>249958</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-01 21:00:23 -0700</bug_when>
    <thetext>Created attachment 249958
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082278</commentid>
    <comment_count>9</comment_count>
      <attachid>249958</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-04-02 11:02:28 -0700</bug_when>
    <thetext>Comment on attachment 249958
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082280</commentid>
    <comment_count>10</comment_count>
      <attachid>249958</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-02 11:06:45 -0700</bug_when>
    <thetext>Comment on attachment 249958
Patch

Thank you for your review and r+! Yay, so it&apos;s time to update Object.getOwnPropertySymbols patch :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082296</commentid>
    <comment_count>11</comment_count>
      <attachid>249958</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-02 11:54:22 -0700</bug_when>
    <thetext>Comment on attachment 249958
Patch

Clearing flags on attachment: 249958

Committed r182280: &lt;http://trac.webkit.org/changeset/182280&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082297</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-02 11:54:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249860</attachid>
            <date>2015-03-31 15:17:55 -0700</date>
            <delta_ts>2015-04-01 06:01:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143276-20150401071711.patch</filename>
            <type>text/plain</type>
            <size>48820</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZmNjM2QxNTdiYmMyNzhhZGUyOTEyOTc3ZWI5MzAxYTA5YTJjYjA4Li5hMTVlODg3NDVhNmFkYmIz
NmRmM2E4NmMyMWU1NjZjMjhhNmRlYjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw4MCBAQAogMjAxNS0wMy0zMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBDbGVhbiB1cCBFbnVtZXJhdGlvbk1vZGUgdG8gZWFzaWx5IGV4dGVu
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMjc2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVG8gbWFr
ZSB0aGUgZm9sbG93aW5ncyBlYXNpbHksCisgICAgICAgIDEuIEFkZGluZyBuZXcgZmxhZyBJbmNs
dWRlU3ltYm9scyBpbiB0aGUgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyBwYXRjaAorICAg
ICAgICAyLiBNYWtlIEV4Y2x1ZGVTeW1ib2xzIGltcGxpY2l0bHkgZGVmYXVsdCBmb3IgdGhlIGV4
aXN0aW5nIGZsYWdzIGxpa2UgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcworICAgICAgICB3ZSBl
bmNhcHN1bGF0ZSBFbnVtZXJhdGlvbk1vZGUgdW5zaWduZWQgYml0IGZsYWdzIGludG8gRW51bWVy
YXRpb25Nb2RlIGNsYXNzLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIEFQSS9KU09iamVjdFJlZi5jcHA6CisgICAg
ICAgIChKU09iamVjdENvcHlQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9TY3Jp
cHRWYWx1ZS5jcHA6CisgICAgICAgIChEZXByZWNhdGVkOjpqc1RvSW5zcGVjdG9yVmFsdWUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlLmg6CisgICAgICAgIChK
U0M6Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpwb3NzaWJsZURlZmF1bHRQcm9wZXJ0eUNvdW50
KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
YXJyYXlQcm90b0Z1bmNTb3J0KToKKyAgICAgICAgKiBydW50aW1lL0VudW1lcmF0aW9uTW9kZS5o
OgorICAgICAgICAoSlNDOjpFbnVtZXJhdGlvbk1vZGU6OkVudW1lcmF0aW9uTW9kZSk6CisgICAg
ICAgIChKU0M6OkVudW1lcmF0aW9uTW9kZTo6c2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGll
cyk6CisgICAgICAgIChKU0M6OkVudW1lcmF0aW9uTW9kZTo6c2hvdWxkSW5jbHVkZUpTT2JqZWN0
UHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkVudW1lcmF0aW9uTW9kZTo6Y3JlYXRlVGhh
dFNraXBzSlNPYmplY3QpOgorICAgICAgICAoSlNDOjpzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6c2hvdWxkRXhjbHVkZURvbnRFbnVtUHJv
cGVydGllcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnNob3VsZEluY2x1ZGVKU09iamVjdFBy
b3BlcnR5TmFtZXMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjptb2RlVGhhdFNraXBzSlNPYmpl
Y3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6R2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6Z2V0T3duUHJvcGVydHlO
YW1lcyk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNB
cnJheTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pT
QXJyYXlCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyOjpnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcu
Y3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Z2V0T3duTm9uSW5kZXhQcm9w
ZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAo
SlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwOgorICAgICAgICAoSlNDOjpKU0xleGljYWxFbnZp
cm9ubWVudDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1l
L0pTT05PYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdpZmllcjo6SG9sZGVyOjphcHBl
bmROZXh0UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpXYWxrZXI6OndhbGspOgorICAgICAgICAq
IHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpnZXRDbGFzc1Byb3BlcnR5TmFt
ZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmg6CisgICAgICAgIChKU0M6OnByb3BlcnR5
TmFtZUVudW1lcmF0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OkpTU3ltYm9sVGFibGVPYmplY3Q6OmdldE93bk5vbkluZGV4UHJv
cGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAg
ICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yS2V5cyk6CisgICAgICAgIChKU0M6OmRlZmluZVBy
b3BlcnRpZXMpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvclNlYWwpOgorICAgICAg
ICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZSk6CisgICAgICAgIChKU0M6Om9iamVjdENv
bnN0cnVjdG9ySXNTZWFsZWQpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcklzRnJv
emVuKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OlJlZ0V4cE9iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpT
Qzo6UmVnRXhwT2JqZWN0OjpnZXRQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6UmVnRXhw
T2JqZWN0OjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9TdHJp
bmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5
TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnVjdHVyZSk6CisKKzIwMTUtMDMtMzEg
IFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKICAgICAgICAgQ2xlYW4g
dXAgSWRlbnRpZmllciBmYWN0b3JpZXMgdG8gY2xhcmlmeSB0aGUgbWVhbmluZyBvZiBTdHJpbmdJ
bXBsKgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQz
MTQ2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA4NzNmNjg1MDU2YmI3ZTQ3N2I2YjY5NWRmYWNiMGFlYmE1OGVh
NDQ3Li41MmVmOTgwMjhiY2UwMmNkNWZhMmExN2VmNTY2MzkzOWI1ZDdhZGFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjYgQEAKKzIwMTUtMDMtMzEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgRW51bWVyYXRpb25Nb2RlIHRvIGVhc2ls
eSBleHRlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0MzI3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEp1c3QgYWRkIEVudW1lcmF0aW9uTW9kZTo6IHByZWZpeC4KKworICAgICAgICAqIGJpbmRpbmdz
L2pzL0RpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6Z2V0T3du
UHJvcGVydGllc0FzU3RyaW5nSGFzaE1hcCk6CisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5
OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpzZXJp
YWxpemUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgor
ICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU0Zsb2F0NjRBcnJheS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFdmVudFRhcmdldC5oOgorICAgICAgICAqIGJyaWRnZS9OUF9qc29iamVjdC5jcHA6
CisgICAgICAgIChfTlBOX0VudW1lcmF0ZSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJy
YXkuY3BwOgorICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6OmdldE93blByb3BlcnR5TmFtZXMp
OgorCiAyMDE1LTAzLTMxICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CiAKICAgICAgICAgTW92ZSBFeHBhbnNpb25CZWhhdmlvckZsYWdzIGFuZCBUZXh0RGlyZWN0aW9u
IHRvIHRoZWlyIG93biBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNzU3ZWE0OWQwYTMwZjk0ZDU2
MjJiODM1MzVjMWJlYmQwNDMxZTk1Ni4uODQ2MDVlYTQzNGY0NTY5ODhmMDAwZmY5MDgzZjlmOTkz
NDcxOGY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE3IEBACiAyMDE1LTAzLTMxICBZ
dXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCisgICAgICAgIENsZWFuIHVw
IEVudW1lcmF0aW9uTW9kZSB0byBlYXNpbHkgZXh0ZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMyNzYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBKdXN0IGFkZCBFbnVtZXJhdGlvbk1vZGU6OiBwcmVm
aXguCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHkubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZW51
bWVyYXRlKToKKworMjAxNS0wMy0zMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKwogICAgICAgICBDbGVhbiB1cCBJZGVudGlmaWVyIGZhY3RvcmllcyB0byBjbGFyaWZ5
IHRoZSBtZWFuaW5nIG9mIFN0cmluZ0ltcGwqCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMxNDYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGM2NTNiYWU1OTNhMWJh
Y2U0MWVlNThjNDczY2I4NzEwNTM4NmRjOTUuLjI4NzMxZjc5NjE5ZDA2OWQzYTA2Y2Y5ZDZmYzRi
YzI1ZDYzODc0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0wMy0zMSAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBDbGVhbiB1cCBF
bnVtZXJhdGlvbk1vZGUgdG8gZWFzaWx5IGV4dGVuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMjc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSnVzdCBhZGQgRW51bWVyYXRpb25Nb2RlOjogcHJlZml4
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOUEpTT2JqZWN0OjplbnVtZXJhdGUpOgorCiAyMDE1LTAzLTMx
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgTW92
ZSBFeHBhbnNpb25CZWhhdmlvckZsYWdzIGFuZCBUZXh0RGlyZWN0aW9uIHRvIHRoZWlyIG93biBm
aWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmpl
Y3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVj
dEZ1bmN0aW9ucy5oCmluZGV4IGEwYjgzZTc3ZmY1NzAyODdlZjY3ZTk0NzdjMWU5MjdkYjk1OTdj
ZjYuLmM2MzlhZWRhMGFjYWU1MDIwMTA0ODM3NmEwMjJmMDgwOGNlODZmMDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5o
CkBAIC01MjEsNyArNTIxLDcgQEAKICAgICAgICAgICAgIGZvciAoaXRlcmF0b3IgaXQgPSBzdGF0
aWNWYWx1ZXMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgICAgIFN0
cmluZ0ltcGwqIG5hbWUgPSBpdC0+a2V5LmdldCgpOwogICAgICAgICAgICAgICAgIFN0YXRpY1Zh
bHVlRW50cnkqIGVudHJ5ID0gaXQtPnZhbHVlLmdldCgpOwotICAgICAgICAgICAgICAgIGlmIChl
bnRyeS0+Z2V0UHJvcGVydHkgJiYgKCEoZW50cnktPmF0dHJpYnV0ZXMgJiBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnRFbnVtKSB8fCBzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUp
KSkgeworICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+Z2V0UHJvcGVydHkgJiYgKCEoZW50cnkt
PmF0dHJpYnV0ZXMgJiBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRFbnVtKSB8fCBtb2RlLnNob3Vs
ZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKCFuYW1lLT5pc1N5bWJvbCgpKTsKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1l
cy5hZGQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBTdHJpbmcobmFtZSkpKTsKICAgICAg
ICAgICAgICAgICB9CkBAIC01MzQsNyArNTM0LDcgQEAKICAgICAgICAgICAgIGZvciAoaXRlcmF0
b3IgaXQgPSBzdGF0aWNGdW5jdGlvbnMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAg
ICAgICAgICAgICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBpdC0+a2V5LmdldCgpOwogICAgICAgICAg
ICAgICAgIFN0YXRpY0Z1bmN0aW9uRW50cnkqIGVudHJ5ID0gaXQtPnZhbHVlLmdldCgpOwotICAg
ICAgICAgICAgICAgIGlmICghKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RW51bSkgfHwgc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkgewor
ICAgICAgICAgICAgICAgIGlmICghKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RW51bSkgfHwgbW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkp
IHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFuYW1lLT5pc1N5bWJvbCgpKTsKICAgICAg
ICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCBTdHJpbmcobmFtZSkpKTsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4IDZjZTFjMmMxMTMzYjY5MGE3N2NkYzlhY2Fj
OGFmMzdjYTg1MzA3ZDUuLjU5MGE1MzcwMTY5OTUyYjEyOWYwYTM0NDY0Y2Q0YTVlOGVmM2VhNDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCkBAIC02OTgsNyAr
Njk4LDcgQEAgSlNQcm9wZXJ0eU5hbWVBcnJheVJlZiBKU09iamVjdENvcHlQcm9wZXJ0eU5hbWVz
KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG8KICAgICBKU09iamVjdCoganNPYmplY3Qg
PSB0b0pTKG9iamVjdCk7CiAgICAgSlNQcm9wZXJ0eU5hbWVBcnJheVJlZiBwcm9wZXJ0eU5hbWVz
ID0gbmV3IE9wYXF1ZUpTUHJvcGVydHlOYW1lQXJyYXkodm0pOwogICAgIFByb3BlcnR5TmFtZUFy
cmF5IGFycmF5KHZtKTsKLSAgICBqc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlO
YW1lcyhqc09iamVjdCwgZXhlYywgYXJyYXksIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwor
ICAgIGpzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKGpzT2JqZWN0LCBl
eGVjLCBhcnJheSwgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsK
IAogICAgIHNpemVfdCBzaXplID0gYXJyYXkuc2l6ZSgpOwogICAgIHByb3BlcnR5TmFtZXMtPmFy
cmF5LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAppbmRleCA3NmE3YjExMWE4ZDg3N2E2NzliNWM4
YjhlODk2ZTFhN2IxYjZiOGFjLi41YTA1YmE4OWI5ZTkwY2E5NDA3Y2EzYThlYWU2MjA3NDcyOGEx
MmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5j
cHAKQEAgLTEzNyw3ICsxMzcsNyBAQCBib29sIFNjcmlwdFZhbHVlOjppc0Z1bmN0aW9uKCkgY29u
c3QKICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gaW5zcGVjdG9yT2JqZWN0ID0gSW5zcGVj
dG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IHZhbHVlLmdl
dE9iamVjdCgpOwogICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKHNjcmlw
dFN0YXRlKTsKLSAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5h
bWVzKG9iamVjdCwgc2NyaXB0U3RhdGUsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVBy
b3BlcnRpZXMpOworICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5
TmFtZXMob2JqZWN0LCBzY3JpcHRTdGF0ZSwgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2Rl
OjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBwcm9wZXJ0eU5hbWVzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lID0gcHJvcGVydHlOYW1lc1tpXTsKICAgICAgICAgICAgIEpTVmFsdWUgcHJv
cGVydHlWYWx1ZSA9IG9iamVjdC0+Z2V0KHNjcmlwdFN0YXRlLCBuYW1lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxl
LmgKaW5kZXggOWE5ZGIwYmM3MGI5ZjEzNWY2NWRkMmQ3OTZkZTY1Mjg5NmFlMGZiMS4uZWNhMjIw
ZGM1YTY2ZTdhYTZhMzRkZWMzZGY5MDkyZWNkZGY4ZDI5MiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlLmgKQEAg
LTExOCw3ICsxMTgsNyBAQCBjbGFzcyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSB7CiAKICAgICAg
ICAgc2l6ZV90IGNvdW50ID0gMDsKICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlO
YW1lQXJyYXkoJnZtKTsKLSAgICAgICAgcHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+Z2V0UHJvcGVy
dHlOYW1lc0Zyb21TdHJ1Y3R1cmUodm0sIHByb3BlcnR5TmFtZUFycmF5LCBFeGNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgcHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+Z2V0UHJvcGVy
dHlOYW1lc0Zyb21TdHJ1Y3R1cmUodm0sIHByb3BlcnR5TmFtZUFycmF5LCBFbnVtZXJhdGlvbk1v
ZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgICAgICBQcm9wZXJ0eU5hbWVBcnJh
eURhdGE6OlByb3BlcnR5TmFtZVZlY3RvciYgcHJvcGVydHlOYW1lVmVjdG9yID0gcHJvcGVydHlO
YW1lQXJyYXkuZGF0YSgpLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKTsKICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVWZWN0b3Iuc2l6ZSgpOyArK2kpIHsKICAgICAgICAg
ICAgIEpTVmFsdWUgdmFsdWUgPSBwcm90b3R5cGUtPmdldERpcmVjdCh2bSwgcHJvcGVydHlOYW1l
VmVjdG9yW2ldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJv
dG90eXBlLmNwcAppbmRleCA4MTQ4YTMxYWI3NmI4NDI3Zjg3OGUwZjc3YTVhZjJkZGY1NWM0MDZh
Li5lY2QwMmVlNTJjNDZlYTJhOTZiNDRkZjM2YTY3NTQ2NjY2MjUzYWMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC03MzYsNyAr
NzM2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NvcnQo
RXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogICAgIAogICAgIFByb3BlcnR5TmFtZUFycmF5IG5hbWVBcnJheShleGVjKTsKLSAg
ICB0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0UHJvcGVydHlOYW1lcyh0aGlz
T2JqLCBleGVjLCBuYW1lQXJyYXksIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIHRo
aXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRQcm9wZXJ0eU5hbWVzKHRoaXNPYmos
IGV4ZWMsIG5hbWVBcnJheSwgRW51bWVyYXRpb25Nb2RlOjpJbmNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0VudW1lcmF0aW9uTW9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRW51bWVyYXRpb25Nb2RlLmgKaW5kZXggNGRiYWY3YjQxN2RjNzA4ZmJjNmM3MjUw
OWYxOWY1NDRmMDFiOTZiZC4uMDFhYWIyODkyYjRiMTZmZmE4YzNjY2NmNWFiZmJlOTc2OWJiOGY0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRW51bWVyYXRpb25N
b2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRW51bWVyYXRpb25Nb2Rl
LmgKQEAgLTI4LDYzICsyOCw0NCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51bSBFbnVtZXJh
dGlvbk1vZGUgewotICAgIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsCi0gICAgRXhjbHVkZURv
bnRFbnVtUHJvcGVydGllc0FuZFNraXBKU09iamVjdCwKLSAgICBJbmNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzLAotICAgIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3QKLX07
CitjbGFzcyBFbnVtZXJhdGlvbk1vZGUgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBzX2ZsYWdJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzID0gMXUgPDwgMDsKKyAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgc19mbGFnU2tpcEpTT2JqZWN0ID0gMXUgPDwgMTsKKworICAgIGVu
dW0gRW51bWVyYXRpb25Nb2RlUmVwcmVzZW50YXRpb25UYWcgOiB1bnNpZ25lZCB7CisgICAgICAg
IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMgPSAwLAorICAgICAgICBJbmNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzID0gc19mbGFnSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcywKKyAgICB9OworCisg
ICAgRW51bWVyYXRpb25Nb2RlKEVudW1lcmF0aW9uTW9kZVJlcHJlc2VudGF0aW9uVGFnIHRhZykK
KyAgICAgICAgOiBtX2ZsYWdzKHRhZykKKyAgICB7CisgICAgfQogCi1pbmxpbmUgYm9vbCBzaG91
bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKEVudW1lcmF0aW9uTW9kZSBtb2RlKQotewotICAg
IHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllczoKLSAg
ICBjYXNlIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3Q6Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBi
b29sIHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fZmxhZ3MgJiBzX2ZsYWdJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzOwogICAg
IH0KLX0KIAotaW5saW5lIGJvb2wgc2hvdWxkRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyhFbnVt
ZXJhdGlvbk1vZGUgbW9kZSkKLXsKLSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIEV4Y2x1
ZGVEb250RW51bVByb3BlcnRpZXM6Ci0gICAgY2FzZSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
QW5kU2tpcEpTT2JqZWN0OgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgYm9vbCBzaG91bGRJbmNsdWRlSlNPYmplY3RQcm9wZXJ0
eU5hbWVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKG1fZmxhZ3MgJiBzX2ZsYWdT
a2lwSlNPYmplY3QpOwogICAgIH0KLX0KIAotaW5saW5lIGJvb2wgc2hvdWxkSW5jbHVkZUpTT2Jq
ZWN0UHJvcGVydHlOYW1lcyhFbnVtZXJhdGlvbk1vZGUgbW9kZSkKLXsKLSAgICBzd2l0Y2ggKG1v
ZGUpIHsKLSAgICBjYXNlIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXM6Ci0gICAgY2FzZSBFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIEV4
Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3Q6Ci0gICAgY2FzZSBJbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0OgotICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgc3RhdGljIEVudW1lcmF0aW9uTW9kZSBjcmVhdGVUaGF0U2tpcHNKU09iamVjdChFbnVt
ZXJhdGlvbk1vZGUgbW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBFbnVtZXJhdGlvbk1vZGUo
bW9kZS5tX2ZsYWdzIHwgc19mbGFnU2tpcEpTT2JqZWN0KTsKICAgICB9Ci0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQogCi1pbmxpbmUgRW51bWVyYXRpb25N
b2RlIG1vZGVUaGF0U2tpcHNKU09iamVjdChFbnVtZXJhdGlvbk1vZGUgbW9kZSkKLXsKLSAgICBz
d2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXM6Ci0gICAg
ICAgIHJldHVybiBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0OwotICAg
IGNhc2UgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllczoKLSAgICAgICAgcmV0dXJuIEV4Y2x1ZGVE
b250RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3Q7Ci0gICAgY2FzZSBFeGNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0OgotICAgIGNhc2UgSW5jbHVkZURvbnRFbnVtUHJv
cGVydGllc0FuZFNraXBKU09iamVjdDoKLSAgICAgICAgcmV0dXJuIG1vZGU7Citwcml2YXRlOgor
ICAgIGV4cGxpY2l0IEVudW1lcmF0aW9uTW9kZSh1bnNpZ25lZCBmbGFncykKKyAgICAgICAgOiBt
X2ZsYWdzKGZsYWdzKQorICAgIHsKICAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIG1vZGU7Ci19CisKKyAgICB1bnNpZ25lZCBtX2ZsYWdzOworfTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oCmluZGV4IDBjODk5NWM3YjNhZTRhMmQxMmMzYjFh
MTY5ZmM0NjhhMWViZWZiYmEuLjg0ZTg4ODUwMDg5YjE3YTlkYWIzNWNkMGI0NjVkZWQxOTA5MmMw
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1
bWVudHNJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJp
Y0FyZ3VtZW50c0lubGluZXMuaApAQCAtOTEsNyArOTEsNyBAQAogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIGFycmF5LmFkZChJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTsKICAgICB9
Ci0gICAgaWYgKHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkgJiYgIXRoaXNP
YmplY3QtPm92ZXJyb2RlVGhpbmdzKCkpIHsKKyAgICBpZiAobW9kZS5zaG91bGRJbmNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzKCkgJiYgIXRoaXNPYmplY3QtPm92ZXJyb2RlVGhpbmdzKCkpIHsKICAg
ICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZWUpOwogICAgICAgICBh
cnJheS5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCAyMGQ0OWRiOGJhMmUyYzU4NTUw
NjY3NDllZjlkZjUxNTU0MTU3NjgxLi5jMWIwNGE2ZTIyZWQyOGEyZjkzZDIzMGQ1NjNjMzA4ZTYy
NmUxMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAt
MjI2LDcgKzIyNiw3IEBAIHZvaWQgSlNBcnJheTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvCiB7CiAgICAgSlNBcnJheSog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5Kj4ob2JqZWN0KTsKIAotICAgIGlmIChzaG91bGRJ
bmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQorICAgIGlmIChtb2RlLnNob3VsZEluY2x1
ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+
cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CiAKICAgICBKU09iamVjdDo6Z2V0T3duTm9uSW5kZXhQ
cm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcAppbmRleCBj
MWNhZDEwNWM3ZTBkNWFkN2VmZDI5NmEzYmVmMDY5NmM5NWY2MDA3Li41YjY2YzQ0ZjNlODE4NDI1
MDA4YjYwYWVkNDI2MTNhYmM3ZTE4ZjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgSlNBcnJh
eUJ1ZmZlcjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKAogewogICAgIEpTQXJyYXlCdWZm
ZXIqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KG9iamVjdCk7CiAgICAgCi0g
ICAgaWYgKHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpCisgICAgaWYgKG1v
ZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKQogICAgICAgICBhcnJheS5hZGQo
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ5dGVMZW5ndGgpOwogICAgIAogICAgIEJhc2U6OmdldE93
bk5vbkluZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBhcnJheSwgbW9kZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmll
dy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5j
cHAKaW5kZXggMGExMTZjMDYwNzhiZDgwMDNiNmRmMjllNzM1MjViOGFjYTRlMTQ2NS4uNjA3ZTM0
ODE2YmUyNjY3ZjU4ZTYxZDVlOTZmMWQ0ZTZhZDIxYzNkNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcApAQCAtMjAxLDcgKzIw
MSw3IEBAIHZvaWQgSlNBcnJheUJ1ZmZlclZpZXc6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1l
cygKICAgICBKU0FycmF5QnVmZmVyVmlldyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5QnVm
ZmVyVmlldyo+KG9iamVjdCk7CiAgICAgCiAgICAgLy8gbGVuZ3RoL2J5dGVPZmZzZXQvYnl0ZUxl
bmd0aCBhcmUgRG9udEVudW0sIGF0IGxlYXN0IGluIEZpcmVmb3guCi0gICAgaWYgKHNob3VsZElu
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpIHsKKyAgICBpZiAobW9kZS5zaG91bGRJbmNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpIHsKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5ieXRlT2Zmc2V0KTsKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5ieXRlTGVuZ3RoKTsKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5idWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmNwcAppbmRleCAxYjk4NWFlYWI1MWUzYmE0ODViZGY5YTQwODM2ZDEwZDM0OGViNzc2Li5lZjhj
ZjhmZmNjN2NmOGRjMzRmZGNlMmNhY2UyMWMxN2Q0ZWU0OGYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtMzY5LDcgKzM2OSw3IEBAIGJvb2wg
SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOCiB2b2lkIEpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVy
dHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFy
cmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKICAgICBKU0Z1bmN0
aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlmICgh
dGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSAmJiBzaG91bGRJbmNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzKG1vZGUpKSB7CisgICAgaWYgKCF0aGlzT2JqZWN0LT5pc0hvc3RPckJ1
aWx0aW5GdW5jdGlvbigpICYmIG1vZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygp
KSB7CiAgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSBw
cm90b3R5cGUgaGFzIGJlZW4gcmVpZmllZC4KICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhp
c09iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5k
ZXggOWFiOWRjMjc3N2JhYmY4OTYzODFkY2Y0MDJjMDEzMDkwZjk1ZTMwYy4uOTRhYjU3OWVlMjhh
MzJkNGY2NzFhODljODEzNDdkZmVkZGZjOGU3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uaApAQCAtMTM5LDcgKzEzOSw3IEBAIGNsYXNzIEpTRnVuY3Rpb24g
OiBwdWJsaWMgSlNDYWxsZWUgewogICAgIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKiBjcmVhdGVB
bGxvY2F0aW9uUHJvZmlsZShFeGVjU3RhdGUqLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpOwogCiAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJh
eSYsIEVudW1lcmF0aW9uTW9kZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIHN0
YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlID0gRW51bWVyYXRpb25Nb2Rl
OjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Q
cm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVy
dHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICBzdGF0aWMgdm9pZCBwdXQo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggNDAxYjhkYTJkODQ0NzYyZTVh
M2NlNmNhZmJmZWQzNjAyOTQwZjdmYy4uMjQzNzRmNjBmYzE4MjI3ODcyOWQwNjNhY2MxYTgxYjEw
ZjcxYjg2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTQxNSw3ICs0MTUsNyBA
QAogewogICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3Kj4ob2JqZWN0KTsKICAgICAKLSAgICBpZiAoc2hvdWxkSW5j
bHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkKKyAgICBpZiAobW9kZS5zaG91bGRJbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKCkpCiAgICAgICAgIGFycmF5LmFkZChleGVjLT5wcm9wZXJ0eU5h
bWVzKCkubGVuZ3RoKTsKICAgICAKICAgICBCYXNlOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFt
ZXModGhpc09iamVjdCwgZXhlYywgYXJyYXksIG1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCmluZGV4IGMxMTA3
ZTZkNjY2NDQ1YWM0OTgyY2U1ZGU5ZTkwZjk4ZDkxZWY5MGUuLmEwNDAwZWFlYzQxMzczMDVkZWEy
ZTE5NjNiZGE4MzU5OTQ4YjUzMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCB2
b2lkIEpTTGV4aWNhbEVudmlyb25tZW50OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YQogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tl
cih0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5tX2xvY2spOwogICAgICAgICBTeW1ib2xUYWJs
ZTo6TWFwOjppdGVyYXRvciBlbmQgPSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5lbmQobG9j
a2VyKTsKICAgICAgICAgZm9yIChTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdCA9IHRoaXNP
YmplY3QtPnN5bWJvbFRhYmxlKCktPmJlZ2luKGxvY2tlcik7IGl0ICE9IGVuZDsgKytpdCkgewot
ICAgICAgICAgICAgaWYgKGl0LT52YWx1ZS5nZXRBdHRyaWJ1dGVzKCkgJiBEb250RW51bSAmJiAh
c2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkKKyAgICAgICAgICAgIGlmIChp
dC0+dmFsdWUuZ2V0QXR0cmlidXRlcygpICYgRG9udEVudW0gJiYgIW1vZGUuc2hvdWxkSW5jbHVk
ZURvbnRFbnVtUHJvcGVydGllcygpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgaWYgKCF0aGlzT2JqZWN0LT5pc1ZhbGlkKGl0LT52YWx1ZS5zY29wZU9mZnNldCgpKSkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPTk9iamVjdC5jcHAKaW5kZXggYmRiODIxY2RmNTY0ODBkNjhkYzFjNGRhMmVkMDU2Y2I1
NTgxZTFhOS4uYzg5OGEzNDI4NTk1YjZkMTE5MzJjMGVhOGUwZDliODBmMWJhMzVhYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKQEAgLTQ5MCw3ICs0
OTAsNyBAQCBib29sIFN0cmluZ2lmaWVyOjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eShTdHJp
bmdpZmllciYgc3RyaW5naWZpZXIsIFN0cmluZ0J1aQogICAgICAgICAgICAgICAgIG1fcHJvcGVy
dHlOYW1lcyA9IHN0cmluZ2lmaWVyLm1fYXJyYXlSZXBsYWNlclByb3BlcnR5TmFtZXMuZGF0YSgp
OwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkg
b2JqZWN0UHJvcGVydHlOYW1lcyhleGVjKTsKLSAgICAgICAgICAgICAgICBtX29iamVjdC0+bWV0
aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhtX29iamVjdC5nZXQoKSwgZXhlYywgb2Jq
ZWN0UHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgICAgICAg
ICAgICAgbV9vYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMobV9vYmpl
Y3QuZ2V0KCksIGV4ZWMsIG9iamVjdFByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZTo6RXhj
bHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgICAgICAgICAgICAgbV9wcm9wZXJ0eU5hbWVz
ID0gb2JqZWN0UHJvcGVydHlOYW1lcy5yZWxlYXNlRGF0YSgpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgbV9zaXplID0gbV9wcm9wZXJ0eU5hbWVzLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKS5z
aXplKCk7CkBAIC03MDcsNyArNzA3LDcgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3
YWxrKEpTVmFsdWUgdW5maWx0ZXJlZCkKICAgICAgICAgICAgICAgICBvYmplY3RTdGFjay5wdXNo
KG9iamVjdCk7CiAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5hcHBlbmQoMCk7CiAgICAgICAg
ICAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjKSk7
Ci0gICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5h
bWVzKG9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwgRXhjbHVkZURvbnRFbnVt
UHJvcGVydGllcyk7CisgICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRP
d25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwgRW51
bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIG9iamVjdFN0YXJ0VmlzaXRNZW1iZXI6CiAgICAgICAgICAgICBGQUxMVEhS
T1VHSDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCA1
MjNkMTJhOTIwM2I3MDMzOGMzMGQxNTI4ZDUwZmYxYmE2MDI2MTRmLi5hYjhhOWNjOWM4NmQxZDEz
ZTQ4M2YyMjUxNTQ3N2RhNzFmNzUxZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBnZXRD
bGFzc1Byb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDbGFzc0luZm8qIGNsYXNz
CiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBmb3IgKGF1dG8gaXRlciA9IHRhYmxl
LT5iZWdpbigpOyBpdGVyICE9IHRhYmxlLT5lbmQoKTsgKytpdGVyKSB7Ci0gICAgICAgICAgICBp
ZiAoKCEoaXRlci0+YXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IHNob3VsZEluY2x1ZGVEb250
RW51bVByb3BlcnRpZXMobW9kZSkpICYmICEoKGl0ZXItPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5P
ckZ1bmN0aW9uKSAmJiBkaWRSZWlmeSkpCisgICAgICAgICAgICBpZiAoKCEoaXRlci0+YXR0cmli
dXRlcygpICYgRG9udEVudW0pIHx8IG1vZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGll
cygpKSAmJiAhKChpdGVyLT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikgJiYgZGlk
UmVpZnkpKQogICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnZtLCBpdGVyLmtleSgpKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNTE4LDcg
KzE1MTgsNyBAQCB2b2lkIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQQogCiB2b2lkIEpTT2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewotICAg
IGlmICghc2hvdWxkSW5jbHVkZUpTT2JqZWN0UHJvcGVydHlOYW1lcyhtb2RlKSkgeworICAgIGlm
ICghbW9kZS5zaG91bGRJbmNsdWRlSlNPYmplY3RQcm9wZXJ0eU5hbWVzKCkpIHsKICAgICAgICAg
Ly8gV2Ugc3RpbGwgaGF2ZSB0byBnZXQgbm9uLWluZGV4ZWQgcHJvcGVydGllcyBmcm9tIGFueSBz
dWJjbGFzc2VzIG9mIEpTT2JqZWN0IHRoYXQgaGF2ZSB0aGVtLgogICAgICAgICBvYmplY3QtPm1l
dGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMob2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTU3Miw3
ICsxNTcyLDcgQEAgdm9pZCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmEKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbWFwLT5lbmQo
KTsKICAgICAgICAgICAgIGZvciAoU3BhcnNlQXJyYXlWYWx1ZU1hcDo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBtYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgICAgIGlm
IChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpIHx8ICEoaXQtPnZhbHVlLmF0
dHJpYnV0ZXMgJiBEb250RW51bSkpCisgICAgICAgICAgICAgICAgaWYgKG1vZGUuc2hvdWxkSW5j
bHVkZURvbnRFbnVtUHJvcGVydGllcygpIHx8ICEoaXQtPnZhbHVlLmF0dHJpYnV0ZXMgJiBEb250
RW51bSkpCiAgICAgICAgICAgICAgICAgICAgIGtleXMudW5jaGVja2VkQXBwZW5kKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihpdC0+a2V5KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKQEAg
LTE1OTQsNyArMTU5NCw3IEBAIHZvaWQgSlNPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByCiB7CiAgICAgZ2V0Q2xh
c3NQcm9wZXJ0eU5hbWVzKGV4ZWMsIG9iamVjdC0+Y2xhc3NJbmZvKCksIHByb3BlcnR5TmFtZXMs
IG1vZGUsIG9iamVjdC0+c3RhdGljRnVuY3Rpb25zUmVpZmllZCgpKTsKIAotICAgIGlmICghc2hv
dWxkSW5jbHVkZUpTT2JqZWN0UHJvcGVydHlOYW1lcyhtb2RlKSkKKyAgICBpZiAoIW1vZGUuc2hv
dWxkSW5jbHVkZUpTT2JqZWN0UHJvcGVydHlOYW1lcygpKQogICAgICAgICByZXR1cm47CiAgICAg
CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTI4MDAsNyArMjgwMCw3IEBAIHZvaWQgSlNP
YmplY3Q6OmdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wCiB2b2lkIEpTT2JqZWN0OjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9w
ZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwotICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZVRoYXRTa2lwc0pTT2JqZWN0KG1vZGUpKTsK
KyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZTo6Y3JlYXRlVGhhdFNraXBzSlNP
YmplY3QobW9kZSkpOwogCiAgICAgaWYgKG9iamVjdC0+cHJvdG90eXBlKCkuaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgKaW5kZXggMTQ2MGNlYTY0NjE4ZWY2MjYwY2Nh
ZjgxNGRjZmMyZjJjYzljMTNkZi4uZmExOTc1MDMwY2E2NmM5MWJlZGZjYTE0NTQ5NzdiZDNhMmM1
YjJmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgKQEAgLTEyNiwxMyArMTI2LDEzIEBAIGlubGluZSBKU1By
b3BlcnR5TmFtZUVudW1lcmF0b3IqIHByb3BlcnR5TmFtZUVudW1lcmF0b3IoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsK
IAogICAgIGlmIChzdHJ1Y3R1cmUtPmNhbkFjY2Vzc1Byb3BlcnRpZXNRdWlja2x5KCkgJiYgaW5k
ZXhlZExlbmd0aCA9PSBiYXNlLT5nZXRBcnJheUxlbmd0aCgpKSB7Ci0gICAgICAgIGJhc2UtPm1l
dGhvZFRhYmxlKHZtKS0+Z2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcyhiYXNlLCBleGVjLCBwcm9w
ZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgYmFzZS0+bWV0
aG9kVGFibGUodm0pLT5nZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKGJhc2UsIGV4ZWMsIHByb3Bl
cnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAK
ICAgICAgICAgbnVtYmVyU3RydWN0dXJlUHJvcGVydGllcyA9IHByb3BlcnR5TmFtZXMuc2l6ZSgp
OwogCi0gICAgICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0R2VuZXJpY1Byb3BlcnR5TmFt
ZXMoYmFzZSwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7
CisgICAgICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMo
YmFzZSwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKTsKICAgICB9IGVsc2UKLSAgICAgICAgYmFzZS0+bWV0aG9kVGFibGUodm0p
LT5nZXRQcm9wZXJ0eU5hbWVzKGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250
RW51bVByb3BlcnRpZXMpOworICAgICAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmdldFByb3Bl
cnR5TmFtZXMoYmFzZSwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKIAogICAgIEFTU0VSVChwcm9wZXJ0eU5hbWVzLnNpemUo
KSA8IFVJTlQzMl9NQVgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCmluZGV4IDJiMDE4NjJkNmE0OWQxYTBlMDQ2NjA1
NDMyNDM0NDk5YzAyZTljN2EuLjRiMWRlNWYzODU1N2Y5NWJmNDU3NDFiN2M5MWFkZmM1MmRmNTg2
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFi
bGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9s
VGFibGVPYmplY3QuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgSlNTeW1ib2xUYWJsZU9iamVj
dDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
CiAgICAgICAgIGZvciAoU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXQgPSB0aGlzT2JqZWN0
LT5zeW1ib2xUYWJsZSgpLT5iZWdpbihsb2NrZXIpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAg
ICAgICAgIGlmIChpdC0+a2V5LT5pc1N5bWJvbCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgaWYgKCEoaXQtPnZhbHVlLmdldEF0dHJpYnV0ZXMoKSAmIERvbnRFbnVt
KSB8fCBzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQorICAgICAgICAgICAg
aWYgKCEoaXQtPnZhbHVlLmdldEF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCBtb2RlLnNob3Vs
ZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5h
bWVzLmFkZChJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIGl0LT5rZXkuZ2V0KCkpKTsKICAgICAg
ICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dENvbnN0cnVjdG9yLmNwcAppbmRleCA3NGRiNDhiOGI2NzBjMzUyZjAyNjU1NTZkYTIwNTFkYjQ5
MGQ1ODVjLi5jOTIzNTdjZTBmNTBiOWNjNGUxZTc5NDgwMmE2YTNhZWY2NzRjMzdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3Bw
CkBAIC0yMDcsNyArMjA3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RD
b25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGUKICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxs
KCkpOwogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgb2JqZWN0
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4
ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIG9iamVjdC0+
bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVj
LCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGU6OkluY2x1ZGVEb250RW51bVByb3BlcnRpZXMp
OwogICAgIEpTQXJyYXkqIG5hbWVzID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKICAg
ICBzaXplX3QgbnVtUHJvcGVydGllcyA9IHByb3BlcnRpZXMuc2l6ZSgpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgaSsrKQpAQCAtMjIyLDcgKzIyMiw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JLZXlzKEV4ZWNTdGF0
ZSogZXhlYykKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRp
ZXMoZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJv
cGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEV4Y2x1ZGVEb250RW51bVByb3Bl
cnRpZXMpOworICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3Bl
cnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1
ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgIEpTQXJyYXkqIGtleXMgPSBjb25zdHJ1Y3RFbXB0
eUFycmF5KGV4ZWMsIDApOwogICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5z
aXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspCkBA
IC0zMzMsNyArMzMzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25z
dHJ1Y3RvckRlZmluZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYykKIHN0YXRpYyBKU1ZhbHVlIGRl
ZmluZVByb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0LCBKU09iamVj
dCogcHJvcGVydGllcykKIHsKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4
ZWMpOwotICAgIGFzT2JqZWN0KHByb3BlcnRpZXMpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+
Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChwcm9wZXJ0aWVzKSwgZXhlYywgcHJvcGVydHlO
YW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgYXNPYmplY3QocHJvcGVydGll
cyktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0
KHByb3BlcnRpZXMpLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1
ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVy
dHlOYW1lcy5zaXplKCk7CiAgICAgVmVjdG9yPFByb3BlcnR5RGVzY3JpcHRvcj4gZGVzY3JpcHRv
cnM7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgbWFya0J1ZmZlcjsKQEAgLTQwMCw3ICs0MDAs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yU2VhbChF
eGVjU3RhdGUqIGV4ZWMpCiAKICAgICAvLyAyLiBGb3IgZWFjaCBuYW1lZCBvd24gcHJvcGVydHkg
bmFtZSBQIG9mIE8sCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAg
ICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9i
amVjdCwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAg
b2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmpl
Y3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZTo6SW5jbHVkZURvbnRFbnVtUHJv
cGVydGllcyk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHBy
b3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0
b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAg
ICAgICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbR2V0T3du
UHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAuCkBAIC00MzcsNyArNDM3LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZShF
eGVjU3RhdGUqIGV4ZWMpCiAKICAgICAvLyAyLiBGb3IgZWFjaCBuYW1lZCBvd24gcHJvcGVydHkg
bmFtZSBQIG9mIE8sCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAg
ICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9i
amVjdCwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAg
b2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmpl
Y3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZTo6SW5jbHVkZURvbnRFbnVtUHJv
cGVydGllcyk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHBy
b3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0
b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAg
ICAgICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbR2V0T3du
UHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAuCkBAIC00ODUsNyArNDg1LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzU2VhbGVk
KEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIC8vIDIuIEZvciBlYWNoIG5hbWVkIG93biBwcm9wZXJ0
eSBuYW1lIFAgb2YgTywKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwot
ICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMo
b2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAg
ICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9i
amVjdCwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlOjpJbmNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
cHJvcGVydGllcy5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVy
YXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAg
ICAgICAgIC8vIGEuIExldCBkZXNjIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRP
d25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBPIHdpdGggUC4KQEAgLTUxNSw3ICs1MTUs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNGcm96
ZW4oRXhlY1N0YXRlKiBleGVjKQogCiAgICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQgb3duIHByb3Bl
cnR5IG5hbWUgUCBvZiBPLAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7
Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1l
cyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwor
ICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMo
b2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGU6OkluY2x1ZGVEb250RW51
bVByb3BlcnRpZXMpOwogICAgIFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBlbmQg
PSBwcm9wZXJ0aWVzLmVuZCgpOwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0
ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0aWVzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsK
ICAgICAgICAgLy8gYS4gTGV0IGRlc2MgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0dl
dE93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBQLgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKaW5kZXggNGQ5ZDBiMjdlNGQw
YzhjOTFmOWZlYjQ1YTFkNTRlNTk1ZDMzZDUxOS4uNTQ5YTNhMmY5YTc0YzNhMWE5ZGM3MDAxMDQx
MmZhNDc5ZDkxYTg1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBPYmplY3QuY3BwCkBAIC0xMDUsMjEgKzEwNSwyMSBAQCBib29sIFJlZ0V4cE9iamVjdDo6ZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cgogCiB2b2lkIFJlZ0V4cE9iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5
TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewotICAgIGlmIChzaG91bGRJbmNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQorICAgIGlmIChtb2RlLnNob3VsZEluY2x1ZGVEb250RW51
bVByb3BlcnRpZXMoKSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlO
YW1lcygpLmxhc3RJbmRleCk7CiAgICAgQmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVz
KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKIHZvaWQgUmVnRXhwT2Jq
ZWN0OjpnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQog
ewotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQorICAgIGlm
IChtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgcHJvcGVy
dHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxhc3RJbmRleCk7CiAgICAgQmFzZTo6
Z2V0UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQog
CiB2b2lkIFJlZ0V4cE9iamVjdDo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywg
RW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7Ci0gICAgaWYgKHNob3VsZEluY2x1ZGVEb250RW51bVBy
b3BlcnRpZXMobW9kZSkpCisgICAgaWYgKG1vZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVy
dGllcygpKQogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCku
bGFzdEluZGV4KTsKICAgICBCYXNlOjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ09iamVjdC5jcHAKaW5kZXggNTAwMWJjYzRlMWI3ZTM3OTNlZDI2ZTE0MjBh
ODBhNjA0NjhlMTNjNi4uYWIzOTQ5ZTA3ZTMzZTFhMTlmNzUzNTlmMjk5ODFhMjE0OWFmMGJkNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCkBA
IC0xNTAsNyArMTUwLDcgQEAgdm9pZCBTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXIKICAgICBpbnQgc2l6ZSA9
IHRoaXNPYmplY3QtPmludGVybmFsVmFsdWUoKS0+bGVuZ3RoKCk7CiAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6
OmZyb20oZXhlYywgaSkpOwotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KG1vZGUpKQorICAgIGlmIChtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkK
ICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7
CiAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggM2I4YWUxY2U3MzViYjI1ZTc3YmQzMTE4ODEzMjBjZGNj
NzJhMjUxNC4uNWZmMGI3ZWJlMzNmN2RhMzExZDBhYzQ4NjNkNmIyMTYxZjAzYjdlYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC05MzksNyArOTM5
LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKFZNJiB2
bSwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnQKICAgICBQcm9wZXJ0eVRhYmxlOjppdGVyYXRv
ciBlbmQgPSBwcm9wZXJ0eVRhYmxlKCktPmVuZCgpOwogICAgIGZvciAoUHJvcGVydHlUYWJsZTo6
aXRlcmF0b3IgaXRlciA9IHByb3BlcnR5VGFibGUoKS0+YmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsr
aXRlcikgewogICAgICAgICBBU1NFUlQoaGFzTm9uRW51bWVyYWJsZVByb3BlcnRpZXMoKSB8fCAh
KGl0ZXItPmF0dHJpYnV0ZXMgJiBEb250RW51bSkpOwotICAgICAgICBpZiAoIWl0ZXItPmtleS0+
aXNTeW1ib2woKSAmJiAoIShpdGVyLT5hdHRyaWJ1dGVzICYgRG9udEVudW0pIHx8IHNob3VsZElu
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpKSB7CisgICAgICAgIGlmICghaXRlci0+a2V5
LT5pc1N5bWJvbCgpICYmICghKGl0ZXItPmF0dHJpYnV0ZXMgJiBEb250RW51bSkgfHwgbW9kZS5z
aG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpKSB7CiAgICAgICAgICAgICBpZiAoa25v
d25VbmlxdWUpCiAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGRLbm93blVuaXF1ZShp
dGVyLT5rZXkpOwogICAgICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9E
aWN0aW9uYXJ5LmNwcAppbmRleCBkZjRkYzc4NjJkMmRhYWE5ZjJiNjc2ZDFlZDMxNzJhMmYzZWFm
ZDI5Li40Y2QwODM4ZjM2NDI1MzgzZThjMTg4ODI2NmY4MjEyMWEwMGU3NWIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcApAQCAtNjMsNyArNjMsNyBAQCBib29s
IERpY3Rpb25hcnk6OmdldE93blByb3BlcnRpZXNBc1N0cmluZ0hhc2hNYXAoSGFzaE1hcDxTdHJp
bmcsIFN0cmluZz4mIG1hcCkgYwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZGljdGlvbmFyeS5l
eGVjU3RhdGUoKTsKIAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYyk7
Ci0gICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBKU09iamVjdDo6Z2V0T3du
UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9k
ZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJh
eTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwcm9wZXJ0eU5hbWVzLmJlZ2luKCk7IGl0ICE9IHByb3Bl
cnR5TmFtZXMuZW5kKCk7ICsraXQpIHsKICAgICAgICAgU3RyaW5nIHN0cmluZ0tleSA9IGl0LT5z
dHJpbmcoKTsKICAgICAgICAgaWYgKHN0cmluZ0tleS5pc0VtcHR5KCkpCkBAIC04OCw3ICs4OCw3
IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0T3duUHJvcGVydHlOYW1lcyhWZWN0b3I8U3RyaW5nPiYg
bmFtZXMpIGNvbnN0CiAgICAgRXhlY1N0YXRlKiBleGVjID0gbV9kaWN0aW9uYXJ5LmV4ZWNTdGF0
ZSgpOwogCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKLSAgICBK
U09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMs
IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25z
dF9pdGVyYXRvciBpdCA9IHByb3BlcnR5TmFtZXMuYmVnaW4oKTsgaXQgIT0gcHJvcGVydHlOYW1l
cy5lbmQoKTsgKytpdCkgewogICAgICAgICBTdHJpbmcgc3RyaW5nS2V5ID0gaXQtPnN0cmluZygp
OwogICAgICAgICBpZiAoIXN0cmluZ0tleS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCAwMGVhMTFi
NDY0ZjYzNWM2Y2JkZTY0YTI2MjY2MDE2MWNhZGY5ZGU2Li5mN2UzMTM2Njg1MGFjY2Q3MmNlMWUy
NmNhZDIxYmNkMDA4NmU1NDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTEyNTQsNyArMTI1NCw3IEBAIFNlcmlh
bGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUgaW4p
CiAgICAgICAgICAgICAgICAgICAgIGxlbmd0aFN0YWNrLnJlbW92ZUxhc3QoKTsKIAogICAgICAg
ICAgICAgICAgICAgICBwcm9wZXJ0eVN0YWNrLmFwcGVuZChQcm9wZXJ0eU5hbWVBcnJheShtX2V4
ZWMpKTsKLSAgICAgICAgICAgICAgICAgICAgYXJyYXktPm1ldGhvZFRhYmxlKCktPmdldE93bk5v
bkluZGV4UHJvcGVydHlOYW1lcyhhcnJheSwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwg
RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgICAgICAgICAgICAgICAgIGFycmF5LT5t
ZXRob2RUYWJsZSgpLT5nZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoYXJyYXksIG1fZXhlYywg
cHJvcGVydHlTdGFjay5sYXN0KCksIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJv
cGVydGllcyk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eVN0YWNrLmxhc3QoKS5z
aXplKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlKE5vbkluZGV4UHJvcGVydGll
c1RhZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmFwcGVuZCgwKTsKQEAg
LTEzMDQsNyArMTMwNCw3IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXpl
cjo6c2VyaWFsaXplKEpTVmFsdWUgaW4pCiAgICAgICAgICAgICAgICAgaW5wdXRPYmplY3RTdGFj
ay5hcHBlbmQoaW5PYmplY3QpOwogICAgICAgICAgICAgICAgIGluZGV4U3RhY2suYXBwZW5kKDAp
OwogICAgICAgICAgICAgICAgIHByb3BlcnR5U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5
KG1fZXhlYykpOwotICAgICAgICAgICAgICAgIGluT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRP
d25Qcm9wZXJ0eU5hbWVzKGluT2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBF
eGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICBpbk9iamVjdC0+bWV0
aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhpbk9iamVjdCwgbV9leGVjLCBwcm9wZXJ0
eVN0YWNrLmxhc3QoKSwgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG9iamVjdFN0YXJ0VmlzaXRNZW1iZXI6CiAg
ICAgICAgICAgICBGQUxMVEhST1VHSDsKQEAgLTEzNzIsNyArMTM3Miw3IEBAIFNlcmlhbGl6YXRp
b25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUgaW4pCiAgICAg
ICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBpbnB1dE9iamVjdFN0YWNrLmxhc3Qo
KTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNNYXAqPihvYmpl
Y3QpKTsKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlO
YW1lQXJyYXkobV9leGVjKSk7Ci0gICAgICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFi
bGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIG1fZXhlYywgcHJvcGVydHlTdGFjay5s
YXN0KCksIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAgICAgICAgICAgICAgICBv
YmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBtX2V4ZWMs
IHByb3BlcnR5U3RhY2subGFzdCgpLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVBy
b3BlcnRpZXMpOwogICAgICAgICAgICAgICAgICAgICB3cml0ZShOb25NYXBQcm9wZXJ0aWVzVGFn
KTsKICAgICAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5hcHBlbmQoMCk7CiAgICAgICAgICAg
ICAgICAgICAgIGdvdG8gb2JqZWN0U3RhcnRWaXNpdE1lbWJlcjsKQEAgLTE0MTYsNyArMTQxNiw3
IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpT
VmFsdWUgaW4pCiAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBpbnB1dE9i
amVjdFN0YWNrLmxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGpzRHluYW1pY0Nh
c3Q8SlNTZXQqPihvYmplY3QpKTsKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdGFjay5h
cHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjKSk7Ci0gICAgICAgICAgICAgICAgICAgIG9i
amVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIG1fZXhlYywg
cHJvcGVydHlTdGFjay5sYXN0KCksIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAg
ICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMo
b2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFbnVtZXJhdGlvbk1vZGU6OkV4
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgICAgICAgICAgICAgICAgICB3cml0ZShOb25T
ZXRQcm9wZXJ0aWVzVGFnKTsKICAgICAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5hcHBlbmQo
MCk7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb2JqZWN0U3RhcnRWaXNpdE1lbWJlcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
aW5kZXggNWI5Zjg0ZTVlYTY1MzcxMjdlMDJjYmY0YTQ2NjM5NDc0NTAyZDY4Zi4uOGE4ODI0MjFk
Y2NhMTljMTZmZDJjYTU0Mzg2MGI5N2E1MmY1MDk3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTk2OCwxNiArOTY4LDE2
IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgIyBDdXN0b20gZ2V0UHJvcGVydHlOYW1lcyBm
dW5jdGlvbiBleGlzdHMgb24gRE9NV2luZG93CiAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJE
T01XaW5kb3ciKSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZv
aWQgZ2V0UHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhj
bHVkZURvbnRFbnVtUHJvcGVydGllcyk7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICBzdGF0aWMgdm9pZCBnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0
KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJh
dGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7XG4iKTsKLSAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRTdHJ1Y3R1cmVQ
cm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVy
dHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSBtb2RlID0gSlNDOjpFeGNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
IHN0YXRpYyB2b2lkIGdldFByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlND
OjpFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpO1xuIik7CisgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgZ2V0R2VuZXJpY1Byb3Bl
cnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5h
bWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGU6OkV4
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgc3RhdGljIHZvaWQgZ2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcyhKU0M6OkpTT2Jq
ZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVt
ZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVy
dGllcyk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdWlu
dDMyX3QgZ2V0RW51bWVyYWJsZUxlbmd0aChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3Qq
KTtcbiIpOwogICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVy
dHlOYW1lcyJ9ID0gMTsKICAgICB9CiAKICAgICAjIEN1c3RvbSBnZXRPd25Qcm9wZXJ0eU5hbWVz
IGZ1bmN0aW9uCiAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0
b21FbnVtZXJhdGVQcm9wZXJ0eSJ9IHx8ICRpbmRleGVkR2V0dGVyRnVuY3Rpb24pIHsKLSAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5h
bWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJy
YXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSBtb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2
b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVt
ZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpO1xuIik7CiAgICAgICAgICRz
dHJ1Y3R1cmVGbGFnc3siSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIn0gPSAxOyAgICAg
ICAKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmgKaW5kZXggZmYzODhjYTAxNzYwYzEyYjk1NzUwMzlm
ZWM3NjQzMjkzZmU4NGUzNC4uMTNlMTU3N2UzNmNkNjFiZGQxYmMxODcwNmIzNjAyMDhhYzM4MmU4
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
RmxvYXQ2NEFycmF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTRmxvYXQ2NEFycmF5LmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgSlNGbG9hdDY0QXJy
YXkgOiBwdWJsaWMgSlNBcnJheUJ1ZmZlclZpZXcgewogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8o
SlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCi0gICAg
c3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9k
ZSA9IEpTQzo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgc3RhdGljIHZvaWQgZ2V0
T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlBy
b3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9u
TW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgc3RhdGljIEpTQzo6SlNWYWx1
ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsK
ICAgICBGbG9hdDY0QXJyYXkqIGltcGwoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0
LmgKaW5kZXggYmYxY2U2N2UyZmUzY2RjYjk3ZTIwMzg3ZjViMGU5ZTUwODlmMjQ3Zi4uNDA4Y2I4
ZjJmZjc5M2UzMWQxYzZlMzQyOTEyNWQzZDFmYTU0NWIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0
LmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSlNUZXN0RXZlbnRUYXJn
ZXQgOiBwdWJsaWMgSlNET01XcmFwcGVyIHsKICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAotICAgIHN0YXRp
YyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlIG1vZGUgPSBK
U0M6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIHN0YXRpYyB2b2lkIGdldE93blBy
b3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0
eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGU6
OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0
Q29uc3RydWN0b3IoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMg
dm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKaW5kZXggOTAwMTAxMzhhYjQ2Y2U3ZDk3NTNjYmZm
Mjk1ZTUzY2RmYWNkMGI1YS4uMDkwNWRlMTk3ZTU1NjEyOGQ1MjI1YTY1ZDQxMjNlNjhkOTYyZjg1
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCkBAIC00NDcsNyArNDQ3LDcg
QEAgYm9vbCBfTlBOX0VudW1lcmF0ZShOUFAsIE5QT2JqZWN0KiBvLCBOUElkZW50aWZpZXIqKiBp
ZGVudGlmaWVyLCB1aW50MzJfdCogY291bnQKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhl
Yyk7CiAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYyk7CiAKLSAg
ICAgICAgb2JqLT5pbXAtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMob2JqLT5pbXAs
IGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAg
ICBvYmotPmltcC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyhvYmotPmltcCwgZXhl
YywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKTsKICAgICAgICAgdW5zaWduZWQgc2l6ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwcm9w
ZXJ0eU5hbWVzLnNpemUoKSk7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCByZWFsbHkg
Y2FsbCBOUE5fTWVtQWxsb2MgYnV0IHRoYXQncyBpbiBXZWJLaXQKICAgICAgICAgTlBJZGVudGlm
aWVyKiBpZGVudGlmaWVycyA9IHN0YXRpY19jYXN0PE5QSWRlbnRpZmllcio+KG1hbGxvYyhzaXpl
b2YoTlBJZGVudGlmaWVyKSAqIHNpemUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX2FycmF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2Fy
cmF5LmNwcAppbmRleCAwMjIyMTkwNWM0MGU2ZWRmZWQ1Nzk5OWViMjM1ZjU4OTFhN2EyZTA4Li5j
NzEzZmZhNGUyMzI5M2M2NmNjNjVjYjI5OTNkYTNhOTJlZWRhODIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgUnVudGltZUFy
cmF5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVyCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQogICAg
ICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTsKIAotICAg
IGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQorICAgIGlmIChtb2Rl
LnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgcHJvcGVydHlOYW1l
cy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CiAKICAgICBKU09iamVjdDo6Z2V0
T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQppbmRleCBjYWRlOWUxZTlmZGY3YjZmNjQxMDg1
ZGI0NzAzYWI4NDMzODUzYTZkLi4zYjk4ZmQ0ZTg3M2QwMGYxNzhmYTk0ODk1OWZhNDgxZWI4MTFm
ZDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9I
b3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCkBAIC0xMjMxLDcgKzEyMzEsNyBA
QCBib29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZW51bWVyYXRlKHVpbnQzMl90IG9i
amVjdElELCBkYXRhX3QmIHJlc3VsdERhdAogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwog
IAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYyk7Ci0gICAgb2JqZWN0
LT5tZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJs
ZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVy
YXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKIAogICAgIFJldGFpblB0cjxO
U011dGFibGVBcnJheSo+IGFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0XSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb3BlcnR5TmFtZXMuc2l6ZSgp
OyBpKyspIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OUEpTT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcAppbmRleCBlZDdkN2Y2YjMzNGIyY2ZmYmRhMTM3MWEy
MmE1ZjQ5MzA5ZTVhOTk3Li5hNjVjODkzM2ZjZTBjYjgwYmQwOTZjNzY0NzY4YzAyYzEwOGZjMDdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TlBKU09iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05QSlNPYmplY3QuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgYm9vbCBOUEpTT2JqZWN0
OjplbnVtZXJhdGUoTlBJZGVudGlmaWVyKiogaWRlbnRpZmllcnMsIHVpbnQzMl90KiBpZGVudGlm
aWVyQ291bnQKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKIAogICAgIFByb3BlcnR5TmFt
ZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYyk7Ci0gICAgbV9qc09iamVjdC0+bWV0aG9kVGFibGUo
KS0+Z2V0UHJvcGVydHlOYW1lcyhtX2pzT2JqZWN0LmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWVz
LCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBtX2pzT2JqZWN0LT5tZXRob2RUYWJs
ZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKG1fanNPYmplY3QuZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFt
ZXMsIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAKICAgICBO
UElkZW50aWZpZXIqIG5hbWVJZGVudGlmaWVycyA9IG5wbk1lbU5ld0FycmF5PE5QSWRlbnRpZmll
cj4ocHJvcGVydHlOYW1lcy5zaXplKCkpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249915</attachid>
            <date>2015-04-01 06:01:07 -0700</date>
            <delta_ts>2015-04-01 21:00:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143276-20150401220023.patch</filename>
            <type>text/plain</type>
            <size>48655</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YjVkN2FlYWNiNTg1ZTY4ZmU0ZjRiZDEzYmY1N2VmMjU0ZWU4OGZlLi5kNzRhMGU1NmYwZGIwMTVh
MTExMGVkOGVhMWVjMzJhOWNlNmJkYjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw4OCBAQAogMjAxNS0wNC0wMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBDbGVhbiB1cCBFbnVtZXJhdGlvbk1vZGUgdG8gZWFzaWx5IGV4dGVu
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMjc2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVG8gbWFr
ZSB0aGUgZm9sbG93aW5ncyBlYXNpbHksCisgICAgICAgIDEuIEFkZGluZyBuZXcgZmxhZyBJbmNs
dWRlL0V4Y2x1ZGVTeW1ib2xzIGluIHRoZSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzIHBh
dGNoCisgICAgICAgIDIuIE1ha2UgRXhjbHVkZVN5bWJvbHMgaW1wbGljaXRseSBkZWZhdWx0IGZv
ciB0aGUgZXhpc3RpbmcgZmxhZ3MKKyAgICAgICAgd2UgZW5jYXBzdWxhdGUgRW51bWVyYXRpb25N
b2RlIGZsYWdzIGludG8gRW51bWVyYXRpb25Nb2RlIGNsYXNzLgorCisgICAgICAgIEFuZCB0aGlz
IGNsYXNzIG1hbmFnZXMgMiBmbGFncy4gTGF0ZXIgaXQgd2lsbCBiZSBleHRlbmRlZCB0byAzLgor
ICAgICAgICAxLiBEb250RW51bVByb3BlcnRpZXNNb2RlIChkZWZhdWx0IGlzIEV4Y2x1ZGUpCisg
ICAgICAgIDIuIEpTT2JqZWN0UHJvcGVydGllc01vZGUgKGRlZmF1bHQgaXMgSW5jbHVkZSkKKyAg
ICAgICAgMy4gU3ltYm9sUHJvcGVydGllc01vZGUgKGRlZmF1bHQgaXMgRXhjbHVkZSkKKyAgICAg
ICAgICAgIFN5bWJvbFByb3BlcnRpZXNNb2RlIHdpbGwgYmUgYWRkZWQgaW4gT2JqZWN0LmdldE93
blByb3BlcnR5U3ltYm9scyBwYXRjaC4KKworICAgICAgICBUaGlzIHBhdGNoIHJlcGxhY2VzIHBs
YWNlcyB1c2luZyBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzCisgICAgICAgIHRvIEVudW1lcmF0
aW9uTW9kZSgpIHZhbHVlIHdoaWNoIHJlcHJlc2VudHMgZGVmYXVsdCBtb2RlLgorCisgICAgICAg
ICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxs
YmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAqIEFQSS9KU09iamVjdFJlZi5jcHA6CisgICAgICAgIChKU09iamVjdENvcHlQcm9wZXJ0eU5h
bWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChEZXBy
ZWNhdGVkOjpqc1RvSW5zcGVjdG9yVmFsdWUpOgorICAgICAgICAqIGJ5dGVjb2RlL09iamVjdEFs
bG9jYXRpb25Qcm9maWxlLmg6CisgICAgICAgIChKU0M6Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxl
Ojpwb3NzaWJsZURlZmF1bHRQcm9wZXJ0eUNvdW50KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTb3J0KToKKyAgICAg
ICAgKiBydW50aW1lL0VudW1lcmF0aW9uTW9kZS5oOgorICAgICAgICAoSlNDOjpFbnVtZXJhdGlv
bk1vZGU6OkVudW1lcmF0aW9uTW9kZSk6CisgICAgICAgIChKU0M6OkVudW1lcmF0aW9uTW9kZTo6
aW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6OkVudW1lcmF0aW9uTW9k
ZTo6aW5jbHVkZUpTT2JqZWN0UHJvcGVydGllcyk6CisgICAgICAgIChKU0M6OnNob3VsZEluY2x1
ZGVEb250RW51bVByb3BlcnRpZXMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpzaG91bGRFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6c2hvdWxkSW5j
bHVkZUpTT2JqZWN0UHJvcGVydHlOYW1lcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Om1vZGVU
aGF0U2tpcHNKU09iamVjdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9HZW5lcmljQXJn
dW1lbnRzSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpHZW5lcmljQXJndW1lbnRzPFR5cGU+Ojpn
ZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuY3BwOgorICAg
ICAgICAoSlNDOjpKU0FycmF5OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZm
ZXI6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9KU0Fy
cmF5QnVmZmVyVmlldy5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpnZXRP
d25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5j
cHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1l
cyk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6Cisg
ICAgICAgICogcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6
OkpTTGV4aWNhbEVudmlyb25tZW50OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVy
OjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OldhbGtlcjo6d2Fs
ayk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OmdldENs
YXNzUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyk6
CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaDoKKyAgICAgICAg
KEpTQzo6cHJvcGVydHlOYW1lRW51bWVyYXRvcik6CisgICAgICAgICogcnVudGltZS9KU1N5bWJv
bFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9iamVjdDo6Z2V0
T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0
eU5hbWVzKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JLZXlzKToKKyAgICAgICAg
KEpTQzo6ZGVmaW5lUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9y
U2VhbCk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yRnJlZXplKToKKyAgICAgICAg
KEpTQzo6b2JqZWN0Q29uc3RydWN0b3JJc1NlYWxlZCk6CisgICAgICAgIChKU0M6Om9iamVjdENv
bnN0cnVjdG9ySXNGcm96ZW4pOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMp
OgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAoSlNDOjpSZWdFeHBPYmplY3Q6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAg
KiBydW50aW1lL1N0cmluZ09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6
Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKToK
KworMjAxNS0wNC0wMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwog
ICAgICAgICBJdGVyYXRvckNsb3NlIHNob3VsZCBiZSBjYWxsZWQgd2hlbiBqdW1waW5nIG92ZXIg
dGhlIHRhcmdldCBmb3Itb2YgbG9vcAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQzMTQwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0OTY2ZjFkMjcyYmE1YmJlN2Mw
MGU1NDM4MGQwMzliNGVjYThkMmI5Li40Mjc0N2U3NTZiNTRlMGZjNTVlMTFiMjYwNDRjZDE4MDdm
MDRhNGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTUtMDQtMDEgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgRW51bWVy
YXRpb25Nb2RlIHRvIGVhc2lseSBleHRlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MzI3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVzZSBkZWZhdWx0IEVudW1lcmF0aW9uTW9kZSgpLgorCisgICAg
ICAgICogYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaWN0
aW9uYXJ5OjpnZXRPd25Qcm9wZXJ0aWVzQXNTdHJpbmdIYXNoTWFwKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpY3Rpb25hcnk6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNl
cmlhbGl6ZXI6OnNlcmlhbGl6ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5Lmg6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0Lmg6CisgICAgICAgICogYnJpZGdlL05Q
X2pzb2JqZWN0LmNwcDoKKyAgICAgICAgKF9OUE5fRW51bWVyYXRlKToKKyAgICAgICAgKiBicmlk
Z2UvcnVudGltZV9hcnJheS5jcHA6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6Z2V0T3du
UHJvcGVydHlOYW1lcyk6CisKIDIwMTUtMDMtMzAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFu
ZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIE1vdmUgc3luY2hyb25vdXMgbWVz
c2FnZSBoYW5kbGVyIHRvIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwppbmRleCBkZDZlZjkxNmM2NmJkYjBiMmQ0M2E3OWE2MDllNWRhNGE5YzBhN2VjLi4wYjIx
OTcwMDY1MjcwYmM5MGM0NmE3ZjBjM2JjOGU5MWY3ZGI0NWI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTUtMDQtMDEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgRW51bWVyYXRpb25Nb2RlIHRvIGVhc2lseSBl
eHRlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
MzI3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVz
ZSBkZWZhdWx0IEVudW1lcmF0aW9uTW9kZSgpLgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHk6OmVudW1lcmF0ZSk6CisKIDIwMTUtMDMtMzEgIFRpbW90aHkg
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFRleHRJbmRpY2F0
b3IgZm9yIDxzcGFuPiBpbnNpZGUgYW4gPGE+IG9ubHkgaGlnaGxpZ2h0cyB0aGUgPHNwYW4+LCBz
aG91bGQgaGlnaGxpZ2h0IHRoZSB3aG9sZSA8YT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmNGQ0N2I0YjY0Y2E1
ZjNkMmE5NDQ2NWFiMGFkNWZjMjFlYmFkMmU0Li42NDVhMmVhNmYyMjI4ODVmZGVjZmJjZDRiMDhi
NGU4YmUxOTZlNzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMDQtMDEgIFl1
c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAg
RW51bWVyYXRpb25Nb2RlIHRvIGVhc2lseSBleHRlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzI3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBkZWZhdWx0IEVudW1lcmF0aW9uTW9kZSgpLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOUEpTT2JqZWN0OjplbnVtZXJhdGUpOgorCiAyMDE1LTAzLTMxICBE
YW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzIwMzY1Njc1PiBbaU9TXSBJbmNsdWRlIEFkZCB0byBSZWFkaW5nIExpc3QgbGluayBhY3Rpb24g
b25seSB3aGVyZSBzdXBwb3J0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggYTBiODNlNzdmZjU3MDI4N2VmNjdl
OTQ3N2MxZTkyN2RiOTU5N2NmNi4uM2UzYmRlN2E2MmE1NTQ5YWFjMjcwNjVmZTdiYTJhYWU5Zjdj
MjRkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgKQEAgLTUyMSw3ICs1MjEsNyBAQAogICAgICAgICAgICAgZm9yIChp
dGVyYXRvciBpdCA9IHN0YXRpY1ZhbHVlcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAg
ICAgICAgICAgICAgICAgU3RyaW5nSW1wbCogbmFtZSA9IGl0LT5rZXkuZ2V0KCk7CiAgICAgICAg
ICAgICAgICAgU3RhdGljVmFsdWVFbnRyeSogZW50cnkgPSBpdC0+dmFsdWUuZ2V0KCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKGVudHJ5LT5nZXRQcm9wZXJ0eSAmJiAoIShlbnRyeS0+YXR0cmlidXRl
cyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udEVudW0pIHx8IHNob3VsZEluY2x1ZGVEb250RW51
bVByb3BlcnRpZXMobW9kZSkpKSB7CisgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5nZXRQcm9w
ZXJ0eSAmJiAoIShlbnRyeS0+YXR0cmlidXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udEVu
dW0pIHx8IG1vZGUuaW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKSkgewogICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoIW5hbWUtPmlzU3ltYm9sKCkpOwogICAgICAgICAgICAgICAgICAgICBw
cm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIFN0cmluZyhuYW1l
KSkpOwogICAgICAgICAgICAgICAgIH0KQEAgLTUzNCw3ICs1MzQsNyBAQAogICAgICAgICAgICAg
Zm9yIChpdGVyYXRvciBpdCA9IHN0YXRpY0Z1bmN0aW9ucy0+YmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7CiAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbCogbmFtZSA9IGl0LT5rZXkuZ2V0KCk7
CiAgICAgICAgICAgICAgICAgU3RhdGljRnVuY3Rpb25FbnRyeSogZW50cnkgPSBpdC0+dmFsdWUu
Z2V0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCEoZW50cnktPmF0dHJpYnV0ZXMgJiBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnRFbnVtKSB8fCBzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KG1vZGUpKSB7CisgICAgICAgICAgICAgICAgaWYgKCEoZW50cnktPmF0dHJpYnV0ZXMgJiBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnRFbnVtKSB8fCBtb2RlLmluY2x1ZGVEb250RW51bVByb3BlcnRp
ZXMoKSkgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIW5hbWUtPmlzU3ltYm9sKCkpOwog
ICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKGV4ZWMsIFN0cmluZyhuYW1lKSkpOwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKaW5kZXggNmNlMWMyYzExMzNiNjkwYTc3Y2Rj
OWFjYWM4YWYzN2NhODUzMDdkNS4uNzgxOTMyMWFjNzEwOGRmNTk1NjIwNTEyMmI3NTc0MDUwZTIx
M2I0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKQEAgLTY5
OCw3ICs2OTgsNyBAQCBKU1Byb3BlcnR5TmFtZUFycmF5UmVmIEpTT2JqZWN0Q29weVByb3BlcnR5
TmFtZXMoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgbwogICAgIEpTT2JqZWN0KiBqc09i
amVjdCA9IHRvSlMob2JqZWN0KTsKICAgICBKU1Byb3BlcnR5TmFtZUFycmF5UmVmIHByb3BlcnR5
TmFtZXMgPSBuZXcgT3BhcXVlSlNQcm9wZXJ0eU5hbWVBcnJheSh2bSk7CiAgICAgUHJvcGVydHlO
YW1lQXJyYXkgYXJyYXkodm0pOwotICAgIGpzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRQcm9w
ZXJ0eU5hbWVzKGpzT2JqZWN0LCBleGVjLCBhcnJheSwgRXhjbHVkZURvbnRFbnVtUHJvcGVydGll
cyk7CisgICAganNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMoanNPYmpl
Y3QsIGV4ZWMsIGFycmF5LCBFbnVlbXJhdGlvbk1vZGUoKSk7CiAKICAgICBzaXplX3Qgc2l6ZSA9
IGFycmF5LnNpemUoKTsKICAgICBwcm9wZXJ0eU5hbWVzLT5hcnJheS5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdz
L1NjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRW
YWx1ZS5jcHAKaW5kZXggNzZhN2IxMTFhOGQ4NzdhNjc5YjVjOGI4ZTg5NmUxYTdiMWI2YjhhYy4u
MDUyOTIzYTYyOWQyYmNjY2VmYzVmODFhY2EwZGUwNDNiOTRjODg5YyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCkBAIC0xMzcsNyArMTM3LDcg
QEAgYm9vbCBTY3JpcHRWYWx1ZTo6aXNGdW5jdGlvbigpIGNvbnN0CiAgICAgICAgIFJlZjxJbnNw
ZWN0b3JPYmplY3Q+IGluc3BlY3Rvck9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7
CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSB2YWx1ZS5nZXRPYmplY3QoKTsKICAgICAgICAg
UHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhzY3JpcHRTdGF0ZSk7Ci0gICAgICAgIG9i
amVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIHNjcmlwdFN0
YXRlLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAg
b2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgc2NyaXB0
U3RhdGUsIHByb3BlcnR5TmFtZXMsIEVudWVtcmF0aW9uTW9kZSgpKTsKICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAg
ICBjb25zdCBJZGVudGlmaWVyJiBuYW1lID0gcHJvcGVydHlOYW1lc1tpXTsKICAgICAgICAgICAg
IEpTVmFsdWUgcHJvcGVydHlWYWx1ZSA9IG9iamVjdC0+Z2V0KHNjcmlwdFN0YXRlLCBuYW1lKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0
aW9uUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9j
YXRpb25Qcm9maWxlLmgKaW5kZXggOWE5ZGIwYmM3MGI5ZjEzNWY2NWRkMmQ3OTZkZTY1Mjg5NmFl
MGZiMS4uMzgwMTQ3NjQ4MzE0NTM5ZTZhYzMwZGVmMGJlODNjNzdhZDM2Njk1MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Q
cm9maWxlLmgKQEAgLTExOCw3ICsxMTgsNyBAQCBjbGFzcyBPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZSB7CiAKICAgICAgICAgc2l6ZV90IGNvdW50ID0gMDsKICAgICAgICAgUHJvcGVydHlOYW1lQXJy
YXkgcHJvcGVydHlOYW1lQXJyYXkoJnZtKTsKLSAgICAgICAgcHJvdG90eXBlLT5zdHJ1Y3R1cmUo
KS0+Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUodm0sIHByb3BlcnR5TmFtZUFycmF5LCBF
eGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgcHJvdG90eXBlLT5zdHJ1Y3R1cmUo
KS0+Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUodm0sIHByb3BlcnR5TmFtZUFycmF5LCBF
bnVlbXJhdGlvbk1vZGUoKSk7CiAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5RGF0YTo6UHJvcGVy
dHlOYW1lVmVjdG9yJiBwcm9wZXJ0eU5hbWVWZWN0b3IgPSBwcm9wZXJ0eU5hbWVBcnJheS5kYXRh
KCktPnByb3BlcnR5TmFtZVZlY3RvcigpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHByb3BlcnR5TmFtZVZlY3Rvci5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgSlNWYWx1ZSB2
YWx1ZSA9IHByb3RvdHlwZS0+Z2V0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWVWZWN0b3JbaV0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmlu
ZGV4IDg5OTc2NDIyODgxOWJjYzVmNGQyMTQwOWViOTMxNTkzMTBmOTliODQuLjZmOGVjZDk5MTQy
YjYyYTgzNTMzNWY0MzM4MmRhODA2ZGQ5YTFkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTc1Myw3ICs3NTMsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU29ydChFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAg
CiAgICAgUHJvcGVydHlOYW1lQXJyYXkgbmFtZUFycmF5KGV4ZWMpOwotICAgIHRoaXNPYmotPm1l
dGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRQcm9wZXJ0eU5hbWVzKHRoaXNPYmosIGV4ZWMsIG5h
bWVBcnJheSwgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgdGhpc09iai0+bWV0aG9k
VGFibGUoZXhlYy0+dm0oKSktPmdldFByb3BlcnR5TmFtZXModGhpc09iaiwgZXhlYywgbmFtZUFy
cmF5LCBFbnVtZXJhdGlvbk1vZGUoRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpOwog
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRW51bWVyYXRpb25Nb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FbnVtZXJhdGlvbk1vZGUuaAppbmRleCA0ZGJhZjdiNDE3ZGM3MDhmYmM2YzcyNTA5ZjE5ZjU0
NGYwMWI5NmJkLi5jMGNmMzgwZDk4YjlkNTdiZWRiMGE5NzcxMWJiNWEzMTU2NTE5NTVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FbnVtZXJhdGlvbk1vZGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FbnVtZXJhdGlvbk1vZGUuaApAQCAt
MjgsNjMgKzI4LDQ2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1lbnVtIEVudW1lcmF0aW9uTW9k
ZSB7Ci0gICAgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcywKLSAgICBFeGNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0LAotICAgIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMs
Ci0gICAgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZFNraXBKU09iamVjdAorZW51bSBjbGFz
cyBEb250RW51bVByb3BlcnRpZXNNb2RlIHsKKyAgICBJbmNsdWRlLAorICAgIEV4Y2x1ZGUKIH07
CiAKLWlubGluZSBib29sIHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoRW51bWVyYXRp
b25Nb2RlIG1vZGUpCi17Ci0gICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBJbmNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzOgotICAgIGNhc2UgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZFNr
aXBKU09iamVjdDoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAg
cmV0dXJuIGZhbHNlOworZW51bSBjbGFzcyBKU09iamVjdFByb3BlcnRpZXNNb2RlIHsKKyAgICBJ
bmNsdWRlLAorICAgIEV4Y2x1ZGUKK307CisKK2NsYXNzIEVudW1lcmF0aW9uTW9kZSB7CitwdWJs
aWM6CisgICAgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01vZGUgZG9udEVudW1Q
cm9wZXJ0aWVzTW9kZSA9IERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4Y2x1ZGUsIEpTT2JqZWN0
UHJvcGVydGllc01vZGUganNPYmplY3RQcm9wZXJ0aWVzTW9kZSA9IEpTT2JqZWN0UHJvcGVydGll
c01vZGU6OkluY2x1ZGUpCisgICAgICAgIDogbV9kb250RW51bVByb3BlcnRpZXNNb2RlKGRvbnRF
bnVtUHJvcGVydGllc01vZGUpCisgICAgICAgICwgbV9qc09iamVjdFByb3BlcnRpZXNNb2RlKGpz
T2JqZWN0UHJvcGVydGllc01vZGUpCisgICAgewogICAgIH0KLX0KIAotaW5saW5lIGJvb2wgc2hv
dWxkRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyhFbnVtZXJhdGlvbk1vZGUgbW9kZSkKLXsKLSAg
ICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXM6Ci0g
ICAgY2FzZSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0OgotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
RW51bWVyYXRpb25Nb2RlKGNvbnN0IEVudW1lcmF0aW9uTW9kZSYgbW9kZSwgSlNPYmplY3RQcm9w
ZXJ0aWVzTW9kZSBqc09iamVjdFByb3BlcnRpZXNNb2RlKQorICAgICAgICA6IG1fZG9udEVudW1Q
cm9wZXJ0aWVzTW9kZShtb2RlLm1fZG9udEVudW1Qcm9wZXJ0aWVzTW9kZSkKKyAgICAgICAgLCBt
X2pzT2JqZWN0UHJvcGVydGllc01vZGUoanNPYmplY3RQcm9wZXJ0aWVzTW9kZSkKKyAgICB7CiAg
ICAgfQotfQogCi1pbmxpbmUgYm9vbCBzaG91bGRJbmNsdWRlSlNPYmplY3RQcm9wZXJ0eU5hbWVz
KEVudW1lcmF0aW9uTW9kZSBtb2RlKQotewotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2Ug
SW5jbHVkZURvbnRFbnVtUHJvcGVydGllczoKLSAgICBjYXNlIEV4Y2x1ZGVEb250RW51bVByb3Bl
cnRpZXM6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgRXhjbHVkZURvbnRFbnVtUHJv
cGVydGllc0FuZFNraXBKU09iamVjdDoKLSAgICBjYXNlIEluY2x1ZGVEb250RW51bVByb3BlcnRp
ZXNBbmRTa2lwSlNPYmplY3Q6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBBZGQgb3Ro
ZXIgY29uc3RydWN0b3JzIGFzIG5lZWRlZCBmb3IgY29udmVuaWVuY2UKKworICAgIGJvb2wgaW5j
bHVkZURvbnRFbnVtUHJvcGVydGllcygpCisgICAgeworICAgICAgICByZXR1cm4gbV9kb250RW51
bVByb3BlcnRpZXNNb2RlID09IERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGU7CiAgICAg
fQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KIAotaW5s
aW5lIEVudW1lcmF0aW9uTW9kZSBtb2RlVGhhdFNraXBzSlNPYmplY3QoRW51bWVyYXRpb25Nb2Rl
IG1vZGUpCi17Ci0gICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBJbmNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzOgotICAgICAgICByZXR1cm4gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZFNr
aXBKU09iamVjdDsKLSAgICBjYXNlIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXM6Ci0gICAgICAg
IHJldHVybiBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0OwotICAgIGNh
c2UgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZFNraXBKU09iamVjdDoKLSAgICBjYXNlIElu
Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3Q6Ci0gICAgICAgIHJldHVybiBt
b2RlOworICAgIGJvb2wgaW5jbHVkZUpTT2JqZWN0UHJvcGVydGllcygpCisgICAgeworICAgICAg
ICByZXR1cm4gbV9qc09iamVjdFByb3BlcnRpZXNNb2RlID09IEpTT2JqZWN0UHJvcGVydGllc01v
ZGU6OkluY2x1ZGU7CiAgICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBtb2RlOwotfQorCitwcml2YXRlOgorICAgIERvbnRFbnVtUHJvcGVydGllc01vZGUgbV9kb250
RW51bVByb3BlcnRpZXNNb2RlOworICAgIEpTT2JqZWN0UHJvcGVydGllc01vZGUgbV9qc09iamVj
dFByb3BlcnRpZXNNb2RlOworfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5o
CmluZGV4IDBjODk5NWM3YjNhZTRhMmQxMmMzYjFhMTY5ZmM0NjhhMWViZWZiYmEuLjcxOWRjODgw
MGM1NWJkMTBmZmFjOWVjZDhkMWNjODkyYTExNDk0MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaApAQCAtOTEs
NyArOTEsNyBAQAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGFycmF5LmFkZChJZGVu
dGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTsKICAgICB9Ci0gICAgaWYgKHNob3VsZEluY2x1ZGVEb250
RW51bVByb3BlcnRpZXMobW9kZSkgJiYgIXRoaXNPYmplY3QtPm92ZXJyb2RlVGhpbmdzKCkpIHsK
KyAgICBpZiAobW9kZS5pbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkgJiYgIXRoaXNPYmplY3Qt
Pm92ZXJyb2RlVGhpbmdzKCkpIHsKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5jYWxsZWUpOwogICAgICAgICBhcnJheS5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxl
bmd0aCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApp
bmRleCAyMGQ0OWRiOGJhMmUyYzU4NTUwNjY3NDllZjlkZjUxNTU0MTU3NjgxLi5jNmY5MjEwYTUx
ZWE5N2YzM2NiODVmMTQ0Y2Y1MTY3Y2MzYTc1Y2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmNwcApAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgSlNBcnJheTo6Z2V0
T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvCiB7CiAgICAgSlNBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5Kj4ob2Jq
ZWN0KTsKIAotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQor
ICAgIGlmIChtb2RlLmluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgcHJvcGVy
dHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CiAKICAgICBKU09iamVj
dDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZXMsIG1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyLmNwcAppbmRleCBjMWNhZDEwNWM3ZTBkNWFkN2VmZDI5NmEzYmVmMDY5NmM5NWY2MDA3
Li42MmFiODlhM2RlMjRiNGEzN2U1NGM5NGJlYzIyYzNiNmQ0MjRlYmYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcApAQCAtMTE5LDcgKzEx
OSw3IEBAIHZvaWQgSlNBcnJheUJ1ZmZlcjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKAog
ewogICAgIEpTQXJyYXlCdWZmZXIqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheUJ1ZmZlcio+
KG9iamVjdCk7CiAgICAgCi0gICAgaWYgKHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMo
bW9kZSkpCisgICAgaWYgKG1vZGUuaW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKQogICAgICAg
ICBhcnJheS5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ5dGVMZW5ndGgpOwogICAgIAogICAg
IEJhc2U6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBhcnJh
eSwgbW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKaW5kZXggMGExMTZjMDYwNzhiZDgwMDNiNmRmMjllNzM1MjViOGFjYTRl
MTQ2NS4uYTMzOThkYmFhZTljZWMwNjJlODc5MmZhMDkzYmFjODBhMzUyZDBhMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcApA
QCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgSlNBcnJheUJ1ZmZlclZpZXc6OmdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lcygKICAgICBKU0FycmF5QnVmZmVyVmlldyogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU0FycmF5QnVmZmVyVmlldyo+KG9iamVjdCk7CiAgICAgCiAgICAgLy8gbGVuZ3RoL2J5dGVP
ZmZzZXQvYnl0ZUxlbmd0aCBhcmUgRG9udEVudW0sIGF0IGxlYXN0IGluIEZpcmVmb3guCi0gICAg
aWYgKHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpIHsKKyAgICBpZiAobW9k
ZS5pbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpIHsKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5ieXRlT2Zmc2V0KTsKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5ieXRlTGVuZ3RoKTsKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5idWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcAppbmRleCAxYjk4NWFlYWI1MWUzYmE0ODViZGY5YTQwODM2ZDEwZDM0OGViNzc2
Li43YzNhYzJiZjY4ZTIzNjE0MGUzZGQyZmYzNGM2ZDYxNTViNTJkNjBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtMzY5LDcgKzM2OSw3IEBA
IGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiB2b2lkIEpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKICAgICBK
U0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAg
IGlmICghdGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSAmJiBzaG91bGRJbmNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKSB7CisgICAgaWYgKCF0aGlzT2JqZWN0LT5pc0hv
c3RPckJ1aWx0aW5GdW5jdGlvbigpICYmIG1vZGUuaW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygp
KSB7CiAgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSBw
cm90b3R5cGUgaGFzIGJlZW4gcmVpZmllZC4KICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhp
c09iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5k
ZXggOWFiOWRjMjc3N2JhYmY4OTYzODFkY2Y0MDJjMDEzMDkwZjk1ZTMwYy4uYjNmMWFhMWVjYjYz
ZDdjMGViMDQ5OTE4OTJkYjdhMzIyZTljMGQwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uaApAQCAtMTM5LDcgKzEzOSw3IEBAIGNsYXNzIEpTRnVuY3Rpb24g
OiBwdWJsaWMgSlNDYWxsZWUgewogICAgIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKiBjcmVhdGVB
bGxvY2F0aW9uUHJvZmlsZShFeGVjU3RhdGUqLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpOwogCiAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJh
eSYsIEVudW1lcmF0aW9uTW9kZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIHN0
YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlID0gRW51ZW1yYXRpb25Nb2Rl
KCkpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3Vs
ZFRocm93KTsKIAogICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lu
bGluZXMuaAppbmRleCA0MDFiOGRhMmQ4NDQ3NjJlNWEzY2U2Y2FmYmZlZDM2MDI5NDBmN2ZjLi4y
MGQ5NWFjYmJmNzE4OTBhMzQ1NDk2MTI5MjllN2M4NDg0N2UwNDk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0lubGluZXMuaApAQCAtNDE1LDcgKzQxNSw3IEBACiB7CiAgICAgSlNHZW5lcmljVHlwZWRB
cnJheVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihv
YmplY3QpOwogICAgIAotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1v
ZGUpKQorICAgIGlmIChtb2RlLmluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAg
YXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpOwogICAgIAogICAgIEJhc2U6
OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBhcnJheSwgbW9k
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxF
bnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxF
bnZpcm9ubWVudC5jcHAKaW5kZXggYzExMDdlNmQ2NjY0NDVhYzQ5ODJjZTVkZTllOTBmOThkOTFl
ZjkwZS4uZTc5YzI5Y2YxY2I4ZjIxM2U5NGJjOTcwNmYxMTk5ZmM3YmQ0MTI2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50
LmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93
bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhCiAgICAgICAg
IENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPm1f
bG9jayk7CiAgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGVuZCA9IHRoaXNPYmpl
Y3QtPnN5bWJvbFRhYmxlKCktPmVuZChsb2NrZXIpOwogICAgICAgICBmb3IgKFN5bWJvbFRhYmxl
OjpNYXA6Oml0ZXJhdG9yIGl0ID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+YmVnaW4obG9j
a2VyKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAoaXQtPnZhbHVlLmdldEF0
dHJpYnV0ZXMoKSAmIERvbnRFbnVtICYmICFzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KG1vZGUpKQorICAgICAgICAgICAgaWYgKGl0LT52YWx1ZS5nZXRBdHRyaWJ1dGVzKCkgJiBEb250
RW51bSAmJiAhbW9kZS5pbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoIXRoaXNPYmplY3QtPmlzVmFsaWQoaXQtPnZh
bHVlLnNjb3BlT2Zmc2V0KCkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAppbmRleCBiZGI4MjFjZGY1NjQ4
MGQ2OGRjMWM0ZGEyZWQwNTZjYjU1ODFlMWE5Li5kZTRmYWQxZTZjMDczZDAxYTFmMjg2M2U3Yjc0
Yjc2NTc2MzU1MzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09OT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2Jq
ZWN0LmNwcApAQCAtNDkwLDcgKzQ5MCw3IEBAIGJvb2wgU3RyaW5naWZpZXI6OkhvbGRlcjo6YXBw
ZW5kTmV4dFByb3BlcnR5KFN0cmluZ2lmaWVyJiBzdHJpbmdpZmllciwgU3RyaW5nQnVpCiAgICAg
ICAgICAgICAgICAgbV9wcm9wZXJ0eU5hbWVzID0gc3RyaW5naWZpZXIubV9hcnJheVJlcGxhY2Vy
UHJvcGVydHlOYW1lcy5kYXRhKCk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAg
ICBQcm9wZXJ0eU5hbWVBcnJheSBvYmplY3RQcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgICAgICAg
ICAgICAgIG1fb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG1fb2Jq
ZWN0LmdldCgpLCBleGVjLCBvYmplY3RQcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICBtX29iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3du
UHJvcGVydHlOYW1lcyhtX29iamVjdC5nZXQoKSwgZXhlYywgb2JqZWN0UHJvcGVydHlOYW1lcywg
RW51ZW1yYXRpb25Nb2RlKCkpOwogICAgICAgICAgICAgICAgIG1fcHJvcGVydHlOYW1lcyA9IG9i
amVjdFByb3BlcnR5TmFtZXMucmVsZWFzZURhdGEoKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIG1fc2l6ZSA9IG1fcHJvcGVydHlOYW1lcy0+cHJvcGVydHlOYW1lVmVjdG9yKCkuc2l6ZSgp
OwpAQCAtNzA3LDcgKzcwNyw3IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhK
U1ZhbHVlIHVuZmlsdGVyZWQpCiAgICAgICAgICAgICAgICAgb2JqZWN0U3RhY2sucHVzaChvYmpl
Y3QpOwogICAgICAgICAgICAgICAgIGluZGV4U3RhY2suYXBwZW5kKDApOwogICAgICAgICAgICAg
ICAgIHByb3BlcnR5U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYykpOwotICAg
ICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhv
YmplY3QsIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEV4Y2x1ZGVEb250RW51bVByb3Bl
cnRpZXMpOworICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJv
cGVydHlOYW1lcyhvYmplY3QsIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEVudWVtcmF0
aW9uTW9kZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG9iamVjdFN0YXJ0VmlzaXRN
ZW1iZXI6CiAgICAgICAgICAgICBGQUxMVEhST1VHSDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCA1MjNkMTJhOTIwM2I3MDMzOGMzMGQxNTI4ZDUwZmYx
YmE2MDI2MTRmLi5lMWZmZTViMWU1MDBjNGQwYWFhYWUzNTg0Zjc1NjZlMmNlMDcxOGMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC03OCw3ICs3OCw3
IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBnZXRDbGFzc1Byb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICBmb3IgKGF1dG8gaXRlciA9IHRhYmxlLT5iZWdpbigpOyBpdGVyICE9IHRhYmxlLT5lbmQo
KTsgKytpdGVyKSB7Ci0gICAgICAgICAgICBpZiAoKCEoaXRlci0+YXR0cmlidXRlcygpICYgRG9u
dEVudW0pIHx8IHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpICYmICEoKGl0
ZXItPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSAmJiBkaWRSZWlmeSkpCisgICAg
ICAgICAgICBpZiAoKCEoaXRlci0+YXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IG1vZGUuaW5j
bHVkZURvbnRFbnVtUHJvcGVydGllcygpKSAmJiAhKChpdGVyLT5hdHRyaWJ1dGVzKCkgJiBCdWls
dGluT3JGdW5jdGlvbikgJiYgZGlkUmVpZnkpKQogICAgICAgICAgICAgICAgIHByb3BlcnR5TmFt
ZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBpdGVyLmtleSgpKSk7CiAgICAgICAg
IH0KICAgICB9CkBAIC0xNTE4LDcgKzE1MTgsNyBAQCB2b2lkIEpTT2JqZWN0OjpnZXRQcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQQog
CiB2b2lkIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0
aW9uTW9kZSBtb2RlKQogewotICAgIGlmICghc2hvdWxkSW5jbHVkZUpTT2JqZWN0UHJvcGVydHlO
YW1lcyhtb2RlKSkgeworICAgIGlmICghbW9kZS5pbmNsdWRlSlNPYmplY3RQcm9wZXJ0aWVzKCkp
IHsKICAgICAgICAgLy8gV2Ugc3RpbGwgaGF2ZSB0byBnZXQgbm9uLWluZGV4ZWQgcHJvcGVydGll
cyBmcm9tIGFueSBzdWJjbGFzc2VzIG9mIEpTT2JqZWN0IHRoYXQgaGF2ZSB0aGVtLgogICAgICAg
ICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Ob25JbmRleFByb3BlcnR5
TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMTU3Miw3ICsxNTcyLDcgQEAgdm9pZCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1l
cyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmEKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gbWFwLT5lbmQoKTsKICAgICAgICAgICAgIGZvciAoU3BhcnNlQXJyYXlWYWx1ZU1hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAg
ICAgICAgICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpIHx8ICEo
aXQtPnZhbHVlLmF0dHJpYnV0ZXMgJiBEb250RW51bSkpCisgICAgICAgICAgICAgICAgaWYgKG1v
ZGUuaW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpIHx8ICEoaXQtPnZhbHVlLmF0dHJpYnV0ZXMg
JiBEb250RW51bSkpCiAgICAgICAgICAgICAgICAgICAgIGtleXMudW5jaGVja2VkQXBwZW5kKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihpdC0+a2V5KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAKQEAgLTE1OTQsNyArMTU5NCw3IEBAIHZvaWQgSlNPYmplY3Q6OmdldE93bk5vbkluZGV4UHJv
cGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByCiB7CiAgICAg
Z2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKGV4ZWMsIG9iamVjdC0+Y2xhc3NJbmZvKCksIHByb3BlcnR5
TmFtZXMsIG1vZGUsIG9iamVjdC0+c3RhdGljRnVuY3Rpb25zUmVpZmllZCgpKTsKIAotICAgIGlm
ICghc2hvdWxkSW5jbHVkZUpTT2JqZWN0UHJvcGVydHlOYW1lcyhtb2RlKSkKKyAgICBpZiAoIW1v
ZGUuaW5jbHVkZUpTT2JqZWN0UHJvcGVydGllcygpKQogICAgICAgICByZXR1cm47CiAgICAgCiAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTI4MDAsNyArMjgwMCw3IEBAIHZvaWQgSlNPYmpl
Y3Q6OmdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wCiB2b2lkIEpTT2JqZWN0OjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0
eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwotICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZVRoYXRTa2lwc0pTT2JqZWN0KG1vZGUpKTsKKyAg
ICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZShtb2RlLCBKU09iamVjdFByb3BlcnRp
ZXNNb2RlOjpFeGNsdWRlKSk7CiAKICAgICBpZiAob2JqZWN0LT5wcm90b3R5cGUoKS5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaAppbmRleCAxNDYwY2VhNjQ2MThlZjYy
NjBjY2FmODE0ZGNmYzJmMmNjOWMxM2RmLi5iNDJlOWY4ODk4ZjQ0YzU5OWE2YWJmYmQxMmMxN2I5
YTdhNTQwZTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUVudW1lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaApAQCAtMTI2LDEzICsxMjYsMTMgQEAgaW5saW5l
IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogcHJvcGVydHlOYW1lRW51bWVyYXRvcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWMKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4
ZWMpOwogCiAgICAgaWYgKHN0cnVjdHVyZS0+Y2FuQWNjZXNzUHJvcGVydGllc1F1aWNrbHkoKSAm
JiBpbmRleGVkTGVuZ3RoID09IGJhc2UtPmdldEFycmF5TGVuZ3RoKCkpIHsKLSAgICAgICAgYmFz
ZS0+bWV0aG9kVGFibGUodm0pLT5nZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKGJhc2UsIGV4ZWMs
IHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAgICBiYXNl
LT5tZXRob2RUYWJsZSh2bSktPmdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoYmFzZSwgZXhlYywg
cHJvcGVydHlOYW1lcywgRW51ZW1yYXRpb25Nb2RlKCkpOwogCiAgICAgICAgIG51bWJlclN0cnVj
dHVyZVByb3BlcnRpZXMgPSBwcm9wZXJ0eU5hbWVzLnNpemUoKTsKIAotICAgICAgICBiYXNlLT5t
ZXRob2RUYWJsZSh2bSktPmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKGJhc2UsIGV4ZWMsIHByb3Bl
cnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAgICBiYXNlLT5tZXRo
b2RUYWJsZSh2bSktPmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKGJhc2UsIGV4ZWMsIHByb3BlcnR5
TmFtZXMsIEVudWVtcmF0aW9uTW9kZSgpKTsKICAgICB9IGVsc2UKLSAgICAgICAgYmFzZS0+bWV0
aG9kVGFibGUodm0pLT5nZXRQcm9wZXJ0eU5hbWVzKGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZXMs
IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAgICBiYXNlLT5tZXRob2RUYWJsZSh2
bSktPmdldFByb3BlcnR5TmFtZXMoYmFzZSwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51ZW1yYXRp
b25Nb2RlKCkpOwogCiAgICAgQVNTRVJUKHByb3BlcnR5TmFtZXMuc2l6ZSgpIDwgVUlOVDMyX01B
WCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9s
VGFibGVPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xU
YWJsZU9iamVjdC5jcHAKaW5kZXggMmIwMTg2MmQ2YTQ5ZDFhMGUwNDY2MDU0MzI0MzQ0OTljMDJl
OWM3YS4uMTQxMTVkOWYzYjNhNTFkMTFkMDhlMTk5MjhkOGZmM2Q3ZDc1ZTMyMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5j
cHAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXQKICAgICAgICAgZm9y
IChTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxl
KCktPmJlZ2luKGxvY2tlcik7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgaWYgKGl0
LT5rZXktPmlzU3ltYm9sKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICBpZiAoIShpdC0+dmFsdWUuZ2V0QXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IHNob3VsZElu
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpCisgICAgICAgICAgICBpZiAoIShpdC0+dmFs
dWUuZ2V0QXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IG1vZGUuaW5jbHVkZURvbnRFbnVtUHJv
cGVydGllcygpKQogICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6
OmZyb21VaWQoZXhlYywgaXQtPmtleS5nZXQoKSkpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmlu
ZGV4IDc0ZGI0OGI4YjY3MGMzNTJmMDI2NTU1NmRhMjA1MWRiNDkwZDU4NWMuLjc3MzljMzBiMTEz
NzEwNzVhNzFkODIzYTg1YjlhZWM3Mzk1OTczNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTIwNyw3ICsyMDcsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJv
cGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZQogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CiAgICAgUHJvcGVydHlO
YW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMt
PnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgSW5j
bHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1l
cmF0aW9uTW9kZShEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSk7CiAgICAgSlNBcnJh
eSogbmFtZXMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOwogICAgIHNpemVfdCBudW1Q
cm9wZXJ0aWVzID0gcHJvcGVydGllcy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBudW1Qcm9wZXJ0aWVzOyBpKyspCkBAIC0yMjIsNyArMjIyLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcktleXMoRXhlY1N0YXRlKiBleGVjKQogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc051bGwoKSk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAg
ICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9i
amVjdCwgZXhlYywgcHJvcGVydGllcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAg
b2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmpl
Y3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudWVtcmF0aW9uTW9kZSgpKTsKICAgICBKU0FycmF5KiBr
ZXlzID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKICAgICBzaXplX3QgbnVtUHJvcGVy
dGllcyA9IHByb3BlcnRpZXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVt
UHJvcGVydGllczsgaSsrKQpAQCAtMzMzLDcgKzMzMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMp
CiBzdGF0aWMgSlNWYWx1ZSBkZWZpbmVQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIG9iamVjdCwgSlNPYmplY3QqIHByb3BlcnRpZXMpCiB7CiAgICAgUHJvcGVydHlOYW1lQXJy
YXkgcHJvcGVydHlOYW1lcyhleGVjKTsKLSAgICBhc09iamVjdChwcm9wZXJ0aWVzKS0+bWV0aG9k
VGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMoYXNPYmplY3QocHJvcGVydGll
cyksIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAg
IGFzT2JqZWN0KHByb3BlcnRpZXMpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJv
cGVydHlOYW1lcyhhc09iamVjdChwcm9wZXJ0aWVzKSwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51
ZW1yYXRpb25Nb2RlKCkpOwogICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydHlOYW1l
cy5zaXplKCk7CiAgICAgVmVjdG9yPFByb3BlcnR5RGVzY3JpcHRvcj4gZGVzY3JpcHRvcnM7CiAg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgbWFya0J1ZmZlcjsKQEAgLTQwMCw3ICs0MDAsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yU2VhbChFeGVjU3Rh
dGUqIGV4ZWMpCiAKICAgICAvLyAyLiBGb3IgZWFjaCBuYW1lZCBvd24gcHJvcGVydHkgbmFtZSBQ
IG9mIE8sCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBvYmpl
Y3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwg
ZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgb2JqZWN0
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4
ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3BlcnRpZXNNb2RlOjpJ
bmNsdWRlKSk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHBy
b3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0
b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAg
ICAgICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbR2V0T3du
UHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAuCkBAIC00MzcsNyArNDM3LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZShF
eGVjU3RhdGUqIGV4ZWMpCiAKICAgICAvLyAyLiBGb3IgZWFjaCBuYW1lZCBvd24gcHJvcGVydHkg
bmFtZSBQIG9mIE8sCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAg
ICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9i
amVjdCwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAg
b2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmpl
Y3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3BlcnRpZXNN
b2RlOjpJbmNsdWRlKSk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IHByb3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3Rf
aXRlcmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikg
ewogICAgICAgICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtb
R2V0T3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAuCkBAIC00ODUsNyAr
NDg1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rvcklz
U2VhbGVkKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIC8vIDIuIEZvciBlYWNoIG5hbWVkIG93biBw
cm9wZXJ0eSBuYW1lIFAgb2YgTywKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4
ZWMpOwotICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5
TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5h
bWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJv
cGVydGllc01vZGU6OkluY2x1ZGUpKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRl
cmF0b3IgZW5kID0gcHJvcGVydGllcy5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5
Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBpdGVyICE9IGVuZDsg
KytpdGVyKSB7CiAgICAgICAgIC8vIGEuIExldCBkZXNjIGJlIHRoZSByZXN1bHQgb2YgY2FsbGlu
ZyB0aGUgW1tHZXRPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBPIHdpdGggUC4KQEAg
LTUxNSw3ICs1MTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0
cnVjdG9ySXNGcm96ZW4oRXhlY1N0YXRlKiBleGVjKQogCiAgICAgLy8gMi4gRm9yIGVhY2ggbmFt
ZWQgb3duIHByb3BlcnR5IG5hbWUgUCBvZiBPLAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3Bl
cnRpZXMoZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3du
UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVBy
b3BlcnRpZXMpOworICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blBy
b3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGUoRG9u
dEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpOwogICAgIFByb3BlcnR5TmFtZUFycmF5Ojpj
b25zdF9pdGVyYXRvciBlbmQgPSBwcm9wZXJ0aWVzLmVuZCgpOwogICAgIGZvciAoUHJvcGVydHlO
YW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0aWVzLmJlZ2luKCk7IGl0ZXIg
IT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgLy8gYS4gTGV0IGRlc2MgYmUgdGhlIHJlc3VsdCBv
ZiBjYWxsaW5nIHRoZSBbW0dldE93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0
aCBQLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAK
aW5kZXggNGQ5ZDBiMjdlNGQwYzhjOTFmOWZlYjQ1YTFkNTRlNTk1ZDMzZDUxOS4uMjVjODU4NWRm
N2Y1ODhlNjNlZjM4ODE5OGQ3ZWZmN2MyMmViNTJlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCkBAIC0xMDUsMjEgKzEwNSwyMSBAQCBib29s
IFJlZ0V4cE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcgogCiB2b2lkIFJlZ0V4cE9iamVjdDo6Z2V0T3duTm9uSW5kZXhQ
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewotICAgIGlm
IChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQorICAgIGlmIChtb2RlLmlu
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxhc3RJbmRleCk7CiAgICAgQmFzZTo6Z2V0T3duTm9uSW5kZXhQ
cm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKIHZv
aWQgUmVnRXhwT2JqZWN0OjpnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9u
TW9kZSBtb2RlKQogewotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1v
ZGUpKQorICAgIGlmIChtb2RlLmluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAg
cHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxhc3RJbmRleCk7CiAgICAg
QmFzZTo6Z2V0UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUp
OwogfQogCiB2b2lkIFJlZ0V4cE9iamVjdDo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlO
YW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7Ci0gICAgaWYgKHNob3VsZEluY2x1ZGVEb250
RW51bVByb3BlcnRpZXMobW9kZSkpCisgICAgaWYgKG1vZGUuaW5jbHVkZURvbnRFbnVtUHJvcGVy
dGllcygpKQogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCku
bGFzdEluZGV4KTsKICAgICBCYXNlOjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ09iamVjdC5jcHAKaW5kZXggNTAwMWJjYzRlMWI3ZTM3OTNlZDI2ZTE0MjBh
ODBhNjA0NjhlMTNjNi4uMjU1NjkwZmY0OGM4ZGIwNzQyNTViZTk5MzRhOTZhNDcyMjY1OWM2MSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCkBA
IC0xNTAsNyArMTUwLDcgQEAgdm9pZCBTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXIKICAgICBpbnQgc2l6ZSA9
IHRoaXNPYmplY3QtPmludGVybmFsVmFsdWUoKS0+bGVuZ3RoKCk7CiAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6
OmZyb20oZXhlYywgaSkpOwotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KG1vZGUpKQorICAgIGlmIChtb2RlLmluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAg
ICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CiAgICAg
cmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZXMsIG1vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5jcHAKaW5kZXggM2I4YWUxY2U3MzViYjI1ZTc3YmQzMTE4ODEzMjBjZGNjNzJhMjUx
NC4uNGNiMDE3NzNlMTcyZjE3YTJhZTZlZGU0MzE0N2EzZDEwMDhkMzg2OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC05MzksNyArOTM5LDcgQEAg
dm9pZCBTdHJ1Y3R1cmU6OmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKFZNJiB2bSwgUHJv
cGVydHlOYW1lQXJyYXkmIHByb3BlcnQKICAgICBQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBlbmQg
PSBwcm9wZXJ0eVRhYmxlKCktPmVuZCgpOwogICAgIGZvciAoUHJvcGVydHlUYWJsZTo6aXRlcmF0
b3IgaXRlciA9IHByb3BlcnR5VGFibGUoKS0+YmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikg
ewogICAgICAgICBBU1NFUlQoaGFzTm9uRW51bWVyYWJsZVByb3BlcnRpZXMoKSB8fCAhKGl0ZXIt
PmF0dHJpYnV0ZXMgJiBEb250RW51bSkpOwotICAgICAgICBpZiAoIWl0ZXItPmtleS0+aXNTeW1i
b2woKSAmJiAoIShpdGVyLT5hdHRyaWJ1dGVzICYgRG9udEVudW0pIHx8IHNob3VsZEluY2x1ZGVE
b250RW51bVByb3BlcnRpZXMobW9kZSkpKSB7CisgICAgICAgIGlmICghaXRlci0+a2V5LT5pc1N5
bWJvbCgpICYmICghKGl0ZXItPmF0dHJpYnV0ZXMgJiBEb250RW51bSkgfHwgbW9kZS5pbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKCkpKSB7CiAgICAgICAgICAgICBpZiAoa25vd25VbmlxdWUpCiAg
ICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGRLbm93blVuaXF1ZShpdGVyLT5rZXkpOwog
ICAgICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
RGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNw
cAppbmRleCBkZjRkYzc4NjJkMmRhYWE5ZjJiNjc2ZDFlZDMxNzJhMmYzZWFmZDI5Li5kZjVkYTY4
YWJlZTE0MjFlNmYxNTFhNDhmNjY1MTAwOWE1MjBjYjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9EaWN0aW9uYXJ5LmNwcApAQCAtNjMsNyArNjMsNyBAQCBib29sIERpY3Rpb25hcnk6
OmdldE93blByb3BlcnRpZXNBc1N0cmluZ0hhc2hNYXAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4m
IG1hcCkgYwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZGljdGlvbmFyeS5leGVjU3RhdGUoKTsK
IAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYyk7Ci0gICAgSlNPYmpl
Y3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1l
cyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudWVtcmF0aW9uTW9kZSgpKTsKICAgICBm
b3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdCA9IHByb3BlcnR5TmFtZXMu
YmVnaW4oKTsgaXQgIT0gcHJvcGVydHlOYW1lcy5lbmQoKTsgKytpdCkgewogICAgICAgICBTdHJp
bmcgc3RyaW5nS2V5ID0gaXQtPnN0cmluZygpOwogICAgICAgICBpZiAoc3RyaW5nS2V5LmlzRW1w
dHkoKSkKQEAgLTg4LDcgKzg4LDcgQEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXRPd25Qcm9wZXJ0eU5h
bWVzKFZlY3RvcjxTdHJpbmc+JiBuYW1lcykgY29uc3QKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBt
X2RpY3Rpb25hcnkuZXhlY1N0YXRlKCk7CiAKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0
eU5hbWVzKGV4ZWMpOwotICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgSlNP
YmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBF
bnVlbXJhdGlvbk1vZGUoKSk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBwcm9wZXJ0eU5hbWVzLmJlZ2luKCk7IGl0ICE9IHByb3BlcnR5TmFtZXMuZW5k
KCk7ICsraXQpIHsKICAgICAgICAgU3RyaW5nIHN0cmluZ0tleSA9IGl0LT5zdHJpbmcoKTsKICAg
ICAgICAgaWYgKCFzdHJpbmdLZXkuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggMDBlYTExYjQ2NGY2
MzVjNmNiZGU2NGEyNjI2NjAxNjFjYWRmOWRlNi4uYTQwZDAxYzc3ODdhOWY0YTg2MWY5YjQyNGY1
OTU2MzM5M2MzYWM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0xMjU0LDcgKzEyNTQsNyBAQCBTZXJpYWxpemF0
aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVlIGluKQogICAg
ICAgICAgICAgICAgICAgICBsZW5ndGhTdGFjay5yZW1vdmVMYXN0KCk7CiAKICAgICAgICAgICAg
ICAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjKSk7
Ci0gICAgICAgICAgICAgICAgICAgIGFycmF5LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Ob25JbmRl
eFByb3BlcnR5TmFtZXMoYXJyYXksIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEV4Y2x1
ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAgICAgICAgICAgICAgICBhcnJheS0+bWV0aG9k
VGFibGUoKS0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKGFycmF5LCBtX2V4ZWMsIHByb3Bl
cnR5U3RhY2subGFzdCgpLCBFbnVlbXJhdGlvbk1vZGUoKSk7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChwcm9wZXJ0eVN0YWNrLmxhc3QoKS5zaXplKCkpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHdyaXRlKE5vbkluZGV4UHJvcGVydGllc1RhZyk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmRleFN0YWNrLmFwcGVuZCgwKTsKQEAgLTEzMDQsNyArMTMwNCw3IEBAIFNlcmlhbGl6YXRp
b25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUgaW4pCiAgICAg
ICAgICAgICAgICAgaW5wdXRPYmplY3RTdGFjay5hcHBlbmQoaW5PYmplY3QpOwogICAgICAgICAg
ICAgICAgIGluZGV4U3RhY2suYXBwZW5kKDApOwogICAgICAgICAgICAgICAgIHByb3BlcnR5U3Rh
Y2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYykpOwotICAgICAgICAgICAgICAgIGlu
T2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGluT2JqZWN0LCBtX2V4
ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAg
ICAgICAgICAgICAgICBpbk9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1l
cyhpbk9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwgRW51ZW1yYXRpb25Nb2Rl
KCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgb2JqZWN0U3RhcnRWaXNpdE1lbWJlcjoK
ICAgICAgICAgICAgIEZBTExUSFJPVUdIOwpAQCAtMTM3Miw3ICsxMzcyLDcgQEAgU2VyaWFsaXph
dGlvblJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoSlNWYWx1ZSBpbikKICAg
ICAgICAgICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGlucHV0T2JqZWN0U3RhY2subGFz
dCgpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU01hcCo+KG9i
amVjdCkpOwogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0YWNrLmFwcGVuZChQcm9wZXJ0
eU5hbWVBcnJheShtX2V4ZWMpKTsKLSAgICAgICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RU
YWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNr
Lmxhc3QoKSwgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgICAgICAgICAgICAgICAg
IG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIG1fZXhl
YywgcHJvcGVydHlTdGFjay5sYXN0KCksIEVudWVtcmF0aW9uTW9kZSgpKTsKICAgICAgICAgICAg
ICAgICAgICAgd3JpdGUoTm9uTWFwUHJvcGVydGllc1RhZyk7CiAgICAgICAgICAgICAgICAgICAg
IGluZGV4U3RhY2suYXBwZW5kKDApOwogICAgICAgICAgICAgICAgICAgICBnb3RvIG9iamVjdFN0
YXJ0VmlzaXRNZW1iZXI7CkBAIC0xNDE2LDcgKzE0MTYsNyBAQCBTZXJpYWxpemF0aW9uUmV0dXJu
Q29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVlIGluKQogICAgICAgICAgICAg
ICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gaW5wdXRPYmplY3RTdGFjay5sYXN0KCk7CiAgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChqc0R5bmFtaWNDYXN0PEpTU2V0Kj4ob2JqZWN0KSk7CiAg
ICAgICAgICAgICAgICAgICAgIHByb3BlcnR5U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5
KG1fZXhlYykpOwotICAgICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdl
dE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBF
eGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICAgICAgb2JqZWN0LT5t
ZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbV9leGVjLCBwcm9wZXJ0
eVN0YWNrLmxhc3QoKSwgRW51ZW1yYXRpb25Nb2RlKCkpOwogICAgICAgICAgICAgICAgICAgICB3
cml0ZShOb25TZXRQcm9wZXJ0aWVzVGFnKTsKICAgICAgICAgICAgICAgICAgICAgaW5kZXhTdGFj
ay5hcHBlbmQoMCk7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb2JqZWN0U3RhcnRWaXNpdE1l
bWJlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KaW5kZXggNWI5Zjg0ZTVlYTY1MzcxMjdlMDJjYmY0YTQ2NjM5NDc0NTAyZDY4Zi4u
YzQyNmMxMWU3MzNkZWEyOGZlNzVhMTk2NDlhOWY3NjhkZTgxNjgxNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTk2OCwx
NiArOTY4LDE2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgIyBDdXN0b20gZ2V0UHJvcGVy
dHlOYW1lcyBmdW5jdGlvbiBleGlzdHMgb24gRE9NV2luZG93CiAgICAgaWYgKCRpbnRlcmZhY2VO
YW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
c3RhdGljIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9
IEpTQzo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7XG4iKTsKLSAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU0M6
OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlND
OjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7
XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRT
dHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSBtb2RlID0gSlNDOjpF
eGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldFByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25N
b2RlID0gSlNDOjpFbnVlbXJhdGlvbk1vZGUoKSk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU0M6OkpT
T2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpF
bnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudWVtcmF0aW9uTW9kZSgpKTtcbiIpOworICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldFN0cnVjdHVyZVByb3BlcnR5
TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVB
cnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVlbXJhdGlvbk1vZGUoKSk7XG4i
KTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdWludDMyX3QgZ2V0
RW51bWVyYWJsZUxlbmd0aChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqKTtcbiIpOwog
ICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyJ9
ID0gMTsKICAgICB9CiAKICAgICAjIEN1c3RvbSBnZXRPd25Qcm9wZXJ0eU5hbWVzIGZ1bmN0aW9u
CiAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21FbnVtZXJh
dGVQcm9wZXJ0eSJ9IHx8ICRpbmRleGVkR2V0dGVyRnVuY3Rpb24pIHsKLSAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6
SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6
OkVudW1lcmF0aW9uTW9kZSBtb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtc
biIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldE93
blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9w
ZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVlbXJhdGlvbk1v
ZGUoKSk7XG4iKTsKICAgICAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Ok92ZXJyaWRlc0dldFBy
b3BlcnR5TmFtZXMifSA9IDE7ICAgICAgIAogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuaAppbmRleCBm
ZjM4OGNhMDE3NjBjMTJiOTU3NTAzOWZlYzc2NDMyOTNmZTg0ZTM0Li42MWYyMWM4NjBmOWMxYjc3
ZTc1NTE5YzU3NDRlNjI4MGU0NDhhZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuaApAQCAtNTEsNyArNTEs
NyBAQCBjbGFzcyBKU0Zsb2F0NjRBcnJheSA6IHB1YmxpYyBKU0FycmF5QnVmZmVyVmlldyB7CiAg
ICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpT
Qzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBK
U0M6OkVudW1lcmF0aW9uTW9kZSBtb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KTsKKyAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9u
TW9kZSA9IEpTQzo6RW51ZW1yYXRpb25Nb2RlKCkpOwogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUg
Z2V0Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAg
ICAgRmxvYXQ2NEFycmF5KiBpbXBsKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5o
CmluZGV4IGJmMWNlNjdlMmZlM2NkY2I5N2UyMDM4N2Y1YjBlOWU1MDg5ZjI0N2YuLmI3OTNiMzVm
Y2UyZGNkOGU3NmEwMzM2NTAzNDMxNmJjZjYwOThjZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5o
CkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEpTVGVzdEV2ZW50VGFyZ2V0
IDogcHVibGljIEpTRE9NV3JhcHBlciB7CiAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKLSAgICBzdGF0aWMg
dm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSBtb2RlID0gSlND
OjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9w
ZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlO
YW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51ZW1yYXRpb25Nb2RlKCkp
OwogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIEpTQzo6
SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCos
IEpTQzo6U2xvdFZpc2l0b3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L05QX2pzb2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAK
aW5kZXggOTAwMTAxMzhhYjQ2Y2U3ZDk3NTNjYmZmMjk1ZTUzY2RmYWNkMGI1YS4uOGFiZjNmNWM5
ZTE2YTFkMzdlYWZmZWU2YWIwMzFiYTUxNmVmYTRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBf
anNvYmplY3QuY3BwCkBAIC00NDcsNyArNDQ3LDcgQEAgYm9vbCBfTlBOX0VudW1lcmF0ZShOUFAs
IE5QT2JqZWN0KiBvLCBOUElkZW50aWZpZXIqKiBpZGVudGlmaWVyLCB1aW50MzJfdCogY291bnQK
ICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgICAgIFByb3BlcnR5TmFtZUFy
cmF5IHByb3BlcnR5TmFtZXMoZXhlYyk7CiAKLSAgICAgICAgb2JqLT5pbXAtPm1ldGhvZFRhYmxl
KCktPmdldFByb3BlcnR5TmFtZXMob2JqLT5pbXAsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1
ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAgICBvYmotPmltcC0+bWV0aG9kVGFibGUoKS0+
Z2V0UHJvcGVydHlOYW1lcyhvYmotPmltcCwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51ZW1yYXRp
b25Nb2RlKCkpOwogICAgICAgICB1bnNpZ25lZCBzaXplID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHByb3BlcnR5TmFtZXMuc2l6ZSgpKTsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJl
YWxseSBjYWxsIE5QTl9NZW1BbGxvYyBidXQgdGhhdCdzIGluIFdlYktpdAogICAgICAgICBOUElk
ZW50aWZpZXIqIGlkZW50aWZpZXJzID0gc3RhdGljX2Nhc3Q8TlBJZGVudGlmaWVyKj4obWFsbG9j
KHNpemVvZihOUElkZW50aWZpZXIpICogc2l6ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfYXJyYXkuY3BwCmluZGV4IDAyMjIxOTA1YzQwZTZlZGZlZDU3OTk5ZWIyMzVmNTg5MWE3YTJl
MDguLmRjNzU4YjM1ODQ1Y2YxYmY0MmY2MWFlZDQ3NDY1ODQxMzA1MzE3Y2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBSdW50
aW1lQXJyYXk6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXIKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
CiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkpOwog
Ci0gICAgaWYgKHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpCisgICAgaWYg
KG1vZGUuaW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKQogICAgICAgICBwcm9wZXJ0eU5hbWVz
LmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKTsKIAogICAgIEpTT2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCmluZGV4IGNhZGU5ZTFlOWZkZjdiNmY2NDEwODVk
YjQ3MDNhYjg0MzM4NTNhNmQuLjIxOWJiZjU0NmViZDdmNzFjZmU3YWYyODc4OGZjZGZhOTFmODdj
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KQEAgLTEyMzEsNyArMTIzMSw3IEBA
IGJvb2wgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjplbnVtZXJhdGUodWludDMyX3Qgb2Jq
ZWN0SUQsIGRhdGFfdCYgcmVzdWx0RGF0CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAg
CiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKLSAgICBvYmplY3Qt
Pm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxl
KCktPmdldFByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFbnVlbXJh
dGlvbk1vZGUoKSk7CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXkqPiBhcnJheSA9IGFk
b3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzLnNpemUoKTsgaSsrKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAK
aW5kZXggZWQ3ZDdmNmIzMzRiMmNmZmJkYTEzNzFhMjJhNWY0OTMwOWU1YTk5Ny4uNzczMDAwYmNi
YmFhMzFkYjMxYzM5MDU0YmZiMWE1NGRiNzNmNjU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcApAQCAt
MjQwLDcgKzI0MCw3IEBAIGJvb2wgTlBKU09iamVjdDo6ZW51bWVyYXRlKE5QSWRlbnRpZmllcioq
IGlkZW50aWZpZXJzLCB1aW50MzJfdCogaWRlbnRpZmllckNvdW50CiAgICAgSlNMb2NrSG9sZGVy
IGxvY2soZXhlYyk7CiAKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMp
OwotICAgIG1fanNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMobV9qc09i
amVjdC5nZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGll
cyk7CisgICAgbV9qc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyhtX2pz
T2JqZWN0LmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFbnVlbXJhdGlvbk1vZGUoKSk7CiAK
ICAgICBOUElkZW50aWZpZXIqIG5hbWVJZGVudGlmaWVycyA9IG5wbk1lbU5ld0FycmF5PE5QSWRl
bnRpZmllcj4ocHJvcGVydHlOYW1lcy5zaXplKCkpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249958</attachid>
            <date>2015-04-01 21:00:23 -0700</date>
            <delta_ts>2015-04-02 11:54:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143276-20150402125938.patch</filename>
            <type>text/plain</type>
            <size>48655</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YjVkN2FlYWNiNTg1ZTY4ZmU0ZjRiZDEzYmY1N2VmMjU0ZWU4OGZlLi5kNzRhMGU1NmYwZGIwMTVh
MTExMGVkOGVhMWVjMzJhOWNlNmJkYjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw4OCBAQAogMjAxNS0wNC0wMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBDbGVhbiB1cCBFbnVtZXJhdGlvbk1vZGUgdG8gZWFzaWx5IGV4dGVu
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMjc2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVG8gbWFr
ZSB0aGUgZm9sbG93aW5ncyBlYXNpbHksCisgICAgICAgIDEuIEFkZGluZyBuZXcgZmxhZyBJbmNs
dWRlL0V4Y2x1ZGVTeW1ib2xzIGluIHRoZSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzIHBh
dGNoCisgICAgICAgIDIuIE1ha2UgRXhjbHVkZVN5bWJvbHMgaW1wbGljaXRseSBkZWZhdWx0IGZv
ciB0aGUgZXhpc3RpbmcgZmxhZ3MKKyAgICAgICAgd2UgZW5jYXBzdWxhdGUgRW51bWVyYXRpb25N
b2RlIGZsYWdzIGludG8gRW51bWVyYXRpb25Nb2RlIGNsYXNzLgorCisgICAgICAgIEFuZCB0aGlz
IGNsYXNzIG1hbmFnZXMgMiBmbGFncy4gTGF0ZXIgaXQgd2lsbCBiZSBleHRlbmRlZCB0byAzLgor
ICAgICAgICAxLiBEb250RW51bVByb3BlcnRpZXNNb2RlIChkZWZhdWx0IGlzIEV4Y2x1ZGUpCisg
ICAgICAgIDIuIEpTT2JqZWN0UHJvcGVydGllc01vZGUgKGRlZmF1bHQgaXMgSW5jbHVkZSkKKyAg
ICAgICAgMy4gU3ltYm9sUHJvcGVydGllc01vZGUgKGRlZmF1bHQgaXMgRXhjbHVkZSkKKyAgICAg
ICAgICAgIFN5bWJvbFByb3BlcnRpZXNNb2RlIHdpbGwgYmUgYWRkZWQgaW4gT2JqZWN0LmdldE93
blByb3BlcnR5U3ltYm9scyBwYXRjaC4KKworICAgICAgICBUaGlzIHBhdGNoIHJlcGxhY2VzIHBs
YWNlcyB1c2luZyBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzCisgICAgICAgIHRvIEVudW1lcmF0
aW9uTW9kZSgpIHZhbHVlIHdoaWNoIHJlcHJlc2VudHMgZGVmYXVsdCBtb2RlLgorCisgICAgICAg
ICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxs
YmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAqIEFQSS9KU09iamVjdFJlZi5jcHA6CisgICAgICAgIChKU09iamVjdENvcHlQcm9wZXJ0eU5h
bWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChEZXBy
ZWNhdGVkOjpqc1RvSW5zcGVjdG9yVmFsdWUpOgorICAgICAgICAqIGJ5dGVjb2RlL09iamVjdEFs
bG9jYXRpb25Qcm9maWxlLmg6CisgICAgICAgIChKU0M6Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxl
Ojpwb3NzaWJsZURlZmF1bHRQcm9wZXJ0eUNvdW50KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTb3J0KToKKyAgICAg
ICAgKiBydW50aW1lL0VudW1lcmF0aW9uTW9kZS5oOgorICAgICAgICAoSlNDOjpFbnVtZXJhdGlv
bk1vZGU6OkVudW1lcmF0aW9uTW9kZSk6CisgICAgICAgIChKU0M6OkVudW1lcmF0aW9uTW9kZTo6
aW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6OkVudW1lcmF0aW9uTW9k
ZTo6aW5jbHVkZUpTT2JqZWN0UHJvcGVydGllcyk6CisgICAgICAgIChKU0M6OnNob3VsZEluY2x1
ZGVEb250RW51bVByb3BlcnRpZXMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpzaG91bGRFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6c2hvdWxkSW5j
bHVkZUpTT2JqZWN0UHJvcGVydHlOYW1lcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Om1vZGVU
aGF0U2tpcHNKU09iamVjdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9HZW5lcmljQXJn
dW1lbnRzSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpHZW5lcmljQXJndW1lbnRzPFR5cGU+Ojpn
ZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuY3BwOgorICAg
ICAgICAoSlNDOjpKU0FycmF5OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZm
ZXI6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9KU0Fy
cmF5QnVmZmVyVmlldy5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpnZXRP
d25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5j
cHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1l
cyk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6Cisg
ICAgICAgICogcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6
OkpTTGV4aWNhbEVudmlyb25tZW50OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVy
OjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OldhbGtlcjo6d2Fs
ayk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OmdldENs
YXNzUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyk6
CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaDoKKyAgICAgICAg
KEpTQzo6cHJvcGVydHlOYW1lRW51bWVyYXRvcik6CisgICAgICAgICogcnVudGltZS9KU1N5bWJv
bFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9iamVjdDo6Z2V0
T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0
eU5hbWVzKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JLZXlzKToKKyAgICAgICAg
KEpTQzo6ZGVmaW5lUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9y
U2VhbCk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yRnJlZXplKToKKyAgICAgICAg
KEpTQzo6b2JqZWN0Q29uc3RydWN0b3JJc1NlYWxlZCk6CisgICAgICAgIChKU0M6Om9iamVjdENv
bnN0cnVjdG9ySXNGcm96ZW4pOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMp
OgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAoSlNDOjpSZWdFeHBPYmplY3Q6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAg
KiBydW50aW1lL1N0cmluZ09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6
Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKToK
KworMjAxNS0wNC0wMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwog
ICAgICAgICBJdGVyYXRvckNsb3NlIHNob3VsZCBiZSBjYWxsZWQgd2hlbiBqdW1waW5nIG92ZXIg
dGhlIHRhcmdldCBmb3Itb2YgbG9vcAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQzMTQwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0OTY2ZjFkMjcyYmE1YmJlN2Mw
MGU1NDM4MGQwMzliNGVjYThkMmI5Li40Mjc0N2U3NTZiNTRlMGZjNTVlMTFiMjYwNDRjZDE4MDdm
MDRhNGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTUtMDQtMDEgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgRW51bWVy
YXRpb25Nb2RlIHRvIGVhc2lseSBleHRlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MzI3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVzZSBkZWZhdWx0IEVudW1lcmF0aW9uTW9kZSgpLgorCisgICAg
ICAgICogYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaWN0
aW9uYXJ5OjpnZXRPd25Qcm9wZXJ0aWVzQXNTdHJpbmdIYXNoTWFwKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpY3Rpb25hcnk6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNl
cmlhbGl6ZXI6OnNlcmlhbGl6ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5Lmg6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0Lmg6CisgICAgICAgICogYnJpZGdlL05Q
X2pzb2JqZWN0LmNwcDoKKyAgICAgICAgKF9OUE5fRW51bWVyYXRlKToKKyAgICAgICAgKiBicmlk
Z2UvcnVudGltZV9hcnJheS5jcHA6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6Z2V0T3du
UHJvcGVydHlOYW1lcyk6CisKIDIwMTUtMDMtMzAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFu
ZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIE1vdmUgc3luY2hyb25vdXMgbWVz
c2FnZSBoYW5kbGVyIHRvIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwppbmRleCBkZDZlZjkxNmM2NmJkYjBiMmQ0M2E3OWE2MDllNWRhNGE5YzBhN2VjLi4wYjIx
OTcwMDY1MjcwYmM5MGM0NmE3ZjBjM2JjOGU5MWY3ZGI0NWI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTUtMDQtMDEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgRW51bWVyYXRpb25Nb2RlIHRvIGVhc2lseSBl
eHRlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
MzI3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVz
ZSBkZWZhdWx0IEVudW1lcmF0aW9uTW9kZSgpLgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHk6OmVudW1lcmF0ZSk6CisKIDIwMTUtMDMtMzEgIFRpbW90aHkg
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFRleHRJbmRpY2F0
b3IgZm9yIDxzcGFuPiBpbnNpZGUgYW4gPGE+IG9ubHkgaGlnaGxpZ2h0cyB0aGUgPHNwYW4+LCBz
aG91bGQgaGlnaGxpZ2h0IHRoZSB3aG9sZSA8YT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmNGQ0N2I0YjY0Y2E1
ZjNkMmE5NDQ2NWFiMGFkNWZjMjFlYmFkMmU0Li42NDVhMmVhNmYyMjI4ODVmZGVjZmJjZDRiMDhi
NGU4YmUxOTZlNzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMDQtMDEgIFl1
c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAg
RW51bWVyYXRpb25Nb2RlIHRvIGVhc2lseSBleHRlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzI3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBkZWZhdWx0IEVudW1lcmF0aW9uTW9kZSgpLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOUEpTT2JqZWN0OjplbnVtZXJhdGUpOgorCiAyMDE1LTAzLTMxICBE
YW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzIwMzY1Njc1PiBbaU9TXSBJbmNsdWRlIEFkZCB0byBSZWFkaW5nIExpc3QgbGluayBhY3Rpb24g
b25seSB3aGVyZSBzdXBwb3J0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggYTBiODNlNzdmZjU3MDI4N2VmNjdl
OTQ3N2MxZTkyN2RiOTU5N2NmNi4uM2UzYmRlN2E2MmE1NTQ5YWFjMjcwNjVmZTdiYTJhYWU5Zjdj
MjRkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgKQEAgLTUyMSw3ICs1MjEsNyBAQAogICAgICAgICAgICAgZm9yIChp
dGVyYXRvciBpdCA9IHN0YXRpY1ZhbHVlcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAg
ICAgICAgICAgICAgICAgU3RyaW5nSW1wbCogbmFtZSA9IGl0LT5rZXkuZ2V0KCk7CiAgICAgICAg
ICAgICAgICAgU3RhdGljVmFsdWVFbnRyeSogZW50cnkgPSBpdC0+dmFsdWUuZ2V0KCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKGVudHJ5LT5nZXRQcm9wZXJ0eSAmJiAoIShlbnRyeS0+YXR0cmlidXRl
cyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udEVudW0pIHx8IHNob3VsZEluY2x1ZGVEb250RW51
bVByb3BlcnRpZXMobW9kZSkpKSB7CisgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5nZXRQcm9w
ZXJ0eSAmJiAoIShlbnRyeS0+YXR0cmlidXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udEVu
dW0pIHx8IG1vZGUuaW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKSkgewogICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoIW5hbWUtPmlzU3ltYm9sKCkpOwogICAgICAgICAgICAgICAgICAgICBw
cm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIFN0cmluZyhuYW1l
KSkpOwogICAgICAgICAgICAgICAgIH0KQEAgLTUzNCw3ICs1MzQsNyBAQAogICAgICAgICAgICAg
Zm9yIChpdGVyYXRvciBpdCA9IHN0YXRpY0Z1bmN0aW9ucy0+YmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7CiAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbCogbmFtZSA9IGl0LT5rZXkuZ2V0KCk7
CiAgICAgICAgICAgICAgICAgU3RhdGljRnVuY3Rpb25FbnRyeSogZW50cnkgPSBpdC0+dmFsdWUu
Z2V0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCEoZW50cnktPmF0dHJpYnV0ZXMgJiBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnRFbnVtKSB8fCBzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KG1vZGUpKSB7CisgICAgICAgICAgICAgICAgaWYgKCEoZW50cnktPmF0dHJpYnV0ZXMgJiBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnRFbnVtKSB8fCBtb2RlLmluY2x1ZGVEb250RW51bVByb3BlcnRp
ZXMoKSkgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIW5hbWUtPmlzU3ltYm9sKCkpOwog
ICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKGV4ZWMsIFN0cmluZyhuYW1lKSkpOwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKaW5kZXggNmNlMWMyYzExMzNiNjkwYTc3Y2Rj
OWFjYWM4YWYzN2NhODUzMDdkNS4uYTI4NGM5ZmEwOTllYjkxYjNkNjdlOGJkMWU1OTBiNGJlYmQy
ZmU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKQEAgLTY5
OCw3ICs2OTgsNyBAQCBKU1Byb3BlcnR5TmFtZUFycmF5UmVmIEpTT2JqZWN0Q29weVByb3BlcnR5
TmFtZXMoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgbwogICAgIEpTT2JqZWN0KiBqc09i
amVjdCA9IHRvSlMob2JqZWN0KTsKICAgICBKU1Byb3BlcnR5TmFtZUFycmF5UmVmIHByb3BlcnR5
TmFtZXMgPSBuZXcgT3BhcXVlSlNQcm9wZXJ0eU5hbWVBcnJheSh2bSk7CiAgICAgUHJvcGVydHlO
YW1lQXJyYXkgYXJyYXkodm0pOwotICAgIGpzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRQcm9w
ZXJ0eU5hbWVzKGpzT2JqZWN0LCBleGVjLCBhcnJheSwgRXhjbHVkZURvbnRFbnVtUHJvcGVydGll
cyk7CisgICAganNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMoanNPYmpl
Y3QsIGV4ZWMsIGFycmF5LCBFbnVtZXJhdGlvbk1vZGUoKSk7CiAKICAgICBzaXplX3Qgc2l6ZSA9
IGFycmF5LnNpemUoKTsKICAgICBwcm9wZXJ0eU5hbWVzLT5hcnJheS5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdz
L1NjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRW
YWx1ZS5jcHAKaW5kZXggNzZhN2IxMTFhOGQ4NzdhNjc5YjVjOGI4ZTg5NmUxYTdiMWI2YjhhYy4u
MTUzYjAzM2ExMTc4MGUwMWQwZmNiMzRiNWY1OWRhZjdkMWNkN2NkOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCkBAIC0xMzcsNyArMTM3LDcg
QEAgYm9vbCBTY3JpcHRWYWx1ZTo6aXNGdW5jdGlvbigpIGNvbnN0CiAgICAgICAgIFJlZjxJbnNw
ZWN0b3JPYmplY3Q+IGluc3BlY3Rvck9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7
CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSB2YWx1ZS5nZXRPYmplY3QoKTsKICAgICAgICAg
UHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhzY3JpcHRTdGF0ZSk7Ci0gICAgICAgIG9i
amVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIHNjcmlwdFN0
YXRlLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAg
b2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgc2NyaXB0
U3RhdGUsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSgpKTsKICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAg
ICBjb25zdCBJZGVudGlmaWVyJiBuYW1lID0gcHJvcGVydHlOYW1lc1tpXTsKICAgICAgICAgICAg
IEpTVmFsdWUgcHJvcGVydHlWYWx1ZSA9IG9iamVjdC0+Z2V0KHNjcmlwdFN0YXRlLCBuYW1lKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0
aW9uUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9j
YXRpb25Qcm9maWxlLmgKaW5kZXggOWE5ZGIwYmM3MGI5ZjEzNWY2NWRkMmQ3OTZkZTY1Mjg5NmFl
MGZiMS4uOWNlMTJiMWVkMjBmOTJhZWUyODk1NDQ2MmQ3ZGE1OWYxZDE5NWEzZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Q
cm9maWxlLmgKQEAgLTExOCw3ICsxMTgsNyBAQCBjbGFzcyBPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZSB7CiAKICAgICAgICAgc2l6ZV90IGNvdW50ID0gMDsKICAgICAgICAgUHJvcGVydHlOYW1lQXJy
YXkgcHJvcGVydHlOYW1lQXJyYXkoJnZtKTsKLSAgICAgICAgcHJvdG90eXBlLT5zdHJ1Y3R1cmUo
KS0+Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUodm0sIHByb3BlcnR5TmFtZUFycmF5LCBF
eGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgcHJvdG90eXBlLT5zdHJ1Y3R1cmUo
KS0+Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUodm0sIHByb3BlcnR5TmFtZUFycmF5LCBF
bnVtZXJhdGlvbk1vZGUoKSk7CiAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5RGF0YTo6UHJvcGVy
dHlOYW1lVmVjdG9yJiBwcm9wZXJ0eU5hbWVWZWN0b3IgPSBwcm9wZXJ0eU5hbWVBcnJheS5kYXRh
KCktPnByb3BlcnR5TmFtZVZlY3RvcigpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHByb3BlcnR5TmFtZVZlY3Rvci5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgSlNWYWx1ZSB2
YWx1ZSA9IHByb3RvdHlwZS0+Z2V0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWVWZWN0b3JbaV0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmlu
ZGV4IDg5OTc2NDIyODgxOWJjYzVmNGQyMTQwOWViOTMxNTkzMTBmOTliODQuLjZmOGVjZDk5MTQy
YjYyYTgzNTMzNWY0MzM4MmRhODA2ZGQ5YTFkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTc1Myw3ICs3NTMsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU29ydChFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAg
CiAgICAgUHJvcGVydHlOYW1lQXJyYXkgbmFtZUFycmF5KGV4ZWMpOwotICAgIHRoaXNPYmotPm1l
dGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRQcm9wZXJ0eU5hbWVzKHRoaXNPYmosIGV4ZWMsIG5h
bWVBcnJheSwgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgdGhpc09iai0+bWV0aG9k
VGFibGUoZXhlYy0+dm0oKSktPmdldFByb3BlcnR5TmFtZXModGhpc09iaiwgZXhlYywgbmFtZUFy
cmF5LCBFbnVtZXJhdGlvbk1vZGUoRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpOwog
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRW51bWVyYXRpb25Nb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FbnVtZXJhdGlvbk1vZGUuaAppbmRleCA0ZGJhZjdiNDE3ZGM3MDhmYmM2YzcyNTA5ZjE5ZjU0
NGYwMWI5NmJkLi5jMGNmMzgwZDk4YjlkNTdiZWRiMGE5NzcxMWJiNWEzMTU2NTE5NTVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FbnVtZXJhdGlvbk1vZGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FbnVtZXJhdGlvbk1vZGUuaApAQCAt
MjgsNjMgKzI4LDQ2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1lbnVtIEVudW1lcmF0aW9uTW9k
ZSB7Ci0gICAgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcywKLSAgICBFeGNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0LAotICAgIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMs
Ci0gICAgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZFNraXBKU09iamVjdAorZW51bSBjbGFz
cyBEb250RW51bVByb3BlcnRpZXNNb2RlIHsKKyAgICBJbmNsdWRlLAorICAgIEV4Y2x1ZGUKIH07
CiAKLWlubGluZSBib29sIHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoRW51bWVyYXRp
b25Nb2RlIG1vZGUpCi17Ci0gICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBJbmNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzOgotICAgIGNhc2UgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZFNr
aXBKU09iamVjdDoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAg
cmV0dXJuIGZhbHNlOworZW51bSBjbGFzcyBKU09iamVjdFByb3BlcnRpZXNNb2RlIHsKKyAgICBJ
bmNsdWRlLAorICAgIEV4Y2x1ZGUKK307CisKK2NsYXNzIEVudW1lcmF0aW9uTW9kZSB7CitwdWJs
aWM6CisgICAgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01vZGUgZG9udEVudW1Q
cm9wZXJ0aWVzTW9kZSA9IERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4Y2x1ZGUsIEpTT2JqZWN0
UHJvcGVydGllc01vZGUganNPYmplY3RQcm9wZXJ0aWVzTW9kZSA9IEpTT2JqZWN0UHJvcGVydGll
c01vZGU6OkluY2x1ZGUpCisgICAgICAgIDogbV9kb250RW51bVByb3BlcnRpZXNNb2RlKGRvbnRF
bnVtUHJvcGVydGllc01vZGUpCisgICAgICAgICwgbV9qc09iamVjdFByb3BlcnRpZXNNb2RlKGpz
T2JqZWN0UHJvcGVydGllc01vZGUpCisgICAgewogICAgIH0KLX0KIAotaW5saW5lIGJvb2wgc2hv
dWxkRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyhFbnVtZXJhdGlvbk1vZGUgbW9kZSkKLXsKLSAg
ICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXM6Ci0g
ICAgY2FzZSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0OgotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
RW51bWVyYXRpb25Nb2RlKGNvbnN0IEVudW1lcmF0aW9uTW9kZSYgbW9kZSwgSlNPYmplY3RQcm9w
ZXJ0aWVzTW9kZSBqc09iamVjdFByb3BlcnRpZXNNb2RlKQorICAgICAgICA6IG1fZG9udEVudW1Q
cm9wZXJ0aWVzTW9kZShtb2RlLm1fZG9udEVudW1Qcm9wZXJ0aWVzTW9kZSkKKyAgICAgICAgLCBt
X2pzT2JqZWN0UHJvcGVydGllc01vZGUoanNPYmplY3RQcm9wZXJ0aWVzTW9kZSkKKyAgICB7CiAg
ICAgfQotfQogCi1pbmxpbmUgYm9vbCBzaG91bGRJbmNsdWRlSlNPYmplY3RQcm9wZXJ0eU5hbWVz
KEVudW1lcmF0aW9uTW9kZSBtb2RlKQotewotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2Ug
SW5jbHVkZURvbnRFbnVtUHJvcGVydGllczoKLSAgICBjYXNlIEV4Y2x1ZGVEb250RW51bVByb3Bl
cnRpZXM6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgRXhjbHVkZURvbnRFbnVtUHJv
cGVydGllc0FuZFNraXBKU09iamVjdDoKLSAgICBjYXNlIEluY2x1ZGVEb250RW51bVByb3BlcnRp
ZXNBbmRTa2lwSlNPYmplY3Q6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBBZGQgb3Ro
ZXIgY29uc3RydWN0b3JzIGFzIG5lZWRlZCBmb3IgY29udmVuaWVuY2UKKworICAgIGJvb2wgaW5j
bHVkZURvbnRFbnVtUHJvcGVydGllcygpCisgICAgeworICAgICAgICByZXR1cm4gbV9kb250RW51
bVByb3BlcnRpZXNNb2RlID09IERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGU7CiAgICAg
fQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KIAotaW5s
aW5lIEVudW1lcmF0aW9uTW9kZSBtb2RlVGhhdFNraXBzSlNPYmplY3QoRW51bWVyYXRpb25Nb2Rl
IG1vZGUpCi17Ci0gICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBJbmNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzOgotICAgICAgICByZXR1cm4gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZFNr
aXBKU09iamVjdDsKLSAgICBjYXNlIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXM6Ci0gICAgICAg
IHJldHVybiBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0OwotICAgIGNh
c2UgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZFNraXBKU09iamVjdDoKLSAgICBjYXNlIElu
Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3Q6Ci0gICAgICAgIHJldHVybiBt
b2RlOworICAgIGJvb2wgaW5jbHVkZUpTT2JqZWN0UHJvcGVydGllcygpCisgICAgeworICAgICAg
ICByZXR1cm4gbV9qc09iamVjdFByb3BlcnRpZXNNb2RlID09IEpTT2JqZWN0UHJvcGVydGllc01v
ZGU6OkluY2x1ZGU7CiAgICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBtb2RlOwotfQorCitwcml2YXRlOgorICAgIERvbnRFbnVtUHJvcGVydGllc01vZGUgbV9kb250
RW51bVByb3BlcnRpZXNNb2RlOworICAgIEpTT2JqZWN0UHJvcGVydGllc01vZGUgbV9qc09iamVj
dFByb3BlcnRpZXNNb2RlOworfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5o
CmluZGV4IDBjODk5NWM3YjNhZTRhMmQxMmMzYjFhMTY5ZmM0NjhhMWViZWZiYmEuLjcxOWRjODgw
MGM1NWJkMTBmZmFjOWVjZDhkMWNjODkyYTExNDk0MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaApAQCAtOTEs
NyArOTEsNyBAQAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGFycmF5LmFkZChJZGVu
dGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTsKICAgICB9Ci0gICAgaWYgKHNob3VsZEluY2x1ZGVEb250
RW51bVByb3BlcnRpZXMobW9kZSkgJiYgIXRoaXNPYmplY3QtPm92ZXJyb2RlVGhpbmdzKCkpIHsK
KyAgICBpZiAobW9kZS5pbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkgJiYgIXRoaXNPYmplY3Qt
Pm92ZXJyb2RlVGhpbmdzKCkpIHsKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5jYWxsZWUpOwogICAgICAgICBhcnJheS5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxl
bmd0aCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApp
bmRleCAyMGQ0OWRiOGJhMmUyYzU4NTUwNjY3NDllZjlkZjUxNTU0MTU3NjgxLi5jNmY5MjEwYTUx
ZWE5N2YzM2NiODVmMTQ0Y2Y1MTY3Y2MzYTc1Y2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmNwcApAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgSlNBcnJheTo6Z2V0
T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvCiB7CiAgICAgSlNBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5Kj4ob2Jq
ZWN0KTsKIAotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQor
ICAgIGlmIChtb2RlLmluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgcHJvcGVy
dHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CiAKICAgICBKU09iamVj
dDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZXMsIG1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyLmNwcAppbmRleCBjMWNhZDEwNWM3ZTBkNWFkN2VmZDI5NmEzYmVmMDY5NmM5NWY2MDA3
Li42MmFiODlhM2RlMjRiNGEzN2U1NGM5NGJlYzIyYzNiNmQ0MjRlYmYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcApAQCAtMTE5LDcgKzEx
OSw3IEBAIHZvaWQgSlNBcnJheUJ1ZmZlcjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKAog
ewogICAgIEpTQXJyYXlCdWZmZXIqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheUJ1ZmZlcio+
KG9iamVjdCk7CiAgICAgCi0gICAgaWYgKHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMo
bW9kZSkpCisgICAgaWYgKG1vZGUuaW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKQogICAgICAg
ICBhcnJheS5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ5dGVMZW5ndGgpOwogICAgIAogICAg
IEJhc2U6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBhcnJh
eSwgbW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKaW5kZXggMGExMTZjMDYwNzhiZDgwMDNiNmRmMjllNzM1MjViOGFjYTRl
MTQ2NS4uYTMzOThkYmFhZTljZWMwNjJlODc5MmZhMDkzYmFjODBhMzUyZDBhMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcApA
QCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgSlNBcnJheUJ1ZmZlclZpZXc6OmdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lcygKICAgICBKU0FycmF5QnVmZmVyVmlldyogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU0FycmF5QnVmZmVyVmlldyo+KG9iamVjdCk7CiAgICAgCiAgICAgLy8gbGVuZ3RoL2J5dGVP
ZmZzZXQvYnl0ZUxlbmd0aCBhcmUgRG9udEVudW0sIGF0IGxlYXN0IGluIEZpcmVmb3guCi0gICAg
aWYgKHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpIHsKKyAgICBpZiAobW9k
ZS5pbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpIHsKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5ieXRlT2Zmc2V0KTsKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5ieXRlTGVuZ3RoKTsKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5idWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcAppbmRleCAxYjk4NWFlYWI1MWUzYmE0ODViZGY5YTQwODM2ZDEwZDM0OGViNzc2
Li43YzNhYzJiZjY4ZTIzNjE0MGUzZGQyZmYzNGM2ZDYxNTViNTJkNjBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtMzY5LDcgKzM2OSw3IEBA
IGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiB2b2lkIEpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKICAgICBK
U0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAg
IGlmICghdGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSAmJiBzaG91bGRJbmNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKSB7CisgICAgaWYgKCF0aGlzT2JqZWN0LT5pc0hv
c3RPckJ1aWx0aW5GdW5jdGlvbigpICYmIG1vZGUuaW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygp
KSB7CiAgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSBw
cm90b3R5cGUgaGFzIGJlZW4gcmVpZmllZC4KICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhp
c09iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5k
ZXggOWFiOWRjMjc3N2JhYmY4OTYzODFkY2Y0MDJjMDEzMDkwZjk1ZTMwYy4uOWJkM2ZlMjQxNTAw
NjExY2Q5OTc1NmU3MWZmNTkwMGE0ZGZkZTAwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uaApAQCAtMTM5LDcgKzEzOSw3IEBAIGNsYXNzIEpTRnVuY3Rpb24g
OiBwdWJsaWMgSlNDYWxsZWUgewogICAgIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKiBjcmVhdGVB
bGxvY2F0aW9uUHJvZmlsZShFeGVjU3RhdGUqLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpOwogCiAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJh
eSYsIEVudW1lcmF0aW9uTW9kZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIHN0
YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlID0gRW51bWVyYXRpb25Nb2Rl
KCkpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3Vs
ZFRocm93KTsKIAogICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lu
bGluZXMuaAppbmRleCA0MDFiOGRhMmQ4NDQ3NjJlNWEzY2U2Y2FmYmZlZDM2MDI5NDBmN2ZjLi4y
MGQ5NWFjYmJmNzE4OTBhMzQ1NDk2MTI5MjllN2M4NDg0N2UwNDk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0lubGluZXMuaApAQCAtNDE1LDcgKzQxNSw3IEBACiB7CiAgICAgSlNHZW5lcmljVHlwZWRB
cnJheVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihv
YmplY3QpOwogICAgIAotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1v
ZGUpKQorICAgIGlmIChtb2RlLmluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAg
YXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpOwogICAgIAogICAgIEJhc2U6
OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBhcnJheSwgbW9k
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxF
bnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxF
bnZpcm9ubWVudC5jcHAKaW5kZXggYzExMDdlNmQ2NjY0NDVhYzQ5ODJjZTVkZTllOTBmOThkOTFl
ZjkwZS4uZTc5YzI5Y2YxY2I4ZjIxM2U5NGJjOTcwNmYxMTk5ZmM3YmQ0MTI2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50
LmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93
bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhCiAgICAgICAg
IENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPm1f
bG9jayk7CiAgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGVuZCA9IHRoaXNPYmpl
Y3QtPnN5bWJvbFRhYmxlKCktPmVuZChsb2NrZXIpOwogICAgICAgICBmb3IgKFN5bWJvbFRhYmxl
OjpNYXA6Oml0ZXJhdG9yIGl0ID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+YmVnaW4obG9j
a2VyKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAoaXQtPnZhbHVlLmdldEF0
dHJpYnV0ZXMoKSAmIERvbnRFbnVtICYmICFzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KG1vZGUpKQorICAgICAgICAgICAgaWYgKGl0LT52YWx1ZS5nZXRBdHRyaWJ1dGVzKCkgJiBEb250
RW51bSAmJiAhbW9kZS5pbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoIXRoaXNPYmplY3QtPmlzVmFsaWQoaXQtPnZh
bHVlLnNjb3BlT2Zmc2V0KCkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAppbmRleCBiZGI4MjFjZGY1NjQ4
MGQ2OGRjMWM0ZGEyZWQwNTZjYjU1ODFlMWE5Li40ZTI5Y2YzMWI2NjY5ZTI5MTM3MWJiZGE2OTVk
ZDdlYWMxODUxYzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09OT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2Jq
ZWN0LmNwcApAQCAtNDkwLDcgKzQ5MCw3IEBAIGJvb2wgU3RyaW5naWZpZXI6OkhvbGRlcjo6YXBw
ZW5kTmV4dFByb3BlcnR5KFN0cmluZ2lmaWVyJiBzdHJpbmdpZmllciwgU3RyaW5nQnVpCiAgICAg
ICAgICAgICAgICAgbV9wcm9wZXJ0eU5hbWVzID0gc3RyaW5naWZpZXIubV9hcnJheVJlcGxhY2Vy
UHJvcGVydHlOYW1lcy5kYXRhKCk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAg
ICBQcm9wZXJ0eU5hbWVBcnJheSBvYmplY3RQcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgICAgICAg
ICAgICAgIG1fb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG1fb2Jq
ZWN0LmdldCgpLCBleGVjLCBvYmplY3RQcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICBtX29iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3du
UHJvcGVydHlOYW1lcyhtX29iamVjdC5nZXQoKSwgZXhlYywgb2JqZWN0UHJvcGVydHlOYW1lcywg
RW51bWVyYXRpb25Nb2RlKCkpOwogICAgICAgICAgICAgICAgIG1fcHJvcGVydHlOYW1lcyA9IG9i
amVjdFByb3BlcnR5TmFtZXMucmVsZWFzZURhdGEoKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIG1fc2l6ZSA9IG1fcHJvcGVydHlOYW1lcy0+cHJvcGVydHlOYW1lVmVjdG9yKCkuc2l6ZSgp
OwpAQCAtNzA3LDcgKzcwNyw3IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhK
U1ZhbHVlIHVuZmlsdGVyZWQpCiAgICAgICAgICAgICAgICAgb2JqZWN0U3RhY2sucHVzaChvYmpl
Y3QpOwogICAgICAgICAgICAgICAgIGluZGV4U3RhY2suYXBwZW5kKDApOwogICAgICAgICAgICAg
ICAgIHByb3BlcnR5U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYykpOwotICAg
ICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhv
YmplY3QsIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEV4Y2x1ZGVEb250RW51bVByb3Bl
cnRpZXMpOworICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJv
cGVydHlOYW1lcyhvYmplY3QsIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEVudW1lcmF0
aW9uTW9kZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG9iamVjdFN0YXJ0VmlzaXRN
ZW1iZXI6CiAgICAgICAgICAgICBGQUxMVEhST1VHSDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCA1MjNkMTJhOTIwM2I3MDMzOGMzMGQxNTI4ZDUwZmYx
YmE2MDI2MTRmLi5lMWZmZTViMWU1MDBjNGQwYWFhYWUzNTg0Zjc1NjZlMmNlMDcxOGMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC03OCw3ICs3OCw3
IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBnZXRDbGFzc1Byb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICBmb3IgKGF1dG8gaXRlciA9IHRhYmxlLT5iZWdpbigpOyBpdGVyICE9IHRhYmxlLT5lbmQo
KTsgKytpdGVyKSB7Ci0gICAgICAgICAgICBpZiAoKCEoaXRlci0+YXR0cmlidXRlcygpICYgRG9u
dEVudW0pIHx8IHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpICYmICEoKGl0
ZXItPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSAmJiBkaWRSZWlmeSkpCisgICAg
ICAgICAgICBpZiAoKCEoaXRlci0+YXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IG1vZGUuaW5j
bHVkZURvbnRFbnVtUHJvcGVydGllcygpKSAmJiAhKChpdGVyLT5hdHRyaWJ1dGVzKCkgJiBCdWls
dGluT3JGdW5jdGlvbikgJiYgZGlkUmVpZnkpKQogICAgICAgICAgICAgICAgIHByb3BlcnR5TmFt
ZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBpdGVyLmtleSgpKSk7CiAgICAgICAg
IH0KICAgICB9CkBAIC0xNTE4LDcgKzE1MTgsNyBAQCB2b2lkIEpTT2JqZWN0OjpnZXRQcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQQog
CiB2b2lkIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0
aW9uTW9kZSBtb2RlKQogewotICAgIGlmICghc2hvdWxkSW5jbHVkZUpTT2JqZWN0UHJvcGVydHlO
YW1lcyhtb2RlKSkgeworICAgIGlmICghbW9kZS5pbmNsdWRlSlNPYmplY3RQcm9wZXJ0aWVzKCkp
IHsKICAgICAgICAgLy8gV2Ugc3RpbGwgaGF2ZSB0byBnZXQgbm9uLWluZGV4ZWQgcHJvcGVydGll
cyBmcm9tIGFueSBzdWJjbGFzc2VzIG9mIEpTT2JqZWN0IHRoYXQgaGF2ZSB0aGVtLgogICAgICAg
ICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Ob25JbmRleFByb3BlcnR5
TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMTU3Miw3ICsxNTcyLDcgQEAgdm9pZCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1l
cyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmEKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gbWFwLT5lbmQoKTsKICAgICAgICAgICAgIGZvciAoU3BhcnNlQXJyYXlWYWx1ZU1hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAg
ICAgICAgICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpIHx8ICEo
aXQtPnZhbHVlLmF0dHJpYnV0ZXMgJiBEb250RW51bSkpCisgICAgICAgICAgICAgICAgaWYgKG1v
ZGUuaW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpIHx8ICEoaXQtPnZhbHVlLmF0dHJpYnV0ZXMg
JiBEb250RW51bSkpCiAgICAgICAgICAgICAgICAgICAgIGtleXMudW5jaGVja2VkQXBwZW5kKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihpdC0+a2V5KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAKQEAgLTE1OTQsNyArMTU5NCw3IEBAIHZvaWQgSlNPYmplY3Q6OmdldE93bk5vbkluZGV4UHJv
cGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByCiB7CiAgICAg
Z2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKGV4ZWMsIG9iamVjdC0+Y2xhc3NJbmZvKCksIHByb3BlcnR5
TmFtZXMsIG1vZGUsIG9iamVjdC0+c3RhdGljRnVuY3Rpb25zUmVpZmllZCgpKTsKIAotICAgIGlm
ICghc2hvdWxkSW5jbHVkZUpTT2JqZWN0UHJvcGVydHlOYW1lcyhtb2RlKSkKKyAgICBpZiAoIW1v
ZGUuaW5jbHVkZUpTT2JqZWN0UHJvcGVydGllcygpKQogICAgICAgICByZXR1cm47CiAgICAgCiAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTI4MDAsNyArMjgwMCw3IEBAIHZvaWQgSlNPYmpl
Y3Q6OmdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wCiB2b2lkIEpTT2JqZWN0OjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0
eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwotICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZVRoYXRTa2lwc0pTT2JqZWN0KG1vZGUpKTsKKyAg
ICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZShtb2RlLCBKU09iamVjdFByb3BlcnRp
ZXNNb2RlOjpFeGNsdWRlKSk7CiAKICAgICBpZiAob2JqZWN0LT5wcm90b3R5cGUoKS5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaAppbmRleCAxNDYwY2VhNjQ2MThlZjYy
NjBjY2FmODE0ZGNmYzJmMmNjOWMxM2RmLi43NzgzMDhhZjBiYzU5Mzk3MWY2MzIyM2UzZGVmNjlh
YmQ1NzM1ZmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUVudW1lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaApAQCAtMTI2LDEzICsxMjYsMTMgQEAgaW5saW5l
IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogcHJvcGVydHlOYW1lRW51bWVyYXRvcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWMKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4
ZWMpOwogCiAgICAgaWYgKHN0cnVjdHVyZS0+Y2FuQWNjZXNzUHJvcGVydGllc1F1aWNrbHkoKSAm
JiBpbmRleGVkTGVuZ3RoID09IGJhc2UtPmdldEFycmF5TGVuZ3RoKCkpIHsKLSAgICAgICAgYmFz
ZS0+bWV0aG9kVGFibGUodm0pLT5nZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKGJhc2UsIGV4ZWMs
IHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAgICBiYXNl
LT5tZXRob2RUYWJsZSh2bSktPmdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoYmFzZSwgZXhlYywg
cHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKCkpOwogCiAgICAgICAgIG51bWJlclN0cnVj
dHVyZVByb3BlcnRpZXMgPSBwcm9wZXJ0eU5hbWVzLnNpemUoKTsKIAotICAgICAgICBiYXNlLT5t
ZXRob2RUYWJsZSh2bSktPmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKGJhc2UsIGV4ZWMsIHByb3Bl
cnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAgICBiYXNlLT5tZXRo
b2RUYWJsZSh2bSktPmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKGJhc2UsIGV4ZWMsIHByb3BlcnR5
TmFtZXMsIEVudW1lcmF0aW9uTW9kZSgpKTsKICAgICB9IGVsc2UKLSAgICAgICAgYmFzZS0+bWV0
aG9kVGFibGUodm0pLT5nZXRQcm9wZXJ0eU5hbWVzKGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZXMs
IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAgICBiYXNlLT5tZXRob2RUYWJsZSh2
bSktPmdldFByb3BlcnR5TmFtZXMoYmFzZSwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRp
b25Nb2RlKCkpOwogCiAgICAgQVNTRVJUKHByb3BlcnR5TmFtZXMuc2l6ZSgpIDwgVUlOVDMyX01B
WCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9s
VGFibGVPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xU
YWJsZU9iamVjdC5jcHAKaW5kZXggMmIwMTg2MmQ2YTQ5ZDFhMGUwNDY2MDU0MzI0MzQ0OTljMDJl
OWM3YS4uMTQxMTVkOWYzYjNhNTFkMTFkMDhlMTk5MjhkOGZmM2Q3ZDc1ZTMyMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5j
cHAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXQKICAgICAgICAgZm9y
IChTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxl
KCktPmJlZ2luKGxvY2tlcik7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgaWYgKGl0
LT5rZXktPmlzU3ltYm9sKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICBpZiAoIShpdC0+dmFsdWUuZ2V0QXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IHNob3VsZElu
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpCisgICAgICAgICAgICBpZiAoIShpdC0+dmFs
dWUuZ2V0QXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IG1vZGUuaW5jbHVkZURvbnRFbnVtUHJv
cGVydGllcygpKQogICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6
OmZyb21VaWQoZXhlYywgaXQtPmtleS5nZXQoKSkpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmlu
ZGV4IDc0ZGI0OGI4YjY3MGMzNTJmMDI2NTU1NmRhMjA1MWRiNDkwZDU4NWMuLmExMzc2MWQzOWRk
Nzk2Y2E0MGY2ZDlhNTc3ODU5MDVhNjE3MTE5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTIwNyw3ICsyMDcsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJv
cGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZQogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CiAgICAgUHJvcGVydHlO
YW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMt
PnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgSW5j
bHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1l
cmF0aW9uTW9kZShEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSk7CiAgICAgSlNBcnJh
eSogbmFtZXMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOwogICAgIHNpemVfdCBudW1Q
cm9wZXJ0aWVzID0gcHJvcGVydGllcy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBudW1Qcm9wZXJ0aWVzOyBpKyspCkBAIC0yMjIsNyArMjIyLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcktleXMoRXhlY1N0YXRlKiBleGVjKQogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc051bGwoKSk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAg
ICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9i
amVjdCwgZXhlYywgcHJvcGVydGllcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAg
b2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmpl
Y3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZSgpKTsKICAgICBKU0FycmF5KiBr
ZXlzID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKICAgICBzaXplX3QgbnVtUHJvcGVy
dGllcyA9IHByb3BlcnRpZXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVt
UHJvcGVydGllczsgaSsrKQpAQCAtMzMzLDcgKzMzMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMp
CiBzdGF0aWMgSlNWYWx1ZSBkZWZpbmVQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIG9iamVjdCwgSlNPYmplY3QqIHByb3BlcnRpZXMpCiB7CiAgICAgUHJvcGVydHlOYW1lQXJy
YXkgcHJvcGVydHlOYW1lcyhleGVjKTsKLSAgICBhc09iamVjdChwcm9wZXJ0aWVzKS0+bWV0aG9k
VGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMoYXNPYmplY3QocHJvcGVydGll
cyksIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAg
IGFzT2JqZWN0KHByb3BlcnRpZXMpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJv
cGVydHlOYW1lcyhhc09iamVjdChwcm9wZXJ0aWVzKSwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51
bWVyYXRpb25Nb2RlKCkpOwogICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydHlOYW1l
cy5zaXplKCk7CiAgICAgVmVjdG9yPFByb3BlcnR5RGVzY3JpcHRvcj4gZGVzY3JpcHRvcnM7CiAg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgbWFya0J1ZmZlcjsKQEAgLTQwMCw3ICs0MDAsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yU2VhbChFeGVjU3Rh
dGUqIGV4ZWMpCiAKICAgICAvLyAyLiBGb3IgZWFjaCBuYW1lZCBvd24gcHJvcGVydHkgbmFtZSBQ
IG9mIE8sCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBvYmpl
Y3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwg
ZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgb2JqZWN0
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4
ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3BlcnRpZXNNb2RlOjpJ
bmNsdWRlKSk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHBy
b3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0
b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAg
ICAgICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbR2V0T3du
UHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAuCkBAIC00MzcsNyArNDM3LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZShF
eGVjU3RhdGUqIGV4ZWMpCiAKICAgICAvLyAyLiBGb3IgZWFjaCBuYW1lZCBvd24gcHJvcGVydHkg
bmFtZSBQIG9mIE8sCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAg
ICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9i
amVjdCwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAg
b2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmpl
Y3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3BlcnRpZXNN
b2RlOjpJbmNsdWRlKSk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IHByb3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3Rf
aXRlcmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikg
ewogICAgICAgICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtb
R2V0T3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAuCkBAIC00ODUsNyAr
NDg1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rvcklz
U2VhbGVkKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIC8vIDIuIEZvciBlYWNoIG5hbWVkIG93biBw
cm9wZXJ0eSBuYW1lIFAgb2YgTywKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4
ZWMpOwotICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5
TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5h
bWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJv
cGVydGllc01vZGU6OkluY2x1ZGUpKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRl
cmF0b3IgZW5kID0gcHJvcGVydGllcy5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5
Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBpdGVyICE9IGVuZDsg
KytpdGVyKSB7CiAgICAgICAgIC8vIGEuIExldCBkZXNjIGJlIHRoZSByZXN1bHQgb2YgY2FsbGlu
ZyB0aGUgW1tHZXRPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBPIHdpdGggUC4KQEAg
LTUxNSw3ICs1MTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0
cnVjdG9ySXNGcm96ZW4oRXhlY1N0YXRlKiBleGVjKQogCiAgICAgLy8gMi4gRm9yIGVhY2ggbmFt
ZWQgb3duIHByb3BlcnR5IG5hbWUgUCBvZiBPLAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3Bl
cnRpZXMoZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3du
UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVBy
b3BlcnRpZXMpOworICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blBy
b3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGUoRG9u
dEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpOwogICAgIFByb3BlcnR5TmFtZUFycmF5Ojpj
b25zdF9pdGVyYXRvciBlbmQgPSBwcm9wZXJ0aWVzLmVuZCgpOwogICAgIGZvciAoUHJvcGVydHlO
YW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0aWVzLmJlZ2luKCk7IGl0ZXIg
IT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgLy8gYS4gTGV0IGRlc2MgYmUgdGhlIHJlc3VsdCBv
ZiBjYWxsaW5nIHRoZSBbW0dldE93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0
aCBQLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAK
aW5kZXggNGQ5ZDBiMjdlNGQwYzhjOTFmOWZlYjQ1YTFkNTRlNTk1ZDMzZDUxOS4uMjVjODU4NWRm
N2Y1ODhlNjNlZjM4ODE5OGQ3ZWZmN2MyMmViNTJlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCkBAIC0xMDUsMjEgKzEwNSwyMSBAQCBib29s
IFJlZ0V4cE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcgogCiB2b2lkIFJlZ0V4cE9iamVjdDo6Z2V0T3duTm9uSW5kZXhQ
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewotICAgIGlm
IChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQorICAgIGlmIChtb2RlLmlu
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxhc3RJbmRleCk7CiAgICAgQmFzZTo6Z2V0T3duTm9uSW5kZXhQ
cm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKIHZv
aWQgUmVnRXhwT2JqZWN0OjpnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9u
TW9kZSBtb2RlKQogewotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1v
ZGUpKQorICAgIGlmIChtb2RlLmluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAg
cHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxhc3RJbmRleCk7CiAgICAg
QmFzZTo6Z2V0UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUp
OwogfQogCiB2b2lkIFJlZ0V4cE9iamVjdDo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlO
YW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7Ci0gICAgaWYgKHNob3VsZEluY2x1ZGVEb250
RW51bVByb3BlcnRpZXMobW9kZSkpCisgICAgaWYgKG1vZGUuaW5jbHVkZURvbnRFbnVtUHJvcGVy
dGllcygpKQogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCku
bGFzdEluZGV4KTsKICAgICBCYXNlOjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ09iamVjdC5jcHAKaW5kZXggNTAwMWJjYzRlMWI3ZTM3OTNlZDI2ZTE0MjBh
ODBhNjA0NjhlMTNjNi4uMjU1NjkwZmY0OGM4ZGIwNzQyNTViZTk5MzRhOTZhNDcyMjY1OWM2MSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCkBA
IC0xNTAsNyArMTUwLDcgQEAgdm9pZCBTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXIKICAgICBpbnQgc2l6ZSA9
IHRoaXNPYmplY3QtPmludGVybmFsVmFsdWUoKS0+bGVuZ3RoKCk7CiAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6
OmZyb20oZXhlYywgaSkpOwotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KG1vZGUpKQorICAgIGlmIChtb2RlLmluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAg
ICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CiAgICAg
cmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZXMsIG1vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5jcHAKaW5kZXggM2I4YWUxY2U3MzViYjI1ZTc3YmQzMTE4ODEzMjBjZGNjNzJhMjUx
NC4uNGNiMDE3NzNlMTcyZjE3YTJhZTZlZGU0MzE0N2EzZDEwMDhkMzg2OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC05MzksNyArOTM5LDcgQEAg
dm9pZCBTdHJ1Y3R1cmU6OmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKFZNJiB2bSwgUHJv
cGVydHlOYW1lQXJyYXkmIHByb3BlcnQKICAgICBQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBlbmQg
PSBwcm9wZXJ0eVRhYmxlKCktPmVuZCgpOwogICAgIGZvciAoUHJvcGVydHlUYWJsZTo6aXRlcmF0
b3IgaXRlciA9IHByb3BlcnR5VGFibGUoKS0+YmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikg
ewogICAgICAgICBBU1NFUlQoaGFzTm9uRW51bWVyYWJsZVByb3BlcnRpZXMoKSB8fCAhKGl0ZXIt
PmF0dHJpYnV0ZXMgJiBEb250RW51bSkpOwotICAgICAgICBpZiAoIWl0ZXItPmtleS0+aXNTeW1i
b2woKSAmJiAoIShpdGVyLT5hdHRyaWJ1dGVzICYgRG9udEVudW0pIHx8IHNob3VsZEluY2x1ZGVE
b250RW51bVByb3BlcnRpZXMobW9kZSkpKSB7CisgICAgICAgIGlmICghaXRlci0+a2V5LT5pc1N5
bWJvbCgpICYmICghKGl0ZXItPmF0dHJpYnV0ZXMgJiBEb250RW51bSkgfHwgbW9kZS5pbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKCkpKSB7CiAgICAgICAgICAgICBpZiAoa25vd25VbmlxdWUpCiAg
ICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGRLbm93blVuaXF1ZShpdGVyLT5rZXkpOwog
ICAgICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
RGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNw
cAppbmRleCBkZjRkYzc4NjJkMmRhYWE5ZjJiNjc2ZDFlZDMxNzJhMmYzZWFmZDI5Li41YzI0MzZh
OTQyOGU2OGFjMjM0NTBjZjM0YzM0NDQ4ODdjYTFhYzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9EaWN0aW9uYXJ5LmNwcApAQCAtNjMsNyArNjMsNyBAQCBib29sIERpY3Rpb25hcnk6
OmdldE93blByb3BlcnRpZXNBc1N0cmluZ0hhc2hNYXAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4m
IG1hcCkgYwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZGljdGlvbmFyeS5leGVjU3RhdGUoKTsK
IAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYyk7Ci0gICAgSlNPYmpl
Y3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1l
cyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSgpKTsKICAgICBm
b3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdCA9IHByb3BlcnR5TmFtZXMu
YmVnaW4oKTsgaXQgIT0gcHJvcGVydHlOYW1lcy5lbmQoKTsgKytpdCkgewogICAgICAgICBTdHJp
bmcgc3RyaW5nS2V5ID0gaXQtPnN0cmluZygpOwogICAgICAgICBpZiAoc3RyaW5nS2V5LmlzRW1w
dHkoKSkKQEAgLTg4LDcgKzg4LDcgQEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXRPd25Qcm9wZXJ0eU5h
bWVzKFZlY3RvcjxTdHJpbmc+JiBuYW1lcykgY29uc3QKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBt
X2RpY3Rpb25hcnkuZXhlY1N0YXRlKCk7CiAKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0
eU5hbWVzKGV4ZWMpOwotICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgSlNP
YmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBF
bnVtZXJhdGlvbk1vZGUoKSk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBwcm9wZXJ0eU5hbWVzLmJlZ2luKCk7IGl0ICE9IHByb3BlcnR5TmFtZXMuZW5k
KCk7ICsraXQpIHsKICAgICAgICAgU3RyaW5nIHN0cmluZ0tleSA9IGl0LT5zdHJpbmcoKTsKICAg
ICAgICAgaWYgKCFzdHJpbmdLZXkuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggMDBlYTExYjQ2NGY2
MzVjNmNiZGU2NGEyNjI2NjAxNjFjYWRmOWRlNi4uZWUxNWJkNTBjNTIzZjYxMTI1ODU0NjJmMzY3
OTUxZGEwM2Y3N2RjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0xMjU0LDcgKzEyNTQsNyBAQCBTZXJpYWxpemF0
aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVlIGluKQogICAg
ICAgICAgICAgICAgICAgICBsZW5ndGhTdGFjay5yZW1vdmVMYXN0KCk7CiAKICAgICAgICAgICAg
ICAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjKSk7
Ci0gICAgICAgICAgICAgICAgICAgIGFycmF5LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Ob25JbmRl
eFByb3BlcnR5TmFtZXMoYXJyYXksIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEV4Y2x1
ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAgICAgICAgICAgICAgICBhcnJheS0+bWV0aG9k
VGFibGUoKS0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKGFycmF5LCBtX2V4ZWMsIHByb3Bl
cnR5U3RhY2subGFzdCgpLCBFbnVtZXJhdGlvbk1vZGUoKSk7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChwcm9wZXJ0eVN0YWNrLmxhc3QoKS5zaXplKCkpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHdyaXRlKE5vbkluZGV4UHJvcGVydGllc1RhZyk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmRleFN0YWNrLmFwcGVuZCgwKTsKQEAgLTEzMDQsNyArMTMwNCw3IEBAIFNlcmlhbGl6YXRp
b25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUgaW4pCiAgICAg
ICAgICAgICAgICAgaW5wdXRPYmplY3RTdGFjay5hcHBlbmQoaW5PYmplY3QpOwogICAgICAgICAg
ICAgICAgIGluZGV4U3RhY2suYXBwZW5kKDApOwogICAgICAgICAgICAgICAgIHByb3BlcnR5U3Rh
Y2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYykpOwotICAgICAgICAgICAgICAgIGlu
T2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGluT2JqZWN0LCBtX2V4
ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAg
ICAgICAgICAgICAgICBpbk9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1l
cyhpbk9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwgRW51bWVyYXRpb25Nb2Rl
KCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgb2JqZWN0U3RhcnRWaXNpdE1lbWJlcjoK
ICAgICAgICAgICAgIEZBTExUSFJPVUdIOwpAQCAtMTM3Miw3ICsxMzcyLDcgQEAgU2VyaWFsaXph
dGlvblJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoSlNWYWx1ZSBpbikKICAg
ICAgICAgICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGlucHV0T2JqZWN0U3RhY2subGFz
dCgpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU01hcCo+KG9i
amVjdCkpOwogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0YWNrLmFwcGVuZChQcm9wZXJ0
eU5hbWVBcnJheShtX2V4ZWMpKTsKLSAgICAgICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RU
YWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNr
Lmxhc3QoKSwgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgICAgICAgICAgICAgICAg
IG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIG1fZXhl
YywgcHJvcGVydHlTdGFjay5sYXN0KCksIEVudW1lcmF0aW9uTW9kZSgpKTsKICAgICAgICAgICAg
ICAgICAgICAgd3JpdGUoTm9uTWFwUHJvcGVydGllc1RhZyk7CiAgICAgICAgICAgICAgICAgICAg
IGluZGV4U3RhY2suYXBwZW5kKDApOwogICAgICAgICAgICAgICAgICAgICBnb3RvIG9iamVjdFN0
YXJ0VmlzaXRNZW1iZXI7CkBAIC0xNDE2LDcgKzE0MTYsNyBAQCBTZXJpYWxpemF0aW9uUmV0dXJu
Q29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVlIGluKQogICAgICAgICAgICAg
ICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gaW5wdXRPYmplY3RTdGFjay5sYXN0KCk7CiAgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChqc0R5bmFtaWNDYXN0PEpTU2V0Kj4ob2JqZWN0KSk7CiAg
ICAgICAgICAgICAgICAgICAgIHByb3BlcnR5U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5
KG1fZXhlYykpOwotICAgICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdl
dE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBF
eGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICAgICAgb2JqZWN0LT5t
ZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbV9leGVjLCBwcm9wZXJ0
eVN0YWNrLmxhc3QoKSwgRW51bWVyYXRpb25Nb2RlKCkpOwogICAgICAgICAgICAgICAgICAgICB3
cml0ZShOb25TZXRQcm9wZXJ0aWVzVGFnKTsKICAgICAgICAgICAgICAgICAgICAgaW5kZXhTdGFj
ay5hcHBlbmQoMCk7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb2JqZWN0U3RhcnRWaXNpdE1l
bWJlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KaW5kZXggNWI5Zjg0ZTVlYTY1MzcxMjdlMDJjYmY0YTQ2NjM5NDc0NTAyZDY4Zi4u
MmZiZDEwZTU3NGY0MjFkMDM4NzRjZGQzZjMzNTZkZmRkYTA3YWQxOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTk2OCwx
NiArOTY4LDE2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgIyBDdXN0b20gZ2V0UHJvcGVy
dHlOYW1lcyBmdW5jdGlvbiBleGlzdHMgb24gRE9NV2luZG93CiAgICAgaWYgKCRpbnRlcmZhY2VO
YW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
c3RhdGljIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9
IEpTQzo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7XG4iKTsKLSAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU0M6
OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlND
OjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7
XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRT
dHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSBtb2RlID0gSlNDOjpF
eGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldFByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25N
b2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGUoKSk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU0M6OkpT
T2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpF
bnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZSgpKTtcbiIpOworICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldFN0cnVjdHVyZVByb3BlcnR5
TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVB
cnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGUoKSk7XG4i
KTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdWludDMyX3QgZ2V0
RW51bWVyYWJsZUxlbmd0aChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqKTtcbiIpOwog
ICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyJ9
ID0gMTsKICAgICB9CiAKICAgICAjIEN1c3RvbSBnZXRPd25Qcm9wZXJ0eU5hbWVzIGZ1bmN0aW9u
CiAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21FbnVtZXJh
dGVQcm9wZXJ0eSJ9IHx8ICRpbmRleGVkR2V0dGVyRnVuY3Rpb24pIHsKLSAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6
SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6
OkVudW1lcmF0aW9uTW9kZSBtb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtc
biIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldE93
blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9w
ZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1v
ZGUoKSk7XG4iKTsKICAgICAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Ok92ZXJyaWRlc0dldFBy
b3BlcnR5TmFtZXMifSA9IDE7ICAgICAgIAogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuaAppbmRleCBm
ZjM4OGNhMDE3NjBjMTJiOTU3NTAzOWZlYzc2NDMyOTNmZTg0ZTM0Li42NWNiYTBlOWJiZGI3ZjJm
YTNlYTMzY2U3MTRhMmU5NjRjMjUzZGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuaApAQCAtNTEsNyArNTEs
NyBAQCBjbGFzcyBKU0Zsb2F0NjRBcnJheSA6IHB1YmxpYyBKU0FycmF5QnVmZmVyVmlldyB7CiAg
ICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpT
Qzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBK
U0M6OkVudW1lcmF0aW9uTW9kZSBtb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KTsKKyAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9u
TW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOwogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUg
Z2V0Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAg
ICAgRmxvYXQ2NEFycmF5KiBpbXBsKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5o
CmluZGV4IGJmMWNlNjdlMmZlM2NkY2I5N2UyMDM4N2Y1YjBlOWU1MDg5ZjI0N2YuLjAwYTUzMTUz
NmQwYTdlZmI5OTQyMGZjY2Q4YzdiYTczNDEyZjRiMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5o
CkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEpTVGVzdEV2ZW50VGFyZ2V0
IDogcHVibGljIEpTRE9NV3JhcHBlciB7CiAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKLSAgICBzdGF0aWMg
dm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSBtb2RlID0gSlND
OjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9w
ZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlO
YW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkp
OwogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIEpTQzo6
SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCos
IEpTQzo6U2xvdFZpc2l0b3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L05QX2pzb2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAK
aW5kZXggOTAwMTAxMzhhYjQ2Y2U3ZDk3NTNjYmZmMjk1ZTUzY2RmYWNkMGI1YS4uMDk0YjFhZWQ4
NjNmMTY3YTgwNzY2NzBiYjQ1ZDY5ZTg4MDRmNmJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBf
anNvYmplY3QuY3BwCkBAIC00NDcsNyArNDQ3LDcgQEAgYm9vbCBfTlBOX0VudW1lcmF0ZShOUFAs
IE5QT2JqZWN0KiBvLCBOUElkZW50aWZpZXIqKiBpZGVudGlmaWVyLCB1aW50MzJfdCogY291bnQK
ICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgICAgIFByb3BlcnR5TmFtZUFy
cmF5IHByb3BlcnR5TmFtZXMoZXhlYyk7CiAKLSAgICAgICAgb2JqLT5pbXAtPm1ldGhvZFRhYmxl
KCktPmdldFByb3BlcnR5TmFtZXMob2JqLT5pbXAsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1
ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAgICBvYmotPmltcC0+bWV0aG9kVGFibGUoKS0+
Z2V0UHJvcGVydHlOYW1lcyhvYmotPmltcCwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRp
b25Nb2RlKCkpOwogICAgICAgICB1bnNpZ25lZCBzaXplID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHByb3BlcnR5TmFtZXMuc2l6ZSgpKTsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJl
YWxseSBjYWxsIE5QTl9NZW1BbGxvYyBidXQgdGhhdCdzIGluIFdlYktpdAogICAgICAgICBOUElk
ZW50aWZpZXIqIGlkZW50aWZpZXJzID0gc3RhdGljX2Nhc3Q8TlBJZGVudGlmaWVyKj4obWFsbG9j
KHNpemVvZihOUElkZW50aWZpZXIpICogc2l6ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfYXJyYXkuY3BwCmluZGV4IDAyMjIxOTA1YzQwZTZlZGZlZDU3OTk5ZWIyMzVmNTg5MWE3YTJl
MDguLmRjNzU4YjM1ODQ1Y2YxYmY0MmY2MWFlZDQ3NDY1ODQxMzA1MzE3Y2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBSdW50
aW1lQXJyYXk6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXIKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
CiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkpOwog
Ci0gICAgaWYgKHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpCisgICAgaWYg
KG1vZGUuaW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKQogICAgICAgICBwcm9wZXJ0eU5hbWVz
LmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKTsKIAogICAgIEpTT2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCmluZGV4IGNhZGU5ZTFlOWZkZjdiNmY2NDEwODVk
YjQ3MDNhYjg0MzM4NTNhNmQuLjA4NjBmOWY2MWZlZmU4MWEwYjhmZmM0ZGI4YzIxYjMxM2I5YzY5
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KQEAgLTEyMzEsNyArMTIzMSw3IEBA
IGJvb2wgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjplbnVtZXJhdGUodWludDMyX3Qgb2Jq
ZWN0SUQsIGRhdGFfdCYgcmVzdWx0RGF0CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAg
CiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKLSAgICBvYmplY3Qt
Pm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxl
KCktPmdldFByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJh
dGlvbk1vZGUoKSk7CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXkqPiBhcnJheSA9IGFk
b3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzLnNpemUoKTsgaSsrKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAK
aW5kZXggZWQ3ZDdmNmIzMzRiMmNmZmJkYTEzNzFhMjJhNWY0OTMwOWU1YTk5Ny4uMjBkYzRkOGZi
NGI5OTQ5Mzc4YzBlZDRjMzRiMGM1MjlkMzExNzkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcApAQCAt
MjQwLDcgKzI0MCw3IEBAIGJvb2wgTlBKU09iamVjdDo6ZW51bWVyYXRlKE5QSWRlbnRpZmllcioq
IGlkZW50aWZpZXJzLCB1aW50MzJfdCogaWRlbnRpZmllckNvdW50CiAgICAgSlNMb2NrSG9sZGVy
IGxvY2soZXhlYyk7CiAKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMp
OwotICAgIG1fanNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMobV9qc09i
amVjdC5nZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGll
cyk7CisgICAgbV9qc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyhtX2pz
T2JqZWN0LmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUoKSk7CiAK
ICAgICBOUElkZW50aWZpZXIqIG5hbWVJZGVudGlmaWVycyA9IG5wbk1lbU5ld0FycmF5PE5QSWRl
bnRpZmllcj4ocHJvcGVydHlOYW1lcy5zaXplKCkpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>