⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aspnet03-01.htm

📁 tutorialssss.... for everybody!!!!!!!!!!!!!!!!!!!
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><!-- saved from url=(0076)http://msconline.maconstate.edu/tutorials/aspnet20/ASPNET03/aspnet03-01.aspx --><title>ASP.NET Tutorial</title>


<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><link href="aspnet03-01_data/stylesheet.css" type="text/css" rel="stylesheet">
<style>TABLE#BookGrid3 TD {
	FONT-SIZE: 11pt; FONT-FAMILY: times new roman
}
TABLE#BookGrid3 TH {
	FONT-SIZE: 11pt; FONT-FAMILY: times new roman
}
TABLE#BookGrid TD {
	FONT-SIZE: 8pt; VERTICAL-ALIGN: top; FONT-FAMILY: times new roman
}
TABLE#BookGrid TH {
	FONT-SIZE: 9pt; FONT-FAMILY: times new roman
}
TABLE#Database TD {
	FONT-SIZE: 9pt; VERTICAL-ALIGN: top; FONT-FAMILY: arial
}
TH {
	FONT-SIZE: 9pt; VERTICAL-ALIGN: top; FONT-FAMILY: arial
}
</style>

<meta content="MSHTML 6.00.2900.2180" name="GENERATOR"></head><body onscroll="document.all.PageScroll.value=document.body.scrollTop" onload="document.body.scrollTop=document.all.PageScroll.value">
<form id="ctl00" name="ctl00" action="aspnet03-01.aspx" method="post">
<div><input id="__VIEWSTATE" value="/wEPDwUKLTYwMDc4MTE1NA9kFgICAQ9kFgoCAw8PFgIeBFRleHQFJTxoMz5TY3JpcHQtR2VuZXJhdGVkIFBhZ2UgT3V0cHV0PC9oMz5kZAIFDw8WAh8ABZ8CPHA+VG9kYXksIDxzcGFuIHN0eWxlPSJjb2xvcjpyZWQiPlNhdHVyZGF5LCBNYXJjaCAyOSwgMjAwODwvc3Bhbj4sIHRoaXMgb3V0cHV0IGlzIHByb2R1Y2VkIGJ5IGEgc2NyaXB0IHRoYXQgd3JpdGVzIHRleHQgY2hhcmFjdGVycywgWEhUTUwgdGFncywgYW5kIGEgVmlzdWFsIEJhc2ljIGRhdGUgZnVuY3Rpb24gdG8gc2VydmVyIG91dHB1dCBjb250cm9scyBjb2RlZCBvbiB0aGUgcGFnZS4gVGhlIGRhdGUgaXMgYWx3YXlzIGN1cnJlbnQgYW5kIGRvZXMgbm90IHJlcXVpcmUgcGFnZSBlZGl0aW5nLjwvcD5kZAIQDzwrAA0CAA8WBB4LXyFEYXRhQm91bmRnHgtfIUl0ZW1Db3VudAIeZAwUKwAEFggeBE5hbWUFBkJvb2tJRB4KSXNSZWFkT25seWgeBFR5cGUZKwIeCURhdGFGaWVsZAUGQm9va0lEFggfAwUJQm9va1RpdGxlHwRoHwUZKwIfBgUJQm9va1RpdGxlFggfAwUJQm9va1ByaWNlHwRoHwUZKVtTeXN0ZW0uRGVjaW1hbCwgbXNjb3JsaWIsIFZlcnNpb249Mi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5HwYFCUJvb2tQcmljZRYIHwMFB0Jvb2tRdHkfBGgfBRkrAR8GBQdCb29rUXR5FgJmD2QWPgIBD2QWCGYPDxYCHwAFBURCMTExZGQCAQ8PFgIfAAUPT3JhY2xlIERhdGFiYXNlZGQCAg8PFgIfAAUFNjkuOTlkZAIDDw8WAh8ABQIxMGRkAgIPZBYIZg8PFgIfAAUFREIyMjJkZAIBDw8WAh8ABRJEYXRhYmFzZXMgaW4gRGVwdGhkZAICDw8WAh8ABQUyOS45NWRkAgMPDxYCHwAFATZkZAIDD2QWCGYPDxYCHwAFBURCMzMzZGQCAQ8PFgIfAAUTRGF0YWJhc2UgUHJvY2Vzc2luZ2Rk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IGFsbCB0aGUgbmV3IGZlYXR1cmVzLCB0aGlzIHBvd2VyaG91c2UgcmVzb3VyY2UgcHJvdmlkZXMgYW4gb3ZlcnZpZXcgb2YgZGF0YWJhc2UgYXJjaGl0ZWN0dXJlIGFuZCBPcmFjbGUgR3JpZCBDb21wdXRpbmcgdGVjaG5vbG9neSwgYW5kIGNvdmVycyBTUUwsIFNRTCpQbHVzLCBQTC9TUUwsIGR5bmFtaWMgUEwvU1FMLCBvYmplY3Qtb3JpZW50ZWQgZmVhdHVyZXMsIGFuZCBKYXZhIHByb2dyYW1taW5nIGluIHRoZSBPcmFjbGUgZW52aXJvbm1lbnQuIFlvdSdsbCBhbHNvIGZpbmQgdmFsdWFibGUgZGF0YWJhc2UgYWRtaW5pc3RyYXRpb24gYW5kIGFwcGxpY2F0aW9uIGRldmVsb3BtZW50IHRlY2huaXF1ZXMsIHBsdXMgYW4gYWxwaGFiZXRpY2FsIHJlZmVyZW5jZSBjb3ZlcmluZyBtYWpvciBPcmFjbGUgY29tbWFuZHMsIGtleXdvcmRzLCBmZWF0dXJlcywgYW5kIGZ1bmN0aW9ucywgd2l0aCBjcm9zcy1yZWZlcmVuY2luZyBvZiB0b3BpY3MuZGQCBQ8PFgIfAAUFNjkuOTlkZAIGDw8WAh8ABQIxMGRkAgcPDxYCHwAFBUZhbHNlZGQCAg9kFhBmDw8WAh8ABQVEQjIyMmRkAgEPDxYCHwAFCERhdGFiYXNlZGQCAg8PFgIfAAUSRGF0YWJhc2VzIGluIERlcHRoZGQCAw8PFgIfAAUKQy4gSi4gRGF0ZWRkAgQPZBYCAgEPZBYCAgEPDxYCHwAF3ANJbiBEYXRhYmFzZSBpbiBEZXB0aCwgYXV0aG9yIGFuZCB3ZWxsLWtub3duIGRhdGFiYXNlIGF1dGhvcml0eSBDaHJpcyBEYXRlIGxheXMgb3V0IHRoZSBmdW5kYW1lbnRhbHMgb2YgdGhlIHJlbGF0aW9uYWwgbW9kZWwuIERvbid0IGxldCBhIGxhY2sgdG8gZm9ybWFsIGVkdWNhdGlvbiBpbiBkYXRhYmFzZSB0aGVvcnkgaG9sZCB5b3UgYmFjay4gSW5zdGVhZCwgbGV0IENocmlzJ3MgY2xlYXIgZXhwbGFuYXRpb24gb2YgcmVsYXRpb25hbCBjb25jZXB0cywgc2V0IHRoZW9yeSwgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBtb2RlbCBhbmQgaW1wbGVtZW50YXRpb24sIHJlbGF0aW9uYWwgYWxnZWJyYSwgbm9ybWFsaXphdGlvbiwgYW5kIG11Y2ggbW9yZSBzZXQgeW91IGFwYXJ0IGFuZCB3ZWxsIGFib3ZlIHRoZSBjb21wZXRpdGlvbiB3aGVuIGl0IGNvbWVzIHRvIGdldHRpbmcgd29yayBkb25lIHdpdGggYSByZWxhdGlvbmFsIGRhdGFiYXNlLmRkAgUPDxYCHwAFBTI5Ljk1ZGQCBg8PFgIfAAUBNmRkAgcPDxYCHwAFBFRydWVkZAIDD2QWEGYPDxYCHwAFBURCMzMzZGQCAQ8PFgIfAAUIRGF0YWJhc2VkZAICDw8WAh8ABRNEYXRhYmFzZSBQcm9jZXNzaW5nZGQCAw8PFgIfAAUKRC4gS3JvZW5rZWRkAgQPZBYCAgEPZBYCAgEPDxYCHwAFoAVSZXZpc2VkIHRvIHJlZmxlY3QgdGhlIG5lZWRzIG9mIHRvZGF5J3MgdXNlcnMsIHRoaXMgMTB0aCBlZGl0aW9uIG9mIERhdGFiYXNlIFByb2Nlc3NpbmcgYXNzdXJlcyB0aGF0IHlvdSB3aWxsIGxlYXJuIG1hcmtldGFibGUgc2tpbGxzLiBCeSBwcmVzZW50aW5nIFNRTCBTRUxFQ1Qgc3RhdGVtZW50cyBuZWFyIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJvb2sgcmVhZGVycyB3aWxsIGtub3cgZWFybHkgb24gaG93IHRvIHF1ZXJ5IGRhdGEgYW5kIG9idGFpbiByZXN1bHRzLXNlZWluZyBmaXJzdGhhbmQgc29tZSBvZiB0aGUgd2F5cyB0aGF0IGRhdGFiYXNlIHRlY2hub2xvZ3kgaXMgdXNlZnVsIGluIHRoZSBtYXJrZXRwbGFjZS4gQnkgdXRpbGl6aW5nIGZyZWUgc29mdHdhcmUgZG93bmxvYWRzLCB5b3Ugd2lsbCBiZSBhYmxlIHRvIGFjdGl2ZWx5IHVzZSBhIERCTVMgcHJvZHVjdCBieSB0aGUgZW5kIG9mIHRoZSAybmQgY2hhcHRlci4gRWFjaCB0b3BpYyBhcHBlYXJzIGluIHRoZSBjb250ZXh0IG9mIGFjY29tcGxpc2hpbmcgcHJhY3RpY2FsIHRhc2tzLiBJdHMgc3BpcmFsIGFwcHJvYWNoIHRvIGRhdGFiYXNlIGRlc2lnbiBwcm92aWRlcyB1c2VycyB3aXRoIGVuaGFuY2VkIGluZm9ybWF0aW9uIG5vdCBhdmFpbGFibGUgaW4gb3RoZXIgZGF0YWJhc2UgYm9va3Mgb24gdGhlIG1hcmtldC5kZAIFDw8WAh8ABQYxMzYuNjVkZAIGDw8WAh8ABQIxMmRkAgcPDxYCHwAFBUZhbHNlZGQCBA9kFhBmDw8WAh8ABQVEQjQ0NGRkAgEPDxYCHwAFCERhdGFiYXNlZGQCAg8PFgIfAAUWQWNjZXNzIERhdGFiYXNlIERlc2lnbmRkAgMPDxYCHwAFCFMuIFJvbWFuZGQCBA9kFgICAQ9kFgICAQ8PFgIfAAXZBVdoZW4gdXNpbmcgc29mdHdhcmUgcHJvZHVjdHMgd2l0aCBncmFwaGljYWwgaW50ZXJmYWNlcywgd2UgZnJlcXVlbnRseSBmb2N1cyBzbyBtdWNoIG9uIHRoZSBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhlIGludGVyZmFjZSB0aGF0IHdlIGZvcmdldCBhYm91dCB0aGUgZ2VuZXJhbCBjb25jZXB0cyB0aGF0IGFsbG93IHVzIHRvIHVuZGVyc3RhbmQgYW5kIHVzZSB0aGUgc29mdHdhcmUgZWZmZWN0aXZlbHkuIFRoaXMgaXMgcGFydGljdWxhcmx5IHRydWUgb2YgYSBwb3dlcmZ1bCBkYXRhYmFzZSBwcm9kdWN0IGxpa2UgTWljcm9zb2Z0IEFjY2Vzcy4gTm92aWNlLCBhbmQgc29tZXRpbWVzIGV2ZW4gZXhwZXJpZW5jZWQsIHByb2dyYW1tZXJzIGFyZSBzbyBjb25jZXJuZWQgd2l0aCBob3cgc29tZXRoaW5nIGlzIGRvbmUgaW4gQWNjZXNzIHRoYXQgdGhleSBvZnRlbiBsb3NlIHNpZ2h0IG9mIHRoZSBnZW5lcmFsIHByaW5jaXBsZXMgdGhhdCB1bmRlcmxpZSB0aGVpciBkYXRhYmFzZSBhcHBsaWNhdGlvbnMuIEFjY2VzcyBEYXRhYmFzZSBEZXNpZ24gYW5kIFByb2dyYW1taW5nIHRha2VzIHlvdSBiZWhpbmQgdGhlIGRldGFpbHMgb2YgdGhlIEFjY2VzcyBpbnRlcmZhY2UsIGZvY3VzaW5nIG9uIHRoZSBnZW5lcmFsIGtub3dsZWRnZSBuZWNlc3NhcnkgZm9yIEFjY2VzcyBwb3dlciB1c2VycyBvciBkZXZlbG9wZXJzIHRvIGNyZWF0ZSBlZmZlY3RpdmUgZGF0YWJhc2UgYXBwbGljYXRpb25zLmRkAgUPDxYCHwAFBTM0Ljk1ZGQCBg8PFgIfAAUCMjVkZAIHDw8WAh8ABQVGYWxzZWRkAgUPZBYQZg8PFgIfAAUFREI1NTVkZAIBDw8WAh8ABQhEYXRhYmFzZWRkAgIPDxYCHwAFD1NRTCBTZXJ2ZXIgMjAwNWRkAgMPDxYCHwAFClAuIERlYmV0dGFkZAIED2QWAgIBD2QWAgIBDw8WAh8ABZwGR2V0IGEgZGV2ZWxvcGVyLWZvY3VzZWQgaW50cm9kdWN0aW9uIHRvIHRoZSBuZXcgcHJvZ3JhbW1hYmlsaXR5IGZlYXR1cmVzIGluIHRoZSBuZXh0IHZlcnNpb24gb2YgTWljcm9zb2Z0IFNRTCBTZXJ2ZXItaW5jbHVkaW5nIGludGVncmF0aW9uIHdpdGggdGhlIE1pY3Jvc29mdCAuTkVUIEZyYW1ld29yay1hbmQgbGVhcm4gcG93ZXJmdWwgbmV3IHdheXMgdG8gbWFuaXB1bGF0ZSB5b3VyIHNlcnZlcnMuIFdoZXRoZXIgeW91J3JlIGEgZGV2ZWxvcGVyIGN1cnJlbnRseSB3b3JraW5nIHdpdGggVC1TUUwgb3IgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8uTkVULCBvciB5b3UncmUgcmVzcG9uc2libGUgZm9yIGRhdGFiYXNlIGFkbWluaXN0cmF0aW9uLCB5b3UnbGwgc2VlIGhvdyB0byBkcmF3IGZyb20geW91ciBleGlzdGluZyBza2lsbHMgYW5kIGtub3dsZWRnZSB0byBleHBsb2l0IG5ldyBTUUwgU2VydmVyIHRlY2hub2xvZ3kuIFdpdGggaW50cm9kdWN0b3J5LWxldmVsIGNvZGUgc2FtcGxlcyB3cml0dGVuIGluIGJvdGggVC1TUUwgYW5kIEMjLCB5b3UnbGwgdW5kZXJzdGFuZCBob3cgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIGNyb3NzLXBsYXRmb3JtIGludGVyb3BlcmFiaWxpdHksIG5hdGl2ZSBzdXBwb3J0IGZvciBYTUwgYW5kIFdlYiBzZXJ2aWNlcywgc2hhcmVkIGxhbmd1YWdlIGJhc2UsIGFuZCBvdGhlciBwcm9ncmFtbWluZyBpbm5vdmF0aW9ucyB0byBidWlsZCBiZXR0ZXIgc29sdXRpb25zIGZyb20gYnVzaW5lc3MgaW50ZWxsaWdlbmNlIHRvIGVudGVycHJpc2UgZGF0YSBtYW5hZ2VtZW50LmRkAgUPDxYCHwAFBTI5Ljk5ZGQCBg8PFgIfAAUBMGRkAgcPDxYCHwAFBFRydWVkZAIGD2QWEGYPDxYCHwAFBUdSMTExZGQCAQ8PFgIfAAUIR3JhcGhpY3NkZAICDw8WAh8ABRNBZG9iZSBQaG90b3Nob3AgQ1MyZGQCAw8PFgIfAAUFQWRvYmVkZAIED2QWAgIBD2QWAgIBDw8WAh8ABYQGV2l0aCB0aGlzIGJvb2ssIHlvdSBsZWFybiBieSBkb2luZywgZ2V0dGluZyB5b3VyIGZlZXQgd2V0IGltbWVkaWF0ZWx5IGFzIHlvdSBwcm9ncmVzcyB0aHJvdWdoIGEgc2VyaWVzIG9mIGhhbmRzLW9uIHByb2plY3RzIHRoYXQgYnVpbGQgb24geW91ciBncm93aW5nIFBob3Rvc2hvcCBrbm93bGVkZ2UuIFNpbXBsZSBzdGVwLWJ5LXN0ZXAgaW5zdHJ1Y3Rpb25zLCByZXZpZXcgcXVlc3Rpb25zIGF0IHRoZSBlbmQgb2YgZWFjaCBjaGFwdGVyLCBhbmQgYSBjb21wYW5pb24gQ0Qgd2l0aCBhbGwgb2YgdGhlIGJvb2sncyBwcm9qZWN0IGZpbGVzIG1ha2UgbGVhcm5pbmcgYSBicmVlemUgYXMgdGhlIEFkb2JlIENyZWF0aXZlIFRlYW0gdGFrZXMgeW91IG9uIGEgc2VsZi1wYWNlZCB0b3VyIG9mIHRoZSBpbWFnZS1lZGl0aW5nIHBvd2VyaG91c2UuIFRoaXMgYmVzdHNlbGxpbmcgZ3VpZGUgaGFzIGJlZW4gY29tcGxldGVseSByZXZpc2VkIHRvIGNvdmVyIGFsbCBvZiBQaG90b3Nob3AgQ1MyJ3MgbmV3IGZlYXR1cmVzIGFuZCBjcmVhdGl2ZSB0b29scy4gVGhpcyBjb21wcmVoZW5zaXZlIGd1aWRlIHN0YXJ0cyB3aXRoIGFuIGludHJvZHVjdG9yeSB0b3VyIG9mIHRoZSBzb2Z0d2FyZSBhbmQgdGhlbiBwcm9ncmVzc2VzIG9uIHRocm91Z2ggbGVzc29ucyBvbiBldmVyeXRoaW5nIGZyb20gUGhvdG9zaG9wJ3MgaW50ZXJmYWNlIHRvIG1vcmUgY29tcGxleCB0b3BpY3MgbGlrZSBjb2xvciBtYW5hZ2VtZW50LCBXZWIgZ3JhcGhpY3MsIGFuZCBwaG90byByZXRvdWNoaW5nLmRkAgUPDxYCHwAFBTI5Ljk5ZGQCBg8PFgIfAAUBNGRkAgcPDxYCHwAFBUZhbHNlZGQCBw9kFhBmDw8WAh8ABQVHUjIyMmRkAgEPDxYCHwAFCEdyYXBoaWNzZGQCAg8PFgIfAAUTTGVhcm5pbmcgV2ViIERlc2lnbmRkAgMPDxYCHwAFC0ouIE5pZWRlcnN0ZGQCBA9kFgICAQ9kFgICAQ8PFgIfAAXiA0luIExlYXJuaW5nIFdlYiBEZXNpZ24sIGF1dGhvciBKZW5uaWZlciBOaWVkZXJzdCBzaGFyZXMgdGhlIGtub3dsZWRnZSBzaGUncyBnYWluZWQgZnJvbSB5ZWFycyBvZiB3ZWIgZGVzaWduIGV4cGVyaWVuY2UsIGJvdGggYXMgYSBkZXNpZ25lciBhbmQgYSB0ZWFjaGVyLiBUaGlzIGJvb2sgc3RhcnRzIGZyb20gdGhlIGJlZ2lubmluZy0tZGVmaW5pbmcgdGhlIEludGVybmV0LCB0aGUgV2ViLCBicm93c2VycywgYW5kIFVSTHMtLXNvIHlvdSBkb24ndCBuZWVkIHRvIGhhdmUgYW55IHByZXZpb3VzIGtub3dsZWRnZSBhYm91dCBob3cgdGhlIFdlYiB3b3Jrcy4gQWZ0ZXIgcmVhZGluZyB0aGlzIGJvb2ssIHlvdSdsbCBoYXZlIGEgc29saWQgZm91bmRhdGlvbiBpbiBIVE1MLCBncmFwaGljcywgYW5kIGRlc2lnbiBwcmluY2lwbGVzIHRoYXQgeW91IGNhbiBpbW1lZGlhdGVseSBwdXQgdG8gdXNlIGluIGNyZWF0aW5nIGVmZmVjdGl2ZSB3ZWIgcGFnZXMuZGQCBQ8PFgIfAAUFMzkuOTVkZAIGDw8WAh8ABQE4ZGQCBw8PFgIfAAUEVHJ1ZWRkAggPZBYQZg8PFgIfAAUFR1IzMzNkZAIBDw8WAh8ABQhHcmFwaGljc2RkAgIPDxYCHwAFHU1hY3JvbWVkaWEgRmxhc2ggUHJvZmVzc2lvbmFsZGQCAw8PFgIfAAUIVC4gR3JlZW5kZAIED2QWAgIBD2QWAgIBDw8WAh8ABaAHT2ZmZXJpbmcgYnJlYWt0aHJvdWdoIHZpZGVvIGNhcGFiaWxpdGllcyBhbmQgcG93ZXJmdWwgcnVuLXRpbWUgZWZmZWN0cywgTWFjcm9tZWRpYSBGbGFzaCBQcm9mZXNzaW9uYWwgOCBpcyBwb2lzZWQgdG8gdXBlbmQgdGhlIFdlYiB2aWRlbyBtYXJrZXQsIHBvc2luZyBhIHNlcmlvdXMgY2hhbGxlbmdlIHRvIE1pY3Jvc29mdCwgUmVhbE5ldHdvcmtzLCBhbmQgQXBwbGUncyBlZmZvcnRzIGluIHRoZSBwcm9jZXNzLiBIZXJlIHRvIG1ha2Ugc3VyZSB5b3UncmUgcmVhZHkgZm9yIGl0IGlzIHRoZSBvZmZpY2lhbCBNYWNyb21lZGlhIHRyYWluaW5nIGZvciB0aGUgcHJvZ3JhbS4gVGhyb3VnaCAyMC1wbHVzIGhvdXJzIG9mIHByb2plY3QtYmFzZWQgaW5zdHJ1Y3Rpb24sIHlvdSdsbCBsZWFybiBob3cgdG8gcHJvZ3JhbSBmb3IgdGhlIGVuaGFuY2VkIEZsYXNoIFBsYXllcjsgdXNlIEFjdGlvblNjcmlwdCB0byBjcmVhdGUgZHluYW1pYyBpbnRlcmFjdGl2aXR5OyB0YWtlIGFkdmFudGFnZSBvZiBuZXcgRmxhc2ggOCBmZWF0dXJlcyBsaWtlIHRoZSBpbXByb3ZlZCBzY3JpcHQgZWRpdG9yLCByZXZhbXBlZCBsaWJyYXJ5IGludGVyZmFjZSwgYW5kIG5ldyBVbmRvIGZlYXR1cmU7IGFuZCBtb3JlLiBTaW1wbGUgc3RlcC1ieS1zdGVwIGluc3RydWN0aW9ucyBwZXBwZXJlZCB3aXRoIHBsZW50eSBvZiB2aXN1YWwgYWlkcyBhbmQgYSBDRCB0aGF0IGluY2x1ZGVzIGxlc3NvbiBmaWxlcyBhbmQgYSB0cmlhbCB2ZXJzaW9uIG9mIEZsYXNoIFByb2Zlc3Npb25hbCA4IGxlYXZlIHlvdSB3aXRoIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiBGbGFzaCBkZXZlbG9wbWVudCBhbmQgdGhlIHRlY2huaXF1ZXMgcmVxdWlyZWQgdG8gdGFwIHlvdXIgY3JlYXRpdmUgcG90ZW50aWFsIGJ5IHByb2R1Y2luZyBkeW5hbWljLCBpbnRlcmFjdGl2ZSBjb250ZW50LmRkAgUPDxYCHwAFBTQ0Ljk5ZGQCBg8PFgIfAAUCMTdkZAIHDw8WAh8ABQVGYWxzZWRkAgkPZBYQZg8PFgIfAAUFR1I0NDRkZAIBDw8WAh8ABQhHcmFwaGljc2RkAgIPDxYCHwAFHURpZ2l0YWwgUGhvdG9ncmFwaGVyIEhhbmRib29rZGQCAw8PFgIfAAUKTS4gRnJlZW1hbmRkAgQPZBYCAgEPZBYCAgEPDxYCHwAFugZNaWNoYWVsIEZyZWVtYW4gaGFzIGEgd2VsbC1kZXNlcnZlZCByZXB1dGF0aW9uIGZvciBlZmZlY3RpdmVseSBleHBsYWluaW5nIHRoZSBjb25jZXB0cyBiZWhpbmQgZGlnaXRhbCBwaWN0dXJlLXRha2luZyB0byBhIHZhcmlldHkgb2YgYXVkaWVuY2VzLiBIZXJlLCBoZSB0dXJucyBoaXMgYXR0ZW50aW9uIHRvIHRoZSBwcm9mZXNzaW9uYWxzIGFuZCBhZHZhbmNlZCBob2JieWlzdHMgd2hvIGFyZSBtYWtpbmcgdGhlIG1vdmUgZnJvbSB0cmFkaXRpb25hbCB0byBkaWdpdGFsIGFuZCB3YW50IGhlbHAgbWFzdGVyaW5nIHRoZSB0ZWNobm9sb2d5IGFuZCBtZWV0aW5nIHRoZWlyIGNsaWVudHMnIG5ldyByZXF1aXJlbWVudHMuIEZyZWVtYW4gdGhvcm91Z2hseSBhbnN3ZXJzIHRoZSBtb3N0IGZyZXF1ZW50bHkgYXNrZWQgcXVlc3Rpb25zIGFib3V0IHRoZSBiYXNpY3Mgb2YgZGlnaXRhbCBjYXB0dXJlLCBmcm9tIGNhbWVyYXMgYW5kIGNvbXB1dGVycyB0byBzdG9yYWdlIG9wdGlvbnMsIHByaW50ZXJzLCBhbmQgc2Nhbm5lcnMuIFBob3RvZ3JhcGhlcnMgd2lsbCBsZWFybiB0aGUgZGlmZmVyZW50IGZpbGUgZm9ybWF0cyBhbmQgaG93IHRvIHNhdmUgaW1hZ2VzIGZvciBwcmludCBvciBwdWJsaXNoaW5nIG9uIHRoZSB3ZWIuIFRoZXknbGwgZXhwbG9yZSB2YWx1YWJsZSBzb2Z0d2FyZSB0b29scyBhbmQgYmFzaWMgaW1hZ2UgcHJvY2Vzc2luZyBwcm9ncmFtcyB0aGF0IGZpeCBjb21tb24gcHJvYmxlbXMsIGFuZCBzZWUgaG93IHRvIGltcHJvdmUgcGljdHVyZXMgdXNpbmcgYW4gYXNzb3J0bWVudCBvZiBjcm9wcGluZyBhbmQgZmlsdGVyaW5nIHRlY2huaXF1ZXMuZGQCBQ8PFgIfAAUFMjQuOTVkZAIGDw8WAh8ABQIyMmRkAgcPDxYCHwAFBUZhbHNlZGQCCg9kFhBmDw8WAh8ABQVHUjU1NWRkAgEPDxYCHwAFCEdyYXBoaWNzZGQCAg8PFgIfAAUYQ3JlYXRpbmcgTW90aW9uIEdyYXBoaWNzZGQCAw8PFgIfAAUIVC4gTWV5ZXJkZAIED2QWAgIBD2QWAgIBDw8WAh8ABZMEVHJpc2ggYW5kIENocmlzIE1leWVyIHNoYXJlIHRoZWlyIHllYXJzIG9mIHJlYWwtd29ybGQgcHJvZHVjdGlvbiBleHBlcmllbmNlIGluIHRoaXMgdml0YWwgdXBkYXRlIHRvIHRoZSBhY2NsYWltZWQgQ3JlYXRpbmcgTW90aW9uIEdyYXBoaWNzIHdpdGggQWZ0ZXIgRWZmZWN0cyBzZXJpZXMuIE1vcmUgdGhhbiBhIHN0ZXAtYnktc3RlcCByZXZpZXcgb2YgdGhlIGZlYXR1cmVzLCB5b3UgbGVhcm4gaG93IHRoaXMgcHJvZ3JhbSBpbnRlZ3JhdGVzIGludG8gcmVhbC13b3JsZCBwcm9kdWN0aW9uIHdvcmtmbG93cyBmcm9tIGF3YXJkLXdpbm5pbmcgYXJ0aXN0cyB3aG8gbWFrZSB0aGVpciBsaXZpbmcgdXNpbmcgQWZ0ZXIgRWZmZWN0cy4gVGhpcyBmdWxsLWNvbG9yIGd1aWRlIGlzIHBhY2tlZCB3aXRoIHZpc3VhbCBleGFtcGxlcywgYW5kIHRoZSBlbmNsb3NlZCBEVkQtUk9NIGlzIGxvYWRlZCB3aXRoIHNvdXJjZSBtYXRlcmlhbCBhbmQgcHJvamVjdHMgdGhhdCBlbmNvdXJhZ2UgeW91IHRvIHByYWN0aWNlIHRoZWlyIHRlY2huaXF1ZXMuZGQCBQ8PFgIfAAUFNTkuOTVkZAIGDw8WAh8ABQIxM2RkAgcPDxYCHwAFBUZhbHNlZGQCCw9kFhBmDw8WAh8ABQVIVzExMWRkAgEPDxYCHwAFCEhhcmR3YXJlZGQCAg8PFgIfAAUSSG93IENvbXB1dGVycyBXb3JrZGQCAw8PFgIfAAUIUi4gV2hpdGVkZAIED2QWAgIBD2QWAgIBDw8WAh8ABe0DSG93IENvbXB1dGVycyBXb3JrLCA3dGggRWRpdGlvbiwgaGFzIGJlZW4gb25lIG9mIHRoZSBiZXN0c2VsbGluZyBjb21wdXRlciBib29rcyBmb3IgdGhlIGxhc3QgMTAgeWVhcnMuIFRoaXMgZm91ci1jb2xvciB2aXN1YWwgdHV0b3JpYWwgaXMgYSBtdXN0LWhhdmUgZm9yIGFueSBjb21wdXRlciB1c2VyLCBmcm9tIG5vdmljZSB0byBleHBlcnQuIFRoZSByaWNoIGdyYXBoaWNzIGFuZCBpbnRyaWNhdGUgZGV0YWlscyBhYm91dCB0aGUgaW5uZXIgd29ya2luZ3Mgb2YgY29tcHV0ZXJzIGhhdmUgYmVlbiBhZG1pcmVkIGZvciB5ZWFycyBieSBjb25zdW1lcnMsIGluc3RydWN0b3JzLCBwcm9mZXNzaW9uYWxzLCBhbmQgcmVhZGVycyBvZiBhbGwgYWdlcy4gQSBmcmVzaCBjb3ZlciBhbmQgaW50ZXJpb3IgcHJvdmlkZSB0aGUgcmVhZGVyIHdpdGggc3VwZXJpb3IgdXNhYmlsaXR5IGFuZCBpdCBpcyB0aGUgbW9zdCBhZXN0aGV0aWNhbGx5LXBsZWFzaW5nIGVkaXRpb24geWV0IWRkAgUPDxYCHwAFBTI5Ljk5ZGQCBg8PFgIfAAUBOGRkAgcPDxYCHwAFBUZhbHNlZGQCDA9kFhBmDw8WAh8ABQVIVzIyMmRkAgEPDxYCHwAFCEhhcmR3YXJlZGQCAg8PFgIfAAUbVXBncmFkaW5nIGFuZCBSZXBhaXJpbmcgUENzZGQCAw8PFgIfAAUKUy4gTXVlbGxlcmRkAgQPZBYCAgEPZBYCAgEPDxYCHwAFxwZQdXNoIHlvdXIgUEMncyBwZXJmb3JtYW5jZSB0byB0aGUgbGltaXQuIEtub3cgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW46IFBlbnRpdW0gSUksIFBlbnRpdW0gTU1YLCBQZW50aXVtIFBybywgYW5kIGVhcmxpZXIgQ1BVIGNoaXBzIGFuZCBjaG9vc2UgdGhlIGJlc3QgY2hpcCBmb3IgeW91ciBuZWVkczsgdW5kZXJzdGFuZCBjb21wYXRpYmlsaXR5IGFuZCBmZWF0dXJlIHNldHMgb2YgcHJvY2Vzc29yIHVwZ3JhZGUgc29ja2V0cywgbW90aGVyYm9hcmRzLCBhbmQgY2hpcHNldHM7IHVzZSBVbml2ZXJzYWwgU2VyaWFsIEJ1cyBwb3J0cyBhbmQgZGV2aWNlcyB0byBzaW1wbGlmeSBwZXJpcGhlcmFsIGluc3RhbGxhdGlvbiwgY29uZmlndXJhdGlvbiwgYW5kIGltcHJvdmUgcGVyZm9ybWFuY2U7IHNxdWVlemUgdGhlIG1vc3QgcGVyZm9ybWFuY2UsIGxpZmUsIGFuZCByZWxpYWJpbGl0eSBvdXQgb2YgeW91ciBoYXJkIGRyaXZlczsgcHJldmVudCBtZW1vcnkgaGVhZGFjaGVzOiBwaWNrIHRoZSByaWdodCBzcGVlZCBhbmQgdHlwZSBvZiBTSU1NcyBhbmQgRElNTXMsIHJ1biBtb3JlIHByb2dyYW1zIGF0IG9uY2UsIGFuZCB3b3JrIHdpdGggYmlnZ2VyIGZpbGVzOyBhbmQgaW50ZWdyYXRlIGhvdCBuZXcgaGFyZHdhcmUgaW5jbHVkaW5nIDNEIGdyYXBoaWNzIGFjY2VsZXJhdG9ycywgZmFzdCBTRFJBTSBtZW1vcnksIFpvb21lZCBWaWRlbyBhbmQgQ2FyZEJ1cyBQQyBDYXJkcyBmb3IgeW91ciBub3RlYm9vaywgYW5kIE5MWCBtb3RoZXJib2FyZHMgd2l0aCBzdXBwb3J0IGZvciBTaW5nbGUgRWRnZSBDb250YWN0IHByb2Nlc3NvcnMgYW5kIEFjY2VsZXJhdGVkIEdyYXBoaWNzIFBvcnRzLmRkAgUPDxYCHwAFBTU5Ljk5ZGQCBg8PFgIfAAUBNWRkAgcPDxYCHwAFBUZhbHNlZGQCDQ9kFhBmDw8WAh8ABQVIVzMzM2RkAgEPDxYCHwAFCEhhcmR3YXJlZGQCAg8PFgIfAAUXVVNCIFN5c3RlbSBBcmNoaXRlY3R1cmVkZAIDDw8WAh8ABQtELiBBbmRlcnNvbmRkAgQPZBYCAgEPZBYCAgEPDxYCHwAF6wJVbml2ZXJzYWwgU2VyaWFsIEJ1cyBTeXN0ZW0gQXJjaGl0ZWN0dXJlLCBTZWNvbmQgRWRpdGlvbiwgYmFzZWQgb24gdGhlIDIuMCB2ZXJzaW9uIG9mIHRoZSBVbml2ZXJzYWwgU2VyaWFsIEJ1cyBzcGVjaWZpY2F0aW9uLCBwcm92aWRlcyBpbi1kZXB0aCBjb3ZlcmFnZSBhbmQgYSBkZXRhaWxlZCBkaXNjdXNzaW9uIG9mIFVTQi4gSXQgZm9jdXNlcyBvbiB0aGUgVVNCIHByb3RvY29sLCBzaWduYWxpbmcgZW52aXJvbm1lbnQsIGFuZCBlbGVjdHJpY2FsIHNwZWNpZmljYXRpb25zLCBhbG9uZyB3aXRoIHRoZSBoYXJkd2FyZS9zb2Z0d2FyZSBpbnRlcmFjdGlvbiByZXF1aXJlZCB0byBjb25maWd1cmUgYW5kIGFjY2VzcyBVU0IgZGV2aWNlcy5kZAIFDw8WAh8ABQU0OS45OWRkAgYPDxYCHwAFATFkZAIHDw8WAh8ABQVGYWxzZWRkAg4PZBYQZg8PFgIfAAUFSFc0NDRkZAIBDw8WAh8ABQhIYXJkd2FyZWRkAgIPDxYCHwAFG0Rlc2lnbmluZyBFbWJlZGRlZCBIYXJkd2FyZWRkAgMPDxYCHwAFDEouIENhdHNvdWxpc2RkAgQPZBYCAgEPZBYCAgEPDxYCHwAFwgREZXNpZ25pbmcgRW1iZWRkZWQgSGFyZHdhcmUgaXMgYSBib29rIGFib3V0IGRlc2lnbmluZyBzbWFsbCBtYWNoaW5lcyBmb3IgZW1iZWRkZWQgYXBwbGljYXRpb25zLiBUaGVyZSBhcmUgbWFueSBib29rcyBvbiB0aGUgbWFya2V0IGRlZGljYXRlZCB0byB3cml0aW5nIGNvZGUgZm9yIHBhcnRpY3VsYXIgbWljcm9wcm9jZXNzb3JzLCBvciB0aGF0IHN0cmVzcyB0aGUgcGhpbG9zb3BoeSBvZiBlbWJlZGRlZCBzeXN0ZW0gZGVzaWduIHdpdGhvdXQgcHJvdmlkaW5nIGFueSBwcmFjdGljYWwgaW5mb3JtYXRpb24uIFRoaXMgYm9vayBzdGVlcnMgYSBtaWRkbGUgcGF0aCwgdGVsbGluZyB5b3Ugd2hhdCB5b3UgbmVlZCB0byBrbm93IHRvIGNyZWF0ZSB5b3VyIG93biBwcm9kdWN0cywgYW5kIGRpc3RpbGxpbmcgbXVjaCBvZiB0aGUgbG9yZSBvZiBlbWJlZGRlZCBzeXN0ZW1zIGRlc2lnbiBpbnRvIGEgc2luZ2xlIHZvbHVtZS4gSXQgc2hvd3MgeW91IGhvdyB0byBidWlsZCBhIGNvbXBsZXRlIGVtYmVkZGVkIHN5c3RlbSwgYWRkIHBlcmlwaGVyYWxzLCBhbmQgY29ubmVjdCB5b3VyIHN5c3RlbSB0byBvdGhlciBkZXZpY2VzLmRkAgUPDxYCHwAFBTQ0Ljk1ZGQCBg8PFgIfAAUBM2RkAgcPDxYCHwAFBFRydWVkZAIPD2QWEGYPDxYCHwAFBUhXNTU1ZGQCAQ8PFgIfAAUISGFyZHdhcmVkZAICDw8WAh8ABRlDb250ZW1wb3JhcnkgTG9naWMgRGVzaWduZGQCAw8PFgIfAAUHUi4gS2F0emRkAgQPZBYCAgEPZBYCAgEPDxYCHwAF1gRDb250ZW1wb3JhcnkgTG9naWMgRGVzaWduIGludHJvZHVjZXMgYSB3aWRlIHJhbmdlIG9mIHNvZnR3YXJlIHRvb2xzIGluY2x1ZGluZyBzY2hlbWF0aWMgY2FwdHVyZSwgbG9naWMgc2ltdWxhdGlvbiwgQm9vbGVhbiBtaW5pbWl6YXRpb24sIG11bHRpLWxldmVsIG1pbmltaXphdGlvbiBhbmQgc3RhdGUgYXNzaWdubWVudC4gTGlua3MgdGhlIHRyYWRpdGlvbmFsIHRlY2huaXF1ZXMgb2YgbG9naWMgZGVzaWduIChzdWNoIGFzIEthcm5hdWdoIG1hcHMgYW5kIGJyZWFkYm9hcmQgdGVjaG5pcXVlcykgd2l0aCByZWFsLXdvcmxkIGRlc2lnbiBleGFtcGxlcy4gUHJvdmlkZXMgY29tcHJlaGVuc2l2ZSwgZWFybHkgY292ZXJhZ2Ugb2YgcHJvZ3JhbW1hYmxlIGxvZ2ljIGluY2x1ZGluZyBST01zLCBQQUxzLCBhbmQgUExBcy4gSW5jbHVkZXMgYSB2YXJpZXR5IG9mIGV4YW1wbGVzLCBleGVyY2lzZXMsIHByb2JsZW1zLCBhbmQgY2FzZSBzdHVkaWVzIHRoYXQgaWxsdXN0cmF0ZSByZWFsIGRlc2lnbiBwcm9ibGVtcyBhbmQgY2hhbGxlbmdlIHRoZSByZWFkZXIgdG8gZGV2ZWxvcCBwcmFjdGljYWwgc29sdXRpb25zIHVzaW5nIG1vZGVybiBkZXNpZ24gdG9vbHMuZGQCBQ8PFgIfAAUGMTAyLjk1ZGQCBg8PFgIfAAUBMmRkAgcPDxYCHwAFBUZhbHNlZGQCEA9kFhBmDw8WAh8ABQVTVzExMWRkAgEPDxYCHwAFCFNvZnR3YXJlZGQCAg8PFgIfAAUTSmF2YSBIb3cgdG8gUHJvZ3JhbWRkAgMPDxYCHwAFBkRlaXRlbGRkAgQPZBYCAgEPZBYCAgEPDxYCHwAF9ANUaGlzIGVkaXRpb24gaXMgY29tcGxldGVseSB1cC10by1kYXRlIHdpdGggVGhlIEphdmEgMiBQbGF0Zm9ybSBTdGFuZGFyZCBFZGl0aW9uIChKMlNFKSAxLjUuIE5vdyBpbmNsdWRlcyB0b3BpY3Mgc3VjaCBhcyBhdXRvYm94aW5nLCBlbnVtZXJhdGlvbnMsIGVuaGFuY2VkIGZvciBsb29wcywgc3RhdGljIGltcG9ydCBzdGF0ZW1lbnRzLCB2YXJpYWJsZS1sZW5ndGggYXJndW1lbnQgbGlzdHMsIGFuZCBtdWNoIG1vcmUuIFByZXNlbnRzIGVhY2ggbmV3IGNvbmNlcHQgaW4gdGhlIGNvbnRleHQgb2YgYSBjb21wbGV0ZSwgd29ya2luZyBwcm9ncmFtLCBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBvbmUgb3IgbW9yZSB3aW5kb3dzIHNob3dpbmcgdGhlIHByb2dyYW0ncyBpbnB1dC9vdXRwdXQgZGlhbG9nLiBBIHZhbHVhYmxlIHJlZmVyZW5jZSBmb3IgcHJvZ3JhbW1lcnMgYW5kIGFueW9uZSBpbnRlcmVzdGVkIGluIGxlYXJuaW5nIHRoZSBKYXZhIHByb2dyYW1taW5nIGxhbmd1YWdlLmRkAgUPDxYCHwAFBTk4LjU5ZGQCBg8PFgIfAAUBOWRkAgcPDxYCHwAFBFRydWVkZAIRD2QWEGYPDxYCHwAFBVNXMjIyZGQCAQ8PFgIfAAUIU29mdHdhcmVkZAICDw8WAh8ABRZDIFByb2dyYW1taW5nIExhbmd1YWdlZGQCAw8PFgIfAAUMQi4gS2VybmlnaGFuZGQCBA9kFgICAQ9kFgICAQ8PFgIfAAWvBVRoZSBvcmlnaW5hbCBhdXRob3JzIG9mIEMgYW5kIHRoZSBmaXJzdCBVTklYIHN5c3RlbSBwcmVzZW50IHRoaXMgY29uY2lzZSBhbmQgcG93ZXJmdWwgZ3VpZGUgdG8gQU5TSSBzdGFuZGFyZCBDIHByb2dyYW1taW5nLiBUaGlzIHZlcnNpb24sIGJ1aWxkaW5nIG9uIEtlcm5pbmdoYW4gYW5kIFJpdGNoaWUncyBjbGFzc2ljIFRoZSBDIFByb2dyYW1taW5nIExhbmd1YWdlLCBicmluZ3MgcmVhZGVycyB1cC10by1kYXRlIHdpdGggdGhlIGZpbmFsaXplZCBBTlNJIHN0YW5kYXJkIGZvciBDIHdoaWxlIHRlYWNoaW5nIHVzZXJzIGhvdyB0byB0YWtlIGFkdmFudGFnZSBvZiBub3RlZCBDIGZlYXR1cmVzIGxpa2UgZWNvbm9teSBvZiBleHByZXNzaW9uLCBpdHMgZnVsbCBzZXQgb2Ygb3BlcmF0b3JzIGFuZCBtb3JlLiBPbmUgcmVhZGVyIGNsYWltZWQgIkp1c3QgYWJvdXQgZXZlcnkgQyBwcm9ncmFtbWVyIEkgcmVzcGVjdCBsZWFybmVkIEMgZnJvbSB0aGlzIGJvb2ssIiB3aGlsZSBhbm90aGVyIHJhdmVkIHRoYXQgdGhpcyBib29rIGlzIHRoZSAiQmlibGUgb2YgQy4iIFRoaXMgYm9vayBpcyByZWdhcmRlZCBieSBqdXN0IGFib3V0IGFueW9uZSBpbiB0aGUgQyBmaWVsZCBhcyB0aGUgY2Fub25pY2FsIHdvcmsgb24gdGhlIEMgbGFuZ3VhZ2UgYW5kIGlzIGVzc2VudGlhbCByZWFkaW5nIGZvciBDIHByb2dyYW1tZXJzLmRkAgUPDxYCHwAFBTQ0LjI1ZGQCBg8PFgIfAAUCMTJkZAIHDw8WAh8ABQVGYWxzZWRkAhIPZBYQZg8PFgIfAAUFU1czMzNkZAIBDw8WAh8ABQhTb2Z0d2FyZWRkAgIPDxYCHwAFDlByb2dyYW1taW5nIEMjZGQCAw8PFgIfAAUKSi4gTGliZXJ0eWRkAgQPZBYCAgEPZBYCAgEPDxYCHwAFgwZUaGUgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgQyMgd2FzIGJ1aWx0IHdpdGggdGhlIGZ1dHVyZSBvZiBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudCBpbiBtaW5kLiBQdXJzdWluZyB0aGF0IHZpc2lvbiwgQyMncyBkZXNpZ25lcnMgc3VjY2VlZGVkIGluIGNyZWF0aW5nIGEgc2FmZSwgc2ltcGxlLCBjb21wb25lbnQtYmFzZWQsIGhpZ2gtcGVyZm9ybWFuY2UgbGFuZ3VhZ2UgdGhhdCB3b3JrcyBlZmZlY3RpdmVseSB3aXRoIE1pY3Jvc29mdCdzIC5ORVQgRnJhbWV3b3JrLiBOb3cgdGhlIGZhdm9yZWQgbGFuZ3VhZ2UgYW1vbmcgdGhvc2UgcHJvZ3JhbW1pbmcgZm9yIHRoZSBNaWNyb3NvZnQgcGxhdGZvcm0sIEMjIGNvbnRpbnVlcyB0byBncm93IGluIHBvcHVsYXJpdHkgYXMgbW9yZSBkZXZlbG9wZXJzIGRpc2NvdmVyIGl0cyBzdHJlbmd0aCBhbmQgZmxleGliaWxpdHkuIEFuZCwgZnJvbSB0aGUgc3RhcnQsIEMjIGRldmVsb3BlcnMgaGF2ZSByZWxpZWQgb24gUHJvZ3JhbW1pbmcgQyMgYm90aCBhcyBhbiBpbnRyb2R1Y3Rpb24gdG8gdGhlIGxhbmd1YWdlIGFuZCBhIG1lYW5zIG9mIGZ1cnRoZXIgYnVpbGRpbmcgdGhlaXIgc2tpbGxzLiBUaGUgbmV3IGZvdXJ0aCBlZGl0aW9uIG9mIFByb2dyYW1taW5nIEMjLS10aGUgdG9wLXNlbGxpbmcgQyMgYm9vayBvbiB0aGUgbWFya2V0LS1oYXMgYmVlbiB1cGRhdGVkIHRvIHRoZSBDIyBJU08gc3RhbmRhcmQgYXMgd2VsbCBhcyBjaGFuZ2VzIHRvIE1pY3Jvc29mdCdzIGltcGxlbWVudGF0aW9uIG9mIHRoZSBsYW5ndWFnZS5kZAIFDw8WAh8ABQU0NC45NWRkAgYPDxYCHwAFATBkZAIHDw8WAh8ABQVGYWxzZWRkAhMPZBYQZg8PFgIfAAUFU1c0NDRkZAIBDw8WAh8ABQhTb2Z0d2FyZWRkAgIPDxYCHwAFD1Byb2dyYW1taW5nIFBIUGRkAgMPDxYCHwAFDVIuIEouIExlcmRvcmZkZAIED2QWAgIBD2QWAgIBDw8WAh8ABaoGUEhQIGlzIGEgc2ltcGxlIHlldCBwb3dlcmZ1bCBvcGVuIHNvdXJjZSBzY3JpcHRpbmcgbGFuZ3VhZ2UgZm9yIGNyZWF0aW5nIGR5bmFtaWMgd2ViIGNvbnRlbnQuIFRoZSBtaWxsaW9ucyBvZiB3ZWIgc2l0ZXMgcG93ZXJlZCBieSBQSFAgYXJlIHRlc3RhbWVudCB0byBpdHMgcG9wdWxhcml0eSBhbmQgZWFzZSBvZiB1c2UuIFBIUCBpcyB1c2VkIGJ5IGJvdGggcHJvZ3JhbW1lcnMsIHdobyBhcHByZWNpYXRlIGl0cyBmbGV4aWJpbGl0eSBhbmQgc3BlZWQsIGFuZCB3ZWIgZGVzaWduZXJzLCB3aG8gdmFsdWUgaXRzIGFjY2Vzc2liaWxpdHkgYW5kIGNvbnZlbmllbmNlLiBQcm9ncmFtbWluZyBQSFAgaXMgYW4gYXV0aG9yaXRhdGl2ZSBndWlkZSB0byBQSFAgNCwgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBsYW5ndWFnZSwgYW5kIGlzIGZpbGxlZCB3aXRoIHRoZSB1bmlxdWUga25vd2xlZGdlIG9mIHRoZSBjcmVhdG9yIG9mIFBIUCwgUmFzbXVzIExlcmRvcmYuIFRoaXMgYm9vayBleHBsYWlucyBQSFAgbGFuZ3VhZ2Ugc3ludGF4IGFuZCBwcm9ncmFtbWluZyB0ZWNobmlxdWVzIGluIGEgY2xlYXIgYW5kIGNvbmNpc2UgbWFubmVyLCB3aXRoIG51bWVyb3VzIGV4YW1wbGVzIHRoYXQgaWxsdXN0cmF0ZSBib3RoIGNvcnJlY3QgdXNhZ2UgYW5kIGNvbW1vbiBpZGlvbXMuIFRoZSBib29rIGFsc28gaW5jbHVkZXMgc3R5bGUgdGlwcyBhbmQgcHJhY3RpY2FsIHByb2dyYW1taW5nIGFkdmljZSB0aGF0IHdpbGwgaGVscCB5b3UgYmVjb21lIG5vdCBqdXN0IGEgUEhQIHByb2dyYW1tZXIsIGJ1dCBhIGdvb2QgUEhQIHByb2dyYW1tZXIuZGQCBQ8PFgIfAAUFMzkuOTVkZAIGDw8WAh8ABQIxN2RkAgcPDxYCHwAFBUZhbHNlZGQCFA9kFhBmDw8WAh8ABQVTVzU1NWRkAgEPDxYCHwAFCFNvZnR3YXJlZGQCAg8PFgIfAAUcVmlzdWFsIEJhc2ljLk5FVCBQcm9ncmFtbWluZ2RkAgMPDxYCHwAFB1AuIFZpY2tkZAIED2QWAgIBD2QWAgIBDw8WAh8ABYAEVmlzdWFsIEJhc2ljIC5ORVQgYnVpbGRzIG9uIHRoZSBsZWdlbmRhcnkgc2ltcGxpY2l0eSBvZiBWaXN1YWwgQmFzaWMgdG8gYWRkIHRoZSBpbW1lbnNlIHBvd2VyIG9mIHRydWUgb2JqZWN0LW9yaWVudGVkIHByb2dyYW1taW5nIGFuZCBNaWNyb3NvZnQncyAuTkVUIEZyYW1ld29yay4gTm93LCBmb3IgdGhlIGZpcnN0IHRpbWUsIG9uZSBvZiB0aGUgbGFuZ3VhZ2UncyBhcmNoaXRlY3RzIGhhcyB3cml0dGVuIGEgZGVmaW5pdGl2ZSB0ZWNobmljYWwgcmVmZXJlbmNlIGFuZCB0dXRvcmlhbCBmb3IgVmlzdWFsIEJhc2ljIC5ORVQuIE1vdmluZyBmYXIgYmV5b25kIHRoZSBvbmxpbmUgZG9jdW1lbnRhdGlvbiwgUGF1bCBWaWNrIHByZXNlbnRzIHRoZSBsYW5ndWFnZSdzIGNvbXBsZXRlIHNwZWNpZmljYXRpb24sIGFsb25nIHdpdGggZGVzY3JpcHRpb25zLCByZWZlcmVuY2UgbWF0ZXJpYWxzLCBhbmQgY29kZSBzYW1wbGVzIGRpcmVjdCBmcm9tIHRoZSBWaXN1YWwgQmFzaWMgLk5FVCBkZXNpZ24gdGVhbS5kZAIFDw8WAh8ABQU0OS45OWRkAgYPDxYCHwAFAjEzZGQCBw8PFgIfAAUFRmFsc2VkZAIVD2QWEGYPDxYCHwAFBVNZMTExZGQCAQ8PFgIfAAUHU3lzdGVtc2RkAgIPDxYCHwAFGU9wZXJhdGluZyBTeXN0ZW0gQ29uY2VwdHNkZAIDDw8WAh8ABQ9BLiBTaWxiZXJzY2hhdHpkZAIED2QWAgIBD2QWAgIBDw8WAh8ABeYDQnkgc3RheWluZyBjdXJyZW50LCByZW1haW5pbmcgcmVsZXZhbnQsIGFuZCBhZGFwdGluZyB0byBlbWVyZ2luZyBjb3Vyc2UgbmVlZHMsIHRoaXMgdGV4dCBoYXMgY29udGludWVkIHRvIGRlZmluZSB0aGUgb3BlcmF0aW5nIHN5c3RlbXMgY291cnNlLiBUaGlzIFNldmVudGggRWRpdGlvbiBub3Qgb25seSBwcmVzZW50cyB0aGUgbGF0ZXN0IGFuZCBtb3N0IHJlbGV2YW50IHN5c3RlbXMsIGl0IGFsc28gZGlncyBkZWVwZXIgdG8gdW5jb3ZlciB0aG9zZSBmdW5kYW1lbnRhbCBjb25jZXB0cyB0aGF0IGhhdmUgcmVtYWluZWQgY29uc3RhbnQgdGhyb3VnaG91dCB0aGUgZXZvbHV0aW9uIG9mIHRvZGF5J3Mgb3BlcmF0aW5nIHN5c3RlbXMuIFdpdGggdGhpcyBzdHJvbmcgY29uY2VwdHVhbCBmb3VuZGF0aW9uIGluIHBsYWNlLCBzdHVkZW50cyBjYW4gbW9yZSBlYXNpbHkgdW5kZXJzdGFuZCB0aGUgZGV0YWlscyByZWxhdGVkIHRvIHNwZWNpZmljIHN5c3RlbXMuZGQCBQ8PFgIfAAUFOTUuNzVkZAIGDw8WAh8ABQExZGQCBw8PFgIfAAUFRmFsc2VkZAIWD2QWEGYPDxYCHwAFBVNZMjIyZGQCAQ8PFgIfAAUHU3lzdGVtc2RkAgIPDxYCHwAFGVRoZSBVTklYIE9wZXJhdGluZyBTeXN0ZW1kZAIDDw8WAh8ABQpKLiBELiBQZWVrZGQCBA9kFgICAQ9kFgICAQ8PFgIfAAXcA0xlYXJuaW5nIHRoZSBVbml4IE9wZXJhdGluZyBTeXN0ZW0gaXMgYSBoYW5keSBib29rIGZvciBzb21lb25lIGp1c3Qgc3RhcnRpbmcgd2l0aCBVbml4IG9yIExpbnV4LCBhbmQgaXQncyBhbiBpZGVhbCBwcmltZXIgZm9yIE1hYyBhbmQgUEMgdXNlcnMgb2YgdGhlIEludGVybmV0IHdobyBuZWVkIHRvIGtub3cgYSBsaXR0bGUgYWJvdXQgVW5peCBvbiB0aGUgc3lzdGVtcyB0aGV5IHZpc2l0LiBUaGUgZmlmdGggZWRpdGlvbiBpcyB0aGUgbW9zdCBlZmZlY3RpdmUgaW50cm9kdWN0aW9uIHRvIFVuaXggaW4gcHJpbnQsIGNvdmVyaW5nIEludGVybmV0IHVzYWdlIGZvciBlbWFpbCwgZmlsZSB0cmFuc2ZlcnMsIHdlYiBicm93c2luZywgYW5kIG1hbnkgbWFqb3IgYW5kIG1pbm9yIHVwZGF0ZXMgdG8gaGVscCB0aGUgcmVhZGVyIG5hdmlnYXRlIHRoZSBldmVyLWV4cGFuZGluZyBjYXBhYmlsaXRpZXMgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0uZGQCBQ8PFgIfAAUFMTkuOTVkZAIGDw8WAh8ABQIxMmRkAgcPDxYCHwAFBFRydWVkZAIXD2QWEGYPDxYCHwAFBVNZMzMzZGQCAQ8PFgIfAAUHU3lzdGVtc2RkAgIPDxYCHwAFE1dpbmRvd3MgU2VydmVyIDIwMDNkZAIDDw8WAh8ABQxXLiBSLiBTdGFuZWtkZAIED2QWAgIBD2QWAgIBDw8WAh8ABYoESGVyZSdzIHRoZSBwcmFjdGljYWwsIHBvY2tldC1zaXplZCByZWZlcmVuY2UgZm9yIElUIHByb2Zlc3Npb25hbHMgc3VwcG9ydGluZyBXaW5kb3dzIC5ORVQgU2VydmVyLiBEZXNpZ25lZCBmb3IgcXVpY2sgcmVmZXJlbmNpbmcsIHRoaXMgcG9ydGFibGUgZ3VpZGUgY292ZXJzIGFsbCB0aGUgZXNzZW50aWFscyBmb3IgcGVyZm9ybWluZyBldmVyeWRheSBzeXN0ZW0tYWRtaW5pc3RyYXRpb24gdGFza3MuIFRvcGljcyBpbmNsdWRlIG1hbmFnaW5nIHdvcmtzdGF0aW9ucyBhbmQgc2VydmVycywgdXNpbmcgTWljcm9zb2Z0IEFjdGl2ZSBEaXJlY3Rvcnkgc2VydmljZXMsIGNyZWF0aW5nIGFuZCBhZG1pbmlzdGVyaW5nIHVzZXIgYW5kIGdyb3VwIGFjY291bnRzLCBtYW5hZ2luZyBmaWxlcyBhbmQgZGlyZWN0b3JpZXMsIGRhdGEgc2VjdXJpdHkgYW5kIGF1ZGl0aW5nLCBkYXRhIGJhY2stdXAgYW5kIHJlY292ZXJ5LCBuZXR3b3JrIGFkbWluaXN0cmF0aW9uIHVzaW5nIFRDUC9JUCwgV0lOUywgYW5kIEROUywgYW5kIG1vcmUuZGQCBQ8PFgIfAAUFMjkuOTlkZAIGDw8WAh8ABQIyNWRkAgcPDxYCHwAFBUZhbHNlZGQCGA9kFhBmDw8WAh8ABQVTWTQ0NGRkAgEPDxYCHwAFB1N5c3RlbXNkZAICDw8WAh8ABRNMaW51eCBpbiBhIE51dHNoZWxsZGQCAw8PFgIfAAUKUy4gRmlnZ2luc2RkAgQPZBYCAgEPZBYCAgEPDxYCHwAF1QRXaGV0aGVyIHlvdSdyZSB1c2luZyBMaW51eCBmb3IgcGVyc29uYWwgc29mdHdhcmUgcHJvamVjdHMsIGZvciBhIHNtYWxsIG9mZmljZSBvciBob21lIG9mZmljZSwgdG8gcHJvdmlkZSBzZXJ2aWNlcyB0byBhIHNtYWxsIGdyb3VwIG9mIGNvbGxlYWd1ZXMsIG9yIHRvIGFkbWluaXN0ZXIgYSBzaXRlIHJlc3BvbnNpYmxlIGZvciBtaWxsaW9ucyBvZiBlbWFpbCBhbmQgd2ViIGNvbm5lY3Rpb25zIGVhY2ggZGF5LCB5b3UgbmVlZCBxdWljayBhY2Nlc3MgdG8gaW5mb3JtYXRpb24gb24gYSB3aWRlIHJhbmdlIG9mIHRvb2xzLiBUaGlzIGJvb2sgY292ZXJzIGFsbCBhc3BlY3RzIG9mIGFkbWluaXN0ZXJpbmcgYW5kIG1ha2luZyBlZmZlY3RpdmUgdXNlIG9mIExpbnV4IHN5c3RlbXMuIEFtb25nIGl0cyB0b3BpY3MgYXJlIGJvb3RpbmcsIHBhY2thZ2UgbWFuYWdlbWVudCwgYW5kIHJldmlzaW9uIGNvbnRyb2wuIEJ1dCBmb3JlbW9zdCBpbiBMaW51eCBpbiBhIE51dHNoZWxsIGFyZSB0aGUgdXRpbGl0aWVzIGFuZCBjb21tYW5kcyB0aGF0IG1ha2UgTGludXggb25lIG9mIHRoZSBtb3N0IHBvd2VyZnVsIGFuZCBmbGV4aWJsZSBzeXN0ZW1zIGF2YWlsYWJsZS5kZAIFDw8WAh8ABQU0NC45NWRkAgYPDxYCHwAFAjE0ZGQCBw8PFgIfAAUFRmFsc2VkZAIZD2QWEGYPDxYCHwAFBVNZNTU1ZGQCAQ8PFgIfAAUHU3lzdGVtc2RkAgIPDxYCHwAFGk1hc3RlcmluZyBBY3RpdmUgRGlyZWN0b3J5ZGQCAw8PFgIfAAUKUi4gUi4gS2luZ2RkAgQPZBYCAgEPZBYCAgEPDxYCHwAF0wRBY3RpdmUgRGlyZWN0b3J5IHJlcHJlc2VudHMgYW4gZW5vcm1vdXMgYWR2YW5jZSBpbiBuZXR3b3JrIGFkbWluaXN0cmF0aW9uLiBJdCBwcm92aWRlcyBhIHZhc3Qgc2V0IG9mIHBvd2VyZnVsIHRvb2xzIGFuZCB0ZWNobm9sb2dpZXMgZm9yIG1hbmFnaW5nIGEgbmV0d29yayB3aXRoaW4gYSBuYXRpdmUgV2luZG93cyBlbnZpcm9ubWVudC4gTWFzdGVyaW5nIEFjdGl2ZSBEaXJlY3RvcnkgZm9yIFdpbmRvd3MgU2VydmVyIDIwMDMgaXMgdGhlIHJlc291cmNlIHlvdSBuZWVkIHRvIHRha2UgZnVsbCBhZHZhbnRhZ2Ugb2YgYWxsIGl0IGhhcyB0byBvZmZlci4gWW91IGdldCBhIHNvdW5kIGludHJvZHVjdGlvbiB0byBuZXR3b3JrIGRpcmVjdG9yeSBzZXJ2aWNlcywgdGhlbiBkZXRhaWxlZCwgcHJhY3RpY2FsIGluc3RydWN0aW9uIGluIHRoZSB3b3JrIG9mIGltcGxlbWVudGluZyBBY3RpdmUgRGlyZWN0b3J5IGFuZCB1c2luZyBhbGwgb2YgaXRzIHRvb2xzLiBUaGlzIGVkaXRpb24gaGFzIGJlZW4gY29tcGxldGVseSB1cGRhdGVkIHRvIGFkZHJlc3MgZmVhdHVyZXMgbmV3IHRvIEFjdGl2ZSBEaXJlY3RvcnkgZm9yIFdpbmRvd3MgU2VydmVyIDIwMDMuZGQCBQ8PFgIfAAUFNDkuOTlkZAIGDw8WAh8ABQE4ZGQCBw8PFgIfAAUFRmFsc2VkZAIaD2QWEGYPDxYCHwAFBVdCMTExZGQCAQ8PFgIfAAUDV2ViZGQCAg8PFgIfAAUOQWpheCBpbiBBY3Rpb25kZAIDDw8WAh8ABQhELiBDcmFuZWRkAgQPZBYCAgEPZBYCAgEPDxYCHwAF1ARBamF4IGluIEFjdGlvbiBoZWxwcyB5b3UgaW1wbGVtZW50IHRoYXQgdGhpbmtpbmctLWl0IGV4cGxhaW5zIGhvdyB0byBkaXN0cmlidXRlIHRoZSBhcHBsaWNhdGlvbiBiZXR3ZWVuIHRoZSBjbGllbnQgYW5kIHRoZSBzZXJ2ZXIgd2hpbGUgcmV0YWluaW5nIHRoZSBpbnRlZ3JpdHkgb2YgdGhlIHN5c3RlbS4gWW91IHdpbGwgbGVhcm4gaG93IHRvIGVuc3VyZSB5b3VyIGFwcCBpcyBmbGV4aWJsZSBhbmQgbWFpbnRhaW5hYmxlLCBhbmQgaG93IGdvb2QsIHN0cnVjdHVyZWQgZGVzaWduIGNhbiBoZWxwIGF2b2lkIHByb2JsZW1zIGxpa2UgYnJvd3NlciBpbmNvbXBhdGliaWxpdGllcy4gQWxvbmcgdGhlIHdheSBpdCBoZWxwcyB5b3UgdW5sZWFybiBtYW55IG9sZCBjb2RpbmcgaGFiaXRzLiBBYm92ZSBhbGwsIGl0IG9wZW5zIHlvdXIgbWluZCB0byB0aGUgbWFueSBhZHZhbnRhZ2VzIGdhaW5lZCBieSBwbGFjaW5nIG11Y2ggb2YgdGhlIHByb2Nlc3NpbmcgaW4gdGhlIGJyb3dzZXIuIElmIHlvdSBhcmUgYSB3ZWIgZGV2ZWxvcGVyIHdobyBoYXMgcHJpb3IgZXhwZXJpZW5jZSB3aXRoIHdlYiB0ZWNobm9sb2dpZXMsIHRoaXMgYm9vayBpcyBmb3IgeW91LmRkAgUPDxYCHwAFBTIyLjY3ZGQCBg8PFgIfAAUCMTRkZAIHDw8WAh8ABQRUcnVlZGQCGw9kFhBmDw8WAh8ABQVXQjIyMmRkAgEPDxYCHwAFA1dlYmRkAgIPDxYCHwAFGFByb2Zlc3Npb25hbCBBU1AuTkVUIDIuMGRkAgMPDxYCHwAFCEIuIEV2amVuZGQCBA9kFgICAQ9kFgICAQ8PFgIfAAW4BUFTUC5ORVQgYWxsb3dzIHdlYiBzaXRlcyB0byBkaXNwbGF5IHVuaXF1ZSBwYWdlcyBmb3IgZWFjaCB2aXNpdG9yIHJhdGhlciB0aGFuIHNob3cgdGhlIHNhbWUgc3RhdGljIEhUTUwgcGFnZXMuIFRoZSByZWxlYXNlIG9mIEFTUC5ORVQgMi4wIGlzIGEgcmV2b2x1dGlvbmFyeSBsZWFwIGZvcndhcmQgaW4gdGhlIGFyZWEgb2Ygd2ViIGFwcGxpY2F0aW9uIGRldmVsb3BtZW50LiBJdCBicmluZ3Mgd2l0aCBpdCBhIHdlYWx0aCBvZiBuZXcgYW5kIGV4Y2l0aW5nIGJ1aWx0LWluIGZ1bmN0aW9ucyB0aGF0IHJlZHVjZSB0aGUgYW1vdW50IG9mIGNvZGUgeW91J2xsIG5lZWQgdG8gd3JpdGUgZm9yIGV2ZW4gdGhlIG1vc3QgY29tbW9uIGFwcGxpY2F0aW9ucy4gV2l0aCBtb3JlIHRoYW4gNTAgbmV3IHNlcnZlciBjb250cm9scywgdGhlIG51bWJlciBvZiBjbGFzc2VzIGluc2lkZSBBU1AuTkVUIDIuMCBoYXMgbW9yZSB0aGFuIGRvdWJsZWQsIGFuZCwgaW4gbWFueSBjYXNlcywgdGhlIGNoYW5nZXMgaW4gdGhpcyBuZXcgdmVyc2lvbiBhcmUgZHJhbWF0aWMuIFRoaXMgYm9vayB3aWxsIGFsZXJ0IHlvdSB0byBldmVyeSBuZXcgZmVhdHVyZSBhbmQgY2FwYWJpbGl0eSB0aGF0IEFTUC5ORVQgMi4wIHByb3ZpZGVzIHNvIHRoYXQgeW91J2xsIGJlIHByZXBhcmVkIHRvIHB1dCB0aGVzZSBuZXcgdGVjaG5vbG9naWVzIGludG8gYWN0aW9uLmRkAgUPDxYCHwAFBTMyLjk5ZGQCBg8PFgIfAAUCMjFkZAIHDw8WAh8ABQVGYWxzZWRkAhwPZBYQZg8PFgIfAAUFV0IzMzNkZAIBDw8WAh8ABQNXZWJkZAICDw8WAh8ABRZDYXNjYWRpbmcgU3R5bGUgU2hlZXRzZGQCAw8PFgIfAAULRS4gQS4gTWV5ZXJkZAIED2QWAgIBD2QWAgIBDw8WAh8ABYEFVGhpcyBzZWNvbmQgZWRpdGlvbiBvZiBDYXNjYWRpbmcgU3R5bGUgU2hlZXRzOiBUaGUgRGVmaW5pdGl2ZSBHdWlkZSBjb21wbGV0ZXMgdGhlIGRpc2N1c3Npb24gb2YgQ1NTMiwgZXhwbG9yZXMgQ1NTMi4xLCBhbmQgaW50cm9kdWNlcyBlbWVyZ2luZyBlbGVtZW50cyBvZiBDU1MzLiBFcmljIEEuIE1leWVyIHVzZXMgaGlzIHRyYWRlbWFyayB3aXQgYW5kIGh1bW9yIHRvIGV4cGxvcmUgcHJvcGVydGllcywgdGFncywgYXR0cmlidXRlcywgYW5kIGltcGxlbWVudGF0aW9uLCBhcyB3ZWxsIGFzIHJlYWwtbGlmZSBpc3N1ZXMsIHN1Y2ggYXMgYnJvd3NlciBzdXBwb3J0IGFuZCBkZXNpZ24gZ3VpZGVsaW5lcy4gVGhpcyBib29rIGFkZHJlc3NlcyBleHBlcmllbmNlZCB3ZWIgYXV0aG9ycyBhbmQgc2NyaXB0ZXJzLCBhcyB3ZWxsIGFzIG5vdmljZSBhdXRob3JzIHdobyBtYXkgYmUgaW1wbGVtZW50aW5nIENTUyBmcm9tIHNjcmF0Y2guIENhc2NhZGluZyBTdHlsZSBTaGVldHM6IFRoZSBEZWZpbml0aXZlIEd1aWRlLCBTZWNvbmQgRWRpdGlvbiBhbHNvIGluY2x1ZGVzIGEgbmV3IGZvcmV3b3JkIGJ5IE1vbGx5IEhvbHpzY2hsYWcsIGEgc3RlZXJpbmcgY29tbWl0dGVlIG1lbWJlciBmb3IgdGhlIFdlYiBTdGFuZGFyZHMgUHJvamVjdC5kZAIFDw8WAh8ABQUzOS45NWRkAgYPDxYCHwAFATZkZAIHDw8WAh8ABQVGYWxzZWRkAh0PZBYQZg8PFgIfAAUFV0I0NDRkZAIBDw8WAh8ABQNXZWJkZAICDw8WAh8ABQ1ET00gU2NyaXB0aW5nZGQCAw8PFgIfAAUISi4gS2VpdGhkZAIED2QWAgIBD2QWAgIBDw8WAh8ABd0GVGhlcmUgYXJlIHRocmVlIG1haW4gdGVjaG5vbG9naWVzIG1hcnJpZWQgdG9nZXRoZXIgdG8gY3JlYXRlIHVzYWJsZSwgc3RhbmRhcmRzLWNvbXBsaWFudCB3ZWIgZGVzaWduczogWEhUTUwgZm9yIGRhdGEgc3RydWN0dXJlLCBDYXNjYWRpbmcgU3R5bGUgU2hlZXRzIGZvciBzdHlsaW5nIHlvdXIgZGF0YSwgYW5kIEphdmFTY3JpcHQgZm9yIGFkZGluZyBkeW5hbWljIGVmZmVjdHMgYW5kIG1hbmlwdWxhdGluZyBzdHJ1Y3R1cmUgb24gdGhlIGZseSB1c2luZyB0aGUgRG9jdW1lbnQgT2JqZWN0IE1vZGVsLiBUaGlzIGJvb2sgaXMgYWJvdXQgdGhlIGxhdHRlciBvZiB0aGUgdGhyZWUuIERPTSBTY3JpcHRpbmc6IFdlYiBEZXNpZ24gd2l0aCBKYXZhU2NyaXB0IGFuZCB0aGUgRG9jdW1lbnQgT2JqZWN0IE1vZGVsIGdpdmVzIHlvdSBldmVyeXRoaW5nIHlvdSBuZWVkIHRvIHN0YXJ0IHVzaW5nIEphdmFTY3JpcHQgYW5kIHRoZSBEb2N1bWVudCBPYmplY3QgTW9kZWwgdG8gZW5oYW5jZSB5b3VyIHdlYiBwYWdlcyB3aXRoIGNsaWVudC1zaWRlIGR5bmFtaWMgZWZmZWN0cy4gSmVybWV5IHN0YXJ0cyBvZmYgYnkgZ2l2aW5nIHlvdSBhIGJhc2ljIGNyYXNoIGNvdXJzZSBpbiBKYXZhU2NyaXB0IGFuZCB0aGUgRE9NLCB0aGVuIG1vdmVzIG9uIHRvIHByb3ZpZGUgeW91IHdpdGggc2V2ZXJhbCByZWFsIHdvcmxkIGV4YW1wbGVzIGJ1aWx0IHVwIGZyb20gc2NyYXRjaCBpbmNsdWRpbmcgZHluYW1pYyBpbWFnZSBnYWxsZXJpZXMgYW5kIGR5bmFtaWMgbWVudXMsIGFuZCBzaG93cyB5b3UgaG93IHRvIG1hbmlwdWxhdGUgd2ViIHBhZ2Ugc3R5bGUgdXNpbmcgdGhlIENTUyBET00sIGFuZCBjcmVhdGUgbWFya3VwIG9uIHRoZSBmbHkuZGQCBQ8PFgIfAAUFMjMuMDlkZAIGDw8WAh8ABQE4ZGQCBw8PFgIfAAUEVHJ1ZWRkAh4PZBYQZg8PFgIfAAUFV0I1NTVkZAIBDw8WAh8ABQNXZWJkZAICDw8WAh8ABRVNaWNyb3NvZnQgQVNQLk5FVCAyLjBkZAIDDw8WAh8ABQtELiBFc3Bvc2l0b2RkAgQPZBYCAgEPZBYCAgEPDxYCHwAFvgVHZXQgYW4gZXhwZXJ0LCBkZXZlbG9wZXItZm9jdXNlZCBpbnRyb2R1Y3Rpb24gdG8gdGhlIG5leHQgYmlnIGlubm92YXRpb24gaW4gQVNQLk5FVCBXZWIgcHJvZ3JhbW1pbmcuIFByb2dyYW1taW5nIGF1dGhvcml0eSBEaW5vIEVzcG9zaXRvIHRha2VzIHlvdSBpbnNpZGUgQVNQLk5FVCAyLjAgdGVjaG5vbG9neSwgZXhwbGFpbmluZyBob3cgaXRzIHVwZGF0ZWQsIG1vcmUgcG93ZXJmdWwgaW5mcmFzdHJ1Y3R1cmUgYWxsb3dzIHlvdSB0byBjcmVhdGUgcmljaCBhbmQgZHluYW1pYyBXZWIgYXBwbGljYXRpb25zIHF1aWNrbHkgYW5kIHdpdGggbGVzcyBjb2RlLiBFc3Bvc2l0byBleGFtaW5lcyBob3cgZGV2ZWxvcGVyIGJlc3QgcHJhY3RpY2VzIHdpdGggQVNQLk5FVCAxLnggYW5kIGNsYXNzaWMgQVNQIGhlbHBlZCBkcml2ZSB0aGUgYXJjaGl0ZWN0dXJhbCBjaGFuZ2VzIGluIEFTUC5ORVQgMi4wLCBhbmQgaGUgb2ZmZXJzIHByZXJlbGVhc2UgaW5zaWdodHMgaW50byBpdHMgZmluYWwgYXJjaGl0ZWN0dXJlLiBXaXRoIGNvbmNpc2UgY29uY2VwdCBhbmQgZmVhdHVyZSBleHBsYW5hdGlvbnMgYW5kIG1vcmUgdGhhbiA3MCBmdWxseSBmdW5jdGlvbmFsIGV4YW1wbGVzLCB0aGlzIGNvbXByZWhlbnNpdmUgaW50cm9kdWN0aW9uIGdpdmVzIHlvdSBldmVyeXRoaW5nIHlvdSBuZWVkIHRvIGRpZyBpbnRvIEFTUC5ORVQgMi4wIHJpZ2h0IG5vdy5kZAIFDw8WAh8ABQUyOS45OWRkAgYPDxYCHwAFAjEyZGQCBw8PFgIfAAUFRmFsc2VkZAIfDw8WAh8HaGRkAhgPPCsACQEADxYEHghEYXRhS2V5cxYAHwICHmQWPGYPZBYEAgEPDxYCHghJbWFnZVVybAUjLi4vZUNvbW1lcmNlL0Jvb2tQaWN0dXJlcy9EQjExMS5qcGdkZAICDxUBBURCMTExZAIBD2QWBAIBDw8WAh8KBSMuLi9lQ29tbWVyY2UvQm9va1BpY3R1cmVzL0RCMjIyLmpwZ2RkAgIPFQEFREIyMjJkAgIPZBYEAgEPDxYCHwoFIy4uL2VDb21tZXJjZS9Cb29rUGljdHVyZXMvREIzMzMuanBnZGQCAg8VAQVEQjMzM2QCAw9kFgQCAQ8PFgIfCgUjLi4vZUNvbW1lcmNlL0Jvb2tQaWN0dXJlcy9EQjQ0NC5qcGdkZAICDxUBBURCNDQ0ZAIED2QWBAIBDw8WAh8KBSMuLi9lQ29tbWVyY2UvQm9va1BpY3R1cmVzL0RCNTU1LmpwZ2RkAgIPFQEFREI1NTVkAgUPZBYEAgEPDxYCHwoFIy4uL2VDb21tZXJjZS9Cb29rUGljdHVyZXMvR1IxMTEuanBnZGQCAg8VAQVHUjExMWQCBg9kFgQCAQ8PFgIfCgUjLi4vZUNvbW1lcmNlL0Jvb2tQaWN0dXJlcy9HUjIyMi5qcGdkZAICDxUBBUdSMjIyZAIHD2QWBAIBDw8WAh8KBSMuLi9lQ29tbWVyY2UvQm9va1BpY3R1cmVzL0dSMzMzLmpwZ2RkAgIPFQEFR1IzMzNkAggPZBYEAgEPDxYCHwoFIy4uL2VDb21tZXJjZS9Cb29rUGljdHVyZXMvR1I0NDQuanBnZGQCAg8VAQVHUjQ0NGQCCQ9kFgQCAQ8PFgIfCgUjLi4vZUNvbW1lcmNlL0Jvb2tQaWN0dXJlcy9HUjU1NS5qcGdkZAICDxUBBUdSNTU1ZAIKD2QWBAIBDw8WAh8KBSMuLi9lQ29tbWVyY2UvQm9va1BpY3R1cmVzL0hXMTExLmpwZ2RkAgIPFQEFSFcxMTFkAgsPZBYEAgEPDxYCHwoFIy4uL2VDb21tZXJjZS9Cb29rUGljdHVyZXMvSFcyMjIuanBnZGQCAg8VAQVIVzIyMmQCDA9kFgQCAQ8PFgIfCgUjLi4vZUNvbW1lcmNlL0Jvb2tQaWN0dXJlcy9IVzMzMy5qcGdkZAICDxUBBUhXMzMzZAIND2QWBAIBDw8WAh8KBSMuLi9lQ29tbWVyY2UvQm9va1BpY3R1cmVzL0hXNDQ0LmpwZ2RkAgIPFQEFSFc0NDRkAg4PZBYEAgEPDxYCHwoFIy4uL2VDb21tZXJjZS9Cb29rUGljdHVyZXMvSFc1NTUuanBnZGQCAg8VAQVIVzU1NWQCDw9kFgQCAQ8PFgIfCgUjLi4vZUNvbW1lcmNlL0Jvb2tQaWN0dXJlcy9TVzExMS5qcGdkZAICDxUBBVNXMTExZAIQD2QWBAIBDw8WAh8KBSMuLi9lQ29tbWVyY2UvQm9va1BpY3R1cmVzL1NXMjIyLmpwZ2RkAgIPFQEFU1cyMjJkAhEPZBYEAgEPDxYCHwoFIy4uL2VDb21tZXJjZS9Cb29rUGljdHVyZXMvU1czMzMuanBnZGQCAg8VAQVTVzMzM2QCEg9kFgQCAQ8PFgIfCgUjLi4vZUNvbW1lcmNlL0Jvb2tQaWN0dXJlcy9TVzQ0NC5qcGdkZAICDxUBBVNXNDQ0ZAITD2QWBAIBDw8WAh8KBSMuLi9lQ29tbWVyY2UvQm9va1BpY3R1cmVzL1NXNTU1LmpwZ2RkAgIPFQEFU1c1NTVkAhQPZBYEAgEPDxYCHwoFIy4uL2VDb21tZXJjZS9Cb29rUGljdHVyZXMvU1kxMTEuanBnZGQCAg8VAQVTWTExMWQCFQ9kFgQCAQ8PFgIfCgUjLi4vZUNvbW1lcmNlL0Jvb2tQaWN0dXJlcy9TWTIyMi5qcGdkZAICDxUBBVNZMjIyZAIWD2QWBAIBDw8WAh8KBSMuLi9lQ29tbWVyY2UvQm9va1BpY3R1cmVzL1NZMzMzLmpwZ2RkAgIPFQEFU1kzMzNkAhcPZBYEAgEPDxYCHwoFIy4uL2VDb21tZXJjZS9Cb29rUGljdHVyZXMvU1k0NDQuanBnZGQCAg8VAQVTWTQ0NGQCGA9kFgQCAQ8PFgIfCgUjLi4vZUNvbW1lcmNlL0Jvb2tQaWN0dXJlcy9TWTU1NS5qcGdkZAICDxUBBVNZNTU1ZAIZD2QWBAIBDw8WAh8KBSMuLi9lQ29tbWVyY2UvQm9va1BpY3R1cmVzL1dCMTExLmpwZ2RkAgIPFQEFV0IxMTFkAhoPZBYEAgEPDxYCHwoFIy4uL2VDb21tZXJjZS9Cb29rUGljdHVyZXMvV0IyMjIuanBnZGQCAg8VAQVXQjIyMmQCGw9kFgQCAQ8PFgIfCgUjLi4vZUNvbW1lcmNlL0Jvb2tQaWN0dXJlcy9XQjMzMy5qcGdkZAICDxUBBVdCMzMzZAIcD2QWBAIBDw8WAh8KBSMuLi9lQ29tbWVyY2UvQm9va1BpY3R1cmVzL1dCNDQ0LmpwZ2RkAgIPFQEFV0I0NDRkAh0PZBYEAgEPDxYCHwoFIy4uL2VDb21tZXJjZS9Cb29rUGljdHVyZXMvV0I1NTUuanBnZGQCAg8VAQVXQjU1NWQYAgUIQm9va0dyaWQPPCsACQEIAgFkBQlCb29rR3JpZDMPPCsACQEIAgFkTWixh0tLU9xI2lFJcOINC3aEOGU=" name="__VIEWSTATE" type="hidden"> </div><input id="PageScroll" style="visibility: hidden; position: absolute;" name="PageScroll"> 
<div class="body">
<div class="divhead">Data-Driven Web Pages</div>
<p>The most common purpose of a Web page is to present information content. This 
information may be for personal promotion, commercial gain, public service, or 
for any number of public or private purposes. Irrespective of the goal to be 
achieved, the purpose of the page remains to supply accurate and timely 
information about the individual or enterprise. The challenge in Web-page 
design, then, is to create pages that reflect the most accurate and most current 
information available, and to do so in the most efficient and cost-effective 
manner possible.</p>
<p class="head2">Producing Web Page Content</p>
<p>Information displayed on a Web page comes from four basic sources. First, it 
can be fixed content that is hard-coded on the page using standard XHTML tags to 
structure and format it for presentation. This is the conventional way to 
produce Web pages, whether using drag-and-drop page-creation software or by hand 
coding text and XHTML with simple text editors. Second, information can be 
produced automatically by browser or server scripts. This information can be 
fixed, unchanging content, or it can be generated by built-in language functions 
or server objects. Third, displayed information can be script generated from 
input data supplied by the user. Raw data from the outside is manipulated by 
internal scripts to generate new information for page display. Lastly, page 
information can be drawn from external data sources such as files and databases. 
In this case, current information from personal, corporate, or public data 
stores is retrieved for display at the exact moment the Web page is 
requested.</p>
<p>The main goal with ASP.NET pages is to reduce or eliminate much of the 
hard-coded information that appears on the page. As noted, intermixing 
information content with XHTML tags makes for Web pages that are difficult to 
maintain and to keep current. Updating page content involves manual editing of 
the page, often requiring the time and effort equal to that needed to create the 
page in the first place. It is costly, time consuming, and error prone. Worse, 
it is often the case that manually created and edited information is always a 
step or two behind the actual information of the moment.</p>
<p>The ideal situation is to maintain information <i>apart</i> from the Web page 
that displays it. The Web page itself contains only content "placeholders" along 
with surrounding XHTML for formatting; the content to populate these 
placeholders is external to the page. When a Web page is requested, this content 
is "poured" into page areas reserved for its display. The page is produced 
dynamically, automatically created anew each time the page is requested and 
always containing the latest, real-time information provided by these external 
data sources.</p>
<p>Realistically, Web page content comes from a combination of hard-coded and 
dynamically produced information. Keep in mind, though, that where possible, a 
Web page should generate its <i>own</i> content rather than the imposed 
hand-coded content of the developer.</p>
<p class="head2">Hard-Coded Text and XHTML</p>
<p>The standard way to present Web page information is through hard-coded text 
surrounded by XHTML tags to format it for presentation. As needed or preferred, 
graphic images can be added to the page by linking to picture files. The output 
shown below is produced in this conventional fashion.</p>
<div class="page" style="height: 200px;">
<h3>Hard-Coded Page Output</h3>
<p>This page is produced by coding text characters on the page and surrounding 
them with XHTML tags to style them for presentation. When this content changes, 
the page itself must be edited to display new information.</p></div>
<div class="figure"><b>Figure 3-1. </b>Page output produced by hard-coded text and 
XHTML.</div><pre class="divcode">&lt;?xml version="1.0" encoding="UTF-8"?&gt;

&lt;!DOCTYPE html 
  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;

&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"&gt;
&lt;head&gt;
  &lt;title&gt;Hard-Coded Page Output&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;h3&gt;Hard-Coded Page Output&lt;/h3&gt;

&lt;p&gt;This page is produced by coding text characters on the page and 
surrounding them with XHTML tags to style them for presentation. When 
this content changes, the page itself must be edited to display new 
information.&lt;/p&gt;

&lt;/body&gt;
&lt;/html&gt;
</pre>
<div class="listing"><b>Listing 3-1. </b>Producing hard-coded page output.</div>
<p>Although no information is produced by ASP.NET features, you still can name 
the page with the <span class="code">.aspx</span> suffix. It is a good idea to do 
this. Later you may need to return to this page to add scripts and server 
controls. It will not be necessary to rename the page when this occurs.</p>
<p class="head2">Scripted Text and XHTML</p>
<p>Page information can be generated by scripts that write fixed or variable 
content to the page. Information to be written each time the page is loaded is 
coded in the <span class="code">Page_Load</span> subprogram. Information to be 
written in response to user requests is coded in subprograms that are triggered 
by server controls. In the following example, a <span class="code">Page_Load</span> script produces output by writing text characters, 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -