/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 - present ĠFacebook , ĠInc . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ġyou Ġmay Ċ Ġ* Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . ĠYou Ġmay Ġobtain Ċ Ġ* Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , ĠWITHOUT Ċ Ġ* ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . ĠSee Ġthe Ċ Ġ* ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ġlimitations Ċ Ġ* Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . facebook . buck . mult it enant . service Ċ Ċ /** Ġold Rules Ġand Ġnew Rules Ġmust Ġcome Ġfrom Ġthe Ġsame Ġbuild Ġpackage . Ġ*/ Ċ internal Ġfun Ġdiff Rules ( old Rules : ĠSet < Internal Raw Build Rule >, Ġnew Rules : ĠSet < Internal Raw Build Rule >): ĠList < Rule Delta > Ġ{ ĊĠĠĠ Ġval Ġdelt as : ĠMutable List < Rule Delta > Ġ= Ġmutable ListOf () ĊĠĠĠ Ġval Ġsmall Map : ĠMutable Map < String , ĠInternal Raw Build Rule > ĊĠĠĠ Ġval Ġlarge Map : ĠMap < String , ĠInternal Raw Build Rule > ĊĠĠĠ Ġval Ġsmall Map Has The Old Rules Ġ= Ġold Rules . size Ġ< Ġnew Rules . size ĊĠĠĠ Ġif Ġ( small Map Has The Old Rules ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsmall Map Ġ= Ġold Rules . associate Ġ{ Ġto Pair ( it ) Ġ} Ġ. to Mutable Map () ĊĠĠĠĠĠĠĠ Ġlarge Map Ġ= Ġnew Rules . associate Ġ{ Ġto Pair ( it ) Ġ} Ġ. toMap () ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġsmall Map Ġ= Ġnew Rules . associate Ġ{ Ġto Pair ( it ) Ġ} Ġ. to Mutable Map () ĊĠĠĠĠĠĠĠ Ġlarge Map Ġ= Ġold Rules . associate Ġ{ Ġto Pair ( it ) Ġ} Ġ. toMap () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfor Ġ( entry Ġin Ġlarge Map . entries ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrule Ġ= Ġsmall Map . remove ( entry . key ) ĊĠĠĠĠĠĠĠ Ġif Ġ( rule Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠEntry Ġexists Ġin Ġlarge Ġmap Ġbut Ġnot Ġsmall Ġmap . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( small Map Has The Old Rules ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelt as . add ( Rule Delta . Updated ( entry . value )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelt as . add ( Rule Delta . Removed ( entry . value . target Node . build Target )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( rule Ġ!= Ġentry . value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠEntry Ġexists Ġin Ġboth Ġmaps , Ġbut Ġit Ġhas Ġbeen Ġmodified . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( small Map Has The Old Rules ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelt as . add ( Rule Delta . Updated ( entry . value )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelt as . add ( Rule Delta . Updated ( rule )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠRem aining Ġentries Ġare Ġones Ġthat Ġare Ġunique Ġto Ġsmall Ġmap . ĊĠĠĠ Ġfor Ġ( rule Ġin Ġsmall Map . values ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( small Map Has The Old Rules ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelt as . add ( Rule Delta . Removed ( rule . target Node . build Target )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelt as . add ( Rule Delta . Updated ( rule )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġdelt as Ċ } Ċ Ċ private Ġfun Ġto Pair ( rule : ĠInternal Raw Build Rule ) Ġ: ĠPair < String , ĠInternal Raw Build Rule > Ġ{ ĊĠĠĠ Ġreturn ĠPair ( rule . target Node . build Target . name , Ġrule ) Ċ } Ċ