<?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>91690</bug_id>
          
          <creation_ts>2012-07-18 16:17:04 -0700</creation_ts>
          <short_desc>JSC: bug fixes and enhancements for OfflineASM annotation system</short_desc>
          <delta_ts>2012-07-19 13:53:38 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>672927</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-07-18 16:17:04 -0700</bug_when>
    <thetext>The previously added OfflineASM annotation infrastructure does not support annotations for macros or at lines which do not have instructions at all.  Under some circumstances, adding such annotations will actually break the build.  This change set fills out the implementation of the annotation infrastructure, and it now allows annotations to be added anywhere.  It also adds more pretty printing to make the annotations more readable in the output comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672945</commentid>
    <comment_count>1</comment_count>
      <attachid>153132</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-07-18 16:29:15 -0700</bug_when>
    <thetext>Created attachment 153132
Fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673018</commentid>
    <comment_count>2</comment_count>
      <attachid>153132</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-18 17:28:14 -0700</bug_when>
    <thetext>Comment on attachment 153132
Fix.

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

&gt; Source/JavaScriptCore/offlineasm/parser.rb:94
&gt; +            annotationType = whitespaceFound ? &quot;@L&quot; : &quot;@G&quot; # local or global annotation

It is customary to use symbols (:thing) rather than strings (&quot;thing&quot;) for enumerating in ruby.

