package me.test;
import me.test.TestSocksProxy.PlainConnectionSocketFactoryEx;
import me.test.TestSocksProxy.SSLConnectionSocketFactoryEx;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.digest.HmacUtils;
import org.apache.http.config.Registry;
import org.apache.http.config.RegistryBuilder;
import org.apache.http.conn.socket.ConnectionSocketFactory;
import org.apache.http.conn.ssl.DefaultHostnameVerifier;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.BasicHttpClientConnectionManager;
import org.apache.http.ssl.SSLContexts;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;
import javax.net.ssl.SSLContext;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.URI;
import java.security.KeyManagementException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.UnrecoverableKeyException;
import java.security.cert.CertificateException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 中国天气网在同一个连接上不会返回太多的记录。这里测试 在 发生 NoHttpResponseException 之后,
* org.apache.http.impl.execchain.RetryExec 会不会新建连接再次请求而保证业务正确。
* 经测试:OK。
*/
public class TestWeather {
public static void main(String[] args) throws KeyStoreException, UnrecoverableKeyException, NoSuchAlgorithmException, KeyManagementException, IOException, CertificateException {
String appId = "";
String priKey = "";
String appId4Param = appId.substring(0, 6);
// 在 192.168.0.12 上执行
// ssh root@192.168.0.12 -C -f -N -g -D 9999
Proxy proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("192.168.0.12", 9999));
PlainConnectionSocketFactoryEx httpConnFac = new PlainConnectionSocketFactoryEx();
httpConnFac.setProxy(proxy);
//
// KeyStore wxKeyStore = KeyStore.getInstance("PKCS12");
// wxKeyStore.load(new FileInputStream("xxx.p12"), "ks-pass".toCharArray());
SSLContext sslcontext = SSLContexts.custom()
// .loadKeyMaterial(wxKeyStore, "privateKeyPass".toCharArray())
.build();
SSLConnectionSocketFactoryEx httpsConnFac = new SSLConnectionSocketFactoryEx(
sslcontext,
new String[]{"TLSv1"},
null,
new DefaultHostnameVerifier());
httpsConnFac.setProxy(proxy);
Registry<ConnectionSocketFactory> reg = RegistryBuilder.<ConnectionSocketFactory>create()
.register("http", httpConnFac)
.register("https", httpsConnFac)
.build();
BasicHttpClientConnectionManager connMgr = new BasicHttpClientConnectionManager(reg);
CloseableHttpClient httpCient = HttpClients.custom()
.setConnectionManager(connMgr)
.build();
HttpComponentsClientHttpRequestFactory reqFac = new HttpComponentsClientHttpRequestFactory(httpCient);
RestTemplate restTemplate = new RestTemplate();
restTemplate.setRequestFactory(reqFac);
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmm");
for (int i = 0; i < adcArr.length; i++) {
String now = sdf.format(new Date());
UriComponentsBuilder uriBuilder = UriComponentsBuilder
.fromHttpUrl("http://open.weather.com.cn/data/")
.queryParam("areaid", adcArr[i])
.queryParam("type", "forecast_v")
.queryParam("date", now)
.queryParam("appid", appId);
URI uri = UriComponentsBuilder
.fromHttpUrl("http://open.weather.com.cn/data/")
.queryParam("areaid", adcArr[i])
.queryParam("type", "forecast_v")
.queryParam("date", now)
.queryParam("appid", appId4Param) // NOTICE this
.queryParam("key", Base64.encodeBase64String(HmacUtils.hmacSha1(priKey.getBytes("UTF-8"), uriBuilder.build().encode("UTF-8").toString().getBytes("UTF-8"))))
.build()
.encode("UTF-8")
.toUri();
String respStr = restTemplate.getForObject(uri, String.class);
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
System.out.println(uri);
System.out.println(respStr);
if (i > 100) {
break;
}
}
}
static final String[] adcArr = new String[]{
"101010100",
"101010200",
"101010300",
"101010400",
"101010500",
"101010600",
"101010700",
"101010800",
"101010900",
"101011000",
"101011100",
"101011200",
"101011300",
"101011400",
"101011500",
"101020100",
"101020200",
"101020300",
"101020500",
"101020600",
"101020700",
"101020800",
"101020900",
"101021000",
"101021100",
"101021200",
"101030100",
"101030200",
"101030300",
"101030400",
"101030500",
"101030600",
"101030700",
"101030900",
"101031000",
"101031100",
"101031400",
"101040100",
"101040200",
"101040300",
"101040400",
"101040500",
"101040600",
"101040700",
"101040800",
"101040900",
"101041000",
"101041100",
"101041300",
"101041400",
"101041500",
"101041600",
"101041700",
"101041800",
"101041900",
"101042000",
"101042100",
"101042200",
"101042300",
"101042400",
"101042500",
"101042600",
"101042700",
"101042800",
"101042900",
"101043000",
"101043100",
"101043200",
"101043300",
"101043400",
"101043600",
"101050101",
"101050102",
"101050103",
"101050104",
"101050105",
"101050106",
"101050107",
"101050108",
"101050109",
"101050110",
"101050111",
"101050112",
"101050113",
"101050201",
"101050202",
"101050203",
"101050204",
"101050205",
"101050206",
"101050207",
"101050208",
"101050209",
"101050210",
"101050301",
"101050302",
"101050303",
"101050304",
"101050305",
"101050306",
"101050307",
"101050401",
"101050402",
"101050403",
"101050404",
"101050405",
"101050406",
"101050407",
"101050501",
"101050502",
"101050503",
"101050504",
"101050505",
"101050506",
"101050507",
"101050508",
"101050509",
"101050510",
"101050601",
"101050602",
"101050603",
"101050604",
"101050605",
"101050606",
"101050701",
"101050702",
"101050703",
"101050704",
"101050705",
"101050706",
"101050708",
"101050801",
"101050802",
"101050803",
"101050804",
"101050805",
"101050901",
"101050902",
"101050903",
"101050904",
"101050905",
"101051002",
"101051003",
"101051101",
"101051102",
"101051103",
"101051104",
"101051201",
"101051202",
"101051203",
"101051301",
"101051302",
"101051303",
"101051304",
"101051305",
"101060101",
"101060102",
"101060103",
"101060104",
"101060105",
"101060106",
"101060201",
"101060202",
"101060203",
"101060204",
"101060205",
"101060206",
"101060301",
"101060302",
"101060303",
"101060304",
"101060305",
"101060307",
"101060308",
"101060309",
"101060401",
"101060402",
"101060403",
"101060404",
"101060405",
"101060501",
"101060502",
"101060503",
"101060504",
"101060505",
"101060506",
"101060601",
"101060602",
"101060603",
"101060604",
"101060605",
"101060701",
"101060702",
"101060703",
"101060801",
"101060802",
"101060803",
"101060804",
"101060805",
"101060901",
"101060902",
"101060903",
"101060904",
"101060905",
"101060906",
"101060907",
"101070101",
"101070103",
"101070104",
"101070105",
"101070106",
"101070201",
"101070202",
"101070203",
"101070204",
"101070205",
"101070206",
"101070207",
"101070301",
"101070302",
"101070303",
"101070304",
"101070401",
"101070402",
"101070403",
"101070404",
"101070501",
"101070502",
"101070504",
"101070601",
"101070602",
"101070603",
"101070604",
"101070701",
"101070702",
"101070704",
"101070705",
"101070706",
"101070801",
"101070802",
"101070803",
"101070901",
"101070902",
"101071001",
"101071002",
"101071003",
"101071004",
"101071101",
"101071102",
"101071103",
"101071104",
"101071105",
"101071201",
"101071203",
"101071204",
"101071205",
"101071207",
"101071301",
"101071302",
"101071303",
"101071401",
"101071402",
"101071403",
"101071404",
"101080101",
"101080102",
"101080103",
"101080104",
"101080105",
"101080106",
"101080107",
"101080201",
"101080202",
"101080203",
"101080204",
"101080205",
"101080206",
"101080207",
"101080301",
"101080401",
"101080402",
"101080403",
"101080404",
"101080406",
"101080407",
"101080408",
"101080409",
"101080410",
"101080411",
"101080412",
"101080501",
"101080502",
"101080503",
"101080504",
"101080505",
"101080506",
"101080507",
"101080508",
"101080509",
"101080510",
"101080511",
"101080601",
"101080603",
"101080604",
"101080605",
"101080606",
"101080607",
"101080608",
"101080609",
"101080610",
"101080611",
"101080612",
"101080613",
"101080614",
"101080615",
"101080701",
"101080703",
"101080704",
"101080705",
"101080706",
"101080707",
"101080708",
"101080709",
"101080710",
"101080711",
"101080712",
"101080713",
"101080801",
"101080802",
"101080803",
"101080804",
"101080805",
"101080806",
"101080807",
"101080808",
"101080809",
"101080810",
"101080901",
"101080903",
"101080904",
"101080906",
"101080907",
"101080908",
"101080909",
"101080910",
"101080911",
"101080912",
"101080913",
"101080914",
"101080915",
"101080916",
"101080917",
"101081001",
"101081002",
"101081003",
"101081004",
"101081005",
"101081006",
"101081007",
"101081008",
"101081009",
"101081010",
"101081011",
"101081012",
"101081014",
"101081015",
"101081016",
"101081101",
"101081102",
"101081103",
"101081104",
"101081105",
"101081106",
"101081107",
"101081108",
"101081109",
"101081201",
"101081202",
"101081203",
"101081204",
"101081205",
"101081206",
"101081207",
"101081208",
"101081209",
"101081210",
"101081211",
"101081212",
"101090101",
"101090102",
"101090103",
"101090104",
"101090105",
"101090106",
"101090107",
"101090108",
"101090109",
"101090110",
"101090111",
"101090112",
"101090113",
"101090114",
"101090115",
"101090116",
"101090117",
"101090118",
"101090201",
"101090202",
"101090203",
"101090204",
"101090205",
"101090206",
"101090207",
"101090209",
"101090210",
"101090211",
"101090212",
"101090214",
"101090215",
"101090216",
"101090217",
"101090218",
"101090219",
"101090220",
"101090221",
"101090222",
"101090223",
"101090224",
"101090225",
"101090301",
"101090302",
"101090303",
"101090304",
"101090305",
"101090306",
"101090307",
"101090308",
"101090309",
"101090310",
"101090311",
"101090312",
"101090313",
"101090314",
"101090402",
"101090403",
"101090404",
"101090405",
"101090406",
"101090407",
"101090408",
"101090409",
"101090410",
"101090501",
"101090502",
"101090503",
"101090504",
"101090505",
"101090506",
"101090507",
"101090508",
"101090509",
"101090510",
"101090511",
"101090512",
"101090601",
"101090602",
"101090603",
"101090604",
"101090605",
"101090606",
"101090607",
"101090608",
"101090609",
"101090701",
"101090702",
"101090703",
"101090704",
"101090705",
"101090706",
"101090707",
"101090708",
"101090709",
"101090710",
"101090711",
"101090712",
"101090713",
"101090714",
"101090716",
"101090801",
"101090802",
"101090803",
"101090804",
"101090805",
"101090806",
"101090807",
"101090808",
"101090809",
"101090810",
"101090811",
"101090901",
"101090902",
"101090904",
"101090905",
"101090906",
"101090907",
"101090908",
"101090909",
"101090910",
"101090911",
"101090912",
"101090913",
"101090914",
"101090915",
"101090916",
"101090917",
"101090918",
"101091001",
"101091002",
"101091003",
"101091004",
"101091005",
"101091006",
"101091007",
"101091008",
"101091009",
"101091010",
"101091011",
"101091012",
"101091013",
"101091014",
"101091015",
"101091016",
"101091101",
"101091102",
"101091103",
"101091104",
"101091105",
"101091106",
"101100101",
"101100102",
"101100103",
"101100104",
"101100105",
"101100106",
"101100107",
"101100201",
"101100202",
"101100203",
"101100204",
"101100205",
"101100206",
"101100207",
"101100208",
"101100301",
"101100302",
"101100303",
"101100401",
"101100402",
"101100403",
"101100404",
"101100405",
"101100406",
"101100407",
"101100408",
"101100409",
"101100410",
"101100411",
"101100412",
"101100501",
"101100502",
"101100503",
"101100504",
"101100505",
"101100506",
"101100507",
"101100508",
"101100509",
"101100510",
"101100511",
"101100601",
"101100602",
"101100603",
"101100604",
"101100605",
"101100606",
"101100701",
"101100702",
"101100703",
"101100704",
"101100705",
"101100706",
"101100707",
"101100708",
"101100709",
"101100710",
"101100711",
"101100712",
"101100713",
"101100714",
"101100715",
"101100716",
"101100717",
"101100801",
"101100802",
"101100803",
"101100804",
"101100805",
"101100806",
"101100807",
"101100808",
"101100809",
"101100810",
"101100811",
"101100812",
"101100813",
"101100901",
"101100902",
"101100903",
"101100904",
"101100905",
"101100906",
"101101001",
"101101002",
"101101003",
"101101004",
"101101005",
"101101006",
"101101007",
"101101008",
"101101009",
"101101010",
"101101011",
"101101012",
"101101013",
"101101014",
"101101015",
"101101100",
"101101101",
"101101102",
"101101103",
"101101104",
"101101105",
"101101106",
"101101107",
"101101108",
"101101109",
"101101110",
"101101111",
"101101112",
"101101113",
"101110101",
"101110102",
"101110103",
"101110104",
"101110105",
"101110106",
"101110107",
"101110200",
"101110201",
"101110202",
"101110203",
"101110204",
"101110205",
"101110206",
"101110207",
"101110208",
"101110209",
"101110210",
"101110211",
"101110300",
"101110301",
"101110302",
"101110303",
"101110304",
"101110305",
"101110306",
"101110307",
"101110308",
"101110309",
"101110310",
"101110311",
"101110312",
"101110401",
"101110402",
"101110403",
"101110404",
"101110405",
"101110406",
"101110407",
"101110408",
"101110409",
"101110410",
"101110411",
"101110412",
"101110413",
"101110501",
"101110502",
"101110503",
"101110504",
"101110505",
"101110506",
"101110507",
"101110508",
"101110509",
"101110510",
"101110511",
"101110601",
"101110602",
"101110603",
"101110604",
"101110605",
"101110606",
"101110607",
"101110608",
"101110701",
"101110702",
"101110703",
"101110704",
"101110705",
"101110706",
"101110707",
"101110708",
"101110709",
"101110710",
"101110801",
"101110802",
"101110803",
"101110804",
"101110805",
"101110806",
"101110807",
"101110808",
"101110809",
"101110810",
"101110811",
"101110901",
"101110903",
"101110904",
"101110905",
"101110906",
"101110907",
"101110908",
"101110909",
"101110910",
"101110911",
"101110912",
"101111001",
"101111002",
"101111003",
"101111004",
"101111101",
"101120101",
"101120102",
"101120103",
"101120104",
"101120105",
"101120106",
"101120201",
"101120202",
"101120204",
"101120205",
"101120206",
"101120207",
"101120208",
"101120301",
"101120302",
"101120303",
"101120304",
"101120305",
"101120306",
"101120307",
"101120308",
"101120401",
"101120402",
"101120403",
"101120404",
"101120405",
"101120406",
"101120407",
"101120408",
"101120409",
"101120410",
"101120411",
"101120501",
"101120502",
"101120503",
"101120504",
"101120505",
"101120506",
"101120507",
"101120508",
"101120509",
"101120510",
"101120511",
"101120601",
"101120602",
"101120603",
"101120604",
"101120605",
"101120606",
"101120607",
"101120608",
"101120609",
"101120701",
"101120702",
"101120703",
"101120704",
"101120705",
"101120706",
"101120707",
"101120708",
"101120709",
"101120710",
"101120711",
"101120801",
"101120802",
"101120804",
"101120805",
"101120806",
"101120901",
"101120902",
"101120903",
"101120904",
"101120905",
"101120906",
"101120907",
"101120908",
"101120909",
"101120910",
"101121001",
"101121002",
"101121003",
"101121004",
"101121005",
"101121006",
"101121007",
"101121008",
"101121009",
"101121101",
"101121102",
"101121103",
"101121104",
"101121105",
"101121106",
"101121107",
"101121201",
"101121202",
"101121203",
"101121204",
"101121205",
"101121301",
"101121302",
"101121303",
"101121304",
"101121305",
"101121306",
"101121401",
"101121402",
"101121403",
"101121404",
"101121405",
"101121501",
"101121502",
"101121503",
"101121601",
"101121701",
"101121702",
"101121703",
"101121704",
"101121705",
"101121706",
"101121707",
"101121709",
"101130101",
"101130103",
"101130105",
"101130108",
"101130109",
"101130110",
"101130201",
"101130202",
"101130203",
"101130301",
"101130302",
"101130303",
"101130401",
"101130402",
"101130403",
"101130404",
"101130405",
"101130406",
"101130407",
"101130408",
"101130409",
"101130501",
"101130502",
"101130504",
"101130601",
"101130602",
"101130603",
"101130604",
"101130605",
"101130606",
"101130607",
"101130608",
"101130610",
"101130611",
"101130612",
"101130613",
"101130614",
"101130701",
"101130801",
"101130802",
"101130803",
"101130804",
"101130805",
"101130806",
"101130807",
"101130808",
"101130809",
"101130901",
"101130902",
"101130903",
"101130904",
"101130905",
"101130906",
"101130907",
"101130908",
"101130909",
"101130910",
"101130911",
"101130912",
"101131001",
"101131002",
"101131003",
"101131004",
"101131005",
"101131006",
"101131007",
"101131008",
"101131009",
"101131010",
"101131011",
"101131101",
"101131102",
"101131103",
"101131104",
"101131105",
"101131106",
"101131107",
"101131201",
"101131203",
"101131204",
"101131301",
"101131302",
"101131303",
"101131304",
"101131305",
"101131306",
"101131307",
"101131401",
"101131402",
"101131405",
"101131406",
"101131407",
"101131408",
"101131409",
"101131501",
"101131502",
"101131503",
"101131504",
"101131601",
"101131602",
"101131603",
"101131606",
"101140101",
"101140102",
"101140103",
"101140104",
"101140105",
"101140106",
"101140107",
"101140108",
"101140201",
"101140202",
"101140203",
"101140204",
"101140205",
"101140206",
"101140207",
"101140208",
"101140209",
"101140210",
"101140211",
"101140212",
"101140213",
"101140214",
"101140216",
"101140217",
"101140218",
"101140219",
"101140220",
"101140301",
"101140302",
"101140303",
"101140304",
"101140305",
"101140306",
"101140307",
"101140308",
"101140309",
"101140310",
"101140311",
"101140312",
"101140313",
"101140314",
"101140401",
"101140402",
"101140403",
"101140404",
"101140405",
"101140406",
"101140407",
"101140501",
"101140502",
"101140503",
"101140504",
"101140505",
"101140506",
"101140507",
"101140508",
"101140509",
"101140510",
"101140511",
"101140601",
"101140602",
"101140603",
"101140604",
"101140605",
"101140606",
"101140607",
"101140608",
"101140609",
"101140610",
"101140701",
"101140702",
"101140703",
"101140704",
"101140705",
"101140706",
"101140707",
"101140708",
"101140709",
"101140710",
"101150101",
"101150102",
"101150103",
"101150104",
"101150201",
"101150202",
"101150203",
"101150204",
"101150205",
"101150206",
"101150207",
"101150208",
"101150301",
"101150302",
"101150303",
"101150304",
"101150305",
"101150401",
"101150404",
"101150406",
"101150407",
"101150408",
"101150409",
"101150501",
"101150502",
"101150503",
"101150504",
"101150505",
"101150506",
"101150508",
"101150601",
"101150602",
"101150603",
"101150604",
"101150605",
"101150606",
"101150701",
"101150708",
"101150709",
"101150712",
"101150713",
"101150716",
"101150801",
"101150802",
"101150803",
"101150804",
"101150806",
"101150901",
"101150902",
"101160101",
"101160102",
"101160103",
"101160104",
"101160201",
"101160202",
"101160203",
"101160204",
"101160205",
"101160206",
"101160207",
"101160208",
"101160301",
"101160302",
"101160303",
"101160304",
"101160305",
"101160306",
"101160307",
"101160308",
"101160401",
"101160403",
"101160404",
"101160405",
"101160406",
"101160407",
"101160408",
"101160409",
"101160501",
"101160502",
"101160503",
"101160505",
"101160601",
"101160602",
"101160701",
"101160702",
"101160703",
"101160704",
"101160705",
"101160706",
"101160801",
"101160803",
"101160804",
"101160805",
"101160806",
"101160807",
"101160808",
"101160901",
"101160903",
"101160904",
"101160905",
"101160906",
"101160907",
"101160908",
"101161001",
"101161002",
"101161003",
"101161004",
"101161005",
"101161006",
"101161007",
"101161008",
"101161009",
"101161101",
"101161102",
"101161103",
"101161104",
"101161105",
"101161106",
"101161107",
"101161201",
"101161202",
"101161203",
"101161204",
"101161205",
"101161206",
"101161207",
"101161208",
"101161301",
"101161302",
"101161303",
"101161304",
"101161305",
"101161401",
"101170101",
"101170102",
"101170103",
"101170104",
"101170201",
"101170202",
"101170203",
"101170204",
"101170301",
"101170302",
"101170303",
"101170306",
"101170401",
"101170402",
"101170403",
"101170404",
"101170406",
"101170501",
"101170502",
"101170504",
"101180101",
"101180102",
"101180103",
"101180104",
"101180105",
"101180106",
"101180107",
"101180108",
"101180201",
"101180202",
"101180203",
"101180204",
"101180205",
"101180301",
"101180302",
"101180303",
"101180304",
"101180305",
"101180306",
"101180307",
"101180308",
"101180401",
"101180402",
"101180403",
"101180404",
"101180405",
"101180501",
"101180502",
"101180503",
"101180504",
"101180505",
"101180506",
"101180507",
"101180508",
"101180601",
"101180602",
"101180603",
"101180604",
"101180605",
"101180606",
"101180607",
"101180608",
"101180609",
"101180701",
"101180702",
"101180703",
"101180704",
"101180705",
"101180706",
"101180707",
"101180708",
"101180709",
"101180710",
"101180711",
"101180712",
"101180801",
"101180802",
"101180803",
"101180804",
"101180805",
"101180901",
"101180902",
"101180903",
"101180904",
"101180905",
"101180906",
"101180907",
"101180908",
"101180909",
"101180910",
"101180911",
"101181001",
"101181003",
"101181004",
"101181005",
"101181006",
"101181007",
"101181008",
"101181009",
"101181101",
"101181102",
"101181103",
"101181104",
"101181106",
"101181107",
"101181108",
"101181201",
"101181202",
"101181203",
"101181301",
"101181302",
"101181303",
"101181304",
"101181305",
"101181401",
"101181402",
"101181403",
"101181404",
"101181405",
"101181406",
"101181407",
"101181408",
"101181409",
"101181410",
"101181501",
"101181502",
"101181503",
"101181601",
"101181602",
"101181603",
"101181604",
"101181605",
"101181606",
"101181607",
"101181608",
"101181609",
"101181610",
"101181701",
"101181702",
"101181703",
"101181704",
"101181705",
"101181706",
"101181801",
"101190101",
"101190102",
"101190103",
"101190104",
"101190105",
"101190106",
"101190107",
"101190201",
"101190202",
"101190203",
"101190204",
"101190301",
"101190302",
"101190303",
"101190304",
"101190305",
"101190401",
"101190402",
"101190403",
"101190404",
"101190405",
"101190407",
"101190408",
"101190501",
"101190502",
"101190503",
"101190504",
"101190507",
"101190508",
"101190509",
"101190601",
"101190602",
"101190603",
"101190604",
"101190605",
"101190606",
"101190701",
"101190702",
"101190703",
"101190704",
"101190705",
"101190706",
"101190707",
"101190708",
"101190709",
"101190801",
"101190802",
"101190803",
"101190804",
"101190805",
"101190806",
"101190807",
"101190901",
"101190902",
"101190903",
"101190904",
"101190905",
"101190906",
"101190908",
"101191001",
"101191002",
"101191003",
"101191004",
"101191005",
"101191101",
"101191102",
"101191103",
"101191104",
"101191201",
"101191202",
"101191203",
"101191204",
"101191205",
"101191301",
"101191302",
"101191303",
"101191304",
"101191305",
"101200101",
"101200102",
"101200103",
"101200104",
"101200105",
"101200106",
"101200201",
"101200202",
"101200203",
"101200204",
"101200205",
"101200206",
"101200207",
"101200208",
"101200301",
"101200302",
"101200401",
"101200402",
"101200403",
"101200404",
"101200405",
"101200406",
"101200407",
"101200501",
"101200502",
"101200503",
"101200504",
"101200505",
"101200506",
"101200507",
"101200508",
"101200509",
"101200510",
"101200601",
"101200602",
"101200603",
"101200604",
"101200605",
"101200606",
"101200701",
"101200702",
"101200703",
"101200704",
"101200705",
"101200706",
"101200801",
"101200802",
"101200803",
"101200804",
"101200805",
"101200806",
"101200807",
"101200901",
"101200902",
"101200903",
"101200904",
"101200906",
"101200907",
"101200908",
"101200909",
"101200910",
"101200911",
"101200912",
"101201001",
"101201002",
"101201003",
"101201004",
"101201005",
"101201006",
"101201007",
"101201008",
"101201101",
"101201102",
"101201103",
"101201104",
"101201105",
"101201106",
"101201107",
"101201108",
"101201109",
"101201201",
"101201301",
"101201302",
"101201401",
"101201402",
"101201403",
"101201404",
"101201405",
"101201406",
"101201501",
"101201601",
"101201701",
"101210101",
"101210102",
"101210103",
"101210104",
"101210105",
"101210106",
"101210107",
"101210108",
"101210201",
"101210202",
"101210203",
"101210204",
"101210301",
"101210302",
"101210303",
"101210304",
"101210305",
"101210306",
"101210401",
"101210403",
"101210404",
"101210405",
"101210406",
"101210408",
"101210410",
"101210411",
"101210412",
"101210501",
"101210502",
"101210503",
"101210504",
"101210505",
"101210506",
"101210601",
"101210603",
"101210604",
"101210605",
"101210606",
"101210607",
"101210609",
"101210610",
"101210611",
"101210612",
"101210613",
"101210701",
"101210702",
"101210703",
"101210704",
"101210705",
"101210706",
"101210707",
"101210708",
"101210709",
"101210801",
"101210802",
"101210803",
"101210804",
"101210805",
"101210806",
"101210807",
"101210808",
"101210809",
"101210901",
"101210902",
"101210903",
"101210904",
"101210905",
"101210906",
"101210907",
"101210908",
"101211001",
"101211002",
"101211003",
"101211004",
"101211005",
"101211006",
"101211101",
"101211102",
"101211104",
"101211105",
"101211106",
"101220101",
"101220102",
"101220103",
"101220104",
"101220105",
"101220106",
"101220201",
"101220202",
"101220203",
"101220204",
"101220301",
"101220302",
"101220303",
"101220304",
"101220305",
"101220401",
"101220402",
"101220403",
"101220501",
"101220502",
"101220503",
"101220504",
"101220601",
"101220602",
"101220603",
"101220604",
"101220605",
"101220606",
"101220607",
"101220608",
"101220609",
"101220701",
"101220702",
"101220703",
"101220704",
"101220705",
"101220801",
"101220802",
"101220803",
"101220804",
"101220805",
"101220806",
"101220901",
"101220902",
"101220903",
"101220904",
"101221001",
"101221002",
"101221003",
"101221004",
"101221005",
"101221006",
"101221007",
"101221008",
"101221101",
"101221102",
"101221103",
"101221104",
"101221105",
"101221106",
"101221107",
"101221201",
"101221202",
"101221301",
"101221401",
"101221402",
"101221403",
"101221404",
"101221405",
"101221406",
"101221407",
"101221501",
"101221502",
"101221503",
"101221505",
"101221506",
"101221507",
"101221701",
"101221702",
"101221703",
"101221704",
"101221705",
"101230101",
"101230102",
"101230103",
"101230104",
"101230105",
"101230107",
"101230108",
"101230110",
"101230111",
"101230201",
"101230202",
"101230301",
"101230302",
"101230303",
"101230304",
"101230305",
"101230306",
"101230307",
"101230308",
"101230309",
"101230401",
"101230402",
"101230403",
"101230404",
"101230405",
"101230406",
"101230407",
"101230501",
"101230502",
"101230504",
"101230505",
"101230506",
"101230507",
"101230508",
"101230509",
"101230510",
"101230601",
"101230602",
"101230603",
"101230604",
"101230605",
"101230606",
"101230607",
"101230608",
"101230609",
"101230610",
"101230701",
"101230702",
"101230703",
"101230704",
"101230705",
"101230706",
"101230707",
"101230801",
"101230802",
"101230803",
"101230804",
"101230805",
"101230806",
"101230807",
"101230808",
"101230809",
"101230810",
"101230811",
"101230901",
"101230902",
"101230903",
"101230904",
"101230905",
"101230906",
"101230907",
"101230908",
"101230909",
"101230910",
"101231001",
"101240101",
"101240102",
"101240103",
"101240104",
"101240105",
"101240201",
"101240202",
"101240203",
"101240204",
"101240205",
"101240206",
"101240207",
"101240208",
"101240209",
"101240210",
"101240212",
"101240301",
"101240302",
"101240303",
"101240305",
"101240306",
"101240307",
"101240308",
"101240309",
"101240310",
"101240311",
"101240312",
"101240313",
"101240401",
"101240402",
"101240403",
"101240404",
"101240405",
"101240406",
"101240407",
"101240408",
"101240409",
"101240410",
"101240411",
"101240501",
"101240502",
"101240503",
"101240504",
"101240505",
"101240506",
"101240507",
"101240508",
"101240509",
"101240510",
"101240601",
"101240602",
"101240603",
"101240604",
"101240605",
"101240606",
"101240607",
"101240608",
"101240609",
"101240610",
"101240611",
"101240612",
"101240613",
"101240701",
"101240702",
"101240703",
"101240704",
"101240705",
"101240706",
"101240707",
"101240708",
"101240709",
"101240710",
"101240711",
"101240712",
"101240713",
"101240714",
"101240715",
"101240716",
"101240717",
"101240718",
"101240801",
"101240802",
"101240803",
"101240901",
"101240902",
"101240903",
"101240904",
"101240905",
"101240906",
"101241001",
"101241002",
"101241101",
"101241102",
"101241103",
"101250101",
"101250102",
"101250103",
"101250104",
"101250105",
"101250201",
"101250202",
"101250203",
"101250301",
"101250302",
"101250303",
"101250305",
"101250306",
"101250401",
"101250402",
"101250403",
"101250404",
"101250405",
"101250406",
"101250407",
"101250408",
"101250409",
"101250501",
"101250502",
"101250503",
"101250504",
"101250505",
"101250507",
"101250508",
"101250509",
"101250510",
"101250511",
"101250512",
"101250601",
"101250602",
"101250603",
"101250604",
"101250605",
"101250606",
"101250607",
"101250608",
"101250700",
"101250701",
"101250702",
"101250703",
"101250704",
"101250705",
"101250801",
"101250802",
"101250803",
"101250805",
"101250806",
"101250901",
"101250902",
"101250903",
"101250904",
"101250905",
"101250906",
"101250907",
"101250908",
"101250909",
"101250910",
"101251001",
"101251002",
"101251003",
"101251004",
"101251005",
"101251006",
"101251101",
"101251102",
"101251103",
"101251104",
"101251201",
"101251203",
"101251204",
"101251205",
"101251206",
"101251207",
"101251208",
"101251209",
"101251210",
"101251211",
"101251212",
"101251213",
"101251401",
"101251402",
"101251403",
"101251404",
"101251405",
"101251406",
"101251407",
"101251408",
"101251409",
"101251410",
"101251411",
"101251501",
"101251502",
"101251503",
"101251504",
"101251505",
"101251506",
"101251507",
"101251508",
"101260101",
"101260102",
"101260103",
"101260104",
"101260105",
"101260106",
"101260107",
"101260108",
"101260109",
"101260110",
"101260111",
"101260201",
"101260202",
"101260203",
"101260204",
"101260205",
"101260206",
"101260207",
"101260208",
"101260209",
"101260210",
"101260211",
"101260212",
"101260213",
"101260214",
"101260215",
"101260301",
"101260302",
"101260303",
"101260304",
"101260305",
"101260306",
"101260401",
"101260402",
"101260403",
"101260404",
"101260405",
"101260406",
"101260407",
"101260408",
"101260409",
"101260410",
"101260411",
"101260412",
"101260501",
"101260502",
"101260503",
"101260504",
"101260505",
"101260507",
"101260508",
"101260509",
"101260510",
"101260511",
"101260512",
"101260513",
"101260514",
"101260515",
"101260516",
"101260517",
"101260601",
"101260602",
"101260603",
"101260604",
"101260605",
"101260607",
"101260608",
"101260609",
"101260610",
"101260611",
"101260701",
"101260702",
"101260703",
"101260704",
"101260705",
"101260706",
"101260707",
"101260708",
"101260801",
"101260802",
"101260804",
"101260901",
"101260902",
"101260903",
"101260904",
"101260905",
"101260907",
"101260908",
"101260909",
"101270101",
"101270102",
"101270103",
"101270104",
"101270105",
"101270106",
"101270107",
"101270108",
"101270109",
"101270110",
"101270111",
"101270112",
"101270113",
"101270114",
"101270115",
"101270201",
"101270202",
"101270203",
"101270204",
"101270301",
"101270302",
"101270303",
"101270401",
"101270402",
"101270403",
"101270404",
"101270405",
"101270406",
"101270407",
"101270408",
"101270501",
"101270502",
"101270503",
"101270504",
"101270505",
"101270506",
"101270507",
"101270601",
"101270602",
"101270603",
"101270604",
"101270605",
"101270606",
"101270607",
"101270608",
"101270701",
"101270702",
"101270703",
"101270801",
"101270802",
"101270803",
"101270804",
"101270805",
"101270901",
"101270902",
"101270903",
"101270904",
"101271001",
"101271003",
"101271004",
"101271005",
"101271006",
"101271007",
"101271101",
"101271103",
"101271104",
"101271105",
"101271106",
"101271107",
"101271108",
"101271109",
"101271110",
"101271111",
"101271201",
"101271202",
"101271203",
"101271204",
"101271205",
"101271301",
"101271302",
"101271303",
"101271304",
"101271401",
"101271402",
"101271403",
"101271404",
"101271405",
"101271406",
"101271407",
"101271408",
"101271409",
"101271501",
"101271502",
"101271503",
"101271504",
"101271505",
"101271506",
"101271601",
"101271603",
"101271604",
"101271605",
"101271606",
"101271607",
"101271608",
"101271609",
"101271610",
"101271611",
"101271612",
"101271613",
"101271614",
"101271615",
"101271616",
"101271617",
"101271618",
"101271619",
"101271701",
"101271702",
"101271703",
"101271704",
"101271705",
"101271706",
"101271707",
"101271708",
"101271801",
"101271802",
"101271803",
"101271804",
"101271805",
"101271806",
"101271807",
"101271808",
"101271809",
"101271810",
"101271811",
"101271812",
"101271813",
"101271814",
"101271815",
"101271816",
"101271817",
"101271818",
"101271901",
"101271902",
"101271903",
"101271904",
"101271905",
"101271906",
"101271907",
"101271908",
"101271909",
"101271910",
"101271911",
"101271912",
"101271913",
"101272001",
"101272002",
"101272003",
"101272004",
"101272005",
"101272006",
"101272101",
"101272102",
"101272103",
"101272104",
"101272105",
"101280101",
"101280102",
"101280103",
"101280104",
"101280105",
"101280201",
"101280202",
"101280203",
"101280204",
"101280205",
"101280206",
"101280207",
"101280208",
"101280209",
"101280210",
"101280211",
"101280301",
"101280302",
"101280303",
"101280304",
"101280305",
"101280401",
"101280402",
"101280403",
"101280404",
"101280406",
"101280407",
"101280408",
"101280409",
"101280501",
"101280502",
"101280503",
"101280504",
"101280601",
"101280701",
"101280702",
"101280703",
"101280800",
"101280801",
"101280802",
"101280803",
"101280804",
"101280901",
"101280902",
"101280903",
"101280905",
"101280906",
"101280907",
"101280908",
"101281001",
"101281002",
"101281003",
"101281004",
"101281005",
"101281006",
"101281007",
"101281008",
"101281009",
"101281010",
"101281101",
"101281103",
"101281104",
"101281105",
"101281106",
"101281107",
"101281108",
"101281109",
"101281201",
"101281202",
"101281203",
"101281204",
"101281205",
"101281206",
"101281301",
"101281302",
"101281303",
"101281304",
"101281305",
"101281306",
"101281307",
"101281308",
"101281401",
"101281402",
"101281403",
"101281404",
"101281406",
"101281501",
"101281502",
"101281503",
"101281601",
"101281701",
"101281801",
"101281802",
"101281803",
"101281804",
"101281901",
"101281902",
"101281903",
"101281904",
"101281905",
"101282001",
"101282002",
"101282003",
"101282004",
"101282005",
"101282006",
"101282101",
"101282102",
"101282103",
"101282104",
"101290101",
"101290103",
"101290104",
"101290105",
"101290106",
"101290107",
"101290108",
"101290109",
"101290110",
"101290111",
"101290112",
"101290113",
"101290201",
"101290202",
"101290203",
"101290204",
"101290205",
"101290206",
"101290207",
"101290208",
"101290209",
"101290210",
"101290211",
"101290212",
"101290301",
"101290302",
"101290303",
"101290304",
"101290305",
"101290306",
"101290307",
"101290308",
"101290309",
"101290310",
"101290311",
"101290312",
"101290313",
"101290401",
"101290402",
"101290403",
"101290404",
"101290405",
"101290406",
"101290407",
"101290408",
"101290409",
"101290501",
"101290503",
"101290504",
"101290505",
"101290506",
"101290601",
"101290602",
"101290603",
"101290604",
"101290605",
"101290606",
"101290607",
"101290608",
"101290701",
"101290702",
"101290703",
"101290704",
"101290705",
"101290706",
"101290707",
"101290708",
"101290709",
"101290801",
"101290802",
"101290803",
"101290804",
"101290805",
"101290806",
"101290807",
"101290808",
"101290809",
"101290810",
"101290901",
"101290902",
"101290903",
"101290904",
"101290906",
"101290907",
"101290908",
"101290909",
"101290911",
"101290912",
"101291001",
"101291002",
"101291003",
"101291004",
"101291005",
"101291006",
"101291007",
"101291008",
"101291009",
"101291010",
"101291011",
"101291101",
"101291102",
"101291103",
"101291104",
"101291105",
"101291106",
"101291107",
"101291108",
"101291201",
"101291203",
"101291204",
"101291205",
"101291206",
"101291207",
"101291301",
"101291302",
"101291303",
"101291304",
"101291401",
"101291402",
"101291403",
"101291404",
"101291501",
"101291503",
"101291504",
"101291506",
"101291507",
"101291508",
"101291601",
"101291603",
"101291605",
"101300101",
"101300103",
"101300104",
"101300105",
"101300106",
"101300107",
"101300108",
"101300109",
"101300201",
"101300202",
"101300203",
"101300204",
"101300205",
"101300206",
"101300207",
"101300301",
"101300302",
"101300304",
"101300305",
"101300306",
"101300307",
"101300308",
"101300401",
"101300402",
"101300403",
"101300404",
"101300405",
"101300406",
"101300501",
"101300503",
"101300504",
"101300505",
"101300506",
"101300507",
"101300508",
"101300509",
"101300510",
"101300511",
"101300512",
"101300513",
"101300514",
"101300601",
"101300602",
"101300604",
"101300605",
"101300606",
"101300701",
"101300702",
"101300703",
"101300704",
"101300801",
"101300802",
"101300803",
"101300901",
"101300902",
"101300903",
"101300904",
"101300905",
"101300906",
"101301001",
"101301002",
"101301003",
"101301004",
"101301005",
"101301006",
"101301007",
"101301008",
"101301009",
"101301010",
"101301011",
"101301012",
"101301101",
"101301102",
"101301103",
"101301201",
"101301202",
"101301203",
"101301204",
"101301205",
"101301206",
"101301207",
"101301208",
"101301209",
"101301210",
"101301211",
"101301301",
"101301302",
"101301303",
"101301401",
"101301402",
"101301403",
"101301405",
"101310101",
"101310201",
"101310202",
"101310203",
"101310204",
"101310205",
"101310206",
"101310207",
"101310208",
"101310209",
"101310210",
"101310211",
"101310212",
"101310214",
"101310215",
"101310216",
"101310217",
"101310220",
"101310221",
"101310222",
"101310224",
"101320101",
"101320102",
"101320103",
"101330101",
"101330102",
"101330103",
"101340101",
"101340102",
"101340103",
"101340104",
"101340201",
"101340202",
"101340203",
"101340204",
"101340205",
"101340401",
"101340402",
"101340403",
"101340404",
"101340405",
"101340406",
"101310230"
};
}