<?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>47107</bug_id>
          
          <creation_ts>2010-10-04 13:23:21 -0700</creation_ts>
          <short_desc>Lazily create activation objects</short_desc>
          <delta_ts>2011-06-14 19:05:47 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>289100</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-10-04 13:23:21 -0700</bug_when>
    <thetext>Lazily create activation objects</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289103</commentid>
    <comment_count>1</comment_count>
      <attachid>69674</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-10-04 13:30:19 -0700</bug_when>
    <thetext>Created attachment 69674
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289120</commentid>
    <comment_count>2</comment_count>
      <attachid>69674</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-10-04 13:53:33 -0700</bug_when>
    <thetext>Comment on attachment 69674
Patch

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

&gt; JavaScriptCore/interpreter/Interpreter.cpp:3173
&gt; -            callFrame-&gt;r(dst) = JSValue(arguments);
&gt; -            callFrame-&gt;r(unmodifiedArgumentsRegister(dst)) = JSValue(arguments);
&gt; +            callFrame-&gt;r(argumentsRegister) = JSValue(arguments);
&gt; +            callFrame-&gt;r(unmodifiedArgumentsRegister(argumentsRegister)) = JSValue(arguments);

Since this turned out to be just a bug fix for a bug in a previous arguments optimization patch, I think you should land it separately with a test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289121</commentid>
    <comment_count>3</comment_count>
      <attachid>69674</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-10-04 13:57:47 -0700</bug_when>
    <thetext>Comment on attachment 69674
Patch

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

&gt; JavaScriptCore/ChangeLog:13
&gt; +        This does make exception handling a little more dicey as

The word “dicey” here makes me nervous. I wish you had said it differently.

Is there enough test coverage?

&gt; JavaScriptCore/bytecode/CodeBlock.h:433
&gt; +        void createActivation(CallFrame*);
&gt;  #if ENABLE(INTERPRETER)

Why no blank line here? I would have had one.

&gt; JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:1572
&gt; +void BytecodeGenerator::createActivationIfNecessary()
&gt; +{
&gt; +    if (m_hasCreatedActivation)
&gt; +        return;
&gt; +    if (!m_codeBlock-&gt;needsFullScopeChain())
&gt; +        return;
&gt; +    emitOpcode(op_create_activation);
&gt; +    instructions().append(m_activationRegister-&gt;index());
&gt; +}

Should this function set m_hasCreatedActivation to true? If not, why not? It might need a comment.

