<?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>63173</bug_id>
          
          <creation_ts>2011-06-22 13:04:32 -0700</creation_ts>
          <short_desc>DFG non-speculative JIT lacks basic optimizations for GetById and GetByVal</short_desc>
          <delta_ts>2011-06-23 17:40:34 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>425504</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-06-22 13:04:32 -0700</bug_when>
    <thetext>The main JSC JIT has optimizations to speed up GetById and GetByVal for common cases.  The DFG speculative JIT has some of these optimizations as well.  But the non-speculative JIT always calls out to C, potentially resulting in performance regressions on code that fails speculation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425516</commentid>
    <comment_count>1</comment_count>
      <attachid>98226</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-06-22 13:12:11 -0700</bug_when>
    <thetext>Created attachment 98226
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425518</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-22 13:14:48 -0700</bug_when>
    <thetext>Attachment 98226 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/ChangeLog:6:  Line contains tab character.  [whitespace/tab] [5]
Source/JavaScriptCore/dfg/DFGJITCodeGenerator.cpp:328:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Source/JavaScriptCore/dfg/DFGNonSpeculativeJIT.cpp:502:  Missing spaces around =  [whitespace/operators] [4]
Source/JavaScriptCore/dfg/DFGNonSpeculativeJIT.cpp:503:  Missing spaces around !=  [whitespace/operators] [3]
Total errors found: 4 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425525</commentid>
    <comment_count>3</comment_count>
      <attachid>98230</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-06-22 13:24:48 -0700</bug_when>
    <thetext>Created attachment 98230
the patch (fixed style)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425529</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-22 13:27:54 -0700</bug_when>
    <thetext>Attachment 98230 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/ChangeLog:6:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425533</commentid>
    <comment_count>5</comment_count>
      <attachid>98231</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-06-22 13:33:16 -0700</bug_when>
    <thetext>Created attachment 98231
the patch (more style fixes)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425641</commentid>
    <comment_count>6</comment_count>
      <attachid>98231</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-06-22 15:02:24 -0700</bug_when>
    <thetext>Comment on attachment 98231
the patch (more style fixes)

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

Please fix comments above, as discussed!

&gt; Source/JavaScriptCore/dfg/DFGNonSpeculativeJIT.cpp:502
&gt; +        NodeIndex alias = node.child3;

The alias optimization is unsafe on the non-speculative path.
This assumes that between subsequent GetByVals to the same location, the value / array has not changed.  We ensure this is true on the speculative path by restricting generation of operations that would trigger side-effects, but do not do so on the non-speculative path.

&gt; Source/JavaScriptCore/dfg/DFGNonSpeculativeJIT.cpp:586
&gt; +        cachedGetById(baseGPR, resultGPR, node.identifierNumber());

The code generation for this method is going to generate two calls, please refactor to make one call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425814</commentid>
    <comment_count>7</comment_count>
      <attachid>98280</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-06-22 18:10:44 -0700</bug_when>
    <thetext>Created attachment 98280
the patch (fixed review comments)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425819</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-22 18:14:02 -0700</bug_when>
    <thetext>Attachment 98280 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/dfg/DFGJITCodeGenerator.cpp:335:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425909</commentid>
    <comment_count>9</comment_count>
      <attachid>98300</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-06-22 20:02:20 -0700</bug_when>
    <thetext>Created attachment 98300
the patch (fixed review, fixed style)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426495</commentid>
    <comment_count>10</comment_count>
      <attachid>98300</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-06-23 14:47:19 -0700</bug_when>
    <thetext>Comment on attachment 98300
the patch (fixed review, fixed style)

Hey Filip, sorry to be picky but Darin will be disappointed in me if I&apos;m not. :-)
WebKit coding style calls for full names, bar cases of very commonly idiomatic abbreviations.  really &apos;slowPathTarg&apos; has to be &apos;slowPathTarget&apos;.  Sorry to bounce your patch for two extra letter, but we should do this right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426511</commentid>
    <comment_count>11</comment_count>
      <attachid>98411</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-06-23 14:57:16 -0700</bug_when>
    <thetext>Created attachment 98411
the patch (fix identifier name)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426625</commentid>
    <comment_count>12</comment_count>
      <attachid>98411</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-06-23 16:49:58 -0700</bug_when>
    <thetext>Comment on attachment 98411
the patch (fix identifier name)

Looks great Filip!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426659</commentid>
    <comment_count>13</comment_count>
      <attachid>98411</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-23 17:40:30 -0700</bug_when>
    <thetext>Comment on attachment 98411
the patch (fix identifier name)

Clearing flags on attachment: 98411

Committed r89643: &lt;http://trac.webkit.org/changeset/89643&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426660</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-23 17:40:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98226</attachid>
            <date>2011-06-22 13:12:11 -0700</date>
            <delta_ts>2011-06-22 13:24:48 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>getby_patch.diff</filename>
            <type>text/plain</type>
            <size>10019</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODk0NjIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTEtMDYtMjIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBERkcgbm9uLXNwZWN1bGF0aXZl
