<?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>214160</bug_id>
          
          <creation_ts>2020-07-09 13:55:11 -0700</creation_ts>
          <short_desc>[Bindings] Add default value support for union types in dictionary members</short_desc>
          <delta_ts>2020-07-10 12:40:15 -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>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>cdumez</cc>
    
    <cc>clark_wang</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1670261</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-07-09 13:55:11 -0700</bug_when>
    <thetext>Add default value support for union types in dictionary members. This is needed for the WebAudio Specification:
- https://www.w3.org/TR/webaudio/#AudioContextOptions (AudioContextOptions.latencyHint)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670269</commentid>
    <comment_count>1</comment_count>
      <attachid>403916</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-07-09 14:05:32 -0700</bug_when>
    <thetext>Created attachment 403916
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670275</commentid>
    <comment_count>2</comment_count>
      <attachid>403916</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-09 14:13:07 -0700</bug_when>
    <thetext>Comment on attachment 403916
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2214
&gt; +    # In case of union types, assume the type of the default value has same type as first type in the union.
&gt; +    $type = (GetFlattenedMemberTypes($type))[0] if $type-&gt;isUnion and !($defaultValue eq &quot;null&quot; &amp;&amp; $type-&gt;isNullable);

Is this a WebIDL requirement?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670276</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-07-09 14:14:51 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #2)
&gt; Comment on attachment 403916 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=403916&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2214
&gt; &gt; +    # In case of union types, assume the type of the default value has same type as first type in the union.
&gt; &gt; +    $type = (GetFlattenedMemberTypes($type))[0] if $type-&gt;isUnion and !($defaultValue eq &quot;null&quot; &amp;&amp; $type-&gt;isNullable);
&gt; 
&gt; Is this a WebIDL requirement?

