<?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>20927</bug_id>
          
          <creation_ts>2008-09-18 17:09:05 -0700</creation_ts>
          <short_desc>simplify/streamline the code to turn strings into identifiers while parsing</short_desc>
          <delta_ts>2008-09-18 23:32:48 -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>Mac</rep_platform>
          <op_sys>OS X 10.5</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>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>91700</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-09-18 17:09:05 -0700</bug_when>
    <thetext>The code to parse JavaScript currently creates an unnecessary extra UString and then later turns it into an Identifier. This can be streamlined to be simpler, slightly less code, and slightly faster.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91705</commentid>
    <comment_count>1</comment_count>
      <attachid>23545</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-09-18 17:33:59 -0700</bug_when>
    <thetext>Created attachment 23545
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91706</commentid>
    <comment_count>2</comment_count>
      <attachid>23546</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-09-18 17:35:26 -0700</bug_when>
    <thetext>Created attachment 23546
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91726</commentid>
    <comment_count>3</comment_count>
      <attachid>23546</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-09-18 23:24:21 -0700</bug_when>
    <thetext>Comment on attachment 23546
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91729</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-09-18 23:32:48 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/36660</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23545</attachid>
            <date>2008-09-18 17:33:59 -0700</date>
            <delta_ts>2008-09-18 17:35:26 -0700</delta_ts>
            <desc>patch</desc>
            <filename>IdentPatch.txt</filename>
            <type>text/plain</type>
            <size>16718</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM2NjM0KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMDgtMDktMTggIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIC0gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwOTI3CisgICAgICAgICAgc2ltcGxpZnkvc3RyZWFtbGluZSB0aGUgY29kZSB0byB0dXJuIHN0