IEpJVCBzaG91bGQgaGF2ZSBvYnZpb3VzIG9wdGltaXphdGlvbnMgZm9yIEdldEJ5SWQgYW5kIEdl
dEJ5VmFsCisJaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzMTczCisK
KyAgICAgICAgKiBkZmcvREZHSklUQ29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6SklUQ29kZUdlbmVyYXRvcjo6Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgICogZGZnL0RGR0pJ
VENvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBkZmcvREZHTm9uU3BlY3VsYXRpdmVKSVQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6Ok5vblNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlKToKKwogMjAxMS0wNi0yMSAgTU9SSVRBIEhhamltZSAgPG1vcnJp
dGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByODk0MDEg
YW5kIHI4OTQwMy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdl
bmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gODkzODQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUs
NiArMzI1LDMyIEBAIHZvaWQgSklUQ29kZUdlbmVyYXRvcjo6dXNlQ2hpbGRyZW4oTm9kZSYKICAg
ICB1c2UoY2hpbGQzKTsKIH0KIAordm9pZCBKSVRDb2RlR2VuZXJhdG9yOjpjYWNoZWRHZXRCeUlk
KEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVt
YmVyKSB7CisgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmU7
CisgICAgSklUQ29tcGlsZXI6Okp1bXAgc3RydWN0dXJlQ2hlY2sgPSBtX2ppdC5icmFuY2hQdHJX
aXRoUGF0Y2goSklUQ29tcGlsZXI6OkVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJlLCBKSVRDb21w
aWxlcjo6VHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPigtMSkpKTsKKworICAg
IHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUiwgYmFzZUdQUik7CisgICAgbV9qaXQu
bW92ZShiYXNlR1BSLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIG1faml0Lm1vdmUoSklU
Q29tcGlsZXI6OkltbVB0cihpZGVudGlmaWVyKGlkZW50aWZpZXJOdW1iZXIpKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIyKTsKKyAgICBtX2ppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIEpJVENvbXBpbGVyOjpDYWxsIGZ1bmN0aW9u
Q2FsbCA9IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uR2V0QnlJZE9wdGlt
aXplKTsKKyAgICBtX2ppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCByZXN1bHRHUFIp
OworICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKKworICAgIEpJVENvbXBp
bGVyOjpKdW1wIGhhbmRsZWRCeUMgPSBtX2ppdC5qdW1wKCk7CisgICAgc3RydWN0dXJlQ2hlY2su
bGluaygmbV9qaXQpOworCisgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlc3VsdEdQUik7
CisgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbENvbXBhY3QgbG9hZFdpdGhQYXRjaCA9IG1faml0
LmxvYWRQdHJXaXRoQ29tcGFjdEFkZHJlc3NPZmZzZXRQYXRjaChKSVRDb21waWxlcjo6QWRkcmVz
cyhyZXN1bHRHUFIsIDApLCByZXN1bHRHUFIpOworCisgICAgaW50cHRyX3QgY2hlY2tUb0NhbGwg
PSBtX2ppdC5kaWZmZXJlbmNlQmV0d2VlbihzdHJ1Y3R1cmVUb0NvbXBhcmUsIGZ1bmN0aW9uQ2Fs
bCk7CisgICAgaW50cHRyX3QgY2FsbFRvTG9hZCA9IG1faml0LmRpZmZlcmVuY2VCZXR3ZWVuKGZ1
bmN0aW9uQ2FsbCwgbG9hZFdpdGhQYXRjaCk7CisKKyAgICBoYW5kbGVkQnlDLmxpbmsoJm1faml0
KTsKKworICAgIG1faml0LmFkZFByb3BlcnR5QWNjZXNzKGZ1bmN0aW9uQ2FsbCwgY2hlY2tUb0Nh
bGwsIGNhbGxUb0xvYWQpOworfQorCiAjaWZuZGVmIE5ERUJVRwogc3RhdGljIGNvbnN0IGNoYXIq
IGRhdGFGb3JtYXRTdHJpbmcoRGF0YUZvcm1hdCBmb3JtYXQpCiB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gODkz
ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGVHZW5lcmF0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtNTU5LDYgKzU1OSw4IEBAIHByb3RlY3RlZDoKICAgICAgICAgfQog
ICAgIH0KIAorICAgIHZvaWQgY2FjaGVkR2V0QnlJZChHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJl
c3VsdEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlcik7CisKICAgICAvLyBDYWxsZWQgb25j
ZSBhIG5vZGUgaGFzIGNvbXBsZXRlZCBjb2RlIGdlbmVyYXRpb24gYnV0IHByaW9yIHRvIHNldHRp
bmcKICAgICAvLyBpdHMgcmVzdWx0LCB0byBmcmVlIHVwIGl0cyBjaGlsZHJlbi4gKFRoaXMgbXVz
dCBoYXBwZW4gcHJpb3IgdG8gc2V0dGluZwogICAgIC8vIHRoZSBub2RlcyByZXN1bHQsIHNpbmNl
IHRoZSBub2RlIG1heSBoYXZlIHRoZSBzYW1lIFZpcnR1YWxSZWdpc3RlciBhcwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb25TcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb25TcGVjdWxhdGl2ZUpJVC5jcHAJ
KHJldmlzaW9uIDg5Mzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb25TcGVj
dWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5OSwxNiArNDk5LDYyIEBAIHZvaWQg
Tm9uU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoU3BlY3VsYXQKICAgICB9CiAKICAgICBjYXNlIEdl
dEJ5VmFsOiB7Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZzEodGhpcywgbm9kZS5jaGlsZDEp
OwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmcyKHRoaXMsIG5vZGUuY2hpbGQyKTsKLSAgICAg
ICAgR1BSUmVnIGFyZzFHUFIgPSBhcmcxLmdwcigpOwotICAgICAgICBHUFJSZWcgYXJnMkdQUiA9
IGFyZzIuZ3ByKCk7Ci0gICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIE5vZGVJbmRl
eCBhbGlhcz1ub2RlLmNoaWxkMzsKKyAgICAgICAgaWYgKGFsaWFzIT1Ob05vZGUpIHsKKyAgICAg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIGFsaWFzZWRWYWx1ZSh0aGlzLCBub2RlLmNoaWxkMyk7Cisg
ICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIGFsaWFzZWRWYWx1ZSk7CisgICAg
ICAgICAgICBtX2ppdC5tb3ZlKGFsaWFzZWRWYWx1ZS5ncHIoKSwgcmVzdWx0LmdwcigpKTsKKyAg
ICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogCi0gICAgICAgIEdQUlJlc3VsdCByZXN1bHQo
dGhpcyk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWwsIHJlc3VsdC5n
cHIoKSwgYXJnMUdQUiwgYXJnMkdQUik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhp
cywgbm9kZS5jaGlsZDEpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBu
b2RlLmNoaWxkMik7CiAKLSAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY29t
cGlsZUluZGV4KTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2UodGhpcyk7CisgICAgICAg
IEdQUlRlbXBvcmFyeSBjbGVhbkluZGV4KHRoaXMpOworCisgICAgICAgIEdQUlJlZyBiYXNlR1BS
ID0gYmFzZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcHJvcGVydHkuZ3By
KCk7CisgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKKyAgICAgICAg
R1BSUmVnIGNsZWFuSW5kZXhHUFIgPSBjbGVhbkluZGV4LmdwcigpOworCisgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wIGJhc2VOb3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm9uWmVybywgYmFzZUdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKKworICAg
ICAgICBKSVRDb21waWxlcjo6SnVtcCBwcm9wZXJ0eU5vdEludCA9IG1faml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6QmVsb3csIHByb3BlcnR5R1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVy
UmVnaXN0ZXIpOworCisgICAgICAgIC8vIEdldCB0aGUgYXJyYXkgc3RvcmFnZS4gV2UgaGF2ZW4n
dCB5ZXQgY2hlY2tlZCB0aGlzIGlzIGEgSlNBcnJheSwgc28gdGhpcyBpcyBvbmx5IHNhZmUgaWYK
KyAgICAgICAgLy8gYW4gYWNjZXNzIHdpdGggb2Zmc2V0IEpTQXJyYXk6OnN0b3JhZ2VPZmZzZXQo
KSBpcyB2YWxpZCBmb3IgYWxsIEpTQ2VsbHMhCisgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheTo6c3RvcmFnZU9mZnNldCgpKSwgc3Rv
cmFnZUdQUik7CisKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgYmFzZU5vdEFycmF5ID0gbV9q
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZUdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2Jh
bERhdGEoKS0+anNBcnJheVZQdHIpKTsKKworICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0
cihwcm9wZXJ0eUdQUiwgY2xlYW5JbmRleEdQUik7CisKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgb3V0T2ZCb3VuZHMgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVx
dWFsLCBjbGVhbkluZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0Fy
cmF5Ojp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpOworCisgICAgICAgIG1faml0LmxvYWRQdHIoTWFj
cm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlR1BSLCBjbGVhbkluZGV4R1BSLCBNYWNyb0Fz
c2VtYmxlcjo6U2NhbGVQdHIsIE9CSkVDVF9PRkZTRVRPRihBcnJheVN0b3JhZ2UsIG1fdmVjdG9y
WzBdKSksIHN0b3JhZ2VHUFIpOworCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGxvYWRGYWls
ZWQgPSBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBzdG9yYWdlR1BS
KTsKKworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOworCisg
ICAgICAgIGJhc2VOb3RDZWxsLmxpbmsoJm1faml0KTsKKyAgICAgICAgcHJvcGVydHlOb3RJbnQu
bGluaygmbV9qaXQpOworICAgICAgICBiYXNlTm90QXJyYXkubGluaygmbV9qaXQpOworICAgICAg
ICBvdXRPZkJvdW5kcy5saW5rKCZtX2ppdCk7CisgICAgICAgIGxvYWRGYWlsZWQubGluaygmbV9q
aXQpOworCisgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHN0b3JhZ2VHUFIsIGJhc2VH
UFIsIHByb3BlcnR5R1BSKTsKKyAgICAgICAgc2V0dXBTdHViQXJndW1lbnRzKGJhc2VHUFIsIHBy
b3BlcnR5R1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
ciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVjayhvcGVyYXRpb25HZXRCeVZhbCk7CisgICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIsIHN0b3JhZ2VHUFIpOworICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0
ZXJzKHN0b3JhZ2VHUFIpOworCisgICAgICAgIGRvbmUubGluaygmbV9qaXQpOworCisgICAgICAg
IGpzVmFsdWVSZXN1bHQoc3RvcmFnZUdQUiwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVh
azsKICAgICB9CiAKQEAgLTUzMiwxMSArNTc4LDI3IEBAIHZvaWQgTm9uU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoU3BlY3VsYXQKICAgICBjYXNlIEdldEJ5SWQ6IHsKICAgICAgICAgSlNWYWx1ZU9w
ZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSk7CiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0g
YmFzZS5ncHIoKTsKLSAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzLCBiYXNlKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKIAotICAgICAgICBHUFJSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5SWQsIHJlc3VsdC5ncHIoKSwgYmFzZUdQUiwgaWRlbnRp
Zmllcihub2RlLmlkZW50aWZpZXJOdW1iZXIoKSkpOwotICAgICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdC5ncHIoKSwgbV9jb21waWxlSW5kZXgpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBu
b3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgYmFz
ZUdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKKworICAgICAgICBjYWNoZWRHZXRCeUlk
KGJhc2VHUFIsIHJlc3VsdEdQUiwgbm9kZS5pZGVudGlmaWVyTnVtYmVyKCkpOworCisgICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CisgICAgICAgIG5vdENlbGwu
bGluaygmbV9qaXQpOworCisgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQ
UiwgYmFzZUdQUik7CisgICAgICAgIG1faml0Lm1vdmUoYmFzZUdQUiwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxKTsKKyAgICAgICAgbV9qaXQubW92ZShKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cihp
ZGVudGlmaWVyKG5vZGUuaWRlbnRpZmllck51bWJlcigpKSksIEdQUkluZm86OmFyZ3VtZW50R1BS
Mik7CisgICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2so
b3BlcmF0aW9uR2V0QnlJZCk7CisgICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFs
dWVHUFIsIHJlc3VsdEdQUik7CisgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0
R1BSKTsKKworICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKKworICAgICAgICBqc1ZhbHVlUmVz
dWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVhazsKICAgICB9CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCShyZXZpc2lvbiA4OTM4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzEsMzIgKzg3MSw5IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBy
ZXN1bHQodGhpcywgYmFzZSk7CiAKLSAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigp
OwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCi0gICAgICAgIEpJ
VENvbXBpbGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwotICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBzdHJ1Y3R1cmVDaGVjayA9IG1faml0LmJyYW5jaFB0cldpdGhQYXRjaChK
SVRDb21waWxlcjo6RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIEpJVENvbXBpbGVyOjpUcnVz
dGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KC0xKSkpOwotCi0gICAgICAgIHNpbGVu
dFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUiwgYmFzZUdQUik7Ci0gICAgICAgIG1faml0Lm1v
dmUoYmFzZUdQUiwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgbV9qaXQubW92ZShK
SVRDb21waWxlcjo6SW1tUHRyKGlkZW50aWZpZXIobm9kZS5pZGVudGlmaWVyTnVtYmVyKCkpKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgSklUQ29tcGls
ZXI6OkNhbGwgZnVuY3Rpb25DYWxsID0gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVy
YXRpb25HZXRCeUlkT3B0aW1pemUpOwotICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OnJldHVy
blZhbHVlR1BSLCByZXN1bHRHUFIpOwotICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJl
c3VsdEdQUik7Ci0KLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaGFuZGxlZEJ5QyA9IG1faml0
Lmp1bXAoKTsKLSAgICAgICAgc3RydWN0dXJlQ2hlY2subGluaygmbV9qaXQpOwotCi0gICAgICAg
IG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9m
ZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZXN1bHRHUFIpOwotICAgICAgICBKSVRDb21waWxl
cjo6RGF0YUxhYmVsQ29tcGFjdCBsb2FkV2l0aFBhdGNoID0gbV9qaXQubG9hZFB0cldpdGhDb21w
YWN0QWRkcmVzc09mZnNldFBhdGNoKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgMCks
IHJlc3VsdEdQUik7Ci0KLSAgICAgICAgaW50cHRyX3QgY2hlY2tUb0NhbGwgPSBtX2ppdC5kaWZm
ZXJlbmNlQmV0d2VlbihzdHJ1Y3R1cmVUb0NvbXBhcmUsIGZ1bmN0aW9uQ2FsbCk7Ci0gICAgICAg
IGludHB0cl90IGNhbGxUb0xvYWQgPSBtX2ppdC5kaWZmZXJlbmNlQmV0d2VlbihmdW5jdGlvbkNh
bGwsIGxvYWRXaXRoUGF0Y2gpOwotCi0gICAgICAgIGhhbmRsZWRCeUMubGluaygmbV9qaXQpOwot
Ci0gICAgICAgIG1faml0LmFkZFByb3BlcnR5QWNjZXNzKGZ1bmN0aW9uQ2FsbCwgY2hlY2tUb0Nh
bGwsIGNhbGxUb0xvYWQpOworICAgICAgICBjYWNoZWRHZXRCeUlkKGJhc2UuZ3ByKCksIHJlc3Vs
dEdQUiwgbm9kZS5pZGVudGlmaWVyTnVtYmVyKCkpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQo
cmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98230</attachid>
            <date>2011-06-22 13:24:48 -0700</date>
            <delta_ts>2011-06-22 13:33:16 -0700</delta_ts>
            <desc>the patch (fixed style)</desc>
            <filename>getby_patch_2.diff</filename>
            <type>text/plain</type>
            <size>10024</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODk0NjIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTEtMDYtMjIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBERkcgbm9uLXNwZWN1bGF0aXZl
