<?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>197304</bug_id>
          
          <creation_ts>2019-04-25 19:27:22 -0700</creation_ts>
          <short_desc>CodeBlock::m_instructionCount is wrong</short_desc>
          <delta_ts>2019-04-30 16:38:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>guijemont</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1530605</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-04-25 19:27:22 -0700</bug_when>
    <thetext>The calculation gets op_wide wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531689</commentid>
    <comment_count>1</comment_count>
      <attachid>368605</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-04-30 13:46:22 -0700</bug_when>
    <thetext>Created attachment 368605
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531690</commentid>
    <comment_count>2</comment_count>
      <attachid>368605</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-04-30 13:48:57 -0700</bug_when>
    <thetext>Comment on attachment 368605
patch

r=me. Let&apos;s watch the bots, and adjust threshold later if needed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531749</commentid>
    <comment_count>3</comment_count>
      <attachid>368623</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-04-30 16:12:07 -0700</bug_when>
    <thetext>Created attachment 368623
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531750</commentid>
    <comment_count>4</comment_count>
      <attachid>368623</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-04-30 16:17:39 -0700</bug_when>
    <thetext>Comment on attachment 368623
patch

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

r=me

&gt; Source/JavaScriptCore/dfg/DFGDisassembler.cpp:77
&gt; +    out.print(&quot;Generated DFG JIT code for &quot;, CodeBlockWithJITType(m_graph.m_codeBlock, JITType::DFGJIT), &quot;, instruction count = &quot;, m_graph.m_codeBlock-&gt;instructionsSize(), &quot;:\n&quot;);

It would be nice if we can consistently use `instructions size` instead of `instruction count` in the log too.

&gt; Source/JavaScriptCore/dfg/DFGDriver.cpp:88
&gt; +        dataLog(&quot;DFG(Driver) compiling &quot;, *codeBlock, &quot; with &quot;, mode, &quot;, number of instructions = &quot;, codeBlock-&gt;instructionsSize(), &quot;\n&quot;);

Ditto.

&gt; Source/JavaScriptCore/dfg/DFGPlan.cpp:187
&gt; +        dataLog(&quot;DFG(Plan) compiling &quot;, *m_codeBlock, &quot; with &quot;, m_mode, &quot;, number of instructions = &quot;, m_codeBlock-&gt;instructionsSize(), &quot;\n&quot;);

Ditto.

&gt; Source/JavaScriptCore/ftl/FTLCompile.cpp:171
&gt; +        out.print(&quot;Generated &quot;, state.graph.m_plan.mode(), &quot; code for &quot;, CodeBlockWithJITType(state.graph.m_codeBlock, JITType::FTLJIT), &quot;, instruction count = &quot;, state.graph.m_codeBlock-&gt;instructionsSize(), &quot;:\n&quot;);

Ditto.

&gt; Source/JavaScriptCore/ftl/FTLLink.cpp:74
&gt; +            toCString(&quot;Generated FTL JIT code for &quot;, CodeBlockWithJITType(codeBlock, JITType::FTLJIT), &quot;, instruction count = &quot;, graph.m_codeBlock-&gt;instructionsSize(), &quot;:\n&quot;));

Ditto.