Good question. I don&apos;t think so but I&apos;ll check the spec right now. I did this because trying to do better would likely be a decent amount more code and this unblocks our intern working on Web Audio.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670279</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-07-09 14:21:07 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #3)
&gt; (In reply to Sam Weinig from comment #2)
&gt; &gt; Comment on attachment 403916 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=403916&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2214
&gt; &gt; &gt; +    # In case of union types, assume the type of the default value has same type as first type in the union.
&gt; &gt; &gt; +    $type = (GetFlattenedMemberTypes($type))[0] if $type-&gt;isUnion and !($defaultValue eq &quot;null&quot; &amp;&amp; $type-&gt;isNullable);
&gt; &gt; 
&gt; &gt; Is this a WebIDL requirement?
&gt; 
&gt; Good question. I don&apos;t think so but I&apos;ll check the spec right now. I did
&gt; this because trying to do better would likely be a decent amount more code
&gt; and this unblocks our intern working on Web Audio.

I don&apos;t see any such restriction in the Web IDL specification. This is a simplification on my part so that we can generate the correct code with minor or no IDL changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670286</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-09 14:32:28 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #4)
&gt; (In reply to Chris Dumez from comment #3)
&gt; &gt; (In reply to Sam Weinig from comment #2)
&gt; &gt; &gt; Comment on attachment 403916 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=403916&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2214
&gt; &gt; &gt; &gt; +    # In case of union types, assume the type of the default value has same type as first type in the union.
&gt; &gt; &gt; &gt; +    $type = (GetFlattenedMemberTypes($type))[0] if $type-&gt;isUnion and !($defaultValue eq &quot;null&quot; &amp;&amp; $type-&gt;isNullable);
&gt; &gt; &gt; 
&gt; &gt; &gt; Is this a WebIDL requirement?
&gt; &gt; 
&gt; &gt; Good question. I don&apos;t think so but I&apos;ll check the spec right now. I did
&gt; &gt; this because trying to do better would likely be a decent amount more code
&gt; &gt; and this unblocks our intern working on Web Audio.
&gt; 
&gt; I don&apos;t see any such restriction in the Web IDL specification. This is a
&gt; simplification on my part so that we can generate the correct code with
&gt; minor or no IDL changes.

Seems like this will lead to confusing error cases if someone doesn&apos;t know about this restriction. What do you see as the complexity of getting this fully supported?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670289</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-07-09 14:38:50 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #5)
&gt; (In reply to Chris Dumez from comment #4)
&gt; &gt; (In reply to Chris Dumez from comment #3)
&gt; &gt; &gt; (In reply to Sam Weinig from comment #2)
&gt; &gt; &gt; &gt; Comment on attachment 403916 [details]
&gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; View in context:
&gt; &gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=403916&amp;action=review
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2214
&gt; &gt; &gt; &gt; &gt; +    # In case of union types, assume the type of the default value has same type as first type in the union.
&gt; &gt; &gt; &gt; &gt; +    $type = (GetFlattenedMemberTypes($type))[0] if $type-&gt;isUnion and !($defaultValue eq &quot;null&quot; &amp;&amp; $type-&gt;isNullable);
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Is this a WebIDL requirement?
&gt; &gt; &gt; 
&gt; &gt; &gt; Good question. I don&apos;t think so but I&apos;ll check the spec right now. I did
&gt; &gt; &gt; this because trying to do better would likely be a decent amount more code
&gt; &gt; &gt; and this unblocks our intern working on Web Audio.
&gt; &gt; 
&gt; &gt; I don&apos;t see any such restriction in the Web IDL specification. This is a
&gt; &gt; simplification on my part so that we can generate the correct code with
&gt; &gt; minor or no IDL changes.
&gt; 
&gt; Seems like this will lead to confusing error cases if someone doesn&apos;t know
&gt; about this restriction.

But currently it does not work already. So my opinion is that this was a step in the right direction, even though definitely not perfect.

&gt; What do you see as the complexity of getting this
&gt; fully supported?

I honestly have no idea how do map a particular default value to a given type in the union. I guess we could implementation some kind of heuristic like:
- If it is quoted, then it is either a DOMString or enum
- If it is false/true, then it is a boolean
- If it is a number, then it is one of the IDL number types
- ...

Seems complex for such an edge case and would likely still not be perfect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670290</commentid>
    <comment_count>7</comment_count>
      <attachid>403916</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-07-09 14:44:08 -0700</bug_when>
    <thetext>Comment on attachment 403916
Patch

Let me try and come up with something slightly better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670293</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-09 14:55:56 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #7)
&gt; Comment on attachment 403916 [details]
&gt; Patch
&gt; 
&gt; Let me try and come up with something slightly better.

These seem like the relevant sections:

https://heycam.github.io/webidl/#dfn-optional-argument-default-value
https://heycam.github.io/webidl/#dfn-constant

I think it should be a pretty small mapping as the grammar only allows the following for default values:


ConstValue ::
    BooleanLiteral
    FloatLiteral
    integer

DefaultValue ::
    ConstValue
    string
    [ ]
    { }
    null


string -&gt; DOMString, ByteString, USVString, enum 
BooleanLiteral -&gt; boolean
integer -&gt; any of the ints
FloatLiteral -&gt; any of the floats
[] -&gt; &quot; sequence type, a nullable type whose inner type is a sequence type or a union type or nullable union type that has a sequence type in its flattened member types&quot;
{} -&gt; &quot; dictionary type, or a union type that has a dictionary type in its flattened member types.&quot;

And bail if it&apos;s ambiguous.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670295</commentid>
    <comment_count>9</comment_count>
      <attachid>403921</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-07-09 15:04:39 -0700</bug_when>
    <thetext>Created attachment 403921
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670296</commentid>
    <comment_count>10</comment_count>
      <attachid>403922</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-07-09 15:06:45 -0700</bug_when>
    <thetext>Created attachment 403922
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670299</commentid>
    <comment_count>11</comment_count>
      <attachid>403922</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-07-09 15:16:43 -0700</bug_when>
    <thetext>Comment on attachment 403922
Patch

Ok. Hopefully less controversial now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670302</commentid>
    <comment_count>12</comment_count>
      <attachid>403922</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-09 15:25:04 -0700</bug_when>
    <thetext>Comment on attachment 403922
Patch

Thank you :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670306</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-09 15:41:26 -0700</bug_when>
    <thetext>Committed r264201: &lt;https://trac.webkit.org/changeset/264201&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 403922.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670308</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-09 15:42:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/65295454&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670521</commentid>
    <comment_count>15</comment_count>
      <attachid>403922</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-10 12:23:09 -0700</bug_when>
    <thetext>Comment on attachment 403922
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2227
&gt;          return &quot;nullptr&quot; if $codeGenerator-&gt;IsWrapperType($type) || $codeGenerator-&gt;IsBufferSourceType($type);
&gt; -        return &quot;String()&quot; if $codeGenerator-&gt;IsStringType($type);
&gt; +        if ($codeGenerator-&gt;IsStringType($type)) {
&gt; +            my $useAtomString = $type-&gt;extendedAttributes-&gt;{AtomString};
&gt; +            return $useAtomString ? &quot;nullAtom()&quot; : &quot;String()&quot;;
&gt; +        }
&gt;          return &quot;WTF::nullopt&quot;;

Can we just use &quot;{ }&quot; for all of these?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2251
&gt; +                return $useAtomString ? &quot;emptyAtom()&quot; : &quot;emptyString()&quot;;

Why not always use emptyAtom()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670532</commentid>
    <comment_count>16</comment_count>
      <attachid>403922</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-07-10 12:39:25 -0700</bug_when>
    <thetext>Comment on attachment 403922
Patch

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

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2251
&gt;&gt; +                return $useAtomString ? &quot;emptyAtom()&quot; : &quot;emptyString()&quot;;
&gt; 
&gt; Why not always use emptyAtom()?

It is used in ternaries:
/Volumes/Work/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/JSHTMLMediaElement.cpp:1764:50: error: conditional expression is ambiguous; &apos;const WTF::AtomString&apos; can be converted to &apos;typename Converter&lt;IDLDOMString&gt;::ReturnType&apos; (aka &apos;WTF::String&apos;) and vice versa
    auto label = argument1.value().isUndefined() ? emptyAtom() : convert&lt;IDLDOMString&gt;(*lexicalGlobalObject, argument1.value());</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670533</commentid>
    <comment_count>17</comment_count>
      <attachid>403922</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-07-10 12:40:15 -0700</bug_when>
    <thetext>Comment on attachment 403922
Patch

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

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2227
&gt;&gt;          return &quot;WTF::nullopt&quot;;
&gt; 
&gt; Can we just use &quot;{ }&quot; for all of these?

It is used in ternaries:
In file included from /Volumes/Work/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/unified-sources/UnifiedSource5.cpp:13:
/Volumes/Work/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/JSDOMImplementation.cpp:259:52: error: initializer list cannot be used on the right hand side of operator &apos;?&apos;
    auto title = argument0.value().isUndefined() ? { } : convert&lt;IDLDOMString&gt;(*lexicalGlobalObject, argument0.value());</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403916</attachid>
            <date>2020-07-09 14:05:32 -0700</date>
            <delta_ts>2020-07-09 15:04:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214160-20200709140531.patch</filename>
            <type>text/plain</type>
            <size>9718</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0MTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDQ4YTEwZGVmZjBhYzlm
ZGNiOWJjNWY5MWY4YTRlMmI3NDRhYTI3My4uZTdhM2VmMmIzNTkwZDhjOWFjMWU0M2E4NDdjODQ1
MDAyZjVmN2MxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTA3LTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW0JpbmRpbmdzXSBBZGQgZGVm
YXVsdCB2YWx1ZSBzdXBwb3J0IGZvciB1bmlvbiB0eXBlcyBpbiBkaWN0aW9uYXJ5IG1lbWJlcnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDE2MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBkZWZh
dWx0IHZhbHVlIHN1cHBvcnQgZm9yIHVuaW9uIHR5cGVzIGluIGRpY3Rpb25hcnkgbWVtYmVycy4g
VGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBXZWJBdWRpbyBzcGVjaWZpY2F0aW9uOgorICAgICAgICAt
IGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdWRpby8jQXVkaW9Db250ZXh0T3B0aW9ucworICAg
ICAgICAiIiIKKyAgICAgICAgKEF1ZGlvQ29udGV4dExhdGVuY3lDYXRlZ29yeSBvciBkb3VibGUp
IGxhdGVuY3lIaW50ID0gImludGVyYWN0aXZlIjsKKyAgICAgICAgIiIiCisKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlRGVm
YXVsdFZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRXaXRoT3B0aW9uYWxVbmlvbjFCb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y29udmVydERpY3Rpb25hcnk8RGljdGlvbmFyeUltcGxOYW1lPik6CisgICAgICAgIChXZWJDb3Jl
Ojpjb252ZXJ0RGljdGlvbmFyeVRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuaWRsOgorCiAyMDIwLTA3LTA5ICBFcmljIENhcmxz
b24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlc2V0IEFWU3lzdGVtQ29u
dHJvbGxlcl9QSURUb0luaGVyaXRBcHBsaWNhdGlvblN0YXRlRnJvbSB3aGVuIG1lZGlhc2VydmVy
ZCBkaWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCmluZGV4IGM1NDA3NjVmZTIxNTZiZTBmYmE4MmViMDY2NmI0MTg0ZTQ5YWZiZjcu
LjI5NDhiNTc0NDM1YTJjMjRmNDQ4MzJiZGQ5NGJlMDViNTU1YjA4MTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0yMjEw
LDYgKzIyMTAsOSBAQCBzdWIgR2VuZXJhdGVEZWZhdWx0VmFsdWUKIHsKICAgICBteSAoJHR5cGVT
Y29wZSwgJGNvbnRleHQsICR0eXBlLCAkZGVmYXVsdFZhbHVlKSA9IEBfOwogCisgICAgIyBJbiBj
YXNlIG9mIHVuaW9uIHR5cGVzLCBhc3N1bWUgdGhlIHR5cGUgb2YgdGhlIGRlZmF1bHQgdmFsdWUg
aGFzIHNhbWUgdHlwZSBhcyBmaXJzdCB0eXBlIGluIHRoZSB1bmlvbi4KKyAgICAkdHlwZSA9IChH
ZXRGbGF0dGVuZWRNZW1iZXJUeXBlcygkdHlwZSkpWzBdIGlmICR0eXBlLT5pc1VuaW9uIGFuZCAh
KCRkZWZhdWx0VmFsdWUgZXEgIm51bGwiICYmICR0eXBlLT5pc051bGxhYmxlKTsKKwogICAgIGlm
ICgkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCR0eXBlKSkgewogICAgICAgICBteSAkdXNl
QXRvbVN0cmluZyA9ICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntBdG9tU3RyaW5nfTsKICAg
ICAgICAgaWYgKCRkZWZhdWx0VmFsdWUgZXEgIm51bGwiKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGYwMjNh
YmIwYmQ3Y2JlY2ZlYzZlMWQ5OTFkZGU1ZmEwMDhmZDA1ODguLmEzOTNiNTc4ZDEzZjgyOGFmZjMz
OWE0ZjY1Yzc5OTc5MTU5Y2RlMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC04MDg2LDcgKzgwODYsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZFdpdGhPcHRpb25hbAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEVuc3VyZVN0aWxsQWxp
dmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwotICAgIGF1dG8gb2Jq
ZWN0T3JOb2RlID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IHRydWUgOiBjb252
ZXJ0PElETFVuaW9uPElETERPTVN0cmluZywgSURMQm9vbGVhbj4+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CisgICAgYXV0byBvYmplY3RPck5vZGUgPSBhcmd1bWVu
dDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gdHJ1ZSA6IGNvbnZlcnQ8SURMVW5pb248SURMQm9v
bGVhbiwgSURMRE9NU3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1
ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgIGltcGwub3ZlcmxvYWRXaXRoT3B0aW9uYWxVbmlvbihXVEZNb3ZlKG9iamVjdE9y
Tm9kZSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Rh
bmRhbG9uZURpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5LmNwcAppbmRleCBiYzY1MjBkOWViMDBj
MTgxYTZkMjc3ZTM5YzYyNTkyM2U2NDFmMDkxLi5hMTc5ZGNjY2E2NzhiYjQ3MTBmZjQyNjQzMWZk
MjE1NTQ5Njk0MjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5j
cHAKQEAgLTI3LDggKzI3LDEwIEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJK
U0RPTUNvbnZlcnRCb29sZWFuLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0Q2FsbGJhY2tzLmgi
CisjaW5jbHVkZSAiSlNET01Db252ZXJ0TnVsbGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZl
cnROdW1iZXJzLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgorI2luY2x1ZGUg
IkpTRE9NQ29udmVydFVuaW9uLmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKICNp
bmNsdWRlICJKU1ZvaWRDYWxsYmFjay5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC0zNiw2
ICszOCw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmcuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtODcsNiArOTAsMTggQEAgdGVtcGxhdGU8PiBEaWN0aW9uYXJ5SW1wbE5hbWUg
Y29udmVydERpY3Rpb25hcnk8RGljdGlvbmFyeUltcGxOYW1lPihKU0dsb2JhbE9iamUKICAgICAg
ICAgcmVzdWx0LmVudW1NZW1iZXIgPSBjb252ZXJ0PElETEVudW1lcmF0aW9uPFRlc3RTdGFuZGFs
b25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgZW51bU1lbWJlclZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KKyAgICBKU1ZhbHVlIG51bGxhYmxlVW5pb25XaXRo
TnVsbERlZmF1bHRWYWx1ZVZhbHVlOworICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKKyAgICAg
ICAgbnVsbGFibGVVbmlvbldpdGhOdWxsRGVmYXVsdFZhbHVlVmFsdWUgPSBqc1VuZGVmaW5lZCgp
OworICAgIGVsc2UgeworICAgICAgICBudWxsYWJsZVVuaW9uV2l0aE51bGxEZWZhdWx0VmFsdWVW
YWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAibnVsbGFibGVVbmlvbldpdGhOdWxsRGVmYXVsdFZhbHVlIikpOworICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorICAgIGlmICgh
bnVsbGFibGVVbmlvbldpdGhOdWxsRGVmYXVsdFZhbHVlVmFsdWUuaXNVbmRlZmluZWQoKSkgewor
ICAgICAgICByZXN1bHQubnVsbGFibGVVbmlvbldpdGhOdWxsRGVmYXVsdFZhbHVlID0gY29udmVy
dDxJRExOdWxsYWJsZTxJRExVbmlvbjxJRExET01TdHJpbmcsIElETEJvb2xlYW4+Pj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgbnVsbGFibGVVbmlvbldpdGhOdWxsRGVmYXVsdFZhbHVlVmFsdWUpOwor
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfSBlbHNl
CisgICAgICAgIHJlc3VsdC5udWxsYWJsZVVuaW9uV2l0aE51bGxEZWZhdWx0VmFsdWUgPSBXVEY6
Om51bGxvcHQ7CiAjaWYgRU5BQkxFKENvbmRpdGlvbmFsMTMpIHx8IEVOQUJMRShDb25kaXRpb25h
bDE0KQogICAgIEpTVmFsdWUgcGFydGlhbEJvb2xlYW5NZW1iZXJWYWx1ZTsKICAgICBpZiAoaXNO
dWxsT3JVbmRlZmluZWQpCkBAIC0yMDUsNiArMjIwLDE4IEBAIHRlbXBsYXRlPD4gRGljdGlvbmFy
eUltcGxOYW1lIGNvbnZlcnREaWN0aW9uYXJ5PERpY3Rpb25hcnlJbXBsTmFtZT4oSlNHbG9iYWxP
YmplCiAgICAgICAgIHJlc3VsdC5zdHJpbmdNZW1iZXIgPSBjb252ZXJ0PElETERPTVN0cmluZz4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgc3RyaW5nTWVtYmVyVmFsdWUpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQorICAgIEpTVmFsdWUgdW5pb25N
ZW1iZXJXaXRoRGVmYXVsdFZhbHVlVmFsdWU7CisgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQor
ICAgICAgICB1bmlvbk1lbWJlcldpdGhEZWZhdWx0VmFsdWVWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7
CisgICAgZWxzZSB7CisgICAgICAgIHVuaW9uTWVtYmVyV2l0aERlZmF1bHRWYWx1ZVZhbHVlID0g
b2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJ1bmlvbk1lbWJlcldpdGhEZWZhdWx0VmFsdWUiKSk7CisgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgaWYgKCF1bmlvbk1lbWJlcldp
dGhEZWZhdWx0VmFsdWVWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIHJlc3VsdC51bmlv
bk1lbWJlcldpdGhEZWZhdWx0VmFsdWUgPSBjb252ZXJ0PElETFVuaW9uPElETEVudW1lcmF0aW9u
PFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxl
PiwgSURMRG91YmxlPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdW5pb25NZW1iZXJXaXRoRGVmYXVs
dFZhbHVlVmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsg
fSk7CisgICAgfSBlbHNlCisgICAgICAgIHJlc3VsdC51bmlvbk1lbWJlcldpdGhEZWZhdWx0VmFs
dWUgPSBUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVudW1JblN0YW5kYWxvbmVEaWN0aW9uYXJ5
RmlsZTo6RW51bVZhbHVlMTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yMjYsNiArMjUz
LDggQEAgSlNDOjpKU09iamVjdCogY29udmVydERpY3Rpb25hcnlUb0pTKEpTQzo6SlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEoKICAgICAgICAgYXV0byBlbnVtTWVtYmVyVmFs
dWUgPSB0b0pTPElETEVudW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUlu
U3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgSURMRW51bWVy
YXRpb248VGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVtSW5TdGFuZGFsb25lRGljdGlvbmFy
eUZpbGU+OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5lbnVtTWVtYmVyKSk7
CiAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJlbnVtTWVtYmVyIiksIGVudW1NZW1iZXJWYWx1ZSk7CiAgICAgfQorICAgIGF1dG8g
bnVsbGFibGVVbmlvbldpdGhOdWxsRGVmYXVsdFZhbHVlVmFsdWUgPSB0b0pTPElETE51bGxhYmxl
PElETFVuaW9uPElETERPTVN0cmluZywgSURMQm9vbGVhbj4+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCBnbG9iYWxPYmplY3QsIGRpY3Rpb25hcnkubnVsbGFibGVVbmlvbldpdGhOdWxsRGVmYXVsdFZh
bHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAibnVsbGFibGVVbmlvbldpdGhOdWxsRGVmYXVsdFZhbHVlIiksIG51bGxhYmxlVW5p
b25XaXRoTnVsbERlZmF1bHRWYWx1ZVZhbHVlKTsKICNpZiBFTkFCTEUoQ29uZGl0aW9uYWwxMykg
fHwgRU5BQkxFKENvbmRpdGlvbmFsMTQpCiAgICAgaWYgKCFJRExCb29sZWFuOjppc051bGxWYWx1
ZShkaWN0aW9uYXJ5LnBhcnRpYWxCb29sZWFuTWVtYmVyKSkgewogICAgICAgICBhdXRvIHBhcnRp
YWxCb29sZWFuTWVtYmVyVmFsdWUgPSB0b0pTPElETEJvb2xlYW4+KElETEJvb2xlYW46OmV4dHJh
Y3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnBhcnRpYWxCb29sZWFuTWVtYmVyKSk7CkBA
IC0yNzgsNiArMzA3LDggQEAgSlNDOjpKU09iamVjdCogY29udmVydERpY3Rpb25hcnlUb0pTKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEoKICAgICAgICAgYXV0byBz
dHJpbmdNZW1iZXJWYWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0
LCBJRExET01TdHJpbmc6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnN0cmlu
Z01lbWJlcikpOwogICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAic3RyaW5nTWVtYmVyIiksIHN0cmluZ01lbWJlclZhbHVlKTsKICAg
ICB9CisgICAgYXV0byB1bmlvbk1lbWJlcldpdGhEZWZhdWx0VmFsdWVWYWx1ZSA9IHRvSlM8SURM
VW5pb248SURMRW51bWVyYXRpb248VGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVtSW5TdGFu
ZGFsb25lRGljdGlvbmFyeUZpbGU+LCBJRExEb3VibGU+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QsIGRpY3Rpb25hcnkudW5pb25NZW1iZXJXaXRoRGVmYXVsdFZhbHVlKTsKKyAg
ICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
dW5pb25NZW1iZXJXaXRoRGVmYXVsdFZhbHVlIiksIHVuaW9uTWVtYmVyV2l0aERlZmF1bHRWYWx1
ZVZhbHVlKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggNTEwMjNmY2MwZmI1YmRhMDMy
YzBiMTEzZTQwMzhlMjEyZGRiY2FkNS4uZmU0MTU0ZDExMWU1NDk0ZDJiYTg3ZDkxZTA5Y2ExYWQw
OGZjZmI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0T2JqLmlkbApAQCAtMzE2LDcgKzMxNiw3IEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGln
aCIsICJraW5kYS1sb3ciIH07CiAgICAgdm9pZCBvdmVybG9hZFdpdGhOdWxsYWJsZVVuaW9uKChU
ZXN0T2JqIG9yIFRlc3ROb2RlKT8gb2JqZWN0T3JOb2RlKTsKICAgICB2b2lkIG92ZXJsb2FkV2l0
aE51bGxhYmxlVW5pb24obG9uZyBpbmRleCk7CiAKLSAgICB2b2lkIG92ZXJsb2FkV2l0aE9wdGlv
bmFsVW5pb24ob3B0aW9uYWwgKERPTVN0cmluZyBvciBib29sZWFuKSBvYmplY3RPck5vZGUgPSB0
cnVlKTsKKyAgICB2b2lkIG92ZXJsb2FkV2l0aE9wdGlvbmFsVW5pb24ob3B0aW9uYWwgKGJvb2xl
YW4gb3IgRE9NU3RyaW5nKSBvYmplY3RPck5vZGUgPSB0cnVlKTsKICAgICB2b2lkIG92ZXJsb2Fk
V2l0aE9wdGlvbmFsVW5pb24obG9uZyBpbmRleCk7CiAKICAgICB2b2lkIG92ZXJsb2FkV2l0aE51
bGxhYmxlTm9uRGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXIoVGVzdE9iaj8gb2JqLCBUZXN0Tm9kZSBu
b2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5pZGwKaW5kZXggZjY4ZGFmY2Q0OWNk
YTliN2FkNzE0MjFlMWQ4OTM2YTM3OTBhYzA2My4uNTM1ZWU2NjY2MzYzZGZkMDczM2EyOTg0NDRh
ZDE0M2FiMWYwMWYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5pZGwKQEAgLTM4
LDQgKzM4LDYgQEAgZW51bSBUZXN0RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlIHsgImVu
dW1WYWx1ZTEiLCAiZW51bVZhbHVlMiIgfTsKICAgICBET01TdHJpbmcgc3RyaW5nTWVtYmVyOwog
ICAgIFRlc3RFbnVtSW5TdGFuZGFsb25lRGljdGlvbmFyeUZpbGUgZW51bU1lbWJlcjsKICAgICBW
b2lkQ2FsbGJhY2sgY2FsbGJhY2tNZW1iZXI7CisgICAgKFRlc3RFbnVtSW5TdGFuZGFsb25lRGlj
dGlvbmFyeUZpbGUgb3IgZG91YmxlKSB1bmlvbk1lbWJlcldpdGhEZWZhdWx0VmFsdWUgPSAiZW51
bVZhbHVlMSI7CisgICAgKERPTVN0cmluZyBvciBib29sZWFuKT8gbnVsbGFibGVVbmlvbldpdGhO
dWxsRGVmYXVsdFZhbHVlID0gbnVsbDsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403921</attachid>
            <date>2020-07-09 15:04:39 -0700</date>
            <delta_ts>2020-07-09 15:06:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214160-20200709150439.patch</filename>
            <type>text/plain</type>
            <size>11755</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0MTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzZmYWY0NzE2YzhjYzlm
MGRjZjE3ZDRkY2Y1MmIwZmU1Yjk4ODhlNy4uMTU0Y2JkZGE5NWExMjEyMGJlMDA0Y2YyMWI5OThm
ZTA3MWY5OWRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTA3LTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW0JpbmRpbmdzXSBBZGQgZGVm
YXVsdCB2YWx1ZSBzdXBwb3J0IGZvciB1bmlvbiB0eXBlcyBpbiBkaWN0aW9uYXJ5IG1lbWJlcnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDE2MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBkZWZh
dWx0IHZhbHVlIHN1cHBvcnQgZm9yIHVuaW9uIHR5cGVzIGluIGRpY3Rpb25hcnkgbWVtYmVycy4g
VGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBXZWJBdWRpbyBzcGVjaWZpY2F0aW9uOgorICAgICAgICAt
IGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdWRpby8jQXVkaW9Db250ZXh0T3B0aW9ucworICAg
ICAgICAiIiIKKyAgICAgICAgKEF1ZGlvQ29udGV4dExhdGVuY3lDYXRlZ29yeSBvciBkb3VibGUp
IGxhdGVuY3lIaW50ID0gImludGVyYWN0aXZlIjsKKyAgICAgICAgIiIiCisKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlRGVm
YXVsdFZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRXaXRoT3B0aW9uYWxVbmlvbjFCb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y29udmVydERpY3Rpb25hcnk8RGljdGlvbmFyeUltcGxOYW1lPik6CisgICAgICAgIChXZWJDb3Jl
Ojpjb252ZXJ0RGljdGlvbmFyeVRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuaWRsOgorCiAyMDIwLTA3LTA5ICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFmdGVyIGEgc2Nyb2xsIGdl
c3R1cmUsIGNvbnRlbnQgY2hhbmdlcyBkb24ndCB0cmlnZ2VyIHJlLXNuYXBwaW5nIHdpdGggc2Ny
b2xsIHNuYXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KaW5kZXggYzU0MDc2NWZlMjE1NmJlMGZiYTgyZWIwNjY2YjQxODRlNDlhZmJm
Ny4uZTgwYzRlNjA2MWFhZmNjODFlMTBhMjEyYTYzYjlhZjNkY2Y4OTZkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTIy
MTAsMjggKzIyMTAsNiBAQCBzdWIgR2VuZXJhdGVEZWZhdWx0VmFsdWUKIHsKICAgICBteSAoJHR5
cGVTY29wZSwgJGNvbnRleHQsICR0eXBlLCAkZGVmYXVsdFZhbHVlKSA9IEBfOwogCi0gICAgaWYg
KCRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUpKSB7Ci0gICAgICAgIG15ICR1c2VB
dG9tU3RyaW5nID0gJHR5cGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0F0b21TdHJpbmd9OwotICAg
ICAgICBpZiAoJGRlZmF1bHRWYWx1ZSBlcSAibnVsbCIpIHsKLSAgICAgICAgICAgIHJldHVybiAk
dXNlQXRvbVN0cmluZyA/ICJudWxsQXRvbSgpIiA6ICJTdHJpbmcoKSI7Ci0gICAgICAgIH0gZWxz
aWYgKCRkZWZhdWx0VmFsdWUgZXEgIlwiXCIiKSB7Ci0gICAgICAgICAgICByZXR1cm4gJHVzZUF0
b21TdHJpbmcgPyAiZW1wdHlBdG9tKCkiIDogImVtcHR5U3RyaW5nKCkiOwotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgcmV0dXJuICR1c2VBdG9tU3RyaW5nID8gIkF0b21TdHJpbmcoJHtk
ZWZhdWx0VmFsdWV9LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkiIDogIiR7ZGVm
YXVsdFZhbHVlfV9zIjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICgkY29kZUdlbmVyYXRv
ci0+SXNFbnVtVHlwZSgkdHlwZSkpIHsKLSAgICAgICAgIyBGSVhNRTogV291bGQgYmUgbmljZSB0
byByZXBvcnQgYW4gZXJyb3IgaWYgdGhlIHZhbHVlIGRvZXMgbm90IGhhdmUgcXVvdGUgbWFya3Mg
YXJvdW5kIGl0LgotICAgICAgICAjIEZJWE1FOiBXb3VsZCBiZSBuaWNlIHRvIHJlcG9ydCBhbiBl
cnJvciBpZiB0aGUgdmFsdWUgaXMgbm90IG9uZSBvZiB0aGUgZW51bWVyYXRpb24gdmFsdWVzLgot
ICAgICAgICBpZiAoJGRlZmF1bHRWYWx1ZSBlcSAibnVsbCIpIHsKLSAgICAgICAgICAgIGRpZSBp
ZiAhJHR5cGUtPmlzTnVsbGFibGU7Ci0gICAgICAgICAgICByZXR1cm4gIldURjo6bnVsbG9wdCI7
Ci0gICAgICAgIH0KLSAgICAgICAgbXkgJGNsYXNzTmFtZSA9IEdldEVudW1lcmF0aW9uQ2xhc3NO
YW1lKCR0eXBlLCAkdHlwZVNjb3BlKTsKLSAgICAgICAgbXkgJGVudW1lcmF0aW9uVmFsdWVOYW1l
ID0gR2V0RW51bWVyYXRpb25WYWx1ZU5hbWUoc3Vic3RyKCRkZWZhdWx0VmFsdWUsIDEsIC0xKSk7
Ci0gICAgICAgIHJldHVybiAkY2xhc3NOYW1lIC4gIjo6IiAuICRlbnVtZXJhdGlvblZhbHVlTmFt
ZTsKLSAgICB9CiAgICAgaWYgKCRkZWZhdWx0VmFsdWUgZXEgIm51bGwiKSB7CiAgICAgICAgIGlm
ICgkdHlwZS0+aXNVbmlvbikgewogICAgICAgICAgICAgcmV0dXJuICJXVEY6Om51bGxvcHQiIGlm
ICR0eXBlLT5pc051bGxhYmxlOwpAQCAtMjI0Miw3ICsyMjIwLDEwIEBAIHN1YiBHZW5lcmF0ZURl
ZmF1bHRWYWx1ZQogCiAgICAgICAgIHJldHVybiAianNOdWxsKCkiIGlmICR0eXBlLT5uYW1lIGVx
ICJhbnkiOwogICAgICAgICByZXR1cm4gIm51bGxwdHIiIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1dy
YXBwZXJUeXBlKCR0eXBlKSB8fCAkY29kZUdlbmVyYXRvci0+SXNCdWZmZXJTb3VyY2VUeXBlKCR0
eXBlKTsKLSAgICAgICAgcmV0dXJuICJTdHJpbmcoKSIgaWYgJGNvZGVHZW5lcmF0b3ItPklzU3Ry
aW5nVHlwZSgkdHlwZSk7CisgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBl
KCR0eXBlKSkgeworICAgICAgICAgICAgbXkgJHVzZUF0b21TdHJpbmcgPSAkdHlwZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57QXRvbVN0cmluZ307CisgICAgICAgICAgICByZXR1cm4gJHVzZUF0b21T
dHJpbmcgPyAibnVsbEF0b20oKSIgOiAiU3RyaW5nKCkiOworICAgICAgICB9CiAgICAgICAgIHJl
dHVybiAiV1RGOjpudWxsb3B0IjsKICAgICB9CiAKQEAgLTIyNTQsNiArMjIzNSwzMiBAQCBzdWIg
R2VuZXJhdGVEZWZhdWx0VmFsdWUKICAgICByZXR1cm4gImpzVW5kZWZpbmVkKCkiIGlmICRkZWZh
dWx0VmFsdWUgZXEgInVuZGVmaW5lZCI7CiAgICAgcmV0dXJuICJQTmFOIiBpZiAkZGVmYXVsdFZh
bHVlIGVxICJOYU4iOwogCisgICAgaWYgKHN1YnN0cigkZGVmYXVsdFZhbHVlLCAwLCAxKSBlcSAi
XCIiKSB7CisgICAgICAgICMgRGVmYXVsdCBwYXJhbWV0ZXIgaXMgYSBxdW90ZWQgc3RyaW5nIHNv
IHRoZSB0eXBlIHNob3VsZCBiZSBhIERPTVN0cmluZyBvciBhbiBlbnVtLgorICAgICAgICBpZiAo
JHR5cGUtPmlzVW5pb24pIHsKKyAgICAgICAgICAgIGZvcmVhY2ggbXkgJG1lbWJlclR5cGUgKEdl
dEZsYXR0ZW5lZE1lbWJlclR5cGVzKCR0eXBlKSkgeworICAgICAgICAgICAgICAgIGlmICgkY29k
ZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCRtZW1iZXJUeXBlKSB8fCAkY29kZUdlbmVyYXRvci0+
SXNFbnVtVHlwZSgkbWVtYmVyVHlwZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAk
bWVtYmVyVHlwZTsKKyAgICAgICAgICAgICAgICAgICAgbGFzdDsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5J
c1N0cmluZ1R5cGUoJHR5cGUpKSB7CisgICAgICAgICAgICBteSAkdXNlQXRvbVN0cmluZyA9ICR0
eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntBdG9tU3RyaW5nfTsKKyAgICAgICAgICAgIGlmICgk
ZGVmYXVsdFZhbHVlIGVxICJcIlwiIikgeworICAgICAgICAgICAgICAgIHJldHVybiAkdXNlQXRv
bVN0cmluZyA/ICJlbXB0eUF0b20oKSIgOiAiZW1wdHlTdHJpbmcoKSI7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiAkdXNlQXRvbVN0cmluZyA/ICJBdG9tU3Ry
aW5nKCR7ZGVmYXVsdFZhbHVlfSwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpIiA6
ICIke2RlZmF1bHRWYWx1ZX1fcyI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzRW51bVR5cGUoJHR5cGUpKSB7CisgICAgICAgICAgICBt
eSAkY2xhc3NOYW1lID0gR2V0RW51bWVyYXRpb25DbGFzc05hbWUoJHR5cGUsICR0eXBlU2NvcGUp
OworICAgICAgICAgICAgbXkgJGVudW1lcmF0aW9uVmFsdWVOYW1lID0gR2V0RW51bWVyYXRpb25W
YWx1ZU5hbWUoc3Vic3RyKCRkZWZhdWx0VmFsdWUsIDEsIC0xKSk7CisgICAgICAgICAgICByZXR1
cm4gJGNsYXNzTmFtZSAuICI6OiIgLiAkZW51bWVyYXRpb25WYWx1ZU5hbWU7CisgICAgICAgIH0K
KyAgICB9CisKICAgICByZXR1cm4gJGRlZmF1bHRWYWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFj
ZXIuY3BwCmluZGV4IGU1NjU1OTIyYjE4NTMyZTg2ZjQ2OWY2MDEwMTgyOWRhZmIzNmU5MTAuLjdi
NjAxMGE1NTI5NTQ4ODM1NjE5NjNjYzFjYzUzNmVjNTMwNTQ3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRy
YWNlci5jcHAKQEAgLTUxMiw3ICs1MTIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbgogICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApOwotICAgIGF1dG8gdmFyaWFudERlZmF1bHRBcmcgPSBhcmd1bWVudDAu
dmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gIiIgOiBjb252ZXJ0PElETFVuaW9uPElETEJvb2xlYW4s
IElETEZsb2F0LCBJRExET01TdHJpbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQw
LnZhbHVlKCkpOworICAgIGF1dG8gdmFyaWFudERlZmF1bHRBcmcgPSBhcmd1bWVudDAudmFsdWUo
KS5pc1VuZGVmaW5lZCgpID8gZW1wdHlTdHJpbmcoKSA6IGNvbnZlcnQ8SURMVW5pb248SURMQm9v
bGVhbiwgSURMRmxvYXQsIElETERPTVN0cmluZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1
bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICBpZiAoVU5MSUtFTFkoaW1wbC5jYWxsVHJhY2luZ0FjdGl2ZSgp
KSkKICAgICAgICAgQ2FsbFRyYWNlcjo6dGVzdENhbGxUcmFjZXJJbnRlcmZhY2UoaW1wbCwgInRl
c3RPcGVyYXRpb25XaXRoRGVmYXVsdFZhcmlhbnRBcmd1bWVudCJfcywgeyB2YXJpYW50RGVmYXVs
dEFyZyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuY3BwCmluZGV4
IGJjNjUyMGQ5ZWIwMGMxODFhNmQyNzdlMzljNjI1OTIzZTY0MWYwOTEuLmExNzlkY2NjYTY3OGJi
NDcxMGZmNDI2NDMxZmQyMTU1NDk2OTQyMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxv
bmVEaWN0aW9uYXJ5LmNwcApAQCAtMjcsOCArMjcsMTAgQEAKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkpTRE9NQ29udmVydEJvb2xlYW4uaCIKICNpbmNsdWRlICJKU0RPTUNvbnZl
cnRDYWxsYmFja3MuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnROdWxsYWJsZS5oIgogI2luY2x1
ZGUgIkpTRE9NQ29udmVydE51bWJlcnMuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdz
LmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0VW5pb24uaCIKICNpbmNsdWRlICJKU0RPTUdsb2Jh
bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTVm9pZENhbGxiYWNrLmgiCiAjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKQEAgLTM2LDYgKzM4LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmlu
Zy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09iamVjdENvbnN0cnVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04Nyw2ICs5MCwxOCBAQCB0ZW1wbGF0ZTw+IERpY3Rp
b25hcnlJbXBsTmFtZSBjb252ZXJ0RGljdGlvbmFyeTxEaWN0aW9uYXJ5SW1wbE5hbWU+KEpTR2xv
YmFsT2JqZQogICAgICAgICByZXN1bHQuZW51bU1lbWJlciA9IGNvbnZlcnQ8SURMRW51bWVyYXRp
b248VGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVtSW5TdGFuZGFsb25lRGljdGlvbmFyeUZp
bGU+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBlbnVtTWVtYmVyVmFsdWUpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQorICAgIEpTVmFsdWUgbnVs
bGFibGVVbmlvbldpdGhOdWxsRGVmYXVsdFZhbHVlVmFsdWU7CisgICAgaWYgKGlzTnVsbE9yVW5k
ZWZpbmVkKQorICAgICAgICBudWxsYWJsZVVuaW9uV2l0aE51bGxEZWZhdWx0VmFsdWVWYWx1ZSA9
IGpzVW5kZWZpbmVkKCk7CisgICAgZWxzZSB7CisgICAgICAgIG51bGxhYmxlVW5pb25XaXRoTnVs
bERlZmF1bHRWYWx1ZVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJudWxsYWJsZVVuaW9uV2l0aE51bGxEZWZhdWx0VmFs
dWUiKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAg
ICB9CisgICAgaWYgKCFudWxsYWJsZVVuaW9uV2l0aE51bGxEZWZhdWx0VmFsdWVWYWx1ZS5pc1Vu
ZGVmaW5lZCgpKSB7CisgICAgICAgIHJlc3VsdC5udWxsYWJsZVVuaW9uV2l0aE51bGxEZWZhdWx0
VmFsdWUgPSBjb252ZXJ0PElETE51bGxhYmxlPElETFVuaW9uPElETERPTVN0cmluZywgSURMQm9v
bGVhbj4+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBudWxsYWJsZVVuaW9uV2l0aE51bGxEZWZhdWx0
VmFsdWVWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzdWx0Lm51bGxhYmxlVW5pb25XaXRoTnVsbERlZmF1
bHRWYWx1ZSA9IFdURjo6bnVsbG9wdDsKICNpZiBFTkFCTEUoQ29uZGl0aW9uYWwxMykgfHwgRU5B
QkxFKENvbmRpdGlvbmFsMTQpCiAgICAgSlNWYWx1ZSBwYXJ0aWFsQm9vbGVhbk1lbWJlclZhbHVl
OwogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKQEAgLTIwNSw2ICsyMjAsMTggQEAgdGVtcGxh
dGU8PiBEaWN0aW9uYXJ5SW1wbE5hbWUgY29udmVydERpY3Rpb25hcnk8RGljdGlvbmFyeUltcGxO
YW1lPihKU0dsb2JhbE9iamUKICAgICAgICAgcmVzdWx0LnN0cmluZ01lbWJlciA9IGNvbnZlcnQ8
SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzdHJpbmdNZW1iZXJWYWx1ZSk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CisgICAg
SlNWYWx1ZSB1bmlvbk1lbWJlcldpdGhEZWZhdWx0VmFsdWVWYWx1ZTsKKyAgICBpZiAoaXNOdWxs
T3JVbmRlZmluZWQpCisgICAgICAgIHVuaW9uTWVtYmVyV2l0aERlZmF1bHRWYWx1ZVZhbHVlID0g
anNVbmRlZmluZWQoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgdW5pb25NZW1iZXJXaXRoRGVmYXVs
dFZhbHVlVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInVuaW9uTWVtYmVyV2l0aERlZmF1bHRWYWx1ZSIpKTsKKyAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBpZiAo
IXVuaW9uTWVtYmVyV2l0aERlZmF1bHRWYWx1ZVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAg
ICAgcmVzdWx0LnVuaW9uTWVtYmVyV2l0aERlZmF1bHRWYWx1ZSA9IGNvbnZlcnQ8SURMVW5pb248
SURMRW51bWVyYXRpb248VGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVtSW5TdGFuZGFsb25l
RGljdGlvbmFyeUZpbGU+LCBJRExEb3VibGU+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bmlvbk1l
bWJlcldpdGhEZWZhdWx0VmFsdWVWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgeyB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzdWx0LnVuaW9uTWVtYmVy
V2l0aERlZmF1bHRWYWx1ZSA9IFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRh
bG9uZURpY3Rpb25hcnlGaWxlOjpFbnVtVmFsdWUxOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
QEAgLTIyNiw2ICsyNTMsOCBAQCBKU0M6OkpTT2JqZWN0KiBjb252ZXJ0RGljdGlvbmFyeVRvSlMo
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSgogICAgICAgICBhdXRv
IGVudW1NZW1iZXJWYWx1ZSA9IHRvSlM8SURMRW51bWVyYXRpb248VGVzdFN0YW5kYWxvbmVEaWN0
aW9uYXJ5OjpFbnVtSW5TdGFuZGFsb25lRGljdGlvbmFyeUZpbGU+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBJRExFbnVtZXJhdGlvbjxUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVudW1JblN0YW5k
YWxvbmVEaWN0aW9uYXJ5RmlsZT46OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5
LmVudW1NZW1iZXIpKTsKICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImVudW1NZW1iZXIiKSwgZW51bU1lbWJlclZhbHVlKTsKICAg
ICB9CisgICAgYXV0byBudWxsYWJsZVVuaW9uV2l0aE51bGxEZWZhdWx0VmFsdWVWYWx1ZSA9IHRv
SlM8SURMTnVsbGFibGU8SURMVW5pb248SURMRE9NU3RyaW5nLCBJRExCb29sZWFuPj4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgZGljdGlvbmFyeS5udWxsYWJsZVVuaW9uV2l0
aE51bGxEZWZhdWx0VmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJudWxsYWJsZVVuaW9uV2l0aE51bGxEZWZhdWx0VmFsdWUi
KSwgbnVsbGFibGVVbmlvbldpdGhOdWxsRGVmYXVsdFZhbHVlVmFsdWUpOwogI2lmIEVOQUJMRShD
b25kaXRpb25hbDEzKSB8fCBFTkFCTEUoQ29uZGl0aW9uYWwxNCkKICAgICBpZiAoIUlETEJvb2xl
YW46OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkucGFydGlhbEJvb2xlYW5NZW1iZXIpKSB7CiAgICAg
ICAgIGF1dG8gcGFydGlhbEJvb2xlYW5NZW1iZXJWYWx1ZSA9IHRvSlM8SURMQm9vbGVhbj4oSURM
Qm9vbGVhbjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkucGFydGlhbEJvb2xl
YW5NZW1iZXIpKTsKQEAgLTI3OCw2ICszMDcsOCBAQCBKU0M6OkpTT2JqZWN0KiBjb252ZXJ0RGlj
dGlvbmFyeVRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSgog
ICAgICAgICBhdXRvIHN0cmluZ01lbWJlclZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KGxleGlj
YWxHbG9iYWxPYmplY3QsIElETERPTVN0cmluZzo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRp
Y3Rpb25hcnkuc3RyaW5nTWVtYmVyKSk7CiAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBK
U0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdHJpbmdNZW1iZXIiKSwgc3RyaW5nTWVt
YmVyVmFsdWUpOwogICAgIH0KKyAgICBhdXRvIHVuaW9uTWVtYmVyV2l0aERlZmF1bHRWYWx1ZVZh
bHVlID0gdG9KUzxJRExVbmlvbjxJRExFbnVtZXJhdGlvbjxUZXN0U3RhbmRhbG9uZURpY3Rpb25h
cnk6OkVudW1JblN0YW5kYWxvbmVEaWN0aW9uYXJ5RmlsZT4sIElETERvdWJsZT4+KGxleGljYWxH
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgZGljdGlvbmFyeS51bmlvbk1lbWJlcldpdGhEZWZh
dWx0VmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJ1bmlvbk1lbWJlcldpdGhEZWZhdWx0VmFsdWUiKSwgdW5pb25NZW1iZXJX
aXRoRGVmYXVsdFZhbHVlVmFsdWUpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0U3RhbmRhbG9uZURp
Y3Rpb25hcnkuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RT
dGFuZGFsb25lRGljdGlvbmFyeS5pZGwKaW5kZXggZjY4ZGFmY2Q0OWNkYTliN2FkNzE0MjFlMWQ4
OTM2YTM3OTBhYzA2My4uNTM1ZWU2NjY2MzYzZGZkMDczM2EyOTg0NDRhZDE0M2FiMWYwMWYxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RTdGFu
ZGFsb25lRGljdGlvbmFyeS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5pZGwKQEAgLTM4LDQgKzM4LDYgQEAgZW51
bSBUZXN0RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlIHsgImVudW1WYWx1ZTEiLCAiZW51
bVZhbHVlMiIgfTsKICAgICBET01TdHJpbmcgc3RyaW5nTWVtYmVyOwogICAgIFRlc3RFbnVtSW5T
dGFuZGFsb25lRGljdGlvbmFyeUZpbGUgZW51bU1lbWJlcjsKICAgICBWb2lkQ2FsbGJhY2sgY2Fs
bGJhY2tNZW1iZXI7CisgICAgKFRlc3RFbnVtSW5TdGFuZGFsb25lRGljdGlvbmFyeUZpbGUgb3Ig
ZG91YmxlKSB1bmlvbk1lbWJlcldpdGhEZWZhdWx0VmFsdWUgPSAiZW51bVZhbHVlMSI7CisgICAg
KERPTVN0cmluZyBvciBib29sZWFuKT8gbnVsbGFibGVVbmlvbldpdGhOdWxsRGVmYXVsdFZhbHVl
ID0gbnVsbDsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403922</attachid>
            <date>2020-07-09 15:06:45 -0700</date>
            <delta_ts>2020-07-09 15:41:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214160-20200709150645.patch</filename>
            <type>text/plain</type>
            <size>11758</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0MTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzZmYWY0NzE2YzhjYzlm
MGRjZjE3ZDRkY2Y1MmIwZmU1Yjk4ODhlNy4uMTU0Y2JkZGE5NWExMjEyMGJlMDA0Y2YyMWI5OThm
ZTA3MWY5OWRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTA3LTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW0JpbmRpbmdzXSBBZGQgZGVm
YXVsdCB2YWx1ZSBzdXBwb3J0IGZvciB1bmlvbiB0eXBlcyBpbiBkaWN0aW9uYXJ5IG1lbWJlcnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDE2MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBkZWZh
dWx0IHZhbHVlIHN1cHBvcnQgZm9yIHVuaW9uIHR5cGVzIGluIGRpY3Rpb25hcnkgbWVtYmVycy4g
VGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBXZWJBdWRpbyBzcGVjaWZpY2F0aW9uOgorICAgICAgICAt
IGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdWRpby8jQXVkaW9Db250ZXh0T3B0aW9ucworICAg
ICAgICAiIiIKKyAgICAgICAgKEF1ZGlvQ29udGV4dExhdGVuY3lDYXRlZ29yeSBvciBkb3VibGUp
IGxhdGVuY3lIaW50ID0gImludGVyYWN0aXZlIjsKKyAgICAgICAgIiIiCisKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlRGVm
YXVsdFZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRXaXRoT3B0aW9uYWxVbmlvbjFCb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y29udmVydERpY3Rpb25hcnk8RGljdGlvbmFyeUltcGxOYW1lPik6CisgICAgICAgIChXZWJDb3Jl
Ojpjb252ZXJ0RGljdGlvbmFyeVRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuaWRsOgorCiAyMDIwLTA3LTA5ICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFmdGVyIGEgc2Nyb2xsIGdl
c3R1cmUsIGNvbnRlbnQgY2hhbmdlcyBkb24ndCB0cmlnZ2VyIHJlLXNuYXBwaW5nIHdpdGggc2Ny
b2xsIHNuYXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KaW5kZXggYzU0MDc2NWZlMjE1NmJlMGZiYTgyZWIwNjY2YjQxODRlNDlhZmJm
Ny4uYjI0OGMwZDk5NjUzYmJjNWUzZDllMzA0YTcxYTE1YzJlNmVjNjk5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTIy
MTAsMjggKzIyMTAsNiBAQCBzdWIgR2VuZXJhdGVEZWZhdWx0VmFsdWUKIHsKICAgICBteSAoJHR5
cGVTY29wZSwgJGNvbnRleHQsICR0eXBlLCAkZGVmYXVsdFZhbHVlKSA9IEBfOwogCi0gICAgaWYg
KCRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUpKSB7Ci0gICAgICAgIG15ICR1c2VB
dG9tU3RyaW5nID0gJHR5cGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0F0b21TdHJpbmd9OwotICAg
ICAgICBpZiAoJGRlZmF1bHRWYWx1ZSBlcSAibnVsbCIpIHsKLSAgICAgICAgICAgIHJldHVybiAk
dXNlQXRvbVN0cmluZyA/ICJudWxsQXRvbSgpIiA6ICJTdHJpbmcoKSI7Ci0gICAgICAgIH0gZWxz
aWYgKCRkZWZhdWx0VmFsdWUgZXEgIlwiXCIiKSB7Ci0gICAgICAgICAgICByZXR1cm4gJHVzZUF0
b21TdHJpbmcgPyAiZW1wdHlBdG9tKCkiIDogImVtcHR5U3RyaW5nKCkiOwotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgcmV0dXJuICR1c2VBdG9tU3RyaW5nID8gIkF0b21TdHJpbmcoJHtk
ZWZhdWx0VmFsdWV9LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkiIDogIiR7ZGVm
YXVsdFZhbHVlfV9zIjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICgkY29kZUdlbmVyYXRv
ci0+SXNFbnVtVHlwZSgkdHlwZSkpIHsKLSAgICAgICAgIyBGSVhNRTogV291bGQgYmUgbmljZSB0
byByZXBvcnQgYW4gZXJyb3IgaWYgdGhlIHZhbHVlIGRvZXMgbm90IGhhdmUgcXVvdGUgbWFya3Mg
YXJvdW5kIGl0LgotICAgICAgICAjIEZJWE1FOiBXb3VsZCBiZSBuaWNlIHRvIHJlcG9ydCBhbiBl
cnJvciBpZiB0aGUgdmFsdWUgaXMgbm90IG9uZSBvZiB0aGUgZW51bWVyYXRpb24gdmFsdWVzLgot
ICAgICAgICBpZiAoJGRlZmF1bHRWYWx1ZSBlcSAibnVsbCIpIHsKLSAgICAgICAgICAgIGRpZSBp
ZiAhJHR5cGUtPmlzTnVsbGFibGU7Ci0gICAgICAgICAgICByZXR1cm4gIldURjo6bnVsbG9wdCI7
Ci0gICAgICAgIH0KLSAgICAgICAgbXkgJGNsYXNzTmFtZSA9IEdldEVudW1lcmF0aW9uQ2xhc3NO
YW1lKCR0eXBlLCAkdHlwZVNjb3BlKTsKLSAgICAgICAgbXkgJGVudW1lcmF0aW9uVmFsdWVOYW1l
ID0gR2V0RW51bWVyYXRpb25WYWx1ZU5hbWUoc3Vic3RyKCRkZWZhdWx0VmFsdWUsIDEsIC0xKSk7
Ci0gICAgICAgIHJldHVybiAkY2xhc3NOYW1lIC4gIjo6IiAuICRlbnVtZXJhdGlvblZhbHVlTmFt
ZTsKLSAgICB9CiAgICAgaWYgKCRkZWZhdWx0VmFsdWUgZXEgIm51bGwiKSB7CiAgICAgICAgIGlm
ICgkdHlwZS0+aXNVbmlvbikgewogICAgICAgICAgICAgcmV0dXJuICJXVEY6Om51bGxvcHQiIGlm
ICR0eXBlLT5pc051bGxhYmxlOwpAQCAtMjI0Miw3ICsyMjIwLDEwIEBAIHN1YiBHZW5lcmF0ZURl
ZmF1bHRWYWx1ZQogCiAgICAgICAgIHJldHVybiAianNOdWxsKCkiIGlmICR0eXBlLT5uYW1lIGVx
ICJhbnkiOwogICAgICAgICByZXR1cm4gIm51bGxwdHIiIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1dy
YXBwZXJUeXBlKCR0eXBlKSB8fCAkY29kZUdlbmVyYXRvci0+SXNCdWZmZXJTb3VyY2VUeXBlKCR0
eXBlKTsKLSAgICAgICAgcmV0dXJuICJTdHJpbmcoKSIgaWYgJGNvZGVHZW5lcmF0b3ItPklzU3Ry
aW5nVHlwZSgkdHlwZSk7CisgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBl
KCR0eXBlKSkgeworICAgICAgICAgICAgbXkgJHVzZUF0b21TdHJpbmcgPSAkdHlwZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57QXRvbVN0cmluZ307CisgICAgICAgICAgICByZXR1cm4gJHVzZUF0b21T
dHJpbmcgPyAibnVsbEF0b20oKSIgOiAiU3RyaW5nKCkiOworICAgICAgICB9CiAgICAgICAgIHJl
dHVybiAiV1RGOjpudWxsb3B0IjsKICAgICB9CiAKQEAgLTIyNTQsNiArMjIzNSwzMiBAQCBzdWIg
R2VuZXJhdGVEZWZhdWx0VmFsdWUKICAgICByZXR1cm4gImpzVW5kZWZpbmVkKCkiIGlmICRkZWZh
dWx0VmFsdWUgZXEgInVuZGVmaW5lZCI7CiAgICAgcmV0dXJuICJQTmFOIiBpZiAkZGVmYXVsdFZh
bHVlIGVxICJOYU4iOwogCisgICAgaWYgKHN1YnN0cigkZGVmYXVsdFZhbHVlLCAwLCAxKSBlcSAi
XCIiKSB7CisgICAgICAgICMgRGVmYXVsdCB2YWx1ZSBpcyBhIHF1b3RlZCBzdHJpbmcgc28gdGhl
IHR5cGUgc2hvdWxkIGJlIGEgRE9NU3RyaW5nIG9yIGFuIGVudW1lcmF0aW9uLgorICAgICAgICBp
ZiAoJHR5cGUtPmlzVW5pb24pIHsKKyAgICAgICAgICAgIGZvcmVhY2ggbXkgJG1lbWJlclR5cGUg
KEdldEZsYXR0ZW5lZE1lbWJlclR5cGVzKCR0eXBlKSkgeworICAgICAgICAgICAgICAgIGlmICgk
Y29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCRtZW1iZXJUeXBlKSB8fCAkY29kZUdlbmVyYXRv
ci0+SXNFbnVtVHlwZSgkbWVtYmVyVHlwZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgJHR5cGUg
PSAkbWVtYmVyVHlwZTsKKyAgICAgICAgICAgICAgICAgICAgbGFzdDsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9y
LT5Jc1N0cmluZ1R5cGUoJHR5cGUpKSB7CisgICAgICAgICAgICBteSAkdXNlQXRvbVN0cmluZyA9
ICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntBdG9tU3RyaW5nfTsKKyAgICAgICAgICAgIGlm
ICgkZGVmYXVsdFZhbHVlIGVxICJcIlwiIikgeworICAgICAgICAgICAgICAgIHJldHVybiAkdXNl
QXRvbVN0cmluZyA/ICJlbXB0eUF0b20oKSIgOiAiZW1wdHlTdHJpbmcoKSI7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiAkdXNlQXRvbVN0cmluZyA/ICJBdG9t
U3RyaW5nKCR7ZGVmYXVsdFZhbHVlfSwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
IiA6ICIke2RlZmF1bHRWYWx1ZX1fcyI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzRW51bVR5cGUoJHR5cGUpKSB7CisgICAgICAgICAg
ICBteSAkY2xhc3NOYW1lID0gR2V0RW51bWVyYXRpb25DbGFzc05hbWUoJHR5cGUsICR0eXBlU2Nv
cGUpOworICAgICAgICAgICAgbXkgJGVudW1lcmF0aW9uVmFsdWVOYW1lID0gR2V0RW51bWVyYXRp
b25WYWx1ZU5hbWUoc3Vic3RyKCRkZWZhdWx0VmFsdWUsIDEsIC0xKSk7CisgICAgICAgICAgICBy
ZXR1cm4gJGNsYXNzTmFtZSAuICI6OiIgLiAkZW51bWVyYXRpb25WYWx1ZU5hbWU7CisgICAgICAg
IH0KKyAgICB9CisKICAgICByZXR1cm4gJGRlZmF1bHRWYWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxU
cmFjZXIuY3BwCmluZGV4IGU1NjU1OTIyYjE4NTMyZTg2ZjQ2OWY2MDEwMTgyOWRhZmIzNmU5MTAu
LjdiNjAxMGE1NTI5NTQ4ODM1NjE5NjNjYzFjYzUzNmVjNTMwNTQ3NDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2Fs
bFRyYWNlci5jcHAKQEAgLTUxMiw3ICs1MTIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbgog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApOwotICAgIGF1dG8gdmFyaWFudERlZmF1bHRBcmcgPSBhcmd1bWVu
dDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gIiIgOiBjb252ZXJ0PElETFVuaW9uPElETEJvb2xl
YW4sIElETEZsb2F0LCBJRExET01TdHJpbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1l
bnQwLnZhbHVlKCkpOworICAgIGF1dG8gdmFyaWFudERlZmF1bHRBcmcgPSBhcmd1bWVudDAudmFs
dWUoKS5pc1VuZGVmaW5lZCgpID8gZW1wdHlTdHJpbmcoKSA6IGNvbnZlcnQ8SURMVW5pb248SURM
Qm9vbGVhbiwgSURMRmxvYXQsIElETERPTVN0cmluZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBh
cmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpZiAoVU5MSUtFTFkoaW1wbC5jYWxsVHJhY2luZ0FjdGl2
ZSgpKSkKICAgICAgICAgQ2FsbFRyYWNlcjo6dGVzdENhbGxUcmFjZXJJbnRlcmZhY2UoaW1wbCwg
InRlc3RPcGVyYXRpb25XaXRoRGVmYXVsdFZhcmlhbnRBcmd1bWVudCJfcywgeyB2YXJpYW50RGVm
YXVsdEFyZyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuY3BwCmlu
ZGV4IGJjNjUyMGQ5ZWIwMGMxODFhNmQyNzdlMzljNjI1OTIzZTY0MWYwOTEuLmExNzlkY2NjYTY3
OGJiNDcxMGZmNDI2NDMxZmQyMTU1NDk2OTQyMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5k
YWxvbmVEaWN0aW9uYXJ5LmNwcApAQCAtMjcsOCArMjcsMTAgQEAKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydEJvb2xlYW4uaCIKICNpbmNsdWRlICJKU0RPTUNv
bnZlcnRDYWxsYmFja3MuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnROdWxsYWJsZS5oIgogI2lu
Y2x1ZGUgIkpTRE9NQ29udmVydE51bWJlcnMuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJp
bmdzLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0VW5pb24uaCIKICNpbmNsdWRlICJKU0RPTUds
b2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTVm9pZENhbGxiYWNrLmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKQEAgLTM2LDYgKzM4LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0
cmluZy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09iamVjdENvbnN0cnVjdG9yLmg+CiAj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4K
IAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04Nyw2ICs5MCwxOCBAQCB0ZW1wbGF0ZTw+IERp
Y3Rpb25hcnlJbXBsTmFtZSBjb252ZXJ0RGljdGlvbmFyeTxEaWN0aW9uYXJ5SW1wbE5hbWU+KEpT
R2xvYmFsT2JqZQogICAgICAgICByZXN1bHQuZW51bU1lbWJlciA9IGNvbnZlcnQ8SURMRW51bWVy
YXRpb248VGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVtSW5TdGFuZGFsb25lRGljdGlvbmFy
eUZpbGU+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBlbnVtTWVtYmVyVmFsdWUpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQorICAgIEpTVmFsdWUg
bnVsbGFibGVVbmlvbldpdGhOdWxsRGVmYXVsdFZhbHVlVmFsdWU7CisgICAgaWYgKGlzTnVsbE9y
VW5kZWZpbmVkKQorICAgICAgICBudWxsYWJsZVVuaW9uV2l0aE51bGxEZWZhdWx0VmFsdWVWYWx1
ZSA9IGpzVW5kZWZpbmVkKCk7CisgICAgZWxzZSB7CisgICAgICAgIG51bGxhYmxlVW5pb25XaXRo
TnVsbERlZmF1bHRWYWx1ZVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJudWxsYWJsZVVuaW9uV2l0aE51bGxEZWZhdWx0
VmFsdWUiKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsK
KyAgICB9CisgICAgaWYgKCFudWxsYWJsZVVuaW9uV2l0aE51bGxEZWZhdWx0VmFsdWVWYWx1ZS5p
c1VuZGVmaW5lZCgpKSB7CisgICAgICAgIHJlc3VsdC5udWxsYWJsZVVuaW9uV2l0aE51bGxEZWZh
dWx0VmFsdWUgPSBjb252ZXJ0PElETE51bGxhYmxlPElETFVuaW9uPElETERPTVN0cmluZywgSURM
Qm9vbGVhbj4+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBudWxsYWJsZVVuaW9uV2l0aE51bGxEZWZh
dWx0VmFsdWVWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
eyB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzdWx0Lm51bGxhYmxlVW5pb25XaXRoTnVsbERl
ZmF1bHRWYWx1ZSA9IFdURjo6bnVsbG9wdDsKICNpZiBFTkFCTEUoQ29uZGl0aW9uYWwxMykgfHwg
RU5BQkxFKENvbmRpdGlvbmFsMTQpCiAgICAgSlNWYWx1ZSBwYXJ0aWFsQm9vbGVhbk1lbWJlclZh
bHVlOwogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKQEAgLTIwNSw2ICsyMjAsMTggQEAgdGVt
cGxhdGU8PiBEaWN0aW9uYXJ5SW1wbE5hbWUgY29udmVydERpY3Rpb25hcnk8RGljdGlvbmFyeUlt
cGxOYW1lPihKU0dsb2JhbE9iamUKICAgICAgICAgcmVzdWx0LnN0cmluZ01lbWJlciA9IGNvbnZl
cnQ8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzdHJpbmdNZW1iZXJWYWx1ZSk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9Cisg
ICAgSlNWYWx1ZSB1bmlvbk1lbWJlcldpdGhEZWZhdWx0VmFsdWVWYWx1ZTsKKyAgICBpZiAoaXNO
dWxsT3JVbmRlZmluZWQpCisgICAgICAgIHVuaW9uTWVtYmVyV2l0aERlZmF1bHRWYWx1ZVZhbHVl
ID0ganNVbmRlZmluZWQoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgdW5pb25NZW1iZXJXaXRoRGVm
YXVsdFZhbHVlVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInVuaW9uTWVtYmVyV2l0aERlZmF1bHRWYWx1ZSIpKTsKKyAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBp
ZiAoIXVuaW9uTWVtYmVyV2l0aERlZmF1bHRWYWx1ZVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAg
ICAgICAgcmVzdWx0LnVuaW9uTWVtYmVyV2l0aERlZmF1bHRWYWx1ZSA9IGNvbnZlcnQ8SURMVW5p
b248SURMRW51bWVyYXRpb248VGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVtSW5TdGFuZGFs
b25lRGljdGlvbmFyeUZpbGU+LCBJRExEb3VibGU+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bmlv
bk1lbWJlcldpdGhEZWZhdWx0VmFsdWVWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzdWx0LnVuaW9uTWVt
YmVyV2l0aERlZmF1bHRWYWx1ZSA9IFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3Rh
bmRhbG9uZURpY3Rpb25hcnlGaWxlOjpFbnVtVmFsdWUxOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKQEAgLTIyNiw2ICsyNTMsOCBAQCBKU0M6OkpTT2JqZWN0KiBjb252ZXJ0RGljdGlvbmFyeVRv
SlMoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSgogICAgICAgICBh
dXRvIGVudW1NZW1iZXJWYWx1ZSA9IHRvSlM8SURMRW51bWVyYXRpb248VGVzdFN0YW5kYWxvbmVE
aWN0aW9uYXJ5OjpFbnVtSW5TdGFuZGFsb25lRGljdGlvbmFyeUZpbGU+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCBJRExFbnVtZXJhdGlvbjxUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVudW1JblN0
YW5kYWxvbmVEaWN0aW9uYXJ5RmlsZT46OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9u
YXJ5LmVudW1NZW1iZXIpKTsKICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImVudW1NZW1iZXIiKSwgZW51bU1lbWJlclZhbHVlKTsK
ICAgICB9CisgICAgYXV0byBudWxsYWJsZVVuaW9uV2l0aE51bGxEZWZhdWx0VmFsdWVWYWx1ZSA9
IHRvSlM8SURMTnVsbGFibGU8SURMVW5pb248SURMRE9NU3RyaW5nLCBJRExCb29sZWFuPj4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgZGljdGlvbmFyeS5udWxsYWJsZVVuaW9u
V2l0aE51bGxEZWZhdWx0VmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6Oklk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJudWxsYWJsZVVuaW9uV2l0aE51bGxEZWZhdWx0VmFs
dWUiKSwgbnVsbGFibGVVbmlvbldpdGhOdWxsRGVmYXVsdFZhbHVlVmFsdWUpOwogI2lmIEVOQUJM
RShDb25kaXRpb25hbDEzKSB8fCBFTkFCTEUoQ29uZGl0aW9uYWwxNCkKICAgICBpZiAoIUlETEJv
b2xlYW46OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkucGFydGlhbEJvb2xlYW5NZW1iZXIpKSB7CiAg
ICAgICAgIGF1dG8gcGFydGlhbEJvb2xlYW5NZW1iZXJWYWx1ZSA9IHRvSlM8SURMQm9vbGVhbj4o
SURMQm9vbGVhbjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkucGFydGlhbEJv
b2xlYW5NZW1iZXIpKTsKQEAgLTI3OCw2ICszMDcsOCBAQCBKU0M6OkpTT2JqZWN0KiBjb252ZXJ0
RGljdGlvbmFyeVRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SgogICAgICAgICBhdXRvIHN0cmluZ01lbWJlclZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KGxl
eGljYWxHbG9iYWxPYmplY3QsIElETERPTVN0cmluZzo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxl
KGRpY3Rpb25hcnkuc3RyaW5nTWVtYmVyKSk7CiAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZt
LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdHJpbmdNZW1iZXIiKSwgc3RyaW5n
TWVtYmVyVmFsdWUpOwogICAgIH0KKyAgICBhdXRvIHVuaW9uTWVtYmVyV2l0aERlZmF1bHRWYWx1
ZVZhbHVlID0gdG9KUzxJRExVbmlvbjxJRExFbnVtZXJhdGlvbjxUZXN0U3RhbmRhbG9uZURpY3Rp
b25hcnk6OkVudW1JblN0YW5kYWxvbmVEaWN0aW9uYXJ5RmlsZT4sIElETERvdWJsZT4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgZGljdGlvbmFyeS51bmlvbk1lbWJlcldpdGhE
ZWZhdWx0VmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJ1bmlvbk1lbWJlcldpdGhEZWZhdWx0VmFsdWUiKSwgdW5pb25NZW1i
ZXJXaXRoRGVmYXVsdFZhbHVlVmFsdWUpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0U3RhbmRhbG9u
ZURpY3Rpb25hcnkuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RTdGFuZGFsb25lRGljdGlvbmFyeS5pZGwKaW5kZXggZjY4ZGFmY2Q0OWNkYTliN2FkNzE0MjFl
MWQ4OTM2YTM3OTBhYzA2My4uNTM1ZWU2NjY2MzYzZGZkMDczM2EyOTg0NDRhZDE0M2FiMWYwMWYx
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RT
dGFuZGFsb25lRGljdGlvbmFyeS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5pZGwKQEAgLTM4LDQgKzM4LDYgQEAg
ZW51bSBUZXN0RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlIHsgImVudW1WYWx1ZTEiLCAi
ZW51bVZhbHVlMiIgfTsKICAgICBET01TdHJpbmcgc3RyaW5nTWVtYmVyOwogICAgIFRlc3RFbnVt
SW5TdGFuZGFsb25lRGljdGlvbmFyeUZpbGUgZW51bU1lbWJlcjsKICAgICBWb2lkQ2FsbGJhY2sg
Y2FsbGJhY2tNZW1iZXI7CisgICAgKFRlc3RFbnVtSW5TdGFuZGFsb25lRGljdGlvbmFyeUZpbGUg
b3IgZG91YmxlKSB1bmlvbk1lbWJlcldpdGhEZWZhdWx0VmFsdWUgPSAiZW51bVZhbHVlMSI7Cisg
ICAgKERPTVN0cmluZyBvciBib29sZWFuKT8gbnVsbGFibGVVbmlvbldpdGhOdWxsRGVmYXVsdFZh
bHVlID0gbnVsbDsKIH07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>