cmluZ3MgaW50byBpZGVudGlmaWVycyB3aGlsZSBwYXJzaW5nCisKKyAgICAgICAgKiBranMvZ3Jh
bW1hci55OiBHZXQgcmlkIG9mIHN0cmluZyBmcm9tIHRoZSB1bmlvbiwgYW5kIHVzZSBpZGVudCBm
b3IgU1RSSU5HIGFzCisgICAgICAgIHdlbGwgYXMgZm9yIElERU5ULgorCisgICAgICAgICoga2pz
L2xleGVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGV4ZXI6OmxleCk6IFVzZSBtYWtlSWRlbnRpZmll
ciBpbnN0ZWFkIG9mIG1ha2VVU3RyaW5nIGZvciBTdHJpbmcuCisgICAgICAgICoga2pzL2xleGVy
Lmg6IFJlbW92ZSBtYWtlVVN0cmluZy4KKworICAgICAgICAqIGtqcy9ub2Rlcy5oOiBDaGFuZ2Vk
IFN0cmluZ05vZGUgdG8gaG9sZCBhbiBJZGVudGlmaWVyIGluc3RlYWQgb2YgVVN0cmluZy4KKwor
ICAgICAgICAqIFZNL0NvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjprZXlGb3JDaGFy
YWN0ZXJTd2l0Y2gpOiBVcGRhdGVkIHNpbmNlIFN0cmluZ05vZGUgbm93IGhvbGRzIGFuIElkZW50
aWZpZXIuCisgICAgICAgIChKU0M6OnByZXBhcmVKdW1wVGFibGVGb3JTdHJpbmdTd2l0Y2gpOiBE
aXR0by4KKyAgICAgICAgKiBranMvbm9kZXMuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdOb2Rl
OjplbWl0Q29kZSk6IERpdHRvLiBUaGUgY29tbWVudCBmcm9tIGhlcmUgaXMgbm93IGluIHRoZSBs
ZXhlci4KKyAgICAgICAgKEpTQzo6cHJvY2Vzc0NsYXVzZUxpc3QpOiBEaXR0by4KKyAgICAgICAg
KiBranMvbm9kZXMyc3RyaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nTm9kZTo6c3RyZWFt
VG8pOiBEaXR0by4KKwogMjAwOC0wOS0xOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgLSBmaXggcmVsZWFzZSBidWlsZApJbmRleDogSmF2YVNjcmlwdENvcmUvVk0v
Q29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvVk0vQ29kZUdl
bmVyYXRvci5jcHAJKHJldmlzaW9uIDM2NjMwKQorKysgSmF2YVNjcmlwdENvcmUvVk0vQ29kZUdl
bmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MzAsNyArMTQzMCw3IEBAIHN0YXRpYyBp
bnQzMl90IGtleUZvckNoYXJhY3RlclN3aXRjaChFeHAKIHsKICAgICBVTlVTRURfUEFSQU0obWF4
KTsKICAgICBBU1NFUlQobm9kZS0+aXNTdHJpbmcoKSk7Ci0gICAgVVN0cmluZzo6UmVwKiBjbGF1
c2UgPSBzdGF0aWNfY2FzdDxTdHJpbmdOb2RlKj4obm9kZSktPnZhbHVlKCkucmVwKCk7CisgICAg
VVN0cmluZzo6UmVwKiBjbGF1c2UgPSBzdGF0aWNfY2FzdDxTdHJpbmdOb2RlKj4obm9kZSktPnZh
bHVlKCkudXN0cmluZygpLnJlcCgpOwogICAgIEFTU0VSVChjbGF1c2UtPnNpemUoKSA9PSAxKTsK
ICAgICAKICAgICBpbnQzMl90IGtleSA9IGNsYXVzZS0+ZGF0YSgpWzBdOwpAQCAtMTQ2MCw3ICsx
NDYwLDcgQEAgc3RhdGljIHZvaWQgcHJlcGFyZUp1bXBUYWJsZUZvclN0cmluZ1N3aQogICAgICAg
ICBBU1NFUlQoIWxhYmVsc1tpXS0+aXNGb3J3YXJkTGFiZWwoKSk7CiAgICAgICAgIAogICAgICAg
ICBBU1NFUlQobm9kZXNbaV0tPmlzU3RyaW5nKCkpOwotICAgICAgICBVU3RyaW5nOjpSZXAqIGNs
YXVzZSA9IHN0YXRpY19jYXN0PFN0cmluZ05vZGUqPihub2Rlc1tpXSktPnZhbHVlKCkucmVwKCk7
CisgICAgICAgIFVTdHJpbmc6OlJlcCogY2xhdXNlID0gc3RhdGljX2Nhc3Q8U3RyaW5nTm9kZSo+
KG5vZGVzW2ldKS0+dmFsdWUoKS51c3RyaW5nKCkucmVwKCk7CiAgICAgICAgIE9mZnNldExvY2F0
aW9uIGxvY2F0aW9uOwogICAgICAgICBsb2NhdGlvbi5icmFuY2hPZmZzZXQgPSBsYWJlbHNbaV0t
Pm9mZnNldEZyb20oc3dpdGNoQWRkcmVzcyk7CiAjaWYgRU5BQkxFKENUSSkKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL2tqcy9ncmFtbWFyLnkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pz
L2dyYW1tYXIueQkocmV2aXNpb24gMzY2MzApCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvZ3JhbW1h
ci55CSh3b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQAogCiAvKgogICogIENvcHlyaWdodCAo
QykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0
IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5
cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogIENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgog
ICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCkBAIC0xNTEsNyArMTUxLDYgQEAgc3RhdGljIGlubGluZSB2b2lkIGFwcGVu
ZFRvVmFyRGVjbGFyYXRpbwogJXVuaW9uIHsKICAgICBpbnQgICAgICAgICAgICAgICAgIGludFZh
bHVlOwogICAgIGRvdWJsZSAgICAgICAgICAgICAgZG91YmxlVmFsdWU7Ci0gICAgVVN0cmluZyog
ICAgICAgICAgICBzdHJpbmc7CiAgICAgSWRlbnRpZmllciogICAgICAgICBpZGVudDsKIAogICAg
IC8vIGV4cHJlc3Npb24gc3VidHJlZXMKQEAgLTIxNyw4ICsyMTYsNyBAQCBzdGF0aWMgaW5saW5l
IHZvaWQgYXBwZW5kVG9WYXJEZWNsYXJhdGlvCiAKIC8qIHRlcm1pbmFsIHR5cGVzICovCiAldG9r
ZW4gPGRvdWJsZVZhbHVlPiBOVU1CRVIKLSV0b2tlbiA8c3RyaW5nPiBTVFJJTkcKLSV0b2tlbiA8
aWRlbnQ+IElERU5UCisldG9rZW4gPGlkZW50PiBJREVOVCBTVFJJTkcKIAogLyogYXV0b21hdGlj
YWxseSBpbnNlcnRlZCBzZW1pY29sb24gKi8KICV0b2tlbiBBVVRPUExVU1BMVVMgQVVUT01JTlVT
TUlOVVMKQEAgLTI4NCw3ICsyODIsNyBAQCBMaXRlcmFsOgogICB8IFRSVUVUT0tFTiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVzc2lv
bk5vZGUqPihuZXcgQm9vbGVhbk5vZGUoR0xPQkFMX0RBVEEsIHRydWUpLCAwLCAxKTsgfQogICB8
IEZBTFNFVE9LRU4gICAgICAgICAgICAgICAgICAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVh
dHVyZUluZm88RXhwcmVzc2lvbk5vZGUqPihuZXcgQm9vbGVhbk5vZGUoR0xPQkFMX0RBVEEsIGZh
bHNlKSwgMCwgMSk7IH0KICAgfCBOVU1CRVIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obWFrZU51bWJlck5v
ZGUoR0xPQkFMX0RBVEEsICQxKSwgMCwgMSk7IH0KLSAgfCBTVFJJTkcgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2Rl
Kj4obmV3IFN0cmluZ05vZGUoR0xPQkFMX0RBVEEsICQxKSwgMCwgMSk7IH0KKyAgfCBTVFJJTkcg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZv
PEV4cHJlc3Npb25Ob2RlKj4obmV3IFN0cmluZ05vZGUoR0xPQkFMX0RBVEEsICokMSksIDAsIDEp
OyB9CiAgIHwgJy8nIC8qIHJlZ2V4cCAqLyAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZXhlciYgbCA9ICpMRVhFUjsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsLnNjYW5SZWdF
eHAoKSkKQEAgLTMwNyw3ICszMDUsNyBAQCBMaXRlcmFsOgogCiBQcm9wZXJ0eToKICAgICBJREVO
VCAnOicgQXNzaWdubWVudEV4cHIgICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJ
bmZvPFByb3BlcnR5Tm9kZSo+KG5ldyBQcm9wZXJ0eU5vZGUoR0xPQkFMX0RBVEEsICokMSwgJDMu
bV9ub2RlLCBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50KSwgJDMubV9mZWF0dXJlSW5mbywgJDMubV9u
dW1Db25zdGFudHMpOyB9Ci0gIHwgU1RSSU5HICc6JyBBc3NpZ25tZW50RXhwciAgICAgICAgICAg
eyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxQcm9wZXJ0eU5vZGUqPihuZXcgUHJvcGVydHlO
b2RlKEdMT0JBTF9EQVRBLCBJZGVudGlmaWVyKEdMT0JBTF9EQVRBLCAqJDEpLCAkMy5tX25vZGUs
IFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpLCAkMy5tX2ZlYXR1cmVJbmZvLCAkMy5tX251bUNvbnN0
YW50cyk7IH0KKyAgfCBTVFJJTkcgJzonIEFzc2lnbm1lbnRFeHByICAgICAgICAgICB7ICQkID0g
Y3JlYXRlTm9kZUZlYXR1cmVJbmZvPFByb3BlcnR5Tm9kZSo+KG5ldyBQcm9wZXJ0eU5vZGUoR0xP
QkFMX0RBVEEsICokMSwgJDMubV9ub2RlLCBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50KSwgJDMubV9m
ZWF0dXJlSW5mbywgJDMubV9udW1Db25zdGFudHMpOyB9CiAgIHwgTlVNQkVSICc6JyBBc3NpZ25t
ZW50RXhwciAgICAgICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxQcm9wZXJ0eU5v
ZGUqPihuZXcgUHJvcGVydHlOb2RlKEdMT0JBTF9EQVRBLCBJZGVudGlmaWVyKEdMT0JBTF9EQVRB
LCBVU3RyaW5nOjpmcm9tKCQxKSksICQzLm1fbm9kZSwgUHJvcGVydHlOb2RlOjpDb25zdGFudCks
ICQzLm1fZmVhdHVyZUluZm8sICQzLm1fbnVtQ29uc3RhbnRzKTsgfQogICB8IElERU5UIElERU5U
ICcoJyAnKScgT1BFTkJSQUNFIEZ1bmN0aW9uQm9keSBDTE9TRUJSQUNFICAgIHsgJCQgPSBjcmVh
dGVOb2RlRmVhdHVyZUluZm88UHJvcGVydHlOb2RlKj4obWFrZUdldHRlck9yU2V0dGVyUHJvcGVy
dHlOb2RlKGdsb2JhbFB0ciwgKiQxLCAqJDIsIDAsICQ2LCBMRVhFUi0+c291cmNlUmFuZ2UoJDUs
ICQ3KSksIENsb3N1cmVGZWF0dXJlLCAwKTsgREJHKCQ2LCBANSwgQDcpOyBpZiAoISQkLm1fbm9k
ZSkgWVlBQk9SVDsgfQogICB8IElERU5UIElERU5UICcoJyBGb3JtYWxQYXJhbWV0ZXJMaXN0ICcp
JyBPUEVOQlJBQ0UgRnVuY3Rpb25Cb2R5IENMT1NFQlJBQ0UKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L2tqcy9sZXhlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2xleGVyLmNw
cAkocmV2aXNpb24gMzY2MzApCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvbGV4ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NjcsNyArNTY3LDggQEAgaW50IExleGVyOjpsZXgodm9pZCogcDEsIHZv
aWQqIHAyKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBTdHJp
bmc6Ci0gICAgICAgICAgICBsdmFscC0+c3RyaW5nID0gbWFrZVVTdHJpbmcobV9idWZmZXIxNik7
CisgICAgICAgICAgICAvLyBBdG9taXplIGNvbnN0YW50IHN0cmluZ3MgaW4gY2FzZSB0aGV5J3Jl
IGxhdGVyIHVzZWQgaW4gcHJvcGVydHkgbG9va3VwLgorICAgICAgICAgICAgbHZhbHAtPmlkZW50
ID0gbWFrZUlkZW50aWZpZXIobV9idWZmZXIxNik7CiAgICAgICAgICAgICB0b2tlbiA9IFNUUklO
RzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE51bWJlcjoKQEAgLTkxNiwxMSAr
OTE3LDQgQEAgSWRlbnRpZmllciogTGV4ZXI6Om1ha2VJZGVudGlmaWVyKGNvbnN0IAogICAgIHJl
dHVybiBpZGVudGlmaWVyOwogfQogCi1VU3RyaW5nKiBMZXhlcjo6bWFrZVVTdHJpbmcoY29uc3Qg
VmVjdG9yPFVDaGFyPiYgYnVmZmVyKQotewotICAgIFVTdHJpbmcqIHN0cmluZyA9IG5ldyBVU3Ry
aW5nKGJ1ZmZlcik7Ci0gICAgbV9zdHJpbmdzLmFwcGVuZChzdHJpbmcpOwotICAgIHJldHVybiBz
dHJpbmc7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pz
L2xleGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2xleGVyLmgJKHJldmlz
aW9uIDM2NjMwKQorKysgSmF2YVNjcmlwdENvcmUva2pzL2xleGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTExMyw3ICsxMTMsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCByZWNvcmQx
NihVQ2hhcik7CiAKICAgICAgICAgSlNDOjpJZGVudGlmaWVyKiBtYWtlSWRlbnRpZmllcihjb25z
dCBWZWN0b3I8VUNoYXI+JiBidWZmZXIpOwotICAgICAgICBVU3RyaW5nKiBtYWtlVVN0cmluZyhj
b25zdCBWZWN0b3I8VUNoYXI+JiBidWZmZXIpOwogCiAgICAgICAgIGludCB5eWxpbmVubzsKICAg
ICAgICAgaW50IHl5Y29sdW1uOwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL25vZGVzMnN0cmlu
Zy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL25vZGVzMnN0cmluZy5jcHAJ
KHJldmlzaW9uIDM2NjMwKQorKysgSmF2YVNjcmlwdENvcmUva2pzL25vZGVzMnN0cmluZy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIE51bWJlck5vZGU6OnN0cmVh
bVRvKFNvdXJjZVN0cmVhbSYgCiAKIHZvaWQgU3RyaW5nTm9kZTo6c3RyZWFtVG8oU291cmNlU3Ry
ZWFtJiBzKSBjb25zdAogewotICAgIHMgPDwgJyInIDw8IGVzY2FwZVN0cmluZ0ZvclByZXR0eVBy
aW50aW5nKG1fdmFsdWUpIDw8ICciJzsKKyAgICBzIDw8ICciJyA8PCBlc2NhcGVTdHJpbmdGb3JQ
cmV0dHlQcmludGluZyhtX3ZhbHVlLnVzdHJpbmcoKSkgPDwgJyInOwogfQogCiB2b2lkIFJlZ0V4
cE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSYgcykgY29uc3QKSW5kZXg6IEphdmFTY3JpcHRD
b3JlL2tqcy9ub2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL25vZGVz
LmNwcAkocmV2aXNpb24gMzY2MzApCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNTMsOSArMjUzLDcgQEAgUmVnaXN0ZXJJRCogU3RyaW5nTm9kZTo6
ZW1pdENvZGUoQ29kZUdlbgogewogICAgIGlmIChkc3QgPT0gaWdub3JlZFJlc3VsdCgpKQogICAg
ICAgICByZXR1cm4gMDsKLQotICAgIC8vIFdlIGF0b21pemUgY29uc3RhbnQgc3RyaW5ncywgaW4g
Y2FzZSB0aGV5J3JlIGxhdGVyIHVzZWQgaW4gcHJvcGVydHkgbG9va3VwLgotICAgIHJldHVybiBn
ZW5lcmF0b3IuZW1pdExvYWQoZHN0LCBqc093bmVkU3RyaW5nKGdlbmVyYXRvci5nbG9iYWxFeGVj
KCksIElkZW50aWZpZXIoZ2VuZXJhdG9yLmdsb2JhbEV4ZWMoKSwgbV92YWx1ZSkudXN0cmluZygp
KSk7CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0TG9hZChkc3QsIGpzT3duZWRTdHJpbmcoZ2Vu
ZXJhdG9yLmdsb2JhbEV4ZWMoKSwgbV92YWx1ZS51c3RyaW5nKCkpKTsKIH0KIAogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFJlZ0V4cE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KQEAgLTE0OTQsNyArMTQ5Miw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3ND
bGF1c2VMaXN0KENsYXVzZUxpc3QKICAgICAgICAgICAgICAgICB0eXBlRm9yVGFibGUgPSBTd2l0
Y2hOZWl0aGVyOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgVVN0cmluZyYgdmFsdWUgPSBzdGF0aWNfY2FzdDxTdHJpbmdOb2RlKj4oY2xhdXNlRXhw
cmVzc2lvbiktPnZhbHVlKCk7CisgICAgICAgICAgICBjb25zdCBVU3RyaW5nJiB2YWx1ZSA9IHN0
YXRpY19jYXN0PFN0cmluZ05vZGUqPihjbGF1c2VFeHByZXNzaW9uKS0+dmFsdWUoKS51c3RyaW5n
KCk7CiAgICAgICAgICAgICBpZiAoc2luZ2xlQ2hhcmFjdGVyU3dpdGNoICY9IHZhbHVlLnNpemUo
KSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgaW50MzJfdCBpbnRWYWwgPSB2YWx1ZS5yZXAoKS0+
ZGF0YSgpWzBdOwogICAgICAgICAgICAgICAgIGlmIChpbnRWYWwgPCBtaW5fbnVtKQpJbmRleDog
SmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
a2pzL25vZGVzLmgJKHJldmlzaW9uIDM2NjMwKQorKysgSmF2YVNjcmlwdENvcmUva2pzL25vZGVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxMywyMiArMzEzLDIyIEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgU3RyaW5nTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVi
bGljOgotICAgICAgICBTdHJpbmdOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3Qg
VVN0cmluZyogdikgSlNDX0ZBU1RfQ0FMTAorICAgICAgICBTdHJpbmdOb2RlKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgdikgSlNDX0ZBU1RfQ0FMTAogICAgICAg
ICAgICAgOiBFeHByZXNzaW9uTm9kZShnbG9iYWxEYXRhLCBTdHJpbmdUeXBlKQotICAgICAgICAg
ICAgLCBtX3ZhbHVlKCp2KQorICAgICAgICAgICAgLCBtX3ZhbHVlKHYpCiAgICAgICAgIHsKICAg
ICAgICAgfQogCiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCkgSlNDX0ZBU1RfQ0FMTDsKICAgICAgICAgCiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc1N0cmluZygpIGNvbnN0IEpTQ19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1
ZTsgfQotICAgICAgICBVU3RyaW5nJiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICAg
ICAgY29uc3QgSWRlbnRpZmllciYgdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc1B1cmUoQ29kZUdlbmVyYXRvciYpIGNvbnN0IEpTQ19GQVNUX0NBTEwg
eyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3Ry
ZWFtJikgY29uc3QgSlNDX0ZBU1RfQ0FMTDsKICAgICAgICAgdmlydHVhbCBQcmVjZWRlbmNlIHBy
ZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjUHJpbWFyeTsgfQogCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgVVN0cmluZyBtX3ZhbHVlOworICAgICAgICBJZGVudGlmaWVyIG1fdmFsdWU7CiAg
ICAgfTsKICAgICAKICAgICBjbGFzcyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CkluZGV4OiBX
ZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNp
b24gMzY2MzApCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE4IEBACisyMDA4LTA5LTE4ICBEYXJpbiBBZGxlciAgPHNldCBFTUFJTF9BRERSRVNTIGVudmly
b25tZW50IHZhcmlhYmxlPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFdBUk5JTkc6IE5PIFRFU1QgQ0FTRVMgQURERUQgT1IgQ0hBTkdFRAorCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Y3VzdG9tUHV0KToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlR2xv
YmFsT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRCYXNl
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRCYXNlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0hUTUxJbnB1dEVsZW1lbnRCYXNlUHJvdG90eXBlOjpzZWxmKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKwogMjAwOC0w
OS0xOCAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIgIDx6ZWNrZUBzZWxmaXNoLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBNYXJrIFJvd2UuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiAzNjYz
MCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDEzICsxNjIsMTQgQEAgYm9vbCBKU0NTU1N0eWxlRGVj
bGFyYXRpb246OmN1c3RvbVB1dChFeAogICAgIGlmICghaXNDU1NQcm9wZXJ0eU5hbWUocHJvcGVy
dHlOYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRE9NRXhjZXB0aW9uVHJhbnNs
YXRvciBleGNlcHRpb24oZXhlYyk7CiAgICAgYm9vbCBwaXhlbE9yUG9zOwogICAgIFN0cmluZyBw
cm9wID0gY3NzUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSwgJnBpeGVsT3JQb3MpOwogICAgIFN0
cmluZyBwcm9wVmFsdWUgPSB2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhleGVjLCB2YWx1ZSk7
CiAgICAgaWYgKHBpeGVsT3JQb3MpCiAgICAgICAgIHByb3BWYWx1ZSArPSAicHgiOwotICAgIGlt
cGwoKS0+c2V0UHJvcGVydHkocHJvcCwgcHJvcFZhbHVlLCBleGNlcHRpb24pOworICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOworICAgIGltcGwoKS0+c2V0UHJvcGVydHkocHJvcCwgcHJvcFZhbHVl
LCBlYyk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCShyZXZpc2lvbiAzNjYzMCkK
KysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE0Niw2ICsxNDYsMjYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgSlNDOjpFeGVjU3Rh
dGUqIGV4ZWNTdGF0ZUZyb21Ob2RlKE5vZGUqKTsKIAorICAgIC8qIFRoaXMgdGVtcGxhdGUgbWV0
aG9kIHJldHJpZXZlcyBvciBjcmVhdGUgYW4gb2JqZWN0IHRoYXQgaXMgdW5pcXVlCisgICAgICog
KGZvciBhIGdpdmVuIGdsb2JhbCBvYmplY3QpIFRoZSBmaXJzdCB0aW1lIHRoaXMgaXMgY2FsbGVk
IChmb3IgYSBnaXZlbgorICAgICAqIHByb3BlcnR5IG5hbWUpLCB0aGUgb2JqZWN0IHdpbGwgYmUg
Y29uc3RydWN0ZWQsIGFuZCBzZXQgYXMgYSBwcm9wZXJ0eQorICAgICAqIG9mIHRoZSBnbG9iYWwg
b2JqZWN0LiBMYXRlciBjYWxscyB3aWxsIHNpbXBseSByZXRyaWV2ZSB0aGF0IGNhY2hlZCBvYmpl
Y3QuIAorICAgICAqIE5vdGUgdGhhdCB0aGUgb2JqZWN0IGNvbnN0cnVjdG9yIG11c3QgdGFrZSAx
IGFyZ3VtZW50LCBleGVjLgorICAgICAqLworICAgIHRlbXBsYXRlIDxjbGFzcyBDbGFzc0N0b3I+
CisgICAgaW5saW5lIEpTQzo6SlNPYmplY3QqIGNhY2hlR2xvYmFsT2JqZWN0KEpTQzo6RXhlY1N0
YXRlKiBleGVjLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKKyAgICB7Cisg
ICAgICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKTsKKyAgICAgICAgSlNDOjpKU1ZhbHVlKiBvYmogPSBnbG9iYWxPYmplY3Qt
PmdldERpcmVjdChwcm9wZXJ0eU5hbWUpOworICAgICAgICBpZiAob2JqKSB7CisgICAgICAgICAg
ICBBU1NFUlQob2JqLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxKU0M6OkpTT2JqZWN0Kj4ob2JqKTsKKyAgICAgICAgfQorICAgICAgICBKU0M6OkpTT2JqZWN0
KiBuZXdPYmplY3QgPSBuZXcgKGV4ZWMpIENsYXNzQ3RvcihleGVjKTsKKyAgICAgICAgZ2xvYmFs
T2JqZWN0LT5wdXREaXJlY3QocHJvcGVydHlOYW1lLCBuZXdPYmplY3QsIEpTQzo6RG9udEVudW0p
OworICAgICAgICByZXR1cm4gbmV3T2JqZWN0OworICAgIH0KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gSlNET01CaW5kaW5nX2gKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MSW5wdXRFbGVtZW50QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRCYXNlLmNwcAkocmV2aXNpb24gMzY2MzApCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEJhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00OCw4ICs0OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEBlbmQKICovCiAKLUpT
Q19JTVBMRU1FTlRfUFJPVE9UWVBFKCJIVE1MSW5wdXRFbGVtZW50QmFzZSIsIEpTSFRNTElucHV0
RWxlbWVudEJhc2VQcm90b3R5cGUpCi0KIC8vIFNldFNlbGVjdGlvblJhbmdlIGlzIGltcGxlbWVu
dGVkIG9uIHRoZSBjbGFzcyBpbnN0ZWFkIG9mIG9uIHRoZSBwcm90b3R5cGUKIC8vIHRvIG1ha2Ug
aXQgZWFzaWVyIHRvIGVuYWJsZS9kaXNhYmxlIGxvb2t1cCBvZiB0aGUgZnVuY3Rpb24gYmFzZWQg
b24gaW5wdXQgdHlwZS4KIEpTVmFsdWUqIGpzSFRNTElucHV0RWxlbWVudEJhc2VGdW5jdGlvblNl
dFNlbGVjdGlvblJhbmdlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBKU1ZhbHVlKiB0aGlz
VmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTElucHV0RWxlbWVudEJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTElucHV0RWxlbWVudEJhc2UuaAkocmV2aXNpb24gMzY2MzApCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4K
KyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIxLDI3ICsyMSwyOSBAQAogI2RlZmluZSBKU0hU
TUxJbnB1dEVsZW1lbnRCYXNlX2gKIAogI2luY2x1ZGUgIkpTSFRNTEVsZW1lbnQuaCIKLSNpbmNs
dWRlICJKU0RPTUJpbmRpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3Mg
SFRNTElucHV0RWxlbWVudDsKIAotICAgIEpTQ19ERUZJTkVfUFJPVE9UWVBFX1dJVEhfUFJPVE9U
WVBFKEpTSFRNTElucHV0RWxlbWVudEJhc2VQcm90b3R5cGUsIEpTSFRNTEVsZW1lbnRQcm90b3R5
cGUpCi0KICAgICBjbGFzcyBKU0hUTUxJbnB1dEVsZW1lbnRCYXNlIDogcHVibGljIEpTSFRNTEVs
ZW1lbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgSlNIVE1MSW5wdXRFbGVtZW50QmFzZShKU0M6
OkpTT2JqZWN0KiBwcm90b3R5cGUsIFBhc3NSZWZQdHI8SFRNTElucHV0RWxlbWVudD4pOwogCiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgICAgICBKU0M6
OkpTVmFsdWUqIGdldFZhbHVlUHJvcGVydHkoSlNDOjpFeGVjU3RhdGUqLCBpbnQgdG9rZW4pIGNv
bnN0OwotICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlND
OjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUqLCBKU0M6OlB1dFByb3BlcnR5U2xv
dCYgc2xvdCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoSlNDOjpFeGVjU3RhdGUqLCBjb25z
dCBKU0M6OklkZW50aWZpZXImLCBKU1ZhbHVlKiwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKICAg
ICAgICAgdm9pZCBwdXRWYWx1ZVByb3BlcnR5KEpTQzo6RXhlY1N0YXRlKiwgaW50IHRva2VuLCBK
U0M6OkpTVmFsdWUqKTsKICAgICAgICAgdmlydHVhbCBjb25zdCBKU0M6OkNsYXNzSW5mbyogY2xh
c3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnNfaW5mbzsgfQogICAgICAgICBzdGF0aWMgY29uc3Qg
SlNDOjpDbGFzc0luZm8gc19pbmZvOwogICAgICAgICBlbnVtIHsgU2VsZWN0aW9uU3RhcnQsIFNl
bGVjdGlvbkVuZCB9OwogICAgIH07CiAKKyAgICBjbGFzcyBKU0hUTUxJbnB1dEVsZW1lbnRCYXNl
UHJvdG90eXBlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBz
ZWxmKEpTQzo6RXhlY1N0YXRlKiBleGVjKSB7IHJldHVybiBKU0hUTUxFbGVtZW50UHJvdG90eXBl
OjpzZWxmKGV4ZWMpOyB9CisgICAgfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gSlNIVE1MSW5wdXRFbGVtZW50QmFzZV9oCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDM2NjMwKQorKysgV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtODY3
LDcgKzg2Nyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiSlNPYmplY3QqICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6c2VsZihFeGVjU3Rh
dGUqIGV4ZWMpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc3RhdGljIGNvbnN0IElkZW50aWZpZXIqIHByb3Rv
dHlwZUlkZW50aWZpZXIgPSBuZXcgSWRlbnRpZmllcihleGVjLCBcIltbJHtjbGFzc05hbWV9LnBy
b3RvdHlwZV1dXCIpO1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVy
biBKU0M6OmNhY2hlR2xvYmFsT2JqZWN0PCR7Y2xhc3NOYW1lfVByb3RvdHlwZT4oZXhlYywgKnBy
b3RvdHlwZUlkZW50aWZpZXIpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHJldHVybiBjYWNoZUdsb2JhbE9iamVjdDwke2NsYXNzTmFtZX1Qcm90b3R5cGU+KGV4ZWMsICpw
cm90b3R5cGVJZGVudGlmaWVyKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1c
blxuIik7CiAgICAgfQogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IikgewpA
QCAtMTIwOCw3ICsxMjA4LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBpZiAo
JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiR2VuZXJhdGVDb25zdHJ1Y3RvciJ9KSB7
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNWYWx1ZSogJHtjbGFzc05hbWV9OjpnZXRD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpXG57XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgc3RhdGljIGNvbnN0IElkZW50aWZpZXIqIGNvbnN0cnVjdG9ySWRlbnRpZmll
ciA9IG5ldyBJZGVudGlmaWVyKGV4ZWMsIFwiW1ske2ludGVyZmFjZU5hbWV9LmNvbnN0cnVjdG9y
XV1cIik7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTQzo6
Y2FjaGVHbG9iYWxPYmplY3Q8JHtjbGFzc05hbWV9Q29uc3RydWN0b3I+KGV4ZWMsICpjb25zdHJ1
Y3RvcklkZW50aWZpZXIpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJl
dHVybiBjYWNoZUdsb2JhbE9iamVjdDwke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcj4oZXhlYywgKmNv
bnN0cnVjdG9ySWRlbnRpZmllcik7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9
XG5cbiIpOwogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23546</attachid>
            <date>2008-09-18 17:35:26 -0700</date>
            <delta_ts>2008-09-18 23:24:21 -0700</delta_ts>
            <desc>patch</desc>
            <filename>IdentPatch.txt</filename>
            <type>text/plain</type>
            <size>9682</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM2NjM0KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMDgtMDktMTggIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIC0gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwOTI3CisgICAgICAgICAgc2ltcGxpZnkvc3RyZWFtbGluZSB0aGUgY29kZSB0byB0dXJuIHN0