&gt; Source/JavaScriptCore/offlineasm/parser.rb:99
&gt; -                result &lt;&lt; Token.new(CodeOrigin.new(fileName, lineNumber), &quot;@&quot; + annotation)
&gt; +                result &lt;&lt; Token.new(CodeOrigin.new(fileName, lineNumber),
&gt; +                                    &quot;#{annotationType}#{annotation}&quot;)

I don&apos;t like the idea of using strings with magic as the contents of a token.  Tokens are supposed to contain the string that was parsed.  We already have a slightly ugly hack for numbers (we convert the string to a number then back to a decimal string) but I don&apos;t want that to spread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673045</commentid>
    <comment_count>3</comment_count>
      <attachid>153151</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-07-18 18:16:09 -0700</bug_when>
    <thetext>Created attachment 153151
rev 1: addressed Filip&apos;s concern. No longer play tricks with string encoding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673272</commentid>
    <comment_count>4</comment_count>
      <attachid>153203</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-07-19 01:00:56 -0700</bug_when>
    <thetext>Created attachment 153203
rev 2: removed an unneeded OOPS comment in the last patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673888</commentid>
    <comment_count>5</comment_count>
      <attachid>153203</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-19 13:53:33 -0700</bug_when>
    <thetext>Comment on attachment 153203
rev 2: removed an unneeded OOPS comment in the last patch. 

Clearing flags on attachment: 153203

Committed r123147: &lt;http://trac.webkit.org/changeset/123147&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673889</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-19 13:53:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153132</attachid>
            <date>2012-07-18 16:29:15 -0700</date>
            <delta_ts>2012-07-18 18:16:09 -0700</delta_ts>
            <desc>Fix.</desc>
            <filename>bug-91690.patch</filename>
            <type>text/plain</type>
            <size>19001</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIzMDM5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDEyLTA3LTE4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBC
dWcgZml4ZXMgYW5kIGVuaGFuY2VtZW50cyBmb3IgT2ZmbGluZUFTTSBhbm5vdGF0aW9uIHN5c3Rl
bS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxNjkw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRp
b25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFs
ZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisK
KyAgICAgICAgKiBvZmZsaW5lYXNtL2FybXY3LnJiOiBhZGRlZCBkZWZhdWx0IGhhbmRsaW5nIG9m
IEluc3RydWN0aW9uIGxvd2VyKCkuCisgICAgICAgICogb2ZmbGluZWFzbS9hc20ucmI6IGFkZGVk
IG1vcmUgc3VwcG9ydCBmb3IgYW5ub3RhdGlvbnMgYW5kIG1vcmUgcHJldHR5IHByaW50aW5nLgor
ICAgICAgICAqIG9mZmxpbmVhc20vYXN0LnJiOiBhZGRlZCBtb3JlIHN1cHBvcnQgZm9yIGFubm90
YXRpb25zLgorICAgICAgICAqIG9mZmxpbmVhc20vY29uZmlnLnJiOiBhZGRlZCAkcHJlZmVycmVk
Q29tbWVudFN0YXJ0Q29sdW1uLCBzaW1wbGlmaWVkICRlbmFibGVJbnN0ckFubm90YXRpb25zLgor
ICAgICAgICAqIG9mZmxpbmVhc20vcGFyc2VyLnJiOiBhZGRlZCBtb3JlIHN1cHBvcnQgZm9yIGFu
bm90YXRpb25zLgorICAgICAgICAqIG9mZmxpbmVhc20vdHJhbnNmb3JtLnJiOiBhZGRlZCBtb3Jl
IHN1cHBvcnQgZm9yIGFubm90YXRpb25zLgorICAgICAgICAqIG9mZmxpbmVhc20veDg2LnJiOiBh
ZGRlZCBkZWZhdWx0IGhhbmRsaW5nIG9mIEluc3RydWN0aW9uIGxvd2VyKCkuCisKIDIwMTItMDct
MTggIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcgMzItYml0
IFB1dEJ5SWQgdHJhbnNpdGlvbiBzdHViIHN0b3JhZ2UgcmVhbGxvY2F0aW9uIGNhc2UgY29waWVz
IHRoZSBmaXJzdCBwb2ludGVyIG9mIGVhY2ggSlNWYWx1ZSBpbnN0ZWFkIG9mIHRoZSB3aG9sZSBK
U1ZhbHVlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgko
cmV2aXNpb24gMTIzMDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJt
djcucmIJKHdvcmtpbmcgY29weSkKQEAgLTc0Myw4ICs3NDMsOCBAQCBlbmQKIAogY2xhc3MgSW5z
dHJ1Y3Rpb24KICAgICBkZWYgbG93ZXJBUk12NwotICAgICAgICAkYXNtLmNvZGVPcmlnaW4gY29k
ZU9yaWdpblN0cmluZwotICAgICAgICAkYXNtLmFubm90YXRpb24gYW5ub3RhdGlvbgorICAgICAg
ICAkYXNtLmNvZGVPcmlnaW4gY29kZU9yaWdpblN0cmluZyBpZiAkZW5hYmxlQ29kZU9yaWdpbkNv
bW1lbnRzCisgICAgICAgICRhc20uYW5ub3RhdGlvbiBhbm5vdGF0aW9uIGlmICRlbmFibGVJbnN0
ckFubm90YXRpb25zCiAKICAgICAgICAgY2FzZSBvcGNvZGUKICAgICAgICAgd2hlbiAiYWRkaSIs
ICJhZGRwIiwgImFkZGlzIgpAQCAtMTAxMiw3ICsxMDEyLDcgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24K
ICAgICAgICAgICAgIHJhaXNlICJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIHRvIHNtdWxsIGlu
ICN7c2VsZi5pbnNwZWN0fSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3Mgb3BlcmFuZHMu
bGVuZ3RoID09IDQKICAgICAgICAgICAgICRhc20ucHV0cyAic211bGwgI3tvcGVyYW5kc1syXS5h
cm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzNdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMF0u
YXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9IgogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICByYWlzZSAiVW5oYW5kbGVkIG9wY29kZSAje29wY29kZX0gYXQgI3tjb2Rl
T3JpZ2luU3RyaW5nfSIKKyAgICAgICAgICAgIGxvd2VyRGVmYXVsdAogICAgICAgICBlbmQKICAg
ICBlbmQKIGVuZApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJi
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgko
cmV2aXNpb24gMTIzMDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNt
LnJiCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw4IEBAIGNsYXNzIEFzc2VtYmxlcgogICAg
ICAgICBAY29kZU9yaWdpbiA9IG5pbAogICAgICAgICBAbnVtTG9jYWxMYWJlbHMgPSAwCiAgICAg
ICAgIEBudW1HbG9iYWxMYWJlbHMgPSAwCisKKyAgICAgICAgQG5ld2xpbmVTcGFjZXJTdGF0ZSA9
IDpub25lCiAgICAgZW5kCiAgICAgCiAgICAgZGVmIGVudGVyQXNtCkBAIC02NiwzMyArNjgsNjAg
QEAgY2xhc3MgQXNzZW1ibGVyCiAgICAgCiAgICAgIyBDb25jYXRlbmF0ZXMgYWxsIHRoZSB2YXJp
b3VzIGNvbXBvbmVudHMgb2YgdGhlIGNvbW1lbnQgdG8gZHVtcC4KICAgICBkZWYgbGFzdENvbW1l
bnQKKyAgICAgICAgc2VwYXJhdG9yID0gIiAiCiAgICAgICAgIHJlc3VsdCA9ICIiCi0gICAgICAg
IHJlc3VsdCA9ICIgI3tAY29tbWVudH0gLiIgaWYgQGNvbW1lbnQKLSAgICAgICAgcmVzdWx0ICs9
ICIgI3tAYW5ub3RhdGlvbn0gLiIgaWYgQGFubm90YXRpb24gYW5kICRlbmFibGVUcmFpbGluZ0lu
c3RyQW5ub3RhdGlvbnMKLSAgICAgICAgcmVzdWx0ICs9ICIgI3tAaW50ZXJuYWxDb21tZW50fSAu
IiBpZiBAaW50ZXJuYWxDb21tZW50Ci0gICAgICAgIHJlc3VsdCArPSAiICN7QGNvZGVPcmlnaW59
IC4iIGlmIEBjb2RlT3JpZ2luIGFuZCAkZW5hYmxlQ29kZU9yaWdpbkNvbW1lbnRzCisgICAgICAg
IHJlc3VsdCA9ICIje0Bjb21tZW50fSIgaWYgQGNvbW1lbnQKKyAgICAgICAgaWYgQGFubm90YXRp
b24gYW5kICRlbmFibGVJbnN0ckFubm90YXRpb25zCisgICAgICAgICAgICByZXN1bHQgKz0gc2Vw
YXJhdG9yIGlmIHJlc3VsdCAhPSAiIgorICAgICAgICAgICAgcmVzdWx0ICs9ICIje0Bhbm5vdGF0
aW9ufSIKKyAgICAgICAgZW5kCisgICAgICAgIGlmIEBpbnRlcm5hbENvbW1lbnQKKyAgICAgICAg
ICAgIHJlc3VsdCArPSBzZXBhcmF0b3IgaWYgcmVzdWx0ICE9ICIiCisgICAgICAgICAgICByZXN1
bHQgKz0gIiN7QGludGVybmFsQ29tbWVudH0iCisgICAgICAgIGVuZAorICAgICAgICBpZiBAY29k
ZU9yaWdpbiBhbmQgJGVuYWJsZUNvZGVPcmlnaW5Db21tZW50cworICAgICAgICAgICAgcmVzdWx0
ICs9IHNlcGFyYXRvciBpZiByZXN1bHQgIT0gIiIKKyAgICAgICAgICAgIHJlc3VsdCArPSAiI3tA
Y29kZU9yaWdpbn0iCisgICAgICAgIGVuZAogICAgICAgICBpZiByZXN1bHQgIT0gIiIKLSAgICAg
ICAgICAgIHJlc3VsdCA9ICIgIC8vIiArIHJlc3VsdAorICAgICAgICAgICAgcmVzdWx0ID0gIi8v
ICIgKyByZXN1bHQKICAgICAgICAgZW5kCiAKICAgICAgICAgIyBSZXNldCBhbGwgdGhlIGNvbXBv
bmVudHMgdGhhdCB3ZSd2ZSBqdXN0IHNlbnQgdG8gYmUgZHVtcGVkLgogICAgICAgICBAY29tbWVu
dFN0YXRlID0gOm5vbmUKICAgICAgICAgQGNvbW1lbnQgPSBuaWwKLSAgICAgICAgQGludGVybmFs
Q29tbWVudCA9IG5pbAogICAgICAgICBAYW5ub3RhdGlvbiA9IG5pbAogICAgICAgICBAY29kZU9y
aWdpbiA9IG5pbAorICAgICAgICBAaW50ZXJuYWxDb21tZW50ID0gbmlsCiAgICAgICAgIHJlc3Vs
dAogICAgIGVuZAogICAgIAotICAgICMgRHVtcHMgdGhlIGN1cnJlbnQgaW5zdHJ1Y3Rpb24gYW5u
b3RhdGlvbiBpbiBpbnRlcmxhY2VkIG1vZGUgaWYgYXBwcm9wcmlhdGUuCi0gICAgZGVmIHB1dElu
dGVybGFjZWRBbm5vdGF0aW9uKCkKKyAgICBkZWYgZm9ybWF0RHVtcChkdW1wU3RyLCBjb21tZW50
LCBjb21tZW50Q29sdW1ucz0kcHJlZmVycmVkQ29tbWVudFN0YXJ0Q29sdW1uKQorICAgICAgICBp
ZiBjb21tZW50Lmxlbmd0aCA+IDAKKyAgICAgICAgICAgICIlLSN7Y29tbWVudENvbHVtbnN9cyAl
cyIgJSBbZHVtcFN0ciwgY29tbWVudF0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZHVtcFN0
cgorICAgICAgICBlbmQKKyAgICBlbmQKKworICAgICMgcHJpdmF0ZSBtZXRob2QgZm9yIGludGVy
bmFsIHVzZSBvbmx5LgorICAgIGRlZiBwdXRBbm5vdGF0aW9uKHRleHQpCiAgICAgICAgIHJhaXNl
IHVubGVzcyBAc3RhdGUgPT0gOmFzbQotICAgICAgICBpZiAkZW5hYmxlSW50ZXJsYWNlZEluc3Ry
QW5ub3RhdGlvbnMKLSAgICAgICAgICAgIEBvdXRwLnB1dHMoIiAgICAvLyAje0Bhbm5vdGF0aW9u
fSIpIGlmIEBhbm5vdGF0aW9uCisgICAgICAgIGlmICRlbmFibGVJbnN0ckFubm90YXRpb25zCisg
ICAgICAgICAgICBAb3V0cC5wdXRzIHRleHQKICAgICAgICAgICAgIEBhbm5vdGF0aW9uID0gbmls
CiAgICAgICAgIGVuZAogICAgIGVuZAogCisgICAgZGVmIHB1dExvY2FsQW5ub3RhdGlvbigpCisg
ICAgICAgIHB1dEFubm90YXRpb24gIiAgICAvLyAje0Bhbm5vdGF0aW9ufSIgaWYgQGFubm90YXRp
b24KKyAgICBlbmQKKworICAgIGRlZiBwdXRHbG9iYWxBbm5vdGF0aW9uKCkKKyAgICAgICAgcHV0
c05ld2xpbmVTcGFjZXJJZkFwcHJvcHJpYXRlKDphbm5vdGF0aW9uKQorICAgICAgICBwdXRBbm5v
dGF0aW9uICIvLyAje0Bhbm5vdGF0aW9ufSIgaWYgQGFubm90YXRpb24KKyAgICBlbmQKKwogICAg
IGRlZiBwdXRzTGFzdENvbW1lbnQKICAgICAgICAgY29tbWVudCA9IGxhc3RDb21tZW50CiAgICAg
ICAgIHVubGVzcyBjb21tZW50LmVtcHR5PwpAQCAtMTAyLDggKzEzMSw3IEBAIGNsYXNzIEFzc2Vt
YmxlcgogICAgIAogICAgIGRlZiBwdXRzKCpsaW5lKQogICAgICAgICByYWlzZSB1bmxlc3MgQHN0
YXRlID09IDphc20KLSAgICAgICAgcHV0SW50ZXJsYWNlZEFubm90YXRpb24KLSAgICAgICAgQG91
dHAucHV0cygiICAgIFwiXFx0IiArIGxpbmUuam9pbignJykgKyAiXFxuXCIje2xhc3RDb21tZW50
fSIpCisgICAgICAgIEBvdXRwLnB1dHMoZm9ybWF0RHVtcCgiICAgIFwiXFx0IiArIGxpbmUuam9p
bignJykgKyAiXFxuXCIiLCBsYXN0Q29tbWVudCkpCiAgICAgZW5kCiAgICAgCiAgICAgZGVmIHBy
aW50KGxpbmUpCkBAIC0xMTEsMTIgKzEzOSwyMCBAQCBjbGFzcyBBc3NlbWJsZXIKICAgICAgICAg
QG91dHAucHJpbnQoIlwiIiArIGxpbmUgKyAiXCIiKQogICAgIGVuZAogICAgIAorICAgIGRlZiBw
dXRzTmV3bGluZVNwYWNlcklmQXBwcm9wcmlhdGUoc3RhdGUpCisgICAgICAgIGlmIEBuZXdsaW5l
U3BhY2VyU3RhdGUgIT0gc3RhdGUKKyAgICAgICAgICAgIEBvdXRwLnB1dHMoIlxuIikKKyAgICAg
ICAgICAgIEBuZXdsaW5lU3BhY2VyU3RhdGUgPSBzdGF0ZQorICAgICAgICBlbmQKKyAgICBlbmQK
KwogICAgIGRlZiBwdXRzTGFiZWwobGFiZWxOYW1lKQogICAgICAgICByYWlzZSB1bmxlc3MgQHN0
YXRlID09IDphc20KICAgICAgICAgQG51bUdsb2JhbExhYmVscyArPSAxCi0gICAgICAgIEBvdXRw
LnB1dHMoIlxuIikKKyAgICAgICAgcHV0c05ld2xpbmVTcGFjZXJJZkFwcHJvcHJpYXRlKDpnbG9i
YWwpCiAgICAgICAgIEBpbnRlcm5hbENvbW1lbnQgPSAkZW5hYmxlTGFiZWxDb3VudENvbW1lbnRz
ID8gIkdsb2JhbCBMYWJlbCAje0BudW1HbG9iYWxMYWJlbHN9IiA6IG5pbAotICAgICAgICBAb3V0
cC5wdXRzKCJPRkZMSU5FX0FTTV9HTE9CQUxfTEFCRUwoI3tsYWJlbE5hbWV9KSN7bGFzdENvbW1l
bnR9IikKKyAgICAgICAgQG91dHAucHV0cyhmb3JtYXREdW1wKCJPRkZMSU5FX0FTTV9HTE9CQUxf
TEFCRUwoI3tsYWJlbE5hbWV9KSIsIGxhc3RDb21tZW50KSkKKyAgICAgICAgQG5ld2xpbmVTcGFj
ZXJTdGF0ZSA9IDpub25lICMgQWZ0ZXIgYSBnbG9iYWwgbGFiZWwsIHdlIGNhbiB1c2UgYW5vdGhl
ciBzcGFjZXIuCiAgICAgZW5kCiAgICAgCiAgICAgZGVmIHB1dHNMb2NhbExhYmVsKGxhYmVsTmFt
ZSkKQEAgLTEyNCw3ICsxNjAsNyBAQCBjbGFzcyBBc3NlbWJsZXIKICAgICAgICAgQG51bUxvY2Fs
TGFiZWxzICs9IDEKICAgICAgICAgQG91dHAucHV0cygiXG4iKQogICAgICAgICBAaW50ZXJuYWxD
b21tZW50ID0gJGVuYWJsZUxhYmVsQ291bnRDb21tZW50cyA/ICJMb2NhbCBMYWJlbCAje0BudW1M
b2NhbExhYmVsc30iIDogbmlsCi0gICAgICAgIEBvdXRwLnB1dHMoIk9GRkxJTkVfQVNNX0xPQ0FM
X0xBQkVMKCN7bGFiZWxOYW1lfSkje2xhc3RDb21tZW50fSIpCisgICAgICAgIEBvdXRwLnB1dHMo
Zm9ybWF0RHVtcCgiICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTCgje2xhYmVsTmFtZX0pIiwgbGFz
dENvbW1lbnQpKQogICAgIGVuZAogICAgIAogICAgIGRlZiBzZWxmLmxhYmVsUmVmZXJlbmNlKGxh
YmVsTmFtZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIJKHJl
dmlzaW9uIDEyMzAyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5y
Ygkod29ya2luZyBjb3B5KQpAQCAtODA2LDYgKzgwNiwxNyBAQCBjbGFzcyBJbnN0cnVjdGlvbiA8
IE5vZGUKICAgICBkZWYgZHVtcAogICAgICAgICAiXHQiICsgb3Bjb2RlLnRvX3MgKyAiICIgKyBv
cGVyYW5kcy5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIiwgIikKICAgICBlbmQKKworICAgIGRl
ZiBsb3dlckRlZmF1bHQKKyAgICAgICAgY2FzZSBvcGNvZGUKKyAgICAgICAgd2hlbiAibG9jYWxB
bm5vdGF0aW9uIgorICAgICAgICAgICAgJGFzbS5wdXRMb2NhbEFubm90YXRpb24KKyAgICAgICAg
d2hlbiAiZ2xvYmFsQW5ub3RhdGlvbiIKKyAgICAgICAgICAgICRhc20ucHV0R2xvYmFsQW5ub3Rh
dGlvbgorICAgICAgICBlbHNlCisgICAgICAgICAgICByYWlzZSAiVW5oYW5kbGVkIG9wY29kZSAj
e29wY29kZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICAgICAgZW5kCisgICAgZW5kCiBl
bmQKIAogY2xhc3MgRXJyb3IgPCBOb0NoaWxkcmVuCkBAIC0xMTgwLDcgKzExOTEsNyBAQCBlbmQK
IAogY2xhc3MgTWFjcm8gPCBOb2RlCiAgICAgYXR0cl9yZWFkZXIgOm5hbWUsIDp2YXJpYWJsZXMs
IDpib2R5Ci0gICAgCisKICAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lLCB2YXJp
YWJsZXMsIGJvZHkpCiAgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCiAgICAgICAgIEBuYW1lID0g
bmFtZQpAQCAtMTIwMiwxNCArMTIxMywxNSBAQCBjbGFzcyBNYWNybyA8IE5vZGUKIGVuZAogCiBj
bGFzcyBNYWNyb0NhbGwgPCBOb2RlCi0gICAgYXR0cl9yZWFkZXIgOm5hbWUsIDpvcGVyYW5kcwor
ICAgIGF0dHJfcmVhZGVyIDpuYW1lLCA6b3BlcmFuZHMsIDphbm5vdGF0aW9uCiAgICAgCi0gICAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMsIGFubm90YXRpb24pCiAgICAgICAgIHN1
cGVyKGNvZGVPcmlnaW4pCiAgICAgICAgIEBuYW1lID0gbmFtZQogICAgICAgICBAb3BlcmFuZHMg
PSBvcGVyYW5kcwogICAgICAgICByYWlzZSB1bmxlc3MgQG9wZXJhbmRzCiAgICAgICAgIEBvcGVy
YW5kcy5lYWNoe3x2fCByYWlzZSB1bmxlc3Mgdn0KKyAgICAgICAgQGFubm90YXRpb24gPSBhbm5v
dGF0aW9uCiAgICAgZW5kCiAgICAgCiAgICAgZGVmIGNoaWxkcmVuCkBAIC0xMjE3LDcgKzEyMjks
NyBAQCBjbGFzcyBNYWNyb0NhbGwgPCBOb2RlCiAgICAgZW5kCiAgICAgCiAgICAgZGVmIG1hcENo
aWxkcmVuKCZwcm9jKQotICAgICAgICBNYWNyb0NhbGwubmV3KGNvZGVPcmlnaW4sIEBuYW1lLCBA
b3BlcmFuZHMubWFwKCZwcm9jKSkKKyAgICAgICAgTWFjcm9DYWxsLm5ldyhjb2RlT3JpZ2luLCBA
bmFtZSwgQG9wZXJhbmRzLm1hcCgmcHJvYyksIEBhbm5vdGF0aW9uKQogICAgIGVuZAogICAgIAog
ICAgIGRlZiBkdW1wCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jb25m
aWcucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY29u
ZmlnLnJiCShyZXZpc2lvbiAxMjMwMjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9jb25maWcucmIJKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIxLDggQEAKICMgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgogIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKKyRwcmVmZXJyZWRD
b21tZW50U3RhcnRDb2x1bW4gPSA3MAorCiAKICMgVHVybnMgb24gZHVtcGluZyBvZiB0aGUgY291
bnQgb2YgbGFiZWxzLgogIyBGb3IgZXhhbXBsZSwgIHRoZSBvdXRwdXQgd2lsbCBsb29rIGxpa2Ug
dGhpczoKQEAgLTQ1LDMyICs0NywxMSBAQCAkZW5hYmxlQ29kZU9yaWdpbkNvbW1lbnRzID0gdHJ1
ZQogCiAjIFR1cm5zIG9uIHJlY29yZGluZyBhbmQgZHVtcGluZyBvZiBhbm5vdGF0aW9ucyBpbiB0
aGUgZ2VuZXJhdGVkIG91dHB1dCBmaWxlLgogIyBBbiBhbm5vdGF0aW9ucyBjYW4gYmUgc3BlY2lm
aWVkIGZvciBlYWNoIGluc3RydWN0aW9uIGluIHRoZSBzb3VyY2UgYXNtIGZpbGVzLgotIwotIyAk
ZW5hYmxlSW50ZXJsYWNlZEluc3RyQW5ub3RhdGlvbnMgd2lsbCBpbnRlcmxhY2UgdGhlIGFubm90
YXRpb24gYmV0d2VlbgotIyBpbnN0cnVjdGlvbnMuICBGb3IgZXhhbXBsZSwgdGhlIG91dHB1dCB3
aWxsIGxvb2sgbGlrZSB0aGlzOgorIyBGb3IgZXhhbXBsZSwgdGhlIG91dHB1dCB3aWxsIGxvb2sg
bGlrZSB0aGlzOgogIwogIyAgICAgLi4uCi0jICAgICAvLyBAIHQyPENvZGVCbG9jaz4gPSBjZnIu
Q29kZUJsb2NrCi0jICAgICJcdG1vdnEgLTgoJXIxMyksICVyY3hcbiIKLSMgICAgIC8vIEAgdDI8
c2l6ZV90PiA9IHQyPENvZGVCbG9jaz4ubV9udW1WYXJzCi0jICAgICJcdG1vdmwgNTIoJXJjeCks
ICVlY3hcbiIKKyMgICAgIlx0bW92cSAtOCglcjEzKSwgJXJjeFxuIiAgIC8vIHQyPENvZGVCbG9j
az4gPSBjZnIuQ29kZUJsb2NrCisjICAgICJcdG1vdmwgNTIoJXJjeCksICVlY3hcbiIgICAvLyB0
MjxzaXplX3Q+ID0gdDI8Q29kZUJsb2NrPi5tX251bVZhcnMKICMgICAgIC4uLgogIwotIyAkZW5h
YmxlVHJhaWxpbmdJbnN0ckFubm90YXRpb25zIHdpbGwgaW5zZXJ0IHRoZSBhbm5vdGF0aW9uIGlu
IHRoZSB0cmFpbGluZwotIyBjb21tZW50IGFmdGVyIHlvdXIgaW5zdHJ1Y3Rpb25zLiAgRm9yIGV4
YW1wbGUsIHRoZSBvdXRwdXQgd2lsbCBsb29rIGxpa2UgdGhpczoKLSMKLSMgICAgIC4uLgotIyAg
ICAiXHRtb3ZxIC04KCVyMTMpLCAlcmN4XG4iICAgLy8gQCB0MjxDb2RlQmxvY2s+ID0gY2ZyLkNv
ZGVCbG9jawotIyAgICAiXHRtb3ZsIDUyKCVyY3gpLCAlZWN4XG4iICAgLy8gQCB0MjxzaXplX3Q+
ID0gdDI8Q29kZUJsb2NrPi5tX251bVZhcnMKLSMgICAgIC4uLgotIwotIyBJZiBib3RoICRlbmFi
bGVJbnRlcmxhY2VkSW5zdHJBbm5vdGF0aW9ucyBhbmQgJGVuYWJsZVRyYWlsaW5nSW5zdHJBbm5v
dGF0aW9ucwotIyBhcmUgZW5hYmxlZCwgaW50ZXJsYWNlZCBhbm5vdGF0aW9ucyB3aWxsIHRha2Ug
cHJlY2VkZW5jZSwgYW5kIGFueSBhdmFpbGFibGUKLSMgYW5ub3RhdGlvbnMgd2lsbCBvbmx5IGJl
IGR1bXBlZCBpbiB0aGUgaW50ZXJsYWNlZCBmb3JtYXQuCi0jCi0kZW5hYmxlSW50ZXJsYWNlZElu
c3RyQW5ub3RhdGlvbnMgPSBmYWxzZQotJGVuYWJsZVRyYWlsaW5nSW5zdHJBbm5vdGF0aW9ucyA9
IGZhbHNlCi0KLQotIyBTYW5pdHkgY2hlY2sgZm9yIGFubm90YXRpb24gY29uZmlncy4KLSRlbmFi
bGVJbnN0ckFubm90YXRpb25zID0gKCRlbmFibGVJbnRlcmxhY2VkSW5zdHJBbm5vdGF0aW9ucyBv
ciAkZW5hYmxlVHJhaWxpbmdJbnN0ckFubm90YXRpb25zKQorJGVuYWJsZUluc3RyQW5ub3RhdGlv
bnMgPSBmYWxzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFyc2Vy
LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNl
ci5yYgkocmV2aXNpb24gMTIzMDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vcGFyc2VyLnJiCSh3b3JraW5nIGNvcHkpCkBAIC04MywxNyArODMsMjAgQEAgZGVmIGxleChz
dHIsIGZpbGVOYW1lKQogICAgIHJlc3VsdCA9IFtdCiAgICAgbGluZU51bWJlciA9IDEKICAgICBh
bm5vdGF0aW9uID0gbmlsCisgICAgd2hpdGVzcGFjZUZvdW5kID0gZmFsc2UKICAgICB3aGlsZSBu
b3Qgc3RyLmVtcHR5PwogICAgICAgICBjYXNlIHN0cgogICAgICAgICB3aGVuIC9cQVwjKFteXG5d
KikvCiAgICAgICAgICAgICAjIGNvbW1lbnQsIGlnbm9yZQotICAgICAgICB3aGVuIC9cQVwvXC8o
W15cbl0qKS8KKyAgICAgICAgd2hlbiAvXEFcL1wvXCA/KFteXG5dKikvCiAgICAgICAgICAgICAj
IGFubm90YXRpb24KICAgICAgICAgICAgIGFubm90YXRpb24gPSAkMQorICAgICAgICAgICAgYW5u
b3RhdGlvblR5cGUgPSB3aGl0ZXNwYWNlRm91bmQgPyAiQEwiIDogIkBHIiAjIGxvY2FsIG9yIGds
b2JhbCBhbm5vdGF0aW9uCiAgICAgICAgIHdoZW4gL1xBXG4vCiAgICAgICAgICAgICAjIFdlJ3Zl
IGZvdW5kIGEgJ1xuJy4gIEVtaXQgdGhlIGxhc3QgY29tbWVudCByZWNvcmRlZCBpZiBhcHByb3By
aWF0ZToKICAgICAgICAgICAgIGlmICRlbmFibGVJbnN0ckFubm90YXRpb25zIGFuZCBhbm5vdGF0
aW9uCi0gICAgICAgICAgICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhDb2RlT3JpZ2luLm5ldyhm
aWxlTmFtZSwgbGluZU51bWJlciksICJAIiArIGFubm90YXRpb24pCisgICAgICAgICAgICAgICAg
cmVzdWx0IDw8IFRva2VuLm5ldyhDb2RlT3JpZ2luLm5ldyhmaWxlTmFtZSwgbGluZU51bWJlciks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiI3thbm5vdGF0aW9uVHlwZX0j
e2Fubm90YXRpb259IikKICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uID0gbmlsCiAgICAgICAg
ICAgICBlbmQKICAgICAgICAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcoQ29kZU9yaWdpbi5uZXco
ZmlsZU5hbWUsIGxpbmVOdW1iZXIpLCAkJikKQEAgLTEwNiw2ICsxMDksOSBAQCBkZWYgbGV4KHN0
ciwgZmlsZU5hbWUpCiAgICAgICAgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KENvZGVPcmlnaW4u
bmV3KGZpbGVOYW1lLCBsaW5lTnVtYmVyKSwgJCYpCiAgICAgICAgIHdoZW4gL1xBKFsgXHRdKykv
CiAgICAgICAgICAgICAjIHdoaXRlc3BhY2UsIGlnbm9yZQorICAgICAgICAgICAgd2hpdGVzcGFj
ZUZvdW5kID0gdHJ1ZQorICAgICAgICAgICAgc3RyID0gJH4ucG9zdF9tYXRjaAorICAgICAgICAg
ICAgbmV4dAogICAgICAgICB3aGVuIC9cQTB4KFswLTlhLWZBLUZdKykvCiAgICAgICAgICAgICBy
ZXN1bHQgPDwgVG9rZW4ubmV3KENvZGVPcmlnaW4ubmV3KGZpbGVOYW1lLCBsaW5lTnVtYmVyKSwg
JCYuaGV4LnRvX3MpCiAgICAgICAgIHdoZW4gL1xBMChbMC03XSspLwpAQCAtMTE5LDYgKzEyNSw3
IEBAIGRlZiBsZXgoc3RyLCBmaWxlTmFtZSkKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmFp
c2UgIkxleGVyIGVycm9yIGF0ICN7Q29kZU9yaWdpbi5uZXcoZmlsZU5hbWUsIGxpbmVOdW1iZXIp
LnRvX3N9LCB1bmV4cGVjdGVkIHNlcXVlbmNlICN7c3RyWzAuLjIwXS5pbnNwZWN0fSIKICAgICAg
ICAgZW5kCisgICAgICAgIHdoaXRlc3BhY2VGb3VuZCA9IGZhbHNlCiAgICAgICAgIHN0ciA9ICR+
LnBvc3RfbWF0Y2gKICAgICBlbmQKICAgICByZXN1bHQKQEAgLTE3NSw2ICsxODIsNyBAQCBjbGFz
cyBQYXJzZXIKICAgICBkZWYgaW5pdGlhbGl6ZShkYXRhLCBmaWxlTmFtZSkKICAgICAgICAgQHRv
a2VucyA9IGxleChkYXRhLCBmaWxlTmFtZSkKICAgICAgICAgQGlkeCA9IDAKKyAgICAgICAgQGFu
bm90YXRpb24gPSBuaWwKICAgICBlbmQKICAgICAKICAgICBkZWYgcGFyc2VFcnJvcigqY29tbWVu
dCkKQEAgLTQ4Nyw2ICs0OTUsMjAgQEAgY2xhc3MgUGFyc2VyCiAgICAgICAgIGxvb3AgewogICAg
ICAgICAgICAgaWYgKEBpZHggPT0gQHRva2Vucy5sZW5ndGggYW5kIG5vdCBmaW5hbCkgb3IgKGZp
bmFsIGFuZCBAdG9rZW5zW0BpZHhdID1+IGZpbmFsKQogICAgICAgICAgICAgICAgIGJyZWFrCisg
ICAgICAgICAgICBlbHNpZiBpc0Fubm90YXRpb24gQHRva2Vuc1tAaWR4XQorICAgICAgICAgICAg
ICAgICMgVGhpcyBpcyB0aGUgb25seSBwbGFjZSB3aGVyZSB3ZSBjYW4gZW5jb3VudGVyIGEgZ2xv
YmFsCisgICAgICAgICAgICAgICAgIyBhbm5vdGF0aW9uLCBhbmQgaGVuY2UgbmVlZCB0byBiZSBh
YmxlIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4KKyAgICAgICAgICAgICAgICAjIHRoZW0uCisgICAg
ICAgICAgICAgICAgIyBnbG9iYWxBbm5vdGF0aW9ucyBhcmUgdGhlIG9uZXMgdGhhdCBzdGFydCBm
cm9tIGNvbHVtbiAwLiBBbGwKKyAgICAgICAgICAgICAgICAjIG90aGVycyBhcmUgY29uc2lkZXJl
ZCBsb2NhbEFubm90YXRpb25zLiAgVGhlIG9ubHkgcmVhc29uIHRvCisgICAgICAgICAgICAgICAg
IyBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZW0gaXMgc28gdGhhdCB3ZSBjYW4gZm9ybWF0IHRoZSBv
dXRwdXQKKyAgICAgICAgICAgICAgICAjIG5pY2VseSBhcyBvbmUgd291bGQgZXhwZWN0LgorICAg
ICAgICAgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAg
ICAgICAgICAgICByZXN1bHQgPSAvXEFcQFtMR10vLm1hdGNoKEB0b2tlbnNbQGlkeF0uc3RyaW5n
KQorICAgICAgICAgICAgICAgIGFubm90YXRpb25PcGNvZGUgPSAoU3RyaW5nKHJlc3VsdCkgPT0g
IkBHIikgPyAiZ2xvYmFsQW5ub3RhdGlvbiIgOiAibG9jYWxBbm5vdGF0aW9uIgorICAgICAgICAg
ICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIGFubm90YXRpb25PcGNv
ZGUsIFtdLCAkfi5wb3N0X21hdGNoKQorICAgICAgICAgICAgICAgIEBhbm5vdGF0aW9uID0gbmls
CisgICAgICAgICAgICAgICAgQGlkeCArPSAyICMgQ29uc3VtZSB0aGUgbmV3bGluZSBhcyB3ZWxs
LgogICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCiAgICAgICAgICAgICAg
ICAgIyBpZ25vcmUKICAgICAgICAgICAgICAgICBAaWR4ICs9IDEKQEAgLTU0NywyMSArNTY5LDIz
IEBAIGNsYXNzIFBhcnNlcgogICAgICAgICAgICAgICAgIEBpZHggKz0gMQogICAgICAgICAgICAg
ICAgIGlmIChub3QgZmluYWwgYW5kIEBpZHggPT0gQHRva2Vucy5zaXplKSBvciAoZmluYWwgYW5k
IEB0b2tlbnNbQGlkeF0gPX4gZmluYWwpCiAgICAgICAgICAgICAgICAgICAgICMgWmVybyBvcGVy
YW5kIGluc3RydWN0aW9uLCBhbmQgaXQncyB0aGUgbGFzdCBvbmUuCi0gICAgICAgICAgICAgICAg
ICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtdKQorICAgICAg
ICAgICAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBb
XSwgQGFubm90YXRpb24pCisgICAgICAgICAgICAgICAgICAgIEBhbm5vdGF0aW9uID0gbmlsCiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgZWxzaWYgaXNBbm5vdGF0
aW9uIEB0b2tlbnNbQGlkeF0KLSAgICAgICAgICAgICAgICAgICAgYW5ub3RhdGlvbiA9IEB0b2tl
bnNbQGlkeF0uc3RyaW5nCi0gICAgICAgICAgICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24u
bmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtdLCBhbm5vdGF0aW9uKQorICAgICAgICAgICAgICAgICAg
ICAvXEFcQFtMR10vLm1hdGNoKEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgICAgICAgICAg
ICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBbXSwgJH4ucG9z
dF9tYXRjaCkKKyAgICAgICAgICAgICAgICAgICAgQGFubm90YXRpb24gPSBuaWwKICAgICAgICAg
ICAgICAgICAgICAgQGlkeCArPSAyICMgQ29uc3VtZSB0aGUgbmV3bGluZSBhcyB3ZWxsLgogICAg
ICAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgogICAgICAgICAgICAgICAg
ICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgbGlz
dCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgW10pCisgICAgICAgICAgICAg
ICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtdLCBAYW5u
b3RhdGlvbikKKyAgICAgICAgICAgICAgICAgICAgQGFubm90YXRpb24gPSBuaWwKICAgICAgICAg
ICAgICAgICAgICAgQGlkeCArPSAxCiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgICAgICAjIEl0J3MgZGVmaW5pdGVseSBhbiBpbnN0cnVjdGlvbiwgYW5kIGl0IGhhcyBhdCBs
ZWFzdCBvbmUgb3BlcmFuZC4KICAgICAgICAgICAgICAgICAgICAgb3BlcmFuZHMgPSBbXQogICAg
ICAgICAgICAgICAgICAgICBlbmRPZlNlcXVlbmNlID0gZmFsc2UKLSAgICAgICAgICAgICAgICAg
ICAgYW5ub3RhdGlvbiA9IG5pbAogICAgICAgICAgICAgICAgICAgICBsb29wIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIG9wZXJhbmRzIDw8IHBhcnNlT3BlcmFuZCgid2hpbGUgaW5zaWRlIG9m
IGluc3RydWN0aW9uICN7bmFtZX0iKQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vdCBm
aW5hbCBhbmQgQGlkeCA9PSBAdG9rZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4
XSA9fiBmaW5hbCkKQEAgLTU3Miw3ICs1OTYsOCBAQCBjbGFzcyBQYXJzZXIKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjIEhhcyBhbm90aGVyIG9wZXJhbmQuCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQGlkeCArPSAxCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNpZiBpc0Fu
bm90YXRpb24gQHRva2Vuc1tAaWR4XQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFubm90
YXRpb24gPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC9cQVxAW0xHXS8ubWF0Y2goQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQGFubm90YXRpb24gPSAkfi5wb3N0X21hdGNoCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQGlkeCArPSAyICMgQ29uc3VtZSB0aGUgbmV3bGluZSBhcyB3ZWxsLgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICBl
bHNpZiBAdG9rZW5zW0BpZHhdID09ICJcbiIKQEAgLTU4MywxMSArNjA4LDE0IEBAIGNsYXNzIFBh
cnNlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlRXJyb3IoIkV4cGVjdGVkIGEg
Y29tbWEsIG5ld2xpbmUsIG9yICN7ZmluYWx9IGFmdGVyICN7b3BlcmFuZHMubGFzdC5kdW1wfSIp
CiAgICAgICAgICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1l
LCBvcGVyYW5kcywgYW5ub3RhdGlvbikKKyAgICAgICAgICAgICAgICAgICAgbGlzdCA8PCBJbnN0
cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMsIEBhbm5vdGF0aW9uKQorICAg
ICAgICAgICAgICAgICAgICBAYW5ub3RhdGlvbiA9IG5pbAogICAgICAgICAgICAgICAgICAgICBp
ZiBlbmRPZlNlcXVlbmNlCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAg
ICAgICAgICAgICBlbmQKICAgICAgICAgICAgICAgICBlbmQKKworICAgICAgICAgICAgIyBDaGVj
ayBmb3IgcG90ZW50aWFsIG1hY3JvIGludm9jYXRpb246CiAgICAgICAgICAgICBlbHNpZiBpc0lk
ZW50aWZpZXIgQHRva2Vuc1tAaWR4XQogICAgICAgICAgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9r
ZW5zW0BpZHhdLmNvZGVPcmlnaW4KICAgICAgICAgICAgICAgICBuYW1lID0gQHRva2Vuc1tAaWR4
XS5zdHJpbmcKQEAgLTYyNCw3ICs2NTIsMTQgQEAgY2xhc3MgUGFyc2VyCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgIGVuZAotICAgICAgICAgICAgICAgICAgICBsaXN0IDw8IE1hY3JvQ2FsbC5uZXco
Y29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgICAgICAgICAgICAgICAgICMgQ2hlY2sg
aWYgdGhlcmUncyBhIHRyYWlsaW5nIGFubm90YXRpb24gYWZ0ZXIgdGhlIG1hY3JvIGludm9rZToK
KyAgICAgICAgICAgICAgICAgICAgaWYgaXNBbm5vdGF0aW9uIEB0b2tlbnNbQGlkeF0KKyAgICAg
ICAgICAgICAgICAgICAgICAgIC9cQVxAW0xHXS8ubWF0Y2goQHRva2Vuc1tAaWR4XS5zdHJpbmcp
CisgICAgICAgICAgICAgICAgICAgICAgICBAYW5ub3RhdGlvbiA9ICR+LnBvc3RfbWF0Y2gKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEBpZHggKz0gMiAjIENvbnN1bWUgdGhlIG5ld2xpbmUgYXMg
d2VsbC4KKyAgICAgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgICAgIGxpc3Qg
PDwgTWFjcm9DYWxsLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcywgQGFubm90YXRpb24p
CisgICAgICAgICAgICAgICAgICAgIEBhbm5vdGF0aW9uID0gbmlsCiAgICAgICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgICAgICBwYXJzZUVycm9yICJFeHBlY3RlZCBcIihcIiBhZnRl
ciAje25hbWV9IgogICAgICAgICAgICAgICAgIGVuZApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2aXNpb24gMTIzMDI1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCSh3b3JraW5nIGNvcHkp
CkBAIC0yMjksNiArMjI5LDkgQEAgY2xhc3MgU2VxdWVuY2UKICAgICAgICAgICAgICAgICAgICAg
ICAgIG1hcHBpbmdbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XV0gPSBpdGVtLm9w
ZXJhbmRzW2lkeF0KICAgICAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGlmIGl0ZW0uYW5ub3RhdGlvbgorICAgICAgICAgICAgICAgICAgICBu
ZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhpdGVtLmNvZGVPcmlnaW4sICJsb2NhbEFubm90YXRp
b24iLCBbXSwgaXRlbS5hbm5vdGF0aW9uKQorICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAg
ICAgICAgIG5ld0xpc3QgKz0gbXlNYWNyb3NbaXRlbS5uYW1lXS5ib2R5LnN1YnN0aXR1dGUobWFw
cGluZykuZGVtYWNyb2lmeShteU15TWFjcm9zKS5yZW5hbWVMYWJlbHMoaXRlbS5uYW1lKS5saXN0
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBpdGVtLmRlbWFj
cm9pZnkobXlNYWNyb3MpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94
ODYucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2
LnJiCShyZXZpc2lvbiAxMjMwMjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS94ODYucmIJKHdvcmtpbmcgY29weSkKQEAgLTYyNCw4ICs2MjQsOCBAQCBjbGFzcyBJbnN0cnVj
dGlvbgogICAgIGVuZAogICAgIAogICAgIGRlZiBsb3dlclg4NkNvbW1vbgotICAgICAgICAkYXNt
LmNvZGVPcmlnaW4gY29kZU9yaWdpblN0cmluZwotICAgICAgICAkYXNtLmFubm90YXRpb24gYW5u
b3RhdGlvbgorICAgICAgICAkYXNtLmNvZGVPcmlnaW4gY29kZU9yaWdpblN0cmluZyBpZiAkZW5h
YmxlQ29kZU9yaWdpbkNvbW1lbnRzCisgICAgICAgICRhc20uYW5ub3RhdGlvbiBhbm5vdGF0aW9u
IGlmICRlbmFibGVJbnN0ckFubm90YXRpb25zCiAKICAgICAgICAgY2FzZSBvcGNvZGUKICAgICAg
ICAgd2hlbiAiYWRkaSIKQEAgLTEwMjgsNyArMTAyOCw3IEBAIGNsYXNzIEluc3RydWN0aW9uCiAg
ICAgICAgIHdoZW4gImxlYXAiCiAgICAgICAgICAgICAkYXNtLnB1dHMgImxlYSN7eDg2U3VmZml4
KDpwdHIpfSAje29wZXJhbmRzWzBdLng4NkFkZHJlc3NPcGVyYW5kKDpwdHIpfSwgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKDpwdHIpfSIKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmFpc2Ug
IkJhZCBvcGNvZGU6ICN7b3Bjb2RlfSIKKyAgICAgICAgICAgIGxvd2VyRGVmYXVsdAogICAgICAg
ICBlbmQKICAgICBlbmQKIGVuZAo=
</data>
<flag name="review"
          id="162012"
          type_id="1"
          status="-"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="162013"
          type_id="3"
          status="-"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153151</attachid>
            <date>2012-07-18 18:16:09 -0700</date>
            <delta_ts>2012-07-19 01:00:56 -0700</delta_ts>
            <desc>rev 1: addressed Filip&apos;s concern. No longer play tricks with string encoding.</desc>
            <filename>bug-91690-rev1.patch</filename>
            <type>text/plain</type>
            <size>19502</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIzMDM5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDEyLTA3LTE4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBC
dWcgZml4ZXMgYW5kIGVuaGFuY2VtZW50cyBmb3IgT2ZmbGluZUFTTSBhbm5vdGF0aW9uIHN5c3Rl
bS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxNjkw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRp
b25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFs
ZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisK
KyAgICAgICAgKiBvZmZsaW5lYXNtL2FybXY3LnJiOiBhZGRlZCBkZWZhdWx0IGhhbmRsaW5nIG9m
IEluc3RydWN0aW9uIGxvd2VyKCkuCisgICAgICAgICogb2ZmbGluZWFzbS9hc20ucmI6IGFkZGVk
IG1vcmUgc3VwcG9ydCBmb3IgYW5ub3RhdGlvbnMgYW5kIG1vcmUgcHJldHR5IHByaW50aW5nLgor
ICAgICAgICAqIG9mZmxpbmVhc20vYXN0LnJiOiBhZGRlZCBtb3JlIHN1cHBvcnQgZm9yIGFubm90
YXRpb25zLgorICAgICAgICAqIG9mZmxpbmVhc20vY29uZmlnLnJiOiBhZGRlZCAkcHJlZmVycmVk
Q29tbWVudFN0YXJ0Q29sdW1uLCBzaW1wbGlmaWVkICRlbmFibGVJbnN0ckFubm90YXRpb25zLgor
ICAgICAgICAqIG9mZmxpbmVhc20vcGFyc2VyLnJiOiBhZGRlZCBtb3JlIHN1cHBvcnQgZm9yIGFu
bm90YXRpb25zLgorICAgICAgICAqIG9mZmxpbmVhc20vdHJhbnNmb3JtLnJiOiBhZGRlZCBtb3Jl
IHN1cHBvcnQgZm9yIGFubm90YXRpb25zLgorICAgICAgICAqIG9mZmxpbmVhc20veDg2LnJiOiBh
ZGRlZCBkZWZhdWx0IGhhbmRsaW5nIG9mIEluc3RydWN0aW9uIGxvd2VyKCkuCisKIDIwMTItMDct
MTggIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcgMzItYml0
IFB1dEJ5SWQgdHJhbnNpdGlvbiBzdHViIHN0b3JhZ2UgcmVhbGxvY2F0aW9uIGNhc2UgY29waWVz
IHRoZSBmaXJzdCBwb2ludGVyIG9mIGVhY2ggSlNWYWx1ZSBpbnN0ZWFkIG9mIHRoZSB3aG9sZSBK
U1ZhbHVlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgko
cmV2aXNpb24gMTIzMDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJt
djcucmIJKHdvcmtpbmcgY29weSkKQEAgLTc0Myw4ICs3NDMsOCBAQCBlbmQKIAogY2xhc3MgSW5z
dHJ1Y3Rpb24KICAgICBkZWYgbG93ZXJBUk12NwotICAgICAgICAkYXNtLmNvZGVPcmlnaW4gY29k
ZU9yaWdpblN0cmluZwotICAgICAgICAkYXNtLmFubm90YXRpb24gYW5ub3RhdGlvbgorICAgICAg
ICAkYXNtLmNvZGVPcmlnaW4gY29kZU9yaWdpblN0cmluZyBpZiAkZW5hYmxlQ29kZU9yaWdpbkNv
bW1lbnRzCisgICAgICAgICRhc20uYW5ub3RhdGlvbiBhbm5vdGF0aW9uIGlmICRlbmFibGVJbnN0
ckFubm90YXRpb25zCiAKICAgICAgICAgY2FzZSBvcGNvZGUKICAgICAgICAgd2hlbiAiYWRkaSIs
ICJhZGRwIiwgImFkZGlzIgpAQCAtMTAxMiw3ICsxMDEyLDcgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24K
ICAgICAgICAgICAgIHJhaXNlICJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIHRvIHNtdWxsIGlu
ICN7c2VsZi5pbnNwZWN0fSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3Mgb3BlcmFuZHMu
bGVuZ3RoID09IDQKICAgICAgICAgICAgICRhc20ucHV0cyAic211bGwgI3tvcGVyYW5kc1syXS5h
cm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzNdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMF0u
YXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9IgogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICByYWlzZSAiVW5oYW5kbGVkIG9wY29kZSAje29wY29kZX0gYXQgI3tjb2Rl
T3JpZ2luU3RyaW5nfSIKKyAgICAgICAgICAgIGxvd2VyRGVmYXVsdAogICAgICAgICBlbmQKICAg
ICBlbmQKIGVuZApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJi
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgko
cmV2aXNpb24gMTIzMDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNt
LnJiCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw4IEBAIGNsYXNzIEFzc2VtYmxlcgogICAg
ICAgICBAY29kZU9yaWdpbiA9IG5pbAogICAgICAgICBAbnVtTG9jYWxMYWJlbHMgPSAwCiAgICAg
ICAgIEBudW1HbG9iYWxMYWJlbHMgPSAwCisKKyAgICAgICAgQG5ld2xpbmVTcGFjZXJTdGF0ZSA9
IDpub25lCiAgICAgZW5kCiAgICAgCiAgICAgZGVmIGVudGVyQXNtCkBAIC02NiwzMyArNjgsNjAg
QEAgY2xhc3MgQXNzZW1ibGVyCiAgICAgCiAgICAgIyBDb25jYXRlbmF0ZXMgYWxsIHRoZSB2YXJp
b3VzIGNvbXBvbmVudHMgb2YgdGhlIGNvbW1lbnQgdG8gZHVtcC4KICAgICBkZWYgbGFzdENvbW1l
bnQKKyAgICAgICAgc2VwYXJhdG9yID0gIiAiCiAgICAgICAgIHJlc3VsdCA9ICIiCi0gICAgICAg
IHJlc3VsdCA9ICIgI3tAY29tbWVudH0gLiIgaWYgQGNvbW1lbnQKLSAgICAgICAgcmVzdWx0ICs9
ICIgI3tAYW5ub3RhdGlvbn0gLiIgaWYgQGFubm90YXRpb24gYW5kICRlbmFibGVUcmFpbGluZ0lu
c3RyQW5ub3RhdGlvbnMKLSAgICAgICAgcmVzdWx0ICs9ICIgI3tAaW50ZXJuYWxDb21tZW50fSAu
IiBpZiBAaW50ZXJuYWxDb21tZW50Ci0gICAgICAgIHJlc3VsdCArPSAiICN7QGNvZGVPcmlnaW59
IC4iIGlmIEBjb2RlT3JpZ2luIGFuZCAkZW5hYmxlQ29kZU9yaWdpbkNvbW1lbnRzCisgICAgICAg
IHJlc3VsdCA9ICIje0Bjb21tZW50fSIgaWYgQGNvbW1lbnQKKyAgICAgICAgaWYgQGFubm90YXRp
b24gYW5kICRlbmFibGVJbnN0ckFubm90YXRpb25zCisgICAgICAgICAgICByZXN1bHQgKz0gc2Vw
YXJhdG9yIGlmIHJlc3VsdCAhPSAiIgorICAgICAgICAgICAgcmVzdWx0ICs9ICIje0Bhbm5vdGF0
aW9ufSIKKyAgICAgICAgZW5kCisgICAgICAgIGlmIEBpbnRlcm5hbENvbW1lbnQKKyAgICAgICAg
ICAgIHJlc3VsdCArPSBzZXBhcmF0b3IgaWYgcmVzdWx0ICE9ICIiCisgICAgICAgICAgICByZXN1
bHQgKz0gIiN7QGludGVybmFsQ29tbWVudH0iCisgICAgICAgIGVuZAorICAgICAgICBpZiBAY29k
ZU9yaWdpbiBhbmQgJGVuYWJsZUNvZGVPcmlnaW5Db21tZW50cworICAgICAgICAgICAgcmVzdWx0
ICs9IHNlcGFyYXRvciBpZiByZXN1bHQgIT0gIiIKKyAgICAgICAgICAgIHJlc3VsdCArPSAiI3tA
Y29kZU9yaWdpbn0iCisgICAgICAgIGVuZAogICAgICAgICBpZiByZXN1bHQgIT0gIiIKLSAgICAg
ICAgICAgIHJlc3VsdCA9ICIgIC8vIiArIHJlc3VsdAorICAgICAgICAgICAgcmVzdWx0ID0gIi8v
ICIgKyByZXN1bHQKICAgICAgICAgZW5kCiAKICAgICAgICAgIyBSZXNldCBhbGwgdGhlIGNvbXBv
bmVudHMgdGhhdCB3ZSd2ZSBqdXN0IHNlbnQgdG8gYmUgZHVtcGVkLgogICAgICAgICBAY29tbWVu
dFN0YXRlID0gOm5vbmUKICAgICAgICAgQGNvbW1lbnQgPSBuaWwKLSAgICAgICAgQGludGVybmFs
Q29tbWVudCA9IG5pbAogICAgICAgICBAYW5ub3RhdGlvbiA9IG5pbAogICAgICAgICBAY29kZU9y
aWdpbiA9IG5pbAorICAgICAgICBAaW50ZXJuYWxDb21tZW50ID0gbmlsCiAgICAgICAgIHJlc3Vs
dAogICAgIGVuZAogICAgIAotICAgICMgRHVtcHMgdGhlIGN1cnJlbnQgaW5zdHJ1Y3Rpb24gYW5u
b3RhdGlvbiBpbiBpbnRlcmxhY2VkIG1vZGUgaWYgYXBwcm9wcmlhdGUuCi0gICAgZGVmIHB1dElu
dGVybGFjZWRBbm5vdGF0aW9uKCkKKyAgICBkZWYgZm9ybWF0RHVtcChkdW1wU3RyLCBjb21tZW50
LCBjb21tZW50Q29sdW1ucz0kcHJlZmVycmVkQ29tbWVudFN0YXJ0Q29sdW1uKQorICAgICAgICBp
ZiBjb21tZW50Lmxlbmd0aCA+IDAKKyAgICAgICAgICAgICIlLSN7Y29tbWVudENvbHVtbnN9cyAl
cyIgJSBbZHVtcFN0ciwgY29tbWVudF0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZHVtcFN0
cgorICAgICAgICBlbmQKKyAgICBlbmQKKworICAgICMgcHJpdmF0ZSBtZXRob2QgZm9yIGludGVy
bmFsIHVzZSBvbmx5LgorICAgIGRlZiBwdXRBbm5vdGF0aW9uKHRleHQpCiAgICAgICAgIHJhaXNl
IHVubGVzcyBAc3RhdGUgPT0gOmFzbQotICAgICAgICBpZiAkZW5hYmxlSW50ZXJsYWNlZEluc3Ry
QW5ub3RhdGlvbnMKLSAgICAgICAgICAgIEBvdXRwLnB1dHMoIiAgICAvLyAje0Bhbm5vdGF0aW9u
fSIpIGlmIEBhbm5vdGF0aW9uCisgICAgICAgIGlmICRlbmFibGVJbnN0ckFubm90YXRpb25zCisg
ICAgICAgICAgICBAb3V0cC5wdXRzIHRleHQKICAgICAgICAgICAgIEBhbm5vdGF0aW9uID0gbmls
CiAgICAgICAgIGVuZAogICAgIGVuZAogCisgICAgZGVmIHB1dExvY2FsQW5ub3RhdGlvbigpCisg
ICAgICAgIHB1dEFubm90YXRpb24gIiAgICAvLyAje0Bhbm5vdGF0aW9ufSIgaWYgQGFubm90YXRp
b24KKyAgICBlbmQKKworICAgIGRlZiBwdXRHbG9iYWxBbm5vdGF0aW9uKCkKKyAgICAgICAgcHV0
c05ld2xpbmVTcGFjZXJJZkFwcHJvcHJpYXRlKDphbm5vdGF0aW9uKQorICAgICAgICBwdXRBbm5v
dGF0aW9uICIvLyAje0Bhbm5vdGF0aW9ufSIgaWYgQGFubm90YXRpb24KKyAgICBlbmQKKwogICAg
IGRlZiBwdXRzTGFzdENvbW1lbnQKICAgICAgICAgY29tbWVudCA9IGxhc3RDb21tZW50CiAgICAg
ICAgIHVubGVzcyBjb21tZW50LmVtcHR5PwpAQCAtMTAyLDggKzEzMSw3IEBAIGNsYXNzIEFzc2Vt
YmxlcgogICAgIAogICAgIGRlZiBwdXRzKCpsaW5lKQogICAgICAgICByYWlzZSB1bmxlc3MgQHN0
YXRlID09IDphc20KLSAgICAgICAgcHV0SW50ZXJsYWNlZEFubm90YXRpb24KLSAgICAgICAgQG91
dHAucHV0cygiICAgIFwiXFx0IiArIGxpbmUuam9pbignJykgKyAiXFxuXCIje2xhc3RDb21tZW50
fSIpCisgICAgICAgIEBvdXRwLnB1dHMoZm9ybWF0RHVtcCgiICAgIFwiXFx0IiArIGxpbmUuam9p
bignJykgKyAiXFxuXCIiLCBsYXN0Q29tbWVudCkpCiAgICAgZW5kCiAgICAgCiAgICAgZGVmIHBy
aW50KGxpbmUpCkBAIC0xMTEsMTIgKzEzOSwyMCBAQCBjbGFzcyBBc3NlbWJsZXIKICAgICAgICAg
QG91dHAucHJpbnQoIlwiIiArIGxpbmUgKyAiXCIiKQogICAgIGVuZAogICAgIAorICAgIGRlZiBw
dXRzTmV3bGluZVNwYWNlcklmQXBwcm9wcmlhdGUoc3RhdGUpCisgICAgICAgIGlmIEBuZXdsaW5l
U3BhY2VyU3RhdGUgIT0gc3RhdGUKKyAgICAgICAgICAgIEBvdXRwLnB1dHMoIlxuIikKKyAgICAg
ICAgICAgIEBuZXdsaW5lU3BhY2VyU3RhdGUgPSBzdGF0ZQorICAgICAgICBlbmQKKyAgICBlbmQK
KwogICAgIGRlZiBwdXRzTGFiZWwobGFiZWxOYW1lKQogICAgICAgICByYWlzZSB1bmxlc3MgQHN0
YXRlID09IDphc20KICAgICAgICAgQG51bUdsb2JhbExhYmVscyArPSAxCi0gICAgICAgIEBvdXRw
LnB1dHMoIlxuIikKKyAgICAgICAgcHV0c05ld2xpbmVTcGFjZXJJZkFwcHJvcHJpYXRlKDpnbG9i
YWwpCiAgICAgICAgIEBpbnRlcm5hbENvbW1lbnQgPSAkZW5hYmxlTGFiZWxDb3VudENvbW1lbnRz
ID8gIkdsb2JhbCBMYWJlbCAje0BudW1HbG9iYWxMYWJlbHN9IiA6IG5pbAotICAgICAgICBAb3V0
cC5wdXRzKCJPRkZMSU5FX0FTTV9HTE9CQUxfTEFCRUwoI3tsYWJlbE5hbWV9KSN7bGFzdENvbW1l
bnR9IikKKyAgICAgICAgQG91dHAucHV0cyhmb3JtYXREdW1wKCJPRkZMSU5FX0FTTV9HTE9CQUxf
TEFCRUwoI3tsYWJlbE5hbWV9KSIsIGxhc3RDb21tZW50KSkKKyAgICAgICAgQG5ld2xpbmVTcGFj
ZXJTdGF0ZSA9IDpub25lICMgQWZ0ZXIgYSBnbG9iYWwgbGFiZWwsIHdlIGNhbiB1c2UgYW5vdGhl
ciBzcGFjZXIuCiAgICAgZW5kCiAgICAgCiAgICAgZGVmIHB1dHNMb2NhbExhYmVsKGxhYmVsTmFt
ZSkKQEAgLTEyNCw3ICsxNjAsNyBAQCBjbGFzcyBBc3NlbWJsZXIKICAgICAgICAgQG51bUxvY2Fs
TGFiZWxzICs9IDEKICAgICAgICAgQG91dHAucHV0cygiXG4iKQogICAgICAgICBAaW50ZXJuYWxD
b21tZW50ID0gJGVuYWJsZUxhYmVsQ291bnRDb21tZW50cyA/ICJMb2NhbCBMYWJlbCAje0BudW1M
b2NhbExhYmVsc30iIDogbmlsCi0gICAgICAgIEBvdXRwLnB1dHMoIk9GRkxJTkVfQVNNX0xPQ0FM
X0xBQkVMKCN7bGFiZWxOYW1lfSkje2xhc3RDb21tZW50fSIpCisgICAgICAgIEBvdXRwLnB1dHMo
Zm9ybWF0RHVtcCgiICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTCgje2xhYmVsTmFtZX0pIiwgbGFz
dENvbW1lbnQpKQogICAgIGVuZAogICAgIAogICAgIGRlZiBzZWxmLmxhYmVsUmVmZXJlbmNlKGxh
YmVsTmFtZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIJKHJl
dmlzaW9uIDEyMzAyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5y
Ygkod29ya2luZyBjb3B5KQpAQCAtODA2LDYgKzgwNiwxNyBAQCBjbGFzcyBJbnN0cnVjdGlvbiA8
IE5vZGUKICAgICBkZWYgZHVtcAogICAgICAgICAiXHQiICsgb3Bjb2RlLnRvX3MgKyAiICIgKyBv
cGVyYW5kcy5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIiwgIikKICAgICBlbmQKKworICAgIGRl
ZiBsb3dlckRlZmF1bHQKKyAgICAgICAgY2FzZSBvcGNvZGUKKyAgICAgICAgd2hlbiAibG9jYWxB
bm5vdGF0aW9uIgorICAgICAgICAgICAgJGFzbS5wdXRMb2NhbEFubm90YXRpb24KKyAgICAgICAg
d2hlbiAiZ2xvYmFsQW5ub3RhdGlvbiIKKyAgICAgICAgICAgICRhc20ucHV0R2xvYmFsQW5ub3Rh
dGlvbgorICAgICAgICBlbHNlCisgICAgICAgICAgICByYWlzZSAiVW5oYW5kbGVkIG9wY29kZSAj
e29wY29kZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICAgICAgZW5kCisgICAgZW5kCiBl
bmQKIAogY2xhc3MgRXJyb3IgPCBOb0NoaWxkcmVuCkBAIC0xMTgwLDcgKzExOTEsNyBAQCBlbmQK
IAogY2xhc3MgTWFjcm8gPCBOb2RlCiAgICAgYXR0cl9yZWFkZXIgOm5hbWUsIDp2YXJpYWJsZXMs
IDpib2R5Ci0gICAgCisKICAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lLCB2YXJp
YWJsZXMsIGJvZHkpCiAgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCiAgICAgICAgIEBuYW1lID0g
bmFtZQpAQCAtMTIwMiwxNCArMTIxMywxNSBAQCBjbGFzcyBNYWNybyA8IE5vZGUKIGVuZAogCiBj
bGFzcyBNYWNyb0NhbGwgPCBOb2RlCi0gICAgYXR0cl9yZWFkZXIgOm5hbWUsIDpvcGVyYW5kcwor
ICAgIGF0dHJfcmVhZGVyIDpuYW1lLCA6b3BlcmFuZHMsIDphbm5vdGF0aW9uCiAgICAgCi0gICAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMsIGFubm90YXRpb24pCiAgICAgICAgIHN1
cGVyKGNvZGVPcmlnaW4pCiAgICAgICAgIEBuYW1lID0gbmFtZQogICAgICAgICBAb3BlcmFuZHMg
PSBvcGVyYW5kcwogICAgICAgICByYWlzZSB1bmxlc3MgQG9wZXJhbmRzCiAgICAgICAgIEBvcGVy
YW5kcy5lYWNoe3x2fCByYWlzZSB1bmxlc3Mgdn0KKyAgICAgICAgQGFubm90YXRpb24gPSBhbm5v
dGF0aW9uCiAgICAgZW5kCiAgICAgCiAgICAgZGVmIGNoaWxkcmVuCkBAIC0xMjE3LDcgKzEyMjks
NyBAQCBjbGFzcyBNYWNyb0NhbGwgPCBOb2RlCiAgICAgZW5kCiAgICAgCiAgICAgZGVmIG1hcENo
aWxkcmVuKCZwcm9jKQotICAgICAgICBNYWNyb0NhbGwubmV3KGNvZGVPcmlnaW4sIEBuYW1lLCBA
b3BlcmFuZHMubWFwKCZwcm9jKSkKKyAgICAgICAgTWFjcm9DYWxsLm5ldyhjb2RlT3JpZ2luLCBA
bmFtZSwgQG9wZXJhbmRzLm1hcCgmcHJvYyksIEBhbm5vdGF0aW9uKQogICAgIGVuZAogICAgIAog
ICAgIGRlZiBkdW1wCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jb25m
aWcucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY29u
ZmlnLnJiCShyZXZpc2lvbiAxMjMwMjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9jb25maWcucmIJKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIxLDggQEAKICMgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgogIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKKyRwcmVmZXJyZWRD
b21tZW50U3RhcnRDb2x1bW4gPSA3MAorCiAKICMgVHVybnMgb24gZHVtcGluZyBvZiB0aGUgY291
bnQgb2YgbGFiZWxzLgogIyBGb3IgZXhhbXBsZSwgIHRoZSBvdXRwdXQgd2lsbCBsb29rIGxpa2Ug
dGhpczoKQEAgLTQ1LDMyICs0NywxMSBAQCAkZW5hYmxlQ29kZU9yaWdpbkNvbW1lbnRzID0gdHJ1
ZQogCiAjIFR1cm5zIG9uIHJlY29yZGluZyBhbmQgZHVtcGluZyBvZiBhbm5vdGF0aW9ucyBpbiB0
aGUgZ2VuZXJhdGVkIG91dHB1dCBmaWxlLgogIyBBbiBhbm5vdGF0aW9ucyBjYW4gYmUgc3BlY2lm
aWVkIGZvciBlYWNoIGluc3RydWN0aW9uIGluIHRoZSBzb3VyY2UgYXNtIGZpbGVzLgotIwotIyAk
ZW5hYmxlSW50ZXJsYWNlZEluc3RyQW5ub3RhdGlvbnMgd2lsbCBpbnRlcmxhY2UgdGhlIGFubm90
YXRpb24gYmV0d2VlbgotIyBpbnN0cnVjdGlvbnMuICBGb3IgZXhhbXBsZSwgdGhlIG91dHB1dCB3
aWxsIGxvb2sgbGlrZSB0aGlzOgorIyBGb3IgZXhhbXBsZSwgdGhlIG91dHB1dCB3aWxsIGxvb2sg
bGlrZSB0aGlzOgogIwogIyAgICAgLi4uCi0jICAgICAvLyBAIHQyPENvZGVCbG9jaz4gPSBjZnIu
Q29kZUJsb2NrCi0jICAgICJcdG1vdnEgLTgoJXIxMyksICVyY3hcbiIKLSMgICAgIC8vIEAgdDI8
c2l6ZV90PiA9IHQyPENvZGVCbG9jaz4ubV9udW1WYXJzCi0jICAgICJcdG1vdmwgNTIoJXJjeCks
ICVlY3hcbiIKKyMgICAgIlx0bW92cSAtOCglcjEzKSwgJXJjeFxuIiAgIC8vIHQyPENvZGVCbG9j
az4gPSBjZnIuQ29kZUJsb2NrCisjICAgICJcdG1vdmwgNTIoJXJjeCksICVlY3hcbiIgICAvLyB0
MjxzaXplX3Q+ID0gdDI8Q29kZUJsb2NrPi5tX251bVZhcnMKICMgICAgIC4uLgogIwotIyAkZW5h
YmxlVHJhaWxpbmdJbnN0ckFubm90YXRpb25zIHdpbGwgaW5zZXJ0IHRoZSBhbm5vdGF0aW9uIGlu
IHRoZSB0cmFpbGluZwotIyBjb21tZW50IGFmdGVyIHlvdXIgaW5zdHJ1Y3Rpb25zLiAgRm9yIGV4
YW1wbGUsIHRoZSBvdXRwdXQgd2lsbCBsb29rIGxpa2UgdGhpczoKLSMKLSMgICAgIC4uLgotIyAg
ICAiXHRtb3ZxIC04KCVyMTMpLCAlcmN4XG4iICAgLy8gQCB0MjxDb2RlQmxvY2s+ID0gY2ZyLkNv
ZGVCbG9jawotIyAgICAiXHRtb3ZsIDUyKCVyY3gpLCAlZWN4XG4iICAgLy8gQCB0MjxzaXplX3Q+
ID0gdDI8Q29kZUJsb2NrPi5tX251bVZhcnMKLSMgICAgIC4uLgotIwotIyBJZiBib3RoICRlbmFi
bGVJbnRlcmxhY2VkSW5zdHJBbm5vdGF0aW9ucyBhbmQgJGVuYWJsZVRyYWlsaW5nSW5zdHJBbm5v
dGF0aW9ucwotIyBhcmUgZW5hYmxlZCwgaW50ZXJsYWNlZCBhbm5vdGF0aW9ucyB3aWxsIHRha2Ug
cHJlY2VkZW5jZSwgYW5kIGFueSBhdmFpbGFibGUKLSMgYW5ub3RhdGlvbnMgd2lsbCBvbmx5IGJl
IGR1bXBlZCBpbiB0aGUgaW50ZXJsYWNlZCBmb3JtYXQuCi0jCi0kZW5hYmxlSW50ZXJsYWNlZElu
c3RyQW5ub3RhdGlvbnMgPSBmYWxzZQotJGVuYWJsZVRyYWlsaW5nSW5zdHJBbm5vdGF0aW9ucyA9
IGZhbHNlCi0KLQotIyBTYW5pdHkgY2hlY2sgZm9yIGFubm90YXRpb24gY29uZmlncy4KLSRlbmFi
bGVJbnN0ckFubm90YXRpb25zID0gKCRlbmFibGVJbnRlcmxhY2VkSW5zdHJBbm5vdGF0aW9ucyBv
ciAkZW5hYmxlVHJhaWxpbmdJbnN0ckFubm90YXRpb25zKQorJGVuYWJsZUluc3RyQW5ub3RhdGlv
bnMgPSBmYWxzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFyc2Vy
LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNl
ci5yYgkocmV2aXNpb24gMTIzMDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vcGFyc2VyLnJiCSh3b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3NCwxNSBAQCBjbGFzcyBUb2tl
bgogICAgIGVuZAogZW5kCiAKK2NsYXNzIEFubm90YXRpb24KKyAgICBhdHRyX3JlYWRlciA6Y29k
ZU9yaWdpbiwgOnR5cGUsIDpzdHJpbmcKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCB0
eXBlLCBzdHJpbmcpCisgICAgICAgIEBjb2RlT3JpZ2luID0gY29kZU9yaWdpbgorICAgICAgICBA
dHlwZSA9IHR5cGUKKyAgICAgICAgQHN0cmluZyA9IHN0cmluZworICAgIGVuZAorZW5kCisKICMK
ICMgVGhlIGxleGVyLiBUYWtlcyBhIHN0cmluZyBhbmQgcmV0dXJucyBhbiBhcnJheSBvZiB0b2tl
bnMuCiAjCkBAIC04MywxNyArOTIsMjAgQEAgZGVmIGxleChzdHIsIGZpbGVOYW1lKQogICAgIHJl
c3VsdCA9IFtdCiAgICAgbGluZU51bWJlciA9IDEKICAgICBhbm5vdGF0aW9uID0gbmlsCisgICAg
d2hpdGVzcGFjZUZvdW5kID0gZmFsc2UKICAgICB3aGlsZSBub3Qgc3RyLmVtcHR5PwogICAgICAg
ICBjYXNlIHN0cgogICAgICAgICB3aGVuIC9cQVwjKFteXG5dKikvCiAgICAgICAgICAgICAjIGNv
bW1lbnQsIGlnbm9yZQotICAgICAgICB3aGVuIC9cQVwvXC8oW15cbl0qKS8KKyAgICAgICAgd2hl
biAvXEFcL1wvXCA/KFteXG5dKikvCiAgICAgICAgICAgICAjIGFubm90YXRpb24KICAgICAgICAg
ICAgIGFubm90YXRpb24gPSAkMQorICAgICAgICAgICAgYW5ub3RhdGlvblR5cGUgPSB3aGl0ZXNw
YWNlRm91bmQgPyA6bG9jYWwgOiA6Z2xvYmFsCiAgICAgICAgIHdoZW4gL1xBXG4vCiAgICAgICAg
ICAgICAjIFdlJ3ZlIGZvdW5kIGEgJ1xuJy4gIEVtaXQgdGhlIGxhc3QgY29tbWVudCByZWNvcmRl
ZCBpZiBhcHByb3ByaWF0ZToKICAgICAgICAgICAgIGlmICRlbmFibGVJbnN0ckFubm90YXRpb25z
IGFuZCBhbm5vdGF0aW9uCi0gICAgICAgICAgICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhDb2Rl
T3JpZ2luLm5ldyhmaWxlTmFtZSwgbGluZU51bWJlciksICJAIiArIGFubm90YXRpb24pCisgICAg
ICAgICAgICAgICAgcmVzdWx0IDw8IEFubm90YXRpb24ubmV3KENvZGVPcmlnaW4ubmV3KGZpbGVO
YW1lLCBsaW5lTnVtYmVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYW5ub3RhdGlvblR5cGUsIGFubm90YXRpb24pCiAgICAgICAgICAgICAgICAgYW5ub3RhdGlv
biA9IG5pbAogICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3
KENvZGVPcmlnaW4ubmV3KGZpbGVOYW1lLCBsaW5lTnVtYmVyKSwgJCYpCkBAIC0xMDYsNiArMTE4
LDkgQEAgZGVmIGxleChzdHIsIGZpbGVOYW1lKQogICAgICAgICAgICAgcmVzdWx0IDw8IFRva2Vu
Lm5ldyhDb2RlT3JpZ2luLm5ldyhmaWxlTmFtZSwgbGluZU51bWJlciksICQmKQogICAgICAgICB3
aGVuIC9cQShbIFx0XSspLwogICAgICAgICAgICAgIyB3aGl0ZXNwYWNlLCBpZ25vcmUKKyAgICAg
ICAgICAgIHdoaXRlc3BhY2VGb3VuZCA9IHRydWUKKyAgICAgICAgICAgIHN0ciA9ICR+LnBvc3Rf
bWF0Y2gKKyAgICAgICAgICAgIG5leHQKICAgICAgICAgd2hlbiAvXEEweChbMC05YS1mQS1GXSsp
LwogICAgICAgICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhDb2RlT3JpZ2luLm5ldyhmaWxlTmFt
ZSwgbGluZU51bWJlciksICQmLmhleC50b19zKQogICAgICAgICB3aGVuIC9cQTAoWzAtN10rKS8K
QEAgLTExOSw2ICsxMzQsNyBAQCBkZWYgbGV4KHN0ciwgZmlsZU5hbWUpCiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHJhaXNlICJMZXhlciBlcnJvciBhdCAje0NvZGVPcmlnaW4ubmV3KGZpbGVO
YW1lLCBsaW5lTnVtYmVyKS50b19zfSwgdW5leHBlY3RlZCBzZXF1ZW5jZSAje3N0clswLi4yMF0u
aW5zcGVjdH0iCiAgICAgICAgIGVuZAorICAgICAgICB3aGl0ZXNwYWNlRm91bmQgPSBmYWxzZQog
ICAgICAgICBzdHIgPSAkfi5wb3N0X21hdGNoCiAgICAgZW5kCiAgICAgcmVzdWx0CkBAIC0xNDYs
MTAgKzE2Miw2IEBAIGRlZiBpc0lkZW50aWZpZXIodG9rZW4pCiAgICAgdG9rZW4gPX4gL1xBW2Et
ekEtWl0oW2EtekEtWjAtOV9dKilcWi8gYW5kIG5vdCBpc0tleXdvcmQodG9rZW4pCiBlbmQKIAot
ZGVmIGlzQW5ub3RhdGlvbih0b2tlbikKLSAgICB0b2tlbiA9fiAvXEFcQChbXlxuXSopLwotZW5k
Ci0KIGRlZiBpc0xhYmVsKHRva2VuKQogICAgIHRva2VuID1+IC9cQV8oW2EtekEtWjAtOV9dKilc
Wi8KIGVuZApAQCAtMTc1LDYgKzE4Nyw3IEBAIGNsYXNzIFBhcnNlcgogICAgIGRlZiBpbml0aWFs
aXplKGRhdGEsIGZpbGVOYW1lKQogICAgICAgICBAdG9rZW5zID0gbGV4KGRhdGEsIGZpbGVOYW1l
KQogICAgICAgICBAaWR4ID0gMAorICAgICAgICBAYW5ub3RhdGlvbiA9IG5pbAogICAgIGVuZAog
ICAgIAogICAgIGRlZiBwYXJzZUVycm9yKCpjb21tZW50KQpAQCAtNDg3LDYgKzUwMCwyMCBAQCBj
bGFzcyBQYXJzZXIKICAgICAgICAgbG9vcCB7CiAgICAgICAgICAgICBpZiAoQGlkeCA9PSBAdG9r
ZW5zLmxlbmd0aCBhbmQgbm90IGZpbmFsKSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0gPX4g
ZmluYWwpCiAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNb
QGlkeF0uaXNfYT8gQW5ub3RhdGlvbgorICAgICAgICAgICAgICAgICMgVGhpcyBpcyB0aGUgb25s
eSBwbGFjZSB3aGVyZSB3ZSBjYW4gZW5jb3VudGVyIGEgZ2xvYmFsCisgICAgICAgICAgICAgICAg
IyBhbm5vdGF0aW9uLCBhbmQgaGVuY2UgbmVlZCB0byBiZSBhYmxlIHRvIGRpc3Rpbmd1aXNoIGJl
dHdlZW4KKyAgICAgICAgICAgICAgICAjIHRoZW0uCisgICAgICAgICAgICAgICAgIyBnbG9iYWxB
bm5vdGF0aW9ucyBhcmUgdGhlIG9uZXMgdGhhdCBzdGFydCBmcm9tIGNvbHVtbiAwLiBBbGwKKyAg
ICAgICAgICAgICAgICAjIG90aGVycyBhcmUgY29uc2lkZXJlZCBsb2NhbEFubm90YXRpb25zLiAg
VGhlIG9ubHkgcmVhc29uIHRvCisgICAgICAgICAgICAgICAgIyBkaXN0aW5ndWlzaCBiZXR3ZWVu
IHRoZW0gaXMgc28gdGhhdCB3ZSBjYW4gZm9ybWF0IHRoZSBvdXRwdXQKKyAgICAgICAgICAgICAg
ICAjIG5pY2VseSBhcyBvbmUgd291bGQgZXhwZWN0LgorCisgICAgICAgICAgICAgICAgY29kZU9y
aWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgICAgICAgIGFubm90YXRp
b25PcGNvZGUgPSAoQHRva2Vuc1tAaWR4XS50eXBlID09IDpnbG9iYWwpID8gImdsb2JhbEFubm90
YXRpb24iIDogImxvY2FsQW5ub3RhdGlvbiIKKyAgICAgICAgICAgICAgICBsaXN0IDw8IEluc3Ry
dWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBhbm5vdGF0aW9uT3Bjb2RlLCBbXSwgQHRva2Vuc1tAaWR4
XS5zdHJpbmcpCisgICAgICAgICAgICAgICAgQGFubm90YXRpb24gPSBuaWwKKyAgICAgICAgICAg
ICAgICBAaWR4ICs9IDIgIyBDb25zdW1lIHRoZSBuZXdsaW5lIGFzIHdlbGwuCiAgICAgICAgICAg
ICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJcbiIKICAgICAgICAgICAgICAgICAjIGlnbm9yZQog
ICAgICAgICAgICAgICAgIEBpZHggKz0gMQpAQCAtNTQ3LDIxICs1NzQsMjIgQEAgY2xhc3MgUGFy
c2VyCiAgICAgICAgICAgICAgICAgQGlkeCArPSAxCiAgICAgICAgICAgICAgICAgaWYgKG5vdCBm
aW5hbCBhbmQgQGlkeCA9PSBAdG9rZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4
XSA9fiBmaW5hbCkKICAgICAgICAgICAgICAgICAgICAgIyBaZXJvIG9wZXJhbmQgaW5zdHJ1Y3Rp
b24sIGFuZCBpdCdzIHRoZSBsYXN0IG9uZS4KLSAgICAgICAgICAgICAgICAgICAgbGlzdCA8PCBJ
bnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgW10pCisgICAgICAgICAgICAgICAgICAg
IGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtdLCBAYW5ub3RhdGlv
bikKKyAgICAgICAgICAgICAgICAgICAgQGFubm90YXRpb24gPSBuaWwKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBlbHNpZiBpc0Fubm90YXRpb24gQHRva2Vuc1tA
aWR4XQotICAgICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uID0gQHRva2Vuc1tAaWR4XS5zdHJp
bmcKLSAgICAgICAgICAgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdp
biwgbmFtZSwgW10sIGFubm90YXRpb24pCisgICAgICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tA
aWR4XS5pc19hPyBBbm5vdGF0aW9uCisgICAgICAgICAgICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1
Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtdLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAg
ICAgICAgICAgICAgICAgICAgQGFubm90YXRpb24gPSBuaWwKICAgICAgICAgICAgICAgICAgICAg
QGlkeCArPSAyICMgQ29uc3VtZSB0aGUgbmV3bGluZSBhcyB3ZWxsLgogICAgICAgICAgICAgICAg
IGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgogICAgICAgICAgICAgICAgICAgICAjIFplcm8g
b3BlcmFuZCBpbnN0cnVjdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgbGlzdCA8PCBJbnN0cnVj
dGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgW10pCisgICAgICAgICAgICAgICAgICAgIGxpc3Qg
PDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtdLCBAYW5ub3RhdGlvbikKKyAg
ICAgICAgICAgICAgICAgICAgQGFubm90YXRpb24gPSBuaWwKICAgICAgICAgICAgICAgICAgICAg
QGlkeCArPSAxCiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAjIEl0
J3MgZGVmaW5pdGVseSBhbiBpbnN0cnVjdGlvbiwgYW5kIGl0IGhhcyBhdCBsZWFzdCBvbmUgb3Bl
cmFuZC4KICAgICAgICAgICAgICAgICAgICAgb3BlcmFuZHMgPSBbXQogICAgICAgICAgICAgICAg
ICAgICBlbmRPZlNlcXVlbmNlID0gZmFsc2UKLSAgICAgICAgICAgICAgICAgICAgYW5ub3RhdGlv
biA9IG5pbAogICAgICAgICAgICAgICAgICAgICBsb29wIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIG9wZXJhbmRzIDw8IHBhcnNlT3BlcmFuZCgid2hpbGUgaW5zaWRlIG9mIGluc3RydWN0aW9u
ICN7bmFtZX0iKQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vdCBmaW5hbCBhbmQgQGlk
eCA9PSBAdG9rZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBmaW5hbCkK
QEAgLTU3MSw4ICs1OTksOCBAQCBjbGFzcyBQYXJzZXIKICAgICAgICAgICAgICAgICAgICAgICAg
IGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IyBIYXMgYW5vdGhlciBvcGVyYW5kLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZHgg
Kz0gMQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgaXNBbm5vdGF0aW9uIEB0b2tlbnNb
QGlkeF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uID0gQHRva2Vuc1tA
aWR4XS5zdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0u
aXNfYT8gQW5ub3RhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBhbm5vdGF0aW9u
ID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWR4
ICs9IDIgIyBDb25zdW1lIHRoZSBuZXdsaW5lIGFzIHdlbGwuCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlk
eF0gPT0gIlxuIgpAQCAtNTgzLDExICs2MTEsMTQgQEAgY2xhc3MgUGFyc2VyCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGFyc2VFcnJvcigiRXhwZWN0ZWQgYSBjb21tYSwgbmV3bGluZSwg
b3IgI3tmaW5hbH0gYWZ0ZXIgI3tvcGVyYW5kcy5sYXN0LmR1bXB9IikKICAgICAgICAgICAgICAg
ICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzLCBhbm5v
dGF0aW9uKQorICAgICAgICAgICAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2Rl
T3JpZ2luLCBuYW1lLCBvcGVyYW5kcywgQGFubm90YXRpb24pCisgICAgICAgICAgICAgICAgICAg
IEBhbm5vdGF0aW9uID0gbmlsCiAgICAgICAgICAgICAgICAgICAgIGlmIGVuZE9mU2VxdWVuY2UK
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgIGVuZAog
ICAgICAgICAgICAgICAgIGVuZAorCisgICAgICAgICAgICAjIENoZWNrIGZvciBwb3RlbnRpYWwg
bWFjcm8gaW52b2NhdGlvbjoKICAgICAgICAgICAgIGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5z
W0BpZHhdCiAgICAgICAgICAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9y
aWdpbgogICAgICAgICAgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZwpAQCAtNjI0
LDcgKzY1NSwxMyBAQCBjbGFzcyBQYXJzZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bmQKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgZW5kCi0g
ICAgICAgICAgICAgICAgICAgIGxpc3QgPDwgTWFjcm9DYWxsLm5ldyhjb2RlT3JpZ2luLCBuYW1l
LCBvcGVyYW5kcykKKyAgICAgICAgICAgICAgICAgICAgIyBDaGVjayBpZiB0aGVyZSdzIGEgdHJh
aWxpbmcgYW5ub3RhdGlvbiBhZnRlciB0aGUgbWFjcm8gaW52b2tlOgorICAgICAgICAgICAgICAg
ICAgICBpZiBAdG9rZW5zW0BpZHhdLmlzX2E/IEFubm90YXRpb24KKyAgICAgICAgICAgICAgICAg
ICAgICAgIEBhbm5vdGF0aW9uID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEBpZHggKz0gMiAjIENvbnN1bWUgdGhlIG5ld2xpbmUgYXMgd2VsbC4KKyAgICAg
ICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgICAgIGxpc3QgPDwgTWFjcm9DYWxs
Lm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcywgQGFubm90YXRpb24pCisgICAgICAgICAg
ICAgICAgICAgIEBhbm5vdGF0aW9uID0gbmlsCiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgICAgICBwYXJzZUVycm9yICJFeHBlY3RlZCBcIihcIiBhZnRlciAje25hbWV9Igog
ICAgICAgICAgICAgICAgIGVuZApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vdHJhbnNmb3JtLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2aXNpb24gMTIzMDI1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCSh3b3JraW5nIGNvcHkpCkBAIC0yMjksNiAr
MjI5LDkgQEAgY2xhc3MgU2VxdWVuY2UKICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmdb
bXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XV0gPSBpdGVtLm9wZXJhbmRzW2lkeF0K
ICAgICAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGlmIGl0ZW0uYW5ub3RhdGlvbgorICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IElu
c3RydWN0aW9uLm5ldyhpdGVtLmNvZGVPcmlnaW4sICJsb2NhbEFubm90YXRpb24iLCBbXSwgaXRl
bS5hbm5vdGF0aW9uKQorICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAgIG5ld0xp
c3QgKz0gbXlNYWNyb3NbaXRlbS5uYW1lXS5ib2R5LnN1YnN0aXR1dGUobWFwcGluZykuZGVtYWNy
b2lmeShteU15TWFjcm9zKS5yZW5hbWVMYWJlbHMoaXRlbS5uYW1lKS5saXN0CiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBpdGVtLmRlbWFjcm9pZnkobXlNYWNy
b3MpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lv
biAxMjMwMjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHdv
cmtpbmcgY29weSkKQEAgLTYyNCw4ICs2MjQsOCBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgIGVu
ZAogICAgIAogICAgIGRlZiBsb3dlclg4NkNvbW1vbgotICAgICAgICAkYXNtLmNvZGVPcmlnaW4g
Y29kZU9yaWdpblN0cmluZwotICAgICAgICAkYXNtLmFubm90YXRpb24gYW5ub3RhdGlvbgorICAg
ICAgICAkYXNtLmNvZGVPcmlnaW4gY29kZU9yaWdpblN0cmluZyBpZiAkZW5hYmxlQ29kZU9yaWdp
bkNvbW1lbnRzCisgICAgICAgICRhc20uYW5ub3RhdGlvbiBhbm5vdGF0aW9uIGlmICRlbmFibGVJ
bnN0ckFubm90YXRpb25zCiAKICAgICAgICAgY2FzZSBvcGNvZGUKICAgICAgICAgd2hlbiAiYWRk
aSIKQEAgLTEwMjgsNyArMTAyOCw3IEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgIHdoZW4g
ImxlYXAiCiAgICAgICAgICAgICAkYXNtLnB1dHMgImxlYSN7eDg2U3VmZml4KDpwdHIpfSAje29w
ZXJhbmRzWzBdLng4NkFkZHJlc3NPcGVyYW5kKDpwdHIpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKDpwdHIpfSIKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmFpc2UgIkJhZCBvcGNvZGU6
ICN7b3Bjb2RlfSIKKyAgICAgICAgICAgIGxvd2VyRGVmYXVsdAogICAgICAgICBlbmQKICAgICBl
bmQKIGVuZAo=
</data>
<flag name="review"
          id="162024"
          type_id="1"
          status="-"
          setter="mark.lam"
    />
    <flag name="commit-queue"
          id="162025"
          type_id="3"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153203</attachid>
            <date>2012-07-19 01:00:56 -0700</date>
            <delta_ts>2012-07-19 13:53:33 -0700</delta_ts>
            <desc>rev 2: removed an unneeded OOPS comment in the last patch. </desc>
            <filename>bug-91690-rev2.patch</filename>
            <type>text/plain</type>
            <size>0</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64"></data>

          </attachment>
      

    </bug>

</bugzilla>