IEpJVCBzaG91bGQgaGF2ZSBvYnZpb3VzIG9wdGltaXphdGlvbnMgZm9yIEdldEJ5SWQgYW5kIEdl
dEJ5VmFsCisJaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzMTczCisK
KyAgICAgICAgKiBkZmcvREZHSklUQ29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6SklUQ29kZUdlbmVyYXRvcjo6Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgICogZGZnL0RGR0pJ
VENvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBkZmcvREZHTm9uU3BlY3VsYXRpdmVKSVQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6Ok5vblNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlKToKKwogMjAxMS0wNi0yMSAgTU9SSVRBIEhhamltZSAgPG1vcnJp
dGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByODk0MDEg
YW5kIHI4OTQwMy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdl
bmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gODkzODQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUs
NiArMzI1LDMzIEBAIHZvaWQgSklUQ29kZUdlbmVyYXRvcjo6dXNlQ2hpbGRyZW4oTm9kZSYKICAg
ICB1c2UoY2hpbGQzKTsKIH0KIAordm9pZCBKSVRDb2RlR2VuZXJhdG9yOjpjYWNoZWRHZXRCeUlk
KEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVt
YmVyKQoreworICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJl
OworICAgIEpJVENvbXBpbGVyOjpKdW1wIHN0cnVjdHVyZUNoZWNrID0gbV9qaXQuYnJhbmNoUHRy
V2l0aFBhdGNoKEpJVENvbXBpbGVyOjpFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgSklUQ29t
cGlsZXI6OlRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oLTEpKSk7CisKKyAg
ICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIsIGJhc2VHUFIpOworICAgIG1faml0
Lm1vdmUoYmFzZUdQUiwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICBtX2ppdC5tb3ZlKEpJ
VENvbXBpbGVyOjpJbW1QdHIoaWRlbnRpZmllcihpZGVudGlmaWVyTnVtYmVyKSksIEdQUkluZm86
OmFyZ3VtZW50R1BSMik7CisgICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
ciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBmdW5jdGlv
bkNhbGwgPSBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbkdldEJ5SWRPcHRp
bWl6ZSk7CisgICAgbV9qaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgcmVzdWx0R1BS
KTsKKyAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CisKKyAgICBKSVRDb21w
aWxlcjo6SnVtcCBoYW5kbGVkQnlDID0gbV9qaXQuanVtcCgpOworICAgIHN0cnVjdHVyZUNoZWNr
LmxpbmsoJm1faml0KTsKKworICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3Mo
YmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZXN1bHRHUFIp
OworICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0IGxvYWRXaXRoUGF0Y2ggPSBtX2pp
dC5sb2FkUHRyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goSklUQ29tcGlsZXI6OkFkZHJl
c3MocmVzdWx0R1BSLCAwKSwgcmVzdWx0R1BSKTsKKworICAgIGludHB0cl90IGNoZWNrVG9DYWxs
ID0gbV9qaXQuZGlmZmVyZW5jZUJldHdlZW4oc3RydWN0dXJlVG9Db21wYXJlLCBmdW5jdGlvbkNh
bGwpOworICAgIGludHB0cl90IGNhbGxUb0xvYWQgPSBtX2ppdC5kaWZmZXJlbmNlQmV0d2Vlbihm
dW5jdGlvbkNhbGwsIGxvYWRXaXRoUGF0Y2gpOworCisgICAgaGFuZGxlZEJ5Qy5saW5rKCZtX2pp
dCk7CisKKyAgICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2VzcyhmdW5jdGlvbkNhbGwsIGNoZWNrVG9D
YWxsLCBjYWxsVG9Mb2FkKTsKK30KKwogI2lmbmRlZiBOREVCVUcKIHN0YXRpYyBjb25zdCBjaGFy
KiBkYXRhRm9ybWF0U3RyaW5nKERhdGFGb3JtYXQgZm9ybWF0KQogewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDg5
Mzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU1OSw2ICs1NTksOCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIH0K
ICAgICB9CiAKKyAgICB2b2lkIGNhY2hlZEdldEJ5SWQoR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBy
ZXN1bHRHUFIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIpOworCiAgICAgLy8gQ2FsbGVkIG9u
Y2UgYSBub2RlIGhhcyBjb21wbGV0ZWQgY29kZSBnZW5lcmF0aW9uIGJ1dCBwcmlvciB0byBzZXR0
aW5nCiAgICAgLy8gaXRzIHJlc3VsdCwgdG8gZnJlZSB1cCBpdHMgY2hpbGRyZW4uIChUaGlzIG11
c3QgaGFwcGVuIHByaW9yIHRvIHNldHRpbmcKICAgICAvLyB0aGUgbm9kZXMgcmVzdWx0LCBzaW5j
ZSB0aGUgbm9kZSBtYXkgaGF2ZSB0aGUgc2FtZSBWaXJ0dWFsUmVnaXN0ZXIgYXMKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9uU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9uU3BlY3VsYXRpdmVKSVQuY3Bw
CShyZXZpc2lvbiA4OTM4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9uU3Bl
Y3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTksMTYgKzQ5OSw2MiBAQCB2b2lk
IE5vblNwZWN1bGF0aXZlSklUOjpjb21waWxlKFNwZWN1bGF0CiAgICAgfQogCiAgICAgY2FzZSBH
ZXRCeVZhbDogewotICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmcxKHRoaXMsIG5vZGUuY2hpbGQx
KTsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJnMih0aGlzLCBub2RlLmNoaWxkMik7Ci0gICAg
ICAgIEdQUlJlZyBhcmcxR1BSID0gYXJnMS5ncHIoKTsKLSAgICAgICAgR1BSUmVnIGFyZzJHUFIg
PSBhcmcyLmdwcigpOwotICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICBOb2RlSW5k
ZXggYWxpYXMgPSBub2RlLmNoaWxkMzsKKyAgICAgICAgaWYgKGFsaWFzICE9IE5vTm9kZSkgewor
ICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYWxpYXNlZFZhbHVlKHRoaXMsIG5vZGUuY2hpbGQz
KTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgYWxpYXNlZFZhbHVlKTsK
KyAgICAgICAgICAgIG1faml0Lm1vdmUoYWxpYXNlZFZhbHVlLmdwcigpLCByZXN1bHQuZ3ByKCkp
OworICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY29tcGlsZUluZGV4
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAKLSAgICAgICAgR1BSUmVzdWx0IHJl
c3VsdCh0aGlzKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbCwgcmVz
dWx0LmdwcigpLCBhcmcxR1BSLCBhcmcyR1BSKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFz
ZSh0aGlzLCBub2RlLmNoaWxkMSk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5KHRo
aXMsIG5vZGUuY2hpbGQyKTsKIAotICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwg
bV9jb21waWxlSW5kZXgpOworICAgICAgICBHUFJUZW1wb3Jhcnkgc3RvcmFnZSh0aGlzKTsKKyAg
ICAgICAgR1BSVGVtcG9yYXJ5IGNsZWFuSW5kZXgodGhpcyk7CisKKyAgICAgICAgR1BSUmVnIGJh
c2VHUFIgPSBiYXNlLmdwcigpOworICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwcm9wZXJ0
eS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHN0b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigpOworICAg
ICAgICBHUFJSZWcgY2xlYW5JbmRleEdQUiA9IGNsZWFuSW5kZXguZ3ByKCk7CisKKyAgICAgICAg
SklUQ29tcGlsZXI6Okp1bXAgYmFzZU5vdENlbGwgPSBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb25aZXJvLCBiYXNlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwor
CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHByb3BlcnR5Tm90SW50ID0gbV9qaXQuYnJhbmNo
UHRyKE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgcHJvcGVydHlHUFIsIEdQUkluZm86OnRhZ1R5cGVO
dW1iZXJSZWdpc3Rlcik7CisKKyAgICAgICAgLy8gR2V0IHRoZSBhcnJheSBzdG9yYWdlLiBXZSBo
YXZlbid0IHlldCBjaGVja2VkIHRoaXMgaXMgYSBKU0FycmF5LCBzbyB0aGlzIGlzIG9ubHkgc2Fm
ZSBpZgorICAgICAgICAvLyBhbiBhY2Nlc3Mgd2l0aCBvZmZzZXQgSlNBcnJheTo6c3RvcmFnZU9m
ZnNldCgpIGlzIHZhbGlkIGZvciBhbGwgSlNDZWxscyEKKyAgICAgICAgbV9qaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5OjpzdG9yYWdlT2Zmc2V0KCkp
LCBzdG9yYWdlR1BSKTsKKworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBiYXNlTm90QXJyYXkg
PSBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQu
Z2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0cikpOworCisgICAgICAgIG1faml0Lnplcm9FeHRlbmQz
MlRvUHRyKHByb3BlcnR5R1BSLCBjbGVhbkluZGV4R1BSKTsKKworICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBvdXRPZkJvdW5kcyA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92
ZU9yRXF1YWwsIGNsZWFuSW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTQXJyYXk6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSk7CisKKyAgICAgICAgbV9qaXQubG9hZFB0
cihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VHUFIsIGNsZWFuSW5kZXhHUFIsIE1h
Y3JvQXNzZW1ibGVyOjpTY2FsZVB0ciwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFnZSwgbV92
ZWN0b3JbMF0pKSwgc3RvcmFnZUdQUik7CisKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbG9h
ZEZhaWxlZCA9IG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHN0b3Jh
Z2VHUFIpOworCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7
CisKKyAgICAgICAgYmFzZU5vdENlbGwubGluaygmbV9qaXQpOworICAgICAgICBwcm9wZXJ0eU5v
dEludC5saW5rKCZtX2ppdCk7CisgICAgICAgIGJhc2VOb3RBcnJheS5saW5rKCZtX2ppdCk7Cisg
ICAgICAgIG91dE9mQm91bmRzLmxpbmsoJm1faml0KTsKKyAgICAgICAgbG9hZEZhaWxlZC5saW5r
KCZtX2ppdCk7CisKKyAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMoc3RvcmFnZUdQUiwg
YmFzZUdQUiwgcHJvcGVydHlHUFIpOworICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYmFzZUdQ
UiwgcHJvcGVydHlHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbkdldEJ5VmFsKTsKKyAgICAgICAgbV9qaXQubW92ZShHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUiwgc3RvcmFnZUdQUik7CisgICAgICAgIHNpbGVudEZpbGxBbGxS
ZWdpc3RlcnMoc3RvcmFnZUdQUik7CisKKyAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CisKKyAg
ICAgICAganNWYWx1ZVJlc3VsdChzdG9yYWdlR1BSLCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIApAQCAtNTMyLDExICs1NzgsMjcgQEAgdm9pZCBOb25TcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShTcGVjdWxhdAogICAgIGNhc2UgR2V0QnlJZDogewogICAgICAgICBKU1Zh
bHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKTsKICAgICAgICAgR1BSUmVnIGJhc2VH
UFIgPSBiYXNlLmdwcigpOwotICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMsIGJhc2UpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOwogCi0gICAgICAgIEdQUlJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlJZCwgcmVzdWx0LmdwcigpLCBiYXNlR1BSLCBp
ZGVudGlmaWVyKG5vZGUuaWRlbnRpZmllck51bWJlcigpKSk7Ci0gICAgICAgIGpzVmFsdWVSZXN1
bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJv
LCBiYXNlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworCisgICAgICAgIGNhY2hlZEdl
dEJ5SWQoYmFzZUdQUiwgcmVzdWx0R1BSLCBub2RlLmlkZW50aWZpZXJOdW1iZXIoKSk7CisKKyAg
ICAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKKyAgICAgICAgbm90
Q2VsbC5saW5rKCZtX2ppdCk7CisKKyAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVz
dWx0R1BSLCBiYXNlR1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShiYXNlR1BSLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpOworICAgICAgICBtX2ppdC5tb3ZlKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1t
UHRyKGlkZW50aWZpZXIobm9kZS5pZGVudGlmaWVyTnVtYmVyKCkpKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIyKTsKKyAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVjayhvcGVyYXRpb25HZXRCeUlkKTsKKyAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUiwgcmVzdWx0R1BSKTsKKyAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhy
ZXN1bHRHUFIpOworCisgICAgICAgIGRvbmUubGluaygmbV9qaXQpOworCisgICAgICAgIGpzVmFs
dWVSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAJKHJldmlzaW9uIDg5Mzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3MSwzMiArODcxLDkgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKTsKICAgICAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzLCBiYXNlKTsKIAotICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2Uu
Z3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAgICAg
ICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmU7Ci0gICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wIHN0cnVjdHVyZUNoZWNrID0gbV9qaXQuYnJhbmNoUHRyV2l0aFBh
dGNoKEpJVENvbXBpbGVyOjpFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgSklUQ29tcGlsZXI6
OlRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oLTEpKSk7Ci0KLSAgICAgICAg
c2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSLCBiYXNlR1BSKTsKLSAgICAgICAgbV9q
aXQubW92ZShiYXNlR1BSLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICBtX2ppdC5t
b3ZlKEpJVENvbXBpbGVyOjpJbW1QdHIoaWRlbnRpZmllcihub2RlLmlkZW50aWZpZXJOdW1iZXIo
KSkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICBKSVRD
b21waWxlcjo6Q2FsbCBmdW5jdGlvbkNhbGwgPSBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
KG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk7Ci0gICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIsIHJlc3VsdEdQUik7Ci0gICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3Rl
cnMocmVzdWx0R1BSKTsKLQotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBoYW5kbGVkQnlDID0g
bV9qaXQuanVtcCgpOwotICAgICAgICBzdHJ1Y3R1cmVDaGVjay5saW5rKCZtX2ppdCk7Ci0KLSAg
ICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVj
dDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlc3VsdEdQUik7Ci0gICAgICAgIEpJVENv
bXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0IGxvYWRXaXRoUGF0Y2ggPSBtX2ppdC5sb2FkUHRyV2l0
aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BS
LCAwKSwgcmVzdWx0R1BSKTsKLQotICAgICAgICBpbnRwdHJfdCBjaGVja1RvQ2FsbCA9IG1faml0
LmRpZmZlcmVuY2VCZXR3ZWVuKHN0cnVjdHVyZVRvQ29tcGFyZSwgZnVuY3Rpb25DYWxsKTsKLSAg
ICAgICAgaW50cHRyX3QgY2FsbFRvTG9hZCA9IG1faml0LmRpZmZlcmVuY2VCZXR3ZWVuKGZ1bmN0
aW9uQ2FsbCwgbG9hZFdpdGhQYXRjaCk7Ci0KLSAgICAgICAgaGFuZGxlZEJ5Qy5saW5rKCZtX2pp
dCk7Ci0KLSAgICAgICAgbV9qaXQuYWRkUHJvcGVydHlBY2Nlc3MoZnVuY3Rpb25DYWxsLCBjaGVj
a1RvQ2FsbCwgY2FsbFRvTG9hZCk7CisgICAgICAgIGNhY2hlZEdldEJ5SWQoYmFzZS5ncHIoKSwg
cmVzdWx0R1BSLCBub2RlLmlkZW50aWZpZXJOdW1iZXIoKSk7CiAKICAgICAgICAganNWYWx1ZVJl
c3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98231</attachid>
            <date>2011-06-22 13:33:16 -0700</date>
            <delta_ts>2011-06-22 20:02:20 -0700</delta_ts>
            <desc>the patch (more style fixes)</desc>
            <filename>getby_patch_3.diff</filename>
            <type>text/plain</type>
            <size>10031</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODk0NjIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTEtMDYtMjIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBERkcgbm9uLXNwZWN1bGF0aXZl
IEpJVCBzaG91bGQgaGF2ZSBvYnZpb3VzIG9wdGltaXphdGlvbnMgZm9yIEdldEJ5SWQgYW5kIEdl
dEJ5VmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
MzE3MworCisgICAgICAgICogZGZnL0RGR0pJVENvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkpJVENvZGVHZW5lcmF0b3I6OmNhY2hlZEdldEJ5SWQpOgorICAgICAgICAqIGRm
Zy9ERkdKSVRDb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogZGZnL0RGR05vblNwZWN1bGF0aXZl
SklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpOb25TcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisKIDIwMTEtMDYtMjEgIE1PUklUQSBIYWppbWUg
IDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjg5NDAxIGFuZCByODk0MDMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDg5Mzg0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzI1LDYgKzMyNSwzMyBAQCB2b2lkIEpJVENvZGVHZW5lcmF0b3I6OnVzZUNoaWxkcmVuKE5v
ZGUmCiAgICAgdXNlKGNoaWxkMyk7CiB9CiAKK3ZvaWQgSklUQ29kZUdlbmVyYXRvcjo6Y2FjaGVk
R2V0QnlJZChHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwgdW5zaWduZWQgaWRlbnRp
Zmllck51bWJlcikKK3sKKyAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRv
Q29tcGFyZTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBzdHJ1Y3R1cmVDaGVjayA9IG1faml0LmJy
YW5jaFB0cldpdGhQYXRjaChKSVRDb21waWxlcjo6RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNz
KGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUs
IEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KC0xKSkp
OworCisgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSLCBiYXNlR1BSKTsKKyAg
ICBtX2ppdC5tb3ZlKGJhc2VHUFIsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgbV9qaXQu
bW92ZShKSVRDb21waWxlcjo6SW1tUHRyKGlkZW50aWZpZXIoaWRlbnRpZmllck51bWJlcikpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgSklUQ29tcGlsZXI6OkNhbGwg
ZnVuY3Rpb25DYWxsID0gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemUpOworICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIHJl
c3VsdEdQUik7CisgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOworCisgICAg
SklUQ29tcGlsZXI6Okp1bXAgaGFuZGxlZEJ5QyA9IG1faml0Lmp1bXAoKTsKKyAgICBzdHJ1Y3R1
cmVDaGVjay5saW5rKCZtX2ppdCk7CisKKyAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpB
ZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVz
dWx0R1BSKTsKKyAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdCBsb2FkV2l0aFBhdGNo
ID0gbV9qaXQubG9hZFB0cldpdGhDb21wYWN0QWRkcmVzc09mZnNldFBhdGNoKEpJVENvbXBpbGVy
OjpBZGRyZXNzKHJlc3VsdEdQUiwgMCksIHJlc3VsdEdQUik7CisKKyAgICBpbnRwdHJfdCBjaGVj
a1RvQ2FsbCA9IG1faml0LmRpZmZlcmVuY2VCZXR3ZWVuKHN0cnVjdHVyZVRvQ29tcGFyZSwgZnVu
Y3Rpb25DYWxsKTsKKyAgICBpbnRwdHJfdCBjYWxsVG9Mb2FkID0gbV9qaXQuZGlmZmVyZW5jZUJl
dHdlZW4oZnVuY3Rpb25DYWxsLCBsb2FkV2l0aFBhdGNoKTsKKworICAgIGhhbmRsZWRCeUMubGlu
aygmbV9qaXQpOworCisgICAgbV9qaXQuYWRkUHJvcGVydHlBY2Nlc3MoZnVuY3Rpb25DYWxsLCBj
aGVja1RvQ2FsbCwgY2FsbFRvTG9hZCk7Cit9CisKICNpZm5kZWYgTkRFQlVHCiBzdGF0aWMgY29u
c3QgY2hhciogZGF0YUZvcm1hdFN0cmluZyhEYXRhRm9ybWF0IGZvcm1hdCkKIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5oCShyZXZp
c2lvbiA4OTM4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVy
YXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NTksNiArNTU5LDggQEAgcHJvdGVjdGVkOgogICAg
ICAgICB9CiAgICAgfQogCisgICAgdm9pZCBjYWNoZWRHZXRCeUlkKEdQUlJlZyBiYXNlR1BSLCBH
UFJSZWcgcmVzdWx0R1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyKTsKKwogICAgIC8vIENh
bGxlZCBvbmNlIGEgbm9kZSBoYXMgY29tcGxldGVkIGNvZGUgZ2VuZXJhdGlvbiBidXQgcHJpb3Ig
dG8gc2V0dGluZwogICAgIC8vIGl0cyByZXN1bHQsIHRvIGZyZWUgdXAgaXRzIGNoaWxkcmVuLiAo
VGhpcyBtdXN0IGhhcHBlbiBwcmlvciB0byBzZXR0aW5nCiAgICAgLy8gdGhlIG5vZGVzIHJlc3Vs
dCwgc2luY2UgdGhlIG5vZGUgbWF5IGhhdmUgdGhlIHNhbWUgVmlydHVhbFJlZ2lzdGVyIGFzCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vblNwZWN1bGF0aXZlSklULmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vblNwZWN1bGF0aXZl
SklULmNwcAkocmV2aXNpb24gODkzODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vblNwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDk5LDE2ICs0OTksNjIg
QEAgdm9pZCBOb25TcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShTcGVjdWxhdAogICAgIH0KIAogICAg
IGNhc2UgR2V0QnlWYWw6IHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJnMSh0aGlzLCBub2Rl
LmNoaWxkMSk7Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZzIodGhpcywgbm9kZS5jaGlsZDIp
OwotICAgICAgICBHUFJSZWcgYXJnMUdQUiA9IGFyZzEuZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyBh
cmcyR1BSID0gYXJnMi5ncHIoKTsKLSAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAg
Tm9kZUluZGV4IGFsaWFzID0gbm9kZS5jaGlsZDM7CisgICAgICAgIGlmIChhbGlhcyAhPSBOb05v
ZGUpIHsKKyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFsaWFzZWRWYWx1ZSh0aGlzLCBub2Rl
LmNoaWxkMyk7CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIGFsaWFzZWRW
YWx1ZSk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKGFsaWFzZWRWYWx1ZS5ncHIoKSwgcmVzdWx0
LmdwcigpKTsKKyAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBp
bGVJbmRleCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogCi0gICAgICAgIEdQUlJl
c3VsdCByZXN1bHQodGhpcyk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlW
YWwsIHJlc3VsdC5ncHIoKSwgYXJnMUdQUiwgYXJnMkdQUik7CisgICAgICAgIEpTVmFsdWVPcGVy
YW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9w
ZXJ0eSh0aGlzLCBub2RlLmNoaWxkMik7CiAKLSAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQu
Z3ByKCksIG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2UodGhp
cyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBjbGVhbkluZGV4KHRoaXMpOworCisgICAgICAgIEdQ
UlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0g
cHJvcGVydHkuZ3ByKCk7CisgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIo
KTsKKyAgICAgICAgR1BSUmVnIGNsZWFuSW5kZXhHUFIgPSBjbGVhbkluZGV4LmdwcigpOworCisg
ICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGJhc2VOb3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgYmFzZUdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lz
dGVyKTsKKworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBwcm9wZXJ0eU5vdEludCA9IG1faml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6QmVsb3csIHByb3BlcnR5R1BSLCBHUFJJbmZvOjp0
YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworCisgICAgICAgIC8vIEdldCB0aGUgYXJyYXkgc3RvcmFn
ZS4gV2UgaGF2ZW4ndCB5ZXQgY2hlY2tlZCB0aGlzIGlzIGEgSlNBcnJheSwgc28gdGhpcyBpcyBv
bmx5IHNhZmUgaWYKKyAgICAgICAgLy8gYW4gYWNjZXNzIHdpdGggb2Zmc2V0IEpTQXJyYXk6OnN0
b3JhZ2VPZmZzZXQoKSBpcyB2YWxpZCBmb3IgYWxsIEpTQ2VsbHMhCisgICAgICAgIG1faml0Lmxv
YWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheTo6c3RvcmFnZU9m
ZnNldCgpKSwgc3RvcmFnZUdQUik7CisKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgYmFzZU5v
dEFycmF5ID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KG1faml0Lmdsb2JhbERhdGEoKS0+anNBcnJheVZQdHIpKTsKKworICAgICAgICBtX2ppdC56ZXJv
RXh0ZW5kMzJUb1B0cihwcm9wZXJ0eUdQUiwgY2xlYW5JbmRleEdQUik7CisKKyAgICAgICAgSklU
Q29tcGlsZXI6Okp1bXAgb3V0T2ZCb3VuZHMgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxl
cjo6QWJvdmVPckVxdWFsLCBjbGVhbkluZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBKU0FycmF5Ojp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpOworCisgICAgICAgIG1faml0
LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlR1BSLCBjbGVhbkluZGV4
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6U2NhbGVQdHIsIE9CSkVDVF9PRkZTRVRPRihBcnJheVN0b3Jh
Z2UsIG1fdmVjdG9yWzBdKSksIHN0b3JhZ2VHUFIpOworCisgICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIGxvYWRGYWlsZWQgPSBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJv
LCBzdG9yYWdlR1BSKTsKKworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQu
anVtcCgpOworCisgICAgICAgIGJhc2VOb3RDZWxsLmxpbmsoJm1faml0KTsKKyAgICAgICAgcHJv
cGVydHlOb3RJbnQubGluaygmbV9qaXQpOworICAgICAgICBiYXNlTm90QXJyYXkubGluaygmbV9q
aXQpOworICAgICAgICBvdXRPZkJvdW5kcy5saW5rKCZtX2ppdCk7CisgICAgICAgIGxvYWRGYWls
ZWQubGluaygmbV9qaXQpOworCisgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHN0b3Jh
Z2VHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICAgICAgc2V0dXBTdHViQXJndW1lbnRz
KGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb25HZXRCeVZhbCk7CisgICAgICAgIG1faml0Lm1v
dmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIHN0b3JhZ2VHUFIpOworICAgICAgICBzaWxlbnRG
aWxsQWxsUmVnaXN0ZXJzKHN0b3JhZ2VHUFIpOworCisgICAgICAgIGRvbmUubGluaygmbV9qaXQp
OworCisgICAgICAgIGpzVmFsdWVSZXN1bHQoc3RvcmFnZUdQUiwgbV9jb21waWxlSW5kZXgpOwog
ICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTUzMiwxMSArNTc4LDI3IEBAIHZvaWQgTm9uU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoU3BlY3VsYXQKICAgICBjYXNlIEdldEJ5SWQ6IHsKICAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSk7CiAgICAgICAgIEdQUlJl
ZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKLSAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAg
ICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBiYXNlKTsKKyAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgICAgICBHUFJSZXN1bHQgcmVzdWx0KHRoaXMpOwot
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5SWQsIHJlc3VsdC5ncHIoKSwgYmFz
ZUdQUiwgaWRlbnRpZmllcihub2RlLmlkZW50aWZpZXJOdW1iZXIoKSkpOwotICAgICAgICBqc1Zh
bHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jb21waWxlSW5kZXgpOworICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm9uWmVybywgYmFzZUdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKKworICAgICAgICBj
YWNoZWRHZXRCeUlkKGJhc2VHUFIsIHJlc3VsdEdQUiwgbm9kZS5pZGVudGlmaWVyTnVtYmVyKCkp
OworCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CisgICAg
ICAgIG5vdENlbGwubGluaygmbV9qaXQpOworCisgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0
ZXJzKHJlc3VsdEdQUiwgYmFzZUdQUik7CisgICAgICAgIG1faml0Lm1vdmUoYmFzZUdQUiwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbV9qaXQubW92ZShKSVRDb21waWxlcjo6VHJ1
c3RlZEltbVB0cihpZGVudGlmaWVyKG5vZGUuaWRlbnRpZmllck51bWJlcigpKSksIEdQUkluZm86
OmFyZ3VtZW50R1BSMik7CisgICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2sob3BlcmF0aW9uR2V0QnlJZCk7CisgICAgICAgIG1faml0Lm1vdmUoR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIsIHJlc3VsdEdQUik7CisgICAgICAgIHNpbGVudEZpbGxBbGxSZWdp
c3RlcnMocmVzdWx0R1BSKTsKKworICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKKworICAgICAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVh
azsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiA4OTM4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzEsMzIgKzg3
MSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSk7CiAgICAgICAgIEdQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcywgYmFzZSk7CiAKLSAgICAgICAgR1BSUmVnIGJhc2VHUFIg
PSBiYXNlLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwog
Ci0gICAgICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwot
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBzdHJ1Y3R1cmVDaGVjayA9IG1faml0LmJyYW5jaFB0
cldpdGhQYXRjaChKSVRDb21waWxlcjo6RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIEpJVENv
bXBpbGVyOjpUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KC0xKSkpOwotCi0g
ICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUiwgYmFzZUdQUik7Ci0gICAg
ICAgIG1faml0Lm1vdmUoYmFzZUdQUiwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAg
bV9qaXQubW92ZShKSVRDb21waWxlcjo6SW1tUHRyKGlkZW50aWZpZXIobm9kZS5pZGVudGlmaWVy
TnVtYmVyKCkpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAgICAgICAgbV9qaXQubW92ZShH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgZnVuY3Rpb25DYWxsID0gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVjayhvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpOwotICAgICAgICBtX2ppdC5tb3ZlKEdQ
UkluZm86OnJldHVyblZhbHVlR1BSLCByZXN1bHRHUFIpOwotICAgICAgICBzaWxlbnRGaWxsQWxs
UmVnaXN0ZXJzKHJlc3VsdEdQUik7Ci0KLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaGFuZGxl
ZEJ5QyA9IG1faml0Lmp1bXAoKTsKLSAgICAgICAgc3RydWN0dXJlQ2hlY2subGluaygmbV9qaXQp
OwotCi0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwg
SlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZXN1bHRHUFIpOwotICAgICAg
ICBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdCBsb2FkV2l0aFBhdGNoID0gbV9qaXQubG9h
ZFB0cldpdGhDb21wYWN0QWRkcmVzc09mZnNldFBhdGNoKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJl
c3VsdEdQUiwgMCksIHJlc3VsdEdQUik7Ci0KLSAgICAgICAgaW50cHRyX3QgY2hlY2tUb0NhbGwg
PSBtX2ppdC5kaWZmZXJlbmNlQmV0d2VlbihzdHJ1Y3R1cmVUb0NvbXBhcmUsIGZ1bmN0aW9uQ2Fs
bCk7Ci0gICAgICAgIGludHB0cl90IGNhbGxUb0xvYWQgPSBtX2ppdC5kaWZmZXJlbmNlQmV0d2Vl
bihmdW5jdGlvbkNhbGwsIGxvYWRXaXRoUGF0Y2gpOwotCi0gICAgICAgIGhhbmRsZWRCeUMubGlu
aygmbV9qaXQpOwotCi0gICAgICAgIG1faml0LmFkZFByb3BlcnR5QWNjZXNzKGZ1bmN0aW9uQ2Fs
bCwgY2hlY2tUb0NhbGwsIGNhbGxUb0xvYWQpOworICAgICAgICBjYWNoZWRHZXRCeUlkKGJhc2Uu
Z3ByKCksIHJlc3VsdEdQUiwgbm9kZS5pZGVudGlmaWVyTnVtYmVyKCkpOwogCiAgICAgICAgIGpz
VmFsdWVSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwo=
</data>
<flag name="review"
          id="92397"
          type_id="1"
          status="-"
          setter="barraclough"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98280</attachid>
            <date>2011-06-22 18:10:44 -0700</date>
            <delta_ts>2011-06-22 20:02:20 -0700</delta_ts>
            <desc>the patch (fixed review comments)</desc>
            <filename>getby_patch_4.diff</filename>
            <type>text/plain</type>
            <size>9312</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODk0NjIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTEtMDYtMjIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBERkcgbm9uLXNwZWN1bGF0aXZl
