give resolution time in minutes for the given user story, only provide the number of minutes in the output without any other text

User story: FAB-6969 made a peer fail to some user when it attempted to run chaincode in dev-mode.  Below is his/her stack trace (complained in rocket chat)  {code}  2017-11-12 08:45:02.837 UTC [msp] getCertificationChain -> DEBU 04b MSP DEFAULT getting certification chain  panic: runtime error: invalid memory address or nil pointer dereference  [signal SIGSEGV: segmentation violation code=0x1 addr=0x28 pc=0xb07129]    goroutine 49 [running]:  github.com/hyperledger/fabric/gossip/gossip.NewGossipService.func1(0xc420352be0, 0x20, 0x20, 0xc4202e6400, 0x3bc, 0x400)          /opt/gopath/src/github.com/hyperledger/fabric/gossip/gossip/gossip_impl.go:93 +0x79  github.com/hyperledger/fabric/gossip/identity.(*identityMapperImpl).delete(0xc42031d440, 0xc420352be0, 0x20, 0x20, 0xc4202e6400, 0x3bc, 0x400)          /opt/gopath/src/github.com/hyperledger/fabric/gossip/identity/identity.go:213 +0xbb  github.com/hyperledger/fabric/gossip/identity.(*identityMapperImpl).Put.func1()          /opt/gopath/src/github.com/hyperledger/fabric/gossip/identity/identity.go:134 +0x60  created by time.goFunc          /opt/go/src/time/sleep.go:170 +0x44  {code}    Now, the reason for the null pointer panic is because gossip didn't expect the given signing cert to be expired, and triggered the cleanup callback which has a null reference at that time because it used the identity store (which failed to initialize... )    Now, I think it would make sense to have the local MSP verify whether it has expired, and if so - to return an error.    {code}  // LoadLocalMsp loads the local MSP from the specified directory  func LoadLocalMsp(dir string, bccspConfig *factory.FactoryOpts, mspID string) error {   if mspID == "" {    return errors.New("The local MSP must have an ID")   }     conf, err := msp.GetLocalMspConfig(dir, bccspConfig, mspID)   if err != nil {    return err   }     return GetLocalMSP().Setup(conf)  }  {code}    Is used both by the peer and by the orderer. Maybe we should just add a check for expiration?  Something like:  {code}  func LoadLocalMsp(dir string, bccspConfig *factory.FactoryOpts, mspID string) error {   if mspID == "" {    return errors.New("the local MSP must have an ID")   }     conf, err := msp.GetLocalMspConfig(dir, bccspConfig, mspID)   if err != nil {    return err   }     localMSP := GetLocalMSP()   err =  localMSP.Setup(conf)   if err != nil {    return err   }   if sId, err := localMSP.GetDefaultSigningIdentity(); err == nil {    expirationTime := sId.ExpiresAt()    now := time.Now()    if expirationTime.After(now) {     mspLogger.Debug("Signing identity expires at", expirationTime)    } else {     return errors.Errorf("signing identity expired %v ago", now.Sub(expirationTime))    }   } else {    return errors.Wrap(err, "failed obtaining signing identity")   }   return nil  }  {code}    {code}  2017-11-12 19:23:56.431 IST [main] main -> ERRO 001 Cannot run peer because error when setting up MSP from directory /home/<USER>OBC/shared/gopath/src/github.com/hyperledger/fabric/sampleconfig/msp: signing identity expired 24h16m56.431743179s ago    <USER>yacoVM ~/OBC/shared/gopath/src/github.com/hyperledger/fabric (master) $ ./build/bin/orderer   panic: Failed to initialize local MSP: signing identity expired 24h21m33.896200318s ago    {code}    [~<USER> [~adc] [~<USER> [~<USER>
Answer: 57899.0