<?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>102401</bug_id>
          
          <creation_ts>2012-11-15 09:14:41 -0800</creation_ts>
          <short_desc>Move natural sorting to a separate module</short_desc>
          <delta_ts>2013-04-08 10:35:19 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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>
          <dependson>102396</dependson>
          <blocked>102229</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>768160</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-11-15 09:14:41 -0800</bug_when>
    <thetext>Move natural sorting to a separate module</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768178</commentid>
    <comment_count>1</comment_count>
      <attachid>174468</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-11-15 09:33:02 -0800</bug_when>
    <thetext>Created attachment 174468
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768180</commentid>
    <comment_count>2</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-11-15 09:37:33 -0800</bug_when>
    <thetext>Continuing from bug 102229:

&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 174186 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=174186&amp;action=review
&gt; &gt; 
&gt; &gt; The patch adds two new modules under webkitpy.common. The natural_order (could use a better name) contains methods for natural sorting and test key that were moved here from the Sharder class. The test_name method contains the TEST_PATH_SEPARATOR variable and the split_test_name method, both moved here from the Port class.
&gt; &gt; 
&gt; 
&gt; What do you not like about &quot;natural_order&quot; as a name?

I guess it&apos;s OK, I was also pondering names like natural_sort, natural_sorting or natura_ordering even. I&apos;m OK with any of those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768765</commentid>
    <comment_count>3</comment_count>
      <attachid>174468</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-11-15 17:49:02 -0800</bug_when>
    <thetext>Comment on attachment 174468
Patch

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

&gt; Tools/Scripts/webkitpy/common/natural_order.py:34
&gt; +def _natural_sort_key(string_to_split):

If we&apos;re going to split natural_sort into a separate module, it should *only* deal with natural sorting, and not have anything to do with &quot;test_name&quot;s at all. Also, depending on how the rest of this code shakes out, it might be that we can move the natural_sort code into port/base.py for now (until we move all of the test-handling logic out) and avoid needing to reference things from three different modules.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775290</commentid>
    <comment_count>4</comment_count>
      <attachid>175949</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-11-26 02:45:40 -0800</bug_when>
    <thetext>Created attachment 175949
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>870851</commentid>
    <comment_count>5</comment_count>
      <attachid>175949</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-04-08 10:35:19 -0700</bug_when>
    <thetext>Comment on attachment 175949
Patch

I&apos;m pretty sure this patch is no longer needed and won&apos;t even apply. Let me take a look, and, if I&apos;m wrong, I&apos;ll re-cq+ it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174468</attachid>
            <date>2012-11-15 09:33:02 -0800</date>
            <delta_ts>2012-11-26 02:45:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102401-20121115183059.patch</filename>
            <type>text/plain</type>
            <size>14595</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0Nzc4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjFjNTU3ZDMwMDg4ZDI4M2JmODllOGY1N2FkYzM0MjNi