IEpJVCBzaG91bGQgaGF2ZSBvYnZpb3VzIG9wdGltaXphdGlvbnMgZm9yIEdldEJ5SWQgYW5kIEdl
dEJ5VmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
MzE3MworCisgICAgICAgICogZGZnL0RGR0pJVENvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkpJVENvZGVHZW5lcmF0b3I6OmNhY2hlZEdldEJ5SWQpOgorICAgICAgICAqIGRm
Zy9ERkdKSVRDb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogZGZnL0RGR05vblNwZWN1bGF0aXZl
SklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpOb25TcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisKIDIwMTEtMDYtMjEgIE1PUklUQSBIYWppbWUg
IDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjg5NDAxIGFuZCByODk0MDMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDg5Mzg0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzI1LDYgKzMyNSwzNyBAQCB2b2lkIEpJVENvZGVHZW5lcmF0b3I6OnVzZUNoaWxkcmVuKE5v
ZGUmCiAgICAgdXNlKGNoaWxkMyk7CiB9CiAKK3ZvaWQgSklUQ29kZUdlbmVyYXRvcjo6Y2FjaGVk
R2V0QnlJZChHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwgdW5zaWduZWQgaWRlbnRp
Zmllck51bWJlciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnKQoreworICAgIEpJVENv
bXBpbGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOworICAgIEpJVENvbXBpbGVy
OjpKdW1wIHN0cnVjdHVyZUNoZWNrID0gbV9qaXQuYnJhbmNoUHRyV2l0aFBhdGNoKEpJVENvbXBp
bGVyOjpFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1Q
dHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oLTEpKSk7CisgICAgCisgICAgaWYgKHNsb3dQYXRo
VGFyZy5pc1NldCgpKSB7CisgICAgICAgIHNsb3dQYXRoVGFyZy5saW5rKCZtX2ppdCk7CisgICAg
fQorCisgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSLCBiYXNlR1BSKTsKKyAg
ICBtX2ppdC5tb3ZlKGJhc2VHUFIsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgbV9qaXQu
bW92ZShKSVRDb21waWxlcjo6SW1tUHRyKGlkZW50aWZpZXIoaWRlbnRpZmllck51bWJlcikpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgSklUQ29tcGlsZXI6OkNhbGwg
ZnVuY3Rpb25DYWxsID0gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemUpOworICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIHJl
c3VsdEdQUik7CisgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOworCisgICAg
SklUQ29tcGlsZXI6Okp1bXAgaGFuZGxlZEJ5QyA9IG1faml0Lmp1bXAoKTsKKyAgICBzdHJ1Y3R1
cmVDaGVjay5saW5rKCZtX2ppdCk7CisKKyAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpB
ZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVz
dWx0R1BSKTsKKyAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdCBsb2FkV2l0aFBhdGNo
ID0gbV9qaXQubG9hZFB0cldpdGhDb21wYWN0QWRkcmVzc09mZnNldFBhdGNoKEpJVENvbXBpbGVy
OjpBZGRyZXNzKHJlc3VsdEdQUiwgMCksIHJlc3VsdEdQUik7CisKKyAgICBpbnRwdHJfdCBjaGVj
a1RvQ2FsbCA9IG1faml0LmRpZmZlcmVuY2VCZXR3ZWVuKHN0cnVjdHVyZVRvQ29tcGFyZSwgZnVu
Y3Rpb25DYWxsKTsKKyAgICBpbnRwdHJfdCBjYWxsVG9Mb2FkID0gbV9qaXQuZGlmZmVyZW5jZUJl
dHdlZW4oZnVuY3Rpb25DYWxsLCBsb2FkV2l0aFBhdGNoKTsKKworICAgIGhhbmRsZWRCeUMubGlu
aygmbV9qaXQpOworCisgICAgbV9qaXQuYWRkUHJvcGVydHlBY2Nlc3MoZnVuY3Rpb25DYWxsLCBj
aGVja1RvQ2FsbCwgY2FsbFRvTG9hZCk7Cit9CisKICNpZm5kZWYgTkRFQlVHCiBzdGF0aWMgY29u
c3QgY2hhciogZGF0YUZvcm1hdFN0cmluZyhEYXRhRm9ybWF0IGZvcm1hdCkKIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5oCShyZXZp
c2lvbiA4OTM4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVy
YXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NTksNiArNTU5LDggQEAgcHJvdGVjdGVkOgogICAg
ICAgICB9CiAgICAgfQogCisgICAgdm9pZCBjYWNoZWRHZXRCeUlkKEdQUlJlZyBiYXNlR1BSLCBH
UFJSZWcgcmVzdWx0R1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6
SnVtcCBzbG93UGF0aFRhcmcgPSBKSVRDb21waWxlcjo6SnVtcCgpKTsKKwogICAgIC8vIENhbGxl
ZCBvbmNlIGEgbm9kZSBoYXMgY29tcGxldGVkIGNvZGUgZ2VuZXJhdGlvbiBidXQgcHJpb3IgdG8g
c2V0dGluZwogICAgIC8vIGl0cyByZXN1bHQsIHRvIGZyZWUgdXAgaXRzIGNoaWxkcmVuLiAoVGhp
cyBtdXN0IGhhcHBlbiBwcmlvciB0byBzZXR0aW5nCiAgICAgLy8gdGhlIG5vZGVzIHJlc3VsdCwg
c2luY2UgdGhlIG5vZGUgbWF5IGhhdmUgdGhlIHNhbWUgVmlydHVhbFJlZ2lzdGVyIGFzCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vblNwZWN1bGF0aXZlSklULmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vblNwZWN1bGF0aXZlSklU
LmNwcAkocmV2aXNpb24gODkzODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
blNwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDk5LDE2ICs0OTksNTMgQEAg
dm9pZCBOb25TcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShTcGVjdWxhdAogICAgIH0KIAogICAgIGNh
c2UgR2V0QnlWYWw6IHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJnMSh0aGlzLCBub2RlLmNo
aWxkMSk7Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZzIodGhpcywgbm9kZS5jaGlsZDIpOwot
ICAgICAgICBHUFJSZWcgYXJnMUdQUiA9IGFyZzEuZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyBhcmcy
R1BSID0gYXJnMi5ncHIoKTsKLSAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgSlNW
YWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSk7CisgICAgICAgIEpTVmFsdWVPcGVy
YW5kIHByb3BlcnR5KHRoaXMsIG5vZGUuY2hpbGQyKTsKIAotICAgICAgICBHUFJSZXN1bHQgcmVz
dWx0KHRoaXMpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsLCByZXN1
bHQuZ3ByKCksIGFyZzFHUFIsIGFyZzJHUFIpOworICAgICAgICBHUFJUZW1wb3Jhcnkgc3RvcmFn
ZSh0aGlzKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IGNsZWFuSW5kZXgodGhpcyk7CiAKLSAgICAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAg
R1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIg
PSBwcm9wZXJ0eS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHN0b3JhZ2VHUFIgPSBzdG9yYWdlLmdw
cigpOworICAgICAgICBHUFJSZWcgY2xlYW5JbmRleEdQUiA9IGNsZWFuSW5kZXguZ3ByKCk7CisK
KyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgYmFzZU5vdENlbGwgPSBtX2ppdC5icmFuY2hUZXN0
UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBiYXNlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVn
aXN0ZXIpOworCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHByb3BlcnR5Tm90SW50ID0gbV9q
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgcHJvcGVydHlHUFIsIEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisKKyAgICAgICAgLy8gR2V0IHRoZSBhcnJheSBzdG9y
YWdlLiBXZSBoYXZlbid0IHlldCBjaGVja2VkIHRoaXMgaXMgYSBKU0FycmF5LCBzbyB0aGlzIGlz
IG9ubHkgc2FmZSBpZgorICAgICAgICAvLyBhbiBhY2Nlc3Mgd2l0aCBvZmZzZXQgSlNBcnJheTo6
c3RvcmFnZU9mZnNldCgpIGlzIHZhbGlkIGZvciBhbGwgSlNDZWxscyEKKyAgICAgICAgbV9qaXQu
bG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5OjpzdG9yYWdl
T2Zmc2V0KCkpLCBzdG9yYWdlR1BSKTsKKworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBiYXNl
Tm90QXJyYXkgPSBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0cikpOworCisgICAgICAgIG1faml0Lnpl
cm9FeHRlbmQzMlRvUHRyKHByb3BlcnR5R1BSLCBjbGVhbkluZGV4R1BSKTsKKworICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBvdXRPZkJvdW5kcyA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1i
bGVyOjpBYm92ZU9yRXF1YWwsIGNsZWFuSW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VHUFIsIEpTQXJyYXk6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSk7CisKKyAgICAgICAgbV9q
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VHUFIsIGNsZWFuSW5k
ZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpTY2FsZVB0ciwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3Rv
cmFnZSwgbV92ZWN0b3JbMF0pKSwgc3RvcmFnZUdQUik7CisKKyAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgbG9hZEZhaWxlZCA9IG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olpl
cm8sIHN0b3JhZ2VHUFIpOworCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2pp
dC5qdW1wKCk7CisKKyAgICAgICAgYmFzZU5vdENlbGwubGluaygmbV9qaXQpOworICAgICAgICBw
cm9wZXJ0eU5vdEludC5saW5rKCZtX2ppdCk7CisgICAgICAgIGJhc2VOb3RBcnJheS5saW5rKCZt
X2ppdCk7CisgICAgICAgIG91dE9mQm91bmRzLmxpbmsoJm1faml0KTsKKyAgICAgICAgbG9hZEZh
aWxlZC5saW5rKCZtX2ppdCk7CisKKyAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMoc3Rv
cmFnZUdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOworICAgICAgICBzZXR1cFN0dWJBcmd1bWVu
dHMoYmFzZUdQUiwgcHJvcGVydHlHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBhcHBlbmRD
YWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbkdldEJ5VmFsKTsKKyAgICAgICAgbV9qaXQu
bW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgc3RvcmFnZUdQUik7CisgICAgICAgIHNpbGVu
dEZpbGxBbGxSZWdpc3RlcnMoc3RvcmFnZUdQUik7CisKKyAgICAgICAgZG9uZS5saW5rKCZtX2pp
dCk7CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChzdG9yYWdlR1BSLCBtX2NvbXBpbGVJbmRleCk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtNTMyLDExICs1NjksMTQgQEAgdm9pZCBOb25T
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShTcGVjdWxhdAogICAgIGNhc2UgR2V0QnlJZDogewogICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKTsKICAgICAgICAgR1BS
UmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwotICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAg
ICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIGJhc2UpOworICAgICAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0LmdwcigpOwogCi0gICAgICAgIEdQUlJlc3VsdCByZXN1bHQodGhpcyk7
Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlJZCwgcmVzdWx0LmdwcigpLCBi
YXNlR1BSLCBpZGVudGlmaWVyKG5vZGUuaWRlbnRpZmllck51bWJlcigpKSk7Ci0gICAgICAgIGpz
VmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVy
OjpOb25aZXJvLCBiYXNlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworCisgICAgICAg
IGNhY2hlZEdldEJ5SWQoYmFzZUdQUiwgcmVzdWx0R1BSLCBub2RlLmlkZW50aWZpZXJOdW1iZXIo
KSwgbm90Q2VsbCk7CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGls
ZUluZGV4KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gODkzODQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODcxLDMyICs4NzEsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUmIG5vZGUpCiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9k
ZS5jaGlsZDEpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIGJhc2UpOwogCi0g
ICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsUHRy
IHN0cnVjdHVyZVRvQ29tcGFyZTsKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgc3RydWN0dXJl
Q2hlY2sgPSBtX2ppdC5icmFuY2hQdHJXaXRoUGF0Y2goSklUQ29tcGlsZXI6OkVxdWFsLCBKSVRD
b21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3Ry
dWN0dXJlVG9Db21wYXJlLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cihyZWludGVycHJldF9j
YXN0PHZvaWQqPigtMSkpKTsKLQotICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1
bHRHUFIsIGJhc2VHUFIpOwotICAgICAgICBtX2ppdC5tb3ZlKGJhc2VHUFIsIEdQUkluZm86OmFy
Z3VtZW50R1BSMSk7Ci0gICAgICAgIG1faml0Lm1vdmUoSklUQ29tcGlsZXI6OkltbVB0cihpZGVu
dGlmaWVyKG5vZGUuaWRlbnRpZmllck51bWJlcigpKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7
Ci0gICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGZ1bmN0aW9uQ2FsbCA9
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsK
LSAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgcmVzdWx0R1BSKTsK
LSAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwotCi0gICAgICAgIEpJ
VENvbXBpbGVyOjpKdW1wIGhhbmRsZWRCeUMgPSBtX2ppdC5qdW1wKCk7Ci0gICAgICAgIHN0cnVj
dHVyZUNoZWNrLmxpbmsoJm1faml0KTsKLQotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBp
bGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgp
KSwgcmVzdWx0R1BSKTsKLSAgICAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbENvbXBhY3QgbG9h
ZFdpdGhQYXRjaCA9IG1faml0LmxvYWRQdHJXaXRoQ29tcGFjdEFkZHJlc3NPZmZzZXRQYXRjaChK
SVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIDApLCByZXN1bHRHUFIpOwotCi0gICAgICAg
IGludHB0cl90IGNoZWNrVG9DYWxsID0gbV9qaXQuZGlmZmVyZW5jZUJldHdlZW4oc3RydWN0dXJl
VG9Db21wYXJlLCBmdW5jdGlvbkNhbGwpOwotICAgICAgICBpbnRwdHJfdCBjYWxsVG9Mb2FkID0g
bV9qaXQuZGlmZmVyZW5jZUJldHdlZW4oZnVuY3Rpb25DYWxsLCBsb2FkV2l0aFBhdGNoKTsKLQot
ICAgICAgICBoYW5kbGVkQnlDLmxpbmsoJm1faml0KTsKLQotICAgICAgICBtX2ppdC5hZGRQcm9w
ZXJ0eUFjY2VzcyhmdW5jdGlvbkNhbGwsIGNoZWNrVG9DYWxsLCBjYWxsVG9Mb2FkKTsKKyAgICAg
ICAgY2FjaGVkR2V0QnlJZChiYXNlLmdwcigpLCByZXN1bHRHUFIsIG5vZGUuaWRlbnRpZmllck51
bWJlcigpKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5k
ZXgpOwogICAgICAgICBicmVhazsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98300</attachid>
            <date>2011-06-22 20:02:20 -0700</date>
            <delta_ts>2011-06-23 14:57:16 -0700</delta_ts>
            <desc>the patch (fixed review, fixed style)</desc>
            <filename>getby_patch_5.diff</filename>
            <type>text/plain</type>
            <size>9303</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODk0NjIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTEtMDYtMjIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBERkcgbm9uLXNwZWN1bGF0aXZl