&gt; JavaScriptCore/interpreter/Interpreter.cpp:131
&gt; +    if (checkTopLevel &amp;&amp; skip--) {

Same problem here that I spotted below.

&gt; JavaScriptCore/interpreter/Interpreter.cpp:213
&gt; +    if (checkTopLevel &amp;&amp; skip--) {

Same problem here that I spotted below.

&gt; JavaScriptCore/interpreter/Interpreter.cpp:2356
&gt; +        if (checkTopLevel &amp;&amp; skip--) {

Same problem here that I spotted below.

&gt; JavaScriptCore/jit/JITOpcodes.cpp:472
&gt; +    if (checkTopLevel &amp;&amp; skip--) {

Same problem here that I spotted below.

&gt; JavaScriptCore/jit/JITOpcodes.cpp:494
&gt; +    if (checkTopLevel &amp;&amp; skip--) {

Same problem here that I spotted below.

&gt; JavaScriptCore/jit/JITOpcodes.cpp:1590
&gt; +    if (checkTopLevel &amp;&amp; skip--) {

Same problem here that I spotted below.

&gt; JavaScriptCore/jit/JITOpcodes32_64.cpp:614
&gt; +    if (checkTopLevel &amp;&amp; skip--) {

Same problem here that I spotted below.

&gt; JavaScriptCore/jit/JITOpcodes32_64.cpp:643
&gt; +    if (checkTopLevel &amp;&amp; skip--) {

Same problem here that I spotted below.

&gt; JavaScriptCore/jit/JITStubs.cpp:2697
&gt; +    if (checkTopLevel &amp;&amp; skip--) {

If skip is 0 this will set it to -1. I don’t think you want that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289232</commentid>
    <comment_count>4</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-10-04 15:43:37 -0700</bug_when>
    <thetext>Committed r69045</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420957</commentid>
    <comment_count>5</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-06-14 19:05:47 -0700</bug_when>
    <thetext>*** Bug 47718 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69674</attachid>
            <date>2010-10-04 13:30:19 -0700</date>
            <delta_ts>2010-10-04 15:42:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47107-20101004133018.patch</filename>
            <type>text/plain</type>
            <size>43527</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAzNjgyMjZiMzg1MzFmYTY2NmRhYzJjODFkZmFkZWY1MGU4NThkZWEzLi5l
MTlkMDNkMTdkMThjNjE5NDRkZDE1YjYzMzQ3Yzg5MTQ4NGYxMmZhIDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNzAgQEAKKzIwMTAtMTAtMDQgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMYXppbHkg
Y3JlYXRlIGFjdGl2YXRpb24gb2JqZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDcxMDcKKworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGxh
emlseSBjcmVhdGUgdGhlIGFjdGl2YXRpb24gb2JqZWN0CisgICAgICAgIGZvciBhIGZ1bmN0aW9u
IHRoYXQgbmVlZHMgb25lLiAgVGhpcyBhbGxvd3MgdXMgdG8gcmVkdWNlCisgICAgICAgIHRoZSBv
dmVyaGVhZCBvZiBlbnRlcmluZyBhIGZ1bmN0aW9uIHRoYXQgbWF5IHJlcXVpcmUKKyAgICAgICAg
YW4gYWN0aXZhdGlvbiBpbiBzb21lIGNhc2VzLCBidXQgbm90IGFsd2F5cy4KKworICAgICAgICBU
aGlzIGRvZXMgbWFrZSBleGNlcHRpb24gaGFuZGxpbmcgYSBsaXR0bGUgbW9yZSBkaWNleSBhcwor
ICAgICAgICBpdCdzIG5vdyBuZWNlc3NhcnkgdG8gdmVyaWZ5IHRoYXQgYSBjYWxsZnJhbWVzIGFj
dGl2YXRpb24KKyAgICAgICAgaGFzIGJlZW4gY3JlYXRlZCwgYW5kIGNyZWF0ZSBpdCBpZiBub3Qs
IGluIGFsbCBvZiB0aGUKKyAgICAgICAgcGF0aHMgdXNlZCBpbiBleGNlcHRpb24gaGFuZGxpbmcu
CisKKyAgICAgICAgV2UgYWxzbyBuZWVkIHRvIGFkZCBsb2dpYyB0byBjaGVjayBmb3IgdGhlIGV4
aXN0ZW5jZSBvZgorICAgICAgICB0aGUgYWN0aXZhdGlvbiBpbiB0aGUgc2NvcGVkX3ZhciBvcGNv
ZGVzLCBhcyB3ZWxsIGFzCisgICAgICAgIG9wX3JldCwgb3BfcmV0X29iamVjdF9vcl90aGlzIGFu
ZCBvcF90ZWFyb2ZmX2FjdGl2YXRpb24KKyAgICAgICAgc28gdGhhdCB3ZSBjYW4gYXZvaWQgY3Jl
YXRpbmcgYW4gYWN0aXZhdGlvbiB1bm5lY2VzYXJpbHkKKyAgICAgICAgb24gZnVuY3Rpb24gZXhp
dC4gCisKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmR1bXApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnJlcGFyc2VGb3JFeGNl
cHRpb25JbmZvSWZOZWNlc3NhcnkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmNyZWF0ZUFj
dGl2YXRpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OnNldEFjdGl2YXRpb25SZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6YWN0aXZhdGlvblJlZ2lzdGVyKToKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpjcmVhdGVBY3RpdmF0aW9uSWZOZWNlc3Nhcnkp
OgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAq
IGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6
OnJlc29sdmVTa2lwKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnJlc29sdmVHbG9iYWxE
eW5hbWljKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnJlc29sdmVCYXNlKToKKyAgICAg
ICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnVud2luZENhbGxGcmFtZSk6CisgICAgICAgIChKU0M6Oklu
dGVycHJldGVyOjp0aHJvd0V4Y2VwdGlvbik6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpw
cml2YXRlRXhlY3V0ZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAg
ICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmV0
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3JldF9vYmplY3Rfb3JfdGhpcyk6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW5k
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9zY29wZWRfdmFyKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3B1dF9zY29wZWRfdmFyKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX3RlYXJfb2ZmX2FjdGl2YXRpb24pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
cmV0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3JldF9vYmplY3Rfb3JfdGhpcyk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jcmVhdGVfYWN0aXZhdGlvbik6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljKToKKyAgICAgICAgKiBqaXQv
SklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9zY29w
ZWRfdmFyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9zY29wZWRfdmFyKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RlYXJfb2ZmX2FjdGl2YXRpb24pOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfY3JlYXRlX2FjdGl2YXRpb24pOgorICAgICAgICAqIGppdC9KSVRT
dHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKwogMjAxMC0x
MC0wMSAgUHJhdGlrIFNvbGFua2kgIDxwc29sYW5raUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwIGIvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAppbmRleCA2YzA2OTZlZjc0YWI4ZmEzNTc0OWQ1ZjAxOTkyZmExYTRmNDZlMTU3Li5hMmI4NjNk
NTdjOTg1NTEwZTFlZGIwMzhhNjk4ODZjOTcxY2MxN2FjIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgog
I2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAiSlNB
Y3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTU3RhdGlj
U2NvcGVPYmplY3QuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCkBAIC00ODUsOSArNDg2LDkgQEAg
dm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBWZWN0b3I8SW5zdHJ1
Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYKICAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gZW50ZXJc
biIsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNh
c2Ugb3BfZW50ZXJfd2l0aF9hY3RpdmF0aW9uOiB7CisgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2Fj
dGl2YXRpb246IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAg
ICAgICAgICAgcHJpbnRmKCJbJTRkXSBlbnRlcl93aXRoX2FjdGl2YXRpb24gJXNcbiIsIGxvY2F0
aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBwcmludGYo
IlslNGRdIGNyZWF0ZV9hY3RpdmF0aW9uICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIwKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9jcmVhdGVfYXJndW1lbnRzOiB7CkBAIC03MjIsOSArNzIzLDggQEAgdm9pZCBDb2Rl
QmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpj
b25zdF9pdGVyYXRvciYKICAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsK
ICAgICAgICAgICAgIEpTVmFsdWUgc2NvcGUgPSBKU1ZhbHVlKCgrK2l0KS0+dS5qc0NlbGwpOwog
ICAgICAgICAgICAgKytpdDsKLSAgICAgICAgICAgIGludCBkZXB0aCA9IGl0WzJdLnUub3BlcmFu
ZDsKKyAgICAgICAgICAgIGludCBkZXB0aCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAg
ICAgcHJpbnRmKCJbJTRkXSByZXNvbHZlX2dsb2JhbF9keW5hbWljXHQgJXMsICVzLCAlcywgJWRc
biIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgdmFsdWVUb1NvdXJj
ZVN0cmluZyhleGVjLCBzY29wZSkudXRmOCgpLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlm
aWVyc1tpZDBdKS5kYXRhKCksIGRlcHRoKTsKLSAgICAgICAgICAgIGl0ICs9IDM7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2dldF9zY29wZWRfdmFyOiB7
CkBAIC0xNTQyLDYgKzE1NDIsMTAgQEAgYm9vbCBDb2RlQmxvY2s6OnJlcGFyc2VGb3JFeGNlcHRp
b25JbmZvSWZOZWNlc3NhcnkoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgQVNTRVJUKCFtX3Jh
cmVEYXRhIHx8ICFtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzLnNpemUoKSk7CiAgICAg
U2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4gPSBjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKTsKICAg
ICBpZiAobV9uZWVkc0Z1bGxTY29wZUNoYWluKSB7CisgICAgICAgIGlmIChjb2RlVHlwZSgpID09
IEZ1bmN0aW9uQ29kZSAmJiAhY2FsbEZyYW1lLT5yKGFjdGl2YXRpb25SZWdpc3RlcigpKS5qc1Zh
bHVlKCkpIHsKKyAgICAgICAgICAgIGNyZWF0ZUFjdGl2YXRpb24oY2FsbEZyYW1lKTsKKyAgICAg
ICAgICAgIHNjb3BlQ2hhaW4gPSBjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKTsKKyAgICAgICAgfQog
ICAgICAgICBTY29wZUNoYWluIHNjKHNjb3BlQ2hhaW4pOwogICAgICAgICBpbnQgc2NvcGVEZWx0
YSA9IHNjLmxvY2FsRGVwdGgoKTsKICAgICAgICAgaWYgKG1fY29kZVR5cGUgPT0gRXZhbENvZGUp
CkBAIC0xNzY1LDQgKzE3NjksMTQgQEAgdm9pZCBDb2RlQmxvY2s6OnNocmlua1RvRml0KCkKICAg
ICB9CiB9CiAKK3ZvaWQgQ29kZUJsb2NrOjpjcmVhdGVBY3RpdmF0aW9uKENhbGxGcmFtZSogY2Fs
bEZyYW1lKQoreworICAgIEFTU0VSVChjb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSk7CisgICAg
QVNTRVJUKG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSk7CisgICAgQVNTRVJUKCFjYWxsRnJhbWUtPnIo
YWN0aXZhdGlvblJlZ2lzdGVyKCkpLmpzVmFsdWUoKSk7CisgICAgSlNBY3RpdmF0aW9uKiBhY3Rp
dmF0aW9uID0gbmV3IChjYWxsRnJhbWUpIEpTQWN0aXZhdGlvbihjYWxsRnJhbWUsIHN0YXRpY19j
YXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKSk7CisgICAgY2FsbEZy
YW1lLT5yKGFjdGl2YXRpb25SZWdpc3RlcigpKSA9IEpTVmFsdWUoYWN0aXZhdGlvbik7CisgICAg
Y2FsbEZyYW1lLT5zZXRTY29wZUNoYWluKGNhbGxGcmFtZS0+c2NvcGVDaGFpbigpLT5jb3B5KCkt
PnB1c2goYWN0aXZhdGlvbikpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggY2RhNDUzMGQzYTE3OTcwY2NhNTgxNGZjZjkwMzJiMmFh
OTA0ZWI5ZS4uOTNhY2M1NzAzOGVmMTNkNmU2ZjlkOTAzZDU0NWU3YThhMTZhYmJlNSAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTQwOCw2ICs0MDgsMTUgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICBBU1NFUlQodXNlc0FyZ3VtZW50cygpKTsKICAgICAgICAgICAg
IHJldHVybiBtX2FyZ3VtZW50c1JlZ2lzdGVyOwogICAgICAgICB9CisgICAgICAgIHZvaWQgc2V0
QWN0aXZhdGlvblJlZ2lzdGVyKGludCBhY3RpdmF0aW9uUmVnaXN0ZXIpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIG1fYWN0aXZhdGlvblJlZ2lzdGVyID0gYWN0aXZhdGlvblJlZ2lzdGVyOworICAg
ICAgICB9CisgICAgICAgIGludCBhY3RpdmF0aW9uUmVnaXN0ZXIoKQorICAgICAgICB7CisgICAg
ICAgICAgICBBU1NFUlQobmVlZHNGdWxsU2NvcGVDaGFpbigpKTsKKyAgICAgICAgICAgIHJldHVy
biBtX2FjdGl2YXRpb25SZWdpc3RlcjsKKyAgICAgICAgfQogICAgICAgICBib29sIHVzZXNBcmd1
bWVudHMoKSBjb25zdCB7IHJldHVybiBtX2FyZ3VtZW50c1JlZ2lzdGVyICE9IC0xOyB9CiAKICAg
ICAgICAgQ29kZVR5cGUgY29kZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVUeXBlOyB9CkBA
IC00MjAsNiArNDI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIGp1bXBU
YXJnZXQoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2p1bXBUYXJnZXRzW2luZGV4XTsgfQog
ICAgICAgICB1bnNpZ25lZCBsYXN0SnVtcFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fanVtcFRh
cmdldHMubGFzdCgpOyB9CiAKKyAgICAgICAgdm9pZCBjcmVhdGVBY3RpdmF0aW9uKENhbGxGcmFt
ZSopOwogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgdm9pZCBhZGRQcm9wZXJ0eUFj
Y2Vzc0luc3RydWN0aW9uKHVuc2lnbmVkIHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pIHsgbV9w
cm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5hcHBlbmQocHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlv
bik7IH0KICAgICAgICAgdm9pZCBhZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24odW5zaWduZWQg
Z2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKSB7IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5h
cHBlbmQoZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKTsgfQpAQCAtNTQ4LDYgKzU1OCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIGludCBtX3RoaXNSZWdpc3RlcjsKICAgICAgICAgaW50
IG1fYXJndW1lbnRzUmVnaXN0ZXI7CisgICAgICAgIGludCBtX2FjdGl2YXRpb25SZWdpc3RlcjsK
IAogICAgICAgICBib29sIG1fbmVlZHNGdWxsU2NvcGVDaGFpbjsKICAgICAgICAgYm9vbCBtX3Vz
ZXNFdmFsOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmggYi9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAppbmRleCAwM2Y2NTczMzAxYzEyOTk0N2M2
MTliOTI2ZjVlYTRjMDAyM2U1ZmMyLi4zZjZiMjEzZjU2MDg3ODJkYjIzZTRjY2QyYTYyZWFhYzRh
ZDNjOTk1IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAorKysg
Yi9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaApAQCAtMzksNyArMzksNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICNkZWZpbmUgRk9SX0VBQ0hfT1BDT0RFX0lEKG1hY3JvKSBcCiAg
ICAgICAgIG1hY3JvKG9wX2VudGVyLCAxKSBcCi0gICAgICAgIG1hY3JvKG9wX2VudGVyX3dpdGhf
YWN0aXZhdGlvbiwgMikgXAorICAgICAgICBtYWNybyhvcF9jcmVhdGVfYWN0aXZhdGlvbiwgMikg
XAogICAgICAgICBtYWNybyhvcF9pbml0X2xhenlfcmVnLCAyKSBcCiAgICAgICAgIG1hY3JvKG9w
X2NyZWF0ZV9hcmd1bWVudHMsIDIpIFwKICAgICAgICAgbWFjcm8ob3BfY3JlYXRlX3RoaXMsIDMp
IFwKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCmluZGV4IDk4NjcwOWJiZWJiYmE5N2Q4MzhjNDBkYWE4OTljZDdkMWFmYWZjYzIuLjRjNmUx
ZjNiMTExNzFiYjE0MTA5YjlkMTcwZjBiN2VlZDk2ZjJlMTEgMTAwNjQ0Ci0tLSBhL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMjE0LDYgKzIxNCw3
IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihQcm9ncmFtTm9kZSogcHJv
Z3JhbU5vZGUsIGNvbnN0IERlYnVnZ2VyKiBkCiAgICAgLCBtX25leHRHbG9iYWxJbmRleCgtMSkK
ICAgICAsIG1fbmV4dENvbnN0YW50T2Zmc2V0KDApCiAgICAgLCBtX2dsb2JhbENvbnN0YW50SW5k
ZXgoMCkKKyAgICAsIG1faGFzQ3JlYXRlZEFjdGl2YXRpb24odHJ1ZSkKICAgICAsIG1fZmlyc3RM
YXp5RnVuY3Rpb24oMCkKICAgICAsIG1fbGFzdExhenlGdW5jdGlvbigwKQogICAgICwgbV9nbG9i
YWxEYXRhKCZzY29wZUNoYWluLmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCktPmdsb2JhbERh
dGEoKSkKQEAgLTMwNiw2ICszMDcsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IoRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb25Cb2R5LCBjb25zdCBEZWJ1ZwogICAgICwg
bV9jb2RlVHlwZShGdW5jdGlvbkNvZGUpCiAgICAgLCBtX25leHRDb25zdGFudE9mZnNldCgwKQog
ICAgICwgbV9nbG9iYWxDb25zdGFudEluZGV4KDApCisgICAgLCBtX2hhc0NyZWF0ZWRBY3RpdmF0
aW9uKGZhbHNlKQogICAgICwgbV9maXJzdExhenlGdW5jdGlvbigwKQogICAgICwgbV9sYXN0TGF6
eUZ1bmN0aW9uKDApCiAgICAgLCBtX2dsb2JhbERhdGEoJnNjb3BlQ2hhaW4uZ2xvYmFsT2JqZWN0
KCktPmdsb2JhbEV4ZWMoKS0+Z2xvYmFsRGF0YSgpKQpAQCAtMzE5LDEzICszMjEsMTMgQEAgQnl0
ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0
aW9uQm9keSwgY29uc3QgRGVidWcKICAgICAgICAgbV9jb2RlQmxvY2stPnNldE5lZWRzRnVsbFNj
b3BlQ2hhaW4odHJ1ZSk7CiAKICAgICBjb2RlQmxvY2stPnNldEdsb2JhbERhdGEobV9nbG9iYWxE
YXRhKTsKLQorICAgIAorICAgIGVtaXRPcGNvZGUob3BfZW50ZXIpOwogICAgIGlmIChtX2NvZGVC
bG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpKSB7CiAgICAgICAgIG1fYWN0aXZhdGlvblJlZ2lz
dGVyID0gYWRkVmFyKCk7Ci0gICAgICAgIGVtaXRPcGNvZGUob3BfZW50ZXJfd2l0aF9hY3RpdmF0
aW9uKTsKLSAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fYWN0aXZhdGlvblJlZ2lzdGVy
LT5pbmRleCgpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgZW1pdE9wY29kZShvcF9lbnRlcik7Cisg
ICAgICAgIGVtaXRJbml0TGF6eVJlZ2lzdGVyKG1fYWN0aXZhdGlvblJlZ2lzdGVyKTsKKyAgICAg
ICAgbV9jb2RlQmxvY2stPnNldEFjdGl2YXRpb25SZWdpc3RlcihtX2FjdGl2YXRpb25SZWdpc3Rl
ci0+aW5kZXgoKSk7CisgICAgfQogCiAgICAgLy8gQm90aCBvcF90ZWFyX29mZl9hY3RpdmF0aW9u
IGFuZCBvcF90ZWFyX29mZl9hcmd1bWVudHMgdGVhciBvZmYgdGhlICdhcmd1bWVudHMnCiAgICAg
Ly8gb2JqZWN0LCBpZiBjcmVhdGVkLgpAQCAtMzU2LDExICszNTgsMTcgQEAgQnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0aW9uQm9keSwg
Y29uc3QgRGVidWcKIAogICAgIC8vIENhcHR1cmVkIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zIGdv
IGZpcnN0IHNvIHRoYXQgYWN0aXZhdGlvbnMgZG9uJ3QgaGF2ZQogICAgIC8vIHRvIHN0ZXAgb3Zl
ciB0aGUgbm9uLWNhcHR1cmVkIGxvY2FscyB0byBtYXJrIHRoZW0uCisgICAgbV9oYXNDcmVhdGVk
QWN0aXZhdGlvbiA9IGZhbHNlOwogICAgIGlmIChmdW5jdGlvbkJvZHktPmhhc0NhcHR1cmVkVmFy
aWFibGVzKCkpIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvblN0YWNr
LnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbiA9
IGZ1bmN0aW9uU3RhY2tbaV07CiAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9
IGZ1bmN0aW9uLT5pZGVudCgpOwogICAgICAgICAgICAgaWYgKGZ1bmN0aW9uQm9keS0+Y2FwdHVy
ZXMoaWRlbnQpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFtX2hhc0NyZWF0ZWRBY3RpdmF0aW9u
KSB7CisgICAgICAgICAgICAgICAgICAgIG1faGFzQ3JlYXRlZEFjdGl2YXRpb24gPSB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX2NyZWF0ZV9hY3RpdmF0aW9uKTsKKyAg
ICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fYWN0aXZhdGlvblJlZ2lz
dGVyLT5pbmRleCgpKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbV9mdW5j
dGlvbnMuYWRkKGlkZW50LmltcGwoKSk7CiAgICAgICAgICAgICAgICAgZW1pdE5ld0Z1bmN0aW9u
KGFkZFZhcihpZGVudCwgZmFsc2UpLCBmdW5jdGlvbik7CiAgICAgICAgICAgICB9CkBAIC0zNzEs
NyArMzc5LDEzIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihGdW5jdGlv
bkJvZHlOb2RlKiBmdW5jdGlvbkJvZHksIGNvbnN0IERlYnVnCiAgICAgICAgICAgICAgICAgYWRk
VmFyKGlkZW50LCB2YXJTdGFja1tpXS5zZWNvbmQgJiBEZWNsYXJhdGlvblN0YWNrczo6SXNDb25z
dGFudCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgYm9vbCBjYW5MYXppbHlDcmVhdGVGdW5jdGlv
bnMgPSAhZnVuY3Rpb25Cb2R5LT5uZWVkc0FjdGl2YXRpb25Gb3JNb3JlVGhhblZhcmlhYmxlcygp
OworICAgIGJvb2wgY2FuTGF6aWx5Q3JlYXRlRnVuY3Rpb25zID0gIWZ1bmN0aW9uQm9keS0+bmVl
ZHNBY3RpdmF0aW9uRm9yTW9yZVRoYW5WYXJpYWJsZXMoKSAmJiAhZGVidWdnZXI7CisgICAgaWYg
KCFjYW5MYXppbHlDcmVhdGVGdW5jdGlvbnMgJiYgIW1faGFzQ3JlYXRlZEFjdGl2YXRpb24pIHsK
KyAgICAgICAgbV9oYXNDcmVhdGVkQWN0aXZhdGlvbiA9IHRydWU7CisgICAgICAgIGVtaXRPcGNv
ZGUob3BfY3JlYXRlX2FjdGl2YXRpb24pOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
bV9hY3RpdmF0aW9uUmVnaXN0ZXItPmluZGV4KCkpOworICAgIH0KKwogICAgIGNvZGVCbG9jay0+
bV9udW1DYXB0dXJlZFZhcnMgPSBjb2RlQmxvY2stPm1fbnVtVmFyczsKICAgICBtX2ZpcnN0TGF6
eUZ1bmN0aW9uID0gY29kZUJsb2NrLT5tX251bVZhcnM7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBmdW5jdGlvblN0YWNrLnNpemUoKTsgKytpKSB7CkBAIC0zOTksNyArNDEzLDYgQEAgQnl0
ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0
aW9uQm9keSwgY29uc3QgRGVidWcKICAgICAKICAgICBpZiAoZGVidWdnZXIpCiAgICAgICAgIGNv
ZGVCbG9jay0+bV9udW1DYXB0dXJlZFZhcnMgPSBjb2RlQmxvY2stPm1fbnVtVmFyczsKLSAgICAg
ICAgCiAKICAgICBGdW5jdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMgPSAqZnVuY3Rpb25Cb2R5
LT5wYXJhbWV0ZXJzKCk7CiAgICAgc2l6ZV90IHBhcmFtZXRlckNvdW50ID0gcGFyYW1ldGVycy5z
aXplKCk7CkBAIC00NDgsNiArNDYxLDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2Vu
ZXJhdG9yKEV2YWxOb2RlKiBldmFsTm9kZSwgY29uc3QgRGVidWdnZXIqIGRlYnVnZ2UKICAgICAs
IG1fY29kZVR5cGUoRXZhbENvZGUpCiAgICAgLCBtX25leHRDb25zdGFudE9mZnNldCgwKQogICAg
ICwgbV9nbG9iYWxDb25zdGFudEluZGV4KDApCisgICAgLCBtX2hhc0NyZWF0ZWRBY3RpdmF0aW9u
KHRydWUpCiAgICAgLCBtX2ZpcnN0TGF6eUZ1bmN0aW9uKDApCiAgICAgLCBtX2xhc3RMYXp5RnVu
Y3Rpb24oMCkKICAgICAsIG1fZ2xvYmFsRGF0YSgmc2NvcGVDaGFpbi5nbG9iYWxPYmplY3QoKS0+
Z2xvYmFsRXhlYygpLT5nbG9iYWxEYXRhKCkpCkBAIC0xNTA0LDYgKzE1MTgsNyBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExhenlOZXdGdW5jdGlvbihSZWdpc3RlcklEKiBk
c3QsIEZ1bmN0aW9uQm9keQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5l
d0Z1bmN0aW9uSW50ZXJuYWwoUmVnaXN0ZXJJRCogZHN0LCB1bnNpZ25lZCBpbmRleCwgYm9vbCBk
b051bGxDaGVjaykKIHsKKyAgICBjcmVhdGVBY3RpdmF0aW9uSWZOZWNlc3NhcnkoKTsKICAgICBl
bWl0T3Bjb2RlKG9wX25ld19mdW5jKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5p
bmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoaW5kZXgpOwpAQCAtMTUyMyw3ICsx
NTM4LDggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogcjAsIEZ1bmNFeHAKIHsKICAgICBGdW5jdGlvbkJvZHlOb2Rl
KiBmdW5jdGlvbiA9IG4tPmJvZHkoKTsKICAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29kZUJsb2Nr
LT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKG1fZ2xvYmFsRGF0YSwgZnVuY3Rpb24pKTsK
LQorICAgIAorICAgIGNyZWF0ZUFjdGl2YXRpb25JZk5lY2Vzc2FyeSgpOwogICAgIGVtaXRPcGNv
ZGUob3BfbmV3X2Z1bmNfZXhwKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocjAtPmluZGV4
KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChpbmRleCk7CkBAIC0xNTQ1LDYgKzE1NjEs
MTYgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6Y3JlYXRlQXJndW1lbnRzSWZOZWNlc3Nhcnko
KQogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2NvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0
ZXIoKSk7CiB9CiAKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmNyZWF0ZUFjdGl2YXRpb25JZk5l
Y2Vzc2FyeSgpCit7CisgICAgaWYgKG1faGFzQ3JlYXRlZEFjdGl2YXRpb24pCisgICAgICAgIHJl
dHVybjsKKyAgICBpZiAoIW1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICBlbWl0T3Bjb2RlKG9wX2NyZWF0ZV9hY3RpdmF0aW9uKTsKKyAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQobV9hY3RpdmF0aW9uUmVnaXN0ZXItPmluZGV4KCkpOworfQor
CiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxFdmFsKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgQ2FsbEFyZ3VtZW50cyYgY2FsbEFyZ3VtZW50cywgdW5z
aWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCiB7
CiAgICAgcmV0dXJuIGVtaXRDYWxsKG9wX2NhbGxfZXZhbCwgZHN0LCBmdW5jLCBjYWxsQXJndW1l
bnRzLCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCk7CmRpZmYgLS1naXQgYS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDg2MTcxMWFjNmFiYThmZjEx
ZDJhYWZjNzA1ZWNiNzhkY2NmYzM4ZjUuLmI2MDQ3YWU0ZjI2OGJjY2YwZmQ5MjE4NDY1MDljNTk2
NjI1MTBjOTUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCisrKyBiL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCkBAIC01MTgsNiArNTE4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRUaHJvd0V4cHJlc3Npb25Ub29EZWVwRXhjZXB0aW9uKCk7CiAKICAgICAg
ICAgdm9pZCBjcmVhdGVBcmd1bWVudHNJZk5lY2Vzc2FyeSgpOworICAgICAgICB2b2lkIGNyZWF0
ZUFjdGl2YXRpb25JZk5lY2Vzc2FyeSgpOwogICAgICAgICBSZWdpc3RlcklEKiBjcmVhdGVMYXp5
UmVnaXN0ZXJJZk5lY2Vzc2FyeShSZWdpc3RlcklEKik7CiAKICAgICAgICAgYm9vbCBtX3Nob3Vs
ZEVtaXREZWJ1Z0hvb2tzOwpAQCAtNTU4LDYgKzU1OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIGludCBtX2dsb2JhbFZhclN0b3JhZ2VPZmZzZXQ7CiAKKyAgICAgICAgYm9vbCBtX2hh
c0NyZWF0ZWRBY3RpdmF0aW9uOwogICAgICAgICBpbnQgbV9maXJzdExhenlGdW5jdGlvbjsKICAg
ICAgICAgaW50IG1fbGFzdExhenlGdW5jdGlvbjsKICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCBp
bnQsIEZ1bmN0aW9uQm9keU5vZGUqLCBXVEY6OkludEhhc2g8dW5zaWduZWQgaW50PiwgV1RGOjpV
bnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZCBpbnQ+ID4gbV9sYXp5RnVuY3Rp
b25zOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwIGIvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDU5
NDNlY2ViNzRlZmZmMDY3N2E1MjM2YzU2NjQ3MTI3NTZkMDMwM2MuLjIyMTBkMjA1Y2U5MmRlNTY2
N2I1MzA2MDY3N2UxOGE0NTRmN2UwYWEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKQEAgLTEyNyw2ICsxMjcsMTEgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSW50
ZXJwcmV0ZXI6OnJlc29sdmVTa2lwKENhbGxGcmFtZSogY2FsbEZyYW1lLCBJbnN0cnVjdGlvbiog
dlAKICAgICBTY29wZUNoYWluSXRlcmF0b3IgaXRlciA9IHNjb3BlQ2hhaW4tPmJlZ2luKCk7CiAg
ICAgU2NvcGVDaGFpbkl0ZXJhdG9yIGVuZCA9IHNjb3BlQ2hhaW4tPmVuZCgpOwogICAgIEFTU0VS
VChpdGVyICE9IGVuZCk7CisgICAgYm9vbCBjaGVja1RvcExldmVsID0gY29kZUJsb2NrLT5jb2Rl
VHlwZSgpID09IEZ1bmN0aW9uQ29kZSAmJiBjb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4o
KTsKKyAgICBpZiAoY2hlY2tUb3BMZXZlbCAmJiBza2lwLS0pIHsKKyAgICAgICAgaWYgKGNhbGxG
cmFtZS0+cihjb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpKS5qc1ZhbHVlKCkpCisgICAg
ICAgICAgICArK2l0ZXI7CisgICAgfQogICAgIHdoaWxlIChza2lwLS0pIHsKICAgICAgICAgKytp
dGVyOwogICAgICAgICBBU1NFUlQoaXRlciAhPSBlbmQpOwpAQCAtMTQwLDYgKzE0NSw3IEBAIE5F
VkVSX0lOTElORSBib29sIEludGVycHJldGVyOjpyZXNvbHZlU2tpcChDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgSW5zdHJ1Y3Rpb24qIHZQCiAgICAgICAgICAgICBleGNlcHRpb25WYWx1ZSA9IGNhbGxG
cmFtZS0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbjsKICAgICAgICAgICAgIGlmIChleGNlcHRpb25W
YWx1ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBBU1NFUlQo
cmVzdWx0KTsKICAgICAgICAgICAgIGNhbGxGcmFtZS0+cihkc3QpID0gSlNWYWx1ZShyZXN1bHQp
OwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTIwMyw2ICsyMDksMTEg
QEAgTkVWRVJfSU5MSU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnJlc29sdmVHbG9iYWxEeW5hbWljKENh
bGxGcmFtZSogY2FsbEZyYW1lLCBJbnN0cnUKICAgICBTY29wZUNoYWluSXRlcmF0b3IgaXRlciA9
IHNjb3BlQ2hhaW4tPmJlZ2luKCk7CiAgICAgU2NvcGVDaGFpbkl0ZXJhdG9yIGVuZCA9IHNjb3Bl
Q2hhaW4tPmVuZCgpOwogICAgIEFTU0VSVChpdGVyICE9IGVuZCk7CisgICAgYm9vbCBjaGVja1Rv
cExldmVsID0gY29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSAmJiBjb2RlQmxv
Y2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKTsKKyAgICBpZiAoY2hlY2tUb3BMZXZlbCAmJiBza2lw
LS0pIHsKKyAgICAgICAgaWYgKGNhbGxGcmFtZS0+cihjb2RlQmxvY2stPmFjdGl2YXRpb25SZWdp
c3RlcigpKS5qc1ZhbHVlKCkpCisgICAgICAgICAgICArK2l0ZXI7CisgICAgfQogICAgIHdoaWxl
IChza2lwLS0pIHsKICAgICAgICAgSlNPYmplY3QqIG8gPSAqaXRlcjsKICAgICAgICAgaWYgKG8t
Pmhhc0N1c3RvbVByb3BlcnRpZXMoKSkgewpAQCAtMjE0LDYgKzIyNSw3IEBAIE5FVkVSX0lOTElO
RSBib29sIEludGVycHJldGVyOjpyZXNvbHZlR2xvYmFsRHluYW1pYyhDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgSW5zdHJ1CiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvblZhbHVlID0gY2FsbEZy
YW1lLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uOwogICAgICAgICAgICAgICAgICAgICBpZiAoZXhj
ZXB0aW9uVmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQpOwogICAgICAgICAgICAgICAgICAgICBjYWxs
RnJhbWUtPnIoZHN0KSA9IEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjMwLDYgKzI0Miw3IEBAIE5FVkVSX0lO
TElORSBib29sIEludGVycHJldGVyOjpyZXNvbHZlR2xvYmFsRHluYW1pYyhDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgSW5zdHJ1CiAgICAgCiAgICAgaWYgKHN0cnVjdHVyZSA9PSBnbG9iYWxPYmplY3Qt
PnN0cnVjdHVyZSgpKSB7CiAgICAgICAgIGNhbGxGcmFtZS0+cihkc3QpID0gSlNWYWx1ZShnbG9i
YWxPYmplY3QtPmdldERpcmVjdE9mZnNldChvZmZzZXQpKTsKKyAgICAgICAgQVNTRVJUKGNhbGxG
cmFtZS0+cihkc3QpLmpzVmFsdWUoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApA
QCAtMjQzLDYgKzI1Niw3IEBAIE5FVkVSX0lOTElORSBib29sIEludGVycHJldGVyOjpyZXNvbHZl
R2xvYmFsRHluYW1pYyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSW5zdHJ1CiAgICAgICAgICAgICBn
bG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpLT5yZWYoKTsKICAgICAgICAgICAgIHZQQ1szXSA9IGds
b2JhbE9iamVjdC0+c3RydWN0dXJlKCk7CiAgICAgICAgICAgICB2UENbNF0gPSBzbG90LmNhY2hl
ZE9mZnNldCgpOworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCk7CiAgICAgICAgICAgICBjYWxs
RnJhbWUtPnIoZHN0KSA9IEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CkBAIC0yNTAsNiArMjY0LDcgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSW50ZXJw
cmV0ZXI6OnJlc29sdmVHbG9iYWxEeW5hbWljKENhbGxGcmFtZSogY2FsbEZyYW1lLCBJbnN0cnUK
ICAgICAgICAgZXhjZXB0aW9uVmFsdWUgPSBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5leGNlcHRp
b247CiAgICAgICAgIGlmIChleGNlcHRpb25WYWx1ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdCk7CiAgICAgICAgIGNhbGxGcmFtZS0+cihkc3QpID0g
SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yNjMsNiAr
Mjc4LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OnJlc29sdmVCYXNlKENhbGxG
cmFtZSogY2FsbEZyYW1lLCBJbnN0cnVjdGlvbiogdlAKICAgICBpbnQgZHN0ID0gdlBDWzFdLnUu
b3BlcmFuZDsKICAgICBpbnQgcHJvcGVydHkgPSB2UENbMl0udS5vcGVyYW5kOwogICAgIGNhbGxG
cmFtZS0+cihkc3QpID0gSlNWYWx1ZShKU0M6OnJlc29sdmVCYXNlKGNhbGxGcmFtZSwgY2FsbEZy
YW1lLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwcm9wZXJ0eSksIGNhbGxGcmFtZS0+c2NvcGVD
aGFpbigpKSk7CisgICAgQVNTRVJUKGNhbGxGcmFtZS0+cihkc3QpLmpzVmFsdWUoKSk7CiB9CiAK
IE5FVkVSX0lOTElORSBib29sIEludGVycHJldGVyOjpyZXNvbHZlQmFzZUFuZFByb3BlcnR5KENh
bGxGcmFtZSogY2FsbEZyYW1lLCBJbnN0cnVjdGlvbiogdlBDLCBKU1ZhbHVlJiBleGNlcHRpb25W
YWx1ZSkKQEAgLTUzNSw2ICs1NTEsMTAgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSW50ZXJwcmV0ZXI6
OnVud2luZENhbGxGcmFtZShDYWxsRnJhbWUqJiBjYWxsRnJhbWUsIEpTVmFsdWUgZXgKIAogICAg
IC8vIElmIHRoaXMgY2FsbCBmcmFtZSBjcmVhdGVkIGFuIGFjdGl2YXRpb24gb3IgYW4gJ2FyZ3Vt
ZW50cycgb2JqZWN0LCB0ZWFyIGl0IG9mZi4KICAgICBpZiAob2xkQ29kZUJsb2NrLT5jb2RlVHlw
ZSgpID09IEZ1bmN0aW9uQ29kZSAmJiBvbGRDb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4o
KSkgeworICAgICAgICBpZiAoIWNhbGxGcmFtZS0+cihvbGRDb2RlQmxvY2stPmFjdGl2YXRpb25S
ZWdpc3RlcigpKS5qc1ZhbHVlKCkpIHsKKyAgICAgICAgICAgIG9sZENvZGVCbG9jay0+Y3JlYXRl
QWN0aXZhdGlvbihjYWxsRnJhbWUpOworICAgICAgICAgICAgc2NvcGVDaGFpbiA9IGNhbGxGcmFt
ZS0+c2NvcGVDaGFpbigpOworICAgICAgICB9CiAgICAgICAgIHdoaWxlICghc2NvcGVDaGFpbi0+
b2JqZWN0LT5pbmhlcml0cygmSlNBY3RpdmF0aW9uOjppbmZvKSkKICAgICAgICAgICAgIHNjb3Bl
Q2hhaW4gPSBzY29wZUNoYWluLT5wb3AoKTsKICAgICAgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0
aW9uID0gYXNBY3RpdmF0aW9uKHNjb3BlQ2hhaW4tPm9iamVjdCk7CkBAIC02NDYsNyArNjY2LDEw
IEBAIE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyogSW50ZXJwcmV0ZXI6OnRocm93RXhjZXB0aW9u
KENhbGxGcmFtZSomIGNhbGxGcmFtZSwgSlNWCiAgICAgLy8gVW53aW5kIHRoZSBzY29wZSBjaGFp
biB3aXRoaW4gdGhlIGV4Y2VwdGlvbiBoYW5kbGVyJ3MgY2FsbCBmcmFtZS4KICAgICBTY29wZUNo
YWluTm9kZSogc2NvcGVDaGFpbiA9IGNhbGxGcmFtZS0+c2NvcGVDaGFpbigpOwogICAgIFNjb3Bl
Q2hhaW4gc2Moc2NvcGVDaGFpbik7Ci0gICAgaW50IHNjb3BlRGVsdGEgPSBkZXB0aChjb2RlQmxv
Y2ssIHNjKSAtIGhhbmRsZXItPnNjb3BlRGVwdGg7CisgICAgaW50IHNjb3BlRGVsdGEgPSAwOwor
ICAgIGlmICghY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkgfHwgY29kZUJsb2NrLT5j
b2RlVHlwZSgpICE9IEZ1bmN0aW9uQ29kZSAKKyAgICAgICAgfHwgY2FsbEZyYW1lLT5yKGNvZGVC
bG9jay0+YWN0aXZhdGlvblJlZ2lzdGVyKCkpLmpzVmFsdWUoKSkKKyAgICAgICAgc2NvcGVEZWx0
YSA9IGRlcHRoKGNvZGVCbG9jaywgc2MpIC0gaGFuZGxlci0+c2NvcGVEZXB0aDsKICAgICBBU1NF
UlQoc2NvcGVEZWx0YSA+PSAwKTsKICAgICB3aGlsZSAoc2NvcGVEZWx0YS0tKQogICAgICAgICBz
Y29wZUNoYWluID0gc2NvcGVDaGFpbi0+cG9wKCk7CkBAIC0xNTE4LDYgKzE1NDEsNyBAQCBKU1Zh
bHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lz
dGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICAqLwogICAgICAgICBpbnQgZHN0ID0gdlBDWzFd
LnUub3BlcmFuZDsKICAgICAgICAgaW50IHNyYyA9IHZQQ1syXS51Lm9wZXJhbmQ7CisgICAgICAg
IAogICAgICAgICBjYWxsRnJhbWUtPnIoZHN0KSA9IGNhbGxGcmFtZS0+cihzcmMpOwogCiAgICAg
ICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX21vdik7CkBAIC0yMzI3LDYgKzIzNTEsMTIgQEAg
SlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBS
ZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkKICAgICAgICAgU2NvcGVDaGFpbkl0ZXJhdG9yIGl0ZXIg
PSBzY29wZUNoYWluLT5iZWdpbigpOwogICAgICAgICBTY29wZUNoYWluSXRlcmF0b3IgZW5kID0g
c2NvcGVDaGFpbi0+ZW5kKCk7CiAgICAgICAgIEFTU0VSVChpdGVyICE9IGVuZCk7CisgICAgICAg
IEFTU0VSVChjb2RlQmxvY2sgPT0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKSk7CisgICAgICAgIGJv
b2wgY2hlY2tUb3BMZXZlbCA9IGNvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUg
JiYgY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCk7CisgICAgICAgIGlmIChjaGVja1Rv
cExldmVsICYmIHNraXAtLSkgeworICAgICAgICAgICAgaWYgKGNhbGxGcmFtZS0+cihjb2RlQmxv
Y2stPmFjdGl2YXRpb25SZWdpc3RlcigpKS5qc1ZhbHVlKCkpCisgICAgICAgICAgICAgICAgKytp
dGVyOworICAgICAgICB9CiAgICAgICAgIHdoaWxlIChza2lwLS0pIHsKICAgICAgICAgICAgICsr
aXRlcjsKICAgICAgICAgICAgIEFTU0VSVChpdGVyICE9IGVuZCk7CkBAIC0yMzM0LDYgKzIzNjQs
NyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZs
YWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICBBU1NFUlQoKCppdGVyKS0+aXNW
YXJpYWJsZU9iamVjdCgpKTsKICAgICAgICAgSlNWYXJpYWJsZU9iamVjdCogc2NvcGUgPSBzdGF0
aWNfY2FzdDxKU1ZhcmlhYmxlT2JqZWN0Kj4oKml0ZXIpOwogICAgICAgICBjYWxsRnJhbWUtPnIo
ZHN0KSA9IHNjb3BlLT5yZWdpc3RlckF0KGluZGV4KTsKKyAgICAgICAgQVNTRVJUKGNhbGxGcmFt
ZS0+cihkc3QpLmpzVmFsdWUoKSk7CiAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2dl
dF9zY29wZWRfdmFyKTsKICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwogICAgIH0KQEAgLTIz
NDgsNyArMjM3OSwxMyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVj
dXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICBTY29wZUNo
YWluTm9kZSogc2NvcGVDaGFpbiA9IGNhbGxGcmFtZS0+c2NvcGVDaGFpbigpOwogICAgICAgICBT
Y29wZUNoYWluSXRlcmF0b3IgaXRlciA9IHNjb3BlQ2hhaW4tPmJlZ2luKCk7CiAgICAgICAgIFNj
b3BlQ2hhaW5JdGVyYXRvciBlbmQgPSBzY29wZUNoYWluLT5lbmQoKTsKKyAgICAgICAgQVNTRVJU
KGNvZGVCbG9jayA9PSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpKTsKICAgICAgICAgQVNTRVJUKGl0
ZXIgIT0gZW5kKTsKKyAgICAgICAgYm9vbCBjaGVja1RvcExldmVsID0gY29kZUJsb2NrLT5jb2Rl
VHlwZSgpID09IEZ1bmN0aW9uQ29kZSAmJiBjb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4o
KTsKKyAgICAgICAgaWYgKGNoZWNrVG9wTGV2ZWwgJiYgc2tpcC0tKSB7CisgICAgICAgICAgICBp
ZiAoY2FsbEZyYW1lLT5yKGNvZGVCbG9jay0+YWN0aXZhdGlvblJlZ2lzdGVyKCkpLmpzVmFsdWUo
KSkKKyAgICAgICAgICAgICAgICArK2l0ZXI7CisgICAgICAgIH0KICAgICAgICAgd2hpbGUgKHNr
aXAtLSkgewogICAgICAgICAgICAgKytpdGVyOwogICAgICAgICAgICAgQVNTRVJUKGl0ZXIgIT0g
ZW5kKTsKQEAgLTIzNTYsNiArMjM5Myw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVF
eGVjdXRlKEV4ZWN1dGlvbkZsYWcgZmxhZywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpCiAKICAg
ICAgICAgQVNTRVJUKCgqaXRlciktPmlzVmFyaWFibGVPYmplY3QoKSk7CiAgICAgICAgIEpTVmFy
aWFibGVPYmplY3QqIHNjb3BlID0gc3RhdGljX2Nhc3Q8SlNWYXJpYWJsZU9iamVjdCo+KCppdGVy
KTsKKyAgICAgICAgQVNTRVJUKGNhbGxGcmFtZS0+cih2YWx1ZSkuanNWYWx1ZSgpKTsKICAgICAg
ICAgc2NvcGUtPnJlZ2lzdGVyQXQoaW5kZXgpID0gSlNWYWx1ZShjYWxsRnJhbWUtPnIodmFsdWUp
LmpzVmFsdWUoKSk7CiAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX3B1dF9zY29wZWRf
dmFyKTsKICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwpAQCAtMzEzMSw4ICszMTY5LDggQEAg
c2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgfQogICAgICAgICBpZiAoIWFyZ3VtZW50cykg
ewogICAgICAgICAgICAgQXJndW1lbnRzKiBhcmd1bWVudHMgPSBuZXcgKGdsb2JhbERhdGEpIEFy
Z3VtZW50cyhjYWxsRnJhbWUpOwotICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGRzdCkgPSBKU1Zh
bHVlKGFyZ3VtZW50cyk7Ci0gICAgICAgICAgICBjYWxsRnJhbWUtPnIodW5tb2RpZmllZEFyZ3Vt
ZW50c1JlZ2lzdGVyKGRzdCkpID0gSlNWYWx1ZShhcmd1bWVudHMpOworICAgICAgICAgICAgY2Fs
bEZyYW1lLT5yKGFyZ3VtZW50c1JlZ2lzdGVyKSA9IEpTVmFsdWUoYXJndW1lbnRzKTsKKyAgICAg
ICAgICAgIGNhbGxGcmFtZS0+cih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRz
UmVnaXN0ZXIpKSA9IEpTVmFsdWUoYXJndW1lbnRzKTsKICAgICAgICAgfQogICAgICAgICAvLyBm
YWxsdGhyb3VnaAogICAgIH0KQEAgLTM2NTgsNyArMzY5Niw3IEBAIHNraXBfaWRfY3VzdG9tX3Nl
bGY6CiAgICAgICAgIGludCBkc3QgPSB2UENbMV0udS5vcGVyYW5kOwogICAgICAgICBpbnQgZnVu
YyA9IHZQQ1syXS51Lm9wZXJhbmQ7CiAgICAgICAgIGludCBzaG91bGRDaGVjayA9IHZQQ1szXS51
Lm9wZXJhbmQ7Ci0KKyAgICAgICAgQVNTRVJUKGNvZGVCbG9jay0+Y29kZVR5cGUoKSAhPSBGdW5j
dGlvbkNvZGUgfHwgIWNvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpIHx8IGNhbGxGcmFt
ZS0+cihjb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpKS5qc1ZhbHVlKCkpOwogICAgICAg
ICBpZiAoIXNob3VsZENoZWNrIHx8ICFjYWxsRnJhbWUtPnIoZHN0KS5qc1ZhbHVlKCkpCiAgICAg
ICAgICAgICBjYWxsRnJhbWUtPnIoZHN0KSA9IEpTVmFsdWUoY29kZUJsb2NrLT5mdW5jdGlvbkRl
Y2woZnVuYyktPm1ha2UoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKSkpOwogCkBA
IC0zNjc1LDcgKzM3MTMsOCBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICAqLwogICAg
ICAgICBpbnQgZHN0ID0gdlBDWzFdLnUub3BlcmFuZDsKICAgICAgICAgaW50IGZ1bmNJbmRleCA9
IHZQQ1syXS51Lm9wZXJhbmQ7Ci0KKyAgICAgICAgCisgICAgICAgIEFTU0VSVChjb2RlQmxvY2st
PmNvZGVUeXBlKCkgIT0gRnVuY3Rpb25Db2RlIHx8ICFjb2RlQmxvY2stPm5lZWRzRnVsbFNjb3Bl
Q2hhaW4oKSB8fCBjYWxsRnJhbWUtPnIoY29kZUJsb2NrLT5hY3RpdmF0aW9uUmVnaXN0ZXIoKSku
anNWYWx1ZSgpKTsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IGNvZGVC
bG9jay0+ZnVuY3Rpb25FeHByKGZ1bmNJbmRleCk7CiAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmMg
PSBmdW5jdGlvbi0+bWFrZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+c2NvcGVDaGFpbigpKTsKIApA
QCAtMzcxMSw3ICszNzUwLDggQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgaW50IGZ1
bmMgPSB2UENbMV0udS5vcGVyYW5kOwogICAgICAgICBpbnQgYXJnQ291bnQgPSB2UENbMl0udS5v
cGVyYW5kOwogICAgICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSB2UENbM10udS5vcGVyYW5kOwot
CisgICAgICAgIAorICAgICAgICBBU1NFUlQoY29kZUJsb2NrLT5jb2RlVHlwZSgpICE9IEZ1bmN0
aW9uQ29kZSB8fCAhY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkgfHwgY2FsbEZyYW1l
LT5yKGNvZGVCbG9jay0+YWN0aXZhdGlvblJlZ2lzdGVyKCkpLmpzVmFsdWUoKSk7CiAgICAgICAg
IEpTVmFsdWUgZnVuY1ZhbCA9IGNhbGxGcmFtZS0+cihmdW5jKS5qc1ZhbHVlKCk7CiAKICAgICAg
ICAgUmVnaXN0ZXIqIG5ld0NhbGxGcmFtZSA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyByZWdp
c3Rlck9mZnNldDsKQEAgLTM5ODAsMTUgKzQwMjAsMTcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoK
ICAgICAgICAgICAgVGhpcyBvcGNvZGUgYXBwZWFycyBiZWZvcmUgb3BfcmV0IGluIGZ1bmN0aW9u
cyB0aGF0IHJlcXVpcmUgZnVsbCBzY29wZSBjaGFpbnMuCiAgICAgICAgICovCiAKLSAgICAgICAg
aW50IHNyYzEgPSB2UENbMV0udS5vcGVyYW5kOwotICAgICAgICBpbnQgc3JjMiA9IHZQQ1syXS51
Lm9wZXJhbmQ7CisgICAgICAgIGludCBhY3RpdmF0aW9uID0gdlBDWzFdLnUub3BlcmFuZDsKKyAg
ICAgICAgaW50IGFyZ3VtZW50cyA9IHZQQ1syXS51Lm9wZXJhbmQ7CiAgICAgICAgIEFTU0VSVChj
b2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSk7CisgICAgICAgIEpTVmFsdWUgYWN0aXZh
dGlvblZhbHVlID0gY2FsbEZyYW1lLT5yKGFjdGl2YXRpb24pLmpzVmFsdWUoKTsKKyAgICAgICAg
aWYgKGFjdGl2YXRpb25WYWx1ZSkgeworICAgICAgICAgICAgYXNBY3RpdmF0aW9uKGFjdGl2YXRp
b25WYWx1ZSktPmNvcHlSZWdpc3RlcnMoKTsKIAotICAgICAgICBKU0FjdGl2YXRpb24qIGFjdGl2
YXRpb24gPSBhc0FjdGl2YXRpb24oY2FsbEZyYW1lLT5yKHNyYzEpLmpzVmFsdWUoKSk7Ci0gICAg
ICAgIGFjdGl2YXRpb24tPmNvcHlSZWdpc3RlcnMoKTsKLQotICAgICAgICBpZiAoSlNWYWx1ZSBh
cmd1bWVudHMgPSBjYWxsRnJhbWUtPnIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHNyYzIp
KS5qc1ZhbHVlKCkpCi0gICAgICAgICAgICBhc0FyZ3VtZW50cyhhcmd1bWVudHMpLT5zZXRBY3Rp
dmF0aW9uKGFjdGl2YXRpb24pOworICAgICAgICAgICAgaWYgKEpTVmFsdWUgYXJndW1lbnRzVmFs
dWUgPSBjYWxsRnJhbWUtPnIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGFyZ3VtZW50cykp
LmpzVmFsdWUoKSkKKyAgICAgICAgICAgICAgICBhc0FyZ3VtZW50cyhhcmd1bWVudHNWYWx1ZSkt
PnNldEFjdGl2YXRpb24oYXNBY3RpdmF0aW9uKGFjdGl2YXRpb25WYWx1ZSkpOworICAgICAgICB9
IGVsc2UgaWYgKEpTVmFsdWUgYXJndW1lbnRzVmFsdWUgPSBjYWxsRnJhbWUtPnIodW5tb2RpZmll
ZEFyZ3VtZW50c1JlZ2lzdGVyKGFyZ3VtZW50cykpLmpzVmFsdWUoKSkKKyAgICAgICAgICAgIGFz
QXJndW1lbnRzKGFyZ3VtZW50c1ZhbHVlKS0+Y29weVJlZ2lzdGVycygpOwogCiAgICAgICAgIHZQ
QyArPSBPUENPREVfTEVOR1RIKG9wX3RlYXJfb2ZmX2FjdGl2YXRpb24pOwogICAgICAgICBORVhU
X0lOU1RSVUNUSU9OKCk7CkBAIC00MDI2LDcgKzQwNjgsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxm
OgogCiAgICAgICAgIGludCByZXN1bHQgPSB2UENbMV0udS5vcGVyYW5kOwogCi0gICAgICAgIGlm
IChjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpCisgICAgICAg
IGlmIChjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkgJiYgY2Fs
bEZyYW1lLT5yKGNvZGVCbG9jay0+YWN0aXZhdGlvblJlZ2lzdGVyKCkpLmpzVmFsdWUoKSkKICAg
ICAgICAgICAgIGNhbGxGcmFtZS0+c2NvcGVDaGFpbigpLT5kZXJlZigpOwogCiAgICAgICAgIEpT
VmFsdWUgcmV0dXJuVmFsdWUgPSBjYWxsRnJhbWUtPnIocmVzdWx0KS5qc1ZhbHVlKCk7CkBAIC00
MDY3LDcgKzQxMDksNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogCiAgICAgICAgIGludCByZXN1
bHQgPSB2UENbMV0udS5vcGVyYW5kOwogCi0gICAgICAgIGlmIChjb2RlQmxvY2stPm5lZWRzRnVs
bFNjb3BlQ2hhaW4oKSkKKyAgICAgICAgaWYgKGNvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFp
bigpICYmIGNhbGxGcmFtZS0+cihjb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpKS5qc1Zh
bHVlKCkpCiAgICAgICAgICAgICBjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+ZGVyZWYoKTsKIAog
ICAgICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gY2FsbEZyYW1lLT5yKHJlc3VsdCkuanNWYWx1
ZSgpOwpAQCAtNDEwMywyNSArNDE0NSwyMCBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAg
ICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9lbnRlcik7CiAgICAgICAgIE5FWFRfSU5TVFJVQ1RJ
T04oKTsKICAgICB9Ci0gICAgREVGSU5FX09QQ09ERShvcF9lbnRlcl93aXRoX2FjdGl2YXRpb24p
IHsKLSAgICAgICAgLyogZW50ZXJfd2l0aF9hY3RpdmF0aW9uIGRzdChyKQotCi0gICAgICAgICAg
IEluaXRpYWxpemVzIGxvY2FsIHZhcmlhYmxlcyB0byB1bmRlZmluZWQsIGNyZWF0ZXMgYW4gYWN0
aXZhdGlvbiBvYmplY3QsCi0gICAgICAgICAgIHBsYWNlcyBpdCBpbiBkc3QsIGFuZCBwdXNoZXMg
aXQgb250byB0aGUgc2NvcGUgY2hhaW4uCisgICAgREVGSU5FX09QQ09ERShvcF9jcmVhdGVfYWN0
aXZhdGlvbikgeworICAgICAgICAvKiBjcmVhdGVfYWN0aXZhdGlvbiBkc3QocikKIAotICAgICAg
ICAgICBUaGlzIG9wY29kZSBhcHBlYXJzIG9ubHkgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGNvZGUg
YmxvY2suCisgICAgICAgICAgIElmIHRoZSBhY3RpdmF0aW9uIG9iamVjdCBmb3IgdGhpcyBjYWxs
ZnJhbWUgaGFzIG5vdCB5ZXQgYmVlbiBjcmVhdGVkLAorICAgICAgICAgICB0aGlzIGNyZWF0ZXMg
aXQgYW5kIHdyaXRlcyBpdCBiYWNrIHRvIGRzdC4KICAgICAgICAgKi8KIAotICAgICAgICBzaXpl
X3QgaSA9IDA7Ci0gICAgICAgIGZvciAoc2l6ZV90IGNvdW50ID0gY29kZUJsb2NrLT5tX251bVZh
cnM7IGkgPCBjb3VudDsgKytpKQotICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGkpID0ganNVbmRl
ZmluZWQoKTsKLQotICAgICAgICBpbnQgZHN0ID0gdlBDWzFdLnUub3BlcmFuZDsKLSAgICAgICAg
SlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gbmV3IChnbG9iYWxEYXRhKSBKU0FjdGl2YXRpb24o
Y2FsbEZyYW1lLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihjb2RlQmxvY2stPm93
bmVyRXhlY3V0YWJsZSgpKSk7Ci0gICAgICAgIGNhbGxGcmFtZS0+cihkc3QpID0gSlNWYWx1ZShh
Y3RpdmF0aW9uKTsKLSAgICAgICAgY2FsbEZyYW1lLT5zZXRTY29wZUNoYWluKGNhbGxGcmFtZS0+
c2NvcGVDaGFpbigpLT5jb3B5KCktPnB1c2goYWN0aXZhdGlvbikpOwotCi0gICAgICAgIHZQQyAr
PSBPUENPREVfTEVOR1RIKG9wX2VudGVyX3dpdGhfYWN0aXZhdGlvbik7CisgICAgICAgIGludCBh
Y3RpdmF0aW9uUmVnID0gdlBDWzFdLnUub3BlcmFuZDsKKyAgICAgICAgaWYgKCFjYWxsRnJhbWUt
PnIoYWN0aXZhdGlvblJlZykuanNWYWx1ZSgpKSB7CisgICAgICAgICAgICBKU0FjdGl2YXRpb24q
IGFjdGl2YXRpb24gPSBuZXcgKGdsb2JhbERhdGEpIEpTQWN0aXZhdGlvbihjYWxsRnJhbWUsIHN0
YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxl
KCkpKTsKKyAgICAgICAgICAgIGNhbGxGcmFtZS0+cihhY3RpdmF0aW9uUmVnKSA9IEpTVmFsdWUo
YWN0aXZhdGlvbik7CisgICAgICAgICAgICBjYWxsRnJhbWUtPnNldFNjb3BlQ2hhaW4oY2FsbEZy
YW1lLT5zY29wZUNoYWluKCktPmNvcHkoKS0+cHVzaChhY3RpdmF0aW9uKSk7CisgICAgICAgIH0K
KyAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfY3JlYXRlX2FjdGl2YXRpb24pOwogICAg
ICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CiAgICAgfQogICAgIERFRklORV9PUENPREUob3BfZ2V0
X2NhbGxlZSkgewpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBhNTA4ZDBjNzgwMWE2MmY3ZGQ1ODllYjJiMTUx
NDlkNzMwNGNjNzZiLi5mM2U5ZTYyZmNmYTZiNDY1YmE3YTQ4OGIwYjFkNzIyY2U0YWQzNjAwIDEw
MDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcApAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZU1haW5QYXNzKCkKICNlbmRpZgogICAgICAgICBERUZJTkVfT1Aob3BfZW5kKQogICAgICAgICBE
RUZJTkVfT1Aob3BfZW50ZXIpCi0gICAgICAgIERFRklORV9PUChvcF9lbnRlcl93aXRoX2FjdGl2
YXRpb24pCisgICAgICAgIERFRklORV9PUChvcF9jcmVhdGVfYWN0aXZhdGlvbikKICAgICAgICAg
REVGSU5FX09QKG9wX2VxKQogICAgICAgICBERUZJTkVfT1Aob3BfZXFfbnVsbCkKICAgICAgICAg
REVGSU5FX09QKG9wX2dldF9ieV9pZCkKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaCBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA2YjJlNzBlMWQ1ZjllNDg1MTVj
MDdkMGFmYWZhYTM0MjdlMjliMWIwLi44Y2IyMDU1YzUxOGQ5Y2JkMTgzYWFmODBmZTEzYjJkOGQy
Y2YyZDhlIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCkBAIC03NDQsNyArNzQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9kaXYoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX2VuZChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZW50ZXIoSW5zdHJ1
Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2VudGVyX3dpdGhfYWN0aXZhdGlvbihJbnN0
cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfY3JlYXRlX2FjdGl2YXRpb24oSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2VxKEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9lcV9udWxsKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDYWxsMzJfNjQuY3BwIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAK
aW5kZXggZTQwMDVhZWUwNzZiZjY5MGM3ODJlZTVkNjNlOTc5ZjYyZWVhNmViZi4uZGFmNWQyZGIx
ZDg1NjQ3M2MwM2Y0YTJkZmQ3MDM1ZmVjNmM2ZjJmNCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENhbGwzMl82NC5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwz
Ml82NC5jcHAKQEAgLTEwOCw5ICsxMDgsMTEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmV0KEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgdW5zaWduZWQgZHN0ID0gY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZDsKIAogICAgIC8vIFdlIGNvdWxkIEpJVCBnZW5lcmF0ZSB0
aGUgZGVyZWYsIG9ubHkgY2FsbGluZyBvdXQgdG8gQyB3aGVuIHRoZSByZWZjb3VudCBoaXRzIHpl
cm8uCi0gICAgaWYgKG1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpCisgICAgaWYg
KG1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpIHsKKyAgICAgICAgSnVtcCBhY3Rp
dmF0aW9uTm90Q3JlYXRlZCA9IGJyYW5jaDMyKEVxdWFsLCB0YWdGb3IobV9jb2RlQmxvY2stPmFj
dGl2YXRpb25SZWdpc3RlcigpKSwgSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpOwogICAg
ICAgICBKSVRTdHViQ2FsbCh0aGlzLCBjdGlfb3BfcmV0X3Njb3BlQ2hhaW4pLmNhbGwoKTsKLQor
ICAgICAgICBhY3RpdmF0aW9uTm90Q3JlYXRlZC5saW5rKHRoaXMpOworICAgIH0KICAgICBlbWl0
TG9hZChkc3QsIHJlZ1QxLCByZWdUMCk7CiAgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQ
dHIoUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQywgcmVnVDIpOwogICAgIGVtaXRHZXRGcm9tQ2FsbEZy
YW1lSGVhZGVyUHRyKFJlZ2lzdGVyRmlsZTo6Q2FsbGVyRnJhbWUsIGNhbGxGcmFtZVJlZ2lzdGVy
KTsKQEAgLTEyNSw4ICsxMjcsMTEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmV0X29iamVjdF9vcl90
aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgdW5zaWduZWQgdGhpc1Jl
ZyA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAKICAgICAvLyBXZSBjb3VsZCBK
SVQgZ2VuZXJhdGUgdGhlIGRlcmVmLCBvbmx5IGNhbGxpbmcgb3V0IHRvIEMgd2hlbiB0aGUgcmVm
Y291bnQgaGl0cyB6ZXJvLgotICAgIGlmIChtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFp
bigpKQorICAgIGlmIChtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpKSB7CisgICAg
ICAgIEp1bXAgYWN0aXZhdGlvbk5vdENyZWF0ZWQgPSBicmFuY2gzMihFcXVhbCwgdGFnRm9yKG1f
Y29kZUJsb2NrLT5hY3RpdmF0aW9uUmVnaXN0ZXIoKSksIEltbTMyKEpTVmFsdWU6OkVtcHR5VmFs
dWVUYWcpKTsKICAgICAgICAgSklUU3R1YkNhbGwodGhpcywgY3RpX29wX3JldF9zY29wZUNoYWlu
KS5jYWxsKCk7CisgICAgICAgIGFjdGl2YXRpb25Ob3RDcmVhdGVkLmxpbmsodGhpcyk7CisgICAg
fQogCiAgICAgZW1pdExvYWQocmVzdWx0LCByZWdUMSwgcmVnVDApOwogICAgIEp1bXAgbm90SlND
ZWxsID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7
CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggYzgxOTMyYTYwYmMxYTBlMWY5OTUxOWRm
NTY3YzBmNWJkOTNjNWQwNS4uNzkwOTllMTM5Yjk3ZWEwY2UyYTQ2ZDlkYzFhYjUyZTdiMzcwNjcy
NiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMzM3LDYgKzMzNyw3IEBAIHZvaWQg
SklUOjplbWl0X29wX2VuZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IGlmIChtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpKQogICAgICAgICBKSVRTdHVi
Q2FsbCh0aGlzLCBjdGlfb3BfZW5kKS5jYWxsKCk7CisKICAgICBBU1NFUlQocmV0dXJuVmFsdWVS
ZWdpc3RlciAhPSBjYWxsRnJhbWVSZWdpc3Rlcik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZXR1cm5WYWx1ZVJlZ2lzdGVyKTsK
ICAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihBZGRyZXNzKGNhbGxGcmFtZVJl
Z2lzdGVyLCBSZWdpc3RlckZpbGU6OlJldHVyblBDICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2Yo
UmVnaXN0ZXIpKSkpOwpAQCAtNDY3LDYgKzQ2OCwxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
c2NvcGVkX3ZhcihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGludCBza2lw
ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAogICAgIGVtaXRHZXRGcm9tQ2Fs
bEZyYW1lSGVhZGVyUHRyKFJlZ2lzdGVyRmlsZTo6U2NvcGVDaGFpbiwgcmVnVDApOworICAgIGJv
b2wgY2hlY2tUb3BMZXZlbCA9IG1fY29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29k
ZSAmJiBtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpOworICAgIGlmIChjaGVja1Rv
cExldmVsICYmIHNraXAtLSkgeworICAgICAgICBKdW1wIGFjdGl2YXRpb25Ob3RDcmVhdGVkOwor
ICAgICAgICBpZiAoY2hlY2tUb3BMZXZlbCkKKyAgICAgICAgICAgIGFjdGl2YXRpb25Ob3RDcmVh
dGVkID0gYnJhbmNoVGVzdFB0cihaZXJvLCBhZGRyZXNzRm9yKG1fY29kZUJsb2NrLT5hY3RpdmF0
aW9uUmVnaXN0ZXIoKSkpOworICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIE9CSkVDVF9P
RkZTRVRPRihTY29wZUNoYWluTm9kZSwgbmV4dCkpLCByZWdUMCk7CisgICAgICAgIGFjdGl2YXRp
b25Ob3RDcmVhdGVkLmxpbmsodGhpcyk7CisgICAgfQogICAgIHdoaWxlIChza2lwLS0pCiAgICAg
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgT0JKRUNUX09GRlNFVE9GKFNjb3BlQ2hhaW5Ob2Rl
LCBuZXh0KSksIHJlZ1QwKTsKIApAQCAtNDgxLDYgKzQ5MCwxNCBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9wdXRfc2NvcGVkX3ZhcihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAg
ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoUmVnaXN0ZXJGaWxlOjpTY29wZUNoYWluLCBy
ZWdUMSk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10u
dS5vcGVyYW5kLCByZWdUMCk7CisgICAgYm9vbCBjaGVja1RvcExldmVsID0gbV9jb2RlQmxvY2st
PmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlICYmIG1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29w
ZUNoYWluKCk7CisgICAgaWYgKGNoZWNrVG9wTGV2ZWwgJiYgc2tpcC0tKSB7CisgICAgICAgIEp1
bXAgYWN0aXZhdGlvbk5vdENyZWF0ZWQ7CisgICAgICAgIGlmIChjaGVja1RvcExldmVsKQorICAg
ICAgICAgICAgYWN0aXZhdGlvbk5vdENyZWF0ZWQgPSBicmFuY2hUZXN0UHRyKFplcm8sIGFkZHJl
c3NGb3IobV9jb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpKSk7CisgICAgICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZWdUMSwgT0JKRUNUX09GRlNFVE9GKFNjb3BlQ2hhaW5Ob2RlLCBuZXh0KSks
IHJlZ1QxKTsKKyAgICAgICAgYWN0aXZhdGlvbk5vdENyZWF0ZWQubGluayh0aGlzKTsKKyAgICB9
CiAgICAgd2hpbGUgKHNraXAtLSkKICAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBPQkpF
Q1RfT0ZGU0VUT0YoU2NvcGVDaGFpbk5vZGUsIG5leHQpKSwgcmVnVDEpOwogCkBAIC00OTAsMTAg
KzUwNywxNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfc2NvcGVkX3ZhcihJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF90ZWFyX29mZl9hY3RpdmF0
aW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CisgICAgdW5zaWduZWQgYWN0
aXZhdGlvbiA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgdW5zaWduZWQg
YXJndW1lbnRzID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICBKdW1wIGFj
dGl2YXRpb25DcmVhdGVkID0gYnJhbmNoVGVzdFB0cihOb25aZXJvLCBhZGRyZXNzRm9yKGFjdGl2
YXRpb24pKTsKKyAgICBKdW1wIGFyZ3VtZW50c05vdENyZWF0ZWQgPSBicmFuY2hUZXN0UHRyKFpl
cm8sIGFkZHJlc3NGb3IoYXJndW1lbnRzKSk7CisgICAgYWN0aXZhdGlvbkNyZWF0ZWQubGluayh0
aGlzKTsKICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfdGVhcl9vZmZfYWN0
aXZhdGlvbik7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCwgcmVnVDIpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHVubW9kaWZpZWRB
cmd1bWVudHNSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSwgcmVnVDIp
OworICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KGFjdGl2YXRpb24sIHJlZ1QyKTsKKyAgICBzdHVi
Q2FsbC5hZGRBcmd1bWVudCh1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRzKSwg
cmVnVDIpOwogICAgIHN0dWJDYWxsLmNhbGwoKTsKKyAgICBhcmd1bWVudHNOb3RDcmVhdGVkLmxp
bmsodGhpcyk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX3RlYXJfb2ZmX2FyZ3VtZW50cyhJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtNTEwLDkgKzUzMywxMSBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF90ZWFyX29mZl9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHZvaWQgSklUOjplbWl0X29wX3JldChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewogICAgIC8vIFdlIGNvdWxkIEpJVCBnZW5lcmF0ZSB0aGUgZGVyZWYsIG9ubHkgY2Fs
bGluZyBvdXQgdG8gQyB3aGVuIHRoZSByZWZjb3VudCBoaXRzIHplcm8uCi0gICAgaWYgKG1fY29k
ZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpCisgICAgaWYgKG1fY29kZUJsb2NrLT5uZWVk
c0Z1bGxTY29wZUNoYWluKCkpIHsKKyAgICAgICAgSnVtcCBhY3RpdmF0aW9uTm90Q3JlYXRlZCA9
IGJyYW5jaFRlc3RQdHIoWmVybywgYWRkcmVzc0ZvcihtX2NvZGVCbG9jay0+YWN0aXZhdGlvblJl
Z2lzdGVyKCkpKTsKICAgICAgICAgSklUU3R1YkNhbGwodGhpcywgY3RpX29wX3JldF9zY29wZUNo
YWluKS5jYWxsKCk7Ci0KKyAgICAgICAgYWN0aXZhdGlvbk5vdENyZWF0ZWQubGluayh0aGlzKTsK
KyAgICB9CiAgICAgQVNTRVJUKGNhbGxGcmFtZVJlZ2lzdGVyICE9IHJlZ1QxKTsKICAgICBBU1NF
UlQocmVnVDEgIT0gcmV0dXJuVmFsdWVSZWdpc3Rlcik7CiAgICAgQVNTRVJUKHJldHVyblZhbHVl
UmVnaXN0ZXIgIT0gY2FsbEZyYW1lUmVnaXN0ZXIpOwpAQCAtNTM0LDggKzU1OSwxMSBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9yZXQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHZvaWQg
SklUOjplbWl0X29wX3JldF9vYmplY3Rfb3JfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIC8vIFdlIGNvdWxkIEpJVCBnZW5lcmF0ZSB0aGUgZGVyZWYsIG9ubHkg
Y2FsbGluZyBvdXQgdG8gQyB3aGVuIHRoZSByZWZjb3VudCBoaXRzIHplcm8uCi0gICAgaWYgKG1f
Y29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpCisgICAgaWYgKG1fY29kZUJsb2NrLT5u
ZWVkc0Z1bGxTY29wZUNoYWluKCkpIHsKKyAgICAgICAgSnVtcCBhY3RpdmF0aW9uTm90Q3JlYXRl
ZCA9IGJyYW5jaFRlc3RQdHIoWmVybywgYWRkcmVzc0ZvcihtX2NvZGVCbG9jay0+YWN0aXZhdGlv
blJlZ2lzdGVyKCkpKTsKICAgICAgICAgSklUU3R1YkNhbGwodGhpcywgY3RpX29wX3JldF9zY29w
ZUNoYWluKS5jYWxsKCk7CisgICAgICAgIGFjdGl2YXRpb25Ob3RDcmVhdGVkLmxpbmsodGhpcyk7
CisgICAgfQogCiAgICAgQVNTRVJUKGNhbGxGcmFtZVJlZ2lzdGVyICE9IHJlZ1QxKTsKICAgICBB
U1NFUlQocmVnVDEgIT0gcmV0dXJuVmFsdWVSZWdpc3Rlcik7CkBAIC0xMTg1LDE2ICsxMjEzLDE0
IEBAIHZvaWQgSklUOjplbWl0X29wX2VudGVyKEluc3RydWN0aW9uKikKIAogfQogCi12b2lkIEpJ
VDo6ZW1pdF9vcF9lbnRlcl93aXRoX2FjdGl2YXRpb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV9hY3RpdmF0aW9uKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgLy8gRXZlbiB0aG91Z2ggQ1RJIGRvZXNuJ3Qg
dXNlIHRoZW0sIHdlIGluaXRpYWxpemUgb3VyIGNvbnN0YW50Ci0gICAgLy8gcmVnaXN0ZXJzIHRv
IHphcCBzdGFsZSBwb2ludGVycywgdG8gYXZvaWQgdW5uZWNlc3NhcmlseSBwcm9sb25naW5nCi0g
ICAgLy8gb2JqZWN0IGxpZmV0aW1lIGFuZCBpbmNyZWFzaW5nIEdDIHByZXNzdXJlLgotICAgIHNp
emVfdCBjb3VudCA9IG1fY29kZUJsb2NrLT5tX251bVZhcnM7Ci0gICAgZm9yIChzaXplX3QgaiA9
IDA7IGogPCBjb3VudDsgKytqKQotICAgICAgICBlbWl0SW5pdFJlZ2lzdGVyKGopOwotCisgICAg
dW5zaWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICAKKyAg
ICBKdW1wIGFjdGl2YXRpb25DcmVhdGVkID0gYnJhbmNoVGVzdFB0cihOb25aZXJvLCBBZGRyZXNz
KGNhbGxGcmFtZVJlZ2lzdGVyLCBzaXplb2YoUmVnaXN0ZXIpICogZHN0KSk7CiAgICAgSklUU3R1
YkNhbGwodGhpcywgY3RpX29wX3B1c2hfYWN0aXZhdGlvbikuY2FsbChjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CisgICAg
YWN0aXZhdGlvbkNyZWF0ZWQubGluayh0aGlzKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfY3Jl
YXRlX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMTU1OSw2
ICsxNTg1LDE3IEBAIHZvaWQgSklUOjplbWl0X29wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBpbnQgc2tpcCA9IGN1cnJlbnRJbnN0
cnVjdGlvbls1XS51Lm9wZXJhbmQ7CiAgICAgCiAgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFk
ZXJQdHIoUmVnaXN0ZXJGaWxlOjpTY29wZUNoYWluLCByZWdUMCk7CisgICAgCisgICAgYm9vbCBj
aGVja1RvcExldmVsID0gbV9jb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlICYm
IG1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCk7CisgICAgaWYgKGNoZWNrVG9wTGV2
ZWwgJiYgc2tpcC0tKSB7CisgICAgICAgIEp1bXAgYWN0aXZhdGlvbk5vdENyZWF0ZWQ7CisgICAg
ICAgIGlmIChjaGVja1RvcExldmVsKQorICAgICAgICAgICAgYWN0aXZhdGlvbk5vdENyZWF0ZWQg
PSBicmFuY2hUZXN0UHRyKFplcm8sIGFkZHJlc3NGb3IobV9jb2RlQmxvY2stPmFjdGl2YXRpb25S
ZWdpc3RlcigpKSk7CisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgT0JKRUNUX09GRlNF
VE9GKFNjb3BlQ2hhaW5Ob2RlLCBvYmplY3QpKSwgcmVnVDEpOworICAgICAgICBhZGRTbG93Q2Fz
ZShjaGVja1N0cnVjdHVyZShyZWdUMSwgbV9nbG9iYWxEYXRhLT5hY3RpdmF0aW9uU3RydWN0dXJl
LmdldCgpKSk7CisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgT0JKRUNUX09GRlNFVE9G
KFNjb3BlQ2hhaW5Ob2RlLCBuZXh0KSksIHJlZ1QwKTsKKyAgICAgICAgYWN0aXZhdGlvbk5vdENy
ZWF0ZWQubGluayh0aGlzKTsKKyAgICB9CiAgICAgd2hpbGUgKHNraXAtLSkgewogICAgICAgICBs
b2FkUHRyKEFkZHJlc3MocmVnVDAsIE9CSkVDVF9PRkZTRVRPRihTY29wZUNoYWluTm9kZSwgb2Jq
ZWN0KSksIHJlZ1QxKTsKICAgICAgICAgYWRkU2xvd0Nhc2UoY2hlY2tTdHJ1Y3R1cmUocmVnVDEs
IG1fZ2xvYmFsRGF0YS0+YWN0aXZhdGlvblN0cnVjdHVyZS5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCBhZDNiNTU4MjZhMmZlYTBhOTZhZjY0OTNiM2M3
NDE1MTBmZDdkZWZlLi41ZjU2NWQxMzhjMTU5NzY3MTljMDJiMmQwZDkxMWJiY2MyOWE2NmZiIDEw
MDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAorKysgYi9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtNjEwLDYgKzYxMCwxNCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfc2NvcGVkX3ZhcihJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIGludCBza2lwID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZDsKIAogICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKFJlZ2lzdGVyRmlsZTo6U2Nv
cGVDaGFpbiwgcmVnVDIpOworICAgIGJvb2wgY2hlY2tUb3BMZXZlbCA9IG1fY29kZUJsb2NrLT5j
b2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSAmJiBtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVD
aGFpbigpOworICAgIGlmIChjaGVja1RvcExldmVsICYmIHNraXAtLSkgeworICAgICAgICBKdW1w
IGFjdGl2YXRpb25Ob3RDcmVhdGVkOworICAgICAgICBpZiAoY2hlY2tUb3BMZXZlbCkKKyAgICAg
ICAgICAgIGFjdGl2YXRpb25Ob3RDcmVhdGVkID0gYnJhbmNoMzIoRXF1YWwsIHRhZ0ZvcihtX2Nv
ZGVCbG9jay0+YWN0aXZhdGlvblJlZ2lzdGVyKCkpLCBJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVl
VGFnKSk7CisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgT0JKRUNUX09GRlNFVE9GKFNj
b3BlQ2hhaW5Ob2RlLCBuZXh0KSksIHJlZ1QyKTsKKyAgICAgICAgYWN0aXZhdGlvbk5vdENyZWF0
ZWQubGluayh0aGlzKTsKKyAgICB9CiAgICAgd2hpbGUgKHNraXAtLSkKICAgICAgICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QyLCBPQkpFQ1RfT0ZGU0VUT0YoU2NvcGVDaGFpbk5vZGUsIG5leHQpKSwg
cmVnVDIpOwogCkBAIC02MzEsNiArNjM5LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9zY29w
ZWRfdmFyKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdExvYWQodmFs
dWUsIHJlZ1QxLCByZWdUMCk7CiAKICAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihS
ZWdpc3RlckZpbGU6OlNjb3BlQ2hhaW4sIHJlZ1QyKTsKKyAgICBib29sIGNoZWNrVG9wTGV2ZWwg
PSBtX2NvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUgJiYgbV9jb2RlQmxvY2st
Pm5lZWRzRnVsbFNjb3BlQ2hhaW4oKTsKKyAgICBpZiAoY2hlY2tUb3BMZXZlbCAmJiBza2lwLS0p
IHsKKyAgICAgICAgSnVtcCBhY3RpdmF0aW9uTm90Q3JlYXRlZDsKKyAgICAgICAgaWYgKGNoZWNr
VG9wTGV2ZWwpCisgICAgICAgICAgICBhY3RpdmF0aW9uTm90Q3JlYXRlZCA9IGJyYW5jaDMyKEVx
dWFsLCB0YWdGb3IobV9jb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpKSwgSW1tMzIoSlNW
YWx1ZTo6RW1wdHlWYWx1ZVRhZykpOworICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIE9C
SkVDVF9PRkZTRVRPRihTY29wZUNoYWluTm9kZSwgbmV4dCkpLCByZWdUMik7CisgICAgICAgIGFj
dGl2YXRpb25Ob3RDcmVhdGVkLmxpbmsodGhpcyk7CisgICAgfQogICAgIHdoaWxlIChza2lwLS0p
CiAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgT0JKRUNUX09GRlNFVE9GKFNjb3BlQ2hh
aW5Ob2RlLCBuZXh0KSksIHJlZ1QyKTsKIApAQCAtNjQ0LDEwICs2NjAsMTYgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfcHV0X3Njb3BlZF92YXIoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IAogdm9pZCBKSVQ6OmVtaXRfb3BfdGVhcl9vZmZfYWN0aXZhdGlvbihJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogeworICAgIHVuc2lnbmVkIGFjdGl2YXRpb24gPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIGFyZ3VtZW50cyA9IGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgSnVtcCBhY3RpdmF0aW9uQ3JlYXRlZCA9IGJy
YW5jaDMyKE5vdEVxdWFsLCB0YWdGb3IoYWN0aXZhdGlvbiksIEltbTMyKEpTVmFsdWU6OkVtcHR5
VmFsdWVUYWcpKTsKKyAgICBKdW1wIGFyZ3VtZW50c05vdENyZWF0ZWQgPSBicmFuY2gzMihFcXVh
bCwgdGFnRm9yKGFyZ3VtZW50cyksIEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKTsKKyAg
ICBhY3RpdmF0aW9uQ3JlYXRlZC5saW5rKHRoaXMpOwogICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxs
KHRoaXMsIGN0aV9vcF90ZWFyX29mZl9hY3RpdmF0aW9uKTsKICAgICBzdHViQ2FsbC5hZGRBcmd1
bWVudChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAgICBzdHViQ2FsbC5hZGRB
cmd1bWVudCh1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJd
LnUub3BlcmFuZCkpOwogICAgIHN0dWJDYWxsLmNhbGwoKTsKKyAgICBhcmd1bWVudHNOb3RDcmVh
dGVkLmxpbmsodGhpcyk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX3RlYXJfb2ZmX2FyZ3VtZW50
cyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMTQ2NywxMSArMTQ4OSwxMyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9lbnRlcihJbnN0cnVjdGlvbiopCiAgICAgICAgIGVtaXRTdG9y
ZShpLCBqc1VuZGVmaW5lZCgpKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZW50ZXJfd2l0aF9h
Y3RpdmF0aW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1p
dF9vcF9jcmVhdGVfYWN0aXZhdGlvbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewotICAgIGVtaXRfb3BfZW50ZXIoY3VycmVudEluc3RydWN0aW9uKTsKLQotICAgIEpJVFN0dWJD
YWxsKHRoaXMsIGN0aV9vcF9wdXNoX2FjdGl2YXRpb24pLmNhbGwoY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZCk7CisgICAgdW5zaWduZWQgYWN0aXZhdGlvbiA9IGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQ7CisgICAgCisgICAgSnVtcCBhY3RpdmF0aW9uQ3JlYXRlZCA9IGJy
YW5jaDMyKE5vdEVxdWFsLCB0YWdGb3IoYWN0aXZhdGlvbiksIEltbTMyKEpTVmFsdWU6OkVtcHR5
VmFsdWVUYWcpKTsKKyAgICBKSVRTdHViQ2FsbCh0aGlzLCBjdGlfb3BfcHVzaF9hY3RpdmF0aW9u
KS5jYWxsKGFjdGl2YXRpb24pOworICAgIGFjdGl2YXRpb25DcmVhdGVkLmxpbmsodGhpcyk7CiB9
CiAKIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5j
cHAgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCmluZGV4IGYxZWMwNzk2Mjk2ZDI5
ZTBiMTg5ODU0ZTY3NDI5ODY4YTNmYzU1MWMuLjMzYjBhZWVhNWQwZjA0NWIzZjNmM2E2YjlkOGIx
MDQxMmFkMzI1MDcgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAK
KysrIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcApAQCAtMTkwNiw3ICsxOTA2LDgg
QEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX211bCkKIERFRklORV9T
VFVCX0ZVTkNUSU9OKEpTT2JqZWN0Kiwgb3BfbmV3X2Z1bmMpCiB7CiAgICAgU1RVQl9JTklUX1NU
QUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwotCisgICAgCisgICAgQVNTRVJUKHN0YWNrRnJhbWUuY2Fs
bEZyYW1lLT5jb2RlQmxvY2soKS0+Y29kZVR5cGUoKSAhPSBGdW5jdGlvbkNvZGUgfHwgIXN0YWNr
RnJhbWUuY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+bmVlZHNGdWxsU2NvcGVDaGFpbigpIHx8IHN0
YWNrRnJhbWUuY2FsbEZyYW1lLT5yKHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+
YWN0aXZhdGlvblJlZ2lzdGVyKCkpLmpzVmFsdWUoKSk7CiAgICAgcmV0dXJuIHN0YWNrRnJhbWUu
YXJnc1swXS5mdW5jdGlvbigpLT5tYWtlKHN0YWNrRnJhbWUuY2FsbEZyYW1lLCBzdGFja0ZyYW1l
LmNhbGxGcmFtZS0+c2NvcGVDaGFpbigpKTsKIH0KIApAQCAtMjIxMyw2ICsyMjE0LDEyIEBAIERF
RklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX3RlYXJfb2ZmX2FjdGl2YXRpb24pCiAgICAgU1RV
Ql9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwogCiAgICAgQVNTRVJUKHN0YWNrRnJhbWUu
Y2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+bmVlZHNGdWxsU2NvcGVDaGFpbigpKTsKKyAgICBKU1Zh
bHVlIGFjdGl2YXRpb25WYWx1ZSA9IHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCk7CisgICAg
aWYgKCFhY3RpdmF0aW9uVmFsdWUpIHsKKyAgICAgICAgaWYgKEpTVmFsdWUgdiA9IHN0YWNrRnJh
bWUuYXJnc1sxXS5qc1ZhbHVlKCkpCisgICAgICAgICAgICBhc0FyZ3VtZW50cyh2KS0+Y29weVJl
Z2lzdGVycygpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIEpTQWN0aXZhdGlvbiogYWN0
aXZhdGlvbiA9IGFzQWN0aXZhdGlvbihzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpKTsKICAg
ICBhY3RpdmF0aW9uLT5jb3B5UmVnaXN0ZXJzKCk7CiAgICAgaWYgKEpTVmFsdWUgdiA9IHN0YWNr
RnJhbWUuYXJnc1sxXS5qc1ZhbHVlKCkpCkBAIC0yNjg1LDYgKzI2OTIsMTIgQEAgREVGSU5FX1NU
VUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX3Jlc29sdmVfc2tpcCkKICAgICBTY29wZUNo
YWluSXRlcmF0b3IgaXRlciA9IHNjb3BlQ2hhaW4tPmJlZ2luKCk7CiAgICAgU2NvcGVDaGFpbkl0
ZXJhdG9yIGVuZCA9IHNjb3BlQ2hhaW4tPmVuZCgpOwogICAgIEFTU0VSVChpdGVyICE9IGVuZCk7
CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAg
IGJvb2wgY2hlY2tUb3BMZXZlbCA9IGNvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNv
ZGUgJiYgY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCk7CisgICAgaWYgKGNoZWNrVG9w
TGV2ZWwgJiYgc2tpcC0tKSB7CisgICAgICAgIGlmIChjYWxsRnJhbWUtPnIoY29kZUJsb2NrLT5h
Y3RpdmF0aW9uUmVnaXN0ZXIoKSkuanNWYWx1ZSgpKQorICAgICAgICAgICAgKytpdGVyOworICAg
IH0KICAgICB3aGlsZSAoc2tpcC0tKSB7CiAgICAgICAgICsraXRlcjsKICAgICAgICAgQVNTRVJU
KGl0ZXIgIT0gZW5kKTsKQEAgLTI3MDAsNyArMjcxMyw2IEBAIERFRklORV9TVFVCX0ZVTkNUSU9O
KEVuY29kZWRKU1ZhbHVlLCBvcF9yZXNvbHZlX3NraXApCiAgICAgICAgIH0KICAgICB9IHdoaWxl
ICgrK2l0ZXIgIT0gZW5kKTsKIAotICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1l
LT5jb2RlQmxvY2soKTsKICAgICB1bnNpZ25lZCB2UENJbmRleCA9IGNvZGVCbG9jay0+Ynl0ZWNv
ZGVPZmZzZXQoY2FsbEZyYW1lLCBTVFVCX1JFVFVSTl9BRERSRVNTKTsKICAgICBzdGFja0ZyYW1l
Lmdsb2JhbERhdGEtPmV4Y2VwdGlvbiA9IGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoY2Fs
bEZyYW1lLCBpZGVudCwgdlBDSW5kZXgsIGNvZGVCbG9jayk7CiAgICAgVk1fVEhST1dfRVhDRVBU
SU9OKCk7CkBAIC0zMDQ5LDYgKzMwNjEsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihKU09iamVj
dCosIG9wX25ld19mdW5jX2V4cCkKIAogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24g
PSBzdGFja0ZyYW1lLmFyZ3NbMF0uZnVuY3Rpb24oKTsKICAgICBKU0Z1bmN0aW9uKiBmdW5jID0g
ZnVuY3Rpb24tPm1ha2UoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKSk7CisgICAg
QVNTRVJUKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmNvZGVUeXBlKCkgIT0gRnVuY3Rpb25Db2Rl
IHx8ICFjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkgfHwgY2Fs
bEZyYW1lLT5yKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmFjdGl2YXRpb25SZWdpc3RlcigpKS5q
c1ZhbHVlKCkpOwogCiAgICAgLyogCiAgICAgICAgIFRoZSBJZGVudGlmaWVyIGluIGEgRnVuY3Rp
b25FeHByZXNzaW9uIGNhbiBiZSByZWZlcmVuY2VkIGZyb20gaW5zaWRlCkBAIC0zMTU1LDYgKzMx
NjgsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfYml0b3IpCiBE
RUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfY2FsbF9ldmFsKQogewogICAg
IFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKKyAgICBBU1NFUlQoc3RhY2tGcmFt
ZS5jYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5jb2RlVHlwZSgpICE9IEZ1bmN0aW9uQ29kZSB8fCAh
c3RhY2tGcmFtZS5jYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkg
fHwgc3RhY2tGcmFtZS5jYWxsRnJhbWUtPnIoc3RhY2tGcmFtZS5jYWxsRnJhbWUtPmNvZGVCbG9j
aygpLT5hY3RpdmF0aW9uUmVnaXN0ZXIoKSkuanNWYWx1ZSgpKTsKIAogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7CiAgICAgUmVnaXN0ZXJGaWxlKiByZWdp
c3RlckZpbGUgPSBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZTsK
</data>
<flag name="commit-queue"
          id="59400"
          type_id="3"
          status="-"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>