cmluZ3MgaW50byBpZGVudGlmaWVycyB3aGlsZSBwYXJzaW5nCisKKyAgICAgICAgKiBranMvZ3Jh
bW1hci55OiBHZXQgcmlkIG9mIHN0cmluZyBmcm9tIHRoZSB1bmlvbiwgYW5kIHVzZSBpZGVudCBm
b3IgU1RSSU5HIGFzCisgICAgICAgIHdlbGwgYXMgZm9yIElERU5ULgorCisgICAgICAgICoga2pz
L2xleGVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGV4ZXI6OmxleCk6IFVzZSBtYWtlSWRlbnRpZmll
ciBpbnN0ZWFkIG9mIG1ha2VVU3RyaW5nIGZvciBTdHJpbmcuCisgICAgICAgICoga2pzL2xleGVy
Lmg6IFJlbW92ZSBtYWtlVVN0cmluZy4KKworICAgICAgICAqIGtqcy9ub2Rlcy5oOiBDaGFuZ2Vk
IFN0cmluZ05vZGUgdG8gaG9sZCBhbiBJZGVudGlmaWVyIGluc3RlYWQgb2YgVVN0cmluZy4KKwor
ICAgICAgICAqIFZNL0NvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjprZXlGb3JDaGFy
YWN0ZXJTd2l0Y2gpOiBVcGRhdGVkIHNpbmNlIFN0cmluZ05vZGUgbm93IGhvbGRzIGFuIElkZW50
aWZpZXIuCisgICAgICAgIChKU0M6OnByZXBhcmVKdW1wVGFibGVGb3JTdHJpbmdTd2l0Y2gpOiBE
aXR0by4KKyAgICAgICAgKiBranMvbm9kZXMuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdOb2Rl
OjplbWl0Q29kZSk6IERpdHRvLiBUaGUgY29tbWVudCBmcm9tIGhlcmUgaXMgbm93IGluIHRoZSBs
ZXhlci4KKyAgICAgICAgKEpTQzo6cHJvY2Vzc0NsYXVzZUxpc3QpOiBEaXR0by4KKyAgICAgICAg
KiBranMvbm9kZXMyc3RyaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nTm9kZTo6c3RyZWFt
VG8pOiBEaXR0by4KKwogMjAwOC0wOS0xOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgLSBmaXggcmVsZWFzZSBidWlsZApJbmRleDogSmF2YVNjcmlwdENvcmUvVk0v
Q29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvVk0vQ29kZUdl
bmVyYXRvci5jcHAJKHJldmlzaW9uIDM2NjMwKQorKysgSmF2YVNjcmlwdENvcmUvVk0vQ29kZUdl
bmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MzAsNyArMTQzMCw3IEBAIHN0YXRpYyBp
bnQzMl90IGtleUZvckNoYXJhY3RlclN3aXRjaChFeHAKIHsKICAgICBVTlVTRURfUEFSQU0obWF4
KTsKICAgICBBU1NFUlQobm9kZS0+aXNTdHJpbmcoKSk7Ci0gICAgVVN0cmluZzo6UmVwKiBjbGF1
c2UgPSBzdGF0aWNfY2FzdDxTdHJpbmdOb2RlKj4obm9kZSktPnZhbHVlKCkucmVwKCk7CisgICAg
VVN0cmluZzo6UmVwKiBjbGF1c2UgPSBzdGF0aWNfY2FzdDxTdHJpbmdOb2RlKj4obm9kZSktPnZh
bHVlKCkudXN0cmluZygpLnJlcCgpOwogICAgIEFTU0VSVChjbGF1c2UtPnNpemUoKSA9PSAxKTsK
ICAgICAKICAgICBpbnQzMl90IGtleSA9IGNsYXVzZS0+ZGF0YSgpWzBdOwpAQCAtMTQ2MCw3ICsx
NDYwLDcgQEAgc3RhdGljIHZvaWQgcHJlcGFyZUp1bXBUYWJsZUZvclN0cmluZ1N3aQogICAgICAg
ICBBU1NFUlQoIWxhYmVsc1tpXS0+aXNGb3J3YXJkTGFiZWwoKSk7CiAgICAgICAgIAogICAgICAg
ICBBU1NFUlQobm9kZXNbaV0tPmlzU3RyaW5nKCkpOwotICAgICAgICBVU3RyaW5nOjpSZXAqIGNs
YXVzZSA9IHN0YXRpY19jYXN0PFN0cmluZ05vZGUqPihub2Rlc1tpXSktPnZhbHVlKCkucmVwKCk7
CisgICAgICAgIFVTdHJpbmc6OlJlcCogY2xhdXNlID0gc3RhdGljX2Nhc3Q8U3RyaW5nTm9kZSo+
KG5vZGVzW2ldKS0+dmFsdWUoKS51c3RyaW5nKCkucmVwKCk7CiAgICAgICAgIE9mZnNldExvY2F0
aW9uIGxvY2F0aW9uOwogICAgICAgICBsb2NhdGlvbi5icmFuY2hPZmZzZXQgPSBsYWJlbHNbaV0t
Pm9mZnNldEZyb20oc3dpdGNoQWRkcmVzcyk7CiAjaWYgRU5BQkxFKENUSSkKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL2tqcy9ncmFtbWFyLnkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pz
L2dyYW1tYXIueQkocmV2aXNpb24gMzY2MzApCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvZ3JhbW1h
ci55CSh3b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQAogCiAvKgogICogIENvcHlyaWdodCAo
QykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0
IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5
cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogIENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgog
ICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCkBAIC0xNTEsNyArMTUxLDYgQEAgc3RhdGljIGlubGluZSB2b2lkIGFwcGVu
ZFRvVmFyRGVjbGFyYXRpbwogJXVuaW9uIHsKICAgICBpbnQgICAgICAgICAgICAgICAgIGludFZh
bHVlOwogICAgIGRvdWJsZSAgICAgICAgICAgICAgZG91YmxlVmFsdWU7Ci0gICAgVVN0cmluZyog
ICAgICAgICAgICBzdHJpbmc7CiAgICAgSWRlbnRpZmllciogICAgICAgICBpZGVudDsKIAogICAg
IC8vIGV4cHJlc3Npb24gc3VidHJlZXMKQEAgLTIxNyw4ICsyMTYsNyBAQCBzdGF0aWMgaW5saW5l
IHZvaWQgYXBwZW5kVG9WYXJEZWNsYXJhdGlvCiAKIC8qIHRlcm1pbmFsIHR5cGVzICovCiAldG9r
ZW4gPGRvdWJsZVZhbHVlPiBOVU1CRVIKLSV0b2tlbiA8c3RyaW5nPiBTVFJJTkcKLSV0b2tlbiA8
aWRlbnQ+IElERU5UCisldG9rZW4gPGlkZW50PiBJREVOVCBTVFJJTkcKIAogLyogYXV0b21hdGlj
YWxseSBpbnNlcnRlZCBzZW1pY29sb24gKi8KICV0b2tlbiBBVVRPUExVU1BMVVMgQVVUT01JTlVT
TUlOVVMKQEAgLTI4NCw3ICsyODIsNyBAQCBMaXRlcmFsOgogICB8IFRSVUVUT0tFTiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVzc2lv
bk5vZGUqPihuZXcgQm9vbGVhbk5vZGUoR0xPQkFMX0RBVEEsIHRydWUpLCAwLCAxKTsgfQogICB8
IEZBTFNFVE9LRU4gICAgICAgICAgICAgICAgICAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVh
dHVyZUluZm88RXhwcmVzc2lvbk5vZGUqPihuZXcgQm9vbGVhbk5vZGUoR0xPQkFMX0RBVEEsIGZh
bHNlKSwgMCwgMSk7IH0KICAgfCBOVU1CRVIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obWFrZU51bWJlck5v
ZGUoR0xPQkFMX0RBVEEsICQxKSwgMCwgMSk7IH0KLSAgfCBTVFJJTkcgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2Rl
Kj4obmV3IFN0cmluZ05vZGUoR0xPQkFMX0RBVEEsICQxKSwgMCwgMSk7IH0KKyAgfCBTVFJJTkcg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZv
PEV4cHJlc3Npb25Ob2RlKj4obmV3IFN0cmluZ05vZGUoR0xPQkFMX0RBVEEsICokMSksIDAsIDEp
OyB9CiAgIHwgJy8nIC8qIHJlZ2V4cCAqLyAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZXhlciYgbCA9ICpMRVhFUjsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsLnNjYW5SZWdF
eHAoKSkKQEAgLTMwNyw3ICszMDUsNyBAQCBMaXRlcmFsOgogCiBQcm9wZXJ0eToKICAgICBJREVO
VCAnOicgQXNzaWdubWVudEV4cHIgICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJ
bmZvPFByb3BlcnR5Tm9kZSo+KG5ldyBQcm9wZXJ0eU5vZGUoR0xPQkFMX0RBVEEsICokMSwgJDMu
bV9ub2RlLCBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50KSwgJDMubV9mZWF0dXJlSW5mbywgJDMubV9u
dW1Db25zdGFudHMpOyB9Ci0gIHwgU1RSSU5HICc6JyBBc3NpZ25tZW50RXhwciAgICAgICAgICAg
eyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxQcm9wZXJ0eU5vZGUqPihuZXcgUHJvcGVydHlO
b2RlKEdMT0JBTF9EQVRBLCBJZGVudGlmaWVyKEdMT0JBTF9EQVRBLCAqJDEpLCAkMy5tX25vZGUs
IFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpLCAkMy5tX2ZlYXR1cmVJbmZvLCAkMy5tX251bUNvbnN0
YW50cyk7IH0KKyAgfCBTVFJJTkcgJzonIEFzc2lnbm1lbnRFeHByICAgICAgICAgICB7ICQkID0g
Y3JlYXRlTm9kZUZlYXR1cmVJbmZvPFByb3BlcnR5Tm9kZSo+KG5ldyBQcm9wZXJ0eU5vZGUoR0xP
QkFMX0RBVEEsICokMSwgJDMubV9ub2RlLCBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50KSwgJDMubV9m
ZWF0dXJlSW5mbywgJDMubV9udW1Db25zdGFudHMpOyB9CiAgIHwgTlVNQkVSICc6JyBBc3NpZ25t
ZW50RXhwciAgICAgICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxQcm9wZXJ0eU5v
ZGUqPihuZXcgUHJvcGVydHlOb2RlKEdMT0JBTF9EQVRBLCBJZGVudGlmaWVyKEdMT0JBTF9EQVRB
LCBVU3RyaW5nOjpmcm9tKCQxKSksICQzLm1fbm9kZSwgUHJvcGVydHlOb2RlOjpDb25zdGFudCks
ICQzLm1fZmVhdHVyZUluZm8sICQzLm1fbnVtQ29uc3RhbnRzKTsgfQogICB8IElERU5UIElERU5U
ICcoJyAnKScgT1BFTkJSQUNFIEZ1bmN0aW9uQm9keSBDTE9TRUJSQUNFICAgIHsgJCQgPSBjcmVh
dGVOb2RlRmVhdHVyZUluZm88UHJvcGVydHlOb2RlKj4obWFrZUdldHRlck9yU2V0dGVyUHJvcGVy
dHlOb2RlKGdsb2JhbFB0ciwgKiQxLCAqJDIsIDAsICQ2LCBMRVhFUi0+c291cmNlUmFuZ2UoJDUs
ICQ3KSksIENsb3N1cmVGZWF0dXJlLCAwKTsgREJHKCQ2LCBANSwgQDcpOyBpZiAoISQkLm1fbm9k
ZSkgWVlBQk9SVDsgfQogICB8IElERU5UIElERU5UICcoJyBGb3JtYWxQYXJhbWV0ZXJMaXN0ICcp
JyBPUEVOQlJBQ0UgRnVuY3Rpb25Cb2R5IENMT1NFQlJBQ0UKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L2tqcy9sZXhlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2xleGVyLmNw
cAkocmV2aXNpb24gMzY2MzApCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvbGV4ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NjcsNyArNTY3LDggQEAgaW50IExleGVyOjpsZXgodm9pZCogcDEsIHZv
aWQqIHAyKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBTdHJp
bmc6Ci0gICAgICAgICAgICBsdmFscC0+c3RyaW5nID0gbWFrZVVTdHJpbmcobV9idWZmZXIxNik7
CisgICAgICAgICAgICAvLyBBdG9taXplIGNvbnN0YW50IHN0cmluZ3MgaW4gY2FzZSB0aGV5J3Jl
IGxhdGVyIHVzZWQgaW4gcHJvcGVydHkgbG9va3VwLgorICAgICAgICAgICAgbHZhbHAtPmlkZW50
ID0gbWFrZUlkZW50aWZpZXIobV9idWZmZXIxNik7CiAgICAgICAgICAgICB0b2tlbiA9IFNUUklO
RzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE51bWJlcjoKQEAgLTkxNiwxMSAr
OTE3LDQgQEAgSWRlbnRpZmllciogTGV4ZXI6Om1ha2VJZGVudGlmaWVyKGNvbnN0IAogICAgIHJl
dHVybiBpZGVudGlmaWVyOwogfQogCi1VU3RyaW5nKiBMZXhlcjo6bWFrZVVTdHJpbmcoY29uc3Qg
VmVjdG9yPFVDaGFyPiYgYnVmZmVyKQotewotICAgIFVTdHJpbmcqIHN0cmluZyA9IG5ldyBVU3Ry
aW5nKGJ1ZmZlcik7Ci0gICAgbV9zdHJpbmdzLmFwcGVuZChzdHJpbmcpOwotICAgIHJldHVybiBz
dHJpbmc7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pz
L2xleGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2xleGVyLmgJKHJldmlz
aW9uIDM2NjMwKQorKysgSmF2YVNjcmlwdENvcmUva2pzL2xleGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTExMyw3ICsxMTMsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCByZWNvcmQx
NihVQ2hhcik7CiAKICAgICAgICAgSlNDOjpJZGVudGlmaWVyKiBtYWtlSWRlbnRpZmllcihjb25z
dCBWZWN0b3I8VUNoYXI+JiBidWZmZXIpOwotICAgICAgICBVU3RyaW5nKiBtYWtlVVN0cmluZyhj
b25zdCBWZWN0b3I8VUNoYXI+JiBidWZmZXIpOwogCiAgICAgICAgIGludCB5eWxpbmVubzsKICAg
ICAgICAgaW50IHl5Y29sdW1uOwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL25vZGVzMnN0cmlu
Zy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL25vZGVzMnN0cmluZy5jcHAJ
KHJldmlzaW9uIDM2NjMwKQorKysgSmF2YVNjcmlwdENvcmUva2pzL25vZGVzMnN0cmluZy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIE51bWJlck5vZGU6OnN0cmVh
bVRvKFNvdXJjZVN0cmVhbSYgCiAKIHZvaWQgU3RyaW5nTm9kZTo6c3RyZWFtVG8oU291cmNlU3Ry
ZWFtJiBzKSBjb25zdAogewotICAgIHMgPDwgJyInIDw8IGVzY2FwZVN0cmluZ0ZvclByZXR0eVBy
aW50aW5nKG1fdmFsdWUpIDw8ICciJzsKKyAgICBzIDw8ICciJyA8PCBlc2NhcGVTdHJpbmdGb3JQ
cmV0dHlQcmludGluZyhtX3ZhbHVlLnVzdHJpbmcoKSkgPDwgJyInOwogfQogCiB2b2lkIFJlZ0V4
cE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSYgcykgY29uc3QKSW5kZXg6IEphdmFTY3JpcHRD
b3JlL2tqcy9ub2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL25vZGVz
LmNwcAkocmV2aXNpb24gMzY2MzApCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNTMsOSArMjUzLDcgQEAgUmVnaXN0ZXJJRCogU3RyaW5nTm9kZTo6
ZW1pdENvZGUoQ29kZUdlbgogewogICAgIGlmIChkc3QgPT0gaWdub3JlZFJlc3VsdCgpKQogICAg
ICAgICByZXR1cm4gMDsKLQotICAgIC8vIFdlIGF0b21pemUgY29uc3RhbnQgc3RyaW5ncywgaW4g
Y2FzZSB0aGV5J3JlIGxhdGVyIHVzZWQgaW4gcHJvcGVydHkgbG9va3VwLgotICAgIHJldHVybiBn
ZW5lcmF0b3IuZW1pdExvYWQoZHN0LCBqc093bmVkU3RyaW5nKGdlbmVyYXRvci5nbG9iYWxFeGVj
KCksIElkZW50aWZpZXIoZ2VuZXJhdG9yLmdsb2JhbEV4ZWMoKSwgbV92YWx1ZSkudXN0cmluZygp
KSk7CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0TG9hZChkc3QsIGpzT3duZWRTdHJpbmcoZ2Vu
ZXJhdG9yLmdsb2JhbEV4ZWMoKSwgbV92YWx1ZS51c3RyaW5nKCkpKTsKIH0KIAogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFJlZ0V4cE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KQEAgLTE0OTQsNyArMTQ5Miw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3ND
bGF1c2VMaXN0KENsYXVzZUxpc3QKICAgICAgICAgICAgICAgICB0eXBlRm9yVGFibGUgPSBTd2l0
Y2hOZWl0aGVyOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgVVN0cmluZyYgdmFsdWUgPSBzdGF0aWNfY2FzdDxTdHJpbmdOb2RlKj4oY2xhdXNlRXhw
cmVzc2lvbiktPnZhbHVlKCk7CisgICAgICAgICAgICBjb25zdCBVU3RyaW5nJiB2YWx1ZSA9IHN0
YXRpY19jYXN0PFN0cmluZ05vZGUqPihjbGF1c2VFeHByZXNzaW9uKS0+dmFsdWUoKS51c3RyaW5n
KCk7CiAgICAgICAgICAgICBpZiAoc2luZ2xlQ2hhcmFjdGVyU3dpdGNoICY9IHZhbHVlLnNpemUo
KSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgaW50MzJfdCBpbnRWYWwgPSB2YWx1ZS5yZXAoKS0+
ZGF0YSgpWzBdOwogICAgICAgICAgICAgICAgIGlmIChpbnRWYWwgPCBtaW5fbnVtKQpJbmRleDog
SmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
a2pzL25vZGVzLmgJKHJldmlzaW9uIDM2NjMwKQorKysgSmF2YVNjcmlwdENvcmUva2pzL25vZGVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxMywyMiArMzEzLDIyIEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgU3RyaW5nTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVi
bGljOgotICAgICAgICBTdHJpbmdOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3Qg
VVN0cmluZyogdikgSlNDX0ZBU1RfQ0FMTAorICAgICAgICBTdHJpbmdOb2RlKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgdikgSlNDX0ZBU1RfQ0FMTAogICAgICAg
ICAgICAgOiBFeHByZXNzaW9uTm9kZShnbG9iYWxEYXRhLCBTdHJpbmdUeXBlKQotICAgICAgICAg
ICAgLCBtX3ZhbHVlKCp2KQorICAgICAgICAgICAgLCBtX3ZhbHVlKHYpCiAgICAgICAgIHsKICAg
ICAgICAgfQogCiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCkgSlNDX0ZBU1RfQ0FMTDsKICAgICAgICAgCiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc1N0cmluZygpIGNvbnN0IEpTQ19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1
ZTsgfQotICAgICAgICBVU3RyaW5nJiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICAg
ICAgY29uc3QgSWRlbnRpZmllciYgdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc1B1cmUoQ29kZUdlbmVyYXRvciYpIGNvbnN0IEpTQ19GQVNUX0NBTEwg
eyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3Ry
ZWFtJikgY29uc3QgSlNDX0ZBU1RfQ0FMTDsKICAgICAgICAgdmlydHVhbCBQcmVjZWRlbmNlIHBy
ZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjUHJpbWFyeTsgfQogCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgVVN0cmluZyBtX3ZhbHVlOworICAgICAgICBJZGVudGlmaWVyIG1fdmFsdWU7CiAg
ICAgfTsKICAgICAKICAgICBjbGFzcyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7Cg==
</data>
<flag name="review"
          id="10542"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>