IEpJVCBzaG91bGQgaGF2ZSBvYnZpb3VzIG9wdGltaXphdGlvbnMgZm9yIEdldEJ5SWQgYW5kIEdl
dEJ5VmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
MzE3MworCisgICAgICAgICogZGZnL0RGR0pJVENvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkpJVENvZGVHZW5lcmF0b3I6OmNhY2hlZEdldEJ5SWQpOgorICAgICAgICAqIGRm
Zy9ERkdKSVRDb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogZGZnL0RGR05vblNwZWN1bGF0aXZl
SklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpOb25TcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisKIDIwMTEtMDYtMjEgIE1PUklUQSBIYWppbWUg
IDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjg5NDAxIGFuZCByODk0MDMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDg5Mzg0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzI1LDYgKzMyNSwzNiBAQCB2b2lkIEpJVENvZGVHZW5lcmF0b3I6OnVzZUNoaWxkcmVuKE5v
ZGUmCiAgICAgdXNlKGNoaWxkMyk7CiB9CiAKK3ZvaWQgSklUQ29kZUdlbmVyYXRvcjo6Y2FjaGVk
R2V0QnlJZChHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwgdW5zaWduZWQgaWRlbnRp
Zmllck51bWJlciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnKQoreworICAgIEpJVENv
bXBpbGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOworICAgIEpJVENvbXBpbGVy
OjpKdW1wIHN0cnVjdHVyZUNoZWNrID0gbV9qaXQuYnJhbmNoUHRyV2l0aFBhdGNoKEpJVENvbXBp
bGVyOjpFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1Q
dHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oLTEpKSk7CisgICAgCisgICAgaWYgKHNsb3dQYXRo
VGFyZy5pc1NldCgpKQorICAgICAgICBzbG93UGF0aFRhcmcubGluaygmbV9qaXQpOworCisgICAg
c2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSLCBiYXNlR1BSKTsKKyAgICBtX2ppdC5t
b3ZlKGJhc2VHUFIsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgbV9qaXQubW92ZShKSVRD
b21waWxlcjo6SW1tUHRyKGlkZW50aWZpZXIoaWRlbnRpZmllck51bWJlcikpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjIpOworICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgSklUQ29tcGlsZXI6OkNhbGwgZnVuY3Rpb25D
YWxsID0gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb25HZXRCeUlkT3B0aW1p
emUpOworICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIHJlc3VsdEdQUik7
CisgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOworCisgICAgSklUQ29tcGls
ZXI6Okp1bXAgaGFuZGxlZEJ5QyA9IG1faml0Lmp1bXAoKTsKKyAgICBzdHJ1Y3R1cmVDaGVjay5s
aW5rKCZtX2ppdCk7CisKKyAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJh
c2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsK
KyAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdCBsb2FkV2l0aFBhdGNoID0gbV9qaXQu
bG9hZFB0cldpdGhDb21wYWN0QWRkcmVzc09mZnNldFBhdGNoKEpJVENvbXBpbGVyOjpBZGRyZXNz
KHJlc3VsdEdQUiwgMCksIHJlc3VsdEdQUik7CisKKyAgICBpbnRwdHJfdCBjaGVja1RvQ2FsbCA9
IG1faml0LmRpZmZlcmVuY2VCZXR3ZWVuKHN0cnVjdHVyZVRvQ29tcGFyZSwgZnVuY3Rpb25DYWxs
KTsKKyAgICBpbnRwdHJfdCBjYWxsVG9Mb2FkID0gbV9qaXQuZGlmZmVyZW5jZUJldHdlZW4oZnVu
Y3Rpb25DYWxsLCBsb2FkV2l0aFBhdGNoKTsKKworICAgIGhhbmRsZWRCeUMubGluaygmbV9qaXQp
OworCisgICAgbV9qaXQuYWRkUHJvcGVydHlBY2Nlc3MoZnVuY3Rpb25DYWxsLCBjaGVja1RvQ2Fs
bCwgY2FsbFRvTG9hZCk7Cit9CisKICNpZm5kZWYgTkRFQlVHCiBzdGF0aWMgY29uc3QgY2hhciog
ZGF0YUZvcm1hdFN0cmluZyhEYXRhRm9ybWF0IGZvcm1hdCkKIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiA4OTM4
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC01NTksNiArNTU5LDggQEAgcHJvdGVjdGVkOgogICAgICAgICB9CiAg
ICAgfQogCisgICAgdm9pZCBjYWNoZWRHZXRCeUlkKEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVz
dWx0R1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93
UGF0aFRhcmcgPSBKSVRDb21waWxlcjo6SnVtcCgpKTsKKwogICAgIC8vIENhbGxlZCBvbmNlIGEg
bm9kZSBoYXMgY29tcGxldGVkIGNvZGUgZ2VuZXJhdGlvbiBidXQgcHJpb3IgdG8gc2V0dGluZwog
ICAgIC8vIGl0cyByZXN1bHQsIHRvIGZyZWUgdXAgaXRzIGNoaWxkcmVuLiAoVGhpcyBtdXN0IGhh
cHBlbiBwcmlvciB0byBzZXR0aW5nCiAgICAgLy8gdGhlIG5vZGVzIHJlc3VsdCwgc2luY2UgdGhl
IG5vZGUgbWF5IGhhdmUgdGhlIHNhbWUgVmlydHVhbFJlZ2lzdGVyIGFzCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vblNwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vblNwZWN1bGF0aXZlSklULmNwcAkocmV2
aXNpb24gODkzODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vblNwZWN1bGF0
aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDk5LDE2ICs0OTksNTMgQEAgdm9pZCBOb25T
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShTcGVjdWxhdAogICAgIH0KIAogICAgIGNhc2UgR2V0QnlW
YWw6IHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJnMSh0aGlzLCBub2RlLmNoaWxkMSk7Ci0g
ICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZzIodGhpcywgbm9kZS5jaGlsZDIpOwotICAgICAgICBH
UFJSZWcgYXJnMUdQUiA9IGFyZzEuZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyBhcmcyR1BSID0gYXJn
Mi5ncHIoKTsKLSAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJh
bmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHByb3Bl
cnR5KHRoaXMsIG5vZGUuY2hpbGQyKTsKIAotICAgICAgICBHUFJSZXN1bHQgcmVzdWx0KHRoaXMp
OwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsLCByZXN1bHQuZ3ByKCks
IGFyZzFHUFIsIGFyZzJHUFIpOworICAgICAgICBHUFJUZW1wb3Jhcnkgc3RvcmFnZSh0aGlzKTsK
KyAgICAgICAgR1BSVGVtcG9yYXJ5IGNsZWFuSW5kZXgodGhpcyk7CiAKLSAgICAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgR1BSUmVnIGJh
c2VHUFIgPSBiYXNlLmdwcigpOworICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwcm9wZXJ0
eS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHN0b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigpOworICAg
ICAgICBHUFJSZWcgY2xlYW5JbmRleEdQUiA9IGNsZWFuSW5kZXguZ3ByKCk7CisKKyAgICAgICAg
SklUQ29tcGlsZXI6Okp1bXAgYmFzZU5vdENlbGwgPSBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb25aZXJvLCBiYXNlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwor
CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHByb3BlcnR5Tm90SW50ID0gbV9qaXQuYnJhbmNo
UHRyKE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgcHJvcGVydHlHUFIsIEdQUkluZm86OnRhZ1R5cGVO
dW1iZXJSZWdpc3Rlcik7CisKKyAgICAgICAgLy8gR2V0IHRoZSBhcnJheSBzdG9yYWdlLiBXZSBo
YXZlbid0IHlldCBjaGVja2VkIHRoaXMgaXMgYSBKU0FycmF5LCBzbyB0aGlzIGlzIG9ubHkgc2Fm
ZSBpZgorICAgICAgICAvLyBhbiBhY2Nlc3Mgd2l0aCBvZmZzZXQgSlNBcnJheTo6c3RvcmFnZU9m
ZnNldCgpIGlzIHZhbGlkIGZvciBhbGwgSlNDZWxscyEKKyAgICAgICAgbV9qaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5OjpzdG9yYWdlT2Zmc2V0KCkp
LCBzdG9yYWdlR1BSKTsKKworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBiYXNlTm90QXJyYXkg
PSBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQu
Z2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0cikpOworCisgICAgICAgIG1faml0Lnplcm9FeHRlbmQz
MlRvUHRyKHByb3BlcnR5R1BSLCBjbGVhbkluZGV4R1BSKTsKKworICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBvdXRPZkJvdW5kcyA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92
ZU9yRXF1YWwsIGNsZWFuSW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTQXJyYXk6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSk7CisKKyAgICAgICAgbV9qaXQubG9hZFB0
cihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VHUFIsIGNsZWFuSW5kZXhHUFIsIE1h
Y3JvQXNzZW1ibGVyOjpTY2FsZVB0ciwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFnZSwgbV92
ZWN0b3JbMF0pKSwgc3RvcmFnZUdQUik7CisKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbG9h
ZEZhaWxlZCA9IG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHN0b3Jh
Z2VHUFIpOworCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7
CisKKyAgICAgICAgYmFzZU5vdENlbGwubGluaygmbV9qaXQpOworICAgICAgICBwcm9wZXJ0eU5v
dEludC5saW5rKCZtX2ppdCk7CisgICAgICAgIGJhc2VOb3RBcnJheS5saW5rKCZtX2ppdCk7Cisg
ICAgICAgIG91dE9mQm91bmRzLmxpbmsoJm1faml0KTsKKyAgICAgICAgbG9hZEZhaWxlZC5saW5r
KCZtX2ppdCk7CisKKyAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMoc3RvcmFnZUdQUiwg
YmFzZUdQUiwgcHJvcGVydHlHUFIpOworICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYmFzZUdQ
UiwgcHJvcGVydHlHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbkdldEJ5VmFsKTsKKyAgICAgICAgbV9qaXQubW92ZShHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUiwgc3RvcmFnZUdQUik7CisgICAgICAgIHNpbGVudEZpbGxBbGxS
ZWdpc3RlcnMoc3RvcmFnZUdQUik7CisKKyAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CisKKyAg
ICAgICAganNWYWx1ZVJlc3VsdChzdG9yYWdlR1BSLCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIApAQCAtNTMyLDExICs1NjksMTQgQEAgdm9pZCBOb25TcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShTcGVjdWxhdAogICAgIGNhc2UgR2V0QnlJZDogewogICAgICAgICBKU1Zh
bHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKTsKICAgICAgICAgR1BSUmVnIGJhc2VH
UFIgPSBiYXNlLmdwcigpOwotICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMsIGJhc2UpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOwogCi0gICAgICAgIEdQUlJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlJZCwgcmVzdWx0LmdwcigpLCBiYXNlR1BSLCBp
ZGVudGlmaWVyKG5vZGUuaWRlbnRpZmllck51bWJlcigpKSk7Ci0gICAgICAgIGpzVmFsdWVSZXN1
bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJv
LCBiYXNlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworCisgICAgICAgIGNhY2hlZEdl
dEJ5SWQoYmFzZUdQUiwgcmVzdWx0R1BSLCBub2RlLmlkZW50aWZpZXJOdW1iZXIoKSwgbm90Q2Vs
bCk7CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gODkzODQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODcxLDMyICs4NzEsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5v
ZGUpCiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEp
OwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIGJhc2UpOwogCi0gICAgICAgIEdQ
UlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKIAotICAgICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVy
ZVRvQ29tcGFyZTsKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgc3RydWN0dXJlQ2hlY2sgPSBt
X2ppdC5icmFuY2hQdHJXaXRoUGF0Y2goSklUQ29tcGlsZXI6OkVxdWFsLCBKSVRDb21waWxlcjo6
QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9D
b21wYXJlLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQq
PigtMSkpKTsKLQotICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIsIGJh
c2VHUFIpOwotICAgICAgICBtX2ppdC5tb3ZlKGJhc2VHUFIsIEdQUkluZm86OmFyZ3VtZW50R1BS
MSk7Ci0gICAgICAgIG1faml0Lm1vdmUoSklUQ29tcGlsZXI6OkltbVB0cihpZGVudGlmaWVyKG5v
ZGUuaWRlbnRpZmllck51bWJlcigpKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7Ci0gICAgICAg
IG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGZ1bmN0aW9uQ2FsbCA9IGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsKLSAgICAgICAg
bV9qaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgcmVzdWx0R1BSKTsKLSAgICAgICAg
c2lsZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwotCi0gICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wIGhhbmRsZWRCeUMgPSBtX2ppdC5qdW1wKCk7Ci0gICAgICAgIHN0cnVjdHVyZUNoZWNr
LmxpbmsoJm1faml0KTsKLQotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0
R1BSKTsKLSAgICAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbENvbXBhY3QgbG9hZFdpdGhQYXRj
aCA9IG1faml0LmxvYWRQdHJXaXRoQ29tcGFjdEFkZHJlc3NPZmZzZXRQYXRjaChKSVRDb21waWxl
cjo6QWRkcmVzcyhyZXN1bHRHUFIsIDApLCByZXN1bHRHUFIpOwotCi0gICAgICAgIGludHB0cl90
IGNoZWNrVG9DYWxsID0gbV9qaXQuZGlmZmVyZW5jZUJldHdlZW4oc3RydWN0dXJlVG9Db21wYXJl
LCBmdW5jdGlvbkNhbGwpOwotICAgICAgICBpbnRwdHJfdCBjYWxsVG9Mb2FkID0gbV9qaXQuZGlm
ZmVyZW5jZUJldHdlZW4oZnVuY3Rpb25DYWxsLCBsb2FkV2l0aFBhdGNoKTsKLQotICAgICAgICBo
YW5kbGVkQnlDLmxpbmsoJm1faml0KTsKLQotICAgICAgICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2Vz
cyhmdW5jdGlvbkNhbGwsIGNoZWNrVG9DYWxsLCBjYWxsVG9Mb2FkKTsKKyAgICAgICAgY2FjaGVk
R2V0QnlJZChiYXNlLmdwcigpLCByZXN1bHRHUFIsIG5vZGUuaWRlbnRpZmllck51bWJlcigpKTsK
IAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOwogICAg
ICAgICBicmVhazsK
</data>
<flag name="review"
          id="92481"
          type_id="1"
          status="-"
          setter="barraclough"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98411</attachid>
            <date>2011-06-23 14:57:16 -0700</date>
            <delta_ts>2011-06-23 17:40:29 -0700</delta_ts>
            <desc>the patch (fix identifier name)</desc>
            <filename>getby_patch_6.diff</filename>
            <type>text/plain</type>
            <size>9300</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODk2MTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTEtMDYtMjIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBERkcgbm9uLXNwZWN1bGF0aXZl