YzU1MDJmYS4uZTQ4OTJjZDRkMzg0ZTAzN2EwMGMxNTdmYjM3NzcwYTY3MWJiODEzYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM2
IEBACiAyMDEyLTExLTE1ICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CiAK
KyAgICAgICAgTW92ZSBuYXR1cmFsIHNvcnRpbmcgdG8gYSBzZXBhcmF0ZSBtb2R1bGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjQwMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIG5hdHVy
YWwgc29ydGluZyBtZXRob2RzIGZyb20gdGhlIFNoYXJkZXIgaW50ZXJmYWNlIGludG8KKyAgICAg
ICAgYSBuZXcgbW9kdWxlIGNhbGxlZCBuYXR1cmFsX29yZGVyLiBJbXBsZW1lbnRhdGlvbiBoYXMg
bm8gY29ubmVjdGlvbgorICAgICAgICB3aXRoIFNoYXJkZXIgb2JqZWN0cyBzbyBpdCBtYWtlcyBz
ZW5zZSB0byBwdXQgaXQgaW4gYSBzZXBhcmF0ZSBwbGFjZS4KKworICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvY29tbW9uL25hdHVyYWxfb3JkZXIucHk6IEFkZGVkLgorICAgICAgICAoX25hdHVy
YWxfc29ydF9rZXkpOgorICAgICAgICAoX25hdHVyYWxfc29ydF9rZXkudHJ5aW50KToKKyAgICAg
ICAgKHRlc3RfbmFtZV9rZXkpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25h
dHVyYWxfb3JkZXJfdW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAoTmF0dXJhbE9yZGVyVGVz
dCk6CisgICAgICAgIChOYXR1cmFsT3JkZXJUZXN0LmFzc2VydENtcE5hdHVyYWxTb3J0S2V5KToK
KyAgICAgICAgKE5hdHVyYWxPcmRlclRlc3QuYXNzZXJ0Q21wVGVzdEtleSk6CisgICAgICAgIChO
YXR1cmFsT3JkZXJUZXN0LnRlc3RfbmF0dXJhbF9zb3J0X2tleSk6CisgICAgICAgIChOYXR1cmFs
T3JkZXJUZXN0LnRlc3RfdGVzdF9rZXkpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X3J1bm5lci5weToKKyAgICAgICAgKExh
eW91dFRlc3RSdW5uZXIuX19pbml0X18pOgorICAgICAgICAoU2hhcmRlcik6IE1vdmUgdGhlIG5h
dHVyYWwgc29ydGluZyBhbmQgdGVzdCBrZXkgbWV0aG9kcyBpbnRvIHRoZSBuZXcgbW9kdWxlLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91
dF90ZXN0X3J1bm5lcl91bml0dGVzdC5weTogVGhlCisgICAgICAgIHRlc3QgY2FzZXMgYXJlIG1v
dmVkIHRvIHRoYXQgbW9kdWxlJ3MgdW5pdCB0ZXN0IGZpbGUuCisgICAgICAgIChTaGFyZGVyVGVz
dHMudGVzdF9tdWx0aXBsZV9sb2NrZWRfc2hhcmRzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5OiBJbXBvcnQgdGhlIG5hdHVy
YWxfb3JkZXIgbW9kdWxlLgorICAgICAgICAoTWFuYWdlci5fcHJlcGFyZV9saXN0cyk6IFVzZSB0
aGUgdGVzdF9uYW1lX2tleSBtZXRob2QgdGhhdCdzIG5vdyBsb2NhdGVkIGluIHRoZQorICAgICAg
ICBuZXcgbW9kdWxlLgorCisyMDEyLTExLTE1ICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0Bn
bWFpbC5jb20+CisKICAgICAgICAgTW92ZSB0ZXN0IG5hbWUgc3BsaXR0aW5nIGFuZCBwYXRoIHNl
cGFyYXRvciB0byBhIHNlcGFyYXRlIG1vZHVsZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyMzk2CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL25hdHVyYWxfb3JkZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9uYXR1cmFsX29yZGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxZGYxMjI3ZmExOGFhZTg4ZWQ0
NDA1NWEwMTYwNmU0NDIxODY0ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uYXR1cmFsX29yZGVyLnB5CkBAIC0wLDAgKzEsNTggQEAKKyMgQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCitpbXBvcnQgcmUKKworZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IHRlc3Rf
bmFtZQorCisKK2RlZiBfbmF0dXJhbF9zb3J0X2tleShzdHJpbmdfdG9fc3BsaXQpOgorICAgICIi
IiBUdXJucyBhIHN0cmluZyBpbnRvIGEgbGlzdCBvZiBzdHJpbmcgYW5kIG51bWJlciBjaHVua3Ms
IGkuZS4gInoyM2EiIC0+IFsieiIsIDIzLCAiYSJdCisKKyAgICBUaGlzIGNhbiBiZSB1c2VkIHRv
IGltcGxlbWVudCAibmF0dXJhbCBzb3J0IiBvcmRlci4gU2VlOgorICAgIGh0dHA6Ly93d3cuY29k
aW5naG9ycm9yLmNvbS9ibG9nLzIwMDcvMTIvc29ydGluZy1mb3ItaHVtYW5zLW5hdHVyYWwtc29y
dC1vcmRlci5odG1sCisgICAgaHR0cDovL25lZGJhdGNoZWxkZXIuY29tL2Jsb2cvMjAwNzEyLmh0
bWwjZTIwMDcxMjExVDA1NDk1NgorICAgICIiIgorICAgIGRlZiB0cnlpbnQodmFsKToKKyAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIGludCh2YWwpCisgICAgICAgIGV4Y2VwdCBWYWx1
ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIHZhbAorCisgICAgcmV0dXJuIFt0cnlpbnQoY2h1
bmspIGZvciBjaHVuayBpbiByZS5zcGxpdCgnKFxkKyknLCBzdHJpbmdfdG9fc3BsaXQpXQorCisK
K2RlZiB0ZXN0X25hbWVfa2V5KG5hbWUpOgorICAgICIiIlR1cm5zIGEgdGVzdCBuYW1lIGludG8g
YSBsaXN0IHdpdGggdHdvIHN1Ymxpc3RzLCB0aGUgbmF0dXJhbCBrZXkgb2YgdGhlCisgICAgZGly
bmFtZSwgYW5kIHRoZSBuYXR1cmFsIGtleSBvZiB0aGUgYmFzZW5hbWUuCisKKyAgICBUaGlzIGNh
biBiZSB1c2VkIHdoZW4gc29ydGluZyBwYXRocyBzbyB0aGF0IGZpbGVzIGluIGEgZGlyZWN0b3J5
LgorICAgIGRpcmVjdG9yeSBhcmUga2VwdCB0b2dldGhlciByYXRoZXIgdGhhbiBiZWluZyBtaXhl
ZCBpbiB3aXRoIGZpbGVzIGluCisgICAgc3ViZGlyZWN0b3JpZXMuIiIiCisgICAgZGlybmFtZSwg
YmFzZW5hbWUgPSB0ZXN0X25hbWUuc3BsaXRfdGVzdF9uYW1lKG5hbWUpCisgICAgcmV0dXJuIChf
bmF0dXJhbF9zb3J0X2tleShkaXJuYW1lICsgdGVzdF9uYW1lLlRFU1RfUEFUSF9TRVBBUkFUT1Ip
LCBfbmF0dXJhbF9zb3J0X2tleShiYXNlbmFtZSkpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uYXR1cmFsX29yZGVyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vbmF0dXJhbF9vcmRlcl91bml0dGVzdC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
NzIwYTk0NDA0ZjMxNDMzYjQyZTU1OTIzYTlhMDQzOTE0M2FhNWQ0Ci0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmF0dXJhbF9vcmRlcl91bml0dGVzdC5w
eQpAQCAtMCwwICsxLDY3IEBACisjIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTAgR2Fib3IgUmFwY3NhbnlpIChy
Z2Fib3JAaW5mLnUtc3plZ2VkLmh1KSwgVW5pdmVyc2l0eSBvZiBTemVnZWQKKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQg
bmF0dXJhbF9vcmRlcgorCisKK2NsYXNzIE5hdHVyYWxPcmRlclRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgorICAgIGRlZiBhc3NlcnRDbXBOYXR1cmFsU29ydEtleShzZWxmLCB4LCB5LCByZXN1bHQp
OgorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjbXAobmF0dXJhbF9vcmRlci5fbmF0dXJhbF9z
b3J0X2tleSh4KSwgbmF0dXJhbF9vcmRlci5fbmF0dXJhbF9zb3J0X2tleSh5KSksIHJlc3VsdCkK
KworICAgIGRlZiBhc3NlcnRDbXBUZXN0S2V5KHNlbGYsIHgsIHksIHJlc3VsdCk6CisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKGNtcChuYXR1cmFsX29yZGVyLnRlc3RfbmFtZV9rZXkoeCksIG5h
dHVyYWxfb3JkZXIudGVzdF9uYW1lX2tleSh5KSksIHJlc3VsdCkKKworICAgIGRlZiB0ZXN0X25h
dHVyYWxfc29ydF9rZXkoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0Q21wTmF0dXJhbFNvcnRL
ZXkoJ2EnLCAnYScsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0Q21wTmF0dXJhbFNvcnRLZXkoJ2Fi
JywgJ2EnLCAxKQorICAgICAgICBzZWxmLmFzc2VydENtcE5hdHVyYWxTb3J0S2V5KCdhJywgJ2Fi
JywgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0Q21wTmF0dXJhbFNvcnRLZXkoJycsICcnLCAwKQor
ICAgICAgICBzZWxmLmFzc2VydENtcE5hdHVyYWxTb3J0S2V5KCcnLCAnYWInLCAtMSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRDbXBOYXR1cmFsU29ydEtleSgnMScsICcyJywgLTEpCisgICAgICAgIHNl
bGYuYXNzZXJ0Q21wTmF0dXJhbFNvcnRLZXkoJzInLCAnMScsIDEpCisgICAgICAgIHNlbGYuYXNz
ZXJ0Q21wTmF0dXJhbFNvcnRLZXkoJzEnLCAnMTAnLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRD
bXBOYXR1cmFsU29ydEtleSgnMicsICcxMCcsIC0xKQorICAgICAgICBzZWxmLmFzc2VydENtcE5h
dHVyYWxTb3J0S2V5KCdmb29fMS5odG1sJywgJ2Zvb18yLmh0bWwnLCAtMSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRDbXBOYXR1cmFsU29ydEtleSgnZm9vXzEuMS5odG1sJywgJ2Zvb18yLmh0bWwnLCAt
MSkKKyAgICAgICAgc2VsZi5hc3NlcnRDbXBOYXR1cmFsU29ydEtleSgnZm9vXzEuaHRtbCcsICdm
b29fMTAuaHRtbCcsIC0xKQorICAgICAgICBzZWxmLmFzc2VydENtcE5hdHVyYWxTb3J0S2V5KCdm
b29fMi5odG1sJywgJ2Zvb18xMC5odG1sJywgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0Q21wTmF0
dXJhbFNvcnRLZXkoJ2Zvb18yMy5odG1sJywgJ2Zvb18xMC5odG1sJywgMSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRDbXBOYXR1cmFsU29ydEtleSgnZm9vXzIzLmh0bWwnLCAnZm9vXzEwMC5odG1sJywg
LTEpCisKKyAgICBkZWYgdGVzdF90ZXN0X2tleShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRD
bXBUZXN0S2V5KCcvYScsICcvYScsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0Q21wVGVzdEtleSgn
L2EnLCAnL2InLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRDbXBUZXN0S2V5KCcvYTInLCAnL2Ex
MCcsIC0xKQorICAgICAgICBzZWxmLmFzc2VydENtcFRlc3RLZXkoJy9hMi9mb28nLCAnL2ExMC9m
b28nLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRDbXBUZXN0S2V5KCcvYS9mb28xMScsICcvYS9m
b28yJywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRDbXBUZXN0S2V5KCcvYWInLCAnL2EvYS9iJywg
LTEpCisgICAgICAgIHNlbGYuYXNzZXJ0Q21wVGVzdEtleSgnL2EvYS9iJywgJy9hYicsIDEpCisg
ICAgICAgIHNlbGYuYXNzZXJ0Q21wVGVzdEtleSgnL2Zvby1iYXIvYmF6JywgJy9mb28vYmF6Jywg
LTEpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250
cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5uZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5uZXIucHkKaW5kZXggMDY4NWJh
ZGM5NzE5OGU3ZGQ2NjAwYmE1Y2RmZTkxMGFiMDVlNDE2OC4uYzk3NTk3Mzc1MjhkZGM5ZGRhYjNj
NGJhNTc2MjZhMzJjNTQxYTIzMSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfcnVubmVyLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X3J1
bm5lci5weQpAQCAtODAsOSArODAsNiBAQCBjbGFzcyBMYXlvdXRUZXN0UnVubmVyKG9iamVjdCk6
CiAgICAgICAgIHNlbGYuX3dvcmtlcl9zdGF0cyA9IHt9CiAgICAgICAgIHNlbGYuX2ZpbGVzeXN0
ZW0gPSBzZWxmLl9wb3J0Lmhvc3QuZmlsZXN5c3RlbQogCi0gICAgZGVmIHRlc3Rfa2V5KHNlbGYs
IHRlc3RfbmFtZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9zaGFyZGVyLnRlc3Rfa2V5KHRlc3Rf
bmFtZSkKLQogICAgIGRlZiBydW5fdGVzdHMoc2VsZiwgdGVzdF9pbnB1dHMsIGV4cGVjdGF0aW9u
cywgcmVzdWx0X3N1bW1hcnksIG51bV93b3JrZXJzLCBuZWVkc19odHRwLCBuZWVkc193ZWJzb2Nr
ZXRzLCByZXRyeWluZyk6CiAgICAgICAgICIiIlJldHVybnMgYSB0dXBsZSBvZiAoaW50ZXJydXB0
ZWQsIGtleWJvYXJkX2ludGVycnVwdGVkLCB0aHJlYWRfdGltaW5ncywgdGVzdF90aW1pbmdzLCBp
bmRpdmlkdWFsX3Rlc3RfdGltaW5ncyk6CiAgICAgICAgICAgICBpbnRlcnJ1cHRlZCBpcyB3aGV0
aGVyIHRoZSBydW4gd2FzIGludGVycnVwdGVkCkBAIC02MDEsMjkgKzU5OCwzIEBAIGNsYXNzIFNo
YXJkZXIob2JqZWN0KToKICAgICAgICAgICAgIHNvbWVfc2hhcmRzLCByZW1haW5pbmdfc2hhcmRz
ID0gc3BsaXRfYXQocmVtYWluaW5nX3NoYXJkcywgbnVtX29sZF9wZXJfbmV3KQogICAgICAgICAg
ICAgbmV3X3NoYXJkcy5hcHBlbmQoVGVzdFNoYXJkKCclc18lZCcgJSAoc2hhcmRfbmFtZV9wcmVm
aXgsIGxlbihuZXdfc2hhcmRzKSArIDEpLCBleHRyYWN0X2FuZF9mbGF0dGVuKHNvbWVfc2hhcmRz
KSkpCiAgICAgICAgIHJldHVybiBuZXdfc2hhcmRzCi0KLSAgICBkZWYgdGVzdF9rZXkoc2VsZiwg
bmFtZSk6Ci0gICAgICAgICIiIlR1cm5zIGEgdGVzdCBuYW1lIGludG8gYSBsaXN0IHdpdGggdHdv
IHN1Ymxpc3RzLCB0aGUgbmF0dXJhbCBrZXkgb2YgdGhlCi0gICAgICAgIGRpcm5hbWUsIGFuZCB0
aGUgbmF0dXJhbCBrZXkgb2YgdGhlIGJhc2VuYW1lLgotCi0gICAgICAgIFRoaXMgY2FuIGJlIHVz
ZWQgd2hlbiBzb3J0aW5nIHBhdGhzIHNvIHRoYXQgZmlsZXMgaW4gYSBkaXJlY3RvcnkuCi0gICAg
ICAgIGRpcmVjdG9yeSBhcmUga2VwdCB0b2dldGhlciByYXRoZXIgdGhhbiBiZWluZyBtaXhlZCBp
biB3aXRoIGZpbGVzIGluCi0gICAgICAgIHN1YmRpcmVjdG9yaWVzLiIiIgotICAgICAgICBkaXJu
YW1lLCBiYXNlbmFtZSA9IHRlc3RfbmFtZS5zcGxpdF90ZXN0X25hbWUobmFtZSkKLSAgICAgICAg
cmV0dXJuIChzZWxmLm5hdHVyYWxfc29ydF9rZXkoZGlybmFtZSArIHRlc3RfbmFtZS5URVNUX1BB
VEhfU0VQQVJBVE9SKSwgc2VsZi5uYXR1cmFsX3NvcnRfa2V5KGJhc2VuYW1lKSkKLQotICAgIEBz
dGF0aWNtZXRob2QKLSAgICBkZWYgbmF0dXJhbF9zb3J0X2tleShzdHJpbmdfdG9fc3BsaXQpOgot
ICAgICAgICAiIiIgVHVybnMgYSBzdHJpbmcgaW50byBhIGxpc3Qgb2Ygc3RyaW5nIGFuZCBudW1i
ZXIgY2h1bmtzLCBpLmUuICJ6MjNhIiAtPiBbInoiLCAyMywgImEiXQotCi0gICAgICAgIFRoaXMg
Y2FuIGJlIHVzZWQgdG8gaW1wbGVtZW50ICJuYXR1cmFsIHNvcnQiIG9yZGVyLiBTZWU6Ci0gICAg
ICAgIGh0dHA6Ly93d3cuY29kaW5naG9ycm9yLmNvbS9ibG9nLzIwMDcvMTIvc29ydGluZy1mb3It
aHVtYW5zLW5hdHVyYWwtc29ydC1vcmRlci5odG1sCi0gICAgICAgIGh0dHA6Ly9uZWRiYXRjaGVs
ZGVyLmNvbS9ibG9nLzIwMDcxMi5odG1sI2UyMDA3MTIxMVQwNTQ5NTYKLSAgICAgICAgIiIiCi0g
ICAgICAgIGRlZiB0cnlpbnQodmFsKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAg
ICByZXR1cm4gaW50KHZhbCkKLSAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAg
ICAgICAgICAgIHJldHVybiB2YWwKLQotICAgICAgICByZXR1cm4gW3RyeWludChjaHVuaykgZm9y
IGNodW5rIGluIHJlLnNwbGl0KCcoXGQrKScsIHN0cmluZ190b19zcGxpdCldCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRf
dGVzdF9ydW5uZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5uZXJfdW5pdHRlc3QucHkKaW5kZXggMjM4
ODVlMTgyMjA3OTZiZDk3ZGFlMDk2YTlmNjZiZWY4MTg3MGFmYi4uNGI4OGZhZTI1YTdkMDllYzRl
YTk4Y2ZlM2NlZTg5N2I5NWNiMTEyMyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfcnVubmVyX3VuaXR0ZXN0LnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xh
eW91dF90ZXN0X3J1bm5lcl91bml0dGVzdC5weQpAQCAtMzMwLDQzICszMzAsMyBAQCBjbGFzcyBT
aGFyZGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgICAgJ2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL3dlYnNvY2tldC1wcm90b2NvbC1pZ25vcmVkLmh0bWwnLAogICAg
ICAgICAgICAgICAgJ2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc3VwcG9ydGVkLXhtbC1jb250
ZW50LXR5cGVzLmh0bWwnLAogICAgICAgICAgICAgICAgJ3BlcmYvb2JqZWN0LWtleXMuaHRtbCdd
KV0pCi0KLQotY2xhc3MgTmF0dXJhbENvbXBhcmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAg
ICBkZWYgYXNzZXJ0X2NtcChzZWxmLCB4LCB5LCByZXN1bHQpOgotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNtcChTaGFyZGVyLm5hdHVyYWxfc29ydF9rZXkoeCksIFNoYXJkZXIubmF0dXJhbF9z
b3J0X2tleSh5KSksIHJlc3VsdCkKLQotICAgIGRlZiB0ZXN0X25hdHVyYWxfY29tcGFyZShzZWxm
KToKLSAgICAgICAgc2VsZi5hc3NlcnRfY21wKCdhJywgJ2EnLCAwKQotICAgICAgICBzZWxmLmFz
c2VydF9jbXAoJ2FiJywgJ2EnLCAxKQotICAgICAgICBzZWxmLmFzc2VydF9jbXAoJ2EnLCAnYWIn
LCAtMSkKLSAgICAgICAgc2VsZi5hc3NlcnRfY21wKCcnLCAnJywgMCkKLSAgICAgICAgc2VsZi5h
c3NlcnRfY21wKCcnLCAnYWInLCAtMSkKLSAgICAgICAgc2VsZi5hc3NlcnRfY21wKCcxJywgJzIn
LCAtMSkKLSAgICAgICAgc2VsZi5hc3NlcnRfY21wKCcyJywgJzEnLCAxKQotICAgICAgICBzZWxm
LmFzc2VydF9jbXAoJzEnLCAnMTAnLCAtMSkKLSAgICAgICAgc2VsZi5hc3NlcnRfY21wKCcyJywg
JzEwJywgLTEpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnZm9vXzEuaHRtbCcsICdmb29fMi5o
dG1sJywgLTEpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnZm9vXzEuMS5odG1sJywgJ2Zvb18y
Lmh0bWwnLCAtMSkKLSAgICAgICAgc2VsZi5hc3NlcnRfY21wKCdmb29fMS5odG1sJywgJ2Zvb18x
MC5odG1sJywgLTEpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnZm9vXzIuaHRtbCcsICdmb29f
MTAuaHRtbCcsIC0xKQotICAgICAgICBzZWxmLmFzc2VydF9jbXAoJ2Zvb18yMy5odG1sJywgJ2Zv
b18xMC5odG1sJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRfY21wKCdmb29fMjMuaHRtbCcsICdm
b29fMTAwLmh0bWwnLCAtMSkKLQotCi1jbGFzcyBLZXlDb21wYXJlVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLnNoYXJkZXIgPSBTaGFy
ZGVyKDEpCi0KLSAgICBkZWYgYXNzZXJ0X2NtcChzZWxmLCB4LCB5LCByZXN1bHQpOgotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNtcChzZWxmLnNoYXJkZXIudGVzdF9rZXkoeCksIHNlbGYuc2hh
cmRlci50ZXN0X2tleSh5KSksIHJlc3VsdCkKLQotICAgIGRlZiB0ZXN0X3Rlc3Rfa2V5KHNlbGYp
OgotICAgICAgICBzZWxmLmFzc2VydF9jbXAoJy9hJywgJy9hJywgMCkKLSAgICAgICAgc2VsZi5h
c3NlcnRfY21wKCcvYScsICcvYicsIC0xKQotICAgICAgICBzZWxmLmFzc2VydF9jbXAoJy9hMics
ICcvYTEwJywgLTEpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnL2EyL2ZvbycsICcvYTEwL2Zv
bycsIC0xKQotICAgICAgICBzZWxmLmFzc2VydF9jbXAoJy9hL2ZvbzExJywgJy9hL2ZvbzInLCAx
KQotICAgICAgICBzZWxmLmFzc2VydF9jbXAoJy9hYicsICcvYS9hL2InLCAtMSkKLSAgICAgICAg
c2VsZi5hc3NlcnRfY21wKCcvYS9hL2InLCAnL2FiJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRf
Y21wKCcvZm9vLWJhci9iYXonLCAnL2Zvby9iYXonLCAtMSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5Cmlu
ZGV4IGIxZmIxMDRmYzczMjY5MGI3NmRkMjdlZDA0NGVkMThkZTFlNTUwNjMuLjQyYzhmYzRmOTg5
ZGM1OGFhNGViOWQ2NGNlOWM1YWJmYThmOTVlYWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQpAQCAt
NDQsNyArNDQsNyBAQCBpbXBvcnQgcmUKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiAKLWZyb20g
d2Via2l0cHkuY29tbW9uIGltcG9ydCBtZXNzYWdlX3Bvb2wsIHRlc3RfbmFtZQorZnJvbSB3ZWJr
aXRweS5jb21tb24gaW1wb3J0IG1lc3NhZ2VfcG9vbCwgbmF0dXJhbF9vcmRlciwgdGVzdF9uYW1l
CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycy5sYXlvdXRfdGVzdF9maW5k
ZXIgaW1wb3J0IExheW91dFRlc3RGaW5kZXIKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmNv
bnRyb2xsZXJzLmxheW91dF90ZXN0X3J1bm5lciBpbXBvcnQgTGF5b3V0VGVzdFJ1bm5lciwgVGVz
dFJ1bkludGVycnVwdGVkRXhjZXB0aW9uLCBXb3JrZXJFeGNlcHRpb24KIGZyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLmNvbnRyb2xsZXJzLnRlc3RfcmVzdWx0X3dyaXRlciBpbXBvcnQgVGVzdFJl
c3VsdFdyaXRlcgpAQCAtMzEyLDcgKzMxMiw3IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAg
ICAgICAgaWYgc2VsZi5fb3B0aW9ucy5yYW5kb21pemVfb3JkZXI6CiAgICAgICAgICAgICByYW5k
b20uc2h1ZmZsZShzZWxmLl90ZXN0X25hbWVzKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAg
c2VsZi5fdGVzdF9uYW1lcy5zb3J0KGtleT1zZWxmLl9ydW5uZXIudGVzdF9rZXkpCisgICAgICAg
ICAgICBzZWxmLl90ZXN0X25hbWVzLnNvcnQoa2V5PW5hdHVyYWxfb3JkZXIudGVzdF9uYW1lX2tl
eSkKIAogICAgICAgICBzZWxmLl90ZXN0X25hbWVzLCB0ZXN0c19pbl9vdGhlcl9jaHVua3MgPSBz
ZWxmLl9maW5kZXIuc3BsaXRfaW50b19jaHVua3Moc2VsZi5fdGVzdF9uYW1lcykKICAgICAgICAg
c2VsZi5fZXhwZWN0YXRpb25zLmFkZF9za2lwcGVkX3Rlc3RzKHRlc3RzX2luX290aGVyX2NodW5r
cykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175949</attachid>
            <date>2012-11-26 02:45:40 -0800</date>
            <delta_ts>2013-04-08 10:35:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102401-20121126114318.patch</filename>
            <type>text/plain</type>
            <size>9765</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NjkyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODgwM2E2ZjQ3YTM3YjFiZTk2YWQ1ZjAzZTQ1MjNkZGEx
