<?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>133596</bug_id>
          
          <creation_ts>2014-06-06 18:09:37 -0700</creation_ts>
          <short_desc>make css jit work on armv7</short_desc>
          <delta_ts>2014-06-14 13:58:55 -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>CSS</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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ossy</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1013900</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-06-06 18:09:37 -0700</bug_when>
    <thetext>I haven&apos;t tested this code on a device and there are some hacky things, but I think this is a big step in the right direction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013903</commentid>
    <comment_count>1</comment_count>
      <attachid>232641</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-06-06 18:24:37 -0700</bug_when>
    <thetext>Created attachment 232641
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013967</commentid>
    <comment_count>2</comment_count>
      <attachid>232641</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2014-06-07 10:20:44 -0700</bug_when>
    <thetext>Comment on attachment 232641
Patch

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

Great patch!

&gt; Source/WebCore/cssjit/SelectorCompiler.cpp:1474
&gt; +    m_assembler.m_assembler.sdiv(resultRegister, inputDividend, divisorRegister);

IIRC, APPLE_ARMV7S (ARMv7s) supports sdiv, but ARMv7 doesn&apos;t support it. So I think fallback path is needed.

&gt; Source/WebCore/cssjit/SelectorCompiler.cpp:1866
&gt; +#endif

Calculating element pointer + member&apos;s offset to lookup struct&apos;s member.
So using addPtr (or addPtrNoFlags) instead and we can remove this ifdef :)

&gt; Source/WebCore/cssjit/StackAllocator.h:220
&gt; +#endif

`MacroAssembler::pushToSaveByteOffset` implementation for ARM_THUMB2 is `sizeof(void*)` and I think this ifdef is not necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014141</commentid>
    <comment_count>3</comment_count>
      <attachid>232713</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-06-09 10:54:15 -0700</bug_when>
    <thetext>Created attachment 232713
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014584</commentid>
    <comment_count>4</comment_count>
      <attachid>232713</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-06-10 16:38:26 -0700</bug_when>
    <thetext>Comment on attachment 232713
Patch

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

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:1415
&gt; +        // use addressTempRegister incase the branch32 we call uses dataTempRegister. :-/

I don&apos;t understand the problem here. Why isn&apos;t addressTempRegister the right register in this case?

&gt; Source/WebCore/cssjit/FunctionCall.h:94
&gt; +#elif CPU(ARM_THUMB2)

What about MIPS? ;)

&gt; Source/WebCore/cssjit/RegisterAllocator.h:67
&gt; +    JSC::ARMRegisters::r6,

We cannot use r6, it could be used for addressTempRegister.

