From root Wed May 24 16:28:51 2006 Return-Path: Received: from tonelli.dm.unipi.it (ltonelli.private [192.168.1.6]) by gauss.dm.unipi.it (8.12.8/8.12.8) with ESMTP id k4OESmAj028925 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 24 May 2006 16:28:48 +0200 Received: from tonelli.dm.unipi.it (localhost.localdomain [127.0.0.1]) by tonelli.dm.unipi.it (8.12.8/8.12.8) with ESMTP id k4OESlBC007720 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Wed, 24 May 2006 16:28:47 +0200 Received: from localhost (meini@localhost) by tonelli.dm.unipi.it (8.12.8/8.12.8/Submit) with ESMTP id k4OESlsZ007716 for ; Wed, 24 May 2006 16:28:47 +0200 X-Authentication-Warning: tonelli.dm.unipi.it: meini owned process doing -bs Date: Wed, 24 May 2006 16:28:47 +0200 (CEST) From: Beatrice Meini To: "Sergio Steffe'" Subject: esempi Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/Mixed; BOUNDARY=Trip_of_Goats_078_000 Content-ID: X-Virus-Scanned: by AMaViS 0.3.12 X-Spam-Checker-Version: SpamAssassin 3.0.2 (2004-11-16) on gauss.dm.unipi.it X-Spam-Level: X-Spam-Status: No, score=-5.4 required=2.2 tests=ALL_TRUSTED,BAYES_00, MIME_BASE64_TEXT,TW_IJ,TW_JF autolearn=ham version=3.0.2 Status: R This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --Trip_of_Goats_078_000 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII Content-ID: Benny ha inviato 2 function che generano gli esempi: examples.m (che avevamo gia') genera dei QBD, mentre MG1_examples genera gli esempi per l'MG1. Ciao Beatrice --Trip_of_Goats_078_000 Content-Type: TEXT/PLAIN; NAME="MG1_examples.m"; CHARSET=us-ascii; X-UNIX-MODE=0744 Content-ID: Content-Description: MG1_examples.m function A=MG1_examples(examp) if (examp==1) M=20; % number of on/off sources a=0.01; % 1/a = mean on time b=a; % 1/b = mean off time d=10.5; % probability of generating a packet when on is 1/d % system is pos. recurrent (for a=b) if M/(2d) < 1 temp=zeros(M+1,M+1); temp(1,1)=1-M*b; temp(1,2)=M*b; for i=2:M temp(i,i-1)=(i-1)*a; temp(i,i+1)=(M-i+1)*b; temp(i,i)=1-temp(i,i-1)-temp(i,i+1); end; temp(M+1,M)=a*M; temp(M+1,M+1)=1-a*M; for j=0:M C=zeros(M+1,M+1); for i=0:M if (i >= j) C(i+1,i+1)=nchoosek(i,j)*(1/d)^j*((d-1)/d)^(i-j); end end if (sum(sum(C*temp))> 10^(-100)) D(1:M+1,(M+1)*j+1:(M+1)*(j+1))=C*temp; end end A=D; end if (examp==2) % % Script dat de oplossing van een D-BMAP/D/1/K queueing systeem berekent als % % . de input D-BMAP een circulante D-BMAP is (onderliggende tijdseenheid is lengte % % MPEG frame, wordt omgezet naar slot als onderliggende tijdseenheid) waarbij % % het aantal arrivals in een slot bepaald wordt door een Poisson distributie % % met gemiddelde rate ./ (# slots in een frame tijd), % % . de deterministische service tijd de tijd is om een pakket op de uitgaande link % % te plaatsen (= slot) % % % Input % % ----- % % Inlezen data circulant. Pas evt. de naam van de files waaruit de data moet % % gelezen worden aan. % load bond circ per % load bond43 rate % % % File waarin output moet geschreven worden -> outfile % outfile = 'clrbond43'; % % Size queueing systeem -> K (K-1 bufferplaatsen, 1 server plaats) K = 101; % % % Definieer de rate van de uitgaande link (in Mbps) -> linkrate % linkrate = 37.44; % % % Definieer de pakketlengte (= payload + header) (in bytes) -> pakket % pakket = 53; % % % Definieer de lengte van een MPEG frame (in ms) -> frame % frame = 45; % % Om te bepalen welke matrices Q_i van de circulant relevante data bevatten % wordt die M bepaald waarvoor (Q_0 + Q_1 + ... + Q_M)e op alle posities % strikt groter is dan 1-grens. grens = 10^-15; rate = [0.14 0.2 0.5 1 1.4 2.7]; circ = [0.2 0.5 0.3]; per = 2; % --------------------------------------------------------------------------- % Bepaal dimensie circulant -> N N = length(rate); % Construeer transitiematrix circulant -> Q if per > 1 first = zeros(1,N); i = 2 : per : N - per + 2; first(i) = circ; else first = circ; end; Q = zeros(N,N); for i = 1 : N Q(i,:) = [first(N-i+2:N) first(1:N-i+1)]; end; % % Bereken de lengte van een slot (in microsec) -> slot. % slot = pakket * 8 / linkrate; % % % Bereken het aantal slots in een frame lengte -> x % x = frame * 1000 / slot; % % % Transformeer circulante D-BMAP naar D-BMAP met 1 slot als onderliggende % % tijdseenheid. Veronderstel dat het aantal slots dat je in een toestand % % blijft geometrisch verdeeld is met gemiddelde x. % p = 1 - inv(x); % Q = (1-p) * Q; % Q = Q + p * eye(N); % rate = rate ./ x; % Construeer de matrices Q_i (i = 0, ...,M, waarbij M door grens bepaald % wordt) en plaats ze in een array fstrow = [Q_0 ... Q_M] als M <= K, en % fstrow = [Q_0 ... Q_K-1 Q*_K] waarbij Q*_K = sum_{k=k}^M Q_k als M > K. Qi = diag(exp(-rate)) * Q; Qsum = sum(Qi,2); i = 0; fstrow(1:N,1:N) = Qi; while sum(Qsum > 1-grens) < N i = i+1; Qi = diag(rate ./ i) * Qi; if i < K fstrow(:,i*N+1:(i+1)*N) = Qi; else fstrow(:,K*N+1:(K+1)*N) = fstrow(:,K*N+1:(K+1)*N) + Qi; end; Qsum = Qsum + sum(Qi,2); end; t = find(fstrow < 0); fstrow(t) = 0; % Normaliseer rijen van fstrow Qsum = sum(fstrow,2); fstrow = diag(1./Qsum) * fstrow; % % Bereken systeembezetting -> sysoccup % sysoccup = grassmann(N,K+1,fstrow,fstrow); % % % Bereken ook de matrix Ql met K kolommen waar kolom i (i=0,...,K-1) de % % vector Qi*e bevat. % Ql = zeros(N,K); % for i = 0 : (size(fstrow,2)/N)-1; % Ql(:,i+1) = sum(fstrow(:,i*N+1:(i+1)*N),2); % end; % % % Bereken de gemiddelde arrivalrate % lambda = sum(rate) / N; % % % Bereken de pakket loss ratio % loss = clr(Ql,lambda,K,sysoccup); % % % Bewaar sysoccup en loss in outputfile % eval(['save ' outfile ' sysoccup loss K linkrate pakket frame']); % % A=fstrow; end --Trip_of_Goats_078_000 Content-Type: TEXT/PLAIN; NAME="examples.m"; CHARSET=US-ASCII; X-UNIX-MODE=0744 Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: examples.m ZnVuY3Rpb24gW0EwLEExLEEyXT1leGFtcGxlcyhleGFtcCkNCg0KaWYgKGV4 YW1wPT0xKQ0KICAgIHA9MTBeKC04KTsNCiAgICBBMD1bMS1wIDA7IDAgMF07 DQogICAgQTE9WzAgcDsgMipwIDBdOw0KICAgIEEyPVswIDA7IDAgMS0yKnBd Ow0KZW5kDQppZiAoZXhhbXA9PTIpDQogICAgSz0zOw0KDQogICAgbWtzPVsy IDMgMV07DQogICAgc3VtbWtzPVsyIDUgNl07DQoNCiAgICBUezF9PVswIDE7 IDAgMF07DQogICAgVHsyfT1bMS8yIDEvMiAwOyAwIDIvMyAxLzM7IDAgMCAx LzJdOw0KICAgIFR7M309WzQvNV07DQogICAgVHNlcj16ZXJvcyhzdW0obWtz KSxzdW0obWtzKSk7DQogICAgVHNlcigxOm1rcygxKSwxOm1rcygxKSk9VHsx fTsNCiAgICBUc2VyKG1rcygxKSsxOnN1bW1rcygyKSxta3MoMSkrMTpzdW1t a3MoMikpPVR7Mn07DQogICAgVHNlcihzdW1ta3MoMikrMTpzdW0obWtzKSxz dW1ta3MoMikrMTpzdW0obWtzKSk9VHszfTsNCiAgICANCiAgICBhbHBoYXsx fT1bMSAwXTsNCiAgICBhbHBoYXsyfT1bMSAwIDBdOw0KICAgIGFscGhhezN9 PVsxXTsNCg0KICAgIGFscGhhdG90PVthbHBoYXsxfSBhbHBoYXsyfSBhbHBo YXszfV07DQogIA0KICAgIFRzZXIwPW9uZXMoc3VtKG1rcyksMSktc3VtKFRz ZXInKSc7DQoNCiAgICBtPTM7DQogICAgRHVuZD1bOTk5LzEwMDAgMS8xMDAw IDA7IDAgOTk5LzEwMDAgMS8xMDAwOyAxLzEwMDAgMCA5OTkvMTAwMF07DQoN CiAgICBEMD1kaWFnKFs0LzUqOTkvMTAwIDk5LzEwMCoyNy8yOCo5OS8xMDAg OTkvMTAwKjE5LzIwXSkqRHVuZDsNCiAgICBEezF9PWRpYWcoWzEvNSo5OS8x MDAgMS8xMDAqMjcvMjgqOTkvMTAwIDBdKSpEdW5kOw0KICAgIER7Mn09ZGlh ZyhbMCA5OS8xMDAqMS8yOCo5OS8xMDAgMS8xMDAqMTkvMjBdKSpEdW5kOw0K ICAgIER7M309ZGlhZyhbMS8xMDAqNC81IDk5LzEwMCoyNy8yOCoxLzEwMCA5 OS8xMDAqMS8yMF0pKkR1bmQ7DQogICAgRHsxMn09ZGlhZyhbMCAxLzEwMCox LzI4Kjk5LzEwMCAwXSkqRHVuZDsNCiAgICBEezEzfT1kaWFnKFsxLzUqMS8x MDAgMS8xMDAqMjcvMjgqMS8xMDAgMF0pKkR1bmQ7DQogICAgRHsyM309ZGlh ZyhbMCA5OS8xMDAqMS8yOCoxLzEwMCAxLzEwMCoxLzIwXSkqRHVuZDsNCiAg ICBEezEyM309ZGlhZyhbMCAxLzEwMCoxLzI4KjEvMTAwIDBdKSpEdW5kOw0K DQogICAgYT00Ow0KICAgIER0aWxkZTA9emVyb3MoYSptLGEqbSk7DQogICAg RHRpbGRlMCgxOm0sMTptKT1EMDsNCiAgICBEdGlsZGV7MX09W0R7MX0gRHsx Mn0gRHsxM30gRHsxMjN9OyB6ZXJvcygoYS0xKSptLGEqbSldOw0KICAgIER0 aWxkZXsyfT1bRHsyfSB6ZXJvcyhtLG0pIER7MjN9IHplcm9zKG0sbSk7IGV5 ZShtKSB6ZXJvcyhtLChhLTEpKm0pOyAuLi4NCiAgICAgICAgICAgemVyb3Mo bSxhKm0pOyB6ZXJvcyhtLDIqbSkgZXllKG0pIHplcm9zKG0sbSldOw0KICAg IER0aWxkZXszfT1bRHszfSB6ZXJvcyhtLChhLTEpKm0pOyB6ZXJvcyhtLGEq bSk7IGV5ZShtKSB6ZXJvcyhtLChhLTEpKm0pOyANCiAgICAgICAgemVyb3Mo bSxhKm0pXTsNCg0KICAgIHRlbXA9a3JvbihhbHBoYXsxfSxEdGlsZGV7MX0o bSsxOmVuZCw6KSk7DQogICAgZm9yIGs9MjpLDQogICAgICAgIHRlbXA9W3Rl bXAga3JvbihhbHBoYXtrfSxEdGlsZGV7a30obSsxOmVuZCw6KSldOw0KICAg IGVuZCAgDQogICAgbXRvdD1zaXplKFRzZXIsMSkqbTsNCiAgICBBMj1rcm9u KFRzZXIsZXllKGEqbSkpK2tyb24oVHNlcjAsW3plcm9zKG0sYSptdG90KTsg dGVtcF0pOw0KICAgIEEyPVt6ZXJvcyhtLGEqbXRvdCttKTsgemVyb3MoYSpt dG90LG0pIEEyXTsNCg0KICAgIHRlbXA9a3JvbihhbHBoYXsxfSxEdGlsZGV7 MX0oMTptLDopKTsNCiAgICBmb3Igaz0yOksNCiAgICAgICAgdGVtcD1bdGVt cCBrcm9uKGFscGhhe2t9LER0aWxkZXtrfSgxOm0sOikpXTsNCiAgICBlbmQg IA0KICAgIEExPWtyb24oVHNlcjAsW3RlbXA7IHplcm9zKChhLTEpKm0sYSpt dG90KV0pOw0KICAgIEExPVt6ZXJvcyhhKm10b3QrbSxtKSBbdGVtcDsgQTFd XTsNCg0KICAgIEEwPVtEMCB6ZXJvcyhtLGEqbXRvdCk7IGtyb24oVHNlcjAs W0QwOyB6ZXJvcyhtKihhLTEpLG0pXSkgemVyb3MoYSptdG90LGEqbXRvdCld Ow0KZW5kDQppZiAoZXhhbXA9PTMpDQogICAgaz0zMjsNCiAgICBkZWx0YT0x MF4oLTMpOw0KICAgIFI9b25lcyhrLGspKigxLWRlbHRhKS8oMyprLTMpOw0K ICAgIFI9Ui1kaWFnKGRpYWcoUikpOw0KICAgIEEwPVIrZGlhZyhvbmVzKDEs aykqZGVsdGEpOw0KICAgIEExPVI7DQogICAgQTI9UjsNCmVuZCAgICANCmlm IChleGFtcD09NCkNCiAgICAlIEZTLUFMT0hBIHByb3RvY29sIGFzIFFCRCwg YXJyaXZhbCByYXRlIGxhbWJkYSANCiAgICAlIFQgPSBTK04gc2xvdHMsIFMg Zm9yIHNldHMsIE4gZm9yIHJlc29sdXRpb24NCiAgICANCiAgICBsYW1iZGE9 MzsNCiAgICBEPWV4cCgtbGFtYmRhKTsNCiAgICBzb209RDsNCiAgICBpPTE7 DQogICAgd2hpbGUgKHNvbSA8IDEgLSAxMF4oLTE1KSkNCiAgICAgICAgRCgx LGkrMSk9RCgxLGkpKmxhbWJkYS9pOw0KICAgICAgICBzb209c29tK0QoMSxp KzEpOw0KICAgICAgICBpID0gaSsxOw0KICAgIGVuZA0KDQogICAgbG9hZD1s YW1iZGE7DQoNCiAgICBxbT1zaXplKEQsMiktMjsNCg0KICAgIE5zbG90cz01 Ow0KICAgIFNzbG90cz01Ow0KICAgIE5wbHVzU3Nsb3RzPU5zbG90cytTc2xv dHM7DQoNCg0KICAgIFBOPXplcm9zKHFtLHFtKTsNCiAgICBmb3IgcT0yOnFt KzENCiAgICAgICAgZm9yIHFhYz0yOnENCiAgICAgICAgICAgIHRlbXA9MDsN CiAgICAgICAgICAgIGZvciB2PXEtcWFjOm1pbihbcSBOc2xvdHNdKQ0KICAg ICAgICAgICAgICAgIHRlbXA9dGVtcCsoLTEpXih2K3EtcWFjKSpuY2hvb3Nl ayh2LHEtcWFjKS9Oc2xvdHNecSpuY2hvb3NlayhOc2xvdHMsdikvZmFjdG9y aWFsKHEtdikqLi4uDQogICAgICAgICAgICAgICAgICAgIGZhY3RvcmlhbChx KSooTnNsb3RzLXYpXihxLXYpOw0KICAgICAgICAgICAgZW5kDQogICAgICAg ICAgICBQTihxLTEscWFjLTEpPXRlbXA7DQogICAgICAgIGVuZA0KICAgIGVu ZA0KICAgIFBOc29sdmVkPXplcm9zKHFtLDEpOw0KICAgIGZvciBxPTI6cW0r MQ0KICAgICAgICB0ZW1wPTA7DQogICAgICAgIGZvciB2PXE6bWluKFtxIE5z bG90c10pDQogICAgICAgICAgICB0ZW1wPXRlbXArKC0xKV4oditxKSpuY2hv b3Nlayh2LHEpL05zbG90c15xKm5jaG9vc2VrKE5zbG90cyx2KS9mYWN0b3Jp YWwocS12KSouLi4NCiAgICAgICAgICAgICAgICBmYWN0b3JpYWwocSkqKE5z bG90cy12KV4ocS12KTsNCiAgICAgICAgZW5kDQogICAgICAgIFBOc29sdmVk KHEtMSwxKT10ZW1wOw0KICAgIGVuZA0KDQogICAgUFM9emVyb3MocW0scW0p Ow0KICAgIGZvciBxPTI6cW0rMQ0KICAgICAgICBmb3IgcWFjPTI6cQ0KICAg ICAgICAgICAgdGVtcD0wOw0KICAgICAgICAgICAgZm9yIHY9cS1xYWM6bWlu KFtxIFNzbG90c10pDQogICAgICAgICAgICAgICAgdGVtcD10ZW1wKygtMSle KHYrcS1xYWMpKm5jaG9vc2VrKHYscS1xYWMpL1NzbG90c15xKm5jaG9vc2Vr KFNzbG90cyx2KS9mYWN0b3JpYWwocS12KSouLi4NCiAgICAgICAgICAgICAg ICAgICAgZmFjdG9yaWFsKHEpKihTc2xvdHMtdileKHEtdik7DQogICAgICAg ICAgICBlbmQNCiAgICAgICAgICAgIFBTKHEtMSxxYWMtMSk9dGVtcDsNCiAg ICAgICAgZW5kDQogICAgZW5kDQogICAgUFNzb2x2ZWQ9emVyb3MocW0sMSk7 DQogICAgZm9yIHE9MjpxbSsxDQogICAgICAgIHRlbXA9MDsNCiAgICAgICAg Zm9yIHY9cTptaW4oW3EgU3Nsb3RzXSkNCiAgICAgICAgICAgIHRlbXA9dGVt cCsoLTEpXih2K3EpKm5jaG9vc2VrKHYscSkvU3Nsb3RzXnEqbmNob29zZWso U3Nsb3RzLHYpL2ZhY3RvcmlhbChxLXYpKi4uLg0KICAgICAgICAgICAgICAg IGZhY3RvcmlhbChxKSooU3Nsb3RzLXYpXihxLXYpOw0KICAgICAgICBlbmQN CiAgICAgICAgUFNzb2x2ZWQocS0xLDEpPXRlbXA7DQogICAgZW5kDQoNCiAg ICBQTnBsdXNTPXplcm9zKHFtLHFtKTsNCiAgICBmb3IgcT0yOnFtKzENCiAg ICAgICAgZm9yIHFhYz0yOnENCiAgICAgICAgICAgIHRlbXA9MDsNCiAgICAg ICAgICAgIGZvciB2PXEtcWFjOm1pbihbcSBOcGx1c1NzbG90c10pDQogICAg ICAgICAgICAgICAgdGVtcD10ZW1wKygtMSleKHYrcS1xYWMpKm5jaG9vc2Vr KHYscS1xYWMpL05wbHVzU3Nsb3RzXnEqbmNob29zZWsoTnBsdXNTc2xvdHMs dikvZmFjdG9yaWFsKHEtdikqLi4uDQogICAgICAgICAgICAgICAgICAgIGZh Y3RvcmlhbChxKSooTnBsdXNTc2xvdHMtdileKHEtdik7DQogICAgICAgICAg ICBlbmQNCiAgICAgICAgICAgIFBOcGx1c1MocS0xLHFhYy0xKT10ZW1wOw0K ICAgICAgICBlbmQNCiAgICBlbmQNCiAgICBQTnBsdXNTc29sdmVkPXplcm9z KHFtLDEpOw0KICAgIGZvciBxPTI6cW0rMQ0KICAgICAgICB0ZW1wPTA7DQog ICAgICAgIGZvciB2PXE6bWluKFtxIE5wbHVzU3Nsb3RzXSkNCiAgICAgICAg ICAgIHRlbXA9dGVtcCsoLTEpXih2K3EpKm5jaG9vc2VrKHYscSkvTnBsdXNT c2xvdHNecSpuY2hvb3NlayhOcGx1c1NzbG90cyx2KS9mYWN0b3JpYWwocS12 KSouLi4NCiAgICAgICAgICAgICAgICBmYWN0b3JpYWwocSkqKE5wbHVzU3Ns b3RzLXYpXihxLXYpOw0KICAgICAgICBlbmQNCiAgICAgICAgUE5wbHVzU3Nv bHZlZChxLTEsMSk9dGVtcDsNCiAgICBlbmQNCg0KICAgIHBUU2dlbj0xLUQo MSktRCgyKS1EKDM6ZW5kKSpQU3NvbHZlZDsNCiAgICBUU2dlbl9zaXplPUQo MzplbmQpKlBTOw0KICAgIHBUU2dlbl9lbXB0eT0xLUQoMSktRCgyKS1EKDM6 ZW5kKSpQTnBsdXNTc29sdmVkOw0KICAgIFRTZ2VuX3NpemVfZW1wdHk9RCgz OmVuZCkqUE5wbHVzUzsNCiAgICBUU2dlbl9zaXplPVRTZ2VuX3NpemUvc3Vt KFRTZ2VuX3NpemUpOw0KICAgIFRTZ2VuX3NpemVfZW1wdHk9VFNnZW5fc2l6 ZV9lbXB0eS9zdW0oVFNnZW5fc2l6ZV9lbXB0eSk7DQoNCiAgICAlIGFwcHJv eGltYXRlIHN5c3RlbSBzdGF0ZSBhdCB0aW1lIHQNCg0KICAgIGFscGhhX2lu aT0xOw0KDQogICAgQTI9cFRTZ2VuKlBOOw0KICAgIEExPXBUU2dlbipQTnNv bHZlZCpUU2dlbl9zaXplKygxLXBUU2dlbikqUE47DQogICAgQTA9KDEtcFRT Z2VuKSpQTnNvbHZlZCpUU2dlbl9zaXplOw0KZW5kDQppZiAoZXhhbXA9PTUp DQogICAgJWlucHV0IHBhcmFtZXRlcnMNCg0KICAgICVELU1BUCBkZXNjcmlw dGlvbg0KICAgIHBhcl9jID0gMTBeLTM7DQogICAgDQogICAgbGFtYmRhMSA9 IDAuNjsNCiAgICBsYW1iZGEyID0gbGFtYmRhMTsNCiAgICBwYXJfYSA9IDEv NTA7DQogICAgcGFyX2IgPSAxLzk1MC1wYXJfYzsNCiAgICBwYXJfZCA9IDYv MTAwOw0KICAgIHBhcl9mID0gMTkqcGFyX2MvNTk7DQogICAgcGFyX2UgPSA2 LzU5MDAtcGFyX2Y7DQogICAgDQogICAgRCA9IFsgICAxLXBhcl9hICAgICAg ICAgcGFyX2EgICAgICAgMCAgICAgICAgICAgMDsNCiAgICAgICAgICAgcGFy X2IgICAgICAgMS1wYXJfYi1wYXJfYyAgIHBhcl9jICAgICAgIDA7DQogICAg ICAgICAgIDAgICAgICAgICAgICAgICAwICAgICAgICAgICAxLXBhcl9kICAg ICBwYXJfZDsNCiAgICAgICAgICAgcGFyX2YgICAgICAgICAgIDAgICAgICAg ICAgIHBhcl9lICAgICAgIDEtcGFyX2UtcGFyX2YNCiAgICAgICBdOw0KICAg IEQxID0gZGlhZyhbbGFtYmRhMSAwIGxhbWJkYTIgMF0pICogRDsNCiAgICBE MCA9IEQtRDE7DQoNCiAgICAlRCA9IFsxLTEvNTAwIDEvNTAwOyAxLzEwMDAg MS0xLzEwMDBdOw0KICAgICVEMCA9IGRpYWcoWzkvMTAgMy80XSkqRDsNCiAg ICAlRDEgPSBkaWFnKFsxLzEwIDEvNF0pKkQ7DQoNCiAgICAlcF9pbnB1dD0w LjkqMC4zOw0KICAgICVEMD0xLXBfaW5wdXQ7DQogICAgJUQxPXBfaW5wdXQ7 DQoNCiAgICBsPXNpemUoRCwxKTsNCg0KICAgICVzZXJ2aWNlIGRlc2NyaXB0 aW9uDQogICAgJVQ9MS0wLjM7DQogICAgJVQgPSBbNC81IDAgMDsgMCAxLzIg MDsgMCAwIDEvNF07DQogICAgVCA9IGRpYWcob25lcygxLDkpLC0xKTsNCiAg ICBtPXNpemUoVCwxKTsNCiAgICBtbD1tKmw7DQogICAgJWFscGhhPTE7DQog ICAgJWFscGhhID0gWzMvNCAxLzggMS84XTsNCiAgICBhbHBoYSA9IFsyLjYw MTIyOTUqMTBeKC0yKSAgMS4xNzA1NTMzKjEwXigtMSkgIDIuMzQxMTA2NSox MF4oLTEpICAyLjczMTI5MTAqMTBeKC0xKSAgMi4wNDg0NjgyKjEwXigtMSkg IDEuMDI0MjM0MSoxMF4oLTEpICAzLjQxNDExMzcqMTBeKC0yKSA3LjMxNTk1 NzkqMTBeKC0zKSAgOS4xNDQ5NDc0KjEwXigtNCkgIDUuMDgwNTI2MyoxMF4o LTUpXTsNCiAgICBhbHBoYT1hbHBoYS9zdW0oYWxwaGEpOyAlIHRoaXMgaW5w dXQgYWxmYSB3YXMgbm90IDEwMCUgZXhhY3QsIGhlbmNlIHRoZSBub3JtYWxp emF0aW9uDQogICAgVDAgPSBvbmVzKG0sMSktVCpvbmVzKG0sMSk7DQoNCiAg ICAlIGFwcHJveGltYXRlIHF1ZXVlbGVuZ3RoIHRoZSB0aW1lIHQNCg0KICAg IEEyPWtyb24oRDEsVCk7DQogICAgQTE9a3JvbihEMCxUKStrcm9uKEQxLFQw KmFscGhhKTsNCiAgICBBMD1rcm9uKEQwLFQwKmFscGhhKTsNCmVuZA0KaWYg KGV4YW1wID09IDYpDQogICAgJSBUYW5kZW0gUXVldWUgd2l0aCBibG9ja2lu ZywgTUFQIGFycml2YWxzIGFuZCBQSCBzZXJ2aWNlcywgYnVmZmVyIHNpemUg Qg0KICAgIEI9MjA7DQogICAgJSBhcnJpdmFsIHByb2Nlc3MNCiAgICBEMD1b Mzk5LzQwMCAxLzQwMDsgMTUvMTYqMS80MDAgMTUvMTYqMzk5LzQwMF07DQog ICAgRDE9WzAgMDsgMS8xNioxLzQwMCAxLzE2KjM5OS80MDBdOw0KICAgIA0K ICAgIERzdW09RDArRDE7DQogICAgbD1zaXplKEQwLDEpOw0KICAgIGdhbW1h PXN0YXQoRHN1bSk7DQogICAgbGFtYmRhPWdhbW1hKkQxKm9uZXMobCwxKTsN Cg0KICAgICUgc2VydmljZSBwcm9jZXNzZXMNCiAgICBUMT1bNC81IDA7IDAg MTkvMjBdOw0KICAgIGFscGhhMT1bMS8zIDIvM107DQogICAgJVQxPVs5LzEw IDU5LzYwXQ0KICAgICVhbHBoYTE9WzkvMTAgMS8xMF0NCiAgICAlVDE9MTQv MTU7DQogICAgJVQxPVsyLzMgMS8zIDAgMCAwOyAwIDIvMyAxLzMgMCAwOyAw IDAgMi8zIDEvMyAwOyAwIDAgMCAyLzMgMS8zOyAwIDAgMCAwIDIvM107DQog ICAgJWFscGhhMT0xOw0KICAgICVhbHBoYTE9WzEgMCAwIDAgMF07DQogICAg bTE9c2l6ZShUMSwxKTsNCg0KICAgIGFscGhhMj1bMS8xNiAxLzggMTMvMTZd Ow0KICAgIFQyPVszLzQgMS84IDA7IDEvMTAgNC81IDA7IDAgMCAxLTEvKCgx NS1hbHBoYTIoMToyKSppbnYoZXllKDIpLVszLzQgMS84OyAxLzEwIDQvNV0p Km9uZXMoMiwxKSkqMTYvMTMpXTsNCiAgICAlVDI9WzIvMyAxLzMgMCAwIDA7 IDAgMi8zIDEvMyAwIDA7IDAgMCAyLzMgMS8zIDA7IDAgMCAwIDIvMyAxLzM7 IDAgMCAwIDAgMi8zXTsNCiAgICAlVDI9MTQvMTU7DQogICAgJWFscGhhMj0x Ow0KICAgICVhbHBoYTI9WzEgMCAwIDAgMF07DQogICAgbTI9c2l6ZShUMiwx KTsNCg0KICAgIG0xMj1tMSptMjsNCg0KICAgIG11MWludj1hbHBoYTEqaW52 KGV5ZShtMSktVDEpKm9uZXMobTEsMSk7DQogICAgbXUyaW52PWFscGhhMipp bnYoZXllKG0yKS1UMikqb25lcyhtMiwxKTsNCg0KICAgIHQxPW9uZXMobTEs MSktVDEqb25lcyhtMSwxKTsNCiAgICB0Mj1vbmVzKG0yLDEpLVQyKm9uZXMo bTIsMSk7DQoNCiAgICB0MWExPXQxKmFscGhhMTsNCiAgICB0MmEyPXQyKmFs cGhhMjsNCg0KICAgICUgVGhlIFFCRCBtYXRyaWNlczoNCg0KICAgIGR0PShC KzEpKm0xMipsKyhtMSttMikqbDsNCg0KICAgICUgdGhlIEswLCBBMCBtYXRy aXgNCiAgICBLMD1UMTsNCiAgICBLMChtMSsxOm0xK20xMiwxOm0xKT1rcm9u KFQxLHQyKTsNCiAgICBLMChtMSsxOm0xK20xMixtMSsxOm0xK20xMik9a3Jv bihUMSxUMik7DQogICAgSzAobTErbTEyKkIrMTptMSttMTIqKEIrMSksbTEr bTEyKihCKzEpKzE6ZHQvbCk9a3Jvbih0MSxUMik7DQogICAgSzAobTErbTEy KihCKzEpKzE6ZHQvbCxtMSttMTIqKEIrMSkrMTpkdC9sKT1UMjsNCiAgICBm b3IgaW5kZXg9MTpCDQogICAgICAgIEswKG0xK20xMippbmRleCsxOm0xK20x MiooaW5kZXgrMSksbTErbTEyKihpbmRleC0xKSsxOm0xK20xMippbmRleCk9 a3JvbihUMSx0MmEyKTsNCiAgICAgICAgSzAobTErbTEyKmluZGV4KzE6bTEr bTEyKihpbmRleCsxKSxtMSttMTIqaW5kZXgrMTptMSttMTIqKGluZGV4KzEp KT1rcm9uKFQxLFQyKTsNCiAgICBlbmQNCiAgICBBMD1rcm9uKEswLGV5ZShs KSk7DQoNCiAgICAlIHRoZSBBMHN0YXIgbWF0cml4DQogICAgZHRhcnQ9KEIr MSkqbTIqbDsNCiAgICBkdHN0YXI9ZHQrZHRhcnQ7DQoNCiAgICBBMHN0YXI9 W3plcm9zKGR0YXJ0LGR0c3Rhcik7IHplcm9zKGR0LGR0YXJ0KSBBMF07DQoN CiAgICAlIHRoZSBLMSwgQTEgbWF0cml4DQoNCiAgICBLMT16ZXJvcyhkdC9s LGR0L2wpOw0KICAgIEsxKDE6bTEsbTErMTptMSttMTIpPWtyb24odDFhMSxh bHBoYTIpOw0KICAgIEsxKG0xK20xMipCKzE6bTErbTEyKihCKzEpLG0xK20x MipCKzE6bTErbTEyKihCKzEpKT1rcm9uKHQxYTEsdDJhMik7DQogICAgSzEo bTErbTEyKihCKzEpKzE6ZHQvbCxtMSttMTIqQisxOm0xK20xMiooQisxKSk9 a3JvbihhbHBoYTEsdDJhMik7DQogICAgZm9yIGluZGV4PTE6Qg0KICAgICAg ICBLMShtMSttMTIqKGluZGV4LTEpKzE6bTErbTEyKmluZGV4LG0xK20xMioo aW5kZXgtMSkrMTptMSttMTIqaW5kZXgpPWtyb24odDFhMSx0MmEyKTsNCiAg ICAgICAgSzEobTErbTEyKihpbmRleC0xKSsxOm0xK20xMippbmRleCxtMStt MTIqaW5kZXgrMTptMSttMTIqKGluZGV4KzEpKT1rcm9uKHQxYTEsVDIpOw0K ICAgIGVuZA0KICAgIEExPWtyb24oSzEsRDEpOw0KDQogICAgJSB0aGUgQTFz dGFyIG1hdHJpeA0KICAgIEExc3Rhcj1bemVyb3MoZHRhcnQsZHRzdGFyKTsg emVyb3MoZHQsZHRhcnQpIEExXTsNCiAgICBBMXN0YXIoMTpkdGFydCxkdGFy dCttMSpsKzE6ZHRhcnQrbTEqbCttMTIqKEIrMSkqbCk9a3JvbihleWUoQisx KSxrcm9uKGFscGhhMSxrcm9uKGV5ZShtMiksRDEpKSk7DQoNCiAgICAlIHRo ZSBCMnBsdXMgbWF0cml4DQogICAgQjJwbHVzKDE6bTEsMTptMik9dDEqYWxw aGEyOw0KICAgIEIycGx1cyhtMSttMTIqQisxOm0xK20xMiooQisxKSxtMipC KzE6bTIqKEIrMSkpPWtyb24odDEsdDJhMik7DQogICAgQjJwbHVzKG0xK20x MiooQisxKSsxOmR0L2wsbTIqQisxOm0yKihCKzEpKT10MmEyOw0KICAgIGZv ciBpbmRleD0xOkINCiAgICAgICAgQjJwbHVzKG0xK20xMiooaW5kZXgtMSkr MTptMSttMTIqaW5kZXgsbTIqKGluZGV4LTEpKzE6bTIqaW5kZXgpPWtyb24o dDEsdDJhMik7DQogICAgICAgIEIycGx1cyhtMSttMTIqKGluZGV4LTEpKzE6 bTErbTEyKmluZGV4LG0yKmluZGV4KzE6bTIqKGluZGV4KzEpKT1rcm9uKHQx LFQyKTsNCiAgICBlbmQNCiAgICBCMnBsdXM9a3JvbihCMnBsdXMsRDApOw0K DQogICAgJSB0aGUgQTJzdGFyIG1hdHJpeA0KICAgIEEyc3Rhcj1ba3Jvbihl eWUoKEIrMSkqbTIpLEQwKSB6ZXJvcyhkdGFydCxkdCk7IEIycGx1cyB6ZXJv cyhkdCxkdCldOw0KICAgIEEwPUEyc3RhcjsNCiAgICBBMT1BMXN0YXI7DQog ICAgQTI9QTBzdGFyOw0KZW5k --Trip_of_Goats_078_000--