Return-Path: Delivered-To: apmail-struts-user-archive@www.apache.org Received: (qmail 77030 invoked from network); 26 Sep 2008 18:06:37 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 26 Sep 2008 18:06:37 -0000 Received: (qmail 74918 invoked by uid 500); 26 Sep 2008 18:06:25 -0000 Delivered-To: apmail-struts-user-archive@struts.apache.org Received: (qmail 74895 invoked by uid 500); 26 Sep 2008 18:06:25 -0000 Mailing-List: contact user-help@struts.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Help: List-Post: List-Id: "Struts Users Mailing List" Reply-To: "Struts Users Mailing List" Delivered-To: mailing list user@struts.apache.org Received: (qmail 74884 invoked by uid 99); 26 Sep 2008 18:06:25 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 26 Sep 2008 11:06:25 -0700 X-ASF-Spam-Status: No, hits=-1.2 required=10.0 tests=MIME_BASE64_BLANKS,MIME_BASE64_TEXT,RCVD_IN_DNSWL_MED,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: local policy) Received: from [155.91.38.111] (HELO wily.merck.com) (155.91.38.111) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 26 Sep 2008 18:05:22 +0000 X-IronPort-AV: E=Sophos;i="4.33,316,1220241600"; d="scan'208";a="146181395" Received: from unknown (HELO ipmh1.merck.com) ([54.62.195.239]) by wily.merck.com with ESMTP; 26 Sep 2008 14:04:53 -0400 X-IronPort-AV: E=Sophos;i="4.33,316,1220241600"; d="scan'208";a="54135245" Received: from usctcl1-usctcl2-intranet-snat.merck.com (HELO usctgw1104.merck.com) ([54.62.195.245]) by ipmh1.merck.com with ESMTP; 26 Sep 2008 14:04:53 -0400 Received: from USCTMX1140.merck.com ([54.50.72.134]) by usctgw1104.merck.com with Microsoft SMTPSVC(6.0.3790.3959); Fri, 26 Sep 2008 14:04:53 -0400 X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Subject: RE: How to validation/workflow with fileUpload? Date: Fri, 26 Sep 2008 14:04:50 -0400 Message-ID: <2CDB225E3067C043A2FF13D8844F5D1801C4E052@USCTMX1140.merck.com> In-Reply-To: <828881.67841.qm@web30601.mail.mud.yahoo.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: How to validation/workflow with fileUpload? thread-index: Ackf/i7c8uPJjDVUToGu7vYBRn8gIAAAzOnQ References: <828881.67841.qm@web30601.mail.mud.yahoo.com> From: "Kawczynski, David" To: "Struts Users Mailing List" X-OriginalArrivalTime: 26 Sep 2008 18:04:53.0125 (UTC) FILETIME=[601C2350:01C92002] Content-Type: text/plain; charset="iso-8859-7" Content-Transfer-Encoding: base64 X-Virus-Checked: Checked by ClamAV on apache.org SSd2ZSB1c2VkIDxzOmZpbGU+IHdpdGggdmFsaWRhdGlvbiB3aXRob3V0IGVycm9ycy4gIApJJ3Zl IG5ldmVyIHByb3ZpZGVkIGEgdmFsdWUgYXR0cmlidXRlIGluIHRoZSB0YWcuCkkgZG9uJ3Qga25v dyBhYm91dCBzdHJ1dHMsIGJ1dCBJIHRoaW5rIHRoZSA8aW5wdXQgdHlwZT0iZmlsZSI+IHRhZyBp Z25vcmVzIHZhbHVlIGF0dHJpYnV0ZXMuICAKV2hhdCBoYXBwZW5zIGlmIHlvdSByZW1vdmUgdGhl IHZhbHVlIGF0dHJpYnV0ZT8KCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCkZyb206IEVhcmxl IEZseW5uIFttYWlsdG86ZWZseW5uMDBAeWFob28uY29tXSAKU2VudDogRnJpZGF5LCBTZXB0ZW1i ZXIgMjYsIDIwMDggMTozNCBQTQpUbzogU3RydXRzIFVzZXJzIE1haWxpbmcgTGlzdApTdWJqZWN0 OiBSZTogSG93IHRvIHZhbGlkYXRpb24vd29ya2Zsb3cgd2l0aCBmaWxlVXBsb2FkPwoKSGVyZSBp cyBzb21lIGFkZGl0aXRpb25hbCBhbmQgbmV3IGluZm87Ci0tIHJlc29sdmVkIGJsYW5rIHBhZ2Ug aXNzdWUgYnkgcmVtb3ZpbmcgcGpsIGNvbXByZXNzaW9uIGZpbHRlciBmcm9tIHdlYi54bWwuIHdp bGwgZG8gZ3ppcCBhdCBhcGFjaGUgaHR0cCBvciBkaXNjdXNzIHdpdGggcGpsIHByb2plY3Qgb3du ZXIuCi0tb24gdmFsaWRhdGlvbiBlcnJvcnMsIGFjdGlvbiByZXR1cm5zIHRvIGlucHV0IHJlc3Vs dCBhcyBleHBlY3RlZCwgd2hpY2ggaXMgZ29vZC4KLS1hbHRob3VnaCwgaWYgdmFsdWUgcHJvcGVy dHkgb2YgczpmaWxlIGlzIG5vdCBzZXQgdGhlbiBpbnB1dCBwYWdlIHN0b3BzIHJlbmRlcmluZyBy aWdodCBiZWZvcmUgczpmaWxlIHRhZywgcHJlc3VtYWJseSB0aGVyZSBpcyBhbiBleGNlcHRpb24u Ci0tZXhwbGljaXRseSBkZWNsYXJpbmcgYSAndmFsdWUnIHByb3BlcnR5IGluIHM6ZmlsZSBzb2x2 ZWQgdGhpcyBpc3N1ZS4KoApvaywgYmFjayB0byBtYWluIGlzc3VlLCB1bmFibGUgdG8gdXBsb2Fk IGEgZmlsZSBhZnRlciBmb2xsb3dpbmcgc2hvd2Nhc2UsIHRoZSBGaWxlVXBsb2FkSW50ZXJjZXB0 b3Igc2V0cyBhIGZpZWxkIGVycm9yLCAnSW52YWxpZCBmaWVsZCB2YWx1ZSBmb3IgZmllbGQgInVw bG9hZCIuJyBEb2VzIGFueW9uZSBrbm93IHdoZXJlIHRoaXMgZmllbGQgZXJyb3IgaXMgY29taW5n IGZyb20/IEkgY2FuIHNlZSB0aGUgY29ycmVjdCBmaWxlTmFtZSBhbmQgY29udGVudFR5cGUgaW4g dGhlIGFjdGlvbidzIHZhbGlkYXRlKCksIHBsdXMgdGhlIGFjdHVhbCBmaWxlIGlzIHB1dCBpbiAv dG1wIHdpdGggdGhlIGxvbmcgZmlsZW5hbWUgYnV0IG5vdCBzdXJlIGFib3V0IHdoeSB0aGUgZmll bGQgZXJyb3IgaXMgc2V0LiBjb252ZXJzaW9uIGVycm9yPyBIZXJlIGlzIG15IHM6ZmlsZSB0YWc7 CqAKPHM6ZmlsZSBuYW1lPSJ1cGxvYWQiIGxhYmVsPSJQaWN0dXJlIiB2YWx1ZT0iZmFsc2UiLz4K CnRoYW5rcywKZWFybGUKCgoKLS0tLS0gT3JpZ2luYWwgTWVzc2FnZSAtLS0tCkZyb206IEVhcmxl IEZseW5uIDxlZmx5bm4wMEB5YWhvby5jb20+ClRvOiB1c2VyQHN0cnV0cy5hcGFjaGUub3JnClNl bnQ6IFRodXJzZGF5LCBTZXB0ZW1iZXIgMjUsIDIwMDggMzo0MjowMSBQTQpTdWJqZWN0OiBIb3cg dG8gdmFsaWRhdGlvbi93b3JrZmxvdyB3aXRoIGZpbGVVcGxvYWQ/CgpIb3cgaXMgaXQgcG9zc2li bGUgdG8gdXNlIHZhbGlkYXRpb24vd29ya2Zsb3cgaW50ZXJjZXB0b3JzIGluIGNvbWJpbmF0aW9u IHdpdGggZmlsZVVwbG9hZCBpbnRlcmNlcHRvcj8KoApGb3IgdGhloGNvbmZpZyBiZWxvdywgaWYg SSBzdWJtaXQgYW4gaHRtbCBmb3JtIHRoYXQgaW5jbHVkZXMgdGhloGZpbGUgdGFnLCBzdHJ1dHMg cmV0dXJucyBhIGJsYW5rIHdoaXRlIHBhZ2UgaW5zdGVhZCBvZiB0aGUgaW50ZW5kZWQgc3VjY2Vz cyByZXN1bHQuIFRoaXMgb2NjdXJzIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBmb3JtIGlzIGZpbGxl ZCBvdXQgY29ycmVjdGx5IG9yIG5vdC4gSSB3b3VsZCBhc3N1bWUgc3RydXRzIGlzIGxvb2tpbmcg Zm9yIGFuIGlucHV0IHJlc3VsdCBzaW5jZSB0aGVyZSB3YXMgYSBmaWxlIHVwbG9hZCBlcnJvciwg YXNzdW1pbmcsIHRob3VnaD8KoApGcm9tIGxvZyBzdGF0ZW1lbnRzIHRoZSB2YWxpZGF0ZSgpIG1l dGhvZCBpcyBleGVjdXRlZCBidXQgdGhlIGV4ZWN1dGUoKSBtZXRob2QgaXMgbm90LCBkZXNwaXRl IHRoZSBmb3JtIGJlaW5nIGZpbGxlZCBvdXQgcHJvcGVybHkuIFRoZSBGaWxlIG9iamVjdCBpcyBl dmVuIGF2YWlsYWJsZSBpbiB2YWxpZGF0ZSgpIGFuZCBoYXMgdGhlIGNvcnJlY3QgaW5mbyAoZmls ZU5hbWUsIGNvbnRlbnRUeXBlKSwgSSBjYW4gZXZlbiBzZWUgdGhlIHRlbXAgZmlsZSBzaW5jZSBp dKJzIG5vdCBkZWxldGUgc2luY2UgZXhlY3V0ZSgpIGRvZXMgbm90IHJ1bi4gV2hhdCBpcyB0aGUg cHJvcGVyIGludGVyY2VwdG9yIHN0YWNrIGNvbmZpZ3VyYXRpb24gZm9yIHVzaW5nIHZhbGlkYXRp b24sIHdvcmtmbG93LCBhbmQgZmlsZVVwbG9hZD8KoApJIGhhdmUgdHJpZWQgc2V0dGluZyBlYWNo IGludGVyY2VwdG9yIG1hbnVhbGx5LCBpbiBhIG51bWJlciBvZiBkaWZmZXJlbnQgc3RhY2sgcG9z aXRpb25zLCBidXQgaXQgc2VlbXMgbGlrZSBmaWxlIHVwbG9hZCBjYW5jZWxzIG91dCB2YWxpZGF0 aW9uIGFuZCB3b3JrZmxvdy4KoApidHcsIGlmIHRoZSBzYW1lIGZvcm0gaXMgc3VibWl0dGVkIHdp dGhvdXQgYSBmaWxlIHRoZW4gdGhlIGFjdGlvbiBiZWhhdmVzIGFzIGV4cGVjdGVkLgqgClRoZSBi bGFuayBwYWdlIHByb2JsZW0gb2NjdXJzIHdoZW4gdGhlIEZpbGVVcGxvYWRJbnRlcmNlcHRvciBk ZXRlY3RzIGEgZmlsZS4gQWxzbywgSSBoYXZlIHRyaWVkIHRvIHVzZSBTYXZlSXRlbS12YWxpZGF0 aW9uLnhtbCBpbnN0ZWFkIG9mIG1hbnVhbCB2YWxpZGF0ZSgpIHdpdGggdGhlIHNhbWUgcmVzdWx0 cyBidXQgSSBhbHNvIGhhdmUgYSBzcGVjaWZpYyByZWFzb24gdG8gdXNlIHRoZSBtYW51YWwgdmFs aWRhdGUoKS4KoApBbnkgc3VnZ2VzdGlvbnMgdG8gZ2V0IHRoZSBmaWxlVXBsb2FkIGludGVyY2Vw dG9yIHRvIHJldHVybiBlaXRoZXIgdGhlIHN1Y2Nlc3MgcmVzdWx0IG9yIGlucHV0IHJlc3VsdCBp bnN0ZWFkIG9mIHRoZSBibGFuayBwYWdlLgqgLS0gamFycyBpbiBsaWI7CnN0cnV0czItY29yZSAy LjAuMTEuMgpjb21tb25zLWZpbGV1cGxvYWQgMS4xLjEKY29tbW9ucy1pbyAxLjAKoAotLSBzdHJ1 dHMteG1sCqAKPHN0cnV0cz4KoKCgoKCgoKCgoKAgPCEtLSBDb25maWd1cmF0aW9uIGZvciB0aGUg ZGVmYXVsdCBwYWNrYWdlLiAtLT4KoKCgoKCgoKCgoKAgPHBhY2thZ2UgbmFtZT0iZGVmYXVsdCIg ZXh0ZW5kcz0ic3RydXRzLWRlZmF1bHQiPgqgoKCgoKCgoKCgoCAKoKCgoKCgoCA8YWN0aW9uIG5h bWU9InRva2VuUHJlcGFyZSEqIiBjbGFzcz0iY29tLnNhbmRwbGFpbnMudmlldy5hY3Rpb24uU2F2 ZUl0ZW0iIG1ldGhvZD0iezF9Ij4KoKCgoKCgoKCgoKAgPHJlc3VsdCBuYW1lPSJpbnB1dCI+V0VC LUlORi9qc3AvcG9zdC1pdGVtLmpzcDwvcmVzdWx0PgqgoKCgoKCgIDwvYWN0aW9uPgqgCqCgoKCg oKAgPGFjdGlvbiBuYW1lPSJzYXZlaXRlbSIgY2xhc3M9ImNvbS5zYW5kcGxhaW5zLnZpZXcuYWN0 aW9uLlNhdmVJdGVtIj4KoKCgoKCgoKCgoKAgoKCgIDxpbnRlcmNlcHRvci1yZWYgbmFtZT0idG9r ZW4iLz4KoKCgoKCgoKCgoKAgPGludGVyY2VwdG9yLXJlZiBuYW1lPSJleGNlcHRpb24iLz4KoKCg oKCgoKCgoKAgPGludGVyY2VwdG9yLXJlZiBuYW1lPSJhbGlhcyIvPgqgoKCgoKCgoKCgoCA8aW50 ZXJjZXB0b3ItcmVmIG5hbWU9InNlcnZsZXRDb25maWciLz4KoKCgoKCgoKCgoKAgPGludGVyY2Vw dG9yLXJlZiBuYW1lPSJwcmVwYXJlIi8+CqCgoKCgoKCgoKCgIDxpbnRlcmNlcHRvci1yZWYgbmFt ZT0iaTE4biIvPgqgoKCgoKCgoKCgoCA8aW50ZXJjZXB0b3ItcmVmIG5hbWU9ImNoYWluIi8+CqCg oKCgoKCgoKCgIDxpbnRlcmNlcHRvci1yZWYgbmFtZT0iZGVidWdnaW5nIi8+CqCgoKCgoKCgoKCg IDxpbnRlcmNlcHRvci1yZWYgbmFtZT0icHJvZmlsaW5nIi8+CqCgoKCgoKCgoKCgIDxpbnRlcmNl cHRvci1yZWYgbmFtZT0ic2NvcGVkTW9kZWxEcml2ZW4iLz4KoKCgoKCgoKCgoKAgPGludGVyY2Vw dG9yLXJlZiBuYW1lPSJtb2RlbERyaXZlbiIvPgqgoKCgoKCgoKCgoCA8aW50ZXJjZXB0b3ItcmVm IG5hbWU9ImZpbGVVcGxvYWQiLz4KoKCgoKCgoKCgoKAgPGludGVyY2VwdG9yLXJlZiBuYW1lPSJj aGVja2JveCIvPgqgoKCgoKCgoKCgoCA8aW50ZXJjZXB0b3ItcmVmIG5hbWU9InN0YXRpY1BhcmFt cyIvPgqgoKCgoKCgoKCgoCA8aW50ZXJjZXB0b3ItcmVmIG5hbWU9InBhcmFtcyI+CqCgoKCgoKCg oKCgIKCgoKCgoKCgoKCgIDxwYXJhbSBuYW1lPSJleGNsdWRlUGFyYW1zIj5kb2pvXC4uKjwvcGFy YW0+CqCgoKCgoKCgoKCgIDwvaW50ZXJjZXB0b3ItcmVmPgqgoKCgoKCgoKCgoCA8aW50ZXJjZXB0 b3ItcmVmIG5hbWU9ImNvbnZlcnNpb25FcnJvciIvPgqgoCCgoKCgoKCgoKA8aW50ZXJjZXB0b3It cmVmIG5hbWU9InZhbGlkYXRpb24iPgqgoKCgoKCgoKCgoKCgoKAgPHBhcmFtIG5hbWU9ImV4Y2x1 ZGVNZXRob2RzIj5pbnB1dCxiYWNrLGNhbmNlbCxicm93c2U8L3BhcmFtPgqgoKCgoKCgoKCgoCA8 L2ludGVyY2VwdG9yLXJlZj4KoKCgoKCgoKCgoKAgPGludGVyY2VwdG9yLXJlZiBuYW1lPSJ3b3Jr ZmxvdyI+CqCgoKCgoKCgoKCgoKCgoCA8cGFyYW0gbmFtZT0iZXhjbHVkZU1ldGhvZHMiPmlucHV0 LGJhY2ssY2FuY2VsLGJyb3dzZTwvcGFyYW0+CqCgoKCgoKCgoKCgIDwvaW50ZXJjZXB0b3ItcmVm PgqgCqCgoKCgoKCgoKCgIDxyZXN1bHQgbmFtZT0iaW5wdXQiPldFQi1JTkYvanNwL3Bvc3QtaXRl bS5qc3A8L3Jlc3VsdD4KoKCgoKCgoCCgoKAgPHJlc3VsdCBuYW1lPSJpbnZhbGlkLnRva2VuIj4v ZXJyb3IvZGJsLWNsaWNrLXBvc3QtaXRlbS5qc3A8L3Jlc3VsdD4KoKCgoKCgoKCgoKAgPHJlc3Vs dD5XRUItSU5GL2pzcC9yZXN1bHRzLXNhdmUtaXRlbS5qc3A8L3Jlc3VsdD4KoKCgoKCgoKCgoKAg PHJlc3VsdCBuYW1lPSJmYWlsdXJlIj4vZXJyb3IvZXJyb3IuanNwPC9yZXN1bHQ+CqCgoKCgoKAg PC9hY3Rpb24+CqAKoKCgoKCgoKCgoKAgPC9wYWNrYWdlPgo8L3N0cnV0cz4KoAotLSBzdHJ1dHMu cHJvcGVydGllcwqgCnN0cnV0cy5tdWx0aXBhcnQucGFyc2VyPWpha2FydGEKc3RydXRzLm11bHRp cGFydC5zYXZlRGlyPWM6L3RtcApzdHJ1dHMubXVsdGlwYXJ0Lm1heFNpemU9MTAwMDAwMAqgCi0t IGpzcAo8czpmb3JtIG5hbWU9InNhdmVmcm0iIGFjdGlvbj0ic2F2ZWl0ZW0uZG9lcyIgbWV0aG9k PSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4KoKCgoKCgoKCgoKAgPHM6dG9r ZW4vPgqgoKCgoKCgoKCgoCA8czp0ZXh0YXJlYSBsYWJlbD0iRGVzYyIgbmFtZT0iZGVzY3JpcHRp b24iIGNvbHM9IjM1IiByb3dzPSI0IiByZXF1aXJlZD0idHJ1ZSIvPgqgoKCgoKCgoKCgoCA8czpm aWxlIG5hbWU9InVwbG9hZCIgbGFiZWw9IlBpY3R1cmUiLz4KoKCgoKCgoKCgoKAgPHM6c3VibWl0 IG5hbWU9InN1Ym1pdDEiIGFsaWduPSJsZWZ0Ii8+Cjwvczpmb3JtPgqgCmFjdGlvbgqgCnB1Ymxp YyBjbGFzcyBTYXZlSXRlbSBleHRlbmRzIEFjdGlvblN1cHBvcnQgewqgoKCgoKCgoKCgoCBwcml2 YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAxTDsKoKCgoKCgoKCgoKAg c3RhdGljIExvZ2dlciBsb2cgPSBMb2dnZXIuZ2V0TG9nZ2VyKFNhdmVJdGVtLmNsYXNzKTsKoAqg oKCgoKCgoKCgoCBwcml2YXRlIFN0cmluZyBkZXNjcmlwdGlvbjsKoAqgoKCgoKCgoKCgoCBwcml2 YXRlIEZpbGUgZmlsZTsKoKCgoKCgoKCgoKAgcHJpdmF0ZSBTdHJpbmcgY29udGVudFR5cGU7CqCg oKCgoKCgoKCgIHByaXZhdGUgU3RyaW5nIGZpbGVuYW1lOwqgCqCgoKCgoKCgoKCgIHB1YmxpYyBT dHJpbmcgZXhlY3V0ZSgpIHRocm93cyBFeGNlcHRpb24gewqgCqCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgIGlmIChBcHBDb25zdGFudHMuREVCVUcpIHsKoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKAgbG9nLmluZm8oImRlc2NyaXB0aW9uOiAiICsgZGVzY3JpcHRpb24pOwqgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCBsb2cuaW5mbygiY29udGVudFR5cGU6ICIgKyBj b250ZW50VHlwZSk7CqCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIGxvZy5pbmZv KCJmaWxlbmFtZTogIiArIGZpbGVuYW1lKTsKoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgfQqgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoCAKoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgLy8gZG8gc3R1ZmYu Li4KoAqgCqCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIHJldHVybiBTVUNDRVNTOwqgoKCgoKCgoKCg oCB9CqAKoKCgoKCgoKCgoKAgcHVibGljIHZvaWQgdmFsaWRhdGUoKSB7CqCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgIGxvZy5pbmZvKCJmaWxlbmFtZTogIiArIGZpbGVuYW1lKTsKoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKAgbG9nLmluZm8oImNvbnRlbnRUeXBlOiAiICsgY29udGVudFR5cGUpOwqgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoCAKoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgLy8KoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKAgLy8gVmFsaWRhdGUgZmllbGRzLgqgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oCAvLwqgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCBpZiAoZGVzY3JpcHRpb24gIT0gbnVsbCAmJiBk ZXNjcmlwdGlvbi50cmltKCkubGVuZ3RoKCkgPiAwKSB7CqCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgIGlmIChkZXNjcmlwdGlvbi5sZW5ndGgoKSA+IDUwMDApIHsKoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgYWRkRmllbGRFcnJvcigiZGVz Y3JpcHRpb24iLAqgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCAiRGVzY3JpcHRpb24gbXVzdCBub3QgYmUgbW9yZSB0 aGFuIDUwMDAgY2hhcmFjdGVycywgaW5jbHVkaW5nIHdoaXRlc3BhY2UuIik7CqCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIH0KoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgfSBlbHNl IHsKoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgYWRkRmllbGRFcnJvcigiZGVz Y3JpcHRpb24iLCAiRGVzY3JpcHRpb24gaXMgYSByZXF1aXJlZCBmaWVsZC4iKTsKoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKAgfQqgCqCgoKCgoKCgoKCgIH0KoAqgoKCgoKCgoKCgoCBwdWJsaWMgdm9p ZCBzZXRVcGxvYWQoRmlsZSBmaWxlKSB7CqCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIHRoaXMuZmls ZSA9IGZpbGU7CqCgoKCgoKCgoKCgIH0KoAqgoKCgoKCgoKCgoCBwdWJsaWMgdm9pZCBzZXRVcGxv YWRDb250ZW50VHlwZShTdHJpbmcgY29udGVudFR5cGUpIHsKoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKAgdGhpcy5jb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlOwqgoKCgoKCgoKCgoCB9CqAKoKCgoKCg oKCgoKAgcHVibGljIHZvaWQgc2V0VXBsb2FkRmlsZU5hbWUoU3RyaW5nIGZpbGVuYW1lKSB7CqCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgIHRoaXMuZmlsZW5hbWUgPSBmaWxlbmFtZTsKoKCgoKCgoKCg oKAgfQp9CgoKICAgICAgCk5vdGljZTogIFRoaXMgZS1tYWlsIG1lc3NhZ2UsIHRvZ2V0aGVyIHdp dGggYW55IGF0dGFjaG1lbnRzLCBjb250YWlucwppbmZvcm1hdGlvbiBvZiBNZXJjayAmIENvLiwg SW5jLiAoT25lIE1lcmNrIERyaXZlLCBXaGl0ZWhvdXNlIFN0YXRpb24sCk5ldyBKZXJzZXksIFVT QSAwODg4OSksIGFuZC9vciBpdHMgYWZmaWxpYXRlcyAod2hpY2ggbWF5IGJlIGtub3duCm91dHNp ZGUgdGhlIFVuaXRlZCBTdGF0ZXMgYXMgTWVyY2sgRnJvc3N0LCBNZXJjayBTaGFycCAmIERvaG1l IG9yCk1TRCBhbmQgaW4gSmFwYW4sIGFzIEJhbnl1IC0gZGlyZWN0IGNvbnRhY3QgaW5mb3JtYXRp b24gZm9yIGFmZmlsaWF0ZXMgaXMKYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cubWVyY2suY29tL2Nv bnRhY3QvY29udGFjdHMuaHRtbCkgdGhhdCBtYXkgYmUKY29uZmlkZW50aWFsLCBwcm9wcmlldGFy eSBjb3B5cmlnaHRlZCBhbmQvb3IgbGVnYWxseSBwcml2aWxlZ2VkLiBJdCBpcwppbnRlbmRlZCBz b2xlbHkgZm9yIHRoZSB1c2Ugb2YgdGhlIGluZGl2aWR1YWwgb3IgZW50aXR5IG5hbWVkIG9uIHRo aXMKbWVzc2FnZS4gSWYgeW91IGFyZSBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVudCwgYW5kIGhh dmUgcmVjZWl2ZWQgdGhpcwptZXNzYWdlIGluIGVycm9yLCBwbGVhc2Ugbm90aWZ5IHVzIGltbWVk aWF0ZWx5IGJ5IHJlcGx5IGUtbWFpbCBhbmQKdGhlbiBkZWxldGUgaXQgZnJvbSB5b3VyIHN5c3Rl bS4K