I believe r4-&gt;r6 are callee saved registers ( https://developer.apple.com/library/ios/documentation/Xcode/Conceptual/iPhoneOSABIReference/Articles/ARMv6FunctionCallingConventions.html#//apple_ref/doc/uid/TP40009021-SW10 )

&gt; Source/WebCore/cssjit/SelectorCompiler.cpp:1095
&gt; +    prologueRegisters.append(JSC::ARMRegisters::fp);

Do we care about fp?

&gt; Source/WebCore/cssjit/SelectorCompiler.cpp:1138
&gt; +    // ARM_THUMB2 does not have enough registers to compile complicated selectors.
&gt; +    // Compiling should always succeed on non-ARM_THUMB2 CPUs.
&gt; +    ASSERT_NOT_REACHED();

Indent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015471</commentid>
    <comment_count>5</comment_count>
      <attachid>233060</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-06-13 10:58:06 -0700</bug_when>
    <thetext>Created attachment 233060
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015478</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-06-13 11:12:07 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 232713 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=232713&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:1415
&gt; &gt; +        // use addressTempRegister incase the branch32 we call uses dataTempRegister. :-/
&gt; 
&gt; I don&apos;t understand the problem here. Why isn&apos;t addressTempRegister the right register in this case?
I don&apos;t know.  This was me making the code look like the code around it without fully understanding what the registers are used for.
&gt; Do we care about fp?
I use fp as a caller saved register, and pushing 2 registers takes the same number of operations as pushing one.  See comments in new patch, which will remind us to change this if we optimize for selectors that don&apos;t do function calls that won&apos;t need a prologue or epilogue.

This works and passes all fast/selectors tests on armv7s.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015479</commentid>
    <comment_count>7</comment_count>
      <attachid>233062</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-06-13 11:15:50 -0700</bug_when>
    <thetext>Created attachment 233062
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015517</commentid>
    <comment_count>8</comment_count>
      <attachid>233062</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-13 13:44:02 -0700</bug_when>
    <thetext>Comment on attachment 233062
Patch

Clearing flags on attachment: 233062

Committed r169947: &lt;http://trac.webkit.org/changeset/169947&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015518</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-13 13:44:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015641</commentid>
    <comment_count>10</comment_count>
      <attachid>233062</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-06-14 02:14:25 -0700</bug_when>
    <thetext>Comment on attachment 233062
Patch

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

&gt; Source/WebCore/cssjit/SelectorCompiler.cpp:1405
&gt; +#else
&gt; +#error SelectorCodeGenerator::addFlagsToElementStyleFromContext not implemented for this architecture.
&gt; +#endif

It broke the EFL ARM64 build:

/home/webkitbuildbot/slaves/efl-ARM64-build/buildslave/efl-linux-arm64-release/build/Source/WebCore/cssjit/SelectorCompiler.cpp:1404:2: error: #error SelectorCodeGenerator::addFlagsToElementStyleFromContext not implemented for this architecture.
 #error SelectorCodeGenerator::addFlagsToElementStyleFromContext not implemented for this architecture.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015698</commentid>
    <comment_count>11</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-06-14 13:58:55 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 233062 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=233062&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/cssjit/SelectorCompiler.cpp:1405
&gt; &gt; +#else
&gt; &gt; +#error SelectorCodeGenerator::addFlagsToElementStyleFromContext not implemented for this architecture.
&gt; &gt; +#endif
&gt; 
&gt; It broke the EFL ARM64 build:
&gt; 
&gt; /home/webkitbuildbot/slaves/efl-ARM64-build/buildslave/efl-linux-arm64-release/build/Source/WebCore/cssjit/SelectorCompiler.cpp:1404:2: error: #error SelectorCodeGenerator::addFlagsToElementStyleFromContext not implemented for this architecture.
&gt;  #error SelectorCodeGenerator::addFlagsToElementStyleFromContext not implemented for this architecture.

Quick fix (hopefully): &lt;http://trac.webkit.org/changeset/169980&gt;.

Any chance to get a ARM64 EWS some day? :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232641</attachid>
            <date>2014-06-06 18:24:37 -0700</date>
            <delta_ts>2014-06-09 10:54:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133596-20140606182417.patch</filename>
            <type>text/plain</type>
            <size>17659</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY5NjY5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDE0LTA2LTA2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgTWFrZSBjc3Mgaml0IGNvbXBpbGUgZm9yIGFybXY3LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzNTk2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuaDoKKyAgICAgICAgVXNlIGJyYW5jaFB0ciBvbiBBUk1fVEhVTUIyLgorICAgICAgICAq
IGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyQVJNdjc6OmFkZFB0ck5vRmxhZ3MpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTXY3OjpvcjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6dGVzdDMy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6YnJhbmNoKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6YnJhbmNoUHRyKToKKyAgICAgICAgQWRkZWQgbWFj
cm9zIG5lY2Vzc2FyeSBmb3IgY3NzIGppdC4KKwogMjAxNC0wNi0wNiAgQW5kcmVhcyBLbGluZyAg
PGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgSW5kZXhlZCBnZXR0ZXJzIHNob3VsZCByZXR1
cm4gdmFsdWVzIGRpcmVjdGx5IG9uIHRoZSBQcm9wZXJ0eVNsb3QuCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAx
Njk2NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTExNyw5ICsxMTcsOSBAQCBwdWJsaWM6CiAgICAgdXNpbmcg
TWFjcm9Bc3NlbWJsZXJCYXNlOjphbmQzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6
OmJyYW5jaEFkZDMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoTXVsMzI7
Ci0jaWYgQ1BVKEFSTTY0KSB8fCBDUFUoWDg2XzY0KQorI2lmIENQVShBUk02NCkgfHwgQ1BVKEFS
TV9USFVNQjIpIHx8IENQVShYODZfNjQpCiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpi
cmFuY2hQdHI7Ci0jZW5kaWYgLy8gQ1BVKFg4Nl82NCkKKyNlbmRpZgogICAgIHVzaW5nIE1hY3Jv
QXNzZW1ibGVyQmFzZTo6YnJhbmNoU3ViMzI7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNl
Ojpsc2hpZnQzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6Om9yMzI7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNdjcuaAkocmV2aXNpb24gMTY5NjY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyNiw2ICsyMjYs
MTEgQEAgcHVibGljOgogICAgICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3Mu
bV9wdHIpOwogICAgIH0KIAorICAgIHZvaWQgYWRkUHRyTm9GbGFncyhUcnVzdGVkSW1tMzIgaW1t
LCBSZWdpc3RlcklEIHNyY0Rlc3QpCisgICAgeworICAgICAgICBhZGQzMihpbW0sIHNyY0Rlc3Qp
OworICAgIH0KKyAgICAKICAgICB2b2lkIGFkZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRl
QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJl
c3MubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKQEAgLTMzNyw2ICszNDIsMTMgQEAgcHVi
bGljOgogICAgICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3NUZW1wUmVnaXN0
ZXIpOwogICAgIH0KIAorICAgIHZvaWQgb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBsb2FkMzIoYWRkcmVzcywgZGF0YVRlbXBSZWdpc3Rlcik7
CisgICAgICAgIG9yMzIoaW1tLCBkYXRhVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyKTsK
KyAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKKyAgICB9CisKICAg
ICB2b2lkIG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgb3IzMihpbW0sIGRlc3QsIGRlc3QpOwpAQCAtMTMzMCw2ICsxMzQyLDE2IEBAIHByaXZh
dGU6CiAgICAgfQogCiBwdWJsaWM6CisgICAgdm9pZCB0ZXN0MzIoUmVzdWx0Q29uZGl0aW9uLCBS
ZWdpc3RlcklEIHJlZywgVHJ1c3RlZEltbTMyIG1hc2spCisgICAgeworICAgICAgICB0ZXN0MzIo
cmVnLCBtYXNrKTsKKyAgICB9CisgICAgCisgICAgSnVtcCBicmFuY2goUmVzdWx0Q29uZGl0aW9u
IGNvbmQpCisgICAgeworICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQpKTsKKyAg
ICB9CisKICAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
Y21wKGxlZnQsIHJpZ2h0KTsKQEAgLTEzODgsNiArMTQxMCwxMyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBicmFuY2gzMihjb25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCByaWdodCk7CiAgICAg
fQogCisgICAgSnVtcCBicmFuY2hQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBCYXNlSW5k
ZXggbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKKyAgICB7CisgICAgICAgIC8vIHVzZSBhZGRyZXNz
VGVtcFJlZ2lzdGVyIGluY2FzZSB0aGUgYnJhbmNoMzIgd2UgY2FsbCB1c2VzIGRhdGFUZW1wUmVn
aXN0ZXIuIDotLworICAgICAgICBsb2FkMzIobGVmdCwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Cisg
ICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCByaWdodCk7
CisgICAgfQorCiAgICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgewogICAgICAgICBjb21wYXJl
MzIobGVmdCwgcmlnaHQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY5NjY5KQorKysgU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIw
MTQtMDYtMDYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBNYWtlIENTUyBqaXQgY29tcGlsZSBmb3IgYXJtdjcuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzM1OTYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzc2ppdC9GdW5jdGlvbkNhbGwuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkZ1bmN0aW9uQ2FsbDo6c3dhcEFyZ3VtZW50cyk6CisgICAgICAg
IEltcGxlbWVudGVkIGZvciBBUk1fVEhVTUIyIGFuZCByZW1vdmVkIGFsbG9jYXRvciBoYWNrLgor
ICAgICAgICAqIGNzc2ppdC9SZWdpc3RlckFsbG9jYXRvci5oOgorICAgICAgICBBZGRlZCBsaXN0
IG9mIEFSTV9USFVNQjIgZ2VuZXJhbCBwdXJwb3NlIHJlZ2lzdGVycy4KKyAgICAgICAgKFdlYkNv
cmU6OlJlZ2lzdGVyQWxsb2NhdG9yOjpyZXNlcnZlQ2FsbGVlU2F2ZWRSZWdpc3RlcnMpOgorICAg
ICAgICBDb21waWxlIGZpeCBmb3IgQUJJcyB3aXRoIG5vIGNhbGxlZSBzYXZlZCByZWdpc3RlcnMu
CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RlckFsbG9jYXRvcjo6aXNWYWxpZFJlZ2lzdGVyKToK
KyAgICAgICAgQWRkZWQgQVJNIHJlZ2lzdGVyIHJhbmdlLgorICAgICAgICAqIGNzc2ppdC9TZWxl
Y3RvckNvbXBpbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OlNl
bGVjdG9yQ29kZUdlbmVyYXRvcjo6Y29tcGlsZSk6CisgICAgICAgIFJldHVybiBDYW5ub3RDb21w
aWxlIGlmIGNvbXBpbGluZyBmYWlscyBiZWNhdXNlIG9mIGxhY2sgb2YgcmVnaXN0ZXJzLgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0ZVByb2xvZ3VlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OlNl
bGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFcGlsb2d1ZSk6CisgICAgICAgIEltcGxlbWVu
dGVkIGZvciBBUk1fVEhVTUIyLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6
U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZVNlbGVjdG9yQ2hlY2tlcik6CisgICAgICAg
IFJldHVybiBmYWxzZSBpZiB0aGUgc2VsZWN0b3IgY2Fubm90IGJlIGNvbXBpbGVkIGJlY2F1c2Ug
b2YgbGFjayBvZiByZWdpc3RlcnMuCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVy
OjpTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmFkZEZsYWdzVG9FbGVtZW50U3R5bGVGcm9tQ29udGV4
dCk6CisgICAgICAgIEFkZGVkIGNvZGUgdXNpbmcgMzItYml0IG9wZXJhdGlvbnMuICBUaGlzIHNo
b3VsZCBiZSBtb3ZlZCB0byB0aGUgbWFjcm8gYXNzZW1ibGVyLgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjptb2R1bG8pOgorICAgICAg
ICBJbXBsZW1lbnRlZCBmb3IgQVJNX1RIVU1CMiwgd2hlcmUgc2RpdiBpcyBub3QgYSB0ZW1wbGF0
ZSBpbiB0aGUgYXNzZW1ibGVyLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6
U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVzTWF0Y2hpbmcp
OgorICAgICAgICBVc2UgYWRkMzIgaW5zdGVhZCBvZiBhZGQ2NC4KKyAgICAgICAgKiBjc3NqaXQv
U3RhY2tBbGxvY2F0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0YWNrQWxsb2NhdG9yOjpzdGFj
a1VuaXRJbkJ5dGVzKToKKyAgICAgICAgQWRkZWQgQVJNX1RIVU1CMiBzdGFjayB1bml0LgorCiAy
MDE0LTA2LTA2ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBJ
bmRleGVkIGdldHRlcnMgc2hvdWxkIHJldHVybiB2YWx1ZXMgZGlyZWN0bHkgb24gdGhlIFByb3Bl
cnR5U2xvdC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9GdW5jdGlvbkNhbGwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3NqaXQvRnVuY3Rpb25DYWxsLmgJKHJldmlzaW9u
IDE2OTY2OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9GdW5jdGlvbkNhbGwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODUsMzUgKzg1LDE3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBKU0M6
Ok1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIGEgPSBtX2ZpcnN0QXJndW1lbnQ7CiAgICAgICAg
IEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgYiA9IG1fc2Vjb25kQXJndW1lbnQ7Ci0g
ICAgICAgIC8vIHg4NiBjYW4gc3dhcCB3aXRob3V0IGEgdGVtcG9yYXJ5IHJlZ2lzdGVyLiBPbiBv
dGhlciBhcmNoaXRlY3R1cmVzLCB3ZSBuZWVkIGFsbG9jYXRlIGEgdGVtcG9yYXJ5IHJlZ2lzdGVy
IHRvIHN3aXRjaCB0aGUgdmFsdWVzLgogI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCiAgICAg
ICAgIG1fYXNzZW1ibGVyLnN3YXAoYSwgYik7CiAjZWxpZiBDUFUoQVJNNjQpCiAgICAgICAgIG1f
YXNzZW1ibGVyLm1vdmUoYSwgdGVtcFJlZ2lzdGVyKTsKICAgICAgICAgbV9hc3NlbWJsZXIubW92
ZShiLCBhKTsKICAgICAgICAgbV9hc3NlbWJsZXIubW92ZSh0ZW1wUmVnaXN0ZXIsIGIpOwotI2Vs
c2UKLSAgICAgICAgaWYgKG1fcmVnaXN0ZXJBbGxvY2F0b3IuYXZhaWxhYmxlUmVnaXN0ZXJDb3Vu
dCgpKSB7Ci0gICAgICAgICAgICAvLyBVc3VhbGx5IHdlIGNhbiBqdXN0IHVzZSBhIGZyZWUgcmVn
aXN0ZXIuCi0gICAgICAgICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0
ZW1wVmFsdWUgaXMgbm90IGEgb3IgYi4KLSAgICAgICAgICAgIExvY2FsUmVnaXN0ZXIgdGVtcFZh
bHVlKG1fcmVnaXN0ZXJBbGxvY2F0b3IpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92ZShh
LCB0ZW1wVmFsdWUpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92ZShiLCBhKTsKLSAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLm1vdmUodGVtcFZhbHVlLCBiKTsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGZyZWUgcmVnaXN0ZXIsIGV2ZXJ5dGhpbmcg
c2hvdWxkIGJlIG9uIHRoZSBzdGFjayBhdCB0aGlzIHBvaW50LiBXZSBjYW4gdGFrZQotICAgICAg
ICAgICAgLy8gdGhlIGZpcnN0IG9mIHRob3NlIHNhdmVkIHJlZ2lzdGVycyBhbmQgdXNlIGl0IGFz
IGEgdGVtcG9yYXJ5LgotICAgICAgICAgICAgSlNDOjpNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJ
RCBwdXNoZWRSZWdpc3RlcjsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X3JlZ2lzdGVyQWxsb2NhdG9yLmFsbG9jYXRlZFJlZ2lzdGVycygpLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgICAgICAgICAgcHVzaGVkUmVnaXN0ZXIgPSBtX3JlZ2lzdGVyQWxsb2NhdG9yLmFsbG9j
YXRlZFJlZ2lzdGVycygpW2ldOwotICAgICAgICAgICAgICAgIGlmIChwdXNoZWRSZWdpc3RlciAh
PSBhICYmIHB1c2hlZFJlZ2lzdGVyICE9IGIpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgQVNTRVJUKHB1c2hlZFJlZ2lzdGVyICE9IGEgJiYg
cHVzaGVkUmVnaXN0ZXIgIT0gYik7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZlKGEsIHB1
c2hlZFJlZ2lzdGVyKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmUoYiwgYSk7Ci0gICAg
ICAgICAgICBtX2Fzc2VtYmxlci5tb3ZlKHB1c2hlZFJlZ2lzdGVyLCBiKTsKLSAgICAgICAgfQor
I2VsaWYgQ1BVKEFSTV9USFVNQjIpCisgICAgICAgIEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lz
dGVySUQgdGVtcFJlZ2lzdGVyID0gSlNDOjpBUk1SZWdpc3RlcnM6OmlwOworICAgICAgICBtX2Fz
c2VtYmxlci5tb3ZlKGEsIHRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmUo
YiwgYSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmUodGVtcFJlZ2lzdGVyLCBiKTsKICNlbmRp
ZgogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvY3Nzaml0L1JlZ2lzdGVyQWxsb2NhdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nzaml0L1JlZ2lzdGVyQWxsb2NhdG9y
LmgJKHJldmlzaW9uIDE2OTY2OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9SZWdpc3RlckFs
bG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1NiwxNyBAQCBzdGF0aWMgY29uc3Qg
SlNDOjpNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0CiAgICAgSlNDOjpBUk02NFJlZ2lzdGVyczo6eDE5
CiB9Owogc3RhdGljIGNvbnN0IEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgdGVtcFJl
Z2lzdGVyID0gSlNDOjpBUk02NFJlZ2lzdGVyczo6eDE1OworI2VsaWYgQ1BVKEFSTV9USFVNQjIp
CitzdGF0aWMgY29uc3QgSlNDOjpNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjYWxsZXJTYXZl
ZFJlZ2lzdGVyc1tdIHsKKyAgICBKU0M6OkFSTVJlZ2lzdGVyczo6cjAsCisgICAgSlNDOjpBUk1S
ZWdpc3RlcnM6OnIxLAorICAgIEpTQzo6QVJNUmVnaXN0ZXJzOjpyMiwKKyAgICBKU0M6OkFSTVJl
Z2lzdGVyczo6cjMsCisgICAgSlNDOjpBUk1SZWdpc3RlcnM6OnI0LAorICAgIEpTQzo6QVJNUmVn
aXN0ZXJzOjpyNSwKKyAgICBKU0M6OkFSTVJlZ2lzdGVyczo6cjYsCit9Oworc3RhdGljIGNvbnN0
IEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgY2FsbGVlU2F2ZWRSZWdpc3RlcnNbXSA9
IHsgfTsKICNlbGlmIENQVShYODZfNjQpCiBzdGF0aWMgY29uc3QgSlNDOjpNYWNyb0Fzc2VtYmxl
cjo6UmVnaXN0ZXJJRCBjYWxsZXJTYXZlZFJlZ2lzdGVyc1tdID0gewogICAgIEpTQzo6WDg2UmVn
aXN0ZXJzOjplYXgsCkBAIC03Nyw3ICs4OCwxMSBAQCBzdGF0aWMgY29uc3QgSlNDOjpNYWNyb0Fz
c2VtYmxlcjo6UmVnaXN0CiAjZWxzZQogI2Vycm9yIFJlZ2lzdGVyQWxsb2NhdG9yIGhhcyBubyBk
ZWZpbmVkIHJlZ2lzdGVycyBmb3IgdGhlIGFyY2hpdGVjdHVyZS4KICNlbmRpZgorI2lmIENQVShB
Uk1fVEhVTUIyKQorc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNhbGxlZVNhdmVkUmVnaXN0ZXJDb3Vu
dCA9IDA7CisjZWxzZQogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNhbGxlZVNhdmVkUmVnaXN0ZXJD
b3VudCA9IFdURl9BUlJBWV9MRU5HVEgoY2FsbGVlU2F2ZWRSZWdpc3RlcnMpOworI2VuZGlmCiBz
dGF0aWMgY29uc3QgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGNhbGxlZVNhdmVkUmVnaXN0ZXJD
b3VudCArIFdURl9BUlJBWV9MRU5HVEgoY2FsbGVyU2F2ZWRSZWdpc3RlcnMpOwogCiBjbGFzcyBS
ZWdpc3RlckFsbG9jYXRvciB7CkBAIC0xMTUsNyArMTMwLDcgQEAgcHVibGljOgogCiAgICAgY29u
c3QgVmVjdG9yPEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQsIGNhbGxlZVNhdmVkUmVn
aXN0ZXJDb3VudD4mIHJlc2VydmVDYWxsZWVTYXZlZFJlZ2lzdGVycyh1bnNpZ25lZCBjb3VudCkK
ICAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGNvdW50IDw9IFdURl9BUlJBWV9MRU5HVEgo
Y2FsbGVlU2F2ZWRSZWdpc3RlcnMpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY291bnQgPD0g
Y2FsbGVlU2F2ZWRSZWdpc3RlckNvdW50KTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcmVz
ZXJ2ZWRDYWxsZWVTYXZlZFJlZ2lzdGVycy5zaXplKCkpOwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICAgICAgSlNDOjpNYWNyb0Fzc2VtYmxl
cjo6UmVnaXN0ZXJJRCByZWdpc3RlcklkID0gY2FsbGVlU2F2ZWRSZWdpc3RlcnNbaV07CkBAIC0x
MzgsNiArMTUzLDggQEAgcHVibGljOgogICAgIHsKICNpZiBDUFUoQVJNNjQpCiAgICAgICAgIHJl
dHVybiByZWdpc3RlcklEID49IEpTQzo6QVJNNjRSZWdpc3RlcnM6OngwICYmIHJlZ2lzdGVySUQg
PD0gSlNDOjpBUk02NFJlZ2lzdGVyczo6eDE1OworI2VsaWYgQ1BVKEFSTV9USFVNQjIpCisgICAg
ICAgIHJldHVybiByZWdpc3RlcklEID49IEpTQzo6QVJNUmVnaXN0ZXJzOjpyMCAmJiByZWdpc3Rl
cklEIDw9IEpTQzo6QVJNUmVnaXN0ZXJzOjpyNjsKICNlbGlmIENQVShYODZfNjQpCiAgICAgICAg
IHJldHVybiByZWdpc3RlcklEID49IEpTQzo6WDg2UmVnaXN0ZXJzOjplYXggJiYgcmVnaXN0ZXJJ
RCA8PSBKU0M6Olg4NlJlZ2lzdGVyczo6cjE1OwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAJKHJldmlzaW9uIDE2OTY2OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTk4LDcgKzE5OCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IEFzc2VtYmxlcjo6UmVn
aXN0ZXJJRCBjaGVja2luZ0NvbnRleHRSZWdpc3RlcjsKICAgICBzdGF0aWMgY29uc3QgQXNzZW1i
bGVyOjpSZWdpc3RlcklEIGNhbGxGcmFtZVJlZ2lzdGVyOwogCi0gICAgdm9pZCBnZW5lcmF0ZVNl
bGVjdG9yQ2hlY2tlcigpOworICAgIGJvb2wgZ2VuZXJhdGVTZWxlY3RvckNoZWNrZXIoKTsKIAog
ICAgIC8vIEVsZW1lbnQgcmVsYXRpb25zIHRyZWUgd2Fsa2VyLgogICAgIHZvaWQgZ2VuZXJhdGVX
YWxrVG9QYXJlbnROb2RlKEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCB0YXJnZXRSZWdpc3Rlcik7CkBA
IC02OTIsNyArNjkyLDggQEAgaW5saW5lIFNlbGVjdG9yQ29tcGlsYXRpb25TdGF0dXMgU2VsZWN0
bwogICAgIHN3aXRjaCAobV9mdW5jdGlvblR5cGUpIHsKICAgICBjYXNlIEZ1bmN0aW9uVHlwZTo6
U2ltcGxlU2VsZWN0b3JDaGVja2VyOgogICAgIGNhc2UgRnVuY3Rpb25UeXBlOjpTZWxlY3RvckNo
ZWNrZXJXaXRoQ2hlY2tpbmdDb250ZXh0OgotICAgICAgICBnZW5lcmF0ZVNlbGVjdG9yQ2hlY2tl
cigpOworICAgICAgICBpZiAoIWdlbmVyYXRlU2VsZWN0b3JDaGVja2VyKCkpCisgICAgICAgICAg
ICByZXR1cm4gU2VsZWN0b3JDb21waWxhdGlvblN0YXR1czo6Q2Fubm90Q29tcGlsZTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBGdW5jdGlvblR5cGU6OkNhbm5vdE1hdGNoQW55dGhpbmc6CiAg
ICAgICAgIG1fYXNzZW1ibGVyLm1vdmUoQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMCksIHJldHVy
blJlZ2lzdGVyKTsKQEAgLTEwODgsNiArMTA4OSwxMiBAQCBpbmxpbmUgYm9vbCBTZWxlY3RvckNv
ZGVHZW5lcmF0b3I6OmdlbmVyCiAgICAgcHJvbG9ndWVSZWdpc3RlcnMuYXBwZW5kKEpTQzo6QVJN
NjRSZWdpc3RlcnM6OmZwKTsKICAgICBtX3Byb2xvZ3VlU3RhY2tSZWZlcmVuY2VzID0gbV9zdGFj
a0FsbG9jYXRvci5wdXNoKHByb2xvZ3VlUmVnaXN0ZXJzKTsKICAgICByZXR1cm4gdHJ1ZTsKKyNl
bGlmIENQVShBUk1fVEhVTUIyKQorICAgIFZlY3RvcjxKU0M6Ok1hY3JvQXNzZW1ibGVyOjpSZWdp
c3RlcklELCAyPiBwcm9sb2d1ZVJlZ2lzdGVyczsKKyAgICBwcm9sb2d1ZVJlZ2lzdGVycy5hcHBl
bmQoSlNDOjpBUk1SZWdpc3RlcnM6OmxyKTsKKyAgICBwcm9sb2d1ZVJlZ2lzdGVycy5hcHBlbmQo
SlNDOjpBUk1SZWdpc3RlcnM6OmZwKTsKKyAgICBtX3Byb2xvZ3VlU3RhY2tSZWZlcmVuY2VzID0g
bV9zdGFja0FsbG9jYXRvci5wdXNoKHByb2xvZ3VlUmVnaXN0ZXJzKTsKKyAgICByZXR1cm4gdHJ1
ZTsKICNlbGlmIENQVShYODZfNjQpICYmIENTU19TRUxFQ1RPUl9KSVRfREVCVUdHSU5HCiAgICAg
VmVjdG9yPEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQsIDE+IHByb2xvZ3VlUmVnaXN0
ZXI7CiAgICAgcHJvbG9ndWVSZWdpc3Rlci5hcHBlbmQoY2FsbEZyYW1lUmVnaXN0ZXIpOwpAQCAt
MTEwNCw2ICsxMTExLDExIEBAIGlubGluZSB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2Vu
ZXIKICAgICBwcm9sb2d1ZVJlZ2lzdGVycy5hcHBlbmQoSlNDOjpBUk02NFJlZ2lzdGVyczo6bHIp
OwogICAgIHByb2xvZ3VlUmVnaXN0ZXJzLmFwcGVuZChKU0M6OkFSTTY0UmVnaXN0ZXJzOjpmcCk7
CiAgICAgbV9zdGFja0FsbG9jYXRvci5wb3AobV9wcm9sb2d1ZVN0YWNrUmVmZXJlbmNlcywgcHJv
bG9ndWVSZWdpc3RlcnMpOworI2VsaWYgQ1BVKEFSTV9USFVNQjIpCisgICAgVmVjdG9yPEpTQzo6
TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQsIDI+IHByb2xvZ3VlUmVnaXN0ZXJzOworICAgIHBy
b2xvZ3VlUmVnaXN0ZXJzLmFwcGVuZChKU0M6OkFSTVJlZ2lzdGVyczo6bHIpOworICAgIHByb2xv
Z3VlUmVnaXN0ZXJzLmFwcGVuZChKU0M6OkFSTVJlZ2lzdGVyczo6ZnApOworICAgIG1fc3RhY2tB
bGxvY2F0b3IucG9wKG1fcHJvbG9ndWVTdGFja1JlZmVyZW5jZXMsIHByb2xvZ3VlUmVnaXN0ZXJz
KTsKICNlbGlmIENQVShYODZfNjQpICYmIENTU19TRUxFQ1RPUl9KSVRfREVCVUdHSU5HCiAgICAg
VmVjdG9yPEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQsIDE+IHByb2xvZ3VlUmVnaXN0
ZXI7CiAgICAgcHJvbG9ndWVSZWdpc3Rlci5hcHBlbmQoY2FsbEZyYW1lUmVnaXN0ZXIpOwpAQCAt
MTExMSw3ICsxMTIzLDcgQEAgaW5saW5lIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5l
cgogI2VuZGlmCiB9CiAKLXZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZVNlbGVj
dG9yQ2hlY2tlcigpCitib29sIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVTZWxlY3Rv
ckNoZWNrZXIoKQogewogICAgIGJvb2wgbmVlZHNFcGlsb2d1ZSA9IGdlbmVyYXRlUHJvbG9ndWUo
KTsKIApAQCAtMTExOSw2ICsxMTMxLDE3IEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0ZVNlbGUKICAgICBib29sIHJlc2VydmVkQ2FsbGVlU2F2ZWRSZWdpc3RlcnMgPSBmYWxz
ZTsKICAgICB1bnNpZ25lZCBhdmFpbGFibGVSZWdpc3RlckNvdW50ID0gbV9yZWdpc3RlckFsbG9j
YXRvci5hdmFpbGFibGVSZWdpc3RlckNvdW50KCk7CiAgICAgdW5zaWduZWQgbWluaW11bVJlZ2lz
dGVyQ291bnRGb3JBdHRyaWJ1dGVzID0gbWluaW11bVJlZ2lzdGVyUmVxdWlyZW1lbnRzKG1fc2Vs
ZWN0b3JGcmFnbWVudHMpOworICAgIGlmIChtaW5pbXVtUmVnaXN0ZXJDb3VudEZvckF0dHJpYnV0
ZXMgPiByZWdpc3RlckNvdW50KSB7CisjaWYgIUNQVShBUk1fVEhVTUIyKQorICAgIC8vIEFSTV9U
SFVNQjIgZG9lcyBub3QgaGF2ZSBlbm91Z2ggcmVnaXN0ZXJzIHRvIGNvbXBpbGUgY29tcGxpY2F0
ZWQgc2VsZWN0b3JzLgorICAgIC8vIENvbXBpbGluZyBzaG91bGQgYWx3YXlzIHN1Y2NlZWQgb24g
bm9uLUFSTV9USFVNQjIgQ1BVcy4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgor
I2lmIENTU19TRUxFQ1RPUl9KSVRfREVCVUdHSU5HCisgICAgICAgIGRhdGFMb2dGKCJGYWlsZWQg
dG8gY29tcGlsZSBiZWNhdXNlIGl0IHdvdWxkIGhhdmUgcmVxdWlyZWQgJXUgcmVnaXN0ZXJzXG4i
LCBtaW5pbXVtUmVnaXN0ZXJDb3VudEZvckF0dHJpYnV0ZXMpOworI2VuZGlmCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CiAjaWYgQ1NTX1NFTEVDVE9SX0pJVF9ERUJVR0dJTkcKICAgICBk
YXRhTG9nRigiQ29tcGlsaW5nIHdpdGggbWluaW11bSByZXF1aXJlZCByZWdpc3RlciBjb3VudCAl
dVxuIiwgbWluaW11bVJlZ2lzdGVyQ291bnRGb3JBdHRyaWJ1dGVzKTsKICNlbmRpZgpAQCAtMTIx
NSw2ICsxMjM4LDcgQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlU2VsZQog
ICAgICAgICAgICAgZ2VuZXJhdGVFcGlsb2d1ZSgpOwogICAgICAgICBtX2Fzc2VtYmxlci5yZXQo
KTsKICAgICB9CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBzdGF0aWMgaW5saW5lIEFzc2VtYmxl
cjo6SnVtcCB0ZXN0SXNFbGVtZW50RmxhZ09uTm9kZShBc3NlbWJsZXI6OlJlc3VsdENvbmRpdGlv
biBjb25kaXRpb24sIEFzc2VtYmxlciYgYXNzZW1ibGVyLCBBc3NlbWJsZXI6OlJlZ2lzdGVySUQg
bm9kZUFkZHJlc3MpCkBAIC0xMzY0LDEyICsxMzg4LDI1IEBAIHZvaWQgU2VsZWN0b3JDb2RlR2Vu
ZXJhdG9yOjphZGRGbGFnc1RvRWwKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbG9vayBpbnRv
IGRvaW5nIHNvbWV0aGluZyBzbWFydCBpbiBNYWNyb0Fzc2VtYmxlciBpbnN0ZWFkLgogICAgIExv
Y2FsUmVnaXN0ZXIgZmxhZ3MobV9yZWdpc3RlckFsbG9jYXRvcik7CisgICAgTG9jYWxSZWdpc3Rl
ciBpc0ZpcnN0Q2hpbGRTdGF0ZUZsYWdJbW1lZGlhdGUobV9yZWdpc3RlckFsbG9jYXRvcik7CiAg
ICAgQXNzZW1ibGVyOjpBZGRyZXNzIGZsYWdBZGRyZXNzKGNoaWxkU3R5bGUsIFJlbmRlclN0eWxl
Ojpub25pbmhlcml0ZWRGbGFnc01lbW9yeU9mZnNldCgpICsgUmVuZGVyU3R5bGU6Ok5vbkluaGVy
aXRlZEZsYWdzOjpmbGFnc01lbW9yeU9mZnNldCgpKTsKKyAgICBBc3NlbWJsZXI6OkFkZHJlc3Mg
ZmxhZ0xvd0FkZHJlc3MoY2hpbGRTdHlsZSwgUmVuZGVyU3R5bGU6Om5vbmluaGVyaXRlZEZsYWdz
TWVtb3J5T2Zmc2V0KCkgKyBSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OmZsYWdzTWVt
b3J5T2Zmc2V0KCkgKyA0KTsKKyNpZiBDUFUoQVJNX1RIVU1CMikKKyAgICAvLyBTaG91bGQgdXNl
IHNhbWUgYXMgb3RoZXIgYXJjaGl0ZWN0dXJlcywgdGhpcyBpcyB0byBnZXQgaXQgdG8gY29tcGls
ZSBhbmQgcnVuLgorICAgIG1fYXNzZW1ibGVyLmxvYWQzMihmbGFnQWRkcmVzcywgZmxhZ3MpOwor
ICAgIG1fYXNzZW1ibGVyLm1vdmUoQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIobmV3RmxhZyA+PiAz
MiksIGlzRmlyc3RDaGlsZFN0YXRlRmxhZ0ltbWVkaWF0ZSk7CisgICAgbV9hc3NlbWJsZXIub3Iz
Mihpc0ZpcnN0Q2hpbGRTdGF0ZUZsYWdJbW1lZGlhdGUsIGZsYWdzKTsKKyAgICBtX2Fzc2VtYmxl
ci5zdG9yZTMyKGZsYWdzLCBmbGFnQWRkcmVzcyk7CisgICAgbV9hc3NlbWJsZXIubG9hZDMyKGZs
YWdMb3dBZGRyZXNzLCBmbGFncyk7CisgICAgbV9hc3NlbWJsZXIubW92ZShBc3NlbWJsZXI6OlRy
dXN0ZWRJbW0zMihuZXdGbGFnICYgMHhGRkZGRkZGRiksIGlzRmlyc3RDaGlsZFN0YXRlRmxhZ0lt
bWVkaWF0ZSk7CisgICAgbV9hc3NlbWJsZXIub3IzMihpc0ZpcnN0Q2hpbGRTdGF0ZUZsYWdJbW1l
ZGlhdGUsIGZsYWdzKTsKKyAgICBtX2Fzc2VtYmxlci5zdG9yZTMyKGZsYWdzLCBmbGFnTG93QWRk
cmVzcyk7CisjZWxzZQogICAgIG1fYXNzZW1ibGVyLmxvYWQ2NChmbGFnQWRkcmVzcywgZmxhZ3Mp
OwotICAgIExvY2FsUmVnaXN0ZXIgaXNGaXJzdENoaWxkU3RhdGVGbGFnSW1tZWRpYXRlKG1fcmVn
aXN0ZXJBbGxvY2F0b3IpOwogICAgIG1fYXNzZW1ibGVyLm1vdmUoQXNzZW1ibGVyOjpUcnVzdGVk
SW1tNjQobmV3RmxhZyksIGlzRmlyc3RDaGlsZFN0YXRlRmxhZ0ltbWVkaWF0ZSk7CiAgICAgbV9h
c3NlbWJsZXIub3I2NChpc0ZpcnN0Q2hpbGRTdGF0ZUZsYWdJbW1lZGlhdGUsIGZsYWdzKTsKICAg
ICBtX2Fzc2VtYmxlci5zdG9yZTY0KGZsYWdzLCBmbGFnQWRkcmVzcyk7CisjZW5kaWYKIH0KIAog
QXNzZW1ibGVyOjpKdW1wTGlzdCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6Omp1bXBJZk5vUHJldmlv
dXNBZGphY2VudEVsZW1lbnQoKQpAQCAtMTQyOCwxMiArMTQ2NSwxNiBAQCB2b2lkIFNlbGVjdG9y
Q29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVTcGVjCiBBc3NlbWJsZXI6Okp1bXAgU2VsZWN0b3JDb2Rl
R2VuZXJhdG9yOjptb2R1bG8oQXNzZW1ibGVyOjpSZXN1bHRDb25kaXRpb24gY29uZGl0aW9uLCBB
c3NlbWJsZXI6OlJlZ2lzdGVySUQgaW5wdXREaXZpZGVuZCwgaW50IGRpdmlzb3IpCiB7CiAgICAg
UkVMRUFTRV9BU1NFUlQoZGl2aXNvcik7Ci0jaWYgQ1BVKEFSTTY0KQorI2lmIENQVShBUk02NCkg
fHwgQ1BVKEFSTV9USFVNQjIpCiAgICAgTG9jYWxSZWdpc3RlciBkaXZpc29yUmVnaXN0ZXIobV9y
ZWdpc3RlckFsbG9jYXRvcik7CiAgICAgbV9hc3NlbWJsZXIubW92ZShBc3NlbWJsZXI6OlRydXN0
ZWRJbW0zMihkaXZpc29yKSwgZGl2aXNvclJlZ2lzdGVyKTsKIAogICAgIExvY2FsUmVnaXN0ZXIg
cmVzdWx0UmVnaXN0ZXIobV9yZWdpc3RlckFsbG9jYXRvcik7CisjaWYgQ1BVKEFSTV9USFVNQjIp
CisgICAgbV9hc3NlbWJsZXIubV9hc3NlbWJsZXIuc2RpdihyZXN1bHRSZWdpc3RlciwgaW5wdXRE
aXZpZGVuZCwgZGl2aXNvclJlZ2lzdGVyKTsKKyNlbHNlCiAgICAgbV9hc3NlbWJsZXIubV9hc3Nl
bWJsZXIuc2RpdjwzMj4ocmVzdWx0UmVnaXN0ZXIsIGlucHV0RGl2aWRlbmQsIGRpdmlzb3JSZWdp
c3Rlcik7CisjZW5kaWYKICAgICBtX2Fzc2VtYmxlci5tdWwzMihkaXZpc29yUmVnaXN0ZXIsIHJl
c3VsdFJlZ2lzdGVyKTsKICAgICByZXR1cm4gbV9hc3NlbWJsZXIuYnJhbmNoU3ViMzIoY29uZGl0
aW9uLCBpbnB1dERpdmlkZW5kLCByZXN1bHRSZWdpc3RlciwgcmVzdWx0UmVnaXN0ZXIpOwogI2Vs
aWYgQ1BVKFg4Nl82NCkKQEAgLTE4MTcsNyArMTg1OCwxMiBAQCB2b2lkIFNlbGVjdG9yQ29kZUdl
bmVyYXRvcjo6Z2VuZXJhdGVFbGVtCiAgICAgewogICAgICAgICBpc1NoYXJlYWJsZUVsZW1lbnRE
YXRhLmxpbmsoJm1fYXNzZW1ibGVyKTsKICAgICAgICAgbV9hc3NlbWJsZXIudXJzaGlmdDMyKGVs
ZW1lbnREYXRhQXJyYXlTaXplQW5kRmxhZ3MsIEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEVsZW1l
bnREYXRhOjphcnJheVNpemVPZmZzZXQoKSksIGF0dHJpYnV0ZUFycmF5TGVuZ3RoKTsKKyNpZiBD
UFUoQVJNX1RIVU1CMikKKyAgICAgICAgLy8gSSdtIHJlYWxseSBub3Qgc3VyZSB3aGF0IHRoaXMg
aXMgZm9yLCBidXQgdGhlcmUncyBubyBhZGQ2NCBpbiB0aGUgYXJtdjcgYXNzZW1ibGVyIDopCisg
ICAgICAgIG1fYXNzZW1ibGVyLmFkZDMyKEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKFNoYXJlYWJs
ZUVsZW1lbnREYXRhOjphdHRyaWJ1dGVBcnJheU1lbW9yeU9mZnNldCgpKSwgZWxlbWVudERhdGFB
ZGRyZXNzLCBhdHRyaWJ1dGVBcnJheVBvaW50ZXIpOworI2Vsc2UKICAgICAgICAgbV9hc3NlbWJs
ZXIuYWRkNjQoQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoU2hhcmVhYmxlRWxlbWVudERhdGE6OmF0
dHJpYnV0ZUFycmF5TWVtb3J5T2Zmc2V0KCkpLCBlbGVtZW50RGF0YUFkZHJlc3MsIGF0dHJpYnV0
ZUFycmF5UG9pbnRlcik7CisjZW5kaWYKICAgICB9CiAKICAgICBza2lwU2hhcmVhYmxlLmxpbmso
Jm1fYXNzZW1ibGVyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TdGFja0FsbG9jYXRv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TdGFja0FsbG9jYXRvci5o
CShyZXZpc2lvbiAxNjk2NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3NqaXQvU3RhY2tBbGxvY2F0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDcgKzIxMiwxMiBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIHN0YXRpYyB1bnNpZ25lZCBzdGFja1VuaXRJbkJ5dGVzKCkKICAgICB7CisjaWYgQ1BV
KEFSTV9USFVNQjIpICYmIFBMQVRGT1JNKElPUykKKyAgICAgICAgLy8gVGhpcyByZWFsbHkgb3Vn
aHQgdG8gZ28gaW4gdGhlIG1hY3JvIGFzc2VtYmxlciwgdG9vLgorICAgICAgICByZXR1cm4gNDsK
KyNlbHNlCiAgICAgICAgIHJldHVybiBKU0M6Ok1hY3JvQXNzZW1ibGVyOjpwdXNoVG9TYXZlQnl0
ZU9mZnNldCgpOworI2VuZGlmCiAgICAgfQogCiAgICAgdm9pZCByZXNldCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232713</attachid>
            <date>2014-06-09 10:54:15 -0700</date>
            <delta_ts>2014-06-13 10:58:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133596-20140609105350.patch</filename>
            <type>text/plain</type>
            <size>16784</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY5NjY5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDE0LTA2LTA2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgTWFrZSBjc3Mgaml0IGNvbXBpbGUgZm9yIGFybXY3LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzNTk2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuaDoKKyAgICAgICAgVXNlIGJyYW5jaFB0ciBvbiBBUk1fVEhVTUIyLgorICAgICAgICAq
IGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyQVJNdjc6OmFkZFB0ck5vRmxhZ3MpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTXY3OjpvcjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6dGVzdDMy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6YnJhbmNoKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6YnJhbmNoUHRyKToKKyAgICAgICAgQWRkZWQgbWFj
cm9zIG5lY2Vzc2FyeSBmb3IgY3NzIGppdC4KKwogMjAxNC0wNi0wNiAgQW5kcmVhcyBLbGluZyAg
PGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgSW5kZXhlZCBnZXR0ZXJzIHNob3VsZCByZXR1
cm4gdmFsdWVzIGRpcmVjdGx5IG9uIHRoZSBQcm9wZXJ0eVNsb3QuCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAx
Njk2NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTExNyw5ICsxMTcsOSBAQCBwdWJsaWM6CiAgICAgdXNpbmcg
TWFjcm9Bc3NlbWJsZXJCYXNlOjphbmQzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6
OmJyYW5jaEFkZDMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoTXVsMzI7
Ci0jaWYgQ1BVKEFSTTY0KSB8fCBDUFUoWDg2XzY0KQorI2lmIENQVShBUk02NCkgfHwgQ1BVKEFS
TV9USFVNQjIpIHx8IENQVShYODZfNjQpCiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpi
cmFuY2hQdHI7Ci0jZW5kaWYgLy8gQ1BVKFg4Nl82NCkKKyNlbmRpZgogICAgIHVzaW5nIE1hY3Jv
QXNzZW1ibGVyQmFzZTo6YnJhbmNoU3ViMzI7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNl
Ojpsc2hpZnQzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6Om9yMzI7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNdjcuaAkocmV2aXNpb24gMTY5NjY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyNiw2ICsyMjYs
MTEgQEAgcHVibGljOgogICAgICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3Mu
bV9wdHIpOwogICAgIH0KIAorICAgIHZvaWQgYWRkUHRyTm9GbGFncyhUcnVzdGVkSW1tMzIgaW1t
LCBSZWdpc3RlcklEIHNyY0Rlc3QpCisgICAgeworICAgICAgICBhZGQzMihpbW0sIHNyY0Rlc3Qp
OworICAgIH0KKyAgICAKICAgICB2b2lkIGFkZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRl
QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJl
c3MubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKQEAgLTMzNyw2ICszNDIsMTMgQEAgcHVi
bGljOgogICAgICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3NUZW1wUmVnaXN0
ZXIpOwogICAgIH0KIAorICAgIHZvaWQgb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBsb2FkMzIoYWRkcmVzcywgZGF0YVRlbXBSZWdpc3Rlcik7
CisgICAgICAgIG9yMzIoaW1tLCBkYXRhVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyKTsK
KyAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKKyAgICB9CisKICAg
ICB2b2lkIG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgb3IzMihpbW0sIGRlc3QsIGRlc3QpOwpAQCAtMTMzMCw2ICsxMzQyLDE2IEBAIHByaXZh
dGU6CiAgICAgfQogCiBwdWJsaWM6CisgICAgdm9pZCB0ZXN0MzIoUmVzdWx0Q29uZGl0aW9uLCBS
ZWdpc3RlcklEIHJlZywgVHJ1c3RlZEltbTMyIG1hc2spCisgICAgeworICAgICAgICB0ZXN0MzIo
cmVnLCBtYXNrKTsKKyAgICB9CisgICAgCisgICAgSnVtcCBicmFuY2goUmVzdWx0Q29uZGl0aW9u
IGNvbmQpCisgICAgeworICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQpKTsKKyAg
ICB9CisKICAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
Y21wKGxlZnQsIHJpZ2h0KTsKQEAgLTEzODgsNiArMTQxMCwxMyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBicmFuY2gzMihjb25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCByaWdodCk7CiAgICAg
fQogCisgICAgSnVtcCBicmFuY2hQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBCYXNlSW5k
ZXggbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKKyAgICB7CisgICAgICAgIC8vIHVzZSBhZGRyZXNz
VGVtcFJlZ2lzdGVyIGluY2FzZSB0aGUgYnJhbmNoMzIgd2UgY2FsbCB1c2VzIGRhdGFUZW1wUmVn
aXN0ZXIuIDotLworICAgICAgICBsb2FkMzIobGVmdCwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Cisg
ICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCByaWdodCk7
CisgICAgfQorCiAgICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgewogICAgICAgICBjb21wYXJl
MzIobGVmdCwgcmlnaHQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY5NjY5KQorKysgU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIw
MTQtMDYtMDYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBNYWtlIENTUyBqaXQgY29tcGlsZSBmb3IgYXJtdjcuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzM1OTYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzc2ppdC9GdW5jdGlvbkNhbGwuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkZ1bmN0aW9uQ2FsbDo6c3dhcEFyZ3VtZW50cyk6CisgICAgICAg
IEltcGxlbWVudGVkIGZvciBBUk1fVEhVTUIyIGFuZCByZW1vdmVkIGFsbG9jYXRvciBoYWNrLgor
ICAgICAgICAqIGNzc2ppdC9SZWdpc3RlckFsbG9jYXRvci5oOgorICAgICAgICBBZGRlZCBsaXN0
IG9mIEFSTV9USFVNQjIgZ2VuZXJhbCBwdXJwb3NlIHJlZ2lzdGVycy4KKyAgICAgICAgKFdlYkNv
cmU6OlJlZ2lzdGVyQWxsb2NhdG9yOjpyZXNlcnZlQ2FsbGVlU2F2ZWRSZWdpc3RlcnMpOgorICAg
ICAgICBDb21waWxlIGZpeCBmb3IgQUJJcyB3aXRoIG5vIGNhbGxlZSBzYXZlZCByZWdpc3RlcnMu
CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RlckFsbG9jYXRvcjo6aXNWYWxpZFJlZ2lzdGVyKToK
KyAgICAgICAgQWRkZWQgQVJNIHJlZ2lzdGVyIHJhbmdlLgorICAgICAgICAqIGNzc2ppdC9TZWxl
Y3RvckNvbXBpbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OlNl
bGVjdG9yQ29kZUdlbmVyYXRvcjo6Y29tcGlsZSk6CisgICAgICAgIFJldHVybiBDYW5ub3RDb21w
aWxlIGlmIGNvbXBpbGluZyBmYWlscyBiZWNhdXNlIG9mIGxhY2sgb2YgcmVnaXN0ZXJzLgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0ZVByb2xvZ3VlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OlNl
bGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFcGlsb2d1ZSk6CisgICAgICAgIEltcGxlbWVu
dGVkIGZvciBBUk1fVEhVTUIyLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6
U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZVNlbGVjdG9yQ2hlY2tlcik6CisgICAgICAg
IFJldHVybiBmYWxzZSBpZiB0aGUgc2VsZWN0b3IgY2Fubm90IGJlIGNvbXBpbGVkIGJlY2F1c2Ug
b2YgbGFjayBvZiByZWdpc3RlcnMuCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVy
OjpTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmFkZEZsYWdzVG9FbGVtZW50U3R5bGVGcm9tQ29udGV4
dCk6CisgICAgICAgIEFkZGVkIGNvZGUgdXNpbmcgMzItYml0IG9wZXJhdGlvbnMuICBUaGlzIHNo
b3VsZCBiZSBtb3ZlZCB0byB0aGUgbWFjcm8gYXNzZW1ibGVyLgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjptb2R1bG8pOgorICAgICAg
ICBJbXBsZW1lbnRlZCBmb3IgQVJNX1RIVU1CMiwgd2hlcmUgc2RpdiBpcyBub3QgYSB0ZW1wbGF0
ZSBpbiB0aGUgYXNzZW1ibGVyLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6
U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVzTWF0Y2hpbmcp
OgorICAgICAgICBVc2UgYWRkUHRyIGluc3RlYWQgb2YgYWRkNjQuCisKIDIwMTQtMDYtMDYgIEFu
ZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEluZGV4ZWQgZ2V0dGVy
cyBzaG91bGQgcmV0dXJuIHZhbHVlcyBkaXJlY3RseSBvbiB0aGUgUHJvcGVydHlTbG90LgpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3Nzaml0L0Z1bmN0aW9uQ2FsbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzc2ppdC9GdW5jdGlvbkNhbGwuaAkocmV2aXNpb24gMTY5NjY5KQorKysg
U291cmNlL1dlYkNvcmUvY3Nzaml0L0Z1bmN0aW9uQ2FsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC04
NSwzNSArODUsMTcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEpTQzo6TWFjcm9Bc3NlbWJs
ZXI6OlJlZ2lzdGVySUQgYSA9IG1fZmlyc3RBcmd1bWVudDsKICAgICAgICAgSlNDOjpNYWNyb0Fz
c2VtYmxlcjo6UmVnaXN0ZXJJRCBiID0gbV9zZWNvbmRBcmd1bWVudDsKLSAgICAgICAgLy8geDg2
IGNhbiBzd2FwIHdpdGhvdXQgYSB0ZW1wb3JhcnkgcmVnaXN0ZXIuIE9uIG90aGVyIGFyY2hpdGVj
dHVyZXMsIHdlIG5lZWQgYWxsb2NhdGUgYSB0ZW1wb3JhcnkgcmVnaXN0ZXIgdG8gc3dpdGNoIHRo
ZSB2YWx1ZXMuCiAjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKICAgICAgICAgbV9hc3NlbWJs
ZXIuc3dhcChhLCBiKTsKICNlbGlmIENQVShBUk02NCkKICAgICAgICAgbV9hc3NlbWJsZXIubW92
ZShhLCB0ZW1wUmVnaXN0ZXIpOwogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZlKGIsIGEpOwogICAg
ICAgICBtX2Fzc2VtYmxlci5tb3ZlKHRlbXBSZWdpc3RlciwgYik7Ci0jZWxzZQotICAgICAgICBp
ZiAobV9yZWdpc3RlckFsbG9jYXRvci5hdmFpbGFibGVSZWdpc3RlckNvdW50KCkpIHsKLSAgICAg
ICAgICAgIC8vIFVzdWFsbHkgd2UgY2FuIGp1c3QgdXNlIGEgZnJlZSByZWdpc3Rlci4KLSAgICAg
ICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRlbXBWYWx1ZSBpcyBu
b3QgYSBvciBiLgotICAgICAgICAgICAgTG9jYWxSZWdpc3RlciB0ZW1wVmFsdWUobV9yZWdpc3Rl
ckFsbG9jYXRvcik7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZlKGEsIHRlbXBWYWx1ZSk7
Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZlKGIsIGEpOwotICAgICAgICAgICAgbV9hc3Nl
bWJsZXIubW92ZSh0ZW1wVmFsdWUsIGIpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
Ly8gSWYgdGhlcmUgaXMgbm8gZnJlZSByZWdpc3RlciwgZXZlcnl0aGluZyBzaG91bGQgYmUgb24g
dGhlIHN0YWNrIGF0IHRoaXMgcG9pbnQuIFdlIGNhbiB0YWtlCi0gICAgICAgICAgICAvLyB0aGUg
Zmlyc3Qgb2YgdGhvc2Ugc2F2ZWQgcmVnaXN0ZXJzIGFuZCB1c2UgaXQgYXMgYSB0ZW1wb3Jhcnku
Ci0gICAgICAgICAgICBKU0M6Ok1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIHB1c2hlZFJlZ2lz
dGVyOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcmVnaXN0ZXJBbGxv
Y2F0b3IuYWxsb2NhdGVkUmVnaXN0ZXJzKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAg
ICBwdXNoZWRSZWdpc3RlciA9IG1fcmVnaXN0ZXJBbGxvY2F0b3IuYWxsb2NhdGVkUmVnaXN0ZXJz
KClbaV07Ci0gICAgICAgICAgICAgICAgaWYgKHB1c2hlZFJlZ2lzdGVyICE9IGEgJiYgcHVzaGVk
UmVnaXN0ZXIgIT0gYikKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBBU1NFUlQocHVzaGVkUmVnaXN0ZXIgIT0gYSAmJiBwdXNoZWRSZWdpc3Rl
ciAhPSBiKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmUoYSwgcHVzaGVkUmVnaXN0ZXIp
OwotICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92ZShiLCBhKTsKLSAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLm1vdmUocHVzaGVkUmVnaXN0ZXIsIGIpOwotICAgICAgICB9CisjZWxpZiBDUFUoQVJN
X1RIVU1CMikKKyAgICAgICAgSlNDOjpNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCB0ZW1wUmVn
aXN0ZXIgPSBKU0M6OkFSTVJlZ2lzdGVyczo6aXA7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmUo
YSwgdGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92ZShiLCBhKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubW92ZSh0ZW1wUmVnaXN0ZXIsIGIpOwogI2VuZGlmCiAgICAgfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3NqaXQvUmVnaXN0ZXJBbGxvY2F0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3NqaXQvUmVnaXN0ZXJBbGxvY2F0b3IuaAkocmV2aXNpb24g
MTY5NjY5KQorKysgU291cmNlL1dlYkNvcmUvY3Nzaml0L1JlZ2lzdGVyQWxsb2NhdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDE3IEBAIHN0YXRpYyBjb25zdCBKU0M6Ok1hY3JvQXNz
ZW1ibGVyOjpSZWdpc3QKICAgICBKU0M6OkFSTTY0UmVnaXN0ZXJzOjp4MTkKIH07CiBzdGF0aWMg
Y29uc3QgSlNDOjpNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCB0ZW1wUmVnaXN0ZXIgPSBKU0M6
OkFSTTY0UmVnaXN0ZXJzOjp4MTU7CisjZWxpZiBDUFUoQVJNX1RIVU1CMikKK3N0YXRpYyBjb25z
dCBKU0M6Ok1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIGNhbGxlclNhdmVkUmVnaXN0ZXJzW10g
eworICAgIEpTQzo6QVJNUmVnaXN0ZXJzOjpyMCwKKyAgICBKU0M6OkFSTVJlZ2lzdGVyczo6cjEs
CisgICAgSlNDOjpBUk1SZWdpc3RlcnM6OnIyLAorICAgIEpTQzo6QVJNUmVnaXN0ZXJzOjpyMywK
KyAgICBKU0M6OkFSTVJlZ2lzdGVyczo6cjQsCisgICAgSlNDOjpBUk1SZWdpc3RlcnM6OnI1LAor
ICAgIEpTQzo6QVJNUmVnaXN0ZXJzOjpyNiwKK307CitzdGF0aWMgY29uc3QgSlNDOjpNYWNyb0Fz
c2VtYmxlcjo6UmVnaXN0ZXJJRCBjYWxsZWVTYXZlZFJlZ2lzdGVyc1tdID0geyB9OwogI2VsaWYg
Q1BVKFg4Nl82NCkKIHN0YXRpYyBjb25zdCBKU0M6Ok1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklE
IGNhbGxlclNhdmVkUmVnaXN0ZXJzW10gPSB7CiAgICAgSlNDOjpYODZSZWdpc3RlcnM6OmVheCwK
QEAgLTc3LDcgKzg4LDExIEBAIHN0YXRpYyBjb25zdCBKU0M6Ok1hY3JvQXNzZW1ibGVyOjpSZWdp
c3QKICNlbHNlCiAjZXJyb3IgUmVnaXN0ZXJBbGxvY2F0b3IgaGFzIG5vIGRlZmluZWQgcmVnaXN0
ZXJzIGZvciB0aGUgYXJjaGl0ZWN0dXJlLgogI2VuZGlmCisjaWYgQ1BVKEFSTV9USFVNQjIpCitz
dGF0aWMgY29uc3QgdW5zaWduZWQgY2FsbGVlU2F2ZWRSZWdpc3RlckNvdW50ID0gMDsKKyNlbHNl
CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2FsbGVlU2F2ZWRSZWdpc3RlckNvdW50ID0gV1RGX0FS
UkFZX0xFTkdUSChjYWxsZWVTYXZlZFJlZ2lzdGVycyk7CisjZW5kaWYKIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZWRSZWdpc3RlckNvdW50ICsgV1RGX0FS
UkFZX0xFTkdUSChjYWxsZXJTYXZlZFJlZ2lzdGVycyk7CiAKIGNsYXNzIFJlZ2lzdGVyQWxsb2Nh
dG9yIHsKQEAgLTExNSw3ICsxMzAsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBWZWN0b3I8SlND
OjpNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCwgY2FsbGVlU2F2ZWRSZWdpc3RlckNvdW50PiYg
cmVzZXJ2ZUNhbGxlZVNhdmVkUmVnaXN0ZXJzKHVuc2lnbmVkIGNvdW50KQogICAgIHsKLSAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoY291bnQgPD0gV1RGX0FSUkFZX0xFTkdUSChjYWxsZWVTYXZlZFJl
Z2lzdGVycykpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChjb3VudCA8PSBjYWxsZWVTYXZlZFJl
Z2lzdGVyQ291bnQpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9yZXNlcnZlZENhbGxlZVNh
dmVkUmVnaXN0ZXJzLnNpemUoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBj
b3VudDsgKytpKSB7CiAgICAgICAgICAgICBKU0M6Ok1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklE
IHJlZ2lzdGVySWQgPSBjYWxsZWVTYXZlZFJlZ2lzdGVyc1tpXTsKQEAgLTEzOCw2ICsxNTMsOCBA
QCBwdWJsaWM6CiAgICAgewogI2lmIENQVShBUk02NCkKICAgICAgICAgcmV0dXJuIHJlZ2lzdGVy
SUQgPj0gSlNDOjpBUk02NFJlZ2lzdGVyczo6eDAgJiYgcmVnaXN0ZXJJRCA8PSBKU0M6OkFSTTY0
UmVnaXN0ZXJzOjp4MTU7CisjZWxpZiBDUFUoQVJNX1RIVU1CMikKKyAgICAgICAgcmV0dXJuIHJl
Z2lzdGVySUQgPj0gSlNDOjpBUk1SZWdpc3RlcnM6OnIwICYmIHJlZ2lzdGVySUQgPD0gSlNDOjpB
Uk1SZWdpc3RlcnM6OnI2OwogI2VsaWYgQ1BVKFg4Nl82NCkKICAgICAgICAgcmV0dXJuIHJlZ2lz
dGVySUQgPj0gSlNDOjpYODZSZWdpc3RlcnM6OmVheCAmJiByZWdpc3RlcklEIDw9IEpTQzo6WDg2
UmVnaXN0ZXJzOjpyMTU7CiAjZWxzZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVj
dG9yQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxl
Y3RvckNvbXBpbGVyLmNwcAkocmV2aXNpb24gMTY5NjY5KQorKysgU291cmNlL1dlYkNvcmUvY3Nz
aml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsNyArMTk4LDcg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgQXNzZW1ibGVyOjpSZWdpc3RlcklEIGNoZWNr
aW5nQ29udGV4dFJlZ2lzdGVyOwogICAgIHN0YXRpYyBjb25zdCBBc3NlbWJsZXI6OlJlZ2lzdGVy
SUQgY2FsbEZyYW1lUmVnaXN0ZXI7CiAKLSAgICB2b2lkIGdlbmVyYXRlU2VsZWN0b3JDaGVja2Vy
KCk7CisgICAgYm9vbCBnZW5lcmF0ZVNlbGVjdG9yQ2hlY2tlcigpOwogCiAgICAgLy8gRWxlbWVu
dCByZWxhdGlvbnMgdHJlZSB3YWxrZXIuCiAgICAgdm9pZCBnZW5lcmF0ZVdhbGtUb1BhcmVudE5v
ZGUoQXNzZW1ibGVyOjpSZWdpc3RlcklEIHRhcmdldFJlZ2lzdGVyKTsKQEAgLTY5Miw3ICs2OTIs
OCBAQCBpbmxpbmUgU2VsZWN0b3JDb21waWxhdGlvblN0YXR1cyBTZWxlY3RvCiAgICAgc3dpdGNo
IChtX2Z1bmN0aW9uVHlwZSkgewogICAgIGNhc2UgRnVuY3Rpb25UeXBlOjpTaW1wbGVTZWxlY3Rv
ckNoZWNrZXI6CiAgICAgY2FzZSBGdW5jdGlvblR5cGU6OlNlbGVjdG9yQ2hlY2tlcldpdGhDaGVj
a2luZ0NvbnRleHQ6Ci0gICAgICAgIGdlbmVyYXRlU2VsZWN0b3JDaGVja2VyKCk7CisgICAgICAg
IGlmICghZ2VuZXJhdGVTZWxlY3RvckNoZWNrZXIoKSkKKyAgICAgICAgICAgIHJldHVybiBTZWxl
Y3RvckNvbXBpbGF0aW9uU3RhdHVzOjpDYW5ub3RDb21waWxlOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEZ1bmN0aW9uVHlwZTo6Q2Fubm90TWF0Y2hBbnl0aGluZzoKICAgICAgICAgbV9hc3Nl
bWJsZXIubW92ZShBc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigwKSwgcmV0dXJuUmVnaXN0ZXIpOwpA
QCAtMTA4OCw2ICsxMDg5LDEyIEBAIGlubGluZSBib29sIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6
Z2VuZXIKICAgICBwcm9sb2d1ZVJlZ2lzdGVycy5hcHBlbmQoSlNDOjpBUk02NFJlZ2lzdGVyczo6
ZnApOwogICAgIG1fcHJvbG9ndWVTdGFja1JlZmVyZW5jZXMgPSBtX3N0YWNrQWxsb2NhdG9yLnB1
c2gocHJvbG9ndWVSZWdpc3RlcnMpOwogICAgIHJldHVybiB0cnVlOworI2VsaWYgQ1BVKEFSTV9U
SFVNQjIpCisgICAgVmVjdG9yPEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQsIDI+IHBy
b2xvZ3VlUmVnaXN0ZXJzOworICAgIHByb2xvZ3VlUmVnaXN0ZXJzLmFwcGVuZChKU0M6OkFSTVJl
Z2lzdGVyczo6bHIpOworICAgIHByb2xvZ3VlUmVnaXN0ZXJzLmFwcGVuZChKU0M6OkFSTVJlZ2lz
dGVyczo6ZnApOworICAgIG1fcHJvbG9ndWVTdGFja1JlZmVyZW5jZXMgPSBtX3N0YWNrQWxsb2Nh
dG9yLnB1c2gocHJvbG9ndWVSZWdpc3RlcnMpOworICAgIHJldHVybiB0cnVlOwogI2VsaWYgQ1BV
KFg4Nl82NCkgJiYgQ1NTX1NFTEVDVE9SX0pJVF9ERUJVR0dJTkcKICAgICBWZWN0b3I8SlNDOjpN
YWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCwgMT4gcHJvbG9ndWVSZWdpc3RlcjsKICAgICBwcm9s
b2d1ZVJlZ2lzdGVyLmFwcGVuZChjYWxsRnJhbWVSZWdpc3Rlcik7CkBAIC0xMTA0LDYgKzExMTEs
MTEgQEAgaW5saW5lIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcgogICAgIHByb2xv
Z3VlUmVnaXN0ZXJzLmFwcGVuZChKU0M6OkFSTTY0UmVnaXN0ZXJzOjpscik7CiAgICAgcHJvbG9n
dWVSZWdpc3RlcnMuYXBwZW5kKEpTQzo6QVJNNjRSZWdpc3RlcnM6OmZwKTsKICAgICBtX3N0YWNr
QWxsb2NhdG9yLnBvcChtX3Byb2xvZ3VlU3RhY2tSZWZlcmVuY2VzLCBwcm9sb2d1ZVJlZ2lzdGVy
cyk7CisjZWxpZiBDUFUoQVJNX1RIVU1CMikKKyAgICBWZWN0b3I8SlNDOjpNYWNyb0Fzc2VtYmxl
cjo6UmVnaXN0ZXJJRCwgMj4gcHJvbG9ndWVSZWdpc3RlcnM7CisgICAgcHJvbG9ndWVSZWdpc3Rl
cnMuYXBwZW5kKEpTQzo6QVJNUmVnaXN0ZXJzOjpscik7CisgICAgcHJvbG9ndWVSZWdpc3RlcnMu
YXBwZW5kKEpTQzo6QVJNUmVnaXN0ZXJzOjpmcCk7CisgICAgbV9zdGFja0FsbG9jYXRvci5wb3Ao
bV9wcm9sb2d1ZVN0YWNrUmVmZXJlbmNlcywgcHJvbG9ndWVSZWdpc3RlcnMpOwogI2VsaWYgQ1BV
KFg4Nl82NCkgJiYgQ1NTX1NFTEVDVE9SX0pJVF9ERUJVR0dJTkcKICAgICBWZWN0b3I8SlNDOjpN
YWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCwgMT4gcHJvbG9ndWVSZWdpc3RlcjsKICAgICBwcm9s
b2d1ZVJlZ2lzdGVyLmFwcGVuZChjYWxsRnJhbWVSZWdpc3Rlcik7CkBAIC0xMTExLDcgKzExMjMs
NyBAQCBpbmxpbmUgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyCiAjZW5kaWYKIH0K
IAotdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlU2VsZWN0b3JDaGVja2VyKCkK
K2Jvb2wgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZVNlbGVjdG9yQ2hlY2tlcigpCiB7
CiAgICAgYm9vbCBuZWVkc0VwaWxvZ3VlID0gZ2VuZXJhdGVQcm9sb2d1ZSgpOwogCkBAIC0xMTE5
LDYgKzExMzEsMTcgQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlU2VsZQog
ICAgIGJvb2wgcmVzZXJ2ZWRDYWxsZWVTYXZlZFJlZ2lzdGVycyA9IGZhbHNlOwogICAgIHVuc2ln
bmVkIGF2YWlsYWJsZVJlZ2lzdGVyQ291bnQgPSBtX3JlZ2lzdGVyQWxsb2NhdG9yLmF2YWlsYWJs
ZVJlZ2lzdGVyQ291bnQoKTsKICAgICB1bnNpZ25lZCBtaW5pbXVtUmVnaXN0ZXJDb3VudEZvckF0
dHJpYnV0ZXMgPSBtaW5pbXVtUmVnaXN0ZXJSZXF1aXJlbWVudHMobV9zZWxlY3RvckZyYWdtZW50
cyk7CisgICAgaWYgKG1pbmltdW1SZWdpc3RlckNvdW50Rm9yQXR0cmlidXRlcyA+IHJlZ2lzdGVy
Q291bnQpIHsKKyNpZiAhQ1BVKEFSTV9USFVNQjIpCisgICAgLy8gQVJNX1RIVU1CMiBkb2VzIG5v
dCBoYXZlIGVub3VnaCByZWdpc3RlcnMgdG8gY29tcGlsZSBjb21wbGljYXRlZCBzZWxlY3RvcnMu
CisgICAgLy8gQ29tcGlsaW5nIHNob3VsZCBhbHdheXMgc3VjY2VlZCBvbiBub24tQVJNX1RIVU1C
MiBDUFVzLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisjaWYgQ1NTX1NFTEVD
VE9SX0pJVF9ERUJVR0dJTkcKKyAgICAgICAgZGF0YUxvZ0YoIkZhaWxlZCB0byBjb21waWxlIGJl
Y2F1c2UgaXQgd291bGQgaGF2ZSByZXF1aXJlZCAldSByZWdpc3RlcnNcbiIsIG1pbmltdW1SZWdp
c3RlckNvdW50Rm9yQXR0cmlidXRlcyk7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KICNpZiBDU1NfU0VMRUNUT1JfSklUX0RFQlVHR0lORwogICAgIGRhdGFMb2dGKCJDb21w
aWxpbmcgd2l0aCBtaW5pbXVtIHJlcXVpcmVkIHJlZ2lzdGVyIGNvdW50ICV1XG4iLCBtaW5pbXVt
UmVnaXN0ZXJDb3VudEZvckF0dHJpYnV0ZXMpOwogI2VuZGlmCkBAIC0xMjE1LDYgKzEyMzgsNyBA
QCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVTZWxlCiAgICAgICAgICAgICBn
ZW5lcmF0ZUVwaWxvZ3VlKCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLnJldCgpOwogICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKIHN0YXRpYyBpbmxpbmUgQXNzZW1ibGVyOjpKdW1wIHRlc3RJ
c0VsZW1lbnRGbGFnT25Ob2RlKEFzc2VtYmxlcjo6UmVzdWx0Q29uZGl0aW9uIGNvbmRpdGlvbiwg
QXNzZW1ibGVyJiBhc3NlbWJsZXIsIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBub2RlQWRkcmVzcykK
QEAgLTEzNjQsMTIgKzEzODgsMjQgQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmFkZEZs
YWdzVG9FbAogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBsb29rIGludG8gZG9pbmcgc29tZXRo
aW5nIHNtYXJ0IGluIE1hY3JvQXNzZW1ibGVyIGluc3RlYWQuCiAgICAgTG9jYWxSZWdpc3RlciBm
bGFncyhtX3JlZ2lzdGVyQWxsb2NhdG9yKTsKKyAgICBMb2NhbFJlZ2lzdGVyIGlzRmlyc3RDaGls
ZFN0YXRlRmxhZ0ltbWVkaWF0ZShtX3JlZ2lzdGVyQWxsb2NhdG9yKTsKICAgICBBc3NlbWJsZXI6
OkFkZHJlc3MgZmxhZ0FkZHJlc3MoY2hpbGRTdHlsZSwgUmVuZGVyU3R5bGU6Om5vbmluaGVyaXRl
ZEZsYWdzTWVtb3J5T2Zmc2V0KCkgKyBSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OmZs
YWdzTWVtb3J5T2Zmc2V0KCkpOworI2lmIENQVShBUk1fVEhVTUIyKQorICAgIEFzc2VtYmxlcjo6
QWRkcmVzcyBmbGFnTG93QWRkcmVzcyhjaGlsZFN0eWxlLCBSZW5kZXJTdHlsZTo6bm9uaW5oZXJp
dGVkRmxhZ3NNZW1vcnlPZmZzZXQoKSArIFJlbmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6
ZmxhZ3NNZW1vcnlPZmZzZXQoKSArIDQpOworICAgIG1fYXNzZW1ibGVyLmxvYWQzMihmbGFnQWRk
cmVzcywgZmxhZ3MpOworICAgIG1fYXNzZW1ibGVyLm1vdmUoQXNzZW1ibGVyOjpUcnVzdGVkSW1t
MzIobmV3RmxhZyA+PiAzMiksIGlzRmlyc3RDaGlsZFN0YXRlRmxhZ0ltbWVkaWF0ZSk7CisgICAg
bV9hc3NlbWJsZXIub3IzMihpc0ZpcnN0Q2hpbGRTdGF0ZUZsYWdJbW1lZGlhdGUsIGZsYWdzKTsK
KyAgICBtX2Fzc2VtYmxlci5zdG9yZTMyKGZsYWdzLCBmbGFnQWRkcmVzcyk7CisgICAgbV9hc3Nl
bWJsZXIubG9hZDMyKGZsYWdMb3dBZGRyZXNzLCBmbGFncyk7CisgICAgbV9hc3NlbWJsZXIubW92
ZShBc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihuZXdGbGFnICYgMHhGRkZGRkZGRiksIGlzRmlyc3RD
aGlsZFN0YXRlRmxhZ0ltbWVkaWF0ZSk7CisgICAgbV9hc3NlbWJsZXIub3IzMihpc0ZpcnN0Q2hp
bGRTdGF0ZUZsYWdJbW1lZGlhdGUsIGZsYWdzKTsKKyAgICBtX2Fzc2VtYmxlci5zdG9yZTMyKGZs
YWdzLCBmbGFnTG93QWRkcmVzcyk7CisjZWxzZQogICAgIG1fYXNzZW1ibGVyLmxvYWQ2NChmbGFn
QWRkcmVzcywgZmxhZ3MpOwotICAgIExvY2FsUmVnaXN0ZXIgaXNGaXJzdENoaWxkU3RhdGVGbGFn
SW1tZWRpYXRlKG1fcmVnaXN0ZXJBbGxvY2F0b3IpOwogICAgIG1fYXNzZW1ibGVyLm1vdmUoQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tNjQobmV3RmxhZyksIGlzRmlyc3RDaGlsZFN0YXRlRmxhZ0ltbWVk
aWF0ZSk7CiAgICAgbV9hc3NlbWJsZXIub3I2NChpc0ZpcnN0Q2hpbGRTdGF0ZUZsYWdJbW1lZGlh
dGUsIGZsYWdzKTsKICAgICBtX2Fzc2VtYmxlci5zdG9yZTY0KGZsYWdzLCBmbGFnQWRkcmVzcyk7
CisjZW5kaWYKIH0KIAogQXNzZW1ibGVyOjpKdW1wTGlzdCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6
Omp1bXBJZk5vUHJldmlvdXNBZGphY2VudEVsZW1lbnQoKQpAQCAtMTQyOCwxMiArMTQ2NCwxNiBA
QCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVTcGVjCiBBc3NlbWJsZXI6Okp1
bXAgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjptb2R1bG8oQXNzZW1ibGVyOjpSZXN1bHRDb25kaXRp
b24gY29uZGl0aW9uLCBBc3NlbWJsZXI6OlJlZ2lzdGVySUQgaW5wdXREaXZpZGVuZCwgaW50IGRp
dmlzb3IpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoZGl2aXNvcik7Ci0jaWYgQ1BVKEFSTTY0KQor
I2lmIENQVShBUk02NCkgfHwgQ1BVKEFQUExFX0FSTVY3UykKICAgICBMb2NhbFJlZ2lzdGVyIGRp
dmlzb3JSZWdpc3RlcihtX3JlZ2lzdGVyQWxsb2NhdG9yKTsKICAgICBtX2Fzc2VtYmxlci5tb3Zl
KEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGRpdmlzb3IpLCBkaXZpc29yUmVnaXN0ZXIpOwogCiAg
ICAgTG9jYWxSZWdpc3RlciByZXN1bHRSZWdpc3RlcihtX3JlZ2lzdGVyQWxsb2NhdG9yKTsKKyNp
ZiBDUFUoQVBQTEVfQVJNVjdTKQorICAgIG1fYXNzZW1ibGVyLm1fYXNzZW1ibGVyLnNkaXYocmVz
dWx0UmVnaXN0ZXIsIGlucHV0RGl2aWRlbmQsIGRpdmlzb3JSZWdpc3Rlcik7CisjZWxpZiBDUFUo
QVJNNjQpCiAgICAgbV9hc3NlbWJsZXIubV9hc3NlbWJsZXIuc2RpdjwzMj4ocmVzdWx0UmVnaXN0
ZXIsIGlucHV0RGl2aWRlbmQsIGRpdmlzb3JSZWdpc3Rlcik7CisjZW5kaWYKICAgICBtX2Fzc2Vt
Ymxlci5tdWwzMihkaXZpc29yUmVnaXN0ZXIsIHJlc3VsdFJlZ2lzdGVyKTsKICAgICByZXR1cm4g
bV9hc3NlbWJsZXIuYnJhbmNoU3ViMzIoY29uZGl0aW9uLCBpbnB1dERpdmlkZW5kLCByZXN1bHRS
ZWdpc3RlciwgcmVzdWx0UmVnaXN0ZXIpOwogI2VsaWYgQ1BVKFg4Nl82NCkKQEAgLTE4MTcsNyAr
MTg1Nyw3IEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW0KICAgICB7
CiAgICAgICAgIGlzU2hhcmVhYmxlRWxlbWVudERhdGEubGluaygmbV9hc3NlbWJsZXIpOwogICAg
ICAgICBtX2Fzc2VtYmxlci51cnNoaWZ0MzIoZWxlbWVudERhdGFBcnJheVNpemVBbmRGbGFncywg
QXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoRWxlbWVudERhdGE6OmFycmF5U2l6ZU9mZnNldCgpKSwg
YXR0cmlidXRlQXJyYXlMZW5ndGgpOwotICAgICAgICBtX2Fzc2VtYmxlci5hZGQ2NChBc3NlbWJs
ZXI6OlRydXN0ZWRJbW0zMihTaGFyZWFibGVFbGVtZW50RGF0YTo6YXR0cmlidXRlQXJyYXlNZW1v
cnlPZmZzZXQoKSksIGVsZW1lbnREYXRhQWRkcmVzcywgYXR0cmlidXRlQXJyYXlQb2ludGVyKTsK
KyAgICAgICAgbV9hc3NlbWJsZXIuYWRkUHRyKEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKFNoYXJl
YWJsZUVsZW1lbnREYXRhOjphdHRyaWJ1dGVBcnJheU1lbW9yeU9mZnNldCgpKSwgZWxlbWVudERh
dGFBZGRyZXNzLCBhdHRyaWJ1dGVBcnJheVBvaW50ZXIpOwogICAgIH0KIAogICAgIHNraXBTaGFy
ZWFibGUubGluaygmbV9hc3NlbWJsZXIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233060</attachid>
            <date>2014-06-13 10:58:06 -0700</date>
            <delta_ts>2014-06-13 11:15:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133596-20140613105743.patch</filename>
            <type>text/plain</type>
            <size>12759</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTkzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDE0LTA2LTEzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBjc3Mg
aml0IGNvbXBpbGUgZm9yIGFybXY3LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTMzNTk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBjc3NqaXQvRnVuY3Rpb25DYWxsLmg6CisgICAgICAgIChXZWJDb3Jl
OjpGdW5jdGlvbkNhbGw6OnN3YXBBcmd1bWVudHMpOgorICAgICAgICBJbXBsZW1lbnRlZCBmb3Ig
QVJNX1RIVU1CMiBhbmQgcmVtb3ZlZCBhbGxvY2F0b3IgaGFjay4KKyAgICAgICAgKiBjc3NqaXQv
UmVnaXN0ZXJBbGxvY2F0b3IuaDoKKyAgICAgICAgQWRkZWQgbGlzdCBvZiBBUk1fVEhVTUIyIGdl
bmVyYWwgcHVycG9zZSByZWdpc3RlcnMuCisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RlckFsbG9j
YXRvcjo6aXNWYWxpZFJlZ2lzdGVyKToKKyAgICAgICAgQWRkZWQgQVJNIHJlZ2lzdGVyIHJhbmdl
IGFuZCBjb3JyZWN0ZWQgQVJNNjQgcmVnaXN0ZXIgcmFuZ2Ugbm93IHRoYXQgcjE1IGlzIHRlbXBS
ZWdpc3Rlci4KKyAgICAgICAgKiBjc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmNvbXBp
bGUpOgorICAgICAgICBSZXR1cm4gQ2Fubm90Q29tcGlsZSBpZiBjb21waWxpbmcgZmFpbHMgYmVj
YXVzZSBvZiBsYWNrIG9mIHJlZ2lzdGVycy4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29t
cGlsZXI6OlNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVQcm9sb2d1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVy
YXRlRXBpbG9ndWUpOgorICAgICAgICBJbXBsZW1lbnRlZCBmb3IgQVJNX1RIVU1CMi4KKyAgICAg
ICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OlNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdGVTZWxlY3RvckNoZWNrZXIpOgorICAgICAgICBSZXR1cm4gZmFsc2UgaWYgdGhlIHNlbGVj
dG9yIGNhbm5vdCBiZSBjb21waWxlZCBiZWNhdXNlIG9mIGxhY2sgb2YgcmVnaXN0ZXJzLgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjph
ZGRGbGFnc1RvRWxlbWVudFN0eWxlRnJvbUNvbnRleHQpOgorICAgICAgICBBZGRlZCBjb2RlIHVz
aW5nIDMyLWJpdCBvcGVyYXRpb25zIGFuZCB1c2VkIG1hY3JvIGFzc2VtYmxlciBmb3IgNjQtYml0
IG9wZXJhdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpTZWxlY3Rv
ckNvZGVHZW5lcmF0b3I6Om1vZHVsbyk6CisgICAgICAgIEltcGxlbWVudGVkIGZvciBBUFBMRV9B
Uk1WN1MsIHdoZXJlIHNkaXYgaXMgbm90IGEgdGVtcGxhdGUgaW4gdGhlIGFzc2VtYmxlci4KKyAg
ICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OlNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6
Z2VuZXJhdGVFbGVtZW50QXR0cmlidXRlc01hdGNoaW5nKToKKyAgICAgICAgVXNlIGFkZFB0ciBp
bnN0ZWFkIG9mIGFkZDY0LgorCiAyMDE0LTA2LTEyICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIG92ZXJsb2FkcyBvZiBIVFRQSGVhZGVyTWFwOjpm
aW5kIGFuZCByZW1vdmUgdGhhdCB0YWtlIGVudW1zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3Nq
aXQvRnVuY3Rpb25DYWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nzaml0L0Z1
bmN0aW9uQ2FsbC5oCShyZXZpc2lvbiAxNjk3NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3NqaXQv
RnVuY3Rpb25DYWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTk5LDMyICs5OSwxMiBAQCBwcml2YXRl
OgogICAgICAgICAvLyB4ODYgY2FuIHN3YXAgd2l0aG91dCBhIHRlbXBvcmFyeSByZWdpc3Rlci4g
T24gb3RoZXIgYXJjaGl0ZWN0dXJlcywgd2UgbmVlZCBhbGxvY2F0ZSBhIHRlbXBvcmFyeSByZWdp
c3RlciB0byBzd2l0Y2ggdGhlIHZhbHVlcy4KICNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQog
ICAgICAgICBtX2Fzc2VtYmxlci5zd2FwKGEsIGIpOwotI2VsaWYgQ1BVKEFSTTY0KQorI2VsaWYg
Q1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikKICAgICAgICAgbV9hc3NlbWJsZXIubW92ZShh
LCB0ZW1wUmVnaXN0ZXIpOwogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZlKGIsIGEpOwogICAgICAg
ICBtX2Fzc2VtYmxlci5tb3ZlKHRlbXBSZWdpc3RlciwgYik7CiAjZWxzZQotICAgICAgICBpZiAo
bV9yZWdpc3RlckFsbG9jYXRvci5hdmFpbGFibGVSZWdpc3RlckNvdW50KCkpIHsKLSAgICAgICAg
ICAgIC8vIFVzdWFsbHkgd2UgY2FuIGp1c3QgdXNlIGEgZnJlZSByZWdpc3Rlci4KLSAgICAgICAg
ICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRlbXBWYWx1ZSBpcyBub3Qg
YSBvciBiLgotICAgICAgICAgICAgTG9jYWxSZWdpc3RlciB0ZW1wVmFsdWUobV9yZWdpc3RlckFs
bG9jYXRvcik7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZlKGEsIHRlbXBWYWx1ZSk7Ci0g
ICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZlKGIsIGEpOwotICAgICAgICAgICAgbV9hc3NlbWJs
ZXIubW92ZSh0ZW1wVmFsdWUsIGIpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8g
SWYgdGhlcmUgaXMgbm8gZnJlZSByZWdpc3RlciwgZXZlcnl0aGluZyBzaG91bGQgYmUgb24gdGhl
IHN0YWNrIGF0IHRoaXMgcG9pbnQuIFdlIGNhbiB0YWtlCi0gICAgICAgICAgICAvLyB0aGUgZmly
c3Qgb2YgdGhvc2Ugc2F2ZWQgcmVnaXN0ZXJzIGFuZCB1c2UgaXQgYXMgYSB0ZW1wb3JhcnkuCi0g
ICAgICAgICAgICBKU0M6Ok1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIHB1c2hlZFJlZ2lzdGVy
OwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcmVnaXN0ZXJBbGxvY2F0
b3IuYWxsb2NhdGVkUmVnaXN0ZXJzKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBw
dXNoZWRSZWdpc3RlciA9IG1fcmVnaXN0ZXJBbGxvY2F0b3IuYWxsb2NhdGVkUmVnaXN0ZXJzKClb
aV07Ci0gICAgICAgICAgICAgICAgaWYgKHB1c2hlZFJlZ2lzdGVyICE9IGEgJiYgcHVzaGVkUmVn
aXN0ZXIgIT0gYikKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBBU1NFUlQocHVzaGVkUmVnaXN0ZXIgIT0gYSAmJiBwdXNoZWRSZWdpc3RlciAh
PSBiKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmUoYSwgcHVzaGVkUmVnaXN0ZXIpOwot
ICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92ZShiLCBhKTsKLSAgICAgICAgICAgIG1fYXNzZW1i
bGVyLm1vdmUocHVzaGVkUmVnaXN0ZXIsIGIpOwotICAgICAgICB9CisjZXJyb3IgTWlzc2luZyBp
bXBsZW1lbnRhdGlvbmcgZm9yIG1hdGNoaW5nIHN3YXBwaW5nIGFyZ3VtZW50IHJlZ2lzdGVycy4K
ICNlbmRpZgogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvY3Nzaml0L1JlZ2lzdGVyQWxs
b2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nzaml0L1JlZ2lzdGVyQWxs
b2NhdG9yLmgJKHJldmlzaW9uIDE2OTc0NikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9SZWdp
c3RlckFsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1NiwxOSBAQCBzdGF0aWMg
Y29uc3QgSlNDOjpNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0CiAgICAgSlNDOjpBUk02NFJlZ2lzdGVy
czo6eDE5CiB9Owogc3RhdGljIGNvbnN0IEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQg
dGVtcFJlZ2lzdGVyID0gSlNDOjpBUk02NFJlZ2lzdGVyczo6eDE1OworI2VsaWYgQ1BVKEFSTV9U
SFVNQjIpCitzdGF0aWMgY29uc3QgSlNDOjpNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjYWxs
ZXJTYXZlZFJlZ2lzdGVyc1tdIHsKKyAgICBKU0M6OkFSTVJlZ2lzdGVyczo6cjAsCisgICAgSlND
OjpBUk1SZWdpc3RlcnM6OnIxLAorICAgIEpTQzo6QVJNUmVnaXN0ZXJzOjpyMiwKKyAgICBKU0M6
OkFSTVJlZ2lzdGVyczo6cjMsCisgICAgSlNDOjpBUk1SZWdpc3RlcnM6OnI3LCAvLyByNyBpcyBm
cCwgYW5kIGl0J3MgcHVzaGVkIGluIHRoZSBwcm9sb2d1ZSBhbmQgcG9wcGVkIGluIHRoZSBlcGls
b2d1ZSBzbyB3ZSBjYW4gdXNlIGl0IHdpdGhvdXQgc2F2aW5nIGl0IGFzIGxvbmcgYXMgd2UgaGF2
ZSBhIHByb2xvZ3VlLgorfTsKK3N0YXRpYyBjb25zdCBKU0M6Ok1hY3JvQXNzZW1ibGVyOjpSZWdp
c3RlcklEIGNhbGxlZVNhdmVkUmVnaXN0ZXJzW10gPSB7CisgICAgSlNDOjpBUk1SZWdpc3RlcnM6
OnI0LAorICAgIEpTQzo6QVJNUmVnaXN0ZXJzOjpyNSwKK307CitzdGF0aWMgY29uc3QgSlNDOjpN
YWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCB0ZW1wUmVnaXN0ZXIgPSBKU0M6OkFSTVJlZ2lzdGVy
czo6cjEyOyAvLyBpcAogI2VsaWYgQ1BVKFg4Nl82NCkKIHN0YXRpYyBjb25zdCBKU0M6Ok1hY3Jv
QXNzZW1ibGVyOjpSZWdpc3RlcklEIGNhbGxlclNhdmVkUmVnaXN0ZXJzW10gPSB7CiAgICAgSlND
OjpYODZSZWdpc3RlcnM6OmVheCwKQEAgLTEzOCw4ICsxNTEsMTAgQEAgcHVibGljOgogICAgIHsK
ICNpZiBDUFUoQVJNNjQpCiAgICAgICAgIHJldHVybiByZWdpc3RlcklEID49IEpTQzo6QVJNNjRS
ZWdpc3RlcnM6OngwICYmIHJlZ2lzdGVySUQgPD0gSlNDOjpBUk02NFJlZ2lzdGVyczo6eDE1Owor
I2VsaWYgQ1BVKEFSTV9USFVNQjIpCisgICAgICAgIHJldHVybiByZWdpc3RlcklEID49IEpTQzo6
QVJNUmVnaXN0ZXJzOjpyMCAmJiByZWdpc3RlcklEIDw9IEpTQzo6QVJNUmVnaXN0ZXJzOjpyNyAm
JiByZWdpc3RlcklEICE9IEpTQzo6QVJNUmVnaXN0ZXJzOjpyNjsKICNlbGlmIENQVShYODZfNjQp
Ci0gICAgICAgIHJldHVybiByZWdpc3RlcklEID49IEpTQzo6WDg2UmVnaXN0ZXJzOjplYXggJiYg
cmVnaXN0ZXJJRCA8PSBKU0M6Olg4NlJlZ2lzdGVyczo6cjE1OworICAgICAgICByZXR1cm4gcmVn
aXN0ZXJJRCA+PSBKU0M6Olg4NlJlZ2lzdGVyczo6ZWF4ICYmIHJlZ2lzdGVySUQgPD0gSlNDOjpY
ODZSZWdpc3RlcnM6OnIxNDsKICNlbHNlCiAjZXJyb3IgUmVnaXN0ZXJBbGxvY2F0b3IgZG9lcyBu
b3QgZGVmaW5lIHRoZSB2YWxpZCByZWdpc3RlciByYW5nZSBmb3IgdGhlIGN1cnJlbnQgYXJjaGl0
ZWN0dXJlLgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21w
aWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29t
cGlsZXIuY3BwCShyZXZpc2lvbiAxNjk3NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2Vs
ZWN0b3JDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OCw3ICsxOTgsNyBAQCBwcml2
YXRlOgogICAgIHN0YXRpYyBjb25zdCBBc3NlbWJsZXI6OlJlZ2lzdGVySUQgY2hlY2tpbmdDb250
ZXh0UmVnaXN0ZXI7CiAgICAgc3RhdGljIGNvbnN0IEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjYWxs
RnJhbWVSZWdpc3RlcjsKIAotICAgIHZvaWQgZ2VuZXJhdGVTZWxlY3RvckNoZWNrZXIoKTsKKyAg
ICBib29sIGdlbmVyYXRlU2VsZWN0b3JDaGVja2VyKCk7CiAKICAgICAvLyBFbGVtZW50IHJlbGF0
aW9ucyB0cmVlIHdhbGtlci4KICAgICB2b2lkIGdlbmVyYXRlV2Fsa1RvUGFyZW50Tm9kZShBc3Nl
bWJsZXI6OlJlZ2lzdGVySUQgdGFyZ2V0UmVnaXN0ZXIpOwpAQCAtNjkyLDcgKzY5Miw4IEBAIGlu
bGluZSBTZWxlY3RvckNvbXBpbGF0aW9uU3RhdHVzIFNlbGVjdG8KICAgICBzd2l0Y2ggKG1fZnVu
Y3Rpb25UeXBlKSB7CiAgICAgY2FzZSBGdW5jdGlvblR5cGU6OlNpbXBsZVNlbGVjdG9yQ2hlY2tl
cjoKICAgICBjYXNlIEZ1bmN0aW9uVHlwZTo6U2VsZWN0b3JDaGVja2VyV2l0aENoZWNraW5nQ29u
dGV4dDoKLSAgICAgICAgZ2VuZXJhdGVTZWxlY3RvckNoZWNrZXIoKTsKKyAgICAgICAgaWYgKCFn
ZW5lcmF0ZVNlbGVjdG9yQ2hlY2tlcigpKQorICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yQ29t
cGlsYXRpb25TdGF0dXM6OkNhbm5vdENvbXBpbGU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
RnVuY3Rpb25UeXBlOjpDYW5ub3RNYXRjaEFueXRoaW5nOgogICAgICAgICBtX2Fzc2VtYmxlci5t
b3ZlKEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDApLCByZXR1cm5SZWdpc3Rlcik7CkBAIC0xMDg4
LDYgKzEwODksMTIgQEAgaW5saW5lIGJvb2wgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcgog
ICAgIHByb2xvZ3VlUmVnaXN0ZXJzLmFwcGVuZChKU0M6OkFSTTY0UmVnaXN0ZXJzOjpmcCk7CiAg
ICAgbV9wcm9sb2d1ZVN0YWNrUmVmZXJlbmNlcyA9IG1fc3RhY2tBbGxvY2F0b3IucHVzaChwcm9s
b2d1ZVJlZ2lzdGVycyk7CiAgICAgcmV0dXJuIHRydWU7CisjZWxpZiBDUFUoQVJNX1RIVU1CMikK
KyAgICBWZWN0b3I8SlNDOjpNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCwgMj4gcHJvbG9ndWVS
ZWdpc3RlcnM7CisgICAgcHJvbG9ndWVSZWdpc3RlcnMuYXBwZW5kKEpTQzo6QVJNUmVnaXN0ZXJz
Ojpscik7CisgICAgcHJvbG9ndWVSZWdpc3RlcnMuYXBwZW5kKEpTQzo6QVJNUmVnaXN0ZXJzOjpm
cCk7IC8vIGZwIGlzIHVzZWQgYXMgYSBjYWxsZXIgc2F2ZWQgcmVnaXN0ZXIgYmVjYXVzZSB3ZSBh
bHdheXMgaGF2ZSBhIHByb2xvZ3VlIGZvciBub3cuCisgICAgbV9wcm9sb2d1ZVN0YWNrUmVmZXJl
bmNlcyA9IG1fc3RhY2tBbGxvY2F0b3IucHVzaChwcm9sb2d1ZVJlZ2lzdGVycyk7CisgICAgcmV0
dXJuIHRydWU7CiAjZWxpZiBDUFUoWDg2XzY0KSAmJiBDU1NfU0VMRUNUT1JfSklUX0RFQlVHR0lO
RwogICAgIFZlY3RvcjxKU0M6Ok1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklELCAxPiBwcm9sb2d1
ZVJlZ2lzdGVyOwogICAgIHByb2xvZ3VlUmVnaXN0ZXIuYXBwZW5kKGNhbGxGcmFtZVJlZ2lzdGVy
KTsKQEAgLTExMDQsNiArMTExMSwxMSBAQCBpbmxpbmUgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0
b3I6OmdlbmVyCiAgICAgcHJvbG9ndWVSZWdpc3RlcnMuYXBwZW5kKEpTQzo6QVJNNjRSZWdpc3Rl
cnM6OmxyKTsKICAgICBwcm9sb2d1ZVJlZ2lzdGVycy5hcHBlbmQoSlNDOjpBUk02NFJlZ2lzdGVy
czo6ZnApOwogICAgIG1fc3RhY2tBbGxvY2F0b3IucG9wKG1fcHJvbG9ndWVTdGFja1JlZmVyZW5j
ZXMsIHByb2xvZ3VlUmVnaXN0ZXJzKTsKKyNlbGlmIENQVShBUk1fVEhVTUIyKQorICAgIFZlY3Rv
cjxKU0M6Ok1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklELCAyPiBwcm9sb2d1ZVJlZ2lzdGVyczsK
KyAgICBwcm9sb2d1ZVJlZ2lzdGVycy5hcHBlbmQoSlNDOjpBUk1SZWdpc3RlcnM6OmxyKTsKKyAg
ICBwcm9sb2d1ZVJlZ2lzdGVycy5hcHBlbmQoSlNDOjpBUk1SZWdpc3RlcnM6OmZwKTsKKyAgICBt
X3N0YWNrQWxsb2NhdG9yLnBvcChtX3Byb2xvZ3VlU3RhY2tSZWZlcmVuY2VzLCBwcm9sb2d1ZVJl
Z2lzdGVycyk7CiAjZWxpZiBDUFUoWDg2XzY0KSAmJiBDU1NfU0VMRUNUT1JfSklUX0RFQlVHR0lO
RwogICAgIFZlY3RvcjxKU0M6Ok1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklELCAxPiBwcm9sb2d1
ZVJlZ2lzdGVyOwogICAgIHByb2xvZ3VlUmVnaXN0ZXIuYXBwZW5kKGNhbGxGcmFtZVJlZ2lzdGVy
KTsKQEAgLTExMTEsMTcgKzExMjMsMjkgQEAgaW5saW5lIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJh
dG9yOjpnZW5lcgogI2VuZGlmCiB9CiAKLXZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5l
cmF0ZVNlbGVjdG9yQ2hlY2tlcigpCitib29sIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJh
dGVTZWxlY3RvckNoZWNrZXIoKQogewotICAgIGJvb2wgbmVlZHNFcGlsb2d1ZSA9IGdlbmVyYXRl
UHJvbG9ndWUoKTsKLQogICAgIFZlY3RvcjxTdGFja0FsbG9jYXRvcjo6U3RhY2tSZWZlcmVuY2U+
IGNhbGxlZVNhdmVkUmVnaXN0ZXJTdGFja1JlZmVyZW5jZXM7CiAgICAgYm9vbCByZXNlcnZlZENh
bGxlZVNhdmVkUmVnaXN0ZXJzID0gZmFsc2U7CiAgICAgdW5zaWduZWQgYXZhaWxhYmxlUmVnaXN0
ZXJDb3VudCA9IG1fcmVnaXN0ZXJBbGxvY2F0b3IuYXZhaWxhYmxlUmVnaXN0ZXJDb3VudCgpOwog
ICAgIHVuc2lnbmVkIG1pbmltdW1SZWdpc3RlckNvdW50Rm9yQXR0cmlidXRlcyA9IG1pbmltdW1S
ZWdpc3RlclJlcXVpcmVtZW50cyhtX3NlbGVjdG9yRnJhZ21lbnRzKTsKKyAgICBpZiAobWluaW11
bVJlZ2lzdGVyQ291bnRGb3JBdHRyaWJ1dGVzID4gcmVnaXN0ZXJDb3VudCkgeworI2lmICFDUFUo
QVJNX1RIVU1CMikKKyAgICAgICAgLy8gQVJNX1RIVU1CMiBkb2VzIG5vdCBoYXZlIGVub3VnaCBy
ZWdpc3RlcnMgdG8gY29tcGlsZSBjb21wbGljYXRlZCBzZWxlY3RvcnMuCisgICAgICAgIC8vIENv
bXBpbGluZyBzaG91bGQgYWx3YXlzIHN1Y2NlZWQgb24gbm9uLUFSTV9USFVNQjIgQ1BVcy4KKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyNpZiBDU1NfU0VMRUNUT1JfSklU
X0RFQlVHR0lORworICAgICAgICBkYXRhTG9nRigiRmFpbGVkIHRvIGNvbXBpbGUgYmVjYXVzZSBp
dCB3b3VsZCBoYXZlIHJlcXVpcmVkICV1IHJlZ2lzdGVyc1xuIiwgbWluaW11bVJlZ2lzdGVyQ291
bnRGb3JBdHRyaWJ1dGVzKTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQog
I2lmIENTU19TRUxFQ1RPUl9KSVRfREVCVUdHSU5HCiAgICAgZGF0YUxvZ0YoIkNvbXBpbGluZyB3
aXRoIG1pbmltdW0gcmVxdWlyZWQgcmVnaXN0ZXIgY291bnQgJXVcbiIsIG1pbmltdW1SZWdpc3Rl
ckNvdW50Rm9yQXR0cmlidXRlcyk7CiAjZW5kaWYKKyAgICAKKyAgICBib29sIG5lZWRzRXBpbG9n
dWUgPSBnZW5lcmF0ZVByb2xvZ3VlKCk7CisgICAgCiAgICAgQVNTRVJUKG1pbmltdW1SZWdpc3Rl
ckNvdW50Rm9yQXR0cmlidXRlcyA8PSByZWdpc3RlckNvdW50KTsKICAgICBpZiAoYXZhaWxhYmxl
UmVnaXN0ZXJDb3VudCA8IG1pbmltdW1SZWdpc3RlckNvdW50Rm9yQXR0cmlidXRlcykgewogICAg
ICAgICByZXNlcnZlZENhbGxlZVNhdmVkUmVnaXN0ZXJzID0gdHJ1ZTsKQEAgLTEyMTUsNiArMTIz
OSw3IEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZVNlbGUKICAgICAgICAg
ICAgIGdlbmVyYXRlRXBpbG9ndWUoKTsKICAgICAgICAgbV9hc3NlbWJsZXIucmV0KCk7CiAgICAg
fQorICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgaW5saW5lIEFzc2VtYmxlcjo6SnVtcCB0
ZXN0SXNFbGVtZW50RmxhZ09uTm9kZShBc3NlbWJsZXI6OlJlc3VsdENvbmRpdGlvbiBjb25kaXRp
b24sIEFzc2VtYmxlciYgYXNzZW1ibGVyLCBBc3NlbWJsZXI6OlJlZ2lzdGVySUQgbm9kZUFkZHJl
c3MpCkBAIC0xMzYyLDE0ICsxMzg3LDE2IEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjph
ZGRGbGFnc1RvRWwKICAgICBMb2NhbFJlZ2lzdGVyIGNoaWxkU3R5bGUobV9yZWdpc3RlckFsbG9j
YXRvcik7CiAgICAgbV9hc3NlbWJsZXIubG9hZFB0cihBc3NlbWJsZXI6OkFkZHJlc3MoY2hlY2tp
bmdDb250ZXh0LCBPQkpFQ1RfT0ZGU0VUT0YoQ2hlY2tpbmdDb250ZXh0LCBlbGVtZW50U3R5bGUp
KSwgY2hpbGRTdHlsZSk7CiAKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGxvb2sgaW50byBkb2lu
ZyBzb21ldGhpbmcgc21hcnQgaW4gTWFjcm9Bc3NlbWJsZXIgaW5zdGVhZC4KLSAgICBMb2NhbFJl
Z2lzdGVyIGZsYWdzKG1fcmVnaXN0ZXJBbGxvY2F0b3IpOwogICAgIEFzc2VtYmxlcjo6QWRkcmVz
cyBmbGFnQWRkcmVzcyhjaGlsZFN0eWxlLCBSZW5kZXJTdHlsZTo6bm9uaW5oZXJpdGVkRmxhZ3NN
ZW1vcnlPZmZzZXQoKSArIFJlbmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6ZmxhZ3NNZW1v
cnlPZmZzZXQoKSk7Ci0gICAgbV9hc3NlbWJsZXIubG9hZDY0KGZsYWdBZGRyZXNzLCBmbGFncyk7
Ci0gICAgTG9jYWxSZWdpc3RlciBpc0ZpcnN0Q2hpbGRTdGF0ZUZsYWdJbW1lZGlhdGUobV9yZWdp
c3RlckFsbG9jYXRvcik7Ci0gICAgbV9hc3NlbWJsZXIubW92ZShBc3NlbWJsZXI6OlRydXN0ZWRJ
bW02NChuZXdGbGFnKSwgaXNGaXJzdENoaWxkU3RhdGVGbGFnSW1tZWRpYXRlKTsKLSAgICBtX2Fz
c2VtYmxlci5vcjY0KGlzRmlyc3RDaGlsZFN0YXRlRmxhZ0ltbWVkaWF0ZSwgZmxhZ3MpOwotICAg
IG1fYXNzZW1ibGVyLnN0b3JlNjQoZmxhZ3MsIGZsYWdBZGRyZXNzKTsKKyNpZiBDUFUoQVJNX1RI
VU1CMikKKyAgICBBc3NlbWJsZXI6OkFkZHJlc3MgZmxhZ0xvd0FkZHJlc3MoY2hpbGRTdHlsZSwg
UmVuZGVyU3R5bGU6Om5vbmluaGVyaXRlZEZsYWdzTWVtb3J5T2Zmc2V0KCkgKyBSZW5kZXJTdHls
ZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OmZsYWdzTWVtb3J5T2Zmc2V0KCkgKyA0KTsKKyAgICBtX2Fz
c2VtYmxlci5vcjMyKEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG5ld0ZsYWcgPj4gMzIpLCBmbGFn
QWRkcmVzcyk7CisgICAgbV9hc3NlbWJsZXIub3IzMihBc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihu
ZXdGbGFnICYgMHhGRkZGRkZGRiksIGZsYWdMb3dBZGRyZXNzKTsKKyNlbGlmIENQVShYODZfNjQp
IHx8IENQVShBUk0pCisgICAgbV9hc3NlbWJsZXIub3I2NChBc3NlbWJsZXI6OlRydXN0ZWRJbW02
NChuZXdGbGFnKSwgZmxhZ0FkZHJlc3MpOworI2Vsc2UKKyNlcnJvciBTZWxlY3RvckNvZGVHZW5l
cmF0b3I6OmFkZEZsYWdzVG9FbGVtZW50U3R5bGVGcm9tQ29udGV4dCBub3QgaW1wbGVtZW50ZWQg
Zm9yIHRoaXMgYXJjaGl0ZWN0dXJlLgorI2VuZGlmCiB9CiAKIEFzc2VtYmxlcjo6SnVtcExpc3Qg
U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpqdW1wSWZOb1ByZXZpb3VzQWRqYWNlbnRFbGVtZW50KCkK
QEAgLTE0MjgsMTIgKzE0NTUsMTYgQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVy
YXRlU3BlYwogQXNzZW1ibGVyOjpKdW1wIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6bW9kdWxvKEFz
c2VtYmxlcjo6UmVzdWx0Q29uZGl0aW9uIGNvbmRpdGlvbiwgQXNzZW1ibGVyOjpSZWdpc3RlcklE
IGlucHV0RGl2aWRlbmQsIGludCBkaXZpc29yKQogewogICAgIFJFTEVBU0VfQVNTRVJUKGRpdmlz
b3IpOwotI2lmIENQVShBUk02NCkKKyNpZiBDUFUoQVJNNjQpIHx8IENQVShBUFBMRV9BUk1WN1Mp
CiAgICAgTG9jYWxSZWdpc3RlciBkaXZpc29yUmVnaXN0ZXIobV9yZWdpc3RlckFsbG9jYXRvcik7
CiAgICAgbV9hc3NlbWJsZXIubW92ZShBc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihkaXZpc29yKSwg
ZGl2aXNvclJlZ2lzdGVyKTsKIAogICAgIExvY2FsUmVnaXN0ZXIgcmVzdWx0UmVnaXN0ZXIobV9y
ZWdpc3RlckFsbG9jYXRvcik7CisjaWYgQ1BVKEFQUExFX0FSTVY3UykKKyAgICBtX2Fzc2VtYmxl
ci5tX2Fzc2VtYmxlci5zZGl2KHJlc3VsdFJlZ2lzdGVyLCBpbnB1dERpdmlkZW5kLCBkaXZpc29y
UmVnaXN0ZXIpOworI2VsaWYgQ1BVKEFSTTY0KQogICAgIG1fYXNzZW1ibGVyLm1fYXNzZW1ibGVy
LnNkaXY8MzI+KHJlc3VsdFJlZ2lzdGVyLCBpbnB1dERpdmlkZW5kLCBkaXZpc29yUmVnaXN0ZXIp
OworI2VuZGlmCiAgICAgbV9hc3NlbWJsZXIubXVsMzIoZGl2aXNvclJlZ2lzdGVyLCByZXN1bHRS
ZWdpc3Rlcik7CiAgICAgcmV0dXJuIG1fYXNzZW1ibGVyLmJyYW5jaFN1YjMyKGNvbmRpdGlvbiwg
aW5wdXREaXZpZGVuZCwgcmVzdWx0UmVnaXN0ZXIsIHJlc3VsdFJlZ2lzdGVyKTsKICNlbGlmIENQ
VShYODZfNjQpCkBAIC0xODE3LDcgKzE4NDgsNyBAQCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRv
cjo6Z2VuZXJhdGVFbGVtCiAgICAgewogICAgICAgICBpc1NoYXJlYWJsZUVsZW1lbnREYXRhLmxp
bmsoJm1fYXNzZW1ibGVyKTsKICAgICAgICAgbV9hc3NlbWJsZXIudXJzaGlmdDMyKGVsZW1lbnRE
YXRhQXJyYXlTaXplQW5kRmxhZ3MsIEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEVsZW1lbnREYXRh
OjphcnJheVNpemVPZmZzZXQoKSksIGF0dHJpYnV0ZUFycmF5TGVuZ3RoKTsKLSAgICAgICAgbV9h
c3NlbWJsZXIuYWRkNjQoQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoU2hhcmVhYmxlRWxlbWVudERh
dGE6OmF0dHJpYnV0ZUFycmF5TWVtb3J5T2Zmc2V0KCkpLCBlbGVtZW50RGF0YUFkZHJlc3MsIGF0
dHJpYnV0ZUFycmF5UG9pbnRlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZFB0cihBc3NlbWJs
ZXI6OlRydXN0ZWRJbW0zMihTaGFyZWFibGVFbGVtZW50RGF0YTo6YXR0cmlidXRlQXJyYXlNZW1v
cnlPZmZzZXQoKSksIGVsZW1lbnREYXRhQWRkcmVzcywgYXR0cmlidXRlQXJyYXlQb2ludGVyKTsK
ICAgICB9CiAKICAgICBza2lwU2hhcmVhYmxlLmxpbmsoJm1fYXNzZW1ibGVyKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233062</attachid>
            <date>2014-06-13 11:15:50 -0700</date>
            <delta_ts>2014-06-14 02:14:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133596-20140613111526.patch</filename>
            <type>text/plain</type>
            <size>16291</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY5NzQ2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDE0LTA2LTExICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgTWFrZSBjc3Mgaml0IGNvbXBpbGUgZm9yIGFybXY3LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzNTk2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuaDoKKyAgICAgICAgVXNlIGJyYW5jaFB0ciBvbiBBUk1fVEhVTUIyLgorICAgICAgICAq
IGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyQVJNdjc6OmFkZFB0ck5vRmxhZ3MpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTXY3OjpvcjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6dGVzdDMy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6YnJhbmNoKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6YnJhbmNoUHRyKToKKyAgICAgICAgQWRkZWQgbWFj
cm9zIG5lY2Vzc2FyeSBmb3IgY3NzIGppdC4KKwogMjAxNC0wNi0wOSAgTWFyayBIYWhuZW5iZXJn
ICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAgIEdsb2JhbCBIYXNoVGFibGVzIGNv
bnRhaW4gcmVmZXJlbmNlcyB0byBhdG9taWMgU3RyaW5nSW1wbHMKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDE2
OTc0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDkgKzExNyw5IEBAIHB1YmxpYzoKICAgICB1c2luZyBN
YWNyb0Fzc2VtYmxlckJhc2U6OmFuZDMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6
YnJhbmNoQWRkMzI7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hNdWwzMjsK
LSNpZiBDUFUoQVJNNjQpIHx8IENQVShYODZfNjQpCisjaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJN
X1RIVU1CMikgfHwgQ1BVKFg4Nl82NCkKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmJy
YW5jaFB0cjsKLSNlbmRpZiAvLyBDUFUoWDg2XzY0KQorI2VuZGlmCiAgICAgdXNpbmcgTWFjcm9B
c3NlbWJsZXJCYXNlOjpicmFuY2hTdWIzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6
OmxzaGlmdDMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6b3IzMjsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk12Ny5oCShyZXZpc2lvbiAxNjk3NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAkod29ya2luZyBjb3B5KQpAQCAtMjI2LDYgKzIyNiwx
MSBAQCBwdWJsaWM6CiAgICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcy5t
X3B0cik7CiAgICAgfQogCisgICAgdm9pZCBhZGRQdHJOb0ZsYWdzKFRydXN0ZWRJbW0zMiBpbW0s
IFJlZ2lzdGVySUQgc3JjRGVzdCkKKyAgICB7CisgICAgICAgIGFkZDMyKGltbSwgc3JjRGVzdCk7
CisgICAgfQorICAgIAogICAgIHZvaWQgYWRkNjQoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVB
ZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVz
cy5tX3B0ciksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwpAQCAtMzM3LDYgKzM0MiwxMyBAQCBwdWJs
aWM6CiAgICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdpc3Rl
cik7CiAgICAgfQogCisgICAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIGxvYWQzMihhZGRyZXNzLCBkYXRhVGVtcFJlZ2lzdGVyKTsK
KyAgICAgICAgb3IzMihpbW0sIGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIpOwor
ICAgICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MpOworICAgIH0KKwogICAg
IHZvaWQgb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBvcjMyKGltbSwgZGVzdCwgZGVzdCk7CkBAIC0xMzMwLDYgKzEzNDIsMTYgQEAgcHJpdmF0
ZToKICAgICB9CiAKIHB1YmxpYzoKKyAgICB2b2lkIHRlc3QzMihSZXN1bHRDb25kaXRpb24sIFJl
Z2lzdGVySUQgcmVnLCBUcnVzdGVkSW1tMzIgbWFzaykKKyAgICB7CisgICAgICAgIHRlc3QzMihy
ZWcsIG1hc2spOworICAgIH0KKyAgICAKKyAgICBKdW1wIGJyYW5jaChSZXN1bHRDb25kaXRpb24g
Y29uZCkKKyAgICB7CisgICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2goY29uZCkpOworICAg
IH0KKwogICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5j
bXAobGVmdCwgcmlnaHQpOwpAQCAtMTM4OCw2ICsxNDEwLDEyIEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGJyYW5jaDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIHJpZ2h0KTsKICAgICB9
CiAKKyAgICBKdW1wIGJyYW5jaFB0cihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEJhc2VJbmRl
eCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQorICAgIHsKKyAgICAgICAgbG9hZDMyKGxlZnQsIGRh
dGFUZW1wUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBS
ZWdpc3RlciwgcmlnaHQpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoOChSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsK
ICAgICAgICAgY29tcGFyZTMyKGxlZnQsIHJpZ2h0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDE2OTkzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDMyIEBACisyMDE0LTA2LTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBjc3Mgaml0IGNvbXBpbGUgZm9yIGFybXY3Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzNTk2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjc3NqaXQv
RnVuY3Rpb25DYWxsLmg6CisgICAgICAgIChXZWJDb3JlOjpGdW5jdGlvbkNhbGw6OnN3YXBBcmd1
bWVudHMpOgorICAgICAgICBJbXBsZW1lbnRlZCBmb3IgQVJNX1RIVU1CMiBhbmQgcmVtb3ZlZCBh
bGxvY2F0b3IgaGFjay4KKyAgICAgICAgKiBjc3NqaXQvUmVnaXN0ZXJBbGxvY2F0b3IuaDoKKyAg
ICAgICAgQWRkZWQgbGlzdCBvZiBBUk1fVEhVTUIyIGdlbmVyYWwgcHVycG9zZSByZWdpc3RlcnMu
CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RlckFsbG9jYXRvcjo6aXNWYWxpZFJlZ2lzdGVyKToK
KyAgICAgICAgQWRkZWQgQVJNIHJlZ2lzdGVyIHJhbmdlIGFuZCBjb3JyZWN0ZWQgQVJNNjQgcmVn
aXN0ZXIgcmFuZ2Ugbm93IHRoYXQgcjE1IGlzIHRlbXBSZWdpc3Rlci4KKyAgICAgICAgKiBjc3Nq
aXQvU2VsZWN0b3JDb21waWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBp
bGVyOjpTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmNvbXBpbGUpOgorICAgICAgICBSZXR1cm4gQ2Fu
bm90Q29tcGlsZSBpZiBjb21waWxpbmcgZmFpbHMgYmVjYXVzZSBvZiBsYWNrIG9mIHJlZ2lzdGVy
cy4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OlNlbGVjdG9yQ29kZUdlbmVy
YXRvcjo6Z2VuZXJhdGVQcm9sb2d1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBp
bGVyOjpTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRXBpbG9ndWUpOgorICAgICAgICBJ
bXBsZW1lbnRlZCBmb3IgQVJNX1RIVU1CMi4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29t
cGlsZXI6OlNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVTZWxlY3RvckNoZWNrZXIpOgor
ICAgICAgICBSZXR1cm4gZmFsc2UgaWYgdGhlIHNlbGVjdG9yIGNhbm5vdCBiZSBjb21waWxlZCBi
ZWNhdXNlIG9mIGxhY2sgb2YgcmVnaXN0ZXJzLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JD
b21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjphZGRGbGFnc1RvRWxlbWVudFN0eWxlRnJv
bUNvbnRleHQpOgorICAgICAgICBBZGRlZCBjb2RlIHVzaW5nIDMyLWJpdCBvcGVyYXRpb25zIGFu
ZCB1c2VkIG1hY3JvIGFzc2VtYmxlciBmb3IgNjQtYml0IG9wZXJhdGlvbnMuCisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpTZWxlY3RvckNvZGVHZW5lcmF0b3I6Om1vZHVsbyk6
CisgICAgICAgIEltcGxlbWVudGVkIGZvciBBUFBMRV9BUk1WN1MsIHdoZXJlIHNkaXYgaXMgbm90
IGEgdGVtcGxhdGUgaW4gdGhlIGFzc2VtYmxlci4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9y
Q29tcGlsZXI6OlNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50QXR0cmlidXRl
c01hdGNoaW5nKToKKyAgICAgICAgVXNlIGFkZFB0ciBpbnN0ZWFkIG9mIGFkZDY0LgorCiAyMDE0
LTA2LTEyICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIG92ZXJsb2FkcyBvZiBIVFRQSGVhZGVyTWFwOjpmaW5kIGFuZCByZW1vdmUgdGhhdCB0YWtl
IGVudW1zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3NqaXQvRnVuY3Rpb25DYWxsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nzaml0L0Z1bmN0aW9uQ2FsbC5oCShyZXZpc2lvbiAx
Njk3NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3NqaXQvRnVuY3Rpb25DYWxsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTk5LDMyICs5OSwxMiBAQCBwcml2YXRlOgogICAgICAgICAvLyB4ODYgY2FuIHN3
YXAgd2l0aG91dCBhIHRlbXBvcmFyeSByZWdpc3Rlci4gT24gb3RoZXIgYXJjaGl0ZWN0dXJlcywg
d2UgbmVlZCBhbGxvY2F0ZSBhIHRlbXBvcmFyeSByZWdpc3RlciB0byBzd2l0Y2ggdGhlIHZhbHVl
cy4KICNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQogICAgICAgICBtX2Fzc2VtYmxlci5zd2Fw
KGEsIGIpOwotI2VsaWYgQ1BVKEFSTTY0KQorI2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RI
VU1CMikKICAgICAgICAgbV9hc3NlbWJsZXIubW92ZShhLCB0ZW1wUmVnaXN0ZXIpOwogICAgICAg
ICBtX2Fzc2VtYmxlci5tb3ZlKGIsIGEpOwogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZlKHRlbXBS
ZWdpc3RlciwgYik7CiAjZWxzZQotICAgICAgICBpZiAobV9yZWdpc3RlckFsbG9jYXRvci5hdmFp
bGFibGVSZWdpc3RlckNvdW50KCkpIHsKLSAgICAgICAgICAgIC8vIFVzdWFsbHkgd2UgY2FuIGp1
c3QgdXNlIGEgZnJlZSByZWdpc3Rlci4KLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRv
IG1ha2Ugc3VyZSB0aGF0IHRlbXBWYWx1ZSBpcyBub3QgYSBvciBiLgotICAgICAgICAgICAgTG9j
YWxSZWdpc3RlciB0ZW1wVmFsdWUobV9yZWdpc3RlckFsbG9jYXRvcik7Ci0gICAgICAgICAgICBt
X2Fzc2VtYmxlci5tb3ZlKGEsIHRlbXBWYWx1ZSk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5t
b3ZlKGIsIGEpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92ZSh0ZW1wVmFsdWUsIGIpOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gZnJlZSByZWdp
c3RlciwgZXZlcnl0aGluZyBzaG91bGQgYmUgb24gdGhlIHN0YWNrIGF0IHRoaXMgcG9pbnQuIFdl
IGNhbiB0YWtlCi0gICAgICAgICAgICAvLyB0aGUgZmlyc3Qgb2YgdGhvc2Ugc2F2ZWQgcmVnaXN0
ZXJzIGFuZCB1c2UgaXQgYXMgYSB0ZW1wb3JhcnkuCi0gICAgICAgICAgICBKU0M6Ok1hY3JvQXNz
ZW1ibGVyOjpSZWdpc3RlcklEIHB1c2hlZFJlZ2lzdGVyOwotICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fcmVnaXN0ZXJBbGxvY2F0b3IuYWxsb2NhdGVkUmVnaXN0ZXJzKCku
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBwdXNoZWRSZWdpc3RlciA9IG1fcmVnaXN0
ZXJBbGxvY2F0b3IuYWxsb2NhdGVkUmVnaXN0ZXJzKClbaV07Ci0gICAgICAgICAgICAgICAgaWYg
KHB1c2hlZFJlZ2lzdGVyICE9IGEgJiYgcHVzaGVkUmVnaXN0ZXIgIT0gYikKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlQocHVzaGVk
UmVnaXN0ZXIgIT0gYSAmJiBwdXNoZWRSZWdpc3RlciAhPSBiKTsKLSAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLm1vdmUoYSwgcHVzaGVkUmVnaXN0ZXIpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIu
bW92ZShiLCBhKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmUocHVzaGVkUmVnaXN0ZXIs
IGIpOwotICAgICAgICB9CisjZXJyb3IgTWlzc2luZyBpbXBsZW1lbnRhdGlvbmcgZm9yIG1hdGNo
aW5nIHN3YXBwaW5nIGFyZ3VtZW50IHJlZ2lzdGVycy4KICNlbmRpZgogICAgIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvY3Nzaml0L1JlZ2lzdGVyQWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3Nzaml0L1JlZ2lzdGVyQWxsb2NhdG9yLmgJKHJldmlzaW9uIDE2OTc0
NikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9SZWdpc3RlckFsbG9jYXRvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC01Niw2ICs1NiwxOSBAQCBzdGF0aWMgY29uc3QgSlNDOjpNYWNyb0Fzc2VtYmxl
cjo6UmVnaXN0CiAgICAgSlNDOjpBUk02NFJlZ2lzdGVyczo6eDE5CiB9Owogc3RhdGljIGNvbnN0
IEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgdGVtcFJlZ2lzdGVyID0gSlNDOjpBUk02
NFJlZ2lzdGVyczo6eDE1OworI2VsaWYgQ1BVKEFSTV9USFVNQjIpCitzdGF0aWMgY29uc3QgSlND
OjpNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjYWxsZXJTYXZlZFJlZ2lzdGVyc1tdIHsKKyAg
ICBKU0M6OkFSTVJlZ2lzdGVyczo6cjAsCisgICAgSlNDOjpBUk1SZWdpc3RlcnM6OnIxLAorICAg
IEpTQzo6QVJNUmVnaXN0ZXJzOjpyMiwKKyAgICBKU0M6OkFSTVJlZ2lzdGVyczo6cjMsCisgICAg
SlNDOjpBUk1SZWdpc3RlcnM6OnI3LCAvLyByNyBpcyBmcCwgYW5kIGl0J3MgcHVzaGVkIGluIHRo
ZSBwcm9sb2d1ZSBhbmQgcG9wcGVkIGluIHRoZSBlcGlsb2d1ZSBzbyB3ZSBjYW4gdXNlIGl0IHdp
dGhvdXQgc2F2aW5nIGl0IGFzIGxvbmcgYXMgd2UgaGF2ZSBhIHByb2xvZ3VlLgorfTsKK3N0YXRp
YyBjb25zdCBKU0M6Ok1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIGNhbGxlZVNhdmVkUmVnaXN0
ZXJzW10gPSB7CisgICAgSlNDOjpBUk1SZWdpc3RlcnM6OnI0LAorICAgIEpTQzo6QVJNUmVnaXN0
ZXJzOjpyNSwKK307CitzdGF0aWMgY29uc3QgSlNDOjpNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJ
RCB0ZW1wUmVnaXN0ZXIgPSBKU0M6OkFSTVJlZ2lzdGVyczo6cjEyOyAvLyBpcAogI2VsaWYgQ1BV
KFg4Nl82NCkKIHN0YXRpYyBjb25zdCBKU0M6Ok1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIGNh
bGxlclNhdmVkUmVnaXN0ZXJzW10gPSB7CiAgICAgSlNDOjpYODZSZWdpc3RlcnM6OmVheCwKQEAg
LTEzOCw4ICsxNTEsMTAgQEAgcHVibGljOgogICAgIHsKICNpZiBDUFUoQVJNNjQpCiAgICAgICAg
IHJldHVybiByZWdpc3RlcklEID49IEpTQzo6QVJNNjRSZWdpc3RlcnM6OngwICYmIHJlZ2lzdGVy
SUQgPD0gSlNDOjpBUk02NFJlZ2lzdGVyczo6eDE1OworI2VsaWYgQ1BVKEFSTV9USFVNQjIpCisg
ICAgICAgIHJldHVybiByZWdpc3RlcklEID49IEpTQzo6QVJNUmVnaXN0ZXJzOjpyMCAmJiByZWdp
c3RlcklEIDw9IEpTQzo6QVJNUmVnaXN0ZXJzOjpyNyAmJiByZWdpc3RlcklEICE9IEpTQzo6QVJN
UmVnaXN0ZXJzOjpyNjsKICNlbGlmIENQVShYODZfNjQpCi0gICAgICAgIHJldHVybiByZWdpc3Rl
cklEID49IEpTQzo6WDg2UmVnaXN0ZXJzOjplYXggJiYgcmVnaXN0ZXJJRCA8PSBKU0M6Olg4NlJl
Z2lzdGVyczo6cjE1OworICAgICAgICByZXR1cm4gcmVnaXN0ZXJJRCA+PSBKU0M6Olg4NlJlZ2lz
dGVyczo6ZWF4ICYmIHJlZ2lzdGVySUQgPD0gSlNDOjpYODZSZWdpc3RlcnM6OnIxNDsKICNlbHNl
CiAjZXJyb3IgUmVnaXN0ZXJBbGxvY2F0b3IgZG9lcyBub3QgZGVmaW5lIHRoZSB2YWxpZCByZWdp
c3RlciByYW5nZSBmb3IgdGhlIGN1cnJlbnQgYXJjaGl0ZWN0dXJlLgogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxNjk3
NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE5OCw3ICsxOTgsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBB
c3NlbWJsZXI6OlJlZ2lzdGVySUQgY2hlY2tpbmdDb250ZXh0UmVnaXN0ZXI7CiAgICAgc3RhdGlj
IGNvbnN0IEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjYWxsRnJhbWVSZWdpc3RlcjsKIAotICAgIHZv
aWQgZ2VuZXJhdGVTZWxlY3RvckNoZWNrZXIoKTsKKyAgICBib29sIGdlbmVyYXRlU2VsZWN0b3JD
aGVja2VyKCk7CiAKICAgICAvLyBFbGVtZW50IHJlbGF0aW9ucyB0cmVlIHdhbGtlci4KICAgICB2
b2lkIGdlbmVyYXRlV2Fsa1RvUGFyZW50Tm9kZShBc3NlbWJsZXI6OlJlZ2lzdGVySUQgdGFyZ2V0
UmVnaXN0ZXIpOwpAQCAtNjkyLDcgKzY5Miw4IEBAIGlubGluZSBTZWxlY3RvckNvbXBpbGF0aW9u
U3RhdHVzIFNlbGVjdG8KICAgICBzd2l0Y2ggKG1fZnVuY3Rpb25UeXBlKSB7CiAgICAgY2FzZSBG
dW5jdGlvblR5cGU6OlNpbXBsZVNlbGVjdG9yQ2hlY2tlcjoKICAgICBjYXNlIEZ1bmN0aW9uVHlw
ZTo6U2VsZWN0b3JDaGVja2VyV2l0aENoZWNraW5nQ29udGV4dDoKLSAgICAgICAgZ2VuZXJhdGVT
ZWxlY3RvckNoZWNrZXIoKTsKKyAgICAgICAgaWYgKCFnZW5lcmF0ZVNlbGVjdG9yQ2hlY2tlcigp
KQorICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yQ29tcGlsYXRpb25TdGF0dXM6OkNhbm5vdENv
bXBpbGU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRnVuY3Rpb25UeXBlOjpDYW5ub3RNYXRj
aEFueXRoaW5nOgogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZlKEFzc2VtYmxlcjo6VHJ1c3RlZElt
bTMyKDApLCByZXR1cm5SZWdpc3Rlcik7CkBAIC0xMDg4LDYgKzEwODksMTIgQEAgaW5saW5lIGJv
b2wgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcgogICAgIHByb2xvZ3VlUmVnaXN0ZXJzLmFw
cGVuZChKU0M6OkFSTTY0UmVnaXN0ZXJzOjpmcCk7CiAgICAgbV9wcm9sb2d1ZVN0YWNrUmVmZXJl
bmNlcyA9IG1fc3RhY2tBbGxvY2F0b3IucHVzaChwcm9sb2d1ZVJlZ2lzdGVycyk7CiAgICAgcmV0
dXJuIHRydWU7CisjZWxpZiBDUFUoQVJNX1RIVU1CMikKKyAgICBWZWN0b3I8SlNDOjpNYWNyb0Fz
c2VtYmxlcjo6UmVnaXN0ZXJJRCwgMj4gcHJvbG9ndWVSZWdpc3RlcnM7CisgICAgcHJvbG9ndWVS
ZWdpc3RlcnMuYXBwZW5kKEpTQzo6QVJNUmVnaXN0ZXJzOjpscik7CisgICAgcHJvbG9ndWVSZWdp
c3RlcnMuYXBwZW5kKEpTQzo6QVJNUmVnaXN0ZXJzOjpmcCk7IC8vIGZwIGlzIHVzZWQgYXMgYSBj
YWxsZXIgc2F2ZWQgcmVnaXN0ZXIgYmVjYXVzZSB3ZSBhbHdheXMgaGF2ZSBhIHByb2xvZ3VlIGZv
ciBub3cuCisgICAgbV9wcm9sb2d1ZVN0YWNrUmVmZXJlbmNlcyA9IG1fc3RhY2tBbGxvY2F0b3Iu
cHVzaChwcm9sb2d1ZVJlZ2lzdGVycyk7CisgICAgcmV0dXJuIHRydWU7CiAjZWxpZiBDUFUoWDg2
XzY0KSAmJiBDU1NfU0VMRUNUT1JfSklUX0RFQlVHR0lORwogICAgIFZlY3RvcjxKU0M6Ok1hY3Jv
QXNzZW1ibGVyOjpSZWdpc3RlcklELCAxPiBwcm9sb2d1ZVJlZ2lzdGVyOwogICAgIHByb2xvZ3Vl
UmVnaXN0ZXIuYXBwZW5kKGNhbGxGcmFtZVJlZ2lzdGVyKTsKQEAgLTExMDQsNiArMTExMSwxMSBA
QCBpbmxpbmUgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyCiAgICAgcHJvbG9ndWVS
ZWdpc3RlcnMuYXBwZW5kKEpTQzo6QVJNNjRSZWdpc3RlcnM6OmxyKTsKICAgICBwcm9sb2d1ZVJl
Z2lzdGVycy5hcHBlbmQoSlNDOjpBUk02NFJlZ2lzdGVyczo6ZnApOwogICAgIG1fc3RhY2tBbGxv
Y2F0b3IucG9wKG1fcHJvbG9ndWVTdGFja1JlZmVyZW5jZXMsIHByb2xvZ3VlUmVnaXN0ZXJzKTsK
KyNlbGlmIENQVShBUk1fVEhVTUIyKQorICAgIFZlY3RvcjxKU0M6Ok1hY3JvQXNzZW1ibGVyOjpS
ZWdpc3RlcklELCAyPiBwcm9sb2d1ZVJlZ2lzdGVyczsKKyAgICBwcm9sb2d1ZVJlZ2lzdGVycy5h
cHBlbmQoSlNDOjpBUk1SZWdpc3RlcnM6OmxyKTsKKyAgICBwcm9sb2d1ZVJlZ2lzdGVycy5hcHBl
bmQoSlNDOjpBUk1SZWdpc3RlcnM6OmZwKTsKKyAgICBtX3N0YWNrQWxsb2NhdG9yLnBvcChtX3By
b2xvZ3VlU3RhY2tSZWZlcmVuY2VzLCBwcm9sb2d1ZVJlZ2lzdGVycyk7CiAjZWxpZiBDUFUoWDg2
XzY0KSAmJiBDU1NfU0VMRUNUT1JfSklUX0RFQlVHR0lORwogICAgIFZlY3RvcjxKU0M6Ok1hY3Jv
QXNzZW1ibGVyOjpSZWdpc3RlcklELCAxPiBwcm9sb2d1ZVJlZ2lzdGVyOwogICAgIHByb2xvZ3Vl
UmVnaXN0ZXIuYXBwZW5kKGNhbGxGcmFtZVJlZ2lzdGVyKTsKQEAgLTExMTEsMTcgKzExMjMsMjkg
QEAgaW5saW5lIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcgogI2VuZGlmCiB9CiAK
LXZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZVNlbGVjdG9yQ2hlY2tlcigpCiti
b29sIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVTZWxlY3RvckNoZWNrZXIoKQogewot
ICAgIGJvb2wgbmVlZHNFcGlsb2d1ZSA9IGdlbmVyYXRlUHJvbG9ndWUoKTsKLQogICAgIFZlY3Rv
cjxTdGFja0FsbG9jYXRvcjo6U3RhY2tSZWZlcmVuY2U+IGNhbGxlZVNhdmVkUmVnaXN0ZXJTdGFj
a1JlZmVyZW5jZXM7CiAgICAgYm9vbCByZXNlcnZlZENhbGxlZVNhdmVkUmVnaXN0ZXJzID0gZmFs
c2U7CiAgICAgdW5zaWduZWQgYXZhaWxhYmxlUmVnaXN0ZXJDb3VudCA9IG1fcmVnaXN0ZXJBbGxv
Y2F0b3IuYXZhaWxhYmxlUmVnaXN0ZXJDb3VudCgpOwogICAgIHVuc2lnbmVkIG1pbmltdW1SZWdp
c3RlckNvdW50Rm9yQXR0cmlidXRlcyA9IG1pbmltdW1SZWdpc3RlclJlcXVpcmVtZW50cyhtX3Nl
bGVjdG9yRnJhZ21lbnRzKTsKKyAgICBpZiAobWluaW11bVJlZ2lzdGVyQ291bnRGb3JBdHRyaWJ1
dGVzID4gcmVnaXN0ZXJDb3VudCkgeworI2lmICFDUFUoQVJNX1RIVU1CMikKKyAgICAgICAgLy8g
QVJNX1RIVU1CMiBkb2VzIG5vdCBoYXZlIGVub3VnaCByZWdpc3RlcnMgdG8gY29tcGlsZSBjb21w
bGljYXRlZCBzZWxlY3RvcnMuCisgICAgICAgIC8vIENvbXBpbGluZyBzaG91bGQgYWx3YXlzIHN1
Y2NlZWQgb24gbm9uLUFSTV9USFVNQjIgQ1BVcy4KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisjZW5kaWYKKyNpZiBDU1NfU0VMRUNUT1JfSklUX0RFQlVHR0lORworICAgICAgICBkYXRh
TG9nRigiRmFpbGVkIHRvIGNvbXBpbGUgYmVjYXVzZSBpdCB3b3VsZCBoYXZlIHJlcXVpcmVkICV1
IHJlZ2lzdGVyc1xuIiwgbWluaW11bVJlZ2lzdGVyQ291bnRGb3JBdHRyaWJ1dGVzKTsKKyNlbmRp
ZgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogI2lmIENTU19TRUxFQ1RPUl9KSVRfREVC
VUdHSU5HCiAgICAgZGF0YUxvZ0YoIkNvbXBpbGluZyB3aXRoIG1pbmltdW0gcmVxdWlyZWQgcmVn
aXN0ZXIgY291bnQgJXVcbiIsIG1pbmltdW1SZWdpc3RlckNvdW50Rm9yQXR0cmlidXRlcyk7CiAj
ZW5kaWYKKyAgICAKKyAgICBib29sIG5lZWRzRXBpbG9ndWUgPSBnZW5lcmF0ZVByb2xvZ3VlKCk7
CisgICAgCiAgICAgQVNTRVJUKG1pbmltdW1SZWdpc3RlckNvdW50Rm9yQXR0cmlidXRlcyA8PSBy
ZWdpc3RlckNvdW50KTsKICAgICBpZiAoYXZhaWxhYmxlUmVnaXN0ZXJDb3VudCA8IG1pbmltdW1S
ZWdpc3RlckNvdW50Rm9yQXR0cmlidXRlcykgewogICAgICAgICByZXNlcnZlZENhbGxlZVNhdmVk
UmVnaXN0ZXJzID0gdHJ1ZTsKQEAgLTEyMTUsNiArMTIzOSw3IEBAIHZvaWQgU2VsZWN0b3JDb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0ZVNlbGUKICAgICAgICAgICAgIGdlbmVyYXRlRXBpbG9ndWUoKTsK
ICAgICAgICAgbV9hc3NlbWJsZXIucmV0KCk7CiAgICAgfQorICAgIHJldHVybiB0cnVlOwogfQog
CiBzdGF0aWMgaW5saW5lIEFzc2VtYmxlcjo6SnVtcCB0ZXN0SXNFbGVtZW50RmxhZ09uTm9kZShB
c3NlbWJsZXI6OlJlc3VsdENvbmRpdGlvbiBjb25kaXRpb24sIEFzc2VtYmxlciYgYXNzZW1ibGVy
LCBBc3NlbWJsZXI6OlJlZ2lzdGVySUQgbm9kZUFkZHJlc3MpCkBAIC0xMzYyLDE0ICsxMzg3LDIy
IEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjphZGRGbGFnc1RvRWwKICAgICBMb2NhbFJl
Z2lzdGVyIGNoaWxkU3R5bGUobV9yZWdpc3RlckFsbG9jYXRvcik7CiAgICAgbV9hc3NlbWJsZXIu
bG9hZFB0cihBc3NlbWJsZXI6OkFkZHJlc3MoY2hlY2tpbmdDb250ZXh0LCBPQkpFQ1RfT0ZGU0VU
T0YoQ2hlY2tpbmdDb250ZXh0LCBlbGVtZW50U3R5bGUpKSwgY2hpbGRTdHlsZSk7CiAKKyAgICBB
c3NlbWJsZXI6OkFkZHJlc3MgZmxhZ0FkZHJlc3MoY2hpbGRTdHlsZSwgUmVuZGVyU3R5bGU6Om5v
bmluaGVyaXRlZEZsYWdzTWVtb3J5T2Zmc2V0KCkgKyBSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVk
RmxhZ3M6OmZsYWdzTWVtb3J5T2Zmc2V0KCkpOworI2lmIENQVShBUk1fVEhVTUIyKQorICAgIEFz
c2VtYmxlcjo6QWRkcmVzcyBmbGFnTG93QWRkcmVzcyhjaGlsZFN0eWxlLCBSZW5kZXJTdHlsZTo6
bm9uaW5oZXJpdGVkRmxhZ3NNZW1vcnlPZmZzZXQoKSArIFJlbmRlclN0eWxlOjpOb25Jbmhlcml0
ZWRGbGFnczo6ZmxhZ3NNZW1vcnlPZmZzZXQoKSArIDQpOworICAgIG1fYXNzZW1ibGVyLm9yMzIo
QXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIobmV3RmxhZyA+PiAzMiksIGZsYWdBZGRyZXNzKTsKKyAg
ICBtX2Fzc2VtYmxlci5vcjMyKEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG5ld0ZsYWcgJiAweEZG
RkZGRkZGKSwgZmxhZ0xvd0FkZHJlc3MpOworI2VsaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTSkK
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGxvb2sgaW50byBkb2luZyBzb21ldGhpbmcgc21hcnQg
aW4gTWFjcm9Bc3NlbWJsZXIgaW5zdGVhZC4KICAgICBMb2NhbFJlZ2lzdGVyIGZsYWdzKG1fcmVn
aXN0ZXJBbGxvY2F0b3IpOwotICAgIEFzc2VtYmxlcjo6QWRkcmVzcyBmbGFnQWRkcmVzcyhjaGls
ZFN0eWxlLCBSZW5kZXJTdHlsZTo6bm9uaW5oZXJpdGVkRmxhZ3NNZW1vcnlPZmZzZXQoKSArIFJl
bmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6ZmxhZ3NNZW1vcnlPZmZzZXQoKSk7CiAgICAg
bV9hc3NlbWJsZXIubG9hZDY0KGZsYWdBZGRyZXNzLCBmbGFncyk7CiAgICAgTG9jYWxSZWdpc3Rl
ciBpc0ZpcnN0Q2hpbGRTdGF0ZUZsYWdJbW1lZGlhdGUobV9yZWdpc3RlckFsbG9jYXRvcik7CiAg
ICAgbV9hc3NlbWJsZXIubW92ZShBc3NlbWJsZXI6OlRydXN0ZWRJbW02NChuZXdGbGFnKSwgaXNG
aXJzdENoaWxkU3RhdGVGbGFnSW1tZWRpYXRlKTsKICAgICBtX2Fzc2VtYmxlci5vcjY0KGlzRmly
c3RDaGlsZFN0YXRlRmxhZ0ltbWVkaWF0ZSwgZmxhZ3MpOwogICAgIG1fYXNzZW1ibGVyLnN0b3Jl
NjQoZmxhZ3MsIGZsYWdBZGRyZXNzKTsKKyNlbHNlCisjZXJyb3IgU2VsZWN0b3JDb2RlR2VuZXJh
dG9yOjphZGRGbGFnc1RvRWxlbWVudFN0eWxlRnJvbUNvbnRleHQgbm90IGltcGxlbWVudGVkIGZv
ciB0aGlzIGFyY2hpdGVjdHVyZS4KKyNlbmRpZgogfQogCiBBc3NlbWJsZXI6Okp1bXBMaXN0IFNl
bGVjdG9yQ29kZUdlbmVyYXRvcjo6anVtcElmTm9QcmV2aW91c0FkamFjZW50RWxlbWVudCgpCkBA
IC0xNDI4LDEyICsxNDYxLDE2IEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0
ZVNwZWMKIEFzc2VtYmxlcjo6SnVtcCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6Om1vZHVsbyhBc3Nl
bWJsZXI6OlJlc3VsdENvbmRpdGlvbiBjb25kaXRpb24sIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBp
bnB1dERpdmlkZW5kLCBpbnQgZGl2aXNvcikKIHsKICAgICBSRUxFQVNFX0FTU0VSVChkaXZpc29y
KTsKLSNpZiBDUFUoQVJNNjQpCisjaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVBQTEVfQVJNVjdTKQog
ICAgIExvY2FsUmVnaXN0ZXIgZGl2aXNvclJlZ2lzdGVyKG1fcmVnaXN0ZXJBbGxvY2F0b3IpOwog
ICAgIG1fYXNzZW1ibGVyLm1vdmUoQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoZGl2aXNvciksIGRp
dmlzb3JSZWdpc3Rlcik7CiAKICAgICBMb2NhbFJlZ2lzdGVyIHJlc3VsdFJlZ2lzdGVyKG1fcmVn
aXN0ZXJBbGxvY2F0b3IpOworI2lmIENQVShBUFBMRV9BUk1WN1MpCisgICAgbV9hc3NlbWJsZXIu
bV9hc3NlbWJsZXIuc2RpdihyZXN1bHRSZWdpc3RlciwgaW5wdXREaXZpZGVuZCwgZGl2aXNvclJl
Z2lzdGVyKTsKKyNlbGlmIENQVShBUk02NCkKICAgICBtX2Fzc2VtYmxlci5tX2Fzc2VtYmxlci5z
ZGl2PDMyPihyZXN1bHRSZWdpc3RlciwgaW5wdXREaXZpZGVuZCwgZGl2aXNvclJlZ2lzdGVyKTsK
KyNlbmRpZgogICAgIG1fYXNzZW1ibGVyLm11bDMyKGRpdmlzb3JSZWdpc3RlciwgcmVzdWx0UmVn
aXN0ZXIpOwogICAgIHJldHVybiBtX2Fzc2VtYmxlci5icmFuY2hTdWIzMihjb25kaXRpb24sIGlu
cHV0RGl2aWRlbmQsIHJlc3VsdFJlZ2lzdGVyLCByZXN1bHRSZWdpc3Rlcik7CiAjZWxpZiBDUFUo
WDg2XzY0KQpAQCAtMTgxNyw3ICsxODU0LDcgQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6
OmdlbmVyYXRlRWxlbQogICAgIHsKICAgICAgICAgaXNTaGFyZWFibGVFbGVtZW50RGF0YS5saW5r
KCZtX2Fzc2VtYmxlcik7CiAgICAgICAgIG1fYXNzZW1ibGVyLnVyc2hpZnQzMihlbGVtZW50RGF0
YUFycmF5U2l6ZUFuZEZsYWdzLCBBc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihFbGVtZW50RGF0YTo6
YXJyYXlTaXplT2Zmc2V0KCkpLCBhdHRyaWJ1dGVBcnJheUxlbmd0aCk7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLmFkZDY0KEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKFNoYXJlYWJsZUVsZW1lbnREYXRh
OjphdHRyaWJ1dGVBcnJheU1lbW9yeU9mZnNldCgpKSwgZWxlbWVudERhdGFBZGRyZXNzLCBhdHRy
aWJ1dGVBcnJheVBvaW50ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGRQdHIoQXNzZW1ibGVy
OjpUcnVzdGVkSW1tMzIoU2hhcmVhYmxlRWxlbWVudERhdGE6OmF0dHJpYnV0ZUFycmF5TWVtb3J5
T2Zmc2V0KCkpLCBlbGVtZW50RGF0YUFkZHJlc3MsIGF0dHJpYnV0ZUFycmF5UG9pbnRlcik7CiAg
ICAgfQogCiAgICAgc2tpcFNoYXJlYWJsZS5saW5rKCZtX2Fzc2VtYmxlcik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>