NGJmMjI4OC4uNjlhMTMyNDYwZGIxYWFiMGM2NjQwMGExOTYyOGRhZDg2NDg5YTY2NSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1
IEBACisyMDEyLTExLTI2ICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisK
KyAgICAgICAgTW92ZSBuYXR1cmFsIHNvcnRpbmcgdG8gYSBzZXBhcmF0ZSBtb2R1bGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjQwMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIG5hdHVy
YWwgc29ydGluZyBrZXkgdG8gYSBzZXBhcmF0ZSBtb2R1bGUuIFRoZSB1bml0IHRlc3QgZm9yIGl0
CisgICAgICAgIGlzIG1vdmVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIGZpbGUgYXMgd2VsbC4KKwor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25hdHVyYWxfc29ydC5weTogQWRkZWQu
CisgICAgICAgIChzb3J0X2tleSk6CisgICAgICAgIChzb3J0X2tleS50cnlpbnQpOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25hdHVyYWxfc29ydF91bml0dGVzdC5weTogQWRk
ZWQuCisgICAgICAgIChOYXR1cmFsU29ydFRlc3QpOgorICAgICAgICAoTmF0dXJhbFNvcnRUZXN0
LmFzc2VydF9jbXApOgorICAgICAgICAoTmF0dXJhbFNvcnRUZXN0LnRlc3RfbmF0dXJhbF9jb21w
YXJlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2Uu
cHk6CisgICAgICAgIChQb3J0LnRlc3Rfa2V5KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHk6CisgICAgICAgIChQb3J0VGVzdC50
ZXN0X2RvbnRfcmVxdWlyZV9odHRwX3NlcnZlcik6CisKIDIwMTItMTEtMjQgIFphbiBEb2JlcnNl
ayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KIAogICAgICAgICBBZGQgdGhlIC0tb3JkZXIgb3B0
aW9uIHRvIE5SV1QKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25h
dHVyYWxfc29ydC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25hdHVyYWxfc29y
dC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42OTY1ZWEwZjNmMWU4OWU4ZTA0ZWFlOTBhNjJlYWVkMmYyZTI3MDc4
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmF0dXJh
bF9zb3J0LnB5CkBAIC0wLDAgKzEsNDUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIEdvb2dsZSBu
YW1lIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHJlCisKKworZGVm
IHNvcnRfa2V5KHN0cmluZ190b19zcGxpdCk6CisgICAgIiIiIFR1cm5zIGEgc3RyaW5nIGludG8g
YSBsaXN0IG9mIHN0cmluZyBhbmQgbnVtYmVyIGNodW5rcywgaS5lLiAiejIzYSIgLT4gWyJ6Iiwg
MjMsICJhIl0KKworICAgIFRoaXMgY2FuIGJlIHVzZWQgdG8gaW1wbGVtZW50ICJuYXR1cmFsIHNv
cnQiIG9yZGVyLiBTZWU6CisgICAgaHR0cDovL3d3dy5jb2Rpbmdob3Jyb3IuY29tL2Jsb2cvMjAw
Ny8xMi9zb3J0aW5nLWZvci1odW1hbnMtbmF0dXJhbC1zb3J0LW9yZGVyLmh0bWwKKyAgICBodHRw
Oi8vbmVkYmF0Y2hlbGRlci5jb20vYmxvZy8yMDA3MTIuaHRtbCNlMjAwNzEyMTFUMDU0OTU2Cisg
ICAgIiIiCisgICAgZGVmIHRyeWludCh2YWwpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBy
ZXR1cm4gaW50KHZhbCkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICBy
ZXR1cm4gdmFsCisKKyAgICByZXR1cm4gW3RyeWludChjaHVuaykgZm9yIGNodW5rIGluIHJlLnNw
bGl0KCcoXGQrKScsIHN0cmluZ190b19zcGxpdCldCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uYXR1cmFsX3NvcnRfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uYXR1cmFsX3NvcnRfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQx
YTg0YThlMmMxNTZkYzllNzM5NjQzODUzZWUzY2QzOTk4YTVmNwotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25hdHVyYWxfc29ydF91bml0dGVzdC5weQpA
QCAtMCwwICsxLDUzIEBACisjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6Cisj
CisjICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisj
IGRpc3RyaWJ1dGlvbi4KKyMgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
IyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20g
d2Via2l0cHkuY29tbW9uIGltcG9ydCBuYXR1cmFsX3NvcnQKKworCitjbGFzcyBOYXR1cmFsU29y
dFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBhc3NlcnRfY21wKHNlbGYsIHgsIHks
IHJlc3VsdCk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21wKG5hdHVyYWxfc29ydC5zb3J0
X2tleSh4KSwgbmF0dXJhbF9zb3J0LnNvcnRfa2V5KHkpKSwgcmVzdWx0KQorCisgICAgZGVmIHRl
c3RfbmF0dXJhbF9jb21wYXJlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9jbXAoJ2EnLCAn
YScsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnYWInLCAnYScsIDEpCisgICAgICAgIHNl
bGYuYXNzZXJ0X2NtcCgnYScsICdhYicsIC0xKQorICAgICAgICBzZWxmLmFzc2VydF9jbXAoJycs
ICcnLCAwKQorICAgICAgICBzZWxmLmFzc2VydF9jbXAoJycsICdhYicsIC0xKQorICAgICAgICBz
ZWxmLmFzc2VydF9jbXAoJzEnLCAnMicsIC0xKQorICAgICAgICBzZWxmLmFzc2VydF9jbXAoJzIn
LCAnMScsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnMScsICcxMCcsIC0xKQorICAgICAg
ICBzZWxmLmFzc2VydF9jbXAoJzInLCAnMTAnLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfY21w
KCdmb29fMS5odG1sJywgJ2Zvb18yLmh0bWwnLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfY21w
KCdmb29fMS4xLmh0bWwnLCAnZm9vXzIuaHRtbCcsIC0xKQorICAgICAgICBzZWxmLmFzc2VydF9j
bXAoJ2Zvb18xLmh0bWwnLCAnZm9vXzEwLmh0bWwnLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRf
Y21wKCdmb29fMi5odG1sJywgJ2Zvb18xMC5odG1sJywgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0
X2NtcCgnZm9vXzIzLmh0bWwnLCAnZm9vXzEwLmh0bWwnLCAxKQorICAgICAgICBzZWxmLmFzc2Vy
dF9jbXAoJ2Zvb18yMy5odG1sJywgJ2Zvb18xMDAuaHRtbCcsIC0xKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CmluZGV4IDhjNDU3OGRiZmE3
YzM4MzJiZjViNzk3ODA0MDExNDU5MmRhMmRiYTkuLmU4NzAxMGYwOTcyYWFmOWEzNzM0MzhiYWRi
ZjA0YTNjODk0MTg4ZDUgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvYmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Jhc2UucHkKQEAgLTQ5LDYgKzQ5LDcgQEAgZXhjZXB0IEltcG9ydEVycm9yOgog
CiAKIGZyb20gd2Via2l0cHkuY29tbW9uIGltcG9ydCBmaW5kX2ZpbGVzCitmcm9tIHdlYmtpdHB5
LmNvbW1vbiBpbXBvcnQgbmF0dXJhbF9zb3J0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQg
cmVhZF9jaGVja3N1bV9mcm9tX3BuZwogZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1w
b3J0IG1lbW9pemVkCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IHBhdGgKQEAg
LTYzMywyMiArNjM0LDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICBkaXJlY3Rvcnkg
YXJlIGtlcHQgdG9nZXRoZXIgcmF0aGVyIHRoYW4gYmVpbmcgbWl4ZWQgaW4gd2l0aCBmaWxlcyBp
bgogICAgICAgICBzdWJkaXJlY3Rvcmllcy4iIiIKICAgICAgICAgZGlybmFtZSwgYmFzZW5hbWUg
PSBzZWxmLnNwbGl0X3Rlc3QodGVzdF9uYW1lKQotICAgICAgICByZXR1cm4gKHNlbGYuX25hdHVy
YWxfc29ydF9rZXkoZGlybmFtZSArIHNlbGYuVEVTVF9QQVRIX1NFUEFSQVRPUiksIHNlbGYuX25h
dHVyYWxfc29ydF9rZXkoYmFzZW5hbWUpKQotCi0gICAgZGVmIF9uYXR1cmFsX3NvcnRfa2V5KHNl
bGYsIHN0cmluZ190b19zcGxpdCk6Ci0gICAgICAgICIiIiBUdXJucyBhIHN0cmluZyBpbnRvIGEg
bGlzdCBvZiBzdHJpbmcgYW5kIG51bWJlciBjaHVua3MsIGkuZS4gInoyM2EiIC0+IFsieiIsIDIz
LCAiYSJdCi0KLSAgICAgICAgVGhpcyBjYW4gYmUgdXNlZCB0byBpbXBsZW1lbnQgIm5hdHVyYWwg
c29ydCIgb3JkZXIuIFNlZToKLSAgICAgICAgaHR0cDovL3d3dy5jb2Rpbmdob3Jyb3IuY29tL2Js
b2cvMjAwNy8xMi9zb3J0aW5nLWZvci1odW1hbnMtbmF0dXJhbC1zb3J0LW9yZGVyLmh0bWwKLSAg
ICAgICAgaHR0cDovL25lZGJhdGNoZWxkZXIuY29tL2Jsb2cvMjAwNzEyLmh0bWwjZTIwMDcxMjEx
VDA1NDk1NgotICAgICAgICAiIiIKLSAgICAgICAgZGVmIHRyeWludCh2YWwpOgotICAgICAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgICAgIHJldHVybiBpbnQodmFsKQotICAgICAgICAgICAgZXhj
ZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbAotCi0gICAgICAgIHJl
dHVybiBbdHJ5aW50KGNodW5rKSBmb3IgY2h1bmsgaW4gcmUuc3BsaXQoJyhcZCspJywgc3RyaW5n
X3RvX3NwbGl0KV0KKyAgICAgICAgcmV0dXJuIChuYXR1cmFsX3NvcnQuc29ydF9rZXkoZGlybmFt
ZSArIHNlbGYuVEVTVF9QQVRIX1NFUEFSQVRPUiksIG5hdHVyYWxfc29ydC5zb3J0X2tleShiYXNl
bmFtZSkpCiAKICAgICBkZWYgdGVzdF9kaXJzKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm5zIHRo
ZSBsaXN0IG9mIHRvcC1sZXZlbCB0ZXN0IGRpcmVjdG9yaWVzLiIiIgpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5
CmluZGV4IGJjYzY0YjYwMTQ4NmYyNzVlYjcwMzk5MTRhMDRmMzY1ODM5YjZlZmYuLmU0YTZmNmU5
ODIzYjkwMGRmNWUxNmQ1ZTBjYTMzYWMwZjk4M2FhMjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHkKQEAg
LTQ1NSwzMiArNDU1LDYgQEAgY2xhc3MgUG9ydFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAg
ICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBv
cnQucmVxdWlyZXNfaHR0cF9zZXJ2ZXIoKSwgRmFsc2UpCiAKLQotY2xhc3MgTmF0dXJhbENvbXBh
cmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAg
IHNlbGYuX3BvcnQgPSBUZXN0UG9ydChNb2NrU3lzdGVtSG9zdCgpKQotCi0gICAgZGVmIGFzc2Vy
dF9jbXAoc2VsZiwgeCwgeSwgcmVzdWx0KToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXAo
c2VsZi5fcG9ydC5fbmF0dXJhbF9zb3J0X2tleSh4KSwgc2VsZi5fcG9ydC5fbmF0dXJhbF9zb3J0
X2tleSh5KSksIHJlc3VsdCkKLQotICAgIGRlZiB0ZXN0X25hdHVyYWxfY29tcGFyZShzZWxmKToK
LSAgICAgICAgc2VsZi5hc3NlcnRfY21wKCdhJywgJ2EnLCAwKQotICAgICAgICBzZWxmLmFzc2Vy
dF9jbXAoJ2FiJywgJ2EnLCAxKQotICAgICAgICBzZWxmLmFzc2VydF9jbXAoJ2EnLCAnYWInLCAt
MSkKLSAgICAgICAgc2VsZi5hc3NlcnRfY21wKCcnLCAnJywgMCkKLSAgICAgICAgc2VsZi5hc3Nl
cnRfY21wKCcnLCAnYWInLCAtMSkKLSAgICAgICAgc2VsZi5hc3NlcnRfY21wKCcxJywgJzInLCAt
MSkKLSAgICAgICAgc2VsZi5hc3NlcnRfY21wKCcyJywgJzEnLCAxKQotICAgICAgICBzZWxmLmFz
c2VydF9jbXAoJzEnLCAnMTAnLCAtMSkKLSAgICAgICAgc2VsZi5hc3NlcnRfY21wKCcyJywgJzEw
JywgLTEpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnZm9vXzEuaHRtbCcsICdmb29fMi5odG1s
JywgLTEpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnZm9vXzEuMS5odG1sJywgJ2Zvb18yLmh0
bWwnLCAtMSkKLSAgICAgICAgc2VsZi5hc3NlcnRfY21wKCdmb29fMS5odG1sJywgJ2Zvb18xMC5o
dG1sJywgLTEpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnZm9vXzIuaHRtbCcsICdmb29fMTAu
aHRtbCcsIC0xKQotICAgICAgICBzZWxmLmFzc2VydF9jbXAoJ2Zvb18yMy5odG1sJywgJ2Zvb18x
MC5odG1sJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRfY21wKCdmb29fMjMuaHRtbCcsICdmb29f
MTAwLmh0bWwnLCAtMSkKLQotCiBjbGFzcyBLZXlDb21wYXJlVGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLl9wb3J0ID0gVGVzdFBvcnQo
TW9ja1N5c3RlbUhvc3QoKSkK
</data>
<flag name="review"
          id="191581"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="191582"
          type_id="3"
          status="-"
          setter="dpranke"
    />
          </attachment>
      

    </bug>

</bugzilla>