diff --git a/artifacts/exports/rt3-1.06/building-type-sources.json b/artifacts/exports/rt3-1.06/building-type-sources.json new file mode 100644 index 0000000..7fb1e2c --- /dev/null +++ b/artifacts/exports/rt3-1.06/building-type-sources.json @@ -0,0 +1,4336 @@ +{ + "path": "rt3_wineprefix/drive_c/rt3/Data/BuildingTypes", + "inspection": { + "directory_path": "rt3_wineprefix/drive_c/rt3/Data/BuildingTypes", + "bca_file_count": 77, + "bty_file_count": 200, + "unique_canonical_stem_count": 208, + "notes": [ + "BuildingTypes sources are grouped by a canonical stem that lowercases and strips spaces, underscores, and hyphens so paired .bca/.bty variants collapse onto one asset token.", + "This report is an offline asset-pool view only; it does not by itself assign live candidate ids or prove scenario candidate-table availability." + ], + "files": [ + { + "file_name": "Aluminum Mill.bty", + "raw_stem": "Aluminum Mill", + "canonical_stem": "aluminummill", + "source_kind": "bty" + }, + { + "file_name": "AluminumMill.bca", + "raw_stem": "AluminumMill", + "canonical_stem": "aluminummill", + "source_kind": "bca" + }, + { + "file_name": "Auto Plant.bty", + "raw_stem": "Auto Plant", + "canonical_stem": "autoplant", + "source_kind": "bty" + }, + { + "file_name": "AutoPlant.bca", + "raw_stem": "AutoPlant", + "canonical_stem": "autoplant", + "source_kind": "bca" + }, + { + "file_name": "Bakery.bca", + "raw_stem": "Bakery", + "canonical_stem": "bakery", + "source_kind": "bca" + }, + { + "file_name": "Bakery.bty", + "raw_stem": "Bakery", + "canonical_stem": "bakery", + "source_kind": "bty" + }, + { + "file_name": "Barracks.bca", + "raw_stem": "Barracks", + "canonical_stem": "barracks", + "source_kind": "bca" + }, + { + "file_name": "Barracks.bty", + "raw_stem": "Barracks", + "canonical_stem": "barracks", + "source_kind": "bty" + }, + { + "file_name": "Bauxite Mine.bca", + "raw_stem": "Bauxite Mine", + "canonical_stem": "bauxitemine", + "source_kind": "bca" + }, + { + "file_name": "Bauxite Mine.bty", + "raw_stem": "Bauxite Mine", + "canonical_stem": "bauxitemine", + "source_kind": "bty" + }, + { + "file_name": "Brewery.bca", + "raw_stem": "Brewery", + "canonical_stem": "brewery", + "source_kind": "bca" + }, + { + "file_name": "Brewery.bty", + "raw_stem": "Brewery", + "canonical_stem": "brewery", + "source_kind": "bty" + }, + { + "file_name": "Chemical Plant.bca", + "raw_stem": "Chemical Plant", + "canonical_stem": "chemicalplant", + "source_kind": "bca" + }, + { + "file_name": "Chemical Plant.bty", + "raw_stem": "Chemical Plant", + "canonical_stem": "chemicalplant", + "source_kind": "bty" + }, + { + "file_name": "Church.bca", + "raw_stem": "Church", + "canonical_stem": "church", + "source_kind": "bca" + }, + { + "file_name": "Church.bty", + "raw_stem": "Church", + "canonical_stem": "church", + "source_kind": "bty" + }, + { + "file_name": "Cinema.bca", + "raw_stem": "Cinema", + "canonical_stem": "cinema", + "source_kind": "bca" + }, + { + "file_name": "Cinema.bty", + "raw_stem": "Cinema", + "canonical_stem": "cinema", + "source_kind": "bty" + }, + { + "file_name": "Clpbrd House 01.bty", + "raw_stem": "Clpbrd House 01", + "canonical_stem": "clpbrdhouse01", + "source_kind": "bty" + }, + { + "file_name": "Clpbrd House 02.bty", + "raw_stem": "Clpbrd House 02", + "canonical_stem": "clpbrdhouse02", + "source_kind": "bty" + }, + { + "file_name": "Clpbrd House 03.bty", + "raw_stem": "Clpbrd House 03", + "canonical_stem": "clpbrdhouse03", + "source_kind": "bty" + }, + { + "file_name": "Clpbrd House 04.bty", + "raw_stem": "Clpbrd House 04", + "canonical_stem": "clpbrdhouse04", + "source_kind": "bty" + }, + { + "file_name": "Clpbrd House 05.bty", + "raw_stem": "Clpbrd House 05", + "canonical_stem": "clpbrdhouse05", + "source_kind": "bty" + }, + { + "file_name": "Clpbrd House 06.bty", + "raw_stem": "Clpbrd House 06", + "canonical_stem": "clpbrdhouse06", + "source_kind": "bty" + }, + { + "file_name": "Clpbrd House 07.bty", + "raw_stem": "Clpbrd House 07", + "canonical_stem": "clpbrdhouse07", + "source_kind": "bty" + }, + { + "file_name": "Clpbrd House 08.bty", + "raw_stem": "Clpbrd House 08", + "canonical_stem": "clpbrdhouse08", + "source_kind": "bty" + }, + { + "file_name": "Clpbrd House 09.bty", + "raw_stem": "Clpbrd House 09", + "canonical_stem": "clpbrdhouse09", + "source_kind": "bty" + }, + { + "file_name": "Clpbrd House 10.bty", + "raw_stem": "Clpbrd House 10", + "canonical_stem": "clpbrdhouse10", + "source_kind": "bty" + }, + { + "file_name": "Clpbrd House 101.bty", + "raw_stem": "Clpbrd House 101", + "canonical_stem": "clpbrdhouse101", + "source_kind": "bty" + }, + { + "file_name": "Clpbrd House 102.bty", + "raw_stem": "Clpbrd House 102", + "canonical_stem": "clpbrdhouse102", + "source_kind": "bty" + }, + { + "file_name": "Clpbrd House 103.bty", + "raw_stem": "Clpbrd House 103", + "canonical_stem": "clpbrdhouse103", + "source_kind": "bty" + }, + { + "file_name": "Clpbrd House 104.bty", + "raw_stem": "Clpbrd House 104", + "canonical_stem": "clpbrdhouse104", + "source_kind": "bty" + }, + { + "file_name": "Clpbrd House 11.bty", + "raw_stem": "Clpbrd House 11", + "canonical_stem": "clpbrdhouse11", + "source_kind": "bty" + }, + { + "file_name": "Clpbrd House 12.bty", + "raw_stem": "Clpbrd House 12", + "canonical_stem": "clpbrdhouse12", + "source_kind": "bty" + }, + { + "file_name": "ClpbrdStationLrg.bty", + "raw_stem": "ClpbrdStationLrg", + "canonical_stem": "clpbrdstationlrg", + "source_kind": "bty" + }, + { + "file_name": "ClpbrdStationMed.bty", + "raw_stem": "ClpbrdStationMed", + "canonical_stem": "clpbrdstationmed", + "source_kind": "bty" + }, + { + "file_name": "ClpbrdStationSml.bty", + "raw_stem": "ClpbrdStationSml", + "canonical_stem": "clpbrdstationsml", + "source_kind": "bty" + }, + { + "file_name": "Coal Mine.bca", + "raw_stem": "Coal Mine", + "canonical_stem": "coalmine", + "source_kind": "bca" + }, + { + "file_name": "Coal Mine.bty", + "raw_stem": "Coal Mine", + "canonical_stem": "coalmine", + "source_kind": "bty" + }, + { + "file_name": "Commercial.bca", + "raw_stem": "Commercial", + "canonical_stem": "commercial", + "source_kind": "bca" + }, + { + "file_name": "Commercial Large 01.bty", + "raw_stem": "Commercial Large 01", + "canonical_stem": "commerciallarge01", + "source_kind": "bty" + }, + { + "file_name": "Commercial Large 02.bty", + "raw_stem": "Commercial Large 02", + "canonical_stem": "commerciallarge02", + "source_kind": "bty" + }, + { + "file_name": "Commercial Medium 01.bty", + "raw_stem": "Commercial Medium 01", + "canonical_stem": "commercialmedium01", + "source_kind": "bty" + }, + { + "file_name": "Commercial Medium 02.bty", + "raw_stem": "Commercial Medium 02", + "canonical_stem": "commercialmedium02", + "source_kind": "bty" + }, + { + "file_name": "Commercial Small 01.bty", + "raw_stem": "Commercial Small 01", + "canonical_stem": "commercialsmall01", + "source_kind": "bty" + }, + { + "file_name": "Commercial Small 02.bty", + "raw_stem": "Commercial Small 02", + "canonical_stem": "commercialsmall02", + "source_kind": "bty" + }, + { + "file_name": "ConcretePlant.bca", + "raw_stem": "ConcretePlant", + "canonical_stem": "concreteplant", + "source_kind": "bca" + }, + { + "file_name": "ConcretePlant.bty", + "raw_stem": "ConcretePlant", + "canonical_stem": "concreteplant", + "source_kind": "bty" + }, + { + "file_name": "ConstructionFirm.bca", + "raw_stem": "ConstructionFirm", + "canonical_stem": "constructionfirm", + "source_kind": "bca" + }, + { + "file_name": "ConstructionFirm.bty", + "raw_stem": "ConstructionFirm", + "canonical_stem": "constructionfirm", + "source_kind": "bty" + }, + { + "file_name": "Customs House.bty", + "raw_stem": "Customs House", + "canonical_stem": "customshouse", + "source_kind": "bty" + }, + { + "file_name": "CustomsHouse.bca", + "raw_stem": "CustomsHouse", + "canonical_stem": "customshouse", + "source_kind": "bca" + }, + { + "file_name": "DairyProcessor.bca", + "raw_stem": "DairyProcessor", + "canonical_stem": "dairyprocessor", + "source_kind": "bca" + }, + { + "file_name": "DairyProcessor.bty", + "raw_stem": "DairyProcessor", + "canonical_stem": "dairyprocessor", + "source_kind": "bty" + }, + { + "file_name": "Department Store.bty", + "raw_stem": "Department Store", + "canonical_stem": "departmentstore", + "source_kind": "bty" + }, + { + "file_name": "DepartmentStore.bca", + "raw_stem": "DepartmentStore", + "canonical_stem": "departmentstore", + "source_kind": "bca" + }, + { + "file_name": "Distillery.bca", + "raw_stem": "Distillery", + "canonical_stem": "distillery", + "source_kind": "bca" + }, + { + "file_name": "Distillery.bty", + "raw_stem": "Distillery", + "canonical_stem": "distillery", + "source_kind": "bty" + }, + { + "file_name": "Dummy.bca", + "raw_stem": "Dummy", + "canonical_stem": "dummy", + "source_kind": "bca" + }, + { + "file_name": "Electric Plant.bca", + "raw_stem": "Electric Plant", + "canonical_stem": "electricplant", + "source_kind": "bca" + }, + { + "file_name": "Electric Plant.bty", + "raw_stem": "Electric Plant", + "canonical_stem": "electricplant", + "source_kind": "bty" + }, + { + "file_name": "ElectronicsPlant.bca", + "raw_stem": "ElectronicsPlant", + "canonical_stem": "electronicsplant", + "source_kind": "bca" + }, + { + "file_name": "ElectronicsPlant.bty", + "raw_stem": "ElectronicsPlant", + "canonical_stem": "electronicsplant", + "source_kind": "bty" + }, + { + "file_name": "Farm Cattle.bty", + "raw_stem": "Farm Cattle", + "canonical_stem": "farmcattle", + "source_kind": "bty" + }, + { + "file_name": "FarmCattle.bca", + "raw_stem": "FarmCattle", + "canonical_stem": "farmcattle", + "source_kind": "bca" + }, + { + "file_name": "Farm Coffee.bty", + "raw_stem": "Farm Coffee", + "canonical_stem": "farmcoffee", + "source_kind": "bty" + }, + { + "file_name": "FarmCoffee.bca", + "raw_stem": "FarmCoffee", + "canonical_stem": "farmcoffee", + "source_kind": "bca" + }, + { + "file_name": "Farm Corn.bca", + "raw_stem": "Farm Corn", + "canonical_stem": "farmcorn", + "source_kind": "bca" + }, + { + "file_name": "Farm Corn.bty", + "raw_stem": "Farm Corn", + "canonical_stem": "farmcorn", + "source_kind": "bty" + }, + { + "file_name": "Farm Cotton.bty", + "raw_stem": "Farm Cotton", + "canonical_stem": "farmcotton", + "source_kind": "bty" + }, + { + "file_name": "FarmCotton.bca", + "raw_stem": "FarmCotton", + "canonical_stem": "farmcotton", + "source_kind": "bca" + }, + { + "file_name": "Farm Dairy.bty", + "raw_stem": "Farm Dairy", + "canonical_stem": "farmdairy", + "source_kind": "bty" + }, + { + "file_name": "FarmDairy.bca", + "raw_stem": "FarmDairy", + "canonical_stem": "farmdairy", + "source_kind": "bca" + }, + { + "file_name": "FarmDye.bca", + "raw_stem": "FarmDye", + "canonical_stem": "farmdye", + "source_kind": "bca" + }, + { + "file_name": "FarmDye.bty", + "raw_stem": "FarmDye", + "canonical_stem": "farmdye", + "source_kind": "bty" + }, + { + "file_name": "Farm Grain.bty", + "raw_stem": "Farm Grain", + "canonical_stem": "farmgrain", + "source_kind": "bty" + }, + { + "file_name": "FarmGrain.bca", + "raw_stem": "FarmGrain", + "canonical_stem": "farmgrain", + "source_kind": "bca" + }, + { + "file_name": "Farm Orchard.bca", + "raw_stem": "Farm Orchard", + "canonical_stem": "farmorchard", + "source_kind": "bca" + }, + { + "file_name": "Farm Orchard.bty", + "raw_stem": "Farm Orchard", + "canonical_stem": "farmorchard", + "source_kind": "bty" + }, + { + "file_name": "Farm Rice.bty", + "raw_stem": "Farm Rice", + "canonical_stem": "farmrice", + "source_kind": "bty" + }, + { + "file_name": "FarmRice.bca", + "raw_stem": "FarmRice", + "canonical_stem": "farmrice", + "source_kind": "bca" + }, + { + "file_name": "Farm Rubber.bca", + "raw_stem": "Farm Rubber", + "canonical_stem": "farmrubber", + "source_kind": "bca" + }, + { + "file_name": "Farm Rubber.bty", + "raw_stem": "Farm Rubber", + "canonical_stem": "farmrubber", + "source_kind": "bty" + }, + { + "file_name": "Farm Sheep.bty", + "raw_stem": "Farm Sheep", + "canonical_stem": "farmsheep", + "source_kind": "bty" + }, + { + "file_name": "FarmSheep.bca", + "raw_stem": "FarmSheep", + "canonical_stem": "farmsheep", + "source_kind": "bca" + }, + { + "file_name": "Farm Sugar.bty", + "raw_stem": "Farm Sugar", + "canonical_stem": "farmsugar", + "source_kind": "bty" + }, + { + "file_name": "FarmSugar.bca", + "raw_stem": "FarmSugar", + "canonical_stem": "farmsugar", + "source_kind": "bca" + }, + { + "file_name": "Fertilizer Factory.bca", + "raw_stem": "Fertilizer Factory", + "canonical_stem": "fertilizerfactory", + "source_kind": "bca" + }, + { + "file_name": "Fertilizer Factory.bty", + "raw_stem": "Fertilizer Factory", + "canonical_stem": "fertilizerfactory", + "source_kind": "bty" + }, + { + "file_name": "Furnace.bca", + "raw_stem": "Furnace", + "canonical_stem": "furnace", + "source_kind": "bca" + }, + { + "file_name": "Furnace.bty", + "raw_stem": "Furnace", + "canonical_stem": "furnace", + "source_kind": "bty" + }, + { + "file_name": "Furniture Factory.bca", + "raw_stem": "Furniture Factory", + "canonical_stem": "furniturefactory", + "source_kind": "bca" + }, + { + "file_name": "FurnitureFactory.bty", + "raw_stem": "FurnitureFactory", + "canonical_stem": "furniturefactory", + "source_kind": "bty" + }, + { + "file_name": "Hospital.bca", + "raw_stem": "Hospital", + "canonical_stem": "hospital", + "source_kind": "bca" + }, + { + "file_name": "Hospital.bty", + "raw_stem": "Hospital", + "canonical_stem": "hospital", + "source_kind": "bty" + }, + { + "file_name": "Hotel.bca", + "raw_stem": "Hotel", + "canonical_stem": "hotel", + "source_kind": "bca" + }, + { + "file_name": "Hotel.bty", + "raw_stem": "Hotel", + "canonical_stem": "hotel", + "source_kind": "bty" + }, + { + "file_name": "House.bca", + "raw_stem": "House", + "canonical_stem": "house", + "source_kind": "bca" + }, + { + "file_name": "Iron Mine.bca", + "raw_stem": "Iron Mine", + "canonical_stem": "ironmine", + "source_kind": "bca" + }, + { + "file_name": "IronMine.bty", + "raw_stem": "IronMine", + "canonical_stem": "ironmine", + "source_kind": "bty" + }, + { + "file_name": "KyotoHouse01.bty", + "raw_stem": "KyotoHouse01", + "canonical_stem": "kyotohouse01", + "source_kind": "bty" + }, + { + "file_name": "KyotoHouse02.bty", + "raw_stem": "KyotoHouse02", + "canonical_stem": "kyotohouse02", + "source_kind": "bty" + }, + { + "file_name": "KyotoHouse03.bty", + "raw_stem": "KyotoHouse03", + "canonical_stem": "kyotohouse03", + "source_kind": "bty" + }, + { + "file_name": "KyotoHouse04.bty", + "raw_stem": "KyotoHouse04", + "canonical_stem": "kyotohouse04", + "source_kind": "bty" + }, + { + "file_name": "KyotoHouse05.bty", + "raw_stem": "KyotoHouse05", + "canonical_stem": "kyotohouse05", + "source_kind": "bty" + }, + { + "file_name": "KyotoHouse06.bty", + "raw_stem": "KyotoHouse06", + "canonical_stem": "kyotohouse06", + "source_kind": "bty" + }, + { + "file_name": "KyotoHouse07.bty", + "raw_stem": "KyotoHouse07", + "canonical_stem": "kyotohouse07", + "source_kind": "bty" + }, + { + "file_name": "KyotoHouse08.bty", + "raw_stem": "KyotoHouse08", + "canonical_stem": "kyotohouse08", + "source_kind": "bty" + }, + { + "file_name": "KyotoHouse09.bty", + "raw_stem": "KyotoHouse09", + "canonical_stem": "kyotohouse09", + "source_kind": "bty" + }, + { + "file_name": "KyotoHouse10.bty", + "raw_stem": "KyotoHouse10", + "canonical_stem": "kyotohouse10", + "source_kind": "bty" + }, + { + "file_name": "KyotoHouse101.bty", + "raw_stem": "KyotoHouse101", + "canonical_stem": "kyotohouse101", + "source_kind": "bty" + }, + { + "file_name": "KyotoHouse102.bty", + "raw_stem": "KyotoHouse102", + "canonical_stem": "kyotohouse102", + "source_kind": "bty" + }, + { + "file_name": "KyotoHouse103.bty", + "raw_stem": "KyotoHouse103", + "canonical_stem": "kyotohouse103", + "source_kind": "bty" + }, + { + "file_name": "KyotoHouse104.bty", + "raw_stem": "KyotoHouse104", + "canonical_stem": "kyotohouse104", + "source_kind": "bty" + }, + { + "file_name": "KyotoHouse11.bty", + "raw_stem": "KyotoHouse11", + "canonical_stem": "kyotohouse11", + "source_kind": "bty" + }, + { + "file_name": "KyotoHouse12.bty", + "raw_stem": "KyotoHouse12", + "canonical_stem": "kyotohouse12", + "source_kind": "bty" + }, + { + "file_name": "KyotoStationLrg.bty", + "raw_stem": "KyotoStationLrg", + "canonical_stem": "kyotostationlrg", + "source_kind": "bty" + }, + { + "file_name": "KyotoStationMed.bty", + "raw_stem": "KyotoStationMed", + "canonical_stem": "kyotostationmed", + "source_kind": "bty" + }, + { + "file_name": "KyotoStationSml.bty", + "raw_stem": "KyotoStationSml", + "canonical_stem": "kyotostationsml", + "source_kind": "bty" + }, + { + "file_name": "Large Station.bca", + "raw_stem": "Large Station", + "canonical_stem": "largestation", + "source_kind": "bca" + }, + { + "file_name": "Logging Camp.bca", + "raw_stem": "Logging Camp", + "canonical_stem": "loggingcamp", + "source_kind": "bca" + }, + { + "file_name": "LoggingCamp.bty", + "raw_stem": "LoggingCamp", + "canonical_stem": "loggingcamp", + "source_kind": "bty" + }, + { + "file_name": "Lumber Mill.bca", + "raw_stem": "Lumber Mill", + "canonical_stem": "lumbermill", + "source_kind": "bca" + }, + { + "file_name": "Lumbermill.bty", + "raw_stem": "Lumbermill", + "canonical_stem": "lumbermill", + "source_kind": "bty" + }, + { + "file_name": "MachineShop.bca", + "raw_stem": "MachineShop", + "canonical_stem": "machineshop", + "source_kind": "bca" + }, + { + "file_name": "MachineShop.bty", + "raw_stem": "MachineShop", + "canonical_stem": "machineshop", + "source_kind": "bty" + }, + { + "file_name": "Maintenance.bty", + "raw_stem": "Maintenance", + "canonical_stem": "maintenance", + "source_kind": "bty" + }, + { + "file_name": "Maintenance Facility.bca", + "raw_stem": "Maintenance Facility", + "canonical_stem": "maintenancefacility", + "source_kind": "bca" + }, + { + "file_name": "Meat Packing Plant.bca", + "raw_stem": "Meat Packing Plant", + "canonical_stem": "meatpackingplant", + "source_kind": "bca" + }, + { + "file_name": "MeatPackingPlant.bty", + "raw_stem": "MeatPackingPlant", + "canonical_stem": "meatpackingplant", + "source_kind": "bty" + }, + { + "file_name": "Medium Station.bca", + "raw_stem": "Medium Station", + "canonical_stem": "mediumstation", + "source_kind": "bca" + }, + { + "file_name": "Military Depot.bca", + "raw_stem": "Military Depot", + "canonical_stem": "militarydepot", + "source_kind": "bca" + }, + { + "file_name": "MilitaryDepot.bty", + "raw_stem": "MilitaryDepot", + "canonical_stem": "militarydepot", + "source_kind": "bty" + }, + { + "file_name": "Munitions Factory.bca", + "raw_stem": "Munitions Factory", + "canonical_stem": "munitionsfactory", + "source_kind": "bca" + }, + { + "file_name": "Munitions Factory.bty", + "raw_stem": "Munitions Factory", + "canonical_stem": "munitionsfactory", + "source_kind": "bty" + }, + { + "file_name": "Museum.bca", + "raw_stem": "Museum", + "canonical_stem": "museum", + "source_kind": "bca" + }, + { + "file_name": "Museum.bty", + "raw_stem": "Museum", + "canonical_stem": "museum", + "source_kind": "bty" + }, + { + "file_name": "Nuclear Power Plant.bca", + "raw_stem": "Nuclear Power Plant", + "canonical_stem": "nuclearpowerplant", + "source_kind": "bca" + }, + { + "file_name": "Nuclear Power Plant.bty", + "raw_stem": "Nuclear Power Plant", + "canonical_stem": "nuclearpowerplant", + "source_kind": "bty" + }, + { + "file_name": "Oil Refinery.bca", + "raw_stem": "Oil Refinery", + "canonical_stem": "oilrefinery", + "source_kind": "bca" + }, + { + "file_name": "OilRefinery.bty", + "raw_stem": "OilRefinery", + "canonical_stem": "oilrefinery", + "source_kind": "bty" + }, + { + "file_name": "Oil Well.bca", + "raw_stem": "Oil Well", + "canonical_stem": "oilwell", + "source_kind": "bca" + }, + { + "file_name": "Oil Well.bty", + "raw_stem": "Oil Well", + "canonical_stem": "oilwell", + "source_kind": "bty" + }, + { + "file_name": "OreMine.bca", + "raw_stem": "OreMine", + "canonical_stem": "oremine", + "source_kind": "bca" + }, + { + "file_name": "OreMine.bty", + "raw_stem": "OreMine", + "canonical_stem": "oremine", + "source_kind": "bty" + }, + { + "file_name": "PaperMill.bca", + "raw_stem": "PaperMill", + "canonical_stem": "papermill", + "source_kind": "bca" + }, + { + "file_name": "PaperMill.bty", + "raw_stem": "PaperMill", + "canonical_stem": "papermill", + "source_kind": "bty" + }, + { + "file_name": "PersianHouse01.bty", + "raw_stem": "PersianHouse01", + "canonical_stem": "persianhouse01", + "source_kind": "bty" + }, + { + "file_name": "PersianHouse02.bty", + "raw_stem": "PersianHouse02", + "canonical_stem": "persianhouse02", + "source_kind": "bty" + }, + { + "file_name": "PersianHouse03.bty", + "raw_stem": "PersianHouse03", + "canonical_stem": "persianhouse03", + "source_kind": "bty" + }, + { + "file_name": "PersianHouse04.bty", + "raw_stem": "PersianHouse04", + "canonical_stem": "persianhouse04", + "source_kind": "bty" + }, + { + "file_name": "PersianHouse05.bty", + "raw_stem": "PersianHouse05", + "canonical_stem": "persianhouse05", + "source_kind": "bty" + }, + { + "file_name": "PersianHouse06.bty", + "raw_stem": "PersianHouse06", + "canonical_stem": "persianhouse06", + "source_kind": "bty" + }, + { + "file_name": "PersianHouse07.bty", + "raw_stem": "PersianHouse07", + "canonical_stem": "persianhouse07", + "source_kind": "bty" + }, + { + "file_name": "PersianHouse08.bty", + "raw_stem": "PersianHouse08", + "canonical_stem": "persianhouse08", + "source_kind": "bty" + }, + { + "file_name": "PersianHouse09.bty", + "raw_stem": "PersianHouse09", + "canonical_stem": "persianhouse09", + "source_kind": "bty" + }, + { + "file_name": "PersianHouse10.bty", + "raw_stem": "PersianHouse10", + "canonical_stem": "persianhouse10", + "source_kind": "bty" + }, + { + "file_name": "PersianHouse101.bty", + "raw_stem": "PersianHouse101", + "canonical_stem": "persianhouse101", + "source_kind": "bty" + }, + { + "file_name": "PersianHouse102.bty", + "raw_stem": "PersianHouse102", + "canonical_stem": "persianhouse102", + "source_kind": "bty" + }, + { + "file_name": "PersianHouse103.bty", + "raw_stem": "PersianHouse103", + "canonical_stem": "persianhouse103", + "source_kind": "bty" + }, + { + "file_name": "PersianHouse104.bty", + "raw_stem": "PersianHouse104", + "canonical_stem": "persianhouse104", + "source_kind": "bty" + }, + { + "file_name": "PersianHouse11.bty", + "raw_stem": "PersianHouse11", + "canonical_stem": "persianhouse11", + "source_kind": "bty" + }, + { + "file_name": "PersianHouse12.bty", + "raw_stem": "PersianHouse12", + "canonical_stem": "persianhouse12", + "source_kind": "bty" + }, + { + "file_name": "PersianStationLrg.bty", + "raw_stem": "PersianStationLrg", + "canonical_stem": "persianstationlrg", + "source_kind": "bty" + }, + { + "file_name": "PersianStationMed.bty", + "raw_stem": "PersianStationMed", + "canonical_stem": "persianstationmed", + "source_kind": "bty" + }, + { + "file_name": "PersianStationSml.bty", + "raw_stem": "PersianStationSml", + "canonical_stem": "persianstationsml", + "source_kind": "bty" + }, + { + "file_name": "PharmaceuticalPlant.bca", + "raw_stem": "PharmaceuticalPlant", + "canonical_stem": "pharmaceuticalplant", + "source_kind": "bca" + }, + { + "file_name": "PharmaceuticalPlant.bty", + "raw_stem": "PharmaceuticalPlant", + "canonical_stem": "pharmaceuticalplant", + "source_kind": "bty" + }, + { + "file_name": "Plastics Factory.bca", + "raw_stem": "Plastics Factory", + "canonical_stem": "plasticsfactory", + "source_kind": "bca" + }, + { + "file_name": "Plastics Factory.bty", + "raw_stem": "Plastics Factory", + "canonical_stem": "plasticsfactory", + "source_kind": "bty" + }, + { + "file_name": "Port.bca", + "raw_stem": "Port", + "canonical_stem": "port", + "source_kind": "bca" + }, + { + "file_name": "Port.bty", + "raw_stem": "Port", + "canonical_stem": "port", + "source_kind": "bty" + }, + { + "file_name": "Post Office.bty", + "raw_stem": "Post Office", + "canonical_stem": "postoffice", + "source_kind": "bty" + }, + { + "file_name": "PostOffice.bca", + "raw_stem": "PostOffice", + "canonical_stem": "postoffice", + "source_kind": "bca" + }, + { + "file_name": "Quarry.bca", + "raw_stem": "Quarry", + "canonical_stem": "quarry", + "source_kind": "bca" + }, + { + "file_name": "Quarry.bty", + "raw_stem": "Quarry", + "canonical_stem": "quarry", + "source_kind": "bty" + }, + { + "file_name": "RadioStation.bca", + "raw_stem": "RadioStation", + "canonical_stem": "radiostation", + "source_kind": "bca" + }, + { + "file_name": "RadioStation.bty", + "raw_stem": "RadioStation", + "canonical_stem": "radiostation", + "source_kind": "bty" + }, + { + "file_name": "Recycling Plant.bca", + "raw_stem": "Recycling Plant", + "canonical_stem": "recyclingplant", + "source_kind": "bca" + }, + { + "file_name": "Recycling Plant.bty", + "raw_stem": "Recycling Plant", + "canonical_stem": "recyclingplant", + "source_kind": "bty" + }, + { + "file_name": "Restaurant.bca", + "raw_stem": "Restaurant", + "canonical_stem": "restaurant", + "source_kind": "bca" + }, + { + "file_name": "Restaurant.bty", + "raw_stem": "Restaurant", + "canonical_stem": "restaurant", + "source_kind": "bty" + }, + { + "file_name": "Retail.bca", + "raw_stem": "Retail", + "canonical_stem": "retail", + "source_kind": "bca" + }, + { + "file_name": "Retail Lrg.bty", + "raw_stem": "Retail Lrg", + "canonical_stem": "retaillrg", + "source_kind": "bty" + }, + { + "file_name": "Retail Sml.bty", + "raw_stem": "Retail Sml", + "canonical_stem": "retailsml", + "source_kind": "bty" + }, + { + "file_name": "Saloon.bca", + "raw_stem": "Saloon", + "canonical_stem": "saloon", + "source_kind": "bca" + }, + { + "file_name": "Saloon.bty", + "raw_stem": "Saloon", + "canonical_stem": "saloon", + "source_kind": "bty" + }, + { + "file_name": "SchoolHouse.bca", + "raw_stem": "SchoolHouse", + "canonical_stem": "schoolhouse", + "source_kind": "bca" + }, + { + "file_name": "SchoolHouse.bty", + "raw_stem": "SchoolHouse", + "canonical_stem": "schoolhouse", + "source_kind": "bty" + }, + { + "file_name": "Service Tower.bca", + "raw_stem": "Service Tower", + "canonical_stem": "servicetower", + "source_kind": "bca" + }, + { + "file_name": "ServiceTower.bty", + "raw_stem": "ServiceTower", + "canonical_stem": "servicetower", + "source_kind": "bty" + }, + { + "file_name": "Small Station.bca", + "raw_stem": "Small Station", + "canonical_stem": "smallstation", + "source_kind": "bca" + }, + { + "file_name": "SoWestHouse01.bty", + "raw_stem": "SoWestHouse01", + "canonical_stem": "sowesthouse01", + "source_kind": "bty" + }, + { + "file_name": "SoWestHouse02.bty", + "raw_stem": "SoWestHouse02", + "canonical_stem": "sowesthouse02", + "source_kind": "bty" + }, + { + "file_name": "SoWestHouse03.bty", + "raw_stem": "SoWestHouse03", + "canonical_stem": "sowesthouse03", + "source_kind": "bty" + }, + { + "file_name": "SoWestHouse04.bty", + "raw_stem": "SoWestHouse04", + "canonical_stem": "sowesthouse04", + "source_kind": "bty" + }, + { + "file_name": "SoWestHouse05.bty", + "raw_stem": "SoWestHouse05", + "canonical_stem": "sowesthouse05", + "source_kind": "bty" + }, + { + "file_name": "SoWestHouse06.bty", + "raw_stem": "SoWestHouse06", + "canonical_stem": "sowesthouse06", + "source_kind": "bty" + }, + { + "file_name": "SoWestHouse07.bty", + "raw_stem": "SoWestHouse07", + "canonical_stem": "sowesthouse07", + "source_kind": "bty" + }, + { + "file_name": "SoWestHouse08.bty", + "raw_stem": "SoWestHouse08", + "canonical_stem": "sowesthouse08", + "source_kind": "bty" + }, + { + "file_name": "SoWestHouse09.bty", + "raw_stem": "SoWestHouse09", + "canonical_stem": "sowesthouse09", + "source_kind": "bty" + }, + { + "file_name": "SoWestHouse10.bty", + "raw_stem": "SoWestHouse10", + "canonical_stem": "sowesthouse10", + "source_kind": "bty" + }, + { + "file_name": "SoWestHouse101.bty", + "raw_stem": "SoWestHouse101", + "canonical_stem": "sowesthouse101", + "source_kind": "bty" + }, + { + "file_name": "SoWestHouse102.bty", + "raw_stem": "SoWestHouse102", + "canonical_stem": "sowesthouse102", + "source_kind": "bty" + }, + { + "file_name": "SoWestHouse103.bty", + "raw_stem": "SoWestHouse103", + "canonical_stem": "sowesthouse103", + "source_kind": "bty" + }, + { + "file_name": "SoWestHouse104.bty", + "raw_stem": "SoWestHouse104", + "canonical_stem": "sowesthouse104", + "source_kind": "bty" + }, + { + "file_name": "SoWestHouse11.bty", + "raw_stem": "SoWestHouse11", + "canonical_stem": "sowesthouse11", + "source_kind": "bty" + }, + { + "file_name": "SoWestHouse12.bty", + "raw_stem": "SoWestHouse12", + "canonical_stem": "sowesthouse12", + "source_kind": "bty" + }, + { + "file_name": "SoWestStationLrg.bty", + "raw_stem": "SoWestStationLrg", + "canonical_stem": "soweststationlrg", + "source_kind": "bty" + }, + { + "file_name": "SoWestStationMed.bty", + "raw_stem": "SoWestStationMed", + "canonical_stem": "soweststationmed", + "source_kind": "bty" + }, + { + "file_name": "SoWestStationSml.bty", + "raw_stem": "SoWestStationSml", + "canonical_stem": "soweststationsml", + "source_kind": "bty" + }, + { + "file_name": "Stadium.bca", + "raw_stem": "Stadium", + "canonical_stem": "stadium", + "source_kind": "bca" + }, + { + "file_name": "Stadium.bty", + "raw_stem": "Stadium", + "canonical_stem": "stadium", + "source_kind": "bty" + }, + { + "file_name": "Steel Mill.bca", + "raw_stem": "Steel Mill", + "canonical_stem": "steelmill", + "source_kind": "bca" + }, + { + "file_name": "Steel Mill.bty", + "raw_stem": "Steel Mill", + "canonical_stem": "steelmill", + "source_kind": "bty" + }, + { + "file_name": "Textile Mill.bca", + "raw_stem": "Textile Mill", + "canonical_stem": "textilemill", + "source_kind": "bca" + }, + { + "file_name": "Textile Mill.bty", + "raw_stem": "Textile Mill", + "canonical_stem": "textilemill", + "source_kind": "bty" + }, + { + "file_name": "Tire Factory.bca", + "raw_stem": "Tire Factory", + "canonical_stem": "tirefactory", + "source_kind": "bca" + }, + { + "file_name": "Tire Factory.bty", + "raw_stem": "Tire Factory", + "canonical_stem": "tirefactory", + "source_kind": "bty" + }, + { + "file_name": "Tool And Die.bca", + "raw_stem": "Tool And Die", + "canonical_stem": "toolanddie", + "source_kind": "bca" + }, + { + "file_name": "Tool and Die.bty", + "raw_stem": "Tool and Die", + "canonical_stem": "toolanddie", + "source_kind": "bty" + }, + { + "file_name": "Toy Factory.bca", + "raw_stem": "Toy Factory", + "canonical_stem": "toyfactory", + "source_kind": "bca" + }, + { + "file_name": "Toy Factory.bty", + "raw_stem": "Toy Factory", + "canonical_stem": "toyfactory", + "source_kind": "bty" + }, + { + "file_name": "TudorHouse01.bty", + "raw_stem": "TudorHouse01", + "canonical_stem": "tudorhouse01", + "source_kind": "bty" + }, + { + "file_name": "TudorHouse02.bty", + "raw_stem": "TudorHouse02", + "canonical_stem": "tudorhouse02", + "source_kind": "bty" + }, + { + "file_name": "TudorHouse03.bty", + "raw_stem": "TudorHouse03", + "canonical_stem": "tudorhouse03", + "source_kind": "bty" + }, + { + "file_name": "TudorHouse04.bty", + "raw_stem": "TudorHouse04", + "canonical_stem": "tudorhouse04", + "source_kind": "bty" + }, + { + "file_name": "TudorHouse05.bty", + "raw_stem": "TudorHouse05", + "canonical_stem": "tudorhouse05", + "source_kind": "bty" + }, + { + "file_name": "TudorHouse06.bty", + "raw_stem": "TudorHouse06", + "canonical_stem": "tudorhouse06", + "source_kind": "bty" + }, + { + "file_name": "TudorHouse07.bty", + "raw_stem": "TudorHouse07", + "canonical_stem": "tudorhouse07", + "source_kind": "bty" + }, + { + "file_name": "TudorHouse08.bty", + "raw_stem": "TudorHouse08", + "canonical_stem": "tudorhouse08", + "source_kind": "bty" + }, + { + "file_name": "TudorHouse09.bty", + "raw_stem": "TudorHouse09", + "canonical_stem": "tudorhouse09", + "source_kind": "bty" + }, + { + "file_name": "TudorHouse10.bty", + "raw_stem": "TudorHouse10", + "canonical_stem": "tudorhouse10", + "source_kind": "bty" + }, + { + "file_name": "TudorHouse101.bty", + "raw_stem": "TudorHouse101", + "canonical_stem": "tudorhouse101", + "source_kind": "bty" + }, + { + "file_name": "TudorHouse102.bty", + "raw_stem": "TudorHouse102", + "canonical_stem": "tudorhouse102", + "source_kind": "bty" + }, + { + "file_name": "TudorHouse103.bty", + "raw_stem": "TudorHouse103", + "canonical_stem": "tudorhouse103", + "source_kind": "bty" + }, + { + "file_name": "TudorHouse104.bty", + "raw_stem": "TudorHouse104", + "canonical_stem": "tudorhouse104", + "source_kind": "bty" + }, + { + "file_name": "TudorHouse11.bty", + "raw_stem": "TudorHouse11", + "canonical_stem": "tudorhouse11", + "source_kind": "bty" + }, + { + "file_name": "TudorHouse12.bty", + "raw_stem": "TudorHouse12", + "canonical_stem": "tudorhouse12", + "source_kind": "bty" + }, + { + "file_name": "TudorStationLrg.bty", + "raw_stem": "TudorStationLrg", + "canonical_stem": "tudorstationlrg", + "source_kind": "bty" + }, + { + "file_name": "TudorStationMed.bty", + "raw_stem": "TudorStationMed", + "canonical_stem": "tudorstationmed", + "source_kind": "bty" + }, + { + "file_name": "TudorStationSml.bty", + "raw_stem": "TudorStationSml", + "canonical_stem": "tudorstationsml", + "source_kind": "bty" + }, + { + "file_name": "Uranium Mine.bca", + "raw_stem": "Uranium Mine", + "canonical_stem": "uraniummine", + "source_kind": "bca" + }, + { + "file_name": "UraniumMine.bty", + "raw_stem": "UraniumMine", + "canonical_stem": "uraniummine", + "source_kind": "bty" + }, + { + "file_name": "Victorian House 01.bty", + "raw_stem": "Victorian House 01", + "canonical_stem": "victorianhouse01", + "source_kind": "bty" + }, + { + "file_name": "Victorian House 02.bty", + "raw_stem": "Victorian House 02", + "canonical_stem": "victorianhouse02", + "source_kind": "bty" + }, + { + "file_name": "Victorian House 03.bty", + "raw_stem": "Victorian House 03", + "canonical_stem": "victorianhouse03", + "source_kind": "bty" + }, + { + "file_name": "Victorian House 04.bty", + "raw_stem": "Victorian House 04", + "canonical_stem": "victorianhouse04", + "source_kind": "bty" + }, + { + "file_name": "Victorian House 05.bty", + "raw_stem": "Victorian House 05", + "canonical_stem": "victorianhouse05", + "source_kind": "bty" + }, + { + "file_name": "Victorian House 06.bty", + "raw_stem": "Victorian House 06", + "canonical_stem": "victorianhouse06", + "source_kind": "bty" + }, + { + "file_name": "Victorian House 07.bty", + "raw_stem": "Victorian House 07", + "canonical_stem": "victorianhouse07", + "source_kind": "bty" + }, + { + "file_name": "Victorian House 08.bty", + "raw_stem": "Victorian House 08", + "canonical_stem": "victorianhouse08", + "source_kind": "bty" + }, + { + "file_name": "Victorian House 09.bty", + "raw_stem": "Victorian House 09", + "canonical_stem": "victorianhouse09", + "source_kind": "bty" + }, + { + "file_name": "Victorian House 10.bty", + "raw_stem": "Victorian House 10", + "canonical_stem": "victorianhouse10", + "source_kind": "bty" + }, + { + "file_name": "Victorian House 101.bty", + "raw_stem": "Victorian House 101", + "canonical_stem": "victorianhouse101", + "source_kind": "bty" + }, + { + "file_name": "Victorian House 102.bty", + "raw_stem": "Victorian House 102", + "canonical_stem": "victorianhouse102", + "source_kind": "bty" + }, + { + "file_name": "Victorian House 103.bty", + "raw_stem": "Victorian House 103", + "canonical_stem": "victorianhouse103", + "source_kind": "bty" + }, + { + "file_name": "Victorian House 104.bty", + "raw_stem": "Victorian House 104", + "canonical_stem": "victorianhouse104", + "source_kind": "bty" + }, + { + "file_name": "Victorian House 11.bty", + "raw_stem": "Victorian House 11", + "canonical_stem": "victorianhouse11", + "source_kind": "bty" + }, + { + "file_name": "Victorian House 12.bty", + "raw_stem": "Victorian House 12", + "canonical_stem": "victorianhouse12", + "source_kind": "bty" + }, + { + "file_name": "VictorianStationLrg.bty", + "raw_stem": "VictorianStationLrg", + "canonical_stem": "victorianstationlrg", + "source_kind": "bty" + }, + { + "file_name": "VictorianStationMed.bty", + "raw_stem": "VictorianStationMed", + "canonical_stem": "victorianstationmed", + "source_kind": "bty" + }, + { + "file_name": "VictorianStationSml.bty", + "raw_stem": "VictorianStationSml", + "canonical_stem": "victorianstationsml", + "source_kind": "bty" + }, + { + "file_name": "Warehouse.bca", + "raw_stem": "Warehouse", + "canonical_stem": "warehouse", + "source_kind": "bca" + }, + { + "file_name": "Warehouse.bty", + "raw_stem": "Warehouse", + "canonical_stem": "warehouse", + "source_kind": "bty" + }, + { + "file_name": "Weapons Factory.bca", + "raw_stem": "Weapons Factory", + "canonical_stem": "weaponsfactory", + "source_kind": "bca" + }, + { + "file_name": "Weapons Factory.bty", + "raw_stem": "Weapons Factory", + "canonical_stem": "weaponsfactory", + "source_kind": "bty" + }, + { + "file_name": "Windmill.bca", + "raw_stem": "Windmill", + "canonical_stem": "windmill", + "source_kind": "bca" + }, + { + "file_name": "Windmill.bty", + "raw_stem": "Windmill", + "canonical_stem": "windmill", + "source_kind": "bty" + }, + { + "file_name": "z200FtRuler.bty", + "raw_stem": "z200FtRuler", + "canonical_stem": "z200ftruler", + "source_kind": "bty" + }, + { + "file_name": "z200FtRulerCross.bty", + "raw_stem": "z200FtRulerCross", + "canonical_stem": "z200ftrulercross", + "source_kind": "bty" + }, + { + "file_name": "zSmoke1.bty", + "raw_stem": "zSmoke1", + "canonical_stem": "zsmoke1", + "source_kind": "bty" + }, + { + "file_name": "zSmoke2.bty", + "raw_stem": "zSmoke2", + "canonical_stem": "zsmoke2", + "source_kind": "bty" + }, + { + "file_name": "zSmoke3.bty", + "raw_stem": "zSmoke3", + "canonical_stem": "zsmoke3", + "source_kind": "bty" + }, + { + "file_name": "zSmoke4.bty", + "raw_stem": "zSmoke4", + "canonical_stem": "zsmoke4", + "source_kind": "bty" + }, + { + "file_name": "zSmoke5.bty", + "raw_stem": "zSmoke5", + "canonical_stem": "zsmoke5", + "source_kind": "bty" + }, + { + "file_name": "zSmoke6.bty", + "raw_stem": "zSmoke6", + "canonical_stem": "zsmoke6", + "source_kind": "bty" + } + ], + "entries": [ + { + "canonical_stem": "aluminummill", + "raw_stems": [ + "Aluminum Mill", + "AluminumMill" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Aluminum Mill.bty", + "AluminumMill.bca" + ] + }, + { + "canonical_stem": "autoplant", + "raw_stems": [ + "Auto Plant", + "AutoPlant" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Auto Plant.bty", + "AutoPlant.bca" + ] + }, + { + "canonical_stem": "bakery", + "raw_stems": [ + "Bakery" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Bakery.bca", + "Bakery.bty" + ] + }, + { + "canonical_stem": "barracks", + "raw_stems": [ + "Barracks" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Barracks.bca", + "Barracks.bty" + ] + }, + { + "canonical_stem": "bauxitemine", + "raw_stems": [ + "Bauxite Mine" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Bauxite Mine.bca", + "Bauxite Mine.bty" + ] + }, + { + "canonical_stem": "brewery", + "raw_stems": [ + "Brewery" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Brewery.bca", + "Brewery.bty" + ] + }, + { + "canonical_stem": "chemicalplant", + "raw_stems": [ + "Chemical Plant" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Chemical Plant.bca", + "Chemical Plant.bty" + ] + }, + { + "canonical_stem": "church", + "raw_stems": [ + "Church" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Church.bca", + "Church.bty" + ] + }, + { + "canonical_stem": "cinema", + "raw_stems": [ + "Cinema" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Cinema.bca", + "Cinema.bty" + ] + }, + { + "canonical_stem": "clpbrdhouse01", + "raw_stems": [ + "Clpbrd House 01" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Clpbrd House 01.bty" + ] + }, + { + "canonical_stem": "clpbrdhouse02", + "raw_stems": [ + "Clpbrd House 02" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Clpbrd House 02.bty" + ] + }, + { + "canonical_stem": "clpbrdhouse03", + "raw_stems": [ + "Clpbrd House 03" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Clpbrd House 03.bty" + ] + }, + { + "canonical_stem": "clpbrdhouse04", + "raw_stems": [ + "Clpbrd House 04" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Clpbrd House 04.bty" + ] + }, + { + "canonical_stem": "clpbrdhouse05", + "raw_stems": [ + "Clpbrd House 05" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Clpbrd House 05.bty" + ] + }, + { + "canonical_stem": "clpbrdhouse06", + "raw_stems": [ + "Clpbrd House 06" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Clpbrd House 06.bty" + ] + }, + { + "canonical_stem": "clpbrdhouse07", + "raw_stems": [ + "Clpbrd House 07" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Clpbrd House 07.bty" + ] + }, + { + "canonical_stem": "clpbrdhouse08", + "raw_stems": [ + "Clpbrd House 08" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Clpbrd House 08.bty" + ] + }, + { + "canonical_stem": "clpbrdhouse09", + "raw_stems": [ + "Clpbrd House 09" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Clpbrd House 09.bty" + ] + }, + { + "canonical_stem": "clpbrdhouse10", + "raw_stems": [ + "Clpbrd House 10" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Clpbrd House 10.bty" + ] + }, + { + "canonical_stem": "clpbrdhouse101", + "raw_stems": [ + "Clpbrd House 101" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Clpbrd House 101.bty" + ] + }, + { + "canonical_stem": "clpbrdhouse102", + "raw_stems": [ + "Clpbrd House 102" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Clpbrd House 102.bty" + ] + }, + { + "canonical_stem": "clpbrdhouse103", + "raw_stems": [ + "Clpbrd House 103" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Clpbrd House 103.bty" + ] + }, + { + "canonical_stem": "clpbrdhouse104", + "raw_stems": [ + "Clpbrd House 104" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Clpbrd House 104.bty" + ] + }, + { + "canonical_stem": "clpbrdhouse11", + "raw_stems": [ + "Clpbrd House 11" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Clpbrd House 11.bty" + ] + }, + { + "canonical_stem": "clpbrdhouse12", + "raw_stems": [ + "Clpbrd House 12" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Clpbrd House 12.bty" + ] + }, + { + "canonical_stem": "clpbrdstationlrg", + "raw_stems": [ + "ClpbrdStationLrg" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "ClpbrdStationLrg.bty" + ] + }, + { + "canonical_stem": "clpbrdstationmed", + "raw_stems": [ + "ClpbrdStationMed" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "ClpbrdStationMed.bty" + ] + }, + { + "canonical_stem": "clpbrdstationsml", + "raw_stems": [ + "ClpbrdStationSml" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "ClpbrdStationSml.bty" + ] + }, + { + "canonical_stem": "coalmine", + "raw_stems": [ + "Coal Mine" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Coal Mine.bca", + "Coal Mine.bty" + ] + }, + { + "canonical_stem": "commercial", + "raw_stems": [ + "Commercial" + ], + "source_kinds": [ + "bca" + ], + "file_names": [ + "Commercial.bca" + ] + }, + { + "canonical_stem": "commerciallarge01", + "raw_stems": [ + "Commercial Large 01" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Commercial Large 01.bty" + ] + }, + { + "canonical_stem": "commerciallarge02", + "raw_stems": [ + "Commercial Large 02" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Commercial Large 02.bty" + ] + }, + { + "canonical_stem": "commercialmedium01", + "raw_stems": [ + "Commercial Medium 01" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Commercial Medium 01.bty" + ] + }, + { + "canonical_stem": "commercialmedium02", + "raw_stems": [ + "Commercial Medium 02" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Commercial Medium 02.bty" + ] + }, + { + "canonical_stem": "commercialsmall01", + "raw_stems": [ + "Commercial Small 01" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Commercial Small 01.bty" + ] + }, + { + "canonical_stem": "commercialsmall02", + "raw_stems": [ + "Commercial Small 02" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Commercial Small 02.bty" + ] + }, + { + "canonical_stem": "concreteplant", + "raw_stems": [ + "ConcretePlant" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "ConcretePlant.bca", + "ConcretePlant.bty" + ] + }, + { + "canonical_stem": "constructionfirm", + "raw_stems": [ + "ConstructionFirm" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "ConstructionFirm.bca", + "ConstructionFirm.bty" + ] + }, + { + "canonical_stem": "customshouse", + "raw_stems": [ + "Customs House", + "CustomsHouse" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Customs House.bty", + "CustomsHouse.bca" + ] + }, + { + "canonical_stem": "dairyprocessor", + "raw_stems": [ + "DairyProcessor" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "DairyProcessor.bca", + "DairyProcessor.bty" + ] + }, + { + "canonical_stem": "departmentstore", + "raw_stems": [ + "Department Store", + "DepartmentStore" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Department Store.bty", + "DepartmentStore.bca" + ] + }, + { + "canonical_stem": "distillery", + "raw_stems": [ + "Distillery" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Distillery.bca", + "Distillery.bty" + ] + }, + { + "canonical_stem": "dummy", + "raw_stems": [ + "Dummy" + ], + "source_kinds": [ + "bca" + ], + "file_names": [ + "Dummy.bca" + ] + }, + { + "canonical_stem": "electricplant", + "raw_stems": [ + "Electric Plant" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Electric Plant.bca", + "Electric Plant.bty" + ] + }, + { + "canonical_stem": "electronicsplant", + "raw_stems": [ + "ElectronicsPlant" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "ElectronicsPlant.bca", + "ElectronicsPlant.bty" + ] + }, + { + "canonical_stem": "farmcattle", + "raw_stems": [ + "Farm Cattle", + "FarmCattle" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Farm Cattle.bty", + "FarmCattle.bca" + ] + }, + { + "canonical_stem": "farmcoffee", + "raw_stems": [ + "Farm Coffee", + "FarmCoffee" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Farm Coffee.bty", + "FarmCoffee.bca" + ] + }, + { + "canonical_stem": "farmcorn", + "raw_stems": [ + "Farm Corn" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Farm Corn.bca", + "Farm Corn.bty" + ] + }, + { + "canonical_stem": "farmcotton", + "raw_stems": [ + "Farm Cotton", + "FarmCotton" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Farm Cotton.bty", + "FarmCotton.bca" + ] + }, + { + "canonical_stem": "farmdairy", + "raw_stems": [ + "Farm Dairy", + "FarmDairy" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Farm Dairy.bty", + "FarmDairy.bca" + ] + }, + { + "canonical_stem": "farmdye", + "raw_stems": [ + "FarmDye" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "FarmDye.bca", + "FarmDye.bty" + ] + }, + { + "canonical_stem": "farmgrain", + "raw_stems": [ + "Farm Grain", + "FarmGrain" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Farm Grain.bty", + "FarmGrain.bca" + ] + }, + { + "canonical_stem": "farmorchard", + "raw_stems": [ + "Farm Orchard" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Farm Orchard.bca", + "Farm Orchard.bty" + ] + }, + { + "canonical_stem": "farmrice", + "raw_stems": [ + "Farm Rice", + "FarmRice" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Farm Rice.bty", + "FarmRice.bca" + ] + }, + { + "canonical_stem": "farmrubber", + "raw_stems": [ + "Farm Rubber" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Farm Rubber.bca", + "Farm Rubber.bty" + ] + }, + { + "canonical_stem": "farmsheep", + "raw_stems": [ + "Farm Sheep", + "FarmSheep" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Farm Sheep.bty", + "FarmSheep.bca" + ] + }, + { + "canonical_stem": "farmsugar", + "raw_stems": [ + "Farm Sugar", + "FarmSugar" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Farm Sugar.bty", + "FarmSugar.bca" + ] + }, + { + "canonical_stem": "fertilizerfactory", + "raw_stems": [ + "Fertilizer Factory" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Fertilizer Factory.bca", + "Fertilizer Factory.bty" + ] + }, + { + "canonical_stem": "furnace", + "raw_stems": [ + "Furnace" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Furnace.bca", + "Furnace.bty" + ] + }, + { + "canonical_stem": "furniturefactory", + "raw_stems": [ + "Furniture Factory", + "FurnitureFactory" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Furniture Factory.bca", + "FurnitureFactory.bty" + ] + }, + { + "canonical_stem": "hospital", + "raw_stems": [ + "Hospital" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Hospital.bca", + "Hospital.bty" + ] + }, + { + "canonical_stem": "hotel", + "raw_stems": [ + "Hotel" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Hotel.bca", + "Hotel.bty" + ] + }, + { + "canonical_stem": "house", + "raw_stems": [ + "House" + ], + "source_kinds": [ + "bca" + ], + "file_names": [ + "House.bca" + ] + }, + { + "canonical_stem": "ironmine", + "raw_stems": [ + "Iron Mine", + "IronMine" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Iron Mine.bca", + "IronMine.bty" + ] + }, + { + "canonical_stem": "kyotohouse01", + "raw_stems": [ + "KyotoHouse01" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "KyotoHouse01.bty" + ] + }, + { + "canonical_stem": "kyotohouse02", + "raw_stems": [ + "KyotoHouse02" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "KyotoHouse02.bty" + ] + }, + { + "canonical_stem": "kyotohouse03", + "raw_stems": [ + "KyotoHouse03" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "KyotoHouse03.bty" + ] + }, + { + "canonical_stem": "kyotohouse04", + "raw_stems": [ + "KyotoHouse04" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "KyotoHouse04.bty" + ] + }, + { + "canonical_stem": "kyotohouse05", + "raw_stems": [ + "KyotoHouse05" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "KyotoHouse05.bty" + ] + }, + { + "canonical_stem": "kyotohouse06", + "raw_stems": [ + "KyotoHouse06" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "KyotoHouse06.bty" + ] + }, + { + "canonical_stem": "kyotohouse07", + "raw_stems": [ + "KyotoHouse07" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "KyotoHouse07.bty" + ] + }, + { + "canonical_stem": "kyotohouse08", + "raw_stems": [ + "KyotoHouse08" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "KyotoHouse08.bty" + ] + }, + { + "canonical_stem": "kyotohouse09", + "raw_stems": [ + "KyotoHouse09" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "KyotoHouse09.bty" + ] + }, + { + "canonical_stem": "kyotohouse10", + "raw_stems": [ + "KyotoHouse10" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "KyotoHouse10.bty" + ] + }, + { + "canonical_stem": "kyotohouse101", + "raw_stems": [ + "KyotoHouse101" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "KyotoHouse101.bty" + ] + }, + { + "canonical_stem": "kyotohouse102", + "raw_stems": [ + "KyotoHouse102" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "KyotoHouse102.bty" + ] + }, + { + "canonical_stem": "kyotohouse103", + "raw_stems": [ + "KyotoHouse103" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "KyotoHouse103.bty" + ] + }, + { + "canonical_stem": "kyotohouse104", + "raw_stems": [ + "KyotoHouse104" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "KyotoHouse104.bty" + ] + }, + { + "canonical_stem": "kyotohouse11", + "raw_stems": [ + "KyotoHouse11" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "KyotoHouse11.bty" + ] + }, + { + "canonical_stem": "kyotohouse12", + "raw_stems": [ + "KyotoHouse12" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "KyotoHouse12.bty" + ] + }, + { + "canonical_stem": "kyotostationlrg", + "raw_stems": [ + "KyotoStationLrg" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "KyotoStationLrg.bty" + ] + }, + { + "canonical_stem": "kyotostationmed", + "raw_stems": [ + "KyotoStationMed" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "KyotoStationMed.bty" + ] + }, + { + "canonical_stem": "kyotostationsml", + "raw_stems": [ + "KyotoStationSml" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "KyotoStationSml.bty" + ] + }, + { + "canonical_stem": "largestation", + "raw_stems": [ + "Large Station" + ], + "source_kinds": [ + "bca" + ], + "file_names": [ + "Large Station.bca" + ] + }, + { + "canonical_stem": "loggingcamp", + "raw_stems": [ + "Logging Camp", + "LoggingCamp" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Logging Camp.bca", + "LoggingCamp.bty" + ] + }, + { + "canonical_stem": "lumbermill", + "raw_stems": [ + "Lumber Mill", + "Lumbermill" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Lumber Mill.bca", + "Lumbermill.bty" + ] + }, + { + "canonical_stem": "machineshop", + "raw_stems": [ + "MachineShop" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "MachineShop.bca", + "MachineShop.bty" + ] + }, + { + "canonical_stem": "maintenance", + "raw_stems": [ + "Maintenance" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Maintenance.bty" + ] + }, + { + "canonical_stem": "maintenancefacility", + "raw_stems": [ + "Maintenance Facility" + ], + "source_kinds": [ + "bca" + ], + "file_names": [ + "Maintenance Facility.bca" + ] + }, + { + "canonical_stem": "meatpackingplant", + "raw_stems": [ + "Meat Packing Plant", + "MeatPackingPlant" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Meat Packing Plant.bca", + "MeatPackingPlant.bty" + ] + }, + { + "canonical_stem": "mediumstation", + "raw_stems": [ + "Medium Station" + ], + "source_kinds": [ + "bca" + ], + "file_names": [ + "Medium Station.bca" + ] + }, + { + "canonical_stem": "militarydepot", + "raw_stems": [ + "Military Depot", + "MilitaryDepot" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Military Depot.bca", + "MilitaryDepot.bty" + ] + }, + { + "canonical_stem": "munitionsfactory", + "raw_stems": [ + "Munitions Factory" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Munitions Factory.bca", + "Munitions Factory.bty" + ] + }, + { + "canonical_stem": "museum", + "raw_stems": [ + "Museum" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Museum.bca", + "Museum.bty" + ] + }, + { + "canonical_stem": "nuclearpowerplant", + "raw_stems": [ + "Nuclear Power Plant" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Nuclear Power Plant.bca", + "Nuclear Power Plant.bty" + ] + }, + { + "canonical_stem": "oilrefinery", + "raw_stems": [ + "Oil Refinery", + "OilRefinery" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Oil Refinery.bca", + "OilRefinery.bty" + ] + }, + { + "canonical_stem": "oilwell", + "raw_stems": [ + "Oil Well" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Oil Well.bca", + "Oil Well.bty" + ] + }, + { + "canonical_stem": "oremine", + "raw_stems": [ + "OreMine" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "OreMine.bca", + "OreMine.bty" + ] + }, + { + "canonical_stem": "papermill", + "raw_stems": [ + "PaperMill" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "PaperMill.bca", + "PaperMill.bty" + ] + }, + { + "canonical_stem": "persianhouse01", + "raw_stems": [ + "PersianHouse01" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "PersianHouse01.bty" + ] + }, + { + "canonical_stem": "persianhouse02", + "raw_stems": [ + "PersianHouse02" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "PersianHouse02.bty" + ] + }, + { + "canonical_stem": "persianhouse03", + "raw_stems": [ + "PersianHouse03" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "PersianHouse03.bty" + ] + }, + { + "canonical_stem": "persianhouse04", + "raw_stems": [ + "PersianHouse04" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "PersianHouse04.bty" + ] + }, + { + "canonical_stem": "persianhouse05", + "raw_stems": [ + "PersianHouse05" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "PersianHouse05.bty" + ] + }, + { + "canonical_stem": "persianhouse06", + "raw_stems": [ + "PersianHouse06" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "PersianHouse06.bty" + ] + }, + { + "canonical_stem": "persianhouse07", + "raw_stems": [ + "PersianHouse07" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "PersianHouse07.bty" + ] + }, + { + "canonical_stem": "persianhouse08", + "raw_stems": [ + "PersianHouse08" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "PersianHouse08.bty" + ] + }, + { + "canonical_stem": "persianhouse09", + "raw_stems": [ + "PersianHouse09" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "PersianHouse09.bty" + ] + }, + { + "canonical_stem": "persianhouse10", + "raw_stems": [ + "PersianHouse10" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "PersianHouse10.bty" + ] + }, + { + "canonical_stem": "persianhouse101", + "raw_stems": [ + "PersianHouse101" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "PersianHouse101.bty" + ] + }, + { + "canonical_stem": "persianhouse102", + "raw_stems": [ + "PersianHouse102" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "PersianHouse102.bty" + ] + }, + { + "canonical_stem": "persianhouse103", + "raw_stems": [ + "PersianHouse103" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "PersianHouse103.bty" + ] + }, + { + "canonical_stem": "persianhouse104", + "raw_stems": [ + "PersianHouse104" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "PersianHouse104.bty" + ] + }, + { + "canonical_stem": "persianhouse11", + "raw_stems": [ + "PersianHouse11" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "PersianHouse11.bty" + ] + }, + { + "canonical_stem": "persianhouse12", + "raw_stems": [ + "PersianHouse12" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "PersianHouse12.bty" + ] + }, + { + "canonical_stem": "persianstationlrg", + "raw_stems": [ + "PersianStationLrg" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "PersianStationLrg.bty" + ] + }, + { + "canonical_stem": "persianstationmed", + "raw_stems": [ + "PersianStationMed" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "PersianStationMed.bty" + ] + }, + { + "canonical_stem": "persianstationsml", + "raw_stems": [ + "PersianStationSml" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "PersianStationSml.bty" + ] + }, + { + "canonical_stem": "pharmaceuticalplant", + "raw_stems": [ + "PharmaceuticalPlant" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "PharmaceuticalPlant.bca", + "PharmaceuticalPlant.bty" + ] + }, + { + "canonical_stem": "plasticsfactory", + "raw_stems": [ + "Plastics Factory" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Plastics Factory.bca", + "Plastics Factory.bty" + ] + }, + { + "canonical_stem": "port", + "raw_stems": [ + "Port" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Port.bca", + "Port.bty" + ] + }, + { + "canonical_stem": "postoffice", + "raw_stems": [ + "Post Office", + "PostOffice" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Post Office.bty", + "PostOffice.bca" + ] + }, + { + "canonical_stem": "quarry", + "raw_stems": [ + "Quarry" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Quarry.bca", + "Quarry.bty" + ] + }, + { + "canonical_stem": "radiostation", + "raw_stems": [ + "RadioStation" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "RadioStation.bca", + "RadioStation.bty" + ] + }, + { + "canonical_stem": "recyclingplant", + "raw_stems": [ + "Recycling Plant" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Recycling Plant.bca", + "Recycling Plant.bty" + ] + }, + { + "canonical_stem": "restaurant", + "raw_stems": [ + "Restaurant" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Restaurant.bca", + "Restaurant.bty" + ] + }, + { + "canonical_stem": "retail", + "raw_stems": [ + "Retail" + ], + "source_kinds": [ + "bca" + ], + "file_names": [ + "Retail.bca" + ] + }, + { + "canonical_stem": "retaillrg", + "raw_stems": [ + "Retail Lrg" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Retail Lrg.bty" + ] + }, + { + "canonical_stem": "retailsml", + "raw_stems": [ + "Retail Sml" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Retail Sml.bty" + ] + }, + { + "canonical_stem": "saloon", + "raw_stems": [ + "Saloon" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Saloon.bca", + "Saloon.bty" + ] + }, + { + "canonical_stem": "schoolhouse", + "raw_stems": [ + "SchoolHouse" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "SchoolHouse.bca", + "SchoolHouse.bty" + ] + }, + { + "canonical_stem": "servicetower", + "raw_stems": [ + "Service Tower", + "ServiceTower" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Service Tower.bca", + "ServiceTower.bty" + ] + }, + { + "canonical_stem": "smallstation", + "raw_stems": [ + "Small Station" + ], + "source_kinds": [ + "bca" + ], + "file_names": [ + "Small Station.bca" + ] + }, + { + "canonical_stem": "sowesthouse01", + "raw_stems": [ + "SoWestHouse01" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "SoWestHouse01.bty" + ] + }, + { + "canonical_stem": "sowesthouse02", + "raw_stems": [ + "SoWestHouse02" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "SoWestHouse02.bty" + ] + }, + { + "canonical_stem": "sowesthouse03", + "raw_stems": [ + "SoWestHouse03" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "SoWestHouse03.bty" + ] + }, + { + "canonical_stem": "sowesthouse04", + "raw_stems": [ + "SoWestHouse04" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "SoWestHouse04.bty" + ] + }, + { + "canonical_stem": "sowesthouse05", + "raw_stems": [ + "SoWestHouse05" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "SoWestHouse05.bty" + ] + }, + { + "canonical_stem": "sowesthouse06", + "raw_stems": [ + "SoWestHouse06" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "SoWestHouse06.bty" + ] + }, + { + "canonical_stem": "sowesthouse07", + "raw_stems": [ + "SoWestHouse07" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "SoWestHouse07.bty" + ] + }, + { + "canonical_stem": "sowesthouse08", + "raw_stems": [ + "SoWestHouse08" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "SoWestHouse08.bty" + ] + }, + { + "canonical_stem": "sowesthouse09", + "raw_stems": [ + "SoWestHouse09" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "SoWestHouse09.bty" + ] + }, + { + "canonical_stem": "sowesthouse10", + "raw_stems": [ + "SoWestHouse10" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "SoWestHouse10.bty" + ] + }, + { + "canonical_stem": "sowesthouse101", + "raw_stems": [ + "SoWestHouse101" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "SoWestHouse101.bty" + ] + }, + { + "canonical_stem": "sowesthouse102", + "raw_stems": [ + "SoWestHouse102" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "SoWestHouse102.bty" + ] + }, + { + "canonical_stem": "sowesthouse103", + "raw_stems": [ + "SoWestHouse103" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "SoWestHouse103.bty" + ] + }, + { + "canonical_stem": "sowesthouse104", + "raw_stems": [ + "SoWestHouse104" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "SoWestHouse104.bty" + ] + }, + { + "canonical_stem": "sowesthouse11", + "raw_stems": [ + "SoWestHouse11" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "SoWestHouse11.bty" + ] + }, + { + "canonical_stem": "sowesthouse12", + "raw_stems": [ + "SoWestHouse12" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "SoWestHouse12.bty" + ] + }, + { + "canonical_stem": "soweststationlrg", + "raw_stems": [ + "SoWestStationLrg" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "SoWestStationLrg.bty" + ] + }, + { + "canonical_stem": "soweststationmed", + "raw_stems": [ + "SoWestStationMed" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "SoWestStationMed.bty" + ] + }, + { + "canonical_stem": "soweststationsml", + "raw_stems": [ + "SoWestStationSml" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "SoWestStationSml.bty" + ] + }, + { + "canonical_stem": "stadium", + "raw_stems": [ + "Stadium" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Stadium.bca", + "Stadium.bty" + ] + }, + { + "canonical_stem": "steelmill", + "raw_stems": [ + "Steel Mill" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Steel Mill.bca", + "Steel Mill.bty" + ] + }, + { + "canonical_stem": "textilemill", + "raw_stems": [ + "Textile Mill" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Textile Mill.bca", + "Textile Mill.bty" + ] + }, + { + "canonical_stem": "tirefactory", + "raw_stems": [ + "Tire Factory" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Tire Factory.bca", + "Tire Factory.bty" + ] + }, + { + "canonical_stem": "toolanddie", + "raw_stems": [ + "Tool And Die", + "Tool and Die" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Tool And Die.bca", + "Tool and Die.bty" + ] + }, + { + "canonical_stem": "toyfactory", + "raw_stems": [ + "Toy Factory" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Toy Factory.bca", + "Toy Factory.bty" + ] + }, + { + "canonical_stem": "tudorhouse01", + "raw_stems": [ + "TudorHouse01" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "TudorHouse01.bty" + ] + }, + { + "canonical_stem": "tudorhouse02", + "raw_stems": [ + "TudorHouse02" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "TudorHouse02.bty" + ] + }, + { + "canonical_stem": "tudorhouse03", + "raw_stems": [ + "TudorHouse03" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "TudorHouse03.bty" + ] + }, + { + "canonical_stem": "tudorhouse04", + "raw_stems": [ + "TudorHouse04" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "TudorHouse04.bty" + ] + }, + { + "canonical_stem": "tudorhouse05", + "raw_stems": [ + "TudorHouse05" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "TudorHouse05.bty" + ] + }, + { + "canonical_stem": "tudorhouse06", + "raw_stems": [ + "TudorHouse06" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "TudorHouse06.bty" + ] + }, + { + "canonical_stem": "tudorhouse07", + "raw_stems": [ + "TudorHouse07" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "TudorHouse07.bty" + ] + }, + { + "canonical_stem": "tudorhouse08", + "raw_stems": [ + "TudorHouse08" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "TudorHouse08.bty" + ] + }, + { + "canonical_stem": "tudorhouse09", + "raw_stems": [ + "TudorHouse09" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "TudorHouse09.bty" + ] + }, + { + "canonical_stem": "tudorhouse10", + "raw_stems": [ + "TudorHouse10" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "TudorHouse10.bty" + ] + }, + { + "canonical_stem": "tudorhouse101", + "raw_stems": [ + "TudorHouse101" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "TudorHouse101.bty" + ] + }, + { + "canonical_stem": "tudorhouse102", + "raw_stems": [ + "TudorHouse102" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "TudorHouse102.bty" + ] + }, + { + "canonical_stem": "tudorhouse103", + "raw_stems": [ + "TudorHouse103" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "TudorHouse103.bty" + ] + }, + { + "canonical_stem": "tudorhouse104", + "raw_stems": [ + "TudorHouse104" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "TudorHouse104.bty" + ] + }, + { + "canonical_stem": "tudorhouse11", + "raw_stems": [ + "TudorHouse11" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "TudorHouse11.bty" + ] + }, + { + "canonical_stem": "tudorhouse12", + "raw_stems": [ + "TudorHouse12" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "TudorHouse12.bty" + ] + }, + { + "canonical_stem": "tudorstationlrg", + "raw_stems": [ + "TudorStationLrg" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "TudorStationLrg.bty" + ] + }, + { + "canonical_stem": "tudorstationmed", + "raw_stems": [ + "TudorStationMed" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "TudorStationMed.bty" + ] + }, + { + "canonical_stem": "tudorstationsml", + "raw_stems": [ + "TudorStationSml" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "TudorStationSml.bty" + ] + }, + { + "canonical_stem": "uraniummine", + "raw_stems": [ + "Uranium Mine", + "UraniumMine" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Uranium Mine.bca", + "UraniumMine.bty" + ] + }, + { + "canonical_stem": "victorianhouse01", + "raw_stems": [ + "Victorian House 01" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Victorian House 01.bty" + ] + }, + { + "canonical_stem": "victorianhouse02", + "raw_stems": [ + "Victorian House 02" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Victorian House 02.bty" + ] + }, + { + "canonical_stem": "victorianhouse03", + "raw_stems": [ + "Victorian House 03" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Victorian House 03.bty" + ] + }, + { + "canonical_stem": "victorianhouse04", + "raw_stems": [ + "Victorian House 04" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Victorian House 04.bty" + ] + }, + { + "canonical_stem": "victorianhouse05", + "raw_stems": [ + "Victorian House 05" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Victorian House 05.bty" + ] + }, + { + "canonical_stem": "victorianhouse06", + "raw_stems": [ + "Victorian House 06" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Victorian House 06.bty" + ] + }, + { + "canonical_stem": "victorianhouse07", + "raw_stems": [ + "Victorian House 07" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Victorian House 07.bty" + ] + }, + { + "canonical_stem": "victorianhouse08", + "raw_stems": [ + "Victorian House 08" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Victorian House 08.bty" + ] + }, + { + "canonical_stem": "victorianhouse09", + "raw_stems": [ + "Victorian House 09" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Victorian House 09.bty" + ] + }, + { + "canonical_stem": "victorianhouse10", + "raw_stems": [ + "Victorian House 10" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Victorian House 10.bty" + ] + }, + { + "canonical_stem": "victorianhouse101", + "raw_stems": [ + "Victorian House 101" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Victorian House 101.bty" + ] + }, + { + "canonical_stem": "victorianhouse102", + "raw_stems": [ + "Victorian House 102" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Victorian House 102.bty" + ] + }, + { + "canonical_stem": "victorianhouse103", + "raw_stems": [ + "Victorian House 103" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Victorian House 103.bty" + ] + }, + { + "canonical_stem": "victorianhouse104", + "raw_stems": [ + "Victorian House 104" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Victorian House 104.bty" + ] + }, + { + "canonical_stem": "victorianhouse11", + "raw_stems": [ + "Victorian House 11" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Victorian House 11.bty" + ] + }, + { + "canonical_stem": "victorianhouse12", + "raw_stems": [ + "Victorian House 12" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "Victorian House 12.bty" + ] + }, + { + "canonical_stem": "victorianstationlrg", + "raw_stems": [ + "VictorianStationLrg" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "VictorianStationLrg.bty" + ] + }, + { + "canonical_stem": "victorianstationmed", + "raw_stems": [ + "VictorianStationMed" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "VictorianStationMed.bty" + ] + }, + { + "canonical_stem": "victorianstationsml", + "raw_stems": [ + "VictorianStationSml" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "VictorianStationSml.bty" + ] + }, + { + "canonical_stem": "warehouse", + "raw_stems": [ + "Warehouse" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Warehouse.bca", + "Warehouse.bty" + ] + }, + { + "canonical_stem": "weaponsfactory", + "raw_stems": [ + "Weapons Factory" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Weapons Factory.bca", + "Weapons Factory.bty" + ] + }, + { + "canonical_stem": "windmill", + "raw_stems": [ + "Windmill" + ], + "source_kinds": [ + "bca", + "bty" + ], + "file_names": [ + "Windmill.bca", + "Windmill.bty" + ] + }, + { + "canonical_stem": "z200ftruler", + "raw_stems": [ + "z200FtRuler" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "z200FtRuler.bty" + ] + }, + { + "canonical_stem": "z200ftrulercross", + "raw_stems": [ + "z200FtRulerCross" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "z200FtRulerCross.bty" + ] + }, + { + "canonical_stem": "zsmoke1", + "raw_stems": [ + "zSmoke1" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "zSmoke1.bty" + ] + }, + { + "canonical_stem": "zsmoke2", + "raw_stems": [ + "zSmoke2" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "zSmoke2.bty" + ] + }, + { + "canonical_stem": "zsmoke3", + "raw_stems": [ + "zSmoke3" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "zSmoke3.bty" + ] + }, + { + "canonical_stem": "zsmoke4", + "raw_stems": [ + "zSmoke4" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "zSmoke4.bty" + ] + }, + { + "canonical_stem": "zsmoke5", + "raw_stems": [ + "zSmoke5" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "zSmoke5.bty" + ] + }, + { + "canonical_stem": "zsmoke6", + "raw_stems": [ + "zSmoke6" + ], + "source_kinds": [ + "bty" + ], + "file_names": [ + "zSmoke6.bty" + ] + } + ] + } +} diff --git a/crates/rrt-cli/src/main.rs b/crates/rrt-cli/src/main.rs index 4b32124..82ade61 100644 --- a/crates/rrt-cli/src/main.rs +++ b/crates/rrt-cli/src/main.rs @@ -17,17 +17,18 @@ use rrt_model::{ load_binary_summary, load_function_map, }; use rrt_runtime::{ - CAMPAIGN_SCENARIO_COUNT, CampaignExeInspectionReport, CargoEconomySourceReport, - CargoSelectorReport, CargoSkinInspectionReport, CargoTypeInspectionReport, - OBSERVED_CAMPAIGN_SCENARIO_NAMES, OVERLAY_IMPORT_DOCUMENT_FORMAT_VERSION, Pk4ExtractionReport, - Pk4InspectionReport, RuntimeOverlayImportDocument, RuntimeOverlayImportDocumentSource, - RuntimeSaveSliceDocument, RuntimeSaveSliceDocumentSource, RuntimeSnapshotDocument, - RuntimeSnapshotSource, RuntimeSummary, SAVE_SLICE_DOCUMENT_FORMAT_VERSION, - SNAPSHOT_FORMAT_VERSION, SmpClassicPackedProfileBlock, SmpInspectionReport, SmpLoadedSaveSlice, - SmpRt3105PackedProfileBlock, SmpSaveLoadSummary, WinInspectionReport, - compare_save_region_fixed_row_run_candidates, execute_step_command, extract_pk4_entry_file, - inspect_campaign_exe_file, inspect_cargo_economy_sources_with_bindings, inspect_cargo_skin_pk4, - inspect_cargo_types_dir, inspect_pk4_file, inspect_save_company_and_chairman_analysis_file, + BuildingTypeSourceReport, CAMPAIGN_SCENARIO_COUNT, CampaignExeInspectionReport, + CargoEconomySourceReport, CargoSelectorReport, CargoSkinInspectionReport, + CargoTypeInspectionReport, OBSERVED_CAMPAIGN_SCENARIO_NAMES, + OVERLAY_IMPORT_DOCUMENT_FORMAT_VERSION, Pk4ExtractionReport, Pk4InspectionReport, + RuntimeOverlayImportDocument, RuntimeOverlayImportDocumentSource, RuntimeSaveSliceDocument, + RuntimeSaveSliceDocumentSource, RuntimeSnapshotDocument, RuntimeSnapshotSource, RuntimeSummary, + SAVE_SLICE_DOCUMENT_FORMAT_VERSION, SNAPSHOT_FORMAT_VERSION, SmpClassicPackedProfileBlock, + SmpInspectionReport, SmpLoadedSaveSlice, SmpRt3105PackedProfileBlock, SmpSaveLoadSummary, + WinInspectionReport, compare_save_region_fixed_row_run_candidates, execute_step_command, + extract_pk4_entry_file, inspect_building_types_dir, inspect_campaign_exe_file, + inspect_cargo_economy_sources_with_bindings, inspect_cargo_skin_pk4, inspect_cargo_types_dir, + inspect_pk4_file, inspect_save_company_and_chairman_analysis_file, inspect_save_infrastructure_asset_trace_file, inspect_save_periodic_company_service_trace_file, inspect_save_placed_structure_dynamic_side_buffer_file, inspect_save_region_queued_notice_records_file, inspect_save_region_service_trace_file, @@ -187,6 +188,9 @@ enum Command { RuntimeInspectCargoTypes { cargo_types_dir: PathBuf, }, + RuntimeInspectBuildingTypeSources { + building_types_dir: PathBuf, + }, RuntimeInspectCargoSkins { cargo_skin_pk4_path: PathBuf, }, @@ -446,6 +450,12 @@ struct RuntimeCargoTypeInspectionOutput { inspection: CargoTypeInspectionReport, } +#[derive(Debug, Serialize)] +struct RuntimeBuildingTypeInspectionOutput { + path: String, + inspection: BuildingTypeSourceReport, +} + #[derive(Debug, Serialize)] struct RuntimeCargoSkinInspectionOutput { path: String, @@ -1079,6 +1089,9 @@ fn real_main() -> Result<(), Box> { Command::RuntimeInspectCargoTypes { cargo_types_dir } => { run_runtime_inspect_cargo_types(&cargo_types_dir)?; } + Command::RuntimeInspectBuildingTypeSources { building_types_dir } => { + run_runtime_inspect_building_type_sources(&building_types_dir)?; + } Command::RuntimeInspectCargoSkins { cargo_skin_pk4_path, } => { @@ -1377,6 +1390,13 @@ fn parse_command() -> Result> { cargo_types_dir: PathBuf::from(path), }) } + [command, subcommand, path] + if command == "runtime" && subcommand == "inspect-building-type-sources" => + { + Ok(Command::RuntimeInspectBuildingTypeSources { + building_types_dir: PathBuf::from(path), + }) + } [command, subcommand, path] if command == "runtime" && subcommand == "inspect-cargo-skins" => { @@ -1543,7 +1563,7 @@ fn parse_command() -> Result> { }) } _ => Err( - "usage: rrt-cli [validate [repo-root] | finance eval | finance diff | runtime validate-fixture | runtime summarize-fixture | runtime export-fixture-state | runtime diff-state | runtime summarize-state | runtime import-state | runtime inspect-smp | runtime inspect-candidate-table | runtime inspect-compact-event-dispatch-cluster | runtime inspect-compact-event-dispatch-cluster-counts | runtime summarize-save-load | runtime load-save-slice | runtime inspect-save-company-chairman | runtime inspect-save-placed-structure-triplets | runtime compare-region-fixed-row-runs | runtime inspect-periodic-company-service-trace | runtime inspect-region-service-trace | runtime inspect-infrastructure-asset-trace | runtime inspect-save-region-queued-notice-records | runtime inspect-placed-structure-dynamic-side-buffer | runtime inspect-unclassified-save-collections | runtime import-save-state | runtime export-save-slice | runtime export-overlay-import | runtime inspect-pk4 | runtime inspect-cargo-types | runtime inspect-cargo-skins | runtime inspect-cargo-economy-sources | runtime inspect-cargo-production-selector | runtime inspect-cargo-price-selector | runtime inspect-win | runtime extract-pk4-entry | runtime inspect-campaign-exe | runtime compare-classic-profile [saveN.gms...] | runtime compare-105-profile [saveN.gms...] | runtime compare-candidate-table [fileN...] | runtime compare-recipe-book-lines [fileN...] | runtime compare-setup-payload-core [fileN...] | runtime compare-setup-launch-payload [fileN...] | runtime compare-post-special-conditions-scalars [fileN...] | runtime scan-candidate-table-headers | runtime scan-special-conditions | runtime scan-aligned-runtime-rule-band | runtime scan-post-special-conditions-scalars | runtime scan-post-special-conditions-tail | runtime scan-recipe-book-lines | runtime export-profile-block ]" + "usage: rrt-cli [validate [repo-root] | finance eval | finance diff | runtime validate-fixture | runtime summarize-fixture | runtime export-fixture-state | runtime diff-state | runtime summarize-state | runtime import-state | runtime inspect-smp | runtime inspect-candidate-table | runtime inspect-compact-event-dispatch-cluster | runtime inspect-compact-event-dispatch-cluster-counts | runtime summarize-save-load | runtime load-save-slice | runtime inspect-save-company-chairman | runtime inspect-save-placed-structure-triplets | runtime compare-region-fixed-row-runs | runtime inspect-periodic-company-service-trace | runtime inspect-region-service-trace | runtime inspect-infrastructure-asset-trace | runtime inspect-save-region-queued-notice-records | runtime inspect-placed-structure-dynamic-side-buffer | runtime inspect-unclassified-save-collections | runtime import-save-state | runtime export-save-slice | runtime export-overlay-import | runtime inspect-pk4 | runtime inspect-cargo-types | runtime inspect-building-type-sources | runtime inspect-cargo-skins | runtime inspect-cargo-economy-sources | runtime inspect-cargo-production-selector | runtime inspect-cargo-price-selector | runtime inspect-win | runtime extract-pk4-entry | runtime inspect-campaign-exe | runtime compare-classic-profile [saveN.gms...] | runtime compare-105-profile [saveN.gms...] | runtime compare-candidate-table [fileN...] | runtime compare-recipe-book-lines [fileN...] | runtime compare-setup-payload-core [fileN...] | runtime compare-setup-launch-payload [fileN...] | runtime compare-post-special-conditions-scalars [fileN...] | runtime scan-candidate-table-headers | runtime scan-special-conditions | runtime scan-aligned-runtime-rule-band | runtime scan-post-special-conditions-scalars | runtime scan-post-special-conditions-tail | runtime scan-recipe-book-lines | runtime export-profile-block ]" .into(), ), } @@ -2203,6 +2223,17 @@ fn run_runtime_inspect_cargo_types( Ok(()) } +fn run_runtime_inspect_building_type_sources( + building_types_dir: &Path, +) -> Result<(), Box> { + let report = RuntimeBuildingTypeInspectionOutput { + path: building_types_dir.display().to_string(), + inspection: inspect_building_types_dir(building_types_dir)?, + }; + println!("{}", serde_json::to_string_pretty(&report)?); + Ok(()) +} + fn run_runtime_inspect_cargo_skins( cargo_skin_pk4_path: &Path, ) -> Result<(), Box> { diff --git a/crates/rrt-model/src/lib.rs b/crates/rrt-model/src/lib.rs index c4fc687..968259c 100644 --- a/crates/rrt-model/src/lib.rs +++ b/crates/rrt-model/src/lib.rs @@ -34,6 +34,7 @@ pub const REQUIRED_EXPORTS: &[&str] = &[ "artifacts/exports/rt3-1.06/event-effects-cargo-bindings.json", "artifacts/exports/rt3-1.06/event-effects-building-bindings.json", "artifacts/exports/rt3-1.06/event-effects-semantic-catalog.json", + "artifacts/exports/rt3-1.06/building-type-sources.json", "artifacts/exports/rt3-1.06/economy-cargo-sources.json", "artifacts/exports/rt3-1.06/selected-year-bucket-ladder.json", ]; diff --git a/crates/rrt-runtime/src/building.rs b/crates/rrt-runtime/src/building.rs new file mode 100644 index 0000000..9af39d7 --- /dev/null +++ b/crates/rrt-runtime/src/building.rs @@ -0,0 +1,148 @@ +use std::collections::{BTreeMap, BTreeSet}; +use std::fs; +use std::path::Path; + +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] +pub enum BuildingTypeSourceKind { + Bca, + Bty, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +pub struct BuildingTypeSourceFile { + pub file_name: String, + pub raw_stem: String, + pub canonical_stem: String, + pub source_kind: BuildingTypeSourceKind, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +pub struct BuildingTypeSourceEntry { + pub canonical_stem: String, + pub raw_stems: Vec, + pub source_kinds: Vec, + pub file_names: Vec, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +pub struct BuildingTypeSourceReport { + pub directory_path: String, + pub bca_file_count: usize, + pub bty_file_count: usize, + pub unique_canonical_stem_count: usize, + pub notes: Vec, + pub files: Vec, + pub entries: Vec, +} + +pub fn inspect_building_types_dir( + path: &Path, +) -> Result> { + let mut files = Vec::new(); + for entry in fs::read_dir(path)? { + let entry = entry?; + if !entry.file_type()?.is_file() { + continue; + } + let file_name = entry.file_name().to_string_lossy().into_owned(); + let Some(extension) = Path::new(&file_name) + .extension() + .and_then(|extension| extension.to_str()) + .map(|extension| extension.to_ascii_lowercase()) + else { + continue; + }; + let source_kind = match extension.as_str() { + "bca" => BuildingTypeSourceKind::Bca, + "bty" => BuildingTypeSourceKind::Bty, + _ => continue, + }; + let raw_stem = Path::new(&file_name) + .file_stem() + .and_then(|stem| stem.to_str()) + .unwrap_or("") + .to_string(); + if raw_stem.is_empty() { + continue; + } + files.push(BuildingTypeSourceFile { + file_name, + canonical_stem: canonicalize_building_stem(&raw_stem), + raw_stem, + source_kind, + }); + } + + files.sort_by(|left, right| { + left.canonical_stem + .cmp(&right.canonical_stem) + .then_with(|| left.file_name.cmp(&right.file_name)) + }); + + let mut grouped = BTreeMap::>::new(); + for file in &files { + grouped + .entry(file.canonical_stem.clone()) + .or_default() + .push(file); + } + + let entries = grouped + .into_iter() + .map(|(canonical_stem, group)| BuildingTypeSourceEntry { + canonical_stem, + raw_stems: group + .iter() + .map(|file| file.raw_stem.clone()) + .collect::>() + .into_iter() + .collect(), + source_kinds: group + .iter() + .map(|file| file.source_kind.clone()) + .collect::>() + .into_iter() + .collect(), + file_names: group + .iter() + .map(|file| file.file_name.clone()) + .collect::>() + .into_iter() + .collect(), + }) + .collect::>(); + + let bca_file_count = files + .iter() + .filter(|file| matches!(file.source_kind, BuildingTypeSourceKind::Bca)) + .count(); + let bty_file_count = files + .iter() + .filter(|file| matches!(file.source_kind, BuildingTypeSourceKind::Bty)) + .count(); + + let notes = vec![ + "BuildingTypes sources are grouped by a canonical stem that lowercases and strips spaces, underscores, and hyphens so paired .bca/.bty variants collapse onto one asset token.".to_string(), + "This report is an offline asset-pool view only; it does not by itself assign live candidate ids or prove scenario candidate-table availability.".to_string(), + ]; + + Ok(BuildingTypeSourceReport { + directory_path: path.display().to_string(), + bca_file_count, + bty_file_count, + unique_canonical_stem_count: entries.len(), + notes, + files, + entries, + }) +} + +fn canonicalize_building_stem(stem: &str) -> String { + stem.chars() + .filter(|ch| !matches!(ch, ' ' | '_' | '-')) + .flat_map(|ch| ch.to_lowercase()) + .collect() +} diff --git a/crates/rrt-runtime/src/lib.rs b/crates/rrt-runtime/src/lib.rs index bf0b1ff..ff6c9b4 100644 --- a/crates/rrt-runtime/src/lib.rs +++ b/crates/rrt-runtime/src/lib.rs @@ -1,3 +1,4 @@ +pub mod building; pub mod calendar; pub mod campaign_exe; pub mod economy; @@ -10,6 +11,10 @@ pub mod step; pub mod summary; pub mod win; +pub use building::{ + BuildingTypeSourceEntry, BuildingTypeSourceFile, BuildingTypeSourceKind, + BuildingTypeSourceReport, inspect_building_types_dir, +}; pub use calendar::{CalendarPoint, MONTH_SLOTS_PER_YEAR, PHASE_SLOTS_PER_MONTH, TICKS_PER_PHASE}; pub use campaign_exe::{ CAMPAIGN_SCENARIO_COUNT, CampaignExeInspectionReport, CampaignPageBand, CampaignScenarioEntry, diff --git a/docs/rehost-queue.md b/docs/rehost-queue.md index d100251..df80381 100644 --- a/docs/rehost-queue.md +++ b/docs/rehost-queue.md @@ -354,6 +354,14 @@ Working rule: shell-owned placement-flow ownership on that strip, not more missing-label recovery: the descriptor-side candidate bridge is now checked in across `503..613`, and the honest remaining boundary is the missing non-hook name catalog for candidate ids `67..110` + - the new offline `BuildingTypes` source report sharpens that missing name-catalog boundary too: + `runtime inspect-building-type-sources rt3_wineprefix/drive_c/rt3/Data/BuildingTypes` + now reports `77` `.bca` files, `200` `.bty` files, and `208` canonical asset stems, but only + `43` of those canonical stems overlap the live named candidate run `0..66`. The numbered live + `Port00..11` and `Warehouse00..11` names collapse to generic asset stems `Port` and + `Warehouse`, while `165` canonical stems exist only in the broader asset pool. So the + `BuildingTypes` directory is now grounded as a wider offline source catalog, but not yet as a + direct second live candidate-name owner for descriptor-side ids `67..110` - the concrete owner strip above that bundle is grounded now too: `0x00433060` is the direct non-direct serializer loop that writes `0x4e99/0x4e9a/0x4e9b`, calls `0x00430d70` per live collection row, and sits beside the sibling `0x00433130` size/load