<?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>142436</bug_id>
          
          <creation_ts>2015-03-07 01:18:02 -0800</creation_ts>
          <short_desc>The code to link FunctionExecutable is duplicated everywhere</short_desc>
          <delta_ts>2015-03-07 14:10:34 -0800</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>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>
          
          <blocked>142388</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1075250</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-03-07 01:18:02 -0800</bug_when>
    <thetext>There&apos;s a lot of code duplicated to adjust offsets within SourceCode.
Refactor them into two functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075253</commentid>
    <comment_count>1</comment_count>
      <attachid>248150</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-03-07 01:25:53 -0800</bug_when>
    <thetext>Created attachment 248150
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075254</commentid>
    <comment_count>2</comment_count>
      <attachid>248151</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-03-07 01:27:50 -0800</bug_when>
    <thetext>Created attachment 248151
Fixed the bug title</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075255</commentid>
    <comment_count>3</comment_count>
      <attachid>248152</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-03-07 01:36:41 -0800</bug_when>
    <thetext>Created attachment 248152
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075264</commentid>
    <comment_count>4</comment_count>
      <attachid>248152</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-03-07 08:51:12 -0800</bug_when>
    <thetext>Comment on attachment 248152
Cleanup

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

&gt; Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp:144
&gt; +    // The unlinkedBodyEndColumn is based-0. Hence, we need to add 1 to it. But if the

The term is &quot;0-based&quot;, not &quot;based-0&quot;. Would be nice to fix this since you are moving this comment into a new function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075266</commentid>
    <comment_count>5</comment_count>
      <attachid>248152</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-07 09:05:03 -0800</bug_when>
    <thetext>Comment on attachment 248152
Cleanup

Thanks for doing this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075297</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-03-07 13:44:54 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 248152 [details]
&gt; Cleanup
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=248152&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp:144
&gt; &gt; +    // The unlinkedBodyEndColumn is based-0. Hence, we need to add 1 to it. But if the
&gt; 
&gt; The term is &quot;0-based&quot;, not &quot;based-0&quot;. Would be nice to fix this since you
&gt; are moving this comment into a new function.

Thanks for the review. Will fix!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075300</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-03-07 14:10:34 -0800</bug_when>
    <thetext>Committed r181213: &lt;http://trac.webkit.org/changeset/181213&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248150</attachid>
            <date>2015-03-07 01:25:53 -0800</date>
            <delta_ts>2015-03-07 01:27:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142436-20150307012532.patch</filename>
            <type>text/plain</type>
            <size>13696</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgxMjA2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBA
CisyMDE1LTAzLTA3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAg
IFRoZSBjb2RlIHRvIGNyZWF0ZSBsaW5rIEZ1bmN0aW9uRXhlY3V0YWJsZSBpcyBkdXBsaWNhdGVk
IGV2ZXJ5d2hlcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0MjQzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlZHVjZWQgY29kZSBkdXBsaWNhdGlvbiBieSBmYWN0b3Jpbmcgb3V0IGxpbmtJbnNpZGVF
eGVjdXRhYmxlIGFuZCBsaW5rR2xvYmFsQ29kZS4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKTogQ2FsbHMgbGlu
a0luc2lkZUV4ZWN1dGFibGUuCisKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpsaW5rSW5z
aWRlRXhlY3V0YWJsZSk6IFJlbmFtZWQgZnJvbSBsaW5rLiBOb3cgdGFrZXMgY2FyZSBvZiBzdGFy
dE9mZnNldC4KKyAgICAgICAgVGhpcyBjaGFuZ2Ugd2FzIG5lZWRlZCB0byB1c2UgdGhpcyBmdW5j
dGlvbiBpbiBDb2RlQmxvY2s6OkNvZGVCbG9jay4gQWxzbywgdGhpcyBmdW5jdGlvbiBubyBsb25n
ZXIgdGFrZXMKKyAgICAgICAgbGluZU9mZnNldCBzaW5jZSB0aGlzIGluZm9ybWF0aW9uIGlzIGFs
cmVhZHkgc3RvcmVkIGluIHRoZSBzb3VyY2UgY29kZS4KKyAgICAgICAgKEpTQzo6VW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OmxpbmtHbG9iYWxDb2RlKTogRXh0cmFjdGVkIGZyb20gRnVuY3Rp
b25FeGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29kZS4KKworICAgICAgICAqIGJ5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmg6CisKKyAgICAgICAgKiBnZW5lcmF0ZS1qcy1idWlsdGluczogQ2FsbHMg
bGlua0dsb2JhbENvZGUuCisKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAg
ICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMp
OiBDYWxscyBsaW5rR2xvYmFsQ29kZS4KKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxl
Ojpmcm9tR2xvYmFsQ29kZSk6IENhbGxzIGxpbmtHbG9iYWxDb2RlLgorCiAyMDE1LTAzLTA2ICBC
cmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIFR1cm4g
b2ZmIGEgd2FybmluZyBvbiBXaW5kb3dzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2dl
bmVyYXRlLWpzLWJ1aWx0aW5zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9n
ZW5lcmF0ZS1qcy1idWlsdGlucwkocmV2aXNpb24gMTgxMjAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5zCSh3b3JraW5nIGNvcHkpCkBAIC0yNjQsMjQgKzI2
NCwxMCBAQCBmb3IgKGNvZGVSZWZlcmVuY2UsIG5hbWUsIHNvdXJjZSkgaW4gY29kCiAgICAgYnVp
bHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiY29uc3QgaW50IHNfJXNMZW5ndGggPSAlZDtcblxu
IiAlIChjb2RlUmVmZXJlbmNlLCBzb3VyY2VMZW5ndGggKyAxKSkgIyArIDEgZm9yIFxuCiAKIGJ1
aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoIiIiCi1GdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0
ZUJ1aWx0aW5FeGVjdXRhYmxlKFZNJiB2bSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVu
bGlua2VkRXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQotewotICAgIHVuc2ln
bmVkIGxpbmVDb3VudCA9IHVubGlua2VkRXhlY3V0YWJsZS0+bGluZUNvdW50KCk7Ci0gICAgdW5z
aWduZWQgc3RhcnRDb2x1bW4gPSAxOwotICAgIHVuc2lnbmVkIHNvdXJjZUxlbmd0aCA9IHVubGlu
a2VkRXhlY3V0YWJsZS0+c291cmNlTGVuZ3RoKCk7Ci0gICAgYm9vbCBlbmRDb2x1bW5Jc09uU3Rh
cnRMaW5lID0gIWxpbmVDb3VudDsKLSAgICB1bnNpZ25lZCBlbmRDb2x1bW5FeGNsdWRpbmdCcmFj
ZXMgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnVubGlua2VkQm9keUVuZENvbHVtbigpICsgKGVuZENv
bHVtbklzT25TdGFydExpbmUgPyAwIDogMSk7Ci0gICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSB1
bmxpbmtlZEV4ZWN1dGFibGUtPnN0YXJ0T2Zmc2V0KCk7Ci0gICAgdW5zaWduZWQgc3RhcnRPZmZz
ZXRFeGNsdWRpbmdPcGVuQnJhY2UgPSBzdGFydE9mZnNldCArIDE7Ci0gICAgdW5zaWduZWQgZW5k
T2Zmc2V0RXhjbHVkaW5nQ2xvc2VCcmFjZSA9IHN0YXJ0T2Zmc2V0ICsgc291cmNlTGVuZ3RoIC0g
MTsKLSAgICBTb3VyY2VDb2RlIGJvZHlTb3VyY2Uoc291cmNlLnByb3ZpZGVyKCksIHN0YXJ0T2Zm
c2V0RXhjbHVkaW5nT3BlbkJyYWNlLCBlbmRPZmZzZXRFeGNsdWRpbmdDbG9zZUJyYWNlLCAwLCBz
dGFydENvbHVtbik7Ci0gICAgcmV0dXJuIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBi
b2R5U291cmNlLCB1bmxpbmtlZEV4ZWN1dGFibGUsIDAsIGxpbmVDb3VudCwgc3RhcnRDb2x1bW4s
IGVuZENvbHVtbkV4Y2x1ZGluZ0JyYWNlcywgZmFsc2UpOwotfQotCiAjZGVmaW5lIEpTQ19ERUZJ
TkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3Vu
dCkgXFwKIEZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihWTSYgdm0pIFxc
CiB7IFxcCi0gICAgcmV0dXJuIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKHZtLCB2bS5idWlsdGlu
RXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKSwgdm0uYnVpbHRpbkV4ZWN1dGFi
bGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IFxcCisgICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVj
dXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rR2xvYmFsQ29kZSh2bSwgdm0u
YnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IFxcCiB9CiAKIEpTQ19G
T1JFQUNIX0JVSUxUSU4oSlNDX0RFRklORV9CVUlMVElOX0dFTkVSQVRPUikKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxODEy
MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTc0NiwxNyArMTc0Niw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNj
cmlwdEV4ZWN1dGFibGUqIG8KICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVu
bGlua2VkRXhlY3V0YWJsZSA9IHVubGlua2VkQ29kZUJsb2NrLT5mdW5jdGlvbkRlY2woaSk7CiAg
ICAgICAgIGlmICh2bSgpLT50eXBlUHJvZmlsZXIoKSB8fCB2bSgpLT5jb250cm9sRmxvd1Byb2Zp
bGVyKCkpCiAgICAgICAgICAgICB2bSgpLT5mdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUoKS0+aW5z
ZXJ0VW5leGVjdXRlZFJhbmdlKG1fb3duZXJFeGVjdXRhYmxlLT5zb3VyY2VJRCgpLCB1bmxpbmtl
ZEV4ZWN1dGFibGUtPnR5cGVQcm9maWxpbmdTdGFydE9mZnNldCgpLCB1bmxpbmtlZEV4ZWN1dGFi
bGUtPnR5cGVQcm9maWxpbmdFbmRPZmZzZXQoKSk7Ci0gICAgICAgIHVuc2lnbmVkIGxpbmVDb3Vu
dCA9IHVubGlua2VkRXhlY3V0YWJsZS0+bGluZUNvdW50KCk7Ci0gICAgICAgIHVuc2lnbmVkIGZp
cnN0TGluZSA9IG93bmVyRXhlY3V0YWJsZS0+bGluZU5vKCkgKyB1bmxpbmtlZEV4ZWN1dGFibGUt
PmZpcnN0TGluZU9mZnNldCgpOwotICAgICAgICBib29sIHN0YXJ0Q29sdW1uSXNPbk93bmVyU3Rh
cnRMaW5lID0gIXVubGlua2VkRXhlY3V0YWJsZS0+Zmlyc3RMaW5lT2Zmc2V0KCk7Ci0gICAgICAg
IHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gdW5saW5rZWRFeGVjdXRhYmxlLT51bmxpbmtlZEJvZHlT
dGFydENvbHVtbigpICsgKHN0YXJ0Q29sdW1uSXNPbk93bmVyU3RhcnRMaW5lID8gb3duZXJFeGVj
dXRhYmxlLT5zdGFydENvbHVtbigpIDogMSk7Ci0gICAgICAgIGJvb2wgZW5kQ29sdW1uSXNPblN0
YXJ0TGluZSA9ICFsaW5lQ291bnQ7Ci0gICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IHVubGlu
a2VkRXhlY3V0YWJsZS0+dW5saW5rZWRCb2R5RW5kQ29sdW1uKCkgKyAoZW5kQ29sdW1uSXNPblN0
YXJ0TGluZSA/IHN0YXJ0Q29sdW1uIDogMSk7Ci0gICAgICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
ID0gc291cmNlT2Zmc2V0ICsgdW5saW5rZWRFeGVjdXRhYmxlLT5zdGFydE9mZnNldCgpOwotICAg
ICAgICB1bnNpZ25lZCBzb3VyY2VMZW5ndGggPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnNvdXJjZUxl
bmd0aCgpOwotICAgICAgICBTb3VyY2VDb2RlIGNvZGUobV9zb3VyY2UsIHN0YXJ0T2Zmc2V0LCBz
dGFydE9mZnNldCArIHNvdXJjZUxlbmd0aCwgZmlyc3RMaW5lLCBzdGFydENvbHVtbik7Ci0gICAg
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y3JlYXRlKCptX3ZtLCBjb2RlLCB1bmxpbmtlZEV4ZWN1dGFibGUsIGZpcnN0TGluZSwgZmlyc3RM
aW5lICsgbGluZUNvdW50LCBzdGFydENvbHVtbiwgZW5kQ29sdW1uKTsKLSAgICAgICAgbV9mdW5j
dGlvbkRlY2xzW2ldLnNldCgqbV92bSwgb3duZXJFeGVjdXRhYmxlLCBleGVjdXRhYmxlKTsKKyAg
ICAgICAgbV9mdW5jdGlvbkRlY2xzW2ldLnNldCgqbV92bSwgb3duZXJFeGVjdXRhYmxlLCB1bmxp
bmtlZEV4ZWN1dGFibGUtPmxpbmtJbnNpZGVFeGVjdXRhYmxlKCptX3ZtLCBvd25lckV4ZWN1dGFi
bGUtPnNvdXJjZSgpKSk7CiAgICAgfQogCiAgICAgbV9mdW5jdGlvbkV4cHJzLnJlc2l6ZVRvRml0
KHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRXhwcnMoKSk7CkBAIC0xNzY0LDE3
ICsxNzU0LDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogbwogICAg
ICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRhYmxlID0gdW5s
aW5rZWRDb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihpKTsKICAgICAgICAgaWYgKHZtKCktPnR5cGVQ
cm9maWxlcigpIHx8IHZtKCktPmNvbnRyb2xGbG93UHJvZmlsZXIoKSkKICAgICAgICAgICAgIHZt
KCktPmZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSgpLT5pbnNlcnRVbmV4ZWN1dGVkUmFuZ2UobV9v
d25lckV4ZWN1dGFibGUtPnNvdXJjZUlEKCksIHVubGlua2VkRXhlY3V0YWJsZS0+dHlwZVByb2Zp
bGluZ1N0YXJ0T2Zmc2V0KCksIHVubGlua2VkRXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ0VuZE9m
ZnNldCgpKTsKLSAgICAgICAgdW5zaWduZWQgbGluZUNvdW50ID0gdW5saW5rZWRFeGVjdXRhYmxl
LT5saW5lQ291bnQoKTsKLSAgICAgICAgdW5zaWduZWQgZmlyc3RMaW5lID0gb3duZXJFeGVjdXRh
YmxlLT5saW5lTm8oKSArIHVubGlua2VkRXhlY3V0YWJsZS0+Zmlyc3RMaW5lT2Zmc2V0KCk7Ci0g
ICAgICAgIGJvb2wgc3RhcnRDb2x1bW5Jc09uT3duZXJTdGFydExpbmUgPSAhdW5saW5rZWRFeGVj
dXRhYmxlLT5maXJzdExpbmVPZmZzZXQoKTsKLSAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4g
PSB1bmxpbmtlZEV4ZWN1dGFibGUtPnVubGlua2VkQm9keVN0YXJ0Q29sdW1uKCkgKyAoc3RhcnRD
b2x1bW5Jc09uT3duZXJTdGFydExpbmUgPyBvd25lckV4ZWN1dGFibGUtPnN0YXJ0Q29sdW1uKCkg
OiAxKTsKLSAgICAgICAgYm9vbCBlbmRDb2x1bW5Jc09uU3RhcnRMaW5lID0gIWxpbmVDb3VudDsK
LSAgICAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0gdW5saW5rZWRFeGVjdXRhYmxlLT51bmxpbmtl
ZEJvZHlFbmRDb2x1bW4oKSArIChlbmRDb2x1bW5Jc09uU3RhcnRMaW5lID8gc3RhcnRDb2x1bW4g
OiAxKTsKLSAgICAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSBzb3VyY2VPZmZzZXQgKyB1bmxp
bmtlZEV4ZWN1dGFibGUtPnN0YXJ0T2Zmc2V0KCk7Ci0gICAgICAgIHVuc2lnbmVkIHNvdXJjZUxl
bmd0aCA9IHVubGlua2VkRXhlY3V0YWJsZS0+c291cmNlTGVuZ3RoKCk7Ci0gICAgICAgIFNvdXJj
ZUNvZGUgY29kZShtX3NvdXJjZSwgc3RhcnRPZmZzZXQsIHN0YXJ0T2Zmc2V0ICsgc291cmNlTGVu
Z3RoLCBmaXJzdExpbmUsIHN0YXJ0Q29sdW1uKTsKLSAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxl
KiBleGVjdXRhYmxlID0gRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoKm1fdm0sIGNvZGUsIHVu
bGlua2VkRXhlY3V0YWJsZSwgZmlyc3RMaW5lLCBmaXJzdExpbmUgKyBsaW5lQ291bnQsIHN0YXJ0
Q29sdW1uLCBlbmRDb2x1bW4pOwotICAgICAgICBtX2Z1bmN0aW9uRXhwcnNbaV0uc2V0KCptX3Zt
LCBvd25lckV4ZWN1dGFibGUsIGV4ZWN1dGFibGUpOworICAgICAgICBtX2Z1bmN0aW9uRXhwcnNb
aV0uc2V0KCptX3ZtLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLT5mdW5jdGlv
bkV4cHIoaSktPmxpbmtJbnNpZGVFeGVjdXRhYmxlKCptX3ZtLCBvd25lckV4ZWN1dGFibGUtPnNv
dXJjZSgpKSk7CiAgICAgfQogCiAgICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT5oYXNSYXJlRGF0
YSgpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE4MTIwMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTExOCwxNyArMTE4LDQwIEBAIHZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0
Q2gKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zeW1ib2xUYWJsZUZvckNvbnN0
cnVjdCk7CiB9CiAKLUZ1bmN0aW9uRXhlY3V0YWJsZSogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OmxpbmsoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIHNpemVfdCBsaW5lT2Zm
c2V0KQorRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6bGlu
a0luc2lkZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCiB7Ci0g
ICAgdW5zaWduZWQgZmlyc3RMaW5lID0gbGluZU9mZnNldCArIG1fZmlyc3RMaW5lT2Zmc2V0Owor
ICAgIHVuc2lnbmVkIGZpcnN0TGluZSA9IHNvdXJjZS5maXJzdExpbmUoKSArIG1fZmlyc3RMaW5l
T2Zmc2V0OworICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gc291cmNlLnN0YXJ0T2Zmc2V0KCkg
KyBtX3N0YXJ0T2Zmc2V0OworCiAgICAgYm9vbCBzdGFydENvbHVtbklzT25GaXJzdFNvdXJjZUxp
bmUgPSAhbV9maXJzdExpbmVPZmZzZXQ7CiAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSBtX3Vu
bGlua2VkQm9keVN0YXJ0Q29sdW1uICsgKHN0YXJ0Q29sdW1uSXNPbkZpcnN0U291cmNlTGluZSA/
IHNvdXJjZS5zdGFydENvbHVtbigpIDogMSk7CiAgICAgYm9vbCBlbmRDb2x1bW5Jc09uU3RhcnRM
aW5lID0gIW1fbGluZUNvdW50OwogICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IG1fdW5saW5rZWRC
b2R5RW5kQ29sdW1uICsgKGVuZENvbHVtbklzT25TdGFydExpbmUgPyBzdGFydENvbHVtbiA6IDEp
OwotICAgIFNvdXJjZUNvZGUgY29kZShzb3VyY2UucHJvdmlkZXIoKSwgbV9zdGFydE9mZnNldCwg
bV9zdGFydE9mZnNldCArIG1fc291cmNlTGVuZ3RoLCBmaXJzdExpbmUsIHN0YXJ0Q29sdW1uKTsK
KworICAgIFNvdXJjZUNvZGUgY29kZShzb3VyY2UucHJvdmlkZXIoKSwgc3RhcnRPZmZzZXQsIHN0
YXJ0T2Zmc2V0ICsgbV9zb3VyY2VMZW5ndGgsIGZpcnN0TGluZSwgc3RhcnRDb2x1bW4pOwogICAg
IHJldHVybiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwgY29kZSwgdGhpcywgZmlyc3RM
aW5lLCBmaXJzdExpbmUgKyBtX2xpbmVDb3VudCwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbik7CiB9
CiAKK0Z1bmN0aW9uRXhlY3V0YWJsZSogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmxpbmtH
bG9iYWxDb2RlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQoreworICAgIHVuc2ln
bmVkIGZpcnN0TGluZSA9IHNvdXJjZS5maXJzdExpbmUoKSArIG1fZmlyc3RMaW5lT2Zmc2V0Owor
ICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gc291cmNlLnN0YXJ0T2Zmc2V0KCkgKyBtX3N0YXJ0
T2Zmc2V0OworCisgICAgLy8gV2UgZG9uJ3QgaGF2ZSBhbnkgb3duZXIgZXhlY3V0YWJsZS4gVGhl
IHNvdXJjZSBzdHJpbmcgaXMgZWZmZWN0aXZlbHkgbGlrZSBhIGdsb2JhbAorICAgIC8vIHN0cmlu
ZyAobGlrZSBpbiB0aGUgaGFuZGxpbmcgb2YgZXZhbCkuIEhlbmNlLCB0aGUgc3RhcnRDb2x1bW4g
aXMgYWx3YXlzIDEuCisgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSAxOworICAgIGJvb2wgZW5k
Q29sdW1uSXNPblN0YXJ0TGluZSA9ICFtX2xpbmVDb3VudDsKKyAgICAvLyBUaGUgdW5saW5rZWRC
b2R5RW5kQ29sdW1uIGlzIGJhc2VkLTAuIEhlbmNlLCB3ZSBuZWVkIHRvIGFkZCAxIHRvIGl0LiBC
dXQgaWYgdGhlCisgICAgLy8gZW5kQ29sdW1uIGlzIG9uIHRoZSBzdGFydExpbmUsIHRoZW4gd2Ug
bmVlZCB0byBzdWJ0cmFjdCBiYWNrIHRoZSBhZGp1c3RtZW50IGZvcgorICAgIC8vIHRoZSBvcGVu
IGJyYWNlIHJlc3VsdGluZyBpbiBhbiBhZGp1c3RtZW50IG9mIDAuCisgICAgdW5zaWduZWQgZW5k
Q29sdW1uRXhjbHVkaW5nQnJhY2VzID0gbV91bmxpbmtlZEJvZHlFbmRDb2x1bW4gKyAoZW5kQ29s
dW1uSXNPblN0YXJ0TGluZSA/IDAgOiAxKTsKKyAgICB1bnNpZ25lZCBzdGFydE9mZnNldEV4Y2x1
ZGluZ09wZW5CcmFjZSA9IHN0YXJ0T2Zmc2V0ICsgMTsKKyAgICB1bnNpZ25lZCBlbmRPZmZzZXRF
eGNsdWRpbmdDbG9zZUJyYWNlID0gc3RhcnRPZmZzZXQgKyBtX3NvdXJjZUxlbmd0aCAtIDE7Cisg
ICAgU291cmNlQ29kZSBjb2RlKHNvdXJjZS5wcm92aWRlcigpLCBzdGFydE9mZnNldEV4Y2x1ZGlu
Z09wZW5CcmFjZSwgZW5kT2Zmc2V0RXhjbHVkaW5nQ2xvc2VCcmFjZSwgZmlyc3RMaW5lLCBzdGFy
dENvbHVtbik7CisKKyAgICByZXR1cm4gRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUodm0sIGNv
ZGUsIHRoaXMsIGZpcnN0TGluZSwgZmlyc3RMaW5lICsgbV9saW5lQ291bnQsIHN0YXJ0Q29sdW1u
LCBlbmRDb2x1bW5FeGNsdWRpbmdCcmFjZXMsIGZhbHNlKTsKK30KKwogVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29kZShj
b25zdCBJZGVudGlmaWVyJiBuYW1lLCBFeGVjU3RhdGUqIGV4ZWMsIERlYnVnZ2VyKiwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBKU09iamVjdCoqIGV4Y2VwdGlvbikKIHsKICAgICBQYXJzZXJF
cnJvciBlcnJvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oCShyZXZpc2lvbiAxODEyMDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAt
MTE3LDggKzExNyw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEpTUGFyc2VOb3JtYWw7CiAg
ICAgfQogCi0gICAgdW5zaWduZWQgZmlyc3RMaW5lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9m
aXJzdExpbmVPZmZzZXQ7IH0KLSAgICB1bnNpZ25lZCBsaW5lQ291bnQoKSBjb25zdCB7IHJldHVy
biBtX2xpbmVDb3VudDsgfQogICAgIHVuc2lnbmVkIHVubGlua2VkRnVuY3Rpb25OYW1lU3RhcnQo
KSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRnVuY3Rpb25OYW1lU3RhcnQ7IH0KICAgICB1bnNp
Z25lZCB1bmxpbmtlZEJvZHlTdGFydENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRC
b2R5U3RhcnRDb2x1bW47IH0KICAgICB1bnNpZ25lZCB1bmxpbmtlZEJvZHlFbmRDb2x1bW4oKSBj
b25zdCB7IHJldHVybiBtX3VubGlua2VkQm9keUVuZENvbHVtbjsgfQpAQCAtMTMzLDcgKzEzMSw4
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJv
bUdsb2JhbENvZGUoY29uc3QgSWRlbnRpZmllciYsIEV4ZWNTdGF0ZSosIERlYnVnZ2VyKiwgY29u
c3QgU291cmNlQ29kZSYsIEpTT2JqZWN0KiogZXhjZXB0aW9uKTsKIAotICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogbGluayhWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBzaXplX3QgbGluZU9mZnNldCk7
CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBsaW5rSW5zaWRlRXhlY3V0YWJsZShWTSYsIGNvbnN0
IFNvdXJjZUNvZGUmKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGxpbmtHbG9iYWxDb2RlKFZN
JiwgY29uc3QgU291cmNlQ29kZSYpOwogCiAgICAgdm9pZCBjbGVhckNvZGVGb3JSZWNvbXBpbGF0
aW9uKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmNwcAkocmV2aXNpb24gMTgxMjAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwMyw3ICs1MDMsNyBAQCBK
U09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxpemVHCiAKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGZ1bmN0aW9uRGVjbGFyYXRpb25zLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSA9
IGZ1bmN0aW9uRGVjbGFyYXRpb25zW2ldLnNlY29uZC5nZXQoKTsKLSAgICAgICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUt
Pmxpbmsodm0sIG1fc291cmNlLCBsaW5lTm8oKSksIHNjb3BlKTsKKyAgICAgICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUt
PmxpbmtJbnNpZGVFeGVjdXRhYmxlKHZtLCBtX3NvdXJjZSksIHNjb3BlKTsKICAgICAgICAgZ2xv
YmFsT2JqZWN0LT5hZGRGdW5jdGlvbihjYWxsRnJhbWUsIGZ1bmN0aW9uRGVjbGFyYXRpb25zW2ld
LmZpcnN0LCB2YWx1ZSk7CiAgICAgICAgIGlmICh2bS50eXBlUHJvZmlsZXIoKSB8fCB2bS5jb250
cm9sRmxvd1Byb2ZpbGVyKCkpIHsKICAgICAgICAgICAgIHZtLmZ1bmN0aW9uSGFzRXhlY3V0ZWRD
YWNoZSgpLT5pbnNlcnRVbmV4ZWN1dGVkUmFuZ2Uoc291cmNlSUQoKSwgCkBAIC02MDgsMjUgKzYw
OCw4IEBAIEZ1bmN0aW9uRXhlY3V0YWJsZSogRnVuY3Rpb25FeGVjdXRhYmxlOjoKIHsKICAgICBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRhYmxlID0gVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKG5hbWUsIGV4ZWMsIGRlYnVnZ2VyLCBz
b3VyY2UsIGV4Y2VwdGlvbik7CiAgICAgaWYgKCF1bmxpbmtlZEV4ZWN1dGFibGUpCi0gICAgICAg
IHJldHVybiAwOwotICAgIHVuc2lnbmVkIGxpbmVDb3VudCA9IHVubGlua2VkRXhlY3V0YWJsZS0+
bGluZUNvdW50KCk7Ci0gICAgdW5zaWduZWQgZmlyc3RMaW5lID0gc291cmNlLmZpcnN0TGluZSgp
ICsgdW5saW5rZWRFeGVjdXRhYmxlLT5maXJzdExpbmVPZmZzZXQoKTsKLSAgICB1bnNpZ25lZCBz
dGFydE9mZnNldCA9IHNvdXJjZS5zdGFydE9mZnNldCgpICsgdW5saW5rZWRFeGVjdXRhYmxlLT5z
dGFydE9mZnNldCgpOwotCi0gICAgLy8gV2UgZG9uJ3QgaGF2ZSBhbnkgb3duZXIgZXhlY3V0YWJs
ZS4gVGhlIHNvdXJjZSBzdHJpbmcgaXMgZWZmZWN0aXZlbHkgbGlrZSBhIGdsb2JhbAotICAgIC8v
IHN0cmluZyAobGlrZSBpbiB0aGUgaGFuZGxpbmcgb2YgZXZhbCkuIEhlbmNlLCB0aGUgc3RhcnRD
b2x1bW4gaXMgYWx3YXlzIDEuCi0gICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSAxOwotICAgIHVu
c2lnbmVkIHNvdXJjZUxlbmd0aCA9IHVubGlua2VkRXhlY3V0YWJsZS0+c291cmNlTGVuZ3RoKCk7
Ci0gICAgYm9vbCBlbmRDb2x1bW5Jc09uU3RhcnRMaW5lID0gIWxpbmVDb3VudDsKLSAgICAvLyBU
aGUgdW5saW5rZWRCb2R5RW5kQ29sdW1uIGlzIGJhc2VkLTAuIEhlbmNlLCB3ZSBuZWVkIHRvIGFk
ZCAxIHRvIGl0LiBCdXQgaWYgdGhlCi0gICAgLy8gZW5kQ29sdW1uIGlzIG9uIHRoZSBzdGFydExp
bmUsIHRoZW4gd2UgbmVlZCB0byBzdWJ0cmFjdCBiYWNrIHRoZSBhZGp1c3RtZW50IGZvcgotICAg
IC8vIHRoZSBvcGVuIGJyYWNlIHJlc3VsdGluZyBpbiBhbiBhZGp1c3RtZW50IG9mIDAuCi0gICAg
dW5zaWduZWQgZW5kQ29sdW1uRXhjbHVkaW5nQnJhY2VzID0gdW5saW5rZWRFeGVjdXRhYmxlLT51
bmxpbmtlZEJvZHlFbmRDb2x1bW4oKSArIChlbmRDb2x1bW5Jc09uU3RhcnRMaW5lID8gMCA6IDEp
OwotICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0RXhjbHVkaW5nT3BlbkJyYWNlID0gc3RhcnRPZmZz
ZXQgKyAxOwotICAgIHVuc2lnbmVkIGVuZE9mZnNldEV4Y2x1ZGluZ0Nsb3NlQnJhY2UgPSBzdGFy
dE9mZnNldCArIHNvdXJjZUxlbmd0aCAtIDE7Ci0gICAgU291cmNlQ29kZSBib2R5U291cmNlKHNv
dXJjZS5wcm92aWRlcigpLCBzdGFydE9mZnNldEV4Y2x1ZGluZ09wZW5CcmFjZSwgZW5kT2Zmc2V0
RXhjbHVkaW5nQ2xvc2VCcmFjZSwgZmlyc3RMaW5lLCBzdGFydENvbHVtbik7Ci0KLSAgICByZXR1
cm4gRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoZXhlYy0+dm0oKSwgYm9keVNvdXJjZSwgdW5s
aW5rZWRFeGVjdXRhYmxlLCBmaXJzdExpbmUsIGZpcnN0TGluZSArIGxpbmVDb3VudCwgc3RhcnRD
b2x1bW4sIGVuZENvbHVtbkV4Y2x1ZGluZ0JyYWNlcywgZmFsc2UpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gdW5saW5rZWRFeGVjdXRhYmxlLT5saW5rR2xvYmFsQ29kZShl
eGVjLT52bSgpLCBzb3VyY2UpOwogfQogCiBTdHJpbmcgRnVuY3Rpb25FeGVjdXRhYmxlOjpwYXJh
bVN0cmluZygpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248151</attachid>
            <date>2015-03-07 01:27:50 -0800</date>
            <delta_ts>2015-03-07 01:36:37 -0800</delta_ts>
            <desc>Fixed the bug title</desc>
            <filename>bug-142436-20150307012729.patch</filename>
            <type>text/plain</type>
            <size>13689</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgxMjA2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBA
CisyMDE1LTAzLTA3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAg
IFRoZSBjb2RlIHRvIGxpbmsgRnVuY3Rpb25FeGVjdXRhYmxlIGlzIGR1cGxpY2F0ZWQgZXZlcnl3
aGVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQy
NDM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVk
dWNlZCBjb2RlIGR1cGxpY2F0aW9uIGJ5IGZhY3RvcmluZyBvdXQgbGlua0luc2lkZUV4ZWN1dGFi
bGUgYW5kIGxpbmtHbG9iYWxDb2RlLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOiBDYWxscyBsaW5rSW5zaWRl
RXhlY3V0YWJsZS4KKworICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmxpbmtJbnNpZGVFeGVj
dXRhYmxlKTogUmVuYW1lZCBmcm9tIGxpbmsuIE5vdyB0YWtlcyBjYXJlIG9mIHN0YXJ0T2Zmc2V0
LgorICAgICAgICBUaGlzIGNoYW5nZSB3YXMgbmVlZGVkIHRvIHVzZSB0aGlzIGZ1bmN0aW9uIGlu
IENvZGVCbG9jazo6Q29kZUJsb2NrLiBBbHNvLCB0aGlzIGZ1bmN0aW9uIG5vIGxvbmdlciB0YWtl
cworICAgICAgICBsaW5lT2Zmc2V0IHNpbmNlIHRoaXMgaW5mb3JtYXRpb24gaXMgYWxyZWFkeSBz
dG9yZWQgaW4gdGhlIHNvdXJjZSBjb2RlLgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6bGlua0dsb2JhbENvZGUpOiBFeHRyYWN0ZWQgZnJvbSBGdW5jdGlvbkV4ZWN1
dGFibGU6OmZyb21HbG9iYWxDb2RlLgorCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaDoKKworICAgICAgICAqIGdlbmVyYXRlLWpzLWJ1aWx0aW5zOiBDYWxscyBsaW5rR2xv
YmFsQ29kZS4KKworICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChK
U0M6OlByb2dyYW1FeGVjdXRhYmxlOjppbml0aWFsaXplR2xvYmFsUHJvcGVydGllcyk6IENhbGxz
IGxpbmtHbG9iYWxDb2RlLgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21H
bG9iYWxDb2RlKTogQ2FsbHMgbGlua0dsb2JhbENvZGUuCisKIDIwMTUtMDMtMDYgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gVHVybiBvZmYgYSB3
YXJuaW5nIG9uIFdpbmRvd3MuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUt
anMtYnVpbHRpbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRl
LWpzLWJ1aWx0aW5zCShyZXZpc2lvbiAxODEyMDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Z2VuZXJhdGUtanMtYnVpbHRpbnMJKHdvcmtpbmcgY29weSkKQEAgLTI2NCwyNCArMjY0LDEwIEBA
IGZvciAoY29kZVJlZmVyZW5jZSwgbmFtZSwgc291cmNlKSBpbiBjb2QKICAgICBidWlsdGluc0lt
cGxlbWVudGF0aW9uLndyaXRlKCJjb25zdCBpbnQgc18lc0xlbmd0aCA9ICVkO1xuXG4iICUgKGNv
ZGVSZWZlcmVuY2UsIHNvdXJjZUxlbmd0aCArIDEpKSAjICsgMSBmb3IgXG4KIAogYnVpbHRpbnNJ
bXBsZW1lbnRhdGlvbi53cml0ZSgiIiIKLUZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVpbHRp
bkV4ZWN1dGFibGUoVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRF
eGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCi17Ci0gICAgdW5zaWduZWQgbGlu
ZUNvdW50ID0gdW5saW5rZWRFeGVjdXRhYmxlLT5saW5lQ291bnQoKTsKLSAgICB1bnNpZ25lZCBz
dGFydENvbHVtbiA9IDE7Ci0gICAgdW5zaWduZWQgc291cmNlTGVuZ3RoID0gdW5saW5rZWRFeGVj
dXRhYmxlLT5zb3VyY2VMZW5ndGgoKTsKLSAgICBib29sIGVuZENvbHVtbklzT25TdGFydExpbmUg
PSAhbGluZUNvdW50OwotICAgIHVuc2lnbmVkIGVuZENvbHVtbkV4Y2x1ZGluZ0JyYWNlcyA9IHVu
bGlua2VkRXhlY3V0YWJsZS0+dW5saW5rZWRCb2R5RW5kQ29sdW1uKCkgKyAoZW5kQ29sdW1uSXNP
blN0YXJ0TGluZSA/IDAgOiAxKTsKLSAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IHVubGlua2Vk
RXhlY3V0YWJsZS0+c3RhcnRPZmZzZXQoKTsKLSAgICB1bnNpZ25lZCBzdGFydE9mZnNldEV4Y2x1
ZGluZ09wZW5CcmFjZSA9IHN0YXJ0T2Zmc2V0ICsgMTsKLSAgICB1bnNpZ25lZCBlbmRPZmZzZXRF
eGNsdWRpbmdDbG9zZUJyYWNlID0gc3RhcnRPZmZzZXQgKyBzb3VyY2VMZW5ndGggLSAxOwotICAg
IFNvdXJjZUNvZGUgYm9keVNvdXJjZShzb3VyY2UucHJvdmlkZXIoKSwgc3RhcnRPZmZzZXRFeGNs
dWRpbmdPcGVuQnJhY2UsIGVuZE9mZnNldEV4Y2x1ZGluZ0Nsb3NlQnJhY2UsIDAsIHN0YXJ0Q29s
dW1uKTsKLSAgICByZXR1cm4gRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUodm0sIGJvZHlTb3Vy
Y2UsIHVubGlua2VkRXhlY3V0YWJsZSwgMCwgbGluZUNvdW50LCBzdGFydENvbHVtbiwgZW5kQ29s
dW1uRXhjbHVkaW5nQnJhY2VzLCBmYWxzZSk7Ci19Ci0KICNkZWZpbmUgSlNDX0RFRklORV9CVUlM
VElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAog
RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKFZNJiB2bSkgXFwKIHsgXFwK
LSAgICByZXR1cm4gY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUodm0sIHZtLmJ1aWx0aW5FeGVjdXRh
YmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+
Y29kZU5hbWUjI1NvdXJjZSgpKTsgXFwKKyAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVz
KCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmtHbG9iYWxDb2RlKHZtLCB2bS5idWlsdGlu
RXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpKTsgXFwKIH0KIAogSlNDX0ZPUkVBQ0hf
QlVJTFRJTihKU0NfREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE4MTIwMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzQ2LDE3ICsxNzQ2LDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhl
Y3V0YWJsZSogbwogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRF
eGVjdXRhYmxlID0gdW5saW5rZWRDb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsKICAgICAgICAg
aWYgKHZtKCktPnR5cGVQcm9maWxlcigpIHx8IHZtKCktPmNvbnRyb2xGbG93UHJvZmlsZXIoKSkK
ICAgICAgICAgICAgIHZtKCktPmZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSgpLT5pbnNlcnRVbmV4
ZWN1dGVkUmFuZ2UobV9vd25lckV4ZWN1dGFibGUtPnNvdXJjZUlEKCksIHVubGlua2VkRXhlY3V0
YWJsZS0+dHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KCksIHVubGlua2VkRXhlY3V0YWJsZS0+dHlw
ZVByb2ZpbGluZ0VuZE9mZnNldCgpKTsKLSAgICAgICAgdW5zaWduZWQgbGluZUNvdW50ID0gdW5s
aW5rZWRFeGVjdXRhYmxlLT5saW5lQ291bnQoKTsKLSAgICAgICAgdW5zaWduZWQgZmlyc3RMaW5l
ID0gb3duZXJFeGVjdXRhYmxlLT5saW5lTm8oKSArIHVubGlua2VkRXhlY3V0YWJsZS0+Zmlyc3RM
aW5lT2Zmc2V0KCk7Ci0gICAgICAgIGJvb2wgc3RhcnRDb2x1bW5Jc09uT3duZXJTdGFydExpbmUg
PSAhdW5saW5rZWRFeGVjdXRhYmxlLT5maXJzdExpbmVPZmZzZXQoKTsKLSAgICAgICAgdW5zaWdu
ZWQgc3RhcnRDb2x1bW4gPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnVubGlua2VkQm9keVN0YXJ0Q29s
dW1uKCkgKyAoc3RhcnRDb2x1bW5Jc09uT3duZXJTdGFydExpbmUgPyBvd25lckV4ZWN1dGFibGUt
PnN0YXJ0Q29sdW1uKCkgOiAxKTsKLSAgICAgICAgYm9vbCBlbmRDb2x1bW5Jc09uU3RhcnRMaW5l
ID0gIWxpbmVDb3VudDsKLSAgICAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0gdW5saW5rZWRFeGVj
dXRhYmxlLT51bmxpbmtlZEJvZHlFbmRDb2x1bW4oKSArIChlbmRDb2x1bW5Jc09uU3RhcnRMaW5l
ID8gc3RhcnRDb2x1bW4gOiAxKTsKLSAgICAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSBzb3Vy
Y2VPZmZzZXQgKyB1bmxpbmtlZEV4ZWN1dGFibGUtPnN0YXJ0T2Zmc2V0KCk7Ci0gICAgICAgIHVu
c2lnbmVkIHNvdXJjZUxlbmd0aCA9IHVubGlua2VkRXhlY3V0YWJsZS0+c291cmNlTGVuZ3RoKCk7
Ci0gICAgICAgIFNvdXJjZUNvZGUgY29kZShtX3NvdXJjZSwgc3RhcnRPZmZzZXQsIHN0YXJ0T2Zm
c2V0ICsgc291cmNlTGVuZ3RoLCBmaXJzdExpbmUsIHN0YXJ0Q29sdW1uKTsKLSAgICAgICAgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUo
Km1fdm0sIGNvZGUsIHVubGlua2VkRXhlY3V0YWJsZSwgZmlyc3RMaW5lLCBmaXJzdExpbmUgKyBs
aW5lQ291bnQsIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pOwotICAgICAgICBtX2Z1bmN0aW9uRGVj
bHNbaV0uc2V0KCptX3ZtLCBvd25lckV4ZWN1dGFibGUsIGV4ZWN1dGFibGUpOworICAgICAgICBt
X2Z1bmN0aW9uRGVjbHNbaV0uc2V0KCptX3ZtLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkRXhl
Y3V0YWJsZS0+bGlua0luc2lkZUV4ZWN1dGFibGUoKm1fdm0sIG93bmVyRXhlY3V0YWJsZS0+c291
cmNlKCkpKTsKICAgICB9CiAKICAgICBtX2Z1bmN0aW9uRXhwcnMucmVzaXplVG9GaXQodW5saW5r
ZWRDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25FeHBycygpKTsKQEAgLTE3NjQsMTcgKzE3NTQs
NyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgICAgIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUgPSB1bmxpbmtlZENv
ZGVCbG9jay0+ZnVuY3Rpb25FeHByKGkpOwogICAgICAgICBpZiAodm0oKS0+dHlwZVByb2ZpbGVy
KCkgfHwgdm0oKS0+Y29udHJvbEZsb3dQcm9maWxlcigpKQogICAgICAgICAgICAgdm0oKS0+ZnVu
Y3Rpb25IYXNFeGVjdXRlZENhY2hlKCktPmluc2VydFVuZXhlY3V0ZWRSYW5nZShtX293bmVyRXhl
Y3V0YWJsZS0+c291cmNlSUQoKSwgdW5saW5rZWRFeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nU3Rh
cnRPZmZzZXQoKSwgdW5saW5rZWRFeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkp
OwotICAgICAgICB1bnNpZ25lZCBsaW5lQ291bnQgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPmxpbmVD
b3VudCgpOwotICAgICAgICB1bnNpZ25lZCBmaXJzdExpbmUgPSBvd25lckV4ZWN1dGFibGUtPmxp
bmVObygpICsgdW5saW5rZWRFeGVjdXRhYmxlLT5maXJzdExpbmVPZmZzZXQoKTsKLSAgICAgICAg
Ym9vbCBzdGFydENvbHVtbklzT25Pd25lclN0YXJ0TGluZSA9ICF1bmxpbmtlZEV4ZWN1dGFibGUt
PmZpcnN0TGluZU9mZnNldCgpOwotICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IHVubGlu
a2VkRXhlY3V0YWJsZS0+dW5saW5rZWRCb2R5U3RhcnRDb2x1bW4oKSArIChzdGFydENvbHVtbklz
T25Pd25lclN0YXJ0TGluZSA/IG93bmVyRXhlY3V0YWJsZS0+c3RhcnRDb2x1bW4oKSA6IDEpOwot
ICAgICAgICBib29sIGVuZENvbHVtbklzT25TdGFydExpbmUgPSAhbGluZUNvdW50OwotICAgICAg
ICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnVubGlua2VkQm9keUVu
ZENvbHVtbigpICsgKGVuZENvbHVtbklzT25TdGFydExpbmUgPyBzdGFydENvbHVtbiA6IDEpOwot
ICAgICAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IHNvdXJjZU9mZnNldCArIHVubGlua2VkRXhl
Y3V0YWJsZS0+c3RhcnRPZmZzZXQoKTsKLSAgICAgICAgdW5zaWduZWQgc291cmNlTGVuZ3RoID0g
dW5saW5rZWRFeGVjdXRhYmxlLT5zb3VyY2VMZW5ndGgoKTsKLSAgICAgICAgU291cmNlQ29kZSBj
b2RlKG1fc291cmNlLCBzdGFydE9mZnNldCwgc3RhcnRPZmZzZXQgKyBzb3VyY2VMZW5ndGgsIGZp
cnN0TGluZSwgc3RhcnRDb2x1bW4pOwotICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUgPSBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgqbV92bSwgY29kZSwgdW5saW5rZWRF
eGVjdXRhYmxlLCBmaXJzdExpbmUsIGZpcnN0TGluZSArIGxpbmVDb3VudCwgc3RhcnRDb2x1bW4s
IGVuZENvbHVtbik7Ci0gICAgICAgIG1fZnVuY3Rpb25FeHByc1tpXS5zZXQoKm1fdm0sIG93bmVy
RXhlY3V0YWJsZSwgZXhlY3V0YWJsZSk7CisgICAgICAgIG1fZnVuY3Rpb25FeHByc1tpXS5zZXQo
Km1fdm0sIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihp
KS0+bGlua0luc2lkZUV4ZWN1dGFibGUoKm1fdm0sIG93bmVyRXhlY3V0YWJsZS0+c291cmNlKCkp
KTsKICAgICB9CiAKICAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPmhhc1JhcmVEYXRhKCkpIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTgxMjAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDE3
ICsxMTgsNDAgQEAgdm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaAogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5bWJvbFRhYmxlRm9yQ29uc3RydWN0KTsK
IH0KIAotRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6bGlu
ayhWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgc2l6ZV90IGxpbmVPZmZzZXQpCitG
dW5jdGlvbkV4ZWN1dGFibGUqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpsaW5rSW5zaWRl
RXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKIHsKLSAgICB1bnNp
Z25lZCBmaXJzdExpbmUgPSBsaW5lT2Zmc2V0ICsgbV9maXJzdExpbmVPZmZzZXQ7CisgICAgdW5z
aWduZWQgZmlyc3RMaW5lID0gc291cmNlLmZpcnN0TGluZSgpICsgbV9maXJzdExpbmVPZmZzZXQ7
CisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSBzb3VyY2Uuc3RhcnRPZmZzZXQoKSArIG1fc3Rh
cnRPZmZzZXQ7CisKICAgICBib29sIHN0YXJ0Q29sdW1uSXNPbkZpcnN0U291cmNlTGluZSA9ICFt
X2ZpcnN0TGluZU9mZnNldDsKICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IG1fdW5saW5rZWRC
b2R5U3RhcnRDb2x1bW4gKyAoc3RhcnRDb2x1bW5Jc09uRmlyc3RTb3VyY2VMaW5lID8gc291cmNl
LnN0YXJ0Q29sdW1uKCkgOiAxKTsKICAgICBib29sIGVuZENvbHVtbklzT25TdGFydExpbmUgPSAh
bV9saW5lQ291bnQ7CiAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0gbV91bmxpbmtlZEJvZHlFbmRD
b2x1bW4gKyAoZW5kQ29sdW1uSXNPblN0YXJ0TGluZSA/IHN0YXJ0Q29sdW1uIDogMSk7Ci0gICAg
U291cmNlQ29kZSBjb2RlKHNvdXJjZS5wcm92aWRlcigpLCBtX3N0YXJ0T2Zmc2V0LCBtX3N0YXJ0
T2Zmc2V0ICsgbV9zb3VyY2VMZW5ndGgsIGZpcnN0TGluZSwgc3RhcnRDb2x1bW4pOworCisgICAg
U291cmNlQ29kZSBjb2RlKHNvdXJjZS5wcm92aWRlcigpLCBzdGFydE9mZnNldCwgc3RhcnRPZmZz
ZXQgKyBtX3NvdXJjZUxlbmd0aCwgZmlyc3RMaW5lLCBzdGFydENvbHVtbik7CiAgICAgcmV0dXJu
IEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBjb2RlLCB0aGlzLCBmaXJzdExpbmUsIGZp
cnN0TGluZSArIG1fbGluZUNvdW50LCBzdGFydENvbHVtbiwgZW5kQ29sdW1uKTsKIH0KIAorRnVu
Y3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6bGlua0dsb2JhbENv
ZGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCit7CisgICAgdW5zaWduZWQgZmly
c3RMaW5lID0gc291cmNlLmZpcnN0TGluZSgpICsgbV9maXJzdExpbmVPZmZzZXQ7CisgICAgdW5z
aWduZWQgc3RhcnRPZmZzZXQgPSBzb3VyY2Uuc3RhcnRPZmZzZXQoKSArIG1fc3RhcnRPZmZzZXQ7
CisKKyAgICAvLyBXZSBkb24ndCBoYXZlIGFueSBvd25lciBleGVjdXRhYmxlLiBUaGUgc291cmNl
IHN0cmluZyBpcyBlZmZlY3RpdmVseSBsaWtlIGEgZ2xvYmFsCisgICAgLy8gc3RyaW5nIChsaWtl
IGluIHRoZSBoYW5kbGluZyBvZiBldmFsKS4gSGVuY2UsIHRoZSBzdGFydENvbHVtbiBpcyBhbHdh
eXMgMS4KKyAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IDE7CisgICAgYm9vbCBlbmRDb2x1bW5J
c09uU3RhcnRMaW5lID0gIW1fbGluZUNvdW50OworICAgIC8vIFRoZSB1bmxpbmtlZEJvZHlFbmRD
b2x1bW4gaXMgYmFzZWQtMC4gSGVuY2UsIHdlIG5lZWQgdG8gYWRkIDEgdG8gaXQuIEJ1dCBpZiB0
aGUKKyAgICAvLyBlbmRDb2x1bW4gaXMgb24gdGhlIHN0YXJ0TGluZSwgdGhlbiB3ZSBuZWVkIHRv
IHN1YnRyYWN0IGJhY2sgdGhlIGFkanVzdG1lbnQgZm9yCisgICAgLy8gdGhlIG9wZW4gYnJhY2Ug
cmVzdWx0aW5nIGluIGFuIGFkanVzdG1lbnQgb2YgMC4KKyAgICB1bnNpZ25lZCBlbmRDb2x1bW5F
eGNsdWRpbmdCcmFjZXMgPSBtX3VubGlua2VkQm9keUVuZENvbHVtbiArIChlbmRDb2x1bW5Jc09u
U3RhcnRMaW5lID8gMCA6IDEpOworICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0RXhjbHVkaW5nT3Bl
bkJyYWNlID0gc3RhcnRPZmZzZXQgKyAxOworICAgIHVuc2lnbmVkIGVuZE9mZnNldEV4Y2x1ZGlu
Z0Nsb3NlQnJhY2UgPSBzdGFydE9mZnNldCArIG1fc291cmNlTGVuZ3RoIC0gMTsKKyAgICBTb3Vy
Y2VDb2RlIGNvZGUoc291cmNlLnByb3ZpZGVyKCksIHN0YXJ0T2Zmc2V0RXhjbHVkaW5nT3BlbkJy
YWNlLCBlbmRPZmZzZXRFeGNsdWRpbmdDbG9zZUJyYWNlLCBmaXJzdExpbmUsIHN0YXJ0Q29sdW1u
KTsKKworICAgIHJldHVybiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwgY29kZSwgdGhp
cywgZmlyc3RMaW5lLCBmaXJzdExpbmUgKyBtX2xpbmVDb3VudCwgc3RhcnRDb2x1bW4sIGVuZENv
bHVtbkV4Y2x1ZGluZ0JyYWNlcywgZmFsc2UpOworfQorCiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKGNvbnN0IElk
ZW50aWZpZXImIG5hbWUsIEV4ZWNTdGF0ZSogZXhlYywgRGVidWdnZXIqLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIEpTT2JqZWN0KiogZXhjZXB0aW9uKQogewogICAgIFBhcnNlckVycm9yIGVy
cm9yOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmgJKHJldmlzaW9uIDE4MTIwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsOCAr
MTE3LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSlNQYXJzZU5vcm1hbDsKICAgICB9CiAK
LSAgICB1bnNpZ25lZCBmaXJzdExpbmVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0TGlu
ZU9mZnNldDsgfQotICAgIHVuc2lnbmVkIGxpbmVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fbGlu
ZUNvdW50OyB9CiAgICAgdW5zaWduZWQgdW5saW5rZWRGdW5jdGlvbk5hbWVTdGFydCgpIGNvbnN0
IHsgcmV0dXJuIG1fdW5saW5rZWRGdW5jdGlvbk5hbWVTdGFydDsgfQogICAgIHVuc2lnbmVkIHVu
bGlua2VkQm9keVN0YXJ0Q29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEJvZHlTdGFy
dENvbHVtbjsgfQogICAgIHVuc2lnbmVkIHVubGlua2VkQm9keUVuZENvbHVtbigpIGNvbnN0IHsg
cmV0dXJuIG1fdW5saW5rZWRCb2R5RW5kQ29sdW1uOyB9CkBAIC0xMzMsNyArMTMxLDggQEAgcHVi
bGljOgogCiAgICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmcm9tR2xvYmFs
Q29kZShjb25zdCBJZGVudGlmaWVyJiwgRXhlY1N0YXRlKiwgRGVidWdnZXIqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgSlNPYmplY3QqKiBleGNlcHRpb24pOwogCi0gICAgRnVuY3Rpb25FeGVjdXRhYmxl
KiBsaW5rKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIHNpemVfdCBsaW5lT2Zmc2V0KTsKKyAgICBG
dW5jdGlvbkV4ZWN1dGFibGUqIGxpbmtJbnNpZGVFeGVjdXRhYmxlKFZNJiwgY29uc3QgU291cmNl
Q29kZSYpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogbGlua0dsb2JhbENvZGUoVk0mLCBjb25z
dCBTb3VyY2VDb2RlJik7CiAKICAgICB2b2lkIGNsZWFyQ29kZUZvclJlY29tcGlsYXRpb24oKQog
ICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
Y3BwCShyZXZpc2lvbiAxODEyMDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAzLDcgKzUwMyw3IEBAIEpTT2JqZWN0
KiBQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUcKIAogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgZnVuY3Rpb25EZWNsYXJhdGlvbnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlID0gZnVuY3Rp
b25EZWNsYXJhdGlvbnNbaV0uc2Vjb25kLmdldCgpOwotICAgICAgICBKU1ZhbHVlIHZhbHVlID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+bGluayh2
bSwgbV9zb3VyY2UsIGxpbmVObygpKSwgc2NvcGUpOworICAgICAgICBKU1ZhbHVlIHZhbHVlID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+bGlua0lu
c2lkZUV4ZWN1dGFibGUodm0sIG1fc291cmNlKSwgc2NvcGUpOwogICAgICAgICBnbG9iYWxPYmpl
Y3QtPmFkZEZ1bmN0aW9uKGNhbGxGcmFtZSwgZnVuY3Rpb25EZWNsYXJhdGlvbnNbaV0uZmlyc3Qs
IHZhbHVlKTsKICAgICAgICAgaWYgKHZtLnR5cGVQcm9maWxlcigpIHx8IHZtLmNvbnRyb2xGbG93
UHJvZmlsZXIoKSkgewogICAgICAgICAgICAgdm0uZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKCkt
Pmluc2VydFVuZXhlY3V0ZWRSYW5nZShzb3VyY2VJRCgpLCAKQEAgLTYwOCwyNSArNjA4LDggQEAg
RnVuY3Rpb25FeGVjdXRhYmxlKiBGdW5jdGlvbkV4ZWN1dGFibGU6OgogewogICAgIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUobmFtZSwgZXhlYywgZGVidWdnZXIsIHNvdXJjZSwg
ZXhjZXB0aW9uKTsKICAgICBpZiAoIXVubGlua2VkRXhlY3V0YWJsZSkKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgdW5zaWduZWQgbGluZUNvdW50ID0gdW5saW5rZWRFeGVjdXRhYmxlLT5saW5lQ291
bnQoKTsKLSAgICB1bnNpZ25lZCBmaXJzdExpbmUgPSBzb3VyY2UuZmlyc3RMaW5lKCkgKyB1bmxp
bmtlZEV4ZWN1dGFibGUtPmZpcnN0TGluZU9mZnNldCgpOwotICAgIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0ID0gc291cmNlLnN0YXJ0T2Zmc2V0KCkgKyB1bmxpbmtlZEV4ZWN1dGFibGUtPnN0YXJ0T2Zm
c2V0KCk7Ci0KLSAgICAvLyBXZSBkb24ndCBoYXZlIGFueSBvd25lciBleGVjdXRhYmxlLiBUaGUg
c291cmNlIHN0cmluZyBpcyBlZmZlY3RpdmVseSBsaWtlIGEgZ2xvYmFsCi0gICAgLy8gc3RyaW5n
IChsaWtlIGluIHRoZSBoYW5kbGluZyBvZiBldmFsKS4gSGVuY2UsIHRoZSBzdGFydENvbHVtbiBp
cyBhbHdheXMgMS4KLSAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IDE7Ci0gICAgdW5zaWduZWQg
c291cmNlTGVuZ3RoID0gdW5saW5rZWRFeGVjdXRhYmxlLT5zb3VyY2VMZW5ndGgoKTsKLSAgICBi
b29sIGVuZENvbHVtbklzT25TdGFydExpbmUgPSAhbGluZUNvdW50OwotICAgIC8vIFRoZSB1bmxp
bmtlZEJvZHlFbmRDb2x1bW4gaXMgYmFzZWQtMC4gSGVuY2UsIHdlIG5lZWQgdG8gYWRkIDEgdG8g
aXQuIEJ1dCBpZiB0aGUKLSAgICAvLyBlbmRDb2x1bW4gaXMgb24gdGhlIHN0YXJ0TGluZSwgdGhl
biB3ZSBuZWVkIHRvIHN1YnRyYWN0IGJhY2sgdGhlIGFkanVzdG1lbnQgZm9yCi0gICAgLy8gdGhl
IG9wZW4gYnJhY2UgcmVzdWx0aW5nIGluIGFuIGFkanVzdG1lbnQgb2YgMC4KLSAgICB1bnNpZ25l
ZCBlbmRDb2x1bW5FeGNsdWRpbmdCcmFjZXMgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnVubGlua2Vk
Qm9keUVuZENvbHVtbigpICsgKGVuZENvbHVtbklzT25TdGFydExpbmUgPyAwIDogMSk7Ci0gICAg
dW5zaWduZWQgc3RhcnRPZmZzZXRFeGNsdWRpbmdPcGVuQnJhY2UgPSBzdGFydE9mZnNldCArIDE7
Ci0gICAgdW5zaWduZWQgZW5kT2Zmc2V0RXhjbHVkaW5nQ2xvc2VCcmFjZSA9IHN0YXJ0T2Zmc2V0
ICsgc291cmNlTGVuZ3RoIC0gMTsKLSAgICBTb3VyY2VDb2RlIGJvZHlTb3VyY2Uoc291cmNlLnBy
b3ZpZGVyKCksIHN0YXJ0T2Zmc2V0RXhjbHVkaW5nT3BlbkJyYWNlLCBlbmRPZmZzZXRFeGNsdWRp
bmdDbG9zZUJyYWNlLCBmaXJzdExpbmUsIHN0YXJ0Q29sdW1uKTsKLQotICAgIHJldHVybiBGdW5j
dGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLT52bSgpLCBib2R5U291cmNlLCB1bmxpbmtlZEV4
ZWN1dGFibGUsIGZpcnN0TGluZSwgZmlyc3RMaW5lICsgbGluZUNvdW50LCBzdGFydENvbHVtbiwg
ZW5kQ29sdW1uRXhjbHVkaW5nQnJhY2VzLCBmYWxzZSk7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiB1bmxpbmtlZEV4ZWN1dGFibGUtPmxpbmtHbG9iYWxDb2RlKGV4ZWMtPnZt
KCksIHNvdXJjZSk7CiB9CiAKIFN0cmluZyBGdW5jdGlvbkV4ZWN1dGFibGU6OnBhcmFtU3RyaW5n
KCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248152</attachid>
            <date>2015-03-07 01:36:41 -0800</date>
            <delta_ts>2015-03-07 08:51:12 -0800</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-142436-20150307013620.patch</filename>
            <type>text/plain</type>
            <size>13673</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgxMjA2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBA
CisyMDE1LTAzLTA3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAg
IFRoZSBjb2RlIHRvIGxpbmsgRnVuY3Rpb25FeGVjdXRhYmxlIGlzIGR1cGxpY2F0ZWQgZXZlcnl3
aGVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQy
NDM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVk
dWNlZCBjb2RlIGR1cGxpY2F0aW9uIGJ5IGZhY3RvcmluZyBvdXQgbGlua0luc2lkZUV4ZWN1dGFi
bGUgYW5kIGxpbmtHbG9iYWxDb2RlLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOiBDYWxscyBsaW5rSW5zaWRl
RXhlY3V0YWJsZS4KKworICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmxpbmtJbnNpZGVFeGVj
dXRhYmxlKTogUmVuYW1lZCBmcm9tIGxpbmsuIE5vdyB0YWtlcyBjYXJlIG9mIHN0YXJ0T2Zmc2V0
LgorICAgICAgICBUaGlzIGNoYW5nZSB3YXMgbmVlZGVkIHRvIHVzZSB0aGlzIGZ1bmN0aW9uIGlu
IENvZGVCbG9jazo6Q29kZUJsb2NrLiBBbHNvLCB0aGlzIGZ1bmN0aW9uIG5vIGxvbmdlciB0YWtl
cworICAgICAgICBsaW5lT2Zmc2V0IHNpbmNlIHRoaXMgaW5mb3JtYXRpb24gaXMgYWxyZWFkeSBz
dG9yZWQgaW4gdGhlIHNvdXJjZSBjb2RlLgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6bGlua0dsb2JhbENvZGUpOiBFeHRyYWN0ZWQgZnJvbSBGdW5jdGlvbkV4ZWN1
dGFibGU6OmZyb21HbG9iYWxDb2RlLgorCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaDoKKworICAgICAgICAqIGdlbmVyYXRlLWpzLWJ1aWx0aW5zOiBDYWxscyBsaW5rR2xv
YmFsQ29kZS4KKworICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChK
U0M6OlByb2dyYW1FeGVjdXRhYmxlOjppbml0aWFsaXplR2xvYmFsUHJvcGVydGllcyk6IENhbGxz
IGxpbmtHbG9iYWxDb2RlLgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21H
bG9iYWxDb2RlKTogQ2FsbHMgbGlua0dsb2JhbENvZGUuCisKIDIwMTUtMDMtMDYgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gVHVybiBvZmYgYSB3
YXJuaW5nIG9uIFdpbmRvd3MuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUt
anMtYnVpbHRpbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRl
LWpzLWJ1aWx0aW5zCShyZXZpc2lvbiAxODEyMDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Z2VuZXJhdGUtanMtYnVpbHRpbnMJKHdvcmtpbmcgY29weSkKQEAgLTI2NCwyNCArMjY0LDEwIEBA
IGZvciAoY29kZVJlZmVyZW5jZSwgbmFtZSwgc291cmNlKSBpbiBjb2QKICAgICBidWlsdGluc0lt
cGxlbWVudGF0aW9uLndyaXRlKCJjb25zdCBpbnQgc18lc0xlbmd0aCA9ICVkO1xuXG4iICUgKGNv
ZGVSZWZlcmVuY2UsIHNvdXJjZUxlbmd0aCArIDEpKSAjICsgMSBmb3IgXG4KIAogYnVpbHRpbnNJ
bXBsZW1lbnRhdGlvbi53cml0ZSgiIiIKLUZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVpbHRp
bkV4ZWN1dGFibGUoVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRF
eGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCi17Ci0gICAgdW5zaWduZWQgbGlu
ZUNvdW50ID0gdW5saW5rZWRFeGVjdXRhYmxlLT5saW5lQ291bnQoKTsKLSAgICB1bnNpZ25lZCBz
dGFydENvbHVtbiA9IDE7Ci0gICAgdW5zaWduZWQgc291cmNlTGVuZ3RoID0gdW5saW5rZWRFeGVj
dXRhYmxlLT5zb3VyY2VMZW5ndGgoKTsKLSAgICBib29sIGVuZENvbHVtbklzT25TdGFydExpbmUg
PSAhbGluZUNvdW50OwotICAgIHVuc2lnbmVkIGVuZENvbHVtbkV4Y2x1ZGluZ0JyYWNlcyA9IHVu
bGlua2VkRXhlY3V0YWJsZS0+dW5saW5rZWRCb2R5RW5kQ29sdW1uKCkgKyAoZW5kQ29sdW1uSXNP
blN0YXJ0TGluZSA/IDAgOiAxKTsKLSAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IHVubGlua2Vk
RXhlY3V0YWJsZS0+c3RhcnRPZmZzZXQoKTsKLSAgICB1bnNpZ25lZCBzdGFydE9mZnNldEV4Y2x1
ZGluZ09wZW5CcmFjZSA9IHN0YXJ0T2Zmc2V0ICsgMTsKLSAgICB1bnNpZ25lZCBlbmRPZmZzZXRF
eGNsdWRpbmdDbG9zZUJyYWNlID0gc3RhcnRPZmZzZXQgKyBzb3VyY2VMZW5ndGggLSAxOwotICAg
IFNvdXJjZUNvZGUgYm9keVNvdXJjZShzb3VyY2UucHJvdmlkZXIoKSwgc3RhcnRPZmZzZXRFeGNs
dWRpbmdPcGVuQnJhY2UsIGVuZE9mZnNldEV4Y2x1ZGluZ0Nsb3NlQnJhY2UsIDAsIHN0YXJ0Q29s
dW1uKTsKLSAgICByZXR1cm4gRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUodm0sIGJvZHlTb3Vy
Y2UsIHVubGlua2VkRXhlY3V0YWJsZSwgMCwgbGluZUNvdW50LCBzdGFydENvbHVtbiwgZW5kQ29s
dW1uRXhjbHVkaW5nQnJhY2VzLCBmYWxzZSk7Ci19Ci0KICNkZWZpbmUgSlNDX0RFRklORV9CVUlM
VElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAog
RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKFZNJiB2bSkgXFwKIHsgXFwK
LSAgICByZXR1cm4gY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUodm0sIHZtLmJ1aWx0aW5FeGVjdXRh
YmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+
Y29kZU5hbWUjI1NvdXJjZSgpKTsgXFwKKyAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVz
KCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmtHbG9iYWxDb2RlKHZtLCB2bS5idWlsdGlu
RXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpKTsgXFwKIH0KIAogSlNDX0ZPUkVBQ0hf
QlVJTFRJTihKU0NfREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE4MTIwMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzQ2LDE3ICsxNzQ2LDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhl
Y3V0YWJsZSogbwogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRF
eGVjdXRhYmxlID0gdW5saW5rZWRDb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsKICAgICAgICAg
aWYgKHZtKCktPnR5cGVQcm9maWxlcigpIHx8IHZtKCktPmNvbnRyb2xGbG93UHJvZmlsZXIoKSkK
ICAgICAgICAgICAgIHZtKCktPmZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSgpLT5pbnNlcnRVbmV4
ZWN1dGVkUmFuZ2UobV9vd25lckV4ZWN1dGFibGUtPnNvdXJjZUlEKCksIHVubGlua2VkRXhlY3V0
YWJsZS0+dHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KCksIHVubGlua2VkRXhlY3V0YWJsZS0+dHlw
ZVByb2ZpbGluZ0VuZE9mZnNldCgpKTsKLSAgICAgICAgdW5zaWduZWQgbGluZUNvdW50ID0gdW5s
aW5rZWRFeGVjdXRhYmxlLT5saW5lQ291bnQoKTsKLSAgICAgICAgdW5zaWduZWQgZmlyc3RMaW5l
ID0gb3duZXJFeGVjdXRhYmxlLT5saW5lTm8oKSArIHVubGlua2VkRXhlY3V0YWJsZS0+Zmlyc3RM
aW5lT2Zmc2V0KCk7Ci0gICAgICAgIGJvb2wgc3RhcnRDb2x1bW5Jc09uT3duZXJTdGFydExpbmUg
PSAhdW5saW5rZWRFeGVjdXRhYmxlLT5maXJzdExpbmVPZmZzZXQoKTsKLSAgICAgICAgdW5zaWdu
ZWQgc3RhcnRDb2x1bW4gPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnVubGlua2VkQm9keVN0YXJ0Q29s
dW1uKCkgKyAoc3RhcnRDb2x1bW5Jc09uT3duZXJTdGFydExpbmUgPyBvd25lckV4ZWN1dGFibGUt
PnN0YXJ0Q29sdW1uKCkgOiAxKTsKLSAgICAgICAgYm9vbCBlbmRDb2x1bW5Jc09uU3RhcnRMaW5l
ID0gIWxpbmVDb3VudDsKLSAgICAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0gdW5saW5rZWRFeGVj
dXRhYmxlLT51bmxpbmtlZEJvZHlFbmRDb2x1bW4oKSArIChlbmRDb2x1bW5Jc09uU3RhcnRMaW5l
ID8gc3RhcnRDb2x1bW4gOiAxKTsKLSAgICAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSBzb3Vy
Y2VPZmZzZXQgKyB1bmxpbmtlZEV4ZWN1dGFibGUtPnN0YXJ0T2Zmc2V0KCk7Ci0gICAgICAgIHVu
c2lnbmVkIHNvdXJjZUxlbmd0aCA9IHVubGlua2VkRXhlY3V0YWJsZS0+c291cmNlTGVuZ3RoKCk7
Ci0gICAgICAgIFNvdXJjZUNvZGUgY29kZShtX3NvdXJjZSwgc3RhcnRPZmZzZXQsIHN0YXJ0T2Zm
c2V0ICsgc291cmNlTGVuZ3RoLCBmaXJzdExpbmUsIHN0YXJ0Q29sdW1uKTsKLSAgICAgICAgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUo
Km1fdm0sIGNvZGUsIHVubGlua2VkRXhlY3V0YWJsZSwgZmlyc3RMaW5lLCBmaXJzdExpbmUgKyBs
aW5lQ291bnQsIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pOwotICAgICAgICBtX2Z1bmN0aW9uRGVj
bHNbaV0uc2V0KCptX3ZtLCBvd25lckV4ZWN1dGFibGUsIGV4ZWN1dGFibGUpOworICAgICAgICBt
X2Z1bmN0aW9uRGVjbHNbaV0uc2V0KCptX3ZtLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkRXhl
Y3V0YWJsZS0+bGlua0luc2lkZUV4ZWN1dGFibGUoKm1fdm0sIG93bmVyRXhlY3V0YWJsZS0+c291
cmNlKCkpKTsKICAgICB9CiAKICAgICBtX2Z1bmN0aW9uRXhwcnMucmVzaXplVG9GaXQodW5saW5r
ZWRDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25FeHBycygpKTsKQEAgLTE3NjQsMTcgKzE3NTQs
NyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgICAgIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUgPSB1bmxpbmtlZENv
ZGVCbG9jay0+ZnVuY3Rpb25FeHByKGkpOwogICAgICAgICBpZiAodm0oKS0+dHlwZVByb2ZpbGVy
KCkgfHwgdm0oKS0+Y29udHJvbEZsb3dQcm9maWxlcigpKQogICAgICAgICAgICAgdm0oKS0+ZnVu
Y3Rpb25IYXNFeGVjdXRlZENhY2hlKCktPmluc2VydFVuZXhlY3V0ZWRSYW5nZShtX293bmVyRXhl
Y3V0YWJsZS0+c291cmNlSUQoKSwgdW5saW5rZWRFeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nU3Rh
cnRPZmZzZXQoKSwgdW5saW5rZWRFeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkp
OwotICAgICAgICB1bnNpZ25lZCBsaW5lQ291bnQgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPmxpbmVD
b3VudCgpOwotICAgICAgICB1bnNpZ25lZCBmaXJzdExpbmUgPSBvd25lckV4ZWN1dGFibGUtPmxp
bmVObygpICsgdW5saW5rZWRFeGVjdXRhYmxlLT5maXJzdExpbmVPZmZzZXQoKTsKLSAgICAgICAg
Ym9vbCBzdGFydENvbHVtbklzT25Pd25lclN0YXJ0TGluZSA9ICF1bmxpbmtlZEV4ZWN1dGFibGUt
PmZpcnN0TGluZU9mZnNldCgpOwotICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IHVubGlu
a2VkRXhlY3V0YWJsZS0+dW5saW5rZWRCb2R5U3RhcnRDb2x1bW4oKSArIChzdGFydENvbHVtbklz
T25Pd25lclN0YXJ0TGluZSA/IG93bmVyRXhlY3V0YWJsZS0+c3RhcnRDb2x1bW4oKSA6IDEpOwot
ICAgICAgICBib29sIGVuZENvbHVtbklzT25TdGFydExpbmUgPSAhbGluZUNvdW50OwotICAgICAg
ICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnVubGlua2VkQm9keUVu
ZENvbHVtbigpICsgKGVuZENvbHVtbklzT25TdGFydExpbmUgPyBzdGFydENvbHVtbiA6IDEpOwot
ICAgICAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IHNvdXJjZU9mZnNldCArIHVubGlua2VkRXhl
Y3V0YWJsZS0+c3RhcnRPZmZzZXQoKTsKLSAgICAgICAgdW5zaWduZWQgc291cmNlTGVuZ3RoID0g
dW5saW5rZWRFeGVjdXRhYmxlLT5zb3VyY2VMZW5ndGgoKTsKLSAgICAgICAgU291cmNlQ29kZSBj
b2RlKG1fc291cmNlLCBzdGFydE9mZnNldCwgc3RhcnRPZmZzZXQgKyBzb3VyY2VMZW5ndGgsIGZp
cnN0TGluZSwgc3RhcnRDb2x1bW4pOwotICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUgPSBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgqbV92bSwgY29kZSwgdW5saW5rZWRF
eGVjdXRhYmxlLCBmaXJzdExpbmUsIGZpcnN0TGluZSArIGxpbmVDb3VudCwgc3RhcnRDb2x1bW4s
IGVuZENvbHVtbik7Ci0gICAgICAgIG1fZnVuY3Rpb25FeHByc1tpXS5zZXQoKm1fdm0sIG93bmVy
RXhlY3V0YWJsZSwgZXhlY3V0YWJsZSk7CisgICAgICAgIG1fZnVuY3Rpb25FeHByc1tpXS5zZXQo
Km1fdm0sIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRFeGVjdXRhYmxlLT5saW5rSW5zaWRlRXhl
Y3V0YWJsZSgqbV92bSwgb3duZXJFeGVjdXRhYmxlLT5zb3VyY2UoKSkpOwogICAgIH0KIAogICAg
IGlmICh1bmxpbmtlZENvZGVCbG9jay0+aGFzUmFyZURhdGEoKSkgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCShy
ZXZpc2lvbiAxODEyMDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsMTcgKzExOCw0MCBAQCB2b2lk
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp2aXNpdENoCiAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fc3ltYm9sVGFibGVGb3JDb25zdHJ1Y3QpOwogfQogCi1GdW5jdGlvbkV4
ZWN1dGFibGUqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpsaW5rKFZNJiB2bSwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBzaXplX3QgbGluZU9mZnNldCkKK0Z1bmN0aW9uRXhlY3V0YWJs
ZSogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmxpbmtJbnNpZGVFeGVjdXRhYmxlKFZNJiB2
bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQogewotICAgIHVuc2lnbmVkIGZpcnN0TGluZSA9
IGxpbmVPZmZzZXQgKyBtX2ZpcnN0TGluZU9mZnNldDsKKyAgICB1bnNpZ25lZCBmaXJzdExpbmUg
PSBzb3VyY2UuZmlyc3RMaW5lKCkgKyBtX2ZpcnN0TGluZU9mZnNldDsKKyAgICB1bnNpZ25lZCBz
dGFydE9mZnNldCA9IHNvdXJjZS5zdGFydE9mZnNldCgpICsgbV9zdGFydE9mZnNldDsKKwogICAg
IGJvb2wgc3RhcnRDb2x1bW5Jc09uRmlyc3RTb3VyY2VMaW5lID0gIW1fZmlyc3RMaW5lT2Zmc2V0
OwogICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gbV91bmxpbmtlZEJvZHlTdGFydENvbHVtbiAr
IChzdGFydENvbHVtbklzT25GaXJzdFNvdXJjZUxpbmUgPyBzb3VyY2Uuc3RhcnRDb2x1bW4oKSA6
IDEpOwogICAgIGJvb2wgZW5kQ29sdW1uSXNPblN0YXJ0TGluZSA9ICFtX2xpbmVDb3VudDsKICAg
ICB1bnNpZ25lZCBlbmRDb2x1bW4gPSBtX3VubGlua2VkQm9keUVuZENvbHVtbiArIChlbmRDb2x1
bW5Jc09uU3RhcnRMaW5lID8gc3RhcnRDb2x1bW4gOiAxKTsKLSAgICBTb3VyY2VDb2RlIGNvZGUo
c291cmNlLnByb3ZpZGVyKCksIG1fc3RhcnRPZmZzZXQsIG1fc3RhcnRPZmZzZXQgKyBtX3NvdXJj
ZUxlbmd0aCwgZmlyc3RMaW5lLCBzdGFydENvbHVtbik7CisKKyAgICBTb3VyY2VDb2RlIGNvZGUo
c291cmNlLnByb3ZpZGVyKCksIHN0YXJ0T2Zmc2V0LCBzdGFydE9mZnNldCArIG1fc291cmNlTGVu
Z3RoLCBmaXJzdExpbmUsIHN0YXJ0Q29sdW1uKTsKICAgICByZXR1cm4gRnVuY3Rpb25FeGVjdXRh
YmxlOjpjcmVhdGUodm0sIGNvZGUsIHRoaXMsIGZpcnN0TGluZSwgZmlyc3RMaW5lICsgbV9saW5l
Q291bnQsIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pOwogfQogCitGdW5jdGlvbkV4ZWN1dGFibGUq
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpsaW5rR2xvYmFsQ29kZShWTSYgdm0sIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSkKK3sKKyAgICB1bnNpZ25lZCBmaXJzdExpbmUgPSBzb3VyY2Uu
Zmlyc3RMaW5lKCkgKyBtX2ZpcnN0TGluZU9mZnNldDsKKyAgICB1bnNpZ25lZCBzdGFydE9mZnNl
dCA9IHNvdXJjZS5zdGFydE9mZnNldCgpICsgbV9zdGFydE9mZnNldDsKKworICAgIC8vIFdlIGRv
bid0IGhhdmUgYW55IG93bmVyIGV4ZWN1dGFibGUuIFRoZSBzb3VyY2Ugc3RyaW5nIGlzIGVmZmVj
dGl2ZWx5IGxpa2UgYSBnbG9iYWwKKyAgICAvLyBzdHJpbmcgKGxpa2UgaW4gdGhlIGhhbmRsaW5n
IG9mIGV2YWwpLiBIZW5jZSwgdGhlIHN0YXJ0Q29sdW1uIGlzIGFsd2F5cyAxLgorICAgIHVuc2ln
bmVkIHN0YXJ0Q29sdW1uID0gMTsKKyAgICBib29sIGVuZENvbHVtbklzT25TdGFydExpbmUgPSAh
bV9saW5lQ291bnQ7CisgICAgLy8gVGhlIHVubGlua2VkQm9keUVuZENvbHVtbiBpcyBiYXNlZC0w
LiBIZW5jZSwgd2UgbmVlZCB0byBhZGQgMSB0byBpdC4gQnV0IGlmIHRoZQorICAgIC8vIGVuZENv
bHVtbiBpcyBvbiB0aGUgc3RhcnRMaW5lLCB0aGVuIHdlIG5lZWQgdG8gc3VidHJhY3QgYmFjayB0
aGUgYWRqdXN0bWVudCBmb3IKKyAgICAvLyB0aGUgb3BlbiBicmFjZSByZXN1bHRpbmcgaW4gYW4g
YWRqdXN0bWVudCBvZiAwLgorICAgIHVuc2lnbmVkIGVuZENvbHVtbkV4Y2x1ZGluZ0JyYWNlcyA9
IG1fdW5saW5rZWRCb2R5RW5kQ29sdW1uICsgKGVuZENvbHVtbklzT25TdGFydExpbmUgPyAwIDog
MSk7CisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXRFeGNsdWRpbmdPcGVuQnJhY2UgPSBzdGFydE9m
ZnNldCArIDE7CisgICAgdW5zaWduZWQgZW5kT2Zmc2V0RXhjbHVkaW5nQ2xvc2VCcmFjZSA9IHN0
YXJ0T2Zmc2V0ICsgbV9zb3VyY2VMZW5ndGggLSAxOworICAgIFNvdXJjZUNvZGUgY29kZShzb3Vy
Y2UucHJvdmlkZXIoKSwgc3RhcnRPZmZzZXRFeGNsdWRpbmdPcGVuQnJhY2UsIGVuZE9mZnNldEV4
Y2x1ZGluZ0Nsb3NlQnJhY2UsIGZpcnN0TGluZSwgc3RhcnRDb2x1bW4pOworCisgICAgcmV0dXJu
IEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBjb2RlLCB0aGlzLCBmaXJzdExpbmUsIGZp
cnN0TGluZSArIG1fbGluZUNvdW50LCBzdGFydENvbHVtbiwgZW5kQ29sdW1uRXhjbHVkaW5nQnJh
Y2VzLCBmYWxzZSk7Cit9CisKIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoY29uc3QgSWRlbnRpZmllciYgbmFtZSwg
RXhlY1N0YXRlKiBleGVjLCBEZWJ1Z2dlciosIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNP
YmplY3QqKiBleGNlcHRpb24pCiB7CiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAko
cmV2aXNpb24gMTgxMjAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNyw4ICsxMTcsNiBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBKU1BhcnNlTm9ybWFsOwogICAgIH0KIAotICAgIHVuc2lnbmVkIGZp
cnN0TGluZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RMaW5lT2Zmc2V0OyB9Ci0gICAg
dW5zaWduZWQgbGluZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9saW5lQ291bnQ7IH0KICAgICB1
bnNpZ25lZCB1bmxpbmtlZEZ1bmN0aW9uTmFtZVN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV91bmxp
bmtlZEZ1bmN0aW9uTmFtZVN0YXJ0OyB9CiAgICAgdW5zaWduZWQgdW5saW5rZWRCb2R5U3RhcnRD
b2x1bW4oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQm9keVN0YXJ0Q29sdW1uOyB9CiAgICAg
dW5zaWduZWQgdW5saW5rZWRCb2R5RW5kQ29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtl
ZEJvZHlFbmRDb2x1bW47IH0KQEAgLTEzMyw3ICsxMzEsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZyb21HbG9iYWxDb2RlKGNvbnN0IElkZW50
aWZpZXImLCBFeGVjU3RhdGUqLCBEZWJ1Z2dlciosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU09iamVj
dCoqIGV4Y2VwdGlvbik7CiAKLSAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGxpbmsoVk0mLCBjb25z
dCBTb3VyY2VDb2RlJiwgc2l6ZV90IGxpbmVPZmZzZXQpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogbGlua0luc2lkZUV4ZWN1dGFibGUoVk0mLCBjb25zdCBTb3VyY2VDb2RlJik7CisgICAgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBsaW5rR2xvYmFsQ29kZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmKTsK
IAogICAgIHZvaWQgY2xlYXJDb2RlRm9yUmVjb21waWxhdGlvbigpCiAgICAgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDE4
MTIwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MDMsNyArNTAzLDcgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRh
YmxlOjppbml0aWFsaXplRwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbkRl
Y2xhcmF0aW9ucy5zaXplKCk7ICsraSkgewogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgPSBmdW5jdGlvbkRlY2xhcmF0aW9uc1tp
XS5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5saW5rKHZtLCBtX3NvdXJjZSwgbGlu
ZU5vKCkpLCBzY29wZSk7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5saW5rSW5zaWRlRXhlY3V0YWJsZSh2
bSwgbV9zb3VyY2UpLCBzY29wZSk7CiAgICAgICAgIGdsb2JhbE9iamVjdC0+YWRkRnVuY3Rpb24o
Y2FsbEZyYW1lLCBmdW5jdGlvbkRlY2xhcmF0aW9uc1tpXS5maXJzdCwgdmFsdWUpOwogICAgICAg
ICBpZiAodm0udHlwZVByb2ZpbGVyKCkgfHwgdm0uY29udHJvbEZsb3dQcm9maWxlcigpKSB7CiAg
ICAgICAgICAgICB2bS5mdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUoKS0+aW5zZXJ0VW5leGVjdXRl
ZFJhbmdlKHNvdXJjZUlEKCksIApAQCAtNjA4LDI1ICs2MDgsOCBAQCBGdW5jdGlvbkV4ZWN1dGFi
bGUqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6CiB7CiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIHVubGlua2VkRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9t
R2xvYmFsQ29kZShuYW1lLCBleGVjLCBkZWJ1Z2dlciwgc291cmNlLCBleGNlcHRpb24pOwogICAg
IGlmICghdW5saW5rZWRFeGVjdXRhYmxlKQotICAgICAgICByZXR1cm4gMDsKLSAgICB1bnNpZ25l
ZCBsaW5lQ291bnQgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPmxpbmVDb3VudCgpOwotICAgIHVuc2ln
bmVkIGZpcnN0TGluZSA9IHNvdXJjZS5maXJzdExpbmUoKSArIHVubGlua2VkRXhlY3V0YWJsZS0+
Zmlyc3RMaW5lT2Zmc2V0KCk7Ci0gICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSBzb3VyY2Uuc3Rh
cnRPZmZzZXQoKSArIHVubGlua2VkRXhlY3V0YWJsZS0+c3RhcnRPZmZzZXQoKTsKLQotICAgIC8v
IFdlIGRvbid0IGhhdmUgYW55IG93bmVyIGV4ZWN1dGFibGUuIFRoZSBzb3VyY2Ugc3RyaW5nIGlz
IGVmZmVjdGl2ZWx5IGxpa2UgYSBnbG9iYWwKLSAgICAvLyBzdHJpbmcgKGxpa2UgaW4gdGhlIGhh
bmRsaW5nIG9mIGV2YWwpLiBIZW5jZSwgdGhlIHN0YXJ0Q29sdW1uIGlzIGFsd2F5cyAxLgotICAg
IHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gMTsKLSAgICB1bnNpZ25lZCBzb3VyY2VMZW5ndGggPSB1
bmxpbmtlZEV4ZWN1dGFibGUtPnNvdXJjZUxlbmd0aCgpOwotICAgIGJvb2wgZW5kQ29sdW1uSXNP
blN0YXJ0TGluZSA9ICFsaW5lQ291bnQ7Ci0gICAgLy8gVGhlIHVubGlua2VkQm9keUVuZENvbHVt
biBpcyBiYXNlZC0wLiBIZW5jZSwgd2UgbmVlZCB0byBhZGQgMSB0byBpdC4gQnV0IGlmIHRoZQot
ICAgIC8vIGVuZENvbHVtbiBpcyBvbiB0aGUgc3RhcnRMaW5lLCB0aGVuIHdlIG5lZWQgdG8gc3Vi
dHJhY3QgYmFjayB0aGUgYWRqdXN0bWVudCBmb3IKLSAgICAvLyB0aGUgb3BlbiBicmFjZSByZXN1
bHRpbmcgaW4gYW4gYWRqdXN0bWVudCBvZiAwLgotICAgIHVuc2lnbmVkIGVuZENvbHVtbkV4Y2x1
ZGluZ0JyYWNlcyA9IHVubGlua2VkRXhlY3V0YWJsZS0+dW5saW5rZWRCb2R5RW5kQ29sdW1uKCkg
KyAoZW5kQ29sdW1uSXNPblN0YXJ0TGluZSA/IDAgOiAxKTsKLSAgICB1bnNpZ25lZCBzdGFydE9m
ZnNldEV4Y2x1ZGluZ09wZW5CcmFjZSA9IHN0YXJ0T2Zmc2V0ICsgMTsKLSAgICB1bnNpZ25lZCBl
bmRPZmZzZXRFeGNsdWRpbmdDbG9zZUJyYWNlID0gc3RhcnRPZmZzZXQgKyBzb3VyY2VMZW5ndGgg
LSAxOwotICAgIFNvdXJjZUNvZGUgYm9keVNvdXJjZShzb3VyY2UucHJvdmlkZXIoKSwgc3RhcnRP
ZmZzZXRFeGNsdWRpbmdPcGVuQnJhY2UsIGVuZE9mZnNldEV4Y2x1ZGluZ0Nsb3NlQnJhY2UsIGZp
cnN0TGluZSwgc3RhcnRDb2x1bW4pOwotCi0gICAgcmV0dXJuIEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y3JlYXRlKGV4ZWMtPnZtKCksIGJvZHlTb3VyY2UsIHVubGlua2VkRXhlY3V0YWJsZSwgZmlyc3RM
aW5lLCBmaXJzdExpbmUgKyBsaW5lQ291bnQsIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW5FeGNsdWRp
bmdCcmFjZXMsIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHVu
bGlua2VkRXhlY3V0YWJsZS0+bGlua0dsb2JhbENvZGUoZXhlYy0+dm0oKSwgc291cmNlKTsKIH0K
IAogU3RyaW5nIEZ1bmN0aW9uRXhlY3V0YWJsZTo6cGFyYW1TdHJpbmcoKSBjb25zdAo=
</data>
<flag name="review"
          id="273067"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>