<?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>146547</bug_id>
          
          <creation_ts>2015-07-02 06:53:36 -0700</creation_ts>
          <short_desc>[Streams API] Remove ReadableStream custom constructor</short_desc>
          <delta_ts>2015-07-06 02:03:36 -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>WebCore Misc.</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1106381</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-07-02 06:53:36 -0700</bug_when>
    <thetext>We should remove ReaableStream custom constructor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106385</commentid>
    <comment_count>1</comment_count>
      <attachid>256009</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-07-02 08:07:47 -0700</bug_when>
    <thetext>Created attachment 256009
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106656</commentid>
    <comment_count>2</comment_count>
      <attachid>256087</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-07-03 01:46:36 -0700</bug_when>
    <thetext>Created attachment 256087
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106862</commentid>
    <comment_count>3</comment_count>
      <attachid>256087</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-07-04 09:37:09 -0700</bug_when>
    <thetext>Comment on attachment 256087
Patch

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

&gt; Source/WebCore/Modules/streams/ReadableStream.h:68
&gt; +    static RefPtr&lt;ReadableStream&gt; create(JSC::ExecState&amp;, JSC::JSValue, const Dictionary&amp;);

Why does this return RefPtr instead of Ref? Can it return null?

&gt; Source/WebCore/Modules/streams/ReadableStream.idl:32
&gt; +    Constructor([Default=Undefined] optional any source, [Default=Undefined] optional Dictionary strategy),

Seems a bit wordy. Do we really need “Default=Undefined”? What is the default if it’s not undefined?

&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:210
&gt; +        throwVMError(&amp;state, createDOMException(&amp;state, TypeError));

Should probably be using throwVMTypeError, which should be overloaded as needed if it’s not already. And should have custom message, I think, like all the many other uses of throwVMTypeErrror.

&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:220
&gt; +                throwVMError(&amp;state, createDOMException(&amp;state, TypeError));

Should be using throwVMTypeError, as above. Also, should this check for infinity as well, or only NaN?

&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:224
&gt; +                throwVMError(&amp;state, createDOMException(&amp;state, RangeError));

Should make a helper function throwVMRangeError and use it.

&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:233
&gt; +                throwVMError(&amp;state, createDOMException(&amp;state, TypeError));

Should be using throwVMTypeError, as above.