&gt; Source/JavaScriptCore/jit/JIT.cpp:908
&gt;      m_vm-&gt;machineCodeBytesPerBytecodeWordForBaselineJIT-&gt;add(

I think `machineCodeBytesPerBytecodeWordForBaselineJIT` name becomes wrong now.

&gt; Source/JavaScriptCore/jit/JITDisassembler.cpp:92
&gt; +    out.print(&quot;Generated Baseline JIT code for &quot;, CodeBlockWithJITType(m_codeBlock, JITType::BaselineJIT), &quot;, instruction count = &quot;, m_codeBlock-&gt;instructionsSize(), &quot;\n&quot;);

Ditto.

&gt; Source/JavaScriptCore/profiler/ProfilerBytecodes.cpp:43
&gt; +    , m_instructionCount(codeBlock-&gt;instructionsSize())

Should we rename this to `m_instructionsSize` too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531762</commentid>
    <comment_count>5</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-04-30 16:37:50 -0700</bug_when>
    <thetext>landed in:
https://trac.webkit.org/changeset/244811/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531764</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-04-30 16:38:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/50355305&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531765</commentid>
    <comment_count>7</comment_count>
      <attachid>368623</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-04-30 16:38:29 -0700</bug_when>
    <thetext>Comment on attachment 368623
patch

Thanks for the review. I made you suggested changes except renaming m_instructionCount in the profiler. For that, if we rename it, we should also go through with changing the name throughout the ruby tool</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>368605</attachid>
            <date>2019-04-30 13:46:22 -0700</date>
            <delta_ts>2019-04-30 16:12:07 -0700</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>6859</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ0NzkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBA
CisyMDE5LTA0LTMwICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbkNvdW50IGlzIHdyb25nCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTczMDQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHkgdGhpcyBpcyBvbmx5IHVz
ZWQgZm9yIGlubGluaW5nIGhldXJpc3RpY3MsIGJ1dCBpbiB0aGUgZnV0dXJlLAorICAgICAgICBJ
IHBsYW4gdG8gdXNlIGl0IGZvciBhbiBhY3R1YWwgYm91bmRzIGNoZWNrLiBTaW5jZSB0aGlzIGlz
IHVzZWQgdG8gZHJpdmUKKyAgICAgICAgaW5saW5pbmcgYW5kIHRpZXIgdXAgaGV1cmlzdGljcywg
dGhlcmUgaXMgYSBjaGFuY2UgaXQgYWZmZWN0cyBwZXJmb3JtYW5jZQorICAgICAgICBvbiBiZW5j
aG1hcmtzLiBNeSBpbml0aWFsIHRlc3Rpbmcgb2YgSmV0U3RyZWFtIDIncyBDTEkgdmVyc2lvbiBz
aG93cyB0aGlzCisgICAgICAgIGlzIG5ldXRyYWwuIAorCisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVEdW1wZXIuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1
bXBCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjppbnN0cnVjdGlvbkNvdW50IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29k
ZS9JbnN0cnVjdGlvblN0cmVhbS5jcHA6CisgICAgICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFt
OjpzaXplSW5CeXRlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1
Y3Rpb25TdHJlYW0uaDoKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmVzdGltYXRlZFNpemUpOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9jazo6c2V0SW5zdHJ1Y3Rpb25zKToKKwogMjAxOS0wNC0zMCAgQnJp
YW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgQXV0b21hdGlvbjogdXNl
IGEgbW9yZSBpbmZvcm1hdGl2ZSBrZXkgdG8gaW5kaWNhdGUgYXV0b21hdGlvbiBhdmFpbGFiaWxp
dHkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
RHVtcGVyLmNwcAkocmV2aXNpb24gMjQ0Nzg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEwLDcgKzIxMCw3
IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQmxvY2soQmwKICAgICAgICAgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaW5zdHJ1Y3Rpb25Db3VudCksCiAgICAgICAgIHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGxvbmc+KHdpZGVJbnN0cnVjdGlvbkNvdW50KSwKICAgICAgICAgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaW5zdHJ1Y3Rpb25XaXRoTWV0YWRhdGFDb3VudCksCi0g
ICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGluc3RydWN0aW9ucy5zaXplSW5CeXRl
cygpICsgYmxvY2stPm1ldGFkYXRhU2l6ZUluQnl0ZXMoKSksCisgICAgICAgIHN0YXRpY19jYXN0
PHVuc2lnbmVkIGxvbmc+KGluc3RydWN0aW9ucy5zaXplKCkgKyBibG9jay0+bWV0YWRhdGFTaXpl
SW5CeXRlcygpKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oYmxvY2stPm1l
dGFkYXRhU2l6ZUluQnl0ZXMoKSksCiAgICAgICAgIGJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIGJs
b2NrLT5udW1DYWxsZWVMb2NhbHMoKSwgYmxvY2stPm51bVZhcnMoKSk7CiAgICAgb3V0LnByaW50
KCI7IHNjb3BlIGF0ICIsIGJsb2NrLT5zY29wZVJlZ2lzdGVyKCkpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDI0NDc4NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOTgsNyArMjk4LDYgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soVk0qIHZtLCBT
dHJ1Y3R1cmUqIAogICAgICwgbV9oYXNEZWJ1Z2dlclN0YXRlbWVudChmYWxzZSkKICAgICAsIG1f
c3RlcHBpbmdNb2RlKFN0ZXBwaW5nTW9kZURpc2FibGVkKQogICAgICwgbV9udW1CcmVha3BvaW50
cygwKQotICAgICwgbV9pbnN0cnVjdGlvbkNvdW50KG90aGVyLm1faW5zdHJ1Y3Rpb25Db3VudCkK
ICAgICAsIG1fc2NvcGVSZWdpc3RlcihvdGhlci5tX3Njb3BlUmVnaXN0ZXIpCiAgICAgLCBtX2hh
c2gob3RoZXIubV9oYXNoKQogICAgICwgbV91bmxpbmtlZENvZGUoKm90aGVyLnZtKCksIHRoaXMs
IG90aGVyLm1fdW5saW5rZWRDb2RlLmdldCgpKQpAQCAtNTI0LDcgKzUyMyw2IEBAIGJvb2wgQ29k
ZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICBjb25zdCBJbnN0cnVjdGlvblN0
cmVhbSYgaW5zdHJ1Y3Rpb25TdHJlYW0gPSBpbnN0cnVjdGlvbnMoKTsKICAgICBmb3IgKGNvbnN0
IGF1dG8mIGluc3RydWN0aW9uIDogaW5zdHJ1Y3Rpb25TdHJlYW0pIHsKICAgICAgICAgT3Bjb2Rl
SUQgb3Bjb2RlSUQgPSBpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsKLSAgICAgICAgbV9pbnN0cnVj
dGlvbkNvdW50ICs9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogICAgICAgICBzd2l0Y2ggKG9w
Y29kZUlEKSB7CiAgICAgICAgIExJTksoT3BIYXNJbmRleGVkUHJvcGVydHksIGFycmF5UHJvZmls
ZSkKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
cmV2aXNpb24gMjQ0Nzg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zODQsNyArMzg0LDcgQEAgcHVibGljOgogCiAgICAg
c2l6ZV90IHByZWRpY3RlZE1hY2hpbmVDb2RlU2l6ZSgpOwogCi0gICAgdW5zaWduZWQgaW5zdHJ1
Y3Rpb25Db3VudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25Db3VudDsgfQorICAgIHVu
c2lnbmVkIGluc3RydWN0aW9uQ291bnQoKSBjb25zdCB7IHJldHVybiBpbnN0cnVjdGlvbnMoKS5z
aXplKCk7IH0KIAogICAgIC8vIEV4YWN0bHkgZXF1aXZhbGVudCB0byBjb2RlQmxvY2stPm93bmVy
RXhlY3V0YWJsZSgpLT5uZXdSZXBsYWNlbWVudENvZGVCbG9ja0Zvcihjb2RlQmxvY2stPnNwZWNp
YWxpemF0aW9uS2luZCgpKQogICAgIENvZGVCbG9jayogbmV3UmVwbGFjZW1lbnQoKTsKQEAgLTk2
Myw3ICs5NjMsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgdW5zaWduZWQgbV9udW1CcmVha3Bv
aW50cyA6IDMwOwogICAgICAgICB9OwogICAgIH07Ci0gICAgdW5zaWduZWQgbV9pbnN0cnVjdGlv
bkNvdW50IHsgMCB9OwogICAgIFZpcnR1YWxSZWdpc3RlciBtX3Njb3BlUmVnaXN0ZXI7CiAgICAg
bXV0YWJsZSBDb2RlQmxvY2tIYXNoIG1faGFzaDsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0luc3RydWN0aW9uU3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwCShyZXZpc2lvbiAy
NDQ3ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJl
YW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMSArMzUsNiBAQCBJbnN0cnVjdGlvblN0cmVh
bTo6SW5zdHJ1Y3Rpb25TdHJlYW0oSW5zCiAgICAgOiBtX2luc3RydWN0aW9ucyhXVEZNb3ZlKGlu
c3RydWN0aW9ucykpCiB7IH0KIAotc2l6ZV90IEluc3RydWN0aW9uU3RyZWFtOjpzaXplSW5CeXRl
cygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zLnNpemUoKTsKLX0KLQogYm9v
bCBJbnN0cnVjdGlvblN0cmVhbTo6Y29udGFpbnMoSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKSBj
b25zdAogewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rp
b25TdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5zdHJ1Y3Rpb25TdHJlYW0uaAkocmV2aXNpb24gMjQ0Nzg1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uU3RyZWFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTQx
LDggKzQxLDYgQEAgY2xhc3MgSW5zdHJ1Y3Rpb25TdHJlYW0gewogICAgIGZyaWVuZCBjbGFzcyBJ
bnN0cnVjdGlvblN0cmVhbVdyaXRlcjsKICAgICBmcmllbmQgY2xhc3MgQ2FjaGVkSW5zdHJ1Y3Rp
b25TdHJlYW07CiBwdWJsaWM6Ci0gICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3Q7Ci0KICAg
ICB1c2luZyBPZmZzZXQgPSB1bnNpZ25lZDsKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAkocmV2
aXNpb24gMjQ0Nzg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCB2b2lkIFVubGlu
a2VkQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKEpTCiAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMo
dGhpc09iamVjdC0+bV9jb25zdGFudFJlZ2lzdGVycy5kYXRhKCksIHRoaXNPYmplY3QtPm1fY29u
c3RhbnRSZWdpc3RlcnMuc2l6ZSgpKTsKICAgICBzaXplX3QgZXh0cmFNZW1vcnkgPSB0aGlzT2Jq
ZWN0LT5tX21ldGFkYXRhLT5zaXplSW5CeXRlcygpOwogICAgIGlmICh0aGlzT2JqZWN0LT5tX2lu
c3RydWN0aW9ucykKLSAgICAgICAgZXh0cmFNZW1vcnkgKz0gdGhpc09iamVjdC0+bV9pbnN0cnVj
dGlvbnMtPnNpemVJbkJ5dGVzKCk7CisgICAgICAgIGV4dHJhTWVtb3J5ICs9IHRoaXNPYmplY3Qt
Pm1faW5zdHJ1Y3Rpb25zLT5zaXplKCk7CiAgICAgdmlzaXRvci5yZXBvcnRFeHRyYU1lbW9yeVZp
c2l0ZWQoZXh0cmFNZW1vcnkpOwogfQogCkBAIC0xMDQsNyArMTA0LDcgQEAgc2l6ZV90IFVubGlu
a2VkQ29kZUJsb2NrOjplc3RpbWF0ZWRTaXplKAogICAgIFVubGlua2VkQ29kZUJsb2NrKiB0aGlz
T2JqZWN0ID0ganNDYXN0PFVubGlua2VkQ29kZUJsb2NrKj4oY2VsbCk7CiAgICAgc2l6ZV90IGV4
dHJhU2l6ZSA9IHRoaXNPYmplY3QtPm1fbWV0YWRhdGEtPnNpemVJbkJ5dGVzKCk7CiAgICAgaWYg
KHRoaXNPYmplY3QtPm1faW5zdHJ1Y3Rpb25zKQotICAgICAgICBleHRyYVNpemUgKz0gdGhpc09i
amVjdC0+bV9pbnN0cnVjdGlvbnMtPnNpemVJbkJ5dGVzKCk7CisgICAgICAgIGV4dHJhU2l6ZSAr
PSB0aGlzT2JqZWN0LT5tX2luc3RydWN0aW9ucy0+c2l6ZSgpOwogICAgIHJldHVybiBCYXNlOjpl
c3RpbWF0ZWRTaXplKGNlbGwsIHZtKSArIGV4dHJhU2l6ZTsKIH0KIApAQCAtMzEzLDcgKzMxMyw3
IEBAIHZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OnNldEluc3RydWN0aW9ucygKICAgICAgICAgbV9p
bnN0cnVjdGlvbnMgPSBXVEZNb3ZlKGluc3RydWN0aW9ucyk7CiAgICAgICAgIG1fbWV0YWRhdGEt
PmZpbmFsaXplKCk7CiAgICAgfQotICAgIEhlYXA6OmhlYXAodGhpcyktPnJlcG9ydEV4dHJhTWVt
b3J5QWxsb2NhdGVkKG1faW5zdHJ1Y3Rpb25zLT5zaXplSW5CeXRlcygpICsgbV9tZXRhZGF0YS0+
c2l6ZUluQnl0ZXMoKSk7CisgICAgSGVhcDo6aGVhcCh0aGlzKS0+cmVwb3J0RXh0cmFNZW1vcnlB
bGxvY2F0ZWQobV9pbnN0cnVjdGlvbnMtPnNpemUoKSArIG1fbWV0YWRhdGEtPnNpemVJbkJ5dGVz
KCkpOwogfQogCiBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgVW5saW5rZWRDb2RlQmxvY2s6Omlu
c3RydWN0aW9ucygpIGNvbnN0Cg==
</data>
<flag name="review"
          id="384865"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>368623</attachid>
            <date>2019-04-30 16:12:07 -0700</date>
            <delta_ts>2019-04-30 16:17:39 -0700</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>25232</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ0ODA4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcyIEBA
CisyMDE5LTA0LTMwICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbkNvdW50IGlzIHdyb25nCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTczMDQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGF0IHdlIHdlcmUgY2FsbGluZyBpbnN0
cnVjdGlvbkNvdW50KCkgd2FzIHdyb25nLCBhcyBldmlkZW5jZWQgYnkKKyAgICAgICAgdXMgdXNp
bmcgaXQgaW5jb3JyZWN0bHkgYm90aCBpbiB0aGUgc2FtcGxpbmcgcHJvZmlsZXIgYW5kIHdoZW4g
d2UKKyAgICAgICAgZHVtcGVkIGJ5dGVjb2RlIGZvciBhIGdpdmVuIENvZGVCbG9jay4gUHJpb3Ig
dG8gdGhlIGJ5dGVjb2RlIHJld3JpdGUsCisgICAgICAgIGluc3RydWN0aW9uQ291bnQoKSB3YXMg
cHJvYmFibHkgdmFsaWQgdG8gZG8gYm91bmRzIGNoZWNrcyBhZ2FpbnN0LgorICAgICAgICBIb3dl
dmVyLCB0aGlzIGlzIG5vIGxvbmdlciB0aGUgY2FzZS4gVGhpcyBwYXRjaCByZW5hbWVzIHdoYXQg
d2UgY2FsbGVkCisgICAgICAgIGluc3RydWN0aW9uQ291bnQoKSB0byBieXRlY29kZUNvc3QoKS4g
SXQgaXMgbm93IG9ubHkgdXNlZCB0byBtYWtlIGRlY2lzaW9ucworICAgICAgICBhYm91dCBpbmxp
bmluZyBhbmQgdGllciB1cCBoZXVyaXN0aWNzLiBJJ3ZlIGFsc28gbmFtZWQgb3B0aW9ucyByZWxh
dGVkIHRvCisgICAgICAgIHRoaXMgYXBwcm9wcmlhdGVseS4KKyAgICAgICAgCisgICAgICAgIFRo
aXMgcGF0Y2ggYWxzbyBpbnRyb2R1Y2VzIGluc3RydWN0aW9uc1NpemUoKS4gVGhlIHJlc3VsdCBv
ZiB0aGlzIG1ldGhvZAorICAgICAgICBpcyB2YWxpZCB0byBkbyBib3VuZHMgY2hlY2tzIGFnYWlu
c3QuCisKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmR1bXBBc3N1bWluZ0pJVFR5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om9wdGltaXphdGlvblRocmVzaG9sZFNjYWxp
bmdGYWN0b3IpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnByZWRpY3RlZE1hY2hpbmVDb2Rl
U2l6ZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6aW5zdHJ1Y3Rpb25zU2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6Ynl0ZWNvZGVDb3N0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjppbnN0cnVj
dGlvbkNvdW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nvc3Qp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpnZXRJbmxpbmluZ0JhbGFuY2Up
OgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6
Om1pZ2h0Q29tcGlsZUV2YWwpOgorICAgICAgICAoSlNDOjpERkc6Om1pZ2h0Q29tcGlsZVByb2dy
YW0pOgorICAgICAgICAoSlNDOjpERkc6Om1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ2FsbCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6bWlnaHRDb21waWxlRnVuY3Rpb25Gb3JDb25zdHJ1Y3QpOgorICAg
ICAgICAoSlNDOjpERkc6Om1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JDYWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjptaWdodElubGluZUZ1bmN0aW9uRm9yQ2xvc3VyZUNhbGwpOgorICAgICAgICAoSlND
OjpERkc6Om1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JDb25zdHJ1Y3QpOgorICAgICAgICAqIGRmZy9E
RkdDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjppc1NtYWxsRW5vdWdoVG9Jbmxp
bmVDb2RlSW50byk6CisgICAgICAgICogZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6RGlzYXNzZW1ibGVyOjpkdW1wSGVhZGVyKToKKyAgICAgICAgKiBkZmcvREZH
RHJpdmVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxlSW1wbCk6CisgICAgICAgICog
ZGZnL0RGR1BsYW4uY3BwOgorICAgICAgICAoSlNDOjpERkc6OlBsYW46OmNvbXBpbGVJblRocmVh
ZCk6CisgICAgICAgICogZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlRpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2U6OnJ1bik6CisgICAgICAg
ICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGls
ZSk6CisgICAgICAgICogZnRsL0ZUTENvbXBpbGUuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNv
bXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMaW5rLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjps
aW5rKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpsaW5rKToK
KyAgICAgICAgKiBqaXQvSklURGlzYXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SklURGlz
YXNzZW1ibGVyOjpkdW1wSGVhZGVyKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5j
cHA6CisgICAgICAgIChKU0M6OkxMSW50OjpzaG91bGRKSVQpOgorICAgICAgICAqIHByb2ZpbGVy
L1Byb2ZpbGVyQnl0ZWNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OkJ5dGVjb2Rl
czo6Qnl0ZWNvZGVzKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKyAgICAgICAgKiBy
dW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwOgorICAgICAgICAoSlNDOjp0cnlHZXRCeXRlY29k
ZUluZGV4KToKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6cHJvY2Vzc1VudmVyaWZp
ZWRTdGFja1RyYWNlcyk6CisKIDIwMTktMDQtMzAgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgVHlwZUFycmF5cyBzaG91bGQgbm90IHN0b3JlIHByb3BlcnRp
ZXMgdGhhdCBhcmUgY2Fub25pY2FsIG51bWVyaWMgaW5kaWNlcwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDI0NDc4NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBBc3N1bWluZ0pJVFR5
cGUoUHJpbgogCiAgICAgaWYgKGNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKQogICAgICAgICBv
dXQucHJpbnQoc3BlY2lhbGl6YXRpb25LaW5kKCkpOwotICAgIG91dC5wcmludCgiLCAiLCBpbnN0
cnVjdGlvbkNvdW50KCkpOworICAgIG91dC5wcmludCgiLCAiLCBpbnN0cnVjdGlvbnNTaXplKCkp
OwogICAgIGlmICh0aGlzLT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6QmFzZWxpbmVKSVQgJiYgbV9z
aG91bGRBbHdheXNCZUlubGluZWQpCiAgICAgICAgIG91dC5wcmludCgiIChTaG91bGRBbHdheXNC
ZUlubGluZWQpIik7CiAgICAgaWYgKG93bmVyRXhlY3V0YWJsZSgpLT5uZXZlcklubGluZSgpKQpA
QCAtMjk4LDcgKzI5OCw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJl
KiAKICAgICAsIG1faGFzRGVidWdnZXJTdGF0ZW1lbnQoZmFsc2UpCiAgICAgLCBtX3N0ZXBwaW5n
TW9kZShTdGVwcGluZ01vZGVEaXNhYmxlZCkKICAgICAsIG1fbnVtQnJlYWtwb2ludHMoMCkKLSAg
ICAsIG1faW5zdHJ1Y3Rpb25Db3VudChvdGhlci5tX2luc3RydWN0aW9uQ291bnQpCisgICAgLCBt
X2J5dGVjb2RlQ29zdChvdGhlci5tX2J5dGVjb2RlQ29zdCkKICAgICAsIG1fc2NvcGVSZWdpc3Rl
cihvdGhlci5tX3Njb3BlUmVnaXN0ZXIpCiAgICAgLCBtX2hhc2gob3RoZXIubV9oYXNoKQogICAg
ICwgbV91bmxpbmtlZENvZGUoKm90aGVyLnZtKCksIHRoaXMsIG90aGVyLm1fdW5saW5rZWRDb2Rl
LmdldCgpKQpAQCAtNTI0LDcgKzUyNCw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFMKICAgICBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25TdHJl
YW0gPSBpbnN0cnVjdGlvbnMoKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGluc3RydWN0aW9uIDog
aW5zdHJ1Y3Rpb25TdHJlYW0pIHsKICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnN0cnVj
dGlvbi0+b3Bjb2RlSUQoKTsKLSAgICAgICAgbV9pbnN0cnVjdGlvbkNvdW50ICs9IG9wY29kZUxl
bmd0aHNbb3Bjb2RlSURdOworICAgICAgICBtX2J5dGVjb2RlQ29zdCArPSBvcGNvZGVMZW5ndGhz
W29wY29kZUlEXTsKICAgICAgICAgc3dpdGNoIChvcGNvZGVJRCkgewogICAgICAgICBMSU5LKE9w
SGFzSW5kZXhlZFByb3BlcnR5LCBhcnJheVByb2ZpbGUpCiAKQEAgLTIzMzUsMTcgKzIzMzUsMTcg
QEAgZG91YmxlIENvZGVCbG9jazo6b3B0aW1pemF0aW9uVGhyZXNob2xkUwogICAgIGNvbnN0IGRv
dWJsZSBjID0gMC4wOwogICAgIGNvbnN0IGRvdWJsZSBkID0gMC44MjU5MTQ7CiAgICAgCi0gICAg
ZG91YmxlIGluc3RydWN0aW9uQ291bnQgPSB0aGlzLT5pbnN0cnVjdGlvbkNvdW50KCk7CisgICAg
ZG91YmxlIGJ5dGVjb2RlQ29zdCA9IHRoaXMtPmJ5dGVjb2RlQ29zdCgpOwogICAgIAotICAgIEFT
U0VSVChpbnN0cnVjdGlvbkNvdW50KTsgLy8gTWFrZSBzdXJlIHRoaXMgaXMgY2FsbGVkIG9ubHkg
YWZ0ZXIgd2UgaGF2ZSBhbiBpbnN0cnVjdGlvbiBzdHJlYW07IG90aGVyd2lzZSBpdCdsbCBqdXN0
IHJldHVybiB0aGUgdmFsdWUgb2YgZCwgd2hpY2ggbWFrZXMgbm8gc2Vuc2UuCisgICAgQVNTRVJU
KGJ5dGVjb2RlQ29zdCk7IC8vIE1ha2Ugc3VyZSB0aGlzIGlzIGNhbGxlZCBvbmx5IGFmdGVyIHdl
IGhhdmUgYW4gaW5zdHJ1Y3Rpb24gc3RyZWFtOyBvdGhlcndpc2UgaXQnbGwganVzdCByZXR1cm4g
dGhlIHZhbHVlIG9mIGQsIHdoaWNoIG1ha2VzIG5vIHNlbnNlLgogICAgIAotICAgIGRvdWJsZSBy
ZXN1bHQgPSBkICsgYSAqIHNxcnQoaW5zdHJ1Y3Rpb25Db3VudCArIGIpICsgYyAqIGluc3RydWN0
aW9uQ291bnQ7CisgICAgZG91YmxlIHJlc3VsdCA9IGQgKyBhICogc3FydChieXRlY29kZUNvc3Qg
KyBiKSArIGMgKiBieXRlY29kZUNvc3Q7CiAgICAgCiAgICAgcmVzdWx0ICo9IGNvZGVUeXBlVGhy
ZXNob2xkTXVsdGlwbGllcigpOwogICAgIAogICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkp
IHsKICAgICAgICAgZGF0YUxvZygKLSAgICAgICAgICAgICp0aGlzLCAiOiBpbnN0cnVjdGlvbiBj
b3VudCBpcyAiLCBpbnN0cnVjdGlvbkNvdW50LAorICAgICAgICAgICAgKnRoaXMsICI6IGJ5dGVj
b2RlIGNvc3QgaXMgIiwgYnl0ZWNvZGVDb3N0LAogICAgICAgICAgICAgIiwgc2NhbGluZyBleGVj
dXRpb24gY291bnRlciBieSAiLCByZXN1bHQsICIgKiAiLCBjb2RlVHlwZVRocmVzaG9sZE11bHRp
cGxpZXIoKSwKICAgICAgICAgICAgICJcbiIpOwogICAgIH0KQEAgLTI4NzAsNyArMjg3MCw3IEBA
IHNpemVfdCBDb2RlQmxvY2s6OnByZWRpY3RlZE1hY2hpbmVDb2RlU2kKICAgICBpZiAobXVsdGlw
bGllciA8IDAgfHwgbXVsdGlwbGllciA+IDEwMDApCiAgICAgICAgIHJldHVybiAwOwogICAgIAot
ICAgIGRvdWJsZSBkb3VibGVSZXN1bHQgPSBtdWx0aXBsaWVyICogaW5zdHJ1Y3Rpb25Db3VudCgp
OworICAgIGRvdWJsZSBkb3VibGVSZXN1bHQgPSBtdWx0aXBsaWVyICogYnl0ZWNvZGVDb3N0KCk7
CiAgICAgCiAgICAgLy8gQmUgZXZlbiBtb3JlIHBhcmFub2lkOiBzaWxlbnRseSByZWplY3QgdmFs
dWVzIHRoYXQgd29uJ3QgZml0IGludG8gYSBzaXplX3QuIElmCiAgICAgLy8gdGhlIGZ1bmN0aW9u
IGlzIHNvIGh1Z2UgdGhhdCB3ZSBjYW4ndCBldmVuIGZpdCBpdCBpbnRvIHZpcnR1YWwgbWVtb3J5
IHRoZW4gd2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgJKHJldmlzaW9uIDI0NDc4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzg0LDcgKzM4NCw4IEBAIHB1YmxpYzoKIAog
ICAgIHNpemVfdCBwcmVkaWN0ZWRNYWNoaW5lQ29kZVNpemUoKTsKIAotICAgIHVuc2lnbmVkIGlu
c3RydWN0aW9uQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2luc3RydWN0aW9uQ291bnQ7IH0KKyAg
ICB1bnNpZ25lZCBpbnN0cnVjdGlvbnNTaXplKCkgY29uc3QgeyByZXR1cm4gaW5zdHJ1Y3Rpb25z
KCkuc2l6ZSgpOyB9CisgICAgdW5zaWduZWQgYnl0ZWNvZGVDb3N0KCkgY29uc3QgeyByZXR1cm4g
bV9ieXRlY29kZUNvc3Q7IH0KIAogICAgIC8vIEV4YWN0bHkgZXF1aXZhbGVudCB0byBjb2RlQmxv
Y2stPm93bmVyRXhlY3V0YWJsZSgpLT5uZXdSZXBsYWNlbWVudENvZGVCbG9ja0Zvcihjb2RlQmxv
Y2stPnNwZWNpYWxpemF0aW9uS2luZCgpKQogICAgIENvZGVCbG9jayogbmV3UmVwbGFjZW1lbnQo
KTsKQEAgLTk2Myw3ICs5NjQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgdW5zaWduZWQgbV9u
dW1CcmVha3BvaW50cyA6IDMwOwogICAgICAgICB9OwogICAgIH07Ci0gICAgdW5zaWduZWQgbV9p
bnN0cnVjdGlvbkNvdW50IHsgMCB9OworICAgIHVuc2lnbmVkIG1fYnl0ZWNvZGVDb3N0IHsgMCB9
OwogICAgIFZpcnR1YWxSZWdpc3RlciBtX3Njb3BlUmVnaXN0ZXI7CiAgICAgbXV0YWJsZSBDb2Rl
QmxvY2tIYXNoIG1faGFzaDsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDI0NDc4NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTU5LDcgKzE1NTksNyBAQCB1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5pbmdDb3N0KENh
CiAgICAgVkVSQk9TRV9MT0coIiAgICBJbmxpbmluZyBzaG91bGQgYmUgcG9zc2libGUuXG4iKTsK
ICAgICAKICAgICAvLyBJdCBtaWdodCBiZSBwb3NzaWJsZSB0byBpbmxpbmUuCi0gICAgcmV0dXJu
IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpOworICAgIHJldHVybiBjb2RlQmxvY2stPmJ5
dGVjb2RlQ29zdCgpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgpAQCAt
MTkwNCwxMSArMTkwNCwxMSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVWYXJhcmdzSW5s
aW5pCiAKIHVuc2lnbmVkIEJ5dGVDb2RlUGFyc2VyOjpnZXRJbmxpbmluZ0JhbGFuY2UoY29uc3Qg
Q2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNw
ZWNpYWxpemF0aW9uS2luZCkKIHsKLSAgICB1bnNpZ25lZCBpbmxpbmluZ0JhbGFuY2UgPSBPcHRp
b25zOjptYXhpbXVtRnVuY3Rpb25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3Vu
dCgpOworICAgIHVuc2lnbmVkIGlubGluaW5nQmFsYW5jZSA9IE9wdGlvbnM6Om1heGltdW1GdW5j
dGlvbkZvckNhbGxJbmxpbmVDYW5kaWRhdGVCeXRlY29kZUNvc3QoKTsKICAgICBpZiAoc3BlY2lh
bGl6YXRpb25LaW5kID09IENvZGVGb3JDb25zdHJ1Y3QpCi0gICAgICAgIGlubGluaW5nQmFsYW5j
ZSA9IHN0ZDo6bWluKGlubGluaW5nQmFsYW5jZSwgT3B0aW9uczo6bWF4aW11bUZ1bmN0aW9uRm9y
Q29uc3RydWN0SW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCgpKTsKKyAgICAgICAgaW5s
aW5pbmdCYWxhbmNlID0gc3RkOjptaW4oaW5saW5pbmdCYWxhbmNlLCBPcHRpb25zOjptYXhpbXVt
RnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVCeXRlY29vZGVDb3N0KCkpOwogICAg
IGlmIChjYWxsTGlua1N0YXR1cy5pc0Nsb3N1cmVDYWxsKCkpCi0gICAgICAgIGlubGluaW5nQmFs
YW5jZSA9IHN0ZDo6bWluKGlubGluaW5nQmFsYW5jZSwgT3B0aW9uczo6bWF4aW11bUZ1bmN0aW9u
Rm9yQ2xvc3VyZUNhbGxJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCkpOworICAgICAg
ICBpbmxpbmluZ0JhbGFuY2UgPSBzdGQ6Om1pbihpbmxpbmluZ0JhbGFuY2UsIE9wdGlvbnM6Om1h
eGltdW1GdW5jdGlvbkZvckNsb3N1cmVDYWxsSW5saW5lQ2FuZGlkYXRlQnl0ZWNvZGVDb3N0KCkp
OwogICAgIHJldHVybiBpbmxpbmluZ0JhbGFuY2U7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDI0NDc4NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDksNDEgKzQ5LDQxIEBAIGJvb2wgaXNTdXBwb3J0ZWRGb3JJbmxpbmluZyhDb2Rl
QmxvY2sqIGMKIGJvb2wgbWlnaHRDb21waWxlRXZhbChDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsK
ICAgICByZXR1cm4gaXNTdXBwb3J0ZWQoKQotICAgICAgICAmJiBjb2RlQmxvY2stPmluc3RydWN0
aW9uQ291bnQoKSA8PSBPcHRpb25zOjptYXhpbXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1
Y3Rpb25Db3VudCgpCisgICAgICAgICYmIGNvZGVCbG9jay0+Ynl0ZWNvZGVDb3N0KCkgPD0gT3B0
aW9uczo6bWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUJ5dGVjb2RlQ29zdCgpCiAgICAgICAg
ICYmIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzT2tUb09wdGltaXplKCk7CiB9CiBi
b29sIG1pZ2h0Q29tcGlsZVByb2dyYW0oQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgcmV0
dXJuIGlzU3VwcG9ydGVkKCkKLSAgICAgICAgJiYgY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50
KCkgPD0gT3B0aW9uczo6bWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291
bnQoKQorICAgICAgICAmJiBjb2RlQmxvY2stPmJ5dGVjb2RlQ29zdCgpIDw9IE9wdGlvbnM6Om1h
eGltdW1PcHRpbWl6YXRpb25DYW5kaWRhdGVCeXRlY29kZUNvc3QoKQogICAgICAgICAmJiBjb2Rl
QmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc09rVG9PcHRpbWl6ZSgpOwogfQogYm9vbCBtaWdo
dENvbXBpbGVGdW5jdGlvbkZvckNhbGwoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgcmV0
dXJuIGlzU3VwcG9ydGVkKCkKLSAgICAgICAgJiYgY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50
KCkgPD0gT3B0aW9uczo6bWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291
bnQoKQorICAgICAgICAmJiBjb2RlQmxvY2stPmJ5dGVjb2RlQ29zdCgpIDw9IE9wdGlvbnM6Om1h
eGltdW1PcHRpbWl6YXRpb25DYW5kaWRhdGVCeXRlY29kZUNvc3QoKQogICAgICAgICAmJiBjb2Rl
QmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc09rVG9PcHRpbWl6ZSgpOwogfQogYm9vbCBtaWdo
dENvbXBpbGVGdW5jdGlvbkZvckNvbnN0cnVjdChDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICAg
ICByZXR1cm4gaXNTdXBwb3J0ZWQoKQotICAgICAgICAmJiBjb2RlQmxvY2stPmluc3RydWN0aW9u
Q291bnQoKSA8PSBPcHRpb25zOjptYXhpbXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rp
b25Db3VudCgpCisgICAgICAgICYmIGNvZGVCbG9jay0+Ynl0ZWNvZGVDb3N0KCkgPD0gT3B0aW9u
czo6bWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUJ5dGVjb2RlQ29zdCgpCiAgICAgICAgICYm
IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzT2tUb09wdGltaXplKCk7CiB9CiAKIGJv
b2wgbWlnaHRJbmxpbmVGdW5jdGlvbkZvckNhbGwoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0g
ICAgcmV0dXJuIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGlt
dW1GdW5jdGlvbkZvckNhbGxJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCkKKyAgICBy
ZXR1cm4gY29kZUJsb2NrLT5ieXRlY29kZUNvc3QoKSA8PSBPcHRpb25zOjptYXhpbXVtRnVuY3Rp
b25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRlQnl0ZWNvZGVDb3N0KCkKICAgICAgICAgJiYgaXNTdXBw
b3J0ZWRGb3JJbmxpbmluZyhjb2RlQmxvY2spOwogfQogYm9vbCBtaWdodElubGluZUZ1bmN0aW9u
Rm9yQ2xvc3VyZUNhbGwoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgcmV0dXJuIGNvZGVC
bG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1GdW5jdGlvbkZvckNs
b3N1cmVDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCgpCisgICAgcmV0dXJuIGNv
ZGVCbG9jay0+Ynl0ZWNvZGVDb3N0KCkgPD0gT3B0aW9uczo6bWF4aW11bUZ1bmN0aW9uRm9yQ2xv
c3VyZUNhbGxJbmxpbmVDYW5kaWRhdGVCeXRlY29kZUNvc3QoKQogICAgICAgICAmJiBpc1N1cHBv
cnRlZEZvcklubGluaW5nKGNvZGVCbG9jayk7CiB9CiBib29sIG1pZ2h0SW5saW5lRnVuY3Rpb25G
b3JDb25zdHJ1Y3QoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgcmV0dXJuIGNvZGVCbG9j
ay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1GdW5jdGlvbkZvckNvbnN0
cnVjdElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQoKQorICAgIHJldHVybiBjb2RlQmxv
Y2stPmJ5dGVjb2RlQ29zdCgpIDw9IE9wdGlvbnM6Om1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVj
dElubGluZUNhbmRpZGF0ZUJ5dGVjb29kZUNvc3QoKQogICAgICAgICAmJiBpc1N1cHBvcnRlZEZv
cklubGluaW5nKGNvZGVCbG9jayk7CiB9CiBib29sIGNhblVzZU9TUkV4aXRGdXp6aW5nKENvZGVC
bG9jayogY29kZUJsb2NrKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5oCShyZXZpc2lvbiAyNDQ3ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYsNyArMTY2LDcgQEAg
aW5saW5lIENhcGFiaWxpdHlMZXZlbCBpbmxpbmVGdW5jdGlvbkZvcgogCiBpbmxpbmUgYm9vbCBp
c1NtYWxsRW5vdWdoVG9JbmxpbmVDb2RlSW50byhDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKLSAg
ICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9uczo6bWF4aW11
bUlubGluaW5nQ2FsbGVyU2l6ZSgpOworICAgIHJldHVybiBjb2RlQmxvY2stPmJ5dGVjb2RlQ29z
dCgpIDw9IE9wdGlvbnM6Om1heGltdW1JbmxpbmluZ0NhbGxlckJ5dGVjb2RlQ29zdCgpOwogfQog
CiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCShyZXZpc2lvbiAyNDQ3ODUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc0LDcgKzc0LDcgQEAgdm9pZCBEaXNhc3NlbWJsZXI6OnJlcG9ydFRvUHJvZmlsZXIoUHJvZgog
CiB2b2lkIERpc2Fzc2VtYmxlcjo6ZHVtcEhlYWRlcihQcmludFN0cmVhbSYgb3V0LCBMaW5rQnVm
ZmVyJiBsaW5rQnVmZmVyKQogewotICAgIG91dC5wcmludCgiR2VuZXJhdGVkIERGRyBKSVQgY29k
ZSBmb3IgIiwgQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9ncmFwaC5tX2NvZGVCbG9jaywgSklUVHlw
ZTo6REZHSklUKSwgIiwgaW5zdHJ1Y3Rpb24gY291bnQgPSAiLCBtX2dyYXBoLm1fY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbkNvdW50KCksICI6XG4iKTsKKyAgICBvdXQucHJpbnQoIkdlbmVyYXRlZCBE
RkcgSklUIGNvZGUgZm9yICIsIENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fZ3JhcGgubV9jb2RlQmxv
Y2ssIEpJVFR5cGU6OkRGR0pJVCksICIsIGluc3RydWN0aW9uIGNvdW50ID0gIiwgbV9ncmFwaC5t
X2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zU2l6ZSgpLCAiOlxuIik7CiAgICAgb3V0LnByaW50KCIg
ICAgT3B0aW1pemVkIHdpdGggZXhlY3V0aW9uIGNvdW50ZXIgPSAiLCBtX2dyYXBoLm1fcHJvZmls
ZWRCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKSwgIlxuIik7CiAgICAgb3V0LnByaW50KCIgICAg
Q29kZSBhdCBbIiwgUmF3UG9pbnRlcihsaW5rQnVmZmVyLmRlYnVnQWRkcmVzcygpKSwgIiwgIiwg
UmF3UG9pbnRlcihzdGF0aWNfY2FzdDxjaGFyKj4obGlua0J1ZmZlci5kZWJ1Z0FkZHJlc3MoKSkg
KyBsaW5rQnVmZmVyLnNpemUoKSksICIpOlxuIik7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RyaXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEcml2ZXIuY3BwCShyZXZpc2lvbiAyNDQ3ODUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcg
QEAgc3RhdGljIENvbXBpbGF0aW9uUmVzdWx0IGNvbXBpbGVJbXBsKAogICAgIHVuc2lnbmVkIG9z
ckVudHJ5Qnl0ZWNvZGVJbmRleCwgY29uc3QgT3BlcmFuZHM8T3B0aW9uYWw8SlNWYWx1ZT4+JiBt
dXN0SGFuZGxlVmFsdWVzLAogICAgIFJlZjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+JiYg
Y2FsbGJhY2spCiB7Ci0gICAgaWYgKCFPcHRpb25zOjpieXRlY29kZVJhbmdlVG9ERkdDb21waWxl
KCkuaXNJblJhbmdlKGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpKQorICAgIGlmICghT3B0
aW9uczo6Ynl0ZWNvZGVSYW5nZVRvREZHQ29tcGlsZSgpLmlzSW5SYW5nZShjb2RlQmxvY2stPmlu
c3RydWN0aW9uc1NpemUoKSkKICAgICAgICAgfHwgIWVuc3VyZUdsb2JhbERGR1doaXRlbGlzdCgp
LmNvbnRhaW5zKGNvZGVCbG9jaykpCiAgICAgICAgIHJldHVybiBDb21waWxhdGlvbkZhaWxlZDsK
ICAgICAKQEAgLTg1LDcgKzg1LDcgQEAgc3RhdGljIENvbXBpbGF0aW9uUmVzdWx0IGNvbXBpbGVJ
bXBsKAogICAgIEFTU0VSVCghcHJvZmlsZWRERkdDb2RlQmxvY2sgfHwgcHJvZmlsZWRERkdDb2Rl
QmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpERkdKSVQpOwogICAgIAogICAgIGlmIChsb2dD
b21waWxhdGlvbkNoYW5nZXMobW9kZSkpCi0gICAgICAgIGRhdGFMb2coIkRGRyhEcml2ZXIpIGNv
bXBpbGluZyAiLCAqY29kZUJsb2NrLCAiIHdpdGggIiwgbW9kZSwgIiwgbnVtYmVyIG9mIGluc3Ry
dWN0aW9ucyA9ICIsIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpLCAiXG4iKTsKKyAgICAg
ICAgZGF0YUxvZygiREZHKERyaXZlcikgY29tcGlsaW5nICIsICpjb2RlQmxvY2ssICIgd2l0aCAi
LCBtb2RlLCAiLCBudW1iZXIgb2YgaW5zdHJ1Y3Rpb25zID0gIiwgY29kZUJsb2NrLT5pbnN0cnVj
dGlvbnNTaXplKCksICJcbiIpOwogICAgIAogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGFueSBzdHVi
cyB0aGF0IHRoZSBERkcgaXMgZ29pbmcgdG8gdXNlIGFyZSBpbml0aWFsaXplZC4gV2Ugd2FudCB0
bwogICAgIC8vIG1ha2Ugc3VyZSB0aGF0IGFsbCBKSVQgY29kZSBnZW5lcmF0aW9uIGRvZXMgZmlu
YWxpemF0aW9uIG9uIHRoZSBtYWluIHRocmVhZC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUGxhbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQbGFuLmNwcAkocmV2aXNpb24gMjQ0Nzg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQbGFuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQg
UGxhbjo6Y29tcGlsZUluVGhyZWFkKFRocmVhZERhdGEqIHQKICAgICBDb21waWxhdGlvblNjb3Bl
IGNvbXBpbGF0aW9uU2NvcGU7CiAKICAgICBpZiAobG9nQ29tcGlsYXRpb25DaGFuZ2VzKG1fbW9k
ZSkgfHwgT3B0aW9uczo6bG9nUGhhc2VUaW1lcygpKQotICAgICAgICBkYXRhTG9nKCJERkcoUGxh
bikgY29tcGlsaW5nICIsICptX2NvZGVCbG9jaywgIiB3aXRoICIsIG1fbW9kZSwgIiwgbnVtYmVy
IG9mIGluc3RydWN0aW9ucyA9ICIsIG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCksICJc
biIpOworICAgICAgICBkYXRhTG9nKCJERkcoUGxhbikgY29tcGlsaW5nICIsICptX2NvZGVCbG9j
aywgIiB3aXRoICIsIG1fbW9kZSwgIiwgbnVtYmVyIG9mIGluc3RydWN0aW9ucyA9ICIsIG1fY29k
ZUJsb2NrLT5pbnN0cnVjdGlvbnNTaXplKCksICJcbiIpOwogCiAgICAgQ29tcGlsYXRpb25QYXRo
IHBhdGggPSBjb21waWxlSW5UaHJlYWRJbXBsKCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNw
cAkocmV2aXNpb24gMjQ0Nzg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVy
VXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBA
QCBwdWJsaWM6CiAgICAgICAgIGlmIChtX2dyYXBoLm1fcHJvZmlsZWRCbG9jay0+bV9kaWRGYWls
RlRMQ29tcGlsYXRpb24pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYg
KCFPcHRpb25zOjpieXRlY29kZVJhbmdlVG9GVExDb21waWxlKCkuaXNJblJhbmdlKG1fZ3JhcGgu
bV9wcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkpKQorICAgICAgICBpZiAoIU9wdGlv
bnM6OmJ5dGVjb2RlUmFuZ2VUb0ZUTENvbXBpbGUoKS5pc0luUmFuZ2UobV9ncmFwaC5tX3Byb2Zp
bGVkQmxvY2stPmluc3RydWN0aW9uc1NpemUoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICAgICAgaWYgKCFlbnN1cmVHbG9iYWxGVExXaGl0ZWxpc3QoKS5jb250YWlucyhtX2dy
YXBoLm1fcHJvZmlsZWRCbG9jaykpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyNDQ3ODUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMSw3
ICs0MDEsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAKIENh
cGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKEdyYXBoJiBncmFwaCkKIHsKLSAgICBpZiAoZ3JhcGgu
bV9jb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA+IE9wdGlvbnM6Om1heGltdW1GVExDYW5k
aWRhdGVJbnN0cnVjdGlvbkNvdW50KCkpIHsKKyAgICBpZiAoZ3JhcGgubV9jb2RlQmxvY2stPmJ5
dGVjb2RlQ29zdCgpID4gT3B0aW9uczo6bWF4aW11bUZUTENhbmRpZGF0ZUJ5dGVjb2RlQ29zdCgp
KSB7CiAgICAgICAgIGlmICh2ZXJib3NlQ2FwYWJpbGl0aWVzKCkpCiAgICAgICAgICAgICBkYXRh
TG9nKCJGVEwgcmVqZWN0aW5nICIsICpncmFwaC5tX2NvZGVCbG9jaywgIiBiZWNhdXNlIGl0J3Mg
dG9vIGJpZy5cbiIpOwogICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAkocmV2aXNpb24gMjQ0Nzg1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6
UmUKICAgICBpZiAoQjM6OkFpcjo6RGlzYXNzZW1ibGVyKiBkaXNhc3NlbWJsZXIgPSBzdGF0ZS5w
cm9jLT5jb2RlKCkuZGlzYXNzZW1ibGVyKCkpIHsKICAgICAgICAgUHJpbnRTdHJlYW0mIG91dCA9
IFdURjo6ZGF0YUZpbGUoKTsKIAotICAgICAgICBvdXQucHJpbnQoIkdlbmVyYXRlZCAiLCBzdGF0
ZS5ncmFwaC5tX3BsYW4ubW9kZSgpLCAiIGNvZGUgZm9yICIsIENvZGVCbG9ja1dpdGhKSVRUeXBl
KHN0YXRlLmdyYXBoLm1fY29kZUJsb2NrLCBKSVRUeXBlOjpGVExKSVQpLCAiLCBpbnN0cnVjdGlv
biBjb3VudCA9ICIsIHN0YXRlLmdyYXBoLm1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCks
ICI6XG4iKTsKKyAgICAgICAgb3V0LnByaW50KCJHZW5lcmF0ZWQgIiwgc3RhdGUuZ3JhcGgubV9w
bGFuLm1vZGUoKSwgIiBjb2RlIGZvciAiLCBDb2RlQmxvY2tXaXRoSklUVHlwZShzdGF0ZS5ncmFw
aC5tX2NvZGVCbG9jaywgSklUVHlwZTo6RlRMSklUKSwgIiwgaW5zdHJ1Y3Rpb24gY291bnQgPSAi
LCBzdGF0ZS5ncmFwaC5tX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zU2l6ZSgpLCAiOlxuIik7CiAK
ICAgICAgICAgTGlua0J1ZmZlciYgbGlua0J1ZmZlciA9ICpzdGF0ZS5maW5hbGl6ZXItPmIzQ29k
ZUxpbmtCdWZmZXI7CiAgICAgICAgIEIzOjpWYWx1ZSogY3VycmVudEIzVmFsdWUgPSBudWxscHRy
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCShyZXZpc2lvbiAyNDQ3
ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgaWYgKFVO
TElLRUxZKGNvbXBpbGF0aW9uKSkgewogICAgICAgICBjb21waWxhdGlvbi0+YWRkRGVzY3JpcHRp
b24oCiAgICAgICAgICAgICBQcm9maWxlcjo6T3JpZ2luU3RhY2soKSwKLSAgICAgICAgICAgIHRv
Q1N0cmluZygiR2VuZXJhdGVkIEZUTCBKSVQgY29kZSBmb3IgIiwgQ29kZUJsb2NrV2l0aEpJVFR5
cGUoY29kZUJsb2NrLCBKSVRUeXBlOjpGVExKSVQpLCAiLCBpbnN0cnVjdGlvbiBjb3VudCA9ICIs
IGdyYXBoLm1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCksICI6XG4iKSk7CisgICAgICAg
ICAgICB0b0NTdHJpbmcoIkdlbmVyYXRlZCBGVEwgSklUIGNvZGUgZm9yICIsIENvZGVCbG9ja1dp
dGhKSVRUeXBlKGNvZGVCbG9jaywgSklUVHlwZTo6RlRMSklUKSwgIiwgaW5zdHJ1Y3Rpb24gY291
bnQgPSAiLCBncmFwaC5tX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zU2l6ZSgpLCAiOlxuIikpOwog
ICAgICAgICAKICAgICAgICAgZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOwogICAgICAgICBn
cmFwaC5lbnN1cmVTU0FOYXR1cmFsTG9vcHMoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAJKHJldmlzaW9uIDI0NDc4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTA3LDcgKzkwNyw3IEBAIENvbXBpbGF0aW9uUmVzdWx0
IEpJVDo6bGluaygpCiAgICAgCiAgICAgbV92bS0+bWFjaGluZUNvZGVCeXRlc1BlckJ5dGVjb2Rl
V29yZEZvckJhc2VsaW5lSklULT5hZGQoCiAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4ocmVz
dWx0LnNpemUoKSkgLwotICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KG1fY29kZUJsb2NrLT5p
bnN0cnVjdGlvbkNvdW50KCkpKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihtX2NvZGVC
bG9jay0+Ynl0ZWNvZGVDb3N0KCkpKTsKIAogICAgIG1fY29kZUJsb2NrLT5zaHJpbmtUb0ZpdChD
b2RlQmxvY2s6OkxhdGVTaHJpbmspOwogICAgIG1fY29kZUJsb2NrLT5zZXRKSVRDb2RlKApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGlzYXNzZW1ibGVyLmNwcAkocmV2
aXNpb24gMjQ0Nzg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXNhc3NlbWJs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgSklURGlzYXNzZW1i
bGVyOjpyZXBvcnRUb1Byb2ZpbGVyKFAKIAogdm9pZCBKSVREaXNhc3NlbWJsZXI6OmR1bXBIZWFk
ZXIoUHJpbnRTdHJlYW0mIG91dCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKIHsKLSAgICBvdXQu
cHJpbnQoIkdlbmVyYXRlZCBCYXNlbGluZSBKSVQgY29kZSBmb3IgIiwgQ29kZUJsb2NrV2l0aEpJ
VFR5cGUobV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklUKSwgIiwgaW5zdHJ1Y3Rpb24g
Y291bnQgPSAiLCBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpLCAiXG4iKTsKKyAgICBv
dXQucHJpbnQoIkdlbmVyYXRlZCBCYXNlbGluZSBKSVQgY29kZSBmb3IgIiwgQ29kZUJsb2NrV2l0
aEpJVFR5cGUobV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklUKSwgIiwgaW5zdHJ1Y3Rp
b24gY291bnQgPSAiLCBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zU2l6ZSgpLCAiXG4iKTsKICAg
ICBvdXQucHJpbnQoIiAgIFNvdXJjZTogIiwgbV9jb2RlQmxvY2stPnNvdXJjZUNvZGVPbk9uZUxp
bmUoKSwgIlxuIik7CiAgICAgb3V0LnByaW50KCIgICBDb2RlIGF0IFsiLCBSYXdQb2ludGVyKGxp
bmtCdWZmZXIuZGVidWdBZGRyZXNzKCkpLCAiLCAiLCBSYXdQb2ludGVyKHN0YXRpY19jYXN0PGNo
YXIqPihsaW5rQnVmZmVyLmRlYnVnQWRkcmVzcygpKSArIGxpbmtCdWZmZXIuc2l6ZSgpKSwgIik6
XG4iKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAkocmV2aXNpb24gMjQ0Nzg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU3LDcgKzM1Nyw3IEBA
IHN0YXRpYyBGdW5jdGlvbldoaXRlbGlzdCYgZW5zdXJlR2xvYmFsSkkKIAogaW5saW5lIGJvb2wg
c2hvdWxkSklUKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIGlmICghT3B0aW9uczo6Ynl0
ZWNvZGVSYW5nZVRvSklUQ29tcGlsZSgpLmlzSW5SYW5nZShjb2RlQmxvY2stPmluc3RydWN0aW9u
Q291bnQoKSkKKyAgICBpZiAoIU9wdGlvbnM6OmJ5dGVjb2RlUmFuZ2VUb0pJVENvbXBpbGUoKS5p
c0luUmFuZ2UoY29kZUJsb2NrLT5pbnN0cnVjdGlvbnNTaXplKCkpCiAgICAgICAgIHx8ICFlbnN1
cmVHbG9iYWxKSVRXaGl0ZWxpc3QoKS5jb250YWlucyhjb2RlQmxvY2spKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxl
ckJ5dGVjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL1Byb2ZpbGVyQnl0ZWNvZGVzLmNwcAkocmV2aXNpb24gMjQ0Nzg1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNyArNDAsNyBAQCBCeXRlY29kZXM6OkJ5dGVjb2RlcyhzaXplX3QgaWQsIENvZGVC
bG9jCiAgICAgLCBtX2luZmVycmVkTmFtZShjb2RlQmxvY2stPmluZmVycmVkTmFtZSgpKQogICAg
ICwgbV9zb3VyY2VDb2RlKGNvZGVCbG9jay0+c291cmNlQ29kZUZvclRvb2xzKCkpCiAgICAgLCBt
X2hhc2goY29kZUJsb2NrLT5oYXNoKCkpCi0gICAgLCBtX2luc3RydWN0aW9uQ291bnQoY29kZUJs
b2NrLT5pbnN0cnVjdGlvbkNvdW50KCkpCisgICAgLCBtX2luc3RydWN0aW9uQ291bnQoY29kZUJs
b2NrLT5pbnN0cnVjdGlvbnNTaXplKCkpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDI0NDc4NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzAwLDEzICszMDAs
MTMgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbgogICAgIFwKICAg
ICB2KGJvb2wsIGJyZWFrT25UaHJvdywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIFwK
LSAgICB2KHVuc2lnbmVkLCBtYXhpbXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25D
b3VudCwgMTAwMDAwLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICB2KHVuc2lnbmVkLCBtYXhpbXVt
T3B0aW1pemF0aW9uQ2FuZGlkYXRlQnl0ZWNvZGVDb3N0LCAxMDAwMDAsIE5vcm1hbCwgbnVsbHB0
cikgXAogICAgIFwKLSAgICB2KHVuc2lnbmVkLCBtYXhpbXVtRnVuY3Rpb25Gb3JDYWxsSW5saW5l
Q2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCwgMTIwLCBOb3JtYWwsIG51bGxwdHIpIFwKLSAgICB2
KHVuc2lnbmVkLCBtYXhpbXVtRnVuY3Rpb25Gb3JDbG9zdXJlQ2FsbElubGluZUNhbmRpZGF0ZUlu
c3RydWN0aW9uQ291bnQsIDEwMCwgTm9ybWFsLCBudWxscHRyKSBcCi0gICAgdih1bnNpZ25lZCwg
bWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3Vu
dCwgMTAwLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICB2KHVuc2lnbmVkLCBtYXhpbXVtRnVuY3Rp
b25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRlQnl0ZWNvZGVDb3N0LCAxMjAsIE5vcm1hbCwgbnVsbHB0
cikgXAorICAgIHYodW5zaWduZWQsIG1heGltdW1GdW5jdGlvbkZvckNsb3N1cmVDYWxsSW5saW5l
Q2FuZGlkYXRlQnl0ZWNvZGVDb3N0LCAxMDAsIE5vcm1hbCwgbnVsbHB0cikgXAorICAgIHYodW5z
aWduZWQsIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGluZUNhbmRpZGF0ZUJ5dGVjb29k
ZUNvc3QsIDEwMCwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgXAotICAgIHYodW5zaWduZWQsIG1h
eGltdW1GVExDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50LCAyMDAwMCwgTm9ybWFsLCBudWxscHRy
KSBcCisgICAgdih1bnNpZ25lZCwgbWF4aW11bUZUTENhbmRpZGF0ZUJ5dGVjb2RlQ29zdCwgMjAw
MDAsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIFwKICAgICAvKiBEZXB0aCBvZiBpbmxpbmUgc3Rh
Y2ssIHNvIDEgPSBubyBpbmxpbmluZywgMiA9IG9uZSBsZXZlbCwgZXRjLiAqLyBcCiAgICAgdih1
bnNpZ25lZCwgbWF4aW11bUlubGluaW5nRGVwdGgsIDUsIE5vcm1hbCwgIm1heGltdW0gYWxsb3dl
ZCBpbmxpbmluZyBkZXB0aC4gIERlcHRoIG9mIDEgbWVhbnMgbm8gaW5saW5pbmciKSBcCkBAIC0z
MTQsNyArMzE0LDcgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbgog
ICAgIFwKICAgICAvKiBNYXhpbXVtIHNpemUgb2YgYSBjYWxsZXIgZm9yIGVuYWJsaW5nIGlubGlu
aW5nLiBUaGlzIGlzIHB1cmVseSB0byBwcm90ZWN0IHVzICovXAogICAgIC8qIGZyb20gc3VwZXIg
bG9uZyBjb21waWxlcyB0aGF0IHRha2UgYSBsb3Qgb2YgbWVtb3J5LiAqL1wKLSAgICB2KHVuc2ln
bmVkLCBtYXhpbXVtSW5saW5pbmdDYWxsZXJTaXplLCAxMDAwMCwgTm9ybWFsLCBudWxscHRyKSBc
CisgICAgdih1bnNpZ25lZCwgbWF4aW11bUlubGluaW5nQ2FsbGVyQnl0ZWNvZGVDb3N0LCAxMDAw
MCwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgXAogICAgIHYodW5zaWduZWQsIG1heGltdW1WYXJh
cmdzRm9ySW5saW5pbmcsIDEwMCwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgXApAQCAtNTU4LDYg
KzU1OCwxMiBAQCBlbnVtIE9wdGlvbkVxdWl2YWxlbmNlIHsKICAgICB2KGVuYWJsZURvbGxhclZN
LCB1c2VEb2xsYXJWTSwgU2FtZU9wdGlvbikgXAogICAgIHYoZW5hYmxlV2ViQXNzZW1ibHksIHVz
ZVdlYkFzc2VtYmx5LCBTYW1lT3B0aW9uKSBcCiAgICAgdih2ZXJib3NlREZHQnl0ZUNvZGVQYXJz
aW5nLCB2ZXJib3NlREZHQnl0ZWNvZGVQYXJzaW5nLCBTYW1lT3B0aW9uKSBcCisgICAgdihtYXhp
bXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCwgbWF4aW11bU9wdGltaXph
dGlvbkNhbmRpZGF0ZUJ5dGVjb2RlQ29zdCwgU2FtZU9wdGlvbikgXAorICAgIHYobWF4aW11bUZ1
bmN0aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQsIG1heGltdW1GdW5j
dGlvbkZvckNhbGxJbmxpbmVDYW5kaWRhdGVCeXRlY29kZUNvc3QsIFNhbWVPcHRpb24pIFwKKyAg
ICB2KG1heGltdW1GdW5jdGlvbkZvckNsb3N1cmVDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rp
b25Db3VudCwgbWF4aW11bUZ1bmN0aW9uRm9yQ2xvc3VyZUNhbGxJbmxpbmVDYW5kaWRhdGVCeXRl
Y29kZUNvc3QsIFNhbWVPcHRpb24pIFwKKyAgICB2KG1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVj
dElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQsIG1heGltdW1GdW5jdGlvbkZvckNvbnN0
cnVjdElubGluZUNhbmRpZGF0ZUJ5dGVjb29kZUNvc3QsIFNhbWVPcHRpb24pIFwKKyAgICB2KG1h
eGltdW1GVExDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50LCBtYXhpbXVtRlRMQ2FuZGlkYXRlQnl0
ZWNvZGVDb3N0LCBTYW1lT3B0aW9uKSBcCisgICAgdihtYXhpbXVtSW5saW5pbmdDYWxsZXJTaXpl
LCBtYXhpbXVtSW5saW5pbmdDYWxsZXJCeXRlY29kZUNvc3QsIFNhbWVPcHRpb24pIFwKIAogCiBj
bGFzcyBPcHRpb25zIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBs
aW5nUHJvZmlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCShyZXZpc2lvbiAyNDQ3ODUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDM0LDcgKzQzNCw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIHRyeUdldEJ5
dGUKIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IGxs
aW50UEM7Ci0gICAgaWYgKGJ5dGVjb2RlSW5kZXggPCBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291
bnQoKSkgeworICAgIGlmIChieXRlY29kZUluZGV4IDwgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnNT
aXplKCkpIHsKICAgICAgICAgaXNWYWxpZCA9IHRydWU7CiAgICAgICAgIHJldHVybiBieXRlY29k
ZUluZGV4OwogICAgIH0KQEAgLTQ2NSw3ICs0NjUsNyBAQCB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6
OnByb2Nlc3NVbnZlcmlmaWVkCiAgICAgICAgIHN0YWNrVHJhY2UudGltZXN0YW1wID0gdW5wcm9j
ZXNzZWRTdGFja1RyYWNlLnRpbWVzdGFtcDsKIAogICAgICAgICBhdXRvIHBvcHVsYXRlQ29kZUxv
Y2F0aW9uID0gW10gKENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4
LCBTdGFja0ZyYW1lOjpDb2RlTG9jYXRpb24mIGxvY2F0aW9uKSB7Ci0gICAgICAgICAgICBpZiAo
Ynl0ZWNvZGVJbmRleCA8IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpKSB7CisgICAgICAg
ICAgICBpZiAoYnl0ZWNvZGVJbmRleCA8IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zU2l6ZSgpKSB7
CiAgICAgICAgICAgICAgICAgaW50IGRpdm90OwogICAgICAgICAgICAgICAgIGludCBzdGFydE9m
ZnNldDsKICAgICAgICAgICAgICAgICBpbnQgZW5kT2Zmc2V0Owo=
</data>
<flag name="review"
          id="384881"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
      

    </bug>

</bugzilla>