IEpJVCBzaG91bGQgaGF2ZSBvYnZpb3VzIG9wdGltaXphdGlvbnMgZm9yIEdldEJ5SWQgYW5kIEdl
dEJ5VmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
MzE3MworCisgICAgICAgICogZGZnL0RGR0pJVENvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkpJVENvZGVHZW5lcmF0b3I6OmNhY2hlZEdldEJ5SWQpOgorICAgICAgICAqIGRm
Zy9ERkdKSVRDb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogZGZnL0RGR05vblNwZWN1bGF0aXZl
SklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpOb25TcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisKIDIwMTEtMDYtMjMgIEdhdmluIEJhcnJhY2xv
dWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZl
ciBIdW50LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJh
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
ZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiA4OTYxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMCw2ICsz
MjAsMzYgQEAgdm9pZCBKSVRDb2RlR2VuZXJhdG9yOjp1c2VDaGlsZHJlbihOb2RlJgogICAgIHVz
ZShjaGlsZDMpOwogfQogCit2b2lkIEpJVENvZGVHZW5lcmF0b3I6OmNhY2hlZEdldEJ5SWQoR1BS
UmVnIGJhc2VHUFIsIEdQUlJlZyByZXN1bHRHUFIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIs
IEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0KQoreworICAgIEpJVENvbXBpbGVyOjpE
YXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOworICAgIEpJVENvbXBpbGVyOjpKdW1wIHN0
cnVjdHVyZUNoZWNrID0gbV9qaXQuYnJhbmNoUHRyV2l0aFBhdGNoKEpJVENvbXBpbGVyOjpFcXVh
bCwgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIocmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oLTEpKSk7CisgICAgCisgICAgaWYgKHNsb3dQYXRoVGFyZ2V0Lmlz
U2V0KCkpCisgICAgICAgIHNsb3dQYXRoVGFyZ2V0LmxpbmsoJm1faml0KTsKKworICAgIHNpbGVu
dFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUiwgYmFzZUdQUik7CisgICAgbV9qaXQubW92ZShi
YXNlR1BSLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIG1faml0Lm1vdmUoSklUQ29tcGls
ZXI6OkltbVB0cihpZGVudGlmaWVyKGlkZW50aWZpZXJOdW1iZXIpKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIyKTsKKyAgICBtX2ppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOworICAgIEpJVENvbXBpbGVyOjpDYWxsIGZ1bmN0aW9uQ2FsbCA9
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsK
KyAgICBtX2ppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCByZXN1bHRHUFIpOworICAg
IHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKKworICAgIEpJVENvbXBpbGVyOjpK
dW1wIGhhbmRsZWRCeUMgPSBtX2ppdC5qdW1wKCk7CisgICAgc3RydWN0dXJlQ2hlY2subGluaygm
bV9qaXQpOworCisgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlc3VsdEdQUik7CisgICAg
SklUQ29tcGlsZXI6OkRhdGFMYWJlbENvbXBhY3QgbG9hZFdpdGhQYXRjaCA9IG1faml0LmxvYWRQ
dHJXaXRoQ29tcGFjdEFkZHJlc3NPZmZzZXRQYXRjaChKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1
bHRHUFIsIDApLCByZXN1bHRHUFIpOworCisgICAgaW50cHRyX3QgY2hlY2tUb0NhbGwgPSBtX2pp
dC5kaWZmZXJlbmNlQmV0d2VlbihzdHJ1Y3R1cmVUb0NvbXBhcmUsIGZ1bmN0aW9uQ2FsbCk7Cisg
ICAgaW50cHRyX3QgY2FsbFRvTG9hZCA9IG1faml0LmRpZmZlcmVuY2VCZXR3ZWVuKGZ1bmN0aW9u
Q2FsbCwgbG9hZFdpdGhQYXRjaCk7CisKKyAgICBoYW5kbGVkQnlDLmxpbmsoJm1faml0KTsKKwor
ICAgIG1faml0LmFkZFByb3BlcnR5QWNjZXNzKGZ1bmN0aW9uQ2FsbCwgY2hlY2tUb0NhbGwsIGNh
bGxUb0xvYWQpOworfQorCiAjaWZuZGVmIE5ERUJVRwogc3RhdGljIGNvbnN0IGNoYXIqIGRhdGFG
b3JtYXRTdHJpbmcoRGF0YUZvcm1hdCBmb3JtYXQpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gODk2MTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGVHZW5lcmF0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTAwLDYgKzUwMCw4IEBAIHByb3RlY3RlZDoKICAgICAgICAgfQogICAgIH0K
IAorICAgIHZvaWQgY2FjaGVkR2V0QnlJZChHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQ
UiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhU
YXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpKTsKKwogICAgIC8vIENhbGxlZCBvbmNlIGEgbm9k
ZSBoYXMgY29tcGxldGVkIGNvZGUgZ2VuZXJhdGlvbiBidXQgcHJpb3IgdG8gc2V0dGluZwogICAg
IC8vIGl0cyByZXN1bHQsIHRvIGZyZWUgdXAgaXRzIGNoaWxkcmVuLiAoVGhpcyBtdXN0IGhhcHBl
biBwcmlvciB0byBzZXR0aW5nCiAgICAgLy8gdGhlIG5vZGVzIHJlc3VsdCwgc2luY2UgdGhlIG5v
ZGUgbWF5IGhhdmUgdGhlIHNhbWUgVmlydHVhbFJlZ2lzdGVyIGFzCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vblNwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vblNwZWN1bGF0aXZlSklULmNwcAkocmV2aXNp
b24gODk2MTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vblNwZWN1bGF0aXZl
SklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDkzLDE2ICs0OTMsNTMgQEAgdm9pZCBOb25TcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShTcGVjdWxhdAogICAgIH0KIAogICAgIGNhc2UgR2V0QnlWYWw6
IHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJnMSh0aGlzLCBub2RlLmNoaWxkMSk7Ci0gICAg
ICAgIEpTVmFsdWVPcGVyYW5kIGFyZzIodGhpcywgbm9kZS5jaGlsZDIpOwotICAgICAgICBHUFJS
ZWcgYXJnMUdQUiA9IGFyZzEuZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyBhcmcyR1BSID0gYXJnMi5n
cHIoKTsKLSAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
YmFzZSh0aGlzLCBub2RlLmNoaWxkMSk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5
KHRoaXMsIG5vZGUuY2hpbGQyKTsKIAotICAgICAgICBHUFJSZXN1bHQgcmVzdWx0KHRoaXMpOwot
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsLCByZXN1bHQuZ3ByKCksIGFy
ZzFHUFIsIGFyZzJHUFIpOworICAgICAgICBHUFJUZW1wb3Jhcnkgc3RvcmFnZSh0aGlzKTsKKyAg
ICAgICAgR1BSVGVtcG9yYXJ5IGNsZWFuSW5kZXgodGhpcyk7CiAKLSAgICAgICAganNWYWx1ZVJl
c3VsdChyZXN1bHQuZ3ByKCksIG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgR1BSUmVnIGJhc2VH
UFIgPSBiYXNlLmdwcigpOworICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5n
cHIoKTsKKyAgICAgICAgR1BSUmVnIHN0b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigpOworICAgICAg
ICBHUFJSZWcgY2xlYW5JbmRleEdQUiA9IGNsZWFuSW5kZXguZ3ByKCk7CisKKyAgICAgICAgSklU
Q29tcGlsZXI6Okp1bXAgYmFzZU5vdENlbGwgPSBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNz
ZW1ibGVyOjpOb25aZXJvLCBiYXNlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworCisg
ICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHByb3BlcnR5Tm90SW50ID0gbV9qaXQuYnJhbmNoUHRy
KE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgcHJvcGVydHlHUFIsIEdQUkluZm86OnRhZ1R5cGVOdW1i
ZXJSZWdpc3Rlcik7CisKKyAgICAgICAgLy8gR2V0IHRoZSBhcnJheSBzdG9yYWdlLiBXZSBoYXZl
bid0IHlldCBjaGVja2VkIHRoaXMgaXMgYSBKU0FycmF5LCBzbyB0aGlzIGlzIG9ubHkgc2FmZSBp
ZgorICAgICAgICAvLyBhbiBhY2Nlc3Mgd2l0aCBvZmZzZXQgSlNBcnJheTo6c3RvcmFnZU9mZnNl
dCgpIGlzIHZhbGlkIGZvciBhbGwgSlNDZWxscyEKKyAgICAgICAgbV9qaXQubG9hZFB0cihNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5OjpzdG9yYWdlT2Zmc2V0KCkpLCBz
dG9yYWdlR1BSKTsKKworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBiYXNlTm90QXJyYXkgPSBt
X2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhiYXNlR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xv
YmFsRGF0YSgpLT5qc0FycmF5VlB0cikpOworCisgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRv
UHRyKHByb3BlcnR5R1BSLCBjbGVhbkluZGV4R1BSKTsKKworICAgICAgICBKSVRDb21waWxlcjo6
SnVtcCBvdXRPZkJvdW5kcyA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9y
RXF1YWwsIGNsZWFuSW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpT
QXJyYXk6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSk7CisKKyAgICAgICAgbV9qaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VHUFIsIGNsZWFuSW5kZXhHUFIsIE1hY3Jv
QXNzZW1ibGVyOjpTY2FsZVB0ciwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFnZSwgbV92ZWN0
b3JbMF0pKSwgc3RvcmFnZUdQUik7CisKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbG9hZEZh
aWxlZCA9IG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHN0b3JhZ2VH
UFIpOworCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CisK
KyAgICAgICAgYmFzZU5vdENlbGwubGluaygmbV9qaXQpOworICAgICAgICBwcm9wZXJ0eU5vdElu
dC5saW5rKCZtX2ppdCk7CisgICAgICAgIGJhc2VOb3RBcnJheS5saW5rKCZtX2ppdCk7CisgICAg
ICAgIG91dE9mQm91bmRzLmxpbmsoJm1faml0KTsKKyAgICAgICAgbG9hZEZhaWxlZC5saW5rKCZt
X2ppdCk7CisKKyAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMoc3RvcmFnZUdQUiwgYmFz
ZUdQUiwgcHJvcGVydHlHUFIpOworICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYmFzZUdQUiwg
cHJvcGVydHlHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrKG9wZXJhdGlvbkdldEJ5VmFsKTsKKyAgICAgICAgbV9qaXQubW92ZShHUFJJbmZv
OjpyZXR1cm5WYWx1ZUdQUiwgc3RvcmFnZUdQUik7CisgICAgICAgIHNpbGVudEZpbGxBbGxSZWdp
c3RlcnMoc3RvcmFnZUdQUik7CisKKyAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CisKKyAgICAg
ICAganNWYWx1ZVJlc3VsdChzdG9yYWdlR1BSLCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIApAQCAtNTI2LDExICs1NjMsMTQgQEAgdm9pZCBOb25TcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShTcGVjdWxhdAogICAgIGNhc2UgR2V0QnlJZDogewogICAgICAgICBKU1ZhbHVl
T3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKTsKICAgICAgICAgR1BSUmVnIGJhc2VHUFIg
PSBiYXNlLmdwcigpOwotICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMsIGJhc2UpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVz
dWx0LmdwcigpOwogCi0gICAgICAgIEdQUlJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlJZCwgcmVzdWx0LmdwcigpLCBiYXNlR1BSLCBpZGVu
dGlmaWVyKG5vZGUuaWRlbnRpZmllck51bWJlcigpKSk7Ci0gICAgICAgIGpzVmFsdWVSZXN1bHQo
cmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
IG5vdENlbGwgPSBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBi
YXNlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworCisgICAgICAgIGNhY2hlZEdldEJ5
SWQoYmFzZUdQUiwgcmVzdWx0R1BSLCBub2RlLmlkZW50aWZpZXJOdW1iZXIoKSwgbm90Q2VsbCk7
CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gODk2MTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODU0LDMyICs4NTQsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUp
CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEpOwog
ICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIGJhc2UpOwogCi0gICAgICAgIEdQUlJl
ZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKIAotICAgICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRv
Q29tcGFyZTsKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgc3RydWN0dXJlQ2hlY2sgPSBtX2pp
dC5icmFuY2hQdHJXaXRoUGF0Y2goSklUQ29tcGlsZXI6OkVxdWFsLCBKSVRDb21waWxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9Db21w
YXJlLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPigt
MSkpKTsKLQotICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIsIGJhc2VH
UFIpOwotICAgICAgICBtX2ppdC5tb3ZlKGJhc2VHUFIsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7
Ci0gICAgICAgIG1faml0Lm1vdmUoSklUQ29tcGlsZXI6OkltbVB0cihpZGVudGlmaWVyKG5vZGUu
aWRlbnRpZmllck51bWJlcigpKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7Ci0gICAgICAgIG1f
aml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGZ1bmN0aW9uQ2FsbCA9IGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsKLSAgICAgICAgbV9q
aXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgcmVzdWx0R1BSKTsKLSAgICAgICAgc2ls
ZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwotCi0gICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIGhhbmRsZWRCeUMgPSBtX2ppdC5qdW1wKCk7Ci0gICAgICAgIHN0cnVjdHVyZUNoZWNrLmxp
bmsoJm1faml0KTsKLQotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNz
KGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0R1BS
KTsKLSAgICAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbENvbXBhY3QgbG9hZFdpdGhQYXRjaCA9
IG1faml0LmxvYWRQdHJXaXRoQ29tcGFjdEFkZHJlc3NPZmZzZXRQYXRjaChKSVRDb21waWxlcjo6
QWRkcmVzcyhyZXN1bHRHUFIsIDApLCByZXN1bHRHUFIpOwotCi0gICAgICAgIGludHB0cl90IGNo
ZWNrVG9DYWxsID0gbV9qaXQuZGlmZmVyZW5jZUJldHdlZW4oc3RydWN0dXJlVG9Db21wYXJlLCBm
dW5jdGlvbkNhbGwpOwotICAgICAgICBpbnRwdHJfdCBjYWxsVG9Mb2FkID0gbV9qaXQuZGlmZmVy
ZW5jZUJldHdlZW4oZnVuY3Rpb25DYWxsLCBsb2FkV2l0aFBhdGNoKTsKLQotICAgICAgICBoYW5k
bGVkQnlDLmxpbmsoJm1faml0KTsKLQotICAgICAgICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2Vzcyhm
dW5jdGlvbkNhbGwsIGNoZWNrVG9DYWxsLCBjYWxsVG9Mb2FkKTsKKyAgICAgICAgY2FjaGVkR2V0
QnlJZChiYXNlLmdwcigpLCByZXN1bHRHUFIsIG5vZGUuaWRlbnRpZmllck51bWJlcigpKTsKIAog
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOwogICAgICAg
ICBicmVhazsK
</data>

          </attachment>
      

    </bug>

</bugzilla>