&gt; Source/WebCore/bindings/js/ReadableJSStream.h:55
&gt;  class ReadableJSStream: public ReadableStream {

Missing space before colon. Also, I think this class should be marked &quot;final&quot;.

&gt; Source/WebCore/bindings/js/ReadableJSStream.h:57
&gt; +    static RefPtr&lt;ReadableStream&gt; create(JSC::ExecState&amp;, JSC::JSValue, const Dictionary&amp;);

The return value should remain specific, ReadableJSStream rather than ReadableStream. The other call site can and should convert from one RefPtr to the other. If you’re worried about the exact code generated we could make sure we have the right kind of move constructor to make that work efficiently with no reference count manipulation.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:4692
&gt; +            if ($codeGenerator-&gt;ExtendedAttributeContains($interface-&gt;extendedAttributes-&gt;{&quot;ConstructorCallWith&quot;}, &quot;ScriptState&quot;)) {
&gt; +                 push(@$outputArray, &quot;    if (UNLIKELY(exec-&gt;hadException()))\n&quot;);
&gt; +                 push(@$outputArray, &quot;        return JSValue::encode(jsUndefined());\n&quot;);
&gt; +            }

I am not sure it’s exactly right that “call with script state” automatically also means “raises exception”.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107025</commentid>
    <comment_count>4</comment_count>
      <attachid>256087</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-07-06 00:01:29 -0700</bug_when>
    <thetext>Comment on attachment 256087
Patch

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

&gt;&gt; Source/WebCore/Modules/streams/ReadableStream.h:68
&gt;&gt; +    static RefPtr&lt;ReadableStream&gt; create(JSC::ExecState&amp;, JSC::JSValue, const Dictionary&amp;);
&gt; 
&gt; Why does this return RefPtr instead of Ref? Can it return null?

It can return null in case an exception is thrown.

&gt;&gt; Source/WebCore/Modules/streams/ReadableStream.idl:32
&gt;&gt; +    Constructor([Default=Undefined] optional any source, [Default=Undefined] optional Dictionary strategy),
&gt; 
&gt; Seems a bit wordy. Do we really need “Default=Undefined”? What is the default if it’s not undefined?

We need to set the parameters as optional according the spec.

If not setting &quot;Default=&quot; explicitly, the binding generator should probably expect the DOM class to provide different methods.
But &quot;optional without default&quot; parameters are apparently not supported yet by the binding generator.

In our case, it is anyway more convenient to use &quot;Default=...&quot; so that the DOM class has just one constructor.

&gt;&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:210
&gt;&gt; +        throwVMError(&amp;state, createDOMException(&amp;state, TypeError));
&gt; 
&gt; Should probably be using throwVMTypeError, which should be overloaded as needed if it’s not already. And should have custom message, I think, like all the many other uses of throwVMTypeErrror.

OK

&gt;&gt; Source/WebCore/bindings/js/ReadableJSStream.h:55
&gt;&gt;  class ReadableJSStream: public ReadableStream {
&gt; 
&gt; Missing space before colon. Also, I think this class should be marked &quot;final&quot;.

OK

&gt;&gt; Source/WebCore/bindings/js/ReadableJSStream.h:57
&gt;&gt; +    static RefPtr&lt;ReadableStream&gt; create(JSC::ExecState&amp;, JSC::JSValue, const Dictionary&amp;);
&gt; 
&gt; The return value should remain specific, ReadableJSStream rather than ReadableStream. The other call site can and should convert from one RefPtr to the other. If you’re worried about the exact code generated we could make sure we have the right kind of move constructor to make that work efficiently with no reference count manipulation.

OK.
I think to recall there is already a move constructor that could do that.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:4692
&gt;&gt; +            }
&gt; 
&gt; I am not sure it’s exactly right that “call with script state” automatically also means “raises exception”.

The same check is done for methods called with ScriptState.
A specific keyword might be used to control this but I am not sure this is actually worth it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107041</commentid>
    <comment_count>5</comment_count>
      <attachid>256198</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-07-06 01:15:27 -0700</bug_when>
    <thetext>Created attachment 256198
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107042</commentid>
    <comment_count>6</comment_count>
      <attachid>256199</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-07-06 01:18:32 -0700</bug_when>
    <thetext>Created attachment 256199
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107057</commentid>
    <comment_count>7</comment_count>
      <attachid>256199</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-06 02:03:31 -0700</bug_when>
    <thetext>Comment on attachment 256199
Patch for landing

Clearing flags on attachment: 256199

Committed r186323: &lt;http://trac.webkit.org/changeset/186323&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107058</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-06 02:03:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256009</attachid>
            <date>2015-07-02 08:07:47 -0700</date>
            <delta_ts>2015-07-03 01:46:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146547-20150702170652.patch</filename>
            <type>text/plain</type>
            <size>14803</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2MjIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjY2MDIxMWVkNjIxZmE1
MjAwODgwMGY1ZGZiNWZjYTEzZDAwNTA1Yy4uYThjODBiNTY5NDgwYzNlYjcwNWU4NDBhM2Q1NjFh
ZjQ1MzBjYThlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE1LTA3LTAyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgW1N0cmVh
bXMgQVBJXSBSZW1vdmUgUmVhZGFibGVTdHJlYW0gY3VzdG9tIGNvbnN0cnVjdG9yCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY1NDcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVkIGN1c3RvbSBi
aW5kaW5nLgorICAgICAgICBNYWRlIHVzZSBvZiBEaWN0aW9uYXJ5IGluIGxpZXUgb2YgSlNPYmpl
Y3QgdG8gcmVkdWNlIHJlYWRhYmxlIHN0cmVhbSBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIgcGFyc2lu
Zy4KKyAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgcGFzc2luZyBFeGVjU3RhdGUgdG8gY29uc3Ry
dXRvciB3aXRoaW4gYmluZGluZyBnZW5lcmF0b3IuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJl
aGF2aW9yLiBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHJlYmFzZWQgdGVzdHMuCisKKyAgICAgICAgKiBN
b2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVh
ZGFibGVTdHJlYW06OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
U3RyZWFtLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaWRsOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RpY3Rpb25h
cnk6OmNvbnZlcnRWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5Lmg6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbUN1c3RvbS5jcHA6CisgICAg
ICAgICogYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFkYWJsZUpTU3RyZWFtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVK
U1N0cmVhbTo6UmVhZGFibGVKU1N0cmVhbSk6CisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFi
bGVKU1N0cmVhbS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24pOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQ6CisKIDIwMTUtMDctMDEgIEpvc2Vw
aCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBBZ2dyZWdhdGUgcHJvZmlsZSBjYWxsIGluZm9ybWF0aW9uIG9uIHRoZSBiYWNrZW5kIHRvIGRy
YXN0aWNhbGx5IHJlZHVjZSBwcm9maWxlIHNpemVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcAppbmRleCAyMTdjZjkyM2FjZGUyZTcwMDQ4
ZWNjNTM1OWVhZDUxYTY2Y2NiYTUwLi44YjFjZDhiMjIzMDU3N2QyZDExYWIzNzhjZjEzNTEzYWM0
MDUxY2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCiAK
ICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiUmVhZGFibGVKU1N0cmVhbS5o
IgogI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtUmVhZGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaD4K
QEAgLTQyLDYgKzQzLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogREVGSU5FX0RFQlVHX09O
TFlfR0xPQkFMKFdURjo6UmVmQ291bnRlZExlYWtDb3VudGVyLCByZWFkYWJsZVN0cmVhbUNvdW50
ZXIsICgiUmVhZGFibGVTdHJlYW0iKSk7CiAKK1JlZlB0cjxSZWFkYWJsZVN0cmVhbT4gUmVhZGFi
bGVTdHJlYW06OmNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1
ZSwgY29uc3QgRGljdGlvbmFyeSYgc3RyYXRlZ3ksIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAg
IHJldHVybiBSZWFkYWJsZUpTU3RyZWFtOjpjcmVhdGUoc3RhdGUsIHZhbHVlLCBzdHJhdGVneSwg
ZWMpOworfQorCiBSZWFkYWJsZVN0cmVhbTo6UmVhZGFibGVTdHJlYW0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICA6IEFjdGl2ZURPTU9iamVjdCgm
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
dHJlYW1zL1JlYWRhYmxlU3RyZWFtLmgKaW5kZXggYzUxNGYyNjFjOTc5MGU0MTM5ODZmNDFlNTdm
OTM0ZjgzZjU5ZjEzYS4uNTk1ZmMwNDhhYmI0OTRhNjUzYTBiNzZlZTViMzEyODBiOTg0Yjg4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmgK
QEAgLTQ3LDYgKzQ3LDcgQEAgY2xhc3MgSlNWYWx1ZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBEaWN0aW9uYXJ5OwogY2xhc3MgUmVhZGFibGVTdHJlYW1SZWFkZXI7CiBjbGFzcyBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OwogCkBAIC02NCw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgRXJyb3JlZAogICAgIH07CiAKKyAgICBzdGF0aWMgUmVmUHRyPFJlYWRhYmxlU3RyZWFtPiBj
cmVhdGUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUsIGNvbnN0IERpY3Rpb25hcnkmLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB+UmVhZGFibGVTdHJlYW0oKTsKIAogICAgIFJl
YWRhYmxlU3RyZWFtUmVhZGVyKiBnZXRSZWFkZXIoRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5pZGwKaW5kZXggYmJj
YjU4OTQ5ZDM2NGY0OTFjZWFkZTJjM2I0YmEyNDRiNTk4YTFlNC4uZGNmMjExNTlmOWY2ZmNkNzE0
M2VmZmQ3YjcyYzU3ZWY2MWNjYjI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaWRsCkBAIC0yOCw3ICsyOCw5IEBACiAgKi8KIAogWwot
ICAgIEN1c3RvbUNvbnN0cnVjdG9yKGFueSBwcm9wZXJ0aWVzKSwKKyAgICBDb25zdHJ1Y3RvclJh
aXNlc0V4Y2VwdGlvbiwKKyAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdFN0YXRlLAorICAg
IENvbnN0cnVjdG9yKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgYW55IHNvdXJjZSwgW0Rl
ZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBEaWN0aW9uYXJ5IHN0cmF0ZWd5KSwKICAgICBDb25k
aXRpb25hbD1TVFJFQU1TX0FQSSwKICAgICBTa2lwVlRhYmxlVmFsaWRhdGlvbgogXSBpbnRlcmZh
Y2UgUmVhZGFibGVTdHJlYW0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNEaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlv
bmFyeS5jcHAKaW5kZXggZTk4NDkwOWU3NmIyNTk0MGRhOWVlY2QwZDk2NTk5ZTBlOGY2ZjUwYy4u
ZjY3YzIzNDg1ZmY0NDQwM2Y4ZWVlMzhhZWUzNjBjODBkOGNlYWE4MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCkBAIC0yNjUsNiArMjY1LDExIEBAIHZv
aWQgSlNEaWN0aW9uYXJ5Ojpjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFs
dWUgdmFsdWUsIFJlZlB0cjxHYW1lCiB9CiAjZW5kaWYKIAordm9pZCBKU0RpY3Rpb25hcnk6OmNv
bnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgSlNDOjpKU0Z1
bmN0aW9uKiYgcmVzdWx0KQoreworICAgIHJlc3VsdCA9IGpzRHluYW1pY0Nhc3Q8SlNDOjpKU0Z1
bmN0aW9uKj4odmFsdWUpOworfQorCiBib29sIEpTRGljdGlvbmFyeTo6Z2V0V2l0aFVuZGVmaW5l
ZE9yTnVsbENoZWNrKGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgU3RyaW5nJiByZXN1bHQpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKGlzVmFsaWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRGljdGlvbmFyeS5oCmluZGV4IGU5MDJmOWE2YWM2YWM4NjM4MGVmOTYwOGU5ZDkxMGNhNDMz
MGQ4N2YuLjliNmViNjVmYzhmMWQ2MzI2NmVmNTAwYmRjMmE1ZTU1ZDZjODNhOWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCkBAIC0xMzcsNiArMTM3LDcgQEAg
cHJpdmF0ZToKICNpZiBFTkFCTEUoR0FNRVBBRCkKICAgICBzdGF0aWMgdm9pZCBjb252ZXJ0VmFs
dWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIFJlZlB0cjxHYW1lcGFkPiYpOwogI2Vu
ZGlmCisgICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpK
U1ZhbHVlLCBKU0M6OkpTRnVuY3Rpb24qJik7CiAKICAgICBKU0M6OkV4ZWNTdGF0ZSogbV9leGVj
OwogICAgIEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+IG1faW5pdGlhbGl6ZXJPYmplY3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1DdXN0
b20uY3BwCmluZGV4IDFkMjNmNjJhZDUyYjhhMzA1MzE3NGE3Y2Q1MmQ2NDNhZWRmN2NmZDkuLjRl
ZmJhOWI2MTVjNGU1YTIwMmI5NGZjNTNjOWJlZjg3ZjdiMmQ3OGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1DdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1DdXN0b20uY3BwCkBAIC03
MiwyMCArNzIsNiBAQCBKU1ZhbHVlIEpTUmVhZGFibGVTdHJlYW06OnBpcGVUaHJvdWdoKEV4ZWNT
dGF0ZSogZXhlYykKICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBl
cnJvcik7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNSZWFk
YWJsZVN0cmVhbShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgRE9NQ29uc3RydWN0b3JPYmplY3Qq
IGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8RE9NQ29uc3RydWN0b3JPYmplY3QqPihleGVjLT5jYWxs
ZWUoKSk7Ci0gICAgQVNTRVJUKGpzQ29uc3RydWN0b3IpOwotCi0gICAgUmVmUHRyPFJlYWRhYmxl
SlNTdHJlYW0+IHJlYWRhYmxlU3RyZWFtID0gUmVhZGFibGVKU1N0cmVhbTo6Y3JlYXRlKCpleGVj
LCAqanNDb25zdHJ1Y3Rvci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLQotICAgIGlmICgh
cmVhZGFibGVTdHJlYW0pIHsKLSAgICAgICAgQVNTRVJUKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICB9Ci0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKSksIFdURjo6bW92ZShyZWFkYWJs
ZVN0cmVhbSkpKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5jcHAKaW5kZXggYTdk
MjFiMmViYzEwMjQwMDE1NTA5OTlkZmJlOWQ4ZGExZTNmZTI3YS4uM2NkZjJkNDkyOTgxNmVmNmYz
NTA2ZTZlYWE4ZTdiYTU5ZWY5Njc5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvUmVhZGFibGVKU1N0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvUmVhZGFibGVKU1N0cmVhbS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpZiBFTkFCTEUoU1RS
RUFNU19BUEkpCiAKICNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKKyNpbmNsdWRlICJEaWN0
aW9uYXJ5LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkpTRE9NUHJv
bWlzZS5oIgogI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW0uaCIKQEAgLTE5OSw3NiArMjAwLDU1
IEBAIGJvb2wgUmVhZGFibGVKU1N0cmVhbTo6ZG9DYW5jZWwoSlNWYWx1ZSByZWFzb24pCiAgICAg
cmV0dXJuICFwcm9taXNlOwogfQogCi1zdGF0aWMgaW5saW5lIGRvdWJsZSBub3JtYWxpemVIaWdo
V2F0ZXJNYXJrKEV4ZWNTdGF0ZSYgZXhlYywgSlNPYmplY3QmIHN0cmF0ZWd5KQorUmVmUHRyPFJl
YWRhYmxlU3RyZWFtPiBSZWFkYWJsZUpTU3RyZWFtOjpjcmVhdGUoSlNDOjpFeGVjU3RhdGUmIHN0
YXRlLCBKU0M6OkpTVmFsdWUgc291cmNlLCBjb25zdCBEaWN0aW9uYXJ5JiBzdHJhdGVneSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgSlNWYWx1ZSBqc0hpZ2hXYXRlck1hcmsgPSBnZXRQcm9w
ZXJ0eUZyb21PYmplY3QoZXhlYywgc3RyYXRlZ3ksICJoaWdoV2F0ZXJNYXJrIik7Ci0KLSAgICBp
ZiAoZXhlYy5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoanNI
aWdoV2F0ZXJNYXJrLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiAxOwotCi0gICAgZG91
YmxlIGhpZ2hXYXRlck1hcmsgPSBqc0hpZ2hXYXRlck1hcmsudG9OdW1iZXIoJmV4ZWMpOwotCi0g
ICAgaWYgKGV4ZWMuaGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYg
KHN0ZDo6aXNuYW4oaGlnaFdhdGVyTWFyaykpIHsKLSAgICAgICAgdGhyb3dWTUVycm9yKCZleGVj
LCBjcmVhdGVUeXBlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVmFsdWUgaXMgTmFOIikpKTsK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGlmIChoaWdoV2F0ZXJNYXJrIDwgMCkgewot
ICAgICAgICB0aHJvd1ZNRXJyb3IoJmV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoJmV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiTm90IGEgcG9zaXRpdmUgdmFsdWUiKSkpOwotICAgICAgICByZXR1cm4gMDsKLSAg
ICB9Ci0gICAgcmV0dXJuIGhpZ2hXYXRlck1hcms7Ci19Ci0KLVJlZlB0cjxSZWFkYWJsZUpTU3Ry
ZWFtPiBSZWFkYWJsZUpTU3RyZWFtOjpjcmVhdGUoRXhlY1N0YXRlJiBzdGF0ZSwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLXsKLSAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGNvbnNpZGVyIHJlZHVjaW5nIHRoZSBiaW5kaW5nIGNvZGUgaGVyZWkgKHVzaW5n
IERpY3Rpb25hcnkvcmVndWxhciBiaW5kaW5nIGNvbnN0cnVjdG9yIGFuZC9vciBpbXByb3Zpbmcg
dGhlIElETCBnZW5lcmF0b3IpLiAKKyAgICAvLyBGSVhNRTogV2UgbWlnaHQgd2FudCB0byBtYWtl
IHNvdXJjZSBhIERpY3Rpb25hcnkuCiAgICAgSlNPYmplY3QqIGpzU291cmNlOwotICAgIEpTVmFs
dWUgdmFsdWUgPSBzdGF0ZS5hcmd1bWVudCgwKTsKLSAgICBpZiAodmFsdWUuaXNPYmplY3QoKSkK
LSAgICAgICAganNTb3VyY2UgPSB2YWx1ZS5nZXRPYmplY3QoKTsKLSAgICBlbHNlIGlmICghdmFs
dWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICB0aHJvd1ZNRXJyb3IoJnN0YXRlLCBjcmVhdGVU
eXBlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkZpcnN0IGFyZ3VtZW50LCBpZiBhbnksIHNo
b3VsZCBiZSBhbiBvYmplY3QiKSkpOworICAgIGlmIChzb3VyY2UuaXNPYmplY3QoKSkKKyAgICAg
ICAganNTb3VyY2UgPSBzb3VyY2UuZ2V0T2JqZWN0KCk7CisgICAgZWxzZSBpZiAoIXNvdXJjZS5p
c1VuZGVmaW5lZCgpKSB7CisgICAgICAgIGVjID0gVHlwZUVycm9yOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9IGVsc2UKICAgICAgICAganNTb3VyY2UgPSBKU0ZpbmFsT2JqZWN0Ojpj
cmVhdGUoc3RhdGUudm0oKSwgSlNGaW5hbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHN0YXRlLnZt
KCksIHN0YXRlLmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKSwganNOdWxsKCksIDEpKTsKIAogICAg
IGRvdWJsZSBoaWdoV2F0ZXJNYXJrID0gMTsKICAgICBKU0Z1bmN0aW9uKiBzaXplRnVuY3Rpb24g
PSBudWxscHRyOwotICAgIHZhbHVlID0gc3RhdGUuYXJndW1lbnQoMSk7Ci0gICAgaWYgKHZhbHVl
LmlzT2JqZWN0KCkpIHsKLSAgICAgICAgSlNPYmplY3QmIHN0cmF0ZWd5T2JqZWN0ID0gKnZhbHVl
LmdldE9iamVjdCgpOwotICAgICAgICBoaWdoV2F0ZXJNYXJrID0gbm9ybWFsaXplSGlnaFdhdGVy
TWFyayhzdGF0ZSwgc3RyYXRlZ3lPYmplY3QpOwotICAgICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0
aW9uKCkpCisgICAgaWYgKCFzdHJhdGVneS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAg
IGlmIChzdHJhdGVneS5nZXQoImhpZ2hXYXRlck1hcmsiLCBoaWdoV2F0ZXJNYXJrKSkgeworICAg
ICAgICAgICAgaWYgKHN0ZDo6aXNuYW4oaGlnaFdhdGVyTWFyaykpIHsKKyAgICAgICAgICAgICAg
ICBlYz0gVHlwZUVycm9yOworICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKGhpZ2hXYXRlck1hcmsgPCAwKSB7CisgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB1c2UgUmFuZ2VFcnJvciBvbmNlIGF2YWlsYWJsZS4K
KyAgICAgICAgICAgICAgICB0aHJvd1ZNRXJyb3IoJnN0YXRlLCBjcmVhdGVSYW5nZUVycm9yKCZz
dGF0ZSwgQVNDSUlMaXRlcmFsKCJOb3QgYSBwb3NpdGl2ZSB2YWx1ZSIpKSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgfSBlbHNlIGlm
IChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgICAgIGlmICghKHNpemVGdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KGdl
dFByb3BlcnR5RnJvbU9iamVjdChzdGF0ZSwgc3RyYXRlZ3lPYmplY3QsICJzaXplIikpKSkgewot
ICAgICAgICAgICAgaWYgKCFzdGF0ZS5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICB0
aHJvd1ZNRXJyb3IoJnN0YXRlLCBjcmVhdGVUeXBlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwo
InNpemUgcGFyYW1ldGVyIHNob3VsZCBiZSBhIGZ1bmN0aW9uIikpKTsKKyAgICAgICAgaWYgKHN0
cmF0ZWd5LmdldCgic2l6ZSIsIHNpemVGdW5jdGlvbikpIHsKKyAgICAgICAgICAgIGlmICghc2l6
ZUZ1bmN0aW9uKSB7CisgICAgICAgICAgICAgICAgZWMgPSBUeXBlRXJyb3I7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAo
c3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAg
ICAgfQotICAgICAgICAKLSAgICB9IGVsc2UgaWYgKCF2YWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0g
ICAgICAgIHRocm93Vk1FcnJvcigmc3RhdGUsIGNyZWF0ZVR5cGVFcnJvcigmc3RhdGUsIEFTQ0lJ
TGl0ZXJhbCgiU2Vjb25kIGFyZ3VtZW50LCBpZiBhbnksIHNob3VsZCBiZSBhbiBvYmplY3QiKSkp
OwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBSZWZQdHI8UmVhZGFibGVK
U1N0cmVhbT4gcmVhZGFibGVTdHJlYW0gPSBhZG9wdFJlZigqbmV3IFJlYWRhYmxlSlNTdHJlYW0o
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgc3RhdGUsIGpzU291cmNlLCBoaWdoV2F0ZXJNYXJrLCBz
aXplRnVuY3Rpb24pKTsKKyAgICBSZWZQdHI8UmVhZGFibGVKU1N0cmVhbT4gcmVhZGFibGVTdHJl
YW0gPSBhZG9wdFJlZigqbmV3IFJlYWRhYmxlSlNTdHJlYW0oc3RhdGUsIGpzU291cmNlLCBoaWdo
V2F0ZXJNYXJrLCBzaXplRnVuY3Rpb24pKTsKICAgICByZWFkYWJsZVN0cmVhbS0+ZG9TdGFydChz
dGF0ZSk7CiAKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgcmV0dXJuIHJlYWRhYmxlU3RyZWFtOworICAgIHJldHVybiByZWFkYWJs
ZVN0cmVhbS5nZXQoKTsKIH0KIAotUmVhZGFibGVKU1N0cmVhbTo6UmVhZGFibGVKU1N0cmVhbShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBFeGVjU3RhdGUm
IHN0YXRlLCBKU09iamVjdCogc291cmNlLCBkb3VibGUgaGlnaFdhdGVyTWFyaywgSlNGdW5jdGlv
biogc2l6ZUZ1bmN0aW9uKQotICAgIDogUmVhZGFibGVTdHJlYW0oc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkKK1JlYWRhYmxlSlNTdHJlYW06OlJlYWRhYmxlSlNTdHJlYW0oRXhlY1N0YXRlJiBzdGF0
ZSwgSlNPYmplY3QqIHNvdXJjZSwgZG91YmxlIGhpZ2hXYXRlck1hcmssIEpTRnVuY3Rpb24qIHNp
emVGdW5jdGlvbikKKyAgICA6IFJlYWRhYmxlU3RyZWFtKCooanNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oc3RhdGUuY2FsbGVlKCktPmdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKSkKICAgICAsIG1faGlnaFdhdGVyTWFyayhoaWdoV2F0ZXJNYXJrKQogewogICAgIG1f
c291cmNlLnNldChzdGF0ZS52bSgpLCBzb3VyY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvUmVhZGFibGVKU1N0cmVhbS5oCmluZGV4IDE1ZmRlMzI2M2ZkZDJlMzI1OWExZTQ4Yzlj
MWE5NjBhMGYzOGViZjYuLjljODk2ZWQ0YzFlMjJkNjVhYTZiN2UzMzU3MWZjNDA2Mzc3M2RkZTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmgKQEAg
LTU0LDcgKzU0LDcgQEAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAogY2xhc3MgUmVhZGFi
bGVKU1N0cmVhbTogcHVibGljIFJlYWRhYmxlU3RyZWFtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmUHRyPFJlYWRhYmxlSlNTdHJlYW0+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFJlYWRhYmxlU3RyZWFtPiBjcmVh
dGUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUsIGNvbnN0IERpY3Rpb25hcnkmLCBFeGNl
cHRpb25Db2RlJik7CiAKICAgICBKU0M6OkpTVmFsdWUganNDb250cm9sbGVyKEpTQzo6RXhlY1N0
YXRlJiwgSlNET01HbG9iYWxPYmplY3QqKTsKICAgICB2b2lkIGNsb3NlKEV4Y2VwdGlvbkNvZGUm
KTsKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIGRvdWJsZSBkZXNpcmVkU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1faGlnaFdhdGVyTWFyayAtIG1fdG90YWxRdWV1ZVNpemU7IH0KIAogcHJp
dmF0ZToKLSAgICBSZWFkYWJsZUpTU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBKU0M6
OkV4ZWNTdGF0ZSYsIEpTQzo6SlNPYmplY3QqLCBkb3VibGUsIEpTQzo6SlNGdW5jdGlvbiopOwor
ICAgIFJlYWRhYmxlSlNTdHJlYW0oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTT2JqZWN0KiwgZG91
YmxlLCBKU0M6OkpTRnVuY3Rpb24qKTsKIAogICAgIHZvaWQgZG9TdGFydChKU0M6OkV4ZWNTdGF0
ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCmluZGV4IGU4Y2IyNDUzMmYxOTcxNDRjM2JjYmNmMDQyNWY0YzMxM2NkZTg5Mzgu
LjAwZjg5OGEwZTEwNTI0MWI1YzAzN2RjNjAzZmNlOWUxZGRkNTc5MzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC00NjMz
LDYgKzQ2MzMsOSBAQCBFTkQKICAgICAgICAgICAgIG15ICRudW1QYXJhbWV0ZXJzID0gQHskZnVu
Y3Rpb24tPnBhcmFtZXRlcnN9OwogICAgICAgICAgICAgbXkgKCRkdW1teSwgJHBhcmFtSW5kZXgp
ID0gR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2soJG91dHB1dEFycmF5LCAkZnVuY3Rpb24sICRpbnRl
cmZhY2UsICRudW1QYXJhbWV0ZXJzLCAkaW50ZXJmYWNlTmFtZSwgImNvbnN0cnVjdG9yQ2FsbGJh
Y2siLCB1bmRlZiwgdW5kZWYsIHVuZGVmKTsKIAorICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJh
dG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDb25zdHJ1Y3RvckNhbGxXaXRoIn0sICJTY3JpcHRTdGF0ZSIpKSB7CisgICAgICAg
ICAgICAgICAgcHVzaChAY29uc3RydWN0b3JBcmdMaXN0LCAiKmV4ZWMiKTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250
YWlucygkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JDYWxsV2l0
aCJ9LCAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dCIpKSB7CiAgICAgICAgICAgICAgICAgcHVzaChA
Y29uc3RydWN0b3JBcmdMaXN0LCAiKmNvbnRleHQiKTsKICAgICAgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGNhc3Rl
ZFRoaXMtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTtcbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQKaW5kZXggMjljMjNjZTFlN2I1
MjY0MjE4OWRkYzgwYjlmZmI2MzA4ZTE4OTYyMS4uMDY2MjA1MmMyMzZlNmM2YjljNWQ4ZGVlZTc0
MWYxM2E4YTRmMDU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9JRExBdHRyaWJ1dGVzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0lETEF0dHJpYnV0ZXMudHh0CkBAIC0yOSw3ICsyOSw3IEBAIENoZWNrU2VjdXJpdHlGb3JOb2Rl
CiBDbGFtcAogQ29uZGl0aW9uYWw9KgogQ29uc3RydWN0b3IKLUNvbnN0cnVjdG9yQ2FsbFdpdGg9
RG9jdW1lbnR8U2NyaXB0RXhlY3V0aW9uQ29udGV4dAorQ29uc3RydWN0b3JDYWxsV2l0aD1Eb2N1
bWVudHxTY3JpcHRFeGVjdXRpb25Db250ZXh0fFNjcmlwdFN0YXRlCiBDb25zdHJ1Y3RvckNvbmRp
dGlvbmFsPSoKIENvbnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9uCiBDb25zdHJ1Y3RvclRlbXBsYXRl
PUV2ZW50fFR5cGVkQXJyYXkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjZWE3YmVlMjc2ZjcyNmUxNWMwOGJkMDIwOGFjMDY2
MmQ2MDg1MmI1Li45ZDNlY2RiYjU3MDAzODhlNWYwNjQyMTJhOWNkYTgzM2UyNTc4NTkwIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMDctMDIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFi
bGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBbU3RyZWFtcyBBUEldIFJlbW92ZSBSZWFkYWJs
ZVN0cmVhbSBjdXN0b20gY29uc3RydWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0NjU0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFk
LXN0cmF0ZWdpZXMtZXhwZWN0ZWQudHh0OgorCiAyMDE1LTA3LTAyICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU2tpcCBuZXcgd2ViIHRpbWlu
ZyB0ZXN0IG9uIHBsYXRmb3JtcyB3aXRob3V0IHdlYiB0aW1pbmcuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256087</attachid>
            <date>2015-07-03 01:46:36 -0700</date>
            <delta_ts>2015-07-06 01:15:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146547-20150703104541.patch</filename>
            <type>text/plain</type>
            <size>14799</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2MjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjUwZDM2N2JiZDUxNDBl
ZTY0Njk3Y2FmMDYxYjdhN2QxYjg2ZTZkYy4uOGMyM2YwYTM5OWI0OGI5MWNlMDMyZTczOTMyY2I5
ZWY0ZjQ2Mzc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM1IEBACiAyMDE1LTA3LTAyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAKKyAgICAgICAgW1N0cmVh
bXMgQVBJXSBSZW1vdmUgUmVhZGFibGVTdHJlYW0gY3VzdG9tIGNvbnN0cnVjdG9yCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY1NDcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVkIGN1c3RvbSBi
aW5kaW5nLgorICAgICAgICBNYWRlIHVzZSBvZiBEaWN0aW9uYXJ5IGluIGxpZXUgb2YgSlNPYmpl
Y3QgdG8gcmVkdWNlIHJlYWRhYmxlIHN0cmVhbSBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIgcGFyc2lu
Zy4KKyAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgcGFzc2luZyBFeGVjU3RhdGUgdG8gY29uc3Ry
dXRvciB3aXRoaW4gYmluZGluZyBnZW5lcmF0b3IuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJl
aGF2aW9yLgorCisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtOjpjcmVhdGUpOgorICAgICAgICAqIE1v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFi
bGVTdHJlYW06OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNEaWN0aW9uYXJ5Ojpjb252ZXJ0VmFsdWUpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRGljdGlvbmFyeS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUmVhZGFibGVT
dHJlYW1DdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVKU1N0cmVhbTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWRhYmxlSlNTdHJlYW06OlJlYWRhYmxlSlNTdHJlYW0pOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uaDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JE
ZWZpbml0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0
OgorCisyMDE1LTA3LTAyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24u
ZnI+CisKICAgICAgICAgW1N0cmVhbXMgQVBJXSBSZW1vdmUgUmVhZGFibGVTdHJlYW0gYW5kIFJl
YWRlciBjYW5jZWwoKSBjdXN0b20gYmluZGluZwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2NDU4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwCmluZGV4IDIxN2NmOTIzYWNkZTJlNzAwNDhl
Y2M1MzU5ZWFkNTFhNjZjY2JhNTAuLmFmYjQ0NTVjNGU3OGI1MGEyNmM3YTI5NmNjNTVjMTA0YTFm
MWFmOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
U3RyZWFtLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKIAog
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJSZWFkYWJsZUpTU3RyZWFtLmgi
CiAjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1SZWFkZXIuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgpA
QCAtNDIsNiArNDMsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBERUZJTkVfREVCVUdfT05M
WV9HTE9CQUwoV1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXIsIHJlYWRhYmxlU3RyZWFtQ291bnRl
ciwgKCJSZWFkYWJsZVN0cmVhbSIpKTsKIAorUmVmUHRyPFJlYWRhYmxlU3RyZWFtPiBSZWFkYWJs
ZVN0cmVhbTo6Y3JlYXRlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVl
LCBjb25zdCBEaWN0aW9uYXJ5JiBzdHJhdGVneSkKK3sKKyAgICByZXR1cm4gUmVhZGFibGVKU1N0
cmVhbTo6Y3JlYXRlKHN0YXRlLCB2YWx1ZSwgc3RyYXRlZ3kpOworfQorCiBSZWFkYWJsZVN0cmVh
bTo6UmVhZGFibGVTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkKICAgICA6IEFjdGl2ZURPTU9iamVjdCgmc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0
cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmgK
aW5kZXggYzUxNGYyNjFjOTc5MGU0MTM5ODZmNDFlNTdmOTM0ZjgzZjU5ZjEzYS4uZjA4ZDgwMDFm
MzUwYTE3NmE3NTY1MjQzMDgxMGU5YWQ0ZjlhMTVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgY2xhc3Mg
SlNWYWx1ZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEaWN0aW9uYXJ5OwogY2xh
c3MgUmVhZGFibGVTdHJlYW1SZWFkZXI7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owog
CkBAIC02NCw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICAgICAgRXJyb3JlZAogICAgIH07CiAKKyAg
ICBzdGF0aWMgUmVmUHRyPFJlYWRhYmxlU3RyZWFtPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUmLCBK
U0M6OkpTVmFsdWUsIGNvbnN0IERpY3Rpb25hcnkmKTsKICAgICB2aXJ0dWFsIH5SZWFkYWJsZVN0
cmVhbSgpOwogCiAgICAgUmVhZGFibGVTdHJlYW1SZWFkZXIqIGdldFJlYWRlcihFeGNlcHRpb25D
b2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVTdHJlYW0uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtLmlkbAppbmRleCAwNjYzNWMzOWMwZTBjNTlmYTk0OTYzMTg0ZjJjZGY2YjA4YTZiZTFjLi44
NjNjMjY0MzE4YzU0MTIwYTcwODg5MWExY2RhYzUzZjA2OGNiMGQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5pZGwKQEAgLTI4LDcgKzI4
LDggQEAKICAqLwogCiBbCi0gICAgQ3VzdG9tQ29uc3RydWN0b3IoYW55IHByb3BlcnRpZXMpLAor
ICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9U2NyaXB0U3RhdGUsCisgICAgQ29uc3RydWN0b3IoW0Rl
ZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBhbnkgc291cmNlLCBbRGVmYXVsdD1VbmRlZmluZWRd
IG9wdGlvbmFsIERpY3Rpb25hcnkgc3RyYXRlZ3kpLAogICAgIENvbmRpdGlvbmFsPVNUUkVBTVNf
QVBJLAogICAgIFNraXBWVGFibGVWYWxpZGF0aW9uCiBdIGludGVyZmFjZSBSZWFkYWJsZVN0cmVh
bSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAppbmRleCBl
OTg0OTA5ZTc2YjI1OTQwZGE5ZWVjZDBkOTY1OTllMGU4ZjZmNTBjLi5mNjdjMjM0ODVmZjQ0NDAz
ZjhlZWUzOGFlZTM2MGM4MGQ4Y2VhYTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRGljdGlvbmFyeS5jcHAKQEAgLTI2NSw2ICsyNjUsMTEgQEAgdm9pZCBKU0RpY3Rpb25hcnk6
OmNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgUmVmUHRy
PEdhbWUKIH0KICNlbmRpZgogCit2b2lkIEpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVlKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBKU0M6OkpTRnVuY3Rpb24qJiByZXN1bHQp
Cit7CisgICAgcmVzdWx0ID0ganNEeW5hbWljQ2FzdDxKU0M6OkpTRnVuY3Rpb24qPih2YWx1ZSk7
Cit9CisKIGJvb2wgSlNEaWN0aW9uYXJ5OjpnZXRXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soY29u
c3QgY2hhciogcHJvcGVydHlOYW1lLCBTdHJpbmcmIHJlc3VsdCkgY29uc3QKIHsKICAgICBBU1NF
UlQoaXNWYWxpZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RGljdGlvbmFyeS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmgK
aW5kZXggZTkwMmY5YTZhYzZhYzg2MzgwZWY5NjA4ZTlkOTEwY2E0MzMwZDg3Zi4uOWI2ZWI2NWZj
OGYxZDYzMjY2ZWY1MDBiZGMyYTVlNTVkNmM4M2E5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNEaWN0aW9uYXJ5LmgKQEAgLTEzNyw2ICsxMzcsNyBAQCBwcml2YXRlOgogI2lmIEVO
QUJMRShHQU1FUEFEKQogICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6SlNWYWx1ZSwgUmVmUHRyPEdhbWVwYWQ+Jik7CiAjZW5kaWYKKyAgICBzdGF0aWMg
dm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNG
dW5jdGlvbiomKTsKIAogICAgIEpTQzo6RXhlY1N0YXRlKiBtX2V4ZWM7CiAgICAgSlNDOjpTdHJv
bmc8SlNDOjpKU09iamVjdD4gbV9pbml0aWFsaXplck9iamVjdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1DdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbUN1c3RvbS5jcHAKaW5kZXggMjk4
ZmY4ZGIzZTg4ZGVkNzlmOTk4YWUxMjlmZjM0YjcwMDZlMTEyNy4uMzQ4ZDE2YjJmZWJlNzk4N2Qy
ZGQ2NmY1Y2M4NjY1ZjVhN2MwZWU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNSZWFkYWJsZVN0cmVhbUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbUN1c3RvbS5jcHAKQEAgLTU5LDIwICs1OSw2IEBAIEpT
VmFsdWUgSlNSZWFkYWJsZVN0cmVhbTo6cGlwZVRocm91Z2goRXhlY1N0YXRlKiBleGVjKQogICAg
IHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGVycm9yKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1JlYWRhYmxlU3RyZWFtKEV4ZWNT
dGF0ZSogZXhlYykKLXsKLSAgICBET01Db25zdHJ1Y3Rvck9iamVjdCoganNDb25zdHJ1Y3RvciA9
IGpzQ2FzdDxET01Db25zdHJ1Y3Rvck9iamVjdCo+KGV4ZWMtPmNhbGxlZSgpKTsKLSAgICBBU1NF
UlQoanNDb25zdHJ1Y3Rvcik7Ci0KLSAgICBSZWZQdHI8UmVhZGFibGVKU1N0cmVhbT4gcmVhZGFi
bGVTdHJlYW0gPSBSZWFkYWJsZUpTU3RyZWFtOjpjcmVhdGUoKmV4ZWMsICpqc0NvbnN0cnVjdG9y
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotCi0gICAgaWYgKCFyZWFkYWJsZVN0cmVhbSkg
ewotICAgICAgICBBU1NFUlQoZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwotICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIH0KLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlMoZXhlYywganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+Y2Fs
bGVlKCktPmdsb2JhbE9iamVjdCgpKSwgV1RGOjptb3ZlKHJlYWRhYmxlU3RyZWFtKSkpOwotfQot
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcAppbmRleCA1MzgxMjU0YzBlOThmODUzOWI3
ODAyYjQxOGVlODk1YmM3NzRkMmM0Li5hNmY0OGEzZDY2MjNiM2VkMmQyMDE2NWY1ZWU0N2IxMWQ0
Y2I3ZTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpT
U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3Ry
ZWFtLmNwcApAQCAtMzMsMTEgKzMzLDEzIEBACiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQogCiAj
aW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCisjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKICNpbmNs
dWRlICJKU1JlYWRhYmxlU3RyZWFtLmgiCiAjaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAi
U2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAjaW5jbHVkZSA8cnVu
dGltZS9FeGNlcHRpb24uaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg+
CkBAIC0xOTksNzYgKzIwMSw1MyBAQCBib29sIFJlYWRhYmxlSlNTdHJlYW06OmRvQ2FuY2VsKEpT
VmFsdWUgcmVhc29uKQogICAgIHJldHVybiAhcHJvbWlzZTsKIH0KIAotc3RhdGljIGlubGluZSBk
b3VibGUgbm9ybWFsaXplSGlnaFdhdGVyTWFyayhFeGVjU3RhdGUmIGV4ZWMsIEpTT2JqZWN0JiBz
dHJhdGVneSkKK1JlZlB0cjxSZWFkYWJsZVN0cmVhbT4gUmVhZGFibGVKU1N0cmVhbTo6Y3JlYXRl
KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHNvdXJjZSwgY29uc3QgRGljdGlv
bmFyeSYgc3RyYXRlZ3kpCiB7Ci0gICAgSlNWYWx1ZSBqc0hpZ2hXYXRlck1hcmsgPSBnZXRQcm9w
ZXJ0eUZyb21PYmplY3QoZXhlYywgc3RyYXRlZ3ksICJoaWdoV2F0ZXJNYXJrIik7Ci0KLSAgICBp
ZiAoZXhlYy5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoanNI
aWdoV2F0ZXJNYXJrLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiAxOwotCi0gICAgZG91
YmxlIGhpZ2hXYXRlck1hcmsgPSBqc0hpZ2hXYXRlck1hcmsudG9OdW1iZXIoJmV4ZWMpOwotCi0g
ICAgaWYgKGV4ZWMuaGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYg
KHN0ZDo6aXNuYW4oaGlnaFdhdGVyTWFyaykpIHsKLSAgICAgICAgdGhyb3dWTUVycm9yKCZleGVj
LCBjcmVhdGVUeXBlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVmFsdWUgaXMgTmFOIikpKTsK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGlmIChoaWdoV2F0ZXJNYXJrIDwgMCkgewot
ICAgICAgICB0aHJvd1ZNRXJyb3IoJmV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoJmV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiTm90IGEgcG9zaXRpdmUgdmFsdWUiKSkpOwotICAgICAgICByZXR1cm4gMDsKLSAg
ICB9Ci0gICAgcmV0dXJuIGhpZ2hXYXRlck1hcms7Ci19Ci0KLVJlZlB0cjxSZWFkYWJsZUpTU3Ry
ZWFtPiBSZWFkYWJsZUpTU3RyZWFtOjpjcmVhdGUoRXhlY1N0YXRlJiBzdGF0ZSwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLXsKLSAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGNvbnNpZGVyIHJlZHVjaW5nIHRoZSBiaW5kaW5nIGNvZGUgaGVyZWkgKHVzaW5n
IERpY3Rpb25hcnkvcmVndWxhciBiaW5kaW5nIGNvbnN0cnVjdG9yIGFuZC9vciBpbXByb3Zpbmcg
dGhlIElETCBnZW5lcmF0b3IpLiAKICAgICBKU09iamVjdCoganNTb3VyY2U7Ci0gICAgSlNWYWx1
ZSB2YWx1ZSA9IHN0YXRlLmFyZ3VtZW50KDApOwotICAgIGlmICh2YWx1ZS5pc09iamVjdCgpKQot
ICAgICAgICBqc1NvdXJjZSA9IHZhbHVlLmdldE9iamVjdCgpOwotICAgIGVsc2UgaWYgKCF2YWx1
ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIHRocm93Vk1FcnJvcigmc3RhdGUsIGNyZWF0ZVR5
cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiRmlyc3QgYXJndW1lbnQsIGlmIGFueSwgc2hv
dWxkIGJlIGFuIG9iamVjdCIpKSk7CisgICAgaWYgKHNvdXJjZS5pc09iamVjdCgpKQorICAgICAg
ICBqc1NvdXJjZSA9IHNvdXJjZS5nZXRPYmplY3QoKTsKKyAgICBlbHNlIGlmICghc291cmNlLmlz
VW5kZWZpbmVkKCkpIHsKKyAgICAgICAgdGhyb3dWTUVycm9yKCZzdGF0ZSwgY3JlYXRlRE9NRXhj
ZXB0aW9uKCZzdGF0ZSwgVHlwZUVycm9yKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0gZWxzZQogICAgICAgICBqc1NvdXJjZSA9IEpTRmluYWxPYmplY3Q6OmNyZWF0ZShzdGF0ZS52
bSgpLCBKU0ZpbmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoc3RhdGUudm0oKSwgc3RhdGUuY2Fs
bGVlKCktPmdsb2JhbE9iamVjdCgpLCBqc051bGwoKSwgMSkpOwogCiAgICAgZG91YmxlIGhpZ2hX
YXRlck1hcmsgPSAxOwogICAgIEpTRnVuY3Rpb24qIHNpemVGdW5jdGlvbiA9IG51bGxwdHI7Ci0g
ICAgdmFsdWUgPSBzdGF0ZS5hcmd1bWVudCgxKTsKLSAgICBpZiAodmFsdWUuaXNPYmplY3QoKSkg
ewotICAgICAgICBKU09iamVjdCYgc3RyYXRlZ3lPYmplY3QgPSAqdmFsdWUuZ2V0T2JqZWN0KCk7
Ci0gICAgICAgIGhpZ2hXYXRlck1hcmsgPSBub3JtYWxpemVIaWdoV2F0ZXJNYXJrKHN0YXRlLCBz
dHJhdGVneU9iamVjdCk7Ci0gICAgICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKKyAgICBp
ZiAoIXN0cmF0ZWd5LmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgaWYgKHN0cmF0ZWd5
LmdldCgiaGlnaFdhdGVyTWFyayIsIGhpZ2hXYXRlck1hcmspKSB7CisgICAgICAgICAgICBpZiAo
c3RkOjppc25hbihoaWdoV2F0ZXJNYXJrKSkgeworICAgICAgICAgICAgICAgIHRocm93Vk1FcnJv
cigmc3RhdGUsIGNyZWF0ZURPTUV4Y2VwdGlvbigmc3RhdGUsIFR5cGVFcnJvcikpOworICAgICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KGhpZ2hXYXRlck1hcmsgPCAwKSB7CisgICAgICAgICAgICAgICAgdGhyb3dWTUVycm9yKCZzdGF0
ZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwgUmFuZ2VFcnJvcikpOworICAgICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgfQorCisgICAgICAgIH0gZWxzZSBpZiAo
c3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
ICAgICBpZiAoIShzaXplRnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPihnZXRQ
cm9wZXJ0eUZyb21PYmplY3Qoc3RhdGUsIHN0cmF0ZWd5T2JqZWN0LCAic2l6ZSIpKSkpIHsKLSAg
ICAgICAgICAgIGlmICghc3RhdGUuaGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgdGhy
b3dWTUVycm9yKCZzdGF0ZSwgY3JlYXRlVHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJz
aXplIHBhcmFtZXRlciBzaG91bGQgYmUgYSBmdW5jdGlvbiIpKSk7CisgICAgICAgIGlmIChzdHJh
dGVneS5nZXQoInNpemUiLCBzaXplRnVuY3Rpb24pKSB7CisgICAgICAgICAgICBpZiAoIXNpemVG
dW5jdGlvbikgeworICAgICAgICAgICAgICAgIHRocm93Vk1FcnJvcigmc3RhdGUsIGNyZWF0ZURP
TUV4Y2VwdGlvbigmc3RhdGUsIFR5cGVFcnJvcikpOworICAgICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAg
Ci0gICAgfSBlbHNlIGlmICghdmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICB0aHJvd1ZN
RXJyb3IoJnN0YXRlLCBjcmVhdGVUeXBlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIlNlY29u
ZCBhcmd1bWVudCwgaWYgYW55LCBzaG91bGQgYmUgYW4gb2JqZWN0IikpKTsKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPFJlYWRhYmxlSlNTdHJlYW0+IHJlYWRh
YmxlU3RyZWFtID0gYWRvcHRSZWYoKm5ldyBSZWFkYWJsZUpTU3RyZWFtKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIHN0YXRlLCBqc1NvdXJjZSwgaGlnaFdhdGVyTWFyaywgc2l6ZUZ1bmN0aW9uKSk7
CisgICAgUmVmUHRyPFJlYWRhYmxlSlNTdHJlYW0+IHJlYWRhYmxlU3RyZWFtID0gYWRvcHRSZWYo
Km5ldyBSZWFkYWJsZUpTU3RyZWFtKHN0YXRlLCBqc1NvdXJjZSwgaGlnaFdhdGVyTWFyaywgc2l6
ZUZ1bmN0aW9uKSk7CiAgICAgcmVhZGFibGVTdHJlYW0tPmRvU3RhcnQoc3RhdGUpOwogCiAgICAg
aWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiByZWFkYWJsZVN0cmVhbTsKKyAgICByZXR1cm4gcmVhZGFibGVTdHJlYW0uZ2V0KCk7
CiB9CiAKLVJlYWRhYmxlSlNTdHJlYW06OlJlYWRhYmxlSlNTdHJlYW0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRXhlY1N0YXRlJiBzdGF0ZSwgSlNPYmpl
Y3QqIHNvdXJjZSwgZG91YmxlIGhpZ2hXYXRlck1hcmssIEpTRnVuY3Rpb24qIHNpemVGdW5jdGlv
bikKLSAgICA6IFJlYWRhYmxlU3RyZWFtKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCitSZWFkYWJs
ZUpTU3RyZWFtOjpSZWFkYWJsZUpTU3RyZWFtKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTT2JqZWN0KiBz
b3VyY2UsIGRvdWJsZSBoaWdoV2F0ZXJNYXJrLCBKU0Z1bmN0aW9uKiBzaXplRnVuY3Rpb24pCisg
ICAgOiBSZWFkYWJsZVN0cmVhbSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUo
JnN0YXRlKSkKICAgICAsIG1faGlnaFdhdGVyTWFyayhoaWdoV2F0ZXJNYXJrKQogewogICAgIG1f
c291cmNlLnNldChzdGF0ZS52bSgpLCBzb3VyY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvUmVhZGFibGVKU1N0cmVhbS5oCmluZGV4IDRlYWE0OTMyZWEwZmQxNjhiNjVkNGM4YzM1
ZTQxYTE0NjM4ODMxYTcuLjI0MWY4NTc0ZDJmZGNjMmM5NDI0ZmI3N2Q4YzY5MTgxMjBjY2Q4NDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmgKQEAg
LTU0LDcgKzU0LDcgQEAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAogY2xhc3MgUmVhZGFi
bGVKU1N0cmVhbTogcHVibGljIFJlYWRhYmxlU3RyZWFtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmUHRyPFJlYWRhYmxlSlNTdHJlYW0+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFJlYWRhYmxlU3RyZWFtPiBjcmVh
dGUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUsIGNvbnN0IERpY3Rpb25hcnkmKTsKIAog
ICAgIEpTQzo6SlNWYWx1ZSBqc0NvbnRyb2xsZXIoSlNDOjpFeGVjU3RhdGUmLCBKU0RPTUdsb2Jh
bE9iamVjdCopOwogICAgIHZvaWQgY2xvc2UoRXhjZXB0aW9uQ29kZSYpOwpAQCAtNjgsNyArNjgs
NyBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGRlc2lyZWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9o
aWdoV2F0ZXJNYXJrIC0gbV90b3RhbFF1ZXVlU2l6ZTsgfQogCiBwcml2YXRlOgotICAgIFJlYWRh
YmxlSlNTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEpTQzo6RXhlY1N0YXRlJiwgSlND
OjpKU09iamVjdCosIGRvdWJsZSwgSlNDOjpKU0Z1bmN0aW9uKik7CisgICAgUmVhZGFibGVKU1N0
cmVhbShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNPYmplY3QqLCBkb3VibGUsIEpTQzo6SlNGdW5j
dGlvbiopOwogCiAgICAgdm9pZCBkb1N0YXJ0KEpTQzo6RXhlY1N0YXRlJik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXgg
YzI0NWEzNTQyYjE3NzI1MDdlYjllYTc0YmI3M2NkODcwMTliNDhiYy4uZTQxMWQwZjNhYjJmMjE2
ZTgzM2QxNGRjYzM5OTEzNWUxOTFlMTAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTQ2NDEsNiArNDY0MSw5IEBAIEVO
RAogICAgICAgICAgICAgbXkgJG51bVBhcmFtZXRlcnMgPSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVy
c307CiAgICAgICAgICAgICBteSAoJGR1bW15LCAkcGFyYW1JbmRleCkgPSBHZW5lcmF0ZVBhcmFt
ZXRlcnNDaGVjaygkb3V0cHV0QXJyYXksICRmdW5jdGlvbiwgJGludGVyZmFjZSwgJG51bVBhcmFt
ZXRlcnMsICRpbnRlcmZhY2VOYW1lLCAiY29uc3RydWN0b3JDYWxsYmFjayIsIHVuZGVmLCB1bmRl
ZiwgdW5kZWYpOwogCisgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0
cmlidXRlQ29udGFpbnMoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVj
dG9yQ2FsbFdpdGgifSwgIlNjcmlwdFN0YXRlIikpIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBj
b25zdHJ1Y3RvckFyZ0xpc3QsICIqZXhlYyIpOworICAgICAgICAgICAgfQogICAgICAgICAgICAg
aWYgKCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvckNhbGxXaXRoIn0sICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0IikpIHsKICAgICAgICAgICAgICAgICBwdXNoKEBjb25zdHJ1Y3RvckFyZ0xp
c3QsICIqY29udGV4dCIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gY2FzdGVkVGhpcy0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpO1xuIik7CkBAIC00NjgzLDYgKzQ2ODYsMTEgQEAgRU5ECiAgICAgICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgfQog
CisgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFp
bnMoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yQ2FsbFdpdGgi
fSwgIlNjcmlwdFN0YXRlIikpIHsKKyAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpXG4iKTsKKyAgICAgICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRv
SlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIG9iamVjdC5nZXQoKSkpKTtcbiIp
OwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQK
aW5kZXggMjljMjNjZTFlN2I1MjY0MjE4OWRkYzgwYjlmZmI2MzA4ZTE4OTYyMS4uMDY2MjA1MmMy
MzZlNmM2YjljNWQ4ZGVlZTc0MWYxM2E4YTRmMDU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CkBAIC0yOSw3ICsyOSw3IEBAIENo
ZWNrU2VjdXJpdHlGb3JOb2RlCiBDbGFtcAogQ29uZGl0aW9uYWw9KgogQ29uc3RydWN0b3IKLUNv
bnN0cnVjdG9yQ2FsbFdpdGg9RG9jdW1lbnR8U2NyaXB0RXhlY3V0aW9uQ29udGV4dAorQ29uc3Ry
dWN0b3JDYWxsV2l0aD1Eb2N1bWVudHxTY3JpcHRFeGVjdXRpb25Db250ZXh0fFNjcmlwdFN0YXRl
CiBDb25zdHJ1Y3RvckNvbmRpdGlvbmFsPSoKIENvbnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9uCiBD
b25zdHJ1Y3RvclRlbXBsYXRlPUV2ZW50fFR5cGVkQXJyYXkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256198</attachid>
            <date>2015-07-06 01:15:27 -0700</date>
            <delta_ts>2015-07-06 01:18:26 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-146547-20150706101429.patch</filename>
            <type>text/plain</type>
            <size>17264</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2MzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
YTM2MGQwNWI2M2JhNDBlMWFjOGI1MTlhZWMzZWYwMWZmYWRhM2E3Li4xMTJhZWY3NDBkM2ZlYWFm
MzE4ZGE4OGRlZTk0NWY4ZTAyN2Y2ZjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNS0wNy0wNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3Jm
LmNhbm9uLmZyPgorCisgICAgICAgIFtTdHJlYW1zIEFQSV0gUmVtb3ZlIFJlYWRhYmxlU3RyZWFt
IGN1c3RvbSBjb25zdHJ1Y3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQ2NTQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgQWRkaW5nIGhlbHBlciBmdW5jdGlvbiB0byB0aHJvdyByYW5nZSBlcnJvcnMuCisK
KyAgICAgICAgKiBydW50aW1lL0Vycm9yLmg6CisgICAgICAgIChKU0M6OnRocm93UmFuZ2VFcnJv
cik6CisgICAgICAgIChKU0M6OnRocm93Vk1SYW5nZUVycm9yKToKKwogMjAxNS0wNy0wNSAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbRVM2XSBJbXBs
ZW1lbnQgdGhlIGxhdGVzdCBQcm9taXNlIHNwZWMgaW4gSlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2MjQ4ZjE0
YjU0ODhlMWU5ZGI1ZDVjNjMwYTA3NzlhZjk3NTc2NzQzLi41MDRlNWU5ZTlkZWUyODEzNTdmMWQ4
YjIyMWFhOTcwZmM3YTVlNGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTUtMDct
MDYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAg
ICBbU3RyZWFtcyBBUEldIFJlbW92ZSBSZWFkYWJsZVN0cmVhbSBjdXN0b20gY29uc3RydWN0b3IK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjU0Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJlbW92ZWQgY3Vz
dG9tIGJpbmRpbmcuCisgICAgICAgIE1hZGUgdXNlIG9mIERpY3Rpb25hcnkgaW4gbGlldSBvZiBK
U09iamVjdCB0byByZWR1Y2UgcmVhZGFibGUgc3RyZWFtIGNvbnN0cnVjdG9yIHBhcmFtZXRlciBw
YXJzaW5nLgorICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBwYXNzaW5nIEV4ZWNTdGF0ZSB0byBj
b25zdHJ1dG9yIHdpdGhpbiBiaW5kaW5nIGdlbmVyYXRvci4KKworICAgICAgICBObyBjaGFuZ2Ug
aW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OmNyZWF0ZSk6CisgICAgICAg
ICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkYWJsZVN0cmVhbTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVTdHJlYW0uaWRsOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNSZWFk
YWJsZVN0cmVhbUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVKU1N0
cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZUpTU3RyZWFtOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVKU1N0cmVhbTo6UmVhZGFibGVKU1N0cmVhbSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5oOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1
Y3RvckRlZmluaXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRl
cy50eHQ6CisKIDIwMTUtMDctMDUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5j
YW5vbi5mcj4KIAogICAgICAgICBQcm9taXNlLXJldHVybmluZyBmdW5jdGlvbnMgc2hvdWxkIHJl
amVjdCBwcm9taXNlcyBpZiB0aGUgY2FsbGVlIGlzIG5vdCBvZiB0aGUgZXhwZWN0ZWQgdHlwZQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKaW5kZXggMDE3NzQwZTU1ZWE3MTJiMTJi
M2U5OTdkZDFkYzdlNTdmMjQ2OWU5ZS4uZDFjZTQwYjdlYzkxMGJkYjhjMDhjZDE5NmY3MjY2MjE0
YzMzMjQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCkBAIC03NCwxMiAr
NzQsMTUgQEAgSlNPYmplY3QqIGFkZEVycm9ySW5mbyhFeGVjU3RhdGUqLCBKU09iamVjdCogZXJy
b3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJikKIC8vIENvbnZlbmllbmNlIHdyYXBwZXJz
LCBjcmVhdGUgYW4gdGhyb3cgYW4gZXhjZXB0aW9uIHdpdGggYSBkZWZhdWx0IG1lc3NhZ2UuCiBK
U19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKik7CiBK
U19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUqKTsK
K2lubGluZSBKU09iamVjdCogdGhyb3dSYW5nZUVycm9yKEV4ZWNTdGF0ZSogc3RhdGUsIGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBzdGF0ZS0+dm0oKS50aHJvd0V4Y2VwdGlv
bihzdGF0ZSwgY3JlYXRlUmFuZ2VFcnJvcihzdGF0ZSwgZXJyb3JNZXNzYWdlKSk7IH0KIAogLy8g
Q29udmVuaWVuY2Ugd3JhcHBlcnMsIHdyYXAgcmVzdWx0IGFzIGFuIEVuY29kZWRKU1ZhbHVlLgog
aW5saW5lIHZvaWQgdGhyb3dWTUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgRXhjZXB0aW9uKiBleGNl
cHRpb24pIHsgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBleGNlcHRpb24pOyB9CiBp
bmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBlcnJvcikgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRp
b24oZXhlYywgZXJyb3IpKTsgfQogaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1UeXBlRXJy
b3IoRXhlY1N0YXRlKiBleGVjKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IoZXhlYykpOyB9CiBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTVR5cGVFcnJvcihFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlKSk7IH0KK2lubGluZSBF
bmNvZGVkSlNWYWx1ZSB0aHJvd1ZNUmFuZ2VFcnJvcihFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBT
dHJpbmcmIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93UmFuZ2VF
cnJvcihzdGF0ZSwgZXJyb3JNZXNzYWdlKSk7IH0KKwogCiBjbGFzcyBTdHJpY3RNb2RlVHlwZUVy
cm9yRnVuY3Rpb24gOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHAKaW5kZXgg
MjE3Y2Y5MjNhY2RlMmU3MDA0OGVjYzUzNTllYWQ1MWE2NmNjYmE1MC4uMTQzMzk2OTBhOWM3ZTk1
ZjZlNjA3YjdmMTFhZjgzMzdiZmYxMGJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaWYgRU5B
QkxFKFNUUkVBTVNfQVBJKQogCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUg
IlJlYWRhYmxlSlNTdHJlYW0uaCIKICNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbVJlYWRlci5oIgog
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDxydW50aW1lL0pT
Q0pTVmFsdWVJbmxpbmVzLmg+CkBAIC00Miw2ICs0MywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIERFRklORV9ERUJVR19PTkxZX0dMT0JBTChXVEY6OlJlZkNvdW50ZWRMZWFrQ291bnRlciwg
cmVhZGFibGVTdHJlYW1Db3VudGVyLCAoIlJlYWRhYmxlU3RyZWFtIikpOwogCitSZWZQdHI8UmVh
ZGFibGVTdHJlYW0+IFJlYWRhYmxlU3RyZWFtOjpjcmVhdGUoSlNDOjpFeGVjU3RhdGUmIHN0YXRl
LCBKU0M6OkpTVmFsdWUgdmFsdWUsIGNvbnN0IERpY3Rpb25hcnkmIHN0cmF0ZWd5KQoreworICAg
IHJldHVybiBSZWZQdHI8UmVhZGFibGVTdHJlYW0+KFJlYWRhYmxlSlNTdHJlYW06OmNyZWF0ZShz
dGF0ZSwgdmFsdWUsIHN0cmF0ZWd5KSk7Cit9CisKIFJlYWRhYmxlU3RyZWFtOjpSZWFkYWJsZVN0
cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAg
IDogQWN0aXZlRE9NT2JqZWN0KCZzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaAppbmRleCBjNTE0ZjI2
MWM5NzkwZTQxMzk4NmY0MWU1N2Y5MzRmODNmNTlmMTNhLi5mMDhkODAwMWYzNTBhMTc2YTc1NjUy
NDMwODEwZTlhZDRmOWExNWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVh
bXMvUmVhZGFibGVTdHJlYW0uaApAQCAtNDcsNiArNDcsNyBAQCBjbGFzcyBKU1ZhbHVlOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERpY3Rpb25hcnk7CiBjbGFzcyBSZWFkYWJsZVN0
cmVhbVJlYWRlcjsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKQEAgLTY0LDYgKzY1
LDcgQEAgcHVibGljOgogICAgICAgICBFcnJvcmVkCiAgICAgfTsKIAorICAgIHN0YXRpYyBSZWZQ
dHI8UmVhZGFibGVTdHJlYW0+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwg
Y29uc3QgRGljdGlvbmFyeSYpOwogICAgIHZpcnR1YWwgflJlYWRhYmxlU3RyZWFtKCk7CiAKICAg
ICBSZWFkYWJsZVN0cmVhbVJlYWRlciogZ2V0UmVhZGVyKEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaWRsCmluZGV4
IDA2NjM1YzM5YzBlMGM1OWZhOTQ5NjMxODRmMmNkZjZiMDhhNmJlMWMuLjg2M2MyNjQzMThjNTQx
MjBhNzA4ODkxYTFjZGFjNTNmMDY4Y2IwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmlkbApAQCAtMjgsNyArMjgsOCBAQAogICovCiAK
IFsKLSAgICBDdXN0b21Db25zdHJ1Y3RvcihhbnkgcHJvcGVydGllcyksCisgICAgQ29uc3RydWN0
b3JDYWxsV2l0aD1TY3JpcHRTdGF0ZSwKKyAgICBDb25zdHJ1Y3RvcihbRGVmYXVsdD1VbmRlZmlu
ZWRdIG9wdGlvbmFsIGFueSBzb3VyY2UsIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRGlj
dGlvbmFyeSBzdHJhdGVneSksCiAgICAgQ29uZGl0aW9uYWw9U1RSRUFNU19BUEksCiAgICAgU2tp
cFZUYWJsZVZhbGlkYXRpb24KIF0gaW50ZXJmYWNlIFJlYWRhYmxlU3RyZWFtIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCmluZGV4IGU5ODQ5MDllNzZiMjU5
NDBkYTllZWNkMGQ5NjU5OWUwZThmNmY1MGMuLmY2N2MyMzQ4NWZmNDQ0MDNmOGVlZTM4YWVlMzYw
YzgwZDhjZWFhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGlj
dGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5
LmNwcApAQCAtMjY1LDYgKzI2NSwxMSBAQCB2b2lkIEpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVl
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBSZWZQdHI8R2FtZQogfQogI2Vu
ZGlmCiAKK3ZvaWQgSlNEaWN0aW9uYXJ5Ojpjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTVmFsdWUgdmFsdWUsIEpTQzo6SlNGdW5jdGlvbiomIHJlc3VsdCkKK3sKKyAgICByZXN1
bHQgPSBqc0R5bmFtaWNDYXN0PEpTQzo6SlNGdW5jdGlvbio+KHZhbHVlKTsKK30KKwogYm9vbCBK
U0RpY3Rpb25hcnk6OmdldFdpdGhVbmRlZmluZWRPck51bGxDaGVjayhjb25zdCBjaGFyKiBwcm9w
ZXJ0eU5hbWUsIFN0cmluZyYgcmVzdWx0KSBjb25zdAogewogICAgIEFTU0VSVChpc1ZhbGlkKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuaAppbmRleCBlOTAyZjlh
NmFjNmFjODYzODBlZjk2MDhlOWQ5MTBjYTQzMzBkODdmLi45YjZlYjY1ZmM4ZjFkNjMyNjZlZjUw
MGJkYzJhNWU1NWQ2YzgzYTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RpY3Rpb25hcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rp
b25hcnkuaApAQCAtMTM3LDYgKzEzNyw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEdBTUVQQUQp
CiAgICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1Zh
bHVlLCBSZWZQdHI8R2FtZXBhZD4mKTsKICNlbmRpZgorICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRW
YWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU0Z1bmN0aW9uKiYpOwog
CiAgICAgSlNDOjpFeGVjU3RhdGUqIG1fZXhlYzsKICAgICBKU0M6OlN0cm9uZzxKU0M6OkpTT2Jq
ZWN0PiBtX2luaXRpYWxpemVyT2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtQ3VzdG9tLmNwcAppbmRleCAyOThmZjhkYjNlODhkZWQ3
OWY5OThhZTEyOWZmMzRiNzAwNmUxMTI3Li4zNDhkMTZiMmZlYmU3OTg3ZDJkZDY2ZjVjYzg2NjVm
NWE3YzBlZTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRh
YmxlU3RyZWFtQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Jl
YWRhYmxlU3RyZWFtQ3VzdG9tLmNwcApAQCAtNTksMjAgKzU5LDYgQEAgSlNWYWx1ZSBKU1JlYWRh
YmxlU3RyZWFtOjpwaXBlVGhyb3VnaChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgZXJyb3IpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTUmVhZGFibGVTdHJlYW0oRXhlY1N0YXRlKiBleGVjKQot
ewotICAgIERPTUNvbnN0cnVjdG9yT2JqZWN0KiBqc0NvbnN0cnVjdG9yID0ganNDYXN0PERPTUNv
bnN0cnVjdG9yT2JqZWN0Kj4oZXhlYy0+Y2FsbGVlKCkpOwotICAgIEFTU0VSVChqc0NvbnN0cnVj
dG9yKTsKLQotICAgIFJlZlB0cjxSZWFkYWJsZUpTU3RyZWFtPiByZWFkYWJsZVN0cmVhbSA9IFJl
YWRhYmxlSlNTdHJlYW06OmNyZWF0ZSgqZXhlYywgKmpzQ29uc3RydWN0b3ItPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSk7Ci0KLSAgICBpZiAoIXJlYWRhYmxlU3RyZWFtKSB7Ci0gICAgICAgIEFT
U0VSVChleGVjLT5oYWRFeGNlcHRpb24oKSk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgfQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9K
UyhleGVjLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5jYWxsZWUoKS0+Z2xvYmFs
T2JqZWN0KCkpLCBXVEY6Om1vdmUocmVhZGFibGVTdHJlYW0pKSk7Ci19Ci0KIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Jl
YWRhYmxlSlNTdHJlYW0uY3BwCmluZGV4IDUzODEyNTRjMGU5OGY4NTM5Yjc4MDJiNDE4ZWU4OTVi
Yzc3NGQyYzQuLmMwMDE5NzFmYTVkZGYwMjY0ODQ2YjEzY2E1ZjhlZTg1YzE4ZjUxOTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwCkBAIC0z
MywxMSArMzMsMTMgQEAKICNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCiAKICNpbmNsdWRlICJET01X
cmFwcGVyV29ybGQuaCIKKyNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgogI2luY2x1ZGUgIkpTUmVhZGFi
bGVTdHJlYW0uaCIKICNpbmNsdWRlICJKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTY3JpcHRTdGF0ZS5o
IgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDxydW50aW1lL0V4Y2VwdGlv
bi5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaD4KQEAgLTE5OSw2NiAr
MjAxLDQzIEBAIGJvb2wgUmVhZGFibGVKU1N0cmVhbTo6ZG9DYW5jZWwoSlNWYWx1ZSByZWFzb24p
CiAgICAgcmV0dXJuICFwcm9taXNlOwogfQogCi1zdGF0aWMgaW5saW5lIGRvdWJsZSBub3JtYWxp
emVIaWdoV2F0ZXJNYXJrKEV4ZWNTdGF0ZSYgZXhlYywgSlNPYmplY3QmIHN0cmF0ZWd5KQorUmVm
UHRyPFJlYWRhYmxlSlNTdHJlYW0+IFJlYWRhYmxlSlNTdHJlYW06OmNyZWF0ZShKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSBzb3VyY2UsIGNvbnN0IERpY3Rpb25hcnkmIHN0cmF0
ZWd5KQogewotICAgIEpTVmFsdWUganNIaWdoV2F0ZXJNYXJrID0gZ2V0UHJvcGVydHlGcm9tT2Jq
ZWN0KGV4ZWMsIHN0cmF0ZWd5LCAiaGlnaFdhdGVyTWFyayIpOwotCi0gICAgaWYgKGV4ZWMuaGFk
RXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKGpzSGlnaFdhdGVyTWFy
ay5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gMTsKLQotICAgIGRvdWJsZSBoaWdoV2F0
ZXJNYXJrID0ganNIaWdoV2F0ZXJNYXJrLnRvTnVtYmVyKCZleGVjKTsKLQotICAgIGlmIChleGVj
LmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChzdGQ6OmlzbmFu
KGhpZ2hXYXRlck1hcmspKSB7Ci0gICAgICAgIHRocm93Vk1FcnJvcigmZXhlYywgY3JlYXRlVHlw
ZUVycm9yKCZleGVjLCBBU0NJSUxpdGVyYWwoIlZhbHVlIGlzIE5hTiIpKSk7Ci0gICAgICAgIHJl
dHVybiAwOwotICAgIH0KLSAgICBpZiAoaGlnaFdhdGVyTWFyayA8IDApIHsKLSAgICAgICAgdGhy
b3dWTUVycm9yKCZleGVjLCBjcmVhdGVSYW5nZUVycm9yKCZleGVjLCBBU0NJSUxpdGVyYWwoIk5v
dCBhIHBvc2l0aXZlIHZhbHVlIikpKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJl
dHVybiBoaWdoV2F0ZXJNYXJrOwotfQotCi1SZWZQdHI8UmVhZGFibGVKU1N0cmVhbT4gUmVhZGFi
bGVKU1N0cmVhbTo6Y3JlYXRlKEV4ZWNTdGF0ZSYgc3RhdGUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCi17Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBj
b25zaWRlciByZWR1Y2luZyB0aGUgYmluZGluZyBjb2RlIGhlcmVpICh1c2luZyBEaWN0aW9uYXJ5
L3JlZ3VsYXIgYmluZGluZyBjb25zdHJ1Y3RvciBhbmQvb3IgaW1wcm92aW5nIHRoZSBJREwgZ2Vu
ZXJhdG9yKS4gCiAgICAgSlNPYmplY3QqIGpzU291cmNlOwotICAgIEpTVmFsdWUgdmFsdWUgPSBz
dGF0ZS5hcmd1bWVudCgwKTsKLSAgICBpZiAodmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAganNT
b3VyY2UgPSB2YWx1ZS5nZXRPYmplY3QoKTsKLSAgICBlbHNlIGlmICghdmFsdWUuaXNVbmRlZmlu
ZWQoKSkgewotICAgICAgICB0aHJvd1ZNRXJyb3IoJnN0YXRlLCBjcmVhdGVUeXBlRXJyb3IoJnN0
YXRlLCBBU0NJSUxpdGVyYWwoIkZpcnN0IGFyZ3VtZW50LCBpZiBhbnksIHNob3VsZCBiZSBhbiBv
YmplY3QiKSkpOworICAgIGlmIChzb3VyY2UuaXNPYmplY3QoKSkKKyAgICAgICAganNTb3VyY2Ug
PSBzb3VyY2UuZ2V0T2JqZWN0KCk7CisgICAgZWxzZSBpZiAoIXNvdXJjZS5pc1VuZGVmaW5lZCgp
KSB7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoJnN0YXRlLCAiQXJndW1lbnQgMSBvZiBSZWFk
YWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBtdXN0IGJlIGFuIG9iamVjdCIpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9IGVsc2UKICAgICAgICAganNTb3VyY2UgPSBKU0ZpbmFsT2JqZWN0
OjpjcmVhdGUoc3RhdGUudm0oKSwgSlNGaW5hbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHN0YXRl
LnZtKCksIHN0YXRlLmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKSwganNOdWxsKCksIDEpKTsKIAog
ICAgIGRvdWJsZSBoaWdoV2F0ZXJNYXJrID0gMTsKICAgICBKU0Z1bmN0aW9uKiBzaXplRnVuY3Rp
b24gPSBudWxscHRyOwotICAgIHZhbHVlID0gc3RhdGUuYXJndW1lbnQoMSk7Ci0gICAgaWYgKHZh
bHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgSlNPYmplY3QmIHN0cmF0ZWd5T2JqZWN0ID0gKnZh
bHVlLmdldE9iamVjdCgpOwotICAgICAgICBoaWdoV2F0ZXJNYXJrID0gbm9ybWFsaXplSGlnaFdh
dGVyTWFyayhzdGF0ZSwgc3RyYXRlZ3lPYmplY3QpOwotICAgICAgICBpZiAoc3RhdGUuaGFkRXhj
ZXB0aW9uKCkpCisgICAgaWYgKCFzdHJhdGVneS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAg
ICAgIGlmIChzdHJhdGVneS5nZXQoImhpZ2hXYXRlck1hcmsiLCBoaWdoV2F0ZXJNYXJrKSkgewor
ICAgICAgICAgICAgaWYgKHN0ZDo6aXNuYW4oaGlnaFdhdGVyTWFyaykpIHsKKyAgICAgICAgICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKCZzdGF0ZSwgIidoaWdoV2F0ZXJNYXJrJyBvZiBBcmd1bWVu
dCAyIG9mIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBOYU4iKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
IChoaWdoV2F0ZXJNYXJrIDwgMCkgeworICAgICAgICAgICAgICAgIHRocm93Vk1SYW5nZUVycm9y
KCZzdGF0ZSwgIidoaWdoV2F0ZXJNYXJrJyBvZiBBcmd1bWVudCAyIG9mIFJlYWRhYmxlU3RyZWFt
IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBuZWdhdGl2ZSIpOworICAgICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICAgICAgfQorCisgICAgICAgIH0gZWxzZSBpZiAoc3RhdGUuaGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICBpZiAo
IShzaXplRnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPihnZXRQcm9wZXJ0eUZy
b21PYmplY3Qoc3RhdGUsIHN0cmF0ZWd5T2JqZWN0LCAic2l6ZSIpKSkpIHsKLSAgICAgICAgICAg
IGlmICghc3RhdGUuaGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgdGhyb3dWTUVycm9y
KCZzdGF0ZSwgY3JlYXRlVHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJzaXplIHBhcmFt
ZXRlciBzaG91bGQgYmUgYSBmdW5jdGlvbiIpKSk7CisgICAgICAgIGlmIChzdHJhdGVneS5nZXQo
InNpemUiLCBzaXplRnVuY3Rpb24pKSB7CisgICAgICAgICAgICBpZiAoIXNpemVGdW5jdGlvbikg
eworICAgICAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoJnN0YXRlLCAiJ3NpemUnIG9mIEFy
Z3VtZW50IDIgb2YgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3IgbXVzdCBiZSBhIGZ1bmN0aW9u
Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0gZWxzZSBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICAgICAgfQotICAgICAgICAKLSAgICB9IGVsc2UgaWYgKCF2YWx1ZS5pc1Vu
ZGVmaW5lZCgpKSB7Ci0gICAgICAgIHRocm93Vk1FcnJvcigmc3RhdGUsIGNyZWF0ZVR5cGVFcnJv
cigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiU2Vjb25kIGFyZ3VtZW50LCBpZiBhbnksIHNob3VsZCBi
ZSBhbiBvYmplY3QiKSkpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBS
ZWZQdHI8UmVhZGFibGVKU1N0cmVhbT4gcmVhZGFibGVTdHJlYW0gPSBhZG9wdFJlZigqbmV3IFJl
YWRhYmxlSlNTdHJlYW0oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgc3RhdGUsIGpzU291cmNlLCBo
aWdoV2F0ZXJNYXJrLCBzaXplRnVuY3Rpb24pKTsKKyAgICBSZWZQdHI8UmVhZGFibGVKU1N0cmVh
bT4gcmVhZGFibGVTdHJlYW0gPSBhZG9wdFJlZigqbmV3IFJlYWRhYmxlSlNTdHJlYW0oc3RhdGUs
IGpzU291cmNlLCBoaWdoV2F0ZXJNYXJrLCBzaXplRnVuY3Rpb24pKTsKICAgICByZWFkYWJsZVN0
cmVhbS0+ZG9TdGFydChzdGF0ZSk7CiAKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCkBA
IC0yNjcsOCArMjQ2LDggQEAgUmVmUHRyPFJlYWRhYmxlSlNTdHJlYW0+IFJlYWRhYmxlSlNTdHJl
YW06OmNyZWF0ZShFeGVjU3RhdGUmIHN0YXRlLCBTY3JpcHRFeGVjdXQKICAgICByZXR1cm4gcmVh
ZGFibGVTdHJlYW07CiB9CiAKLVJlYWRhYmxlSlNTdHJlYW06OlJlYWRhYmxlSlNTdHJlYW0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRXhlY1N0YXRlJiBz
dGF0ZSwgSlNPYmplY3QqIHNvdXJjZSwgZG91YmxlIGhpZ2hXYXRlck1hcmssIEpTRnVuY3Rpb24q
IHNpemVGdW5jdGlvbikKLSAgICA6IFJlYWRhYmxlU3RyZWFtKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpCitSZWFkYWJsZUpTU3RyZWFtOjpSZWFkYWJsZUpTU3RyZWFtKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTT2JqZWN0KiBzb3VyY2UsIGRvdWJsZSBoaWdoV2F0ZXJNYXJrLCBKU0Z1bmN0aW9uKiBzaXpl
RnVuY3Rpb24pCisgICAgOiBSZWFkYWJsZVN0cmVhbSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZy
b21FeGVjU3RhdGUoJnN0YXRlKSkKICAgICAsIG1faGlnaFdhdGVyTWFyayhoaWdoV2F0ZXJNYXJr
KQogewogICAgIG1fc291cmNlLnNldChzdGF0ZS52bSgpLCBzb3VyY2UpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5oCmluZGV4IDRlYWE0OTMyZWEwZmQx
NjhiNjVkNGM4YzM1ZTQxYTE0NjM4ODMxYTcuLmM4NThhYjM4N2UwOTNhNDU5YWM0YTgxOTA5ZmY4
MmE0MWRkOTFiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRh
YmxlSlNTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpT
U3RyZWFtLmgKQEAgLTU0LDcgKzU0LDcgQEAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAog
Y2xhc3MgUmVhZGFibGVKU1N0cmVhbTogcHVibGljIFJlYWRhYmxlU3RyZWFtIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmUHRyPFJlYWRhYmxlSlNTdHJlYW0+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0
ZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFJlYWRhYmxl
SlNTdHJlYW0+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgY29uc3QgRGlj
dGlvbmFyeSYpOwogCiAgICAgSlNDOjpKU1ZhbHVlIGpzQ29udHJvbGxlcihKU0M6OkV4ZWNTdGF0
ZSYsIEpTRE9NR2xvYmFsT2JqZWN0Kik7CiAgICAgdm9pZCBjbG9zZShFeGNlcHRpb25Db2RlJik7
CkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICBkb3VibGUgZGVzaXJlZFNpemUoKSBjb25z
dCB7IHJldHVybiBtX2hpZ2hXYXRlck1hcmsgLSBtX3RvdGFsUXVldWVTaXplOyB9CiAKIHByaXZh
dGU6Ci0gICAgUmVhZGFibGVKU1N0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSlNDOjpF
eGVjU3RhdGUmLCBKU0M6OkpTT2JqZWN0KiwgZG91YmxlLCBKU0M6OkpTRnVuY3Rpb24qKTsKKyAg
ICBSZWFkYWJsZUpTU3RyZWFtKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU09iamVjdCosIGRvdWJs
ZSwgSlNDOjpKU0Z1bmN0aW9uKik7CiAKICAgICB2b2lkIGRvU3RhcnQoSlNDOjpFeGVjU3RhdGUm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQppbmRleCA0NTI3ODQwNDk5MTFkOWM0NzdjZThmMWE3NTU4YjA4MmFkMDgxNWJkLi42
MmU0ZGM5Zjk5YzU5MGJiZGU4YjI1OGE1N2RmYTAxMTYxZjAwY2I3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNDY2MCw2
ICs0NjYwLDkgQEAgRU5ECiAgICAgICAgICAgICBteSAkbnVtUGFyYW1ldGVycyA9IEB7JGZ1bmN0
aW9uLT5wYXJhbWV0ZXJzfTsKICAgICAgICAgICAgIG15ICgkZHVtbXksICRwYXJhbUluZGV4KSA9
IEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKCRvdXRwdXRBcnJheSwgJGZ1bmN0aW9uLCAkaW50ZXJm
YWNlLCAkbnVtUGFyYW1ldGVycywgJGludGVyZmFjZU5hbWUsICJjb25zdHJ1Y3RvckNhbGxiYWNr
IiwgdW5kZWYsIHVuZGVmLCB1bmRlZik7CiAKKyAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRv
ci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiQ29uc3RydWN0b3JDYWxsV2l0aCJ9LCAiU2NyaXB0U3RhdGUiKSkgeworICAgICAgICAg
ICAgICAgIHB1c2goQGNvbnN0cnVjdG9yQXJnTGlzdCwgIipleGVjIik7CisgICAgICAgICAgICB9
CiAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFp
bnMoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yQ2FsbFdpdGgi
fSwgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiKSkgewogICAgICAgICAgICAgICAgIHB1c2goQGNv
bnN0cnVjdG9yQXJnTGlzdCwgIipjb250ZXh0Iik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBjYXN0ZWRU
aGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7XG4iKTsKQEAgLTQ3MDIsNiArNDcwNSwxMSBA
QCBFTkQKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuIik7CiAg
ICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRB
dHRyaWJ1dGVDb250YWlucygkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3Ry
dWN0b3JDYWxsV2l0aCJ9LCAiU2NyaXB0U3RhdGUiKSkgeworICAgICAgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSlc
biIpOworICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG4iKTsKKyAgICAgICAgICAgIH0KKwog
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoYXNPYmplY3QodG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgb2JqZWN0
LmdldCgpKSkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIp
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0lETEF0dHJpYnV0ZXMudHh0IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExB
dHRyaWJ1dGVzLnR4dAppbmRleCAyOWMyM2NlMWU3YjUyNjQyMTg5ZGRjODBiOWZmYjYzMDhlMTg5
NjIxLi4wNjYyMDUyYzIzNmU2YzZiOWM1ZDhkZWVlNzQxZjEzYThhNGYwNTdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQKQEAgLTI5
LDcgKzI5LDcgQEAgQ2hlY2tTZWN1cml0eUZvck5vZGUKIENsYW1wCiBDb25kaXRpb25hbD0qCiBD
b25zdHJ1Y3RvcgotQ29uc3RydWN0b3JDYWxsV2l0aD1Eb2N1bWVudHxTY3JpcHRFeGVjdXRpb25D
b250ZXh0CitDb25zdHJ1Y3RvckNhbGxXaXRoPURvY3VtZW50fFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHR8U2NyaXB0U3RhdGUKIENvbnN0cnVjdG9yQ29uZGl0aW9uYWw9KgogQ29uc3RydWN0b3JSYWlz
ZXNFeGNlcHRpb24KIENvbnN0cnVjdG9yVGVtcGxhdGU9RXZlbnR8VHlwZWRBcnJheQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256199</attachid>
            <date>2015-07-06 01:18:32 -0700</date>
            <delta_ts>2015-07-06 02:03:31 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-146547-20150706101733.patch</filename>
            <type>text/plain</type>
            <size>17262</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2MzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
YTM2MGQwNWI2M2JhNDBlMWFjOGI1MTlhZWMzZWYwMWZmYWRhM2E3Li4xMTJhZWY3NDBkM2ZlYWFm
MzE4ZGE4OGRlZTk0NWY4ZTAyN2Y2ZjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNS0wNy0wNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3Jm
LmNhbm9uLmZyPgorCisgICAgICAgIFtTdHJlYW1zIEFQSV0gUmVtb3ZlIFJlYWRhYmxlU3RyZWFt
IGN1c3RvbSBjb25zdHJ1Y3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQ2NTQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgQWRkaW5nIGhlbHBlciBmdW5jdGlvbiB0byB0aHJvdyByYW5nZSBlcnJvcnMuCisK
KyAgICAgICAgKiBydW50aW1lL0Vycm9yLmg6CisgICAgICAgIChKU0M6OnRocm93UmFuZ2VFcnJv
cik6CisgICAgICAgIChKU0M6OnRocm93Vk1SYW5nZUVycm9yKToKKwogMjAxNS0wNy0wNSAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbRVM2XSBJbXBs
ZW1lbnQgdGhlIGxhdGVzdCBQcm9taXNlIHNwZWMgaW4gSlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2MjQ4ZjE0
YjU0ODhlMWU5ZGI1ZDVjNjMwYTA3NzlhZjk3NTc2NzQzLi41MDRlNWU5ZTlkZWUyODEzNTdmMWQ4
YjIyMWFhOTcwZmM3YTVlNGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTUtMDct
MDYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAg
ICBbU3RyZWFtcyBBUEldIFJlbW92ZSBSZWFkYWJsZVN0cmVhbSBjdXN0b20gY29uc3RydWN0b3IK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjU0Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJlbW92ZWQgY3Vz
dG9tIGJpbmRpbmcuCisgICAgICAgIE1hZGUgdXNlIG9mIERpY3Rpb25hcnkgaW4gbGlldSBvZiBK
U09iamVjdCB0byByZWR1Y2UgcmVhZGFibGUgc3RyZWFtIGNvbnN0cnVjdG9yIHBhcmFtZXRlciBw
YXJzaW5nLgorICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBwYXNzaW5nIEV4ZWNTdGF0ZSB0byBj
b25zdHJ1dG9yIHdpdGhpbiBiaW5kaW5nIGdlbmVyYXRvci4KKworICAgICAgICBObyBjaGFuZ2Ug
aW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OmNyZWF0ZSk6CisgICAgICAg
ICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkYWJsZVN0cmVhbTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVTdHJlYW0uaWRsOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNSZWFk
YWJsZVN0cmVhbUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVKU1N0
cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZUpTU3RyZWFtOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVKU1N0cmVhbTo6UmVhZGFibGVKU1N0cmVhbSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5oOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1
Y3RvckRlZmluaXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRl
cy50eHQ6CisKIDIwMTUtMDctMDUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5j
YW5vbi5mcj4KIAogICAgICAgICBQcm9taXNlLXJldHVybmluZyBmdW5jdGlvbnMgc2hvdWxkIHJl
amVjdCBwcm9taXNlcyBpZiB0aGUgY2FsbGVlIGlzIG5vdCBvZiB0aGUgZXhwZWN0ZWQgdHlwZQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKaW5kZXggMDE3NzQwZTU1ZWE3MTJiMTJi
M2U5OTdkZDFkYzdlNTdmMjQ2OWU5ZS4uZWMzMGEzZGM0NjZlMWViNDQ5YjNlNTg1YWE4MDQ5MmVm
MTk4NDY0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCkBAIC03NCwxMiAr
NzQsMTQgQEAgSlNPYmplY3QqIGFkZEVycm9ySW5mbyhFeGVjU3RhdGUqLCBKU09iamVjdCogZXJy
b3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJikKIC8vIENvbnZlbmllbmNlIHdyYXBwZXJz
LCBjcmVhdGUgYW4gdGhyb3cgYW4gZXhjZXB0aW9uIHdpdGggYSBkZWZhdWx0IG1lc3NhZ2UuCiBK
U19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKik7CiBK
U19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUqKTsK
K2lubGluZSBKU09iamVjdCogdGhyb3dSYW5nZUVycm9yKEV4ZWNTdGF0ZSogc3RhdGUsIGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBzdGF0ZS0+dm0oKS50aHJvd0V4Y2VwdGlv
bihzdGF0ZSwgY3JlYXRlUmFuZ2VFcnJvcihzdGF0ZSwgZXJyb3JNZXNzYWdlKSk7IH0KIAogLy8g
Q29udmVuaWVuY2Ugd3JhcHBlcnMsIHdyYXAgcmVzdWx0IGFzIGFuIEVuY29kZWRKU1ZhbHVlLgog
aW5saW5lIHZvaWQgdGhyb3dWTUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgRXhjZXB0aW9uKiBleGNl
cHRpb24pIHsgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBleGNlcHRpb24pOyB9CiBp
bmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBlcnJvcikgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRp
b24oZXhlYywgZXJyb3IpKTsgfQogaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1UeXBlRXJy
b3IoRXhlY1N0YXRlKiBleGVjKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IoZXhlYykpOyB9CiBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTVR5cGVFcnJvcihFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlKSk7IH0KK2lubGluZSBF
bmNvZGVkSlNWYWx1ZSB0aHJvd1ZNUmFuZ2VFcnJvcihFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBT
dHJpbmcmIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93UmFuZ2VF
cnJvcihzdGF0ZSwgZXJyb3JNZXNzYWdlKSk7IH0KIAogY2xhc3MgU3RyaWN0TW9kZVR5cGVFcnJv
ckZ1bmN0aW9uIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwCmluZGV4IDIx
N2NmOTIzYWNkZTJlNzAwNDhlY2M1MzU5ZWFkNTFhNjZjY2JhNTAuLjE0MzM5NjkwYTljN2U5NWY2
ZTYwN2I3ZjExYWY4MzM3YmZmMTBiYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2lmIEVOQUJM
RShTVFJFQU1TX0FQSSkKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJS
ZWFkYWJsZUpTU3RyZWFtLmgiCiAjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1SZWFkZXIuaCIKICNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU0NK
U1ZhbHVlSW5saW5lcy5oPgpAQCAtNDIsNiArNDMsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBERUZJTkVfREVCVUdfT05MWV9HTE9CQUwoV1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXIsIHJl
YWRhYmxlU3RyZWFtQ291bnRlciwgKCJSZWFkYWJsZVN0cmVhbSIpKTsKIAorUmVmUHRyPFJlYWRh
YmxlU3RyZWFtPiBSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwg
SlNDOjpKU1ZhbHVlIHZhbHVlLCBjb25zdCBEaWN0aW9uYXJ5JiBzdHJhdGVneSkKK3sKKyAgICBy
ZXR1cm4gUmVmUHRyPFJlYWRhYmxlU3RyZWFtPihSZWFkYWJsZUpTU3RyZWFtOjpjcmVhdGUoc3Rh
dGUsIHZhbHVlLCBzdHJhdGVneSkpOworfQorCiBSZWFkYWJsZVN0cmVhbTo6UmVhZGFibGVTdHJl
YW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICA6
IEFjdGl2ZURPTU9iamVjdCgmc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmgKaW5kZXggYzUxNGYyNjFj
OTc5MGU0MTM5ODZmNDFlNTdmOTM0ZjgzZjU5ZjEzYS4uZjA4ZDgwMDFmMzUwYTE3NmE3NTY1MjQz
MDgxMGU5YWQ0ZjlhMTVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJl
YW1zL1JlYWRhYmxlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1z
L1JlYWRhYmxlU3RyZWFtLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgY2xhc3MgSlNWYWx1ZTsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEaWN0aW9uYXJ5OwogY2xhc3MgUmVhZGFibGVTdHJl
YW1SZWFkZXI7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCkBAIC02NCw2ICs2NSw3
IEBAIHB1YmxpYzoKICAgICAgICAgRXJyb3JlZAogICAgIH07CiAKKyAgICBzdGF0aWMgUmVmUHRy
PFJlYWRhYmxlU3RyZWFtPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUsIGNv
bnN0IERpY3Rpb25hcnkmKTsKICAgICB2aXJ0dWFsIH5SZWFkYWJsZVN0cmVhbSgpOwogCiAgICAg
UmVhZGFibGVTdHJlYW1SZWFkZXIqIGdldFJlYWRlcihFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmlkbAppbmRleCAw
NjYzNWMzOWMwZTBjNTlmYTk0OTYzMTg0ZjJjZGY2YjA4YTZiZTFjLi44NjNjMjY0MzE4YzU0MTIw
YTcwODg5MWExY2RhYzUzZjA2OGNiMGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5pZGwKQEAgLTI4LDcgKzI4LDggQEAKICAqLwogCiBb
Ci0gICAgQ3VzdG9tQ29uc3RydWN0b3IoYW55IHByb3BlcnRpZXMpLAorICAgIENvbnN0cnVjdG9y
Q2FsbFdpdGg9U2NyaXB0U3RhdGUsCisgICAgQ29uc3RydWN0b3IoW0RlZmF1bHQ9VW5kZWZpbmVk
XSBvcHRpb25hbCBhbnkgc291cmNlLCBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERpY3Rp
b25hcnkgc3RyYXRlZ3kpLAogICAgIENvbmRpdGlvbmFsPVNUUkVBTVNfQVBJLAogICAgIFNraXBW
VGFibGVWYWxpZGF0aW9uCiBdIGludGVyZmFjZSBSZWFkYWJsZVN0cmVhbSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAppbmRleCBlOTg0OTA5ZTc2YjI1OTQw
ZGE5ZWVjZDBkOTY1OTllMGU4ZjZmNTBjLi5mNjdjMjM0ODVmZjQ0NDAzZjhlZWUzOGFlZTM2MGM4
MGQ4Y2VhYTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rp
b25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5j
cHAKQEAgLTI2NSw2ICsyNjUsMTEgQEAgdm9pZCBKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgUmVmUHRyPEdhbWUKIH0KICNlbmRp
ZgogCit2b2lkIEpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpKU1ZhbHVlIHZhbHVlLCBKU0M6OkpTRnVuY3Rpb24qJiByZXN1bHQpCit7CisgICAgcmVzdWx0
ID0ganNEeW5hbWljQ2FzdDxKU0M6OkpTRnVuY3Rpb24qPih2YWx1ZSk7Cit9CisKIGJvb2wgSlNE
aWN0aW9uYXJ5OjpnZXRXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soY29uc3QgY2hhciogcHJvcGVy
dHlOYW1lLCBTdHJpbmcmIHJlc3VsdCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNWYWxpZCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmgKaW5kZXggZTkwMmY5YTZh
YzZhYzg2MzgwZWY5NjA4ZTlkOTEwY2E0MzMwZDg3Zi4uOWI2ZWI2NWZjOGYxZDYzMjY2ZWY1MDBi
ZGMyYTVlNTVkNmM4M2E5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNEaWN0aW9uYXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9u
YXJ5LmgKQEAgLTEzNyw2ICsxMzcsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShHQU1FUEFEKQog
ICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSwgUmVmUHRyPEdhbWVwYWQ+Jik7CiAjZW5kaWYKKyAgICBzdGF0aWMgdm9pZCBjb252ZXJ0VmFs
dWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNGdW5jdGlvbiomKTsKIAog
ICAgIEpTQzo6RXhlY1N0YXRlKiBtX2V4ZWM7CiAgICAgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVj
dD4gbV9pbml0aWFsaXplck9iamVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTUmVhZGFibGVTdHJlYW1DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNSZWFkYWJsZVN0cmVhbUN1c3RvbS5jcHAKaW5kZXggMjk4ZmY4ZGIzZTg4ZGVkNzlm
OTk4YWUxMjlmZjM0YjcwMDZlMTEyNy4uMzQ4ZDE2YjJmZWJlNzk4N2QyZGQ2NmY1Y2M4NjY1ZjVh
N2MwZWU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJs
ZVN0cmVhbUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFk
YWJsZVN0cmVhbUN1c3RvbS5jcHAKQEAgLTU5LDIwICs1OSw2IEBAIEpTVmFsdWUgSlNSZWFkYWJs
ZVN0cmVhbTo6cGlwZVRocm91Z2goRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBleGVjLT52
bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGVycm9yKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1JlYWRhYmxlU3RyZWFtKEV4ZWNTdGF0ZSogZXhlYykKLXsK
LSAgICBET01Db25zdHJ1Y3Rvck9iamVjdCoganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDxET01Db25z
dHJ1Y3Rvck9iamVjdCo+KGV4ZWMtPmNhbGxlZSgpKTsKLSAgICBBU1NFUlQoanNDb25zdHJ1Y3Rv
cik7Ci0KLSAgICBSZWZQdHI8UmVhZGFibGVKU1N0cmVhbT4gcmVhZGFibGVTdHJlYW0gPSBSZWFk
YWJsZUpTU3RyZWFtOjpjcmVhdGUoKmV4ZWMsICpqc0NvbnN0cnVjdG9yLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpOwotCi0gICAgaWYgKCFyZWFkYWJsZVN0cmVhbSkgewotICAgICAgICBBU1NF
UlQoZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotICAgIH0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMo
ZXhlYywganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9i
amVjdCgpKSwgV1RGOjptb3ZlKHJlYWRhYmxlU3RyZWFtKSkpOwotfQotCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvUmVhZGFibGVKU1N0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFk
YWJsZUpTU3RyZWFtLmNwcAppbmRleCA1MzgxMjU0YzBlOThmODUzOWI3ODAyYjQxOGVlODk1YmM3
NzRkMmM0Li5jMDAxOTcxZmE1ZGRmMDI2NDg0NmIxM2NhNWY4ZWU4NWMxOGY1MTk4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcApAQCAtMzMs
MTEgKzMzLDEzIEBACiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQogCiAjaW5jbHVkZSAiRE9NV3Jh
cHBlcldvcmxkLmgiCisjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKICNpbmNsdWRlICJKU1JlYWRhYmxl
U3RyZWFtLmgiCiAjaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIK
ICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAjaW5jbHVkZSA8cnVudGltZS9FeGNlcHRpb24u
aD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CkBAIC0xOTksNjYgKzIw
MSw0MyBAQCBib29sIFJlYWRhYmxlSlNTdHJlYW06OmRvQ2FuY2VsKEpTVmFsdWUgcmVhc29uKQog
ICAgIHJldHVybiAhcHJvbWlzZTsKIH0KIAotc3RhdGljIGlubGluZSBkb3VibGUgbm9ybWFsaXpl
SGlnaFdhdGVyTWFyayhFeGVjU3RhdGUmIGV4ZWMsIEpTT2JqZWN0JiBzdHJhdGVneSkKK1JlZlB0
cjxSZWFkYWJsZUpTU3RyZWFtPiBSZWFkYWJsZUpTU3RyZWFtOjpjcmVhdGUoSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgc291cmNlLCBjb25zdCBEaWN0aW9uYXJ5JiBzdHJhdGVn
eSkKIHsKLSAgICBKU1ZhbHVlIGpzSGlnaFdhdGVyTWFyayA9IGdldFByb3BlcnR5RnJvbU9iamVj
dChleGVjLCBzdHJhdGVneSwgImhpZ2hXYXRlck1hcmsiKTsKLQotICAgIGlmIChleGVjLmhhZEV4
Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChqc0hpZ2hXYXRlck1hcmsu
aXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICBkb3VibGUgaGlnaFdhdGVy
TWFyayA9IGpzSGlnaFdhdGVyTWFyay50b051bWJlcigmZXhlYyk7Ci0KLSAgICBpZiAoZXhlYy5o
YWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoc3RkOjppc25hbiho
aWdoV2F0ZXJNYXJrKSkgewotICAgICAgICB0aHJvd1ZNRXJyb3IoJmV4ZWMsIGNyZWF0ZVR5cGVF
cnJvcigmZXhlYywgQVNDSUlMaXRlcmFsKCJWYWx1ZSBpcyBOYU4iKSkpOwotICAgICAgICByZXR1
cm4gMDsKLSAgICB9Ci0gICAgaWYgKGhpZ2hXYXRlck1hcmsgPCAwKSB7Ci0gICAgICAgIHRocm93
Vk1FcnJvcigmZXhlYywgY3JlYXRlUmFuZ2VFcnJvcigmZXhlYywgQVNDSUlMaXRlcmFsKCJOb3Qg
YSBwb3NpdGl2ZSB2YWx1ZSIpKSk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1
cm4gaGlnaFdhdGVyTWFyazsKLX0KLQotUmVmUHRyPFJlYWRhYmxlSlNTdHJlYW0+IFJlYWRhYmxl
SlNTdHJlYW06OmNyZWF0ZShFeGVjU3RhdGUmIHN0YXRlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQotewotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY29u
c2lkZXIgcmVkdWNpbmcgdGhlIGJpbmRpbmcgY29kZSBoZXJlaSAodXNpbmcgRGljdGlvbmFyeS9y
ZWd1bGFyIGJpbmRpbmcgY29uc3RydWN0b3IgYW5kL29yIGltcHJvdmluZyB0aGUgSURMIGdlbmVy
YXRvcikuIAogICAgIEpTT2JqZWN0KiBqc1NvdXJjZTsKLSAgICBKU1ZhbHVlIHZhbHVlID0gc3Rh
dGUuYXJndW1lbnQoMCk7Ci0gICAgaWYgKHZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIGpzU291
cmNlID0gdmFsdWUuZ2V0T2JqZWN0KCk7Ci0gICAgZWxzZSBpZiAoIXZhbHVlLmlzVW5kZWZpbmVk
KCkpIHsKLSAgICAgICAgdGhyb3dWTUVycm9yKCZzdGF0ZSwgY3JlYXRlVHlwZUVycm9yKCZzdGF0
ZSwgQVNDSUlMaXRlcmFsKCJGaXJzdCBhcmd1bWVudCwgaWYgYW55LCBzaG91bGQgYmUgYW4gb2Jq
ZWN0IikpKTsKKyAgICBpZiAoc291cmNlLmlzT2JqZWN0KCkpCisgICAgICAgIGpzU291cmNlID0g
c291cmNlLmdldE9iamVjdCgpOworICAgIGVsc2UgaWYgKCFzb3VyY2UuaXNVbmRlZmluZWQoKSkg
eworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKCZzdGF0ZSwgIkFyZ3VtZW50IDEgb2YgUmVhZGFi
bGVTdHJlYW0gY29uc3RydWN0b3IgbXVzdCBiZSBhbiBvYmplY3QiKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfSBlbHNlCiAgICAgICAgIGpzU291cmNlID0gSlNGaW5hbE9iamVjdDo6
Y3JlYXRlKHN0YXRlLnZtKCksIEpTRmluYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShzdGF0ZS52
bSgpLCBzdGF0ZS5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCksIGpzTnVsbCgpLCAxKSk7CiAKICAg
ICBkb3VibGUgaGlnaFdhdGVyTWFyayA9IDE7CiAgICAgSlNGdW5jdGlvbiogc2l6ZUZ1bmN0aW9u
ID0gbnVsbHB0cjsKLSAgICB2YWx1ZSA9IHN0YXRlLmFyZ3VtZW50KDEpOwotICAgIGlmICh2YWx1
ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIEpTT2JqZWN0JiBzdHJhdGVneU9iamVjdCA9ICp2YWx1
ZS5nZXRPYmplY3QoKTsKLSAgICAgICAgaGlnaFdhdGVyTWFyayA9IG5vcm1hbGl6ZUhpZ2hXYXRl
ck1hcmsoc3RhdGUsIHN0cmF0ZWd5T2JqZWN0KTsKLSAgICAgICAgaWYgKHN0YXRlLmhhZEV4Y2Vw
dGlvbigpKQorICAgIGlmICghc3RyYXRlZ3kuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAg
ICBpZiAoc3RyYXRlZ3kuZ2V0KCJoaWdoV2F0ZXJNYXJrIiwgaGlnaFdhdGVyTWFyaykpIHsKKyAg
ICAgICAgICAgIGlmIChzdGQ6OmlzbmFuKGhpZ2hXYXRlck1hcmspKSB7CisgICAgICAgICAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcigmc3RhdGUsICInaGlnaFdhdGVyTWFyaycgb2YgQXJndW1lbnQg
MiBvZiBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgTmFOIik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
aGlnaFdhdGVyTWFyayA8IDApIHsKKyAgICAgICAgICAgICAgICB0aHJvd1ZNUmFuZ2VFcnJvcigm
c3RhdGUsICInaGlnaFdhdGVyTWFyaycgb2YgQXJndW1lbnQgMiBvZiBSZWFkYWJsZVN0cmVhbSBj
b25zdHJ1Y3RvciBjYW5ub3QgYmUgbmVnYXRpdmUiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgICAgIH0KKworICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgaWYgKCEo
c2l6ZUZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4oZ2V0UHJvcGVydHlGcm9t
T2JqZWN0KHN0YXRlLCBzdHJhdGVneU9iamVjdCwgInNpemUiKSkpKSB7Ci0gICAgICAgICAgICBp
ZiAoIXN0YXRlLmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgIHRocm93Vk1FcnJvcigm
c3RhdGUsIGNyZWF0ZVR5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgic2l6ZSBwYXJhbWV0
ZXIgc2hvdWxkIGJlIGEgZnVuY3Rpb24iKSkpOworICAgICAgICBpZiAoc3RyYXRlZ3kuZ2V0KCJz
aXplIiwgc2l6ZUZ1bmN0aW9uKSkgeworICAgICAgICAgICAgaWYgKCFzaXplRnVuY3Rpb24pIHsK
KyAgICAgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKCZzdGF0ZSwgIidzaXplJyBvZiBBcmd1
bWVudCAyIG9mIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIG11c3QgYmUgYSBmdW5jdGlvbiIp
OworICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgfQorICAgICAg
ICB9IGVsc2UgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgfSBlbHNlIGlmICghdmFsdWUuaXNVbmRl
ZmluZWQoKSkgewotICAgICAgICB0aHJvd1ZNRXJyb3IoJnN0YXRlLCBjcmVhdGVUeXBlRXJyb3Io
JnN0YXRlLCBBU0NJSUxpdGVyYWwoIlNlY29uZCBhcmd1bWVudCwgaWYgYW55LCBzaG91bGQgYmUg
YW4gb2JqZWN0IikpKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgUmVm
UHRyPFJlYWRhYmxlSlNTdHJlYW0+IHJlYWRhYmxlU3RyZWFtID0gYWRvcHRSZWYoKm5ldyBSZWFk
YWJsZUpTU3RyZWFtKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHN0YXRlLCBqc1NvdXJjZSwgaGln
aFdhdGVyTWFyaywgc2l6ZUZ1bmN0aW9uKSk7CisgICAgUmVmUHRyPFJlYWRhYmxlSlNTdHJlYW0+
IHJlYWRhYmxlU3RyZWFtID0gYWRvcHRSZWYoKm5ldyBSZWFkYWJsZUpTU3RyZWFtKHN0YXRlLCBq
c1NvdXJjZSwgaGlnaFdhdGVyTWFyaywgc2l6ZUZ1bmN0aW9uKSk7CiAgICAgcmVhZGFibGVTdHJl
YW0tPmRvU3RhcnQoc3RhdGUpOwogCiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQpAQCAt
MjY3LDggKzI0Niw4IEBAIFJlZlB0cjxSZWFkYWJsZUpTU3RyZWFtPiBSZWFkYWJsZUpTU3RyZWFt
OjpjcmVhdGUoRXhlY1N0YXRlJiBzdGF0ZSwgU2NyaXB0RXhlY3V0CiAgICAgcmV0dXJuIHJlYWRh
YmxlU3RyZWFtOwogfQogCi1SZWFkYWJsZUpTU3RyZWFtOjpSZWFkYWJsZUpTU3RyZWFtKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTT2JqZWN0KiBzb3VyY2UsIGRvdWJsZSBoaWdoV2F0ZXJNYXJrLCBKU0Z1bmN0aW9uKiBz
aXplRnVuY3Rpb24pCi0gICAgOiBSZWFkYWJsZVN0cmVhbShzY3JpcHRFeGVjdXRpb25Db250ZXh0
KQorUmVhZGFibGVKU1N0cmVhbTo6UmVhZGFibGVKU1N0cmVhbShFeGVjU3RhdGUmIHN0YXRlLCBK
U09iamVjdCogc291cmNlLCBkb3VibGUgaGlnaFdhdGVyTWFyaywgSlNGdW5jdGlvbiogc2l6ZUZ1
bmN0aW9uKQorICAgIDogUmVhZGFibGVTdHJlYW0oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9t
RXhlY1N0YXRlKCZzdGF0ZSkpCiAgICAgLCBtX2hpZ2hXYXRlck1hcmsoaGlnaFdhdGVyTWFyaykK
IHsKICAgICBtX3NvdXJjZS5zZXQoc3RhdGUudm0oKSwgc291cmNlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uaAppbmRleCA0ZWFhNDkzMmVhMGZkMTY4
YjY1ZDRjOGMzNWU0MWExNDYzODgzMWE3Li5jODU4YWIzODdlMDkzYTQ1OWFjNGE4MTkwOWZmODJh
NDFkZDkxYjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJs
ZUpTU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0
cmVhbS5oCkBAIC01NCw3ICs1NCw3IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNs
YXNzIFJlYWRhYmxlSlNTdHJlYW06IHB1YmxpYyBSZWFkYWJsZVN0cmVhbSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZlB0cjxSZWFkYWJsZUpTU3RyZWFtPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUm
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CisgICAgc3RhdGljIFJlZlB0cjxSZWFkYWJsZUpT
U3RyZWFtPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUsIGNvbnN0IERpY3Rp
b25hcnkmKTsKIAogICAgIEpTQzo6SlNWYWx1ZSBqc0NvbnRyb2xsZXIoSlNDOjpFeGVjU3RhdGUm
LCBKU0RPTUdsb2JhbE9iamVjdCopOwogICAgIHZvaWQgY2xvc2UoRXhjZXB0aW9uQ29kZSYpOwpA
QCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGRlc2lyZWRTaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9oaWdoV2F0ZXJNYXJrIC0gbV90b3RhbFF1ZXVlU2l6ZTsgfQogCiBwcml2YXRl
OgotICAgIFJlYWRhYmxlSlNTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEpTQzo6RXhl
Y1N0YXRlJiwgSlNDOjpKU09iamVjdCosIGRvdWJsZSwgSlNDOjpKU0Z1bmN0aW9uKik7CisgICAg
UmVhZGFibGVKU1N0cmVhbShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNPYmplY3QqLCBkb3VibGUs
IEpTQzo6SlNGdW5jdGlvbiopOwogCiAgICAgdm9pZCBkb1N0YXJ0KEpTQzo6RXhlY1N0YXRlJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0KaW5kZXggNDUyNzg0MDQ5OTExZDljNDc3Y2U4ZjFhNzU1OGIwODJhZDA4MTViZC4uNjJl
NGRjOWY5OWM1OTBiYmRlOGIyNThhNTdkZmEwMTE2MWYwMGNiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTQ2NjAsNiAr
NDY2MCw5IEBAIEVORAogICAgICAgICAgICAgbXkgJG51bVBhcmFtZXRlcnMgPSBAeyRmdW5jdGlv
bi0+cGFyYW1ldGVyc307CiAgICAgICAgICAgICBteSAoJGR1bW15LCAkcGFyYW1JbmRleCkgPSBH
ZW5lcmF0ZVBhcmFtZXRlcnNDaGVjaygkb3V0cHV0QXJyYXksICRmdW5jdGlvbiwgJGludGVyZmFj
ZSwgJG51bVBhcmFtZXRlcnMsICRpbnRlcmZhY2VOYW1lLCAiY29uc3RydWN0b3JDYWxsYmFjayIs
IHVuZGVmLCB1bmRlZiwgdW5kZWYpOwogCisgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3It
PkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkNvbnN0cnVjdG9yQ2FsbFdpdGgifSwgIlNjcmlwdFN0YXRlIikpIHsKKyAgICAgICAgICAg
ICAgICBwdXNoKEBjb25zdHJ1Y3RvckFyZ0xpc3QsICIqZXhlYyIpOworICAgICAgICAgICAgfQog
ICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5z
KCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvckNhbGxXaXRoIn0s
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0IikpIHsKICAgICAgICAgICAgICAgICBwdXNoKEBjb25z
dHJ1Y3RvckFyZ0xpc3QsICIqY29udGV4dCIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gY2FzdGVkVGhp
cy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpO1xuIik7CkBAIC00NzAyLDYgKzQ3MDUsMTEgQEAg
RU5ECiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIpOwogICAg
ICAgICAgICAgfQogCisgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0
cmlidXRlQ29udGFpbnMoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVj
dG9yQ2FsbFdpdGgifSwgIlNjcmlwdFN0YXRlIikpIHsKKyAgICAgICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpXG4i
KTsKKyAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CisgICAgICAgICAgICB9CisKICAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGFzT2JqZWN0KHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIG9iamVjdC5n
ZXQoKSkpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9J
RExBdHRyaWJ1dGVzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0
cmlidXRlcy50eHQKaW5kZXggMjljMjNjZTFlN2I1MjY0MjE4OWRkYzgwYjlmZmI2MzA4ZTE4OTYy
MS4uMDY2MjA1MmMyMzZlNmM2YjljNWQ4ZGVlZTc0MWYxM2E4YTRmMDU3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CkBAIC0yOSw3
ICsyOSw3IEBAIENoZWNrU2VjdXJpdHlGb3JOb2RlCiBDbGFtcAogQ29uZGl0aW9uYWw9KgogQ29u
c3RydWN0b3IKLUNvbnN0cnVjdG9yQ2FsbFdpdGg9RG9jdW1lbnR8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dAorQ29uc3RydWN0b3JDYWxsV2l0aD1Eb2N1bWVudHxTY3JpcHRFeGVjdXRpb25Db250ZXh0
fFNjcmlwdFN0YXRlCiBDb25zdHJ1Y3RvckNvbmRpdGlvbmFsPSoKIENvbnN0cnVjdG9yUmFpc2Vz
RXhjZXB0aW9uCiBDb25zdHJ1Y3RvclRlbXBsYXRlPUV2ZW50fFR5cGVkQXJyYXkK
</data>

          </attachment>
      

    </bug>

</bugzilla>